[
  {
    "path": ".browserslistrc",
    "content": "extends @ebay/browserslist-config\n"
  },
  {
    "path": ".c8rc.json",
    "content": "{\n  \"all\": true,\n  \"excludeAfterRemap\": true,\n  \"parserPlugins\": [\"objectRestSpread\", \"typescript\"],\n  \"reporter\": [\"text-summary\", \"lcov\"],\n  \"include\": [\n    \"packages/*/src/**/*.js\",\n    \"packages/*/src/**/*.ts\",\n    \"packages/*/src/**/*.marko\"\n  ],\n  \"exclude\": [\n    \"**/__tests__\",\n    \"packages/runtime-tags/src/html/reorder-runtime.ts\",\n    \"**/*.d.ts\"\n  ]\n}\n"
  },
  {
    "path": ".changeset/README.md",
    "content": "# Changesets\n\nHello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works\nwith multi-package repos, or single-package repos to help you version and publish your code. You can\nfind the full documentation for it [in our repository](https://github.com/changesets/changesets)\n\nWe have a quick list of common questions to get you started engaging with this project in\n[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md)\n"
  },
  {
    "path": ".changeset/config.json",
    "content": "{\n  \"$schema\": \"https://unpkg.com/@changesets/config@1.7.0/schema.json\",\n  \"changelog\": [\"@changesets/changelog-github\", { \"repo\": \"marko-js/marko\" }],\n  \"___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH\": {\n    \"onlyUpdatePeerDependentsWhenOutOfRange\": true\n  },\n  \"updateInternalDependencies\": \"patch\",\n  \"baseBranch\": \"main\",\n  \"access\": \"public\",\n  \"commit\": false,\n  \"linked\": [],\n  \"ignore\": [],\n  \"fixed\": []\n}\n"
  },
  {
    "path": ".gitattributes",
    "content": "package-lock.json -diff\npackages/runtime-class/src/node_modules/** linguist-generated=false\n"
  },
  {
    "path": ".github/CODE_OF_CONDUCT.md",
    "content": "# Code of Conduct\n\nThis project adheres to the [eBay Code of Conduct](https://github.com/eBay/.github/blob/main/CODE_OF_CONDUCT.md).\nBy participating in this project you agree to abide by its terms.\n\n- Be friendly and patient.\n\n- Be welcoming: We strive to be a community that welcomes and supports people of all backgrounds and identities. This includes, but is not limited to members of any race, ethnicity, culture, national origin, color, immigration status, social and economic class, educational level, sex, sexual orientation, gender identity and expression, age, size, family status, political belief, religion, and mental and physical ability.\n\n- Be considerate: Your work will be used by other people, and you in turn will depend on the work of others. Any decision you take will affect users and colleagues, and you should take those consequences into account when making decisions. Remember that we’re a world-wide community, so you might not be communicating in someone else’s primary language.\n\n- Be respectful: Not all of us will agree all the time, but disagreement is no excuse for poor behavior and poor manners. We might all experience some frustration now and then, but we cannot allow that frustration to turn into a personal attack. It’s important to remember that a community where people feel uncomfortable or threatened is not a productive one.\n\n- Be careful in the words that we choose: we are a community of professionals, and we conduct ourselves professionally.\n\n- Be kind to others. Do not insult or put down other participants. Harassment and other exclusionary behavior aren’t acceptable.\n\n- Try to understand why we disagree: Disagreements, both social and technical, happen all the time. It is important that we resolve disagreements and differing views constructively.\n\n- Remember that we’re different. The strength of our community comes from its diversity, people from a wide range of backgrounds. Different people have different perspectives on issues. Being unable to understand why someone holds a viewpoint doesn’t mean that they’re wrong. Don’t forget that it is human to err and blaming each other doesn’t get us anywhere. Instead, focus on helping to resolve issues and learning from mistakes.\n\nPlease visit https://github.com/eBay/.github/blob/main/CODE_OF_CONDUCT.md for the full code of conduct.\n"
  },
  {
    "path": ".github/CONTRIBUTING.md",
    "content": "# Contribution tips and guidelines\n\n:+1::tada: We're excited you want to contribute! Read on! :tada::+1:\n\n[Questions](#i-just-have-a-question) &bull;\n[Pull requests](#pull-requests-are-always-welcome) &bull;\n[Tackling issues](#tackling-an-existing-issue) &bull;\n[Reporting bugs](#reporting-bugs-and-other-issues) &bull;\n[Labels](#labels)\n\n## I just have a question\n\nBefore you ask, check our [existing questions](https://github.com/marko-js/marko/issues?page=2&q=is%3Aissue+label%3Atype%3Aquestion&utf8=%E2%9C%93) to see if your question has already been answered. If not, go ahead an open an issue or join us in [Discord](https://discord.gg/RFGxYGs) to ask a question.\n\nPlease be sure to use [markdown code blocks](https://help.github.com/articles/creating-and-highlighting-code-blocks/) when posting code on GitHub or Discord:\n\n````\n```marko\n<div>some marko ${code}</div>\n```\n\n```js\nconst some = js.code;\n```\n````\n\n## Pull requests are always welcome\n\nNot sure if that typo is worth a pull request? Found a bug and know how to fix it? Do it! We will appreciate it. Any significant improvement should be documented as [a GitHub issue](https://github.com/marko-js/marko/issues) before anybody starts working on it.\n\nWe are always thrilled to receive pull requests. We do our best to process them quickly. If your pull request is not accepted on the first try, don't get discouraged! We'll work with you to come to an acceptable solution.\n\nPrior to merging your PR, you will need to sign the [Open JS Foundation CLA](https://easycla.lfx.linuxfoundation.org/). It's pretty straight-forward and only takes a minute. You'll also be prompted to sign the CLA automatically when opening a PR.\n\n> **TIP:** If you're new to GitHub or open source you can check out this [free course](https://egghead.io/courses/how-to-contribute-to-an-open-source-project-on-github) on how to contribute to an open source project.\n\n### Running tests\n\nBefore submitting your PR, make sure that all new and previous tests pass and that [coverage](https://codecov.io/gh/marko-js/marko) has not decreased:\n\n```\nnpm run @ci:test\n\n# to view the coverage report\nnpm run report\n```\n\nWhile developing you can run a single test group and use [grep](https://mochajs.org/#-g---grep-pattern) to filter the tests:\n\n```\nnpm test -- --grep=lifecycle\n```\n\n### Adding tests\n\nMarko makes use of directory based test suites. Take a look at the `render` test suite:\n\n<pre>\n<a href=\"../test/\">test/</a>\n ⤷ <a href=\"../test/render/\">render/</a>\n    ⤷ <a href=\"../test/render/fixtures/\">fixtures/</a>\n      ⤷ attrs/\n      ⤷ <a href=\"../test/render/fixtures/for-tag/\">for-tag/</a>\n        ⤷ <a href=\"../test/render/fixtures/for-tag/expected.html\">expected.html</a>\n        ⤷ <a href=\"../test/render/fixtures/for-tag/template.marko\">template.marko</a>\n        ⤷ <a href=\"../test/render/fixtures/for-tag/test.js\">test.js</a>\n      ⤷ nested-tags/\n      ⤷ while-tag/\n    ⤷ <a href=\"../test/render/html.test.js\">html.test.js</a>\n</pre>\n\nThe `html.test.js` file will run and read all the directories under `render/fixtures` and for each directory (`attrs`, `for-tag`, etc.) it will run `test.js`, render `template.marko` and assert that it is equivalent to the content of `expected.html`.\n\nTo add a new test, you'll find the appropriate test suite, copy a fixture, and modify it to add the new test.\n\n#### Skipping a test\n\nA few of the tests suites use the same fixtures for multiple test scenarios. For example, the `component-browser` tests run once rendering the component in a browser environment and a second time rendering in a server environment, then hydrating in the browser.\n\nFor some tests, it might be necessary to skip the test in one of these scenarios. This is done by exporting a [`skip_hydrate`](https://github.com/marko-js/marko/blob/e3df4936c83a5ef419e8186df14ffc6012fcbdcc/test/components-browser/fixtures/implicit-component/test.js#L10) (or similiarly named) property from the fixture. The value of the property should be a string explaining why the test is skipped.\n\n#### Adding a failing test case\n\nIf you've discovered an issue and are able to reproduce it, but don't have a fix, consider submitting a PR with a failing test case. You can mark a fixture as expected to fail by appending exporting a [`fails`](https://github.com/marko-js/marko/blob/0833ada47eeb5c833a11ef01fcd53ae39b0b7491/test/render/fixtures/spread-attribute-function-object/test.js#L1) property from the fixture. The value of the `fails` property should be a string with the issue number. Upon merging a failing test case, a maintainer will update the corresponding issue to add the [`has failing test`](https://github.com/marko-js/marko/labels/has%20failing%20test) label.\n\nIn the case that a fixture is used in multiple test scenarios, you can mark the test as failing in a specific scenario by exporting a [`fails_hydrate`](https://github.com/marko-js/marko/blob/e3df4936c83a5ef419e8186df14ffc6012fcbdcc/test/components-browser/fixtures-deprecated/widget-conditional/test.js#L19) (or similarly named) property from the fixture.\n\nExpected failures won't cause [Travis CI](https://travis-ci.org/marko-js/marko) to report a error, but document that there is an issue and give others a starting point for fixing the problem.\n\n### Debugging tests\n\nIf you need to dig a bit deeper into a failing test, use the `--inspect-brk` flag, open Chrome DevTools, and click on the green nodejs icon (<img height=\"16\" src=\"https://user-images.githubusercontent.com/1958812/37050480-d53e4276-2128-11e8-8c7a-f5d842956c98.png\"/>) to start debugging. Learn more about [debugging node](https://www.youtube.com/watch?v=Xb_0awoShR8&t=103s) from this video.\n\n```\nnpm test -- --grep=test-name --inspect-brk\n```\n\nIn addition to [setting breakpoints](https://developers.google.com/web/tools/chrome-devtools/javascript/breakpoints), you can also add [`debugger;`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/debugger) statements in both your JavaScript files and Marko templates:\n\n```marko\n$ debugger;\n<div>Hello ${input.name}!</div>\n```\n\n### Updating snapshots\n\nA number of the test suites make use snapshot comparisons. For example, the `render` tests compare the rendered html against a stored snapshot. Similarly, the `compiler` tests compare the generated JavaScript module againt a stored snapshot. Any changes compared to the snapshot should be looked at closely, but there are some cases where it is fine that the output has changed and the snapshot needs to be updated.\n\nTo update a snapshot, you can copy the contents from the `actual` file to the `expected` file in the fixture directory. You can also use the `UPDATE_EXPECTATIONS` env variable to cause the test runner to update the `expected` file for all currently failing tests in a suite:\n\n```\nUPDATE_EXPECTATIONS=1 npm test\n```\n\n## Tackling an existing issue\n\nComment on the issue and let us know you'd like to tackle it. If for some reason you aren't going to be able to complete the work, let us know as soon as you can so we can open it up for another developer to work on.\n\nHere's some to get started with:\n\n- [good first issue](https://github.com/marko-js/marko/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22): great for new contributors\n- [help wanted](https://github.com/marko-js/marko/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) issues: won't be tackled in the near future by the maintainers... we need your help!\n- [unassigned](https://github.com/marko-js/marko/issues?utf8=%E2%9C%93&q=is%3Aissue%20is%3Aopen%20no%3Aassignee%20) issues: open issues that no one has claimed... yet\n- [has failing test](https://github.com/marko-js/marko/labels/has%20failing%20test) issues: open issues that already have a failing test case in the repo. make it pass!\n\n## Reporting bugs and other issues\n\nA great way to contribute to the project is to send a detailed report when you encounter an issue. Even better: submit a PR with a failing test case ([see how](#adding-a-failing-test-case)).\n\nCheck that [our issue database](https://github.com/marko-js/marko/issues) doesn't already include that problem or suggestion before submitting an issue. If you find a match, you can use the \"subscribe\" button to get notified on updates. Rather than leaving a \"+1\" or \"I have this too\" comment, you can add a [reaction](https://github.com/blog/2119-add-reactions-to-pull-requests-issues-and-comments) to let us know that this is also affecting you without cluttering the conversation. However, if you have ways to reproduce the issue or have additional information that may help resolving the issue, please leave a comment.\n\nWe have an [ISSUE_TEMPLATE](ISSUE_TEMPLATE.md) that will populate your textarea when you go to open an issue. Use the relevant section and remove the rest.\n\nPlease provide as much detail as possible.\n\n### Reporting security issues\n\nIf you discover a security issue, please **DO NOT** file a public issue, instead **privately** send your report to one of the members with the `core team` role in the [Discord](https://discord.gg/RFGxYGs).\n\nSecurity reports are greatly appreciated and we will publicly thank you for it. We currently do not offer a paid security bounty program.\n\n# Labels\n\nOnce you post an issue, a maintainer will add one or more labels to it. Below is a guideline for the maintainers and anyone else who is interested in what the various labels mean.\n\n### Type\n\n![](https://img.shields.io/badge/type-bug-dd0000.svg)\n![](https://img.shields.io/badge/type-unverified%20bug-aa3300.svg)\n![](https://img.shields.io/badge/type-feature-0099dd.svg)\n![](https://img.shields.io/badge/type-question-99cc00.svg)\n![](https://img.shields.io/badge/type-community-ff8800.svg)\n![](https://img.shields.io/badge/type-tech%20debt-bfdadc.svg)\n![](https://img.shields.io/badge/type-docs-bbbbbb.svg)\n\nEvery issue should be assigned one of these.\n\n- **bug**: A bug report\n- **unverified-bug**: A bug report that has not been verified\n- **feature**: A feature request\n- **question**: A question about how to do something in Marko\n- **community**: Related to community building, improving the contribution process, etc.\n- **tech debt**: Related to refactoring code, test structure, etc.\n- **docs**: Related to documentation/website\n\n### Scope\n\n![](https://img.shields.io/badge/scope-parser-5500cc.svg)\n![](https://img.shields.io/badge/scope-compiler-cc0077.svg)\n![](https://img.shields.io/badge/scope-runtime-eebb00.svg)\n![](https://img.shields.io/badge/scope-core%20taglib-00cccc.svg)\n![](https://img.shields.io/badge/scope-components-9900aa.svg)\n![](https://img.shields.io/badge/scope-tools-fef2c0.svg)\n\nWhat part of the Marko stack does this issue apply to? In most cases there should only be one of these.\n\n- **parser**: Relates to [`htmljs-parser`](https://github.com/marko-js/htmljs-parser)\n- **compiler**: Relates to the [compiler](../src/compiler) (server only)\n- **runtime**: Relates to the [runtime](../src/runtime) (isomorphic/universal)\n- **core-taglib**: Relates to [custom tags](../src/taglib) that ship with Marko\n- **components**: Relates to [components](../src/components)\n- **tools**: Relates to editor plugins, commandline tools, etc.\n\n### Status\n\n![](https://img.shields.io/badge/status-backlog-223344.svg)\n![](https://img.shields.io/badge/status-in%20progress-006b75.svg)\n![](https://img.shields.io/badge/status-needs%20review-0e8a16.svg)\n\nIn many cases, additional _actions_ should be taken when applying one of these.\n\n- **backlog**: Tasks planned to be worked on\n- **in progress**: This is currently being worked on.\n- **needs review**: This issue needs to be followed up on.\n\n### Reason closed\n\n![](https://img.shields.io/badge/reason%20closed-resolved-99cc99.svg)\n![](https://img.shields.io/badge/reason%20closed-duplicate-cc99cc.svg)\n![](https://img.shields.io/badge/reason%20closed-declined-bb6666.svg)\n![](https://img.shields.io/badge/reason%20closed-not%20a%20bug-997744.svg)\n![](https://img.shields.io/badge/reason%20closed-inactivity-bfd4f2.svg)\n![](https://img.shields.io/badge/reason%20closed-no%20issue-c5def5.svg)\n\n- **resolved**: The question was answered, the bug was fixed, or the feature was implemented.\n- **duplicate**: Someone has already posted the same or a very similar issue. A comment should be added that references the original issue.\n- **declined**: This feature will not be implemented.\n- **not a bug**: This is not a bug, but either user error or intended behavior.\n- **inactivity**: There was not enough info to reproduce the bug or not enough interest in the feature to hash out an implementation plan and the conversation has stalled.\n- **no issue**: This wasn't so much an issue as a comment\n\n### Other\n\n![](https://img.shields.io/badge/-good%20first%20issue-00cccc.svg)\n![](https://img.shields.io/badge/-help%20wanted-33cc88.svg)\n![](https://img.shields.io/badge/-blocked-6b0c0c.svg)\n![](https://img.shields.io/badge/-needs%20more%20info-dd9944.svg)\n![](https://img.shields.io/badge/-user%20land-e8c9c9.svg)\n\n- **good first issue**: Small tasks that would be good for first time contributors.\n- **help wanted**: Not on the roadmap, but we'd love for someone in the community to tackle it.\n- **blocked**: Cannot be completed until something else happens first. This should be described in a comment with a link to the blocking issue.\n- **needs more info**: The original poster needs to provide more information before action can be taken.\n- **user land**: Something that probably won't be added to core, but could be implemented/proved out as a separate module.\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/Bug_report.md",
    "content": "---\nname: \"\\U0001F41BBug report\"\nabout: Something isn't working right\ntitle: \"\"\nlabels: \"type:unverified bug\"\n---\n\n### Marko Version: x.x.x\n\n<!--- Provide the exact version of marko in which you see the bug.  You can run `npm ls marko` to see this. -->\n\n### Details\n\n<!--- Provide a more detailed introduction to the issue itself, and why you consider it to be a bug.  How has this bug affected you? What were you trying to accomplish? -->\n\n### Expected Behavior\n\n<!--- Tell us what should happen -->\n\n### Actual Behavior\n\n<!--- Tell us what happens instead -->\n\n### Possible Fix\n\n<!--- Not obligatory, but suggest a fix or reason for the bug -->\n\n<details><summary>Additional Info</summary>\n\n### Your Environment\n\n<!-- Include as many relevant details about the environment you experienced the bug in -->\n\n- Environment name and version (e.g. Chrome 39, node.js 5.4):\n- Operating System and version (desktop or mobile):\n- Link to your project:\n\n### Steps to Reproduce\n\n<!-- Provide a link to a live example -->\n\n<!-- or an unambiguous set of steps to reproduce this bug -->\n\n<!-- include code to reproduce, if relevant -->\n\n1.  first...\n2.\n3.\n4.\n\n### Stack Trace\n\n<!-- If an error is thrown, provide the stack trace here -->\n\n</details>\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/Feature_request.md",
    "content": "---\nname: \"\\U0001F680Feature request\"\nabout: Suggest an idea for this project\ntitle: \"\"\nlabels: \"type:feature\"\n---\n\n### Description\n\n<!--- Provide a detailed description of the change or addition you are proposing -->\n\n### Why\n\n<!--- Why is this change important to you? How would you use it? -->\n\n<!--- How can it benefit other users? -->\n\n### Possible Implementation & Open Questions\n\n<!--- Not obligatory, but suggest an idea for implementing addition or change -->\n\n<!--- What still needs to be discussed -->\n\n### Is this something you're interested in working on?\n\n<!--- Yes or no -->\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/Support_question.md",
    "content": "---\nname: \"\\U00002753Support Question\"\nabout: If you have a question, please check out our Discord or StackOverflow!\ntitle: \"\"\nlabels: \"type:question\"\n---\n\n<!--\nWe primarily use GitHub as an issue tracker; for usage and support questions, please check out these resources below. Thanks!\n\n* Website: https://markojs.com/\n* Chat: https://discord.gg/RFGxYGs\n* StackOverflow: https://stackoverflow.com/questions/tagged/marko using the tag `marko`\n-->\n"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "content": "<!--- Provide a general summary of your changes in the Title above -->\n\n## Description\n\n<!--- Describe your changes in detail -->\n\n<!--- Why is this change required? What problem does it solve? -->\n\n<!--- If it fixes an open issue, please link to the issue here. -->\n\n## Checklist:\n\n<!--- Go over all the following points, and put an `x` in all the boxes that apply. -->\n\n<!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->\n\n- [ ] I have read the **CONTRIBUTING** document and have signed (or will sign) the CLA.\n- [ ] I have updated/added documentation affected by my changes.\n- [ ] I have added tests to cover my changes.\n"
  },
  {
    "path": ".github/workflows/ci.yml",
    "content": "name: CI\n\non:\n  pull_request:\n    types: [opened, synchronize]\n  push:\n    branches: [main, v3, v4]\n\nconcurrency:\n  group: \"${{ github.workflow }}-${{ github.event_name == 'pull_request_target' && github.head_ref || github.ref }}\"\n  cancel-in-progress: true\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout code\n        uses: actions/checkout@v6\n      - name: Use node\n        uses: actions/setup-node@v6\n        with:\n          node-version: 24\n          cache: npm\n      - name: Install dependencies\n        run: npm ci\n      - name: Build\n        run: npm run @ci:build\n      - name: Lint Code\n        run: npm run @ci:lint\n  test:\n    runs-on: ubuntu-latest\n    name: \"test: node@${{ matrix.node }}\"\n    strategy:\n      fail-fast: false\n      matrix:\n        node: [20, 22, 24]\n    steps:\n      - name: Checkout code\n        uses: actions/checkout@v6\n      - name: Use node@${{ matrix.node }}\n        uses: actions/setup-node@v6\n        with:\n          node-version: ${{ matrix.node }}\n          cache: npm\n      - name: Install dependencies\n        run: npm ci\n      - name: Run tests\n        run: npm run @ci:test\n      - name: Report code coverage\n        uses: codecov/codecov-action@v5\n        with:\n          token: ${{ secrets.CODECOV_TOKEN }}\n  release:\n    runs-on: ubuntu-latest\n    needs: [build, test]\n    if: ${{ github.repository_owner == 'marko-js' && github.event_name == 'push' }}\n    permissions:\n      id-token: write\n      contents: write\n      pull-requests: write\n    steps:\n      - name: Checkout code\n        uses: actions/checkout@v6\n      - name: Setup node\n        uses: actions/setup-node@v6\n        with:\n          node-version: 24\n          cache: npm\n      - name: Install dependencies\n        run: npm ci\n      - name: Release\n        id: changesets\n        uses: changesets/action@v1\n        with:\n          version: npm run @ci:version\n          publish: npm run @ci:release\n          commit: \"[ci] release\"\n          title: \"[ci] release\"\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n      - name: Release Alias\n        if: ${{ contains(steps.changesets.outputs.publishedPackages, '\"@marko/runtime-tags\"') }}\n        run: npm run @ci:release-alias\n"
  },
  {
    "path": ".gitignore",
    "content": "# Build\ndist\n*.marko.js\n*actual*\n*.tsbuildinfo\n\n### Node ###\n\n# Logs\nlogs\n*.log*\n\n# Diagnostic reports (https://nodejs.org/api/report.html)\nreport.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json\n\n# Runtime data\npids\n*.pid\n*.seed\n*.pid.lock\n\n# Coverage directory used by tools like istanbul\ncoverage\n*.lcov\n\n# nyc test coverage\n.nyc_output\n\n# Dependency directories\nnode_modules\n!packages/runtime-class/src/node_modules\n\n# Optional npm cache directory\n.npm\n\n# Optional eslint cache\n.eslintcache\n\n# Optional REPL history\n.node_repl_history\n\n# Output of 'npm pack'\n*.tgz\n\n# Yarn\n.yarn-integrity\nyarn.lock\n\n# dotenv environment variables file\n.env\n.env.test\n\n### Git ###\n\n# Created by git for backups. To disable backups in Git:\n# $ git config --global mergetool.keepBackup false\n*.orig\n\n# Created by git when using merge tools for conflicts\n*.BACKUP.*\n*.BASE.*\n*.LOCAL.*\n*.REMOTE.*\n*_BACKUP_*.txt\n*_BASE_*.txt\n*_LOCAL_*.txt\n*_REMOTE_*.txt\n\n### OS ###\n\n# Linux\n*~\n.fuse_hidden*\n.directory\n.Trash-*\n.nfs*\n\n# Mac\n.DS_Store\n.AppleDouble\n.LSOverride\n._*\nIcon\n\n# Windows\n*[Tt]humbs*.db*\n[Dd]esktop.ini\n*.stackdump\n*.lnk\n\n### EDITOR ###\n\n# VisualStudioCode\n.vscode\n.history\n*.sublime*\n\n# JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm\n*.iml\n*.ipr\n*.iws\nmodules.xml\n.idea\n\n# SublimeText\n*.cache\n*.sublime-*\nPackage Control.*\noscrypto-ca-bundle.crt\n\n# TextMate\n*.tmproj\n*.tmproject\ntmtags\n\n# Vim\n*.swp\n*.vim\n.netrwhist\n"
  },
  {
    "path": ".husky/.gitignore",
    "content": "_\n"
  },
  {
    "path": ".husky/pre-commit",
    "content": "npm exec -- lint-staged && npm run build && npm run build:sizes && git add .sizes.json && git add .sizes\n"
  },
  {
    "path": ".lintstagedrc.json",
    "content": "{\n  \"$schema\": \"https://json.schemastore.org/lintstagedrc.schema.json\",\n  \"*.{ts,js}\": [\"eslint --fix\", \"prettier --write --with-node-modules\"],\n  \"*.{json,md,css}\": [\"prettier --write --with-node-modules\"]\n}\n"
  },
  {
    "path": ".mocharc.json",
    "content": "{\n  \"timeout\": 5000,\n  \"enable-source-maps\": true,\n  \"require\": [\"~ts\", \"mocha-snap\"],\n  \"spec\": [\"packages/*/@(src|test)/**/*.test.@(js|ts)\"],\n  \"watchFiles\": [\"src/**/*.@(js|ts|marko)\", \"!**/__snapshots__/**\"]\n}\n"
  },
  {
    "path": ".prettierignore",
    "content": "__snapshots__\n!packages/runtime-class/src/node_modules\n.cache\n.nvm\n.sizes\n.sizes.json\n.vscode\n*actual*\n*expected*\n~*\nCHANGELOG.md\ncoverage\ndist\n**/fixtures/*/*\n!**/fixtures/*/*.ts\ninput.*\nnode_modules\npackage-lock.json\nsnapshots\n"
  },
  {
    "path": ".prettierrc.json",
    "content": "{\n  \"$schema\": \"https://json.schemastore.org/prettierrc\",\n  \"plugins\": [\"prettier-plugin-packagejson\"]\n}\n"
  },
  {
    "path": ".sizes/comments.csr/entry.js",
    "content": "// size: 694 (min) 380 (brotli)\nconst $if_content__comment_comments = _if_closure(4, 0, ($scope) =>\n    $input_comments$1($scope.a, $scope._.i),\n  ),\n  $if_content__setup = ($scope) => {\n    ($if_content__comment_comments._($scope),\n      $if_content__id._($scope),\n      $scope.a);\n  },\n  $if_content__id = _if_closure(4, 0, ($scope) =>\n    $input_path$1($scope.a, $scope._.l),\n  ),\n  $for_content__id = _const(11, ($scope) => {\n    (_attr($scope.a, \"id\", $scope.l), $if_content__id($scope));\n  }),\n  $for_content__input_path = _for_closure(0, ($scope) =>\n    $for_content__id($scope, `${$scope._.e || \"c\"}-${$scope.M}`),\n  ),\n  $for_content__open__script = _script(\"a0\", ($scope) =>\n    _on($scope.c, \"click\", function () {\n      $for_content__open($scope, !$scope.m);\n    }),\n  ),\n  $for_content__open = _let(12, ($scope) => {\n    (_attr($scope.a, \"hidden\", !$scope.m),\n      _text($scope.d, $scope.m ? \"[-]\" : \"[+]\"),\n      $for_content__open__script($scope));\n  }),\n  $for_content__setup = ($scope) => {\n    ($for_content__input_path._($scope), $for_content__open($scope, !0));\n  },\n  $for_content__if = _if(4, \"<ul></ul>\", \"/ b&\", $if_content__setup),\n  $for_content__comment_comments = _const(8, ($scope) => {\n    ($for_content__if($scope, $scope.i ? 0 : 1),\n      $if_content__comment_comments($scope));\n  }),\n  $for_content__$params = ($scope, $params2) =>\n    $for_content__comment($scope, $params2[0]),\n  $for_content__comment = ($scope, comment) => {\n    ((($scope, comment_text) => {\n      _text($scope.b, comment_text);\n    })($scope, comment?.text),\n      $for_content__comment_comments($scope, comment?.comments));\n  },\n  $for = _for_of(\n    0,\n    \"<li><span> </span><button> </button><!></li>\",\n    \" E l D l%l\",\n    $for_content__setup,\n    $for_content__$params,\n  ),\n  $input_comments$1 = ($scope, input_comments) =>\n    $for($scope, [input_comments]),\n  $input_path$1 = _const(4, $for_content__input_path);\nfunction $setup($scope) {\n  $scope.a;\n}\n_template(\"b\", \"<ul></ul>\", \"/ b&\", $setup, ($scope, input) => {\n  ((($scope, input_comments) => {\n    $input_comments$1($scope.a, input_comments);\n  })($scope, input.comments),\n    (($scope, input_path) => {\n      $input_path$1($scope.a, input_path);\n    })($scope, input.path));\n}).mount();\n"
  },
  {
    "path": ".sizes/comments.ssr/entry.js",
    "content": "// size: 130 (min) 110 (brotli)\nconst $for_content__open__script = _script(\"a0\", ($scope) =>\n    _on($scope.c, \"click\", function () {\n      $for_content__open($scope, !$scope.m);\n    }),\n  ),\n  $for_content__open = _let(12, ($scope) => {\n    (_attr($scope.a, \"hidden\", !$scope.m),\n      _text($scope.d, $scope.m ? \"[-]\" : \"[+]\"),\n      $for_content__open__script($scope));\n  });\ninit();\n"
  },
  {
    "path": ".sizes/counter.csr/entry.js",
    "content": "// size: 173 (min) 148 (brotli)\nconst $clickCount__script = _script(\"a0\", ($scope) =>\n    _on($scope.a, \"click\", function () {\n      $clickCount($scope, $scope.c + 1);\n    }),\n  ),\n  $clickCount = _let(2, ($scope) => {\n    (_text($scope.b, $scope.c), $clickCount__script($scope));\n  });\nfunction $setup($scope) {\n  $clickCount($scope, 0);\n}\n_template(\"a\", \"<div><button> </button></div>\", \"D D m\", $setup).mount();\n"
  },
  {
    "path": ".sizes/counter.ssr/entry.js",
    "content": "// size: 96 (min) 100 (brotli)\nconst $clickCount__script = _script(\"a0\", ($scope) =>\n    _on($scope.a, \"click\", function () {\n      $clickCount($scope, $scope.c + 1);\n    }),\n  ),\n  $clickCount = _let(2, ($scope) => {\n    (_text($scope.b, $scope.c), $clickCount__script($scope));\n  });\ninit();\n"
  },
  {
    "path": ".sizes/dom.js",
    "content": "// size: 21238 (min) 7981 (brotli)\nvar empty = [],\n  rest = Symbol();\nfunction attrTag(attrs) {\n  return (\n    (attrs[Symbol.iterator] = attrTagIterator),\n    (attrs[rest] = empty),\n    attrs\n  );\n}\nfunction attrTags(first, attrs) {\n  return first\n    ? (first[rest] === empty\n        ? (first[rest] = [attrs])\n        : first[rest].push(attrs),\n      first)\n    : attrTag(attrs);\n}\nfunction* attrTagIterator() {\n  (yield this, yield* this[rest]);\n}\nfunction _assert_hoist(value) {}\nfunction _assert_init(scope, accessor) {\n  return scope[accessor];\n}\nfunction forIn(obj, cb) {\n  for (let key in obj) cb(key, obj[key]);\n}\nfunction forOf(list, cb) {\n  if (list) {\n    let i = 0;\n    for (let item of list) cb(item, i++);\n  }\n}\nfunction forTo(to, from, step, cb) {\n  let start = from || 0,\n    delta = step || 1;\n  for (let steps = (to - start) / delta, i = 0; i <= steps; i++)\n    cb(start + i * delta);\n}\nfunction forUntil(until, from, step, cb) {\n  let start = from || 0,\n    delta = step || 1;\n  for (let steps = (until - start) / delta, i = 0; i < steps; i++)\n    cb(start + i * delta);\n}\nfunction _call(fn, v) {\n  return (fn(v), v);\n}\nfunction stringifyClassObject(name, value) {\n  return value ? name : \"\";\n}\nfunction stringifyStyleObject(name, value) {\n  return value || 0 === value ? name + \":\" + value : \"\";\n}\nfunction toDelimitedString(val, delimiter, stringify) {\n  let part,\n    str = \"\",\n    sep = \"\";\n  if (val)\n    if (\"object\" != typeof val) str += val;\n    else if (Array.isArray(val))\n      for (let v of val)\n        ((part = toDelimitedString(v, delimiter, stringify)),\n          part && ((str += sep + part), (sep = delimiter)));\n    else\n      for (let name in val)\n        ((part = stringify(name, val[name])),\n          part && ((str += sep + part), (sep = delimiter)));\n  return str;\n}\nfunction isEventHandler(name) {\n  return /^on[A-Z-]/.test(name);\n}\nfunction getEventHandlerName(name) {\n  return \"-\" === name[2] ? name.slice(3) : name.slice(2).toLowerCase();\n}\nfunction normalizeDynamicRenderer(value) {\n  if (value) {\n    if (\"string\" == typeof value) return value;\n    let normalized = value.content || value.default || value;\n    if (\"g\" in normalized) return normalized;\n  }\n}\nvar decodeAccessor = (num) =>\n  (num + (num < 26 ? 10 : num < 962 ? 334 : 11998)).toString(36);\nfunction toArray(opt) {\n  return opt ? (Array.isArray(opt) ? opt : [opt]) : [];\n}\nfunction push(opt, item) {\n  return opt\n    ? Array.isArray(opt)\n      ? (opt.push(item), opt)\n      : [opt, item]\n    : item;\n}\nvar defaultDelegator = createDelegator();\nfunction _on(element, type, handler) {\n  (void 0 === element[\"$\" + type] &&\n    defaultDelegator(element, type, handleDelegated),\n    (element[\"$\" + type] = handler || null));\n}\nfunction createDelegator() {\n  let kEvents = Symbol();\n  return function (node, type, handler) {\n    ((node = node.getRootNode())[kEvents] ||= {})[type] ||=\n      (node.addEventListener(type, handler, !0), 1);\n  };\n}\nfunction handleDelegated(ev) {\n  let target = !rendering && ev.target;\n  for (; target; )\n    (target[\"$\" + ev.type]?.(ev, target),\n      (target = ev.bubbles && !ev.cancelBubble && target.parentNode));\n}\nfunction stripSpacesAndPunctuation(str) {\n  return str.replace(/[^\\p{L}\\p{N}]/gu, \"\");\n}\nvar parsers = {};\nfunction parseHTML(html, ns) {\n  let parser = (parsers[ns] ||= document.createElementNS(ns, \"template\"));\n  return ((parser.innerHTML = html), parser.content || parser);\n}\nvar isScheduled,\n  channel,\n  nextScopeId = 1e6;\nfunction createScope($global, closestBranch) {\n  let scope = { L: nextScopeId++, H: 1, F: closestBranch, $: $global };\n  return (pendingScopes.push(scope), scope);\n}\nfunction skipScope() {\n  return nextScopeId++;\n}\nfunction findBranchWithKey(scope, key) {\n  let branch = scope.F;\n  for (; branch && !branch[key]; ) branch = branch.N;\n  return branch;\n}\nfunction destroyBranch(branch) {\n  (branch.N?.D?.delete(branch), destroyNestedScopes(branch));\n}\nfunction destroyScope(scope) {\n  scope.I || (destroyNestedScopes(scope), resetControllers(scope));\n}\nfunction destroyNestedScopes(scope) {\n  ((scope.I = 1),\n    scope.D?.forEach(destroyNestedScopes),\n    scope.B?.forEach(resetControllers));\n}\nfunction resetControllers(scope) {\n  for (let id in scope.A) $signalReset(scope, id);\n}\nfunction removeAndDestroyBranch(branch) {\n  (destroyBranch(branch), removeChildNodes(branch.S, branch.K));\n}\nfunction insertBranchBefore(branch, parentNode, nextSibling) {\n  insertChildNodes(parentNode, nextSibling, branch.S, branch.K);\n}\nfunction tempDetachBranch(branch) {\n  let fragment = new DocumentFragment();\n  ((fragment.namespaceURI = branch.S.parentNode.namespaceURI),\n    insertChildNodes(fragment, null, branch.S, branch.K));\n}\nfunction schedule() {\n  isScheduled || ((isScheduled = 1), queueMicrotask(flushAndWaitFrame));\n}\nfunction flushAndWaitFrame() {\n  (run(), requestAnimationFrame(triggerMacroTask));\n}\nfunction triggerMacroTask() {\n  (channel ||\n    ((channel = new MessageChannel()).port1.onmessage = () => {\n      ((isScheduled = 0), run());\n    }),\n    channel.port2.postMessage(0));\n}\nfunction _let(id, fn) {\n  let valueAccessor = decodeAccessor(id),\n    valueChangeAccessor = \"M\" + valueAccessor;\n  return (scope, value, valueChange) => (\n    rendering\n      ? (((scope[valueChangeAccessor] = valueChange) &&\n          scope[valueAccessor] !== value) ||\n          scope.H) &&\n        ((scope[valueAccessor] = value), fn?.(scope))\n      : scope[valueChangeAccessor]\n        ? scope[valueChangeAccessor](value)\n        : scope[valueAccessor] !== (scope[valueAccessor] = value) &&\n          fn &&\n          (schedule(), queueRender(scope, fn, id)),\n    value\n  );\n}\nfunction _const(valueAccessor, fn) {\n  return (\n    (valueAccessor = decodeAccessor(valueAccessor)),\n    (scope, value) => {\n      (!(valueAccessor in scope) || scope[valueAccessor] !== value) &&\n        ((scope[valueAccessor] = value), fn?.(scope));\n    }\n  );\n}\nfunction _or(id, fn, defaultPending = 1, scopeIdAccessor = \"L\") {\n  return (\n    \"L\" !== scopeIdAccessor &&\n      (scopeIdAccessor = decodeAccessor(scopeIdAccessor)),\n    (scope) => {\n      scope.H\n        ? id in scope\n          ? --scope[id] || fn(scope)\n          : (scope[id] = defaultPending)\n        : queueRender(scope, fn, id, 0, scope[scopeIdAccessor]);\n    }\n  );\n}\nfunction _for_closure(ownerLoopNodeAccessor, fn) {\n  let scopeAccessor =\n      \"A\" + (ownerLoopNodeAccessor = decodeAccessor(ownerLoopNodeAccessor)),\n    ownerSignal = (ownerScope) => {\n      let scopes = toArray(ownerScope[scopeAccessor]);\n      scopes.length &&\n        queueRender(\n          ownerScope,\n          () => {\n            for (let scope of scopes) !scope.H && !scope.I && fn(scope);\n          },\n          -1,\n          0,\n          scopes[0].L,\n        );\n    };\n  return ((ownerSignal._ = fn), ownerSignal);\n}\nfunction _if_closure(ownerConditionalNodeAccessor, branch, fn) {\n  let scopeAccessor =\n      \"A\" +\n      (ownerConditionalNodeAccessor = decodeAccessor(\n        ownerConditionalNodeAccessor,\n      )),\n    branchAccessor = \"D\" + ownerConditionalNodeAccessor,\n    ownerSignal = (scope) => {\n      let ifScope = scope[scopeAccessor];\n      ifScope &&\n        !ifScope.H &&\n        (scope[branchAccessor] || 0) === branch &&\n        queueRender(ifScope, fn, -1);\n    };\n  return ((ownerSignal._ = fn), ownerSignal);\n}\nfunction subscribeToScopeSet(ownerScope, accessor, scope) {\n  let subscribers = (ownerScope[accessor] ||= new Set());\n  subscribers.has(scope) ||\n    (subscribers.add(scope),\n    $signal(scope, -1).addEventListener(\"abort\", () =>\n      ownerScope[accessor].delete(scope),\n    ));\n}\nfunction _closure(...closureSignals) {\n  let [{ o: ___scopeInstancesAccessor, q: ___signalIndexAccessor }] =\n    closureSignals;\n  for (let i = closureSignals.length; i--; ) closureSignals[i].x = i;\n  return (scope) => {\n    if (scope[___scopeInstancesAccessor])\n      for (let childScope of scope[___scopeInstancesAccessor])\n        childScope.H ||\n          queueRender(\n            childScope,\n            closureSignals[childScope[___signalIndexAccessor]],\n            -1,\n          );\n  };\n}\nfunction _closure_get(valueAccessor, fn, getOwnerScope, resumeId) {\n  valueAccessor = decodeAccessor(valueAccessor);\n  let closureSignal = (scope) => {\n    ((scope[closureSignal.q] = closureSignal.x),\n      fn(scope),\n      subscribeToScopeSet(\n        getOwnerScope ? getOwnerScope(scope) : scope._,\n        closureSignal.o,\n        scope,\n      ));\n  };\n  return (\n    (closureSignal.o = \"B\" + valueAccessor),\n    (closureSignal.q = \"C\" + valueAccessor),\n    resumeId && _resume(resumeId, closureSignal),\n    closureSignal\n  );\n}\nfunction _child_setup(setup) {\n  return (\n    (setup._ = (scope, owner) => {\n      ((scope._ = owner), queueRender(scope, setup, -1));\n    }),\n    setup\n  );\n}\nfunction _var(scope, childAccessor, signal) {\n  scope[decodeAccessor(childAccessor)].T = (value) => signal(scope, value);\n}\nvar _return = (scope, value) => scope.T?.(value);\nfunction _return_change(scope, changeHandler) {\n  changeHandler && (scope.U = changeHandler);\n}\nvar _var_change = (scope, value) => scope.U?.(value),\n  tagIdsByGlobal = new WeakMap();\nfunction _id({ $: $global }) {\n  let id = tagIdsByGlobal.get($global) || 0;\n  return (\n    tagIdsByGlobal.set($global, id + 1),\n    \"c\" + $global.runtimeId + $global.renderId + id.toString(36)\n  );\n}\nfunction _script(id, fn) {\n  return (\n    _resume(id, fn),\n    (scope) => {\n      queueEffect(scope, fn);\n    }\n  );\n}\nfunction _el_read(value) {\n  return value;\n}\nfunction* traverse(scope, path, i = path.length - 1) {\n  if (scope)\n    if (Symbol.iterator in scope)\n      for (let childScope of scope.values())\n        yield* traverse(childScope, path, i);\n    else {\n      let item = scope[path[i]];\n      i\n        ? yield* traverse(item, path, i - 1)\n        : yield \"function\" == typeof item ? item() : item;\n    }\n}\nfunction _hoist(...path) {\n  return (\n    (path = path.map((p) => (\"string\" == typeof p ? p : decodeAccessor(p)))),\n    (scope) => {\n      let fn = () => traverse(scope, path).next().value;\n      return ((fn[Symbol.iterator] = () => traverse(scope, path)), fn);\n    }\n  );\n}\nfunction _hoist_resume(id, ...path) {\n  return _resume(id, _hoist(...path));\n}\nvar walker = document.createTreeWalker(document);\nfunction walk(startNode, walkCodes, branch) {\n  ((walker.currentNode = startNode), walkInternal(0, walkCodes, branch));\n}\nfunction walkInternal(currentWalkIndex, walkCodes, scope) {\n  let value,\n    currentMultiplier,\n    storedMultiplier = 0,\n    currentScopeIndex = 0;\n  for (; currentWalkIndex < walkCodes.length; )\n    if (\n      ((value = walkCodes.charCodeAt(currentWalkIndex++)),\n      (currentMultiplier = storedMultiplier),\n      (storedMultiplier = 0),\n      32 === value)\n    ) {\n      let node = walker.currentNode;\n      scope[decodeAccessor(currentScopeIndex++)] = node;\n    } else if (37 === value || 49 === value)\n      (walker.currentNode.replaceWith(\n        (walker.currentNode = scope[decodeAccessor(currentScopeIndex++)] =\n          new Text()),\n      ),\n        49 === value &&\n          (scope[decodeAccessor(currentScopeIndex++)] = skipScope()));\n    else {\n      if (38 === value) return currentWalkIndex;\n      if (47 === value || 48 === value)\n        ((currentWalkIndex = walkInternal(\n          currentWalkIndex,\n          walkCodes,\n          (scope[decodeAccessor(currentScopeIndex++)] = createScope(\n            scope.$,\n            scope.F,\n          )),\n        )),\n          48 === value &&\n            (scope[decodeAccessor(currentScopeIndex++)] = skipScope()));\n      else if (value < 92)\n        for (value = 20 * currentMultiplier + value - 67; value--; )\n          walker.nextNode();\n      else if (value < 107)\n        for (value = 10 * currentMultiplier + value - 97; value--; )\n          walker.nextSibling();\n      else if (value < 117) {\n        for (value = 10 * currentMultiplier + value - 107; value--; )\n          walker.parentNode();\n        walker.nextSibling();\n      } else storedMultiplier = 10 * currentMultiplier + value - 117;\n    }\n}\nfunction createBranch($global, renderer, parentScope, parentNode) {\n  let branch = createScope($global);\n  return (\n    (branch._ = renderer.f || parentScope),\n    setParentBranch(branch, parentScope?.F),\n    renderer.k?.(branch, parentNode.namespaceURI),\n    branch\n  );\n}\nfunction setParentBranch(branch, parentBranch) {\n  (parentBranch &&\n    ((branch.N = parentBranch), (parentBranch.D ||= new Set()).add(branch)),\n    (branch.F = branch));\n}\nfunction createAndSetupBranch($global, renderer, parentScope, parentNode) {\n  return setupBranch(\n    renderer,\n    createBranch($global, renderer, parentScope, parentNode),\n  );\n}\nfunction setupBranch(renderer, branch) {\n  return (renderer.l && queueRender(branch, renderer.l, -1), branch);\n}\nfunction _content(id, template, walks, setup, params, dynamicScopesAccessor) {\n  ((walks = walks ? walks.replace(/[^\\0-1]+$/, \"\") : \"\"),\n    (setup = setup ? setup._ || setup : void 0),\n    (params ||= void 0));\n  let clone = template\n    ? (branch, ns) => {\n        ((cloneCache[ns] ||= {})[template] ||= (function (html, ns) {\n          let { firstChild: firstChild, lastChild: lastChild } = parseHTML(\n              html,\n              ns,\n            ),\n            parent = document.createElementNS(ns, \"t\");\n          return (\n            insertChildNodes(parent, null, firstChild, lastChild),\n            firstChild === lastChild && firstChild.nodeType < 8\n              ? (branch, walks) => {\n                  walk(\n                    (branch.S = branch.K = firstChild.cloneNode(!0)),\n                    walks,\n                    branch,\n                  );\n                }\n              : (branch, walks) => {\n                  let clone = parent.cloneNode(!0);\n                  (walk(clone.firstChild, walks, branch),\n                    (branch.S = clone.firstChild),\n                    (branch.K = clone.lastChild));\n                }\n          );\n        })(template, ns))(branch, walks);\n      }\n    : (branch) => {\n        walk((branch.S = branch.K = new Text()), walks, branch);\n      };\n  return (owner) => ({\n    g: id,\n    k: clone,\n    f: owner,\n    l: setup,\n    d: params,\n    e: dynamicScopesAccessor,\n  });\n}\nfunction _content_resume(\n  id,\n  template,\n  walks,\n  setup,\n  params,\n  dynamicScopesAccessor,\n) {\n  return _resume(\n    id,\n    _content(id, template, walks, setup, params, dynamicScopesAccessor),\n  );\n}\nfunction _content_closures(renderer, closureFns) {\n  let closureSignals = {};\n  for (let key in closureFns)\n    closureSignals[key] = _const(+key, closureFns[key]);\n  return (owner, closureValues) => {\n    let instance = renderer(owner);\n    return (\n      (instance.h = closureSignals),\n      (instance.t = closureValues),\n      instance\n    );\n  };\n}\nvar cloneCache = {};\nvar curRuntimeId,\n  readyLookup,\n  branchesEnabled,\n  embedEnabled,\n  registeredValues = {};\nfunction enableBranches() {\n  branchesEnabled = 1;\n}\nvar isResuming,\n  ready = (() => (id) => {\n    (readyLookup[id]?.(), (readyLookup[id] = 1));\n  })((readyLookup = {}));\nfunction initEmbedded(readyId, runtimeId) {\n  ((embedEnabled = 1),\n    ready(readyId),\n    init(runtimeId),\n    new MutationObserver(() => {\n      let renders = self[curRuntimeId];\n      for (let renderId in renders) {\n        let { s: s, n: n } = renders[renderId];\n        if (n && !n.isConnected) {\n          delete renders[renderId];\n          for (let id in s) destroyScope(s[id]);\n        }\n      }\n    }).observe(document.body, { childList: !0, subtree: !0 }));\n}\nfunction init(runtimeId = \"M\") {\n  if (curRuntimeId) return;\n  curRuntimeId = runtimeId;\n  let resumeRender,\n    renders = self[runtimeId],\n    defineRuntime = (desc) => Object.defineProperty(self, runtimeId, desc),\n    initRuntime = (renders2) => {\n      defineRuntime({\n        value: (resumeRender = (renderId) => {\n          let $global,\n            lastEffect,\n            visits,\n            resumes,\n            visit,\n            visitText,\n            visitType,\n            visitScope,\n            lastToken,\n            lastTokenIndex,\n            render = (resumeRender[renderId] =\n              renders2[renderId] || renders2(renderId)),\n            walk2 = render.w,\n            scopeLookup = (render.s = {}),\n            getScope = (id) => (scopeLookup[id] ||= { L: +id }),\n            serializeContext = { _: registeredValues },\n            visitBranches =\n              branchesEnabled &&\n              (\n                (\n                  branchScopesStack = [],\n                  branchStarts = [],\n                  orphanBranches = [],\n                  curBranchScopes,\n                ) =>\n                (\n                  branchId,\n                  branch,\n                  endedBranches,\n                  accessor,\n                  singleNode,\n                  parent = visit.parentNode,\n                  startVisit = visit,\n                  i = orphanBranches.length,\n                ) => {\n                  for (\n                    \"[\" !== visitType &&\n                    ((visitScope[nextToken()] =\n                      \")\" === visitType || \"}\" === visitType ? parent : visit),\n                    (accessor = \"A\" + lastToken),\n                    (singleNode = \"]\" !== visitType && \")\" !== visitType),\n                    nextToken());\n                    (branchId = +lastToken);\n                  ) {\n                    if (\n                      ((endedBranches ||= []).push(\n                        (branch = getScope(branchId)),\n                      ),\n                      setParentBranch(branch, branch.F),\n                      (branch.O = render.p?.[branchId]) &&\n                        (branch.O.m = render.m),\n                      singleNode)\n                    ) {\n                      for (\n                        ;\n                        startVisit.previousSibling &&\n                        ~visits.indexOf(\n                          (startVisit = startVisit.previousSibling),\n                        );\n                      );\n                      ((branch.K = branch.S = startVisit),\n                        \"'\" === visitType && (branch.a = startVisit));\n                    } else\n                      ((curBranchScopes = push(curBranchScopes, branch)),\n                        accessor &&\n                          ((visitScope[accessor] = curBranchScopes),\n                          (curBranchScopes = branchScopesStack.pop())),\n                        parent !==\n                          (startVisit = branchStarts.pop()).parentNode &&\n                          parent.prepend(startVisit),\n                        (branch.S = startVisit),\n                        (branch.K =\n                          visit.previousSibling === startVisit\n                            ? startVisit\n                            : parent.insertBefore(new Text(), visit)));\n                    for (; i && orphanBranches[--i].L > branchId; )\n                      setParentBranch(orphanBranches.pop(), branch);\n                    nextToken();\n                  }\n                  (endedBranches &&\n                    (orphanBranches.push(...endedBranches),\n                    singleNode &&\n                      (visitScope[accessor] =\n                        endedBranches.length > 1\n                          ? endedBranches.reverse()\n                          : endedBranches[0])),\n                    \"[\" === visitType &&\n                      (endedBranches ||\n                        (branchScopesStack.push(curBranchScopes),\n                        (curBranchScopes = void 0)),\n                      branchStarts.push(visit)));\n                }\n              )(),\n            nextToken = () =>\n              (lastToken = visitText.slice(\n                lastTokenIndex,\n                (lastTokenIndex =\n                  visitText.indexOf(\" \", lastTokenIndex) + 1 ||\n                  visitText.length + 1) - 1,\n              )),\n            lastScopeId = 0;\n          return (\n            (render.m = (effects = []) => {\n              if (readyLookup) {\n                for (let readyId in render.b)\n                  if (1 !== readyLookup[readyId])\n                    return (\n                      (readyLookup[readyId] = ((prev) => () => {\n                        (render.m(), prev?.());\n                      })(readyLookup[readyId])),\n                      effects\n                    );\n                render.b = 0;\n              }\n              for (let serialized of (resumes = render.r || []))\n                if (\"string\" == typeof serialized)\n                  for (\n                    lastTokenIndex = 0, visitText = serialized;\n                    nextToken();\n                  )\n                    /\\D/.test(lastToken)\n                      ? (lastEffect = registeredValues[lastToken])\n                      : effects.push(lastEffect, getScope(lastToken));\n                else\n                  for (let scope of serialized(serializeContext))\n                    $global\n                      ? \"number\" == typeof scope\n                        ? (lastScopeId += scope)\n                        : ((scopeLookup[(scope.L = ++lastScopeId)] = scope),\n                          (scope.$ = $global),\n                          branchesEnabled && (scope.F = getScope(scope.G)))\n                      : (($global = scope || {}),\n                        ($global.runtimeId = runtimeId),\n                        ($global.renderId = renderId));\n              for (visit of (visits = render.v))\n                ((lastTokenIndex = render.i.length),\n                  (visitText = visit.data),\n                  (visitType = visitText[lastTokenIndex++]),\n                  (visitScope = getScope(nextToken())),\n                  \"*\" === visitType\n                    ? (visitScope[nextToken()] = visit.previousSibling)\n                    : branchesEnabled && visitBranches());\n              return (\n                embedEnabled &&\n                  (render.n ||= visit?.parentNode.insertBefore(\n                    new Text(),\n                    visit.nextSibling,\n                  )),\n                (visits.length = resumes.length = 0),\n                effects\n              );\n            }),\n            (render.w = () => {\n              (walk2(), runResumeEffects(render));\n            }),\n            render\n          );\n        }),\n      });\n    };\n  if (renders) {\n    initRuntime(renders);\n    for (let renderId in renders) runResumeEffects(resumeRender(renderId));\n  } else defineRuntime({ configurable: !0, set: initRuntime });\n}\nfunction runResumeEffects(render) {\n  try {\n    ((isResuming = 1), runEffects(render.m(), 1));\n  } finally {\n    isResuming = 0;\n  }\n}\nfunction _resume(id, obj) {\n  return (registeredValues[id] = obj);\n}\nfunction _var_resume(id, signal) {\n  return (_resume(id, (scope) => (value) => signal(scope, value)), signal);\n}\nfunction _el(id, accessor) {\n  return (\n    (accessor = decodeAccessor(accessor)),\n    _resume(id, (scope) => () => scope[accessor])\n  );\n}\nvar inputType = \"\",\n  controllableDelegate = createDelegator();\nfunction _attr_input_checked_default(scope, nodeAccessor, checked) {\n  let el = scope[nodeAccessor],\n    normalizedChecked = normalizeBoolProp(checked);\n  if (el.defaultChecked !== normalizedChecked) {\n    let restoreValue = scope.H ? normalizedChecked : el.checked;\n    ((el.defaultChecked = normalizedChecked),\n      restoreValue !== normalizedChecked && (el.checked = restoreValue));\n  }\n}\nfunction _attr_input_checked(scope, nodeAccessor, checked, checkedChange) {\n  let el = scope[nodeAccessor],\n    normalizedChecked = normalizeBoolProp(checked);\n  ((scope[\"E\" + nodeAccessor] = checkedChange),\n    (scope[\"F\" + nodeAccessor] = checkedChange ? 0 : 5),\n    checkedChange && !scope.H\n      ? (el.checked = normalizedChecked)\n      : _attr_input_checked_default(scope, nodeAccessor, normalizedChecked));\n}\nfunction _attr_input_checked_script(scope, nodeAccessor) {\n  let el = scope[nodeAccessor];\n  syncControllableFormInput(el, hasCheckboxChanged, () => {\n    let checkedChange = scope[\"E\" + nodeAccessor];\n    if (checkedChange) {\n      let newValue = el.checked;\n      ((el.checked = !newValue), checkedChange(newValue), run());\n    }\n  });\n}\nfunction _attr_input_checkedValue_default(\n  scope,\n  nodeAccessor,\n  checkedValue,\n  value,\n) {\n  let multiple = Array.isArray(checkedValue),\n    normalizedValue = normalizeStrProp(value),\n    normalizedCheckedValue = multiple\n      ? checkedValue.map(normalizeStrProp)\n      : normalizeStrProp(checkedValue);\n  (_attr(scope[nodeAccessor], \"value\", normalizedValue),\n    _attr_input_checked_default(\n      scope,\n      nodeAccessor,\n      multiple\n        ? normalizedCheckedValue.includes(normalizedValue)\n        : normalizedValue === normalizedCheckedValue,\n    ));\n}\nfunction _attr_input_checkedValue(\n  scope,\n  nodeAccessor,\n  checkedValue,\n  checkedValueChange,\n  value,\n) {\n  let el = scope[nodeAccessor],\n    multiple = Array.isArray(checkedValue),\n    normalizedValue = normalizeStrProp(value),\n    normalizedCheckedValue = (scope[\"G\" + nodeAccessor] = multiple\n      ? checkedValue.map(normalizeStrProp)\n      : normalizeStrProp(checkedValue));\n  (_attr(el, \"value\", normalizedValue),\n    (scope[\"E\" + nodeAccessor] = checkedValueChange),\n    (scope[\"F\" + nodeAccessor] = checkedValueChange ? 1 : 5),\n    checkedValueChange && !scope.H\n      ? (el.checked = multiple\n          ? normalizedCheckedValue.includes(normalizedValue)\n          : normalizedValue === normalizedCheckedValue)\n      : _attr_input_checkedValue_default(\n          scope,\n          nodeAccessor,\n          normalizedCheckedValue,\n          normalizedValue,\n        ));\n}\nfunction _attr_input_checkedValue_script(scope, nodeAccessor) {\n  let el = scope[nodeAccessor];\n  (isResuming &&\n    el.defaultChecked &&\n    (scope[\"G\" + nodeAccessor]\n      ? scope[\"G\" + nodeAccessor].push(el.value)\n      : (scope[\"G\" + nodeAccessor] = el.value)),\n    syncControllableFormInput(el, hasCheckboxChanged, () => {\n      let checkedValueChange = scope[\"E\" + nodeAccessor];\n      if (checkedValueChange) {\n        let oldValue = scope[\"G\" + nodeAccessor],\n          newValue = Array.isArray(oldValue)\n            ? (function (arr, val, push2) {\n                let index = arr.indexOf(val);\n                return (\n                  (push2\n                    ? !~index && [...arr, val]\n                    : ~index &&\n                      arr.slice(0, index).concat(arr.slice(index + 1))) || arr\n                );\n              })(oldValue, el.value, el.checked)\n            : el.checked\n              ? el.value\n              : void 0;\n        if (el.name && \"r\" === el.type[0])\n          for (let radio of el\n            .getRootNode()\n            .querySelectorAll(`[type=radio][name=${CSS.escape(el.name)}]`))\n            radio.form === el.form &&\n              (radio.checked = Array.isArray(oldValue)\n                ? oldValue.includes(radio.value)\n                : oldValue === radio.value);\n        else el.checked = !el.checked;\n        (checkedValueChange(newValue), run());\n      }\n    }));\n}\nfunction _attr_input_value_default(scope, nodeAccessor, value) {\n  let el = scope[nodeAccessor],\n    normalizedValue = normalizeStrProp(value);\n  if (el.defaultValue !== normalizedValue) {\n    let restoreValue = scope.H ? normalizedValue : el.value;\n    ((el.defaultValue = normalizedValue), setInputValue(el, restoreValue));\n  }\n}\nfunction _attr_input_value(scope, nodeAccessor, value, valueChange) {\n  let el = scope[nodeAccessor],\n    normalizedValue = normalizeStrProp(value);\n  ((scope[\"E\" + nodeAccessor] = valueChange),\n    (scope[\"G\" + nodeAccessor] = normalizedValue),\n    (scope[\"F\" + nodeAccessor] = valueChange ? 2 : 5),\n    valueChange && !scope.H\n      ? setInputValue(el, normalizedValue)\n      : _attr_input_value_default(scope, nodeAccessor, normalizedValue));\n}\nfunction _attr_input_value_script(scope, nodeAccessor) {\n  let el = scope[nodeAccessor];\n  (isResuming && (scope[\"G\" + nodeAccessor] = el.defaultValue),\n    syncControllableFormInput(el, hasValueChanged, (ev) => {\n      let valueChange = scope[\"E\" + nodeAccessor];\n      valueChange &&\n        ((inputType = ev?.inputType),\n        valueChange(el.value),\n        run(),\n        setInputValue(el, scope[\"G\" + nodeAccessor]),\n        (inputType = \"\"));\n    }));\n}\nfunction setInputValue(el, value) {\n  if (el.value !== value) {\n    let updatedPosition = (function (\n      inputType2,\n      initialPosition,\n      initialValue,\n      updatedValue,\n    ) {\n      if (\n        (initialPosition || 0 === initialPosition) &&\n        (initialPosition !== initialValue.length || /kw/.test(inputType2))\n      ) {\n        let before = initialValue.slice(0, initialPosition),\n          after = initialValue.slice(initialPosition);\n        if (updatedValue.startsWith(before)) return initialPosition;\n        if (updatedValue.endsWith(after))\n          return updatedValue.length - after.length;\n        {\n          let relevantChars = stripSpacesAndPunctuation(before).length,\n            pos = 0,\n            relevantIndex = 0;\n          for (; relevantIndex < relevantChars; )\n            (stripSpacesAndPunctuation(updatedValue[pos]) && relevantIndex++,\n              pos++);\n          return pos;\n        }\n      }\n      return -1;\n    })(\n      inputType,\n      el.getRootNode().activeElement === el && el.selectionStart,\n      el.value,\n      (el.value = value),\n    );\n    ~updatedPosition && el.setSelectionRange(updatedPosition, updatedPosition);\n  }\n}\nfunction _attr_select_value_default(scope, nodeAccessor, value) {\n  let restoreValue,\n    el = scope[nodeAccessor],\n    existing = !scope.H,\n    multiple = Array.isArray(value),\n    normalizedValue = multiple\n      ? value.map(normalizeStrProp)\n      : normalizeStrProp(value);\n  pendingEffects.unshift(() => {\n    for (let opt of el.options) {\n      let selected = multiple\n        ? normalizedValue.includes(opt.value)\n        : opt.value === normalizedValue;\n      opt.defaultSelected !== selected &&\n        (existing && (restoreValue ??= getSelectValue(el, multiple)),\n        (opt.defaultSelected = selected));\n    }\n    void 0 !== restoreValue && setSelectValue(el, restoreValue, multiple);\n  }, scope);\n}\nfunction _attr_select_value(scope, nodeAccessor, value, valueChange) {\n  let el = scope[nodeAccessor],\n    existing = !scope.H,\n    multiple = Array.isArray(value),\n    normalizedValue = (scope[\"G\" + nodeAccessor] = multiple\n      ? value.map(normalizeStrProp)\n      : normalizeStrProp(value));\n  ((scope[\"E\" + nodeAccessor] = valueChange),\n    (scope[\"F\" + nodeAccessor] = valueChange ? 3 : 5),\n    valueChange && existing\n      ? pendingEffects.unshift(\n          () => setSelectValue(el, normalizedValue, multiple),\n          scope,\n        )\n      : _attr_select_value_default(scope, nodeAccessor, normalizedValue));\n}\nfunction _attr_select_value_script(scope, nodeAccessor) {\n  let el = scope[nodeAccessor],\n    onChange = () => {\n      let valueChange = scope[\"E\" + nodeAccessor];\n      if (valueChange) {\n        let oldValue = scope[\"G\" + nodeAccessor],\n          multiple = Array.isArray(oldValue),\n          newValue = getSelectValue(el, multiple);\n        (setSelectValue(el, oldValue, multiple), valueChange(newValue), run());\n      }\n    };\n  if (isResuming)\n    if (el.multiple) {\n      scope[\"G\" + nodeAccessor] = [];\n      for (let opt of el.options)\n        opt.defaultSelected && scope[\"G\" + nodeAccessor].push(opt.value);\n    } else {\n      scope[\"G\" + nodeAccessor] = \"\";\n      for (let opt of el.options)\n        if (opt.defaultSelected) {\n          scope[\"G\" + nodeAccessor] = opt.value;\n          break;\n        }\n    }\n  (syncControllableFormInput(el, hasSelectChanged, onChange),\n    new MutationObserver(() => {\n      let value = scope[\"G\" + nodeAccessor];\n      (Array.isArray(value)\n        ? value.length !== el.selectedOptions.length ||\n          value.some((value2, i) => value2 != el.selectedOptions[i].value)\n        : el.value !== value) && onChange();\n    }).observe(el, { childList: !0, subtree: !0 }));\n}\nfunction setSelectValue(el, value, multiple) {\n  if (multiple)\n    for (let opt of el.options) opt.selected = value.includes(opt.value);\n  else el.value = value;\n}\nfunction getSelectValue(el, multiple) {\n  return multiple\n    ? Array.from(el.selectedOptions, (opt) => opt.value)\n    : el.value;\n}\nfunction _attr_details_or_dialog_open_default(scope, nodeAccessor, open) {\n  scope.H && (scope[nodeAccessor].open = normalizeBoolProp(open));\n}\nfunction _attr_details_or_dialog_open(scope, nodeAccessor, open, openChange) {\n  let normalizedOpen = (scope[\"G\" + nodeAccessor] = normalizeBoolProp(open));\n  ((scope[\"E\" + nodeAccessor] = openChange),\n    (scope[\"F\" + nodeAccessor] = openChange ? 4 : 5),\n    openChange && !scope.H\n      ? (scope[nodeAccessor].open = normalizedOpen)\n      : _attr_details_or_dialog_open_default(\n          scope,\n          nodeAccessor,\n          normalizedOpen,\n        ));\n}\nfunction _attr_details_or_dialog_open_script(scope, nodeAccessor) {\n  let el = scope[nodeAccessor];\n  new MutationObserver(() => {\n    let openChange = scope[\"E\" + nodeAccessor];\n    if (openChange && el.open === !scope[\"G\" + nodeAccessor]) {\n      let newValue = el.open;\n      ((el.open = !newValue), openChange(newValue), run());\n    }\n  }).observe(el, { attributes: !0, attributeFilter: [\"open\"] });\n}\nfunction syncControllableFormInput(el, hasChanged, onChange) {\n  ((el._ = onChange),\n    controllableDelegate(el, \"input\", handleChange),\n    el.form && controllableDelegate(el.form, \"reset\", handleFormReset),\n    isResuming && hasChanged(el) && queueMicrotask(onChange));\n}\nfunction handleChange(ev) {\n  ev.target._?.(ev);\n}\nfunction handleFormReset(ev) {\n  let handlers = [];\n  for (let el of ev.target.elements)\n    el._ && hasFormElementChanged(el) && handlers.push(el._);\n  requestAnimationFrame(() => {\n    if (!ev.defaultPrevented) for (let change of handlers) change();\n  });\n}\nfunction hasValueChanged(el) {\n  return el.value !== el.defaultValue;\n}\nfunction hasCheckboxChanged(el) {\n  return el.checked !== el.defaultChecked;\n}\nfunction hasSelectChanged(el) {\n  for (let opt of el.options)\n    if (opt.selected !== opt.defaultSelected) return !0;\n}\nfunction hasFormElementChanged(el) {\n  return el.options\n    ? hasSelectChanged(el)\n    : hasValueChanged(el) || hasCheckboxChanged(el);\n}\nfunction normalizeStrProp(value) {\n  return normalizeAttrValue(value) || \"\";\n}\nfunction normalizeBoolProp(value) {\n  return null != value && !1 !== value;\n}\nfunction _to_text(value) {\n  return value || 0 === value ? value + \"\" : \"\";\n}\nfunction _attr(element, name, value) {\n  setAttribute(element, name, normalizeAttrValue(value));\n}\nfunction setAttribute(element, name, value) {\n  element.getAttribute(name) != value &&\n    (void 0 === value\n      ? element.removeAttribute(name)\n      : element.setAttribute(name, value));\n}\nfunction _attr_class(element, value) {\n  setAttribute(\n    element,\n    \"class\",\n    toDelimitedString(value, \" \", stringifyClassObject) || void 0,\n  );\n}\nfunction _attr_class_items(element, items) {\n  for (let key in items) _attr_class_item(element, key, items[key]);\n}\nfunction _attr_class_item(element, name, value) {\n  element.classList.toggle(name, !!value);\n}\nfunction _attr_style(element, value) {\n  setAttribute(\n    element,\n    \"style\",\n    toDelimitedString(value, \";\", stringifyStyleObject) || void 0,\n  );\n}\nfunction _attr_style_items(element, items) {\n  for (let key in items) _attr_style_item(element, key, items[key]);\n}\nfunction _attr_style_item(element, name, value) {\n  element.style.setProperty(name, _to_text(value));\n}\nfunction _attr_nonce(scope, nodeAccessor) {\n  _attr(scope[nodeAccessor], \"nonce\", scope.$.cspNonce);\n}\nfunction _text(node, value) {\n  let normalizedValue = normalizeString(value);\n  node.data !== normalizedValue && (node.data = normalizedValue);\n}\nfunction _text_content(node, value) {\n  let normalizedValue = normalizeString(value);\n  node.textContent !== normalizedValue && (node.textContent = normalizedValue);\n}\nfunction _attrs(scope, nodeAccessor, nextAttrs) {\n  let el = scope[nodeAccessor];\n  for (let i = el.attributes.length; i--; ) {\n    let { name: name } = el.attributes.item(i);\n    (nextAttrs && (name in nextAttrs || hasAttrAlias(el, name, nextAttrs))) ||\n      el.removeAttribute(name);\n  }\n  attrsInternal(scope, nodeAccessor, nextAttrs);\n}\nfunction _attrs_content(scope, nodeAccessor, nextAttrs) {\n  (_attrs(scope, nodeAccessor, nextAttrs),\n    _attr_content(scope, nodeAccessor, nextAttrs?.content));\n}\nfunction hasAttrAlias(element, attr, nextAttrs) {\n  return (\n    \"checked\" === attr &&\n    \"INPUT\" === element.tagName &&\n    \"checkedValue\" in nextAttrs\n  );\n}\nfunction _attrs_partial(scope, nodeAccessor, nextAttrs, skip) {\n  let el = scope[nodeAccessor],\n    partial = {};\n  for (let i = el.attributes.length; i--; ) {\n    let { name: name } = el.attributes.item(i);\n    !skip[name] &&\n      (!nextAttrs || !(name in nextAttrs)) &&\n      el.removeAttribute(name);\n  }\n  for (let name in nextAttrs) {\n    let key = isEventHandler(name) ? `on-${getEventHandlerName(name)}` : name;\n    skip[key] || (partial[key] = nextAttrs[name]);\n  }\n  attrsInternal(scope, nodeAccessor, partial);\n}\nfunction _attrs_partial_content(scope, nodeAccessor, nextAttrs, skip) {\n  (_attrs_partial(scope, nodeAccessor, nextAttrs, skip),\n    _attr_content(scope, nodeAccessor, nextAttrs?.content));\n}\nfunction attrsInternal(scope, nodeAccessor, nextAttrs) {\n  let events,\n    skip,\n    el = scope[nodeAccessor];\n  switch (el.tagName) {\n    case \"INPUT\":\n      if (\"checked\" in nextAttrs || \"checkedChange\" in nextAttrs)\n        _attr_input_checked(\n          scope,\n          nodeAccessor,\n          nextAttrs.checked,\n          nextAttrs.checkedChange,\n        );\n      else if (\"checkedValue\" in nextAttrs || \"checkedValueChange\" in nextAttrs)\n        _attr_input_checkedValue(\n          scope,\n          nodeAccessor,\n          nextAttrs.checkedValue,\n          nextAttrs.checkedValueChange,\n          nextAttrs.value,\n        );\n      else {\n        if (!(\"value\" in nextAttrs) && !(\"valueChange\" in nextAttrs)) break;\n        _attr_input_value(\n          scope,\n          nodeAccessor,\n          nextAttrs.value,\n          nextAttrs.valueChange,\n        );\n      }\n      skip = /^(?:value|checked(?:Value)?)(?:Change)?$/;\n      break;\n    case \"SELECT\":\n      (\"value\" in nextAttrs || \"valueChange\" in nextAttrs) &&\n        (_attr_select_value(\n          scope,\n          nodeAccessor,\n          nextAttrs.value,\n          nextAttrs.valueChange,\n        ),\n        (skip = /^value(?:Change)?$/));\n      break;\n    case \"TEXTAREA\":\n      (\"value\" in nextAttrs || \"valueChange\" in nextAttrs) &&\n        (_attr_input_value(\n          scope,\n          nodeAccessor,\n          nextAttrs.value,\n          nextAttrs.valueChange,\n        ),\n        (skip = /^value(?:Change)?$/));\n      break;\n    case \"DETAILS\":\n    case \"DIALOG\":\n      (\"open\" in nextAttrs || \"openChange\" in nextAttrs) &&\n        (_attr_details_or_dialog_open(\n          scope,\n          nodeAccessor,\n          nextAttrs.open,\n          nextAttrs.openChange,\n        ),\n        (skip = /^open(?:Change)?$/));\n  }\n  for (let name in nextAttrs) {\n    let value = nextAttrs[name];\n    switch (name) {\n      case \"class\":\n        _attr_class(el, value);\n        break;\n      case \"style\":\n        _attr_style(el, value);\n        break;\n      default:\n        isEventHandler(name)\n          ? ((events ||= scope[\"I\" + nodeAccessor] = {})[\n              getEventHandlerName(name)\n            ] = value)\n          : skip?.test(name) ||\n            (\"content\" === name && \"META\" !== el.tagName) ||\n            _attr(el, name, value);\n    }\n  }\n}\nfunction _attr_content(scope, nodeAccessor, value) {\n  let content = (function (value) {\n    let renderer = normalizeDynamicRenderer(value);\n    if (renderer && renderer.g) return renderer;\n  })(value);\n  scope[\"D\" + nodeAccessor] !== (scope[\"D\" + nodeAccessor] = content?.g) &&\n    (setConditionalRenderer(scope, nodeAccessor, content, createAndSetupBranch),\n    content?.e &&\n      subscribeToScopeSet(content.f, content.e, scope[\"A\" + nodeAccessor]));\n  for (let accessor in content?.h)\n    content.h[accessor](scope[\"A\" + nodeAccessor], content.t[accessor]);\n}\nfunction _attrs_script(scope, nodeAccessor) {\n  let el = scope[nodeAccessor],\n    events = scope[\"I\" + nodeAccessor];\n  switch (scope[\"F\" + nodeAccessor]) {\n    case 0:\n      _attr_input_checked_script(scope, nodeAccessor);\n      break;\n    case 1:\n      _attr_input_checkedValue_script(scope, nodeAccessor);\n      break;\n    case 2:\n      _attr_input_value_script(scope, nodeAccessor);\n      break;\n    case 3:\n      _attr_select_value_script(scope, nodeAccessor);\n      break;\n    case 4:\n      _attr_details_or_dialog_open_script(scope, nodeAccessor);\n  }\n  for (let name in events) _on(el, name, events[name]);\n}\nfunction _html(scope, value, accessor) {\n  let firstChild = scope[accessor],\n    parentNode = firstChild.parentNode,\n    lastChild = scope[\"H\" + accessor] || firstChild,\n    newContent = parseHTML(_to_text(value), parentNode.namespaceURI);\n  (insertChildNodes(\n    parentNode,\n    firstChild,\n    (scope[accessor] =\n      newContent.firstChild || newContent.appendChild(new Text())),\n    (scope[\"H\" + accessor] = newContent.lastChild),\n  ),\n    removeChildNodes(firstChild, lastChild));\n}\nfunction normalizeAttrValue(value) {\n  if (value || 0 === value) return !0 === value ? \"\" : value + \"\";\n}\nfunction normalizeString(value) {\n  return value || 0 === value ? value + \"\" : \"‍\";\n}\nfunction _lifecycle(scope, thisObj, index = 0) {\n  let accessor = \"K\" + index,\n    instance = scope[accessor];\n  instance\n    ? (Object.assign(instance, thisObj), instance.onUpdate?.())\n    : ((scope[accessor] = thisObj),\n      thisObj.onMount?.(),\n      ($signal(scope, accessor).onabort = () => thisObj.onDestroy?.()));\n}\nfunction removeChildNodes(startNode, endNode) {\n  let stop = endNode.nextSibling,\n    current = startNode;\n  for (; current !== stop; ) {\n    let next = current.nextSibling;\n    (current.remove(), (current = next));\n  }\n}\nfunction insertChildNodes(parentNode, referenceNode, startNode, endNode) {\n  parentNode.insertBefore(toInsertNode(startNode, endNode), referenceNode);\n}\nfunction toInsertNode(startNode, endNode) {\n  if (startNode === endNode) return startNode;\n  let parent = new DocumentFragment(),\n    stop = endNode.nextSibling,\n    current = startNode;\n  for (; current !== stop; ) {\n    let next = current.nextSibling;\n    (parent.appendChild(current), (current = next));\n  }\n  return parent;\n}\nfunction _await_promise(nodeAccessor, params) {\n  let promiseAccessor = \"L\" + (nodeAccessor = decodeAccessor(nodeAccessor)),\n    branchAccessor = \"A\" + nodeAccessor;\n  return (\n    _enable_catch(),\n    (scope, promise) => {\n      let awaitBranch = scope[branchAccessor],\n        tryBranch = findBranchWithKey(scope, \"Q\") || awaitBranch,\n        awaitCounter = tryBranch.O;\n      (awaitCounter?.i ||\n        (awaitCounter = tryBranch.O =\n          {\n            i: 0,\n            c() {\n              if (--awaitCounter.i) return 1;\n              if (tryBranch === scope[branchAccessor])\n                scope[nodeAccessor].parentNode &&\n                  scope[nodeAccessor].replaceWith(\n                    scope[branchAccessor].S.parentNode,\n                  );\n              else {\n                let placeholderBranch = tryBranch.P;\n                placeholderBranch &&\n                  ((tryBranch.P = 0),\n                  placeholderBranch.S.parentNode.insertBefore(\n                    tryBranch.S.parentNode,\n                    placeholderBranch.S,\n                  ),\n                  removeAndDestroyBranch(placeholderBranch));\n              }\n              queueEffect(tryBranch, (scope2) => {\n                let pendingEffects2 = scope2.J;\n                pendingEffects2 &&\n                  ((scope2.J = []), runEffects(pendingEffects2, 1));\n              });\n            },\n          }),\n        placeholderShown.add(pendingEffects),\n        scope[promiseAccessor] ||\n          (awaitBranch && (awaitBranch.W ||= []),\n          awaitCounter.i++ ||\n            requestAnimationFrame(\n              () =>\n                awaitCounter.i &&\n                runEffects(\n                  prepareEffects(() =>\n                    queueRender(\n                      tryBranch === awaitBranch ? scope : tryBranch,\n                      () => {\n                        tryBranch.Q\n                          ? (insertBranchBefore(\n                              (tryBranch.P = createAndSetupBranch(\n                                scope.$,\n                                tryBranch.Q,\n                                tryBranch._,\n                                tryBranch.S.parentNode,\n                              )),\n                              tryBranch.S.parentNode,\n                              tryBranch.S,\n                            ),\n                            tempDetachBranch(tryBranch))\n                          : awaitBranch.V ||\n                            (awaitBranch.S.parentNode.insertBefore(\n                              scope[nodeAccessor],\n                              awaitBranch.S,\n                            ),\n                            tempDetachBranch(tryBranch));\n                      },\n                      -1,\n                    ),\n                  ),\n                ),\n            )));\n      let thisPromise = (scope[promiseAccessor] = promise.then(\n        (data) => {\n          if (thisPromise === scope[promiseAccessor]) {\n            let referenceNode = scope[nodeAccessor];\n            ((scope[promiseAccessor] = 0),\n              queueMicrotask(run),\n              queueRender(\n                scope,\n                () => {\n                  ((awaitBranch = scope[branchAccessor]).V &&\n                    (pendingScopes.push(awaitBranch),\n                    setupBranch(awaitBranch.V, awaitBranch),\n                    (awaitBranch.V = 0),\n                    insertBranchBefore(\n                      awaitBranch,\n                      scope[nodeAccessor].parentNode,\n                      scope[nodeAccessor],\n                    ),\n                    referenceNode.remove()),\n                    params?.(awaitBranch, [data]));\n                  let pendingRenders2 = awaitBranch.W;\n                  if (\n                    ((awaitBranch.W = 0),\n                    pendingRenders2?.forEach(queuePendingRender),\n                    placeholderShown.add(pendingEffects),\n                    awaitCounter.c(),\n                    awaitCounter.m)\n                  ) {\n                    let fnScopes = new Map(),\n                      effects = awaitCounter.m();\n                    for (let i = 0; i < pendingEffects.length; ) {\n                      let fn = pendingEffects[i++],\n                        scopes = fnScopes.get(fn);\n                      (scopes || fnScopes.set(fn, (scopes = new Set())),\n                        scopes.add(pendingEffects[i++]));\n                    }\n                    for (let i = 0; i < effects.length; ) {\n                      let fn = effects[i++],\n                        scope2 = effects[i++];\n                      fnScopes.get(fn)?.has(scope2) || queueEffect(scope2, fn);\n                    }\n                  }\n                },\n                -1,\n              ));\n          }\n        },\n        (error) => {\n          thisPromise === scope[promiseAccessor] &&\n            ((awaitCounter.i = scope[promiseAccessor] = 0),\n            schedule(),\n            queueRender(scope, renderCatch, -1, error));\n        },\n      ));\n    }\n  );\n}\nfunction _await_content(nodeAccessor, template, walks, setup) {\n  let branchAccessor = \"A\" + (nodeAccessor = decodeAccessor(nodeAccessor)),\n    renderer = _content(\"\", template, walks, setup)();\n  return (scope) => {\n    (((scope[branchAccessor] = createBranch(\n      scope.$,\n      renderer,\n      scope,\n      scope[nodeAccessor].parentNode,\n    )).V = renderer),\n      pendingScopes.pop());\n  };\n}\nfunction _try(nodeAccessor, template, walks, setup) {\n  let branchAccessor = \"A\" + (nodeAccessor = decodeAccessor(nodeAccessor)),\n    renderer = _content(\"\", template, walks, setup)();\n  return (scope, input) => {\n    scope[branchAccessor] ||\n      setConditionalRenderer(\n        scope,\n        nodeAccessor,\n        renderer,\n        createAndSetupBranch,\n      );\n    let branch = scope[branchAccessor];\n    branch &&\n      ((branch.C = nodeAccessor),\n      (branch.E = normalizeDynamicRenderer(input.catch)),\n      (branch.Q = normalizeDynamicRenderer(input.placeholder)));\n  };\n}\nfunction renderCatch(scope, error) {\n  let tryWithCatch = findBranchWithKey(scope, \"E\");\n  if (!tryWithCatch) throw error;\n  {\n    let owner = tryWithCatch._,\n      placeholderBranch = tryWithCatch.P;\n    (placeholderBranch &&\n      (tryWithCatch.O && (tryWithCatch.O.i = 0),\n      (owner[\"A\" + tryWithCatch.C] = placeholderBranch),\n      destroyBranch(tryWithCatch)),\n      caughtError.add(pendingEffects),\n      setConditionalRenderer(\n        owner,\n        tryWithCatch.C,\n        tryWithCatch.E,\n        createAndSetupBranch,\n      ),\n      tryWithCatch.E.d?.(owner[\"A\" + tryWithCatch.C], [error]));\n  }\n}\nfunction _if(nodeAccessor, ...branchesArgs) {\n  let branchAccessor = \"D\" + (nodeAccessor = decodeAccessor(nodeAccessor)),\n    branches = [],\n    i = 0;\n  for (; i < branchesArgs.length; )\n    branches.push(\n      _content(\"\", branchesArgs[i++], branchesArgs[i++], branchesArgs[i++])(),\n    );\n  return (\n    enableBranches(),\n    (scope, newBranch) => {\n      newBranch !== scope[branchAccessor] &&\n        setConditionalRenderer(\n          scope,\n          nodeAccessor,\n          branches[(scope[branchAccessor] = newBranch)],\n          createAndSetupBranch,\n        );\n    }\n  );\n}\nvar _dynamic_tag = function (nodeAccessor, getContent, getTagVar, inputIsArgs) {\n  let childScopeAccessor = \"A\" + (nodeAccessor = decodeAccessor(nodeAccessor)),\n    rendererAccessor = \"D\" + nodeAccessor;\n  return (\n    enableBranches(),\n    (scope, newRenderer, getInput) => {\n      let normalizedRenderer = normalizeDynamicRenderer(newRenderer);\n      if (\n        scope[rendererAccessor] !==\n          (scope[rendererAccessor] =\n            normalizedRenderer?.g || normalizedRenderer) ||\n        (getContent && !normalizedRenderer && !scope[childScopeAccessor])\n      )\n        if (\n          (setConditionalRenderer(\n            scope,\n            nodeAccessor,\n            normalizedRenderer || (getContent ? getContent(scope) : void 0),\n            createBranchWithTagNameOrRenderer,\n          ),\n          getTagVar &&\n            (scope[childScopeAccessor].T = (value) =>\n              getTagVar()(scope, value)),\n          \"string\" == typeof normalizedRenderer)\n        ) {\n          if (getContent) {\n            let content = getContent(scope);\n            (setConditionalRenderer(\n              scope[childScopeAccessor],\n              \"a\",\n              content,\n              createAndSetupBranch,\n            ),\n              content.e &&\n                subscribeToScopeSet(\n                  content.f,\n                  content.e,\n                  scope[childScopeAccessor].Aa,\n                ));\n          }\n        } else\n          normalizedRenderer?.e &&\n            subscribeToScopeSet(\n              normalizedRenderer.f,\n              normalizedRenderer.e,\n              scope[childScopeAccessor],\n            );\n      if (normalizedRenderer) {\n        let childScope = scope[childScopeAccessor],\n          args = getInput?.();\n        if (\"string\" == typeof normalizedRenderer)\n          ((getContent ? _attrs : _attrs_content)(\n            childScope,\n            \"a\",\n            (inputIsArgs ? args[0] : args) || {},\n          ),\n            (childScope.Ia || childScope.Ea) &&\n              queueEffect(childScope, dynamicTagScript));\n        else {\n          for (let accessor in normalizedRenderer.h)\n            normalizedRenderer.h[accessor](\n              childScope,\n              normalizedRenderer.t[accessor],\n            );\n          if (normalizedRenderer.d)\n            if (inputIsArgs)\n              normalizedRenderer.d(\n                childScope,\n                normalizedRenderer._ ? args[0] : args,\n              );\n            else {\n              let inputWithContent = getContent\n                ? { ...args, content: getContent(scope) }\n                : args || {};\n              normalizedRenderer.d(\n                childScope,\n                normalizedRenderer._ ? inputWithContent : [inputWithContent],\n              );\n            }\n        }\n      }\n    }\n  );\n};\nfunction _resume_dynamic_tag() {\n  _resume(\"d\", dynamicTagScript);\n}\nfunction dynamicTagScript(branch) {\n  _attrs_script(branch, \"a\");\n}\nfunction setConditionalRenderer(\n  scope,\n  nodeAccessor,\n  newRenderer,\n  createBranch2,\n) {\n  let referenceNode = scope[nodeAccessor],\n    prevBranch = scope[\"A\" + nodeAccessor],\n    parentNode =\n      referenceNode.nodeType > 1\n        ? (prevBranch?.S || referenceNode).parentNode\n        : referenceNode,\n    newBranch = (scope[\"A\" + nodeAccessor] =\n      newRenderer && createBranch2(scope.$, newRenderer, scope, parentNode));\n  referenceNode === parentNode\n    ? (prevBranch &&\n        (destroyBranch(prevBranch), (referenceNode.textContent = \"\")),\n      newBranch && insertBranchBefore(newBranch, parentNode, null))\n    : prevBranch\n      ? (newBranch\n          ? insertBranchBefore(newBranch, parentNode, prevBranch.S)\n          : parentNode.insertBefore(referenceNode, prevBranch.S),\n        removeAndDestroyBranch(prevBranch))\n      : newBranch &&\n        (insertBranchBefore(newBranch, parentNode, referenceNode),\n        referenceNode.remove());\n}\nvar _for_of = loop(([all, by = bySecondArg], cb) => {\n    forOf(\n      all,\n      \"string\" == typeof by\n        ? (item, i) => cb(item[by], [item, i])\n        : (item, i) => cb(by(item, i), [item, i]),\n    );\n  }),\n  _for_in = loop(([obj, by = byFirstArg], cb) =>\n    forIn(obj, (key, value) => cb(by(key, value), [key, value])),\n  ),\n  _for_to = loop(([to, from, step, by = byFirstArg], cb) =>\n    forTo(to, from, step, (v) => cb(by(v), [v])),\n  ),\n  _for_until = loop(([until, from, step, by = byFirstArg], cb) =>\n    forUntil(until, from, step, (v) => cb(by(v), [v])),\n  );\nfunction loop(forEach) {\n  return (nodeAccessor, template, walks, setup, params) => {\n    let scopesAccessor = \"A\" + (nodeAccessor = decodeAccessor(nodeAccessor)),\n      renderer = _content(\"\", template, walks, setup)();\n    return (\n      enableBranches(),\n      (scope, value) => {\n        let oldScopesByKey,\n          hasPotentialMoves,\n          referenceNode = scope[nodeAccessor],\n          oldScopes = toArray(scope[scopesAccessor]),\n          newScopes = (scope[scopesAccessor] = []),\n          oldLen = oldScopes.length,\n          parentNode =\n            referenceNode.nodeType > 1\n              ? referenceNode.parentNode || oldScopes[0]?.S.parentNode\n              : referenceNode;\n        forEach(value, (key, args) => {\n          let branch =\n            oldLen &&\n            (oldScopesByKey ||= oldScopes.reduce(\n              (map, scope2, i) => map.set(scope2.M ?? i, scope2),\n              new Map(),\n            )).get(key);\n          (branch\n            ? (hasPotentialMoves = oldScopesByKey.delete(key))\n            : (branch = createAndSetupBranch(\n                scope.$,\n                renderer,\n                scope,\n                parentNode,\n              )),\n            (branch.M = key),\n            newScopes.push(branch),\n            params?.(branch, args));\n        });\n        let newLen = newScopes.length,\n          hasSiblings = referenceNode !== parentNode,\n          afterReference = null,\n          oldEnd = oldLen - 1,\n          newEnd = newLen - 1,\n          start = 0;\n        if (\n          (hasSiblings &&\n            (oldLen\n              ? ((afterReference = oldScopes[oldEnd].K.nextSibling),\n                newLen ||\n                  parentNode.insertBefore(referenceNode, afterReference))\n              : newLen &&\n                ((afterReference = referenceNode.nextSibling),\n                referenceNode.remove())),\n          !hasPotentialMoves)\n        ) {\n          oldLen &&\n            (oldScopes.forEach(\n              hasSiblings ? removeAndDestroyBranch : destroyBranch,\n            ),\n            hasSiblings || (parentNode.textContent = \"\"));\n          for (let newScope of newScopes)\n            insertBranchBefore(newScope, parentNode, afterReference);\n          return;\n        }\n        for (let branch of oldScopesByKey.values())\n          removeAndDestroyBranch(branch);\n        for (\n          ;\n          start < oldLen &&\n          start < newLen &&\n          oldScopes[start] === newScopes[start];\n        )\n          start++;\n        for (\n          ;\n          oldEnd >= start &&\n          newEnd >= start &&\n          oldScopes[oldEnd] === newScopes[newEnd];\n        )\n          (oldEnd--, newEnd--);\n        if (\n          (oldEnd + 1 < oldLen && (afterReference = oldScopes[oldEnd + 1].S),\n          start > oldEnd)\n        ) {\n          if (start <= newEnd)\n            for (let i = start; i <= newEnd; i++)\n              insertBranchBefore(newScopes[i], parentNode, afterReference);\n          return;\n        }\n        if (start > newEnd) return;\n        let lo,\n          hi,\n          mid,\n          diffLen = newEnd - start + 1,\n          oldPos = new Map(),\n          sources = new Array(diffLen),\n          pred = new Array(diffLen),\n          tails = [],\n          tail = -1;\n        for (let i = start; i <= oldEnd; i++) oldPos.set(oldScopes[i], i);\n        for (let i = diffLen; i--; )\n          sources[i] = oldPos.get(newScopes[start + i]) ?? -1;\n        for (let i = 0; i < diffLen; i++)\n          if (~sources[i])\n            if (tail < 0 || sources[tails[tail]] < sources[i])\n              (~tail && (pred[i] = tails[tail]), (tails[++tail] = i));\n            else {\n              for (lo = 0, hi = tail; lo < hi; )\n                ((mid = ((lo + hi) / 2) | 0),\n                  sources[tails[mid]] < sources[i]\n                    ? (lo = mid + 1)\n                    : (hi = mid));\n              sources[i] < sources[tails[lo]] &&\n                (lo > 0 && (pred[i] = tails[lo - 1]), (tails[lo] = i));\n            }\n        for (hi = tails[tail], lo = tail + 1; lo-- > 0; )\n          ((tails[lo] = hi), (hi = pred[hi]));\n        for (let i = diffLen; i--; )\n          (~tail && i === tails[tail]\n            ? tail--\n            : insertBranchBefore(\n                newScopes[start + i],\n                parentNode,\n                afterReference,\n              ),\n            (afterReference = newScopes[start + i].S));\n      }\n    );\n  };\n}\nfunction createBranchWithTagNameOrRenderer(\n  $global,\n  tagNameOrRenderer,\n  parentScope,\n  parentNode,\n) {\n  let branch = createBranch(\n    $global,\n    tagNameOrRenderer,\n    parentScope,\n    parentNode,\n  );\n  return (\n    \"string\" == typeof tagNameOrRenderer\n      ? (branch.a =\n          branch.S =\n          branch.K =\n            document.createElementNS(\n              \"svg\" === tagNameOrRenderer\n                ? \"http://www.w3.org/2000/svg\"\n                : \"math\" === tagNameOrRenderer\n                  ? \"http://www.w3.org/1998/Math/MathML\"\n                  : parentNode.namespaceURI,\n              tagNameOrRenderer,\n            ))\n      : setupBranch(tagNameOrRenderer, branch),\n    branch\n  );\n}\nfunction bySecondArg(_item, index) {\n  return index;\n}\nfunction byFirstArg(name) {\n  return name;\n}\nvar asyncRendersLookup,\n  rendering,\n  pendingRenders = [],\n  pendingRendersLookup = new Map(),\n  caughtError = new WeakSet(),\n  placeholderShown = new WeakSet(),\n  pendingEffects = [],\n  pendingScopes = [],\n  scopeKeyOffset = 1e3;\nfunction queueRender(scope, signal, signalKey, value, scopeKey = scope.L) {\n  let key = scopeKey * scopeKeyOffset + signalKey,\n    render = signalKey >= 0 && pendingRendersLookup.get(key);\n  render\n    ? (render.u = value)\n    : (queuePendingRender((render = { a: key, j: scope, y: signal, u: value })),\n      signalKey >= 0 && pendingRendersLookup.set(key, render));\n}\nfunction queuePendingRender(render) {\n  let i = pendingRenders.push(render) - 1;\n  for (; i; ) {\n    let parentIndex = (i - 1) >> 1,\n      parent = pendingRenders[parentIndex];\n    if (render.a - parent.a >= 0) break;\n    ((pendingRenders[i] = parent), (i = parentIndex));\n  }\n  pendingRenders[i] = render;\n}\nfunction queueEffect(scope, fn) {\n  pendingEffects.push(fn, scope);\n}\nfunction run() {\n  let effects = pendingEffects;\n  asyncRendersLookup = new Map();\n  try {\n    ((rendering = 1), runRenders());\n  } finally {\n    ((pendingRendersLookup = asyncRendersLookup),\n      (asyncRendersLookup = rendering = 0),\n      (pendingRenders = []),\n      (pendingEffects = []));\n  }\n  runEffects(effects);\n}\nfunction prepareEffects(fn) {\n  let prevRenders = pendingRenders,\n    prevEffects = pendingEffects,\n    prevLookup = asyncRendersLookup,\n    preparedEffects = (pendingEffects = []);\n  ((pendingRenders = []),\n    (asyncRendersLookup = pendingRendersLookup),\n    (pendingRendersLookup = new Map()));\n  try {\n    ((rendering = 1), fn(), runRenders());\n  } finally {\n    ((rendering = 0),\n      (pendingRendersLookup = asyncRendersLookup),\n      (asyncRendersLookup = prevLookup),\n      (pendingRenders = prevRenders),\n      (pendingEffects = prevEffects));\n  }\n  return preparedEffects;\n}\nvar runEffects = (effects) => {\n  for (let i = 0; i < effects.length; ) effects[i++](effects[i++]);\n};\nfunction runRenders() {\n  for (; pendingRenders.length; ) {\n    let render = pendingRenders[0],\n      item = pendingRenders.pop();\n    if (render !== item) {\n      let i = 0,\n        mid = pendingRenders.length >> 1,\n        key = (pendingRenders[0] = item).a;\n      for (; i < mid; ) {\n        let bestChild = 1 + (i << 1),\n          right = bestChild + 1;\n        if (\n          (right < pendingRenders.length &&\n            pendingRenders[right].a - pendingRenders[bestChild].a < 0 &&\n            (bestChild = right),\n          pendingRenders[bestChild].a - key >= 0)\n        )\n          break;\n        ((pendingRenders[i] = pendingRenders[bestChild]), (i = bestChild));\n      }\n      pendingRenders[i] = item;\n    }\n    render.j.F?.I || runRender(render);\n  }\n  for (let scope of pendingScopes) scope.H = 0;\n  pendingScopes = [];\n}\nvar runRender = (render) => render.y(render.j, render.u),\n  _enable_catch = () => {\n    ((_enable_catch = () => {}), enableBranches());\n    let handlePendingTry = (fn, scope, branch) => {\n      for (; branch; ) {\n        if (branch.O?.i) return (branch.J ||= []).push(fn, scope);\n        branch = branch.N;\n      }\n    };\n    ((runEffects = (\n      (runEffects2) =>\n      (effects, checkPending = placeholderShown.has(effects)) => {\n        if (checkPending || caughtError.has(effects)) {\n          let fn,\n            scope,\n            branch,\n            i = 0;\n          for (; i < effects.length; )\n            ((fn = effects[i++]),\n              (scope = effects[i++]),\n              (branch = scope.F),\n              !branch?.I &&\n                (!checkPending || !handlePendingTry(fn, scope, branch)) &&\n                fn(scope));\n        } else runEffects2(effects);\n      }\n    )(runEffects)),\n      (runRender = ((runRender2) => (render) => {\n        try {\n          let branch = render.j.F;\n          for (; branch; ) {\n            if (branch.W)\n              return (\n                asyncRendersLookup.set(render.a, render),\n                branch.W.push(render)\n              );\n            branch = branch.N;\n          }\n          runRender2(render);\n        } catch (error) {\n          renderCatch(render.j, error);\n        }\n      })(runRender)));\n  };\nfunction $signalReset(scope, id) {\n  let ctrl = scope.A?.[id];\n  ctrl && (queueEffect(ctrl, abort), (scope.A[id] = void 0));\n}\nfunction $signal(scope, id) {\n  return (\n    scope.F && (scope.F.B ||= new Set()).add(scope),\n    ((scope.A ||= {})[id] ||= new AbortController()).signal\n  );\n}\nfunction abort(ctrl) {\n  ctrl.abort();\n}\nvar classIdToBranch = new Map(),\n  compat = {\n    patchDynamicTag: function (fn) {\n      _dynamic_tag = fn(_dynamic_tag);\n    },\n    queueEffect: queueEffect,\n    init(warp10Noop) {\n      (_resume(\"$C_s\", (branch) => {\n        classIdToBranch.set(branch.m5c, branch);\n      }),\n        _resume(\"$C_b\", warp10Noop));\n    },\n    registerRenderer(fn) {\n      _resume(\"$C_r\", fn);\n    },\n    isRenderer: (renderer) => renderer.k,\n    getStartNode: (branch) => branch.S,\n    setScopeNodes(branch, startNode, endNode) {\n      ((branch.S = startNode), (branch.K = endNode));\n    },\n    runComponentEffects() {\n      this.effects && runEffects(this.effects);\n    },\n    runComponentDestroy() {\n      this.scope && destroyBranch(this.scope);\n    },\n    resolveRegistered: (value, $global) =>\n      Array.isArray(value) && \"string\" == typeof value[0]\n        ? (function (id, scope) {\n            let val = registeredValues[id];\n            return scope ? val(scope) : val;\n          })(\n            value[0],\n            2 === value.length &&\n              self[$global.runtimeId]?.[$global.renderId]?.s[value[1]],\n          )\n        : value,\n    createRenderer(params, clone) {\n      let renderer = _content(\"\", 0, 0, 0, params)();\n      return (\n        (renderer.k = (branch) => {\n          let cloned = clone();\n          ((branch.S = cloned.startNode), (branch.K = cloned.endNode));\n        }),\n        renderer\n      );\n    },\n    render(out, component, renderer, args) {\n      let branch = component.scope,\n        created = 0;\n      if (\n        (!branch &&\n          (branch = classIdToBranch.get(component.id)) &&\n          ((component.scope = branch), classIdToBranch.delete(component.id)),\n        \"object\" == typeof args[0] && \"renderBody\" in args[0])\n      ) {\n        let input = args[0],\n          normalizedInput = (args[0] = {});\n        for (let key in input)\n          normalizedInput[\"renderBody\" === key ? \"content\" : key] = input[key];\n      }\n      if (\n        ((component.effects = prepareEffects(() => {\n          (branch ||\n            ((created = 1),\n            (branch = component.scope =\n              createAndSetupBranch(\n                out.global,\n                renderer,\n                renderer.f,\n                document.body,\n              ))),\n            renderer.d?.(branch, renderer._ ? args[0] : args));\n        })),\n        created)\n      )\n        return toInsertNode(branch.S, branch.K);\n    },\n  },\n  _template = (id, template, walks, setup, inputSignal) => {\n    let renderer = _content(id, template, walks, setup, inputSignal)();\n    return (\n      (renderer.mount = mount),\n      (renderer._ = renderer),\n      _resume(id, renderer)\n    );\n  };\nfunction mount(input = {}, reference, position) {\n  let branch,\n    parentNode = reference,\n    nextSibling = null,\n    { $global: $global } = input;\n  switch (\n    ($global\n      ? (({ $global: $global, ...input } = input),\n        ($global = { runtimeId: \"M\", renderId: \"_\", ...$global }))\n      : ($global = { runtimeId: \"M\", renderId: \"_\" }),\n    position)\n  ) {\n    case \"beforebegin\":\n      ((parentNode = reference.parentNode), (nextSibling = reference));\n      break;\n    case \"afterbegin\":\n      nextSibling = reference.firstChild;\n      break;\n    case \"afterend\":\n      ((parentNode = reference.parentNode),\n        (nextSibling = reference.nextSibling));\n  }\n  let curValue,\n    args = this.d,\n    effects = prepareEffects(() => {\n      ((branch = createBranch($global, this, void 0, parentNode)),\n        (branch.T = (newValue) => {\n          curValue = newValue;\n        }),\n        this.l?.(branch),\n        args?.(branch, input));\n    });\n  return (\n    insertChildNodes(parentNode, nextSibling, branch.S, branch.K),\n    runEffects(effects),\n    {\n      get value() {\n        return curValue;\n      },\n      set value(newValue) {\n        _var_change(branch, newValue);\n      },\n      update(newInput) {\n        args &&\n          runEffects(\n            prepareEffects(() => {\n              args(branch, newInput);\n            }),\n          );\n      },\n      destroy() {\n        removeAndDestroyBranch(branch);\n      },\n    }\n  );\n}\n"
  },
  {
    "path": ".sizes/name-cache.json",
    "content": "{\"vars\":{\"props\":{\"$empty\":\"e\",\"$rest\":\"t\",\"$attrTag\":\"n\",\"$attrTags\":\"r\",\"$attrTagIterator\":\"o\",\"$_assert_hoist\":\"i\",\"$_assert_init\":\"l\",\"$forIn\":\"u\",\"$forOf\":\"f\",\"$forTo\":\"a\",\"$forUntil\":\"c\",\"$_call\":\"s\",\"$stringifyClassObject\":\"d\",\"$stringifyStyleObject\":\"p\",\"$toDelimitedString\":\"h\",\"$isEventHandler\":\"g\",\"$getEventHandlerName\":\"v\",\"$normalizeDynamicRenderer\":\"m\",\"$decodeAccessor\":\"b\",\"$toArray\":\"y\",\"$push\":\"S\",\"$defaultDelegator\":\"A\",\"$_on\":\"_\",\"$createDelegator\":\"k\",\"$handleDelegated\":\"C\",\"$stripSpacesAndPunctuation\":\"N\",\"$parsers\":\"w\",\"$parseHTML\":\"E\",\"$isScheduled\":\"x\",\"$channel\":\"M\",\"$nextScopeId\":\"I\",\"$createScope\":\"F\",\"$skipScope\":\"$\",\"$findBranchWithKey\":\"T\",\"$destroyBranch\":\"L\",\"$destroyScope\":\"G\",\"$destroyNestedScopes\":\"H\",\"$resetControllers\":\"O\",\"$removeAndDestroyBranch\":\"D\",\"$insertBranchBefore\":\"K\",\"$tempDetachBranch\":\"V\",\"$schedule\":\"R\",\"$flushAndWaitFrame\":\"B\",\"$triggerMacroTask\":\"W\",\"$_let\":\"q\",\"$_const\":\"U\",\"$_or\":\"j\",\"$_for_closure\":\"P\",\"$_if_closure\":\"Q\",\"$subscribeToScopeSet\":\"J\",\"$_closure\":\"X\",\"$_closure_get\":\"Z\",\"$_child_setup\":\"z\",\"$_var\":\"Y\",\"$_return\":\"ee\",\"$_return_change\":\"te\",\"$_var_change\":\"ne\",\"$tagIdsByGlobal\":\"re\",\"$_id\":\"oe\",\"$_script\":\"ie\",\"$_el_read\":\"le\",\"$traverse\":\"ue\",\"$_hoist\":\"fe\",\"$_hoist_resume\":\"ae\",\"$walker\":\"ce\",\"$walk\":\"se\",\"$walkInternal\":\"de\",\"$createBranch\":\"pe\",\"$setParentBranch\":\"he\",\"$createAndSetupBranch\":\"ge\",\"$setupBranch\":\"ve\",\"$_content\":\"me\",\"$_content_resume\":\"be\",\"$_content_closures\":\"ye\",\"$curRuntimeId\":\"Se\",\"$readyLookup\":\"Ae\",\"$branchesEnabled\":\"_e\",\"$embedEnabled\":\"ke\",\"$cloneCache\":\"Ce\",\"$registeredValues\":\"Ne\",\"$enableBranches\":\"we\",\"$isResuming\":\"Ee\",\"$ready\":\"xe\",\"$initEmbedded\":\"Me\",\"$init\":\"Ie\",\"$runResumeEffects\":\"Fe\",\"$_resume\":\"$e\",\"$_var_resume\":\"Te\",\"$_el\":\"Le\",\"$inputType\":\"Ge\",\"$controllableDelegate\":\"He\",\"$_attr_input_checked_default\":\"Oe\",\"$_attr_input_checked\":\"De\",\"$_attr_input_checked_script\":\"Ke\",\"$_attr_input_checkedValue_default\":\"Ve\",\"$_attr_input_checkedValue\":\"Re\",\"$_attr_input_checkedValue_script\":\"Be\",\"$_attr_input_value_default\":\"We\",\"$_attr_input_value\":\"qe\",\"$_attr_input_value_script\":\"Ue\",\"$setInputValue\":\"je\",\"$_attr_select_value_default\":\"Pe\",\"$_attr_select_value\":\"Qe\",\"$_attr_select_value_script\":\"Je\",\"$setSelectValue\":\"Xe\",\"$getSelectValue\":\"Ze\",\"$_attr_details_or_dialog_open_default\":\"ze\",\"$_attr_details_or_dialog_open\":\"Ye\",\"$_attr_details_or_dialog_open_script\":\"et\",\"$syncControllableFormInput\":\"tt\",\"$handleChange\":\"nt\",\"$handleFormReset\":\"rt\",\"$hasValueChanged\":\"ot\",\"$hasCheckboxChanged\":\"it\",\"$hasSelectChanged\":\"lt\",\"$hasFormElementChanged\":\"ut\",\"$normalizeStrProp\":\"ft\",\"$normalizeBoolProp\":\"at\",\"$_to_text\":\"ct\",\"$_attr\":\"st\",\"$setAttribute\":\"dt\",\"$_attr_class\":\"pt\",\"$_attr_class_items\":\"ht\",\"$_attr_class_item\":\"gt\",\"$_attr_style\":\"vt\",\"$_attr_style_items\":\"mt\",\"$_attr_style_item\":\"bt\",\"$_attr_nonce\":\"yt\",\"$_text\":\"St\",\"$_text_content\":\"At\",\"$_attrs\":\"_t\",\"$_attrs_content\":\"kt\",\"$hasAttrAlias\":\"Ct\",\"$_attrs_partial\":\"Nt\",\"$_attrs_partial_content\":\"wt\",\"$attrsInternal\":\"Et\",\"$_attr_content\":\"xt\",\"$_attrs_script\":\"Mt\",\"$_html\":\"It\",\"$normalizeAttrValue\":\"Ft\",\"$normalizeString\":\"$t\",\"$_lifecycle\":\"Tt\",\"$removeChildNodes\":\"Lt\",\"$insertChildNodes\":\"Gt\",\"$toInsertNode\":\"Ht\",\"$_await_promise\":\"Ot\",\"$_await_content\":\"Dt\",\"$_try\":\"Kt\",\"$renderCatch\":\"Vt\",\"$_if\":\"Rt\",\"$_dynamic_tag\":\"Bt\",\"$_resume_dynamic_tag\":\"Wt\",\"$dynamicTagScript\":\"qt\",\"$setConditionalRenderer\":\"Ut\",\"$_for_of\":\"jt\",\"$_for_in\":\"Pt\",\"$_for_to\":\"Qt\",\"$_for_until\":\"Jt\",\"$loop\":\"Xt\",\"$createBranchWithTagNameOrRenderer\":\"Zt\",\"$bySecondArg\":\"zt\",\"$byFirstArg\":\"Yt\",\"$asyncRendersLookup\":\"en\",\"$rendering\":\"tn\",\"$pendingRenders\":\"nn\",\"$pendingRendersLookup\":\"rn\",\"$caughtError\":\"on\",\"$placeholderShown\":\"ln\",\"$pendingEffects\":\"un\",\"$pendingScopes\":\"fn\",\"$scopeKeyOffset\":\"an\",\"$queueRender\":\"cn\",\"$queuePendingRender\":\"sn\",\"$queueEffect\":\"dn\",\"$run\":\"pn\",\"$prepareEffects\":\"hn\",\"$runEffects\":\"gn\",\"$runRenders\":\"vn\",\"$runRender\":\"mn\",\"$_enable_catch\":\"bn\",\"$$signalReset\":\"yn\",\"$$signal\":\"Sn\",\"$abort\":\"An\",\"$classIdToBranch\":\"_n\",\"$compat\":\"kn\",\"$_template\":\"Cn\",\"$mount\":\"Nn\",\"$$clickCount__script\":\"Bn\",\"$$clickCount\":\"Dn\",\"$$setup\":\"jn\",\"$forEach\":\"xn\",\"$$if_content__comment_comments\":\"aa\",\"$$if_content__setup\":\"sa\",\"$$if_content__id\":\"ta\",\"$$for_content__id\":\"na\",\"$$for_content__input_path\":\"ia\",\"$$for_content__open__script\":\"la\",\"$$for_content__open\":\"ma\",\"$$for_content__setup\":\"ca\",\"$$for_content__if\":\"oa\",\"$$for_content__comment_comments\":\"ua\",\"$$for_content__$params\":\"ba\",\"$$for_content__comment\":\"ea\",\"$$for\":\"_a\",\"$$input_comments$1\":\"da\",\"$$input_path$1\":\"fa\"}}}"
  },
  {
    "path": ".sizes.json",
    "content": "{\n  \"examples\": {\n    \"counter\": \"./packages/runtime-tags/src/__tests__/fixtures/basic-counter/template.marko\",\n    \"comments\": \"./packages/runtime-tags/src/__tests__/fixtures/basic-inert-collapsible-tree/template.marko\"\n  },\n  \"results\": [\n    {\n      \"name\": \"*\",\n      \"total\": {\n        \"min\": 21238,\n        \"brotli\": 7981\n      }\n    },\n    {\n      \"name\": \"counter\",\n      \"user\": {\n        \"min\": 173,\n        \"brotli\": 148\n      },\n      \"runtime\": {\n        \"min\": 4079,\n        \"brotli\": 1829\n      },\n      \"total\": {\n        \"min\": 4252,\n        \"brotli\": 1977\n      }\n    },\n    {\n      \"name\": \"counter 💧\",\n      \"user\": {\n        \"min\": 96,\n        \"brotli\": 100\n      },\n      \"runtime\": {\n        \"min\": 2301,\n        \"brotli\": 1220\n      },\n      \"total\": {\n        \"min\": 2397,\n        \"brotli\": 1320\n      }\n    },\n    {\n      \"name\": \"comments\",\n      \"user\": {\n        \"min\": 694,\n        \"brotli\": 380\n      },\n      \"runtime\": {\n        \"min\": 6509,\n        \"brotli\": 2855\n      },\n      \"total\": {\n        \"min\": 7203,\n        \"brotli\": 3235\n      }\n    },\n    {\n      \"name\": \"comments 💧\",\n      \"user\": {\n        \"min\": 130,\n        \"brotli\": 110\n      },\n      \"runtime\": {\n        \"min\": 2453,\n        \"brotli\": 1257\n      },\n      \"total\": {\n        \"min\": 2583,\n        \"brotli\": 1367\n      }\n    }\n  ]\n}"
  },
  {
    "path": "LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright 2024 eBay Inc. and contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
  },
  {
    "path": "SECURITY.md",
    "content": "# Security Policy\n\n## Reporting a Vulnerability\n\nPlease report security issues **privately** using GitHub’s **Report a vulnerability** form on this repository (Security tab).\n\n**Do not** file public GitHub issues for security problems.\n\nWhen reporting, please include:\n\n- Affected project/repo and version(s)\n- Impact and component(s) involved\n- Reproduction steps or PoC (if available)\n- Your contact and preferred credit name\n\nIf you do not receive an acknowledgement of your report within **6 business days**, or if you cannot find a private security contact for the project, you may **escalate to the OpenJS Foundation CNA** at `security@lists.openjsf.org`.\n\nIf the project acknowledges your report but does not provide any further response or engagement within **14 days**, escalation is also appropriate.\n\n## Coordination & Disclosure\n\nWe follow coordinated vulnerability disclosure:\n\n- We will acknowledge your report, assess impact, and work on a fix.\n- We aim to provide status updates at reasonable intervals until resolution.\n- We will publish a security advisory (and **CVE via the OpenJS CNA when applicable**) once a fix or mitigation is available. We credit reporters by default unless you request otherwise.\n"
  },
  {
    "path": "babel.config.js",
    "content": "module.exports = (api) => ({\n  retainLines: true,\n  presets: [\n    [\n      \"@babel/env\",\n      {\n        loose: true,\n        targets: {\n          node: \"20\",\n        },\n      },\n    ],\n  ],\n  overrides: [\n    {\n      test: \"./packages/runtime-class/src/**/*\",\n      plugins: api.env(\"production\")\n        ? [\n            [\"babel-plugin-minprops\", { matchPrefix: \"___\", context: \"marko\" }],\n            \"./scripts/babel-plugin-marko-debug\",\n          ]\n        : [],\n    },\n  ],\n});\n"
  },
  {
    "path": "cspell.json",
    "content": "{\n  \"version\": \"0.2\",\n  \"$schema\": \"https://raw.githubusercontent.com/streetsidesoftware/cspell/master/cspell.schema.json\",\n  \"words\": [\n    \"marko\",\n    \"markoc\",\n    \"markojs\",\n    \"taglib\",\n    \"Taglib\",\n    \"TAGLIB\",\n    \"taglibs\",\n    \"Taglibs\",\n    \"htmljs\",\n    \"HTMLJS\",\n    \"vdom\",\n    \"Vdom\",\n    \"VDOM\",\n    \"vnode\",\n    \"vnodes\",\n    \"codegen\",\n    \"morphdom\",\n    \"renderbody\",\n    \"tagname\",\n    \"quasis\",\n    \"nodetype\",\n    \"runtimeid\",\n    \"inlines\",\n    \"webpacks\",\n    \"minprops\",\n    \"diffable\",\n    \"Diffable\",\n    \"autotest\",\n    \"devmode\",\n    \"styl\",\n    \"descs\",\n    \"deopt\",\n    \"deopts\",\n    \"browserslist\",\n    \"codemod\",\n    \"keygen\",\n    \"luxass\",\n    \"Piercey\",\n    \"mlrawlings\",\n    \"rturnq\",\n    \"feross\",\n    \"juliangruber\",\n    \"Greenkeeper\",\n    \"whatwg\",\n    \"npmjs\",\n    \"iojs\",\n    \"ebayui\",\n    \"userland\",\n    \"sourcemapping\",\n    \"treeshaken\",\n    \"prebundling\",\n    \"subcomponents\",\n    \"unkeyed\",\n    \"Autokeyed\",\n    \"autokeys\",\n    \"falsey\",\n    \"falseish\",\n    \"destructures\",\n    \"reorderer\",\n    \"Reorderer\",\n    \"renderable\",\n    \"Renderable\",\n    \"interactable\",\n    \"downstreams\",\n    \"Downstreams\",\n    \"downtranspiles\",\n    \"autoloading\",\n    \"autodiscover\",\n    \"autodiscovers\",\n    \"expando\",\n    \"weakmaps\",\n    \"macrotask\",\n    \"charset\",\n    \"charcode\",\n    \"charcodes\",\n    \"fnmatch\",\n    \"extglob\",\n    \"extglobs\",\n    \"nullglob\",\n    \"noglobstar\",\n    \"noext\",\n    \"nocase\",\n    \"nobrace\",\n    \"nonegate\",\n    \"nonull\",\n    \"bsdglob\",\n    \"newcap\",\n    \"nocomment\",\n    \"kinded\",\n    \"callees\",\n    \"weakmaps\",\n    \"wbind\",\n    \"noopener\",\n    \"noreferrer\",\n    \"nomodule\",\n    \"modulepreload\",\n    \"fetchpriority\",\n    \"popovertarget\",\n    \"popovertargetaction\",\n    \"beforematch\",\n    \"onbeforematch\",\n    \"shadowrootmode\",\n    \"virtualkeyboardpolicy\",\n    \"stylesheet\",\n    \"noncryptographic\",\n    \"HPACK\",\n    \"Fastly\",\n    \"beresp\",\n    \"pingback\",\n    \"webmention\",\n    \"microdata\",\n    \"colgroup\",\n    \"datalist\",\n    \"fieldset\",\n    \"figcaption\",\n    \"optgroup\",\n    \"rowspan\",\n    \"srcdoc\",\n    \"srcset\",\n    \"usemap\",\n    \"enctype\",\n    \"novalidate\",\n    \"maxlength\",\n    \"autoplay\",\n    \"autofocus\",\n    \"formaction\",\n    \"formenctype\",\n    \"formmethod\",\n    \"formnovalidate\",\n    \"formtarget\",\n    \"hreflang\",\n    \"referrerpolicy\",\n    \"contenteditable\",\n    \"tabindex\",\n    \"inputmode\",\n    \"itemprop\",\n    \"itemref\",\n    \"itemscope\",\n    \"itemtype\",\n    \"playsinline\",\n    \"disablepictureinpicture\",\n    \"disableremoteplayback\",\n    \"controlslist\",\n    \"intrinsicsize\",\n    \"srclang\",\n    \"noscript\",\n    \"quicktime\",\n    \"hgroup\",\n    \"samp\",\n    \"tspan\",\n    \"colcount\",\n    \"colindex\",\n    \"rowcount\",\n    \"rowindex\",\n    \"setsize\",\n    \"valuemax\",\n    \"valuemin\",\n    \"valuenow\",\n    \"valuetext\",\n    \"posinset\",\n    \"roledescription\",\n    \"haspopup\",\n    \"keyshortcuts\",\n    \"labelledby\",\n    \"describedby\",\n    \"flowto\",\n    \"multiselectable\",\n    \"alertdialog\",\n    \"columnheader\",\n    \"contentinfo\",\n    \"listitem\",\n    \"menuitemcheckbox\",\n    \"menuitemradio\",\n    \"progressbar\",\n    \"rowgroup\",\n    \"rowheader\",\n    \"spinbutton\",\n    \"tablist\",\n    \"treegrid\",\n    \"activedescendant\",\n    \"colindextext\",\n    \"rowindextext\",\n    \"onblur\",\n    \"onfocus\",\n    \"onclick\",\n    \"onresize\",\n    \"onstorage\",\n    \"onunload\",\n    \"ononline\",\n    \"onoffline\",\n    \"onpopstate\",\n    \"onhashchange\",\n    \"onpageshow\",\n    \"onpagehide\",\n    \"onbeforeunload\",\n    \"onbeforeprint\",\n    \"onafterprint\",\n    \"onlanguagechange\",\n    \"onredo\",\n    \"onundo\",\n    \"ondrag\",\n    \"ondragend\",\n    \"ondragenter\",\n    \"ondragleave\",\n    \"ondragover\",\n    \"ondragstart\",\n    \"ondrop\",\n    \"oncanplay\",\n    \"oncanplaythrough\",\n    \"oncontextmenu\",\n    \"oncuechange\",\n    \"ondblclick\",\n    \"ondurationchange\",\n    \"onemptied\",\n    \"onloadeddata\",\n    \"onloadedmetadata\",\n    \"onloadstart\",\n    \"onmousedown\",\n    \"onmousemove\",\n    \"onmouseout\",\n    \"onmouseover\",\n    \"onmouseup\",\n    \"onmousewheel\",\n    \"onpause\",\n    \"onplay\",\n    \"onplaying\",\n    \"onratechange\",\n    \"onreset\",\n    \"onscroll\",\n    \"onseeked\",\n    \"onseeking\",\n    \"onselect\",\n    \"onshow\",\n    \"onstalled\",\n    \"onsubmit\",\n    \"onsuspend\",\n    \"ontimeupdate\",\n    \"onvolumechange\",\n    \"onwaiting\",\n    \"dropeffect\",\n    \"elementtiming\",\n    \"enterkeyhint\",\n    \"autocapitalize\",\n    \"accesskey\",\n    \"exportparts\",\n    \"imagesrcset\",\n    \"nohref\",\n    \"noshade\",\n    \"cellspacing\",\n    \"charoff\",\n    \"codetype\",\n    \"marginheight\",\n    \"marginwidth\",\n    \"topmargin\",\n    \"bottommargin\",\n    \"leftmargin\",\n    \"rightmargin\",\n    \"bgcolor\",\n    \"longdesc\",\n    \"classid\",\n    \"keygen\",\n    \"maction\",\n    \"maligngroup\",\n    \"malignmark\",\n    \"menclose\",\n    \"merror\",\n    \"mfenced\",\n    \"mfile\",\n    \"mfrac\",\n    \"mglyph\",\n    \"mlabeledtr\",\n    \"mlongdiv\",\n    \"mmultiscripts\",\n    \"mpadded\",\n    \"mpath\",\n    \"mphantom\",\n    \"mprescripts\",\n    \"mroot\",\n    \"mrow\",\n    \"mscarries\",\n    \"mscarry\",\n    \"msgroup\",\n    \"msline\",\n    \"mspace\",\n    \"msqrt\",\n    \"msrow\",\n    \"mstack\",\n    \"mstyle\",\n    \"msub\",\n    \"msubsup\",\n    \"msup\",\n    \"mtable\",\n    \"mtext\",\n    \"munder\",\n    \"munderover\",\n    \"xlink\",\n    \"webkitdirectory\",\n    \"webworkers\",\n    \"ltrim\",\n    \"libc\",\n    \"miterlimit\",\n    \"linejoin\",\n    \"evenodd\",\n    \"noremoteplayback\",\n    \"noplaybackrate\",\n    \"nofullscreen\",\n    \"nodownload\",\n    \"posterimage\",\n    \"videofile\",\n    \"nqry\",\n    \"gentest\",\n    \"testling\",\n    \"jsonminify\",\n    \"pppconfig\",\n    \"pppoe\",\n    \"pppoeconf\",\n    \"bkuri\",\n    \"impp\",\n    \"closedby\",\n    \"closerequest\",\n    \"scrollmonitor\",\n    \"Datatest\",\n    \"tryonline\",\n    \"Huncwot\",\n    \"Hyperclick\",\n    \"Subresource\",\n    \"Protip\",\n    \"esque\",\n    \"newcap\",\n    \"MUID\",\n    \"SVGM\",\n    \"TSBASETYPE\",\n    \"TSTYPE\",\n    \"TSTYPEELEMENT\",\n    \"MODULEDECLARATION\",\n    \"IMPORTOREXPORTDECLARATION\",\n    \"TIMEDOUT\",\n    \"timedout\",\n    \"argly\",\n    \"onattach\",\n    \"ondetach\",\n    \"ondomready\",\n    \"autopictureinpicture\",\n    \"bday\",\n    \"autoinitialization\",\n    \"overcomplicating\",\n    \"Prettyprinting\",\n    \"brainer\",\n    \"Ahhhh\",\n    \"Khoon\",\n    \"Kelleher\",\n    \"Aberer\",\n    \"Perini\",\n    \"Addy\",\n    \"Osmani\",\n    \"Rigsby\",\n    \"afph\",\n    \"afpha\",\n    \"afphc\",\n    \"strs\",\n    \"oogle\",\n    \"onwarn\",\n    \"buttn\",\n    \"dont\",\n    \"imagesizes\",\n    \"treeitems\"\n  ],\n  \"ignoreRegExpList\": [],\n  \"files\": [\"*\"],\n  \"ignorePaths\": [\n    \"dist\",\n    \"fixtures\",\n    \"fixtures-interop\",\n    \"**/node_modules\",\n    \"**/CHANGELOG.md\"\n  ]\n}\n"
  },
  {
    "path": "eslint.config.mjs",
    "content": "import eslint from \"@eslint/js\";\nimport sortImportPlugin from \"eslint-plugin-simple-import-sort\";\nimport globals from \"globals\";\nimport tseslint from \"typescript-eslint\";\n\nexport default tseslint.config(\n  {\n    ignores: [\n      \"!packages/runtime-class/src/node_modules\",\n      \".cache\",\n      \".sizes\",\n      \".vscode\",\n      \"**/__snapshots__\",\n      \"**/*.marko.js\",\n      \"**/*actual*\",\n      \"**/*dist/\",\n      \"**/*expected*\",\n      \"**/snapshots\",\n      \"**/test/**/input.js\",\n      \"coverage\",\n      \"node_modules\",\n    ],\n  },\n  eslint.configs.recommended,\n  ...tseslint.configs.recommended,\n  {\n    languageOptions: {\n      globals: {\n        ...globals.mocha,\n        ...globals.browser,\n        ...globals.node,\n      },\n    },\n    plugins: {\n      \"simple-import-sort\": sortImportPlugin,\n    },\n    rules: {\n      \"simple-import-sort/imports\": \"error\",\n      \"simple-import-sort/exports\": \"error\",\n      \"@typescript-eslint/no-empty-function\": \"off\",\n      \"@typescript-eslint/no-explicit-any\": \"off\",\n      \"@typescript-eslint/no-import-type-side-effects\": \"error\",\n      \"@typescript-eslint/no-non-null-assertion\": \"off\",\n      \"@typescript-eslint/no-unused-expressions\": \"off\",\n      \"@typescript-eslint/no-require-imports\": \"off\",\n      \"@typescript-eslint/no-duplicate-enum-values\": \"off\",\n      \"@typescript-eslint/no-unused-vars\": \"off\",\n      \"@typescript-eslint/no-empty-object-type\": \"off\",\n    },\n  },\n);\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"marko-project\",\n  \"private\": true,\n  \"workspaces\": [\n    \"./packages/*\"\n  ],\n  \"scripts\": {\n    \"@ci:build\": \"npm run build\",\n    \"@ci:lint\": \"eslint --format unix . && prettier . --check --with-node-modules --log-level=warn\",\n    \"@ci:release\": \"npm run build && node scripts/pkg-override && changeset publish && node scripts/pkg-override && npm ci\",\n    \"@ci:release-alias\": \"node -r ~ts scripts/publish-alias.ts\",\n    \"@ci:test\": \"cross-env NODE_OPTIONS=\\\"--max-old-space-size=4096\\\" MARKO_DEBUG=1 c8 npm test\",\n    \"@ci:version\": \"npm run build && npm run format && changeset version && npm i --package-lock-only\",\n    \"build\": \"npm run build --ws && npm run build:types\",\n    \"build:sizes\": \"node -r ~ts scripts/sizes\",\n    \"build:types\": \"npx tsc --noEmit packages/runtime-tags/index.d.ts && npx tsc --noEmit packages/runtime-class/index.d.ts && tsc -b tsconfig.build.json\",\n    \"change\": \"changeset add\",\n    \"compile\": \"node -r ~ts scripts/inspect-compiled-output.ts\",\n    \"format\": \"eslint --format unix --fix .; prettier . --write --with-node-modules --log-level=warn\",\n    \"lint\": \"eslint --format unix . && prettier . --check --with-node-modules --log-level=warn && cspell \\\"**/*.{md,ts,js,marko}\\\"\",\n    \"prepare\": \"husky && patch-package && npm run build-babel-types -w @marko/compiler\",\n    \"report\": \"open ./coverage/lcov-report/index.html\",\n    \"test\": \"mocha\",\n    \"test:update\": \"UPDATE_EXPECTATIONS=1 mocha --update\"\n  },\n  \"devDependencies\": {\n    \"@babel/cli\": \"^7.28.6\",\n    \"@babel/code-frame\": \"^7.29.0\",\n    \"@babel/core\": \"^7.29.0\",\n    \"@babel/generator\": \"^7.29.1\",\n    \"@babel/parser\": \"^7.29.0\",\n    \"@babel/plugin-syntax-typescript\": \"^7.28.6\",\n    \"@babel/plugin-transform-modules-commonjs\": \"^7.28.6\",\n    \"@babel/plugin-transform-typescript\": \"^7.28.6\",\n    \"@babel/preset-env\": \"^7.29.0\",\n    \"@babel/preset-typescript\": \"^7.28.5\",\n    \"@babel/register\": \"^7.28.6\",\n    \"@babel/traverse\": \"^7.29.0\",\n    \"@babel/types\": \"^7.29.0\",\n    \"@changesets/changelog-github\": \"^0.6.0\",\n    \"@changesets/cli\": \"^2.30.0\",\n    \"@ebay/browserslist-config\": \"^2.13.0\",\n    \"@eslint/js\": \"^10.0.1\",\n    \"@rollup/plugin-terser\": \"^1.0.0\",\n    \"@rollup/plugin-virtual\": \"^3.0.2\",\n    \"@types/babel__code-frame\": \"^7.27.0\",\n    \"@types/babel__core\": \"^7.20.5\",\n    \"@types/babel__generator\": \"^7.27.0\",\n    \"@types/babel__traverse\": \"^7.28.0\",\n    \"@types/js-beautify\": \"^1.14.3\",\n    \"@types/jsdom\": \"^28.0.0\",\n    \"@types/mocha\": \"^10.0.10\",\n    \"@types/node\": \"^25.3.3\",\n    \"~ts\": \"file:scripts/babel-register.js\",\n    \"babel-plugin-minprops\": \"^2.0.1\",\n    \"bluebird\": \"^3.7.2\",\n    \"c8\": \"^11.0.0\",\n    \"chai\": \"^4.4.1\",\n    \"cross-env\": \"^10.1.0\",\n    \"cspell\": \"^9.7.0\",\n    \"diffable-html\": \"^6.0.1\",\n    \"esbuild\": \"^0.27.3\",\n    \"eslint\": \"^10.0.2\",\n    \"eslint-formatter-unix\": \"^9.0.1\",\n    \"eslint-plugin-simple-import-sort\": \"^12.1.1\",\n    \"express\": \"^5.2.1\",\n    \"globals\": \"^17.4.0\",\n    \"husky\": \"^9.1.7\",\n    \"it-fails\": \"^1.0.9\",\n    \"js-beautify\": \"^1.15.4\",\n    \"jsdom\": \"^28.1.0\",\n    \"jsdom-context-require\": \"^5.2.8\",\n    \"kleur\": \"^4.1.5\",\n    \"lint-staged\": \"^16.3.2\",\n    \"mocha\": \"^11.7.5\",\n    \"mocha-autotest\": \"^1.1.3\",\n    \"mocha-snap\": \"^5.0.1\",\n    \"patch-package\": \"^8.0.1\",\n    \"prettier\": \"^3.8.1\",\n    \"prettier-plugin-packagejson\": \"^3.0.2\",\n    \"pretty-format\": \"^30.2.0\",\n    \"rolldown\": \"^1.0.0-rc.7\",\n    \"rollup\": \"^4.59.0\",\n    \"table\": \"^6.9.0\",\n    \"through\": \"^2.3.8\",\n    \"through2\": \"^4.0.2\",\n    \"tiny-glob\": \"^0.2.9\",\n    \"typescript\": \"^5.9.3\",\n    \"typescript-eslint\": \"^8.56.1\"\n  }\n}\n"
  },
  {
    "path": "packages/compiler/CHANGELOG.md",
    "content": "# Change Log\n\n## 5.39.62\n\n### Patch Changes\n\n- [#3133](https://github.com/marko-js/marko/pull/3133) [`1ca1a71`](https://github.com/marko-js/marko/commit/1ca1a71d0f07c2e9e233899c4677005026873942) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add validations around tags api attribute names.\n\n## 5.39.61\n\n### Patch Changes\n\n- [#3130](https://github.com/marko-js/marko/pull/3130) [`2dc2152`](https://github.com/marko-js/marko/commit/2dc21520fbd1029c55c7e6c8c4f1a641d5cb8b90) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Support bound attribute modifiers as a way to cast change handler values.\n\n## 5.39.60\n\n### Patch Changes\n\n- [#3119](https://github.com/marko-js/marko/pull/3119) [`109e423`](https://github.com/marko-js/marko/commit/109e4237b2ba12cc1db11f345614e62ab5d675e0) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where babel internal api was not correctly using package overrides when publishing.\n\n## 5.39.59\n\n### Patch Changes\n\n- [#3117](https://github.com/marko-js/marko/pull/3117) [`e0419aa`](https://github.com/marko-js/marko/commit/e0419aaea01c9125fc5b67cfb51ed5fabb674dbb) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrades eslint which captured some unecessary variable initializations and assignments.\n\n- [#3118](https://github.com/marko-js/marko/pull/3118) [`1961089`](https://github.com/marko-js/marko/commit/1961089c02743978cc4887346ff293a160d5139a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid loading babel configs when babel is not installed locally.\n\n## 5.39.58\n\n### Patch Changes\n\n- [#3110](https://github.com/marko-js/marko/pull/3110) [`900a3d5`](https://github.com/marko-js/marko/commit/900a3d54a97606fb8be1a4b7d90d03313d5d7643) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure types stripped before transform phase in compiler.\n\n## 5.39.57\n\n### Patch Changes\n\n- [#3108](https://github.com/marko-js/marko/pull/3108) [`97cf126`](https://github.com/marko-js/marko/commit/97cf126772fa4521f171d3d968b18a11c6e0028f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with translating concise mode tags api style tag.\n\n- [#3108](https://github.com/marko-js/marko/pull/3108) [`f1a93a7`](https://github.com/marko-js/marko/commit/f1a93a7f4a0230aa57cf62aea094db370e0a0fad) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrade htmljs-parser to fix a concise mode whitespace normalization issue.\n\n## 5.39.56\n\n### Patch Changes\n\n- [#3097](https://github.com/marko-js/marko/pull/3097) [`f774948`](https://github.com/marko-js/marko/commit/f774948773e89c4f7e4564fa2eb1c0cc7569bbfa) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Revert a recent change to preserve parenthesized expressions in the compiler.\n  This caused a regression through some analysis which did not account for parenthesized expressions.\n\n- [#3096](https://github.com/marko-js/marko/pull/3096) [`3efe00f`](https://github.com/marko-js/marko/commit/3efe00f53244a3d9c2558e6926dcea601b9ff838) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Normalize controllable values following the same rules as DOM normalization before triggering change handlers.\n\n## 5.39.55\n\n### Patch Changes\n\n- [#3081](https://github.com/marko-js/marko/pull/3081) [`a6bfcdc`](https://github.com/marko-js/marko/commit/a6bfcdce1174e37b76cce297e859646fdecd7adc) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix regression that prevented loading @marko/compiler in the browser.\n\n## 5.39.54\n\n### Patch Changes\n\n- [#3079](https://github.com/marko-js/marko/pull/3079) [`06842e9`](https://github.com/marko-js/marko/commit/06842e9bd39ccf3b9b5fc25f4de33e9c399f954b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Bundle babel with rolldown instead of esbuild (produces smaller bundle).\n\n## 5.39.53\n\n### Patch Changes\n\n- [#3077](https://github.com/marko-js/marko/pull/3077) [`020dfd4`](https://github.com/marko-js/marko/commit/020dfd4bbb780aa83f2233097217d0cb27b3e26a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure browserslist is an optional dependency with bundled babel.\n\n## 5.39.52\n\n### Patch Changes\n\n- [#3075](https://github.com/marko-js/marko/pull/3075) [`fe579b5`](https://github.com/marko-js/marko/commit/fe579b53fb5b3341654268a68546d48a39bde57a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add stub types for babel packages in internal compiler api.\n\n## 5.39.51\n\n### Patch Changes\n\n- [#3073](https://github.com/marko-js/marko/pull/3073) [`1aabdc3`](https://github.com/marko-js/marko/commit/1aabdc30bb7fa3b82e76a5b4724f469133f14c85) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Remove direct dependency on babel, refactor to use internal copy.\n\n## 5.39.50\n\n### Patch Changes\n\n- [#3071](https://github.com/marko-js/marko/pull/3071) [`c5d31de`](https://github.com/marko-js/marko/commit/c5d31de1b55b26ffb746b7a03b01f2ce26ba0981) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix babel ast patching logic to work with latest babel.\n\n## 5.39.49\n\n### Patch Changes\n\n- [#3061](https://github.com/marko-js/marko/pull/3061) [`0134076`](https://github.com/marko-js/marko/commit/0134076c0e11173a5e9c377aefb0d9709a3a6415) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add ability for generated template ids to be overwritten via compiler config.\n\n## 5.39.48\n\n### Patch Changes\n\n- [#3044](https://github.com/marko-js/marko/pull/3044) [`2a43f7e`](https://github.com/marko-js/marko/commit/2a43f7e4147553779133a94c88f8c965fc8dd19f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve logic around building up analyzed watch files.\n\n## 5.39.47\n\n### Patch Changes\n\n- [#3028](https://github.com/marko-js/marko/pull/3028) [`72a614d`](https://github.com/marko-js/marko/commit/72a614d9494f1b65060310b7abc0c54d1fd4767b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with var's inside scriptlets having incorrect scoping.\n\n## 5.39.46\n\n### Patch Changes\n\n- [#3024](https://github.com/marko-js/marko/pull/3024) [`f634f38`](https://github.com/marko-js/marko/commit/f634f38d6dfffd72c23b4ec7e7bf5596ebd0b5de) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Use compiler modules api to read CWD in interop code.\n\n## 5.39.45\n\n### Patch Changes\n\n- [#3001](https://github.com/marko-js/marko/pull/3001) [`792dd1d`](https://github.com/marko-js/marko/commit/792dd1d5d193554889f7ba6e734c1730b947cf2d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Expose Marko target api on compiled meta data.\n\n- [#2999](https://github.com/marko-js/marko/pull/2999) [`d2f437b`](https://github.com/marko-js/marko/commit/d2f437bf7118c3160a4f4c9cf977b8396d9fc8db) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add support for \"use class\" comment to opt into to class api when exclusive `tags` folders prefer tags api.\n\n- [#2999](https://github.com/marko-js/marko/pull/2999) [`d2f437b`](https://github.com/marko-js/marko/commit/d2f437bf7118c3160a4f4c9cf977b8396d9fc8db) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add exclusive `tags` folder discovery as a \"prefer tags api\" heuristic in interop mode.\n\n## 5.39.44\n\n### Patch Changes\n\n- [#2996](https://github.com/marko-js/marko/pull/2996) [`1a65ff3`](https://github.com/marko-js/marko/commit/1a65ff3f4ed31b1e3fab37328962950db28a68e6) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Move strip types logic to be after transform phase.\n\n- [#2994](https://github.com/marko-js/marko/pull/2994) [`1bf2788`](https://github.com/marko-js/marko/commit/1bf2788042fd3e6928303c5782909612a59c5206) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure MarkoScriptlet's are visited for outer binding identifiers.\n\n- [#2996](https://github.com/marko-js/marko/pull/2996) [`2a23dec`](https://github.com/marko-js/marko/commit/2a23decc64b3dbfea024241b1301dba7f6d69679) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Run parse hooks after the main parse phase is complete.\n\n## 5.39.43\n\n### Patch Changes\n\n- [#2983](https://github.com/marko-js/marko/pull/2983) [`fdc46fb`](https://github.com/marko-js/marko/commit/fdc46fb3e762595a43fd1fa2f714af7f8819d341) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Default title tag to be text only for Marko 6.\n\n- [#2978](https://github.com/marko-js/marko/pull/2978) [`55fd324`](https://github.com/marko-js/marko/commit/55fd324c3f4ea00535856c7719f8b4c46f55de40) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Update compiler to avoid mutating translator visitors.\n\n- [#2983](https://github.com/marko-js/marko/pull/2983) [`fdc46fb`](https://github.com/marko-js/marko/commit/fdc46fb3e762595a43fd1fa2f714af7f8819d341) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Normalize taglib ids to be consistent with register ids and across Marko 5/6.\n\n## 5.39.42\n\n### Patch Changes\n\n- [#2949](https://github.com/marko-js/marko/pull/2949) [`6648a22`](https://github.com/marko-js/marko/commit/6648a2229084e3ae431c175fb283e41b9bb1dab5) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Allow compiler import helper to be used outside of translate.\n\n## 5.39.41\n\n### Patch Changes\n\n- [#2906](https://github.com/marko-js/marko/pull/2906) [`c6a9c12`](https://github.com/marko-js/marko/commit/c6a9c125e82d9a1fbb158677cc8c26a94d80e2ec) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with incorrect babel scopes after stripping types.\n\n## 5.39.40\n\n### Patch Changes\n\n- [#2859](https://github.com/marko-js/marko/pull/2859) [`22112e5`](https://github.com/marko-js/marko/commit/22112e524cf12baf0b119a5ad3417145459a159c) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure markoOpts is always accurate when running child template analysis.\n\n## 5.39.39\n\n### Patch Changes\n\n- [#2855](https://github.com/marko-js/marko/pull/2855) [`29173ce`](https://github.com/marko-js/marko/commit/29173ced3806d932eb05dc14002fc4969ef4ac6b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure scopes are crawled before stripping types.\n\n## 5.39.38\n\n### Patch Changes\n\n- [#2853](https://github.com/marko-js/marko/pull/2853) [`b52a62f`](https://github.com/marko-js/marko/commit/b52a62f3ae5d07bee23685289aec169476820f69) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure stripTypes compiler option is applied when targeting source output.\n\n## 5.39.37\n\n### Patch Changes\n\n- [#2834](https://github.com/marko-js/marko/pull/2834) [`5c9a37f`](https://github.com/marko-js/marko/commit/5c9a37fa17c6a2f5f771c919b8415e4dfb25fca4) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue striping type specifiers in imports.\n\n## 5.39.36\n\n### Patch Changes\n\n- [#2830](https://github.com/marko-js/marko/pull/2830) [`9a688af`](https://github.com/marko-js/marko/commit/9a688af3c92a73ae7492cdaa4b9ff1e0b2f9127e) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with static/server/client statements with type imports not properly being stripped.\n\n## 5.39.35\n\n### Patch Changes\n\n- [#2823](https://github.com/marko-js/marko/pull/2823) [`58c2165`](https://github.com/marko-js/marko/commit/58c21653aa0a1d6e1db208c36a1a584b44ba2ff0) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure type stripping runs before transform phase in compiler.\n\n## 5.39.34\n\n### Patch Changes\n\n- [#2815](https://github.com/marko-js/marko/pull/2815) [`ed8d064`](https://github.com/marko-js/marko/commit/ed8d064d154532cfa7c12be524d6b47556da0c7f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure `@marko/compiler/modules` always uses packagem name imports for easier aliasing in website tooling.\n\n## 5.39.33\n\n### Patch Changes\n\n- [#2756](https://github.com/marko-js/marko/pull/2756) [`46f1f90`](https://github.com/marko-js/marko/commit/46f1f9075043754aadec1175db5885f72c84e016) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve tags api compat.\n\n## 5.39.32\n\n### Patch Changes\n\n- [#2753](https://github.com/marko-js/marko/pull/2753) [`9ba0cab`](https://github.com/marko-js/marko/commit/9ba0cab6474e7cd483b93992be5b8b5e7c8df0aa) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Update package dependencies.\n\n## 5.39.31\n\n### Patch Changes\n\n- [#2749](https://github.com/marko-js/marko/pull/2749) [`9e0684f`](https://github.com/marko-js/marko/commit/9e0684f1171d7ab8364be719c4cf5b62df78126c) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Prevent loss of comments in a scriptlet without statements\n\n## 5.39.30\n\n### Patch Changes\n\n- [#2743](https://github.com/marko-js/marko/pull/2743) [`5b3ca5c`](https://github.com/marko-js/marko/commit/5b3ca5ce79b2a90ef505f290c6b17344ebcf3372) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Minor improvements to class/id shorthand parsing.\n\n## 5.39.29\n\n### Patch Changes\n\n- [#2734](https://github.com/marko-js/marko/pull/2734) [`b6ba333`](https://github.com/marko-js/marko/commit/b6ba333ee289ff27a549d1a2ea60b06338cb7ef5) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrade all deps. Fix support for [discard binding proposal](https://github.com/tc39/proposal-discard-binding).\n\n## 5.39.28\n\n### Patch Changes\n\n- [#2715](https://github.com/marko-js/marko/pull/2715) [`e60a20f`](https://github.com/marko-js/marko/commit/e60a20f7e2dcbdb2dcfa45bc15f2901ffd0443c7) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Remove script tag definition that caused a conflict when in interop mode.\n\n- [#2715](https://github.com/marko-js/marko/pull/2715) [`dc178ce`](https://github.com/marko-js/marko/commit/dc178ced9f75aac923f3c5b043aa40d62e8d0f4d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Move translator loading logic back into shared utility. Moving this out caused a regression for tools that call `getRuntimeEntryFiles` or `taglib.buildLookup` directly.\n\n## 5.39.27\n\n### Patch Changes\n\n- [#2713](https://github.com/marko-js/marko/pull/2713) [`2d11230`](https://github.com/marko-js/marko/commit/2d11230f012397681f63071ea9b33b246b45f9ad) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid using \"util\" module to improve browser compat of compiler.\n\n## 5.39.26\n\n### Patch Changes\n\n- [#2707](https://github.com/marko-js/marko/pull/2707) [`89d0196`](https://github.com/marko-js/marko/commit/89d019678ecfb004af9b5892482d6af9d6178c4d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix false positive interop checks.\n\n## 5.39.25\n\n### Patch Changes\n\n- [#2705](https://github.com/marko-js/marko/pull/2705) [`75eaa9d`](https://github.com/marko-js/marko/commit/75eaa9d833f6711b5b60757ef02ca987fc310b01) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid using process api in compiler to make it easier to load in environments without it.\n\n## 5.39.24\n\n### Patch Changes\n\n- [#2703](https://github.com/marko-js/marko/pull/2703) [`f67361b`](https://github.com/marko-js/marko/commit/f67361bc52191c9092833438868f09bb583252e1) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Load interop translator by default if installed.\n\n## 5.39.23\n\n### Patch Changes\n\n- [#2701](https://github.com/marko-js/marko/pull/2701) [`8f68b6e`](https://github.com/marko-js/marko/commit/8f68b6efc960a3e59f59cbb49c549a248a03a79f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix regression where explicitly passing in `undefined` for translator was not loading the default translator.\n\n## 5.39.22\n\n### Patch Changes\n\n- [#2699](https://github.com/marko-js/marko/pull/2699) [`dc3ee34`](https://github.com/marko-js/marko/commit/dc3ee348e9b95c12bf74d4212a82756d7ad90a18) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid node:crypto - use custom hash algo for component ids.\n\n## 5.39.21\n\n### Patch Changes\n\n- [#2696](https://github.com/marko-js/marko/pull/2696) [`eefa829`](https://github.com/marko-js/marko/commit/eefa829038b5bdd6edbbf95cef61e152e91ca9ec) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve internal module loading api. Ensure all taglib requires happen relative to project dir.\n\n## 5.39.20\n\n### Patch Changes\n\n- [#2691](https://github.com/marko-js/marko/pull/2691) [`0758ae7`](https://github.com/marko-js/marko/commit/0758ae72e3a3da9fdf1dca37001aa6e8479655f9) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where scriptlets with comments were being printed without brackets when printing the marko ast.\n\n## 5.39.19\n\n### Patch Changes\n\n- [#2648](https://github.com/marko-js/marko/pull/2648) [`3b883d4`](https://github.com/marko-js/marko/commit/3b883d4d9729e5b13bb0e8d19850c087d0e8245f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where tags added from the translator were given lower priority than tags added by the core compiler.\n\n## 5.39.18\n\n### Patch Changes\n\n- [#2636](https://github.com/marko-js/marko/pull/2636) [`dc748b4`](https://github.com/marko-js/marko/commit/dc748b4932c1db3f556d4fc898ab47911828b6b6) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add parenthesized expressions to the list of computable values.\n\n## 5.39.17\n\n### Patch Changes\n\n- [#2623](https://github.com/marko-js/marko/pull/2623) [`525345f`](https://github.com/marko-js/marko/commit/525345f4f71c53c00d7779a4c5d95fceaec3d33b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Refactor getFile and getProgram handling to avoid circular references between babel-utils and babel-plugin code.\n\n## 5.39.16\n\n### Patch Changes\n\n- [#2621](https://github.com/marko-js/marko/pull/2621) [`aad5a8d`](https://github.com/marko-js/marko/commit/aad5a8d9473d0add9093f84bd570af8d47e0a4db) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Expose getProgram and getFile apis from @marko/compiler/babel-utils. Exposing it directly from the compiler was causing an issue with the website.\n\n## 5.39.15\n\n### Patch Changes\n\n- [#2607](https://github.com/marko-js/marko/pull/2607) [`7110193`](https://github.com/marko-js/marko/commit/7110193bffa170a662549265c33996691f17453e) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Expose getProgram and getFile apis for accessing the file/program of the active compilation.\n\n## 5.39.14\n\n### Patch Changes\n\n- [#2589](https://github.com/marko-js/marko/pull/2589) [`765915a`](https://github.com/marko-js/marko/commit/765915ad423827bcdec6281413c59ecda173a80d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue when using with latest version of babel.\n\n## 5.39.13\n\n### Patch Changes\n\n- [#2534](https://github.com/marko-js/marko/pull/2534) [`cfca41a`](https://github.com/marko-js/marko/commit/cfca41ac8c571d1fecb3b889df5eead1dfe06130) Thanks [@rturnq](https://github.com/rturnq)! - Add support for tag varaible hoisting\n\n## 5.39.12\n\n### Patch Changes\n\n- [#2485](https://github.com/marko-js/marko/pull/2485) [`09c0558`](https://github.com/marko-js/marko/commit/09c0558a1b26df2d828d56bd853f885a17683e38) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure Marko 5 renderBodies are serialized properly across the compat layer.\n\n## 5.39.11\n\n### Patch Changes\n\n- [#2470](https://github.com/marko-js/marko/pull/2470) [`218c436`](https://github.com/marko-js/marko/commit/218c43674e478062cdbc0fcbaef0dc13cd79107f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve tags / class api interop layer for destroyed tags.\n\n## 5.39.10\n\n### Patch Changes\n\n- [#2453](https://github.com/marko-js/marko/pull/2453) [`b4d73b0`](https://github.com/marko-js/marko/commit/b4d73b0ab2ca2e07ec27172015ce7dd68ad1312f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Expose @marko/compiler/babel-utils as a top level file for legacy resolvers.\n\n## 5.39.9\n\n### Patch Changes\n\n- [#2451](https://github.com/marko-js/marko/pull/2451) [`602eaad`](https://github.com/marko-js/marko/commit/602eaad0a48047b2fb678b8e77d6b345a0930b8d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid swallowing errors when resolved paths in marko.json files could not be resolve (now leaves the value as is, previously would ignore the path).\n\n- [#2449](https://github.com/marko-js/marko/pull/2449) [`6cf4978`](https://github.com/marko-js/marko/commit/6cf4978d765914e1d1c3ee62a3c691ce20c4903b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Support aggregate errors when final error is a HTMLJS parser error.\n\n## 5.39.8\n\n### Patch Changes\n\n- [#2445](https://github.com/marko-js/marko/pull/2445) [`b12d7a9`](https://github.com/marko-js/marko/commit/b12d7a9b76dd9fca89ed717b8491b08d5e927fe0) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add engines field to package.json\n\n## 5.39.7\n\n### Patch Changes\n\n- [#2438](https://github.com/marko-js/marko/pull/2438) [`4b6c613`](https://github.com/marko-js/marko/commit/4b6c6135badad6db7e4a8f0f59fb005ed66b04fa) Thanks [@mlrawlings](https://github.com/mlrawlings)! - use tags/ instead of components/ for runtime-tags\n\n- [#2439](https://github.com/marko-js/marko/pull/2439) [`8ebe566`](https://github.com/marko-js/marko/commit/8ebe566854179ad8cf8cfca7858d607ab208c01e) Thanks [@mlrawlings](https://github.com/mlrawlings)! - fix: remove duplicate imports of compat runtime\n\n## 5.39.6\n\n### Patch Changes\n\n- [#2434](https://github.com/marko-js/marko/pull/2434) [`6a235a8`](https://github.com/marko-js/marko/commit/6a235a88813cd45a8704060e4fac3ed82c2f3437) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve registry id normalization.\n\n## 5.39.5\n\n### Patch Changes\n\n- [#2426](https://github.com/marko-js/marko/pull/2426) [`2142dfd`](https://github.com/marko-js/marko/commit/2142dfd05d6b6ebc5f55883ca13a15847cdb07fa) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Use statement parsing for script tag to improve sourcemap accuracy.\n\n- [#2426](https://github.com/marko-js/marko/pull/2426) [`2142dfd`](https://github.com/marko-js/marko/commit/2142dfd05d6b6ebc5f55883ca13a15847cdb07fa) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where negative sourcemap offets leaning to the previous line were outputting incorrect values.\n\n## 5.39.4\n\n### Patch Changes\n\n- [`e60bd4f`](https://github.com/marko-js/marko/commit/e60bd4fd25ccee475dad49195fca64024a6164bf) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix incorrect filepath for marko babel transform.\n\n## 5.39.3\n\n### Patch Changes\n\n- [#2420](https://github.com/marko-js/marko/pull/2420) [`4a980fe`](https://github.com/marko-js/marko/commit/4a980fe444299f095f0f423767d5340e15c33682) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix publish alias issue.\n\n## 5.39.2\n\n### Patch Changes\n\n- [#2418](https://github.com/marko-js/marko/pull/2418) [`00e7392`](https://github.com/marko-js/marko/commit/00e7392361a17f49345400d53644bcee13e9b375) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue when parsing embedded script code with negative offset locations.\n\n## 5.39.1\n\n### Patch Changes\n\n- [#2416](https://github.com/marko-js/marko/pull/2416) [`619c87f`](https://github.com/marko-js/marko/commit/619c87faeebc31f6885bbb868fc89bab8a90ebea) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix package json repository config.\n\n## 5.39.0\n\n### Minor Changes\n\n- [#2408](https://github.com/marko-js/marko/pull/2408) [`2be37f7`](https://github.com/marko-js/marko/commit/2be37f72d3030621e2f85b6615731a5af24e0211) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Merge translator packages into their respective runtime packages.\n\n## 5.38.5\n\n### Patch Changes\n\n- [#2404](https://github.com/marko-js/marko/pull/2404) [`fbc0cef`](https://github.com/marko-js/marko/commit/fbc0cefb860cd91142231df04c05b7e4c0d1b1ee) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrade all dependencies. Fix support for latest babel version.\n\n- Updated dependencies [[`fbc0cef`](https://github.com/marko-js/marko/commit/fbc0cefb860cd91142231df04c05b7e4c0d1b1ee)]:\n  - @marko/babel-utils@6.6.3\n\n## 5.38.4\n\n### Patch Changes\n\n- [#2401](https://github.com/marko-js/marko/pull/2401) [`46f8d7c`](https://github.com/marko-js/marko/commit/46f8d7cfba231d1ab724fec83f07d1192d5d4d7f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add support for tags API script tag.\n\n- Updated dependencies [[`032afa1`](https://github.com/marko-js/marko/commit/032afa125b19969346639ac99ae9740521d0c3a2)]:\n  - @marko/babel-utils@6.6.2\n\n## 5.38.3\n\n### Patch Changes\n\n- [#2395](https://github.com/marko-js/marko/pull/2395) [`00cc3fb`](https://github.com/marko-js/marko/commit/00cc3fbe934d96a644175cc86cd72221131a884d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where lasso manifest file paths were not being provided correctly for lasso-marko.\n\n## 5.38.2\n\n### Patch Changes\n\n- [#2387](https://github.com/marko-js/marko/pull/2387) [`8e67da0`](https://github.com/marko-js/marko/commit/8e67da0f725ad5074a1bf933cb75ca569d21f2d7) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with an attribute tag containing only a spread.\n\n## 5.38.1\n\n### Patch Changes\n\n- [#2383](https://github.com/marko-js/marko/pull/2383) [`133b562`](https://github.com/marko-js/marko/commit/133b562c19081402330e4054eabc49a4ce635274) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Partially revert #2380 which was causing non idempotent builds.\n\n- Updated dependencies [[`133b562`](https://github.com/marko-js/marko/commit/133b562c19081402330e4054eabc49a4ce635274)]:\n  - @marko/babel-utils@6.6.1\n\n## 5.38.0\n\n### Minor Changes\n\n- [#2380](https://github.com/marko-js/marko/pull/2380) [`c5d2b48`](https://github.com/marko-js/marko/commit/c5d2b4871e9dab7037a624681d0161b72fdc799d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Replace `optimizeKnownTemplates` with a better an simpler `optimizeRegistryId` api.\n\n### Patch Changes\n\n- Updated dependencies [[`c5d2b48`](https://github.com/marko-js/marko/commit/c5d2b4871e9dab7037a624681d0161b72fdc799d)]:\n  - @marko/babel-utils@6.6.0\n\n## 5.37.26\n\n### Patch Changes\n\n- [#2368](https://github.com/marko-js/marko/pull/2368) [`bb44af0`](https://github.com/marko-js/marko/commit/bb44af04b1ad29d14200ff5cff26b27a39ce446e) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with \"package: \" deps (used for lasso) not being hoisted when building the hydrate output.\n\n## 5.37.25\n\n### Patch Changes\n\n- [#2367](https://github.com/marko-js/marko/pull/2367) [`c8e943d`](https://github.com/marko-js/marko/commit/c8e943d30ea621356b14ce5a2bf8c040f9d41f82) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ignore errors from child template analysis (assume child will be compiled after imported anyway).\n\n- [#2365](https://github.com/marko-js/marko/pull/2365) [`894d0d0`](https://github.com/marko-js/marko/commit/894d0d05daddee107640f83bcd8a11f46b4e359b) Thanks [@rturnq](https://github.com/rturnq)! - Expose globalConfig and fix config default export\n\n- Updated dependencies [[`c8e943d`](https://github.com/marko-js/marko/commit/c8e943d30ea621356b14ce5a2bf8c040f9d41f82)]:\n  - @marko/babel-utils@6.5.13\n\n## 5.37.24\n\n### Patch Changes\n\n- [#2358](https://github.com/marko-js/marko/pull/2358) [`76951d8`](https://github.com/marko-js/marko/commit/76951d887d02e6f0dd3f0fe1345721d4a94a0069) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Always use MarkoTagBody AST nodes for control flow (even with attribute tags). This fixes a regression with the @marko/tags-api-preview and is more accurate to what is actually happening, especially from a variable scoping perspective.\n\n- Updated dependencies [[`76951d8`](https://github.com/marko-js/marko/commit/76951d887d02e6f0dd3f0fe1345721d4a94a0069)]:\n  - @marko/babel-utils@6.5.12\n\n## 5.37.23\n\n### Patch Changes\n\n- [#2346](https://github.com/marko-js/marko/pull/2346) [`8ec88ff`](https://github.com/marko-js/marko/commit/8ec88fff87ef40ce19aba8992e075a839a61683e) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Switch back to using babels startIndex api since the regression has been fixed.\n\n- [#2344](https://github.com/marko-js/marko/pull/2344) [`bafeac1`](https://github.com/marko-js/marko/commit/bafeac1db6acc73e5c38ade2a078485df28670b8) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Optimize circular reference child template analysis.\n\n- Updated dependencies [[`8ec88ff`](https://github.com/marko-js/marko/commit/8ec88fff87ef40ce19aba8992e075a839a61683e), [`bafeac1`](https://github.com/marko-js/marko/commit/bafeac1db6acc73e5c38ade2a078485df28670b8)]:\n  - @marko/babel-utils@6.5.10\n\n## 5.37.22\n\n### Patch Changes\n\n- [#2342](https://github.com/marko-js/marko/pull/2342) [`8e07673`](https://github.com/marko-js/marko/commit/8e07673ca07cc83d9910c68ff8359264015c28d1) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Make attribute tags a property on the MarkoTag AST and refactor how attribute tags are translated.\n\n- Updated dependencies [[`8e07673`](https://github.com/marko-js/marko/commit/8e07673ca07cc83d9910c68ff8359264015c28d1)]:\n  - @marko/babel-utils@6.5.9\n\n## 5.37.21\n\n### Patch Changes\n\n- [#2338](https://github.com/marko-js/marko/pull/2338) [`033adb9`](https://github.com/marko-js/marko/commit/033adb92de3e40f24614e0de9d438f6390843a84) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure that errors discovered while loading optional module level taglibs are forwarded through the onError api.\n\n## 5.37.20\n\n### Patch Changes\n\n- [#2334](https://github.com/marko-js/marko/pull/2334) [`212fbd0`](https://github.com/marko-js/marko/commit/212fbd063d046d865bb3e8f996db91060b6651b2) Thanks [@LuLaValva](https://github.com/LuLaValva)! - TypeScript dependency fix\n\n- [#2337](https://github.com/marko-js/marko/pull/2337) [`ea95de1`](https://github.com/marko-js/marko/commit/ea95de1deaaa03bf2bc57b2518954084dbc1442f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid babel `startColumn` api until https://github.com/babel/babel/pull/16936 is merged.\n\n- Updated dependencies [[`ea95de1`](https://github.com/marko-js/marko/commit/ea95de1deaaa03bf2bc57b2518954084dbc1442f)]:\n  - @marko/babel-utils@6.5.8\n\n## 5.37.19\n\n### Patch Changes\n\n- [#2324](https://github.com/marko-js/marko/pull/2324) [`4776e33`](https://github.com/marko-js/marko/commit/4776e334ed8f4f70559042d28007dfa447942693) Thanks [@rturnq](https://github.com/rturnq)! - Allow child template analysis on manually imported tags in translator-default and optimize direct reference of imported tag\n\n## 5.37.18\n\n### Patch Changes\n\n- [#2322](https://github.com/marko-js/marko/pull/2322) [`420405d`](https://github.com/marko-js/marko/commit/420405db952fcedafed0cb48d86620ca53bb2f1d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Remove the default cache auto clearing behavior.\n  Previously the default compiler \"cache\" was cleared every setImmediate. This was to support server hot reloading in apps using `Lasso` (and `browser-refresh`). Since we brought back support for `browser-refresh` in the Marko package we now clear this cache when browser-refresh triggers a change making the default cache clearing redundant.\n\n## 5.37.17\n\n### Patch Changes\n\n- [#2320](https://github.com/marko-js/marko/pull/2320) [`13b3270`](https://github.com/marko-js/marko/commit/13b32707ed673dd3dabe6dfdb90fcf5a19448776) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Optimize how style and script tags are diffed (similar to textarea) where the text nodes are concatenated and diffed as a whole.\n\n- [#2320](https://github.com/marko-js/marko/pull/2320) [`a9da4d6`](https://github.com/marko-js/marko/commit/a9da4d64cf8116867ea80150f10c4dc8a45a0c98) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix regression from #2138 which caused nullable native dynamic tags with body contents to not output the end tag. 😱\n\n## 5.37.16\n\n### Patch Changes\n\n- [#2318](https://github.com/marko-js/marko/pull/2318) [`1dbb189`](https://github.com/marko-js/marko/commit/1dbb189976ef56a28252fbf7da95ac18a3eadaf6) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where a null able native tag with no body content (eg `<${show && \"div}/>`) was incorrectly outputting a fragment for the body content (which did not exist).\n\n## 5.37.15\n\n### Patch Changes\n\n- [#2310](https://github.com/marko-js/marko/pull/2310) [`f06d4b0`](https://github.com/marko-js/marko/commit/f06d4b0559c3fbb3af67773c70b3aab25278b0ca) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid babel compiler assert api to fix a regression.\n\n- Updated dependencies [[`f06d4b0`](https://github.com/marko-js/marko/commit/f06d4b0559c3fbb3af67773c70b3aab25278b0ca)]:\n  - @marko/babel-utils@6.5.7\n\n## 5.37.14\n\n### Patch Changes\n\n- [#2303](https://github.com/marko-js/marko/pull/2303) [`e6d117b`](https://github.com/marko-js/marko/commit/e6d117b67a3099ab0a29248d189de7b37b9d3d8a) Thanks [@rturnq](https://github.com/rturnq)! - Add frame property to compile errors\n\n## 5.37.13\n\n### Patch Changes\n\n- [#2300](https://github.com/marko-js/marko/pull/2300) [`d45f91a`](https://github.com/marko-js/marko/commit/d45f91a5e0fff686cac7b7daf29deb60a6a1ffd7) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where legacy compat `w-bind` directives were being incorrectly optimized as static vdom.\n\n## 5.37.12\n\n### Patch Changes\n\n- [#2298](https://github.com/marko-js/marko/pull/2298) [`c01d83f`](https://github.com/marko-js/marko/commit/c01d83fb2617443a7dc03eb3b43a2f7752754a45) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with the \"ignoreUnrecognizedTags\" compiler option being used with dynamic tags that have attribute tags.\n\n- [#2298](https://github.com/marko-js/marko/pull/2298) [`cfff311`](https://github.com/marko-js/marko/commit/cfff3111148a43f58c7d2b78f679c09c04d429b5) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Removes the debug mode dom manipulation warning since chrome dropped the api's that allowed us to get useful stack traces.\n\n## 5.37.11\n\n### Patch Changes\n\n- [#2296](https://github.com/marko-js/marko/pull/2296) [`81c5c0e`](https://github.com/marko-js/marko/commit/81c5c0e0436dc694f09c722f2103bfdc9cb3844f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issues related to recent babel changes.\n\n- [#2296](https://github.com/marko-js/marko/pull/2296) [`81c5c0e`](https://github.com/marko-js/marko/commit/81c5c0e0436dc694f09c722f2103bfdc9cb3844f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve support for @marko/compat.\n\n- Updated dependencies [[`81c5c0e`](https://github.com/marko-js/marko/commit/81c5c0e0436dc694f09c722f2103bfdc9cb3844f), [`81c5c0e`](https://github.com/marko-js/marko/commit/81c5c0e0436dc694f09c722f2103bfdc9cb3844f)]:\n  - @marko/babel-utils@6.5.6\n\n## 5.37.10\n\n### Patch Changes\n\n- [#2294](https://github.com/marko-js/marko/pull/2294) [`c600610`](https://github.com/marko-js/marko/commit/c6006102479d8d10ffd1f18d13b8c607fbabd177) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with comment nodes in unescaped html by bringing back virtual comment nodes.\n\n## 5.37.9\n\n### Patch Changes\n\n- [#2286](https://github.com/marko-js/marko/pull/2286) [`55338b5`](https://github.com/marko-js/marko/commit/55338b52969817b63c90ea84f30246ad0b94b6f9) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Optimize template literal printing in html output.\n\n## 5.37.8\n\n### Patch Changes\n\n- [#2284](https://github.com/marko-js/marko/pull/2284) [`d0723d3`](https://github.com/marko-js/marko/commit/d0723d398338d86b48524e230fe24d93d62ee19a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix off by one issue for static statement sourcemaps (eg import) and for concise mode tags.\n\n- Updated dependencies [[`d0723d3`](https://github.com/marko-js/marko/commit/d0723d398338d86b48524e230fe24d93d62ee19a)]:\n  - @marko/babel-utils@6.5.5\n\n## 5.37.7\n\n### Patch Changes\n\n- [#2282](https://github.com/marko-js/marko/pull/2282) [`32e2eff`](https://github.com/marko-js/marko/commit/32e2eff5c3ecdcb36f7b6ed98ea2a1e705538a29) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve handling of sourcemaps for inline style blocks and tags.\n\n- Updated dependencies [[`32e2eff`](https://github.com/marko-js/marko/commit/32e2eff5c3ecdcb36f7b6ed98ea2a1e705538a29)]:\n  - @marko/babel-utils@6.5.4\n\n## 5.37.6\n\n### Patch Changes\n\n- [#2277](https://github.com/marko-js/marko/pull/2277) [`ce88d81`](https://github.com/marko-js/marko/commit/ce88d8194f98b4010032634f5427021810f6acdb) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix \"off by one\" issue with source location information when the index was at the start of the line.\n\n- Updated dependencies [[`ce88d81`](https://github.com/marko-js/marko/commit/ce88d8194f98b4010032634f5427021810f6acdb)]:\n  - @marko/babel-utils@6.5.3\n\n## 5.37.5\n\n### Patch Changes\n\n- [#2274](https://github.com/marko-js/marko/pull/2274) [`5cea7d6`](https://github.com/marko-js/marko/commit/5cea7d65ead9b58d7d7d244078d279d561fd3ea7) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Optimize javascript parsing helpers to pass in start line / column information to babel rather than faking it with whitespace.\n\n  For large templates this can have a significant impact on parsing performance.\n\n- Updated dependencies [[`5cea7d6`](https://github.com/marko-js/marko/commit/5cea7d65ead9b58d7d7d244078d279d561fd3ea7)]:\n  - @marko/babel-utils@6.5.2\n\n## 5.37.4\n\n### Patch Changes\n\n- [#2252](https://github.com/marko-js/marko/pull/2252) [`bfe85d1`](https://github.com/marko-js/marko/commit/bfe85d18772f244abfced05d7cde5698b7e077ec) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - When loading a taglib, always process exports field if inside node_modules folder.\n\n- [#2252](https://github.com/marko-js/marko/pull/2252) [`339c28d`](https://github.com/marko-js/marko/commit/339c28dd590dc15b6a1011f38411809060f1a4ba) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Allow diagnostic fixes in parse stage.\n\n- Updated dependencies [[`339c28d`](https://github.com/marko-js/marko/commit/339c28dd590dc15b6a1011f38411809060f1a4ba)]:\n  - @marko/babel-utils@6.5.1\n\n## 5.37.3\n\n### Patch Changes\n\n- [#2248](https://github.com/marko-js/marko/pull/2248) [`0ced6e1`](https://github.com/marko-js/marko/commit/0ced6e17c24808586bd24f025d77cfb3c391ea2e) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix typo in upgrade docs and adding missing `browser-refresh` module.\n\n## 5.37.2\n\n### Patch Changes\n\n- [#2246](https://github.com/marko-js/marko/pull/2246) [`a699cd9`](https://github.com/marko-js/marko/commit/a699cd9434996b8da0a14acba39fd1db03c0329a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Misc backward compat improvements:\n  - Expose `marko/browser-refresh` as a noop\n  - Allow translators to specify \"optional\" taglibs to load if they're installed (used for automatically loading compat taglibs)\n  - `marko/node-require` legacy require hook now disables user babel transforms by default\n  - Allow `<macro>` tag instances to use tag arguments syntax\n\n## 5.37.1\n\n### Patch Changes\n\n- [#2244](https://github.com/marko-js/marko/pull/2244) [`934dc13`](https://github.com/marko-js/marko/commit/934dc13972b14b6cc9511ae19db70f5b74a366b5) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Allow mixing comments with attr tags\n\n## 5.37.0\n\n### Minor Changes\n\n- [#2238](https://github.com/marko-js/marko/pull/2238) [`a741f36`](https://github.com/marko-js/marko/commit/a741f36e60583a2403a912627765c3ec2aa824e5) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add new optimizedRegistryIds compiler option\n\n### Patch Changes\n\n- Updated dependencies [[`a741f36`](https://github.com/marko-js/marko/commit/a741f36e60583a2403a912627765c3ec2aa824e5)]:\n  - @marko/babel-utils@6.5.0\n\n## 5.36.2\n\n### Patch Changes\n\n- [#2232](https://github.com/marko-js/marko/pull/2232) [`a67e1c4`](https://github.com/marko-js/marko/commit/a67e1c42b04ede5d9b9ef3cb2f8e21bedd2f004f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where the `ignoreUnrecognizedTags` compiler option was incorrectly escaping attribute tags for recognized tags that did not explicitly define their attribute tags in a marko.json\n\n## 5.36.1\n\n### Patch Changes\n\n- [#2217](https://github.com/marko-js/marko/pull/2217) [`4fc4614`](https://github.com/marko-js/marko/commit/4fc46149ae046dd0fac0e7cc7e904b188f616f7f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where element keys could be different because of hoisted const elements not always being keyed. This could cause a hydration issue since the server and client compilations would not agree on the keys.\n\n## 5.36.0\n\n### Minor Changes\n\n- [#2214](https://github.com/marko-js/marko/pull/2214) [`2d0a566`](https://github.com/marko-js/marko/commit/2d0a566a569e0d8caab2fd9abc960e6810e29b56) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Using event handlers now causes a template to become an implicit component or split component (depending on if a string event handler is used).\n\n## 5.35.14\n\n### Patch Changes\n\n- [#2212](https://github.com/marko-js/marko/pull/2212) [`a1a91a4`](https://github.com/marko-js/marko/commit/a1a91a474853a4b6dc31217d374ee0e7e1179cec) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issues related to hydrating sections under a native tag with the `no-update` directive.\n\n## 5.35.13\n\n### Patch Changes\n\n- [#2210](https://github.com/marko-js/marko/pull/2210) [`7d1bbdb`](https://github.com/marko-js/marko/commit/7d1bbdb9af63164448697ceb20490ee0776bc70f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - I completely messed up the release of https://github.com/marko-js/marko/pull/2205, this fixes that.\n\n## 5.35.12\n\n### Patch Changes\n\n- [`c8fe951`](https://github.com/marko-js/marko/commit/c8fe951813bf6c7d11e581faf9e43522ae76ae98) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Bump compiler and translator to pull in Marko runtime changes.\n\n## 5.35.11\n\n### Patch Changes\n\n- [#2190](https://github.com/marko-js/marko/pull/2190) [`638ca07`](https://github.com/marko-js/marko/commit/638ca07db382345c26f90247115eef13394e9905) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Update dependencies\n\n- Updated dependencies [[`638ca07`](https://github.com/marko-js/marko/commit/638ca07db382345c26f90247115eef13394e9905)]:\n  - @marko/babel-utils@6.4.3\n\n## 5.35.10\n\n### Patch Changes\n\n- [#2187](https://github.com/marko-js/marko/pull/2187) [`fe344b0`](https://github.com/marko-js/marko/commit/fe344b00041677f40ce49d03c0fb283322a1c898) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix some tags/class interop issues.\n\n## 5.35.9\n\n### Patch Changes\n\n- [#2182](https://github.com/marko-js/marko/pull/2182) [`1fa3b05`](https://github.com/marko-js/marko/commit/1fa3b056006d5d0e3ac221b5b4a18b78de5add21) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Support tracking the \"input\" using babels scope analysis.\n\n## 5.35.8\n\n### Patch Changes\n\n- [#2180](https://github.com/marko-js/marko/pull/2180) [`a8bfb50`](https://github.com/marko-js/marko/commit/a8bfb50d7617d338c8e6b11c3f18cbb4829a5cba) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where vdom optimizer was including elements with user key attributes.\n\n## 5.35.7\n\n### Patch Changes\n\n- [#2173](https://github.com/marko-js/marko/pull/2173) [`614f432`](https://github.com/marko-js/marko/commit/614f432bfeab93eb35c23d6e378e914b27540f7f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix regression where hydrate dependencies had the incorrect resolved path if they were in node_modules.\n\n## 5.35.6\n\n### Patch Changes\n\n- [`409ef4e`](https://github.com/marko-js/marko/commit/409ef4e76d680b6e4202658fdf9567c663898d8b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix regression where hydrate entry files had incorrect relative paths.\n\n## 5.35.5\n\n### Patch Changes\n\n- [#2164](https://github.com/marko-js/marko/pull/2164) [`08823b9`](https://github.com/marko-js/marko/commit/08823b916b0aca172edeaba86b632a4cf5462a8a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with interop translator not outputting correct hydrate entry code.\n\n- Updated dependencies [[`08823b9`](https://github.com/marko-js/marko/commit/08823b916b0aca172edeaba86b632a4cf5462a8a)]:\n  - @marko/babel-utils@6.4.2\n\n## 5.35.4\n\n### Patch Changes\n\n- [#2150](https://github.com/marko-js/marko/pull/2150) [`7ef2b89`](https://github.com/marko-js/marko/commit/7ef2b8956982455953f3c1180b2f9094ca489e52) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Expose all files from compiler exports.\n\n## 5.35.3\n\n### Patch Changes\n\n- [#2148](https://github.com/marko-js/marko/pull/2148) [`b095755`](https://github.com/marko-js/marko/commit/b09575529493039ade02d9c35bcf21d5d4e6ef1d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with interop translator loading init-components tag.\n\n## 5.35.2\n\n### Patch Changes\n\n- [#2140](https://github.com/marko-js/marko/pull/2140) [`4a1db86`](https://github.com/marko-js/marko/commit/4a1db8683d6c67fcff1bdbdaa76ab907c8b09170) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Some packages rely on a `@marko/compiler/package` entry point existing, adds back that export.\n\n## 5.35.1\n\n### Patch Changes\n\n- [#2138](https://github.com/marko-js/marko/pull/2138) [`105c26b`](https://github.com/marko-js/marko/commit/105c26bd4f7f37bd6073e4795b01b83d31ecda06) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with package json src/dist override script.\n\n- Updated dependencies [[`105c26b`](https://github.com/marko-js/marko/commit/105c26bd4f7f37bd6073e4795b01b83d31ecda06)]:\n  - @marko/babel-utils@6.4.1\n\n## 5.35.0\n\n### Minor Changes\n\n- [#2004](https://github.com/marko-js/marko/pull/2004) [`2704819`](https://github.com/marko-js/marko/commit/27048199d6a0ee48ed8118e9f7017a94c7dc4f3d) Thanks [@mlrawlings](https://github.com/mlrawlings)! - Release alpha of tags api translator/runtime.\n\n- [#2004](https://github.com/marko-js/marko/pull/2004) [`2704819`](https://github.com/marko-js/marko/commit/27048199d6a0ee48ed8118e9f7017a94c7dc4f3d) Thanks [@mlrawlings](https://github.com/mlrawlings)! - Add `mount` api for client rendered components and expose `Symbol.asyncIterator` for server rendered components.\n\n### Patch Changes\n\n- Updated dependencies [[`2704819`](https://github.com/marko-js/marko/commit/27048199d6a0ee48ed8118e9f7017a94c7dc4f3d), [`2704819`](https://github.com/marko-js/marko/commit/27048199d6a0ee48ed8118e9f7017a94c7dc4f3d)]:\n  - @marko/babel-utils@6.4.0\n\n## 5.34.7\n\n### Patch Changes\n\n- [#2115](https://github.com/marko-js/marko/pull/2115) [`a55fb06`](https://github.com/marko-js/marko/commit/a55fb06ec638eb830eb72c71cb766fc05b6ea8cb) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve nested attribute tag handling with scriptlets.\n\n## 5.34.6\n\n### Patch Changes\n\n- [#2085](https://github.com/marko-js/marko/pull/2085) [`d82b21e`](https://github.com/marko-js/marko/commit/d82b21e8f505c5006d3781cf9056743dd9972fe1) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve compile error output.\n\n## 5.34.5\n\n### Patch Changes\n\n- [#2079](https://github.com/marko-js/marko/pull/2079) [`2976dfa`](https://github.com/marko-js/marko/commit/2976dfac56c592dfd80ea79c6ea0e1389346f44c) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where additional exports were being removed when stripping typescript types.\n\n## 5.34.4\n\n### Patch Changes\n\n- [#2076](https://github.com/marko-js/marko/pull/2076) [`69b3ff5`](https://github.com/marko-js/marko/commit/69b3ff57c829418946e05c13b644a5560f589086) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrade all package deps to latest\n\n- Updated dependencies [[`69b3ff5`](https://github.com/marko-js/marko/commit/69b3ff57c829418946e05c13b644a5560f589086)]:\n  - @marko/babel-utils@6.3.5\n\n## 5.34.3\n\n### Patch Changes\n\n- [#2074](https://github.com/marko-js/marko/pull/2074) [`bf23c566fac02f4e2991be357a95483663493b3f`](https://github.com/marko-js/marko/commit/bf23c566fac02f4e2991be357a95483663493b3f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrade package lock and built types.\n\n## 5.34.2\n\n### Patch Changes\n\n- [#2069](https://github.com/marko-js/marko/pull/2069) [`977d69078`](https://github.com/marko-js/marko/commit/977d690784f1d97acb3494bb822fa852c1380685) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with printing variable declarations with multiple variables.\n\n## 5.34.1\n\n### Patch Changes\n\n- [#2064](https://github.com/marko-js/marko/pull/2064) [`5e294103f`](https://github.com/marko-js/marko/commit/5e294103f78642b8a44887a1569ffd0eabcf6821) Thanks [@LuLaValva](https://github.com/LuLaValva)! - fix sourcemaps\n\n## 5.34.0\n\n### Minor Changes\n\n- [#2062](https://github.com/marko-js/marko/pull/2062) [`436ace040`](https://github.com/marko-js/marko/commit/436ace040b73d11908911d60c10845b6e99e8eca) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Add \"exports\" to marko.json\n\n## 5.33.8\n\n### Patch Changes\n\n- [#2060](https://github.com/marko-js/marko/pull/2060) [`648a94928`](https://github.com/marko-js/marko/commit/648a94928f662b04634a61395d5d48a956a8ff36) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Expose meta data about which child Marko templates were analyzed for a given compilation.\n\n- [#2059](https://github.com/marko-js/marko/pull/2059) [`aed88284b`](https://github.com/marko-js/marko/commit/aed88284b8b3c68965f70b6bdf9412c7100c5df5) Thanks [@LuLaValva](https://github.com/LuLaValva)! - fix AST types\n\n- Updated dependencies [[`648a94928`](https://github.com/marko-js/marko/commit/648a94928f662b04634a61395d5d48a956a8ff36)]:\n  - @marko/babel-utils@6.3.4\n\n## 5.33.7\n\n### Patch Changes\n\n- [#2056](https://github.com/marko-js/marko/pull/2056) [`84f443d60`](https://github.com/marko-js/marko/commit/84f443d60539cc1b3382c6b16da4061070f97aca) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue when the Marko hot-reload runtime is loaded in native esm\n\n## 5.33.6\n\n### Patch Changes\n\n- [#2054](https://github.com/marko-js/marko/pull/2054) [`1c5eccadf`](https://github.com/marko-js/marko/commit/1c5eccadf8d968552dbe8756905009107d783718) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix regression with @marko/babel-utils not exposing new parse helpers.\n\n- Updated dependencies [[`1c5eccadf`](https://github.com/marko-js/marko/commit/1c5eccadf8d968552dbe8756905009107d783718)]:\n  - @marko/babel-utils@6.3.3\n\n## 5.33.5\n\n### Patch Changes\n\n- [#2051](https://github.com/marko-js/marko/pull/2051) [`5354d4411`](https://github.com/marko-js/marko/commit/5354d44112c56fcbbd7f44dd3bf91be1e5a7747c) Thanks [@LuLaValva](https://github.com/LuLaValva)! - add ts to ast\n\n- Updated dependencies [[`5354d4411`](https://github.com/marko-js/marko/commit/5354d44112c56fcbbd7f44dd3bf91be1e5a7747c)]:\n  - @marko/babel-utils@6.3.2\n\n## 5.33.4\n\n### Patch Changes\n\n- [#2049](https://github.com/marko-js/marko/pull/2049) [`1554b1e1e`](https://github.com/marko-js/marko/commit/1554b1e1e53a75980af0b238cc27bed5ddfa215a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Allow `template.marko` to act as `index.marko` for backword compat with v4/v3.\n\n## 5.33.3\n\n### Patch Changes\n\n- [#2042](https://github.com/marko-js/marko/pull/2042) [`447104632`](https://github.com/marko-js/marko/commit/44710463258999ad037febef10264e32f3291157) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - When compiling async, prefer using the async babel api for loading babel config files.\n\n## 5.33.2\n\n### Patch Changes\n\n- [#2038](https://github.com/marko-js/marko/pull/2038) [`71a227a5f`](https://github.com/marko-js/marko/commit/71a227a5ff8b16c0bb983e082f28280518f712ce) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where using the longhand nested attribute tag syntax in a marko.json with a `target-property` defined was not registering the alias as a known attribute, leading to compile errors.\n\n## 5.33.1\n\n### Patch Changes\n\n- [#2020](https://github.com/marko-js/marko/pull/2020) [`6a4e947b5`](https://github.com/marko-js/marko/commit/6a4e947b5ac9944e61d7871d314a6325a0522d1d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure .marko files are resolved for legacy renderer taglib configs.\n\n## 5.33.0\n\n### Minor Changes\n\n- [#2012](https://github.com/marko-js/marko/pull/2012) [`6ba268c84`](https://github.com/marko-js/marko/commit/6ba268c841631b3ed36964c8f532e543885ad4f5) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Support registering a taglib in the compiler by just passing in a module id.\n\n## 5.32.0\n\n### Minor Changes\n\n- [#2006](https://github.com/marko-js/marko/pull/2006) [`b2e70bc45`](https://github.com/marko-js/marko/commit/b2e70bc45006a8cccfa61ac99bbca40a71d05fd1) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add compute node helper to replace babels `evaluate` helper. This helper is less aggressive and doesn't suffer from the false positives that popped up with babels version.\n\n### Patch Changes\n\n- Updated dependencies [[`b2e70bc45`](https://github.com/marko-js/marko/commit/b2e70bc45006a8cccfa61ac99bbca40a71d05fd1)]:\n  - @marko/babel-utils@6.3.0\n\n## 5.31.2\n\n### Patch Changes\n\n- [#2001](https://github.com/marko-js/marko/pull/2001) [`037a6ce67`](https://github.com/marko-js/marko/commit/037a6ce67088d63dcdc67a8b5bd02c10cf38b64e) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve some typings for the compiler apis.\n\n- Updated dependencies [[`037a6ce67`](https://github.com/marko-js/marko/commit/037a6ce67088d63dcdc67a8b5bd02c10cf38b64e)]:\n  - @marko/babel-utils@6.2.1\n\n## 5.31.1\n\n### Patch Changes\n\n- [#1997](https://github.com/marko-js/marko/pull/1997) [`2afa3f6e6`](https://github.com/marko-js/marko/commit/2afa3f6e61ca262debde88bc11400a6ba97a2f19) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure source maps are loaded in dev mode when using the @marko/register hook.\n\n## 5.31.0\n\n### Minor Changes\n\n- [#1996](https://github.com/marko-js/marko/pull/1996) [`d93037843`](https://github.com/marko-js/marko/commit/d930378434279451b0113ae6a268304063b037f4) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Move <macro> tag validation to the translate phase and expose new utilities for working with macros in @marko/babel-utils. This allows for migration/transformer/etc compiler hooks to better work with <macro>'s.\n\n### Patch Changes\n\n- Updated dependencies [[`d93037843`](https://github.com/marko-js/marko/commit/d930378434279451b0113ae6a268304063b037f4)]:\n  - @marko/babel-utils@6.2.0\n\n## 5.30.3\n\n### Patch Changes\n\n- [#1992](https://github.com/marko-js/marko/pull/1992) [`1bc993012`](https://github.com/marko-js/marko/commit/1bc993012375315a6cbda3eed75291abf821de6b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix regression which would happen if tools tried to \"delete\" the `loc` property on error instances returned from Marko. This property is now configurable and can be deleted again.\n\n## 5.30.2\n\n### Patch Changes\n\n- [#1990](https://github.com/marko-js/marko/pull/1990) [`a54a23794`](https://github.com/marko-js/marko/commit/a54a2379487fd20e6598d5fdfc7c7dbe0f644e8b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Change the stack frame for error messages generated by the compiler to work better with how node prints error messages.\n\n## 5.30.1\n\n### Patch Changes\n\n- [#1987](https://github.com/marko-js/marko/pull/1987) [`8bf5cb1f0`](https://github.com/marko-js/marko/commit/8bf5cb1f097769c835a452ff4bbea67a6c741810) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - When duplicate taglib entries are found and merged, nullish values are now ignored. This means if you specify a property in a taglib it will not be unset by another (merged) taglib.\n\n- [#1986](https://github.com/marko-js/marko/pull/1986) [`1b29b859f`](https://github.com/marko-js/marko/commit/1b29b859fb0876d9a8d0d7bba44d08f77f1706bb) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where `module-code` entries were not properly checking the expected module output (causing them to always output esm). This was previously fine due to the cjs conversion plugin running for these, however a recent change caused that plugin to no longer run for these files since (which should have been unnecessary, except for that they had the incorrect check).\n\n## 5.30.0\n\n### Minor Changes\n\n- [#1984](https://github.com/marko-js/marko/pull/1984) [`c6e2d0655`](https://github.com/marko-js/marko/commit/c6e2d06554166daa8eefe34121323413cf2d9cb1) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Allow migrator as a tag entry file.\n\n### Patch Changes\n\n- Updated dependencies [[`c6e2d0655`](https://github.com/marko-js/marko/commit/c6e2d06554166daa8eefe34121323413cf2d9cb1)]:\n  - @marko/babel-utils@6.1.0\n\n## 5.29.0\n\n### Minor Changes\n\n- [#1980](https://github.com/marko-js/marko/pull/1980) [`9d3b34eef`](https://github.com/marko-js/marko/commit/9d3b34eefa2d0d9f9b27b9635950360b62be2f1f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Allow parse errors to be recovered from by migrations. This adds a new ast node type of MarkoParseError.\n  MarkoParseError nodes can be removed during the migration stage to handle legacy syntaxes. Any MarkoParseError\n  left in the AST at the end of the migration phase will throw an error similar to what it would have previously\n  thrown synchronously.\n\n  This also means that all parse errors can be surfaced as an aggregate error instead of bailing on the first\n  parse error. When the compiler is ran with `errorRecovery: true` these errors become diagnostics instead of\n  being thrown.\n\n### Patch Changes\n\n- Updated dependencies [[`9d3b34eef`](https://github.com/marko-js/marko/commit/9d3b34eefa2d0d9f9b27b9635950360b62be2f1f)]:\n  - @marko/babel-utils@6.0.0\n\n## 5.28.5\n\n### Patch Changes\n\n- [#1978](https://github.com/marko-js/marko/pull/1978) [`931a5d24b`](https://github.com/marko-js/marko/commit/931a5d24bbf77d7b29922f34d66d8ca7c42cea07) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoids loading babel config when compiler output is set to source or migrate.\n\n## 5.28.4\n\n### Patch Changes\n\n- [#1976](https://github.com/marko-js/marko/pull/1976) [`7555a46a1`](https://github.com/marko-js/marko/commit/7555a46a19cee973b279fd582ffd51671490dc40) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where aggregate errors from the compiler were not exposing error objects (was exposing the raw diagnostics).\n\n- [#1976](https://github.com/marko-js/marko/pull/1976) [`7555a46a1`](https://github.com/marko-js/marko/commit/7555a46a19cee973b279fd582ffd51671490dc40) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Include locations and original message for errors thrown from the compiler.\n\n## 5.28.3\n\n### Patch Changes\n\n- [#1974](https://github.com/marko-js/marko/pull/1974) [`42f7b46e2`](https://github.com/marko-js/marko/commit/42f7b46e25168ef4998e9c3f6014f9b6e1234486) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Run migration fixes synchronously.\n\n- Updated dependencies [[`42f7b46e2`](https://github.com/marko-js/marko/commit/42f7b46e25168ef4998e9c3f6014f9b6e1234486)]:\n  - @marko/babel-utils@5.22.1\n\n## 5.28.2\n\n### Patch Changes\n\n- [#1972](https://github.com/marko-js/marko/pull/1972) [`897b8beba`](https://github.com/marko-js/marko/commit/897b8bebadbb08e0457fb959bd573cb2a5a4d593) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where error messages without a source location were losing their message\n\n## 5.28.1\n\n### Patch Changes\n\n- [#1970](https://github.com/marko-js/marko/pull/1970) [`ce5c40c95`](https://github.com/marko-js/marko/commit/ce5c40c9570c3410f62a2c9feb635ee7c7e54799) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue when outputting hydrate code with commonjs modules enabled.\n\n## 5.28.0\n\n### Minor Changes\n\n- [#1968](https://github.com/marko-js/marko/pull/1968) [`70922e68e`](https://github.com/marko-js/marko/commit/70922e68e07578a867fff846e9bb623d64298e14) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add support for additional diagnostics emitted from the compiler.\n\n### Patch Changes\n\n- Updated dependencies [[`70922e68e`](https://github.com/marko-js/marko/commit/70922e68e07578a867fff846e9bb623d64298e14)]:\n  - @marko/babel-utils@5.22.0\n\n## 5.27.10\n\n### Patch Changes\n\n- [#1957](https://github.com/marko-js/marko/pull/1957) [`820fa12f4`](https://github.com/marko-js/marko/commit/820fa12f40f33abc1811f148441ff834cfe4654b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix compiler config type definitions\n\n## 5.27.9\n\n### Patch Changes\n\n- [#1955](https://github.com/marko-js/marko/pull/1955) [`ca9bfa2a2`](https://github.com/marko-js/marko/commit/ca9bfa2a2b16cecdbb269a8116b3186166b07061) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix type definition for MarkoTagBody AST.\n\n## 5.27.8\n\n### Patch Changes\n\n- [#1949](https://github.com/marko-js/marko/pull/1949) [`7f6b65a4b`](https://github.com/marko-js/marko/commit/7f6b65a4b6d34dad6b4f6961be3b8766b7146e63) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Use @internal module to host browser/worker remapped files. Improves support for some tools that don't work well with nested package.json files.\n\n## 5.27.7\n\n### Patch Changes\n\n- [#1934](https://github.com/marko-js/marko/pull/1934) [`04d6fad6d`](https://github.com/marko-js/marko/commit/04d6fad6d599adc98d6f0ef00a5c44b4a4fc7485) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where types were not being stripped from the inline Marko component class.\n\n## 5.27.6\n\n### Patch Changes\n\n- [#1929](https://github.com/marko-js/marko/pull/1929) [`c7a197a5c`](https://github.com/marko-js/marko/commit/c7a197a5c2e49e4b365d185d6e24ab431a61abc9) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Adds strict typescript types for the native HTML tags.\n\n## 5.27.5\n\n### Patch Changes\n\n- [`712f68062`](https://github.com/marko-js/marko/commit/712f68062326b5fb71073b691d1761d4ac71bdc3) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Add types for Marko translator-default\n\n## 5.27.4\n\n### Patch Changes\n\n- [#1923](https://github.com/marko-js/marko/pull/1923) [`62afb3256`](https://github.com/marko-js/marko/commit/62afb3256a0c402e75b90f06af4e8cdc5c8112f3) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Remove class lifecycle types to avoid the need to `override` them.\n\n## 5.27.3\n\n### Patch Changes\n\n- [#1921](https://github.com/marko-js/marko/pull/1921) [`1fe71a502`](https://github.com/marko-js/marko/commit/1fe71a5020c5930c63e9c7ff226a3befca0e58a4) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid using `typeof window` and prefer `typeof document` checks for browser environment (improves future deno support).\n\n- [#1921](https://github.com/marko-js/marko/pull/1921) [`f0c697d7b`](https://github.com/marko-js/marko/commit/f0c697d7b5b0afcbe524f390db2b3c5fa54d5607) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoids using a package.json remap for the browser implementation of the \\_preserve internal tag (used to implement `no-update` directives). This fixes an issue where in vite the module could not be loaded properly.\n\n## 5.27.2\n\n### Patch Changes\n\n- [#1920](https://github.com/marko-js/marko/pull/1920) [`7d5dab41c`](https://github.com/marko-js/marko/commit/7d5dab41c33cacbdff376570df09f65eb228a6a9) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid adding `export {}` (from \"@babel/plugin-transform-typescript\") when outputing a template with the types stripped.\n\n- [#1918](https://github.com/marko-js/marko/pull/1918) [`cceab7d20`](https://github.com/marko-js/marko/commit/cceab7d2061c627d5f3ea296f0acba80f97ad494) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Reduce script parsing restrictions added by Babel.\n  This was causing Babel to error when parsing partial scripts.\n\n  ```marko\n  static const x = 1;\n  export { x };\n  ```\n\n  Before this change in the above code Babel would error when parsing `export { x }` saying `x` was not previously defined. This is because Marko parses these statements in isolation.\n\n- [#1920](https://github.com/marko-js/marko/pull/1920) [`7d5dab41c`](https://github.com/marko-js/marko/commit/7d5dab41c33cacbdff376570df09f65eb228a6a9) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid outputing a `declare`'d type on a `class`.\n\n## 5.27.1\n\n### Patch Changes\n\n- [#1916](https://github.com/marko-js/marko/pull/1916) [`ac1d5062a`](https://github.com/marko-js/marko/commit/ac1d5062a7be8bb359ba8d378d3c7b2ec6dc14f6) Thanks [@mlrawlings](https://github.com/mlrawlings)! - fix: modify/remove some inefficient regexes\n\n## 5.27.0\n\n### Minor Changes\n\n- [#1909](https://github.com/marko-js/marko/pull/1909) [`e8f1370cf`](https://github.com/marko-js/marko/commit/e8f1370cf668bb579e48fd05a60c086bed6bb466) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Allow repeated attribute tags without using a `marko.json` file. Attribute tag objects now also contain `Symbol.iterator` implementation to make the single case more easily forwarded to the `<for>` tag.\n\n### Patch Changes\n\n- [#1914](https://github.com/marko-js/marko/pull/1914) [`22228e804`](https://github.com/marko-js/marko/commit/22228e804c76d630c0fc333fa4750bb6e42c0814) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrades the included version of HTMLJS-Parser\n\n## 5.26.0\n\n### Minor Changes\n\n- [#1907](https://github.com/marko-js/marko/pull/1907) [`7211a6937`](https://github.com/marko-js/marko/commit/7211a6937b2044a14f2c2194269a697c76066b54) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Expose `$global` as a shorthand for `out.global` within the template scope.\n\n## 5.25.0\n\n### Minor Changes\n\n- [#1899](https://github.com/marko-js/marko/pull/1899) [`4fc38e800`](https://github.com/marko-js/marko/commit/4fc38e80010241da76d24a46c2cd838aa5cf309f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Expose the ability to intercept errors from the taglib builder.\n\n## 5.24.0\n\n### Minor Changes\n\n- [#1897](https://github.com/marko-js/marko/pull/1897) [`72cdc3e5b`](https://github.com/marko-js/marko/commit/72cdc3e5b6c72a0b5d4b4738eb420571fa0cafa4) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Expose a top level `@marko/compiler/config` entry point for loading the default compiler config.\n\n## 5.23.6\n\n### Patch Changes\n\n- [#1892](https://github.com/marko-js/marko/pull/1892) [`c55ae937c`](https://github.com/marko-js/marko/commit/c55ae937c4d756482d49a6b8797669cd39ca6288) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve types for the await tag and Marko.Template.\n\n## 5.23.5\n\n### Patch Changes\n\n- [#1888](https://github.com/marko-js/marko/pull/1888) [`d110b0b5f`](https://github.com/marko-js/marko/commit/d110b0b5f6607a911d15b2045d46b9aa6ecba2d2) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve type definitions.\n\n## 5.23.4\n\n### Patch Changes\n\n- [`23e36a04b`](https://github.com/marko-js/marko/commit/23e36a04b0c6f7d6b53307d7838f61a1e0f2ce29) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add missing type definition file to exposed types in package.json.\n\n- [`d920e833d`](https://github.com/marko-js/marko/commit/d920e833df0b58456f28f7cb45ebd38b56c05ba7) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add missing type definition for taglib.\n\n- Updated dependencies [[`d920e833d`](https://github.com/marko-js/marko/commit/d920e833df0b58456f28f7cb45ebd38b56c05ba7)]:\n  - @marko/babel-utils@5.21.4\n\n## 5.23.3\n\n### Patch Changes\n\n- [#1885](https://github.com/marko-js/marko/pull/1885) [`f1efd707a`](https://github.com/marko-js/marko/commit/f1efd707aa1c2aeac092ef7fff4ef5cb959f45b6) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add taglib extensions and type definitions for typescript support.\n\n## 5.23.2\n\n### Patch Changes\n\n- [#1880](https://github.com/marko-js/marko/pull/1880) [`c4cce33e8`](https://github.com/marko-js/marko/commit/c4cce33e8c917af7c45ffc64d748e88364a0b91a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix an issue where merging scripts (via the out.script api) was not properly inserting delimeters when scripts are added in different async writers.\n\n## 5.23.1\n\n### Patch Changes\n\n- [#1875](https://github.com/marko-js/marko/pull/1875) [`b744720db`](https://github.com/marko-js/marko/commit/b744720db5483633643c5a75bd2eedc37aa9ff25) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrades \"magic-string\" module (used for css sourcemaps) to avoid deprecation warning.\n\n## 5.23.0\n\n### Minor Changes\n\n- [#1865](https://github.com/marko-js/marko/pull/1865) [`797e90489`](https://github.com/marko-js/marko/commit/797e90489359e1e87a9756da5082c1e085555546) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Changes the \"default\" attributes name to be \"value\". This is technically a breaking change, but it primarily only impacts the tags-api-preview which will also be getting a release to support this change.\n\n## 5.22.10\n\n### Patch Changes\n\n- [#1862](https://github.com/marko-js/marko/pull/1862) [`30e0ea43d`](https://github.com/marko-js/marko/commit/30e0ea43d56e0a3c59748eae32a0ab85921c1aeb) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid mutating component instance in HMR mode. (Improves support in tags api preview)\n\n## 5.22.9\n\n### Patch Changes\n\n- [#1860](https://github.com/marko-js/marko/pull/1860) [`e64809458`](https://github.com/marko-js/marko/commit/e648094582c6a5c10d567bb7c844b50b6541e355) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve tag scanning performance.\n\n* [#1860](https://github.com/marko-js/marko/pull/1860) [`e64809458`](https://github.com/marko-js/marko/commit/e648094582c6a5c10d567bb7c844b50b6541e355) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Update htmljs-parser version.\n\n## 5.22.8\n\n### Patch Changes\n\n- [#1855](https://github.com/marko-js/marko/pull/1855) [`760824659`](https://github.com/marko-js/marko/commit/76082465962b99c6b6f364104c2f135901534c0a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix browser-refresh client support when using @marko/compiler/register\n\n## 5.22.7\n\n### Patch Changes\n\n- [#1853](https://github.com/marko-js/marko/pull/1853) [`76771598e`](https://github.com/marko-js/marko/commit/76771598e83f143697c9a2bca3869f3c9fcf6ab1) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Enable the meta option for the compiler when @marko/compiler/register is used. This makes usage with lasso easier.\n\n## 5.22.6\n\n### Patch Changes\n\n- [#1845](https://github.com/marko-js/marko/pull/1845) [`65bab8e6d`](https://github.com/marko-js/marko/commit/65bab8e6df02e6fd485a45d9a9c2200545f21479) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where Marko runtime was being incorrectly matched when swapping from dev to prod runtimes.\n\n- Updated dependencies [[`65bab8e6d`](https://github.com/marko-js/marko/commit/65bab8e6df02e6fd485a45d9a9c2200545f21479)]:\n  - @marko/babel-utils@5.21.3\n\n## 5.22.5\n\n### Patch Changes\n\n- [#1843](https://github.com/marko-js/marko/pull/1843) [`963f08ce9`](https://github.com/marko-js/marko/commit/963f08ce92e56f1d210068bedd5fc033b6db71c0) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrade htmljs-parser.\n\n## 5.22.4\n\n### Patch Changes\n\n- [#1841](https://github.com/marko-js/marko/pull/1841) [`26cd305ea`](https://github.com/marko-js/marko/commit/26cd305ea4391fb4846c07d5ba4984cc152584e7) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrade htmljs-parser.\n\n## 5.22.3\n\n### Patch Changes\n\n- [#1839](https://github.com/marko-js/marko/pull/1839) [`1df553e45`](https://github.com/marko-js/marko/commit/1df553e45829c7e0d754c5fec2c7d65e74c89457) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrade HTMLJS-Parser.\n\n## 5.22.2\n\n### Patch Changes\n\n- [#1837](https://github.com/marko-js/marko/pull/1837) [`63161abed`](https://github.com/marko-js/marko/commit/63161abed5fa071e88d06646bf0f55f0c6852b54) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with source map position for shorthand attribute methods.\n\n## 5.22.1\n\n### Patch Changes\n\n- [#1830](https://github.com/marko-js/marko/pull/1830) [`efd6da235`](https://github.com/marko-js/marko/commit/efd6da23587567ddf035c06a9ab82472ca1683bb) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with parsing type definitions for tag variables\n\n## 5.22.0\n\n### Minor Changes\n\n- [#1826](https://github.com/marko-js/marko/pull/1826) [`e285cbbd1`](https://github.com/marko-js/marko/commit/e285cbbd1092afb1e669156777a3a9ccd46affb2) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Support removing typescript types.\n\n## 5.21.7\n\n### Patch Changes\n\n- [#1824](https://github.com/marko-js/marko/pull/1824) [`2f6459d2c`](https://github.com/marko-js/marko/commit/2f6459d2c421ac82c4627c90f1c50cb229a99d33) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where shorthand attribute methods could not have a \"return\" statement.\n\n## 5.21.6\n\n### Patch Changes\n\n- [#1814](https://github.com/marko-js/marko/pull/1814) [`b11f9d076`](https://github.com/marko-js/marko/commit/b11f9d076f40a0997c5c8534804ebc1b87d417cc) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrade htmljs-parser.\n\n## 5.21.5\n\n### Patch Changes\n\n- [#1811](https://github.com/marko-js/marko/pull/1811) [`49ef9801b`](https://github.com/marko-js/marko/commit/49ef9801b506ea6b7eafcb46e759a3463b0efd3d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrade htmljs-parser to improve source location information.\n\n## 5.21.4\n\n### Patch Changes\n\n- [#1806](https://github.com/marko-js/marko/pull/1806) [`04adc2d24`](https://github.com/marko-js/marko/commit/04adc2d24eb0111d6e4a8bd760d420199240cb2f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where attribute shorthand methods would have incorrect sourcemap position.\n\n## 5.21.3\n\n### Patch Changes\n\n- [#1800](https://github.com/marko-js/marko/pull/1800) [`c352de67e`](https://github.com/marko-js/marko/commit/c352de67ecb19d45d9c6874a8ba048fb656bb562) Thanks [@mlrawlings](https://github.com/mlrawlings)! - fix: update deps, inline babel helper removed from latest version\n\n## 5.21.2\n\n### Patch Changes\n\n- [#1797](https://github.com/marko-js/marko/pull/1797) [`5921c2297`](https://github.com/marko-js/marko/commit/5921c2297297698c4026f0a4d077c364c42e038a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Pin a newer version of htmljs-parser that fixes some parser bugs. See: https://github.com/marko-js/htmljs-parser/pull/103\n\n## 5.21.1\n\n### Patch Changes\n\n- [#1792](https://github.com/marko-js/marko/pull/1792) [`c9107ea7f`](https://github.com/marko-js/marko/commit/c9107ea7f6fc69df10700114fe35b7b494414194) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix broken previous release where the \"main\" field for package.json files was not correctly updated when published\n\n- Updated dependencies [[`c9107ea7f`](https://github.com/marko-js/marko/commit/c9107ea7f6fc69df10700114fe35b7b494414194)]:\n  - @marko/babel-utils@5.21.1\n\n## 5.21.0\n\n### Minor Changes\n\n- [#1787](https://github.com/marko-js/marko/pull/1787) [`dd9009d66`](https://github.com/marko-js/marko/commit/dd9009d665f4f660d106aa0c3364e34ca3561abc) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrades the compiler to use the latest major release of `htmljs-parser` bringing in the improvements listed here:\n  https://github.com/marko-js/htmljs-parser/pull/93\n\n### Patch Changes\n\n- Updated dependencies [[`dd9009d66`](https://github.com/marko-js/marko/commit/dd9009d665f4f660d106aa0c3364e34ca3561abc)]:\n  - @marko/babel-utils@5.21.0\n\n## [5.20.9](https://github.com/marko-js/marko/compare/v5.20.8...v5.20.9) (2022-04-27)\n\n**Note:** Version bump only for package @marko/compiler\n\n## [5.20.8](https://github.com/marko-js/marko/compare/v5.20.7...v5.20.8) (2022-04-26)\n\n### Bug Fixes\n\n- type for BabelFile.markoConfig now reflects defaulted values ([cd49696](https://github.com/marko-js/marko/commit/cd496964c13af64b626a9cc10a3b55658e7418c8))\n\n## [5.20.7](https://github.com/marko-js/marko/compare/v5.20.6...v5.20.7) (2022-04-26)\n\n### Bug Fixes\n\n- set cache entry before analysis to prevent infinite recursion ([d327864](https://github.com/marko-js/marko/commit/d3278640dbc403221c070f4529f18e9a05a60370))\n\n## [5.20.6](https://github.com/marko-js/marko/compare/v5.20.5...v5.20.6) (2022-04-25)\n\n**Note:** Version bump only for package @marko/compiler\n\n## [5.20.5](https://github.com/marko-js/marko/compare/v5.20.4...v5.20.5) (2022-04-15)\n\n### Bug Fixes\n\n- **translator-default:** string literals in dynamic tags incorrectly doing component lookup ([28aa2e8](https://github.com/marko-js/marko/commit/28aa2e84c1f7335f77c2d0ef29d30453401e7b0d))\n\n## [5.20.4](https://github.com/marko-js/marko/compare/v5.20.3...v5.20.4) (2022-04-11)\n\n### Bug Fixes\n\n- autoloading translators ([5eda8f3](https://github.com/marko-js/marko/commit/5eda8f388a9d0d253f4cda5c13bd5e716cbbc18d))\n\n## [5.20.3](https://github.com/marko-js/marko/compare/v5.20.2...v5.20.3) (2022-03-24)\n\n**Note:** Version bump only for package @marko/compiler\n\n## [5.20.2](https://github.com/marko-js/marko/compare/v5.20.1...v5.20.2) (2022-03-23)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.20.0](https://github.com/marko-js/marko/compare/v5.19.3...v5.20.0) (2022-03-11)\n\n**Note:** Version bump only for package @marko/compiler\n\n## [5.19.1](https://github.com/marko-js/marko/compare/v5.19.0...v5.19.1) (2022-01-28)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.19.0](https://github.com/marko-js/marko/compare/v5.18.2...v5.19.0) (2022-01-28)\n\n### Features\n\n- support analyze field in marko.json ([#1769](https://github.com/marko-js/marko/issues/1769)) ([981f7f3](https://github.com/marko-js/marko/commit/981f7f39f932533178c538f8fc2788ea6f93d909))\n\n## [5.18.2](https://github.com/marko-js/marko/compare/v5.18.1...v5.18.2) (2022-01-25)\n\n**Note:** Version bump only for package @marko/compiler\n\n## [5.18.1](https://github.com/marko-js/marko/compare/v5.18.0...v5.18.1) (2022-01-25)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.18.0](https://github.com/marko-js/marko/compare/v5.17.10...v5.18.0) (2022-01-24)\n\n**Note:** Version bump only for package @marko/compiler\n\n## [5.17.10](https://github.com/marko-js/marko/compare/v5.17.9...v5.17.10) (2022-01-14)\n\n### Bug Fixes\n\n- issue with dynamic tag names not tracking references ([9d86540](https://github.com/marko-js/marko/commit/9d86540a37b0028370206d2367c0a2fc8a724575))\n\n## [5.17.6](https://github.com/marko-js/marko/compare/v5.17.5...v5.17.6) (2022-01-02)\n\n**Note:** Version bump only for package @marko/compiler\n\n## [5.17.4](https://github.com/marko-js/marko/compare/v5.17.3...v5.17.4) (2021-11-17)\n\n### Bug Fixes\n\n- hoisted variable scopes clean up ([32f382b](https://github.com/marko-js/marko/commit/32f382bb0d054f2cb3709d571a0b95ac267f0523))\n\n## [5.17.3](https://github.com/marko-js/marko/compare/v5.17.2...v5.17.3) (2021-10-30)\n\n### Bug Fixes\n\n- upgrade babel deps & fix builder regression ([91b3c58](https://github.com/marko-js/marko/commit/91b3c5855923adb64ab30677729e2d0404245846))\n\n## [5.16.1](https://github.com/marko-js/marko/compare/v5.16.0...v5.16.1) (2021-10-22)\n\n### Bug Fixes\n\n- regression with identical tag name & taglib deduping ([a8d85d7](https://github.com/marko-js/marko/commit/a8d85d7771378d0e995c988cabe4b511ab95dc3d))\n- upgrade htmljs-parser ([d95a37c](https://github.com/marko-js/marko/commit/d95a37c01ae3ddb7532f3add20b7feb8268e728f))\n\n# [5.16.0](https://github.com/marko-js/marko/compare/v5.15.12...v5.16.0) (2021-10-11)\n\n### Features\n\n- upgrade htmljs-parser ([a53fc71](https://github.com/marko-js/marko/commit/a53fc717c1c019e764c677af8665a5159c885dd8))\n\n## [5.15.11](https://github.com/marko-js/marko/compare/v5.15.10...v5.15.11) (2021-09-29)\n\n### Bug Fixes\n\n- normalize file opts similar to babel ([86310e6](https://github.com/marko-js/marko/commit/86310e603985ed96cba523fb07e25a0852cff8e6))\n\n## [5.15.10](https://github.com/marko-js/marko/compare/v5.15.9...v5.15.10) (2021-09-07)\n\n**Note:** Version bump only for package @marko/compiler\n\n## [5.15.9](https://github.com/marko-js/marko/compare/v5.15.8...v5.15.9) (2021-09-05)\n\n### Bug Fixes\n\n- attribute shorthand method source locations ([20e3cf4](https://github.com/marko-js/marko/commit/20e3cf42aa35392edb8582491abf1a31b6a06d8a))\n\n## [5.15.8](https://github.com/marko-js/marko/compare/v5.15.7...v5.15.8) (2021-09-05)\n\n### Bug Fixes\n\n- consistent file.opts during parse & other stages ([ff07ead](https://github.com/marko-js/marko/commit/ff07eadde29ace7aaf4323d11f78c892fdc8f0ed))\n- incorrect source position for attribute arguments ([0c0ff04](https://github.com/marko-js/marko/commit/0c0ff04e767342c910f5087faf4bdef2778f0f92))\n\n## [5.15.7](https://github.com/marko-js/marko/compare/v5.15.6...v5.15.7) (2021-09-03)\n\n**Note:** Version bump only for package @marko/compiler\n\n## [5.15.6](https://github.com/marko-js/marko/compare/v5.15.5...v5.15.6) (2021-09-03)\n\n### Bug Fixes\n\n- supports babel 7.15.4 ([a301a87](https://github.com/marko-js/marko/commit/a301a870e8e719d770ccef1958e9d9c03a93d765))\n\n## [5.15.4](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.15.3...v5.15.4) (2021-08-07)\n\n### Bug Fixes\n\n- improve compiler register hook types ([ecdafa0](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/ecdafa047cdcbe87b941856102a00da34d8efe25))\n\n## [5.15.3](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.15.2...v5.15.3) (2021-08-06)\n\n**Note:** Version bump only for package @marko/compiler\n\n## [5.15.2](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.15.1...v5.15.2) (2021-08-06)\n\n### Bug Fixes\n\n- issue with hoisted tag var scopes ([86162a1](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/86162a1471aeb2d6f6729ef2ed872092b549105b))\n\n# [5.15.0](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.14.2...v5.15.0) (2021-07-28)\n\n### Features\n\n- expose @marko/compiler/register api ([5726899](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/572689909618939585e93c1a0d1ab101ff73aefd))\n\n## [5.14.2](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.14.1...v5.14.2) (2021-07-28)\n\n### Bug Fixes\n\n- support method shorthand from updated parser ([accb1bf](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/accb1bf51ff73ccff5f3fcbd0c65172b9a7a262a))\n\n## [5.14.1](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.14.0...v5.14.1) (2021-07-26)\n\n### Bug Fixes\n\n- **compiler:** issue with getters on taglibs not properly merging ([c728439](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/c728439906bc87a9167f02aecd979e5801b1c415))\n\n# [5.14.0](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.13.0...v5.14.0) (2021-07-24)\n\n### Bug Fixes\n\n- issue with root translator running in hydrate mode ([56495ae](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/56495aee99f1adbbdbdc08324561fbbd62ae95a1))\n\n### Features\n\n- lazy load load compiler hook paths, expose error loc object ([f49fc19](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/f49fc1901bb1fc66ae1eb64b98ce2402d4faa8fa))\n\n# [5.13.0](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.12.1...v5.13.0) (2021-07-23)\n\n### Features\n\n- add support for new binding shorthand syntax ([1c20064](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/1c20064bdf04c3491b40e68aa6e57113dd40bc40))\n\n## [5.12.1](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.12.0...v5.12.1) (2021-07-21)\n\n### Bug Fixes\n\n- issue with tag var scope hoisting ([ed8de11](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/ed8de119f1d81da04f2006922864be0ef8a60ab0))\n\n# [5.12.0](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.11.3...v5.12.0) (2021-07-12)\n\n**Note:** Version bump only for package @marko/compiler\n\n## [5.11.3](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.11.2...v5.11.3) (2021-07-08)\n\n**Note:** Version bump only for package @marko/compiler\n\n## [5.11.2](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.11.1...v5.11.2) (2021-07-07)\n\n### Bug Fixes\n\n- incorrect search file types for taglib lookup ([4e6bd9a](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/4e6bd9a2e9de27566b78c98301715054c421c264))\n\n## [5.11.1](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.11.0...v5.11.1) (2021-07-07)\n\n### Bug Fixes\n\n- add missing compiler hook aliases during taglib loading ([0e008e3](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/0e008e33e5c39d99b6a0744c1ad0132adbd0bf6a))\n\n# [5.11.0](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.10.7...v5.11.0) (2021-07-07)\n\n### Features\n\n- add hoisting support for tag var bindings ([956a80c](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/956a80c5c28948745b0e554971853d88ceb41871))\n- support taglib translate hook, support arrays in taglib hooks ([e2b0e66](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/e2b0e66138acec5ee11ec0f582da99391a5c7396))\n\n## [5.10.7](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.10.6...v5.10.7) (2021-06-23)\n\n### Bug Fixes\n\n- **compiler:** improve sourceMap config option type definition ([5a5092e](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/5a5092e89d77046b046db2d34a1d34715f93756e))\n\n## [5.10.6](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.10.5...v5.10.6) (2021-06-10)\n\n**Note:** Version bump only for package @marko/compiler\n\n## [5.10.5](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.10.4...v5.10.5) (2021-06-08)\n\n**Note:** Version bump only for package @marko/compiler\n\n## [5.10.2](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.10.1...v5.10.2) (2021-05-04)\n\n### Bug Fixes\n\n- **compiler:** var name typo ([8aaf910](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/8aaf9105323587fae4f40dd69a2497f114a867c5))\n\n## [5.10.1](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.10.0...v5.10.1) (2021-05-04)\n\n### Bug Fixes\n\n- **compiler:** issue with undefined added to watchFiles ([4704b62](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/4704b62a81165856a803b2155946b4d143d58287))\n\n# [5.10.0](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.9.0...v5.10.0) (2021-04-30)\n\n### Features\n\n- add new HMR runtime ([a873762](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/a87376299952c8f9fc5c3d467c571acc0956bfb3))\n\n# [5.9.0](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.8.4...v5.9.0) (2021-04-21)\n\n### Features\n\n- expose api to get runtime entry files for translator ([#1687](https://github.com/marko-js/marko/tree/master/packages/compiler/issues/1687)) ([fad9159](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/fad91598b28f3ab6e8e3550e42c50d062ea41ad9))\n\n## [5.8.4](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.8.3...v5.8.4) (2021-04-19)\n\n**Note:** Version bump only for package @marko/compiler\n\n## [5.8.3](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.8.2...v5.8.3) (2021-04-18)\n\n**Note:** Version bump only for package @marko/compiler\n\n## [5.8.2](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.8.1...v5.8.2) (2021-04-18)\n\n**Note:** Version bump only for package @marko/compiler\n\n## [5.8.1](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.8.0...v5.8.1) (2021-04-16)\n\n### Bug Fixes\n\n- **compiler:** add missing config type definition ([7437e88](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/7437e888b7cbd3c7f8ed5ae164d959d8c0d7eb04))\n\n# [5.8.0](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.7.0...v5.8.0) (2021-04-16)\n\n### Features\n\n- add new hydrateIncludeImports option ([#1686](https://github.com/marko-js/marko/tree/master/packages/compiler/issues/1686)) ([db84f91](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/db84f913b47e4372c84c09a34ca8529b646b7869))\n\n# [5.7.0](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.6.2...v5.7.0) (2021-04-07)\n\n### Features\n\n- **compiler:** use default translator for buildLookup api ([#1682](https://github.com/marko-js/marko/tree/master/packages/compiler/issues/1682)) ([0899847](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/0899847ea80dc65d6d8b80114f7caaf77cadccf5))\n\n## [5.6.2](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.6.1...v5.6.2) (2021-03-30)\n\n**Note:** Version bump only for package @marko/compiler\n\n## [5.6.1](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.6.0...v5.6.1) (2021-03-27)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.6.0](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.5.4...v5.6.0) (2021-03-27)\n\n**Note:** Version bump only for package @marko/compiler\n\n## [5.5.4](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.5.3...v5.5.4) (2021-03-22)\n\n**Note:** Version bump only for package @marko/compiler\n\n## [5.5.3](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.5.2...v5.5.3) (2021-03-22)\n\n**Note:** Version bump only for package @marko/compiler\n\n## [5.5.2](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.5.1...v5.5.2) (2021-03-19)\n\n### Bug Fixes\n\n- cast result of readFile to string ([#1679](https://github.com/marko-js/marko/tree/master/packages/compiler/issues/1679)) ([501a7fb](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/501a7fbfbe9e12869fd685f1e5c8ee4417da816d))\n\n## [5.5.1](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.5.0...v5.5.1) (2021-03-18)\n\n### Bug Fixes\n\n- **compiler:** type definitions had incorrect path ([f7d4eb9](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/f7d4eb981e80f87394ab64976e5f31156f80a408))\n\n# [5.5.0](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.4.2...v5.5.0) (2021-03-18)\n\n### Bug Fixes\n\n- **compiler:** use provided FS for taglib building ([#1674](https://github.com/marko-js/marko/tree/master/packages/compiler/issues/1674)) ([edb570e](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/edb570eda4b3d544795536bf81613f6c97c9859a))\n- correct Marko debug mode for ci tests ([031ca0d](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/031ca0d93fa77a3405b95467e7a98f2c5a8120de))\n\n### Features\n\n- add hydrate option ([#1673](https://github.com/marko-js/marko/tree/master/packages/compiler/issues/1673)) ([a4e7013](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/a4e701355efcd93971eb46988f5e990f4517796f))\n\n## [5.4.2](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.4.1...v5.4.2) (2021-03-10)\n\n**Note:** Version bump only for package @marko/compiler\n\n## [5.4.1](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.4.0...v5.4.1) (2021-03-10)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.4.0](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.3.0...v5.4.0) (2021-03-10)\n\n**Note:** Version bump only for package @marko/compiler\n\n## [5.2.2](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.2.1...v5.2.2) (2021-03-01)\n\n### Bug Fixes\n\n- add some additional missing deps from marko to @marko/compiler ([65ac580](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/65ac580e57cb42ab94adc447c9b59744a69c8b64))\n\n## [5.2.1](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.2.0...v5.2.1) (2021-03-01)\n\n### Bug Fixes\n\n- **compiler:** add missing dependency after moving taglib code ([ae843f1](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/ae843f1b802fcbc1c7347247247a3c8551f6cfd2))\n\n# [5.2.0](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.1.21...v5.2.0) (2021-03-01)\n\n### Features\n\n- move taglib apis into compiler source code ([f7cbb1b](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/f7cbb1b5719ce767b7970ca7264a081010e8e65a))\n\n## [5.1.21](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.1.20...v5.1.21) (2021-03-01)\n\n**Note:** Version bump only for package @marko/compiler\n\n## [5.1.20](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.1.19...v5.1.20) (2021-02-26)\n\n**Note:** Version bump only for package @marko/compiler\n\n## [5.1.19](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.1.18...v5.1.19) (2021-02-26)\n\n### Bug Fixes\n\n- **marko:** bring back hot-reload when node-require hook used ([8d856a0](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/8d856a0250a1f2522f06a91a11c2d73c6a05e7b2))\n- move @marko/babel-types into compiler ([5369a63](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/5369a63e0ce66c422981893525ff6c9bcbd461dd))\n- **compiler:** issue with path.state missing ([22ab5b2](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/22ab5b282ad5b8eedf2705956a45d21cc1d55717))\n\n## [5.1.18](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.1.17...v5.1.18) (2021-02-21)\n\n**Note:** Version bump only for package @marko/compiler\n\n## [5.1.17](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.1.16...v5.1.17) (2021-02-18)\n\n**Note:** Version bump only for package @marko/compiler\n\n## [5.1.16](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.1.15...v5.1.16) (2021-02-17)\n\n**Note:** Version bump only for package @marko/compiler\n\n## [5.1.15](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.1.14...v5.1.15) (2021-02-13)\n\n**Note:** Version bump only for package @marko/compiler\n\n## [5.1.14](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.1.13...v5.1.14) (2021-02-12)\n\n**Note:** Version bump only for package @marko/compiler\n\n## [5.1.13](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.1.12...v5.1.13) (2021-02-12)\n\n**Note:** Version bump only for package @marko/compiler\n\n## [5.1.12](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.1.11...v5.1.12) (2021-02-12)\n\n**Note:** Version bump only for package @marko/compiler\n\n## [5.1.11](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.1.10...v5.1.11) (2021-02-11)\n\n**Note:** Version bump only for package @marko/compiler\n\n## [5.1.10](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.1.9...v5.1.10) (2021-02-05)\n\n**Note:** Version bump only for package @marko/compiler\n\n## [5.1.9](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.1.8...v5.1.9) (2021-02-03)\n\n**Note:** Version bump only for package @marko/compiler\n\n## [5.1.8](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.1.7...v5.1.8) (2021-02-02)\n\n**Note:** Version bump only for package @marko/compiler\n\n## [5.1.7](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.1.6...v5.1.7) (2021-02-01)\n\n**Note:** Version bump only for package @marko/compiler\n\n## [5.1.6](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.1.5...v5.1.6) (2021-01-29)\n\n### Bug Fixes\n\n- **compiler:** improve type definitions ([291690e](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/291690edb061afd0f98a8eb514db6b8f429fe5a0))\n\n## [5.1.5](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.1.4...v5.1.5) (2021-01-28)\n\n### Bug Fixes\n\n- issue with bundled compiler not respecting NODE_ENV ([c7be2a7](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/c7be2a7052366bff706eb2622a6b059866294b5b))\n\n## [5.1.4](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.1.3...v5.1.4) (2021-01-27)\n\n**Note:** Version bump only for package @marko/compiler\n\n## [5.1.3](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.1.2...v5.1.3) (2021-01-27)\n\n**Note:** Version bump only for package @marko/compiler\n\n## [5.1.2](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.1.1...v5.1.2) (2021-01-26)\n\n**Note:** Version bump only for package @marko/compiler\n\n## [5.1.1](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.1.0...v5.1.1) (2021-01-26)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.1.0](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.82...v5.1.0) (2021-01-26)\n\n### Features\n\n- no longer publish as 'next' dist-tag ([8113e25](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/8113e250d823000810d0fa13d76efc4cc69f4ad1))\n\n# [5.0.0-next.82](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.81...v5.0.0-next.82) (2021-01-21)\n\n### Bug Fixes\n\n- issue with path.hub being missing when traversing ([7aef97c](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/7aef97ca48ec26be19a1e5527156cc1c9a13b674))\n\n# [5.0.0-next.81](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.80...v5.0.0-next.81) (2021-01-20)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.80](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.79...v5.0.0-next.80) (2021-01-19)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.79](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.78...v5.0.0-next.79) (2021-01-19)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.78](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.77...v5.0.0-next.78) (2021-01-19)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.77](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.76...v5.0.0-next.77) (2021-01-19)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.76](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.75...v5.0.0-next.76) (2021-01-15)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.75](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.74...v5.0.0-next.75) (2021-01-14)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.74](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.73...v5.0.0-next.74) (2021-01-14)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.73](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.72...v5.0.0-next.73) (2021-01-14)\n\n### Bug Fixes\n\n- use same debug check for compiler and runtime ([#1647](https://github.com/marko-js/marko/tree/master/packages/compiler/issues/1647)) ([0c8632f](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/0c8632fe92d06b27d0741fa2d5a2b599f0890693))\n\n# [5.0.0-next.72](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.71...v5.0.0-next.72) (2021-01-13)\n\n### Features\n\n- **compiler:** support string as translator option ([0c6e968](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/0c6e968b4eadd9c792c8495cd218791b04206ec5))\n\n# [5.0.0-next.71](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.70...v5.0.0-next.71) (2021-01-12)\n\n### Features\n\n- move tag param ast to MarkoTagBody ([02c1e29](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/02c1e29426b7995d869ab8a9fd1f8dd6dccaeca5))\n\n# [5.0.0-next.70](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.69...v5.0.0-next.70) (2020-12-16)\n\n### Features\n\n- add cached analyze stage ([bb6a050](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/bb6a050bbb82d5a4fcfc5e1ca6835d36a67809fa))\n\n# [5.0.0-next.69](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.68...v5.0.0-next.69) (2020-12-14)\n\n### Features\n\n- **compiler:** provide state object during compiler hooks ([24cefa4](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/24cefa4c068a8b272aa998391a695d2efd5d9786))\n\n# [5.0.0-next.68](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.67...v5.0.0-next.68) (2020-12-11)\n\n### Features\n\n- **babel-utils:** expose import and id utils ([#1636](https://github.com/marko-js/marko/tree/master/packages/compiler/issues/1636)) ([644e4d8](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/644e4d8756c2260a1e2d28374a31a67552414179))\n\n# [5.0.0-next.67](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.66...v5.0.0-next.67) (2020-12-09)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.66](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.65...v5.0.0-next.66) (2020-12-08)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.65](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.64...v5.0.0-next.65) (2020-12-02)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.64](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.63...v5.0.0-next.64) (2020-12-02)\n\n### Bug Fixes\n\n- **babel-types:** support scope analysis for tag variables ([c527474](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/c5274740b5fde01b85b8b46381fadf2fc75245f2))\n\n# [5.0.0-next.63](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.62...v5.0.0-next.63) (2020-12-01)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.62](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.61...v5.0.0-next.62) (2020-12-01)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.61](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.60...v5.0.0-next.61) (2020-12-01)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.60](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.59...v5.0.0-next.60) (2020-11-22)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.59](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.58...v5.0.0-next.59) (2020-11-21)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.58](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.57...v5.0.0-next.58) (2020-11-20)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.57](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.56...v5.0.0-next.57) (2020-11-20)\n\n### Bug Fixes\n\n- **translator-default:** ensure accruate component id metadata ([c4b0360](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/c4b036058ea57f31e151e0dae965858839d1795c))\n\n### Features\n\n- add default attribute support ([#1631](https://github.com/marko-js/marko/tree/master/packages/compiler/issues/1631)) ([46ceab3](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/46ceab34a5c1815933b8b2a9f3533716ae0fedcf))\n- add parser support for tag variables ([#1630](https://github.com/marko-js/marko/tree/master/packages/compiler/issues/1630)) ([43c4433](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/43c4433cb026f7eace199203e15d1050a53dc35d))\n\n# [5.0.0-next.56](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.55...v5.0.0-next.56) (2020-11-20)\n\n### Bug Fixes\n\n- **compiler:** no longer error when compiling from root dir ([fe84fb3](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/fe84fb345affb4a48e10d51df18bcf1114e12d3f))\n\n# [5.0.0-next.55](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.54...v5.0.0-next.55) (2020-11-19)\n\n### Bug Fixes\n\n- babel-utils doesnt depend on compiler ([c429ffb](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/c429ffb0aa4e79210b881d089a3db19d272a750d))\n\n# [5.0.0-next.54](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.53...v5.0.0-next.54) (2020-11-17)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.53](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.52...v5.0.0-next.53) (2020-11-17)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.52](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.51...v5.0.0-next.52) (2020-11-12)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.51](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.50...v5.0.0-next.51) (2020-11-11)\n\n### Features\n\n- cached compilations, nested tag analysis ([74d5f10](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/74d5f104b8f35178c399ab5c3514c33f8b63cdf0))\n\n# [5.0.0-next.50](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.49...v5.0.0-next.50) (2020-10-12)\n\n### Bug Fixes\n\n- no longer use fragments for preserved native els ([22e9322](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/22e9322a7e72b50812ab223f70bf9e68aee2208d))\n\n# [5.0.0-next.49](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.48...v5.0.0-next.49) (2020-09-28)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.48](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.47...v5.0.0-next.48) (2020-09-18)\n\n### Bug Fixes\n\n- **compiler:** improve hash template id performance and consistency ([d111748](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/d11174853f02b4edf25cb4b1b3cf0b687ca2bf4e))\n\n# [5.0.0-next.47](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.46...v5.0.0-next.47) (2020-09-18)\n\n### Bug Fixes\n\n- **compiler:** normalize windows paths when creating relative requires ([daf2b1a](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/daf2b1af37d1c14175b69b52373d7d36ad115c59))\n\n# [5.0.0-next.46](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.45...v5.0.0-next.46) (2020-09-17)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.45](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.44...v5.0.0-next.45) (2020-08-26)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.44](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.43...v5.0.0-next.44) (2020-08-26)\n\n### Bug Fixes\n\n- typo with aria-describedby autocomplete ([f499634](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/f499634679eb97003e45e1a9923590abc9190f06))\n\n# [5.0.0-next.43](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.42...v5.0.0-next.43) (2020-08-20)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.42](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.41...v5.0.0-next.42) (2020-08-18)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.41](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.40...v5.0.0-next.41) (2020-08-18)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.40](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.39...v5.0.0-next.40) (2020-08-12)\n\n### Bug Fixes\n\n- component type use relative path in dev mode ([7b7a4f9](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/7b7a4f9637648c7ded113fd132ce3ce5f2785e0a))\n\n# [5.0.0-next.39](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.38...v5.0.0-next.39) (2020-08-10)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.38](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.37...v5.0.0-next.38) (2020-08-10)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.37](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.36...v5.0.0-next.37) (2020-08-05)\n\n### Features\n\n- only enable optimization stage for production mode ([ee16e96](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/ee16e96580b67e0cacb87a78001be940dc0324df))\n\n# [5.0.0-next.36](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.35...v5.0.0-next.36) (2020-08-05)\n\n### Features\n\n- expose watch file meta data ([#1591](https://github.com/marko-js/marko/tree/master/packages/compiler/issues/1591)) ([f14e46a](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/f14e46a1f3ddd01f659a0f86678773fb12a7f1a5))\n\n# [5.0.0-next.35](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.34...v5.0.0-next.35) (2020-08-04)\n\n### Features\n\n- add custom fileSystem config option ([#1590](https://github.com/marko-js/marko/tree/master/packages/compiler/issues/1590)) ([212dda9](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/212dda9c004af1958feacf5c9be9ac381feb2708))\n\n# [5.0.0-next.34](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.33...v5.0.0-next.34) (2020-08-04)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.33](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.32...v5.0.0-next.33) (2020-08-03)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.32](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.31...v5.0.0-next.32) (2020-07-31)\n\n### Bug Fixes\n\n- **compiler:** regression with sourcemaps ([bb818c8](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/bb818c8423e1d1cc4528c951b08ddab1579f25a9))\n\n# [5.0.0-next.31](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.30...v5.0.0-next.31) (2020-07-31)\n\n### Features\n\n- improve index position to line, column perf ([680dad6](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/680dad65dafdb4300d3f86ea2be6bb322ecd7de9))\n\n# [5.0.0-next.30](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.29...v5.0.0-next.30) (2020-07-29)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.29](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.28...v5.0.0-next.29) (2020-07-29)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.28](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.27...v5.0.0-next.28) (2020-07-27)\n\n### Bug Fixes\n\n- **compiler:** false positive for concise mode dynamic tag error ([94c41ca](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/94c41ca8f18dfcc50e1ecb23bdc25b3231e7b790))\n\n# [5.0.0-next.27](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.26...v5.0.0-next.27) (2020-07-24)\n\n### Bug Fixes\n\n- **compiler:** make taglib entry more bundler friendly ([1e89380](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/1e8938085a815b5d9485c3a38b7b643770566282))\n\n# [5.0.0-next.26](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.25...v5.0.0-next.26) (2020-07-24)\n\n### Bug Fixes\n\n- load correct taglib utils based on env ([#1585](https://github.com/marko-js/marko/tree/master/packages/compiler/issues/1585)) ([af2bc2a](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/af2bc2a11c45cab380e9698af2d1329b4d4eb8d6))\n\n# [5.0.0-next.25](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.24...v5.0.0-next.25) (2020-07-23)\n\n### Bug Fixes\n\n- remove unecessary allExtensions api ([9a2c439](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/9a2c439b740fd3431e2d07f3112a8dfe8c734d74))\n\n# [5.0.0-next.24](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.23...v5.0.0-next.24) (2020-07-22)\n\n### Features\n\n- **compiler:** expose register taglib api ([#1583](https://github.com/marko-js/marko/tree/master/packages/compiler/issues/1583)) ([c45c082](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/c45c082b8f4b4a3548271b4526231e22b6d24222))\n\n# [5.0.0-next.23](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.22...v5.0.0-next.23) (2020-07-14)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.22](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.21...v5.0.0-next.22) (2020-07-10)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.21](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.20...v5.0.0-next.21) (2020-07-07)\n\n### Features\n\n- switch to storing marko meta on babels metadata ([ee6ad38](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/ee6ad38d9f31fe1d1314350ddd011a39c6c2ab9a))\n\n# [5.0.0-next.20](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.19...v5.0.0-next.20) (2020-07-07)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.19](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.18...v5.0.0-next.19) (2020-07-06)\n\n### Bug Fixes\n\n- support manually registered taglibs ([9dc4d07](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/9dc4d07d1bfe4bb1c898e16a28289f021917c75f))\n\n# [5.0.0-next.18](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.17...v5.0.0-next.18) (2020-05-27)\n\n### Bug Fixes\n\n- **compiler:** modules override warning when compiled with webpack ([af28bac](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/af28bac6f60b268c88ebe28ab7d74807487cf3b1))\n\n# [5.0.0-next.17](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.16...v5.0.0-next.17) (2020-05-27)\n\n### Bug Fixes\n\n- additional taglib cleanup for website support ([f462d8a](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/f462d8ad95c1d438561f028a7d2a79accccbe739))\n\n# [5.0.0-next.16](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.15...v5.0.0-next.16) (2020-05-27)\n\n### Features\n\n- website compatibility fixes ([4390fd1](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/4390fd1654d7b2753d2af899917ced7b3a395bc2))\n\n# [5.0.0-next.15](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.14...v5.0.0-next.15) (2020-05-26)\n\n### Features\n\n- **compiler:** require passing custom translator directly ([b9d4c46](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/b9d4c46ff3b6d3685c01f7b82e591f3f90d4c02b))\n\n# [5.0.0-next.14](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.13...v5.0.0-next.14) (2020-05-26)\n\n### Bug Fixes\n\n- improve browser support for website ([#1574](https://github.com/marko-js/marko/tree/master/packages/compiler/issues/1574)) ([9df798a](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/9df798af5e71b71881995b6e06a9fb1b30b6fac2))\n\n# [5.0.0-next.13](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.12...v5.0.0-next.13) (2020-05-20)\n\n### Bug Fixes\n\n- **compiler:** ensure marko babel plugin not overwritten ([ac9a4c5](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/ac9a4c58bdedd1cd3ce762e1b5ce744d77719e3c))\n- **compiler:** regression causing marko plugin to not load ([a08b55a](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/a08b55ac8d34f3031834dc76a7936ebb8964d01d))\n\n# [5.0.0-next.12](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.11...v5.0.0-next.12) (2020-05-19)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.11](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.10...v5.0.0-next.11) (2020-04-27)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.10](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.9...v5.0.0-next.10) (2020-04-23)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.9](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.8...v5.0.0-next.9) (2020-04-16)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.8](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.7...v5.0.0-next.8) (2020-03-17)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.7](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.6...v5.0.0-next.7) (2020-03-17)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.6](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.5...v5.0.0-next.6) (2020-03-16)\n\n### Bug Fixes\n\n- make Marko a peerDependency ([2eac257](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/2eac2572bec0986b2ac3903b1d43bef11d0bd437))\n\n# [5.0.0-next.5](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.4...v5.0.0-next.5) (2020-02-26)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.4](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.3...v5.0.0-next.4) (2020-02-25)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.3](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.2...v5.0.0-next.3) (2020-02-25)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.2](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v5.0.0-next.1...v5.0.0-next.2) (2020-02-25)\n\n**Note:** Version bump only for package @marko/compiler\n\n# [5.0.0-next.1](https://github.com/marko-js/marko/tree/master/packages/compiler/compare/v4.18.48...v5.0.0-next.1) (2020-02-25)\n\n### Features\n\n- import compiler from marko-js/x ([02670c8](https://github.com/marko-js/marko/tree/master/packages/compiler/commit/02670c86931396c52a5a03a7ae4fcef873297f60))\n"
  },
  {
    "path": "packages/compiler/babel-types.d.ts",
    "content": "import { Scope } from \"./dist/traverse\";\nexport * from \"./dist/traverse\";\nexport * from \"./dist/types\";\nexport { Scope };\nexport const MARKO_TYPES: string[];\n\ndeclare module \"./dist/types\" {\n  interface Program {\n    params: Identifier[];\n  }\n}\n"
  },
  {
    "path": "packages/compiler/babel-utils.d.ts",
    "content": "import type { Config, types as t } from \"@marko/compiler\";\n\nexport interface AttributeDefinition {\n  allowExpressions: boolean;\n  filePath: string;\n  name: string;\n  type?: string;\n  html?: boolean;\n  enum?: string[];\n  pattern?: RegExp;\n  required: boolean;\n  defaultValue: unknown;\n  description?: string;\n  deprecated: boolean;\n  autocomplete: Array<{\n    displayText: string;\n    snippet: string;\n    description: string;\n    descriptionMoreURL?: string;\n  }>;\n}\nexport interface PluginDefinition<T = any> {\n  path?: string;\n  hook: Plugin<T>;\n}\nexport interface ParsePluginDefinition<T = any> {\n  path?: string;\n  hook: ParsePlugin<T>;\n}\nexport interface TagDefinition {\n  dir: string;\n  filePath: string;\n  attributeGroups?: string[];\n  patternAttributes?: AttributeDefinition[];\n  attributes: { [x: string]: AttributeDefinition };\n  description?: string;\n  nestedTags?: {\n    [x: string]: TagDefinition & {\n      isNestedTag: true;\n      isRepeated: boolean;\n      targetProperty: string;\n    };\n  };\n  autocomplete?: Array<{\n    displayText: string;\n    snippet: string;\n    description: string;\n    descriptionMoreURL?: string;\n  }>;\n  htmlType?: \"html\" | \"svg\" | \"math\";\n  html: boolean;\n  name: string;\n  isNestedTag?: boolean;\n  isRepeated?: boolean;\n  targetProperty?: string;\n  taglibId: string;\n  types?: string;\n  template?: string;\n  renderer?: string;\n  deprecated: boolean;\n  openTagOnly: boolean;\n  analyzer?: PluginDefinition<t.MarkoTag>;\n  translator?: PluginDefinition<t.MarkoTag>;\n  parser?: ParsePluginDefinition<t.MarkoTag>;\n  transformers?: PluginDefinition<t.MarkoTag>[];\n  migrators?: PluginDefinition<t.MarkoTag>[];\n  parseOptions?: {\n    text?: boolean;\n    statement?: boolean;\n    controlFlow?: boolean;\n    openTagOnly?: boolean;\n    rawOpenTag?: boolean;\n    preserveWhitespace?: boolean;\n  };\n}\n\nexport interface TaglibLookup {\n  getTagsSorted(): TagDefinition[];\n  getTag(tagName: string): undefined | TagDefinition;\n  getAttribute(\n    tagName: string,\n    attrName: string,\n  ): undefined | AttributeDefinition;\n  forEachAttribute(\n    tagName: string,\n    callback: (attr: AttributeDefinition, tag: TagDefinition) => void,\n  ): void;\n  exclusiveTagDiscoveryDirs: undefined | false | string;\n  manualTagsDirs: undefined | Set<string>;\n}\n\nexport interface Attribute {\n  allowExpressions?: boolean;\n  type?: string;\n  html?: boolean;\n  enum?: string[];\n  pattern?: RegExp;\n  required?: boolean;\n  defaultValue?: unknown;\n  description?: string;\n  deprecated?: boolean;\n  autocomplete?: Array<{\n    displayText?: string;\n    snippet?: string;\n    description?: string;\n    descriptionMoreURL?: string;\n  }>;\n}\n\nexport interface Tag {\n  attributeGroups?: string[];\n  patternAttributes?: Attribute[];\n  attributes?: { [x: string]: Attribute };\n  description?: string;\n  nestedTags?: {\n    [x: string]: Tag & {\n      isRepeated?: boolean;\n      targetProperty?: string;\n    };\n  };\n  autocomplete?: Array<{\n    displayText?: string;\n    snippet?: string;\n    description?: string;\n    descriptionMoreURL?: string;\n  }>;\n  htmlType?: \"html\" | \"svg\" | \"math\";\n  html?: boolean;\n  types?: string;\n  template?: string;\n  renderer?: string;\n  deprecated?: boolean;\n  openTagOnly?: boolean;\n  analyze?: Plugin<t.MarkoTag>;\n  translate?: Plugin<t.MarkoTag>;\n  parse?: ParsePlugin<t.MarkoTag>;\n  transform?: Plugin<t.MarkoTag> | Plugin<t.MarkoTag>[];\n  migrate?: Plugin<t.MarkoTag> | Plugin<t.MarkoTag>[];\n  parseOptions?: {\n    rootOnly?: boolean;\n    rawOpenTag?: boolean;\n    openTagOnly?: boolean;\n    controlFlow?: boolean;\n    ignoreAttributes?: boolean;\n    relaxRequireCommas?: boolean;\n    text?: boolean;\n  };\n}\n\nexport function defineTag<T extends Tag>(tag: T): T;\n\nexport type FunctionPlugin<T = any> = (\n  path: t.NodePath<T>,\n  types: typeof t,\n) => void;\nexport interface EnterExitPlugin<T = any> {\n  enter?(path: t.NodePath<T>, types: typeof t): void;\n  exit?(path: t.NodePath<T>, types: typeof t): void;\n}\n\nexport interface ModulePlugin<T = any> {\n  default: EnterExitPlugin<T> | FunctionPlugin<T>;\n}\n\nexport interface ModuleFunctionPlugin<T = any> {\n  default: FunctionPlugin<T>;\n}\n\nexport type ParsePlugin<T = any> = ModuleFunctionPlugin<T> | FunctionPlugin<T>;\n\nexport type Plugin<T = any> =\n  | ModulePlugin<T>\n  | EnterExitPlugin<T>\n  | FunctionPlugin<T>;\n\nexport function assertAllowedAttributes(\n  path: t.NodePath<t.MarkoTag>,\n  allowed: string[],\n): void;\nexport function assertNoArgs(path: t.NodePath<t.MarkoTag>): void;\nexport function assertNoVar(path: t.NodePath<t.MarkoTag>): void;\nexport function assertNoAttributes(path: t.NodePath<t.MarkoTag>): void;\nexport function assertNoParams(path: t.NodePath<t.MarkoTag>): void;\nexport function assertNoAttributeTags(path: t.NodePath<t.MarkoTag>): void;\nexport function assertAttributesOrArgs(path: t.NodePath<t.MarkoTag>): void;\nexport function assertAttributesOrSingleArg(path: t.NodePath<t.MarkoTag>): void;\n\nexport function isNativeTag(path: t.NodePath<t.MarkoTag>): boolean;\nexport function isMacroTag(path: t.NodePath<t.MarkoTag>): boolean;\nexport function isDynamicTag(path: t.NodePath<t.MarkoTag>): boolean;\nexport function isAttributeTag(\n  path: t.NodePath<t.MarkoTag>,\n): path is t.NodePath<t.MarkoTag & { name: t.StringLiteral }>;\nexport function isTransparentTag(\n  path: t.NodePath<t.MarkoTag>,\n): path is t.NodePath<t.MarkoTag & { name: t.StringLiteral }>;\nexport function isLoopTag(\n  path: t.NodePath<t.MarkoTag>,\n): path is t.NodePath<t.MarkoTag & { name: t.StringLiteral }>;\n\nexport function registerMacro(path: t.NodePath<any>, name: string): void;\nexport function hasMacro(path: t.NodePath<any>, name: string): boolean;\nexport function getMacroIdentifierForName(\n  path: t.NodePath<any>,\n  name: string,\n): t.Identifier;\nexport function getMacroIdentifier(path: t.NodePath<t.MarkoTag>): t.Identifier;\nexport function getTagTemplate(\n  path: t.NodePath<t.MarkoTag>,\n): string | undefined;\nexport function getTagDef(\n  path: t.NodePath<t.MarkoTag>,\n): TagDefinition | undefined;\nexport function getFullyResolvedTagName(path: t.NodePath<t.MarkoTag>): string;\n\nexport function findParentTag(\n  path: t.NodePath<t.MarkoTag>,\n): t.NodePath<t.MarkoTag> | undefined;\nexport function findAttributeTags(\n  path: t.NodePath<t.MarkoTag>,\n): Array<t.NodePath<t.MarkoTag>>;\n\nexport function getArgOrSequence(\n  path: t.NodePath<t.MarkoTag | t.MarkoAttribute>,\n): t.Expression;\n\nexport function loadFileForTag(\n  path: t.NodePath<t.MarkoTag>,\n): t.BabelFile | undefined;\nexport function loadFileForImport(\n  file: t.BabelFile,\n  template: string,\n): t.BabelFile | undefined;\n\nexport function normalizeTemplateString(\n  quasis: Array<string | t.TemplateElement>,\n  ...expressions: t.Expression[]\n): t.TemplateLiteral;\n\ntype Loc = { line: number; column: number; index?: number };\ntype LocRange = { start: Loc; end: Loc };\n\nexport function getStart(file: t.BabelFile, node: t.Node): number | null;\nexport function getEnd(file: t.BabelFile, node: t.Node): number | null;\nexport function getLoc(file: t.BabelFile, pos: number): Loc;\nexport function getLocRange(\n  file: t.BabelFile,\n  start: number,\n  end: number,\n): LocRange;\nexport function withLoc<T extends t.Node>(\n  file: t.BabelFile,\n  node: T,\n  start: number,\n  end: number,\n): T;\n\nexport function parseStatements<T extends t.Statement[]>(\n  file: t.BabelFile,\n  str: string,\n  sourceStart?: null | number,\n  sourceEnd?: null | number,\n  sourceOffset?: null | number,\n): T;\n\nexport function parseExpression<T extends t.Expression>(\n  file: t.BabelFile,\n  str: string,\n  sourceStart?: null | number,\n  sourceEnd?: null | number,\n  sourceOffset?: null | number,\n): T;\n\nexport function parseParams(\n  file: t.BabelFile,\n  str: string,\n  sourceStart?: null | number,\n  sourceEnd?: null | number,\n): t.Function[\"params\"];\n\nexport function parseArgs(\n  file: t.BabelFile,\n  str: string,\n  sourceStart?: null | number,\n  sourceEnd?: null | number,\n): t.CallExpression[\"arguments\"];\n\nexport function parseVar(\n  file: t.BabelFile,\n  str: string,\n  sourceStart?: null | number,\n  sourceEnd?: null | number,\n): t.VariableDeclarator[\"id\"];\n\nexport function parseTemplateLiteral(\n  file: t.BabelFile,\n  str: string,\n  sourceStart?: null | number,\n  sourceEnd?: null | number,\n): t.TemplateLiteral;\n\nexport function resolveRelativePath(file: t.BabelFile, request: string): string;\nexport function importDefault(\n  file: t.BabelFile,\n  request: string,\n  nameHint?: string,\n): t.Identifier;\nexport function importStar(\n  file: t.BabelFile,\n  request: string,\n  nameHint?: string,\n): t.Identifier;\nexport function importNamed(\n  file: t.BabelFile,\n  request: string,\n  name: string,\n  nameHint?: string,\n): t.Identifier;\n\nexport function getTaglibLookup(file: t.BabelFile): TaglibLookup;\nexport function getTagDefForTagName(\n  file: t.BabelFile,\n  tagName: string,\n): TagDefinition | undefined;\n\nexport function getTemplateId(\n  optimize: boolean | Config,\n  request: string,\n  child?: string,\n): string;\nexport function resolveTagImport(\n  path: t.NodePath<any>,\n  request: string,\n): string | undefined;\n\nexport enum DiagnosticType {\n  Error = \"error\",\n  Warning = \"warning\",\n  Deprecation = \"deprecation\",\n  Suggestion = \"suggestion\",\n}\n\nexport interface Diagnostic {\n  type: DiagnosticType;\n  label: string;\n  loc: undefined | false | LocRange;\n  fix: boolean | ConfirmFix | SelectFix;\n}\n\nexport interface DiagnosticOptions {\n  label: string;\n  loc?: undefined | false | LocRange;\n  fix?:\n    | undefined\n    | (() => void)\n    | (ConfirmFix & {\n        apply(confirmed: boolean | undefined): void;\n      })\n    | (SelectFix & {\n        apply(selected: string | undefined): void;\n      });\n}\n\nexport function diagnosticError(\n  path: t.NodePath<any>,\n  options: DiagnosticOptions,\n): void;\nexport function diagnosticWarn(\n  path: t.NodePath<any>,\n  options: DiagnosticOptions,\n): void;\nexport function diagnosticDeprecate(\n  path: t.NodePath<any>,\n  options: DiagnosticOptions,\n): void;\nexport function diagnosticSuggest(\n  path: t.NodePath<any>,\n  options: DiagnosticOptions,\n): void;\n\ninterface ConfirmFix {\n  type: \"confirm\";\n  message: string;\n  initialValue?: boolean;\n}\n\ninterface SelectFix {\n  type: \"select\";\n  message: string;\n  options: {\n    value: string;\n    label?: string;\n  }[];\n  initialValue?: string;\n}\n\ntype Computed =\n  | undefined\n  | number\n  | string\n  | boolean\n  | RegExp\n  | bigint\n  | null\n  | { [x: string]: Computed }\n  | Computed[];\nexport function computeNode(node: t.Node): undefined | { value: Computed };\n\nexport function getFile(): t.BabelFile;\nexport function getProgram(): t.NodePath<t.Program>;\n"
  },
  {
    "path": "packages/compiler/babel-utils.js",
    "content": "module.exports = require(\"./dist/babel-utils\");\n"
  },
  {
    "path": "packages/compiler/config.d.ts",
    "content": "declare const Config: {\n  output?: \"html\" | \"dom\" | \"hydrate\" | \"migrate\" | \"source\";\n  errorRecovery?: boolean;\n  applyFixes?: Map<number, unknown>;\n  stripTypes?: boolean;\n  runtimeId?: string | null;\n  ast?: boolean;\n  code?: boolean;\n  writeVersionComment?: boolean;\n  ignoreUnrecognizedTags?: boolean;\n  sourceMaps?: boolean | \"inline\" | \"both\";\n  translator?: any;\n  fileSystem?: Pick<\n    typeof import(\"fs\"),\n    \"statSync\" | \"readFileSync\" | \"readdirSync\"\n  >;\n  modules?: \"esm\" | \"cjs\";\n  resolveVirtualDependency?:\n    | ((\n        filename: string,\n        dep: { virtualPath: string; code: string; map?: any },\n      ) => string | undefined | null)\n    | null;\n  hydrateIncludeImports?: RegExp | ((request: string) => boolean);\n  hydrateInit?: boolean;\n  optimize?: boolean;\n  optimizeKnownTemplates?: string[];\n  cache?: Map<unknown, unknown>;\n  hot?: boolean;\n  /** @deprecated */\n  meta?: boolean;\n  babelConfig?: {\n    ast?: boolean | null;\n    code?: boolean | null;\n    comments?: boolean | null;\n    compact?: boolean | \"auto\" | null;\n    caller?: { name?: string; [x: string]: unknown };\n    minified?: boolean | null;\n    [x: string]: unknown;\n  };\n};\n\nexport = Config;\n"
  },
  {
    "path": "packages/compiler/config.js",
    "content": "module.exports = require(\"./dist/config\").default;\n"
  },
  {
    "path": "packages/compiler/index.d.ts",
    "content": "import { Diagnostic, TaglibLookup } from \"@marko/compiler/babel-utils\";\nimport { SourceMap } from \"magic-string\";\n\nimport * as types from \"./babel-types\";\nexport { types };\n\ntype _Config = typeof import(\"./config\");\nexport interface Config extends _Config {}\ninterface Dep {\n  type: string;\n  path: string;\n  [x: string]: unknown;\n}\n\ninterface VirtualDep {\n  type: string;\n  code: string;\n  virtualPath: string;\n  startPos?: number;\n  endPos?: number;\n  [x: string]: unknown;\n}\n\nexport interface MarkoMeta {\n  id: string;\n  component?: string;\n  watchFiles: string[];\n  tags?: string[];\n  deps: Array<string | Dep | VirtualDep>;\n  analyzedTags?: [string, ...string[]];\n  diagnostics: Diagnostic[];\n  api: undefined | string;\n}\n\nexport interface CompileResult {\n  ast: types.File;\n  code: string;\n  map: SourceMap;\n  meta: MarkoMeta;\n}\n\nexport const globalConfig: Config;\n\nexport function configure(config: Config): void;\n\nexport function compile(\n  src: string,\n  filename: string,\n  config?: Config,\n): Promise<CompileResult>;\n\nexport function compileSync(\n  src: string,\n  filename: string,\n  config?: Config,\n): CompileResult;\n\nexport function compileFile(\n  filename: string,\n  config?: Config,\n): Promise<CompileResult>;\n\nexport function compileFileSync(\n  filename: string,\n  config?: Config,\n): CompileResult;\n\nexport function getRuntimeEntryFiles(\n  output: string,\n  translator?: string | undefined,\n): string[];\n\nexport namespace taglib {\n  export function resolveOptionalTaglibs(\n    taglibIds: string[],\n  ): [id: string, props: { [x: string]: unknown }][];\n  export function excludeDir(dirname: string): void;\n  export function excludePackage(packageName: string): void;\n  export function register(id: string): void;\n  export function register(id: string, props: { [x: string]: unknown }): void;\n  export function buildLookup(\n    dirname: string,\n    translator?: unknown,\n    onError?: (err: Error) => void,\n  ): TaglibLookup;\n  export function clearCaches(): void;\n}\n"
  },
  {
    "path": "packages/compiler/internal/babel/index.ts",
    "content": "// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path=\"./modules.d.ts\" />\n\ndeclare module \"@babel/core\" {\n  export const File: any;\n}\n\nexport { codeFrameColumns } from \"@babel/code-frame\";\nexport {\n  File,\n  loadPartialConfig,\n  loadPartialConfigAsync,\n  transformAsync,\n  transformSync,\n} from \"@babel/core\";\nexport { default as generator } from \"@babel/generator\";\nexport { parse, parseExpression } from \"@babel/parser\";\nexport { default as pluginSyntaxTypeScript } from \"@babel/plugin-syntax-typescript\";\nexport { default as pluginTransformModulesCommonjs } from \"@babel/plugin-transform-modules-commonjs\";\nexport { default as pluginTransformTypeScript } from \"@babel/plugin-transform-typescript\";\nexport { default as traverse } from \"@babel/traverse\";\nexport * as types from \"@babel/types\";\n"
  },
  {
    "path": "packages/compiler/internal/babel/modules.d.ts",
    "content": "declare module \"@babel/core\";\ndeclare module \"@babel/types\";\ndeclare module \"@babel/parser\";\ndeclare module \"@babel/traverse\";\ndeclare module \"@babel/generator\";\ndeclare module \"@babel/code-frame\";\ndeclare module \"@babel/plugin-syntax-typescript\";\ndeclare module \"@babel/plugin-transform-modules-commonjs\";\ndeclare module \"@babel/plugin-transform-typescript\";\n"
  },
  {
    "path": "packages/compiler/internal/babel/package.json",
    "content": "{\n  \"main\": \"index.ts\",\n  \"types\": \"index.ts\",\n  \"main:override\": \"../../dist/babel.js\"\n}\n"
  },
  {
    "path": "packages/compiler/modules.d.ts",
    "content": "export const cwd: string;\nexport const root: string;\nexport const pkg: null | Record<string, unknown>;\nexport const require: (id: string) => unknown;\nexport const resolve: (id: string, from: string) => string;\nexport const tryResolve: (id: string, from: string) => string | undefined;\n"
  },
  {
    "path": "packages/compiler/modules.js",
    "content": "\"use strict\";\n\nif (process.env.BUNDLE || typeof document === \"object\") {\n  exports.cwd = \"/\";\n  exports.root = \"/\";\n  exports.pkg = null;\n  exports.require = null;\n  exports.resolve = null;\n  exports.tryResolve = null;\n} else {\n  const resolveFrom = require(\"resolve-from\");\n  let cwd = \"/\";\n  let root = cwd;\n  let pkg = null;\n\n  if (typeof process === \"object\" && typeof process.cwd === \"function\") {\n    try {\n      cwd = process.cwd();\n      pkg = require(\"lasso-package-root\").getRootPackage(cwd);\n      if (pkg) root = pkg.__dirname;\n    } catch {\n      // ignore\n    }\n  }\n  exports.cwd = cwd;\n  exports.root = root;\n  exports.pkg = pkg;\n  exports.require = require;\n  exports.resolve = (id, from) => {\n    return resolveFrom(from || root, id);\n  };\n  exports.tryResolve = (id, from) => {\n    return resolveFrom.silent(from || root, id);\n  };\n}\n"
  },
  {
    "path": "packages/compiler/package.json",
    "content": "{\n  \"name\": \"@marko/compiler\",\n  \"version\": \"5.39.62\",\n  \"description\": \"Marko template to JS compiler.\",\n  \"keywords\": [\n    \"babel\",\n    \"htmljs\",\n    \"marko\",\n    \"parse\",\n    \"parser\",\n    \"plugin\"\n  ],\n  \"homepage\": \"https://github.com/marko-js/marko/blob/main/packages/runtime-class/docs/compiler.md\",\n  \"bugs\": \"https://github.com/marko-js/marko/issues/new?template=Bug_report.md\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/marko-js/marko.git\",\n    \"directory\": \"packages/compiler\"\n  },\n  \"license\": \"MIT\",\n  \"author\": \"Dylan Piercey <dpiercey@ebay.com>\",\n  \"exports\": {\n    \".\": {\n      \"types\": \"./index.d.ts\",\n      \"default\": \"./src/index.js\"\n    },\n    \"./babel-utils\": {\n      \"types\": \"./babel-utils.d.ts\",\n      \"default\": \"./src/babel-utils/index.js\"\n    },\n    \"./config\": {\n      \"types\": \"./config.d.ts\",\n      \"default\": \"./src/config.js\"\n    },\n    \"./register\": {\n      \"types\": \"./register.d.ts\",\n      \"default\": \"./src/register.js\"\n    },\n    \"./modules\": {\n      \"types\": \"./modules.d.ts\",\n      \"default\": \"./modules.js\"\n    },\n    \"./internal/babel\": \"./internal/babel/index.ts\",\n    \"./babel-types\": \"./babel-types.d.ts\",\n    \"./dist/types\": \"./dist/types.d.ts\",\n    \"./package\": \"./package.json\",\n    \"./package.json\": \"./package.json\",\n    \"./*\": \"./*\"\n  },\n  \"main\": \"src/index.js\",\n  \"types\": \"index.d.ts\",\n  \"files\": [\n    \"dist\",\n    \"internal\",\n    \"config.js\",\n    \"config.d.ts\",\n    \"modules.js\",\n    \"index.d.ts\",\n    \"babel-types.d.ts\",\n    \"babel-utils.js\",\n    \"babel-utils.d.ts\",\n    \"register.js\",\n    \"register.d.ts\"\n  ],\n  \"scripts\": {\n    \"build\": \"babel ./src --out-dir ./dist --copy-files --config-file ../../babel.config.js --env-name=production && node scripts/bundle-babel.mts\",\n    \"build-babel-types\": \"node -r ~ts scripts/types\"\n  },\n  \"dependencies\": {\n    \"@luxass/strip-json-comments\": \"^1.4.0\",\n    \"complain\": \"^1.6.1\",\n    \"he\": \"^1.2.0\",\n    \"htmljs-parser\": \"^5.10.2\",\n    \"jsesc\": \"^3.1.0\",\n    \"kleur\": \"^4.1.5\",\n    \"lasso-package-root\": \"^1.0.1\",\n    \"raptor-regexp\": \"^1.0.1\",\n    \"raptor-util\": \"^3.2.0\",\n    \"relative-import-path\": \"^1.0.0\",\n    \"resolve-from\": \"^5.0.0\",\n    \"self-closing-tags\": \"^1.0.1\",\n    \"source-map-support\": \"^0.5.21\"\n  },\n  \"devDependencies\": {\n    \"marko\": \"^5.38.32\"\n  },\n  \"engines\": {\n    \"node\": \"18 || 20 || >=22\"\n  },\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"exports:override\": {\n    \".\": {\n      \"types\": \"./index.d.ts\",\n      \"default\": \"./dist/index.js\"\n    },\n    \"./babel-utils\": {\n      \"types\": \"./babel-utils.d.ts\",\n      \"default\": \"./dist/babel-utils/index.js\"\n    },\n    \"./config\": {\n      \"types\": \"./config.d.ts\",\n      \"default\": \"./dist/config.js\"\n    },\n    \"./register\": {\n      \"types\": \"./register.d.ts\",\n      \"default\": \"./dist/register.js\"\n    },\n    \"./modules\": \"./modules.js\",\n    \"./internal/babel\": {\n      \"browser\": \"./dist/babel.web.js\",\n      \"default\": \"./dist/babel.js\"\n    },\n    \"./babel-types\": \"./babel-types.d.ts\",\n    \"./dist/types\": \"./dist/types.d.ts\",\n    \"./package\": \"./package.json\",\n    \"./package.json\": \"./package.json\",\n    \"./*\": \"./*\"\n  },\n  \"main:override\": \"dist/index.js\"\n}\n"
  },
  {
    "path": "packages/compiler/register.d.ts",
    "content": "import { Config } from \".\";\n\ntype Extensions = Partial<typeof require.extensions>;\nexport default function register(\n  config: Config & { extensions?: Extensions },\n): typeof require.extensions & {\n  \".marko\": (module: Module, filename: string) => any;\n};\n"
  },
  {
    "path": "packages/compiler/register.js",
    "content": "module.exports = require(\"./dist/register\");\n"
  },
  {
    "path": "packages/compiler/scripts/bundle-babel.mts",
    "content": "import path from \"node:path\";\n\nimport { build } from \"rolldown\";\n\nawait Promise.all(\n  ([\"browser\", \"node\"] as const).map((platform) =>\n    build({\n      platform,\n      input: \"internal/babel/index.ts\",\n      cwd: path.join(import.meta.dirname, \"..\"),\n      external: [\"browserslist\", \"path\", \"assert\", \"fs\"],\n      output: {\n        sourcemap: false,\n        minify: \"dce-only\",\n        format: \"cjs\",\n        intro: \"'use strict';\",\n        file: platform === \"node\" ? \"dist/babel.js\" : \"dist/babel.web.js\",\n      },\n    }),\n  ),\n);\n"
  },
  {
    "path": "packages/compiler/scripts/types/babel-traverse.js",
    "content": "/**********************************************************************************************\nSome of the source code in this file is sourced from https://github.com/babel/babel, and is licensed as below:\n\nMIT License\n\nCopyright (c) 2014-present Sebastian McKenzie and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n***********************************************************************************************/\n\nimport { MARKO_TYPES } from \"@babel/types\";\nimport fs from \"fs\";\n\nconst HUB_INTERFACE = \"export interface HubInterface {\";\nconst HUB_CLASS =\n  \"export class Hub implements HubInterface {\\n    constructor();\";\nconst IMPORT = 'import * as t from \"@babel/types\"';\nconst EXPORT_NODE = \"export import Node = t.Node;\";\nconst NODE_PATH_GET =\n  \"get(key: string, context?: boolean | TraversalContext): NodePath | NodePath[];\";\nconst IS =\n  \"// #region ------------------------- isXXX -------------------------\";\nconst ASSERT =\n  \"// #region ------------------------- assertXXX -------------------------\";\nconst BREAK = \"\\n    \";\n\nconst data = fs.readFileSync(\n  require.resolve(\"@types/babel__traverse/index.d.ts\"),\n  \"utf8\",\n);\n[HUB_INTERFACE, HUB_CLASS, IMPORT, EXPORT_NODE, IS, ASSERT].forEach((str) => {\n  if (data.indexOf(str) === -1) {\n    console.error(\n      `Unable to find \\`${str}\\` in @types/babel__traverse/index.d.ts`,\n    );\n    process.exit(1);\n  }\n});\n\nvar result = data\n  .replace(\n    HUB_INTERFACE,\n    `export interface BabelFile {\n    ast: t.File,\n    path: NodePath<t.Program>,\n    hub: HubInterface,\n    code: string,\n    opts: Record<string, unknown> & { filename: string },\n    metadata: Record<string, unknown> & {\n      marko: import(\"@marko/compiler\").MarkoMeta\n    },\n    markoOpts: Required<import('@marko/compiler').Config>\n}\n\n${HUB_INTERFACE}\n    file: BabelFile;`,\n  )\n  .replace(\n    HUB_CLASS,\n    `${HUB_CLASS}\n    file: BabelFile;`,\n  )\n  .replace(IMPORT, `import * as t from './types'`)\n  .replace(EXPORT_NODE, \"type Node = t.Node\")\n  .replace(NODE_PATH_GET, \"\")\n  .replace(\n    IS,\n    IS +\n      BREAK +\n      MARKO_TYPES.map(\n        (t) => `is${t}(opts?: object | null): this is NodePath<t.${t}>;`,\n      ).join(BREAK),\n  )\n  .replace(\n    ASSERT,\n    ASSERT +\n      BREAK +\n      MARKO_TYPES.map(\n        (t) =>\n          `assert${t}(opts?: object | null): asserts this is NodePath<t.${t}>;`,\n      ).join(BREAK),\n  );\n\nexport default result;\n"
  },
  {
    "path": "packages/compiler/scripts/types/babel-types.js",
    "content": "/**********************************************************************************************\nSome of the source code in this file is sourced from https://github.com/babel/babel, and is licensed as below:\n\nMIT License\n\nCopyright (c) 2014-present Sebastian McKenzie and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n***********************************************************************************************/\n\nimport * as t from \"@babel/types\";\n\nlet code = `// NOTE: This file is autogenerated. Do not modify.\n// See packages/babel-types/scripts/generators/typescript-legacy.js for script used.\n\ninterface BaseComment {\n  value: string;\n  start: number;\n  end: number;\n  loc: SourceLocation;\n  type: \"CommentBlock\" | \"CommentLine\";\n}\n\nexport interface CommentBlock extends BaseComment {\n  type: \"CommentBlock\";\n}\n\nexport interface CommentLine extends BaseComment {\n  type: \"CommentLine\";\n}\n\nexport type Comment = CommentBlock | CommentLine;\n\nexport interface SourceLocation {\n  start: {\n    line: number;\n    column: number;\n  };\n\n  end: {\n    line: number;\n    column: number;\n  };\n}\n\nexport interface NodeExtra {\n  [key: string]: unknown;\n}\n\ninterface BaseNode {\n  leadingComments: ReadonlyArray<Comment> | null;\n  innerComments: ReadonlyArray<Comment> | null;\n  trailingComments: ReadonlyArray<Comment> | null;\n  start: number | null;\n  end: number | null;\n  loc: SourceLocation | null;\n  type: Node[\"type\"];\n  extra?: NodeExtra;\n}\n\nexport type Node = ${t.TYPES.sort().join(\" | \")};\\n\\n`;\n\n//\n\nconst lines = [];\n\nfor (const type in t.NODE_FIELDS) {\n  const fields = t.NODE_FIELDS[type];\n  const fieldNames = sortFieldNames(Object.keys(t.NODE_FIELDS[type]), type);\n  const builderNames = t.BUILDER_KEYS[type];\n\n  const struct = ['type: \"' + type + '\";'];\n  const args = [];\n\n  fieldNames.forEach((fieldName) => {\n    const field = fields[fieldName];\n    // Future / annoying TODO:\n    // MemberExpression.property, ObjectProperty.key and ObjectMethod.key need special cases; either:\n    // - convert the declaration to chain() like ClassProperty.key and ClassMethod.key,\n    // - declare an alias type for valid keys, detect the case and reuse it here,\n    // - declare a disjoint union with, for example, ObjectPropertyBase,\n    //   ObjectPropertyLiteralKey and ObjectPropertyComputedKey, and declare ObjectProperty\n    //   as \"ObjectPropertyBase & (ObjectPropertyLiteralKey | ObjectPropertyComputedKey)\"\n    let typeAnnotation = stringifyValidator(field.validate, \"\");\n\n    if (isNullable(field) && !hasDefault(field)) {\n      typeAnnotation += \" | null\";\n    }\n\n    if (builderNames.includes(fieldName)) {\n      if (areAllRemainingFieldsNullable(fieldName, builderNames, fields)) {\n        args.push(\n          `${t.toBindingIdentifierName(fieldName)}${\n            isNullable(field) ? \"?:\" : \":\"\n          } ${typeAnnotation}`,\n        );\n      } else {\n        args.push(\n          `${t.toBindingIdentifierName(fieldName)}: ${typeAnnotation}${\n            isNullable(field) ? \" | undefined\" : \"\"\n          }`,\n        );\n      }\n    }\n\n    const alphaNumeric = /^\\w+$/;\n\n    if (t.isValidIdentifier(fieldName) || alphaNumeric.test(fieldName)) {\n      struct.push(`${fieldName}: ${typeAnnotation};`);\n    } else {\n      struct.push(`\"${fieldName}\": ${typeAnnotation};`);\n    }\n  });\n\n  code += `export interface ${type} extends BaseNode {\n  ${struct.join(\"\\n  \").trim()}\n}\\n\\n`;\n\n  // super and import are reserved words in JavaScript\n  if (type !== \"Super\" && type !== \"Import\") {\n    lines.push(\n      `export function ${toFunctionName(type)}(${args.join(\", \")}): ${type};`,\n    );\n  } else {\n    const functionName = toFunctionName(type);\n    lines.push(\n      `declare function _${functionName}(${args.join(\", \")}): ${type};`,\n      `export { _${functionName} as ${functionName}}`,\n    );\n  }\n}\n\nfor (const typeName of t.TYPES) {\n  const isDeprecated = !!t.DEPRECATED_KEYS[typeName];\n  const realName = isDeprecated ? t.DEPRECATED_KEYS[typeName] : typeName;\n\n  const result =\n    t.NODE_FIELDS[realName] || t.FLIPPED_ALIAS_KEYS[realName]\n      ? `node is ${realName}`\n      : \"boolean\";\n\n  if (isDeprecated) {\n    lines.push(`/** @deprecated Use \\`is${realName}\\` */`);\n  }\n  lines.push(\n    `export function is${typeName}(node: object | null | undefined, opts?: object | null): ${result};`,\n  );\n\n  if (isDeprecated) {\n    lines.push(`/** @deprecated Use \\`assert${realName}\\` */`);\n  }\n  lines.push(\n    `export function assert${typeName}(node: object | null | undefined, opts?: object | null): void;`,\n  );\n}\n\nlines.push(\n  // assert/\n  `export function assertNode(obj: any): void`,\n\n  // builders/\n\n  `export function createTypeAnnotationBasedOnTypeof(type: 'string' | 'number' | 'undefined' | 'boolean' | 'function' | 'object' | 'symbol'): StringTypeAnnotation | VoidTypeAnnotation | NumberTypeAnnotation | BooleanTypeAnnotation | GenericTypeAnnotation`,\n  `export function createUnionTypeAnnotation<T extends FlowType>(types: [T]): T`,\n  `export function createFlowUnionType<T extends FlowType>(types: [T]): T`,\n  // this probably misbehaves if there are 0 elements, and it's not a UnionTypeAnnotation if there's only 1\n  // it is possible to require \"2 or more\" for this overload ([T, T, ...T[]]) but it requires typescript 3.0\n  `export function createUnionTypeAnnotation(types: ReadonlyArray<FlowType>): UnionTypeAnnotation`,\n  `export function createFlowUnionType(types: ReadonlyArray<FlowType>): UnionTypeAnnotation`,\n  // this smells like \"internal API\"\n\n  `export function buildChildren(node: { children: ReadonlyArray<JSXText | JSXExpressionContainer | JSXSpreadChild | JSXElement | JSXFragment | JSXEmptyExpression> }): JSXElement['children']`,\n\n  // clone/\n  `export function clone<T extends Node>(n: T): T;`,\n  `export function cloneDeep<T extends Node>(n: T): T;`,\n  `export function cloneDeepWithoutLoc<T extends Node>(n: T): T;`,\n  `export function cloneNode<T extends Node>(n: T, deep?: boolean, withoutLoc?: boolean): T;`,\n  `export function cloneWithoutLoc<T extends Node>(n: T): T;`,\n\n  // comments/\n  `export type CommentTypeShorthand = 'leading' | 'inner' | 'trailing'`,\n\n  `export function addComment<T extends Node>(node: T, type: CommentTypeShorthand, content: string, line?: boolean): T`,\n\n  `export function addComments<T extends Node>(node: T, type: CommentTypeShorthand, comments: ReadonlyArray<Comment>): T`,\n  `export function inheritInnerComments(node: Node, parent: Node): void`,\n  `export function inheritLeadingComments(node: Node, parent: Node): void`,\n  `export function inheritsComments<T extends Node>(node: T, parent: Node): void`,\n  `export function inheritTrailingComments(node: Node, parent: Node): void`,\n  `export function removeComments<T extends Node>(node: T): T`,\n\n  // converters/\n\n  `export function ensureBlock(node: Extract<Node, { body: BlockStatement | Statement | Expression }>): BlockStatement`,\n  // too complex?\n\n  `export function ensureBlock<K extends keyof Extract<Node, { body: BlockStatement | Statement | Expression }> = 'body'>(node: Extract<Node, Record<K, BlockStatement | Statement | Expression>>, key: K): BlockStatement`,\n  // gatherSequenceExpressions is not exported\n  `export function toBindingIdentifierName(name: { toString(): string } | null | undefined): string`,\n  `export function toBlock(node: Statement | Expression, parent?: Function | null): BlockStatement`,\n  // it is possible for `node` to be an arbitrary object if `key` is always provided,\n  // but that doesn't look like intended API\n\n  `export function toComputedKey<T extends Extract<Node, { computed: boolean | null }>>(node: T, key?: Expression | Identifier): Expression`,\n  `export function toExpression(node: Function): FunctionExpression`,\n  `export function toExpression(node: Class): ClassExpression`,\n  `export function toExpression(node: ExpressionStatement | Expression | Class | Function): Expression`,\n  `export function toIdentifier(name: { toString(): string } | null | undefined): string`,\n  `export function toKeyAlias(node: Method | Property, key?: Node): string`,\n  // NOTE: this actually uses Scope from @babel/traverse, but we can't add a dependency on its types,\n  // as they live in @types. Declare the structural subset that is required.\n\n  `export function toSequenceExpression(nodes: ReadonlyArray<Node>, scope: { push(value: { id: LVal; kind: 'var'; init?: Expression}): void; buildUndefinedNode(): Node }): SequenceExpression | undefined`,\n  `export function toStatement(node: AssignmentExpression, ignore?: boolean): ExpressionStatement`,\n  `export function toStatement(node: Statement | AssignmentExpression, ignore?: boolean): Statement`,\n  `export function toStatement(node: Class, ignore: true): ClassDeclaration | undefined`,\n  `export function toStatement(node: Class, ignore?: boolean): ClassDeclaration`,\n  `export function toStatement(node: Function, ignore: true): FunctionDeclaration | undefined`,\n  `export function toStatement(node: Function, ignore?: boolean): FunctionDeclaration`,\n\n  `export function toStatement(node: Statement | Class | Function | AssignmentExpression, ignore: true): Statement | undefined`,\n\n  `export function toStatement(node: Statement | Class | Function | AssignmentExpression, ignore?: boolean): Statement`,\n\n  `export function valueToNode(value: undefined): Identifier`, // (should this not be a UnaryExpression to avoid shadowing?)\n  `export function valueToNode(value: boolean): BooleanLiteral`,\n  `export function valueToNode(value: null): NullLiteral`,\n  `export function valueToNode(value: string): StringLiteral`,\n  // Infinities and NaN need to use a BinaryExpression; negative values must be wrapped in UnaryExpression\n  `export function valueToNode(value: number): NumericLiteral | BinaryExpression | UnaryExpression`,\n  `export function valueToNode(value: RegExp): RegExpLiteral`,\n\n  `export function valueToNode(value: ReadonlyArray<undefined | boolean | null | string | number | RegExp | object>): ArrayExpression`,\n  // this throws with objects that are not PlainObject according to lodash,\n  // or if there are non-valueToNode-able values\n  `export function valueToNode(value: object): ObjectExpression`,\n\n  `export function valueToNode(value: undefined | boolean | null | string | number | RegExp | object): Expression`,\n\n  // modifications/\n\n  `export function removeTypeDuplicates(types: ReadonlyArray<FlowType | false | null | undefined>): FlowType[]`,\n\n  `export function appendToMemberExpression<T extends Pick<MemberExpression, 'object' | 'property'>>(member: T, append: MemberExpression['property'], computed?: boolean): T`,\n\n  `export function inherits<T extends Node | null | undefined>(child: T, parent: Node | null | undefined): T`,\n\n  `export function prependToMemberExpression<T extends Pick<MemberExpression, 'object' | 'property'>>(member: T, prepend: MemberExpression['object']): T`,\n  `export function removeProperties(\n  n: Node,\n  opts?: { preserveComments: boolean } | null\n): void;`,\n  `export function removePropertiesDeep<T extends Node>(\n  n: T,\n  opts?: { preserveComments: boolean } | null\n): T;`,\n\n  // retrievers/\n\n  `export function getBindingIdentifiers(node: Node, duplicates: true, outerOnly?: boolean): Record<string, Array<Identifier>>`,\n\n  `export function getBindingIdentifiers(node: Node, duplicates?: false, outerOnly?: boolean): Record<string, Identifier>`,\n\n  `export function getBindingIdentifiers(node: Node, duplicates: boolean, outerOnly?: boolean): Record<string, Identifier | Array<Identifier>>`,\n\n  `export function getOuterBindingIdentifiers(node: Node, duplicates: true): Record<string, Array<Identifier>>`,\n  `export function getOuterBindingIdentifiers(node: Node, duplicates?: false): Record<string, Identifier>`,\n\n  `export function getOuterBindingIdentifiers(node: Node, duplicates: boolean): Record<string, Identifier | Array<Identifier>>`,\n\n  // traverse/\n  `export type TraversalAncestors = ReadonlyArray<{\n    node: Node,\n    key: string,\n    index?: number,\n  }>;\n  export type TraversalHandler<T> = (\n    this: undefined, node: Node, parent: TraversalAncestors, type: T\n  ) => void;\n  export type TraversalHandlers<T> = {\n    enter?: TraversalHandler<T>,\n    exit?: TraversalHandler<T>,\n  };`.replace(/(^|\\n) {2}/g, \"$1\"),\n\n  `export function traverse<T>(n: Node, h: TraversalHandler<T> | TraversalHandlers<T>, state?: T): void;`,\n  `export function traverseFast<T>(n: Node, h: TraversalHandler<T>, state?: T): void;`,\n\n  // utils/\n  // cleanJSXElementLiteralChild is not exported\n  // inherit is not exported\n  `export function shallowEqual<T extends object>(actual: object, expected: T): actual is T`,\n\n  // validators/\n\n  `export function buildMatchMemberExpression(match: string, allowPartial?: boolean): (node: Node | null | undefined) => node is MemberExpression`,\n\n  `export function is<T extends Node['type']>(type: T, n: Node | null | undefined, required?: undefined): n is Extract<Node, { type: T }>`,\n\n  `export function is<T extends Node['type'], P extends Extract<Node, { type: T }>>(type: T, n: Node | null | undefined, required: Partial<P>): n is P`,\n\n  `export function is<P extends Node>(type: string, n: Node | null | undefined, required: Partial<P>): n is P`,\n  `export function is(type: string, n: Node | null | undefined, required?: Partial<Node>): n is Node`,\n  `export function isBinding(node: Node, parent: Node, grandparent?: Node): boolean`,\n\n  `export function isBlockScoped(node: Node): node is FunctionDeclaration | ClassDeclaration | VariableDeclaration`,\n  `export function isImmutable(node: Node): node is Immutable`,\n  `export function isLet(node: Node): node is VariableDeclaration`,\n  `export function isNode(node: object | null | undefined): node is Node`,\n  `export function isNodesEquivalent<T extends Partial<Node>>(a: T, b: any): b is T`,\n  `export function isNodesEquivalent(a: any, b: any): boolean`,\n  `export function isPlaceholderType(placeholderType: Node['type'], targetType: Node['type']): boolean`,\n  `export function isReferenced(node: Node, parent: Node, grandparent?: Node): boolean`,\n  `export function isScope(node: Node, parent: Node): node is Scopable`,\n  `export function isSpecifierDefault(specifier: ModuleSpecifier): boolean`,\n  `export function isType<T extends Node['type']>(nodetype: string, targetType: T): nodetype is T`,\n  `export function isType(nodetype: string | null | undefined, targetType: string): boolean`,\n  `export function isValidES3Identifier(name: string): boolean`,\n  `export function isValidIdentifier(name: string): boolean`,\n  `export function isVar(node: Node): node is VariableDeclaration`,\n  // the MemberExpression implication is incidental, but it follows from the implementation\n\n  `export function matchesPattern(node: Node | null | undefined, match: string | ReadonlyArray<string>, allowPartial?: boolean): node is MemberExpression`,\n\n  `export function validate<T extends Node, K extends keyof T>(n: Node | null | undefined, key: K, value: T[K]): void;`,\n  `export function validate(n: Node, key: string, value: any): void;`,\n);\n\nfor (const type in t.DEPRECATED_KEYS) {\n  code += `/**\n * @deprecated Use \\`${t.DEPRECATED_KEYS[type]}\\`\n */\nexport type ${type} = ${t.DEPRECATED_KEYS[type]};\\n\n`;\n}\n\nfor (const type in t.FLIPPED_ALIAS_KEYS) {\n  const types = t.FLIPPED_ALIAS_KEYS[type];\n  code += `export type ${type} = ${types\n    .map((type) => `${type}`)\n    .join(\" | \")};\\n`;\n}\ncode += \"\\n\";\n\ncode += \"export interface Aliases {\\n\";\nfor (const type in t.FLIPPED_ALIAS_KEYS) {\n  code += `  ${type}: ${type};\\n`;\n}\ncode += \"}\\n\\n\";\n\ncode += lines.join(\"\\n\") + \"\\n\";\n\n//\n\nexport default code;\n\n//\n\nfunction areAllRemainingFieldsNullable(fieldName, fieldNames, fields) {\n  const index = fieldNames.indexOf(fieldName);\n  return fieldNames.slice(index).every((_) => isNullable(fields[_]));\n}\n\nfunction hasDefault(field) {\n  return field.default != null;\n}\n\nfunction isNullable(field) {\n  return field.optional || hasDefault(field);\n}\n\nfunction sortFieldNames(fields, type) {\n  return fields.sort((fieldA, fieldB) => {\n    const indexA = t.BUILDER_KEYS[type].indexOf(fieldA);\n    const indexB = t.BUILDER_KEYS[type].indexOf(fieldB);\n    if (indexA === indexB) return fieldA < fieldB ? -1 : 1;\n    if (indexA === -1) return 1;\n    if (indexB === -1) return -1;\n    return indexA - indexB;\n  });\n}\n\nfunction stringifyValidator(validator, nodePrefix) {\n  if (validator === undefined) {\n    return \"any\";\n  }\n\n  if (validator.each) {\n    return `Array<${stringifyValidator(validator.each, nodePrefix)}>`;\n  }\n\n  if (validator.chainOf) {\n    const ret = stringifyValidator(validator.chainOf[1], nodePrefix);\n    return Array.isArray(ret) && ret.length === 1 && ret[0] === \"any\"\n      ? stringifyValidator(validator.chainOf[0], nodePrefix)\n      : ret;\n  }\n\n  if (validator.oneOf) {\n    return validator.oneOf.map(JSON.stringify).join(\" | \");\n  }\n\n  if (validator.oneOfNodeTypes) {\n    return validator.oneOfNodeTypes.map((_) => nodePrefix + _).join(\" | \");\n  }\n\n  if (validator.oneOfNodeOrValueTypes) {\n    return validator.oneOfNodeOrValueTypes\n      .map((_) => {\n        return isValueType(_) ? _ : nodePrefix + _;\n      })\n      .join(\" | \");\n  }\n\n  if (validator.type) {\n    return validator.type;\n  }\n\n  if (validator.shapeOf) {\n    return (\n      \"{ \" +\n      Object.keys(validator.shapeOf)\n        .map((shapeKey) => {\n          const propertyDefinition = validator.shapeOf[shapeKey];\n          if (propertyDefinition.validate) {\n            const isOptional =\n              propertyDefinition.optional || propertyDefinition.default != null;\n            return (\n              shapeKey +\n              (isOptional ? \"?: \" : \": \") +\n              stringifyValidator(propertyDefinition.validate)\n            );\n          }\n          return null;\n        })\n        .filter(Boolean)\n        .join(\", \") +\n      \" }\"\n    );\n  }\n\n  return [\"any\"];\n}\n\nfunction isValueType(type) {\n  return type.charAt(0).toLowerCase() === type.charAt(0);\n}\n\nfunction toFunctionName(typeName) {\n  const _ = typeName.replace(/^TS/, \"ts\").replace(/^JSX/, \"jsx\");\n  return _.slice(0, 1).toLowerCase() + _.slice(1);\n}\n"
  },
  {
    "path": "packages/compiler/scripts/types.js",
    "content": "import fs from \"fs\";\n\nimport babelTraverseCode from \"./types/babel-traverse\";\nimport babelTypesCode from \"./types/babel-types\";\n\nfs.mkdirSync(\"dist\", { recursive: true });\nfs.writeFileSync(\"dist/types.d.ts\", babelTypesCode);\nfs.writeFileSync(\"dist/traverse.d.ts\", babelTraverseCode);\n"
  },
  {
    "path": "packages/compiler/src/babel-plugin/file.js",
    "content": "import { File } from \"@marko/compiler/internal/babel\";\n\nimport { buildCodeFrameError } from \"../util/build-code-frame\";\n\nexport class MarkoFile extends File {\n  addHelper() {\n    throw new Error(\"addHelper is not supported during a Marko transform\");\n  }\n\n  buildCodeFrameError(node, msg) {\n    return buildCodeFrameError(this.opts.filename, this.code, node.loc, msg);\n  }\n}\n"
  },
  {
    "path": "packages/compiler/src/babel-plugin/index.js",
    "content": "import {\n  pluginTransformTypeScript,\n  traverse,\n  types as t,\n} from \"@marko/compiler/internal/babel\";\nimport path from \"path\";\n\nimport { diagnosticError } from \"../babel-utils/diagnostics\";\nimport { getFileInternal, setFileInternal } from \"../babel-utils/get-file\";\nimport { getTemplateId } from \"../babel-utils/tags\";\nimport { buildLookup } from \"../taglib\";\nimport taglibConfig from \"../taglib/config\";\nimport { buildCodeFrameError } from \"../util/build-code-frame\";\nimport throwAggregateError from \"../util/merge-errors\";\nimport { Hash } from \"../util/quick-hash\";\nimport shouldOptimize from \"../util/should-optimize\";\nimport tryLoadTranslator from \"../util/try-load-translator\";\nimport { MarkoFile } from \"./file\";\nimport { parseMarko } from \"./parser\";\nimport { visitor as migrate } from \"./plugins/migrate\";\nimport { visitor as transform } from \"./plugins/transform\";\n\nconst SOURCE_FILES = new WeakMap();\nlet stripTypesVisitor;\n\nexport default (api, markoOpts) => {\n  api.assertVersion(7);\n  const translator = (markoOpts.translator = tryLoadTranslator(\n    markoOpts.translator,\n  ));\n  markoOpts.output = markoOpts.output || \"html\";\n\n  if (markoOpts.optimize === undefined) {\n    api.cache.using(shouldOptimize);\n    markoOpts.optimize = shouldOptimize();\n  }\n\n  if (!translator || !translator.translate) {\n    throw new Error(\n      \"@marko/compiler: translator must provide a translate visitor object\",\n    );\n  }\n\n  if (\n    markoOpts.output === \"hydrate\" &&\n    typeof markoOpts.resolveVirtualDependency !== \"function\"\n  ) {\n    throw new Error(\n      `@marko/compiler: the \"resolveVirtualDependency\" option must be supplied when output is \"hydrate\".`,\n    );\n  }\n\n  if (markoOpts.stripTypes) {\n    stripTypesVisitor ||= pluginTransformTypeScript(api, {\n      isTSX: false,\n      allowNamespaces: true,\n      allowDeclareFields: true,\n      optimizeConstEnums: true,\n      onlyRemoveTypeImports: true,\n      disallowAmbiguousJSXLike: false,\n    }).visitor;\n  }\n\n  let curOpts;\n\n  return {\n    name: \"marko\",\n    manipulateOptions(opts) {\n      const { parserOpts } = opts;\n      // We need to allow these for now since we are not parsing the entire file\n      // These types of syntax errors will be picked up by the bundler / runtime anyways.\n      parserOpts.allowAwaitOutsideFunction =\n        parserOpts.allowImportExportEverywhere =\n        parserOpts.allowReturnOutsideFunction =\n        parserOpts.allowSuperOutsideMethod =\n        parserOpts.allowUndeclaredExports =\n        parserOpts.allowNewTargetOutsideFunction =\n        parserOpts.createImportExpressions =\n          true;\n\n      parserOpts.plugins.push(\"objectRestSpread\", \"classProperties\", [\n        \"typescript\",\n        {\n          disallowAmbiguousJSXLike: false,\n          dts: false,\n        },\n      ]);\n      curOpts = opts;\n    },\n    parserOverride(code) {\n      const file = getMarkoFile(code, curOpts, markoOpts);\n      const finalAst = t.cloneNode(file.ast, true);\n      SOURCE_FILES.set(finalAst, file);\n      return finalAst;\n    },\n    pre(file) {\n      const { buildError: prevBuildError } = file.hub;\n      const { buildCodeFrameError: prevCodeFrameError } = file;\n      const prevFS = taglibConfig.fs;\n      const prevFile = getFileInternal();\n      taglibConfig.fs = markoOpts.fileSystem;\n      setFileInternal(file);\n      curOpts = undefined;\n      try {\n        const { ast, metadata } = file;\n        const sourceFile = SOURCE_FILES.get(ast);\n        metadata.marko = shallowClone(sourceFile.metadata.marko);\n\n        if (isMarkoOutput(markoOpts.output)) {\n          finalizeMeta(metadata.marko);\n          return;\n        }\n\n        const taglibLookup = sourceFile.___taglibLookup;\n        const rootTranslators = [];\n        file.buildCodeFrameError = MarkoFile.prototype.buildCodeFrameError;\n        file.hub.buildError = file.buildCodeFrameError.bind(file);\n        file.markoOpts = markoOpts;\n        file.___taglibLookup = taglibLookup;\n        file.___getMarkoFile = getMarkoFile;\n\n        if (markoOpts.output !== \"hydrate\") {\n          for (const id in taglibLookup.taglibsById) {\n            addPlugin(\n              metadata.marko,\n              rootTranslators,\n              taglibLookup.taglibsById[id].translator,\n            );\n          }\n        }\n\n        rootTranslators.push(translator.translate);\n        file.___compileStage = \"translate\";\n        traverseAll(file, rootTranslators);\n\n        finalizeMeta(metadata.marko);\n        file.path.scope.crawl(); // Ensure all scopes are accurate for subsequent babel plugins\n      } finally {\n        taglibConfig.fs = prevFS;\n        setFileInternal(prevFile);\n        file.buildCodeFrameError = prevCodeFrameError;\n        file.hub.buildError = prevBuildError;\n        file.markoOpts =\n          file.___taglibLookup =\n          file.___getMarkoFile =\n            undefined;\n      }\n    },\n  };\n};\n\nfunction getMarkoFile(code, fileOpts, markoOpts) {\n  const { translator } = markoOpts;\n  let compileCache = markoOpts.cache.get(translator);\n\n  if (!compileCache) {\n    markoOpts.cache.set(translator, (compileCache = new Map()));\n  }\n\n  const { filename } = fileOpts;\n  const isSource = markoOpts.output === \"source\";\n  const isMigrate = markoOpts.output === \"migrate\";\n  const canCache = !(isSource || isMigrate);\n  const id = getTemplateId(markoOpts, filename);\n  const contentHash = canCache && new Hash().update(code).digest();\n  let cached = canCache && compileCache.get(id);\n\n  if (cached) {\n    if (cached.contentHash !== contentHash) {\n      // File content changed, invalidate the cache.\n      cached = undefined;\n    } else {\n      for (const watchFile of cached.file.metadata.marko.watchFiles) {\n        let mtime = Infinity;\n        try {\n          mtime = markoOpts.fileSystem.statSync(watchFile).mtime;\n        } catch {\n          // ignore\n        }\n\n        if (mtime > cached.time) {\n          // Some dependency changed, invalidate the cache.\n          cached = undefined;\n          break;\n        }\n      }\n    }\n  }\n\n  if (cached) {\n    cached.file.markoOpts = markoOpts;\n    return cached.file;\n  }\n\n  const prevFs = taglibConfig.fs;\n  const prevFile = getFileInternal();\n  taglibConfig.fs = markoOpts.fileSystem;\n\n  try {\n    const file = setFileInternal(\n      new MarkoFile(fileOpts, {\n        code,\n        ast: {\n          type: \"File\",\n          program: {\n            type: \"Program\",\n            sourceType: \"module\",\n            body: [],\n            directives: [],\n            params: [t.identifier(\"input\")],\n          },\n        },\n      }),\n    );\n    file.markoOpts = markoOpts;\n    file.___compileStage = \"parse\";\n    file.___getMarkoFile = getMarkoFile;\n    const taglibLookup = (file.___taglibLookup = buildLookup(\n      path.dirname(filename),\n      translator,\n    ));\n    const meta = (file.metadata.marko = {\n      id,\n      deps: [],\n      tags: [],\n      watchFiles: [],\n      diagnostics: [],\n      api: translator.preferAPI,\n    });\n\n    parseMarko(file);\n    file.path.scope.crawl(); // Initialize bindings.\n\n    if (isSource) {\n      if (markoOpts.stripTypes) {\n        stripTypes(file);\n      }\n      return file;\n    }\n\n    const rootMigrators = [];\n    for (const id in taglibLookup.taglibsById) {\n      for (const migrator of taglibLookup.taglibsById[id].migrators) {\n        addPlugin(meta, rootMigrators, migrator);\n      }\n    }\n\n    rootMigrators.push(migrate);\n    file.___compileStage = \"migrate\";\n    traverseAll(file, rootMigrators);\n\n    if (file.___hasParseErrors) {\n      if (markoOpts.errorRecovery) {\n        t.traverseFast(file.path.node, (node) => {\n          if (node.type === \"MarkoParseError\") {\n            diagnosticError(file.path, {\n              label: node.label,\n              loc: node.errorLoc || node.loc,\n            });\n          }\n        });\n      } else {\n        let errors = [];\n        t.traverseFast(file.path.node, (node) => {\n          if (node.type === \"MarkoParseError\") {\n            errors.push(\n              buildCodeFrameError(\n                file.opts.filename,\n                file.code,\n                node.errorLoc || node.loc,\n                node.label,\n              ),\n            );\n          }\n        });\n\n        throwAggregateError(errors);\n      }\n    }\n\n    if (markoOpts.stripTypes) {\n      stripTypes(file);\n    }\n\n    if (isMigrate) {\n      return file;\n    }\n\n    file.___compileStage = \"transform\";\n\n    const rootTransformers = [];\n    for (const id in taglibLookup.taglibsById) {\n      for (const transformer of taglibLookup.taglibsById[id].transformers) {\n        addPlugin(meta, rootTransformers, transformer);\n      }\n    }\n\n    rootTransformers.push(transform);\n    if (translator.transform) {\n      rootTransformers.push(translator.transform);\n    }\n    traverseAll(file, rootTransformers);\n    file.path.scope.crawl();\n\n    for (const taglibId in taglibLookup.taglibsById) {\n      const { filePath } = taglibLookup.taglibsById[taglibId];\n\n      if (\n        filePath[filePath.length - 5] === \".\" &&\n        filePath.endsWith(\"marko.json\")\n      ) {\n        meta.watchFiles.push(filePath);\n      }\n    }\n\n    compileCache.set(id, {\n      time: Date.now(),\n      file,\n      contentHash,\n    });\n\n    if (translator.analyze) {\n      try {\n        file.___compileStage = \"analyze\";\n        traverseAll(file, translator.analyze);\n      } catch (e) {\n        compileCache.delete(id);\n        throw e;\n      }\n    }\n\n    return file;\n  } finally {\n    taglibConfig.fs = prevFs;\n    setFileInternal(prevFile);\n  }\n}\n\nfunction shallowClone(data) {\n  const clone = {};\n\n  for (const key in data) {\n    const v = data[key];\n\n    if (v !== undefined) {\n      if (v === null || typeof v !== \"object\") {\n        clone[key] = v;\n      } else {\n        const Ctor = v.constructor;\n\n        switch (Ctor) {\n          case Array:\n            clone[key] = [...v];\n            break;\n          case Object:\n          case null:\n            clone[key] = { ...v };\n            break;\n          case Map:\n          case Set:\n          case Date:\n          case RegExp:\n            clone[key] = new Ctor(v);\n            break;\n\n          default:\n            throw new Error(`Unsupported metadata type of ${Ctor.name}`);\n        }\n      }\n    }\n  }\n\n  return clone;\n}\n\nfunction mergeVisitors(all) {\n  if (Array.isArray(all)) {\n    if (all.length === 1) {\n      all = all[0];\n    } else {\n      return traverse.visitors.merge(all.map(toExploded));\n    }\n  }\n\n  return toExploded(all);\n}\n\nconst explodeCache = new WeakMap();\nfunction toExploded(visitor) {\n  let cached = explodeCache.get(visitor);\n  if (!cached) {\n    cached = traverse.visitors.explode(cloneVisitor(visitor));\n    explodeCache.set(visitor, cached);\n  }\n\n  return cached;\n}\n\nfunction cloneVisitor(visitor) {\n  const clone = {};\n  for (const key in visitor) {\n    clone[key] = cloneVisit(visitor[key]);\n  }\n\n  return clone;\n}\n\nfunction cloneVisit(visit) {\n  if (!visit || typeof visit !== \"object\") {\n    return visit;\n  }\n\n  return { ...visit };\n}\n\nfunction traverseAll(file, visitors) {\n  const program = file.path;\n  traverse(\n    program.node,\n    mergeVisitors(visitors),\n    program.scope,\n    (program.state = { file }),\n    program,\n    true,\n  );\n}\n\nfunction addPlugin(meta, arr, plugin) {\n  if (plugin) {\n    const hook = plugin.hook.default || plugin.hook;\n\n    if (plugin.path) {\n      meta.watchFiles.push(plugin.path);\n    }\n\n    if (Array.isArray(hook)) {\n      arr.push(...hook);\n    } else {\n      arr.push(hook);\n    }\n  }\n}\n\nfunction stripTypes(file) {\n  const importScriptlets = new Map();\n  for (const path of file.path.get(\"body\")) {\n    if (path.type === \"MarkoScriptlet\" && path.node.static) {\n      for (const stmt of path.get(\"body\")) {\n        if (stmt.isImportDeclaration()) {\n          // Hoist import declarations from scriptlets\n          // temporarily so that they will be processed by\n          // babel typescript transform.\n          const importNode = stmt.node;\n          importScriptlets.set(importNode, path.node);\n          stmt.remove();\n          path.insertBefore(importNode);\n        }\n      }\n    }\n  }\n\n  traverseAll(file, stripTypesVisitor);\n\n  for (const path of file.path.get(\"body\")) {\n    if (path.type === \"ExportNamedDeclaration\") {\n      if (!(path.node.declaration || path.node.specifiers.length)) {\n        // The babel typescript plugin will add an empty export declaration\n        // if there are no other imports/exports in the file.\n        // This is not needed for Marko file outputs since there is always\n        // a default export.\n        path.remove();\n      }\n    } else if (path.isImportDeclaration()) {\n      const importNode = path.node;\n      const scriptlet = importScriptlets.get(importNode);\n      if (scriptlet) {\n        let hasTypes = false;\n        for (const specifier of path.get(\"specifiers\")) {\n          if (\n            specifier.node.type === \"ImportSpecifier\" &&\n            specifier.node.importKind === \"type\"\n          ) {\n            hasTypes = true;\n            specifier.remove();\n          }\n        }\n\n        path.remove();\n\n        // Add back imports from scriptlets that were\n        // hoisted for the babel typescript transform.\n        if (!hasTypes || importNode.specifiers.length) {\n          scriptlet.body.unshift(importNode);\n        }\n      }\n    }\n  }\n}\n\nfunction isMarkoOutput(output) {\n  return output === \"source\" || output === \"migrate\";\n}\n\nfunction finalizeMeta(meta) {\n  meta.watchFiles = [...new Set(meta.watchFiles)];\n  if (meta.analyzedTags) {\n    meta.analyzedTags = [...meta.analyzedTags];\n  }\n}\n"
  },
  {
    "path": "packages/compiler/src/babel-plugin/parser.js",
    "content": "import {\n  getTagDefForTagName,\n  parseArgs,\n  parseExpression,\n  parseParams,\n  parseStatements,\n  parseTemplateLiteral,\n  parseTypeArgs,\n  parseTypeParams,\n  parseVar,\n} from \"@marko/compiler/babel-utils\";\nimport { types as t } from \"@marko/compiler/internal/babel\";\nimport { createParser, TagType } from \"htmljs-parser\";\n\nimport { buildCodeFrameError } from \"../util/build-code-frame\";\nimport throwAggregateError from \"../util/merge-errors\";\n\nconst noop = () => {};\nconst emptyRange = (part) => part.start === part.end;\nconst isAttrTag = (tag) => tag.name.value?.[0] === \"@\";\nconst isStatementTag = (tag) => tag.tagDef?.parseOptions?.statement;\nconst toBabelPosition = ({ line, character }) => ({\n  // Babel lines start at 1 and use \"column\" instead of \"character\".\n  line: line + 1,\n  column: character,\n});\n\nexport function parseMarko(file) {\n  const { code } = file;\n  const { htmlParseOptions = {} } = file.markoOpts;\n  const { watchFiles } = file.metadata.marko;\n  const parseVisits = [];\n  let currentTag = file.path;\n  let currentBody = currentTag;\n  let currentAttr = undefined;\n  let currentShorthandId = undefined;\n  let currentShorthandClassNames = undefined;\n  let { preserveWhitespace } = htmlParseOptions;\n  let preservingWhitespaceUntil = preserveWhitespace;\n  let onNext = noop;\n  const positionAt = (index) => toBabelPosition(parser.positionAt(index));\n  const locationAt = (range) => {\n    const { start, end } = parser.locationAt(range);\n    return {\n      start: toBabelPosition(start),\n      end: toBabelPosition(end),\n    };\n  };\n  const withLoc = (node, range) => {\n    node.start = range.start;\n    node.end = range.end;\n    node.loc = locationAt(range);\n    return node;\n  };\n  const enterTag = (node) => {\n    if (isAttrTag(node)) {\n      if (currentTag === file.path) {\n        throw file.buildCodeFrameError(\n          node.name,\n          \"@tags must be nested within another element.\",\n        );\n      }\n\n      let previousSiblingIndex = currentBody.length;\n      while (previousSiblingIndex) {\n        let previousSibling = currentBody[--previousSiblingIndex];\n        if (!t.isMarkoComment(previousSibling)) {\n          break;\n        }\n        currentTag.pushContainer(\"attributeTags\", previousSibling.node);\n        currentBody.get(\"body\").get(previousSiblingIndex).remove();\n      }\n\n      currentTag = currentTag.pushContainer(\"attributeTags\", node)[0];\n    } else {\n      currentTag = currentBody.pushContainer(\"body\", node)[0];\n    }\n    currentBody = currentTag.get(\"body\");\n    onNext(node);\n  };\n  const pushContent = (node) => {\n    currentBody.node.body.push(node);\n    onNext(node);\n  };\n  const endAttr = () => {\n    if (currentAttr) {\n      currentAttr.loc = locationAt(currentAttr);\n      currentAttr = undefined;\n    }\n  };\n  const parseTemplateString = ({ quasis, expressions }) => {\n    switch (expressions.length) {\n      case 0: {\n        const [first] = quasis;\n        return withLoc(t.stringLiteral(parser.read(first)), first);\n      }\n      case 1: {\n        if (emptyRange(quasis[0]) && emptyRange(quasis[1])) {\n          const [{ value }] = expressions;\n          const result = parseExpression(\n            file,\n            parser.read(value),\n            value.start,\n            value.end,\n          );\n          if (t.isStringLiteral(result)) {\n            // convert to template literal just so that we don't mistake it for a native tag if this is a tag name.\n            return withLoc(\n              t.templateLiteral([templateElement(result.value, true)], []),\n              value,\n            );\n          } else {\n            return result;\n          }\n        }\n      }\n    }\n\n    const [{ start }] = quasis;\n    const end = quasis[quasis.length - 1].end;\n    return parseTemplateLiteral(file, parser.read({ start, end }), start, end);\n  };\n\n  const parser = createParser({\n    onError(part) {\n      const err = buildCodeFrameError(\n        file.opts.filename,\n        file.code,\n        locationAt(part),\n        part.message,\n      );\n\n      if (!file.___hasParseErrors) {\n        throw err;\n      }\n\n      const errors = [];\n      t.traverseFast(file.path.node, (node) => {\n        if (node.type === \"MarkoParseError\") {\n          errors.push(\n            buildCodeFrameError(\n              file.opts.filename,\n              file.code,\n              node.errorLoc || node.loc,\n              node.label,\n            ),\n          );\n        }\n      });\n\n      errors.push(err);\n      throwAggregateError(errors);\n    },\n    onText(part) {\n      const rawValue = parser.read(part);\n\n      if (preservingWhitespaceUntil) {\n        pushContent(withLoc(t.markoText(rawValue), part));\n        return;\n      }\n\n      if (/^(?:[\\n\\r]\\s*)?(?:[\\n\\r]\\s*)?$/.test(rawValue)) return;\n\n      const { body } = currentBody.node;\n      let prev;\n      let prevIndex = body.length;\n      // Find previous non-scriptlet or comment.\n      while (prevIndex > 0) {\n        prev = body[--prevIndex];\n\n        if (t.isMarkoScriptlet(prev) || t.isMarkoComment(prev)) {\n          prev = undefined;\n        } else {\n          break;\n        }\n      }\n\n      let value = rawValue;\n      switch (prev?.type) {\n        case \"MarkoPlaceholder\":\n          break;\n        case \"MarkoText\":\n          if (/\\s$/.test(prev.value)) {\n            value = value.replace(/^\\s+/, \"\");\n          }\n          break;\n        case \"MarkoTag\":\n          if (isStatementTag(prev) || isAttrTag(prev)) {\n            value = value.replace(/^[\\n\\r]\\s*/, \"\");\n          }\n          break;\n        default:\n          value = value.replace(/^[\\n\\r]\\s*/, \"\");\n          break;\n      }\n\n      if (!value) return;\n\n      const node = t.markoText(value);\n      pushContent(node);\n      onNext = (next) => {\n        switch (next?.type) {\n          case \"MarkoScriptlet\":\n          case \"MarkoComment\":\n            return;\n          case \"MarkoPlaceholder\":\n            break;\n          case \"MarkoText\":\n            if (/^\\s/.test(next.value)) {\n              value = value.replace(/\\s+$/, \"\");\n            }\n            break;\n          case \"MarkoTag\":\n            if (isStatementTag(next) || isAttrTag(next)) {\n              value = value.replace(/[\\n\\r]\\s*$/, \"\");\n            }\n\n            break;\n          default:\n            value = value.replace(/[\\n\\r]\\s*$/, \"\");\n            break;\n        }\n\n        node.value = value.replace(/\\s+/g, \" \");\n\n        if (node.value) {\n          const trimmedStart = part.start + rawValue.indexOf(value);\n          withLoc(node, {\n            start: trimmedStart,\n            end: trimmedStart + rawValue.length,\n          });\n        } else {\n          body.splice(body.indexOf(node), 1);\n        }\n\n        onNext = noop;\n      };\n    },\n    onCDATA(part) {\n      pushContent(withLoc(t.markoCDATA(parser.read(part.value)), part));\n    },\n    onDoctype(part) {\n      pushContent(withLoc(t.markoDocumentType(parser.read(part.value)), part));\n    },\n    onDeclaration(part) {\n      pushContent(withLoc(t.markoDeclaration(parser.read(part.value)), part));\n    },\n    onComment(part) {\n      pushContent(withLoc(t.markoComment(parser.read(part.value)), part));\n    },\n    onTagTypeArgs(part) {\n      currentTag.node.typeArguments = parseTypeArgs(\n        file,\n        parser.read(part.value),\n        part.value.start,\n        part.value.end,\n      );\n    },\n    onTagTypeParams(part) {\n      currentBody.node.typeParameters = parseTypeParams(\n        file,\n        parser.read(part.value),\n        part.value.start,\n        part.value.end,\n      );\n    },\n    onPlaceholder(part) {\n      pushContent(\n        withLoc(\n          t.markoPlaceholder(\n            parseExpression(\n              file,\n              parser.read(part.value),\n              part.value.start,\n              part.value.end,\n            ),\n            part.escape,\n          ),\n          part,\n        ),\n      );\n    },\n    onScriptlet(part) {\n      pushContent(\n        withLoc(\n          t.markoScriptlet(\n            parseStatements(\n              file,\n              parser.read(part.value),\n              part.value.start,\n              part.value.end,\n            ),\n          ),\n          part,\n        ),\n      );\n    },\n    onOpenTagName(part) {\n      const tagName = parseTemplateString(part);\n      const node = t.markoTag(tagName, [], t.markoTagBody());\n      let parseType = TagType.html;\n      node.start =\n        part.start - (part.start && code[part.start - 1] === \"<\" ? 1 : 0); // Account for leading `<` in html mode.\n      node.end = part.end;\n\n      if (t.isStringLiteral(tagName)) {\n        const literalTagName = tagName.value || (tagName.value = \"div\");\n\n        if (literalTagName === \"%\") {\n          throw file.buildCodeFrameError(\n            tagName,\n            \"<% scriptlets %> are no longer supported.\",\n          );\n        }\n\n        const parseOptions = (node.tagDef = getTagDefForTagName(\n          file,\n          literalTagName,\n        ))?.parseOptions;\n\n        if (parseOptions) {\n          if (parseOptions.preserveWhitespace) {\n            preservingWhitespaceUntil = node;\n          }\n\n          if (parseOptions.statement) {\n            parseType = TagType.statement;\n          } else if (parseOptions.openTagOnly) {\n            parseType = TagType.void;\n          } else if (parseOptions.text) {\n            parseType = TagType.text;\n          }\n        }\n      }\n\n      enterTag(node);\n      return parseType;\n    },\n    onTagShorthandId(part) {\n      currentShorthandId = parseTemplateString(part);\n    },\n    onTagShorthandClass(part) {\n      if (currentShorthandClassNames) {\n        currentShorthandClassNames.push(parseTemplateString(part));\n      } else {\n        currentShorthandClassNames = [parseTemplateString(part)];\n      }\n    },\n\n    onTagVar({ value }) {\n      currentTag.node.var = parseVar(\n        file,\n        parser.read(value),\n        value.start,\n        value.end,\n      );\n    },\n\n    onTagParams({ value }) {\n      currentTag.node.body.params = parseParams(\n        file,\n        parser.read(value),\n        value.start,\n        value.end,\n      );\n    },\n\n    onTagArgs({ value }) {\n      currentTag.node.arguments = parseArgs(\n        file,\n        parser.read(value),\n        value.start,\n        value.end,\n      );\n    },\n\n    onAttrName(part) {\n      let name = parser.read(part);\n      let modifier = null;\n      const modifierIndex = name.lastIndexOf(\":\");\n      if (~modifierIndex) {\n        modifier = name.slice(modifierIndex + 1);\n        name = name.slice(0, modifierIndex);\n      }\n\n      endAttr();\n      currentTag.node.attributes.push(\n        (currentAttr = t.markoAttribute(\n          name || \"value\",\n          t.booleanLiteral(true),\n          modifier,\n          undefined,\n          !name,\n        )),\n      );\n\n      currentAttr.start = part.start;\n      currentAttr.end = part.end;\n    },\n\n    onAttrArgs({ value, end }) {\n      currentAttr.arguments = parseArgs(\n        file,\n        parser.read(value),\n        value.start,\n        value.end,\n      );\n\n      currentAttr.end = end;\n    },\n\n    onAttrValue(part) {\n      currentAttr.end = part.end;\n      currentAttr.bound = part.bound;\n      currentAttr.value = parseExpression(\n        file,\n        parser.read(part.value),\n        part.value.start,\n      );\n    },\n\n    onAttrMethod(part) {\n      currentAttr.end = part.end;\n      currentAttr.value = withLoc(\n        t.functionExpression(\n          undefined,\n          parseParams(\n            file,\n            parser.read(part.params.value),\n            part.params.value.start,\n            part.params.value.end,\n          ),\n          t.blockStatement(\n            parseStatements(\n              file,\n              parser.read(part.body.value),\n              part.body.value.start,\n              part.body.value.end,\n            ),\n          ),\n        ),\n        part,\n      );\n    },\n\n    onAttrSpread(part) {\n      endAttr();\n      currentTag.node.attributes.push(\n        withLoc(\n          t.markoSpreadAttribute(\n            parseExpression(file, parser.read(part.value), part.value.start),\n          ),\n          part,\n        ),\n      );\n    },\n\n    onOpenTagEnd(part) {\n      const { node } = currentTag;\n      const { attributes } = node;\n      const parseOptions = node.tagDef?.parseOptions;\n      endAttr();\n\n      if (currentShorthandClassNames) {\n        let foundClassAttr = false;\n        const classShorthandValue =\n          currentShorthandClassNames.length === 1\n            ? currentShorthandClassNames[0]\n            : currentShorthandClassNames.every((expr) =>\n                  t.isStringLiteral(expr),\n                )\n              ? withLoc(\n                  t.stringLiteral(\n                    currentShorthandClassNames\n                      .map((node) => node.value)\n                      .join(\" \"),\n                  ),\n                  {\n                    start: currentShorthandClassNames[0].start,\n                    end: currentShorthandClassNames[\n                      currentShorthandClassNames.length - 1\n                    ].end,\n                  },\n                )\n              : t.arrayExpression(currentShorthandClassNames);\n\n        for (const attr of attributes) {\n          if (attr.name === \"class\") {\n            foundClassAttr = true;\n            if (\n              t.isStringLiteral(attr.value) &&\n              t.isStringLiteral(classShorthandValue)\n            ) {\n              attr.value = t.templateLiteral(\n                [\n                  templateElement(\"\", false),\n                  templateElement(\" \", false),\n                  templateElement(\"\", true),\n                ],\n                [classShorthandValue, attr.value],\n              );\n            } else {\n              attr.value = t.arrayExpression(\n                t.isArrayExpression(classShorthandValue)\n                  ? classShorthandValue.elements.concat(\n                      t.isArrayExpression(attr.value)\n                        ? attr.value.elements\n                        : attr.value,\n                    )\n                  : t.isArrayExpression(attr.value)\n                    ? [classShorthandValue].concat(attr.value.elements)\n                    : [classShorthandValue, attr.value],\n              );\n            }\n            break;\n          }\n        }\n\n        if (!foundClassAttr) {\n          attributes.push(t.markoAttribute(\"class\", classShorthandValue));\n        }\n\n        currentShorthandClassNames = undefined;\n      }\n\n      if (currentShorthandId) {\n        for (const attr of attributes) {\n          if (attr.name === \"id\") {\n            throw file.buildCodeFrameError(\n              attr,\n              \"Cannot have shorthand id and id attribute.\",\n            );\n          }\n        }\n        attributes.push(t.markoAttribute(\"id\", currentShorthandId));\n        currentShorthandId = undefined;\n      }\n\n      if (parseOptions) {\n        if (parseOptions.rawOpenTag) {\n          node.rawValue = parser.read({\n            start: node.name.start,\n            end: part.start,\n          });\n        }\n\n        if (\n          part.selfClosed ||\n          parseOptions.statement ||\n          parseOptions.openTagOnly\n        ) {\n          this.onCloseTagEnd(part);\n        }\n      } else if (part.selfClosed) {\n        this.onCloseTagEnd(part);\n      }\n    },\n    onCloseTagEnd(part) {\n      const { node } = currentTag;\n      const tagDef = node.tagDef;\n      const parserPlugin = tagDef?.parser;\n      if (preservingWhitespaceUntil === node) {\n        preservingWhitespaceUntil = undefined;\n      }\n\n      node.end = part.end;\n      node.loc = locationAt(node);\n\n      if (parserPlugin) {\n        const { hook } = parserPlugin;\n        if (parserPlugin.path) watchFiles.push(parserPlugin.path);\n        parseVisits.push(hook.default || hook, currentTag);\n      }\n\n      const parentTag = isAttrTag(node)\n        ? currentTag.parentPath\n        : currentTag.parentPath.parentPath;\n      const { attributeTags } = node;\n\n      if (attributeTags.length) {\n        const isControlFlow = tagDef?.parseOptions?.controlFlow;\n\n        if (node.body.body.length) {\n          const body = [];\n          // When we have a control flow with mixed body and attribute tag content\n          // we move any scriptlets, comments or empty nested control flow.\n          // This is because they initially ambiguous as to whether\n          // they are part of the body or the attributeTags.\n          // Otherwise we only move scriptlets.\n          for (const child of node.body.body) {\n            if (\n              t.isMarkoScriptlet(child) ||\n              (isControlFlow && t.isMarkoComment(child))\n            ) {\n              attributeTags.push(child);\n            } else if (\n              isControlFlow &&\n              child.tagDef?.controlFlow &&\n              !child.body.body.length\n            ) {\n              child.body.attributeTags = true;\n              attributeTags.push(child);\n            } else {\n              body.push(child);\n            }\n          }\n\n          if (isControlFlow) {\n            if (body.length) {\n              onNext();\n              throw file.buildCodeFrameError(\n                body[0],\n                \"Cannot have attribute tags and body content under a control flow tag.\",\n              );\n            }\n\n            node.attributeTags = body;\n            node.body.body = attributeTags;\n            node.body.attributeTags = true;\n          } else {\n            node.body.body = body;\n          }\n\n          attributeTags.sort(sortByStart);\n        } else if (isControlFlow) {\n          node.attributeTags = [];\n          node.body.body = attributeTags;\n          node.body.attributeTags = true;\n        }\n\n        if (isControlFlow) {\n          currentTag.remove();\n          parentTag.pushContainer(\"attributeTags\", node);\n        }\n      }\n\n      if (parentTag) {\n        currentTag = parentTag;\n        currentBody = currentTag.get(\"body\");\n      } else {\n        currentTag = currentBody = file.path;\n      }\n\n      onNext();\n    },\n  });\n\n  parser.parse(code);\n  onNext();\n\n  for (let i = 0; i < parseVisits.length; ) {\n    parseVisits[i++](parseVisits[i++]);\n  }\n\n  const { ast } = file;\n  const { program } = ast;\n  ast.start = program.start = 0;\n  ast.end = program.end = code.length - 1;\n  ast.loc = program.loc = {\n    start: { line: 1, column: 0 },\n    end: positionAt(ast.end),\n  };\n}\n\nfunction sortByStart(a, b) {\n  return a.start - b.start;\n}\n\nfunction templateElement(value, tail) {\n  return t.templateElement({\n    tail,\n    raw: value,\n    cooked: value,\n  });\n}\n"
  },
  {
    "path": "packages/compiler/src/babel-plugin/plugins/migrate.js",
    "content": "import { getTagDef, getTagDefForTagName } from \"@marko/compiler/babel-utils\";\nimport { types as t } from \"@marko/compiler/internal/babel\";\n\nimport { enter, exit } from \"../util/plugin-hooks\";\n\n/**\n * Applies custom migrators on tags.\n */\nexport const visitor = {\n  MarkoTag: {\n    enter(path) {\n      const migrators = getMigratorsForTag(path);\n      const { node } = path;\n      for (const migrator of migrators) {\n        enter(migrator, path, t);\n        if (path.node !== node) break; // Stop if node is replaced.\n      }\n    },\n    exit(path) {\n      const migrators = getMigratorsForTag(path);\n      const { node } = path;\n      for (const migrator of migrators) {\n        exit(migrator, path, t);\n        if (path.node !== node) break; // Stop if node is replaced.\n      }\n    },\n  },\n};\n\nfunction getMigratorsForTag(path) {\n  const {\n    hub: { file },\n  } = path;\n  const { watchFiles } = file.metadata.marko;\n  const tagName = path.get(\"name.value\").node || \"*\";\n  const MIGRATOR_CACHE = (file.MIGRATOR_CACHE =\n    file.MIGRATOR_CACHE || Object.create(null));\n\n  let migrators = MIGRATOR_CACHE[tagName];\n\n  if (!migrators) {\n    migrators = MIGRATOR_CACHE[tagName] = [];\n    const addMigrators = (tagDef) => {\n      if (tagDef && tagDef.migrators) {\n        for (const migrator of tagDef.migrators) {\n          if (migrator.path) {\n            watchFiles.push(migrator.path);\n          }\n          migrators.push(migrator.hook.default || migrator.hook);\n        }\n      }\n    };\n\n    addMigrators(getTagDef(path));\n\n    if (tagName !== \"*\") {\n      addMigrators(getTagDefForTagName(file, \"*\"));\n    }\n  }\n\n  return migrators;\n}\n"
  },
  {
    "path": "packages/compiler/src/babel-plugin/plugins/transform.js",
    "content": "import { getTagDef, getTagDefForTagName } from \"@marko/compiler/babel-utils\";\nimport { types as t } from \"@marko/compiler/internal/babel\";\n\nimport { enter, exit } from \"../util/plugin-hooks\";\n\n/**\n * Applies custom transformers on tags.\n */\nexport const visitor = {\n  MarkoTag: {\n    enter(path) {\n      const transformers = getTransformersForTag(path);\n      const { node } = path;\n\n      for (const transformer of transformers) {\n        enter(transformer, path, t);\n        if (path.node !== node) break; // Stop if node is replaced.\n      }\n    },\n    exit(path) {\n      const transformers = getTransformersForTag(path);\n      const { node } = path;\n\n      for (const transformer of transformers) {\n        exit(transformer, path, t);\n        if (path.node !== node) break; // Stop if node is replaced.\n      }\n    },\n  },\n};\n\nfunction getTransformersForTag(path) {\n  const {\n    hub: { file },\n  } = path;\n  const { watchFiles } = file.metadata.marko;\n  const tagName = path.get(\"name.value\").node || \"*\";\n  const TRANSFORMER_CACHE = (file.TRANSFORMER_CACHE =\n    file.TRANSFORMER_CACHE || Object.create(null));\n\n  let transformers = TRANSFORMER_CACHE[tagName];\n\n  if (!transformers) {\n    transformers = TRANSFORMER_CACHE[tagName] = [];\n    const addTransformers = (tagDef) => {\n      if (tagDef && tagDef.transformers) {\n        for (const transformer of tagDef.transformers) {\n          if (transformer.path) {\n            watchFiles.push(transformer.path);\n          }\n          transformers.push(transformer.hook.default || transformer.hook);\n        }\n      }\n    };\n\n    addTransformers(getTagDef(path));\n\n    if (tagName !== \"*\") {\n      addTransformers(getTagDefForTagName(file, \"*\"));\n    }\n  }\n\n  return transformers;\n}\n"
  },
  {
    "path": "packages/compiler/src/babel-plugin/util/plugin-hooks.js",
    "content": "// Utilities for executing multi step compiler hooks (migrators & transformers).\n\nexport function enter(plugin, ...args) {\n  const fn =\n    (plugin &&\n      (plugin.enter ||\n        (plugin.default && plugin.default.enter) ||\n        plugin.default)) ||\n    plugin;\n  if (typeof fn === \"function\") {\n    fn(...args);\n  }\n}\n\nexport function exit(plugin, ...args) {\n  const fn =\n    plugin &&\n    (plugin.exit || (plugin.default ? plugin.default.exit : undefined));\n  if (typeof fn === \"function\") {\n    fn(...args);\n  }\n}\n"
  },
  {
    "path": "packages/compiler/src/babel-utils/assert.js",
    "content": "export function assertAllowedAttributes(path, allowed) {\n  let i = 0;\n  for (const attr of path.node.attributes) {\n    if (attr.type === \"MarkoSpreadAttribute\") {\n      throw path.hub.buildError(\n        attr,\n        `Tag does not support spread attributes.`,\n      );\n    } else if (!allowed.includes(attr.name)) {\n      throw path.hub.buildError(\n        attr,\n        `Tag does not support the \\`${attr.name}\\` attribute.`,\n      );\n    }\n\n    i++;\n  }\n}\n\nexport function assertNoAttributes(path) {\n  const { attributes } = path.node;\n  if (attributes.length) {\n    const start = attributes[0].loc.start;\n    const end = attributes[attributes.length - 1].loc.end;\n    throw path.hub.buildError(\n      { loc: { start, end } },\n      \"Tag does not support attributes.\",\n    );\n  }\n}\n\nexport function assertNoParams(path) {\n  const { params } = path.node.body;\n  if (params.length) {\n    const start = params[0].loc.start;\n    const end = params[params.length - 1].loc.end;\n    throw path.hub.buildError(\n      { loc: { start, end } },\n      \"Tag does not support parameters.\",\n    );\n  }\n}\n\nexport function assertNoAttributeTags(path) {\n  if (path.node.attributeTags.length) {\n    throw path.hub.buildError(\n      path.node.attributeTags[0],\n      \"Tag not support nested attribute tags.\",\n    );\n  }\n}\n\nexport function assertNoArgs(path) {\n  const args = path.node.arguments;\n  if (args && args.length) {\n    const start = args[0].loc.start;\n    const end = args[args.length - 1].loc.end;\n    throw path.hub.buildError(\n      { loc: { start, end } },\n      \"Tag does not support arguments.\",\n    );\n  }\n}\n\nexport function assertNoVar(path) {\n  if (path.node.var) {\n    throw path.hub.buildError(\n      path.node.var,\n      \"Tag does not support a variable.\",\n    );\n  }\n}\n\nexport function assertAttributesOrArgs(path) {\n  const { node } = path;\n  const args = node.arguments;\n  if (args && args.length && (node.attributes.length > 0 || node.body.length)) {\n    const start = args[0].loc.start;\n    const end = args[args.length - 1].loc.end;\n    throw path.hub.buildError(\n      { loc: { start, end } },\n      \"Tag does not support arguments when attributes or body present.\",\n    );\n  }\n}\n\nexport function assertAttributesOrSingleArg(path) {\n  assertAttributesOrArgs(path);\n  const args = path.node.arguments;\n  if (args && args.length > 1) {\n    const start = args[1].loc.start;\n    const end = args[args.length - 1].loc.end;\n    throw path.hub.buildError(\n      { loc: { start, end } },\n      \"Tag does not support multiple arguments.\",\n    );\n  }\n}\n"
  },
  {
    "path": "packages/compiler/src/babel-utils/compute.js",
    "content": "/**\n * @param {import(\"@babel/types\").Node} node\n */\nexport function computeNode(node) {\n  switch (node.type) {\n    case \"StringLiteral\":\n    case \"NumericLiteral\":\n    case \"BooleanLiteral\":\n      return { value: node.value };\n    case \"RegExpLiteral\":\n      return { value: new RegExp(node.pattern, node.flags) };\n    case \"NullLiteral\":\n      return { value: null };\n    case \"Identifier\":\n      switch (node.name) {\n        case \"undefined\":\n          return { value: undefined };\n        case \"NaN\":\n          return { value: NaN };\n        case \"Infinity\":\n          return { value: Infinity };\n        default:\n          return;\n      }\n    case \"BigIntLiteral\":\n      return { value: BigInt(node.value) };\n    case \"ParenthesizedExpression\":\n      return computeNode(node.expression);\n    case \"BinaryExpression\": {\n      const left = computeNode(node.left);\n      if (!left) return;\n      const right = computeNode(node.right);\n      if (!right) return;\n      switch (node.operator) {\n        case \"+\":\n          return { value: left.value + right.value };\n        case \"-\":\n          return { value: left.value - right.value };\n        case \"*\":\n          return { value: left.value * right.value };\n        case \"/\":\n          return { value: left.value / right.value };\n        case \"%\":\n          return { value: left.value % right.value };\n        case \"**\":\n          return { value: left.value ** right.value };\n        case \"|\":\n          return { value: left.value | right.value };\n        case \"&\":\n          return { value: left.value & right.value };\n        case \"^\":\n          return { value: left.value ^ right.value };\n        case \"<<\":\n          return { value: left.value << right.value };\n        case \">>\":\n          return { value: left.value >> right.value };\n        case \">>>\":\n          return { value: left.value >>> right.value };\n        case \"==\":\n          return { value: left.value == right.value };\n        case \"!=\":\n          return { value: left.value != right.value };\n        case \"===\":\n          return { value: left.value === right.value };\n        case \"!==\":\n          return { value: left.value !== right.value };\n        case \"<\":\n          return { value: left.value < right.value };\n        case \"<=\":\n          return { value: left.value <= right.value };\n        case \">\":\n          return { value: left.value > right.value };\n        case \">=\":\n          return { value: left.value >= right.value };\n        default:\n          return;\n      }\n    }\n    case \"UnaryExpression\": {\n      const arg = computeNode(node.argument);\n      if (!arg) return;\n      switch (node.operator) {\n        case \"+\":\n          return { value: +arg.value };\n        case \"-\":\n          return { value: -arg.value };\n        case \"~\":\n          return { value: ~arg.value };\n        case \"!\":\n          return { value: !arg.value };\n        case \"typeof\":\n          return { value: typeof arg.value };\n        case \"void\":\n          return { value: void arg.value };\n        default:\n          return;\n      }\n    }\n    case \"LogicalExpression\": {\n      const left = computeNode(node.left);\n      if (!left) return;\n      const right = computeNode(node.right);\n      if (!right) return;\n      switch (node.operator) {\n        case \"&&\":\n          return { value: left.value && right.value };\n        case \"||\":\n          return { value: left.value || right.value };\n        case \"??\":\n          return { value: left.value ?? right.value };\n        default:\n          return;\n      }\n    }\n    case \"ConditionalExpression\": {\n      const test = computeNode(node.test);\n      if (!test) return;\n      const consequent = computeNode(node.consequent);\n      if (!consequent) return;\n      const alternate = computeNode(node.alternate);\n      if (!alternate) return;\n      return { value: test.value ? consequent.value : alternate.value };\n    }\n    case \"TemplateLiteral\": {\n      let value = node.quasis[0].value.cooked;\n      for (let i = 0; i < node.expressions.length; i++) {\n        const expr = computeNode(node.expressions[i]);\n        if (!expr) return;\n        value += expr.value + node.quasis[i + 1].value.cooked;\n      }\n      return { value };\n    }\n    case \"ObjectExpression\": {\n      const value = {};\n      for (const prop of node.properties) {\n        if (prop.decorators) return;\n        switch (prop.type) {\n          case \"ObjectProperty\": {\n            let key;\n            if (prop.computed) {\n              const keyNode = computeNode(prop.key);\n              if (!keyNode) return;\n              key = keyNode.value + \"\";\n            } else {\n              switch (prop.key.type) {\n                case \"Identifier\":\n                  key = prop.key.name;\n                  break;\n                case \"StringLiteral\":\n                  key = prop.key.value;\n                  break;\n                default:\n                  return;\n              }\n            }\n\n            const propValue = computeNode(prop.value);\n            if (!propValue) return;\n            value[key] = propValue.value;\n            break;\n          }\n          case \"SpreadElement\": {\n            const arg = computeNode(prop.argument);\n            if (!arg) return;\n            Object.assign(value, arg.value);\n            break;\n          }\n        }\n      }\n\n      return { value };\n    }\n    case \"ArrayExpression\": {\n      const value = [];\n      for (const elem of node.elements) {\n        if (elem) {\n          if (elem.type === \"SpreadElement\") {\n            const arg = computeNode(elem.argument);\n            if (typeof arg?.value?.[Symbol.iterator] !== \"function\") return;\n            for (const item of arg.value) {\n              value.push(item);\n            }\n          } else {\n            const elemValue = computeNode(elem);\n            if (!elemValue) return;\n            value.push(elemValue.value);\n          }\n        } else {\n          value.length++;\n        }\n      }\n\n      return { value };\n    }\n  }\n}\n"
  },
  {
    "path": "packages/compiler/src/babel-utils/diagnostics.js",
    "content": "export const DiagnosticType = {\n  Error: \"error\",\n  Warning: \"warning\",\n  Deprecation: \"deprecation\",\n  Suggestion: \"suggestion\",\n};\n\nexport function diagnosticError(path, options) {\n  add(DiagnosticType.Error, path, options);\n}\n\nexport function diagnosticWarn(path, options) {\n  add(DiagnosticType.Warning, path, options);\n}\n\nexport function diagnosticDeprecate(path, options) {\n  add(DiagnosticType.Deprecation, path, options);\n}\n\nexport function diagnosticSuggest(path, options) {\n  add(DiagnosticType.Suggestion, path, options);\n}\n\nfunction add(type, path, options) {\n  const { file } = path.hub;\n  const { diagnostics } = file.metadata.marko;\n  const { label, fix: rawFix, loc = path.node.loc } = options;\n  let fix = false;\n\n  if (rawFix) {\n    switch (file.___compileStage) {\n      case \"parse\":\n      case \"migrate\":\n        break;\n      default:\n        throw new Error(\n          \"Diagnostic fixes can only be registered up to and including the migrate stage.\",\n        );\n    }\n\n    const { applyFixes } = file.markoOpts;\n    let apply;\n\n    if (typeof rawFix === \"function\") {\n      apply = rawFix;\n      fix = true;\n    } else {\n      // strip off the apply function.\n      ({ apply, ...fix } = rawFix);\n    }\n\n    if (applyFixes) {\n      const i = diagnostics.length;\n      if (applyFixes.has(i)) {\n        apply(applyFixes.get(i));\n      }\n    } else {\n      apply(undefined);\n    }\n  }\n\n  diagnostics.push({ type, label, loc, fix });\n}\n"
  },
  {
    "path": "packages/compiler/src/babel-utils/get-file.js",
    "content": "let currentFile;\n\nexport function getFile() {\n  if (currentFile) {\n    return currentFile;\n  }\n\n  throw new Error(\"Unable to access Marko File outside of a compilation\");\n}\n\nexport function getProgram() {\n  if (currentFile) {\n    return currentFile.path;\n  }\n\n  throw new Error(\"Unable to access Marko Program outside of a compilation\");\n}\n\nexport function getFileInternal() {\n  return currentFile;\n}\n\nexport function setFileInternal(file) {\n  return (currentFile = file);\n}\n"
  },
  {
    "path": "packages/compiler/src/babel-utils/imports.js",
    "content": "import { types as t } from \"@marko/compiler\";\nimport { cwd } from \"@marko/compiler/modules\";\nimport path from \"path\";\nimport { relativeImportPath } from \"relative-import-path\";\n\nconst IMPORTS_KEY = Symbol();\nconst FS_START = path.sep === \"/\" ? path.sep : /^(.*?:)/.exec(cwd)[1];\n\nexport function resolveRelativePath(file, request) {\n  if (request.startsWith(FS_START)) {\n    request = relativeImportPath(file.opts.filename, request);\n  }\n\n  if (file.markoOpts.optimize) {\n    request = request.replace(\n      /(^|\\/node-modules\\/)marko\\/src\\//,\n      \"$1marko/dist/\",\n    );\n  }\n\n  return request;\n}\n\nexport function importDefault(file, request, nameHint) {\n  const imports = getImports(file);\n  request = resolveRelativePath(file, request);\n  let importDeclaration = imports.get(request);\n\n  if (!importDeclaration) {\n    imports.set(\n      request,\n      (importDeclaration = file.path.pushContainer(\n        \"body\",\n        t.importDeclaration([], t.stringLiteral(request)),\n      )[0]),\n    );\n  }\n\n  if (!nameHint) {\n    return;\n  }\n\n  const specifiers = importDeclaration.get(\"specifiers\");\n  const specifier = specifiers.find((specifier) =>\n    specifier.isImportDefaultSpecifier(),\n  );\n\n  if (!specifier) {\n    const identifier = file.scope.generateUidIdentifier(nameHint);\n    importDeclaration.pushContainer(\n      \"specifiers\",\n      t.importDefaultSpecifier(identifier),\n    );\n    return identifier;\n  }\n\n  return t.identifier(specifier.node.local.name);\n}\n\nexport function importNamed(file, request, name, nameHint = name) {\n  request = resolveRelativePath(file, request);\n  const imports = getImports(file);\n  let importDeclaration = imports.get(request);\n\n  if (!importDeclaration) {\n    imports.set(\n      request,\n      (importDeclaration = file.path.pushContainer(\n        \"body\",\n        t.importDeclaration([], t.stringLiteral(request)),\n      )[0]),\n    );\n  }\n\n  const specifiers = importDeclaration.get(\"specifiers\");\n  const specifier = specifiers.find(\n    (specifier) =>\n      specifier.isImportSpecifier() && specifier.node.imported.name === name,\n  );\n\n  if (!specifier) {\n    const identifier = file.scope.generateUidIdentifier(nameHint);\n    importDeclaration.pushContainer(\n      \"specifiers\",\n      t.importSpecifier(identifier, t.identifier(name)),\n    );\n    return identifier;\n  }\n\n  return t.identifier(specifier.node.local.name);\n}\n\nexport function importStar(file, request, nameHint) {\n  const imports = getImports(file);\n  request = resolveRelativePath(file, request);\n  let importDeclaration = imports.get(request);\n\n  if (!importDeclaration) {\n    imports.set(\n      request,\n      (importDeclaration = file.path.pushContainer(\n        \"body\",\n        t.importDeclaration([], t.stringLiteral(request)),\n      )[0]),\n    );\n  }\n\n  if (!nameHint) {\n    return;\n  }\n\n  const specifiers = importDeclaration.get(\"specifiers\");\n  const specifier = specifiers.find((specifier) =>\n    specifier.isImportNamespaceSpecifier(),\n  );\n\n  if (!specifier) {\n    const identifier = file.scope.generateUidIdentifier(nameHint);\n    importDeclaration.pushContainer(\n      \"specifiers\",\n      t.importNamespaceSpecifier(identifier),\n    );\n    return identifier;\n  }\n\n  return t.identifier(specifier.node.local.name);\n}\n\nfunction getImports(file) {\n  let imports = file.metadata.marko[IMPORTS_KEY];\n\n  if (!imports) {\n    imports = file.metadata.marko[IMPORTS_KEY] = new Map();\n  }\n\n  return imports;\n}\n"
  },
  {
    "path": "packages/compiler/src/babel-utils/index.js",
    "content": "export {\n  assertAllowedAttributes,\n  assertAttributesOrArgs,\n  assertAttributesOrSingleArg,\n  assertNoArgs,\n  assertNoAttributes,\n  assertNoAttributeTags,\n  assertNoParams,\n  assertNoVar,\n} from \"./assert\";\nexport { computeNode } from \"./compute\";\nexport {\n  diagnosticDeprecate,\n  diagnosticError,\n  diagnosticSuggest,\n  DiagnosticType,\n  diagnosticWarn,\n} from \"./diagnostics\";\nexport { getFile, getProgram } from \"./get-file\";\nexport {\n  importDefault,\n  importNamed,\n  importStar,\n  resolveRelativePath,\n} from \"./imports\";\nexport { getEnd, getLoc, getLocRange, getStart, withLoc } from \"./loc\";\nexport {\n  parseArgs,\n  parseExpression,\n  parseParams,\n  parseStatements,\n  parseTemplateLiteral,\n  parseTypeArgs,\n  parseTypeParams,\n  parseVar,\n} from \"./parse\";\nexport { getTagDefForTagName, getTaglibLookup } from \"./taglib\";\nexport {\n  findAttributeTags,\n  findParentTag,\n  getArgOrSequence,\n  getFullyResolvedTagName,\n  getMacroIdentifier,\n  getMacroIdentifierForName,\n  getTagDef,\n  getTagTemplate,\n  getTemplateId,\n  hasMacro,\n  isAttributeTag,\n  isDynamicTag,\n  isLoopTag,\n  isMacroTag,\n  isNativeTag,\n  isTransparentTag,\n  loadFileForImport,\n  loadFileForTag,\n  registerMacro,\n  resolveTagImport,\n} from \"./tags\";\nexport { normalizeTemplateString } from \"./template-string\";\n\nexport function defineTag(tag) {\n  return tag;\n} // just used for adding types for compiler plugins.\n"
  },
  {
    "path": "packages/compiler/src/babel-utils/loc.js",
    "content": "const LINE_INDEX_KEY = Symbol();\n\nexport function getLoc(file, index) {\n  return findLoc(getLineIndexes(file), 0, index);\n}\n\nexport function getLocRange(file, start, end) {\n  const lineIndexes = getLineIndexes(file);\n  const startLoc = findLoc(lineIndexes, 0, start);\n\n  if (startLoc) {\n    const endLoc =\n      start === end ? startLoc : findLoc(lineIndexes, startLoc.line - 1, end);\n\n    return {\n      start: startLoc,\n      end: endLoc,\n    };\n  }\n}\n\nexport function withLoc(file, node, start, end) {\n  node.loc = getLocRange(file, start, end);\n  node.start = start;\n  node.end = end;\n  return node;\n}\n\nexport function getStart(file, node) {\n  // Restore if merged: https://github.com/babel/babel/pull/16849\n  // if (node.start != null) {\n  //   return node.start;\n  // }\n\n  if (node.loc) {\n    return locToIndex(file, node.loc.start);\n  }\n\n  return null;\n}\n\nexport function getEnd(file, node) {\n  // Restore if merged: https://github.com/babel/babel/pull/16849\n  // if (node.end != null) {\n  //   return node.end;\n  // }\n\n  if (node.loc) {\n    return locToIndex(file, node.loc.end);\n  }\n\n  return null;\n}\n\nfunction locToIndex(file, loc) {\n  const { line, column } = loc;\n  return line === 1 ? column : getLineIndexes(file)[line - 1] + column + 1;\n}\n\nfunction getLineIndexes(file) {\n  let lineIndexes = file.metadata.marko[LINE_INDEX_KEY];\n\n  if (!lineIndexes) {\n    lineIndexes = [-1];\n    for (let i = 0; i < file.code.length; i++) {\n      if (file.code[i] === \"\\n\") {\n        lineIndexes.push(i);\n      }\n    }\n\n    file.metadata.marko[LINE_INDEX_KEY] = lineIndexes;\n  }\n\n  return lineIndexes;\n}\n\nfunction findLoc(lineIndexes, startLine, index) {\n  if (index <= 0) {\n    return {\n      line: 1,\n      column: 0,\n    };\n  }\n\n  const endLine = lineIndexes.length - 1;\n  let max = endLine;\n  let line = startLine;\n\n  while (line < max) {\n    const mid = (line + max) >>> 1;\n    if (lineIndexes[mid] < index) {\n      line = mid + 1;\n    } else {\n      max = mid;\n    }\n  }\n\n  let lineIndex = lineIndexes[line];\n  if (lineIndex >= index) {\n    lineIndex = lineIndexes[--line];\n  }\n\n  if (line === 0) {\n    return {\n      line: 1,\n      column: index,\n    };\n  }\n\n  return {\n    line: line + 1,\n    column: index - lineIndex - 1,\n  };\n}\n"
  },
  {
    "path": "packages/compiler/src/babel-utils/parse.js",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  parse as babelParse,\n  parseExpression as babelParseExpression,\n} from \"@marko/compiler/internal/babel\";\n\nimport { getLoc, getLocRange } from \"./loc\";\n\nexport function parseStatements(\n  file,\n  str,\n  sourceStart,\n  sourceEnd,\n  sourceOffset,\n) {\n  return tryParse(file, false, str, sourceStart, sourceEnd, sourceOffset);\n}\n\nexport function parseExpression(\n  file,\n  str,\n  sourceStart,\n  sourceEnd,\n  sourceOffset,\n) {\n  return tryParse(file, true, str, sourceStart, sourceEnd, sourceOffset);\n}\n\nexport function parseParams(file, str, sourceStart, sourceEnd) {\n  const parsed = parseExpression(\n    file,\n    `(${str})=>{}`,\n    sourceStart,\n    sourceEnd,\n    1,\n  );\n\n  if (parsed.type === \"ArrowFunctionExpression\") {\n    return parsed.params;\n  }\n\n  return [ensureParseError(file, parsed, sourceStart, sourceEnd)];\n}\n\nexport function parseArgs(file, str, sourceStart, sourceEnd) {\n  const parsed = parseExpression(file, `_(${str})`, sourceStart, sourceEnd, 2);\n\n  if (parsed.type === \"CallExpression\") {\n    return parsed.arguments;\n  }\n\n  return [ensureParseError(file, parsed, sourceStart, sourceEnd)];\n}\n\nexport function parseVar(file, str, sourceStart, sourceEnd) {\n  const parsed = parseExpression(\n    file,\n    `(${str})=>{}`,\n    sourceStart,\n    sourceEnd,\n    1,\n  );\n\n  if (parsed.type === \"ArrowFunctionExpression\" && parsed.params.length === 1) {\n    return parsed.params[0];\n  }\n\n  return ensureParseError(file, parsed, sourceStart, sourceEnd);\n}\n\nexport function parseTemplateLiteral(file, str, sourceStart, sourceEnd) {\n  const parsed = parseExpression(\n    file,\n    \"`\" + str + \"`\",\n    sourceStart,\n    sourceEnd,\n    1,\n  );\n\n  if (parsed.type === \"TemplateLiteral\") {\n    return t.templateLiteral(parsed.quasis, parsed.expressions);\n  }\n\n  return ensureParseError(file, parsed, sourceStart, sourceEnd);\n}\n\nexport function parseTypeArgs(file, str, sourceStart, sourceEnd) {\n  const parsed = parseExpression(file, `_<${str}>`, sourceStart, sourceEnd, 2);\n\n  if (parsed.type === \"TSInstantiationExpression\") {\n    // typeArguments is Flow only (not TS), we need to use typeParameters\n    return parsed.typeParameters;\n  }\n\n  return [ensureParseError(file, parsed, sourceStart, sourceEnd)];\n}\n\nexport function parseTypeParams(file, str, sourceStart, sourceEnd) {\n  const parsed = parseExpression(\n    file,\n    `<${str}>()=>{}`,\n    sourceStart,\n    sourceEnd,\n    1,\n  );\n\n  if (parsed.type === \"ArrowFunctionExpression\") {\n    return parsed.typeParameters;\n  }\n\n  return [ensureParseError(file, parsed, sourceStart, sourceEnd)];\n}\n\nfunction tryParse(\n  file,\n  isExpression,\n  code,\n  sourceStart,\n  sourceEnd,\n  sourceOffset,\n) {\n  const { parserOpts } = file.opts;\n\n  if (typeof sourceStart === \"number\") {\n    const startLoc = getLoc(file, sourceStart);\n    const startLine = startLoc.line;\n    let startIndex = sourceStart;\n    let startColumn = startLoc.column;\n\n    if (sourceOffset) {\n      startIndex -= sourceOffset;\n      startColumn -= sourceOffset;\n    }\n\n    parserOpts.startLine = startLine;\n    parserOpts.startIndex = startIndex;\n    parserOpts.startColumn = startColumn;\n\n    try {\n      if (isExpression) {\n        return babelParseExpression(code, parserOpts);\n      } else {\n        const { program } = babelParse(code, parserOpts);\n        if (program.innerComments) {\n          const lastNode = t.emptyStatement();\n          lastNode.trailingComments = program.innerComments;\n          program.body.push(lastNode);\n        }\n        return program.body;\n      }\n    } catch (err) {\n      const parseError = createParseError(\n        file,\n        sourceStart,\n        sourceEnd,\n        err.message,\n        err.loc,\n      );\n\n      if (isExpression) {\n        return parseError;\n      } else {\n        return [parseError];\n      }\n    } finally {\n      parserOpts.startIndex = 0;\n      parserOpts.startColumn = 0;\n      parserOpts.startLine = 1;\n    }\n  } else {\n    return isExpression\n      ? t.cloneDeepWithoutLoc(babelParseExpression(code, parserOpts))\n      : babelParse(code, parserOpts).program.body.map((node) =>\n          t.cloneDeepWithoutLoc(node),\n        );\n  }\n}\n\nfunction ensureParseError(file, node, sourceStart, sourceEnd) {\n  if (node.type === \"MarkoParseError\") return node;\n  return createParseError(\n    file,\n    sourceStart,\n    sourceEnd,\n    `Unexpected node of type ${node.type} returned while parsing.`,\n  );\n}\n\nfunction createParseError(file, sourceStart, sourceEnd, label, errorLoc) {\n  file.___hasParseErrors = true;\n  const loc = getLocRange(file, sourceStart, sourceEnd);\n  return {\n    type: \"MarkoParseError\",\n    source: file.code.slice(sourceStart, sourceEnd),\n    label: label.replace(/ *\\(\\d+:\\d+\\)$/, \"\"),\n    errorLoc: errorLoc && getBoundedRange(loc, errorLoc),\n    loc,\n    start: sourceStart,\n    end: sourceEnd,\n  };\n}\n\nfunction getBoundedRange(range, loc) {\n  if (loc && typeof loc.line === \"number\") {\n    const { start, end } = range;\n    // If start is out of bounds return the source.\n    if (\n      loc.line < start.line ||\n      (loc.line === start.line && loc.column < start.column) ||\n      loc.line > end.line ||\n      (loc.line === end.line && loc.column > end.column)\n    ) {\n      return range;\n    }\n\n    return { start: loc, end: loc };\n  }\n}\n"
  },
  {
    "path": "packages/compiler/src/babel-utils/taglib.js",
    "content": "const SEEN_TAGS_KEY = Symbol();\n\nexport function getTaglibLookup(file) {\n  return file.___taglibLookup;\n}\n\nexport function getTagDefForTagName(file, tagName) {\n  const tagDef = getTaglibLookup(file).getTag(tagName);\n\n  if (tagDef) {\n    let seen = file.metadata.marko[SEEN_TAGS_KEY];\n    if (!seen) {\n      seen = file.metadata.marko[SEEN_TAGS_KEY] = new Set();\n    }\n\n    if (!seen.has(tagDef)) {\n      seen.add(tagName);\n      const { filePath } = tagDef;\n      const len = filePath.length;\n\n      if (filePath[len - 14] === \"m\" && filePath.endsWith(\"marko-tag.json\")) {\n        file.metadata.marko.watchFiles.push(filePath);\n      }\n    }\n  }\n  return tagDef;\n}\n"
  },
  {
    "path": "packages/compiler/src/babel-utils/tags.js",
    "content": "import { types as t } from \"@marko/compiler\";\nimport markoModules from \"@marko/compiler/modules\";\nimport { basename, dirname, join, relative, resolve } from \"path\";\n\nimport { Hash } from \"../util/quick-hash\";\nimport { diagnosticWarn } from \"./diagnostics\";\nimport { resolveRelativePath } from \"./imports\";\nimport { getTagDefForTagName } from \"./taglib\";\n\nconst { cwd, root } = markoModules;\nconst MACRO_IDS_KEY = Symbol();\nconst MACRO_NAMES_KEY = \"__marko_macro_names__\"; // must be a string literal since it is used across compiler stages.\nconst TRANSPARENT_TAGS = new Set([\n  \"for\",\n  \"while\",\n  \"if\",\n  \"else\",\n  \"else-if\",\n  \"_no-update\",\n]);\n\nexport function isNativeTag(path) {\n  if (path.node._isDynamicString) {\n    return true;\n  }\n\n  const tagDef = getTagDef(path);\n  return (\n    tagDef &&\n    tagDef.html &&\n    (tagDef.htmlType === \"custom-element\" ||\n      (!tagDef.template && !tagDef.renderer))\n  );\n}\n\nexport function isDynamicTag(path) {\n  return !t.isStringLiteral(path.node.name);\n}\n\nexport function isAttributeTag(path) {\n  const {\n    node: { name },\n  } = path;\n  return t.isStringLiteral(name) && name.value[0] === \"@\";\n}\n\nexport function isTransparentTag(path) {\n  const {\n    node: { name },\n  } = path;\n  return t.isStringLiteral(name) && TRANSPARENT_TAGS.has(name.value);\n}\n\nexport function registerMacro(path, name) {\n  const { file } = path.hub;\n  const markoMeta = file.metadata.marko;\n  const macroNames = markoMeta[MACRO_NAMES_KEY];\n\n  if (macroNames) {\n    if (macroNames[name]) {\n      diagnosticWarn(path, {\n        label: `A macro with the name \"${name}\" already exists.`,\n        fix() {\n          findParentTag(path).remove();\n        },\n      });\n    }\n    macroNames[name] = true;\n  } else {\n    markoMeta[MACRO_NAMES_KEY] = { [name]: true };\n  }\n}\n\nexport function hasMacro(path, name) {\n  const macroNames = path.hub.file.metadata.marko[MACRO_NAMES_KEY];\n  return !!(macroNames && macroNames[name]);\n}\n\nexport function isMacroTag(path) {\n  const { name } = path.node;\n  return t.isStringLiteral(name) && hasMacro(path, name.value);\n}\n\nexport function getMacroIdentifierForName(path, name) {\n  const { file } = path.hub;\n\n  if (file.___compileStage !== \"translate\") {\n    throw new Error(\n      \"getMacroIdentifierForName can only be called during the translate phase of the compiler.\",\n    );\n  }\n\n  const markoMeta = file.metadata.marko;\n  let macroIds = markoMeta[MACRO_IDS_KEY];\n\n  if (!macroIds) {\n    macroIds = markoMeta[MACRO_IDS_KEY] = {};\n\n    for (const macroName in markoMeta[MACRO_NAMES_KEY]) {\n      macroIds[macroName] = file.path.scope.generateUid(macroName);\n    }\n  }\n\n  const id = macroIds[name];\n\n  if (!id) {\n    throw new Error(\n      \"<macro> was added programmatically, but was not registered via the 'registerMacro' api in @marko/compiler/babel-utils.\",\n    );\n  }\n\n  return t.identifier(id);\n}\n\nexport function getMacroIdentifier(path) {\n  const { file } = path.hub;\n\n  if (file.___compileStage !== \"translate\") {\n    throw new Error(\n      \"getMacroIdentifier can only be called during the translate phase of the compiler.\",\n    );\n  }\n\n  if (!isMacroTag(path)) {\n    throw path.buildCodeFrameError(\n      \"getMacroIdentifier called on non macro referencing tag.\",\n    );\n  }\n\n  return getMacroIdentifierForName(path, path.node.name.value);\n}\n\nexport function getTagTemplate(tag) {\n  const {\n    node,\n    hub: { file },\n  } = tag;\n\n  if (node.extra?.tagNameImported) {\n    return join(file.opts.filename, node.extra.tagNameImported);\n  }\n  return getTagDef(tag)?.template;\n}\n\nexport function getTagDef(path) {\n  const {\n    node,\n    hub: { file },\n  } = path;\n\n  if (node.tagDef === undefined) {\n    if (isDynamicTag(path) || isMacroTag(path)) {\n      node.tagDef = null;\n    } else {\n      node.tagDef =\n        getTagDefForTagName(\n          file,\n          isAttributeTag(path)\n            ? getFullyResolvedTagName(path)\n            : node.name.value,\n        ) || null;\n    }\n  }\n\n  return node.tagDef;\n}\n\nexport function getFullyResolvedTagName(path) {\n  const parts = [];\n  let cur;\n  do {\n    cur = path.node.name.value;\n\n    if (isAttributeTag(path)) {\n      parts.push(cur.slice(1));\n    } else {\n      parts.push(cur || \"*\");\n      break;\n    }\n  } while ((path = findParentTag(path)));\n\n  return parts.reverse().join(\":\");\n}\n\nexport function findParentTag(path) {\n  let cur = path.parentPath;\n\n  while (cur.node) {\n    if (cur.isMarkoTagBody()) {\n      cur = cur.parentPath;\n      continue;\n    }\n\n    if (!cur.isMarkoTag()) {\n      break;\n    }\n\n    if (isTransparentTag(cur)) {\n      cur = cur.parentPath;\n      continue;\n    }\n\n    return cur;\n  }\n}\n\nexport function findAttributeTags(path, attributeTags = []) {\n  const attrTags = path.node.body.attributeTags\n    ? path.get(\"body\").get(\"body\")\n    : path.get(\"attributeTags\");\n  attrTags.forEach((child) => {\n    if (isAttributeTag(child)) {\n      attributeTags.push(child);\n    } else if (isTransparentTag(child)) {\n      findAttributeTags(child, attributeTags);\n    }\n  });\n\n  return attributeTags;\n}\n\nexport function getArgOrSequence(path) {\n  const {\n    node: { arguments: args },\n  } = path;\n  const len = args && args.length;\n\n  if (len) {\n    if (len > 1) {\n      return t.sequenceExpression(args);\n    } else {\n      return args[0];\n    }\n  }\n}\n\nexport function isLoopTag(path) {\n  if (!path.isMarkoTag()) {\n    return false;\n  }\n\n  const tagName = path.node.name.value;\n  return tagName === \"while\" || tagName === \"for\";\n}\n\nexport function loadFileForTag(tag) {\n  const { file } = tag.hub;\n  if (tag.node.extra?.tagNameImported) {\n    return loadFileForImport(file, tag.node.extra?.tagNameImported);\n  }\n\n  const def = getTagDef(tag);\n  const filename = def && def.template;\n\n  if (filename) {\n    return resolveMarkoFile(file, filename);\n  }\n}\n\nexport function loadFileForImport(file, request) {\n  const relativeRequest = resolveTagImport(file.path, request);\n  if (relativeRequest) {\n    const filename =\n      relativeRequest[0] === \".\"\n        ? resolve(file.opts.filename, \"..\", relativeRequest)\n        : markoModules.resolve(relativeRequest, dirname(file.opts.filename));\n    return resolveMarkoFile(file, filename);\n  }\n}\n\nfunction resolveMarkoFile(file, filename) {\n  if (filename === file.opts.filename) {\n    if (file.___compileStage === \"analyze\") {\n      return file;\n    }\n\n    return file.___getMarkoFile(file.code, file.opts, file.markoOpts);\n  }\n\n  try {\n    const childFile = file.___getMarkoFile(\n      file.markoOpts.fileSystem.readFileSync(filename).toString(\"utf-8\"),\n      createNewFileOpts(file.opts, filename),\n      file.markoOpts,\n    );\n\n    (file.metadata.marko.analyzedTags ||= new Set()).add(filename);\n    return childFile;\n  } catch (_) {\n    // ignore\n  }\n}\n\nconst idCache = new WeakMap();\nconst templateIdHashOpts = { outputLength: 5 };\nexport function getTemplateId(opts, request, child) {\n  if (!child && opts.getTemplateId) return opts.getTemplateId(request);\n\n  const id = relative(root, request).replace(/[^a-zA-Z0-9_$./-]/g, \"/\");\n\n  if (opts.optimize) {\n    const optimizeKnownTemplates =\n      typeof opts === \"object\" && opts.optimizeKnownTemplates;\n    const knownTemplatesSize = optimizeKnownTemplates?.length || 0;\n    if (knownTemplatesSize) {\n      let lookup = idCache.get(optimizeKnownTemplates);\n      if (!lookup) {\n        lookup = new Map();\n        idCache.set(optimizeKnownTemplates, lookup);\n        for (let i = 0; i < knownTemplatesSize; i++) {\n          lookup.set(optimizeKnownTemplates[i], {\n            id: encodeTemplateId(i),\n            children: new Map(),\n          });\n        }\n      }\n      let registered = lookup.get(request);\n      if (registered) {\n        if (child) {\n          let childId = registered.children.get(child);\n          if (childId === undefined) {\n            childId = registered.children.size;\n            registered.children.set(child, childId);\n          }\n          return registered.id + childId;\n        }\n        return registered.id;\n      }\n    }\n\n    const hash = new Hash().update(id);\n    if (child) {\n      hash.update(child);\n    }\n\n    return encodeTemplateId(hash.digest());\n  }\n\n  return id + (child ? `_${child}` : \"\");\n}\n\nexport function resolveTagImport(path, request) {\n  const {\n    hub: { file },\n  } = path;\n  if (request[0] === \"<\") {\n    const tagName = request.slice(1, -1);\n    const tagDef = getTagDefForTagName(file, tagName);\n    const tagEntry = tagDef && (tagDef.renderer || tagDef.template);\n    const relativePath = tagEntry && resolveRelativePath(file, tagEntry);\n\n    if (!relativePath) {\n      throw path.buildCodeFrameError(\n        `Unable to find entry point for custom tag <${tagName}>.`,\n      );\n    }\n\n    return relativePath;\n  }\n\n  if (request.endsWith(\".marko\")) {\n    return resolveRelativePath(file, request);\n  }\n}\n\nfunction createNewFileOpts(opts, filename) {\n  const sourceFileName = basename(filename);\n  const sourceRoot = dirname(filename);\n  const filenameRelative = relative(cwd, filename);\n  return {\n    ...opts,\n    filename,\n    sourceRoot,\n    sourceFileName,\n    filenameRelative,\n    parserOpts: {\n      ...opts.parserOpts,\n      sourceFileName,\n    },\n    generatorOpts: {\n      ...opts.generatorOpts,\n      filename,\n      sourceRoot,\n      sourceFileName,\n    },\n  };\n}\n\nfunction encodeTemplateId(id) {\n  const c = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_0123456789\";\n  let n = id;\n  let r = c[n % 53]; // Avoids chars that cannot start a property name and _ (reserved).\n  n = Math.floor(n / 53);\n\n  // ensure at most 7 characters.\n  for (let i = 6; n > 0 && i--; n = Math.floor(n / 64)) {\n    r += c[n & 63];\n  }\n\n  return r;\n}\n"
  },
  {
    "path": "packages/compiler/src/babel-utils/template-string.js",
    "content": "import { types as t } from \"@marko/compiler\";\nimport jsesc from \"jsesc\";\n\nexport function normalizeTemplateString(quasis, ...expressions) {\n  quasis = quasis.map((q) => (t.isTemplateElement(q) ? q.value.cooked : q));\n\n  for (let i = expressions.length; i--; ) {\n    let v = expressions[i];\n    if (t.isTemplateLiteral(v)) {\n      quasis[i] += v.quasis[0].value.cooked;\n      quasis[i + 1] =\n        v.quasis[v.quasis.length - 1].value.cooked + (quasis[i + 1] || \"\");\n      quasis.splice(\n        i + 1,\n        0,\n        ...v.quasis.slice(1, -1).map((q) => q.value.cooked),\n      );\n      expressions.splice(i, 1, ...v.expressions);\n      i += v.expressions.length;\n    } else if (t.isStringLiteral(v) || typeof v === \"string\") {\n      const value = t.isStringLiteral(v) ? v.value : v;\n      quasis[i] += value + quasis[i + 1];\n      expressions.splice(i, 1);\n      quasis.splice(i + 1, 1);\n    }\n  }\n\n  if (!expressions.length) {\n    // No expression, just return a literal or empty.\n    const literal = quasis.join(\"\");\n    return literal === \"\" ? undefined : t.stringLiteral(literal);\n  }\n\n  if (\n    expressions.length === 1 &&\n    quasis.length === 2 &&\n    quasis.every(isEmptyString)\n  ) {\n    // Only expression `${expr}` just return the expr.\n    return expressions[0];\n  }\n\n  // Do it.\n  return t.templateLiteral(quasis.map(getTemplateElement), expressions);\n}\n\nfunction getTemplateElement(s = \"\") {\n  return t.templateElement({\n    cooked: s,\n    raw: jsesc(s, { quotes: \"backtick\" }),\n  });\n}\n\nfunction isEmptyString(s = \"\") {\n  return s === \"\";\n}\n"
  },
  {
    "path": "packages/compiler/src/config.js",
    "content": "import { pkg } from \"@marko/compiler/modules\";\nimport fs from \"fs\";\n\nconst config = {\n  // The default output mode for compiled templates\n  output: \"html\",\n\n  // Override the runtimeid used when calling `marko/components.init` in the `hydrate` output.\n  runtimeId: null,\n\n  /**\n   * Remove all typescript types from the output.\n   * By default, the compiler will remove types from the output if the\n   * `output` option is not `source` or `migrate`.\n   */\n  stripTypes: undefined,\n\n  // Have Marko provide the final AST in the compile result.\n  ast: false,\n\n  // Set the false to have Marko not generate the final code string, useful if just reading metadata or AST.\n  code: true,\n\n  /**\n   * Whether the version should be written to the template as a comment e.g.\n   * // Compiled using marko@x.x.x - DO NOT EDIT\n   */\n  writeVersionComment: true,\n\n  /**\n   * Whether unrecognized tags should be ignored or not. This flag will\n   * be enabled by default when compiling XML.\n   */\n  ignoreUnrecognizedTags: false,\n\n  /**\n   * Whether source maps should be output with the compiled templates.\n   * When `true` a `map` property will be available on the compile result.\n   * When `\"inline\"` the sourcemap will be inlined as a comment in the output code.\n   * When `\"both\"` both of the above will be used.\n   */\n  sourceMaps: false,\n\n  /**\n   * This option inlines all of the meta data in the template.\n   * You can also access this metadata via `compile(...).meta`.\n   * This API is sticking around for compatibility purposes.\n   */\n  meta: false,\n\n  /**\n   * Allows configuring Marko to compile to different runtimes.\n   */\n  translator: (() => {\n    const translatorReg = /^(?:@marko\\/|marko-)runtime-/;\n    const translatorInterop = \"@marko/translator-interop-class-tags\";\n    let translator;\n\n    if (pkg) {\n      if (\n        pkg.dependencies?.[translatorInterop] ||\n        pkg.devDependencies?.[translatorInterop]\n      ) {\n        return translatorInterop;\n      }\n\n      for (const name in pkg.dependencies) {\n        if (translatorReg.test(name)) {\n          if (translator && translator !== name) {\n            return;\n          }\n\n          translator = name;\n        }\n      }\n\n      for (const name in pkg.peerDependencies) {\n        if (translatorReg.test(name)) {\n          if (translator && translator !== name) {\n            return;\n          }\n\n          translator = name;\n        }\n      }\n\n      for (const name in pkg.devDependencies) {\n        if (translatorReg.test(name)) {\n          if (translator && translator !== name) {\n            return;\n          }\n\n          translator = name;\n        }\n      }\n    }\n\n    if (translator) {\n      translator += \"/translator\";\n    }\n\n    return translator || \"marko/translator\";\n  })(),\n\n  /**\n   * Use a different file system object, eg webpacks CachedInputFileSystem or lasso-caching-fs\n   */\n  fileSystem: fs,\n  /**\n   * By default Marko 5 outputs esm, you can optionally specify commonjs.\n   *\n   * Valid options: esm | cjs\n   */\n  modules: \"esm\",\n\n  /**\n   * Enables production mode optimizations if true, or not if false.\n   * If left as undefined checks for env === \"production\".\n   */\n  optimize: undefined,\n\n  /**\n   * If `optimize` is enabled you can provide an array of template paths which the compiler will\n   * use to generate shorter registry/template ids using incrementing ids. This can only be used\n   * if the same `optimizeKnownTemplates` are used for both server and client compilations.\n   */\n  optimizeKnownTemplates: undefined,\n\n  /**\n   * This option should be set if `hydrate` output is specified.\n   * Maps a virtual dependency to a resolved file which can be implemented\n   * for specific bundlers.\n   */\n  resolveVirtualDependency: null,\n\n  /**\n   * Compiling a Marko template may require other (used) Marko templates to compile.\n   * To prevent compiling templates more than once, most of the compilation is cached.\n   */\n  cache: new Map(),\n\n  /**\n   * A regexp or function that receives an import path that matches file types known to be client side assets.\n   */\n  hydrateIncludeImports:\n    /\\.(css|less|s[ac]ss|styl|png|jpe?g|gif|svg|ico|webp|avif|mp4|webm|ogg|mp3|wav|flac|aac|woff2?|eot|ttf|otf)$/,\n\n  /**\n   * When compiling in hydrate mode, this option will cause the compiler to\n   * call the `marko/components.init` function to begin hydrating components.\n   */\n  hydrateInit: true,\n\n  /**\n   * Set to true in order to bring in the hot module replacement runtime.\n   */\n  hot: false,\n\n  /**\n   * Wether error diagnostics should be thrown as errors\n   * before the compile result is returned.\n   *\n   * Note that the compiler can still throw errors even when true.\n   * When the errorRecovery is true, any recoverable errors will be\n   * returned in the `meta.diagnostics` property of the compile result.\n   */\n  errorRecovery: false,\n\n  // When supplied, any diagnostics which have a fix specified in the lookup will be applied to the source code.\n  applyFixes: undefined,\n};\n\nif (\n  typeof process === \"object\" &&\n  typeof process.env === \"object\" &&\n  process.env.MARKO_CONFIG\n) {\n  Object.assign(config, JSON.parse(process.env.MARKO_CONFIG));\n}\n\nexport default config;\n\nimport taglibConfig from \"./taglib/config\";\ntaglibConfig.fs = config.fileSystem;\n"
  },
  {
    "path": "packages/compiler/src/index.js",
    "content": "import { DiagnosticType } from \"@marko/compiler/babel-utils\";\nimport {\n  loadPartialConfig,\n  loadPartialConfigAsync,\n  pluginTransformModulesCommonjs,\n  transformAsync,\n  transformSync,\n  types,\n} from \"@marko/compiler/internal/babel\";\nimport markoModules from \"@marko/compiler/modules\";\nimport path from \"path\";\n\nimport corePlugin from \"./babel-plugin\";\nimport defaultConfig from \"./config\";\nimport * as taglib from \"./taglib\";\nimport { buildCodeFrameError } from \"./util/build-code-frame\";\nimport throwAggregateError from \"./util/merge-errors\";\nimport shouldOptimize from \"./util/should-optimize\";\nimport tryLoadTranslator from \"./util/try-load-translator\";\nexport { taglib, types };\n\nconst hasBabel = !!(\n  markoModules.pkg &&\n  (markoModules.pkg.dependencies?.[\"@babel/core\"] ||\n    markoModules.pkg.devDependencies?.[\"@babel/core\"])\n);\nexport let globalConfig = { ...defaultConfig };\nexport function configure(newConfig) {\n  globalConfig = { ...defaultConfig, ...newConfig };\n}\n\nexport async function compile(src, filename, config) {\n  const markoConfig = loadMarkoConfig(config);\n  const babelConfig = await loadBabelConfig(filename, markoConfig);\n  const babelResult = await transformAsync(src, babelConfig);\n  return buildResult(src, filename, markoConfig.errorRecovery, babelResult);\n}\n\nexport function compileSync(src, filename, config) {\n  const markoConfig = loadMarkoConfig(config);\n  const babelConfig = loadBabelConfigSync(filename, markoConfig);\n  const babelResult = transformSync(src, babelConfig);\n  return buildResult(src, filename, markoConfig.errorRecovery, babelResult);\n}\n\nexport async function compileFile(filename, config) {\n  return new Promise((resolve, reject) => {\n    getFs(config).readFile(filename, \"utf-8\", (err, src) => {\n      if (err) {\n        return reject(err);\n      }\n\n      return resolve(compile(src, filename, config));\n    });\n  });\n}\n\nexport function compileFileSync(filename, config) {\n  const src = getFs(config).readFileSync(filename, \"utf-8\");\n  return compileSync(src, filename, config);\n}\n\nexport function getRuntimeEntryFiles(output, requestedTranslator) {\n  const translator = tryLoadTranslator(requestedTranslator);\n  if (translator && translator.getRuntimeEntryFiles) {\n    return translator.getRuntimeEntryFiles(output, shouldOptimize());\n  }\n\n  return [];\n}\n\nfunction loadMarkoConfig(config) {\n  const markoConfig = { ...globalConfig, ...config };\n\n  if (markoConfig.stripTypes === undefined) {\n    markoConfig.stripTypes = isTranslatedOutput(markoConfig.output);\n  }\n\n  return markoConfig;\n}\n\nasync function loadBabelConfig(filename, config) {\n  const baseBabelConfig = getBaseBabelConfig(filename, config);\n  return shouldResolveBabelConfig(config)\n    ? (await loadPartialConfigAsync(baseBabelConfig)).options\n    : baseBabelConfig;\n}\n\nfunction loadBabelConfigSync(filename, config) {\n  const baseBabelConfig = getBaseBabelConfig(filename, config);\n  return shouldResolveBabelConfig(config)\n    ? loadPartialConfig(baseBabelConfig).options\n    : baseBabelConfig;\n}\n\nfunction shouldResolveBabelConfig(config) {\n  return !!(\n    config.babelrc ||\n    config.configFile ||\n    config.browserslistConfigFile\n  );\n}\n\nfunction getBaseBabelConfig(filename, { babelConfig, ...markoConfig }) {\n  const isTranslated = isTranslatedOutput(markoConfig.output);\n  const loadConfig = isTranslated && hasBabel;\n  const requiredPlugins = [[corePlugin, markoConfig]];\n  const baseBabelConfig = {\n    filenameRelative: filename\n      ? path.relative(markoModules.cwd, filename)\n      : undefined,\n    sourceRoot: filename ? path.dirname(filename) : undefined,\n    sourceFileName: filename ? path.basename(filename) : undefined,\n    babelrc: loadConfig,\n    configFile: loadConfig,\n    browserslistConfigFile: loadConfig,\n    ...babelConfig,\n    filename,\n    sourceType: \"module\",\n    sourceMaps: markoConfig.sourceMaps,\n    code: markoConfig.code,\n    ast: markoConfig.ast,\n    plugins:\n      babelConfig && babelConfig.plugins\n        ? requiredPlugins.concat(babelConfig.plugins)\n        : requiredPlugins,\n  };\n\n  if (isTranslated) {\n    if (markoConfig.modules === \"cjs\") {\n      baseBabelConfig.plugins.push([\n        pluginTransformModulesCommonjs,\n        { loose: true },\n      ]);\n    }\n  }\n\n  return baseBabelConfig;\n}\n\nfunction buildResult(src, filename, errorRecovery, babelResult) {\n  const {\n    ast,\n    map,\n    code,\n    metadata: { marko: meta },\n  } = babelResult;\n\n  if (!errorRecovery) {\n    const errors = [];\n\n    for (const diag of meta.diagnostics) {\n      if (diag.type === DiagnosticType.Error) {\n        errors.push(buildCodeFrameError(filename, src, diag.loc, diag.label));\n      }\n    }\n\n    throwAggregateError(errors);\n  }\n\n  return { ast, map, code, meta };\n}\n\nexport function _clearDefaults() {\n  globalConfig.cache.clear();\n}\n\nfunction getFs(config) {\n  return config.fileSystem || globalConfig.fileSystem;\n}\n\nfunction isTranslatedOutput(output) {\n  return output !== \"source\" && output !== \"migrate\";\n}\n"
  },
  {
    "path": "packages/compiler/src/register.js",
    "content": "\"use strict\";\n\nconst shouldOptimize = require(\"./util/should-optimize\").default;\nconst compiler = require(\".\");\nconst requiredOptions = { modules: \"cjs\" };\nconst isDev = !shouldOptimize();\nlet setSourceMap = (filename, map) => {\n  const sourceMaps = new Map([[filename, map]]);\n  require(\"source-map-support\").install({\n    handleUncaughtExceptions: false,\n    environment: \"node\",\n    retrieveSourceMap(source) {\n      const map = sourceMaps.get(source);\n      if (map) {\n        return { url: null, map };\n      }\n      return null;\n    },\n  });\n\n  setSourceMap = (filename, map) => {\n    sourceMaps.set(filename, map);\n  };\n};\n\nmodule.exports = register;\nregister();\n\nfunction register({ extensions = require.extensions, ...options } = {}) {\n  extensions[\".marko\"] = (module, filename) => {\n    const compiled = compiler.compileFileSync(\n      filename,\n      Object.assign(\n        {\n          meta: true,\n          hot: process.env.BROWSER_REFRESH_URL !== undefined,\n          sourceMaps: isDev ? \"both\" : false,\n        },\n        options,\n        requiredOptions,\n      ),\n    );\n\n    if (compiled.map) {\n      setSourceMap(filename, compiled.map);\n    }\n\n    return module._compile(compiled.code, filename);\n  };\n\n  return extensions;\n}\n"
  },
  {
    "path": "packages/compiler/src/taglib/config.js",
    "content": "module.exports = {\n  fs: undefined,\n  onError: (err) => {\n    throw err;\n  },\n};\n"
  },
  {
    "path": "packages/compiler/src/taglib/finder/index.js",
    "content": "\"use strict\";\nvar nodePath = require(\"path\");\nvar lassoPackageRoot = require(\"lasso-package-root\");\nvar markoModules = require(\"@marko/compiler/modules\");\nvar taglibConfig = require(\"../config\");\nvar taglibLoader = require(\"../loader\");\nvar findCache = {};\nvar excludedDirs = {};\nvar excludedPackages = {};\n\n/**\n * Reset all internal state to the default state. This\n * was added for testing purposes.\n */\nfunction reset() {\n  clearCache();\n  excludedDirs = {};\n  excludedPackages = {};\n}\n\nfunction getModuleRootPackage(dirname) {\n  try {\n    return lassoPackageRoot.getRootPackage(dirname);\n  } catch (e) {\n    return undefined;\n  }\n}\n\nfunction getAllDependencyNames(pkg) {\n  var map = {};\n\n  if (pkg.dependencies) {\n    Object.keys(pkg.dependencies).forEach((name) => {\n      map[name] = true;\n    });\n  }\n\n  if (pkg.peerDependencies) {\n    Object.keys(pkg.peerDependencies).forEach((name) => {\n      map[name] = true;\n    });\n  }\n\n  if (pkg.devDependencies) {\n    Object.keys(pkg.devDependencies).forEach((name) => {\n      map[name] = true;\n    });\n  }\n\n  return Object.keys(map);\n}\n\nfunction find(dirname, registeredTaglibs, tagDiscoveryDirs) {\n  var cached = findCache[dirname];\n  if (cached) {\n    return cached.taglibs;\n  }\n\n  var taglibs = [];\n  var added = new Set();\n  var rootDirname = markoModules.cwd; // Don't search up past this directory\n  var rootPkg = getModuleRootPackage(dirname);\n  if (rootPkg) {\n    rootDirname = rootPkg.__dirname; // Use the package's root directory as the top-level directory\n  }\n\n  // First walk up the directory tree looking for marko.json files or components/ directories\n  let curDirname = dirname;\n  // exclusiveTagDiscoveryDirs is used for the interop to detect if `tags` directories are used exclusively when finding tags\n  let exclusiveTagDiscoveryDirs = undefined;\n\n  while (true) {\n    if (!excludedDirs[curDirname]) {\n      let taglibPath = nodePath.join(curDirname, \"marko.json\");\n      let taglib;\n      let manualTagsDir;\n\n      if (existsSync(taglibPath)) {\n        taglib = taglibLoader.loadTaglibFromFile(taglibPath);\n        manualTagsDir = taglib.tagsDir;\n        addTaglib(taglib);\n      }\n\n      if (manualTagsDir === undefined) {\n        for (const tagDiscoveryDir of tagDiscoveryDirs) {\n          const componentsPath = nodePath.join(curDirname, tagDiscoveryDir);\n\n          if (existsSync(componentsPath) && !excludedDirs[componentsPath]) {\n            if (exclusiveTagDiscoveryDirs !== false) {\n              if (exclusiveTagDiscoveryDirs === undefined) {\n                exclusiveTagDiscoveryDirs = tagDiscoveryDir;\n              } else if (exclusiveTagDiscoveryDirs !== tagDiscoveryDir) {\n                exclusiveTagDiscoveryDirs = false;\n              }\n            }\n\n            addTaglib(\n              taglibLoader.loadTaglibFromDir(curDirname, tagDiscoveryDir),\n            );\n          }\n        }\n      } else if (manualTagsDir) {\n        exclusiveTagDiscoveryDirs = false;\n      }\n    }\n\n    if (curDirname === rootDirname) {\n      break;\n    }\n\n    let parentDirname = nodePath.dirname(curDirname);\n    if (!parentDirname || parentDirname === curDirname) {\n      break;\n    }\n    curDirname = parentDirname;\n  }\n\n  if (rootPkg) {\n    // Now look for `marko.json` from installed packages\n    getAllDependencyNames(rootPkg).forEach((name) => {\n      if (!excludedPackages[name]) {\n        let taglibPath = markoModules.tryResolve(\n          name + \"/marko.json\",\n          rootPkg.__dirname,\n        );\n        if (taglibPath) {\n          var taglib = taglibLoader.loadTaglibFromFile(taglibPath, true);\n          addTaglib(taglib);\n        }\n      }\n    });\n  }\n\n  for (let i = registeredTaglibs.length; i--; ) {\n    addTaglib(registeredTaglibs[i]);\n  }\n\n  findCache[dirname] = { exclusiveTagDiscoveryDirs, taglibs };\n  return taglibs;\n\n  function addTaglib(taglib) {\n    if (!added.has(taglib.id)) {\n      added.add(taglib.id);\n      taglibs.push(taglib);\n    }\n  }\n}\n\nfind._withMeta = function findWithMeta(\n  dirname,\n  registeredTaglibs,\n  tagDiscoveryDirs,\n) {\n  find(dirname, registeredTaglibs, tagDiscoveryDirs);\n  return findCache[dirname];\n};\n\nfunction clearCache() {\n  findCache = {};\n}\n\nfunction excludeDir(dir) {\n  excludedDirs[dir] = true;\n}\n\nfunction excludePackage(name) {\n  excludedPackages[name] = true;\n}\n\nfunction existsSync(file) {\n  try {\n    taglibConfig.fs.statSync(file);\n    return true;\n  } catch (_) {\n    return false;\n  }\n}\n\nexports.reset = reset;\nexports.find = find;\nexports.clearCache = clearCache;\nexports.excludeDir = excludeDir;\nexports.excludePackage = excludePackage;\n"
  },
  {
    "path": "packages/compiler/src/taglib/index.js",
    "content": "import markoModules from \"@marko/compiler/modules\";\nimport path from \"path\";\n\nimport tryLoadTranslator from \"../util/try-load-translator\";\nimport taglibConfig from \"./config\";\nimport finder from \"./finder\";\nimport loader from \"./loader\";\nimport Lookup from \"./lookup\";\n\nexport const excludeDir = finder.excludeDir;\nexport const excludePackage = finder.excludePackage;\n\nimport markoHTMLTaglib from \"./marko-html.json\";\nimport markoMathTaglib from \"./marko-math.json\";\nimport markoSVGTaglib from \"./marko-svg.json\";\n\nconst registeredTaglibs = [];\nconst loadedTranslatorsTaglibs = new Map();\nlet lookupCache = Object.create(null);\n\nregister(markoHTMLTaglib[\"taglib-id\"], markoHTMLTaglib);\nregister(markoSVGTaglib[\"taglib-id\"], markoSVGTaglib);\nregister(markoMathTaglib[\"taglib-id\"], markoMathTaglib);\n\nexport function buildLookup(dirname, requestedTranslator, onError) {\n  const translator = tryLoadTranslator(requestedTranslator);\n  if (!translator || !Array.isArray(translator.taglibs)) {\n    throw new Error(\n      \"@marko/compiler: Invalid translator provided to buildLookup(dir, translator)\",\n    );\n  }\n\n  let taglibsForDir = loadedTranslatorsTaglibs.get(translator);\n  let exclusiveTagDiscoveryDirs = undefined;\n\n  if (!taglibsForDir) {\n    loadedTranslatorsTaglibs.set(\n      translator,\n      (taglibsForDir = registeredTaglibs.concat(\n        resolveOptionalTaglibs(translator.optionalTaglibs || [], onError)\n          .concat(translator.taglibs)\n          .map(([id, props]) => loadTaglib(id, props)),\n      )),\n    );\n  }\n\n  runAndCatchErrors(() => {\n    const foundMeta = finder.find._withMeta(\n      dirname,\n      taglibsForDir,\n      translator.tagDiscoveryDirs,\n    );\n    taglibsForDir = foundMeta.taglibs;\n    exclusiveTagDiscoveryDirs = foundMeta.exclusiveTagDiscoveryDirs;\n  }, onError);\n\n  const cacheKey = taglibsForDir\n    .map((it) => it.id)\n    .sort()\n    .join();\n  let lookup = lookupCache[cacheKey];\n\n  if (!lookup) {\n    lookup = lookupCache[cacheKey] = new Lookup();\n    lookup.exclusiveTagDiscoveryDirs = exclusiveTagDiscoveryDirs;\n    for (let i = taglibsForDir.length; i--; ) {\n      const taglib = taglibsForDir[i];\n      lookup.addTaglib(taglib);\n      if (taglib.imports) {\n        for (const importedTaglib of taglib.imports) {\n          if (!lookup.hasTaglib(importedTaglib)) {\n            lookup.addTaglib(importedTaglib);\n          }\n        }\n      }\n    }\n  }\n\n  return lookup;\n}\n\nexport function register(id, props) {\n  if (typeof props === \"undefined\") {\n    [id, props] = resolveTaglib(id);\n  }\n  registeredTaglibs.push(loadTaglib(id, props));\n}\n\nexport function clearCaches() {\n  loader.clearCache();\n  finder.clearCache();\n  lookupCache = Object.create(null);\n}\n\nexport function resolveOptionalTaglibs(taglibIds, onError) {\n  const resolvedTaglibs = [];\n  for (const id of taglibIds) {\n    if (hasRootDependency(id)) {\n      runAndCatchErrors(() => {\n        resolvedTaglibs.push(resolveTaglib(id));\n      }, onError);\n    }\n  }\n\n  return resolvedTaglibs;\n}\n\n// Used by legacy compiler api.\nexport const _loader = loader;\nexport const _finder = finder;\n\nfunction runAndCatchErrors(fn, onError) {\n  if (onError) {\n    const prevOnError = taglibConfig.onError;\n    taglibConfig.onError = onError;\n    try {\n      fn();\n    } catch (err) {\n      taglibConfig.onError(err);\n    } finally {\n      taglibConfig.onError = prevOnError;\n    }\n  } else {\n    fn();\n  }\n}\n\nfunction loadTaglib(id, props) {\n  return loader.loadTaglibFromProps(loader.createTaglib(id), props);\n}\n\nfunction resolveTaglib(id) {\n  switch (id[0]) {\n    case \".\":\n    case \"/\":\n    case \"\\\\\":\n      break;\n    default:\n      if (!id.endsWith(\".json\")) {\n        id = path.join(id, \"marko.json\");\n      }\n      break;\n  }\n\n  const resolved = markoModules.resolve(id);\n  return [resolved, markoModules.require(resolved)];\n}\n\nfunction hasRootDependency(id) {\n  return !!(\n    markoModules.pkg &&\n    (markoModules.pkg.dependencies?.[id] ||\n      markoModules.pkg.devDependencies?.[id])\n  );\n}\n"
  },
  {
    "path": "packages/compiler/src/taglib/loader/Attribute.js",
    "content": "\"use strict\";\n\nclass Attribute {\n  constructor(name) {\n    this.name = name;\n    this.type = null;\n    this.required = false;\n    this.type = null;\n    this.allowExpressions = true;\n    this.setFlag = null;\n    this.pattern = null;\n  }\n}\n\nmodule.exports = Attribute;\n"
  },
  {
    "path": "packages/compiler/src/taglib/loader/DependencyChain.js",
    "content": "\"use strict\";\n\nclass DependencyChain {\n  constructor(array) {\n    this.array = array || [];\n  }\n\n  append(str) {\n    return new DependencyChain(this.array.concat(str));\n  }\n\n  toString() {\n    return \"[\" + this.array.join(\" → \") + \"]\";\n  }\n}\n\nmodule.exports = DependencyChain;\n"
  },
  {
    "path": "packages/compiler/src/taglib/loader/Property.js",
    "content": "\"use strict\";\n\nclass Property {\n  constructor() {\n    this.name = null;\n    this.type = \"string\";\n    this.value = undefined;\n  }\n}\n\nmodule.exports = Property;\n"
  },
  {
    "path": "packages/compiler/src/taglib/loader/Tag.js",
    "content": "\"use strict\";\nvar ok = require(\"assert\").ok;\nvar path = require(\"path\");\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nclass Tag {\n  constructor(filePath) {\n    this.filePath = filePath;\n    if (filePath) {\n      this.dir = path.dirname(filePath);\n    }\n\n    this.migrators = [];\n    this.attributes = {};\n    this.transformers = [];\n    this.patternAttributes = [];\n  }\n\n  addAttribute(attr) {\n    attr.filePath = this.filePath;\n\n    if (attr.pattern) {\n      this.patternAttributes.push(attr);\n    } else {\n      if (attr.name === \"*\") {\n        attr.dynamicAttribute = true;\n\n        if (attr.targetProperty === undefined || attr.targetProperty === \"\") {\n          attr.targetProperty = null;\n        }\n      }\n\n      this.attributes[attr.name] = attr;\n    }\n  }\n  toString() {\n    return \"[Tag: <\" + this.name + \"@\" + this.taglibId + \">]\";\n  }\n  forEachAttribute(callback, thisObj) {\n    for (var attrName in this.attributes) {\n      if (hasOwnProperty.call(this.attributes, attrName)) {\n        callback.call(thisObj, this.attributes[attrName]);\n      }\n    }\n  }\n  getAttribute(attrName) {\n    var attributes = this.attributes;\n\n    // try by exact match first\n    var attribute = attributes[attrName] || attributes[\"*\"];\n\n    if (attribute === undefined && this.patternAttributes) {\n      // try searching by pattern\n      for (var i = 0, len = this.patternAttributes.length; i < len; i++) {\n        var patternAttribute = this.patternAttributes[i];\n        if (patternAttribute.pattern.test(attrName)) {\n          attribute = patternAttribute;\n          break;\n        }\n      }\n    }\n\n    return attribute;\n  }\n\n  hasAttribute(attrName) {\n    return hasOwnProperty.call(this.attributes, attrName);\n  }\n\n  addNestedTag(nestedTag) {\n    ok(nestedTag.name, '\"nestedTag.name\" is required');\n\n    if (!this.nestedTags) {\n      this.nestedTags = {};\n    }\n\n    nestedTag.isNestedTag = true;\n\n    if (!nestedTag.targetProperty) {\n      nestedTag.targetProperty = nestedTag.name;\n    }\n\n    this.nestedTags[nestedTag.name] = nestedTag;\n  }\n\n  hasNestedTags() {\n    return this.nestedTags != null;\n  }\n\n  toJSON() {\n    return this;\n  }\n\n  setTaglib(taglib) {\n    this.taglibId = taglib ? taglib.id : null;\n    this.taglibPath = taglib ? taglib.path : null;\n  }\n}\n\nmodule.exports = Tag;\n"
  },
  {
    "path": "packages/compiler/src/taglib/loader/Taglib.js",
    "content": "\"use strict\";\nvar ok = require(\"assert\").ok;\nvar path = require(\"path\");\nvar loaders = require(\"./loaders\");\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction handleImport(taglib, importedTaglib) {\n  var importsLookup = taglib.importsLookup || (taglib.importsLookup = {});\n  if (hasOwnProperty.call(importsLookup, importedTaglib.path)) {\n    return;\n  }\n\n  importsLookup[importedTaglib.path] = importedTaglib;\n\n  if (!taglib.imports) {\n    taglib.imports = [];\n  }\n\n  taglib.imports.push(importedTaglib);\n\n  if (importedTaglib.imports) {\n    importedTaglib.imports.forEach(function (nestedImportedTaglib) {\n      handleImport(taglib, nestedImportedTaglib);\n    });\n  }\n}\n\nclass Taglib {\n  constructor(filePath, isFromPackageJson) {\n    ok(filePath, '\"filePath\" expected');\n    this.filePath = this.path /* deprecated */ = this.id = filePath;\n    this.isFromPackageJson = isFromPackageJson === true;\n    this.dirname = path.dirname(this.filePath);\n    this.scriptLang = undefined;\n    this.tags = {};\n    this.migrators = [];\n    this.transformers = [];\n    this.attributes = {};\n    this.patternAttributes = [];\n    this.imports = null;\n    this.importsLookup = null;\n    this.tagsDir = undefined;\n  }\n\n  addAttribute(attribute) {\n    ok(attribute.key, '\"key\" is required for global attributes');\n\n    attribute.filePath = this.filePath;\n\n    if (!attribute.pattern && !attribute.name) {\n      throw new Error(\"Invalid attribute: \" + JSON.stringify(attribute));\n    }\n\n    this.attributes[attribute.key] = attribute;\n  }\n  getAttribute(name) {\n    var attribute = this.attributes[name];\n    if (!attribute) {\n      for (var i = 0, len = this.patternAttributes.length; i < len; i++) {\n        var patternAttribute = this.patternAttributes[i];\n        if (patternAttribute.pattern.test(name)) {\n          attribute = patternAttribute;\n        }\n      }\n    }\n    return attribute;\n  }\n  addTag(tag) {\n    ok(arguments.length === 1, \"Invalid args\");\n    if (!tag.name) {\n      throw new Error('\"tag.name\" is required: ' + JSON.stringify(tag));\n    }\n    this.tags[tag.name] = tag;\n    tag.taglibId = this.id || this.path;\n  }\n\n  addImport(path) {\n    var importedTaglib = loaders.loadTaglibFromFile(path);\n    handleImport(this, importedTaglib);\n  }\n\n  toJSON() {\n    return {\n      path: this.path,\n      tags: this.tags,\n      attributes: this.attributes,\n      patternAttributes: this.patternAttributes,\n      imports: this.imports,\n    };\n  }\n}\n\nmodule.exports = Taglib;\n"
  },
  {
    "path": "packages/compiler/src/taglib/loader/Transformer.js",
    "content": "\"use strict\";\nvar nextTransformerId = 0;\n\nclass Transformer {\n  constructor() {\n    this.id = nextTransformerId++;\n    this.name = null;\n    this.tag = null;\n    this.path = null;\n    this._func = null;\n  }\n\n  toString() {\n    return \"[Taglib.Transformer: \" + this.path + \"]\";\n  }\n}\n\nmodule.exports = Transformer;\n"
  },
  {
    "path": "packages/compiler/src/taglib/loader/cache.js",
    "content": "var cache = {};\n\nfunction get(key) {\n  return cache[key];\n}\n\nfunction put(key, value) {\n  cache[key] = value;\n}\n\nfunction clear() {\n  cache = {};\n}\n\nexports.get = get;\nexports.put = put;\nexports.clear = clear;\n"
  },
  {
    "path": "packages/compiler/src/taglib/loader/index.js",
    "content": "var cache = require(\"./cache\");\n\nvar DependencyChain = require(\"./DependencyChain\");\nvar loaders = require(\"./loaders\");\nvar types = require(\"./types\");\n\nfunction loadTaglibFromProps(taglib, taglibProps) {\n  return loaders.loadTaglibFromProps(taglib, taglibProps);\n}\n\nfunction loadTaglibFromFile(filePath, isFromPackageJson) {\n  return loaders.loadTaglibFromFile(filePath, isFromPackageJson);\n}\n\nfunction loadTaglibFromDir(filePath, tagDiscoveryDir) {\n  return loaders.loadTaglibFromDir(filePath, tagDiscoveryDir);\n}\n\nfunction clearCache() {\n  cache.clear();\n}\n\nfunction createTaglib(filePath) {\n  return new types.Taglib(filePath);\n}\n\nfunction loadTag(tagProps, filePath) {\n  var tag = new types.Tag(filePath);\n  loaders.loadTagFromProps(\n    tag,\n    tagProps,\n    new DependencyChain(filePath ? [filePath] : []),\n  );\n  return tag;\n}\n\nexports.clearCache = clearCache;\nexports.createTaglib = createTaglib;\nexports.loadTaglibFromProps = loadTaglibFromProps;\nexports.loadTaglibFromFile = loadTaglibFromFile;\nexports.loadTaglibFromDir = loadTaglibFromDir;\nexports.loadTag = loadTag;\n"
  },
  {
    "path": "packages/compiler/src/taglib/loader/json-file-reader.js",
    "content": "var stripJsonComments = require(\"@luxass/strip-json-comments\").strip;\nvar taglibConfig = require(\"../config\");\nvar fsReadOptions = { encoding: \"utf8\" };\n\nexports.readFileSync = function (path) {\n  var json = String(taglibConfig.fs.readFileSync(path, fsReadOptions));\n\n  try {\n    var taglibProps = JSON.parse(stripJsonComments(json));\n    return taglibProps;\n  } catch (cause) {\n    throw new Error('Unable to parse JSON file at path \"' + path + '\".', {\n      cause,\n    });\n  }\n};\n"
  },
  {
    "path": "packages/compiler/src/taglib/loader/loadAttributeFromProps.js",
    "content": "\"use strict\";\n\nvar assert = require(\"assert\");\nvar raptorRegexp = require(\"raptor-regexp\");\nvar createError = require(\"raptor-util/createError\");\nvar propertyHandlers = require(\"./property-handlers\");\nvar types = require(\"./types\");\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nclass AttrLoader {\n  constructor(attr, dependencyChain) {\n    assert.ok(attr, '\"attr\" is required');\n    assert.ok(dependencyChain, '\"dependencyChain\" is required');\n\n    this.attr = attr;\n    this.dependencyChain = dependencyChain;\n  }\n\n  load(attrProps) {\n    assert.ok(arguments.length === 1);\n\n    if (attrProps == null) {\n      attrProps = {};\n    } else if (typeof attrProps === \"string\") {\n      attrProps = {\n        type: attrProps,\n      };\n    } else {\n      assert.ok(typeof attrProps === \"object\", 'Invalid \"attrProps\"');\n    }\n\n    propertyHandlers(attrProps, this, this.dependencyChain.toString());\n  }\n\n  /**\n   * The attribute type. One of the following:\n   * - string (the default)\n   * - expression (a JavaScript expression)\n   * - number\n   * - integer\n   * - int\n   * - boolean\n   * - float\n   * - double\n   * - object\n   * - array\n   *\n   */\n  type(value) {\n    var attr = this.attr;\n    if (value.charAt(0) === \"#\") {\n      attr.ref = value.substring(1);\n    } else {\n      attr.type = value;\n    }\n  }\n\n  /**\n   * The name of the target property to use when mapping\n   * the attribute to a property on the target object.\n   */\n  targetProperty(value) {\n    var attr = this.attr;\n    attr.targetProperty = value;\n  }\n  /**\n   * The \"default-value\" property allows a default value\n   * to be provided when the attribute is not declared\n   * on the custom tag.\n   */\n  defaultValue(value) {\n    var attr = this.attr;\n    attr.defaultValue = value;\n  }\n  /**\n   * The \"pattern\" property allows the attribute\n   * to be matched based on a simplified regular expression.\n   *\n   * Example:\n   *\n   * \"pattern\": \"prefix-*\"\n   */\n  pattern(value) {\n    var attr = this.attr;\n    if (value === true) {\n      var patternRegExp = raptorRegexp.simple(attr.name);\n      attr.pattern = patternRegExp;\n    }\n  }\n\n  /**\n   * If \"allow-expressions\" is set to true (the default) then\n   * the the attribute value will be parsed to find any dynamic\n   * parts.\n   */\n  allowExpressions(value) {\n    var attr = this.attr;\n    attr.allowExpressions = value;\n  }\n\n  /**\n   * By default, the Marko compiler maps an attribute\n   * to a property by removing all dashes from the attribute\n   * name and converting each character after a dash to\n   * an uppercase character (e.g. \"my-attr\" --> \"myAttr\").\n   *\n   * Setting \"preserve-name\" to true will prevent this from\n   * happening for the attribute.\n   */\n  preserveName(value) {\n    var attr = this.attr;\n    attr.preserveName = value;\n  }\n  /**\n   * Declares an attribute as required. Currently, this is\n   * not enforced and is only used for documentation purposes.\n   *\n   * Example:\n   * \"required\": true\n   */\n  required(value) {\n    var attr = this.attr;\n    attr.required = value === true;\n  }\n  /**\n   * This is the opposite of \"preserve-name\" and will result\n   * in dashes being removed from the attribute if set to true.\n   */\n  removeDashes(value) {\n    var attr = this.attr;\n    attr.removeDashes = value === true;\n  }\n  /**\n   * The description of the attribute. Only used for documentation.\n   */\n  description(value) {\n    this.attr.description = value;\n  }\n\n  /**\n   * The \"set-flag\" property allows a \"flag\" to be added to a Node instance\n   * at compile time if the attribute is found on the node. This is helpful\n   * if an attribute uses a pattern and a transformer wants to have a simple\n   * check to see if the Node has an attribute that matched the pattern.\n   *\n   * Example:\n   *\n   * \"set-flag\": \"myCustomFlag\"\n   *\n   * A Node instance can be checked if it has a flag set as shown below:\n   *\n   * if (node.hasFlag('myCustomFlag')) { ... }\n   *\n   *\n   */\n  setFlag(value) {\n    var attr = this.attr;\n    attr.setFlag = value;\n  }\n\n  /**\n   * The \"set-context-flag\" property allows a \"flag\" to be added to the CompilerContext instance\n   * at compile time if the attribute is found on the node. This is helpful\n   * if an attribute uses a pattern and a transformer wants to have a simple\n   * check to see if any Node in the template has an attribute that matched the pattern.\n   *\n   * Example:\n   *\n   * \"set-context-flag\": \"myCustomFlag\"\n   *\n   * A Node instance can be checked if it has a flag set as shown below:\n   *\n   * if (context.isFlagSet('myCustomFlag')) { ... }\n   *\n   *\n   */\n  setContextFlag(value) {\n    var attr = this.attr;\n    attr.setContextFlag = value;\n  }\n\n  /**\n   * An attribute can be marked for ignore. Ignored attributes\n   * will be ignored during compilation.\n   */\n  ignore(value) {\n    var attr = this.attr;\n    if (value === true) {\n      attr.ignore = true;\n    }\n  }\n\n  autocomplete(value) {\n    this.attr.autocomplete = value;\n  }\n\n  enum(value) {\n    this.attr.enum = value;\n  }\n\n  deprecated(value) {\n    this.attr.deprecated = value;\n  }\n\n  name(value) {\n    this.attr.name = value;\n  }\n\n  html(value) {\n    this.attr.html = value === true;\n  }\n}\n\nfunction loadAttributeFromProps(attrName, attrProps, dependencyChain) {\n  assert.ok(typeof attrName === \"string\");\n  assert.ok(dependencyChain, '\"dependencyChain\" is required');\n\n  var attr = new types.Attribute(attrName);\n\n  var attrLoader = new AttrLoader(attr, dependencyChain);\n\n  try {\n    attrLoader.load(attrProps);\n  } catch (err) {\n    throw createError(\n      'Unable to load attribute \"' +\n        attrName +\n        '\" (' +\n        dependencyChain +\n        \"): \" +\n        err,\n      err,\n    );\n  }\n\n  return attr;\n}\n\nloadAttributeFromProps.isSupportedProperty = function (name) {\n  return hasOwnProperty.call(AttrLoader.prototype, name);\n};\n\nmodule.exports = loadAttributeFromProps;\n"
  },
  {
    "path": "packages/compiler/src/taglib/loader/loadAttributes.js",
    "content": "var ok = require(\"assert\").ok;\nvar loaders = require(\"./loaders\");\n\nmodule.exports = function loadAttributes(value, parent, dependencyChain) {\n  ok(parent);\n  ok(dependencyChain);\n\n  for (const attrName in value) {\n    const attrProps = value[attrName];\n    var attr = loaders.loadAttributeFromProps(\n      attrName,\n      attrProps,\n      dependencyChain.append(\"@\" + attrName),\n    );\n\n    parent.addAttribute(attr);\n  }\n};\n"
  },
  {
    "path": "packages/compiler/src/taglib/loader/loadTagFromFile.js",
    "content": "var ok = require(\"assert\").ok;\nvar cache = require(\"./cache\");\nvar jsonFileReader = require(\"./json-file-reader\");\nvar loaders = require(\"./loaders\");\nvar types = require(\"./types\");\n\nfunction loadTagFromFile(filePath) {\n  ok(filePath, '\"filePath\" is required');\n\n  var tag = cache.get(filePath);\n\n  // Only load a tag once by caching the loaded tags using the file\n  // system file path as the key\n  if (!tag) {\n    tag = new types.Tag(filePath);\n    cache.put(filePath, tag);\n\n    var tagProps = jsonFileReader.readFileSync(filePath);\n    loaders.loadTagFromProps(tag, tagProps);\n  }\n\n  return tag;\n}\n\nmodule.exports = loadTagFromFile;\n"
  },
  {
    "path": "packages/compiler/src/taglib/loader/loadTagFromProps.js",
    "content": "\"use strict\";\n\nvar ok = require(\"assert\").ok;\nvar nodePath = require(\"path\");\nvar createError = require(\"raptor-util/createError\");\nvar isObjectEmpty = require(\"raptor-util/isObjectEmpty\");\nvar markoModules = require(\"@marko/compiler/modules\");\nvar taglibConfig = require(\"../config\");\nvar loaders = require(\"./loaders\");\nvar propertyHandlers = require(\"./property-handlers\");\nvar types = require(\"./types\");\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveRelative(dirname, value) {\n  return value[0] === \".\"\n    ? markoModules.tryResolve(value, dirname) || value\n    : value;\n}\n\nfunction resolveWithMarkoExt(dirname, value) {\n  if (value[0] !== \".\") return value;\n\n  if (\n    markoModules.require.extensions &&\n    !(\".marko\" in markoModules.require.extensions)\n  ) {\n    markoModules.require.extensions[\".marko\"] = undefined;\n    try {\n      return markoModules.tryResolve(value, dirname) || value;\n    } finally {\n      delete markoModules.require.extensions[\".marko\"];\n    }\n  }\n\n  return markoModules.tryResolve(value, dirname) || value;\n}\n\nfunction removeDashes(str) {\n  return str.replace(/-([a-z])/g, function (match, lower) {\n    return lower.toUpperCase();\n  });\n}\n\nfunction hasAttributes(tagProps) {\n  if (tagProps.attributes != null) {\n    return true;\n  }\n\n  for (var name in tagProps) {\n    if (hasOwnProperty.call(tagProps, name) && name.startsWith(\"@\")) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction normalizeHook(dirname, value) {\n  if (typeof value === \"string\") {\n    value = resolveRelative(dirname, value);\n    return {\n      path: value,\n      get hook() {\n        return markoModules.require(value);\n      },\n    };\n  }\n  return { hook: value };\n}\n\n/**\n * We load tag definition using this class. Properties in the taglib\n * definition (which is just a JavaScript object with properties)\n * are mapped to handler methods in an instance of this type.\n *\n * @param {Tag} tag The initially empty Tag instance that we populate\n * @param {String} dirname The full file system path associated with the tag being loaded\n * @param {String} path An informational path associated with this tag (used for error reporting)\n */\nclass TagLoader {\n  constructor(tag, dependencyChain) {\n    this.tag = tag;\n    this.dependencyChain = dependencyChain;\n\n    this.filePath = tag.filePath;\n    this.dirname = tag.dir || tag.dirname;\n  }\n\n  load(tagProps) {\n    if (!hasAttributes(tagProps)) {\n      // allow any attributes if no attributes are declared\n      tagProps.attributes = {\n        \"*\": {\n          type: \"string\",\n          targetProperty: null,\n          preserveName: false,\n        },\n      };\n    }\n\n    propertyHandlers(tagProps, this, this.dependencyChain.toString());\n  }\n\n  _handleVar(value, dependencyChain) {\n    var tag = this.tag;\n\n    var nestedVariable;\n\n    if (typeof value === \"string\") {\n      nestedVariable = {\n        name: value,\n      };\n    } else {\n      nestedVariable = {};\n\n      propertyHandlers(\n        value,\n        {\n          name: function (value) {\n            nestedVariable.name = value;\n          },\n\n          nameFromAttribute: function (value) {\n            nestedVariable.nameFromAttribute = value;\n          },\n        },\n        dependencyChain.toString(),\n      );\n\n      if (!nestedVariable.name && !nestedVariable.nameFromAttribute) {\n        throw new Error(\n          'The \"name\" or \"name-from-attribute\" attribute is required for a nested variable (' +\n            dependencyChain +\n            \")\",\n        );\n      }\n    }\n\n    tag.addNestedVariable(nestedVariable);\n  }\n\n  /**\n   * This is handler is for any properties that didn't match\n   * one of the default property handlers. This is used to\n   * match properties in the form of \"@attr_name\" or\n   * \"<nested_tag_name>\"\n   */\n  \"*\"(name, value) {\n    var tag = this.tag;\n    var dependencyChain = this.dependencyChain;\n    var parts = name.split(/\\s+|\\s+[,]\\s+/);\n\n    var i;\n    var part;\n\n    var hasNestedTag = false;\n    var hasAttr = false;\n    var nestedTagTargetProperty = null;\n\n    // We do one pass to figure out if there is an\n    // attribute or nested tag or both\n    for (i = 0; i < parts.length; i++) {\n      part = parts[i];\n      if (part.startsWith(\"@\")) {\n        hasAttr = true;\n\n        if (i === 0) {\n          // Use the first attribute value as the name of the target property\n          nestedTagTargetProperty = part.substring(1);\n        }\n      } else if (part.startsWith(\"<\")) {\n        hasNestedTag = true;\n      } else {\n        // Unmatched property that is not an attribute or a\n        // nested tag\n        return false;\n      }\n    }\n\n    var attrProps = {};\n    var tagProps = {};\n    var k;\n\n    if (value != null && typeof value === \"object\") {\n      for (k in value) {\n        if (hasOwnProperty.call(value, k)) {\n          if (k.startsWith(\"@\") || k.startsWith(\"<\")) {\n            // Move over all of the attributes and nested tags\n            // to the tag definition.\n            tagProps[k] = value[k];\n            delete value[k];\n          } else {\n            // The property is not a shorthand attribute or shorthand\n            // tag so move it over to either the tag definition\n            // or the attribute definition or both the tag definition\n            // and attribute definition.\n            var propNameDashes = removeDashes(k);\n\n            if (\n              isSupportedProperty(propNameDashes) &&\n              loaders.isSupportedAttributeProperty(propNameDashes)\n            ) {\n              // Move over all of the properties that are associated with a tag\n              // and attribute\n              tagProps[k] = value[k];\n              attrProps[k] = value[k];\n              delete value[k];\n            } else if (isSupportedProperty(propNameDashes)) {\n              // Move over all of the properties that are associated with a tag\n              tagProps[k] = value[k];\n              delete value[k];\n            } else if (loaders.isSupportedAttributeProperty(propNameDashes)) {\n              // Move over all of the properties that are associated with an attr\n              attrProps[k] = value[k];\n              delete value[k];\n            }\n          }\n        }\n      }\n\n      // If there are any left over properties then something is wrong\n      // with the user's taglib.\n      if (!isObjectEmpty(value)) {\n        throw new Error(\n          \"Unsupported properties of [\" + Object.keys(value).join(\", \") + \"]\",\n        );\n      }\n\n      var type = attrProps.type;\n      if (!type && hasAttr && hasNestedTag) {\n        // If we have an attribute and a nested tag then default\n        // the attribute type to \"expression\"\n        attrProps.type = \"expression\";\n      }\n    } else if (typeof value === \"string\") {\n      if (hasNestedTag && hasAttr) {\n        tagProps = attrProps = {\n          type: value,\n        };\n      } else if (hasNestedTag) {\n        tagProps = {\n          type: value,\n        };\n      } else {\n        attrProps = {\n          type: value,\n        };\n      }\n    }\n\n    // Now that we have separated out attribute properties and tag properties\n    // we need to create the actual attributes and nested tags\n    for (i = 0; i < parts.length; i++) {\n      part = parts[i];\n      if (part.startsWith(\"@\")) {\n        // This is a shorthand attribute\n        var attrName = part.substring(1);\n\n        var attr = loaders.loadAttributeFromProps(\n          attrName,\n          attrProps,\n          dependencyChain.append(part),\n        );\n\n        tag.addAttribute(attr);\n      } else if (part.startsWith(\"<\")) {\n        // This is a shorthand nested tag\n        let nestedTag = new types.Tag(this.filePath);\n\n        loadTagFromProps(nestedTag, tagProps, dependencyChain.append(part));\n\n        // We use the '[]' suffix to indicate that a nested tag\n        // can be repeated\n        var isNestedTagRepeated = false;\n        if (part.endsWith(\"[]\")) {\n          isNestedTagRepeated = true;\n          part = part.slice(0, -2);\n        }\n\n        var nestedTagName = part.substring(1, part.length - 1);\n        nestedTag.name = nestedTagName;\n        nestedTag.isRepeated = nestedTag.isRepeated || isNestedTagRepeated;\n        // Use the name of the attribute as the target property unless\n        // this target property was explicitly provided\n        nestedTag.targetProperty =\n          attrProps.targetProperty || nestedTagTargetProperty;\n        tag.addNestedTag(nestedTag);\n\n        if (!nestedTag.isRepeated) {\n          let attr = loaders.loadAttributeFromProps(\n            nestedTag.targetProperty,\n            { type: \"object\" },\n            dependencyChain.append(part),\n          );\n\n          tag.addAttribute(attr);\n        }\n      } else {\n        return false;\n      }\n    }\n  }\n\n  /**\n   * The tag name\n   * @param {String} value The tag name\n   */\n  name(value) {\n    var tag = this.tag;\n    tag.name = value;\n  }\n\n  /**\n   * The path to the renderer JS module to use for this tag.\n   *\n   * NOTE: We use the equivalent of require.resolve to resolve the JS module\n   * \t\t and use the tag directory as the \"from\".\n   *\n   * @param {String} value The renderer path\n   */\n  renderer(value) {\n    this.tag.renderer = resolveWithMarkoExt(this.dirname, value);\n  }\n\n  /**\n   * A tag can use a renderer or a template to do the rendering. If\n   * a template is provided then the value should be the path to the\n   * template to use to render the custom tag.\n   */\n  template(value) {\n    var tag = this.tag;\n    var dirname = this.dirname;\n\n    var path = nodePath.resolve(dirname, value);\n\n    try {\n      taglibConfig.fs.statSync(path);\n      tag.template = path;\n    } catch (_) {\n      // eslint-disable-next-line preserve-caught-error\n      throw new Error('Template at path \"' + path + '\" does not exist.');\n    }\n  }\n\n  /**\n   * This property is used by @marko/language-tools (editor tooling)\n   * to override the Marko file used when generating the tags exposed\n   * typescript / jsdoc types.\n   */\n  types(value) {\n    this.tag.types =\n      value[0] === \".\" ? nodePath.resolve(this.dirname, value) : value;\n  }\n\n  /**\n   * An Object where each property maps to an attribute definition.\n   * The property key will be the attribute name and the property value\n   * will be the attribute definition. Example:\n   * {\n   *     \"attributes\": {\n   *         \"foo\": \"string\",\n   *         \"bar\": \"expression\"\n   *     }\n   * }\n   */\n  attributes(value) {\n    var tag = this.tag;\n\n    loaders.loadAttributes(\n      value,\n      tag,\n      this.dependencyChain.append(\"attributes\"),\n    );\n  }\n\n  /**\n   * Deprecated\n   */\n  migrator(value) {\n    this.migrate(value);\n  }\n  /**\n   * A custom tag can be mapped to module that is used\n   * migrate deprecated features to modern features.\n   */\n  migrate(value) {\n    if (Array.isArray(value)) {\n      value.forEach(this.migrate, this);\n    } else {\n      this.tag.migrators.push(normalizeHook(this.dirname, value));\n    }\n  }\n\n  /**\n   * Deprecated\n   */\n  codeGenerator(value) {\n    this.translate(value);\n  }\n\n  /**\n   * A custom tag can be mapped to module that is is used\n   * to generate compile-time code for the custom tag. A\n   * node type is created based on the methods and methods\n   * exported by the code codegen module.\n   */\n  translate(value) {\n    this.tag.translator = normalizeHook(this.dirname, value);\n  }\n\n  /**\n   * Deprecated\n   */\n  nodeFactory(value) {\n    this.parse(value);\n  }\n\n  /**\n   * A custom tag can be mapped to a compile-time Node that gets\n   * added to the parsed Abstract Syntax Tree (AST). The Node can\n   * then generate custom JS code at compile time. The value\n   * should be a path to a JS module that gets resolved using the\n   * equivalent of require.resolve(path)\n   */\n  parse(value) {\n    this.tag.parser = normalizeHook(this.dirname, value);\n  }\n\n  /**\n   * Deprecated\n   */\n  transformer(value) {\n    this.transform(value);\n  }\n\n  /**\n   * If a custom tag has an associated transformer then the transformer\n   * will be called on the compile-time Node. The transformer can manipulate\n   * the AST using the DOM-like API to change how the code gets generated.\n   */\n  transform(value) {\n    if (Array.isArray(value)) {\n      value.forEach(this.transform, this);\n    } else {\n      this.tag.transformers.push(normalizeHook(this.dirname, value));\n    }\n  }\n\n  /**\n   * A custom tag can be mapped to module that is is used\n   * to analyze code and cache the result in memory.\n   * This analysis data should be read by translate hooks.\n   */\n  analyze(value) {\n    this.tag.analyzer = normalizeHook(this.dirname, value);\n  }\n\n  /**\n   * The tag type.\n   */\n  type(value) {\n    var tag = this.tag;\n    tag.type = value;\n  }\n\n  isRepeated(value) {\n    var tag = this.tag;\n    tag.isRepeated = value;\n  }\n\n  targetProperty(value) {\n    var tag = this.tag;\n    tag.targetProperty = value;\n  }\n\n  /**\n   * Declare a nested tag.\n   *\n   * Example:\n   * {\n   *     ...\n   *     \"nested-tags\": {\n   *        \"tab\": {\n   *            \"target-property\": \"tabs\",\n   *            \"is-repeated\": true\n   *        }\n   *     }\n   * }\n   */\n  nestedTags(value) {\n    var filePath = this.filePath;\n    var tag = this.tag;\n\n    for (const nestedTagName in value) {\n      const nestedTagDef = value[nestedTagName];\n      var dependencyChain = this.dependencyChain.append(\n        `nestedTags[\"${nestedTagName}\"]`,\n      );\n      var nestedTag = new types.Tag(filePath);\n\n      loadTagFromProps(nestedTag, nestedTagDef, dependencyChain);\n\n      nestedTag.name = nestedTagName;\n      tag.addNestedTag(nestedTag);\n      tag.addAttribute(\n        loaders.loadAttributeFromProps(\n          nestedTag.targetProperty,\n          { type: \"expression\" },\n          dependencyChain,\n        ),\n      );\n    }\n  }\n\n  openTagOnly(value) {\n    this.tag.openTagOnly = value;\n  }\n\n  /**\n   * The description of the tag. Only used for documentation.\n   */\n  description(value) {\n    this.tag.description = value;\n  }\n\n  autocomplete(value) {\n    this.tag.autocomplete = value;\n  }\n\n  parseOptions(value) {\n    this.tag.parseOptions = value;\n  }\n\n  deprecated(value) {\n    this.tag.deprecated = value;\n  }\n\n  attributeGroups(value) {\n    if (!value) {\n      return;\n    }\n\n    var attributeGroups =\n      this.tag.attributeGroups || (this.tag.attributeGroups = []);\n    this.tag.attributeGroups = attributeGroups.concat(value);\n  }\n\n  html(value) {\n    this.tag.html = value === true;\n  }\n\n  htmlType(value) {\n    this.tag.htmlType = value;\n  }\n\n  featureFlags(value) {\n    this.tag.featureFlags = value;\n  }\n}\n\nfunction isSupportedProperty(name) {\n  return hasOwnProperty.call(TagLoader.prototype, name);\n}\n\nfunction loadTagFromProps(tag, tagProps, dependencyChain) {\n  ok(typeof tagProps === \"object\", 'Invalid \"tagProps\"');\n  ok(dependencyChain, '\"dependencyChain\" is required');\n\n  var tagLoader = new TagLoader(tag, dependencyChain);\n\n  try {\n    tagLoader.load(tagProps);\n  } catch (err) {\n    throw createError(\n      \"Unable to load tag (\" + dependencyChain + \"): \" + err,\n      err,\n    );\n  }\n\n  return tag;\n}\n\nmodule.exports = loadTagFromProps;\n\nloadTagFromProps.isSupportedProperty = isSupportedProperty;\n"
  },
  {
    "path": "packages/compiler/src/taglib/loader/loadTaglibFromDir.js",
    "content": "var ok = require(\"assert\").ok;\nvar nodePath = require(\"path\");\nvar cache = require(\"./cache\");\nvar DependencyChain = require(\"./DependencyChain\");\nvar scanTagsDir = require(\"./scanTagsDir\");\nvar types = require(\"./types\");\n\nfunction loadFromDir(dir, tagDiscoveryDir) {\n  ok(dir, '\"dir\" is required');\n\n  var componentsPath = nodePath.join(dir, tagDiscoveryDir);\n  var taglib = cache.get(componentsPath);\n\n  // Only load a taglib once by caching the loaded taglibs using the file\n  // system file path as the key\n  if (!taglib) {\n    taglib = new types.Taglib(componentsPath);\n    cache.put(componentsPath, taglib);\n    scanTagsDir(\n      componentsPath,\n      dir,\n      tagDiscoveryDir,\n      taglib,\n      new DependencyChain([componentsPath]),\n    );\n  }\n\n  return taglib;\n}\n\nmodule.exports = loadFromDir;\n"
  },
  {
    "path": "packages/compiler/src/taglib/loader/loadTaglibFromFile.js",
    "content": "var ok = require(\"assert\").ok;\nvar cache = require(\"./cache\");\nvar jsonFileReader = require(\"./json-file-reader\");\nvar loaders = require(\"./loaders\");\nvar types = require(\"./types\");\n\nfunction loadFromFile(filePath, isFromPackageJson) {\n  ok(filePath, '\"filePath\" is required');\n\n  var taglib = cache.get(filePath);\n\n  // Only load a taglib once by caching the loaded taglibs using the file\n  // system file path as the key\n  if (!taglib) {\n    taglib = new types.Taglib(filePath, isFromPackageJson);\n    cache.put(filePath, taglib);\n\n    var taglibProps = jsonFileReader.readFileSync(filePath);\n    loaders.loadTaglibFromProps(taglib, taglibProps);\n  }\n\n  return taglib;\n}\n\nmodule.exports = loadFromFile;\n"
  },
  {
    "path": "packages/compiler/src/taglib/loader/loadTaglibFromProps.js",
    "content": "\"use strict\";\n\nvar ok = require(\"assert\").ok;\nvar nodePath = require(\"path\");\nvar createError = require(\"raptor-util/createError\");\nvar markoModules = require(\"@marko/compiler/modules\");\nvar taglibFS = require(\"../config\");\nvar DependencyChain = require(\"./DependencyChain\");\nvar jsonFileReader = require(\"./json-file-reader\");\nvar loaders = require(\"./loaders\");\nvar propertyHandlers = require(\"./property-handlers\");\nvar scanTagsDir = require(\"./scanTagsDir\");\nvar types = require(\"./types\");\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveRelative(dirname, value) {\n  return value[0] === \".\"\n    ? markoModules.tryResolve(value, dirname) || value\n    : value;\n}\n\nfunction normalizeHook(dirname, value) {\n  if (typeof value === \"string\") {\n    value = resolveRelative(dirname, value);\n    return {\n      path: value,\n      get hook() {\n        return markoModules.require(value);\n      },\n    };\n  }\n  return { hook: value };\n}\n\n/**\n * We load a taglib definition using this class. Properties in the taglib\n * definition (which is just a JavaScript object with properties)\n * are mapped to handler methods in an instance of this type.\n *\n *\n * @param {Taglib} taglib The initially empty Taglib instance that we will populate\n * @param {String} path The file system path to the taglib that we are loading\n */\nclass TaglibLoader {\n  constructor(taglib, dependencyChain) {\n    ok(\n      dependencyChain instanceof DependencyChain,\n      '\"dependencyChain\" is not valid',\n    );\n\n    this.dependencyChain = dependencyChain;\n\n    this.taglib = taglib;\n    this.filePath = taglib.filePath;\n    this.dirname = taglib.dirname;\n  }\n\n  load(taglibProps) {\n    var taglib = this.taglib;\n\n    propertyHandlers(taglibProps, this, this.dependencyChain.toString());\n\n    if (!taglib.id) {\n      // Fixes #73\n      // See if there is a package.json in the same directory as the taglib file.\n      // If so, and if that package.json file has a \"name\" property then we will\n      // use the the name as the \"taglib ID\". The taglib ID is used to uniquely\n      // identity a taglib (ignoring version) and it is used to prevent the same\n      // taglib from being loaded multiple times.\n      //\n      // Using the file path as the taglib ID doesn't work so well since we might find\n      // the same taglib multiple times in the Node.js module search path with\n      // different paths.\n      var filePath = this.filePath;\n      var dirname = this.dirname;\n\n      var packageJsonPath = nodePath.join(dirname, \"package.json\");\n\n      try {\n        var pkg = jsonFileReader.readFileSync(packageJsonPath);\n        taglib.id = pkg.name;\n      } catch (e) {\n        /* ignore error */\n      }\n\n      if (!taglib.id) {\n        taglib.id = filePath;\n      }\n    }\n  }\n\n  _handleTag(tagName, value, dependencyChain) {\n    var tagProps;\n    var tag;\n\n    if (typeof value === \"string\") {\n      var tagFilePath = nodePath.resolve(this.dirname, value);\n\n      try {\n        taglibFS.fs.statSync(tagFilePath);\n      } catch (_) {\n        // eslint-disable-next-line preserve-caught-error\n        throw new Error(\n          'Tag at path \"' +\n            tagFilePath +\n            '\" does not exist. (' +\n            dependencyChain +\n            \")\",\n        );\n      }\n\n      tag = new types.Tag(tagFilePath);\n\n      tagProps = jsonFileReader.readFileSync(tagFilePath);\n      dependencyChain = dependencyChain.append(tagFilePath);\n    } else {\n      tag = new types.Tag(this.filePath);\n      tagProps = value;\n    }\n\n    loaders.loadTagFromProps(tag, tagProps, dependencyChain);\n\n    if (tag.name === undefined) {\n      tag.name = tagName;\n    }\n\n    this.taglib.addTag(tag);\n  }\n\n  // We register a wildcard handler to handle \"@my-attr\" and \"<my-tag>\"\n  // properties (shorthand syntax)\n  \"*\"(name, value) {\n    var taglib = this.taglib;\n    var filePath = this.filePath;\n\n    if (name.startsWith(\"<\")) {\n      let tagName = name.slice(1, -1);\n      this._handleTag(tagName, value, this.dependencyChain.append(name));\n    } else if (name.startsWith(\"@\")) {\n      var attrKey = name.substring(1);\n\n      var attr = loaders.loadAttributeFromProps(\n        attrKey,\n        value,\n        this.dependencyChain.append(\"@\" + attrKey),\n      );\n\n      attr.filePath = filePath;\n      attr.key = attrKey;\n\n      taglib.addAttribute(attr);\n    } else {\n      return false;\n    }\n  }\n\n  attributes(value) {\n    // The value of the \"attributes\" property will be an object\n    // where each property maps to an attribute definition. Since these\n    // attributes are on the taglib they will be \"global\" attribute\n    // definitions.\n    //\n    // The property key will be the attribute name and the property value\n    // will be the attribute definition. Example:\n    // {\n    //     \"attributes\": {\n    //         \"foo\": \"string\",\n    //         \"bar\": \"expression\"\n    //     }\n    // }\n    var taglib = this.taglib;\n\n    Object.keys(value).forEach((attrName) => {\n      var attrDef = value[attrName];\n\n      var attr = loaders.loadAttributeFromProps(\n        attrName,\n        attrDef,\n        this.dependencyChain.append(\"@\" + attrName),\n      );\n\n      attr.key = attrName;\n\n      taglib.addAttribute(attr);\n    });\n  }\n  tags(tags) {\n    // The value of the \"tags\" property will be an object\n    // where each property maps to an attribute definition. The property\n    // key will be the tag name and the property value\n    // will be the tag definition. Example:\n    // {\n    //     \"tags\": {\n    //         \"foo\": {\n    //             \"attributes\": { ... }\n    //         },\n    //         \"bar\": {\n    //             \"attributes\": { ... }\n    //         },\n    //     }\n    // }\n\n    for (var tagName in tags) {\n      if (hasOwnProperty.call(tags, tagName)) {\n        this._handleTag(\n          tagName,\n          tags[tagName],\n          this.dependencyChain.append(\"tags.\" + tagName),\n        );\n      }\n    }\n  }\n  scriptLang(lang) {\n    // The \"script-lang\" property is used to specify the language of embedded scripts (either \"js\" or \"ts\").\n    // The language tools will prefer the language specified by the \"script-lang\" if specified.\n    // If unspecified the language tools will check for a tsconfig, if one is found then \"ts\", otherwise we use \"js\".\n    this.taglib.scriptLang = lang;\n  }\n  tagsDir(dir) {\n    // The \"tags-dir\" property is used to supporting scanning\n    // of a directory to discover custom tags. Scanning a directory\n    // is a much simpler way for a developer to create custom tags.\n    // Only one tag is allowed per directory and the directory name\n    // corresponds to the tag name. We only search for directories\n    // one level deep.\n    var taglib = this.taglib;\n    var path = this.filePath;\n    var dirname = this.dirname;\n\n    taglib.tagsDir = dir;\n\n    if (dir != null) {\n      if (Array.isArray(dir)) {\n        for (var i = 0; i < dir.length; i++) {\n          scanTagsDir(\n            path,\n            dirname,\n            dir[i],\n            taglib,\n            this.dependencyChain.append(`tags-dir[${i}]`),\n          );\n        }\n      } else {\n        scanTagsDir(\n          path,\n          dirname,\n          dir,\n          taglib,\n          this.dependencyChain.append(`tags-dir`),\n        );\n      }\n    }\n  }\n\n  exports(dir) {\n    var taglib = this.taglib;\n    var path = this.filePath;\n    var dirname = this.dirname;\n\n    if (taglib.isFromPackageJson || /[\\\\/]node_modules[\\\\/]/.test(path)) {\n      taglib.tagsDir = false;\n\n      scanTagsDir(\n        path,\n        dirname,\n        dir,\n        taglib,\n        this.dependencyChain.append(`exports`),\n      );\n    }\n  }\n\n  taglibImports(imports) {\n    // The \"taglib-imports\" property allows another taglib to be imported\n    // into this taglib so that the tags defined in the imported taglib\n    // will be part of this taglib.\n    //\n    // NOTE: If a taglib import refers to a package.json file then we read\n    //       the package.json file and automatically import *all* of the\n    //       taglibs from the installed modules found in the \"dependencies\"\n    //       section\n    var taglib = this.taglib;\n    var dirname = this.dirname;\n    var importPath;\n\n    if (imports && Array.isArray(imports)) {\n      for (var i = 0; i < imports.length; i++) {\n        var curImport = imports[i];\n        if (typeof curImport === \"string\") {\n          var basename = nodePath.basename(curImport);\n          if (basename === \"package.json\") {\n            var packagePath = markoModules.tryResolve(curImport, dirname);\n            var packageDir = nodePath.dirname(packagePath);\n            var pkg = jsonFileReader.readFileSync(packagePath);\n            var dependencies = pkg.dependencies;\n            if (dependencies) {\n              var dependencyNames = Object.keys(dependencies);\n              for (var j = 0; j < dependencyNames.length; j++) {\n                var dependencyName = dependencyNames[j];\n\n                importPath = markoModules.tryResolve(\n                  nodePath.join(dependencyName, \"marko.json\"),\n                  packageDir,\n                );\n\n                if (importPath) {\n                  taglib.addImport(importPath);\n                }\n              }\n            }\n          } else {\n            importPath = markoModules.tryResolve(curImport, dirname);\n            if (importPath) {\n              taglib.addImport(importPath);\n            } else {\n              throw new Error(\n                \"Import not found: \" + curImport + \" (from \" + dirname + \")\",\n              );\n            }\n          }\n        }\n      }\n    }\n  }\n\n  /**\n   * Deprecated\n   */\n  migrator(value) {\n    this.migrate(value);\n  }\n  /**\n   * A taglib can be mapped to module that is used\n   * migrate deprecated features to modern features across the entire template.\n   */\n  migrate(value) {\n    if (Array.isArray(value)) {\n      value.forEach(this.migrate, this);\n    } else {\n      this.taglib.migrators.push(normalizeHook(this.dirname, value));\n    }\n  }\n\n  /**\n   * Exposes a babel visitor to perform additional translations on the entire ast.\n   */\n  translate(value) {\n    this.taglib.translator = normalizeHook(this.dirname, value);\n  }\n\n  /**\n   * Allows an ID to be explicitly assigned to a taglib.\n   * The taglib ID is used to prevent the same taglib  (even if different versions)\n   * from being loaded multiple times.\n   *\n   * NOTE: Introduced as part of fix for #73\n   *\n   * @param  {String} value The taglib ID\n   */\n  taglibId(value) {\n    var taglib = this.taglib;\n    taglib.id = value;\n  }\n\n  /**\n   * Deprecated\n   */\n  transformer(value) {\n    this.transform(value);\n  }\n  /**\n   * If a custom tag has an associated transformer then the transformer\n   * will be called on the compile-time Node. The transformer can manipulate\n   * the AST using the DOM-like API to change how the code gets generated.\n   */\n  transform(value) {\n    if (Array.isArray(value)) {\n      value.forEach(this.transform, this);\n    } else {\n      this.taglib.transformers.push(normalizeHook(this.dirname, value));\n    }\n  }\n\n  attributeGroups(value) {\n    let taglib = this.taglib;\n    let attributeGroups =\n      taglib.attributeGroups || (taglib.attributeGroups = {});\n    let dependencyChain = this.dependencyChain.append(\"attribute-groups\");\n\n    Object.keys(value).forEach((attrGroupName) => {\n      let attrGroup = (attributeGroups[attrGroupName] = {});\n      let attrGroupDependencyChain = dependencyChain.append(attrGroupName);\n\n      let rawAttrGroup = value[attrGroupName];\n\n      Object.keys(rawAttrGroup).forEach((attrName) => {\n        var rawAttrDef = rawAttrGroup[attrName];\n\n        let attr = loaders.loadAttributeFromProps(\n          attrName,\n          rawAttrDef,\n          attrGroupDependencyChain.append(\"@\" + attrName),\n        );\n\n        attrGroup[attrName] = attr;\n      });\n    });\n  }\n}\n\nfunction loadTaglibFromProps(taglib, taglibProps, dependencyChain) {\n  ok(taglib, '\"taglib\" is required');\n  ok(taglibProps, '\"taglibProps\" is required');\n  ok(taglib.filePath, '\"taglib.filePath\" is required');\n\n  if (!dependencyChain) {\n    dependencyChain = new DependencyChain([taglib.filePath]);\n  }\n\n  var taglibLoader = new TaglibLoader(taglib, dependencyChain);\n\n  try {\n    taglibLoader.load(taglibProps);\n  } catch (err) {\n    throw createError(\n      \"Unable to load taglib (\" + dependencyChain + \"): \" + err,\n      err,\n    );\n  }\n\n  return taglib;\n}\n\nmodule.exports = loadTaglibFromProps;\n"
  },
  {
    "path": "packages/compiler/src/taglib/loader/loaders.js",
    "content": "var types = require(\"./types\");\n\nfunction isSupportedAttributeProperty(propertyName) {\n  return exports.loadAttributeFromProps.isSupportedProperty(propertyName);\n}\n\nfunction isSupportedTagProperty(propertyName) {\n  return exports.loadTagFromProps.isSupportedProperty(propertyName);\n}\n\nfunction createTaglib(taglibPath) {\n  return new types.Taglib(taglibPath);\n}\n\nexports.createTaglib = createTaglib;\nexports.loadAttributeFromProps = require(\"./loadAttributeFromProps\");\nexports.loadTagFromProps = require(\"./loadTagFromProps\");\nexports.loadTagFromFile = require(\"./loadTagFromFile\");\nexports.loadTaglibFromProps = require(\"./loadTaglibFromProps\");\nexports.loadTaglibFromFile = require(\"./loadTaglibFromFile\");\nexports.loadTaglibFromDir = require(\"./loadTaglibFromDir\");\nexports.loadAttributes = require(\"./loadAttributes\");\nexports.isSupportedAttributeProperty = isSupportedAttributeProperty;\nexports.isSupportedTagProperty = isSupportedTagProperty;\n"
  },
  {
    "path": "packages/compiler/src/taglib/loader/property-handlers.js",
    "content": "\"use strict\";\n\nconst { hasOwnProperty } = Object.prototype;\nconst taglibConfig = require(\"../config\");\n\nfunction removeDashes(str) {\n  return str.replace(/-([a-z])/g, function (match, lower) {\n    return lower.toUpperCase();\n  });\n}\n\nmodule.exports = function invokeHandlers(config, handlers, path) {\n  function error(message, cause) {\n    if (cause) {\n      if (cause.__propertyHandlers) {\n        throw cause;\n      }\n\n      message += \". Cause: \" + (cause.stack || cause);\n    }\n\n    if (path) {\n      message += \" (\" + path + \")\";\n    }\n\n    var e = new Error(message);\n    e.__propertyHandlers = true;\n    taglibConfig.onError(e);\n  }\n\n  if (!config) {\n    error('\"config\" argument is required');\n  }\n\n  if (typeof config !== \"object\") {\n    error(\"object expected\");\n  }\n\n  for (var k in config) {\n    if (hasOwnProperty.call(config, k)) {\n      var value = config[k];\n      var keyNoDashes = removeDashes(k);\n      var handler = handlers[keyNoDashes];\n      var isDefaultHandler = false;\n\n      if (!handler) {\n        handler = handlers[\"*\"];\n        isDefaultHandler = true;\n      }\n\n      if (!handler) {\n        var badProperty = JSON.stringify(k);\n        if (k !== keyNoDashes) {\n          badProperty += \"/\" + JSON.stringify(keyNoDashes);\n        }\n        error(\n          \"Invalid option of \" +\n            badProperty +\n            \". Allowed: \" +\n            Object.keys(handlers).join(\", \"),\n        );\n      }\n\n      try {\n        if (isDefaultHandler) {\n          if (handler.call(handlers, k, value) === false) {\n            error(\"Invalid option: \" + k);\n          }\n        } else {\n          handler.call(handlers, value);\n        }\n      } catch (e) {\n        error('Error while applying option of \"' + k + '\"', e);\n      }\n    }\n  }\n\n  if (handlers._end) {\n    try {\n      handlers._end();\n    } catch (e) {\n      error(\"Error after applying properties\", e);\n    }\n  }\n};\n"
  },
  {
    "path": "packages/compiler/src/taglib/loader/scanTagsDir.js",
    "content": "\"use strict\";\n\nconst nodePath = require(\"path\");\nconst taglibConfig = require(\"../config\");\nconst jsonFileReader = require(\"./json-file-reader\");\nconst loaders = require(\"./loaders\");\nconst types = require(\"./types\");\n\nconst tagFileTypes = [\n  \"template\",\n  \"renderer\",\n  \"migrate\",\n  \"transform\",\n  \"transformer\",\n  \"code-generator\",\n  \"translate\",\n  \"node-factory\",\n  \"parse\",\n];\n\nconst searchFiles = [\n  { name: \"index.marko\", type: \"template\" },\n  { name: \"renderer\", type: \"renderer\" },\n  { name: \"index\", type: \"renderer\" },\n  { name: \"template.marko\", type: \"template\" },\n  { name: \"template.html\", type: \"template\" },\n  { name: \"migrate\", type: \"migrate\" },\n  { name: \"code-generator\", type: \"translate\" },\n  { name: \"translate\", type: \"translate\" },\n  { name: \"node-factory\", type: \"parse\" },\n  { name: \"parse\", type: \"parse\" },\n  { name: \"transformer\", type: \"transform\" },\n  { name: \"transform\", type: \"transform\" },\n];\n\nfunction createDefaultTagDef() {\n  return {\n    attributes: {\n      \"*\": {\n        type: \"string\",\n        targetProperty: null,\n        preserveName: false,\n      },\n    },\n  };\n}\n\nfunction getFileMap(dirname) {\n  let fileMap = {};\n  let files = taglibConfig.fs.readdirSync(dirname);\n\n  files.forEach((file) => {\n    let extName = nodePath.extname(file);\n    let baseName = file.slice(0, -1 * extName.length);\n    let fullPath = nodePath.join(dirname, file);\n    fileMap[baseName] = fileMap[baseName] || {};\n    fileMap[baseName][extName] = fullPath;\n    fileMap[file] = fileMap[file] || {};\n    fileMap[file].__path = fullPath;\n  });\n\n  return fileMap;\n}\n\nfunction getPath(filename, fileMap) {\n  let file = fileMap[filename];\n\n  if (!file) return;\n  if (file.__path) return file.__path;\n  if (file.js) return file[\".js\"];\n\n  for (let key in file) {\n    return file[key];\n  }\n}\n\nfunction findAndSetFile(tagDef, tagDirname) {\n  try {\n    if (!taglibConfig.fs.statSync(tagDirname).isDirectory()) {\n      return;\n    }\n  } catch (_) {\n    return;\n  }\n\n  let tagName = nodePath.basename(tagDirname);\n  let fileMap = getFileMap(tagDirname);\n\n  for (let i = 0; i < searchFiles.length; i++) {\n    let name = searchFiles[i].name;\n    let type = searchFiles[i].type;\n    let repeatedName = tagName + \".\" + name.replace(\"index.\", \"\");\n    let path = getPath(name, fileMap) || getPath(repeatedName, fileMap);\n\n    if (path) {\n      tagDef[type] = path;\n      return true;\n    }\n  }\n}\n\nfunction hasFile(tagDef) {\n  for (let i = 0; i < tagFileTypes.length; i++) {\n    if (tagDef[tagFileTypes[i]]) return true;\n  }\n  return false;\n}\n\n/**\n * @param {String} tagsConfigPath path to tag definition file\n * @param {String} tagsConfigDirname path to directory of tags config file (should be path.dirname(tagsConfigPath))\n * @param {String|Object} dir the path to directory to scan\n * @param {String} taglib the taglib that is being loaded\n */\nmodule.exports = function scanTagsDir(\n  tagsConfigPath,\n  tagsConfigDirname,\n  dir,\n  taglib,\n  dependencyChain,\n) {\n  let prefix;\n\n  if (typeof dir === \"object\") {\n    prefix = dir.prefix;\n    dir = dir.path;\n  }\n\n  if (prefix == null) {\n    // no prefix by default\n    prefix = \"\";\n  }\n\n  dir = nodePath.resolve(tagsConfigDirname, dir);\n  let children = taglibConfig.fs.readdirSync(dir);\n\n  for (let i = 0, len = children.length; i < len; i++) {\n    let childFilename = children[i];\n    if (childFilename === \"node_modules\") {\n      continue;\n    }\n\n    let tagName;\n    let tagDef;\n    let tagDirname;\n    let tagJsonPath;\n\n    let ext = nodePath.extname(childFilename);\n    if (ext === \".marko\") {\n      tagName = childFilename.slice(0, 0 - ext.length);\n      tagDirname = dir;\n      tagDef = createDefaultTagDef();\n      tagDef.template = nodePath.join(dir, childFilename);\n    } else {\n      tagName = prefix + childFilename;\n\n      tagDirname = nodePath.join(dir, childFilename);\n      tagJsonPath = nodePath.join(tagDirname, \"marko-tag.json\");\n\n      let hasTagJson = false;\n      try {\n        taglibConfig.fs.statSync(tagJsonPath);\n        hasTagJson = true;\n        // eslint-disable-next-line no-empty\n      } catch (_) {}\n      if (hasTagJson) {\n        // marko-tag.json exists in the directory, use that as the tag definition\n        tagDef = jsonFileReader.readFileSync(tagJsonPath);\n      } else {\n        tagJsonPath = null;\n        tagDef = createDefaultTagDef();\n      }\n\n      if (!hasFile(tagDef)) {\n        let fileWasSet = findAndSetFile(tagDef, tagDirname);\n        if (!fileWasSet) {\n          if (hasTagJson) {\n            throw new Error(\n              \"Invalid tag file: \" +\n                tagJsonPath +\n                \". Neither a renderer or a template was found for tag. \" +\n                JSON.stringify(tagDef, null, 2),\n            );\n          } else {\n            // Skip this directory... there doesn't appear to be anything in it\n            continue;\n          }\n        }\n      }\n    }\n\n    let tagDependencyChain;\n\n    if (tagJsonPath) {\n      tagDependencyChain = dependencyChain.append(tagJsonPath);\n    } else {\n      tagDependencyChain = dependencyChain.append(tagDirname);\n    }\n\n    let tag = new types.Tag(tagJsonPath || tagDirname);\n    loaders.loadTagFromProps(tag, tagDef, tagDependencyChain);\n    tag.name = tag.name || tagName;\n    taglib.addTag(tag);\n  }\n};\n"
  },
  {
    "path": "packages/compiler/src/taglib/loader/types.js",
    "content": "exports.Taglib = require(\"./Taglib\");\nexports.Tag = require(\"./Tag\");\nexports.Attribute = require(\"./Attribute\");\nexports.Property = require(\"./Property\");\nexports.Transformer = require(\"./Transformer\");\n"
  },
  {
    "path": "packages/compiler/src/taglib/lookup/index.js",
    "content": "\"use strict\";\n\nvar nodePath = require(\"path\");\nvar ok = require(\"assert\").ok;\nvar extend = require(\"raptor-util/extend\");\nvar taglibTypes = require(\"../loader/types\");\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction TAG_COMPARATOR(a, b) {\n  return a.name.localeCompare(b.name);\n}\n\nfunction merge(target, source) {\n  const descs = Object.getOwnPropertyDescriptors(source);\n  for (const key in descs) {\n    const desc = descs[key];\n    if (desc.writable) {\n      const sourceVal = desc.value;\n      if (sourceVal == null) continue;\n\n      const targetVal = target[key];\n\n      if (\n        typeof sourceVal === \"object\" &&\n        targetVal &&\n        typeof targetVal === \"object\"\n      ) {\n        target[key] = Array.isArray(targetVal)\n          ? targetVal.concat(sourceVal)\n          : Array.isArray(sourceVal)\n            ? [targetVal].concat(sourceVal)\n            : merge(merge(new targetVal.constructor(), targetVal), sourceVal);\n        continue;\n      }\n    }\n\n    Object.defineProperty(target, key, desc);\n  }\n\n  return target;\n}\n\n/**\n * A taglib lookup merges in multiple taglibs so there is a single and fast lookup\n * for custom tags and custom attributes.\n */\nclass TaglibLookup {\n  constructor() {\n    this.merged = {\n      attributeGroups: {},\n    };\n    this.taglibsById = {};\n\n    this._sortedTags = undefined;\n    this.exclusiveTagDiscoveryDirs = undefined;\n    this.manualTagsDirs = undefined;\n  }\n\n  hasTaglib(taglib) {\n    return hasOwnProperty.call(this.taglibsById, taglib.id);\n  }\n\n  _mergeNestedTags(taglib) {\n    var Tag = taglibTypes.Tag;\n    // Loop over all of the nested tags and register a new custom tag\n    // with the fully qualified name\n\n    var merged = this.merged;\n\n    function handleNestedTags(tag, parentTagName) {\n      for (const key in tag.nestedTags) {\n        const nestedTag = tag.nestedTags[key];\n\n        var fullyQualifiedName = parentTagName + \":\" + nestedTag.name;\n        // Create a clone of the nested tag since we need to add some new\n        // properties\n        var clonedNestedTag = new Tag();\n        extend(clonedNestedTag, nestedTag);\n        // Record the fully qualified name of the parent tag that this\n        // custom tag is associated with.\n        clonedNestedTag.parentTagName = parentTagName;\n        clonedNestedTag.name = fullyQualifiedName;\n        merged.tags[fullyQualifiedName] = clonedNestedTag;\n        handleNestedTags(clonedNestedTag, fullyQualifiedName);\n      }\n    }\n\n    for (const key in taglib.tags) {\n      const tag = taglib.tags[key];\n      handleNestedTags(tag, tag.name);\n    }\n  }\n\n  addTaglib(taglib) {\n    ok(taglib, '\"taglib\" is required');\n    ok(taglib.id, '\"taglib.id\" expected');\n\n    if (hasOwnProperty.call(this.taglibsById, taglib.id)) {\n      return;\n    }\n\n    if (\n      taglib.dirname &&\n      typeof taglib.tagsDir === \"string\" &&\n      /[/\\\\]tags[/\\\\]?$/.test(taglib.tagsDir)\n    ) {\n      (this.manualTagsDirs || (this.manualTagsDirs = new Set())).add(\n        nodePath.resolve(taglib.dirname, taglib.tagsDir),\n      );\n    }\n\n    // console.log(\"TAGLIB:\", taglib);\n\n    this._sortedTags = undefined;\n\n    this.taglibsById[taglib.id] = taglib;\n\n    merge(this.merged, {\n      tags: taglib.tags,\n      attributes: taglib.attributes,\n      patternAttributes: taglib.patternAttributes,\n      attributeGroups: taglib.attributeGroups || {},\n    });\n\n    this._mergeNestedTags(taglib);\n  }\n\n  getTagsSorted() {\n    var sortedTags = this._sortedTags;\n\n    if (sortedTags === undefined) {\n      sortedTags = this._sortedTags = [];\n      var tags = this.merged.tags;\n      for (var tagName in tags) {\n        sortedTags.push(tags[tagName]);\n      }\n      sortedTags.sort(TAG_COMPARATOR);\n    }\n\n    return sortedTags;\n  }\n\n  forEachAttribute(tagName, callback) {\n    var tags = this.merged.tags;\n    if (!tags) {\n      return;\n    }\n\n    var globalAttributes = this.merged.attributes;\n    var taglibAttributeGroups = this.merged.attributeGroups;\n\n    function findAttributesForTagName(tagName) {\n      var tag = tags[tagName];\n      if (!tag) {\n        return;\n      }\n\n      function handleAttr(attrDef) {\n        if (attrDef.ref) {\n          attrDef = globalAttributes[attrDef.ref];\n        }\n        callback(attrDef, tag);\n      }\n\n      var attributes = tag.attributes;\n      if (!attributes) {\n        return;\n      }\n\n      for (var attrName in attributes) {\n        if (hasOwnProperty.call(attributes, attrName)) {\n          handleAttr(attributes[attrName], tag);\n        }\n      }\n\n      if (tag.attributeGroups) {\n        for (let i = 0; i < tag.attributeGroups.length; i++) {\n          let attributeGroupName = tag.attributeGroups[i];\n          let attributeGroup = taglibAttributeGroups[attributeGroupName];\n          if (attributeGroup) {\n            for (let attrName in attributeGroup) {\n              handleAttr(attributeGroup[attrName]);\n            }\n          }\n        }\n      }\n\n      if (tag.patternAttributes) {\n        tag.patternAttributes.forEach(handleAttr);\n      }\n    }\n\n    findAttributesForTagName(tagName); // Look for an exact match at the tag level\n    findAttributesForTagName(\"*\"); // Including attributes that apply to all tags\n  }\n\n  getTag(element) {\n    var tags = this.merged.tags;\n    if (!tags) {\n      return;\n    }\n\n    return tags[element.tagName || element];\n  }\n\n  getAttribute(element, attr) {\n    if (typeof element === \"string\") {\n      element = {\n        tagName: element,\n      };\n    }\n\n    if (typeof attr === \"string\") {\n      attr = {\n        name: attr,\n      };\n    }\n\n    var tags = this.merged.tags;\n    if (!tags) {\n      return;\n    }\n\n    var taglibAttributeGroups = this.merged.attributeGroups;\n\n    var tagName = element.tagName;\n    var attrName = attr.name;\n\n    function findAttributeForTag(tag, attributes, attrName) {\n      // try by exact match first\n      var attribute = attributes[attrName];\n      if (attribute === undefined) {\n        if (tag.attributeGroups) {\n          for (let i = 0; i < tag.attributeGroups.length; i++) {\n            let attributeGroupName = tag.attributeGroups[i];\n            let attributeGroup = taglibAttributeGroups[attributeGroupName];\n            if (attributeGroup) {\n              attribute = attributeGroup[attrName];\n              if (attribute !== undefined) {\n                break;\n              }\n            }\n          }\n        }\n      }\n\n      if (attribute === undefined && attrName !== \"*\") {\n        if (tag.patternAttributes) {\n          // try searching by pattern\n          for (var i = 0, len = tag.patternAttributes.length; i < len; i++) {\n            var patternAttribute = tag.patternAttributes[i];\n            if (patternAttribute.pattern.test(attrName)) {\n              attribute = patternAttribute;\n              break;\n            }\n          }\n        }\n      }\n\n      return attribute;\n    }\n\n    var globalAttributes = this.merged.attributes;\n\n    function tryAttribute(tagName, attrName) {\n      var tag = tags[tagName];\n      if (!tag) {\n        return undefined;\n      }\n\n      return findAttributeForTag(tag, tag.attributes, attrName);\n    }\n\n    var attrDef =\n      tryAttribute(tagName, attrName) || // Look for an exact match at the tag level\n      tryAttribute(\"*\", attrName) || // If not there, see if there is a exact match on the attribute name for attributes that apply to all tags\n      tryAttribute(tagName, \"*\"); // Otherwise, see if there is a splat attribute for the tag\n\n    if (attrDef && attrDef.ref) {\n      attrDef = globalAttributes[attrDef.ref];\n    }\n\n    return attrDef;\n  }\n\n  toString() {\n    return \"lookup: \" + Object.keys(this.taglibsById).join(\", \");\n  }\n}\n\nmodule.exports = TaglibLookup;\n"
  },
  {
    "path": "packages/compiler/src/taglib/marko-html.json",
    "content": "{\n  \"taglib-id\": \"marko-html\",\n  \"<a>\": {\n    \"@download\": \"#html-download\",\n    \"@href\": \"#html-href\",\n    \"@hreflang\": \"#html-hreflang\",\n    \"@media\": \"#html-media\",\n    \"@ping\": \"#html-ping\",\n    \"@referrerpolicy\": \"#html-referrerpolicy\",\n    \"@rel\": \"#html-rel\",\n    \"@target\": \"#html-target\",\n    \"html\": true,\n    \"autocomplete\": [\n      {},\n      {\n        \"displayText\": \"a href=\\\"\\\"\",\n        \"snippet\": \"a href=\\\"${1:https://}\\\"\"\n      },\n      {\n        \"displayText\": \"a href=\\\"mailto:\\\"\",\n        \"snippet\": \"a href=\\\"mailto:${1:joe@example.com}?subject=${2:feedback}\\\"\"\n      }\n    ],\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<abbr>\": {\n    \"html\": true,\n    \"autocomplete\": [\n      {},\n      {\n        \"snippet\": \"abbr title=\\\"$1\\\"\"\n      }\n    ],\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<address>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<area>\": {\n    \"@alt\": \"#html-alt\",\n    \"@coords\": \"#html-coords\",\n    \"@download\": \"#html-download\",\n    \"@href\": \"#html-href\",\n    \"@hreflang\": \"#html-hreflang\",\n    \"@media\": \"#html-media\",\n    \"@ping\": \"#html-ping\",\n    \"@referrerpolicy\": \"#html-referrerpolicy\",\n    \"@rel\": \"#html-rel\",\n    \"@shape\": \"#html-shape\",\n    \"@target\": \"#html-target\",\n    \"html\": true,\n    \"autocomplete\": [\n      {},\n      {\n        \"displayText\": \"area shape=\\\"\\\" coords=\\\"\\\" href=\\\"\\\"\",\n        \"snippet\": \"area ${1:shape=\\\"${2:default}\\\"} coords=\\\"$3\\\" ${4:href=\\\"${5:https://}\\\"}\"\n      }\n    ],\n    \"attribute-groups\": [\"html-attributes\"],\n    \"parse-options\": {\n      \"openTagOnly\": true\n    }\n  },\n  \"<article>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<aside>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<audio>\": {\n    \"@autoplay\": \"#html-autoplay\",\n    \"@controls\": \"#html-controls\",\n    \"@crossorigin\": \"#html-crossorigin\",\n    \"@disableremoteplayback\": \"#html-disableremoteplayback\",\n    \"@loop\": \"#html-loop\",\n    \"@muted\": \"#html-muted\",\n    \"@preload\": \"#html-preload\",\n    \"@src\": \"#html-src\",\n    \"html\": true,\n    \"autocomplete\": [\n      {},\n      {\n        \"snippet\": \"audio src=\\\"$1\\\"\"\n      }\n    ],\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<b>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<base>\": {\n    \"@href\": \"#html-href\",\n    \"@target\": \"#html-target\",\n    \"html\": true,\n    \"autocomplete\": [\n      {},\n      {\n        \"snippet\": \"base href=\\\"${1:https://}\\\" target=\\\"${2:_top}\\\"\"\n      }\n    ],\n    \"attribute-groups\": [\"html-attributes\"],\n    \"parse-options\": {\n      \"openTagOnly\": true\n    }\n  },\n  \"<bdi>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<bdo>\": {\n    \"@dir\": \"#html-dir-for-bdo\",\n    \"html\": true,\n    \"autocomplete\": [\n      {},\n      {\n        \"snippet\": \"bdo dir=\\\"${1:rtl}\\\"\"\n      }\n    ],\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<blockquote>\": {\n    \"@cite\": \"#html-cite\",\n    \"html\": true,\n    \"autocomplete\": [\n      {},\n      {\n        \"snippet\": \"blockquote cite=\\\"${1:https://}\\\"\"\n      }\n    ],\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<body>\": {\n    \"@onafterprint\": \"#html-onafterprint\",\n    \"@onbeforeprint\": \"#html-onbeforeprint\",\n    \"@onbeforeunload\": \"#html-onbeforeunload\",\n    \"@onhashchange\": \"#html-onhashchange\",\n    \"@onlanguagechange\": \"#html-onlanguagechange\",\n    \"@onmessage\": \"#html-onmessage\",\n    \"@onoffline\": \"#html-onoffline\",\n    \"@ononline\": \"#html-ononline\",\n    \"@onpagehide\": \"#html-onpagehide\",\n    \"@onpageshow\": \"#html-onpageshow\",\n    \"@onpopstate\": \"#html-onpopstate\",\n    \"@onredo\": \"#html-onredo\",\n    \"@onresize\": \"#html-onresize\",\n    \"@onstorage\": \"#html-onstorage\",\n    \"@onundo\": \"#html-onundo\",\n    \"@onunload\": \"#html-onunload\",\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<br>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"],\n    \"parse-options\": {\n      \"openTagOnly\": true\n    }\n  },\n  \"<button>\": {\n    \"@autofocus\": \"#html-autofocus\",\n    \"@disabled\": \"#html-disabled\",\n    \"@form\": \"#html-form\",\n    \"@formaction\": \"#html-formaction\",\n    \"@formenctype\": \"#html-formenctype\",\n    \"@formmethod\": \"#html-formmethod\",\n    \"@formnovalidate\": \"#html-formnovalidate\",\n    \"@formtarget\": \"#html-formtarget\",\n    \"@name\": \"#html-name\",\n    \"@type\": \"#html-type\",\n    \"@value\": \"#html-value\",\n    \"html\": true,\n    \"autocomplete\": [\n      {},\n      {\n        \"displayText\": \"button type=\\\"button\\\"\",\n        \"snippet\": \"button type=\\\"${1:button}\\\"\"\n      }\n    ],\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<canvas>\": {\n    \"@height\": \"#html-height\",\n    \"@width\": \"#html-width\",\n    \"html\": true,\n    \"autocomplete\": [\n      {},\n      {\n        \"snippet\": \"canvas id=\\\"${1:canvas}\\\" width=\\\"${2:300}\\\" height=\\\"${3:300}\\\"\"\n      }\n    ],\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<caption>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<cite>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<code>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<col>\": {\n    \"@span\": \"#html-span\",\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"],\n    \"parse-options\": {\n      \"openTagOnly\": true\n    }\n  },\n  \"<colgroup>\": {\n    \"@span\": \"#html-span\",\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<datalist>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<dd>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<del>\": {\n    \"@cite\": \"#html-cite\",\n    \"@datetime\": \"#html-datetime\",\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<details>\": {\n    \"@open\": \"#html-open\",\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<dfn>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<div>\": {\n    \"html\": true,\n    \"autocomplete\": [\n      {},\n      {\n        \"snippet\": \"div class=\\\"$2\\\"\"\n      }\n    ],\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<dl>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<dt>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<em>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<embed>\": {\n    \"@height\": \"#html-height\",\n    \"@src\": \"#html-src\",\n    \"@type\": \"#html-type\",\n    \"@width\": \"#html-width\",\n    \"html\": true,\n    \"autocomplete\": [\n      {},\n      {\n        \"snippet\": \"embed type=\\\"${1:video/quicktime}\\\" src=\\\"${2:https://}\\\" width=\\\"${3:300}\\\" height=\\\"${4:300}\\\"\"\n      }\n    ],\n    \"attribute-groups\": [\"html-attributes\"],\n    \"parse-options\": {\n      \"openTagOnly\": true\n    }\n  },\n  \"<fieldset>\": {\n    \"@disabled\": \"#html-disabled\",\n    \"@form\": \"#html-form\",\n    \"@name\": \"#html-name\",\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<figcaption>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<figure>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<footer>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<form>\": {\n    \"@accept-charset\": \"#html-accept-charset\",\n    \"@action\": \"#html-action\",\n    \"@autocomplete\": \"#html-autocomplete\",\n    \"@enctype\": \"#html-enctype\",\n    \"@method\": \"#html-method\",\n    \"@name\": \"#html-name\",\n    \"@novalidate\": \"#html-novalidate\",\n    \"@target\": \"#html-target\",\n    \"html\": true,\n    \"autocomplete\": [\n      {},\n      {\n        \"snippet\": \"form class=\\\"$1\\\" action=\\\"${2:/}\\\" method=\\\"${3:post}\\\"\"\n      }\n    ],\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<h1>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<h2>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<h3>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<h4>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<h5>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<h6>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<head>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<header>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<hgroup>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<hr>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"],\n    \"parse-options\": {\n      \"openTagOnly\": true\n    }\n  },\n  \"<html>\": {\n    \"html\": true,\n    \"autocomplete\": [\n      {},\n      {\n        \"snippet\": \"!doctype html\"\n      },\n      {\n        \"displayText\": \"HTML page\",\n        \"snippet\": \"<!doctype html>\\n<html lang=\\\"en\\\">\\n\\t<head>\\n\\t\\t<meta charset=\\\"utf-8\\\">\\n\\t\\t<title>${1:title}</title>\\n\\t</head>\\n\\t<body>\\n\\t\\t$2\\n\\t</body>\\n</html>\\n\"\n      },\n      {\n        \"displayText\": \"HTML page (concise)\",\n        \"snippet\": \"<!doctype html>\\nhtml lang=\\\"en\\\"\\n\\thead\\n\\t\\tmeta charset=\\\"utf-8\\\"\\n\\t\\t<title>${1:title}</title>\\n\\tbody\\n\\t\\t$2\\n\"\n      }\n    ],\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<i>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<iframe>\": {\n    \"@allow\": \"#html-allow\",\n    \"@csp\": \"#html-csp\",\n    \"@height\": \"#html-height\",\n    \"@importance\": \"#html-importance\",\n    \"@loading\": \"#html-loading\",\n    \"@name\": \"#html-name\",\n    \"@referrerpolicy\": \"#html-referrerpolicy\",\n    \"@sandbox\": \"#html-sandbox\",\n    \"@src\": \"#html-src\",\n    \"@srcdoc\": \"#html-srcdoc\",\n    \"@width\": \"#html-width\",\n    \"html\": true,\n    \"autocomplete\": [\n      {},\n      {\n        \"snippet\": \"iframe src=\\\"$1\\\" width=\\\"$2\\\" height=\\\"$3\\\"\"\n      }\n    ],\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<img>\": {\n    \"@alt\": \"#html-alt\",\n    \"@crossorigin\": \"#html-crossorigin\",\n    \"@decoding\": \"#html-decoding\",\n    \"@height\": \"#html-height\",\n    \"@importance\": \"#html-importance\",\n    \"@intrinsicsize\": \"#html-intrinsicsize\",\n    \"@ismap\": \"#html-ismap\",\n    \"@loading\": \"#html-loading\",\n    \"@referrerpolicy\": \"#html-referrerpolicy\",\n    \"@sizes\": \"#html-sizes\",\n    \"@src\": \"#html-src\",\n    \"@srcset\": \"#html-srcset\",\n    \"@usemap\": \"#html-usemap\",\n    \"@width\": \"#html-width\",\n    \"html\": true,\n    \"autocomplete\": [\n      {},\n      {\n        \"snippet\": \"img src=\\\"$1\\\" alt=\\\"$2\\\"\"\n      }\n    ],\n    \"attribute-groups\": [\"html-attributes\"],\n    \"parse-options\": {\n      \"openTagOnly\": true\n    }\n  },\n  \"<input>\": {\n    \"@accept\": \"#html-accept\",\n    \"@alt\": \"#html-alt\",\n    \"@autocomplete\": \"#html-autocomplete\",\n    \"@autofocus\": \"#html-autofocus\",\n    \"@capture\": \"#html-capture\",\n    \"@checked\": \"#html-checked\",\n    \"@dirname\": \"#html-dirname\",\n    \"@disabled\": \"#html-disabled\",\n    \"@form\": \"#html-form\",\n    \"@formaction\": \"#html-formaction\",\n    \"@formenctype\": \"#html-formenctype\",\n    \"@formmethod\": \"#html-formmethod\",\n    \"@formnovalidate\": \"#html-formnovalidate\",\n    \"@formtarget\": \"#html-formtarget\",\n    \"@height\": \"#html-height\",\n    \"@list\": \"#html-list\",\n    \"@max\": \"#html-max\",\n    \"@maxlength\": \"#html-maxlength\",\n    \"@min\": \"#html-min\",\n    \"@multiple\": \"#html-multiple\",\n    \"@name\": \"#html-name\",\n    \"@pattern\": \"#html-pattern\",\n    \"@placeholder\": \"#html-placeholder\",\n    \"@readonly\": \"#html-readonly\",\n    \"@required\": \"#html-required\",\n    \"@size\": \"#html-size\",\n    \"@src\": \"#html-src\",\n    \"@step\": \"#html-step\",\n    \"@type\": \"#html-type\",\n    \"@value\": \"#html-value\",\n    \"@width\": \"#html-width\",\n    \"html\": true,\n    \"autocomplete\": [\n      {},\n      {\n        \"snippet\": \"input type=\\\"${1}\\\" name=\\\"${2:name}\\\" value=\\\"$3\\\"\",\n        \"triggerAutocompleteAfterInsert\": true\n      }\n    ],\n    \"attribute-groups\": [\"html-attributes\"],\n    \"parse-options\": {\n      \"openTagOnly\": true\n    }\n  },\n  \"<ins>\": {\n    \"@cite\": \"#html-cite\",\n    \"@datetime\": \"#html-datetime\",\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<kbd>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<label>\": {\n    \"@for\": \"#html-for\",\n    \"@form\": \"#html-form\",\n    \"html\": true,\n    \"autocomplete\": [\n      {},\n      {\n        \"snippet\": \"label${1: for=\\\"$2\\\"}\"\n      }\n    ],\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<legend>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<li>\": {\n    \"@value\": \"#html-value\",\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<link>\": {\n    \"@as\": \"#html-as\",\n    \"@crossorigin\": \"#html-crossorigin\",\n    \"@disabled\": \"#html-disabled\",\n    \"@href\": \"#html-href\",\n    \"@hreflang\": \"#html-hreflang\",\n    \"@importance\": \"#html-importance\",\n    \"@integrity\": \"#html-integrity\",\n    \"@media\": \"#html-media\",\n    \"@referrerpolicy\": \"#html-referrerpolicy\",\n    \"@rel\": \"#html-rel\",\n    \"@sizes\": \"#html-sizes\",\n    \"@type\": \"#html-type\",\n    \"html\": true,\n    \"autocomplete\": [\n      {},\n      {\n        \"snippet\": \"link rel=\\\"${1:stylesheet}\\\" href=\\\"${2:/css/master.css}\\\" media=\\\"${3:all}\\\" title=\\\"${4:no title}\\\"\"\n      },\n      {\n        \"snippet\": \"link rel=\\\"icon\\\" href=\\\"$1.ico\\\"\"\n      },\n      {\n        \"snippet\": \"link rel=\\\"import\\\" href=\\\"$1\\\"\"\n      }\n    ],\n    \"attribute-groups\": [\"html-attributes\"],\n    \"parse-options\": {\n      \"openTagOnly\": true\n    }\n  },\n  \"<map>\": {\n    \"@name\": \"#html-name\",\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<mark>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<menu>\": {\n    \"@type\": \"#html-type\",\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<meta>\": {\n    \"@charset\": \"#html-charset\",\n    \"@content\": \"#html-content\",\n    \"@http-equiv\": \"#html-http-equiv\",\n    \"@name\": \"#html-name\",\n    \"html\": true,\n    \"autocomplete\": [\n      {\n        \"snippet\": \"meta name=\\\"${1:name}\\\" content=\\\"${2:content}\\\"\"\n      }\n    ],\n    \"attribute-groups\": [\"html-attributes\"],\n    \"parse-options\": {\n      \"openTagOnly\": true\n    }\n  },\n  \"<meter>\": {\n    \"@form\": \"#html-form\",\n    \"@high\": \"#html-high\",\n    \"@low\": \"#html-low\",\n    \"@max\": \"#html-max\",\n    \"@min\": \"#html-min\",\n    \"@optimum\": \"#html-optimum\",\n    \"@value\": \"#html-value\",\n    \"html\": true,\n    \"autocomplete\": [\n      {},\n      {\n        \"snippet\": \"meter min=\\\"${1:200}\\\" max=\\\"${2:500}\\\" value=\\\"${3:350}\\\"\"\n      }\n    ],\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<nav>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<noscript>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<object>\": {\n    \"@data\": \"#html-data\",\n    \"@form\": \"#html-form\",\n    \"@height\": \"#html-height\",\n    \"@name\": \"#html-name\",\n    \"@type\": \"#html-type\",\n    \"@usemap\": \"#html-usemap\",\n    \"@width\": \"#html-width\",\n    \"html\": true,\n    \"autocomplete\": [\n      {\n        \"snippet\": \"object data=\\\"${1:https://}\\\" type=\\\"${2:mime/type}\\\"\"\n      }\n    ],\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<ol>\": {\n    \"@reversed\": \"#html-reversed\",\n    \"@start\": \"#html-start\",\n    \"@type\": \"#html-type\",\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<optgroup>\": {\n    \"@disabled\": \"#html-disabled\",\n    \"@label\": \"#html-label\",\n    \"html\": true,\n    \"autocomplete\": [\n      {\n        \"snippet\": \"optgroup label=\\\"${1:Group 1}\\\"\"\n      }\n    ],\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<option>\": {\n    \"@disabled\": \"#html-disabled\",\n    \"@label\": \"#html-label\",\n    \"@selected\": \"#html-selected\",\n    \"@value\": \"#html-value\",\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<output>\": {\n    \"@for\": \"#html-for\",\n    \"@form\": \"#html-form\",\n    \"@name\": \"#html-name\",\n    \"html\": true,\n    \"autocomplete\": [\n      {\n        \"snippet\": \"output name=\\\"${1:result}\\\"\"\n      }\n    ],\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<p>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<param>\": {\n    \"@name\": \"#html-name\",\n    \"@value\": \"#html-value\",\n    \"html\": true,\n    \"autocomplete\": [\n      {\n        \"snippet\": \"param name=\\\"${1:foo}\\\" value=\\\"${2:bar}\\\"\"\n      }\n    ],\n    \"attribute-groups\": [\"html-attributes\"],\n    \"parse-options\": {\n      \"openTagOnly\": true\n    }\n  },\n  \"<picture>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<pre>\": {\n    \"parse-options\": {\n      \"preserveWhitespace\": true\n    },\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<progress>\": {\n    \"@form\": \"#html-form\",\n    \"@max\": \"#html-max\",\n    \"@value\": \"#html-value\",\n    \"html\": true,\n    \"autocomplete\": [\n      {\n        \"snippet\": \"progress value=\\\"${1:50}\\\" max=\\\"${2:100}\\\"\"\n      }\n    ],\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<q>\": {\n    \"@cite\": \"#html-cite\",\n    \"html\": true,\n    \"autocomplete\": [\n      {\n        \"snippet\": \"q cite=\\\"$1\\\"\"\n      }\n    ],\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<rp>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<rt>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<ruby>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<s>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<samp>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<script>\": {\n    \"parse-options\": {\n      \"text\": true,\n      \"preserveWhitespace\": true\n    },\n    \"@async\": \"#html-async\",\n    \"@crossorigin\": \"#html-crossorigin\",\n    \"@defer\": \"#html-defer\",\n    \"@integrity\": \"#html-integrity\",\n    \"@nomodule\": \"#html-nomodule\",\n    \"@nonce\": \"#html-nonce\",\n    \"@referrerpolicy\": \"#html-referrerpolicy\",\n    \"@src\": \"#html-src\",\n    \"@type\": \"#html-type\",\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<section>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<select>\": {\n    \"@autocomplete\": \"#html-autocomplete\",\n    \"@autofocus\": \"#html-autofocus\",\n    \"@disabled\": \"#html-disabled\",\n    \"@form\": \"#html-form\",\n    \"@multiple\": \"#html-multiple\",\n    \"@name\": \"#html-name\",\n    \"@required\": \"#html-required\",\n    \"@size\": \"#html-size\",\n    \"html\": true,\n    \"autocomplete\": [\n      {\n        \"snippet\": \"select class=\\\"$1\\\" name=\\\"$2\\\"\"\n      }\n    ],\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<small>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<source>\": {\n    \"@media\": \"#html-media\",\n    \"@sizes\": \"#html-sizes\",\n    \"@src\": \"#html-src\",\n    \"@srcset\": \"#html-srcset\",\n    \"@type\": \"#html-type\",\n    \"html\": true,\n    \"autocomplete\": [\n      {\n        \"snippet\": \"source src=\\\"${1:https://}\\\" type=\\\"${2:mime/type}\\\"\"\n      }\n    ],\n    \"attribute-groups\": [\"html-attributes\"],\n    \"parse-options\": {\n      \"openTagOnly\": true\n    }\n  },\n  \"<span>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<strong>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<style>\": {\n    \"parse-options\": {\n      \"text\": true,\n      \"preserveWhitespace\": true\n    },\n    \"@disabled\": \"#html-disabled\",\n    \"@media\": \"#html-media\",\n    \"@nonce\": \"#html-nonce\",\n    \"@type\": \"#html-type\",\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<sub>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<summary>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<sup>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<table>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<tbody>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<td>\": {\n    \"@colspan\": \"#html-colspan\",\n    \"@headers\": \"#html-headers\",\n    \"@rowspan\": \"#html-rowspan\",\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<textarea>\": {\n    \"parse-options\": {\n      \"text\": true,\n      \"preserveWhitespace\": true\n    },\n    \"@autocomplete\": \"#html-autocomplete\",\n    \"@autofocus\": \"#html-autofocus\",\n    \"@cols\": \"#html-cols\",\n    \"@dirname\": \"#html-dirname\",\n    \"@disabled\": \"#html-disabled\",\n    \"@form\": \"#html-form\",\n    \"@maxlength\": \"#html-maxlength\",\n    \"@name\": \"#html-name\",\n    \"@placeholder\": \"#html-placeholder\",\n    \"@readonly\": \"#html-readonly\",\n    \"@required\": \"#html-required\",\n    \"@rows\": \"#html-rows\",\n    \"@wrap\": \"#html-wrap\",\n    \"html\": true,\n    \"autocomplete\": [\n      {\n        \"snippet\": \"textarea name=\\\"${1:name}\\\" rows=\\\"${2:8}\\\" cols=\\\"${3:40}\\\"\"\n      }\n    ],\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<tfoot>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<th>\": {\n    \"@colspan\": \"#html-colspan\",\n    \"@headers\": \"#html-headers\",\n    \"@rowspan\": \"#html-rowspan\",\n    \"@scope\": \"#html-scope\",\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<thead>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<time>\": {\n    \"@datetime\": \"#html-datetime\",\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<title>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"],\n    \"parse-options\": {\n      \"text\": true\n    }\n  },\n  \"<tr>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<track>\": {\n    \"@default\": \"#html-default\",\n    \"@kind\": \"#html-kind\",\n    \"@label\": \"#html-label\",\n    \"@src\": \"#html-src\",\n    \"@srclang\": \"#html-srclang\",\n    \"html\": true,\n    \"autocomplete\": [\n      {\n        \"snippet\": \"track kind=\\\"${1:subtitles}\\\" src=\\\"${2:sampleSubtitles_en.srt}\\\" srclang=\\\"${3:en}\\\"\"\n      }\n    ],\n    \"attribute-groups\": [\"html-attributes\"],\n    \"parse-options\": {\n      \"openTagOnly\": true\n    }\n  },\n  \"<u>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<ul>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<video>\": {\n    \"@autoplay\": \"#html-autoplay\",\n    \"@controls\": \"#html-controls\",\n    \"@controlslist\": \"#html-controlist\",\n    \"@crossorigin\": \"#html-crossorigin\",\n    \"@disablepictureinpicture\": \"#html-disablepictureinpicture\",\n    \"@disableremoteplayback\": \"#html-disableremoteplayback\",\n    \"@height\": \"#html-height\",\n    \"@intrinsicsize\": \"#html-intrinsicsize\",\n    \"@loop\": \"#html-loop\",\n    \"@muted\": \"#html-muted\",\n    \"@playsinline\": \"#html-playsinline\",\n    \"@poster\": \"#html-poster\",\n    \"@preload\": \"#html-preload\",\n    \"@src\": \"#html-src\",\n    \"@width\": \"#html-width\",\n    \"html\": true,\n    \"autocomplete\": [\n      {\n        \"displayText\": \"video src=\\\"\\\" controls poster=\\\"\\\"\",\n        \"snippet\": \"video src=\\\"${1:videofile.ogg}\\\" ${2:controls} ${3:poster=\\\"${4:posterimage.jpg}\\\"}\"\n      }\n    ],\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<wbr>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"],\n    \"parse-options\": {\n      \"openTagOnly\": true\n    }\n  },\n  \"attribute-groups\": {\n    \"html-attributes\": {\n      \"*\": \"string\",\n      \"accesskey\": {\n        \"html\": true\n      },\n      \"autocapitalize\": {\n        \"enum\": [\"none\", \"sentences\", \"words\", \"characters\"],\n        \"html\": true\n      },\n      \"class\": {\n        \"type\": \"cssStyle\",\n        \"html\": true\n      },\n      \"contenteditable\": {\n        \"enum\": [\"\", \"true\", \"false\"],\n        \"html\": true\n      },\n      \"dir\": {\n        \"enum\": [\"ltr\", \"rtl\", \"auto\"],\n        \"html\": true\n      },\n      \"draggable\": {\n        \"enum\": [\"false\", \"true\"],\n        \"html\": true\n      },\n      \"dropzone\": {\n        \"enum\": [\"copy\", \"move\", \"link\"],\n        \"html\": true\n      },\n      \"elementtiming\": {\n        \"html\": true\n      },\n      \"enterkeyhint\": {\n        \"enum\": [\"enter\", \"done\", \"go\", \"next\", \"previous\", \"search\", \"send\"],\n        \"html\": true\n      },\n      \"hidden\": {\n        \"type\": \"boolean\",\n        \"html\": true\n      },\n      \"id\": {\n        \"type\": \"cssId\",\n        \"html\": true\n      },\n      \"inputmode\": {\n        \"enum\": [\n          \"none\",\n          \"text\",\n          \"tel\",\n          \"url\",\n          \"email\",\n          \"numeric\",\n          \"decimal\",\n          \"search\"\n        ],\n        \"html\": true\n      },\n      \"itemid\": {\n        \"html\": true\n      },\n      \"itemprop\": {\n        \"html\": true\n      },\n      \"itemref\": {\n        \"html\": true\n      },\n      \"itemscope\": {\n        \"html\": true\n      },\n      \"itemtype\": {\n        \"html\": true\n      },\n      \"lang\": {\n        \"enum\": [\n          \"ab\",\n          \"aa\",\n          \"af\",\n          \"sq\",\n          \"am\",\n          \"ar\",\n          \"an\",\n          \"hy\",\n          \"as\",\n          \"ay\",\n          \"az\",\n          \"ba\",\n          \"eu\",\n          \"bn\",\n          \"dz\",\n          \"bh\",\n          \"bi\",\n          \"br\",\n          \"bg\",\n          \"my\",\n          \"be\",\n          \"km\",\n          \"ca\",\n          \"zh\",\n          \"co\",\n          \"hr\",\n          \"cs\",\n          \"da\",\n          \"nl\",\n          \"en\",\n          \"eo\",\n          \"et\",\n          \"fo\",\n          \"fa\",\n          \"fi\",\n          \"fr\",\n          \"fy\",\n          \"gl\",\n          \"gd\",\n          \"gv\",\n          \"ka\",\n          \"de\",\n          \"el\",\n          \"kl\",\n          \"gn\",\n          \"gu\",\n          \"ht\",\n          \"ha\",\n          \"he\",\n          \"hi\",\n          \"hu\",\n          \"is\",\n          \"io\",\n          \"id\",\n          \"ia\",\n          \"ie\",\n          \"iu\",\n          \"ik\",\n          \"ga\",\n          \"it\",\n          \"ja\",\n          \"jv\",\n          \"kn\",\n          \"ks\",\n          \"kk\",\n          \"rw\",\n          \"ky\",\n          \"rn\",\n          \"ko\",\n          \"ku\",\n          \"lo\",\n          \"la\",\n          \"lv\",\n          \"li\",\n          \"ln\",\n          \"lt\",\n          \"mk\",\n          \"mg\",\n          \"ms\",\n          \"ml\",\n          \"mt\",\n          \"mi\",\n          \"mr\",\n          \"mo\",\n          \"mn\",\n          \"na\",\n          \"ne\",\n          \"no\",\n          \"oc\",\n          \"or\",\n          \"om\",\n          \"ps\",\n          \"pl\",\n          \"pt\",\n          \"pa\",\n          \"qu\",\n          \"rm\",\n          \"ro\",\n          \"ru\",\n          \"sz\",\n          \"sm\",\n          \"sg\",\n          \"sa\",\n          \"sr\",\n          \"sh\",\n          \"st\",\n          \"tn\",\n          \"sn\",\n          \"ii\",\n          \"sd\",\n          \"si\",\n          \"ss\",\n          \"sk\",\n          \"sl\",\n          \"so\",\n          \"es\",\n          \"su\",\n          \"sw\",\n          \"sv\",\n          \"tl\",\n          \"tg\",\n          \"ta\",\n          \"tt\",\n          \"te\",\n          \"th\",\n          \"bo\",\n          \"ti\",\n          \"to\",\n          \"ts\",\n          \"tr\",\n          \"tk\",\n          \"tw\",\n          \"ug\",\n          \"uk\",\n          \"ur\",\n          \"uz\",\n          \"vi\",\n          \"vo\",\n          \"wa\",\n          \"cy\",\n          \"wo\",\n          \"xh\",\n          \"yi\",\n          \"yo\",\n          \"zu\"\n        ],\n        \"html\": true\n      },\n      \"role\": {\n        \"enum\": [\n          \"alert\",\n          \"alertdialog\",\n          \"article\",\n          \"application\",\n          \"banner\",\n          \"button\",\n          \"cell\",\n          \"checkbox\",\n          \"columnheader\",\n          \"combobox\",\n          \"complementary\",\n          \"contentinfo\",\n          \"definition\",\n          \"directory\",\n          \"dialog\",\n          \"document\",\n          \"feed\",\n          \"figure\",\n          \"form\",\n          \"grid\",\n          \"gridcell\",\n          \"group\",\n          \"heading\",\n          \"img\",\n          \"link\",\n          \"list\",\n          \"listbox\",\n          \"listitem\",\n          \"log\",\n          \"main\",\n          \"marquee\",\n          \"math\",\n          \"menu\",\n          \"menubar\",\n          \"menuitem\",\n          \"menuitemcheckbox\",\n          \"menuitemradio\",\n          \"navigation\",\n          \"none\",\n          \"note\",\n          \"option\",\n          \"presentation\",\n          \"progressbar\",\n          \"radio\",\n          \"radiogroup\",\n          \"region\",\n          \"row\",\n          \"rowgroup\",\n          \"rowheader\",\n          \"scrollbar\",\n          \"search\",\n          \"searchbox\",\n          \"separator\",\n          \"slider\",\n          \"spinbutton\",\n          \"status\",\n          \"switch\",\n          \"tab\",\n          \"table\",\n          \"tablist\",\n          \"tabpanel\",\n          \"term\",\n          \"textbox\",\n          \"timer\",\n          \"toolbar\",\n          \"tooltip\",\n          \"tree\",\n          \"treegrid\",\n          \"treeitem\"\n        ],\n        \"html\": true\n      },\n      \"spellcheck\": {\n        \"enum\": [\"\", \"true\", \"false\"],\n        \"html\": true\n      },\n      \"style\": {\n        \"type\": \"style\",\n        \"html\": true\n      },\n      \"tabindex\": {\n        \"type\": \"number\",\n        \"html\": true\n      },\n      \"title\": {\n        \"html\": true\n      },\n      \"translate\": {\n        \"enum\": [\"\", \"yes\", \"no\"],\n        \"html\": true\n      },\n      \"property\": {\n        \"html\": true\n      },\n      \"typeof\": {\n        \"html\": true\n      },\n      \"vocab\": {\n        \"html\": true\n      },\n      \"aria-activedescendant\": {\n        \"type\": \"cssId\",\n        \"html\": true\n      },\n      \"aria-atomic\": {\n        \"enum\": [\"true\", \"false\"],\n        \"html\": true\n      },\n      \"aria-autocomplete\": {\n        \"enum\": [\"inline\", \"list\", \"both\", \"none\"],\n        \"html\": true\n      },\n      \"aria-busy\": {\n        \"enum\": [\"true\", \"false\"],\n        \"html\": true\n      },\n      \"aria-checked\": {\n        \"enum\": [\"true\", \"false\", \"mixed\"],\n        \"html\": true\n      },\n      \"aria-colcount\": {\n        \"type\": \"number\",\n        \"html\": true\n      },\n      \"aria-colindex\": {\n        \"type\": \"number\",\n        \"html\": true\n      },\n      \"aria-colspan\": {\n        \"type\": \"number\",\n        \"html\": true\n      },\n      \"aria-controls\": {\n        \"html\": true\n      },\n      \"aria-current\": {\n        \"enum\": [\"page\", \"step\", \"location\", \"date\", \"time\", \"true\", \"false\"],\n        \"html\": true\n      },\n      \"aria-describedby\": {\n        \"html\": true\n      },\n      \"aria-details\": {\n        \"type\": \"cssId\",\n        \"html\": true\n      },\n      \"aria-disabled\": {\n        \"enum\": [\"true\", \"false\"],\n        \"html\": true\n      },\n      \"aria-errormessage\": {\n        \"type\": \"cssId\",\n        \"html\": true\n      },\n      \"aria-expanded\": {\n        \"enum\": [\"true\", \"false\"],\n        \"html\": true\n      },\n      \"aria-flowto\": {\n        \"html\": true\n      },\n      \"aria-haspopup\": {\n        \"enum\": [\"menu\", \"listbox\", \"tree\", \"grid\", \"dialog\"],\n        \"html\": true\n      },\n      \"aria-hidden\": {\n        \"enum\": [\"true\", \"false\"],\n        \"html\": true\n      },\n      \"aria-invalid\": {\n        \"enum\": [\"true\", \"false\", \"grammar\", \"spelling\"],\n        \"html\": true\n      },\n      \"aria-keyshortcuts\": {\n        \"html\": true\n      },\n      \"aria-label\": {\n        \"html\": true\n      },\n      \"aria-labelledby\": {\n        \"html\": true\n      },\n      \"aria-level\": {\n        \"type\": \"number\",\n        \"html\": true\n      },\n      \"aria-live\": {\n        \"enum\": [\"off\", \"polite\", \"assertive\"],\n        \"html\": true\n      },\n      \"aria-modal\": {\n        \"enum\": [\"true\", \"false\"],\n        \"html\": true\n      },\n      \"aria-multiline\": {\n        \"enum\": [\"true\", \"false\"],\n        \"html\": true\n      },\n      \"aria-multiselectable\": {\n        \"enum\": [\"true\", \"false\"],\n        \"html\": true\n      },\n      \"aria-orientation\": {\n        \"enum\": [\"horizontal\", \"vertical\"],\n        \"html\": true\n      },\n      \"aria-owns\": {\n        \"html\": true\n      },\n      \"aria-placeholder\": {\n        \"html\": true\n      },\n      \"aria-posinset\": {\n        \"type\": \"number\",\n        \"html\": true\n      },\n      \"aria-pressed\": {\n        \"enum\": [\"true\", \"false\", \"mixed\"],\n        \"html\": true\n      },\n      \"aria-readonly\": {\n        \"enum\": [\"true\", \"false\"],\n        \"html\": true\n      },\n      \"aria-relevant\": {\n        \"enum\": [\"additions\", \"additions text\", \"all\", \"removals\", \"text\"],\n        \"html\": true\n      },\n      \"aria-required\": {\n        \"enum\": [\"true\", \"false\"],\n        \"html\": true\n      },\n      \"aria-roledescription\": {\n        \"html\": true\n      },\n      \"aria-rowcount\": {\n        \"type\": \"number\",\n        \"html\": true\n      },\n      \"aria-rowindex\": {\n        \"type\": \"number\",\n        \"html\": true\n      },\n      \"aria-rowspan\": {\n        \"type\": \"number\",\n        \"html\": true\n      },\n      \"aria-selected\": {\n        \"enum\": [\"true\", \"false\"],\n        \"html\": true\n      },\n      \"aria-setsize\": {\n        \"type\": \"number\",\n        \"html\": true\n      },\n      \"aria-sort\": {\n        \"enum\": [\"ascending\", \"descending\", \"none\"],\n        \"html\": true\n      },\n      \"aria-valuemax\": {\n        \"type\": \"number\",\n        \"html\": true\n      },\n      \"aria-valuemin\": {\n        \"type\": \"number\",\n        \"html\": true\n      },\n      \"aria-valuenow\": {\n        \"type\": \"number\",\n        \"html\": true\n      },\n      \"aria-valuetext\": {\n        \"html\": true\n      },\n      \"onabort\": {\n        \"html\": true\n      },\n      \"onblur\": {\n        \"html\": true\n      },\n      \"oncanplay\": {\n        \"html\": true\n      },\n      \"oncanplaythrough\": {\n        \"html\": true\n      },\n      \"onchange\": {\n        \"html\": true\n      },\n      \"onclick\": {\n        \"html\": true\n      },\n      \"oncontextmenu\": {\n        \"html\": true\n      },\n      \"oncuechange\": {\n        \"html\": true\n      },\n      \"ondblclick\": {\n        \"html\": true\n      },\n      \"ondrag\": {\n        \"html\": true\n      },\n      \"ondragend\": {\n        \"html\": true\n      },\n      \"ondragenter\": {\n        \"html\": true\n      },\n      \"ondragleave\": {\n        \"html\": true\n      },\n      \"ondragover\": {\n        \"html\": true\n      },\n      \"ondragstart\": {\n        \"html\": true\n      },\n      \"ondrop\": {\n        \"html\": true\n      },\n      \"ondurationchange\": {\n        \"html\": true\n      },\n      \"onemptied\": {\n        \"html\": true\n      },\n      \"onended\": {\n        \"html\": true\n      },\n      \"onerror\": {\n        \"html\": true\n      },\n      \"onfocus\": {\n        \"html\": true\n      },\n      \"oninput\": {\n        \"html\": true\n      },\n      \"oninvalid\": {\n        \"html\": true\n      },\n      \"onkeydown\": {\n        \"html\": true\n      },\n      \"onkeypress\": {\n        \"html\": true\n      },\n      \"onkeyup\": {\n        \"html\": true\n      },\n      \"onload\": {\n        \"html\": true\n      },\n      \"onloadeddata\": {\n        \"html\": true\n      },\n      \"onloadedmetadata\": {\n        \"html\": true\n      },\n      \"onloadstart\": {\n        \"html\": true\n      },\n      \"onmousedown\": {\n        \"html\": true\n      },\n      \"onmousemove\": {\n        \"html\": true\n      },\n      \"onmouseout\": {\n        \"html\": true\n      },\n      \"onmouseover\": {\n        \"html\": true\n      },\n      \"onmouseup\": {\n        \"html\": true\n      },\n      \"onmousewheel\": {\n        \"html\": true\n      },\n      \"onpause\": {\n        \"html\": true\n      },\n      \"onplay\": {\n        \"html\": true\n      },\n      \"onplaying\": {\n        \"html\": true\n      },\n      \"onprogress\": {\n        \"html\": true\n      },\n      \"onratechange\": {\n        \"html\": true\n      },\n      \"onreadystatechange\": {\n        \"html\": true\n      },\n      \"onreset\": {\n        \"html\": true\n      },\n      \"onscroll\": {\n        \"html\": true\n      },\n      \"onseeked\": {\n        \"html\": true\n      },\n      \"onseeking\": {\n        \"html\": true\n      },\n      \"onselect\": {\n        \"html\": true\n      },\n      \"onshow\": {\n        \"html\": true\n      },\n      \"onstalled\": {\n        \"html\": true\n      },\n      \"onsubmit\": {\n        \"html\": true\n      },\n      \"onsuspend\": {\n        \"html\": true\n      },\n      \"ontimeupdate\": {\n        \"html\": true\n      },\n      \"onvolumechange\": {\n        \"html\": true\n      },\n      \"onwaiting\": {\n        \"html\": true\n      }\n    }\n  },\n  \"attributes\": {\n    \"html-accept\": {\n      \"enum\": [\n        \"audio/*\",\n        \"image/*\",\n        \"video/*\",\n        \".html, text/html\",\n        \".txt, text/plain\",\n        \".doc, .docx, application/msword\",\n        \".xls, .xlsx, application/msexcel\",\n        \".pdf, application/postscript\",\n        \".zip, application/x-zip-compressed\",\n        \".pdf, application/pdf\",\n        \".rtf, application/rtf\",\n        \".mov, video/quicktime\",\n        \".mp4, video/mp4, video/x-m4v\",\n        \".avi, video/x-msvideo\",\n        \".mp3, audio/mpeg, audio/mp3\",\n        \".wav, audio/x-wav\",\n        \".aiff, audio/x-aiff\",\n        \".png, image/png\",\n        \".jpg, .jpeg, image/jpeg\",\n        \".tif, .tiff, image/tiff\",\n        \".gif, image/gif\"\n      ],\n      \"html\": true,\n      \"name\": \"accept\"\n    },\n    \"html-accept-charset\": {\n      \"enum\": [\"utf-8\"],\n      \"html\": true,\n      \"name\": \"accept-charset\"\n    },\n    \"html-action\": {\n      \"html\": true,\n      \"name\": \"action\"\n    },\n    \"html-allow\": {\n      \"html\": true,\n      \"name\": \"allow\"\n    },\n    \"html-alt\": {\n      \"html\": true,\n      \"name\": \"alt\"\n    },\n    \"html-as\": {\n      \"enum\": [\n        \"audio\",\n        \"document\",\n        \"embed\",\n        \"fetch\",\n        \"font\",\n        \"image\",\n        \"object\",\n        \"script\",\n        \"style\",\n        \"track\",\n        \"video\",\n        \"worker\"\n      ],\n      \"html\": true,\n      \"name\": \"as\"\n    },\n    \"html-async\": {\n      \"type\": \"flag\",\n      \"html\": true,\n      \"name\": \"async\"\n    },\n    \"html-autocomplete\": {\n      \"enum\": [\n        \"off\",\n        \"on\",\n        \"name\",\n        \"honorific-prefix\",\n        \"given-name\",\n        \"additional-name\",\n        \"family-name\",\n        \"honorific-suffix\",\n        \"nickname\",\n        \"email\",\n        \"username\",\n        \"new-password\",\n        \"current-password\",\n        \"one-time-code\",\n        \"organization-title\",\n        \"organization\",\n        \"street-address\",\n        \"address-line1\",\n        \"address-line2\",\n        \"address-line3\",\n        \"address-level1\",\n        \"address-level2\",\n        \"address-level3\",\n        \"address-level4\",\n        \"country\",\n        \"country-name\",\n        \"postal-code\",\n        \"cc-name\",\n        \"cc-given-name\",\n        \"cc-additional-name\",\n        \"cc-family-name\",\n        \"cc-number\",\n        \"cc-exp\",\n        \"cc-exp-month\",\n        \"cc-exp-year\",\n        \"cc-csc\",\n        \"cc-type\",\n        \"transaction-currency\",\n        \"transaction-amount\",\n        \"language\",\n        \"bday\",\n        \"bday-day\",\n        \"bday-month\",\n        \"bday-year\",\n        \"sex\",\n        \"tel\",\n        \"tel-country-code\",\n        \"tel-national\",\n        \"tel-area-code\",\n        \"tel-local\",\n        \"tel-extension\",\n        \"impp\",\n        \"url\",\n        \"photo\"\n      ],\n      \"html\": true,\n      \"name\": \"autocomplete\"\n    },\n    \"html-autofocus\": {\n      \"type\": \"flag\",\n      \"html\": true,\n      \"name\": \"autofocus\"\n    },\n    \"html-autoplay\": {\n      \"type\": \"flag\",\n      \"html\": true,\n      \"name\": \"autoplay\"\n    },\n    \"html-capture\": {\n      \"enum\": [\"\", \"user\", \"environment\"],\n      \"html\": true,\n      \"name\": \"capture\",\n      \"autocomplete\": {\n        \"descriptionMoreURL\": \"https://www.w3.org/TR/html-media-capture/#the-capture-attribute\"\n      }\n    },\n    \"html-charset\": {\n      \"enum\": [\"utf-8\", \"shift-jis\", \"euc-jp\", \"big5\"],\n      \"html\": true,\n      \"name\": \"charset\"\n    },\n    \"html-checked\": {\n      \"type\": \"flag\",\n      \"html\": true,\n      \"name\": \"checked\"\n    },\n    \"html-cite\": {\n      \"html\": true,\n      \"name\": \"cite\"\n    },\n    \"html-cols\": {\n      \"type\": \"number\",\n      \"html\": true,\n      \"name\": \"cols\"\n    },\n    \"html-colspan\": {\n      \"type\": \"number\",\n      \"html\": true,\n      \"name\": \"colspan\"\n    },\n    \"html-content\": {\n      \"html\": true,\n      \"name\": \"content\"\n    },\n    \"html-controls\": {\n      \"type\": \"flag\",\n      \"html\": true,\n      \"name\": \"controls\"\n    },\n    \"html-controlslist\": {\n      \"enum\": [\"nodownload\", \"nofullscreen\", \"noremoteplayback\"],\n      \"html\": true,\n      \"name\": \"controlslist\"\n    },\n    \"html-coords\": {\n      \"html\": true,\n      \"name\": \"coords\"\n    },\n    \"html-crossorigin\": {\n      \"enum\": [\"anonymous\", \"use-credentials\"],\n      \"html\": true,\n      \"name\": \"crossorigin\"\n    },\n    \"html-csp\": {\n      \"html\": true,\n      \"name\": \"csp\"\n    },\n    \"html-data\": {\n      \"html\": true,\n      \"name\": \"data\"\n    },\n    \"html-data-*\": {\n      \"html\": true,\n      \"name\": \"data-*\"\n    },\n    \"html-datetime\": {\n      \"html\": true,\n      \"name\": \"datetime\"\n    },\n    \"html-decoding\": {\n      \"enum\": [\"sync\", \"async\"],\n      \"html\": true,\n      \"name\": \"decoding\"\n    },\n    \"html-default\": {\n      \"type\": \"flag\",\n      \"html\": true,\n      \"name\": \"default\"\n    },\n    \"html-defer\": {\n      \"type\": \"flag\",\n      \"html\": true,\n      \"name\": \"defer\"\n    },\n    \"html-dir\": {\n      \"enum\": [\"ltr\", \"rtl\", \"auto\"],\n      \"html\": true,\n      \"name\": \"dir\"\n    },\n    \"html-dir-for-bdo\": {\n      \"enum\": [\"ltr\", \"rtl\"],\n      \"html\": true,\n      \"name\": \"dir\"\n    },\n    \"html-dirname\": {\n      \"html\": true,\n      \"name\": \"dirname\"\n    },\n    \"html-disabled\": {\n      \"type\": \"flag\",\n      \"html\": true,\n      \"name\": \"disabled\"\n    },\n    \"html-disablepictureinpicture\": {\n      \"type\": \"flag\",\n      \"html\": true,\n      \"name\": \"disablepictureinpicture\"\n    },\n    \"html-disableremoteplayback\": {\n      \"type\": \"flag\",\n      \"html\": true,\n      \"name\": \"disableremoteplayback\"\n    },\n    \"html-download\": {\n      \"html\": true,\n      \"name\": \"download\"\n    },\n    \"html-enctype\": {\n      \"enum\": [\n        \"application/x-www-form-urlencoded\",\n        \"multipart/form-data\",\n        \"text/plain\"\n      ],\n      \"html\": true,\n      \"name\": \"enctype\"\n    },\n    \"html-for\": {\n      \"html\": true,\n      \"name\": \"for\"\n    },\n    \"html-form\": {\n      \"html\": true,\n      \"name\": \"form\"\n    },\n    \"html-formaction\": {\n      \"html\": true,\n      \"name\": \"formaction\"\n    },\n    \"html-formenctype\": {\n      \"enum\": [\n        \"application/x-www-form-urlencoded\",\n        \"multipart/form-data\",\n        \"text/plain\"\n      ],\n      \"html\": true,\n      \"name\": \"formenctype\"\n    },\n    \"html-formmethod\": {\n      \"enum\": [\"get\", \"post\", \"dialog\"],\n      \"html\": true,\n      \"name\": \"formmethod\"\n    },\n    \"html-formnovalidate\": {\n      \"type\": \"flag\",\n      \"html\": true,\n      \"name\": \"formnovalidate\"\n    },\n    \"html-formtarget\": {\n      \"enum\": [\"_blank\", \"_parent\", \"_self\", \"_top\"],\n      \"html\": true,\n      \"name\": \"formtarget\"\n    },\n    \"html-headers\": {\n      \"html\": true,\n      \"name\": \"headers\"\n    },\n    \"html-height\": {\n      \"type\": \"number\",\n      \"html\": true,\n      \"name\": \"height\"\n    },\n    \"html-high\": {\n      \"type\": \"number\",\n      \"html\": true,\n      \"name\": \"high\"\n    },\n    \"html-href\": {\n      \"html\": true,\n      \"name\": \"href\"\n    },\n    \"html-hreflang\": {\n      \"html\": true,\n      \"name\": \"hreflang\"\n    },\n    \"html-http-equiv\": {\n      \"enum\": [\"content-security-policy\", \"refresh\"],\n      \"html\": true,\n      \"name\": \"http-equiv\"\n    },\n    \"html-importance\": {\n      \"enum\": [\"low\", \"high\"],\n      \"html\": true,\n      \"name\": \"importance\"\n    },\n    \"html-integrity\": {\n      \"html\": true,\n      \"name\": \"integrity\"\n    },\n    \"html-intrinsicsize\": {\n      \"html\": true,\n      \"name\": \"intrinsicsize\"\n    },\n    \"html-ismap\": {\n      \"type\": \"flag\",\n      \"html\": true,\n      \"name\": \"ismap\"\n    },\n    \"html-kind\": {\n      \"enum\": [\"captions\", \"chapters\", \"descriptions\", \"metadata\", \"subtitles\"],\n      \"html\": true,\n      \"name\": \"kind\"\n    },\n    \"html-label\": {\n      \"html\": true,\n      \"name\": \"label\"\n    },\n    \"html-list\": {\n      \"html\": true,\n      \"name\": \"list\"\n    },\n    \"html-loop\": {\n      \"type\": \"flag\",\n      \"html\": true,\n      \"name\": \"loop\"\n    },\n    \"html-loading\": {\n      \"enum\": [\"lazy\", \"eager\"],\n      \"html\": true,\n      \"name\": \"loading\"\n    },\n    \"html-low\": {\n      \"type\": \"number\",\n      \"html\": true,\n      \"name\": \"low\"\n    },\n    \"html-max\": {\n      \"html\": true,\n      \"name\": \"max\"\n    },\n    \"html-maxlength\": {\n      \"type\": \"number\",\n      \"html\": true,\n      \"name\": \"maxlength\"\n    },\n    \"html-media\": {\n      \"enum\": [\n        \"screen\",\n        \"print\",\n        \"speech\",\n        \"all\",\n        \"width\",\n        \"min-width\",\n        \"max-width\",\n        \"height\",\n        \"min-height\",\n        \"max-height\",\n        \"orientation\",\n        \"aspect-ratio\",\n        \"min-aspect-ratio\",\n        \"max-aspect-ratio\",\n        \"color\",\n        \"min-color\",\n        \"max-color\",\n        \"color-index\",\n        \"min-color-index\",\n        \"max-color-index\",\n        \"color-gamut\",\n        \"monochrome\",\n        \"resolution\",\n        \"min-resolution\",\n        \"max-resolution\",\n        \"scan\",\n        \"grid\",\n        \"update\",\n        \"overflow-block\",\n        \"overflow-inline\"\n      ],\n      \"html\": true,\n      \"name\": \"media\"\n    },\n    \"html-method\": {\n      \"enum\": [\"get\", \"post\", \"dialog\"],\n      \"html\": true,\n      \"name\": \"method\"\n    },\n    \"html-min\": {\n      \"html\": true,\n      \"name\": \"min\"\n    },\n    \"html-multiple\": {\n      \"type\": \"flag\",\n      \"html\": true,\n      \"name\": \"multiple\"\n    },\n    \"html-muted\": {\n      \"type\": \"flag\",\n      \"html\": true,\n      \"name\": \"muted\"\n    },\n    \"html-name\": {\n      \"html\": true,\n      \"name\": \"name\"\n    },\n    \"html-nonce\": {\n      \"html\": true,\n      \"name\": \"nonce\"\n    },\n    \"html-nomodule\": {\n      \"type\": \"flag\",\n      \"html\": true,\n      \"name\": \"novalidate\"\n    },\n    \"html-novalidate\": {\n      \"type\": \"flag\",\n      \"html\": true,\n      \"name\": \"novalidate\"\n    },\n    \"html-open\": {\n      \"type\": \"flag\",\n      \"html\": true,\n      \"name\": \"open\"\n    },\n    \"html-optimum\": {\n      \"type\": \"number\",\n      \"html\": true,\n      \"name\": \"optimum\"\n    },\n    \"html-pattern\": {\n      \"html\": true,\n      \"name\": \"pattern\"\n    },\n    \"html-ping\": {\n      \"html\": true,\n      \"name\": \"ping\"\n    },\n    \"html-placeholder\": {\n      \"html\": true,\n      \"name\": \"placeholder\"\n    },\n    \"html-playsinline\": {\n      \"type\": \"flag\",\n      \"html\": true,\n      \"name\": \"playsinline\"\n    },\n    \"html-poster\": {\n      \"html\": true,\n      \"name\": \"poster\"\n    },\n    \"html-preload\": {\n      \"enum\": [\"\", \"auto\", \"metadata\", \"none\"],\n      \"html\": true,\n      \"name\": \"preload\"\n    },\n    \"html-referrerpolicy\": {\n      \"enum\": [\n        \"no-referrer\",\n        \"no-referrer-when-downgrade\",\n        \"origin\",\n        \"origin-when-cross-origin\",\n        \"strict-origin-when-cross-origin\",\n        \"unsafe-url\"\n      ],\n      \"html\": true,\n      \"name\": \"referrerpolicy\"\n    },\n    \"html-rel\": {\n      \"enum\": [\n        \"apple-touch-icon\",\n        \"alternate\",\n        \"author\",\n        \"bookmark\",\n        \"canonical\",\n        \"dns-prefetch\",\n        \"external\",\n        \"help\",\n        \"icon\",\n        \"license\",\n        \"manifest\",\n        \"mask-icon\",\n        \"me\",\n        \"modulepreload\",\n        \"next\",\n        \"nofollow\",\n        \"noopener\",\n        \"noreferrer\",\n        \"opener\",\n        \"preconnect\",\n        \"prefetch\",\n        \"preload\",\n        \"prerender\",\n        \"prev\",\n        \"search\",\n        \"stylesheet\",\n        \"tag\",\n        \"webmention\"\n      ],\n      \"html\": true,\n      \"name\": \"rel\"\n    },\n    \"html-readonly\": {\n      \"type\": \"flag\",\n      \"html\": true,\n      \"name\": \"readonly\"\n    },\n    \"html-required\": {\n      \"type\": \"flag\",\n      \"html\": true,\n      \"name\": \"required\"\n    },\n    \"html-reversed\": {\n      \"type\": \"flag\",\n      \"html\": true,\n      \"name\": \"reversed\"\n    },\n    \"html-rows\": {\n      \"html\": true,\n      \"name\": \"rows\"\n    },\n    \"html-rowspan\": {\n      \"html\": true,\n      \"name\": \"rowspan\"\n    },\n    \"html-sandbox\": {\n      \"enum\": [\n        \"allow-downloads-without-user-activation\",\n        \"allow-forms\",\n        \"allow-modals\",\n        \"allow-orientation-lock\",\n        \"allow-pointer-lock\",\n        \"allow-popups\",\n        \"allow-popups-to-escape-sandbox\",\n        \"allow-presentation\",\n        \"allow-same-origin\",\n        \"allow-scripts\",\n        \"allow-storage-access-by-user-activation\",\n        \"allow-top-navigation\",\n        \"allow-top-navigation-by-user-activation\"\n      ],\n      \"html\": true,\n      \"name\": \"sandbox\"\n    },\n    \"html-selected\": {\n      \"type\": \"flag\",\n      \"html\": true,\n      \"name\": \"selected\"\n    },\n    \"html-scope\": {\n      \"enum\": [\"col\", \"colgroup\", \"row\", \"rowgroup\"],\n      \"html\": true,\n      \"name\": \"scope\"\n    },\n    \"html-shape\": {\n      \"enum\": [\"circle\", \"default\", \"poly\", \"rect\"],\n      \"html\": true,\n      \"name\": \"shape\"\n    },\n    \"html-size\": {\n      \"type\": \"number\",\n      \"html\": true,\n      \"name\": \"size\"\n    },\n    \"html-sizes\": {\n      \"enum\": [\"any\"],\n      \"html\": true,\n      \"name\": \"sizes\"\n    },\n    \"html-span\": {\n      \"type\": \"number\",\n      \"html\": true,\n      \"name\": \"span\"\n    },\n    \"html-src\": {\n      \"html\": true,\n      \"name\": \"src\"\n    },\n    \"html-srcdoc\": {\n      \"html\": true,\n      \"name\": \"srcdoc\"\n    },\n    \"html-srclang\": {\n      \"html\": true,\n      \"name\": \"srclang\"\n    },\n    \"html-srcset\": {\n      \"html\": true,\n      \"name\": \"srcset\"\n    },\n    \"html-start\": {\n      \"html\": true,\n      \"name\": \"start\"\n    },\n    \"html-step\": {\n      \"html\": true,\n      \"name\": \"step\"\n    },\n    \"html-target\": {\n      \"enum\": [\"_blank\", \"_parent\", \"_self\", \"_top\"],\n      \"html\": true,\n      \"name\": \"target\"\n    },\n    \"html-type\": {\n      \"html\": true,\n      \"name\": \"type\"\n    },\n    \"html-usemap\": {\n      \"html\": true,\n      \"name\": \"usemap\"\n    },\n    \"html-value\": {\n      \"html\": true,\n      \"name\": \"value\"\n    },\n    \"html-width\": {\n      \"type\": \"number\",\n      \"html\": true,\n      \"name\": \"width\"\n    },\n    \"html-wrap\": {\n      \"enum\": [\"hard\", \"soft\"],\n      \"html\": true,\n      \"name\": \"wrap\"\n    }\n  },\n  \"<dialog>\": {\n    \"@open\": \"#html-open\",\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<main>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<var>\": {\n    \"html\": true,\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<data>\": {\n    \"html\": true,\n    \"autocomplete\": [\n      {},\n      {\n        \"snippet\": \"data value=\\\"$1\\\"\"\n      }\n    ],\n    \"attribute-groups\": [\"html-attributes\"]\n  },\n  \"<template>\": {\n    \"html\": true,\n    \"autocomplete\": [\n      {\n        \"snippet\": \"template id=\\\"$1\\\"\"\n      }\n    ],\n    \"attribute-groups\": [\"html-attributes\"]\n  }\n}\n"
  },
  {
    "path": "packages/compiler/src/taglib/marko-math.json",
    "content": "{\n  \"taglib-id\": \"marko-math\",\n  \"<math>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<maction>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<maligngroup>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<malignmark>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<menclose>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<merror>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<mfenced>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<mfrac>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<mglyph>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<mi>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<mlabeledtr>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<mlongdiv>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<mmultiscripts>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<mn>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<mo>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<mover>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<mpadded>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<mphantom>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<mroot>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<mrow>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<ms>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<mscarries>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<mscarry>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<msgroup>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<mstack>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<msline>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<mspace>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<msqrt>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<msrow>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<mstyle>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<msub>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<msup>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<msubsup>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<mtable>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<mtd>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<mtext>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<mtr>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<munder>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<munderover>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<semantics>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<mprescripts>\": { \"html\": true, \"htmlType\": \"math\" },\n  \"<none>\": { \"html\": true, \"htmlType\": \"math\" }\n}\n"
  },
  {
    "path": "packages/compiler/src/taglib/marko-svg.json",
    "content": "{\n  \"taglib-id\": \"marko-svg\",\n  \"<animate>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<animateColor>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<animateMotion>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<animateTransform>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<circle>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<clipPath>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<defs>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<desc>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<ellipse>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<feBlend>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<feColorMatrix>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<feComponentTransfer>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<feComposite>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<feConvolveMatrix>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<feDiffuseLighting>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<feDisplacementMap>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<feDistantLight>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<feFlood>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<feFuncA>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<feFuncB>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<feFuncG>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<feFuncR>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<feGaussianBlur>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<feImage>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<feMerge>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<feMergeNode>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<feMorphology>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<feOffset>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<fePointLight>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<feSpecularLighting>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<feSpotLight>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<feTile>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<feTurbulence>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<filter>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<foreignObject>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<g>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<image>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<line>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<linearGradient>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<marker>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<mask>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<metadata>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<mpath>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<path>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<pattern>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<polygon>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<polyline>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<radialGradient>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<rect>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<set>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<stop>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<svg>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<switch>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<symbol>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<text>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<textPath>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<tspan>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<use>\": { \"html\": true, \"htmlType\": \"svg\" },\n  \"<view>\": { \"html\": true, \"htmlType\": \"svg\" }\n}\n"
  },
  {
    "path": "packages/compiler/src/util/build-code-frame.js",
    "content": "import { codeFrameColumns } from \"@marko/compiler/internal/babel\";\nimport { cwd } from \"@marko/compiler/modules\";\nimport color from \"kleur\";\nimport path from \"path\";\n\nimport { stripAnsi } from \"./strip-ansi\";\nconst indent = \"    \";\n\nclass CompileError extends Error {\n  constructor(filename, code, loc, label) {\n    const prettyMessage = buildMessage(code, loc, label);\n    const prettyFileName = buildFileName(filename, loc);\n    const message = loc\n      ? `\\n${indent}at ${prettyFileName}\\n${prettyMessage.replace(\n          /^/gm,\n          indent,\n        )}`\n      : `${prettyMessage}\\n${indent}at ${prettyFileName}`;\n    const { stackTraceLimit } = Error;\n    Error.stackTraceLimit = loc ? 0 : 3;\n    super(message);\n    Error.captureStackTrace?.(this, buildCodeFrameError);\n    this.name = \"CompileError\";\n    Error.stackTraceLimit = stackTraceLimit;\n    Object.defineProperties(this, {\n      loc: {\n        value: loc,\n        enumerable: false,\n        writable: true,\n        configurable: true,\n      },\n      label: {\n        value: label,\n        enumerable: false,\n        writable: true,\n        configurable: true,\n      },\n      frame: {\n        value: prettyMessage,\n        enumerable: false,\n        writable: true,\n        configurable: true,\n      },\n      // Ignore some mutations from Babel.\n      code: {\n        enumerable: false,\n        configurable: true,\n        get: noop,\n        set: noop,\n      },\n      message: {\n        enumerable: true,\n        configurable: true,\n        get() {\n          return message;\n        },\n        set() {\n          Object.defineProperty(this, \"message\", {\n            value: message,\n            enumerable: true,\n            writable: true,\n            configurable: true,\n          });\n        },\n      },\n    });\n  }\n\n  toJSON() {\n    return this.toString();\n  }\n\n  toString() {\n    return `${this.name}: ${stripAnsi(this.message)}`;\n  }\n}\n\nexport function buildCodeFrameError(filename, code, loc, label) {\n  return new CompileError(filename, code, loc, label);\n}\n\nfunction buildMessage(code, loc, message) {\n  return loc\n    ? codeFrameColumns(\n        code,\n        {\n          start: {\n            line: loc.start.line,\n            column: loc.start.column + 1,\n          },\n          end:\n            loc.end && loc.start.line === loc.end.line\n              ? {\n                  line: loc.end.line,\n                  column: loc.end.column + 1,\n                }\n              : undefined,\n        },\n        { highlightCode: true, message },\n      )\n    : message;\n}\n\nfunction buildFileName(filename, loc) {\n  return `${color.cyan(path.relative(cwd, filename))}${\n    loc\n      ? `:${color.yellow(loc.start.line)}:${color.yellow(loc.start.column + 1)}`\n      : \"\"\n  }`;\n}\n\nfunction noop() {}\n"
  },
  {
    "path": "packages/compiler/src/util/merge-errors.js",
    "content": "import { stripAnsi } from \"./strip-ansi\";\n\nconst indent = \"    \";\nconst compileErrorPrefix = `CompileError: \\n`;\nconst compileErrorStackTracePrefix = `${compileErrorPrefix + indent}at `;\nexport default function throwAggregateError(errors) {\n  switch (errors.length) {\n    case 0:\n      return;\n    case 1:\n      throw errors[0];\n  }\n\n  throw new CompileErrors(errors);\n}\n\nclass CompileErrors extends Error {\n  constructor(errors) {\n    const message = `\\n${errors\n      .map(({ stack }) => {\n        if (stack.startsWith(compileErrorStackTracePrefix)) {\n          return stack.slice(compileErrorPrefix.length);\n        }\n        return stack.replace(/^(?!\\s*$)/gm, \"    \");\n      })\n      .join(\"\\n\\n\")}`;\n    const { stackTraceLimit } = Error;\n    Error.stackTraceLimit = 0;\n    super(message);\n    this.name = \"CompileErrors\";\n    this.errors = errors;\n    Error.stackTraceLimit = stackTraceLimit;\n  }\n\n  toJSON() {\n    return this.toString();\n  }\n\n  toString() {\n    return `${this.name}: ${stripAnsi(this.message)}`;\n  }\n}\n"
  },
  {
    "path": "packages/compiler/src/util/quick-hash.js",
    "content": "/**\n * Outputs a noncryptographic hash as a safe integer (<= Number.MAX_SAFE_INTEGER).\n */\nexport class Hash {\n  a = 0xdeadbeef;\n  b = 0x9e3779b9;\n\n  update(s) {\n    let a = this.a;\n    let b = this.b;\n    for (let i = s.length; i--; ) {\n      a = Math.imul(a ^ s.charCodeAt(i), 0x85ebca6b);\n      a = (a << 13) | (a >>> 19);\n      b = Math.imul(b ^ a, 0xc2b2ae35);\n      b = (b << 17) | (b >>> 15);\n      a ^= b >>> 11;\n      b ^= a >>> 7;\n    }\n\n    this.a = a;\n    this.b = b;\n    return this;\n  }\n\n  digest() {\n    let a = this.a;\n    let b = this.b;\n    a = Math.imul(a ^ b, 0x27d4eb2f);\n    a ^= a >>> 16;\n    b = Math.imul(b ^ a, 0x165667b1);\n    b ^= b >>> 15;\n    a = Math.imul(a ^ (b >>> 13), 0x5bd1e995);\n    return (b & 0x1fffff) * 0x100000000 + a;\n  }\n}\n"
  },
  {
    "path": "packages/compiler/src/util/should-optimize.js",
    "content": "export default function shouldOptimize() {\n  return process.env.MARKO_DEBUG\n    ? process.env.MARKO_DEBUG === \"false\" || process.env.MARKO_DEBUG === \"0\"\n    : process.env.NODE_ENV && process.env.NODE_ENV !== \"development\";\n}\n"
  },
  {
    "path": "packages/compiler/src/util/strip-ansi.js",
    "content": "const ansiReg =\n  // eslint-disable-next-line no-control-regex\n  /([\\u001b\\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><])/g;\n\nexport function stripAnsi(str) {\n  return str.replace(ansiReg, \"\");\n}\n"
  },
  {
    "path": "packages/compiler/src/util/try-load-translator.js",
    "content": "import markoModules from \"@marko/compiler/modules\";\n\nimport config from \"../config\";\nconst cache = {};\n\nexport default function (requested = config.translator) {\n  if (typeof requested === \"string\") {\n    return (\n      cache[requested] ||\n      (cache[requested] = markoModules.require(markoModules.resolve(requested)))\n    );\n  }\n\n  return requested;\n}\n"
  },
  {
    "path": "packages/runtime-class/CHANGELOG.md",
    "content": "# Change Log\n\n## 5.38.33\n\n### Patch Changes\n\n- [#3135](https://github.com/marko-js/marko/pull/3135) [`ae034a5`](https://github.com/marko-js/marko/commit/ae034a5e45843cadb4dded01d8322cff14b5887e) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issues with incorrect intersection offset encoding in production builds.\n\n- Updated dependencies [[`ae034a5`](https://github.com/marko-js/marko/commit/ae034a5e45843cadb4dded01d8322cff14b5887e), [`ae034a5`](https://github.com/marko-js/marko/commit/ae034a5e45843cadb4dded01d8322cff14b5887e)]:\n  - @marko/runtime-tags@6.0.159\n\n## 5.38.32\n\n### Patch Changes\n\n- [#3133](https://github.com/marko-js/marko/pull/3133) [`1ca1a71`](https://github.com/marko-js/marko/commit/1ca1a71d0f07c2e9e233899c4677005026873942) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add validations around tags api attribute names.\n\n- Updated dependencies [[`1ca1a71`](https://github.com/marko-js/marko/commit/1ca1a71d0f07c2e9e233899c4677005026873942)]:\n  - @marko/runtime-tags@6.0.158\n  - @marko/compiler@5.39.62\n\n## 5.38.31\n\n### Patch Changes\n\n- [#3125](https://github.com/marko-js/marko/pull/3125) [`1ee9ec8`](https://github.com/marko-js/marko/commit/1ee9ec8163a5e5e97ce6f64134c43450495bd14d) Thanks [@rturnq](https://github.com/rturnq)! - Add runtime guard in debug when reading tag variable in own body\n\n- [#3130](https://github.com/marko-js/marko/pull/3130) [`2dc2152`](https://github.com/marko-js/marko/commit/2dc21520fbd1029c55c7e6c8c4f1a641d5cb8b90) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Support bound attribute modifiers as a way to cast change handler values.\n\n- Updated dependencies [[`1ee9ec8`](https://github.com/marko-js/marko/commit/1ee9ec8163a5e5e97ce6f64134c43450495bd14d), [`2dc2152`](https://github.com/marko-js/marko/commit/2dc21520fbd1029c55c7e6c8c4f1a641d5cb8b90)]:\n  - @marko/runtime-tags@6.0.157\n  - @marko/compiler@5.39.61\n\n## 5.38.30\n\n### Patch Changes\n\n- [#3121](https://github.com/marko-js/marko/pull/3121) [`22b2ecc`](https://github.com/marko-js/marko/commit/22b2ecce8e76e781485304d936d8aaf051f18fa0) Thanks [@copilot-swe-agent](https://github.com/apps/copilot-swe-agent)! - Add `webkitdirectory` boolean attribute to the `HTML.Input` type definitions\n\n- [#3124](https://github.com/marko-js/marko/pull/3124) [`bc2e7f2`](https://github.com/marko-js/marko/commit/bc2e7f2bfb2c165b108f70153169601996663532) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve support for embedded copies of Marko (tags api). Now automatically generates a render ID, and cleans up upon removal.\n\n- Updated dependencies [[`22b2ecc`](https://github.com/marko-js/marko/commit/22b2ecce8e76e781485304d936d8aaf051f18fa0), [`bc2e7f2`](https://github.com/marko-js/marko/commit/bc2e7f2bfb2c165b108f70153169601996663532)]:\n  - @marko/runtime-tags@6.0.156\n\n## 5.38.29\n\n### Patch Changes\n\n- [#3119](https://github.com/marko-js/marko/pull/3119) [`109e423`](https://github.com/marko-js/marko/commit/109e4237b2ba12cc1db11f345614e62ab5d675e0) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where babel internal api was not correctly using package overrides when publishing.\n\n- Updated dependencies [[`1b0d6d4`](https://github.com/marko-js/marko/commit/1b0d6d457ab68ee1756a942305f6eea309020bca), [`109e423`](https://github.com/marko-js/marko/commit/109e4237b2ba12cc1db11f345614e62ab5d675e0)]:\n  - @marko/runtime-tags@6.0.155\n  - @marko/compiler@5.39.60\n\n## 5.38.28\n\n### Patch Changes\n\n- [#3117](https://github.com/marko-js/marko/pull/3117) [`e0419aa`](https://github.com/marko-js/marko/commit/e0419aaea01c9125fc5b67cfb51ed5fabb674dbb) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrades eslint which captured some unecessary variable initializations and assignments.\n\n- [#3118](https://github.com/marko-js/marko/pull/3118) [`1961089`](https://github.com/marko-js/marko/commit/1961089c02743978cc4887346ff293a160d5139a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid loading babel configs when babel is not installed locally.\n\n- Updated dependencies [[`e0419aa`](https://github.com/marko-js/marko/commit/e0419aaea01c9125fc5b67cfb51ed5fabb674dbb), [`cdd9c14`](https://github.com/marko-js/marko/commit/cdd9c1404e3795d67844e9ccccfe070ff8bde646), [`1961089`](https://github.com/marko-js/marko/commit/1961089c02743978cc4887346ff293a160d5139a)]:\n  - @marko/runtime-tags@6.0.154\n  - @marko/compiler@5.39.59\n\n## 5.38.27\n\n### Patch Changes\n\n- [#3110](https://github.com/marko-js/marko/pull/3110) [`900a3d5`](https://github.com/marko-js/marko/commit/900a3d54a97606fb8be1a4b7d90d03313d5d7643) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure types stripped before transform phase in compiler.\n\n- Updated dependencies [[`900a3d5`](https://github.com/marko-js/marko/commit/900a3d54a97606fb8be1a4b7d90d03313d5d7643)]:\n  - @marko/runtime-tags@6.0.152\n  - @marko/compiler@5.39.58\n\n## 5.38.26\n\n### Patch Changes\n\n- [#3108](https://github.com/marko-js/marko/pull/3108) [`97cf126`](https://github.com/marko-js/marko/commit/97cf126772fa4521f171d3d968b18a11c6e0028f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with translating concise mode tags api style tag.\n\n- [#3108](https://github.com/marko-js/marko/pull/3108) [`f1a93a7`](https://github.com/marko-js/marko/commit/f1a93a7f4a0230aa57cf62aea094db370e0a0fad) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrade htmljs-parser to fix a concise mode whitespace normalization issue.\n\n- Updated dependencies [[`97cf126`](https://github.com/marko-js/marko/commit/97cf126772fa4521f171d3d968b18a11c6e0028f), [`f1a93a7`](https://github.com/marko-js/marko/commit/f1a93a7f4a0230aa57cf62aea094db370e0a0fad)]:\n  - @marko/runtime-tags@6.0.151\n  - @marko/compiler@5.39.57\n\n## 5.38.25\n\n### Patch Changes\n\n- [#3096](https://github.com/marko-js/marko/pull/3096) [`3efe00f`](https://github.com/marko-js/marko/commit/3efe00f53244a3d9c2558e6926dcea601b9ff838) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Support `number` and `number[]` types for `select` and `checkedValue`.\n\n- [#3094](https://github.com/marko-js/marko/pull/3094) [`10613af`](https://github.com/marko-js/marko/commit/10613af90c4c5762ff3dca7f73b92849c480da9c) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue when multiple classes used in an inline optimized native tag class attribute.\n\n- [#3090](https://github.com/marko-js/marko/pull/3090) [`09a4092`](https://github.com/marko-js/marko/commit/09a4092bd6b0575debf34be21f6fdd5a5a37e213) Thanks [@LuLaValva](https://github.com/LuLaValva)! - improve autocomplete for string attributes\n\n- [#3097](https://github.com/marko-js/marko/pull/3097) [`f774948`](https://github.com/marko-js/marko/commit/f774948773e89c4f7e4564fa2eb1c0cc7569bbfa) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Revert a recent change to preserve parenthesized expressions in the compiler.\n  This caused a regression through some analysis which did not account for parenthesized expressions.\n\n- [#3096](https://github.com/marko-js/marko/pull/3096) [`3efe00f`](https://github.com/marko-js/marko/commit/3efe00f53244a3d9c2558e6926dcea601b9ff838) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Normalize controllable values following the same rules as DOM normalization before triggering change handlers.\n\n- Updated dependencies [[`3efe00f`](https://github.com/marko-js/marko/commit/3efe00f53244a3d9c2558e6926dcea601b9ff838), [`3efe00f`](https://github.com/marko-js/marko/commit/3efe00f53244a3d9c2558e6926dcea601b9ff838), [`7bbb9cf`](https://github.com/marko-js/marko/commit/7bbb9cf2c8ad591bffebec41536779fe71d68d14), [`10613af`](https://github.com/marko-js/marko/commit/10613af90c4c5762ff3dca7f73b92849c480da9c), [`09a4092`](https://github.com/marko-js/marko/commit/09a4092bd6b0575debf34be21f6fdd5a5a37e213), [`3efe00f`](https://github.com/marko-js/marko/commit/3efe00f53244a3d9c2558e6926dcea601b9ff838), [`f774948`](https://github.com/marko-js/marko/commit/f774948773e89c4f7e4564fa2eb1c0cc7569bbfa), [`3efe00f`](https://github.com/marko-js/marko/commit/3efe00f53244a3d9c2558e6926dcea601b9ff838)]:\n  - @marko/runtime-tags@6.0.146\n  - @marko/compiler@5.39.56\n\n## 5.38.24\n\n### Patch Changes\n\n- [#3085](https://github.com/marko-js/marko/pull/3085) [`69db62e`](https://github.com/marko-js/marko/commit/69db62ebf32038b2979d7dc629b7fc0b513fc97c) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Add dialog closedby type\n\n- Updated dependencies [[`69db62e`](https://github.com/marko-js/marko/commit/69db62ebf32038b2979d7dc629b7fc0b513fc97c)]:\n  - @marko/runtime-tags@6.0.145\n\n## 5.38.23\n\n### Patch Changes\n\n- [#3083](https://github.com/marko-js/marko/pull/3083) [`d24a959`](https://github.com/marko-js/marko/commit/d24a959a9546e129d7c449b726ea40655ff356d7) Thanks [@LuLaValva](https://github.com/LuLaValva)! - toJSON fix for implicit split components\n\n## 5.38.22\n\n### Patch Changes\n\n- [#3077](https://github.com/marko-js/marko/pull/3077) [`020dfd4`](https://github.com/marko-js/marko/commit/020dfd4bbb780aa83f2233097217d0cb27b3e26a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure browserslist is an optional dependency with bundled babel.\n\n- Updated dependencies [[`020dfd4`](https://github.com/marko-js/marko/commit/020dfd4bbb780aa83f2233097217d0cb27b3e26a)]:\n  - @marko/compiler@5.39.53\n  - @marko/runtime-tags@6.0.144\n\n## 5.38.21\n\n### Patch Changes\n\n- [#3073](https://github.com/marko-js/marko/pull/3073) [`1aabdc3`](https://github.com/marko-js/marko/commit/1aabdc30bb7fa3b82e76a5b4724f469133f14c85) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Remove direct dependency on babel, refactor to use internal copy.\n\n- Updated dependencies [[`1aabdc3`](https://github.com/marko-js/marko/commit/1aabdc30bb7fa3b82e76a5b4724f469133f14c85)]:\n  - @marko/runtime-tags@6.0.143\n  - @marko/compiler@5.39.51\n\n## 5.38.20\n\n### Patch Changes\n\n- [#3071](https://github.com/marko-js/marko/pull/3071) [`c5d31de`](https://github.com/marko-js/marko/commit/c5d31de1b55b26ffb746b7a03b01f2ce26ba0981) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix babel ast patching logic to work with latest babel.\n\n- Updated dependencies [[`c5d31de`](https://github.com/marko-js/marko/commit/c5d31de1b55b26ffb746b7a03b01f2ce26ba0981)]:\n  - @marko/runtime-tags@6.0.142\n  - @marko/compiler@5.39.50\n\n## 5.38.19\n\n### Patch Changes\n\n- [#3067](https://github.com/marko-js/marko/pull/3067) [`772c84d`](https://github.com/marko-js/marko/commit/772c84dc7562933536bab80d0e285866ccf72444) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with multiple native tag event handler aliases being passed to an element via a spread. Eg `<button ...input onClick() {...}>` where `input` contains `on-click` as a attribute.\n\n- [#3068](https://github.com/marko-js/marko/pull/3068) [`51c2a72`](https://github.com/marko-js/marko/commit/51c2a72ba63c4795299a1d737a9f56b4ad7c9ebb) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with known define tags with closures and no other interactivity in the define tag setup.\n\n- Updated dependencies [[`f0b39d0`](https://github.com/marko-js/marko/commit/f0b39d008c48ef2fa2862076143b1154af2f95b7), [`772c84d`](https://github.com/marko-js/marko/commit/772c84dc7562933536bab80d0e285866ccf72444), [`51c2a72`](https://github.com/marko-js/marko/commit/51c2a72ba63c4795299a1d737a9f56b4ad7c9ebb), [`12b1b33`](https://github.com/marko-js/marko/commit/12b1b336ff512c22697133ae744ef92283bbb240), [`620e483`](https://github.com/marko-js/marko/commit/620e483cdddab0bd69f2fc55bdf8eba9459b29e4)]:\n  - @marko/runtime-tags@6.0.141\n\n## 5.38.18\n\n### Patch Changes\n\n- [#3061](https://github.com/marko-js/marko/pull/3061) [`0134076`](https://github.com/marko-js/marko/commit/0134076c0e11173a5e9c377aefb0d9709a3a6415) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add ability for generated template ids to be overwritten via compiler config.\n\n- [#3062](https://github.com/marko-js/marko/pull/3062) [`9c2a6d9`](https://github.com/marko-js/marko/commit/9c2a6d905eaf04e6d080766832b48ee8b68d3107) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Align class api native tag types with tags api.\n\n- Updated dependencies [[`0134076`](https://github.com/marko-js/marko/commit/0134076c0e11173a5e9c377aefb0d9709a3a6415)]:\n  - @marko/compiler@5.39.49\n\n## 5.38.17\n\n### Patch Changes\n\n- [#3059](https://github.com/marko-js/marko/pull/3059) [`40d0b52`](https://github.com/marko-js/marko/commit/40d0b528a616fae251a99d70cb2df54aee08d94b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where serialize reason was not cleared across renders leading to over serialization.\n\n- Updated dependencies [[`40d0b52`](https://github.com/marko-js/marko/commit/40d0b528a616fae251a99d70cb2df54aee08d94b), [`40d0b52`](https://github.com/marko-js/marko/commit/40d0b528a616fae251a99d70cb2df54aee08d94b)]:\n  - @marko/runtime-tags@6.0.139\n\n## 5.38.16\n\n### Patch Changes\n\n- [#3057](https://github.com/marko-js/marko/pull/3057) [`8d77da5`](https://github.com/marko-js/marko/commit/8d77da552454518a69aa2f5720fe179883571b99) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Dynamic native tag compat fixes.\n\n- Updated dependencies [[`8d77da5`](https://github.com/marko-js/marko/commit/8d77da552454518a69aa2f5720fe179883571b99)]:\n  - @marko/runtime-tags@6.0.138\n\n## 5.38.15\n\n### Patch Changes\n\n- [#3055](https://github.com/marko-js/marko/pull/3055) [`f86e980`](https://github.com/marko-js/marko/commit/f86e980c6941a4e06136aa20d8bd2fe7a632611a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve await tag types.\n\n- Updated dependencies [[`f86e980`](https://github.com/marko-js/marko/commit/f86e980c6941a4e06136aa20d8bd2fe7a632611a)]:\n  - @marko/runtime-tags@6.0.137\n\n## 5.38.14\n\n### Patch Changes\n\n- [#3053](https://github.com/marko-js/marko/pull/3053) [`6df8ff8`](https://github.com/marko-js/marko/commit/6df8ff8d2f01f97cf5131a3c5a53d558ee325111) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix serializing nested destructures of a rest binding.\n\n- [#3052](https://github.com/marko-js/marko/pull/3052) [`f47a62e`](https://github.com/marko-js/marko/commit/f47a62e824edc683c0788fb3f24fcda4d569a5f5) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where assignments to tag variables which did not otherwise get a section were being incorrectly removed.\n\n- Updated dependencies [[`6df8ff8`](https://github.com/marko-js/marko/commit/6df8ff8d2f01f97cf5131a3c5a53d558ee325111), [`f47a62e`](https://github.com/marko-js/marko/commit/f47a62e824edc683c0788fb3f24fcda4d569a5f5)]:\n  - @marko/runtime-tags@6.0.136\n\n## 5.38.13\n\n### Patch Changes\n\n- [#3051](https://github.com/marko-js/marko/pull/3051) [`e31adc0`](https://github.com/marko-js/marko/commit/e31adc0511d856bf9bf506acf0d489767be29cbe) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix aliases in another section incorrectly causing a binding to be seen as declared / non nullable.\n\n- [#3049](https://github.com/marko-js/marko/pull/3049) [`255769d`](https://github.com/marko-js/marko/commit/255769d1023d3c468947228fc690fde82feb650e) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue assigning to unused binding.\n\n- Updated dependencies [[`e31adc0`](https://github.com/marko-js/marko/commit/e31adc0511d856bf9bf506acf0d489767be29cbe), [`255769d`](https://github.com/marko-js/marko/commit/255769d1023d3c468947228fc690fde82feb650e)]:\n  - @marko/runtime-tags@6.0.135\n\n## 5.38.12\n\n### Patch Changes\n\n- [#3048](https://github.com/marko-js/marko/pull/3048) [`e0acbe3`](https://github.com/marko-js/marko/commit/e0acbe36ee4e0c885077a837e58a69b855cd3a5e) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure canonical signal used for closure references.\n\n- Updated dependencies [[`22724da`](https://github.com/marko-js/marko/commit/22724da052a7ab921ca1995c3347adc48184e23e), [`e0acbe3`](https://github.com/marko-js/marko/commit/e0acbe36ee4e0c885077a837e58a69b855cd3a5e)]:\n  - @marko/runtime-tags@6.0.134\n\n## 5.38.11\n\n### Patch Changes\n\n- [#3044](https://github.com/marko-js/marko/pull/3044) [`2a43f7e`](https://github.com/marko-js/marko/commit/2a43f7e4147553779133a94c88f8c965fc8dd19f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve logic around building up analyzed watch files.\n\n- Updated dependencies [[`d581cd9`](https://github.com/marko-js/marko/commit/d581cd9ebb2705c62a658dfcb677fca5fffd3d1b), [`2a43f7e`](https://github.com/marko-js/marko/commit/2a43f7e4147553779133a94c88f8c965fc8dd19f), [`22326da`](https://github.com/marko-js/marko/commit/22326da0a2ef04199143b828272d677036aea74c)]:\n  - @marko/runtime-tags@6.0.133\n  - @marko/compiler@5.39.48\n\n## 5.38.10\n\n### Patch Changes\n\n- [#3030](https://github.com/marko-js/marko/pull/3030) [`4ec6b5c`](https://github.com/marko-js/marko/commit/4ec6b5c96a84e8b6fadfd6cd5381a229371509be) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure that compiling the hydrate output with lasso-marko and a lasso-page tag always initializes components.\n\n## 5.38.9\n\n### Patch Changes\n\n- [#3028](https://github.com/marko-js/marko/pull/3028) [`72a614d`](https://github.com/marko-js/marko/commit/72a614d9494f1b65060310b7abc0c54d1fd4767b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with var's inside scriptlets having incorrect scoping.\n\n- Updated dependencies [[`72a614d`](https://github.com/marko-js/marko/commit/72a614d9494f1b65060310b7abc0c54d1fd4767b)]:\n  - @marko/compiler@5.39.47\n\n## 5.38.8\n\n### Patch Changes\n\n- [#3017](https://github.com/marko-js/marko/pull/3017) [`4344a0c`](https://github.com/marko-js/marko/commit/4344a0c67df1955c6b3778e36cefbf1621fa2913) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve legacy renderer dependency scanning.\n\n## 5.38.7\n\n### Patch Changes\n\n- [#3015](https://github.com/marko-js/marko/pull/3015) [`c1f5de7`](https://github.com/marko-js/marko/commit/c1f5de7c0739b5d96a068e5ecc21a7f5140c2f35) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Support \"renderer\" templates in class/tags interop.\n\n- Updated dependencies [[`c1f5de7`](https://github.com/marko-js/marko/commit/c1f5de7c0739b5d96a068e5ecc21a7f5140c2f35)]:\n  - @marko/runtime-tags@6.0.126\n\n## 5.38.6\n\n### Patch Changes\n\n- [#3014](https://github.com/marko-js/marko/pull/3014) [`560d6a0`](https://github.com/marko-js/marko/commit/560d6a0bc9c78b3d584cc7199f5ab45ff679ff56) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix tags api runtime import from interop translator.\n\n- Updated dependencies [[`7ec9683`](https://github.com/marko-js/marko/commit/7ec9683b16a5206bfb8218e9512c5db1487bfb6f), [`19815e9`](https://github.com/marko-js/marko/commit/19815e95bc716cbf03e594f764efbe53221e3bdd), [`560d6a0`](https://github.com/marko-js/marko/commit/560d6a0bc9c78b3d584cc7199f5ab45ff679ff56)]:\n  - @marko/runtime-tags@6.0.125\n\n## 5.38.5\n\n### Patch Changes\n\n- [#3010](https://github.com/marko-js/marko/pull/3010) [`d293abe`](https://github.com/marko-js/marko/commit/d293abe8bff16440c624f955beb93f7398601be7) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure tags api runtime loaded when going through tags api compat layer.\n\n- Updated dependencies [[`d293abe`](https://github.com/marko-js/marko/commit/d293abe8bff16440c624f955beb93f7398601be7)]:\n  - @marko/runtime-tags@6.0.124\n\n## 5.38.4\n\n### Patch Changes\n\n- [#3007](https://github.com/marko-js/marko/pull/3007) [`3769e43`](https://github.com/marko-js/marko/commit/3769e43c4317c7a832f8f74a55f740b30f1005f1) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid interop feature checking attributes for \"rawOpenTag\" tags (style, import, etc).\n\n- [#3009](https://github.com/marko-js/marko/pull/3009) [`e7a0b33`](https://github.com/marko-js/marko/commit/e7a0b337adf505f8467ab302c0c9bf75e0f168f4) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Serialize input passed from tags api to class api component via the Marko 6 serializer.\n\n- Updated dependencies [[`3769e43`](https://github.com/marko-js/marko/commit/3769e43c4317c7a832f8f74a55f740b30f1005f1), [`e7a0b33`](https://github.com/marko-js/marko/commit/e7a0b337adf505f8467ab302c0c9bf75e0f168f4)]:\n  - @marko/runtime-tags@6.0.123\n\n## 5.38.3\n\n### Patch Changes\n\n- [#3005](https://github.com/marko-js/marko/pull/3005) [`afaefb6`](https://github.com/marko-js/marko/commit/afaefb6791acd3e9768793e7615908b25382b7fb) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix script tag types for class/tags interop.\n\n## 5.38.2\n\n### Patch Changes\n\n- [#3002](https://github.com/marko-js/marko/pull/3002) [`ced7b65`](https://github.com/marko-js/marko/commit/ced7b65aa95bbf77165e7b65389225d3ec4be8d8) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where tags api walk was being output even when class api hydrated no components in interop mode.\n\n## 5.38.1\n\n### Patch Changes\n\n- [#3001](https://github.com/marko-js/marko/pull/3001) [`792dd1d`](https://github.com/marko-js/marko/commit/792dd1d5d193554889f7ba6e734c1730b947cf2d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Expose Marko target api on compiled meta data.\n\n- [#2999](https://github.com/marko-js/marko/pull/2999) [`d2f437b`](https://github.com/marko-js/marko/commit/d2f437bf7118c3160a4f4c9cf977b8396d9fc8db) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add style block as tag api interop heuristic.\n\n- [#2999](https://github.com/marko-js/marko/pull/2999) [`d2f437b`](https://github.com/marko-js/marko/commit/d2f437bf7118c3160a4f4c9cf977b8396d9fc8db) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add support for \"use class\" comment to opt into to class api when exclusive `tags` folders prefer tags api.\n\n- [#2999](https://github.com/marko-js/marko/pull/2999) [`d2f437b`](https://github.com/marko-js/marko/commit/d2f437bf7118c3160a4f4c9cf977b8396d9fc8db) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add exclusive `tags` folder discovery as a \"prefer tags api\" heuristic in interop mode.\n\n- Updated dependencies [[`792dd1d`](https://github.com/marko-js/marko/commit/792dd1d5d193554889f7ba6e734c1730b947cf2d), [`d2f437b`](https://github.com/marko-js/marko/commit/d2f437bf7118c3160a4f4c9cf977b8396d9fc8db), [`d2f437b`](https://github.com/marko-js/marko/commit/d2f437bf7118c3160a4f4c9cf977b8396d9fc8db), [`d2f437b`](https://github.com/marko-js/marko/commit/d2f437bf7118c3160a4f4c9cf977b8396d9fc8db)]:\n  - @marko/runtime-tags@6.0.122\n  - @marko/compiler@5.39.45\n\n## 5.38.0\n\n### Minor Changes\n\n- [#2994](https://github.com/marko-js/marko/pull/2994) [`1bf2788`](https://github.com/marko-js/marko/commit/1bf2788042fd3e6928303c5782909612a59c5206) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add support for client and server statements in v5.\n\n### Patch Changes\n\n- [#2996](https://github.com/marko-js/marko/pull/2996) [`1a65ff3`](https://github.com/marko-js/marko/commit/1a65ff3f4ed31b1e3fab37328962950db28a68e6) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Move strip types logic to be after transform phase.\n\n- [#2996](https://github.com/marko-js/marko/pull/2996) [`2a23dec`](https://github.com/marko-js/marko/commit/2a23decc64b3dbfea024241b1301dba7f6d69679) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Run parse hooks after the main parse phase is complete.\n\n- Updated dependencies [[`1a65ff3`](https://github.com/marko-js/marko/commit/1a65ff3f4ed31b1e3fab37328962950db28a68e6), [`1bf2788`](https://github.com/marko-js/marko/commit/1bf2788042fd3e6928303c5782909612a59c5206), [`2a23dec`](https://github.com/marko-js/marko/commit/2a23decc64b3dbfea024241b1301dba7f6d69679)]:\n  - @marko/compiler@5.39.44\n\n## 5.37.63\n\n### Patch Changes\n\n- [#2983](https://github.com/marko-js/marko/pull/2983) [`fdc46fb`](https://github.com/marko-js/marko/commit/fdc46fb3e762595a43fd1fa2f714af7f8819d341) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Move body tag transform logic into translate.\n\n- [#2980](https://github.com/marko-js/marko/pull/2980) [`f9cf89f`](https://github.com/marko-js/marko/commit/f9cf89f37d16b1182d609e52be2519cd452cae5f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix types for html-\\* tags.\n\n- [#2978](https://github.com/marko-js/marko/pull/2978) [`55fd324`](https://github.com/marko-js/marko/commit/55fd324c3f4ea00535856c7719f8b4c46f55de40) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Update compiler to avoid mutating translator visitors.\n\n- [#2983](https://github.com/marko-js/marko/pull/2983) [`fdc46fb`](https://github.com/marko-js/marko/commit/fdc46fb3e762595a43fd1fa2f714af7f8819d341) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Normalize taglib ids to be consistent with register ids and across Marko 5/6.\n\n- [#2983](https://github.com/marko-js/marko/pull/2983) [`fdc46fb`](https://github.com/marko-js/marko/commit/fdc46fb3e762595a43fd1fa2f714af7f8819d341) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Merge migrate taglib into core taglib.\n\n- Updated dependencies [[`fdc46fb`](https://github.com/marko-js/marko/commit/fdc46fb3e762595a43fd1fa2f714af7f8819d341), [`55fd324`](https://github.com/marko-js/marko/commit/55fd324c3f4ea00535856c7719f8b4c46f55de40), [`fdc46fb`](https://github.com/marko-js/marko/commit/fdc46fb3e762595a43fd1fa2f714af7f8819d341)]:\n  - @marko/compiler@5.39.43\n\n## 5.37.62\n\n### Patch Changes\n\n- [#2949](https://github.com/marko-js/marko/pull/2949) [`6648a22`](https://github.com/marko-js/marko/commit/6648a2229084e3ae431c175fb283e41b9bb1dab5) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Allow compiler import helper to be used outside of translate.\n\n- Updated dependencies [[`6648a22`](https://github.com/marko-js/marko/commit/6648a2229084e3ae431c175fb283e41b9bb1dab5)]:\n  - @marko/compiler@5.39.42\n\n## 5.37.61\n\n### Patch Changes\n\n- [#2906](https://github.com/marko-js/marko/pull/2906) [`c6a9c12`](https://github.com/marko-js/marko/commit/c6a9c125e82d9a1fbb158677cc8c26a94d80e2ec) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with incorrect babel scopes after stripping types.\n\n- Updated dependencies [[`c6a9c12`](https://github.com/marko-js/marko/commit/c6a9c125e82d9a1fbb158677cc8c26a94d80e2ec)]:\n  - @marko/compiler@5.39.41\n\n## 5.37.60\n\n### Patch Changes\n\n- [#2859](https://github.com/marko-js/marko/pull/2859) [`22112e5`](https://github.com/marko-js/marko/commit/22112e524cf12baf0b119a5ad3417145459a159c) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure markoOpts is always accurate when running child template analysis.\n\n- Updated dependencies [[`22112e5`](https://github.com/marko-js/marko/commit/22112e524cf12baf0b119a5ad3417145459a159c)]:\n  - @marko/compiler@5.39.40\n\n## 5.37.59\n\n### Patch Changes\n\n- [#2855](https://github.com/marko-js/marko/pull/2855) [`29173ce`](https://github.com/marko-js/marko/commit/29173ced3806d932eb05dc14002fc4969ef4ac6b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure scopes are crawled before stripping types.\n\n- Updated dependencies [[`29173ce`](https://github.com/marko-js/marko/commit/29173ced3806d932eb05dc14002fc4969ef4ac6b)]:\n  - @marko/compiler@5.39.39\n\n## 5.37.58\n\n### Patch Changes\n\n- [#2853](https://github.com/marko-js/marko/pull/2853) [`b52a62f`](https://github.com/marko-js/marko/commit/b52a62f3ae5d07bee23685289aec169476820f69) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure stripTypes compiler option is applied when targeting source output.\n\n- Updated dependencies [[`b52a62f`](https://github.com/marko-js/marko/commit/b52a62f3ae5d07bee23685289aec169476820f69)]:\n  - @marko/compiler@5.39.38\n\n## 5.37.57\n\n### Patch Changes\n\n- [#2834](https://github.com/marko-js/marko/pull/2834) [`5c9a37f`](https://github.com/marko-js/marko/commit/5c9a37fa17c6a2f5f771c919b8415e4dfb25fca4) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue striping type specifiers in imports.\n\n- Updated dependencies [[`5c9a37f`](https://github.com/marko-js/marko/commit/5c9a37fa17c6a2f5f771c919b8415e4dfb25fca4)]:\n  - @marko/compiler@5.39.37\n\n## 5.37.56\n\n### Patch Changes\n\n- [#2830](https://github.com/marko-js/marko/pull/2830) [`9a688af`](https://github.com/marko-js/marko/commit/9a688af3c92a73ae7492cdaa4b9ff1e0b2f9127e) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with static/server/client statements with type imports not properly being stripped.\n\n- Updated dependencies [[`9a688af`](https://github.com/marko-js/marko/commit/9a688af3c92a73ae7492cdaa4b9ff1e0b2f9127e)]:\n  - @marko/compiler@5.39.36\n\n## 5.37.55\n\n### Patch Changes\n\n- [#2823](https://github.com/marko-js/marko/pull/2823) [`58c2165`](https://github.com/marko-js/marko/commit/58c21653aa0a1d6e1db208c36a1a584b44ba2ff0) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure type stripping runs before transform phase in compiler.\n\n- Updated dependencies [[`58c2165`](https://github.com/marko-js/marko/commit/58c21653aa0a1d6e1db208c36a1a584b44ba2ff0)]:\n  - @marko/compiler@5.39.35\n\n## 5.37.54\n\n### Patch Changes\n\n- [#2820](https://github.com/marko-js/marko/pull/2820) [`f39c6da`](https://github.com/marko-js/marko/commit/f39c6da21ff8476130890e5482242acd2096e54a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve tags/class interop across async.\n\n## 5.37.53\n\n### Patch Changes\n\n- [#2815](https://github.com/marko-js/marko/pull/2815) [`ed8d064`](https://github.com/marko-js/marko/commit/ed8d064d154532cfa7c12be524d6b47556da0c7f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure `@marko/compiler/modules` always uses packagem name imports for easier aliasing in website tooling.\n\n- Updated dependencies [[`ed8d064`](https://github.com/marko-js/marko/commit/ed8d064d154532cfa7c12be524d6b47556da0c7f)]:\n  - @marko/compiler@5.39.34\n\n## 5.37.52\n\n### Patch Changes\n\n- [#2813](https://github.com/marko-js/marko/pull/2813) [`65b6dde`](https://github.com/marko-js/marko/commit/65b6dde559f50afac6e285bd598ed49b015485f4) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve class/tags api interop.\n\n## 5.37.51\n\n### Patch Changes\n\n- [#2786](https://github.com/marko-js/marko/pull/2786) [`df07bb6`](https://github.com/marko-js/marko/commit/df07bb6ec8928bec35de4711cd57ed4cfd038581) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure tags api runtime compat always walks after running class api init code.\n\n## 5.37.50\n\n### Patch Changes\n\n- [#2784](https://github.com/marko-js/marko/pull/2784) [`bbde0e8`](https://github.com/marko-js/marko/commit/bbde0e8415931c3fbb5432007dda196dfd5a9e3d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Allow split components to rerender if the template has been loaded.\n\n- [#2784](https://github.com/marko-js/marko/pull/2784) [`bbde0e8`](https://github.com/marko-js/marko/commit/bbde0e8415931c3fbb5432007dda196dfd5a9e3d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure interop class/tags init happens after all modules load.\n\n## 5.37.49\n\n### Patch Changes\n\n- [#2783](https://github.com/marko-js/marko/pull/2783) [`506539c`](https://github.com/marko-js/marko/commit/506539cbb17ca1cc01fb52f387a5f572c6daf0da) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve class/tags interop serialization orchestration and flushing.\n\n## 5.37.48\n\n### Patch Changes\n\n- [#2779](https://github.com/marko-js/marko/pull/2779) [`f388228`](https://github.com/marko-js/marko/commit/f388228adea301e8d115d862a889de2492fba4ea) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Misc tags api compat improvements.\n\n## 5.37.47\n\n### Patch Changes\n\n- [#2769](https://github.com/marko-js/marko/pull/2769) [`7680160`](https://github.com/marko-js/marko/commit/76801609170a92baca0fe800ba273238abd3893e) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Runtime types improvements. Add CI validation to runtime types files.\n\n## 5.37.46\n\n### Patch Changes\n\n- [#2766](https://github.com/marko-js/marko/pull/2766) [`6027c1e`](https://github.com/marko-js/marko/commit/6027c1e9817879b7d08931f7cefa45d10719df39) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Tags api compat runtime fixes.\n\n## 5.37.45\n\n### Patch Changes\n\n- [`a96a328`](https://github.com/marko-js/marko/commit/a96a3289e3b5e4ebc174a3448c935201f761c1d5) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix types for renderable.\n\n## 5.37.44\n\n### Patch Changes\n\n- [#2756](https://github.com/marko-js/marko/pull/2756) [`46f1f90`](https://github.com/marko-js/marko/commit/46f1f9075043754aadec1175db5885f72c84e016) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add support for `renderId` which replaces `componentIdPrefix` (and the older `widgetIdPrefix`).\n\n- [#2756](https://github.com/marko-js/marko/pull/2756) [`46f1f90`](https://github.com/marko-js/marko/commit/46f1f9075043754aadec1175db5885f72c84e016) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve tags api compat.\n\n- Updated dependencies [[`46f1f90`](https://github.com/marko-js/marko/commit/46f1f9075043754aadec1175db5885f72c84e016)]:\n  - @marko/compiler@5.39.33\n\n## 5.37.43\n\n### Patch Changes\n\n- [#2753](https://github.com/marko-js/marko/pull/2753) [`9ba0cab`](https://github.com/marko-js/marko/commit/9ba0cab6474e7cd483b93992be5b8b5e7c8df0aa) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Update package dependencies.\n\n- [#2753](https://github.com/marko-js/marko/pull/2753) [`9ba0cab`](https://github.com/marko-js/marko/commit/9ba0cab6474e7cd483b93992be5b8b5e7c8df0aa) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve source location information for static statements.\n\n- Updated dependencies [[`9ba0cab`](https://github.com/marko-js/marko/commit/9ba0cab6474e7cd483b93992be5b8b5e7c8df0aa)]:\n  - @marko/compiler@5.39.32\n\n## 5.37.42\n\n### Patch Changes\n\n- [#2746](https://github.com/marko-js/marko/pull/2746) [`064f068`](https://github.com/marko-js/marko/commit/064f068fdb0e16f5dc2534dce5f5edb706a71df5) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Allow `content` attribute in native tags\n\n## 5.37.41\n\n### Patch Changes\n\n- [#2734](https://github.com/marko-js/marko/pull/2734) [`b6ba333`](https://github.com/marko-js/marko/commit/b6ba333ee289ff27a549d1a2ea60b06338cb7ef5) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrade all deps. Fix support for [discard binding proposal](https://github.com/tc39/proposal-discard-binding).\n\n- Updated dependencies [[`b6ba333`](https://github.com/marko-js/marko/commit/b6ba333ee289ff27a549d1a2ea60b06338cb7ef5)]:\n  - @marko/compiler@5.39.29\n\n## 5.37.40\n\n### Patch Changes\n\n- [#2715](https://github.com/marko-js/marko/pull/2715) [`dc178ce`](https://github.com/marko-js/marko/commit/dc178ced9f75aac923f3c5b043aa40d62e8d0f4d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Move translator loading logic back into shared utility. Moving this out caused a regression for tools that call `getRuntimeEntryFiles` or `taglib.buildLookup` directly.\n\n- Updated dependencies [[`e60a20f`](https://github.com/marko-js/marko/commit/e60a20f7e2dcbdb2dcfa45bc15f2901ffd0443c7), [`dc178ce`](https://github.com/marko-js/marko/commit/dc178ced9f75aac923f3c5b043aa40d62e8d0f4d)]:\n  - @marko/compiler@5.39.28\n\n## 5.37.39\n\n### Patch Changes\n\n- [#2713](https://github.com/marko-js/marko/pull/2713) [`2d11230`](https://github.com/marko-js/marko/commit/2d11230f012397681f63071ea9b33b246b45f9ad) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid using \"util\" module to improve browser compat of compiler.\n\n- Updated dependencies [[`2d11230`](https://github.com/marko-js/marko/commit/2d11230f012397681f63071ea9b33b246b45f9ad)]:\n  - @marko/compiler@5.39.27\n\n## 5.37.38\n\n### Patch Changes\n\n- [#2709](https://github.com/marko-js/marko/pull/2709) [`99eccd8`](https://github.com/marko-js/marko/commit/99eccd8faa061a54d8ffcbb25b5990572598f242) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Move body translate logic into a transformer to improve tags/class interop support.\n\n## 5.37.37\n\n### Patch Changes\n\n- [#2707](https://github.com/marko-js/marko/pull/2707) [`89d0196`](https://github.com/marko-js/marko/commit/89d019678ecfb004af9b5892482d6af9d6178c4d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix false positive interop checks.\n\n- Updated dependencies [[`89d0196`](https://github.com/marko-js/marko/commit/89d019678ecfb004af9b5892482d6af9d6178c4d)]:\n  - @marko/compiler@5.39.26\n\n## 5.37.36\n\n### Patch Changes\n\n- [#2705](https://github.com/marko-js/marko/pull/2705) [`75eaa9d`](https://github.com/marko-js/marko/commit/75eaa9d833f6711b5b60757ef02ca987fc310b01) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid using process api in compiler to make it easier to load in environments without it.\n\n- Updated dependencies [[`75eaa9d`](https://github.com/marko-js/marko/commit/75eaa9d833f6711b5b60757ef02ca987fc310b01)]:\n  - @marko/compiler@5.39.25\n\n## 5.37.35\n\n### Patch Changes\n\n- [#2703](https://github.com/marko-js/marko/pull/2703) [`f67361b`](https://github.com/marko-js/marko/commit/f67361bc52191c9092833438868f09bb583252e1) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Load interop translator by default if installed.\n\n- Updated dependencies [[`f67361b`](https://github.com/marko-js/marko/commit/f67361bc52191c9092833438868f09bb583252e1)]:\n  - @marko/compiler@5.39.24\n\n## 5.37.34\n\n### Patch Changes\n\n- [#2701](https://github.com/marko-js/marko/pull/2701) [`8f68b6e`](https://github.com/marko-js/marko/commit/8f68b6efc960a3e59f59cbb49c549a248a03a79f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix regression where explicitly passing in `undefined` for translator was not loading the default translator.\n\n- Updated dependencies [[`8f68b6e`](https://github.com/marko-js/marko/commit/8f68b6efc960a3e59f59cbb49c549a248a03a79f)]:\n  - @marko/compiler@5.39.23\n\n## 5.37.33\n\n### Patch Changes\n\n- [#2699](https://github.com/marko-js/marko/pull/2699) [`dc3ee34`](https://github.com/marko-js/marko/commit/dc3ee348e9b95c12bf74d4212a82756d7ad90a18) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid node:crypto - use custom hash algo for component ids.\n\n- Updated dependencies [[`dc3ee34`](https://github.com/marko-js/marko/commit/dc3ee348e9b95c12bf74d4212a82756d7ad90a18)]:\n  - @marko/compiler@5.39.22\n\n## 5.37.32\n\n### Patch Changes\n\n- [#2696](https://github.com/marko-js/marko/pull/2696) [`eefa829`](https://github.com/marko-js/marko/commit/eefa829038b5bdd6edbbf95cef61e152e91ca9ec) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve internal module loading api. Ensure all taglib requires happen relative to project dir.\n\n- Updated dependencies [[`eefa829`](https://github.com/marko-js/marko/commit/eefa829038b5bdd6edbbf95cef61e152e91ca9ec)]:\n  - @marko/compiler@5.39.21\n\n## 5.37.31\n\n### Patch Changes\n\n- [#2691](https://github.com/marko-js/marko/pull/2691) [`0758ae7`](https://github.com/marko-js/marko/commit/0758ae72e3a3da9fdf1dca37001aa6e8479655f9) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where scriptlets with comments were being printed without brackets when printing the marko ast.\n\n- Updated dependencies [[`0758ae7`](https://github.com/marko-js/marko/commit/0758ae72e3a3da9fdf1dca37001aa6e8479655f9)]:\n  - @marko/compiler@5.39.20\n\n## 5.37.30\n\n### Patch Changes\n\n- [#2684](https://github.com/marko-js/marko/pull/2684) [`ef5960b`](https://github.com/marko-js/marko/commit/ef5960bbcca467627eaaaa501e0ce0b23211e590) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Add types for SVG tags\n\n## 5.37.29\n\n### Patch Changes\n\n- [#2648](https://github.com/marko-js/marko/pull/2648) [`3b883d4`](https://github.com/marko-js/marko/commit/3b883d4d9729e5b13bb0e8d19850c087d0e8245f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where tags added from the translator were given lower priority than tags added by the core compiler.\n\n- Updated dependencies [[`3b883d4`](https://github.com/marko-js/marko/commit/3b883d4d9729e5b13bb0e8d19850c087d0e8245f)]:\n  - @marko/compiler@5.39.19\n\n## 5.37.28\n\n### Patch Changes\n\n- [#2634](https://github.com/marko-js/marko/pull/2634) [`fa702ed`](https://github.com/marko-js/marko/commit/fa702ed89878bcb96add7011f98e972130fa9292) Thanks [@rturnq](https://github.com/rturnq)! - Prevents error when readable stream is cancelled externally\n\n## 5.37.27\n\n### Patch Changes\n\n- [#2615](https://github.com/marko-js/marko/pull/2615) [`c5c78ff`](https://github.com/marko-js/marko/commit/c5c78ff54e214fb53551c3afc2f936af8d426121) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fixes issue with https://github.com/marko-js/marko/pull/2604 where an incorrect `this` was referenced.\n\n## 5.37.26\n\n### Patch Changes\n\n- [#2604](https://github.com/marko-js/marko/pull/2604) [`70cb96e`](https://github.com/marko-js/marko/commit/70cb96eb8790434014eef368cea62a060522f231) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Expose `toReadable` api for whatwg streams in any environment.\n\n- [#2604](https://github.com/marko-js/marko/pull/2604) [`70cb96e`](https://github.com/marko-js/marko/commit/70cb96eb8790434014eef368cea62a060522f231) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Expose better types for working with ssr and csr rendered template results.\n\n## 5.37.25\n\n### Patch Changes\n\n- [#2598](https://github.com/marko-js/marko/pull/2598) [`12600c7`](https://github.com/marko-js/marko/commit/12600c7c7e1238a46bac686e390b0b1ac05e2ef6) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Use non enumerable property for implicit split component toJSON.\n\n## 5.37.24\n\n### Patch Changes\n\n- [#2589](https://github.com/marko-js/marko/pull/2589) [`765915a`](https://github.com/marko-js/marko/commit/765915ad423827bcdec6281413c59ecda173a80d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue when using with latest version of babel.\n\n- Updated dependencies [[`765915a`](https://github.com/marko-js/marko/commit/765915ad423827bcdec6281413c59ecda173a80d)]:\n  - @marko/compiler@5.39.14\n\n## 5.37.23\n\n### Patch Changes\n\n- [#2585](https://github.com/marko-js/marko/pull/2585) [`e84ff79`](https://github.com/marko-js/marko/commit/e84ff79a5f942b5b6f636d1c527e229f3c5fd244) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix missing expression statement wrapper.\n\n## 5.37.22\n\n### Patch Changes\n\n- [#2577](https://github.com/marko-js/marko/pull/2577) [`33c3979`](https://github.com/marko-js/marko/commit/33c3979dcbdde3b849a4e8af186f52aaaac55e69) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve debug and production Accessor Chars output.\n\n## 5.37.21\n\n### Patch Changes\n\n- [#2574](https://github.com/marko-js/marko/pull/2574) [`23eedc2`](https://github.com/marko-js/marko/commit/23eedc20a0a3e2e9d99514c49c615d74825fe4cb) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid serializing input for implicit split components (those with only string event handlers and no class/component).\n\n## 5.37.20\n\n### Patch Changes\n\n- [#2544](https://github.com/marko-js/marko/pull/2544) [`08e0d24`](https://github.com/marko-js/marko/commit/08e0d245a604380120de16db9e7806a1ccaf459d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Update tags api interop layer.\n\n- [#2540](https://github.com/marko-js/marko/pull/2540) [`b05c1f7`](https://github.com/marko-js/marko/commit/b05c1f7f3a1e97f964c7ebff051b7b06e12d02c3) Thanks [@mlrawlings](https://github.com/mlrawlings)! - refactor signals to no longer mark but rely soley on queueing for proper execution order\n\n- Updated dependencies [[`cfca41a`](https://github.com/marko-js/marko/commit/cfca41ac8c571d1fecb3b889df5eead1dfe06130)]:\n  - @marko/compiler@5.39.13\n\n## 5.37.19\n\n### Patch Changes\n\n- [#2541](https://github.com/marko-js/marko/pull/2541) [`6c24a30`](https://github.com/marko-js/marko/commit/6c24a30ee22155d0bd7e63564fc8d67e75e10980) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with no-update-body on native elements without a key not always being preserved during hydrate.\n\n## 5.37.18\n\n### Patch Changes\n\n- [#2537](https://github.com/marko-js/marko/pull/2537) [`ae24290`](https://github.com/marko-js/marko/commit/ae24290c4c9f9807d70d398e661bb510fb905e09) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Consolidate create branch logic, optimizing code size and creating branches with only side effects and no template code.\n\n## 5.37.17\n\n### Patch Changes\n\n- [#2531](https://github.com/marko-js/marko/pull/2531) [`6065ff2`](https://github.com/marko-js/marko/commit/6065ff2563335f622376bca1dafc94ed6e0b2aa6) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure & is escaped for server side attributes to improve consistency with csr.\n\n- [#2532](https://github.com/marko-js/marko/pull/2532) [`5c8c549`](https://github.com/marko-js/marko/commit/5c8c549a324eedfed800a70b44de35bde3de7899) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Update tags api interop.\n\n## 5.37.16\n\n### Patch Changes\n\n- [#2528](https://github.com/marko-js/marko/pull/2528) [`136bb14`](https://github.com/marko-js/marko/commit/136bb14afa1d77c41092ced77ded66702370de8a) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Fix special attrs\n\n- [#2530](https://github.com/marko-js/marko/pull/2530) [`d08be40`](https://github.com/marko-js/marko/commit/d08be4078fcfc276bab2ee5aded53c19e5b745e3) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with nesting out of order awaits inside of in order awaits.\n\n## 5.37.15\n\n### Patch Changes\n\n- [#2525](https://github.com/marko-js/marko/pull/2525) [`4c20455`](https://github.com/marko-js/marko/commit/4c204556a3055cd6439ecdd183f6dbfccc606934) Thanks [@rturnq](https://github.com/rturnq)! - Fix initial sync content not scheduled for flush\n\n## 5.37.14\n\n### Patch Changes\n\n- [#2488](https://github.com/marko-js/marko/pull/2488) [`c6f9927`](https://github.com/marko-js/marko/commit/c6f99275327489709b4934326075586baee5ad39) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Update tags api compat layer.\n\n## 5.37.13\n\n### Patch Changes\n\n- [#2485](https://github.com/marko-js/marko/pull/2485) [`09c0558`](https://github.com/marko-js/marko/commit/09c0558a1b26df2d828d56bd853f885a17683e38) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure Marko 5 renderBodies are serialized properly across the compat layer.\n\n- Updated dependencies [[`09c0558`](https://github.com/marko-js/marko/commit/09c0558a1b26df2d828d56bd853f885a17683e38)]:\n  - @marko/compiler@5.39.12\n\n## 5.37.12\n\n### Patch Changes\n\n- [#2469](https://github.com/marko-js/marko/pull/2469) [`f99d363`](https://github.com/marko-js/marko/commit/f99d363cd0597be495d486f48395192842da7262) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Edit TypeScript names for event handlers\n\n- [#2470](https://github.com/marko-js/marko/pull/2470) [`218c436`](https://github.com/marko-js/marko/commit/218c43674e478062cdbc0fcbaef0dc13cd79107f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve tags / class api interop layer for destroyed tags.\n\n- Updated dependencies [[`218c436`](https://github.com/marko-js/marko/commit/218c43674e478062cdbc0fcbaef0dc13cd79107f)]:\n  - @marko/compiler@5.39.11\n\n## 5.37.11\n\n### Patch Changes\n\n- [#2462](https://github.com/marko-js/marko/pull/2462) [`631ad47`](https://github.com/marko-js/marko/commit/631ad47da4f6accbe802b374334b7b0c03e752da) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where implicit split components (those with no class/component that have event handlers) were not getting the client side render apis.\n\n## 5.37.10\n\n### Patch Changes\n\n- [#2451](https://github.com/marko-js/marko/pull/2451) [`602eaad`](https://github.com/marko-js/marko/commit/602eaad0a48047b2fb678b8e77d6b345a0930b8d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid swallowing errors when resolved paths in marko.json files could not be resolve (now leaves the value as is, previously would ignore the path).\n\n- [#2449](https://github.com/marko-js/marko/pull/2449) [`6cf4978`](https://github.com/marko-js/marko/commit/6cf4978d765914e1d1c3ee62a3c691ce20c4903b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Support aggregate errors when final error is a HTMLJS parser error.\n\n- [#2449](https://github.com/marko-js/marko/pull/2449) [`6cf4978`](https://github.com/marko-js/marko/commit/6cf4978d765914e1d1c3ee62a3c691ce20c4903b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix invalid sourcemapping of parse errors in a class block.\n\n- [#2452](https://github.com/marko-js/marko/pull/2452) [`4349f95`](https://github.com/marko-js/marko/commit/4349f959f833ea51469855a8e87653a1ced159bd) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add stubs for some client side component apis on the server.\n\n- Updated dependencies [[`602eaad`](https://github.com/marko-js/marko/commit/602eaad0a48047b2fb678b8e77d6b345a0930b8d), [`6cf4978`](https://github.com/marko-js/marko/commit/6cf4978d765914e1d1c3ee62a3c691ce20c4903b)]:\n  - @marko/compiler@5.39.9\n\n## 5.37.9\n\n### Patch Changes\n\n- [#2445](https://github.com/marko-js/marko/pull/2445) [`b12d7a9`](https://github.com/marko-js/marko/commit/b12d7a9b76dd9fca89ed717b8491b08d5e927fe0) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add engines field to package.json\n\n- [#2448](https://github.com/marko-js/marko/pull/2448) [`cb3b4b5`](https://github.com/marko-js/marko/commit/cb3b4b51c20e2d29182266f34c04a9d87ffdfea6) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where scoped directive was being applied twice when tag had no-update directive.\n\n- Updated dependencies [[`b12d7a9`](https://github.com/marko-js/marko/commit/b12d7a9b76dd9fca89ed717b8491b08d5e927fe0)]:\n  - @marko/compiler@5.39.8\n\n## 5.37.8\n\n### Patch Changes\n\n- [#2438](https://github.com/marko-js/marko/pull/2438) [`4b6c613`](https://github.com/marko-js/marko/commit/4b6c6135badad6db7e4a8f0f59fb005ed66b04fa) Thanks [@mlrawlings](https://github.com/mlrawlings)! - use tags/ instead of components/ for runtime-tags\n\n- [#2436](https://github.com/marko-js/marko/pull/2436) [`a364d1e`](https://github.com/marko-js/marko/commit/a364d1ebd85d0a71c49018c614ca9424fc7e5976) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Rename renderBody to content for tags api.\n\n- Updated dependencies [[`4b6c613`](https://github.com/marko-js/marko/commit/4b6c6135badad6db7e4a8f0f59fb005ed66b04fa), [`8ebe566`](https://github.com/marko-js/marko/commit/8ebe566854179ad8cf8cfca7858d607ab208c01e)]:\n  - @marko/compiler@5.39.7\n\n## 5.37.7\n\n### Patch Changes\n\n- [#2434](https://github.com/marko-js/marko/pull/2434) [`6a235a8`](https://github.com/marko-js/marko/commit/6a235a88813cd45a8704060e4fac3ed82c2f3437) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve registry id normalization.\n\n- Updated dependencies [[`6a235a8`](https://github.com/marko-js/marko/commit/6a235a88813cd45a8704060e4fac3ed82c2f3437)]:\n  - @marko/compiler@5.39.6\n\n## 5.37.6\n\n### Patch Changes\n\n- [#2428](https://github.com/marko-js/marko/pull/2428) [`e72fa84`](https://github.com/marko-js/marko/commit/e72fa84a7293bd348a39e20b011228dfd937322f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrade dependencies.\n\n## 5.37.5\n\n### Patch Changes\n\n- [#2426](https://github.com/marko-js/marko/pull/2426) [`2142dfd`](https://github.com/marko-js/marko/commit/2142dfd05d6b6ebc5f55883ca13a15847cdb07fa) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Use statement parsing for script tag to improve sourcemap accuracy.\n\n- [#2426](https://github.com/marko-js/marko/pull/2426) [`2142dfd`](https://github.com/marko-js/marko/commit/2142dfd05d6b6ebc5f55883ca13a15847cdb07fa) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where negative sourcemap offets leaning to the previous line were outputting incorrect values.\n\n- Updated dependencies [[`2142dfd`](https://github.com/marko-js/marko/commit/2142dfd05d6b6ebc5f55883ca13a15847cdb07fa), [`2142dfd`](https://github.com/marko-js/marko/commit/2142dfd05d6b6ebc5f55883ca13a15847cdb07fa)]:\n  - @marko/compiler@5.39.5\n\n## 5.37.4\n\n### Patch Changes\n\n- [`e60bd4f`](https://github.com/marko-js/marko/commit/e60bd4fd25ccee475dad49195fca64024a6164bf) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix incorrect filepath for marko babel transform.\n\n- Updated dependencies [[`e60bd4f`](https://github.com/marko-js/marko/commit/e60bd4fd25ccee475dad49195fca64024a6164bf)]:\n  - @marko/compiler@5.39.4\n\n## 5.37.3\n\n### Patch Changes\n\n- [#2420](https://github.com/marko-js/marko/pull/2420) [`4a980fe`](https://github.com/marko-js/marko/commit/4a980fe444299f095f0f423767d5340e15c33682) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix publish alias issue.\n\n- Updated dependencies [[`4a980fe`](https://github.com/marko-js/marko/commit/4a980fe444299f095f0f423767d5340e15c33682)]:\n  - @marko/compiler@5.39.3\n\n## 5.37.2\n\n### Patch Changes\n\n- [#2418](https://github.com/marko-js/marko/pull/2418) [`00e7392`](https://github.com/marko-js/marko/commit/00e7392361a17f49345400d53644bcee13e9b375) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue when parsing embedded script code with negative offset locations.\n\n- Updated dependencies [[`00e7392`](https://github.com/marko-js/marko/commit/00e7392361a17f49345400d53644bcee13e9b375)]:\n  - @marko/compiler@5.39.2\n\n## 5.37.1\n\n### Patch Changes\n\n- [#2416](https://github.com/marko-js/marko/pull/2416) [`619c87f`](https://github.com/marko-js/marko/commit/619c87faeebc31f6885bbb868fc89bab8a90ebea) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix package json repository config.\n\n- Updated dependencies [[`619c87f`](https://github.com/marko-js/marko/commit/619c87faeebc31f6885bbb868fc89bab8a90ebea)]:\n  - @marko/compiler@5.39.1\n\n## 5.37.0\n\n### Minor Changes\n\n- [#2408](https://github.com/marko-js/marko/pull/2408) [`2be37f7`](https://github.com/marko-js/marko/commit/2be37f72d3030621e2f85b6615731a5af24e0211) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Merge translator packages into their respective runtime packages.\n\n### Patch Changes\n\n- Updated dependencies [[`2be37f7`](https://github.com/marko-js/marko/commit/2be37f72d3030621e2f85b6615731a5af24e0211)]:\n  - @marko/compiler@5.39.0\n\n## 5.36.5\n\n### Patch Changes\n\n- [#2404](https://github.com/marko-js/marko/pull/2404) [`fbc0cef`](https://github.com/marko-js/marko/commit/fbc0cefb860cd91142231df04c05b7e4c0d1b1ee) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrade all dependencies. Fix support for latest babel version.\n\n- Updated dependencies [[`fbc0cef`](https://github.com/marko-js/marko/commit/fbc0cefb860cd91142231df04c05b7e4c0d1b1ee)]:\n  - @marko/translator-default@6.1.3\n  - @marko/compiler@5.38.5\n\n## 5.36.4\n\n### Patch Changes\n\n- [#2402](https://github.com/marko-js/marko/pull/2402) [`0a38845`](https://github.com/marko-js/marko/commit/0a3884573b9abaff7b315d9b6ed0ceed5c344dc7) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fixes race conditions with new async iterator api.\n\n## 5.36.3\n\n### Patch Changes\n\n- [#2395](https://github.com/marko-js/marko/pull/2395) [`00cc3fb`](https://github.com/marko-js/marko/commit/00cc3fbe934d96a644175cc86cd72221131a884d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where lasso manifest file paths were not being provided correctly for lasso-marko.\n\n- Updated dependencies [[`00cc3fb`](https://github.com/marko-js/marko/commit/00cc3fbe934d96a644175cc86cd72221131a884d)]:\n  - @marko/translator-default@6.1.2\n  - @marko/compiler@5.38.3\n\n## 5.36.2\n\n### Patch Changes\n\n- [#2387](https://github.com/marko-js/marko/pull/2387) [`8e67da0`](https://github.com/marko-js/marko/commit/8e67da0f725ad5074a1bf933cb75ca569d21f2d7) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with an attribute tag containing only a spread.\n\n- Updated dependencies [[`8e67da0`](https://github.com/marko-js/marko/commit/8e67da0f725ad5074a1bf933cb75ca569d21f2d7)]:\n  - @marko/translator-default@6.1.1\n  - @marko/compiler@5.38.2\n\n## 5.36.1\n\n### Patch Changes\n\n- [#2383](https://github.com/marko-js/marko/pull/2383) [`133b562`](https://github.com/marko-js/marko/commit/133b562c19081402330e4054eabc49a4ce635274) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Partially revert #2380 which was causing non idempotent builds.\n\n- Updated dependencies [[`133b562`](https://github.com/marko-js/marko/commit/133b562c19081402330e4054eabc49a4ce635274)]:\n  - @marko/compiler@5.38.1\n\n## 5.36.0\n\n### Minor Changes\n\n- [#2380](https://github.com/marko-js/marko/pull/2380) [`c5d2b48`](https://github.com/marko-js/marko/commit/c5d2b4871e9dab7037a624681d0161b72fdc799d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Replace `optimizeKnownTemplates` with a better an simpler `optimizeRegistryId` api.\n\n### Patch Changes\n\n- Updated dependencies [[`c5d2b48`](https://github.com/marko-js/marko/commit/c5d2b4871e9dab7037a624681d0161b72fdc799d)]:\n  - @marko/translator-default@6.1.0\n  - @marko/compiler@5.38.0\n\n## 5.35.35\n\n### Patch Changes\n\n- [#2368](https://github.com/marko-js/marko/pull/2368) [`bb44af0`](https://github.com/marko-js/marko/commit/bb44af04b1ad29d14200ff5cff26b27a39ce446e) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with \"package: \" deps (used for lasso) not being hoisted when building the hydrate output.\n\n- Updated dependencies [[`bb44af0`](https://github.com/marko-js/marko/commit/bb44af04b1ad29d14200ff5cff26b27a39ce446e)]:\n  - @marko/translator-default@6.0.26\n  - @marko/compiler@5.37.26\n\n## 5.35.34\n\n### Patch Changes\n\n- [#2364](https://github.com/marko-js/marko/pull/2364) [`cbcd7ec`](https://github.com/marko-js/marko/commit/cbcd7ecd3bb6a670c0cbd90f02b3a16332a71282) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add `return` method to asyncIterator on render method to better support apis that expect it to be there.\n\n- [#2367](https://github.com/marko-js/marko/pull/2367) [`c8e943d`](https://github.com/marko-js/marko/commit/c8e943d30ea621356b14ce5a2bf8c040f9d41f82) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ignore errors from child template analysis (assume child will be compiled after imported anyway).\n\n- [#2365](https://github.com/marko-js/marko/pull/2365) [`894d0d0`](https://github.com/marko-js/marko/commit/894d0d05daddee107640f83bcd8a11f46b4e359b) Thanks [@rturnq](https://github.com/rturnq)! - Expose globalConfig and fix config default export\n\n- Updated dependencies [[`c8e943d`](https://github.com/marko-js/marko/commit/c8e943d30ea621356b14ce5a2bf8c040f9d41f82), [`894d0d0`](https://github.com/marko-js/marko/commit/894d0d05daddee107640f83bcd8a11f46b4e359b)]:\n  - @marko/compiler@5.37.25\n  - @marko/translator-default@6.0.25\n\n## 5.35.33\n\n### Patch Changes\n\n- [#2358](https://github.com/marko-js/marko/pull/2358) [`76951d8`](https://github.com/marko-js/marko/commit/76951d887d02e6f0dd3f0fe1345721d4a94a0069) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Always use MarkoTagBody AST nodes for control flow (even with attribute tags). This fixes a regression with the @marko/tags-api-preview and is more accurate to what is actually happening, especially from a variable scoping perspective.\n\n- Updated dependencies [[`76951d8`](https://github.com/marko-js/marko/commit/76951d887d02e6f0dd3f0fe1345721d4a94a0069)]:\n  - @marko/translator-default@6.0.24\n  - @marko/compiler@5.37.24\n\n## 5.35.32\n\n### Patch Changes\n\n- [#2346](https://github.com/marko-js/marko/pull/2346) [`8ec88ff`](https://github.com/marko-js/marko/commit/8ec88fff87ef40ce19aba8992e075a839a61683e) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Switch back to using babels startIndex api since the regression has been fixed.\n\n- [#2344](https://github.com/marko-js/marko/pull/2344) [`bafeac1`](https://github.com/marko-js/marko/commit/bafeac1db6acc73e5c38ade2a078485df28670b8) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Optimize circular reference child template analysis.\n\n- Updated dependencies [[`8ec88ff`](https://github.com/marko-js/marko/commit/8ec88fff87ef40ce19aba8992e075a839a61683e), [`bafeac1`](https://github.com/marko-js/marko/commit/bafeac1db6acc73e5c38ade2a078485df28670b8)]:\n  - @marko/compiler@5.37.23\n  - @marko/translator-default@6.0.23\n\n## 5.35.31\n\n### Patch Changes\n\n- [#2342](https://github.com/marko-js/marko/pull/2342) [`8e07673`](https://github.com/marko-js/marko/commit/8e07673ca07cc83d9910c68ff8359264015c28d1) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Make attribute tags a property on the MarkoTag AST and refactor how attribute tags are translated.\n\n- Updated dependencies [[`8e07673`](https://github.com/marko-js/marko/commit/8e07673ca07cc83d9910c68ff8359264015c28d1)]:\n  - @marko/translator-default@6.0.22\n  - @marko/compiler@5.37.22\n\n## 5.35.30\n\n### Patch Changes\n\n- [#2338](https://github.com/marko-js/marko/pull/2338) [`033adb9`](https://github.com/marko-js/marko/commit/033adb92de3e40f24614e0de9d438f6390843a84) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure that errors discovered while loading optional module level taglibs are forwarded through the onError api.\n\n- Updated dependencies [[`033adb9`](https://github.com/marko-js/marko/commit/033adb92de3e40f24614e0de9d438f6390843a84)]:\n  - @marko/compiler@5.37.21\n\n## 5.35.29\n\n### Patch Changes\n\n- [#2334](https://github.com/marko-js/marko/pull/2334) [`212fbd0`](https://github.com/marko-js/marko/commit/212fbd063d046d865bb3e8f996db91060b6651b2) Thanks [@LuLaValva](https://github.com/LuLaValva)! - TypeScript dependency fix\n\n- [#2337](https://github.com/marko-js/marko/pull/2337) [`ea95de1`](https://github.com/marko-js/marko/commit/ea95de1deaaa03bf2bc57b2518954084dbc1442f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid babel `startColumn` api until https://github.com/babel/babel/pull/16936 is merged.\n\n- Updated dependencies [[`212fbd0`](https://github.com/marko-js/marko/commit/212fbd063d046d865bb3e8f996db91060b6651b2), [`ea95de1`](https://github.com/marko-js/marko/commit/ea95de1deaaa03bf2bc57b2518954084dbc1442f)]:\n  - @marko/compiler@5.37.20\n  - @marko/translator-default@6.0.21\n\n## 5.35.28\n\n### Patch Changes\n\n- [#2332](https://github.com/marko-js/marko/pull/2332) [`b920f86`](https://github.com/marko-js/marko/commit/b920f8632894bfbd97bb642829390daee0e949fd) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix incorrect AttrTag tag type definition.\n\n- [#2332](https://github.com/marko-js/marko/pull/2332) [`6e87653`](https://github.com/marko-js/marko/commit/6e8765300dabc1d370058dca76f17d87b80aea3a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Remove extraneous runtime helper.\n\n- Updated dependencies [[`6e87653`](https://github.com/marko-js/marko/commit/6e8765300dabc1d370058dca76f17d87b80aea3a)]:\n  - @marko/translator-default@6.0.20\n\n## 5.35.27\n\n### Patch Changes\n\n- [#2326](https://github.com/marko-js/marko/pull/2326) [`807b725`](https://github.com/marko-js/marko/commit/807b7255eb0855701abc54fb6748f2f0b84c6082) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Deprecated the Marko.RepeatableAttrTag type (which is now an alias of Marko.AttrTag). This type was overcomplicating things and leading people to incorrectly handle the single item case. Update docs to avoid recommending relying on the array case since this behavior changes in Marko 6 to always be a single (iterable) item.\n\n  Updates the `Marko.Input` type to handle changes to the `Marko.Body` type from `@marko/language-tools`.\n\n## 5.35.26\n\n### Patch Changes\n\n- [#2324](https://github.com/marko-js/marko/pull/2324) [`4776e33`](https://github.com/marko-js/marko/commit/4776e334ed8f4f70559042d28007dfa447942693) Thanks [@rturnq](https://github.com/rturnq)! - Allow child template analysis on manually imported tags in translator-default and optimize direct reference of imported tag\n\n- Updated dependencies [[`4776e33`](https://github.com/marko-js/marko/commit/4776e334ed8f4f70559042d28007dfa447942693)]:\n  - @marko/translator-default@6.0.19\n  - @marko/compiler@5.37.19\n\n## 5.35.25\n\n### Patch Changes\n\n- [#2322](https://github.com/marko-js/marko/pull/2322) [`420405d`](https://github.com/marko-js/marko/commit/420405db952fcedafed0cb48d86620ca53bb2f1d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Remove the default cache auto clearing behavior.\n  Previously the default compiler \"cache\" was cleared every setImmediate. This was to support server hot reloading in apps using `Lasso` (and `browser-refresh`). Since we brought back support for `browser-refresh` in the Marko package we now clear this cache when browser-refresh triggers a change making the default cache clearing redundant.\n- Updated dependencies [[`420405d`](https://github.com/marko-js/marko/commit/420405db952fcedafed0cb48d86620ca53bb2f1d)]:\n  - @marko/compiler@5.37.18\n\n## 5.35.24\n\n### Patch Changes\n\n- [#2320](https://github.com/marko-js/marko/pull/2320) [`13b3270`](https://github.com/marko-js/marko/commit/13b32707ed673dd3dabe6dfdb90fcf5a19448776) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Optimize how style and script tags are diffed (similar to textarea) where the text nodes are concatenated and diffed as a whole.\n\n- [#2320](https://github.com/marko-js/marko/pull/2320) [`a9da4d6`](https://github.com/marko-js/marko/commit/a9da4d64cf8116867ea80150f10c4dc8a45a0c98) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix regression from #2138 which caused nullable native dynamic tags with body contents to not output the end tag. 😱\n\n- Updated dependencies [[`13b3270`](https://github.com/marko-js/marko/commit/13b32707ed673dd3dabe6dfdb90fcf5a19448776), [`a9da4d6`](https://github.com/marko-js/marko/commit/a9da4d64cf8116867ea80150f10c4dc8a45a0c98)]:\n  - @marko/translator-default@6.0.18\n  - @marko/compiler@5.37.17\n\n## 5.35.23\n\n### Patch Changes\n\n- [#2318](https://github.com/marko-js/marko/pull/2318) [`1dbb189`](https://github.com/marko-js/marko/commit/1dbb189976ef56a28252fbf7da95ac18a3eadaf6) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where a null able native tag with no body content (eg `<${show && \"div}/>`) was incorrectly outputting a fragment for the body content (which did not exist).\n\n- Updated dependencies [[`1dbb189`](https://github.com/marko-js/marko/commit/1dbb189976ef56a28252fbf7da95ac18a3eadaf6)]:\n  - @marko/translator-default@6.0.17\n  - @marko/compiler@5.37.16\n\n## 5.35.22\n\n### Patch Changes\n\n- [#2316](https://github.com/marko-js/marko/pull/2316) [`e57e706`](https://github.com/marko-js/marko/commit/e57e706a901002763968e840b321f8c3eb7c55fb) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Expose the v3 legacy helpers properly in the marko package.json\n\n- [#2316](https://github.com/marko-js/marko/pull/2316) [`1e2c903`](https://github.com/marko-js/marko/commit/1e2c903cb1da7e919d683d65f1bda4661abe931e) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix regression where an out of order await resolves before the \"<await-reorderer>\" (automatically injected at the end of the body) would be flushed. In practice this means an in order await after all out of order awaits (that resolves after any of the out of order awaits) was causing some out of order awaits not to be reordered.\n\n## 5.35.21\n\n### Patch Changes\n\n- [#2314](https://github.com/marko-js/marko/pull/2314) [`75d0ab8`](https://github.com/marko-js/marko/commit/75d0ab8301d068ac370f4ef8b0b1f18d1b559eef) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Downgrade minimatch module since latest version requires node 20.\n\n- [#2315](https://github.com/marko-js/marko/pull/2315) [`5b4ffa8`](https://github.com/marko-js/marko/commit/5b4ffa85d434e591fd56cdbfd5b5cc1b2f4927dd) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add back the \"legacy helpers\" from Marko 3 to simplify the process of upgrading some older applications.\n\n- [#2308](https://github.com/marko-js/marko/pull/2308) [`a279d09`](https://github.com/marko-js/marko/commit/a279d0934968f34661d37bb29eb99ae7415fa5b6) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Update documentation\n\n## 5.35.20\n\n### Patch Changes\n\n- [#2306](https://github.com/marko-js/marko/pull/2306) [`4d8eb53`](https://github.com/marko-js/marko/commit/4d8eb53c7354837233d99077f3d68980b13da911) Thanks [@mlrawlings](https://github.com/mlrawlings)! - fix: upgrade babel/it-fails, fix VComment\n\n- [#2310](https://github.com/marko-js/marko/pull/2310) [`f06d4b0`](https://github.com/marko-js/marko/commit/f06d4b0559c3fbb3af67773c70b3aab25278b0ca) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid babel compiler assert api to fix a regression.\n\n- Updated dependencies [[`f06d4b0`](https://github.com/marko-js/marko/commit/f06d4b0559c3fbb3af67773c70b3aab25278b0ca)]:\n  - @marko/translator-default@6.0.16\n  - @marko/compiler@5.37.15\n\n## 5.35.19\n\n### Patch Changes\n\n- [#2303](https://github.com/marko-js/marko/pull/2303) [`e6d117b`](https://github.com/marko-js/marko/commit/e6d117b67a3099ab0a29248d189de7b37b9d3d8a) Thanks [@rturnq](https://github.com/rturnq)! - Add frame property to compile errors\n\n- Updated dependencies [[`e6d117b`](https://github.com/marko-js/marko/commit/e6d117b67a3099ab0a29248d189de7b37b9d3d8a)]:\n  - @marko/compiler@5.37.14\n\n## 5.35.18\n\n### Patch Changes\n\n- [#2300](https://github.com/marko-js/marko/pull/2300) [`d45f91a`](https://github.com/marko-js/marko/commit/d45f91a5e0fff686cac7b7daf29deb60a6a1ffd7) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where legacy compat `w-bind` directives were being incorrectly optimized as static vdom.\n\n- Updated dependencies [[`d45f91a`](https://github.com/marko-js/marko/commit/d45f91a5e0fff686cac7b7daf29deb60a6a1ffd7)]:\n  - @marko/translator-default@6.0.15\n  - @marko/compiler@5.37.13\n\n## 5.35.17\n\n### Patch Changes\n\n- [#2298](https://github.com/marko-js/marko/pull/2298) [`c01d83f`](https://github.com/marko-js/marko/commit/c01d83fb2617443a7dc03eb3b43a2f7752754a45) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with the \"ignoreUnrecognizedTags\" compiler option being used with dynamic tags that have attribute tags.\n\n- [#2298](https://github.com/marko-js/marko/pull/2298) [`cfff311`](https://github.com/marko-js/marko/commit/cfff3111148a43f58c7d2b78f679c09c04d429b5) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Removes the debug mode dom manipulation warning since chrome dropped the api's that allowed us to get useful stack traces.\n\n- Updated dependencies [[`c01d83f`](https://github.com/marko-js/marko/commit/c01d83fb2617443a7dc03eb3b43a2f7752754a45), [`cfff311`](https://github.com/marko-js/marko/commit/cfff3111148a43f58c7d2b78f679c09c04d429b5)]:\n  - @marko/translator-default@6.0.14\n  - @marko/compiler@5.37.12\n\n## 5.35.16\n\n### Patch Changes\n\n- [#2296](https://github.com/marko-js/marko/pull/2296) [`81c5c0e`](https://github.com/marko-js/marko/commit/81c5c0e0436dc694f09c722f2103bfdc9cb3844f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issues related to recent babel changes.\n\n- [#2296](https://github.com/marko-js/marko/pull/2296) [`81c5c0e`](https://github.com/marko-js/marko/commit/81c5c0e0436dc694f09c722f2103bfdc9cb3844f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve support for @marko/compat.\n\n- Updated dependencies [[`81c5c0e`](https://github.com/marko-js/marko/commit/81c5c0e0436dc694f09c722f2103bfdc9cb3844f), [`81c5c0e`](https://github.com/marko-js/marko/commit/81c5c0e0436dc694f09c722f2103bfdc9cb3844f)]:\n  - @marko/compiler@5.37.11\n  - @marko/translator-default@6.0.13\n\n## 5.35.15\n\n### Patch Changes\n\n- [#2294](https://github.com/marko-js/marko/pull/2294) [`c600610`](https://github.com/marko-js/marko/commit/c6006102479d8d10ffd1f18d13b8c607fbabd177) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with comment nodes in unescaped html by bringing back virtual comment nodes.\n\n- Updated dependencies [[`c600610`](https://github.com/marko-js/marko/commit/c6006102479d8d10ffd1f18d13b8c607fbabd177)]:\n  - @marko/translator-default@6.0.12\n  - @marko/compiler@5.37.10\n\n## 5.35.14\n\n### Patch Changes\n\n- [#2289](https://github.com/marko-js/marko/pull/2289) [`e20e9af`](https://github.com/marko-js/marko/commit/e20e9af702415fd65b435908d973a2242b346e2a) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Add Marko to window when required\n\n## 5.35.13\n\n### Patch Changes\n\n- [#2286](https://github.com/marko-js/marko/pull/2286) [`55338b5`](https://github.com/marko-js/marko/commit/55338b52969817b63c90ea84f30246ad0b94b6f9) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Optimize template literal printing in html output.\n\n- Updated dependencies [[`55338b5`](https://github.com/marko-js/marko/commit/55338b52969817b63c90ea84f30246ad0b94b6f9)]:\n  - @marko/translator-default@6.0.11\n  - @marko/compiler@5.37.9\n\n## 5.35.12\n\n### Patch Changes\n\n- [#2284](https://github.com/marko-js/marko/pull/2284) [`d0723d3`](https://github.com/marko-js/marko/commit/d0723d398338d86b48524e230fe24d93d62ee19a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix off by one issue for static statement sourcemaps (eg import) and for concise mode tags.\n\n- Updated dependencies [[`d0723d3`](https://github.com/marko-js/marko/commit/d0723d398338d86b48524e230fe24d93d62ee19a)]:\n  - @marko/compiler@5.37.8\n  - @marko/translator-default@6.0.10\n\n## 5.35.11\n\n### Patch Changes\n\n- [#2282](https://github.com/marko-js/marko/pull/2282) [`32e2eff`](https://github.com/marko-js/marko/commit/32e2eff5c3ecdcb36f7b6ed98ea2a1e705538a29) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve handling of sourcemaps for inline style blocks and tags.\n\n- Updated dependencies [[`32e2eff`](https://github.com/marko-js/marko/commit/32e2eff5c3ecdcb36f7b6ed98ea2a1e705538a29)]:\n  - @marko/translator-default@6.0.9\n  - @marko/compiler@5.37.7\n\n## 5.35.10\n\n### Patch Changes\n\n- [#2277](https://github.com/marko-js/marko/pull/2277) [`ce88d81`](https://github.com/marko-js/marko/commit/ce88d8194f98b4010032634f5427021810f6acdb) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix \"off by one\" issue with source location information when the index was at the start of the line.\n\n- Updated dependencies [[`ce88d81`](https://github.com/marko-js/marko/commit/ce88d8194f98b4010032634f5427021810f6acdb)]:\n  - @marko/compiler@5.37.6\n  - @marko/translator-default@6.0.8\n\n## 5.35.9\n\n### Patch Changes\n\n- [#2274](https://github.com/marko-js/marko/pull/2274) [`5cea7d6`](https://github.com/marko-js/marko/commit/5cea7d65ead9b58d7d7d244078d279d561fd3ea7) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Optimize javascript parsing helpers to pass in start line / column information to babel rather than faking it with whitespace.\n\n  For large templates this can have a significant impact on parsing performance.\n\n- Updated dependencies [[`5cea7d6`](https://github.com/marko-js/marko/commit/5cea7d65ead9b58d7d7d244078d279d561fd3ea7)]:\n  - @marko/compiler@5.37.5\n  - @marko/translator-default@6.0.7\n\n## 5.35.8\n\n### Patch Changes\n\n- [#2267](https://github.com/marko-js/marko/pull/2267) [`b533216`](https://github.com/marko-js/marko/commit/b5332168b7134cb3b5c8518f789357c0d77b2ae6) Thanks [@mlrawlings](https://github.com/mlrawlings)! - Add open graph attributes to type defs\n\n## 5.35.7\n\n### Patch Changes\n\n- [#2264](https://github.com/marko-js/marko/pull/2264) [`992753e`](https://github.com/marko-js/marko/commit/992753e695e054d2789cdc1b439da5065468cb3a) Thanks [@LuLaValva](https://github.com/LuLaValva)! - For-of loop code coverage improvement\n\n- Updated dependencies [[`992753e`](https://github.com/marko-js/marko/commit/992753e695e054d2789cdc1b439da5065468cb3a)]:\n  - @marko/translator-default@6.0.6\n\n## 5.35.6\n\n### Patch Changes\n\n- [#2261](https://github.com/marko-js/marko/pull/2261) [`daa22a8`](https://github.com/marko-js/marko/commit/daa22a88d96cf4a943cf9fd81126aca4ae5a91bc) Thanks [@vwong](https://github.com/vwong)! - Add popover attribute to typings\n\n## 5.35.5\n\n### Patch Changes\n\n- [#2252](https://github.com/marko-js/marko/pull/2252) [`339c28d`](https://github.com/marko-js/marko/commit/339c28dd590dc15b6a1011f38411809060f1a4ba) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Allow diagnostic fixes in parse stage.\n\n- Updated dependencies [[`bfe85d1`](https://github.com/marko-js/marko/commit/bfe85d18772f244abfced05d7cde5698b7e077ec), [`339c28d`](https://github.com/marko-js/marko/commit/339c28dd590dc15b6a1011f38411809060f1a4ba), [`339c28d`](https://github.com/marko-js/marko/commit/339c28dd590dc15b6a1011f38411809060f1a4ba), [`339c28d`](https://github.com/marko-js/marko/commit/339c28dd590dc15b6a1011f38411809060f1a4ba)]:\n  - @marko/compiler@5.37.4\n  - @marko/translator-default@6.0.5\n\n## 5.35.4\n\n### Patch Changes\n\n- [#2250](https://github.com/marko-js/marko/pull/2250) [`2cf464f`](https://github.com/marko-js/marko/commit/2cf464f46b1fc6186fb033024063418270c32e1a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Allow registering/loading top level hydrated components _after_ the \"load\" event. Previously after the load event it was assumed all assets would have been loaded but this is not always accurate for assets loaded through interactions.\n\n## 5.35.3\n\n### Patch Changes\n\n- [#2248](https://github.com/marko-js/marko/pull/2248) [`0ced6e1`](https://github.com/marko-js/marko/commit/0ced6e17c24808586bd24f025d77cfb3c391ea2e) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix typo in upgrade docs and adding missing `browser-refresh` module.\n\n- Updated dependencies [[`0ced6e1`](https://github.com/marko-js/marko/commit/0ced6e17c24808586bd24f025d77cfb3c391ea2e)]:\n  - @marko/compiler@5.37.3\n  - @marko/translator-default@6.0.4\n\n## 5.35.2\n\n### Patch Changes\n\n- [#2246](https://github.com/marko-js/marko/pull/2246) [`a699cd9`](https://github.com/marko-js/marko/commit/a699cd9434996b8da0a14acba39fd1db03c0329a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Misc backward compat improvements:\n  - Expose `marko/browser-refresh` as a noop\n  - Allow translators to specify \"optional\" taglibs to load if they're installed (used for automatically loading compat taglibs)\n  - `marko/node-require` legacy require hook now disables user babel transforms by default\n  - Allow `<macro>` tag instances to use tag arguments syntax\n\n- Updated dependencies [[`a699cd9`](https://github.com/marko-js/marko/commit/a699cd9434996b8da0a14acba39fd1db03c0329a)]:\n  - @marko/translator-default@6.0.3\n  - @marko/compiler@5.37.2\n\n## 5.35.1\n\n### Patch Changes\n\n- [#2244](https://github.com/marko-js/marko/pull/2244) [`934dc13`](https://github.com/marko-js/marko/commit/934dc13972b14b6cc9511ae19db70f5b74a366b5) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Allow mixing comments with attr tags\n\n- Updated dependencies [[`934dc13`](https://github.com/marko-js/marko/commit/934dc13972b14b6cc9511ae19db70f5b74a366b5)]:\n  - @marko/translator-default@6.0.2\n  - @marko/compiler@5.37.1\n\n## 5.35.0\n\n### Minor Changes\n\n- [#2238](https://github.com/marko-js/marko/pull/2238) [`a741f36`](https://github.com/marko-js/marko/commit/a741f36e60583a2403a912627765c3ec2aa824e5) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add new optimizedRegistryIds compiler option\n\n### Patch Changes\n\n- Updated dependencies [[`a741f36`](https://github.com/marko-js/marko/commit/a741f36e60583a2403a912627765c3ec2aa824e5)]:\n  - @marko/compiler@5.37.0\n\n## 5.34.5\n\n### Patch Changes\n\n- [#2232](https://github.com/marko-js/marko/pull/2232) [`a67e1c4`](https://github.com/marko-js/marko/commit/a67e1c42b04ede5d9b9ef3cb2f8e21bedd2f004f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where the `ignoreUnrecognizedTags` compiler option was incorrectly escaping attribute tags for recognized tags that did not explicitly define their attribute tags in a marko.json\n\n- Updated dependencies [[`a67e1c4`](https://github.com/marko-js/marko/commit/a67e1c42b04ede5d9b9ef3cb2f8e21bedd2f004f)]:\n  - @marko/translator-default@6.0.1\n  - @marko/compiler@5.36.2\n\n## 5.34.4\n\n### Patch Changes\n\n- [#2226](https://github.com/marko-js/marko/pull/2226) [`7691418`](https://github.com/marko-js/marko/commit/7691418bc5fc8cc0fb50510111e3d92aadaca3cb) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where an out of order await contained an in order await and then another out of order await. This previously caused a race condition where if the final out of order await resolved first, it'd try to send it's content without it's placeholder location being available.\n\n## 5.34.3\n\n### Patch Changes\n\n- [#2223](https://github.com/marko-js/marko/pull/2223) [`1453eb8`](https://github.com/marko-js/marko/commit/1453eb8c88912aaf58c6fee34d9550af8d06e1fb) Thanks [@LuLaValva](https://github.com/LuLaValva)! - fix native tag return types\n\n## 5.34.2\n\n### Patch Changes\n\n- Updated dependencies [[`0ee141c`](https://github.com/marko-js/marko/commit/0ee141c525899dcccd0ffa69b8012c8c23ed5d4f)]:\n  - @marko/translator-default@6.0.0\n\n## 5.34.1\n\n### Patch Changes\n\n- [#2217](https://github.com/marko-js/marko/pull/2217) [`4fc4614`](https://github.com/marko-js/marko/commit/4fc46149ae046dd0fac0e7cc7e904b188f616f7f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where element keys could be different because of hoisted const elements not always being keyed. This could cause a hydration issue since the server and client compilations would not agree on the keys.\n\n- Updated dependencies [[`4fc4614`](https://github.com/marko-js/marko/commit/4fc46149ae046dd0fac0e7cc7e904b188f616f7f)]:\n  - @marko/translator-default@5.33.1\n  - @marko/compiler@5.36.1\n\n## 5.34.0\n\n### Minor Changes\n\n- [#2214](https://github.com/marko-js/marko/pull/2214) [`2d0a566`](https://github.com/marko-js/marko/commit/2d0a566a569e0d8caab2fd9abc960e6810e29b56) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Using event handlers now causes a template to become an implicit component or split component (depending on if a string event handler is used).\n\n### Patch Changes\n\n- Updated dependencies [[`2d0a566`](https://github.com/marko-js/marko/commit/2d0a566a569e0d8caab2fd9abc960e6810e29b56)]:\n  - @marko/translator-default@5.33.0\n  - @marko/compiler@5.36.0\n\n## 5.33.19\n\n### Patch Changes\n\n- [#2212](https://github.com/marko-js/marko/pull/2212) [`a1a91a4`](https://github.com/marko-js/marko/commit/a1a91a474853a4b6dc31217d374ee0e7e1179cec) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issues related to hydrating sections under a native tag with the `no-update` directive.\n\n- Updated dependencies [[`a1a91a4`](https://github.com/marko-js/marko/commit/a1a91a474853a4b6dc31217d374ee0e7e1179cec)]:\n  - @marko/compiler@5.35.14\n  - @marko/translator-default@5.32.16\n\n## 5.33.18\n\n### Patch Changes\n\n- [#2210](https://github.com/marko-js/marko/pull/2210) [`7d1bbdb`](https://github.com/marko-js/marko/commit/7d1bbdb9af63164448697ceb20490ee0776bc70f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - I completely messed up the release of https://github.com/marko-js/marko/pull/2205, this fixes that.\n\n- [#2210](https://github.com/marko-js/marko/pull/2210) [`7d1bbdb`](https://github.com/marko-js/marko/commit/7d1bbdb9af63164448697ceb20490ee0776bc70f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where native tags with `no-update` were not having their key serialized from the server causing a hydration diffing issue in some cases.\n\n- Updated dependencies [[`7d1bbdb`](https://github.com/marko-js/marko/commit/7d1bbdb9af63164448697ceb20490ee0776bc70f)]:\n  - @marko/translator-default@5.32.15\n  - @marko/compiler@5.35.13\n\n## 5.33.17\n\n### Patch Changes\n\n- [`c8fe951`](https://github.com/marko-js/marko/commit/c8fe951813bf6c7d11e581faf9e43522ae76ae98) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Bump compiler and translator to pull in Marko runtime changes.\n\n- Updated dependencies [[`c8fe951`](https://github.com/marko-js/marko/commit/c8fe951813bf6c7d11e581faf9e43522ae76ae98)]:\n  - @marko/compiler@5.35.12\n  - @marko/translator-default@5.32.14\n\n## 5.33.16\n\n### Patch Changes\n\n- [#2205](https://github.com/marko-js/marko/pull/2205) [`af4adcd`](https://github.com/marko-js/marko/commit/af4adcd1eecbb82930cef94dfb4b1917a2dc04f0) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where native tags with `no-update` were not having their key serialized from the server causing a hydration diffing issue in some cases.\n\n- [#2204](https://github.com/marko-js/marko/pull/2204) [`11acdf6`](https://github.com/marko-js/marko/commit/11acdf6f8766bc9b18373243a59e78e091f0b9db) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix regression where interpolating null/undefined in a script/style tag was being replaced with an empty string instead of toString'd and added.\n\n  Eg `<script>${undefined}</>` was changed to render nothing, when previously it output `undefined` as a string inside the script.\n\n  Note this behavior should not be relied on and will change in the next major of Marko to normalize the interpolated value to an empty string for nullish values.\n\n## 5.33.15\n\n### Patch Changes\n\n- [#2201](https://github.com/marko-js/marko/pull/2201) [`e0602bb`](https://github.com/marko-js/marko/commit/e0602bb245fbdd95dbdccba91762ea9375cabd12) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve the html content escape helpers. The existing implementations no longer maintain an edge in newer versions of node and the regexp based versions are faster.\n\n## 5.33.14\n\n### Patch Changes\n\n- [#2192](https://github.com/marko-js/marko/pull/2192) [`e2d5f18`](https://github.com/marko-js/marko/commit/e2d5f18d3cdc522251fdb8c314648d36e6dcf793) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix regression where text was bring split too eagerly while hydrating including text which was not rendered by the current component. This lead to a diffing issue where elements could display in the wrong order.\n\n## 5.33.13\n\n### Patch Changes\n\n- [#2190](https://github.com/marko-js/marko/pull/2190) [`638ca07`](https://github.com/marko-js/marko/commit/638ca07db382345c26f90247115eef13394e9905) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Update dependencies\n\n- Updated dependencies [[`638ca07`](https://github.com/marko-js/marko/commit/638ca07db382345c26f90247115eef13394e9905)]:\n  - @marko/compiler@5.35.11\n  - @marko/translator-default@5.32.12\n\n## 5.33.12\n\n### Patch Changes\n\n- [#2187](https://github.com/marko-js/marko/pull/2187) [`fe344b0`](https://github.com/marko-js/marko/commit/fe344b00041677f40ce49d03c0fb283322a1c898) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix some tags/class interop issues.\n\n- Updated dependencies [[`fe344b0`](https://github.com/marko-js/marko/commit/fe344b00041677f40ce49d03c0fb283322a1c898)]:\n  - @marko/compiler@5.35.10\n  - @marko/translator-default@5.32.11\n\n## 5.33.11\n\n### Patch Changes\n\n- [#2182](https://github.com/marko-js/marko/pull/2182) [`1fa3b05`](https://github.com/marko-js/marko/commit/1fa3b056006d5d0e3ac221b5b4a18b78de5add21) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Support tracking the \"input\" using babels scope analysis.\n\n- Updated dependencies [[`1fa3b05`](https://github.com/marko-js/marko/commit/1fa3b056006d5d0e3ac221b5b4a18b78de5add21)]:\n  - @marko/compiler@5.35.9\n  - @marko/translator-default@5.32.10\n\n## 5.33.10\n\n### Patch Changes\n\n- [#2180](https://github.com/marko-js/marko/pull/2180) [`a8bfb50`](https://github.com/marko-js/marko/commit/a8bfb50d7617d338c8e6b11c3f18cbb4829a5cba) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where vdom optimizer was including elements with user key attributes.\n\n- [#2177](https://github.com/marko-js/marko/pull/2177) [`ba110fb`](https://github.com/marko-js/marko/commit/ba110fb99092ffa1a254ab369626cba4a6e83430) Thanks [@rturnq](https://github.com/rturnq)! - Remove dependency on setTimeout which is not implemented in some isolates\n\n- Updated dependencies [[`a8bfb50`](https://github.com/marko-js/marko/commit/a8bfb50d7617d338c8e6b11c3f18cbb4829a5cba)]:\n  - @marko/translator-default@5.32.9\n  - @marko/compiler@5.35.8\n\n## 5.33.9\n\n### Patch Changes\n\n- [#2178](https://github.com/marko-js/marko/pull/2178) [`f8c66c6`](https://github.com/marko-js/marko/commit/f8c66c6c5bef4b124bb26242459fb1d9174258e6) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fixes an issue where elements with \"simple attributes\" (those with a combination of class, style and id attributes) were not correctly removing the attribute value when a new value was false, null or undefined.\n\n## 5.33.8\n\n### Patch Changes\n\n- [#2170](https://github.com/marko-js/marko/pull/2170) [`7ab2d67`](https://github.com/marko-js/marko/commit/7ab2d67c6c5271c441efeb5d58f406eae54379d0) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid writing unnecessary comments for server only components when in interop mode.\n\n- [#2173](https://github.com/marko-js/marko/pull/2173) [`614f432`](https://github.com/marko-js/marko/commit/614f432bfeab93eb35c23d6e378e914b27540f7f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix regression where hydrate dependencies had the incorrect resolved path if they were in node_modules.\n\n- Updated dependencies [[`614f432`](https://github.com/marko-js/marko/commit/614f432bfeab93eb35c23d6e378e914b27540f7f)]:\n  - @marko/translator-default@5.32.8\n  - @marko/compiler@5.35.7\n\n## 5.33.7\n\n### Patch Changes\n\n- [`409ef4e`](https://github.com/marko-js/marko/commit/409ef4e76d680b6e4202658fdf9567c663898d8b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix regression where hydrate entry files had incorrect relative paths.\n\n- Updated dependencies [[`409ef4e`](https://github.com/marko-js/marko/commit/409ef4e76d680b6e4202658fdf9567c663898d8b)]:\n  - @marko/translator-default@5.32.7\n  - @marko/compiler@5.35.6\n\n## 5.33.6\n\n### Patch Changes\n\n- [#2161](https://github.com/marko-js/marko/pull/2161) [`8ff7488`](https://github.com/marko-js/marko/commit/8ff74884311982b3f8895f47f9cbf8b31c6557b9) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid using mutable exported bindings for stream data access in tags api. (It did not work in Vite/Rollup)\n\n- Updated dependencies [[`f9cf946`](https://github.com/marko-js/marko/commit/f9cf9467cd7e0cb59dd3254f9695a56434e97743), [`f9cf946`](https://github.com/marko-js/marko/commit/f9cf9467cd7e0cb59dd3254f9695a56434e97743)]:\n  - @marko/translator-default@5.32.4\n\n## 5.33.5\n\n### Patch Changes\n\n- [#2156](https://github.com/marko-js/marko/pull/2156) [`cbb9f95`](https://github.com/marko-js/marko/commit/cbb9f95cb09d27e739d017cf7734d9f7b6149adf) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid using internal mangled props from tags api in the interop runtime.\n\n## 5.33.4\n\n### Patch Changes\n\n- [#2153](https://github.com/marko-js/marko/pull/2153) [`f2a924b`](https://github.com/marko-js/marko/commit/f2a924b2afa3d8f8810b71d72f91695c23bff4a2) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issues with importing both cjs and mjs @marko/runtime-tags when loaded via compat layer.\n\n- Updated dependencies [[`f2a924b`](https://github.com/marko-js/marko/commit/f2a924b2afa3d8f8810b71d72f91695c23bff4a2)]:\n  - @marko/translator-default@5.32.3\n\n## 5.33.3\n\n### Patch Changes\n\n- [#2146](https://github.com/marko-js/marko/pull/2146) [`e2b48ef`](https://github.com/marko-js/marko/commit/e2b48ef89dd8b7416da723ea9ac2f9fe5dded315) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix MARKO_DEBUG output for compat runtime.\n\n## 5.33.2\n\n### Patch Changes\n\n- [#2145](https://github.com/marko-js/marko/pull/2145) [`ccc19e2`](https://github.com/marko-js/marko/commit/ccc19e2657f992acdf6822c5bebc6bc7cf6e3460) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix regression where a textarea created with no value in the browser was setting `null` as the value.\n\n- [#2143](https://github.com/marko-js/marko/pull/2143) [`bb250c9`](https://github.com/marko-js/marko/commit/bb250c9bd530e37b11e41bf938312f0b4fe1c348) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where interop helpers were mixed commonjs and esm\n\n## 5.33.1\n\n### Patch Changes\n\n- [#2138](https://github.com/marko-js/marko/pull/2138) [`105c26b`](https://github.com/marko-js/marko/commit/105c26bd4f7f37bd6073e4795b01b83d31ecda06) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with package json src/dist override script.\n\n- Updated dependencies [[`105c26b`](https://github.com/marko-js/marko/commit/105c26bd4f7f37bd6073e4795b01b83d31ecda06)]:\n  - @marko/compiler@5.35.1\n  - @marko/translator-default@5.32.1\n\n## 5.33.0\n\n### Minor Changes\n\n- [#2004](https://github.com/marko-js/marko/pull/2004) [`2704819`](https://github.com/marko-js/marko/commit/27048199d6a0ee48ed8118e9f7017a94c7dc4f3d) Thanks [@mlrawlings](https://github.com/mlrawlings)! - Release alpha of tags api translator/runtime.\n\n- [#2004](https://github.com/marko-js/marko/pull/2004) [`2704819`](https://github.com/marko-js/marko/commit/27048199d6a0ee48ed8118e9f7017a94c7dc4f3d) Thanks [@mlrawlings](https://github.com/mlrawlings)! - Add `mount` api for client rendered components and expose `Symbol.asyncIterator` for server rendered components.\n\n### Patch Changes\n\n- Updated dependencies [[`2704819`](https://github.com/marko-js/marko/commit/27048199d6a0ee48ed8118e9f7017a94c7dc4f3d), [`2704819`](https://github.com/marko-js/marko/commit/27048199d6a0ee48ed8118e9f7017a94c7dc4f3d)]:\n  - @marko/translator-default@5.32.0\n  - @marko/compiler@5.35.0\n\n## 5.32.15\n\n### Patch Changes\n\n- [#2132](https://github.com/marko-js/marko/pull/2132) [`f3004d7`](https://github.com/marko-js/marko/commit/f3004d7baddd22a022217bb5e50ef8e6b6a80354) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix incorrect check for if a component has custom events\n\n## 5.32.14\n\n### Patch Changes\n\n- [#2123](https://github.com/marko-js/marko/pull/2123) [`5bcc111`](https://github.com/marko-js/marko/commit/5bcc111a1c7607948413a5cf798d66afc3077a91) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix regression where attribute tags used without renderBody content was clearing existing renderBody content in the input, eg via a spread.\n\n## 5.32.13\n\n### Patch Changes\n\n- [#2121](https://github.com/marko-js/marko/pull/2121) [`ddf3b5e`](https://github.com/marko-js/marko/commit/ddf3b5ef3279e3b0a93271d3022074393559aafd) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where splitText was incorrectly called during hydrate when the text node content did not match up.\n\n## 5.32.12\n\n### Patch Changes\n\n- [#2119](https://github.com/marko-js/marko/pull/2119) [`ee2d9f9`](https://github.com/marko-js/marko/commit/ee2d9f9880273382812690bf2609c6b8d698c0b1) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix regression with merging input and attribute tags if input defined the same property as the attribute tag name.\n\n- Updated dependencies [[`ee2d9f9`](https://github.com/marko-js/marko/commit/ee2d9f9880273382812690bf2609c6b8d698c0b1)]:\n  - @marko/translator-default@5.31.17\n\n## 5.32.11\n\n### Patch Changes\n\n- [#2117](https://github.com/marko-js/marko/pull/2117) [`462992e`](https://github.com/marko-js/marko/commit/462992ee51fea27e56894b367870e608ea1009a0) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where `:no-update` modifier was not working on special element handlers.\n\n- [#2117](https://github.com/marko-js/marko/pull/2117) [`462992e`](https://github.com/marko-js/marko/commit/462992ee51fea27e56894b367870e608ea1009a0) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Use vdom to vdom comparison for special attributes (input.value, input.checked and option.selected) to improve consistency with how other attributes are handled.\n\n- [#2117](https://github.com/marko-js/marko/pull/2117) [`462992e`](https://github.com/marko-js/marko/commit/462992ee51fea27e56894b367870e608ea1009a0) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid setting attribute value for special properties (like input.value, input.checked and option.selected)\n\n- [#2117](https://github.com/marko-js/marko/pull/2117) [`462992e`](https://github.com/marko-js/marko/commit/462992ee51fea27e56894b367870e608ea1009a0) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Normalize attribute values before setting value to avoid unnecessary work.\n\n- Updated dependencies [[`462992e`](https://github.com/marko-js/marko/commit/462992ee51fea27e56894b367870e608ea1009a0), [`462992e`](https://github.com/marko-js/marko/commit/462992ee51fea27e56894b367870e608ea1009a0), [`462992e`](https://github.com/marko-js/marko/commit/462992ee51fea27e56894b367870e608ea1009a0), [`462992e`](https://github.com/marko-js/marko/commit/462992ee51fea27e56894b367870e608ea1009a0)]:\n  - @marko/translator-default@5.31.16\n\n## 5.32.10\n\n### Patch Changes\n\n- [#2115](https://github.com/marko-js/marko/pull/2115) [`a55fb06`](https://github.com/marko-js/marko/commit/a55fb06ec638eb830eb72c71cb766fc05b6ea8cb) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve nested attribute tag handling with scriptlets.\n\n- Updated dependencies [[`a55fb06`](https://github.com/marko-js/marko/commit/a55fb06ec638eb830eb72c71cb766fc05b6ea8cb)]:\n  - @marko/translator-default@5.31.15\n  - @marko/compiler@5.34.7\n\n## 5.32.9\n\n### Patch Changes\n\n- [#2111](https://github.com/marko-js/marko/pull/2111) [`022879d`](https://github.com/marko-js/marko/commit/022879da1a7589f6207d7bbf47b97d1a2d596781) Thanks [@LuLaValva](https://github.com/LuLaValva)! - add componentIdPrefix to id of await client-reorder\n\n## 5.32.8\n\n### Patch Changes\n\n- [#2108](https://github.com/marko-js/marko/pull/2108) [`9a18ced`](https://github.com/marko-js/marko/commit/9a18ced27b04b6fbd391d84c61d97269bcf7f851) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix and optimize the output for vdom hoisting.\n\n- [#2108](https://github.com/marko-js/marko/pull/2108) [`a87b692`](https://github.com/marko-js/marko/commit/a87b69212f8b204dbe3d5a1396d95ddafd1adb85) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix diffing issues when swapping keyed elements between native tags, custom tags and fragments.\n\n- Updated dependencies [[`9a18ced`](https://github.com/marko-js/marko/commit/9a18ced27b04b6fbd391d84c61d97269bcf7f851), [`a87b692`](https://github.com/marko-js/marko/commit/a87b69212f8b204dbe3d5a1396d95ddafd1adb85)]:\n  - @marko/translator-default@5.31.14\n\n## 5.32.7\n\n### Patch Changes\n\n- [#2085](https://github.com/marko-js/marko/pull/2085) [`d82b21e`](https://github.com/marko-js/marko/commit/d82b21e8f505c5006d3781cf9056743dd9972fe1) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve compile error output.\n\n- Updated dependencies [[`d82b21e`](https://github.com/marko-js/marko/commit/d82b21e8f505c5006d3781cf9056743dd9972fe1)]:\n  - @marko/translator-default@5.31.13\n  - @marko/compiler@5.34.6\n\n## 5.32.6\n\n### Patch Changes\n\n- [#2079](https://github.com/marko-js/marko/pull/2079) [`2976dfa`](https://github.com/marko-js/marko/commit/2976dfac56c592dfd80ea79c6ea0e1389346f44c) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where additional exports were being removed when stripping typescript types.\n\n- Updated dependencies [[`2976dfa`](https://github.com/marko-js/marko/commit/2976dfac56c592dfd80ea79c6ea0e1389346f44c)]:\n  - @marko/compiler@5.34.5\n  - @marko/translator-default@5.31.12\n\n## 5.32.5\n\n### Patch Changes\n\n- [#2076](https://github.com/marko-js/marko/pull/2076) [`69b3ff5`](https://github.com/marko-js/marko/commit/69b3ff57c829418946e05c13b644a5560f589086) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrade all package deps to latest\n\n- Updated dependencies [[`69b3ff5`](https://github.com/marko-js/marko/commit/69b3ff57c829418946e05c13b644a5560f589086)]:\n  - @marko/translator-default@5.31.11\n  - @marko/compiler@5.34.4\n\n## 5.32.4\n\n### Patch Changes\n\n- [#2074](https://github.com/marko-js/marko/pull/2074) [`bf23c566fac02f4e2991be357a95483663493b3f`](https://github.com/marko-js/marko/commit/bf23c566fac02f4e2991be357a95483663493b3f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrade package lock and built types.\n\n- Updated dependencies [[`bf23c566fac02f4e2991be357a95483663493b3f`](https://github.com/marko-js/marko/commit/bf23c566fac02f4e2991be357a95483663493b3f)]:\n  - @marko/translator-default@5.31.10\n  - @marko/compiler@5.34.3\n\n## 5.32.3\n\n### Patch Changes\n\n- [#2071](https://github.com/marko-js/marko/pull/2071) [`652b7aa16`](https://github.com/marko-js/marko/commit/652b7aa1608ace877e713ce43486fca1b0a0400b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix types for onsecuritypolicyviolation native attribute.\n\n- [#2071](https://github.com/marko-js/marko/pull/2071) [`652b7aa16`](https://github.com/marko-js/marko/commit/652b7aa1608ace877e713ce43486fca1b0a0400b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix types for <await> tag attribute tags.\n\n## 5.32.2\n\n### Patch Changes\n\n- [#2069](https://github.com/marko-js/marko/pull/2069) [`977d69078`](https://github.com/marko-js/marko/commit/977d690784f1d97acb3494bb822fa852c1380685) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with printing variable declarations with multiple variables.\n\n- Updated dependencies [[`977d69078`](https://github.com/marko-js/marko/commit/977d690784f1d97acb3494bb822fa852c1380685)]:\n  - @marko/translator-default@5.31.9\n  - @marko/compiler@5.34.2\n\n## 5.32.1\n\n### Patch Changes\n\n- [#2067](https://github.com/marko-js/marko/pull/2067) [`ea859a547`](https://github.com/marko-js/marko/commit/ea859a547972be7a2fde6688890023c5bc85bc16) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Simplify the typings of Marko.NativeTags to work better across typescript versions.\n\n## 5.32.0\n\n### Minor Changes\n\n- [#2062](https://github.com/marko-js/marko/pull/2062) [`436ace040`](https://github.com/marko-js/marko/commit/436ace040b73d11908911d60c10845b6e99e8eca) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Add \"exports\" to marko.json\n\n### Patch Changes\n\n- Updated dependencies [[`436ace040`](https://github.com/marko-js/marko/commit/436ace040b73d11908911d60c10845b6e99e8eca)]:\n  - @marko/compiler@5.34.0\n\n## 5.31.18\n\n### Patch Changes\n\n- [#2060](https://github.com/marko-js/marko/pull/2060) [`648a94928`](https://github.com/marko-js/marko/commit/648a94928f662b04634a61395d5d48a956a8ff36) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Expose meta data about which child Marko templates were analyzed for a given compilation.\n\n- Updated dependencies [[`648a94928`](https://github.com/marko-js/marko/commit/648a94928f662b04634a61395d5d48a956a8ff36), [`aed88284b`](https://github.com/marko-js/marko/commit/aed88284b8b3c68965f70b6bdf9412c7100c5df5)]:\n  - @marko/compiler@5.33.8\n  - @marko/translator-default@5.31.8\n\n## 5.31.17\n\n### Patch Changes\n\n- [#2056](https://github.com/marko-js/marko/pull/2056) [`84f443d60`](https://github.com/marko-js/marko/commit/84f443d60539cc1b3382c6b16da4061070f97aca) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue when the Marko hot-reload runtime is loaded in native esm\n\n- Updated dependencies [[`84f443d60`](https://github.com/marko-js/marko/commit/84f443d60539cc1b3382c6b16da4061070f97aca)]:\n  - @marko/translator-default@5.31.7\n  - @marko/compiler@5.33.7\n\n## 5.31.16\n\n### Patch Changes\n\n- [#2054](https://github.com/marko-js/marko/pull/2054) [`1c5eccadf`](https://github.com/marko-js/marko/commit/1c5eccadf8d968552dbe8756905009107d783718) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix regression with @marko/babel-utils not exposing new parse helpers.\n\n- Updated dependencies [[`1c5eccadf`](https://github.com/marko-js/marko/commit/1c5eccadf8d968552dbe8756905009107d783718)]:\n  - @marko/compiler@5.33.6\n  - @marko/translator-default@5.31.6\n\n## 5.31.15\n\n### Patch Changes\n\n- [#2053](https://github.com/marko-js/marko/pull/2053) [`37b347eb5`](https://github.com/marko-js/marko/commit/37b347eb5e9e2d16badb170a880e2eed5d2892a9) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve compatibility of legacy Marko widgets loading a template compiled as esm.\n\n- Updated dependencies [[`5354d4411`](https://github.com/marko-js/marko/commit/5354d44112c56fcbbd7f44dd3bf91be1e5a7747c)]:\n  - @marko/translator-default@5.31.5\n  - @marko/compiler@5.33.5\n\n## 5.31.14\n\n### Patch Changes\n\n- [#2049](https://github.com/marko-js/marko/pull/2049) [`1554b1e1e`](https://github.com/marko-js/marko/commit/1554b1e1e53a75980af0b238cc27bed5ddfa215a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Allow `template.marko` to act as `index.marko` for backword compat with v4/v3.\n\n- Updated dependencies [[`1554b1e1e`](https://github.com/marko-js/marko/commit/1554b1e1e53a75980af0b238cc27bed5ddfa215a)]:\n  - @marko/translator-default@5.31.4\n  - @marko/compiler@5.33.4\n\n## 5.31.13\n\n### Patch Changes\n\n- [#2046](https://github.com/marko-js/marko/pull/2046) [`b7cefe4c6`](https://github.com/marko-js/marko/commit/b7cefe4c6f000fc01008ac5d75d2054a34f4f574) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Lazily check for global jQuery when patching legacy components.\n\n## 5.31.12\n\n### Patch Changes\n\n- [#2042](https://github.com/marko-js/marko/pull/2042) [`447104632`](https://github.com/marko-js/marko/commit/44710463258999ad037febef10264e32f3291157) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - When compiling async, prefer using the async babel api for loading babel config files.\n\n- [#2044](https://github.com/marko-js/marko/pull/2044) [`358fb2d22`](https://github.com/marko-js/marko/commit/358fb2d22e3e7bd7cba5e97f34547ff53c309f62) Thanks [@LuLaValva](https://github.com/LuLaValva)! - fix event handler types\n\n- [#2043](https://github.com/marko-js/marko/pull/2043) [`f94486b10`](https://github.com/marko-js/marko/commit/f94486b10fb8c7be63551d0aa4cbebdb8d03614b) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Add CSS camelCase properties\n\n- Updated dependencies [[`447104632`](https://github.com/marko-js/marko/commit/44710463258999ad037febef10264e32f3291157)]:\n  - @marko/compiler@5.33.3\n\n## 5.31.11\n\n### Patch Changes\n\n- [#2040](https://github.com/marko-js/marko/pull/2040) [`a5e3f0461`](https://github.com/marko-js/marko/commit/a5e3f046135bcdd054426974282d4ba870bdb97c) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix compat issue where markoWidgets.defineRenderer was not resolving the default export of a Marko 5 template.\n\n## 5.31.10\n\n### Patch Changes\n\n- [#2038](https://github.com/marko-js/marko/pull/2038) [`71a227a5f`](https://github.com/marko-js/marko/commit/71a227a5ff8b16c0bb983e082f28280518f712ce) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where using the longhand nested attribute tag syntax in a marko.json with a `target-property` defined was not registering the alias as a known attribute, leading to compile errors.\n\n- Updated dependencies [[`71a227a5f`](https://github.com/marko-js/marko/commit/71a227a5ff8b16c0bb983e082f28280518f712ce)]:\n  - @marko/translator-default@5.31.3\n  - @marko/compiler@5.33.2\n\n## 5.31.9\n\n### Patch Changes\n\n- [#2036](https://github.com/marko-js/marko/pull/2036) [`ea08cc2a9`](https://github.com/marko-js/marko/commit/ea08cc2a9bb494d5735dc0fe69b6aa85cb5ed179) Thanks [@rturnq](https://github.com/rturnq)! - Simplify batching, prevent treeshaking bug\n\n## 5.31.8\n\n### Patch Changes\n\n- [#2034](https://github.com/marko-js/marko/pull/2034) [`a340023b7`](https://github.com/marko-js/marko/commit/a340023b7ef59f1af9ad80f42ac69138ddd3d216) Thanks [@LuLaValva](https://github.com/LuLaValva)! - docs(concise-mode): add multiline attributes\n\n## 5.31.7\n\n### Patch Changes\n\n- [#2032](https://github.com/marko-js/marko/pull/2032) [`034f96741`](https://github.com/marko-js/marko/commit/034f967419d840ae7b8a8cead6c657d5cc64b0a6) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add js file extension to compiled import of the registry runtime. This improves prebundling in Vite.\n\n- Updated dependencies [[`034f96741`](https://github.com/marko-js/marko/commit/034f967419d840ae7b8a8cead6c657d5cc64b0a6)]:\n  - @marko/translator-default@5.31.2\n\n## 5.31.6\n\n### Patch Changes\n\n- [#2027](https://github.com/marko-js/marko/pull/2027) [`db819d388`](https://github.com/marko-js/marko/commit/db819d388e9419d7354a9639c59faa0cd3518305) Thanks [@mlrawlings](https://github.com/mlrawlings)! - Update Marko 5 Upgrade instructions\n\n## 5.31.5\n\n### Patch Changes\n\n- [#2024](https://github.com/marko-js/marko/pull/2024) [`085c87387`](https://github.com/marko-js/marko/commit/085c8738701146877958d81f88248cdf67678174) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid using the bare webpack include api to check if a module has already been loaded.\n\n## 5.31.4\n\n### Patch Changes\n\n- [#2020](https://github.com/marko-js/marko/pull/2020) [`6a4e947b5`](https://github.com/marko-js/marko/commit/6a4e947b5ac9944e61d7871d314a6325a0522d1d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure .marko files are resolved for legacy renderer taglib configs.\n\n- Updated dependencies [[`6a4e947b5`](https://github.com/marko-js/marko/commit/6a4e947b5ac9944e61d7871d314a6325a0522d1d)]:\n  - @marko/compiler@5.33.1\n  - @marko/translator-default@5.31.1\n\n## 5.31.3\n\n### Patch Changes\n\n- [#2018](https://github.com/marko-js/marko/pull/2018) [`7a22dc3d1`](https://github.com/marko-js/marko/commit/7a22dc3d16b0d9da9abc7b62c9aa917e54738a16) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix loading of legacy components in some test environments.\n\n## 5.31.2\n\n### Patch Changes\n\n- [#2016](https://github.com/marko-js/marko/pull/2016) [`fb46f0a91`](https://github.com/marko-js/marko/commit/fb46f0a9186a0b437e011b40fecf975eae0b9093) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Optimize preserve-tag implementation to use browser remap again.\n\n- [#2016](https://github.com/marko-js/marko/pull/2016) [`1b1df3f56`](https://github.com/marko-js/marko/commit/1b1df3f5674e09914bca448f045ff720002c3ae6) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where marko-widger renderers were not bound to the correct \"this\".\n\n## 5.31.1\n\n### Patch Changes\n\n- [#2014](https://github.com/marko-js/marko/pull/2014) [`636ae526d`](https://github.com/marko-js/marko/commit/636ae526d7f58fa9fe21b0d9e30beb711258002c) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid bundling load api when using legacy runtime.\n\n- [#2014](https://github.com/marko-js/marko/pull/2014) [`636ae526d`](https://github.com/marko-js/marko/commit/636ae526d7f58fa9fe21b0d9e30beb711258002c) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid loading legacy Marko compiler api if possible when using load api.\n\n## 5.31.0\n\n### Minor Changes\n\n- [#2012](https://github.com/marko-js/marko/pull/2012) [`9aede281f`](https://github.com/marko-js/marko/commit/9aede281f95a788df03d607b7d6ca10d9025d39f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add compiler option to disable initializing components when outputting hydrate code.\n\n### Patch Changes\n\n- [#2012](https://github.com/marko-js/marko/pull/2012) [`17099cd8f`](https://github.com/marko-js/marko/commit/17099cd8ff4ef5868b79f32bdb682fd7393e7139) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Allow skipping output of virtual dependencies by returning a falsey value from the `resolveVirtualDependency` option.\n\n- [#2012](https://github.com/marko-js/marko/pull/2012) [`ec21e799f`](https://github.com/marko-js/marko/commit/ec21e799f39e74c3d5b0fcfb5839a3954fbc7ad0) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where data (legacy alias of input) was overwritten by assignment but still being migrated.\n\n- Updated dependencies [[`9aede281f`](https://github.com/marko-js/marko/commit/9aede281f95a788df03d607b7d6ca10d9025d39f), [`17099cd8f`](https://github.com/marko-js/marko/commit/17099cd8ff4ef5868b79f32bdb682fd7393e7139), [`ec21e799f`](https://github.com/marko-js/marko/commit/ec21e799f39e74c3d5b0fcfb5839a3954fbc7ad0), [`6ba268c84`](https://github.com/marko-js/marko/commit/6ba268c841631b3ed36964c8f532e543885ad4f5)]:\n  - @marko/translator-default@5.31.0\n  - @marko/compiler@5.33.0\n\n## 5.30.2\n\n### Patch Changes\n\n- [#2010](https://github.com/marko-js/marko/pull/2010) [`c08f940c8`](https://github.com/marko-js/marko/commit/c08f940c8ea73806ed79d35d435b3844fbfb6759) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve upgrade guide to reference the new `marko-widgets` and `@marko/compat-v4` modules.\n\n## 5.30.1\n\n### Patch Changes\n\n- [#2008](https://github.com/marko-js/marko/pull/2008) [`1235cf700`](https://github.com/marko-js/marko/commit/1235cf7005447bdad7a84bacf20d40c7c457c03a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix regression with static template literal expressions.\n\n- Updated dependencies [[`1235cf700`](https://github.com/marko-js/marko/commit/1235cf7005447bdad7a84bacf20d40c7c457c03a)]:\n  - @marko/translator-default@5.30.1\n\n## 5.30.0\n\n### Minor Changes\n\n- [#2006](https://github.com/marko-js/marko/pull/2006) [`b2e70bc45`](https://github.com/marko-js/marko/commit/b2e70bc45006a8cccfa61ac99bbca40a71d05fd1) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add compute node helper to replace babels `evaluate` helper. This helper is less aggressive and doesn't suffer from the false positives that popped up with babels version.\n\n### Patch Changes\n\n- [#2005](https://github.com/marko-js/marko/pull/2005) [`4286236b0`](https://github.com/marko-js/marko/commit/4286236b0eaa3cfdbdde02f531d76fcaed3203ee) Thanks [@rturnq](https://github.com/rturnq)! - Handle errors thrown in await catch attribute\n\n- [#2006](https://github.com/marko-js/marko/pull/2006) [`b2e70bc45`](https://github.com/marko-js/marko/commit/b2e70bc45006a8cccfa61ac99bbca40a71d05fd1) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid adding trailing semicolon to style attribute output.\n\n- Updated dependencies [[`b2e70bc45`](https://github.com/marko-js/marko/commit/b2e70bc45006a8cccfa61ac99bbca40a71d05fd1), [`b2e70bc45`](https://github.com/marko-js/marko/commit/b2e70bc45006a8cccfa61ac99bbca40a71d05fd1), [`d45962db1`](https://github.com/marko-js/marko/commit/d45962db1def9b025a1d75d98b4c655c0565e3ef)]:\n  - @marko/translator-default@5.30.0\n  - @marko/compiler@5.32.0\n\n## 5.29.2\n\n### Patch Changes\n\n- [#1999](https://github.com/marko-js/marko/pull/1999) [`7957fb564`](https://github.com/marko-js/marko/commit/7957fb56485a8607ab5b928531001085aba2d104) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Switch to .d.marko file for <await> tag types to avoid issues when loaded in a pure typescript project. By default TypeScript doesn't play well with `node_modules` which are seen as `.js` files which is what the jsdoc version of a Marko file appears as. By switching to a `.d.marko` it is instead always seen as `.ts` which is always analyzed by typescript.\n\n- Updated dependencies [[`7957fb564`](https://github.com/marko-js/marko/commit/7957fb56485a8607ab5b928531001085aba2d104)]:\n  - @marko/translator-default@5.29.2\n\n## 5.29.1\n\n### Patch Changes\n\n- [#1997](https://github.com/marko-js/marko/pull/1997) [`2afa3f6e6`](https://github.com/marko-js/marko/commit/2afa3f6e61ca262debde88bc11400a6ba97a2f19) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure source maps are loaded in dev mode when using the @marko/register hook.\n\n- Updated dependencies [[`2afa3f6e6`](https://github.com/marko-js/marko/commit/2afa3f6e61ca262debde88bc11400a6ba97a2f19)]:\n  - @marko/compiler@5.31.1\n  - @marko/translator-default@5.29.1\n\n## 5.29.0\n\n### Minor Changes\n\n- [#1996](https://github.com/marko-js/marko/pull/1996) [`d93037843`](https://github.com/marko-js/marko/commit/d930378434279451b0113ae6a268304063b037f4) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Move <macro> tag validation to the translate phase and expose new utilities for working with macros in @marko/babel-utils. This allows for migration/transformer/etc compiler hooks to better work with <macro>'s.\n\n### Patch Changes\n\n- Updated dependencies [[`d93037843`](https://github.com/marko-js/marko/commit/d930378434279451b0113ae6a268304063b037f4), [`57b280b2f`](https://github.com/marko-js/marko/commit/57b280b2ff0af217c8381a1b0a9ef61a31ba211c)]:\n  - @marko/translator-default@5.29.0\n  - @marko/compiler@5.31.0\n\n## 5.28.3\n\n### Patch Changes\n\n- [#1992](https://github.com/marko-js/marko/pull/1992) [`1bc993012`](https://github.com/marko-js/marko/commit/1bc993012375315a6cbda3eed75291abf821de6b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix regression which would happen if tools tried to \"delete\" the `loc` property on error instances returned from Marko. This property is now configurable and can be deleted again.\n\n- Updated dependencies [[`1bc993012`](https://github.com/marko-js/marko/commit/1bc993012375315a6cbda3eed75291abf821de6b)]:\n  - @marko/compiler@5.30.3\n  - @marko/translator-default@5.28.3\n\n## 5.28.2\n\n### Patch Changes\n\n- [#1990](https://github.com/marko-js/marko/pull/1990) [`a54a23794`](https://github.com/marko-js/marko/commit/a54a2379487fd20e6598d5fdfc7c7dbe0f644e8b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Change the stack frame for error messages generated by the compiler to work better with how node prints error messages.\n\n- Updated dependencies [[`a54a23794`](https://github.com/marko-js/marko/commit/a54a2379487fd20e6598d5fdfc7c7dbe0f644e8b)]:\n  - @marko/translator-default@5.28.2\n  - @marko/compiler@5.30.2\n\n## 5.28.1\n\n### Patch Changes\n\n- [#1987](https://github.com/marko-js/marko/pull/1987) [`8bf5cb1f0`](https://github.com/marko-js/marko/commit/8bf5cb1f097769c835a452ff4bbea67a6c741810) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - When duplicate taglib entries are found and merged, nullish values are now ignored. This means if you specify a property in a taglib it will not be unset by another (merged) taglib.\n\n- [#1986](https://github.com/marko-js/marko/pull/1986) [`1b29b859f`](https://github.com/marko-js/marko/commit/1b29b859fb0876d9a8d0d7bba44d08f77f1706bb) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where `module-code` entries were not properly checking the expected module output (causing them to always output esm). This was previously fine due to the cjs conversion plugin running for these, however a recent change caused that plugin to no longer run for these files since (which should have been unnecessary, except for that they had the incorrect check).\n\n- Updated dependencies [[`8bf5cb1f0`](https://github.com/marko-js/marko/commit/8bf5cb1f097769c835a452ff4bbea67a6c741810), [`1b29b859f`](https://github.com/marko-js/marko/commit/1b29b859fb0876d9a8d0d7bba44d08f77f1706bb)]:\n  - @marko/compiler@5.30.1\n  - @marko/translator-default@5.28.1\n\n## 5.28.0\n\n### Minor Changes\n\n- [#1984](https://github.com/marko-js/marko/pull/1984) [`c6e2d0655`](https://github.com/marko-js/marko/commit/c6e2d06554166daa8eefe34121323413cf2d9cb1) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Allow migrator as a tag entry file.\n\n### Patch Changes\n\n- Updated dependencies [[`c6e2d0655`](https://github.com/marko-js/marko/commit/c6e2d06554166daa8eefe34121323413cf2d9cb1)]:\n  - @marko/compiler@5.30.0\n  - @marko/translator-default@5.28.0\n\n## 5.27.1\n\n### Patch Changes\n\n- [#1982](https://github.com/marko-js/marko/pull/1982) [`d75ce5243`](https://github.com/marko-js/marko/commit/d75ce52432470544611b758f1d97fe255b9747b4) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where the `finish` event was not being invoked when rendering a Marko template with a mock writable that was not an event emitter\n\n## 5.27.0\n\n### Minor Changes\n\n- [#1980](https://github.com/marko-js/marko/pull/1980) [`9d3b34eef`](https://github.com/marko-js/marko/commit/9d3b34eefa2d0d9f9b27b9635950360b62be2f1f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Allow parse errors to be recovered from by migrations. This adds a new ast node type of MarkoParseError.\n  MarkoParseError nodes can be removed during the migration stage to handle legacy syntaxes. Any MarkoParseError\n  left in the AST at the end of the migration phase will throw an error similar to what it would have previously\n  thrown synchronously.\n\n  This also means that all parse errors can be surfaced as an aggregate error instead of bailing on the first\n  parse error. When the compiler is ran with `errorRecovery: true` these errors become diagnostics instead of\n  being thrown.\n\n### Patch Changes\n\n- [#1980](https://github.com/marko-js/marko/pull/1980) [`20deb5699`](https://github.com/marko-js/marko/commit/20deb5699c7b7393dd7ba4b95cdbb60945a9319f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue that could happen if DOMContentLoaded was manually invoked multiple times.\n\n- Updated dependencies [[`9d3b34eef`](https://github.com/marko-js/marko/commit/9d3b34eefa2d0d9f9b27b9635950360b62be2f1f)]:\n  - @marko/translator-default@5.27.0\n  - @marko/compiler@5.29.0\n\n## 5.26.5\n\n### Patch Changes\n\n- [#1978](https://github.com/marko-js/marko/pull/1978) [`931a5d24b`](https://github.com/marko-js/marko/commit/931a5d24bbf77d7b29922f34d66d8ca7c42cea07) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoids loading babel config when compiler output is set to source or migrate.\n\n- Updated dependencies [[`931a5d24b`](https://github.com/marko-js/marko/commit/931a5d24bbf77d7b29922f34d66d8ca7c42cea07)]:\n  - @marko/compiler@5.28.5\n  - @marko/translator-default@5.26.5\n\n## 5.26.4\n\n### Patch Changes\n\n- [#1976](https://github.com/marko-js/marko/pull/1976) [`7555a46a1`](https://github.com/marko-js/marko/commit/7555a46a19cee973b279fd582ffd51671490dc40) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where aggregate errors from the compiler were not exposing error objects (was exposing the raw diagnostics).\n\n- [#1976](https://github.com/marko-js/marko/pull/1976) [`7555a46a1`](https://github.com/marko-js/marko/commit/7555a46a19cee973b279fd582ffd51671490dc40) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Include locations and original message for errors thrown from the compiler.\n\n- Updated dependencies [[`7555a46a1`](https://github.com/marko-js/marko/commit/7555a46a19cee973b279fd582ffd51671490dc40), [`7555a46a1`](https://github.com/marko-js/marko/commit/7555a46a19cee973b279fd582ffd51671490dc40)]:\n  - @marko/compiler@5.28.4\n  - @marko/translator-default@5.26.4\n\n## 5.26.3\n\n### Patch Changes\n\n- [#1974](https://github.com/marko-js/marko/pull/1974) [`42f7b46e2`](https://github.com/marko-js/marko/commit/42f7b46e25168ef4998e9c3f6014f9b6e1234486) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Run migration fixes synchronously.\n\n- Updated dependencies [[`42f7b46e2`](https://github.com/marko-js/marko/commit/42f7b46e25168ef4998e9c3f6014f9b6e1234486)]:\n  - @marko/compiler@5.28.3\n  - @marko/translator-default@5.26.3\n\n## 5.26.2\n\n### Patch Changes\n\n- [#1972](https://github.com/marko-js/marko/pull/1972) [`897b8beba`](https://github.com/marko-js/marko/commit/897b8bebadbb08e0457fb959bd573cb2a5a4d593) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where error messages without a source location were losing their message\n\n- Updated dependencies [[`897b8beba`](https://github.com/marko-js/marko/commit/897b8bebadbb08e0457fb959bd573cb2a5a4d593)]:\n  - @marko/compiler@5.28.2\n  - @marko/translator-default@5.26.2\n\n## 5.26.1\n\n### Patch Changes\n\n- [#1970](https://github.com/marko-js/marko/pull/1970) [`ce5c40c95`](https://github.com/marko-js/marko/commit/ce5c40c9570c3410f62a2c9feb635ee7c7e54799) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue when outputting hydrate code with commonjs modules enabled.\n\n- Updated dependencies [[`ce5c40c95`](https://github.com/marko-js/marko/commit/ce5c40c9570c3410f62a2c9feb635ee7c7e54799)]:\n  - @marko/translator-default@5.26.1\n  - @marko/compiler@5.28.1\n\n## 5.26.0\n\n### Minor Changes\n\n- [#1968](https://github.com/marko-js/marko/pull/1968) [`70922e68e`](https://github.com/marko-js/marko/commit/70922e68e07578a867fff846e9bb623d64298e14) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add support for additional diagnostics emitted from the compiler.\n\n### Patch Changes\n\n- Updated dependencies [[`70922e68e`](https://github.com/marko-js/marko/commit/70922e68e07578a867fff846e9bb623d64298e14)]:\n  - @marko/translator-default@5.26.0\n  - @marko/compiler@5.28.0\n\n## 5.25.18\n\n### Patch Changes\n\n- [`ddc6b6ca0`](https://github.com/marko-js/marko/commit/ddc6b6ca00e3e9e0125d9f2da0953d9cb7883e07) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix typescript syntax error in docs.\n\n## 5.25.17\n\n### Patch Changes\n\n- [#1965](https://github.com/marko-js/marko/pull/1965) [`08ea9febc`](https://github.com/marko-js/marko/commit/08ea9febcf1d8652409a23b82f3d2c2d912bbd52) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fixes support for usage with [arc](https://github.com/eBay/arc) and adaptive `.marko` files.\n\n- Updated dependencies [[`08ea9febc`](https://github.com/marko-js/marko/commit/08ea9febcf1d8652409a23b82f3d2c2d912bbd52)]:\n  - @marko/translator-default@5.25.9\n\n## 5.25.16\n\n### Patch Changes\n\n- [#1963](https://github.com/marko-js/marko/pull/1963) [`a00c63f5f`](https://github.com/marko-js/marko/commit/a00c63f5f0995647450ba0fe1eeca25050dfbf03) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure all component lifecycle methods invoked when HMR'ing a class component with lifecycle changes.\n\n- [#1963](https://github.com/marko-js/marko/pull/1963) [`a00c63f5f`](https://github.com/marko-js/marko/commit/a00c63f5f0995647450ba0fe1eeca25050dfbf03) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid removing SSR transcluded content while doing updating via HMR.\n\n## 5.25.15\n\n### Patch Changes\n\n- [#1960](https://github.com/marko-js/marko/pull/1960) [`9cf477857`](https://github.com/marko-js/marko/commit/9cf477857dee2ab58ada5daef7eb117ccf92726e) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Native event handler strings\n\n## 5.25.14\n\n### Patch Changes\n\n- [#1953](https://github.com/marko-js/marko/pull/1953) [`2b88703d5`](https://github.com/marko-js/marko/commit/2b88703d5f92528d97ec7285739267242a8f2815) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Accuracy of types for Marko.Input<\"input\"> has been improved\n\n## 5.25.13\n\n### Patch Changes\n\n- [`946f596c2`](https://github.com/marko-js/marko/commit/946f596c2de04b1742ba83c32d0e72575b276632) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Reduce restrictions on Marko.Component type. Add Marko.Template overload type for callback function passed to render.\n\n## 5.25.12\n\n### Patch Changes\n\n- [#1949](https://github.com/marko-js/marko/pull/1949) [`7f6b65a4b`](https://github.com/marko-js/marko/commit/7f6b65a4b6d34dad6b4f6961be3b8766b7146e63) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Use @internal module to host browser/worker remapped files. Improves support for some tools that don't work well with nested package.json files.\n\n- Updated dependencies [[`7f6b65a4b`](https://github.com/marko-js/marko/commit/7f6b65a4b6d34dad6b4f6961be3b8766b7146e63)]:\n  - @marko/translator-default@5.25.8\n  - @marko/compiler@5.27.8\n\n## 5.25.11\n\n### Patch Changes\n\n- [#1947](https://github.com/marko-js/marko/pull/1947) [`7264e6ce6`](https://github.com/marko-js/marko/commit/7264e6ce6361c55ca73a25b9c2d2a36d4e48ee38) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Improve TS native tag event handler types\n  - add onToggle\n  - add onFormData\n  - move onSubmit into form\n\n## 5.25.10\n\n### Patch Changes\n\n- [#1945](https://github.com/marko-js/marko/pull/1945) [`ce2ab4763`](https://github.com/marko-js/marko/commit/ce2ab47637a63cccc7adde2ea0adb2b59e38f258) Thanks [@LuLaValva](https://github.com/LuLaValva)! - fix(typescript): add no-update-body and no-update-body-if\n\n## 5.25.9\n\n### Patch Changes\n\n- [#1940](https://github.com/marko-js/marko/pull/1940) [`b31487946`](https://github.com/marko-js/marko/commit/b314879466046d0f06e22c30f93a306de189c72a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add back NativeTagInput and NativeTagReturn types as deprecated.\n\n## 5.25.8\n\n### Patch Changes\n\n- [#1938](https://github.com/marko-js/marko/pull/1938) [`d8a922085`](https://github.com/marko-js/marko/commit/d8a922085ec068b0791211b05e749f3a9695d478) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve typing for some <input> fields.\n\n## 5.25.7\n\n### Patch Changes\n\n- [#1936](https://github.com/marko-js/marko/pull/1936) [`f99e6deff`](https://github.com/marko-js/marko/commit/f99e6deff2e68b0aea8ab7918e6a6c3a509f311a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix regression with the HTML <input> tag types.\n\n- [#1936](https://github.com/marko-js/marko/pull/1936) [`f216ca254`](https://github.com/marko-js/marko/commit/f216ca25401e10c9878d37c38d371c6f706f3a25) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add the ability to extend the list of valid css property names when setting a style attrbitue with an object (useful for custom properties).\n\n## 5.25.6\n\n### Patch Changes\n\n- [#1934](https://github.com/marko-js/marko/pull/1934) [`722467a6c`](https://github.com/marko-js/marko/commit/722467a6cf72cf024fbc5a1fa802060de9f2dec3) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Make the Input type less strict to avoid issues with extending it in a custom tag.\n\n- [#1934](https://github.com/marko-js/marko/pull/1934) [`04d6fad6d`](https://github.com/marko-js/marko/commit/04d6fad6d599adc98d6f0ef00a5c44b4a4fc7485) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where types were not being stripped from the inline Marko component class.\n\n- [#1934](https://github.com/marko-js/marko/pull/1934) [`c492349a8`](https://github.com/marko-js/marko/commit/c492349a840c4d9cb9693258eac8d96663b29989) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix style attribute types.\n\n- [#1934](https://github.com/marko-js/marko/pull/1934) [`4523d7ce1`](https://github.com/marko-js/marko/commit/4523d7ce1baedc259b0d1c0de338b280509c8bd4) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Allow Marko.HTMLAttributes interface to be used without specifying a generic.\n\n- [#1934](https://github.com/marko-js/marko/pull/1934) [`a5fbf6cb3`](https://github.com/marko-js/marko/commit/a5fbf6cb3bde86cb37c66d19625fbe7a994b9ab4) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Expose types for the Marko attribute directives.\n\n- Updated dependencies [[`04d6fad6d`](https://github.com/marko-js/marko/commit/04d6fad6d599adc98d6f0ef00a5c44b4a4fc7485)]:\n  - @marko/compiler@5.27.7\n  - @marko/translator-default@5.25.7\n\n## 5.25.5\n\n### Patch Changes\n\n- [#1929](https://github.com/marko-js/marko/pull/1929) [`c7a197a5c`](https://github.com/marko-js/marko/commit/c7a197a5c2e49e4b365d185d6e24ab431a61abc9) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Adds strict typescript types for the native HTML tags.\n\n- Updated dependencies [[`c7a197a5c`](https://github.com/marko-js/marko/commit/c7a197a5c2e49e4b365d185d6e24ab431a61abc9)]:\n  - @marko/compiler@5.27.6\n  - @marko/translator-default@5.25.6\n\n## 5.25.4\n\n### Patch Changes\n\n- [#1923](https://github.com/marko-js/marko/pull/1923) [`62afb3256`](https://github.com/marko-js/marko/commit/62afb3256a0c402e75b90f06af4e8cdc5c8112f3) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Remove class lifecycle types to avoid the need to `override` them.\n\n- Updated dependencies [[`62afb3256`](https://github.com/marko-js/marko/commit/62afb3256a0c402e75b90f06af4e8cdc5c8112f3)]:\n  - @marko/compiler@5.27.4\n  - @marko/translator-default@5.25.4\n\n## 5.25.3\n\n### Patch Changes\n\n- [#1921](https://github.com/marko-js/marko/pull/1921) [`1fe71a502`](https://github.com/marko-js/marko/commit/1fe71a5020c5930c63e9c7ff226a3befca0e58a4) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid using `typeof window` and prefer `typeof document` checks for browser environment (improves future deno support).\n\n- [#1921](https://github.com/marko-js/marko/pull/1921) [`f0c697d7b`](https://github.com/marko-js/marko/commit/f0c697d7b5b0afcbe524f390db2b3c5fa54d5607) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoids using a package.json remap for the browser implementation of the \\_preserve internal tag (used to implement `no-update` directives). This fixes an issue where in vite the module could not be loaded properly.\n\n- Updated dependencies [[`1fe71a502`](https://github.com/marko-js/marko/commit/1fe71a5020c5930c63e9c7ff226a3befca0e58a4), [`f0c697d7b`](https://github.com/marko-js/marko/commit/f0c697d7b5b0afcbe524f390db2b3c5fa54d5607)]:\n  - @marko/compiler@5.27.3\n  - @marko/translator-default@5.25.3\n\n## 5.25.2\n\n### Patch Changes\n\n- [#1920](https://github.com/marko-js/marko/pull/1920) [`7d5dab41c`](https://github.com/marko-js/marko/commit/7d5dab41c33cacbdff376570df09f65eb228a6a9) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid adding `export {}` (from \"@babel/plugin-transform-typescript\") when outputing a template with the types stripped.\n\n- [#1918](https://github.com/marko-js/marko/pull/1918) [`cceab7d20`](https://github.com/marko-js/marko/commit/cceab7d2061c627d5f3ea296f0acba80f97ad494) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Reduce script parsing restrictions added by Babel.\n  This was causing Babel to error when parsing partial scripts.\n\n  ```marko\n  static const x = 1;\n  export { x };\n  ```\n\n  Before this change in the above code Babel would error when parsing `export { x }` saying `x` was not previously defined. This is because Marko parses these statements in isolation.\n\n- [#1920](https://github.com/marko-js/marko/pull/1920) [`7d5dab41c`](https://github.com/marko-js/marko/commit/7d5dab41c33cacbdff376570df09f65eb228a6a9) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid outputing a `declare`'d type on a `class`.\n\n- Updated dependencies [[`7d5dab41c`](https://github.com/marko-js/marko/commit/7d5dab41c33cacbdff376570df09f65eb228a6a9), [`cceab7d20`](https://github.com/marko-js/marko/commit/cceab7d2061c627d5f3ea296f0acba80f97ad494), [`7d5dab41c`](https://github.com/marko-js/marko/commit/7d5dab41c33cacbdff376570df09f65eb228a6a9)]:\n  - @marko/compiler@5.27.2\n  - @marko/translator-default@5.25.2\n\n## 5.25.1\n\n### Patch Changes\n\n- [#1916](https://github.com/marko-js/marko/pull/1916) [`ac1d5062a`](https://github.com/marko-js/marko/commit/ac1d5062a7be8bb359ba8d378d3c7b2ec6dc14f6) Thanks [@mlrawlings](https://github.com/mlrawlings)! - fix: modify/remove some inefficient regexes\n\n- Updated dependencies [[`ac1d5062a`](https://github.com/marko-js/marko/commit/ac1d5062a7be8bb359ba8d378d3c7b2ec6dc14f6)]:\n  - @marko/compiler@5.27.1\n  - @marko/translator-default@5.25.1\n\n## 5.25.0\n\n### Minor Changes\n\n- [#1909](https://github.com/marko-js/marko/pull/1909) [`e8f1370cf`](https://github.com/marko-js/marko/commit/e8f1370cf668bb579e48fd05a60c086bed6bb466) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Allow repeated attribute tags without using a `marko.json` file. Attribute tag objects now also contain `Symbol.iterator` implementation to make the single case more easily forwarded to the `<for>` tag.\n\n### Patch Changes\n\n- [#1914](https://github.com/marko-js/marko/pull/1914) [`22228e804`](https://github.com/marko-js/marko/commit/22228e804c76d630c0fc333fa4750bb6e42c0814) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrades the included version of HTMLJS-Parser\n\n- [#1910](https://github.com/marko-js/marko/pull/1910) [`8512cf397`](https://github.com/marko-js/marko/commit/8512cf3976ebf67dcd19ba4485b5e38979061520) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Removes circular dependencies from the Marko runtime.\n\n- [#1913](https://github.com/marko-js/marko/pull/1913) [`2d3155e7b`](https://github.com/marko-js/marko/commit/2d3155e7b71b3d6291384666fccaa31bcf09ad06) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid using eval (in dev mode) for providing a better class name on component constructors.\n\n- Updated dependencies [[`22228e804`](https://github.com/marko-js/marko/commit/22228e804c76d630c0fc333fa4750bb6e42c0814), [`8512cf397`](https://github.com/marko-js/marko/commit/8512cf3976ebf67dcd19ba4485b5e38979061520), [`e8f1370cf`](https://github.com/marko-js/marko/commit/e8f1370cf668bb579e48fd05a60c086bed6bb466)]:\n  - @marko/compiler@5.27.0\n  - @marko/translator-default@5.25.0\n\n## 5.24.0\n\n### Minor Changes\n\n- [#1907](https://github.com/marko-js/marko/pull/1907) [`7211a6937`](https://github.com/marko-js/marko/commit/7211a6937b2044a14f2c2194269a697c76066b54) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Expose `$global` as a shorthand for `out.global` within the template scope.\n\n### Patch Changes\n\n- Updated dependencies [[`7211a6937`](https://github.com/marko-js/marko/commit/7211a6937b2044a14f2c2194269a697c76066b54)]:\n  - @marko/translator-default@5.24.0\n  - @marko/compiler@5.26.0\n\n## 5.23.0\n\n### Minor Changes\n\n- [#1899](https://github.com/marko-js/marko/pull/1899) [`4fc38e800`](https://github.com/marko-js/marko/commit/4fc38e80010241da76d24a46c2cd838aa5cf309f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Expose the ability to intercept errors from the taglib builder.\n\n### Patch Changes\n\n- Updated dependencies [[`4fc38e800`](https://github.com/marko-js/marko/commit/4fc38e80010241da76d24a46c2cd838aa5cf309f)]:\n  - @marko/compiler@5.25.0\n  - @marko/translator-default@5.23.0\n\n## 5.22.9\n\n### Patch Changes\n\n- [#1895](https://github.com/marko-js/marko/pull/1895) [`230523adf`](https://github.com/marko-js/marko/commit/230523adf139591846c8c29737e89bb8b4a818b1) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where Marko.Component global was potentially not registered before the component file was loaded.\n\n## 5.22.8\n\n### Patch Changes\n\n- [`268d0c32e`](https://github.com/marko-js/marko/commit/268d0c32eb3e9f8a0f3a5a49730d1afdf0b7ab91) Thanks [@mlrawlings](https://github.com/mlrawlings)! - Add docs for using TypeScript with Marko\n\n## 5.22.7\n\n### Patch Changes\n\n- [#1892](https://github.com/marko-js/marko/pull/1892) [`c55ae937c`](https://github.com/marko-js/marko/commit/c55ae937c4d756482d49a6b8797669cd39ca6288) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve types for the await tag and Marko.Template.\n\n- Updated dependencies [[`c55ae937c`](https://github.com/marko-js/marko/commit/c55ae937c4d756482d49a6b8797669cd39ca6288)]:\n  - @marko/translator-default@5.22.6\n  - @marko/compiler@5.23.6\n\n## 5.22.6\n\n### Patch Changes\n\n- [#1890](https://github.com/marko-js/marko/pull/1890) [`768fa17cb`](https://github.com/marko-js/marko/commit/768fa17cb67e4643bafbf5a91679af1f17f5f4fd) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - No longer require state to be present when writing types for component files.\n\n## 5.22.5\n\n### Patch Changes\n\n- [#1888](https://github.com/marko-js/marko/pull/1888) [`d110b0b5f`](https://github.com/marko-js/marko/commit/d110b0b5f6607a911d15b2045d46b9aa6ecba2d2) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve type definitions.\n\n- Updated dependencies [[`d110b0b5f`](https://github.com/marko-js/marko/commit/d110b0b5f6607a911d15b2045d46b9aa6ecba2d2)]:\n  - @marko/compiler@5.23.5\n  - @marko/translator-default@5.22.5\n\n## 5.22.4\n\n### Patch Changes\n\n- [`23e36a04b`](https://github.com/marko-js/marko/commit/23e36a04b0c6f7d6b53307d7838f61a1e0f2ce29) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add missing type definition file to exposed types in package.json.\n\n- [`d920e833d`](https://github.com/marko-js/marko/commit/d920e833df0b58456f28f7cb45ebd38b56c05ba7) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add missing type definition for taglib.\n\n- Updated dependencies [[`23e36a04b`](https://github.com/marko-js/marko/commit/23e36a04b0c6f7d6b53307d7838f61a1e0f2ce29), [`d920e833d`](https://github.com/marko-js/marko/commit/d920e833df0b58456f28f7cb45ebd38b56c05ba7)]:\n  - @marko/compiler@5.23.4\n  - @marko/translator-default@5.22.4\n\n## 5.22.3\n\n### Patch Changes\n\n- [#1885](https://github.com/marko-js/marko/pull/1885) [`f1efd707a`](https://github.com/marko-js/marko/commit/f1efd707aa1c2aeac092ef7fff4ef5cb959f45b6) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add taglib extensions and type definitions for typescript support.\n\n- Updated dependencies [[`f1efd707a`](https://github.com/marko-js/marko/commit/f1efd707aa1c2aeac092ef7fff4ef5cb959f45b6)]:\n  - @marko/translator-default@5.22.3\n  - @marko/compiler@5.23.3\n\n## 5.22.2\n\n### Patch Changes\n\n- [#1880](https://github.com/marko-js/marko/pull/1880) [`c4cce33e8`](https://github.com/marko-js/marko/commit/c4cce33e8c917af7c45ffc64d748e88364a0b91a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix an issue where merging scripts (via the out.script api) was not properly inserting delimeters when scripts are added in different async writers.\n\n- Updated dependencies [[`c4cce33e8`](https://github.com/marko-js/marko/commit/c4cce33e8c917af7c45ffc64d748e88364a0b91a)]:\n  - @marko/compiler@5.23.2\n  - @marko/translator-default@5.22.2\n\n## 5.22.1\n\n### Patch Changes\n\n- [#1875](https://github.com/marko-js/marko/pull/1875) [`b744720db`](https://github.com/marko-js/marko/commit/b744720db5483633643c5a75bd2eedc37aa9ff25) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrades \"magic-string\" module (used for css sourcemaps) to avoid deprecation warning.\n\n- Updated dependencies [[`b744720db`](https://github.com/marko-js/marko/commit/b744720db5483633643c5a75bd2eedc37aa9ff25)]:\n  - @marko/translator-default@5.22.1\n  - @marko/compiler@5.23.1\n\n## 5.22.0\n\n### Minor Changes\n\n- [#1865](https://github.com/marko-js/marko/pull/1865) [`797e90489`](https://github.com/marko-js/marko/commit/797e90489359e1e87a9756da5082c1e085555546) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Changes the \"default\" attributes name to be \"value\". This is technically a breaking change, but it primarily only impacts the tags-api-preview which will also be getting a release to support this change.\n\n### Patch Changes\n\n- Updated dependencies [[`797e90489`](https://github.com/marko-js/marko/commit/797e90489359e1e87a9756da5082c1e085555546)]:\n  - @marko/compiler@5.23.0\n  - @marko/translator-default@5.22.0\n\n## 5.21.11\n\n### Patch Changes\n\n- [#1862](https://github.com/marko-js/marko/pull/1862) [`30e0ea43d`](https://github.com/marko-js/marko/commit/30e0ea43d56e0a3c59748eae32a0ab85921c1aeb) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid mutating component instance in HMR mode. (Improves support in tags api preview)\n\n- Updated dependencies [[`30e0ea43d`](https://github.com/marko-js/marko/commit/30e0ea43d56e0a3c59748eae32a0ab85921c1aeb)]:\n  - @marko/compiler@5.22.10\n  - @marko/translator-default@5.21.8\n\n## 5.21.10\n\n### Patch Changes\n\n- [#1860](https://github.com/marko-js/marko/pull/1860) [`e64809458`](https://github.com/marko-js/marko/commit/e648094582c6a5c10d567bb7c844b50b6541e355) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve tag scanning performance.\n\n* [#1860](https://github.com/marko-js/marko/pull/1860) [`e64809458`](https://github.com/marko-js/marko/commit/e648094582c6a5c10d567bb7c844b50b6541e355) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Update htmljs-parser version.\n\n* Updated dependencies [[`e64809458`](https://github.com/marko-js/marko/commit/e648094582c6a5c10d567bb7c844b50b6541e355), [`e64809458`](https://github.com/marko-js/marko/commit/e648094582c6a5c10d567bb7c844b50b6541e355)]:\n  - @marko/compiler@5.22.9\n  - @marko/translator-default@5.21.7\n\n## 5.21.9\n\n### Patch Changes\n\n- [#1845](https://github.com/marko-js/marko/pull/1845) [`65bab8e6d`](https://github.com/marko-js/marko/commit/65bab8e6df02e6fd485a45d9a9c2200545f21479) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where Marko runtime was being incorrectly matched when swapping from dev to prod runtimes.\n\n- Updated dependencies [[`65bab8e6d`](https://github.com/marko-js/marko/commit/65bab8e6df02e6fd485a45d9a9c2200545f21479)]:\n  - @marko/compiler@5.22.6\n  - @marko/translator-default@5.21.5\n\n## 5.21.8\n\n### Patch Changes\n\n- [#1843](https://github.com/marko-js/marko/pull/1843) [`963f08ce9`](https://github.com/marko-js/marko/commit/963f08ce92e56f1d210068bedd5fc033b6db71c0) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrade htmljs-parser.\n\n- Updated dependencies [[`963f08ce9`](https://github.com/marko-js/marko/commit/963f08ce92e56f1d210068bedd5fc033b6db71c0)]:\n  - @marko/compiler@5.22.5\n\n## 5.21.7\n\n### Patch Changes\n\n- [#1841](https://github.com/marko-js/marko/pull/1841) [`26cd305ea`](https://github.com/marko-js/marko/commit/26cd305ea4391fb4846c07d5ba4984cc152584e7) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrade htmljs-parser.\n\n- Updated dependencies [[`26cd305ea`](https://github.com/marko-js/marko/commit/26cd305ea4391fb4846c07d5ba4984cc152584e7)]:\n  - @marko/compiler@5.22.4\n\n## 5.21.6\n\n### Patch Changes\n\n- [#1839](https://github.com/marko-js/marko/pull/1839) [`1df553e45`](https://github.com/marko-js/marko/commit/1df553e45829c7e0d754c5fec2c7d65e74c89457) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrade HTMLJS-Parser.\n\n- Updated dependencies [[`1df553e45`](https://github.com/marko-js/marko/commit/1df553e45829c7e0d754c5fec2c7d65e74c89457)]:\n  - @marko/compiler@5.22.3\n\n## 5.21.5\n\n### Patch Changes\n\n- [#1836](https://github.com/marko-js/marko/pull/1836) [`ec57ebde5`](https://github.com/marko-js/marko/commit/ec57ebde52f5da16524f5275f923eedc8c0ab19a) Thanks [@vwong](https://github.com/vwong)! - Avoid inline styles when using tight Content Security Policy\n\n* [#1837](https://github.com/marko-js/marko/pull/1837) [`63161abed`](https://github.com/marko-js/marko/commit/63161abed5fa071e88d06646bf0f55f0c6852b54) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with source map position for shorthand attribute methods.\n\n* Updated dependencies [[`63161abed`](https://github.com/marko-js/marko/commit/63161abed5fa071e88d06646bf0f55f0c6852b54)]:\n  - @marko/compiler@5.22.2\n\n## 5.21.4\n\n### Patch Changes\n\n- [#1832](https://github.com/marko-js/marko/pull/1832) [`20dd7b088`](https://github.com/marko-js/marko/commit/20dd7b08800d49fe99badd4faa540bcfefa7b681) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Update markoc cli to allow striping types.\n\n## 5.21.3\n\n### Patch Changes\n\n- [#1824](https://github.com/marko-js/marko/pull/1824) [`2f6459d2c`](https://github.com/marko-js/marko/commit/2f6459d2c421ac82c4627c90f1c50cb229a99d33) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where shorthand attribute methods could not have a \"return\" statement.\n\n- Updated dependencies [[`2f6459d2c`](https://github.com/marko-js/marko/commit/2f6459d2c421ac82c4627c90f1c50cb229a99d33)]:\n  - @marko/compiler@5.21.7\n  - @marko/translator-default@5.21.3\n\n## 5.21.2\n\n### Patch Changes\n\n- [#1804](https://github.com/marko-js/marko/pull/1804) [`af8c944a3`](https://github.com/marko-js/marko/commit/af8c944a38d19529e71fb0ecd312ca7ef358e554) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue when internal <**flush_here_and_after**> tag (used by bundler plugins) is used in sync mode.\n\n## 5.21.1\n\n### Patch Changes\n\n- [#1792](https://github.com/marko-js/marko/pull/1792) [`c9107ea7f`](https://github.com/marko-js/marko/commit/c9107ea7f6fc69df10700114fe35b7b494414194) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix broken previous release where the \"main\" field for package.json files was not correctly updated when published\n\n- Updated dependencies [[`c9107ea7f`](https://github.com/marko-js/marko/commit/c9107ea7f6fc69df10700114fe35b7b494414194)]:\n  - @marko/compiler@5.21.1\n  - @marko/translator-default@5.21.1\n\n## 5.21.0\n\n### Minor Changes\n\n- [#1787](https://github.com/marko-js/marko/pull/1787) [`dd9009d66`](https://github.com/marko-js/marko/commit/dd9009d665f4f660d106aa0c3364e34ca3561abc) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrades the compiler to use the latest major release of `htmljs-parser` bringing in the improvements listed here:\n  https://github.com/marko-js/htmljs-parser/pull/93\n\n### Patch Changes\n\n- Updated dependencies [[`dd9009d66`](https://github.com/marko-js/marko/commit/dd9009d665f4f660d106aa0c3364e34ca3561abc)]:\n  - @marko/compiler@5.21.0\n  - @marko/translator-default@5.21.0\n\n## [5.20.9](https://github.com/marko-js/marko/compare/v5.20.8...v5.20.9) (2022-04-27)\n\n### Bug Fixes\n\n- some environments (deno) provide a window but not a document ([e523252](https://github.com/marko-js/marko/commit/e52325234b9f3e7d430b4191f87486df7b13c497))\n\n## [5.20.8](https://github.com/marko-js/marko/compare/v5.20.7...v5.20.8) (2022-04-26)\n\n**Note:** Version bump only for package marko\n\n## [5.20.7](https://github.com/marko-js/marko/compare/v5.20.6...v5.20.7) (2022-04-26)\n\n**Note:** Version bump only for package marko\n\n## [5.20.6](https://github.com/marko-js/marko/compare/v5.20.5...v5.20.6) (2022-04-25)\n\n**Note:** Version bump only for package marko\n\n## [5.20.5](https://github.com/marko-js/marko/compare/v5.20.4...v5.20.5) (2022-04-15)\n\n**Note:** Version bump only for package marko\n\n## [5.20.4](https://github.com/marko-js/marko/compare/v5.20.3...v5.20.4) (2022-04-11)\n\n**Note:** Version bump only for package marko\n\n## [5.20.3](https://github.com/marko-js/marko/compare/v5.20.2...v5.20.3) (2022-03-24)\n\n**Note:** Version bump only for package marko\n\n## [5.20.1](https://github.com/marko-js/marko/compare/v5.20.0...v5.20.1) (2022-03-22)\n\n### Bug Fixes\n\n- prevent bubbling non bubbling events ([#1781](https://github.com/marko-js/marko/issues/1781)) ([7c4de65](https://github.com/marko-js/marko/commit/7c4de6549532f39b8cd4ad70691dfa4e9efe9cd7))\n\n## [5.19.3](https://github.com/marko-js/marko/compare/v5.19.2...v5.19.3) (2022-03-08)\n\n### Bug Fixes\n\n- performance hit in development mode because continually parsing stack trace ([#1777](https://github.com/marko-js/marko/issues/1777)) ([cb99f92](https://github.com/marko-js/marko/commit/cb99f921660f206ef6e14f7c9ab5757be6375ab0))\n\n## [5.19.2](https://github.com/marko-js/marko/compare/v5.19.1...v5.19.2) (2022-03-08)\n\n### Bug Fixes\n\n- avoid deprecation warning for markoc cli ([800861b](https://github.com/marko-js/marko/commit/800861b88ec097a8e7b89fcedb3c4d3a59542ec0))\n\n# [5.19.0](https://github.com/marko-js/marko/compare/v5.18.2...v5.19.0) (2022-01-28)\n\n### Features\n\n- support analyze field in marko.json ([#1769](https://github.com/marko-js/marko/issues/1769)) ([981f7f3](https://github.com/marko-js/marko/commit/981f7f39f932533178c538f8fc2788ea6f93d909))\n\n## [5.18.2](https://github.com/marko-js/marko/compare/v5.18.1...v5.18.2) (2022-01-25)\n\n### Bug Fixes\n\n- update invalid docs link ([3e67bfe](https://github.com/marko-js/marko/commit/3e67bfe1e52da5ae077613a804ea5ef6b4c3d8f4))\n\n## [5.18.1](https://github.com/marko-js/marko/compare/v5.18.0...v5.18.1) (2022-01-25)\n\n**Note:** Version bump only for package marko\n\n# [5.18.0](https://github.com/marko-js/marko/compare/v5.17.10...v5.18.0) (2022-01-24)\n\n### Features\n\n- add shorthand for dynamic tag names from identifier ([#1766](https://github.com/marko-js/marko/issues/1766)) ([94e4fd8](https://github.com/marko-js/marko/commit/94e4fd818bffaf798298317e6813d369a3c7f413))\n\n## [5.17.10](https://github.com/marko-js/marko/compare/v5.17.9...v5.17.10) (2022-01-14)\n\n**Note:** Version bump only for package marko\n\n## [5.17.9](https://github.com/marko-js/marko/compare/v5.17.8...v5.17.9) (2022-01-07)\n\n### Bug Fixes\n\n- improve error handling in web workers ([8611e42](https://github.com/marko-js/marko/commit/8611e42fc90c5f9ec3f39e9da5e040a531f72052))\n\n## [5.17.8](https://github.com/marko-js/marko/compare/v5.17.7...v5.17.8) (2022-01-06)\n\n### Bug Fixes\n\n- setTimeout issue in webworkers ([d838e4d](https://github.com/marko-js/marko/commit/d838e4d3974ec2ad7df7fddf0fc0d8096853b3e8))\n\n## [5.17.7](https://github.com/marko-js/marko/compare/v5.17.6...v5.17.7) (2022-01-06)\n\n### Bug Fixes\n\n- improve cloudflare (workers) support ([185d71b](https://github.com/marko-js/marko/commit/185d71b08282ded4d178e0f6ada6f6d21e9b4b31))\n\n## [5.17.6](https://github.com/marko-js/marko/compare/v5.17.5...v5.17.6) (2022-01-02)\n\n### Bug Fixes\n\n- use full file extension for compiler imports ([#1762](https://github.com/marko-js/marko/issues/1762)) ([041011a](https://github.com/marko-js/marko/commit/041011afceb581a64169c4ee370b31448a81c0e7))\n\n## [5.17.5](https://github.com/marko-js/marko/compare/v5.17.4...v5.17.5) (2021-11-24)\n\n**Note:** Version bump only for package marko\n\n## [5.17.4](https://github.com/marko-js/marko/compare/v5.17.3...v5.17.4) (2021-11-17)\n\n**Note:** Version bump only for package marko\n\n## [5.17.3](https://github.com/marko-js/marko/compare/v5.17.2...v5.17.3) (2021-10-30)\n\n**Note:** Version bump only for package marko\n\n## [5.17.2](https://github.com/marko-js/marko/compare/v5.17.1...v5.17.2) (2021-10-26)\n\n### Bug Fixes\n\n- ensure host element always a document or shadow root ([#1751](https://github.com/marko-js/marko/issues/1751)) ([d719724](https://github.com/marko-js/marko/commit/d719724c9b3ee4ea904ad0d583925ac8205007fb))\n\n## [5.17.1](https://github.com/marko-js/marko/compare/v5.17.0...v5.17.1) (2021-10-25)\n\n### Bug Fixes\n\n- prefer delegating events from document.body ([f51ac21](https://github.com/marko-js/marko/commit/f51ac21a1116aacc97bd9a8b3009da368ce81f61))\n\n# [5.17.0](https://github.com/marko-js/marko/compare/v5.16.1...v5.17.0) (2021-10-25)\n\n### Features\n\n- improve shadow root support ([#1749](https://github.com/marko-js/marko/issues/1749)) ([955ea00](https://github.com/marko-js/marko/commit/955ea006b89ee303d25f415d88962cd3b6f020f8))\n\n## [5.16.1](https://github.com/marko-js/marko/compare/v5.16.0...v5.16.1) (2021-10-22)\n\n### Bug Fixes\n\n- regression with identical tag name & taglib deduping ([a8d85d7](https://github.com/marko-js/marko/commit/a8d85d7771378d0e995c988cabe4b511ab95dc3d))\n\n# [5.16.0](https://github.com/marko-js/marko/compare/v5.15.12...v5.16.0) (2021-10-11)\n\n**Note:** Version bump only for package marko\n\n## [5.15.12](https://github.com/marko-js/marko/compare/v5.15.11...v5.15.12) (2021-10-04)\n\n### Bug Fixes\n\n- issue with hydrating adjacent text nodes ([#1746](https://github.com/marko-js/marko/issues/1746)) ([4b8057a](https://github.com/marko-js/marko/commit/4b8057a027de16e3f6c040ef446e69f07d86bdc3))\n\n## [5.15.11](https://github.com/marko-js/marko/compare/v5.15.10...v5.15.11) (2021-09-29)\n\n### Bug Fixes\n\n- normalize file opts similar to babel ([86310e6](https://github.com/marko-js/marko/commit/86310e603985ed96cba523fb07e25a0852cff8e6))\n\n## [5.15.10](https://github.com/marko-js/marko/compare/v5.15.9...v5.15.10) (2021-09-07)\n\n**Note:** Version bump only for package marko\n\n## [5.15.9](https://github.com/marko-js/marko/compare/v5.15.8...v5.15.9) (2021-09-05)\n\n**Note:** Version bump only for package marko\n\n## [5.15.8](https://github.com/marko-js/marko/compare/v5.15.7...v5.15.8) (2021-09-05)\n\n**Note:** Version bump only for package marko\n\n## [5.15.7](https://github.com/marko-js/marko/compare/v5.15.6...v5.15.7) (2021-09-03)\n\n**Note:** Version bump only for package marko\n\n## [5.15.6](https://github.com/marko-js/marko/compare/v5.15.5...v5.15.6) (2021-09-03)\n\n**Note:** Version bump only for package marko\n\n## [5.15.5](https://github.com/marko-js/marko/compare/v5.15.4...v5.15.5) (2021-08-26)\n\n**Note:** Version bump only for package marko\n\n## [5.15.4](https://github.com/marko-js/marko/compare/v5.15.3...v5.15.4) (2021-08-07)\n\n**Note:** Version bump only for package marko\n\n## [5.15.2](https://github.com/marko-js/marko/compare/v5.15.1...v5.15.2) (2021-08-06)\n\n**Note:** Version bump only for package marko\n\n## [5.15.1](https://github.com/marko-js/marko/compare/v5.15.0...v5.15.1) (2021-07-30)\n\n### Bug Fixes\n\n- **marko:** issue with HMR enabled using split components ([ab8706c](https://github.com/marko-js/marko/commit/ab8706c56cb1e1eef180207dcb510e9c85076501))\n\n# [5.15.0](https://github.com/marko-js/marko/compare/v5.14.2...v5.15.0) (2021-07-28)\n\n### Features\n\n- expose @marko/compiler/register api ([5726899](https://github.com/marko-js/marko/commit/572689909618939585e93c1a0d1ab101ff73aefd))\n\n## [5.14.2](https://github.com/marko-js/marko/compare/v5.14.1...v5.14.2) (2021-07-28)\n\n**Note:** Version bump only for package marko\n\n## [5.14.1](https://github.com/marko-js/marko/compare/v5.14.0...v5.14.1) (2021-07-26)\n\n**Note:** Version bump only for package marko\n\n# [5.14.0](https://github.com/marko-js/marko/compare/v5.13.0...v5.14.0) (2021-07-24)\n\n**Note:** Version bump only for package marko\n\n# [5.13.0](https://github.com/marko-js/marko/compare/v5.12.1...v5.13.0) (2021-07-23)\n\n**Note:** Version bump only for package marko\n\n## [5.12.1](https://github.com/marko-js/marko/compare/v5.12.0...v5.12.1) (2021-07-21)\n\n**Note:** Version bump only for package marko\n\n# [5.12.0](https://github.com/marko-js/marko/compare/v5.11.3...v5.12.0) (2021-07-12)\n\n**Note:** Version bump only for package marko\n\n## [5.11.3](https://github.com/marko-js/marko/compare/v5.11.2...v5.11.3) (2021-07-08)\n\n### Bug Fixes\n\n- allow key attribute to pass through for attribute tags ([ab52ae4](https://github.com/marko-js/marko/commit/ab52ae4c41fd94f27b397507423b3da4343bd9a5))\n\n## [5.11.2](https://github.com/marko-js/marko/compare/v5.11.1...v5.11.2) (2021-07-07)\n\n**Note:** Version bump only for package marko\n\n## [5.11.1](https://github.com/marko-js/marko/compare/v5.11.0...v5.11.1) (2021-07-07)\n\n**Note:** Version bump only for package marko\n\n# [5.11.0](https://github.com/marko-js/marko/compare/v5.10.7...v5.11.0) (2021-07-07)\n\n**Note:** Version bump only for package marko\n\n## [5.10.7](https://github.com/marko-js/marko/compare/v5.10.6...v5.10.7) (2021-06-23)\n\n**Note:** Version bump only for package marko\n\n## [5.10.6](https://github.com/marko-js/marko/compare/v5.10.5...v5.10.6) (2021-06-10)\n\n### Bug Fixes\n\n- **translator-default:** issue with user defined component var ([a36cfd1](https://github.com/marko-js/marko/commit/a36cfd1bbbc213ea7889b5f59aec61e94cc5598c))\n\n## [5.10.5](https://github.com/marko-js/marko/compare/v5.10.4...v5.10.5) (2021-06-08)\n\n### Bug Fixes\n\n- **marko:** issue with dynamic tag name string and no renderbody ([69e8514](https://github.com/marko-js/marko/commit/69e8514e33d68705ccf76de8ec82efebfd31b1bc))\n\n## [5.10.4](https://github.com/marko-js/marko/compare/v5.10.3...v5.10.4) (2021-05-19)\n\n### Bug Fixes\n\n- **marko:** issue when last mode stream ends too early ([318044f](https://github.com/marko-js/marko/commit/318044fce27cdaffe344fb0ea075a9451cb7abd9))\n\n## [5.10.3](https://github.com/marko-js/marko/compare/v5.10.2...v5.10.3) (2021-05-14)\n\n### Bug Fixes\n\n- false values are removed from style string. closes [#1692](https://github.com/marko-js/marko/issues/1692) ([#1693](https://github.com/marko-js/marko/issues/1693)) ([ac140d4](https://github.com/marko-js/marko/commit/ac140d4628836f6371982e3a7f4099fa31d89ec4))\n\n## [5.10.2](https://github.com/marko-js/marko/compare/v5.10.1...v5.10.2) (2021-05-04)\n\n**Note:** Version bump only for package marko\n\n## [5.10.1](https://github.com/marko-js/marko/compare/v5.10.0...v5.10.1) (2021-05-04)\n\n**Note:** Version bump only for package marko\n\n# [5.10.0](https://github.com/marko-js/marko/compare/v5.9.0...v5.10.0) (2021-04-30)\n\n### Features\n\n- **marko:** leverage new runtime api for node-require hook ([67fb144](https://github.com/marko-js/marko/commit/67fb144c5c1c662b6fd89b1d52c420988f36365a))\n- add new HMR runtime ([a873762](https://github.com/marko-js/marko/commit/a87376299952c8f9fc5c3d467c571acc0956bfb3))\n\n# [5.9.0](https://github.com/marko-js/marko/compare/v5.8.4...v5.9.0) (2021-04-21)\n\n**Note:** Version bump only for package marko\n\n## [5.8.4](https://github.com/marko-js/marko/compare/v5.8.3...v5.8.4) (2021-04-19)\n\n**Note:** Version bump only for package marko\n\n## [5.8.3](https://github.com/marko-js/marko/compare/v5.8.2...v5.8.3) (2021-04-18)\n\n**Note:** Version bump only for package marko\n\n## [5.8.2](https://github.com/marko-js/marko/compare/v5.8.1...v5.8.2) (2021-04-18)\n\n**Note:** Version bump only for package marko\n\n## [5.8.1](https://github.com/marko-js/marko/compare/v5.8.0...v5.8.1) (2021-04-16)\n\n**Note:** Version bump only for package marko\n\n# [5.8.0](https://github.com/marko-js/marko/compare/v5.7.0...v5.8.0) (2021-04-16)\n\n### Features\n\n- add new hydrateIncludeImports option ([#1686](https://github.com/marko-js/marko/issues/1686)) ([db84f91](https://github.com/marko-js/marko/commit/db84f913b47e4372c84c09a34ca8529b646b7869))\n\n# [5.7.0](https://github.com/marko-js/marko/compare/v5.6.2...v5.7.0) (2021-04-07)\n\n**Note:** Version bump only for package marko\n\n## [5.6.2](https://github.com/marko-js/marko/compare/v5.6.1...v5.6.2) (2021-03-30)\n\n### Bug Fixes\n\n- **translator-default:** some bundlers not supporting hoisted imports ([0233d04](https://github.com/marko-js/marko/commit/0233d042206233ebaaf2ee551b8a926589c7f02f))\n\n# [5.6.0](https://github.com/marko-js/marko/compare/v5.5.4...v5.6.0) (2021-03-27)\n\n### Features\n\n- flush_here_and_after tag ([#1681](https://github.com/marko-js/marko/issues/1681)) ([9d01322](https://github.com/marko-js/marko/commit/9d0132281a89b804fe847e98f915aab951ba78a7))\n\n## [5.5.4](https://github.com/marko-js/marko/compare/v5.5.3...v5.5.4) (2021-03-22)\n\n**Note:** Version bump only for package marko\n\n## [5.5.3](https://github.com/marko-js/marko/compare/v5.5.2...v5.5.3) (2021-03-22)\n\n**Note:** Version bump only for package marko\n\n## [5.5.2](https://github.com/marko-js/marko/compare/v5.5.1...v5.5.2) (2021-03-19)\n\n**Note:** Version bump only for package marko\n\n## [5.5.1](https://github.com/marko-js/marko/compare/v5.5.0...v5.5.1) (2021-03-18)\n\n**Note:** Version bump only for package marko\n\n# [5.5.0](https://github.com/marko-js/marko/compare/v5.4.2...v5.5.0) (2021-03-18)\n\n### Bug Fixes\n\n- **compiler:** use provided FS for taglib building ([#1674](https://github.com/marko-js/marko/issues/1674)) ([edb570e](https://github.com/marko-js/marko/commit/edb570eda4b3d544795536bf81613f6c97c9859a))\n- **marko:** issue with async hydrate after final flush ([#1677](https://github.com/marko-js/marko/issues/1677)) ([f2fbaa6](https://github.com/marko-js/marko/commit/f2fbaa6de25c9f6bc2f85a0df6deac057c25b3bd))\n- correct Marko debug mode for ci tests ([031ca0d](https://github.com/marko-js/marko/commit/031ca0d93fa77a3405b95467e7a98f2c5a8120de))\n\n### Features\n\n- add hydrate option ([#1673](https://github.com/marko-js/marko/issues/1673)) ([a4e7013](https://github.com/marko-js/marko/commit/a4e701355efcd93971eb46988f5e990f4517796f))\n\n# [5.3.0](https://github.com/marko-js/marko/compare/v5.2.4...v5.3.0) (2021-03-08)\n\n### Features\n\n- **marko:** support lazy loading hydrated components ([7e14181](https://github.com/marko-js/marko/commit/7e14181d0d01977745eb5fb551aa0068b462aae7))\n\n## [5.2.4](https://github.com/marko-js/marko/compare/v5.2.3...v5.2.4) (2021-03-08)\n\n### Bug Fixes\n\n- **marko:** issue with delegating events from text nodes ([787578e](https://github.com/marko-js/marko/commit/787578ed60b15cf3b8abfc65b2f24c0418c7a442))\n\n## [5.2.3](https://github.com/marko-js/marko/compare/v5.2.2...v5.2.3) (2021-03-05)\n\n### Bug Fixes\n\n- **marko:** issue with MARKO_DEBUG and a const ([c17f9fc](https://github.com/marko-js/marko/commit/c17f9fc5521412e24838d7ec78bee000c511064f))\n\n## [5.2.2](https://github.com/marko-js/marko/compare/v5.2.1...v5.2.2) (2021-03-01)\n\n### Bug Fixes\n\n- add some additional missing deps from marko to @marko/compiler ([65ac580](https://github.com/marko-js/marko/commit/65ac580e57cb42ab94adc447c9b59744a69c8b64))\n\n## [5.2.1](https://github.com/marko-js/marko/compare/v5.2.0...v5.2.1) (2021-03-01)\n\n### Bug Fixes\n\n- **compiler:** add missing dependency after moving taglib code ([ae843f1](https://github.com/marko-js/marko/commit/ae843f1b802fcbc1c7347247247a3c8551f6cfd2))\n\n# [5.2.0](https://github.com/marko-js/marko/compare/v5.1.21...v5.2.0) (2021-03-01)\n\n### Features\n\n- move taglib apis into compiler source code ([f7cbb1b](https://github.com/marko-js/marko/commit/f7cbb1b5719ce767b7970ca7264a081010e8e65a))\n\n## [5.1.20](https://github.com/marko-js/marko/compare/v5.1.19...v5.1.20) (2021-02-26)\n\n### Bug Fixes\n\n- **marko:** circular dep issue with browser-refresh ([a704210](https://github.com/marko-js/marko/commit/a704210c272500b9aa36f90ca5c2f63cff85a7a7))\n\n## [5.1.19](https://github.com/marko-js/marko/compare/v5.1.18...v5.1.19) (2021-02-26)\n\n### Bug Fixes\n\n- **marko:** bring back hot-reload when node-require hook used ([8d856a0](https://github.com/marko-js/marko/commit/8d856a0250a1f2522f06a91a11c2d73c6a05e7b2))\n- move @marko/babel-types into compiler ([5369a63](https://github.com/marko-js/marko/commit/5369a63e0ce66c422981893525ff6c9bcbd461dd))\n\n## [5.1.18](https://github.com/marko-js/marko/compare/v5.1.17...v5.1.18) (2021-02-21)\n\n### Bug Fixes\n\n- **marko:** add back missing preserve-name & remove-dashes config ([4283178](https://github.com/marko-js/marko/commit/428317863d0a1d563019715194064a3cdd7c26d0))\n\n## [5.1.17](https://github.com/marko-js/marko/compare/v5.1.16...v5.1.17) (2021-02-18)\n\n### Bug Fixes\n\n- improve windows support for taglib finder ([58f6568](https://github.com/marko-js/marko/commit/58f6568da8fca1cdf09034c7dd18e7cfb1fdb902))\n\n## [5.1.16](https://github.com/marko-js/marko/compare/v5.1.15...v5.1.16) (2021-02-17)\n\n### Bug Fixes\n\n- **marko:** simplify client-reorder runtime loading login to inline code ([#1661](https://github.com/marko-js/marko/issues/1661)) ([5d0a74a](https://github.com/marko-js/marko/commit/5d0a74a616d6f5d6bdf97a9c041b0c56d9a0d862))\n\n## [5.1.15](https://github.com/marko-js/marko/compare/v5.1.14...v5.1.15) (2021-02-13)\n\n**Note:** Version bump only for package marko\n\n## [5.1.14](https://github.com/marko-js/marko/compare/v5.1.13...v5.1.14) (2021-02-12)\n\n**Note:** Version bump only for package marko\n\n## [5.1.13](https://github.com/marko-js/marko/compare/v5.1.12...v5.1.13) (2021-02-12)\n\n**Note:** Version bump only for package marko\n\n## [5.1.12](https://github.com/marko-js/marko/compare/v5.1.11...v5.1.12) (2021-02-12)\n\n### Bug Fixes\n\n- **marko:** avoid prematurely resolving taglib paths ([29f3cbe](https://github.com/marko-js/marko/commit/29f3cbeccf07108d05e600a2a12dab2a3a0fa6a9))\n\n## [5.1.11](https://github.com/marko-js/marko/compare/v5.1.10...v5.1.11) (2021-02-11)\n\n### Bug Fixes\n\n- prevent potential race condition while tag scanning ([cafa138](https://github.com/marko-js/marko/commit/cafa138f28a5e2fbe9fbc74cc05fb4152e36d911))\n\n## [5.1.10](https://github.com/marko-js/marko/compare/v5.1.9...v5.1.10) (2021-02-05)\n\n**Note:** Version bump only for package marko\n\n## [5.1.9](https://github.com/marko-js/marko/compare/v5.1.8...v5.1.9) (2021-02-03)\n\n### Bug Fixes\n\n- **marko:** default export in esm mode for marko/component ([9b144e1](https://github.com/marko-js/marko/commit/9b144e13ea3413884fdda698fa854caca111858d))\n- **marko:** drop ie10 only runtime code ([2125bf6](https://github.com/marko-js/marko/commit/2125bf6ae991120cf27662b139b3080a93d05416))\n- **marko:** include default export in esm marko/components ([ed5fbc2](https://github.com/marko-js/marko/commit/ed5fbc2299a500851f7b9e23a9737a23285e4840))\n\n## [5.1.8](https://github.com/marko-js/marko/compare/v5.1.7...v5.1.8) (2021-02-02)\n\n**Note:** Version bump only for package marko\n\n## [5.1.7](https://github.com/marko-js/marko/compare/v5.1.6...v5.1.7) (2021-02-01)\n\n### Bug Fixes\n\n- allow passing 'dom' output instead of 'vdom' ([9c11a9b](https://github.com/marko-js/marko/commit/9c11a9be187c728b46caca9a37a9b383cc20ce1b))\n\n## [5.1.6](https://github.com/marko-js/marko/compare/v5.1.5...v5.1.6) (2021-01-29)\n\n**Note:** Version bump only for package marko\n\n## [5.1.5](https://github.com/marko-js/marko/compare/v5.1.4...v5.1.5) (2021-01-28)\n\n**Note:** Version bump only for package marko\n\n## [5.1.4](https://github.com/marko-js/marko/compare/v5.1.3...v5.1.4) (2021-01-27)\n\n### Bug Fixes\n\n- docs link ([69abe9a](https://github.com/marko-js/marko/commit/69abe9a299e106f5ea0ef3c7a14b0fc5d3542a6b))\n\n## [5.1.3](https://github.com/marko-js/marko/compare/v5.1.2...v5.1.3) (2021-01-27)\n\n### Bug Fixes\n\n- enable inline sourcemaps by default with dev mode require hook ([6571a11](https://github.com/marko-js/marko/commit/6571a1124047e10ccf0b7a4b131fbe860ce008bb))\n\n## [5.1.2](https://github.com/marko-js/marko/compare/v5.1.1...v5.1.2) (2021-01-26)\n\n**Note:** Version bump only for package marko\n\n## [5.1.1](https://github.com/marko-js/marko/compare/v5.1.0...v5.1.1) (2021-01-26)\n\n**Note:** Version bump only for package marko\n\n# [5.1.0](https://github.com/marko-js/marko/compare/v5.0.0-next.82...v5.1.0) (2021-01-26)\n\n### Features\n\n- no longer publish as 'next' dist-tag ([8113e25](https://github.com/marko-js/marko/commit/8113e250d823000810d0fa13d76efc4cc69f4ad1))\n\n# [5.0.0-next.82](https://github.com/marko-js/marko/compare/v5.0.0-next.81...v5.0.0-next.82) (2021-01-21)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.81](https://github.com/marko-js/marko/compare/v5.0.0-next.80...v5.0.0-next.81) (2021-01-20)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.80](https://github.com/marko-js/marko/compare/v5.0.0-next.79...v5.0.0-next.80) (2021-01-19)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.79](https://github.com/marko-js/marko/compare/v5.0.0-next.78...v5.0.0-next.79) (2021-01-19)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.78](https://github.com/marko-js/marko/compare/v5.0.0-next.77...v5.0.0-next.78) (2021-01-19)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.77](https://github.com/marko-js/marko/compare/v5.0.0-next.76...v5.0.0-next.77) (2021-01-19)\n\n### Bug Fixes\n\n- force commonjs modules for load api ([bd84dad](https://github.com/marko-js/marko/commit/bd84dadca72c4d5e6ae7ed62211e543211a29a5f))\n\n# [5.0.0-next.76](https://github.com/marko-js/marko/compare/v5.0.0-next.75...v5.0.0-next.76) (2021-01-15)\n\n### Features\n\n- improve analysis for stateful tag parameters ([#1648](https://github.com/marko-js/marko/issues/1648)) ([8c34cb4](https://github.com/marko-js/marko/commit/8c34cb4be6bd571f6013f50dc6808e3d9de10763))\n\n# [5.0.0-next.75](https://github.com/marko-js/marko/compare/v5.0.0-next.74...v5.0.0-next.75) (2021-01-14)\n\n### Bug Fixes\n\n- issue with using flags before defined ([8628d01](https://github.com/marko-js/marko/commit/8628d01ef82816a482e57938fbecde3e3c64c357))\n\n# [5.0.0-next.74](https://github.com/marko-js/marko/compare/v5.0.0-next.73...v5.0.0-next.74) (2021-01-14)\n\n### Bug Fixes\n\n- runtime mismatch check ([892f9d0](https://github.com/marko-js/marko/commit/892f9d0f10bb76d0c33ed11204c36f6edc40253c))\n\n# [5.0.0-next.73](https://github.com/marko-js/marko/compare/v5.0.0-next.72...v5.0.0-next.73) (2021-01-14)\n\n### Bug Fixes\n\n- use same debug check for compiler and runtime ([#1647](https://github.com/marko-js/marko/issues/1647)) ([0c8632f](https://github.com/marko-js/marko/commit/0c8632fe92d06b27d0741fa2d5a2b599f0890693))\n\n# [5.0.0-next.72](https://github.com/marko-js/marko/compare/v5.0.0-next.71...v5.0.0-next.72) (2021-01-13)\n\n### Bug Fixes\n\n- issue with only renderBody being serialized ([8c0e045](https://github.com/marko-js/marko/commit/8c0e045af9820ee26f606ee626b8a51579aded94))\n\n# [5.0.0-next.71](https://github.com/marko-js/marko/compare/v5.0.0-next.70...v5.0.0-next.71) (2021-01-12)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.70](https://github.com/marko-js/marko/compare/v5.0.0-next.69...v5.0.0-next.70) (2020-12-16)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.69](https://github.com/marko-js/marko/compare/v5.0.0-next.68...v5.0.0-next.69) (2020-12-14)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.68](https://github.com/marko-js/marko/compare/v5.0.0-next.67...v5.0.0-next.68) (2020-12-11)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.67](https://github.com/marko-js/marko/compare/v5.0.0-next.66...v5.0.0-next.67) (2020-12-09)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.66](https://github.com/marko-js/marko/compare/v5.0.0-next.65...v5.0.0-next.66) (2020-12-08)\n\n### Bug Fixes\n\n- renderbody with dynamic attrs ([6c33c0f](https://github.com/marko-js/marko/commit/6c33c0fcf1f240e50ce7bccbb10ea1efb0daaed3))\n\n# [5.0.0-next.65](https://github.com/marko-js/marko/compare/v5.0.0-next.64...v5.0.0-next.65) (2020-12-02)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.64](https://github.com/marko-js/marko/compare/v5.0.0-next.63...v5.0.0-next.64) (2020-12-02)\n\n### Bug Fixes\n\n- **babel-types:** support scope analysis for tag variables ([c527474](https://github.com/marko-js/marko/commit/c5274740b5fde01b85b8b46381fadf2fc75245f2))\n\n# [5.0.0-next.63](https://github.com/marko-js/marko/compare/v5.0.0-next.62...v5.0.0-next.63) (2020-12-01)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.62](https://github.com/marko-js/marko/compare/v5.0.0-next.61...v5.0.0-next.62) (2020-12-01)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.61](https://github.com/marko-js/marko/compare/v5.0.0-next.60...v5.0.0-next.61) (2020-12-01)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.60](https://github.com/marko-js/marko/compare/v5.0.0-next.59...v5.0.0-next.60) (2020-11-22)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.59](https://github.com/marko-js/marko/compare/v5.0.0-next.58...v5.0.0-next.59) (2020-11-21)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.58](https://github.com/marko-js/marko/compare/v5.0.0-next.57...v5.0.0-next.58) (2020-11-20)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.57](https://github.com/marko-js/marko/compare/v5.0.0-next.56...v5.0.0-next.57) (2020-11-20)\n\n### Features\n\n- add parser support for tag variables ([#1630](https://github.com/marko-js/marko/issues/1630)) ([43c4433](https://github.com/marko-js/marko/commit/43c4433cb026f7eace199203e15d1050a53dc35d))\n\n# [5.0.0-next.56](https://github.com/marko-js/marko/compare/v5.0.0-next.55...v5.0.0-next.56) (2020-11-20)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.55](https://github.com/marko-js/marko/compare/v5.0.0-next.54...v5.0.0-next.55) (2020-11-19)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.54](https://github.com/marko-js/marko/compare/v5.0.0-next.53...v5.0.0-next.54) (2020-11-17)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.52](https://github.com/marko-js/marko/compare/v5.0.0-next.51...v5.0.0-next.52) (2020-11-12)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.51](https://github.com/marko-js/marko/compare/v5.0.0-next.50...v5.0.0-next.51) (2020-11-11)\n\n### Bug Fixes\n\n- regression with no-update-body with no renderBody ([1e89057](https://github.com/marko-js/marko/commit/1e890574bd23035eb1d22ae78672c3a0e9dd4563))\n\n### Features\n\n- cached compilations, nested tag analysis ([74d5f10](https://github.com/marko-js/marko/commit/74d5f104b8f35178c399ab5c3514c33f8b63cdf0))\n\n# [5.0.0-next.50](https://github.com/marko-js/marko/compare/v5.0.0-next.49...v5.0.0-next.50) (2020-10-12)\n\n### Bug Fixes\n\n- no longer use fragments for preserved native els ([22e9322](https://github.com/marko-js/marko/commit/22e9322a7e72b50812ab223f70bf9e68aee2208d))\n- regression serializing empty component data with custom runtimeid ([7ee0cd1](https://github.com/marko-js/marko/commit/7ee0cd1f0aacda8c9b04b583320951ce406a9143))\n- **translator-default:** owner component missing for text nodes ([50b4e97](https://github.com/marko-js/marko/commit/50b4e9746b4fc5158d35ba78110199de4a4e7956))\n\n# [5.0.0-next.49](https://github.com/marko-js/marko/compare/v5.0.0-next.48...v5.0.0-next.49) (2020-09-28)\n\n### Bug Fixes\n\n- **marko:** output esm for module-code ([db4793d](https://github.com/marko-js/marko/commit/db4793df11c08b7d8f8b3cf5591528f35fd643d9))\n\n### Performance Improvements\n\n- misc optimizations ([#1610](https://github.com/marko-js/marko/issues/1610)) ([bf393c8](https://github.com/marko-js/marko/commit/bf393c85ad8ed663db8daad64afdcd423e668c46))\n\n# [5.0.0-next.48](https://github.com/marko-js/marko/compare/v5.0.0-next.47...v5.0.0-next.48) (2020-09-18)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.47](https://github.com/marko-js/marko/compare/v5.0.0-next.46...v5.0.0-next.47) (2020-09-18)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.46](https://github.com/marko-js/marko/compare/v5.0.0-next.45...v5.0.0-next.46) (2020-09-17)\n\n### Bug Fixes\n\n- only include template path with meta option enabled ([e1b39e1](https://github.com/marko-js/marko/commit/e1b39e18c430b86e2406187958d5503d83a7d79a))\n\n### Performance Improvements\n\n- prevent bundlers from pulling in setImmediate shim ([585d6be](https://github.com/marko-js/marko/commit/585d6be9c288b2a0306d2ffcd36d15e8e17a03d9))\n- remove unecessary function for template load api ([33ae635](https://github.com/marko-js/marko/commit/33ae635fec6ad4383347c7ce9e640251937a8d64))\n\n# [5.0.0-next.45](https://github.com/marko-js/marko/compare/v5.0.0-next.44...v5.0.0-next.45) (2020-08-26)\n\n### Bug Fixes\n\n- regression with manual component init with custom runtimeid ([ec6e670](https://github.com/marko-js/marko/commit/ec6e670dbca30116947372198203b9c72c46a714))\n\n# [5.0.0-next.44](https://github.com/marko-js/marko/compare/v5.0.0-next.43...v5.0.0-next.44) (2020-08-26)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.43](https://github.com/marko-js/marko/compare/v5.0.0-next.42...v5.0.0-next.43) (2020-08-20)\n\n### Bug Fixes\n\n- issue with hydrating body-only content ([c975b87](https://github.com/marko-js/marko/commit/c975b878ccce93ab64caa3c2feef0fb160194282))\n\n# [5.0.0-next.42](https://github.com/marko-js/marko/compare/v5.0.0-next.41...v5.0.0-next.42) (2020-08-18)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.41](https://github.com/marko-js/marko/compare/v5.0.0-next.40...v5.0.0-next.41) (2020-08-18)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.40](https://github.com/marko-js/marko/compare/v5.0.0-next.39...v5.0.0-next.40) (2020-08-12)\n\n### Bug Fixes\n\n- component type use relative path in dev mode ([7b7a4f9](https://github.com/marko-js/marko/commit/7b7a4f9637648c7ded113fd132ce3ce5f2785e0a))\n\n# [5.0.0-next.39](https://github.com/marko-js/marko/compare/v5.0.0-next.38...v5.0.0-next.39) (2020-08-10)\n\n### Bug Fixes\n\n- invalid missing closing svg tags ([47a9834](https://github.com/marko-js/marko/commit/47a98341a2bdb4ae136495c5e3976dfe7c24a77c))\n\n# [5.0.0-next.38](https://github.com/marko-js/marko/compare/v5.0.0-next.37...v5.0.0-next.38) (2020-08-10)\n\n### Bug Fixes\n\n- add support for nested tag long hand properties ([#1592](https://github.com/marko-js/marko/issues/1592)) ([36c501c](https://github.com/marko-js/marko/commit/36c501ce440f90f6409394b38ed49e185e82d239))\n- set default value for textarea when created ([#1593](https://github.com/marko-js/marko/issues/1593)) ([00a0a55](https://github.com/marko-js/marko/commit/00a0a5527d19e7e145b367a415677dc9d41474cd))\n\n# [5.0.0-next.37](https://github.com/marko-js/marko/compare/v5.0.0-next.36...v5.0.0-next.37) (2020-08-05)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.36](https://github.com/marko-js/marko/compare/v5.0.0-next.35...v5.0.0-next.36) (2020-08-05)\n\n### Features\n\n- expose watch file meta data ([#1591](https://github.com/marko-js/marko/issues/1591)) ([f14e46a](https://github.com/marko-js/marko/commit/f14e46a1f3ddd01f659a0f86678773fb12a7f1a5))\n\n# [5.0.0-next.35](https://github.com/marko-js/marko/compare/v5.0.0-next.34...v5.0.0-next.35) (2020-08-04)\n\n### Bug Fixes\n\n- lint and format scripts ([57b66ef](https://github.com/marko-js/marko/commit/57b66ef39782ea249d3cf7913ec8242d0baf5535))\n\n# [5.0.0-next.34](https://github.com/marko-js/marko/compare/v5.0.0-next.33...v5.0.0-next.34) (2020-08-04)\n\n### Bug Fixes\n\n- allow <await> in sync mode ([#1589](https://github.com/marko-js/marko/issues/1589)) ([f91bd37](https://github.com/marko-js/marko/commit/f91bd37ec22f45861d11931f696d1edc5e84165c))\n- diffing dynamic attributes with mismatched keys ([#1587](https://github.com/marko-js/marko/issues/1587)) ([4b8cce4](https://github.com/marko-js/marko/commit/4b8cce41c7f3a020142e2d3e3d1e194ab64ffe65))\n- issue with hydrating no-update-if content ([#1581](https://github.com/marko-js/marko/issues/1581)) ([457f3d4](https://github.com/marko-js/marko/commit/457f3d4acb480e5382fdfa30d0c1d4ea0062c4cc))\n\n# [5.0.0-next.33](https://github.com/marko-js/marko/compare/v5.0.0-next.32...v5.0.0-next.33) (2020-08-03)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.32](https://github.com/marko-js/marko/compare/v5.0.0-next.31...v5.0.0-next.32) (2020-07-31)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.31](https://github.com/marko-js/marko/compare/v5.0.0-next.30...v5.0.0-next.31) (2020-07-31)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.30](https://github.com/marko-js/marko/compare/v5.0.0-next.29...v5.0.0-next.30) (2020-07-29)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.29](https://github.com/marko-js/marko/compare/v5.0.0-next.28...v5.0.0-next.29) (2020-07-29)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.28](https://github.com/marko-js/marko/compare/v5.0.0-next.27...v5.0.0-next.28) (2020-07-27)\n\n### Bug Fixes\n\n- better errors, track deps and cleanup for import shorthand ([00464f2](https://github.com/marko-js/marko/commit/00464f27b2fef2a454745b424e3cce18c76ae33f))\n\n### Features\n\n- add new syntax for dynamic component import ([e9b4cd6](https://github.com/marko-js/marko/commit/e9b4cd61acff70d7d0d0d49cab7034e000493346))\n\n# [5.0.0-next.27](https://github.com/marko-js/marko/compare/v5.0.0-next.26...v5.0.0-next.27) (2020-07-24)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.26](https://github.com/marko-js/marko/compare/v5.0.0-next.25...v5.0.0-next.26) (2020-07-24)\n\n### Bug Fixes\n\n- docs paths ([583197e](https://github.com/marko-js/marko/commit/583197e2555258e101bb7e5e14134117cbd072e2))\n\n# [5.0.0-next.25](https://github.com/marko-js/marko/compare/v5.0.0-next.24...v5.0.0-next.25) (2020-07-23)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.24](https://github.com/marko-js/marko/compare/v5.0.0-next.23...v5.0.0-next.24) (2020-07-22)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.23](https://github.com/marko-js/marko/compare/v5.0.0-next.22...v5.0.0-next.23) (2020-07-14)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.22](https://github.com/marko-js/marko/compare/v5.0.0-next.21...v5.0.0-next.22) (2020-07-10)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.21](https://github.com/marko-js/marko/compare/v5.0.0-next.20...v5.0.0-next.21) (2020-07-07)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.20](https://github.com/marko-js/marko/compare/v5.0.0-next.19...v5.0.0-next.20) (2020-07-07)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.19](https://github.com/marko-js/marko/compare/v5.0.0-next.18...v5.0.0-next.19) (2020-07-06)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.18](https://github.com/marko-js/marko/compare/v5.0.0-next.17...v5.0.0-next.18) (2020-05-27)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.17](https://github.com/marko-js/marko/compare/v5.0.0-next.16...v5.0.0-next.17) (2020-05-27)\n\n### Bug Fixes\n\n- additional taglib cleanup for website support ([f462d8a](https://github.com/marko-js/marko/commit/f462d8ad95c1d438561f028a7d2a79accccbe739))\n\n# [5.0.0-next.16](https://github.com/marko-js/marko/compare/v5.0.0-next.15...v5.0.0-next.16) (2020-05-27)\n\n### Features\n\n- website compatibility fixes ([4390fd1](https://github.com/marko-js/marko/commit/4390fd1654d7b2753d2af899917ced7b3a395bc2))\n\n# [5.0.0-next.15](https://github.com/marko-js/marko/compare/v5.0.0-next.14...v5.0.0-next.15) (2020-05-26)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.14](https://github.com/marko-js/marko/compare/v5.0.0-next.13...v5.0.0-next.14) (2020-05-26)\n\n### Bug Fixes\n\n- improve browser support for website ([#1574](https://github.com/marko-js/marko/issues/1574)) ([9df798a](https://github.com/marko-js/marko/commit/9df798af5e71b71881995b6e06a9fb1b30b6fac2))\n\n# [5.0.0-next.13](https://github.com/marko-js/marko/compare/v5.0.0-next.12...v5.0.0-next.13) (2020-05-20)\n\n### Bug Fixes\n\n- nextTick timing regression ([#1573](https://github.com/marko-js/marko/issues/1573)) ([7f35078](https://github.com/marko-js/marko/commit/7f35078dda057c6f83282d37edea6044f02657f3))\n- **marko:** prevent loading main entry by default ([61c954e](https://github.com/marko-js/marko/commit/61c954ef0ed1fc1d3b44b878ea1dbb0f79a9b718))\n\n# [5.0.0-next.12](https://github.com/marko-js/marko/compare/v5.0.0-next.11...v5.0.0-next.12) (2020-05-19)\n\n### Bug Fixes\n\n- components not always initializing inside client-reorder await ([#1566](https://github.com/marko-js/marko/issues/1566)) ([da31ead](https://github.com/marko-js/marko/commit/da31ead17959e0e4bbbd806690d368127636b094))\n- data-marko attributes under 'no-update' with <await> ([#1564](https://github.com/marko-js/marko/issues/1564)) ([0a227d0](https://github.com/marko-js/marko/commit/0a227d0c7c27821df551c1367e160793dc9e234e))\n\n# [5.0.0-next.11](https://github.com/marko-js/marko/compare/v5.0.0-next.10...v5.0.0-next.11) (2020-04-27)\n\n### Bug Fixes\n\n- regression with unquoted attribute with trailing slash ([#1561](https://github.com/marko-js/marko/issues/1561)) ([128b68a](https://github.com/marko-js/marko/commit/128b68aefcec8d99b7c508e4cea2336207f574da))\n- split components under preserved root resetting \\_\\_\\_isPreserved ([#1559](https://github.com/marko-js/marko/issues/1559)) ([dd9f7ac](https://github.com/marko-js/marko/commit/dd9f7aca848df88e46cf5087d932966eaaaa1681))\n\n# [5.0.0-next.10](https://github.com/marko-js/marko/compare/v5.0.0-next.9...v5.0.0-next.10) (2020-04-23)\n\n### Bug Fixes\n\n- switch safe renderer to use nextTick for errors ([#1554](https://github.com/marko-js/marko/issues/1554)) ([900e7b1](https://github.com/marko-js/marko/commit/900e7b1f1d94380ae997ebd408272ecb24b77193))\n\n### Performance Improvements\n\n- minify runtime comments, remove unnecessary attr quotes ([#1557](https://github.com/marko-js/marko/issues/1557)) ([2882626](https://github.com/marko-js/marko/commit/28826265f88c9f038886945471584f1b4b3b9be6))\n\n# [5.0.0-next.9](https://github.com/marko-js/marko/compare/v5.0.0-next.8...v5.0.0-next.9) (2020-04-16)\n\n### Bug Fixes\n\n- add devmode warning for removing fragment markers ([#1541](https://github.com/marko-js/marko/issues/1541)) ([de27b4a](https://github.com/marko-js/marko/commit/de27b4af4c99efb5a9494e42f305160cda81348d))\n- implement missing methods for void-writer ([#1540](https://github.com/marko-js/marko/issues/1540)) ([b50f93c](https://github.com/marko-js/marko/commit/b50f93c0240bb1dd43dd4f0f12e2a5afff57f915))\n- improve micro task helper ([2129451](https://github.com/marko-js/marko/commit/21294511e9fd7a9bd2db3683d9f123baedf886b7))\n- issue with keys under ssr no-update root ([#1527](https://github.com/marko-js/marko/issues/1527)) ([480bc77](https://github.com/marko-js/marko/commit/480bc77433835f960a9a58fee4e6a52c0f188571))\n- regression with nullish values in partial string attribute values ([#1537](https://github.com/marko-js/marko/issues/1537)) ([144c352](https://github.com/marko-js/marko/commit/144c352863b75b75d513c8f080b8b19881e5dbde))\n- spread attrs for native tag preserves case ([#1530](https://github.com/marko-js/marko/issues/1530)) ([6b3156f](https://github.com/marko-js/marko/commit/6b3156f80832356baf0dc93e6753246ab852367f))\n\n### Features\n\n- improve serialization across multiple writes ([#1542](https://github.com/marko-js/marko/issues/1542)) ([45e42df](https://github.com/marko-js/marko/commit/45e42dfd84a86dd3377a4d2968191b7dde8388d2))\n\n### Performance Improvements\n\n- misc improvements ([#1535](https://github.com/marko-js/marko/issues/1535)) ([1fed43e](https://github.com/marko-js/marko/commit/1fed43e24133ea6a43448237296e491a17a4b497))\n- optimize dynamic tag when types are statically known ([#1550](https://github.com/marko-js/marko/issues/1550)) ([4719405](https://github.com/marko-js/marko/commit/47194054de15eeb19247a8f50926ac81c6d03671))\n- optimize merge html attrs ([#1538](https://github.com/marko-js/marko/issues/1538)) ([792aa6a](https://github.com/marko-js/marko/commit/792aa6a7b702baba0599524cb30f7ca52e277dae))\n- optimize serializing renderBody & legacy widgets ([#1539](https://github.com/marko-js/marko/issues/1539)) ([eb9e156](https://github.com/marko-js/marko/commit/eb9e156116ab46b329ff9d32514fe298e38fad3d))\n- skip serializing instance props & state for non split components ([#1546](https://github.com/marko-js/marko/issues/1546)) ([75fd1b0](https://github.com/marko-js/marko/commit/75fd1b018f3ecc408258ec2f4e97337e3c69a8c9))\n\n# [5.0.0-next.8](https://github.com/marko-js/marko/compare/v5.0.0-next.7...v5.0.0-next.8) (2020-03-17)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.7](https://github.com/marko-js/marko/compare/v5.0.0-next.6...v5.0.0-next.7) (2020-03-17)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.6](https://github.com/marko-js/marko/compare/v5.0.0-next.5...v5.0.0-next.6) (2020-03-16)\n\n### Bug Fixes\n\n- don't serialize component boundary keys if the owner isn't hydrated ([#1525](https://github.com/marko-js/marko/issues/1525)) ([ab3d2a7](https://github.com/marko-js/marko/commit/ab3d2a7b0b4bb5ab05e78d4bba17efe4d3f58afa))\n\n### Features\n\n- all vnodes have owner components ([#1517](https://github.com/marko-js/marko/issues/1517)) ([585b2f1](https://github.com/marko-js/marko/commit/585b2f1de7797f909f1204f7c52c4b6891f8e156))\n\n# [5.0.0-next.5](https://github.com/marko-js/marko/compare/v5.0.0-next.4...v5.0.0-next.5) (2020-02-26)\n\n### Bug Fixes\n\n- always include nested contexts when serializing ([#1515](https://github.com/marko-js/marko/issues/1515)) ([84aa30e](https://github.com/marko-js/marko/commit/84aa30ee6d04732f4a9f3349f61b12a72a980016))\n- set preserve false under new rerender roots ([#1513](https://github.com/marko-js/marko/issues/1513)) ([c00a02c](https://github.com/marko-js/marko/commit/c00a02c44633d10ea23284e6b1222476d7134361))\n\n# [5.0.0-next.4](https://github.com/marko-js/marko/compare/v5.0.0-next.3...v5.0.0-next.4) (2020-02-25)\n\n### Bug Fixes\n\n- improve node locations in sourcemaps ([#1512](https://github.com/marko-js/marko/issues/1512)) ([f4a39e9](https://github.com/marko-js/marko/commit/f4a39e91ca90aa734882ba234119ade3b0436e73))\n\n# [5.0.0-next.3](https://github.com/marko-js/marko/compare/v5.0.0-next.2...v5.0.0-next.3) (2020-02-25)\n\n### Bug Fixes\n\n- only use minprops on runtime code ([#1511](https://github.com/marko-js/marko/issues/1511)) ([eb7441f](https://github.com/marko-js/marko/commit/eb7441f78779272577d8a19433644c0440ac6b80))\n\n# [5.0.0-next.2](https://github.com/marko-js/marko/compare/v5.0.0-next.1...v5.0.0-next.2) (2020-02-25)\n\n**Note:** Version bump only for package marko\n\n# [5.0.0-next.1](https://github.com/marko-js/marko/compare/v4.18.48...v5.0.0-next.1) (2020-02-25)\n\n### chore\n\n- delete deprecated apis/tests ([c163054](https://github.com/marko-js/marko/commit/c1630543fba7ca136d5986b4c19ecaa7f7fccb82))\n\n### Features\n\n- update apis/tests for new compiler ([ea6736d](https://github.com/marko-js/marko/commit/ea6736d085839debf91979be4f901d79dca9d2bd))\n\n### BREAKING CHANGES\n\n- api for compile-time tags has changed.\n  This affects tranformer/node-factory/code-generator tags.\n\nCo-authored-by: Michael Rawlings <mirawlings@ebay.com>\nCo-authored-by: Dylan Piercey <dpiercey@ebay.com>\nCo-authored-by: Andrew Gliga <agliga@ebay.com>\n\n- The following deprecated apis have been removed:\n\n* Deprecated top-level entrypoints of the `marko` package\n* The marko@3/marko-widgets@6 legacy compatibility layer\n* Auto-migratable syntax and api changes to the core tags\n\nCo-authored-by: Michael Rawlings <mirawlings@ebay.com>\nCo-authored-by: Dylan Piercey <dpiercey@ebay.com>\n\n# Changelog\n\n# 4.x\n\n## 4.18.x\n\n### 4.18.48\n\n- Fixes a regression from [#1499](https://github.com/marko-js/marko/pull/1499) which caused `<${dynamic}>` tags with body content to not have their events registered. [#1507](https://github.com/marko-js/marko/pull/1507)\n- Fixes issue with `getEl` being used on a keyed `<${dynamic}>` tag. [#1507](https://github.com/marko-js/marko/pull/1507)\n- Fixes registering event handlers added to a `<${dynamic}>` tag that renders a native element under a split component. [#1507](https://github.com/marko-js/marko/pull/1507)\n\n### 4.18.47\n\n- Deprecate implicit JSON.stringify for attributes, attr toString fix. [#1505](https://github.com/marko-js/marko/pull/1505)\n- Remove data-widget, add warning for non-split, non-stateful widgets. [#1503](https://github.com/marko-js/marko/pull/1503)\n- Flushing improvements. [#1502](https://github.com/marko-js/marko/pull/1502)\n\n### 4.18.46\n\n- Fixed issue with `<init-components>` being rendered under nested async outs. [#1500](https://github.com/marko-js/marko/pull/1500)\n\n### 4.18.45\n\n- Fixed dynamic tags to add data-marko-key for split components [#1499](https://github.com/marko-js/marko/pull/1499)\n- Fixed dynamic tags properly render self-closing tags on the server [#1499](https://github.com/marko-js/marko/pull/1499)\n\n### 4.18.44\n\n- Fix issue with diffing SSR'd `no-update` section. [#1498](https://github.com/marko-js/marko/pull/1498)\n\n### 4.18.43\n\n- No longer serialize input for split legacy widgets. [#1497](https://github.com/marko-js/marko/pull/1497)\n\n### 4.18.42\n\n- Fix regression for unkeyed elements with toggled spread attributes [#1496](https://github.com/marko-js/marko/pull/1496)\n- Fix regression with body-only-if migration for legacy renderers [#1495](https://github.com/marko-js/marko/pull/1495)\n\n### 4.18.41\n\n- Improve support for conditional `w-bind`. [#1494](https://github.com/marko-js/marko/pull/1494)\n- No longer delete `onBeforeDestroy` and `onBeforeUpdate` from legacy widget prototypes. [#1494](https://github.com/marko-js/marko/pull/1494)\n- Fix regression with registering event handlers for SSR content under a `no-update`. [#1493](https://github.com/marko-js/marko/pull/1493)\n\n### 4.18.40\n\n- Fix issue with the `ignoreUnrecognizedTags` compiler option with `<@attribute>` tags inside of a `<${dynamic}>` tag. [#1491](https://github.com/marko-js/marko/pull/1491)\n- Improve support for legacy widgets by allowing for custom `init` method on prototype. [#1490](https://github.com/marko-js/marko/pull/1490)\n- Removes some unused properties that were serialized with legacy widgets [#1489](https://github.com/marko-js/marko/pull/1489)\n- Improves consistency with `...spread` attributes onto native tags. [#1488](https://github.com/marko-js/marko/pull/1488)\n  - Now turns `camelCase` properties into `dash-cash`\n  - Now omits `renderBody` properties.\n- Improves `this.el` warning for legacy widgets. [#1487](https://github.com/marko-js/marko/pull/1487)\n- Fixes an issue with nested `no-update`'s around components not initializing properly. [#1486](https://github.com/marko-js/marko/pull/1486)\n\n### 4.18.39\n\n- Support overriding the 'ready' method in legacy widgets. [#1484](https://github.com/marko-js/marko/pull/1484)\n\n### 4.18.38\n\n- Fix regression with ssr'd components under 'no-update' not initializing. [#1483](https://github.com/marko-js/marko/pull/1483)\n\n### 4.18.37\n\n- Fix regression with no-update-body on textarea tags. [#1482](https://github.com/marko-js/marko/pull/1482)\n\n### 4.18.36\n\n- Fix issue for legacy widget rerenders not preserving props. [#1481](https://github.com/marko-js/marko/pull/1481)\n- `no-update` will now preserve elements rendered from the server side. [#1480](https://github.com/marko-js/marko/pull/1480)\n\n### 4.18.35\n\n- Improve support for legacy split widgets. [#1477](https://github.com/marko-js/marko/pull/1477)\n\n### 4.18.34\n\n- Improve legacy widgets assigning into state causing a replace instead of merge. [#1476](https://github.com/marko-js/marko/pull/1476)\n\n### 4.18.33\n\n- Fix event name case normalization for legacy components with `w-on`. [#1475](https://github.com/marko-js/marko/pull/1475)\n\n### 4.18.32\n\n- Return the component id if no key is passed to getElId/elId. [#1474](https://github.com/marko-js/marko/pull/1474)\n- Support having nullish keys in the legacy (v3) renderer. [#1473](https://github.com/marko-js/marko/pull/1473)\n\n### 4.18.31\n\n- Fix legacy render lifecycle order to match marko-widgets@6. [#1472](https://github.com/marko-js/marko/pull/1472)\n\n### 4.18.30\n\n- Fix regression with browser remap for legacy widgets. [#1471](https://github.com/marko-js/marko/pull/1471)\n\n### 4.18.29\n\n- Fixed regression which was causing getTemplateData to be serialized.\n- Refactor helpers, fix circular deps, improve code splitting [#1468](https://github.com/marko-js/marko/pull/1468)\n- Remove unused deps, update package-lock [#1469](https://github.com/marko-js/marko/pull/1469)\n- Fixed typo in example output [#1463](https://github.com/marko-js/marko/pull/1463)\n\n### 4.18.28\n\n- Allow support for `<state>` tag and calling `setState` on null state [#1460](https://github.com/marko-js/marko/pull/1460)\n\n### 4.18.27\n\n- Allow empty `<@catch>` in `<await>` [#1456](https://github.com/marko-js/marko/pull/1456)\n\n### 4.18.26\n\n- Improve errors emitted from AsyncWriter\n\n### 4.18.25\n\n- Better async stack traces in dev [#1453](https://github.com/marko-js/marko/pull/1453)\n\n### 4.18.24\n\n- Remove circular dep for dom weakmaps. [#1449](https://github.com/marko-js/marko/pull/1449)\n- Fix invalid deprecation message for core-tags on windows. [#1448](https://github.com/marko-js/marko/pull/1448)\n\n### 4.18.23\n\n- Allow `<macro>` nested under `<if>`. [#1445](https://github.com/marko-js/marko/pull/1445)\n\n### 4.18.22\n\n- Improve legacy compatibilty layer by exposing `widgetProps` on the `data` object. [#1443](https://github.com/marko-js/marko/pull/1443)\n- Improve getComponentByEl lookup to prefer owner components. [#1444](https://github.com/marko-js/marko/pull/1444)\n\n### 4.18.21\n\n- Fix issue where duplicated attributes were not being included properly in compiled templates. [#1442](https://github.com/marko-js/marko/pull/1442)\n\n### 4.18.20\n\n- Fix initialization edge-case for top-level async components. [#1441](https://github.com/marko-js/marko/pull/1441)\n\n### 4.18.19\n\n- Deprecate `$global.widgetIdPrefix` (should use `$global.componentIdPrefix` instead). [#1439](https://github.com/marko-js/marko/pull/1439)\n- Improve support for rollup by removing usage of `require.resolve`. [#1440](https://github.com/marko-js/marko/pull/1440)\n- Update minimum version of htmljs-parser to bring in patch release for parsing css calc values.\n\n### 4.18.18\n\n- Adds a missing method used by part of the legacy compatibility layer.\n\n### 4.18.17\n\n- Fix issue with async out of order components initializing in the wrong order [#1436](https://github.com/marko-js/marko/pull/1436)\n- Improvements to the legacy compatibility layer [#1437](https://github.com/marko-js/marko/pull/1437)\n\n### 4.18.16\n\n- Fix top-level components throwing error on hydrate [#1428](https://github.com/marko-js/marko/pull/1428)\n- Ensure scripts only have one text node as a child [#1429](https://github.com/marko-js/marko/pull/1429)\n\n### 4.18.15\n\n- Improve support for conditional comments spanning multiple comments. [#1427](https://github.com/marko-js/marko/pull/1427)\n- Add a check for loading precompiled templates. [#1426](https://github.com/marko-js/marko/pull/1426)\n\n### 4.18.14\n\n- Improve support for running multiple versions of Marko on the page. [#1418](https://github.com/marko-js/marko/pull/1418)\n- Add migration for `component.elId` when used in a place where `:scoped` is recommended. [#1413](https://github.com/marko-js/marko/pull/1413)\n- Fix issue where static regexps in the template would output differently than dynamic ones. [#1412](https://github.com/marko-js/marko/pull/1412)\n- Improve `marko.json` definitions for core/html tags [#1411](https://github.com/marko-js/marko/pull/1411)\n\n### 4.18.13\n\n- Improve support for consuming v3 components via webpack. [#1410](https://github.com/marko-js/marko/pull/1410)\n\n### 4.18.12\n\n- Improve autocompletion for core tags. [#1405](https://github.com/marko-js/marko/pull/1405)\n- Fix issue when using `getComponentForEl` with split components. [#1400](https://github.com/marko-js/marko/pull/1400)\n\n### 4.18.11\n\n- Fix server-rendered conditional widgets in the compatibility layer. [#1395](https://github.com/marko-js/marko/pull/1395)\n- Deprecate the partial dynamic tag. [#1397](https://github.com/marko-js/marko/pull/1397)\n\n### 4.18.10\n\n- Improve migration for `getInitialState` with legacy widgets. [#1385](https://github.com/marko-js/marko/pull/1385)\n\n### 4.18.9\n\n- Legacy compat fixes [#1383](https://github.com/marko-js/marko/pull/1383)\n  - Temporary fix to ensure `getComponents` doesn't return `null` entries - these should really be removed from the `lookup` instead\n  - Use a `for...in` loop to extend the `BaseComponent` (doesn't support getters properly) to maintain the same behavior as `marko-widgets`\n  - Ensure that the original `input` for a widget is what gets serialized, not the result of `getTemplateData` (which is called again when hydrating)\n\n### 4.18.8\n\n- Fixes an issue where `require(\"marko/components\").getComponentForEl` could return undefined when a component exists, or the wrong component, when nested fragments are present. [#1382](https://github.com/marko-js/marko/pull/1382)\n\n### 4.18.7\n\n- Fixes a regression from 4.18.6 that could cause some body content to be omitted from the output [#1380](https://github.com/marko-js/marko/pull/1380)\n- Adds deprecated string dynamic attributes to the vdom runtime for improved legacy compatibility [#1378](https://github.com/marko-js/marko/pull/1378)\n\n### 4.18.6\n\n- Migration does not add `id:scoped` when migrating a repeated `w-id` [#1377](https://github.com/marko-js/marko/pull/1377)\n- Fixes an issue diffing the selected option within an optgroup [#1376](https://github.com/marko-js/marko/pull/1376)\n- Fixes component tracking for client-reorder [#1375](https://github.com/marko-js/marko/pull/1375)\n- Improve the migration for legacy `<for>` syntax [#1374](https://github.com/marko-js/marko/pull/1374)\n- Add migration for named classes in the template [#1372](https://github.com/marko-js/marko/pull/1372)\n\n### 4.18.5\n\n- Fix issue with invoke tag migration when a inline control flow is used [#1366](https://github.com/marko-js/marko/pull/1366)\n\n### 4.18.4\n\n- Lazily evaluate attributes for dynamic tags [#1365](https://github.com/marko-js/marko/pull/1365)\n\n### 4.18.3\n\n- Fix `registerTaglib`: use correct function call [#1363](https://github.com/marko-js/marko/pull/1363)\n- Fix tryonline: correct paths and no `taglibImports` [#1360](https://github.com/marko-js/marko/pull/1360)\n- Migration fix: [#1364](https://github.com/marko-js/marko/pull/1364)\n- Migration improvement: deprecation warnings that are automatically migratable now have a `MIGRATION` heading [#1364](https://github.com/marko-js/marko/pull/1364) (also included test improvements)\n- Migration improvement: remove empty `<layout-put>` tags [#1355](https://github.com/marko-js/marko/pull/1355)\n\n### 4.18.2\n\n- Fixes an issue where fragments could remove nodes from their siblings [#1359](https://github.com/marko-js/marko/pull/1359)\n\n### 4.18.1\n\n- Fixes a regression with `body-only-if` and a legacy control flow attribute [#1356](https://github.com/marko-js/marko/pull/1356)\n\n### 4.18.0\n\n- Added dynamic tags to act like body-only-if. If dynamic tags are null then the outer tag will not be rendered. However, the body will be rendered. Deprecated body-only-if [#1332](https://github.com/marko-js/marko/pull/1332)\n\n## 4.17.x\n\n### 4.17.5\n\n- Fix issue where setting the `value` attribute of a textarea to `false` caused the string `\"false\"` to be used in the vdom. [#1348](https://github.com/marko-js/marko/issues/1348)\n\n### 4.17.4\n\n- Updates htmljs-parser to fix an issue with comments inside inline scriptlets.\n- Fix some issues with for loop auto keying. [#1346](https://github.com/marko-js/marko/issues/1346)\n- Fix error when using a non string as a key (now logs a deprecation). [#1344](https://github.com/marko-js/marko/issues/1344)\n\n### 4.17.3\n\n- Fix issue were `getEls` would not work with repeated keys for split components. [#1343](https://github.com/marko-js/marko/issues/1343)\n\n### 4.17.2\n\n- Fix regression with namespaces in nested fragments. [#1340](https://github.com/marko-js/marko/issues/1340)\n\n### 4.17.1\n\n- Allow emitting events while the parent is mounting. [#1336](https://github.com/marko-js/marko/issues/1336)\n- Fix issue where `component.el` and `component.getEl` could return a marker node. [#1339](https://github.com/marko-js/marko/issues/1339)\n\n### 4.17.0\n\n- Element namespaces are now calculated at runtime, fixes some edge cases with the dynamic tag. [#1333](https://github.com/marko-js/marko/issues/1333)\n\n## 4.16.x\n\n### 4.16.15\n\n- Fix an issue where nodes may be preserved if another node with the same key was rendered as preserved. [#1334](https://github.com/marko-js/marko/issues/1334)\n- Improve the `ignoreUnrecognizedTags` compiler option to ignored nested `@tags` on unrecognized tags (removes the need for the `escapeAtTags` option). [#1335](https://github.com/marko-js/marko/issues/1335)\n\n### 4.16.14\n\n- Prevent treating macro usage with parameters as a component. [#1326](https://github.com/marko-js/marko/issues/1326)\n\n### 4.16.13\n\n- Fixes a regression with printing nested unary expressions (eg typeof). [#1323](https://github.com/marko-js/marko/issues/1323)\n\n### 4.16.12\n\n- fix destorying a component that has already removed some top-level nodes [#1321](https://github.com/marko-js/marko/issues/1321)\n- fix components runtime path after refactor released in 4.16.11 [#1322](https://github.com/marko-js/marko/issues/1322)\n\n### 4.16.11\n\n- Fixes a regression (syntax) in IE 11 introduced in 4.16.10\n\n### 4.16.10\n\n- Hydrating components now consistently render from the top down. [#1317](https://github.com/marko-js/marko/issues/1317)\n\n### 4.16.9\n\n- Fixes an issue where legacy widgets could loose a reference to their parent components. [#1311](https://github.com/marko-js/marko/issues/1311)\n\n### 4.16.8\n\n- Fixes an issue with hot-reload. [#1282](https://github.com/marko-js/marko/issues/1282)\n- If the require hook is enabled, all templates loaded by marko will now use the require hook, including hot-reloaded templates and tags loaded from compiled templates. [#1310](https://github.com/marko-js/marko/pull/1310)\n\n### 4.16.7\n\n- Improve parsing of tag arguments (allows for `<${input.renderBody}(...spread)/>`). [#1308](https://github.com/marko-js/marko/pull/1308)\n\n### 4.16.6\n\n- Fix issue with hydrating legacy Marko 3 widgets from the server. [#1306](https://github.com/marko-js/marko/pull/1306)\n\n### 4.16.5\n\n- Fix regression with legacy dynamic attributes when a string without whitespace is used. [#1304](https://github.com/marko-js/marko/pull/1304)\n- The `disabled` property on buttons is now properly synced with the template. [#1303](https://github.com/marko-js/marko/pull/1303)\n\n### 4.16.4\n\n- Fix regression with migrating legacy `<macro>` syntax with a magic `renderBody` variable. [#1300](https://github.com/marko-js/marko/pull/1300)\n\n### 4.16.3\n\n- Fix issue with migrating `<var>` and `<assign>` with `widget` properties. [#1298](https://github.com/marko-js/marko/pull/1298)\n\n### 4.16.2\n\n- Fix issue with nested fragments (often as dynamic tags) that were adjacent in the DOM not hydrating properly. [#1294](https://github.com/marko-js/marko/pull/1294)\n- Remove redundant portion of keys for `<macro>` tags within `<for>` loops. [#1295](https://github.com/marko-js/marko/pull/1295)\n\n### 4.16.1\n\n- Fix regression for `:no-update` on dynamic tag html attributes. [#1292](https://github.com/marko-js/marko/pull/1292)\n\n### 4.16.0\n\n- Add `<marko deprecated-no-create-or-input-for-top-level-hydrate />` option to revert to pre `4.9.0` hydrate behavior. [#1289](https://github.com/marko-js/marko/pull/1289)\n\n## 4.15.x\n\n### 4.15.6\n\n- Fix regression in older browsers caused by using `string.startsWith` in the runtime code.\n\n### 4.15.5\n\n- Allow syntax that Marko does not understand (but esprima does) to pass through in the arguments syntax. [#1286](https://github.com/marko-js/marko/pull/1286)\n- Fix issue with `<title>` inside of an `<svg>` using the wrong namespace. [#1284](https://github.com/marko-js/marko/pull/1284)\n\n### 4.15.4\n\n- Forward errors from `<await client-reorder>` to the parent out to prevent potential unhandled rejections. [#1275](https://github.com/marko-js/marko/pull/1275)\n\n### 4.15.3\n\n- Fix false positive deprecation message for legacy nested tag syntax. [#1271](https://github.com/marko-js/marko/pull/1271)\n\n### 4.15.2\n\n- Improve the webpack server-bundling experience by guarding a legacy (lasso-specific) api that uses a dynamic require and causes a warning to be emitted. [#1267](https://github.com/marko-js/marko/pull/1267)\n\n### 4.15.1\n\n- Improve support for using raw functions as event handlers by not outputing `data-marko` content for components that will rerender in the browser. [#1262](https://github.com/marko-js/marko/pull/1262)\n\n### 4.15.0\n\nThe most notable change here is to the `<for>`, `<macro>` and `<await>` core tags. These tags previously each relied on custom syntax to implement an API that was not possible to do in userland when they were introduced. Generic solutions for these problems has arrived in the form of [attribute tags](https://markojs.com/docs/syntax#attribute-tag) and [tag parameters](https://markojs.com/docs/syntax#parameters).\n\nWith these new features in place and currently available in userland we set out to normalize these existing tags, hopefully making the learning process for Marko a little easier, and also promoting the use of these new features. We've also spent time formalizing some best practices, and highlighting this new syntax in the documentation on the [markojs.com](https://markojs.com) website.\n\nThe existing syntax will continue to be supported until Marko 5 and will currently log a deprecation warning. For these deprecations and most others you can automatically migrate existing code using the [marko migrate](https://github.com/marko-js/cli/blob/master/packages/migrate/README.md) cli tool.\n\n- Updated documentation with guides and changes to syntax/core tags. [#1260](https://github.com/marko-js/marko/pull/1260)\n- Modernize the [`<for>` tag](https://markojs.com/docs/core-tags#for). [#1238](https://github.com/marko-js/marko/pull/1238)\n- Modernize the [`<await>` tag](https://markojs.com/docs/core-tags#await). [#1244](https://github.com/marko-js/marko/pull/1244)\n- Modernize the [`<macro>` tag](https://markojs.com/docs/core-tags#macro). [#1227](https://github.com/marko-js/marko/pull/1227)\n- Deprecated legacy top level imports (jquery/ready) and compiler option tags (recommended to use marko.json instead). [#1258](https://github.com/marko-js/marko/pull/1258)\n- Modern arguments support for the dynamic tag. [#1259](https://github.com/marko-js/marko/pull/1259)\n- Improves parsing inside of the `<html-comment>` tag to support the same style of content as actual html comments. [#1261](https://github.com/marko-js/marko/pull/1261)\n- Ignore only whitespace content inside of concise mode tags (including `class` and `style`) which would previously error. [#1256](https://github.com/marko-js/marko/pull/1256)\n- Fixes a regression with passing a string literal as a `${dynamic}` attribute and add a deprecation warning. [#1257](https://github.com/marko-js/marko/pull/1257)\n\n## 4.14.x\n\n### 4.14.25\n\n- Fix regression with non standard template literals (`\"stuff ${placeholder}\"`) that have escaped content such as newlines [#1254](https://github.com/marko-js/marko/pull/1254)\n\n### 4.14.24\n\n- Fix regression in `<await>` that caused flushing to not occur in all cases [#1252](https://github.com/marko-js/marko/pull/1252)\n\n### 4.14.23\n\n- Fix warning that `\"marko\"` was using deprecated features. [#1250](https://github.com/marko-js/marko/pull/1250)\n- Improve code optimization for conditional `@nested` tags. [#1249](https://github.com/marko-js/marko/pull/1249)\n\n### 4.14.22\n\n- Fix issue with `no-update` not moving preserved items [#1247](https://github.com/marko-js/marko/pull/1247).\n- Fix regression with include tag migration where `<include(data())>` has side effects. [#1246](https://github.com/marko-js/marko/pull/1246)\n- Treat importing tags the same as using them in the template (uses `load` api instead of `require` when configured). [#1245](https://github.com/marko-js/marko/pull/1245)\n- Gracefully handle async client-reorder when nodes are missing during hydrate. [#1243](https://github.com/marko-js/marko/pull/1243)\n\n### 4.14.21\n\n- Update `htmljs-parser` to improve parsing regexes [htmljs-parser #61](https://github.com/marko-js/htmljs-parser/pull/61)\n\n### 4.14.20\n\n- Add new `<tag|params|>` support and migrator for old syntax/flag [#1236](https://github.com/marko-js/marko/pull/1236)\n- Remove unneeded deprecation warning when using `component` within a template [#1235](https://github.com/marko-js/marko/pull/1235)\n\n### 4.14.19\n\n- Fixes walking into some AST nodes which was causing some migrations to not be as effective [#1233](https://github.com/marko-js/marko/pull/1233)\n\n### 4.14.18\n\n- Fixes [#1230](https://github.com/marko-js/marko/issues/1230) - regression with include tag migration outputing invalid identifiers [#1231](https://github.com/marko-js/marko/pull/1231)\n- Add migration for legacy nested tag syntax [#1129](https://github.com/marko-js/marko/pull/1129)\n\n### 4.14.17\n\n- Fixes [#1219](https://github.com/marko-js/marko/issues/1219) - transitive widget getEl and events [#1225](https://github.com/marko-js/marko/pull/1225)\n- Importing a marko template adds it to tags meta (fixes regression with `<include>` tag) [#1226](https://github.com/marko-js/marko/pull/1226)\n\n### 4.14.16\n\n- Add migration for non-standard template literals. [#1224](https://github.com/marko-js/marko/pull/1224)\n- Fix regression with dynamic attribute migration. [#1223](https://github.com/marko-js/marko/pull/1223)\n\n### 4.14.15\n\n- Improve migrating `widget` references to `component` in attributes. [#1220](https://github.com/marko-js/marko/pull/1220)\n\n### 4.14.14\n\n- Fix regression with `eval`ing class names in debug mode. [#1218](https://github.com/marko-js/marko/pull/1218)\n\n### 4.14.13\n\n- Support file name migrations with Marko migrate. [#1216](https://github.com/marko-js/marko/pull/1216)\n- Skip `id:scoped` when migrating w-id for custom tags. [#1217](https://github.com/marko-js/marko/pull/1217)\n\n### 4.14.12\n\n- Add migrator for `w-config` attribute. [#1214](https://github.com/marko-js/marko/pull/1214)\n- Add migrator for and deprecate `unless` tag/directive. [#1210](https://github.com/marko-js/marko/pull/1210)\n\n### 4.14.11\n\n- Fix regression with `w-body` tag. [#1213](https://github.com/marko-js/marko/pull/1213)\n\n### 4.14.10\n\n- Add migrator for `ref` attribute. [#1207](https://github.com/marko-js/marko/pull/1207)\n- Fix regression with `var` tag and `w-body/include` tags. [#1212](https://github.com/marko-js/marko/pull/1212)\n\n### 4.14.9\n\n- Add migrator for layout tags and include tag/directive. [#1206](https://github.com/marko-js/marko/pull/1206) & [#1204](https://github.com/marko-js/marko/pull/1204)\n- Add migrator for `<script template-helpers>` and `<script marko-init>`. [#1209](https://github.com/marko-js/marko/pull/1209)\n\n### 4.14.8\n\n- Add migrator from w-body to dynamic tag. [#1199](https://github.com/marko-js/marko/pull/1199)\n- Add migrator from dynamic attributes to spread attributes. [#1202](https://github.com/marko-js/marko/pull/1202)\n\n### 4.14.7\n\n- Fix regression for `widget.elId` migration. [#1198](https://github.com/marko-js/marko/pull/1198)\n\n### 4.14.6\n\n- Add a whitelist of files to publish to NPM. [#1197](https://github.com/marko-js/marko/pull/1197)\n\n### 4.14.5\n\n- Add `getTemplateData` migrator. [#1195](https://github.com/marko-js/marko/pull/1195)\n- Add migrators for most of the `w-*` attributes. [#1190](https://github.com/marko-js/marko/pull/1190)\n- Add basic legacy widget migration. [#1192](https://github.com/marko-js/marko/pull/1192)\n\n### 4.14.4\n\n- Fix regression with `setProps` on legacy compatibility layer. [#1193](https://github.com/marko-js/marko/pull/1193)\n\n### 4.14.3\n\n- Move `w-on` compatibility to the migrate stage. [#1186](https://github.com/marko-js/marko/pull/1186)\n- Legacy compatibility (v3) improvements. [#1189](https://github.com/marko-js/marko/pull/1189)\n- Specially handle template literals in templates. [#1188](https://github.com/marko-js/marko/pull/1188)\n\n### 4.14.2\n\n- Convert the `<async-fragment>` transformer into a migrator. [#1185](https://github.com/marko-js/marko/pull/1185)\n\n### 4.14.1\n\n- Fix regression causing some parsed javascript nodes to be omitted from output. [#1184](https://github.com/marko-js/marko/pull/1184)\n\n### 4.14.0\n\n- Add migration stage, deprecate rendering with `out`, deprecate control-flow directive as attributes. [#1180](https://github.com/marko-js/marko/pull/1180)\n- parse = parseRaw + normalize [#1179](https://github.com/marko-js/marko/pull/1179)\n- parse nonstandard string with placeholder to TemplateLiteral node, transpile template literals. [#1179](https://github.com/marko-js/marko/pull/1179)\n- add new parse api\n\n## 4.13.x\n\n### 4.13.13\n\n- Fix regression: parsing of `if` statements without braces (in scriptlets & otherwise). [#1175](https://github.com/marko-js/marko/pull/1175)\n- Fix regression: `<var>` and `<assign>` tags with non-standard placeholders in normal string attributes. [#1176](https://github.com/marko-js/marko/pull/1176)\n\n### 4.13.12\n\n- `<invoke>` tag translates to modern Marko scriptlet (or dynamic tag). [#1165](https://github.com/marko-js/marko/pull/1165)\n- `<assign>` tag translates to modern Marko scriptlet. [#1158](https://github.com/marko-js/marko/pull/1158)\n- Imperative rendering in scriptlets translates to modern Marko dynamic tag. [#1174](https://github.com/marko-js/marko/pull/1174)\n\n### 4.13.11\n\n- Add spread attribute optimization, fix issue with spreading non objects. [#1171](https://github.com/marko-js/marko/pull/1171)\n- Move `#` to the start of `:scoped` attributes (allows for `href:scoped=\"#name\"`). [#1172](https://github.com/marko-js/marko/pull/1172)\n\n### 4.13.10\n\n- Adds a hidden api used to make [@marko-tags/context](https://github.com/marko-js/tags/tree/master/tags/context) possible. [#1168](https://github.com/marko-js/marko/pull/1168)\n\n### 4.13.9\n\n- Improve support for [arc]() by normalizing file system names with square brackets. [#1166](https://github.com/marko-js/marko/pull/1166)\n\n### 4.13.8\n\n- Quick patch for `4.13.7` that removes a `let` assignment. [#1153](https://github.com/marko-js/marko/pull/1153)\n\n### 4.13.7\n\n- Prevent treating components with tag params being treated as implicit components. [#1149](https://github.com/marko-js/marko/pull/1149)\n\n### 4.13.6\n\n- Prevent mutating component input when using a single spread attribute with repeated @tags. [#1142](https://github.com/marko-js/marko/pull/1142)\n- Fix for include tag hydration when transcluded. [#1143](https://github.com/marko-js/marko/pull/1143)\n\n### 4.13.5\n\n- Add additional reference to fragment nodes which resolves an issue with IE. [#1130](https://github.com/marko-js/marko/pull/1130)\n\n### 4.13.4\n\n- Remove Object.assign calls in the browser. [#1120](https://github.com/marko-js/marko/pull/1120)\n\n### 4.13.3\n\n- Propagate errors to express automatically with the `res.marko` api. [#1119](https://github.com/marko-js/marko/pull/1119)\n- Support multi line import statments. [#1118](https://github.com/marko-js/marko/pull/1118)\n\n### 4.13.2\n\n- Allow discovering tags where the template name matches the directory name [#1117](https://github.com/marko-js/marko/pull/1117):\n\n```\ncomponents/\n  tag-name/\n    tag-name.marko\n    tag-name.style.css\n```\n\n### 4.13.1\n\n- Remove es2015 features from runtime. [#1115](https://github.com/marko-js/marko/pull/1115)\n\n### 4.13.0\n\n#### PR #1094\n\n**Introducing HTMLFragment**\n\n- Updates the diffing algorithm to use an HTMLFragment node as an abstraction rather than keeping track of startNode and endNode all throughout the diffing algorithm.\n- Uses the HTMLFragment for the `<${dynamic}>` tag and `<include>` tags to preserve server-rendered content for which the `renderBody` is not available in the browser.\n\n**Changes to keys**\n\n- Component ids are based on the resulting parent tree (not the owner tree). This means we cannot rely on the ids in the global lookup, so component key/refs are now also stored on the component instance.\n- Autokeyed elements are now stored on the parent rather than the owner. User assigned key/refs are still stored on the owner component. Because of this, user assigned keys are now prefixed to differentiate them from autokeys. This also has the benefit that assigning numeric keys can no longer conflict with the autokeys.\n- Static node trees are now only auto assigned a key for the top-level node (instead of all nodes). This is because:\n  - When updating, only the top-level node is considered.\n  - When static nodes are hoisted out of the render method, they are not associated with the owner component\n\n**Changes to Hydration**\n\n- Server comment starting markers now have the component's key serialized so the component can be attached to its owner\n- Server comment markers no longer have the id on the closing marker, it is stack based.\n- Normalize differences between hydration and client-rendering, so post mount the DOM looks the same regardless of whether a component was server or client rendered.\n\n## 4.12.x\n\n### 4.12.4\n\n- Don't render invalid attribute names on the server [#1103](https://github.com/marko-js/marko/pull/1103)\n\n### 4.12.3\n\n- Removes extra parentheses in output javascript for expressions that Marko does not understand.\n\n### 4.12.2\n\n- Fixes automatic keying of elements/components in `for()` attribute loops\n\n### 4.12.1\n\n- Fix #1022 - transcluded keys don't match, stateful component not preserved [#1086](https://github.com/marko-js/marko/pull/1086)\n\n### 4.12.0\n\n- Tag params [#1076](https://github.com/marko-js/marko/pull/1076)\n- Style arrays [#1082](https://github.com/marko-js/marko/pull/1082)\n- Fix #1075 - cannot compile dynamic tag at root with user key [#1081](https://github.com/marko-js/marko/pull/1081)\n- Fix #1078 - mutating spread attributes [#1080](https://github.com/marko-js/marko/pull/1080)\n\n## 4.11.x\n\n### 4.11.5\n\n- Add fallback location for compile-time deprecation warnings\n\n### 4.11.4\n\n- Fixes an issue with scoped attributes automatically setting keys in a problematic way [#1069](https://github.com/marko-js/marko/pull/1069)\n- Fixes #1059 and #1052 - `Cannot read property 'nextSibling' of null`\n\n### 4.11.3\n\n- Fixes #952\n- Fixes automatic keying of elements/components in `<for>` loops\n\n### 4.11.2\n\n- Fixes another regression in the `<${dynamic}>` tag where `dashed-case` attributes were being converted to `camelCase` when rendering html elements.\n\n### 4.11.1\n\n- Fixes a regression in `<${dynamic}>` tags for object/array class/style attributes:\n  ```marko\n  $ const style = { color:'blue' };\n  <${tagName} style=style/>\n  ```\n- Allows dynamic attributes defined using `...spread` to include object/array class/style [#933](https://github.com/marko-js/marko/pull/933):\n  ```marko\n  $ const attrs = { style:{ color:'blue' } };\n  <tag ...attrs/>\n  ```\n- Fixes issue where object/array class/style attributes could not be used with `...spread` [#1007](https://github.com/marko-js/marko/pull/1007):\n  ```marko\n  $ const attrs = {};\n  <tag class=[\"oops\"] ...attrs/>\n  ```\n\n### 4.11.0\n\n- Implement #880: `<${dynamic}>` tag\n- `<include>` should be considered deprecated. Formal deprecation warning to come.\n\n## 4.10.x\n\n### 4.10.1\n\n- Fix issue with calling `require('marko/components').init(components)` multiple times.\n\n### 4.10.0\n\n- Fix #1049 Fix documentation urls on the website.\n\n## 4.9.x\n\n### 4.9.7\n\n- Fix #1038 Legacy compatibility dirty check returning false positives.\n\n### 4.9.6\n\n- Fix #1008 Spread attribute now supports functions (`..attrs()`) [#1029](https://github.com/marko-js/marko/pull/1029)\n\n### 4.9.5\n\n- Fix `onBeforeUpdate` timing for legacy component layer [#1027](https://github.com/marko-js/marko/pull/1027)\n\n### 4.9.4\n\n- Fix breaking older browsers with es6 object shorthand notation [bc0e91d5](https://github.com/marko-js/marko/commit/bc0e91d517d7b8de484c745a5734f15347ed0d26)\n\n### 4.9.3\n\n- Fix import-var compilation when there are no explicit attributes [#1002](https://github.com/marko-js/marko/pull/1002)\n\n### 4.9.2\n\n- Fixes collisions with multiple Marko runtimes on the same page. [#1019](https://github.com/marko-js/marko/pull/1019)\n- Switch to using prettier and eslint. [#1016](https://github.com/marko-js/marko/pull/1016)\n\n### 4.9.1\n\n- Fixes an issue with keyed elements not getting properly removed. [#1013](https://github.com/marko-js/marko/pull/1013)\n\n### 4.9.0\n\n- Fixes related to hydration, split components, and the legacy compatibility layer [#1010](https://github.com/marko-js/marko/pull/1010)\n\n- Fix paths for vdom dependencies [#1011](https://github.com/marko-js/marko/pull/1011)\n\n## 4.8.x\n\n### 4.8.0\n\n- Add `once-[event]` directive [#990](https://github.com/marko-js/marko/pull/990)\n\n- Improve testing setup [#989](https://github.com/marko-js/marko/pull/989)\n\n## 4.7.x\n\n### 4.7.5\n\n- Update docs for advanced attribute definition [#968](https://github.com/marko-js/marko/pull/968)\n\n- Improve error message for async rendering [#958](https://github.com/marko-js/marko/pull/958)\n\n### 4.7.4\n\n- Make jQuery optional for legacy components [#951](https://github.com/marko-js/marko/pull/951)\n\n### 4.7.3\n\n- Prevent onRender running on the server for legacy widgets\n\n### 4.7.2\n\n- Fixes [#946](https://github.com/marko-js/marko/issues/946) - don't put legacy init code in a separate lasso bundle\n\n- Fixes allowing conditionally binding to different roots in a legacy widget [#944](https://github.com/marko-js/marko/pull/944)\n\n### 4.7.1\n\n- Fix issue with multiple top level elements being removed twice. [#940](https://github.com/marko-js/marko/pull/940)\n\n### 4.7.0\n\n- Add jQuery legacy compatibility layer support [#937](https://github.com/marko-js/marko/pull/937)\n\n- Reorganize Marko tests [#934](https://github.com/marko-js/marko/pull/934)\n\n- Switch to using jsdom in test suite [#935](https://github.com/marko-js/marko/pull/935)\n\n- Decouple component hydration from Lasso [#929](https://github.com/marko-js/marko/pull/929)\n\n## 4.6.x\n\n### 4.6.0\n\n- Fixes [#914](https://github.com/marko-js/marko/issues/914) and [#920](https://github.com/marko-js/marko/issues/920) -\n  Resolves top-level component bugs\n\n- Setup `marko.load()` to prefer precompiled templates from [marko-cli](https://github.com/marko-js/marko-cli)\n\n- Various compiler changes to improve [marko-migrate](https://github.com/marko-js/marko-migrate)\n\n- Fixes [#916](https://github.com/marko-js/marko/pull/916) - Add Marko debug mode.\n  Adds babel plugin to remove and statically evaluate 'MARKO_DEBUG' literals for\n  adding deprecation warnings and hints for the runtime without a performance\n  penalty for production builds.\n\n## 4.5.x\n\n### 4.5.6\n\n- Fixes [#909](https://github.com/marko-js/marko/issues/909) - Fix condition preventing bubbling DOM events from properly being attached to a component.\n\n### 4.5.5\n\n- Add 10 Awesome Marko Features article to documentation\n\n### 4.5.4\n\n- Fixes [#904](https://github.com/marko-js/marko/issues/904) - The loop status variable is not compiling when the equal sign is padded in spacing\n\n### 4.5.3\n\n- Fixes [#903](https://github.com/marko-js/marko/issues/903) - Special unicode chars (\\u2028 and \\u2029) need to be escaped if within script tag\n\n### 4.5.2\n\n- Fixes [#899](https://github.com/marko-js/marko/issues/899) - Keyed element could be incorrectly removed after DOM diffing/patching in case of HTML element mismatch for elements with the same key. [PR #900](https://github.com/marko-js/marko/pull/900)\n\n### 4.5.1\n\n- Fixes [#893](https://github.com/marko-js/marko/issues/893) - Keyed element could be incorrectly removed after DOM diffing/patching in case of HTML element mismatch for elements with the same key. [PR #894](https://github.com/marko-js/marko/pull/894) by [@westtrade](https://github.com/westtrade)\n\n### 4.5.0\n\nSummary of changes across all beta releases for the `4.5.0` release:\n\n- Fixes [#886](https://github.com/marko-js/marko/issues/886) - Write component initialization code when async out and all of its nested async outs finish\n- Fixes [#854](https://github.com/marko-js/marko/issues/854) - Make every .marko file a UI component ([PR #855](https://github.com/marko-js/marko/pull/855))\n- Added support for the `:scoped` modifier on attributes and deprecated `:key`:\n\n```marko\n<label for:scoped=\"name\">Name</label>\n<input id:scoped=\"name\" value=\"Frank\"/>\n```\n\n- Fixes [#817](https://github.com/marko-js/marko/issues/817) - Support dynamic root elements\n- Marko no longer attaches `id` attributes to elements for purposes of keyed matching\n  - Keyed elements are maintained in an internal, per-component lookup\n- Keys are now assigned to all custom tags and HTML elements at compile-time to improve reliability and performance of DOM diffing\n- Optimized internal bookkeeping required during rendering a UI component tree (no more UI component stack)\n- DOM diffing/patching changes:\n  - Significant performance improvements\n  - morphdom is now UI component-aware\n\n### 4.5.0-beta.3\n\n- Fixes [#854](https://github.com/marko-js/marko/issues/854) - Make every .marko file a UI component ([PR #855](https://github.com/marko-js/marko/pull/855))\n\n### 4.5.0-beta.2\n\n- Add ids for any key when component.elId/getElId is used as an attribute value\n- Use indexOf instead of includes to support Node 4\n- [docs] Fixes [#841](https://github.com/marko-js/marko/issues/841) - `docs/components.md` refers to deprecated \"data\" variable [#842](https://github.com/marko-js/marko/pull/842)\n\n### 4.5.0-beta.1\n\n- Add back (legacy) support for component.elId + key in template\n- Fixes [#837](https://github.com/marko-js/marko/issues/837) - Update esprima to the latest to support async/await and ES2017 inside of components. ([PR #839](https://github.com/marko-js/marko/pull/839))\n- Fixes key/scope for attributes that have dashes in the name\n\n### 4.5.0-beta.0\n\n- Fixes [#817](https://github.com/marko-js/marko/issues/817) - Support dynamic root elements\n- Marko no longer attaches `id` attributes to elements for purposes of keyed matching\n  - Keyed elements are maintained in an internal, per-component lookup\n- Keys are now assigned to all custom tags and HTML elements at compile-time to improve reliability and performance of DOM diffing\n- Optimized internal bookkeeping required during rendering a UI component tree (no more UI component stack)\n- DOM diffing/patching changes:\n  - Significant performance improvements\n  - morphdom is now UI component-aware\n\n## 4.4.x\n\n### 4.4.28\n\n- fix undefined reference error in Component.js\n- Increase mocha timeout to avoid CI build's failing [#821](https://github.com/marko-js/marko/pull/821)\n\n### 4.4.27\n\n- Add ability to update globals by setting new input.\n- [docs] Remove unneeded command from installation docs\n- [docs] Update installing.md\n\n### 4.4.26\n\n- Add better interop for importing modules with default exports [#803](https://github.com/marko-js/marko/pull/803)\n\n### 4.4.25\n\n- Fixes #778 - Fix Marko compiler generating incorrect path for requires on Windows.\n\n### 4.4.24\n\n- [docs] Update installing.md\n\n### 4.4.23\n\n- Fixes #796 - Fix events for event targets that are SVGElementInstance types in IE11.\n- Used shortcut for escapeAtTags;\n- Added `escapeAtTags` options in order to render `<@tags>` as they are;\n- simplify a condition judgement in components-jquery\n- Fixes #790 - Class tag should not allow nested body content.\n- Update `compile/index.js` test description\n- Update handleRootNodes.js [#747](https://github.com/marko-js/marko/pull/747)\n- [docs] Fix reference to lifecycle section in docs.\n\n### 4.4.22\n\n- Fixes #784 - Fix compiled preserve-attrs path.\n- [testing] Fix express tests [#779](https://github.com/marko-js/marko/pull/779)\n- [docs] Update webpack.md\n\n### 4.4.21\n\n- Updated description in `package.json`\n\n### 4.4.20\n\n- update bindComponentVar to use dynamic location\n- updating location of bindComponent helper\n\n### 4.4.19\n\n- [testing] Fix key suffix test assertions.\n- Address key suffix feedback. Additional tests.\n- [morphdom] Removed bad and unhelpful optimization to avoid infinite loops\n- [morphdom] Ensure `onBeforeNodeDiscarded` is only called once by looking to see if the node is still attached.\n- [morphdom] Infinite loop fix in morphdom\n- Fixes #761 - component.elId() does not work on the server\n- Fixes #755 - Allow diffing of HTML, head, and body. [#756](https://github.com/marko-js/marko/pull/756)\n- [docs] Updated component docs\n- [docs] Use relative link for image\n- [testing] User default npm version for each Node.js version\n\n### 4.4.18\n\n- Fixes #749 #690 - Do not rely on root node having an ID on rerender and properly handle style root nodes.\n\n### 4.4.17\n\n- Put package (`browser.json`) deps before others and parent deps before child deps [#750](https://github.com/marko-js/marko/pull/750)\n- [docs] Fix typo in redux.md\n- [docs] Add redux document to structure.json\n- [docs] Add doc describing how to use Redux with Marko.\n\n### 4.4.16\n\n- Fix duplicate body variable\n\n### 4.4.15\n\n- Fixes #739 - Should not attempt to check instanceof of type Map if it does not exist in the browser.\n- Added build scripts\n\n### 4.4.14\n\n- Fixes issue with renderToString not rendering text nodes\n\n### 4.4.13\n\n- Fixes #721 - Add a Code of Conduct\n- Fixes #655 - Implement renderToString in the browser.\n\n### 4.4.12\n\n- Fixes #695 - Always ignore unrecognized tags for XML files when using the compiler.\n- Fixes #705 - Throw error when the root HTML element is a component and has a dynamic id attribute.\n- [testing] Additional test for root node with dynamic id of a component with a component.js file.\n\n### 4.4.11\n\n- Fixes #728 - Do not use module keyword because webpack compiles it to a custom object.\n- Fixes #719 - Support Express 4 and Express 5.\n- fixes #658 by removing empty style blocks [#715](https://github.com/marko-js/marko/pull/715)\n- fixes #688 - add reference to browser.json in meta dependencies\n- [docs] Fix broken link\n- [docs] Fix Marko syntax in docs causing compilation errors on the website.\n- [docs] Change pixels to percent in doc images.\n- [testing] Purge express cache so that express tests both use correct module versions.\n\n### 4.4.9\n\n- Revert \"Fixes #705 - Throw error when the root HTML element has a dynamic id …\"\n- [testing] Only run Node 4, 6, & 8 in travis\n\n### 4.4.8\n\n- [docs] Clean up why-is-marko-fast.md\n- [docs] Clean up marko-vs-react.md\n\n### 4.4.7\n\n- Add silent option to browser-refresh and hot-reload\n- Check id attribute for Literal. Update error message to include error page.\n- Fixes #705 - Throw error when the root HTML element has a dynamic id attribute.\n- [docs] Clean up components.md\n- [docs] Fix typo in webpack.md\n- [testing] give extra time for test timing out in travis\n- [testing] run tests on node 8\n- [testing] ignore test-dist from coverage\n\n### 4.4.6\n\n- Fixes #693 - [SSR] Improved handling of top-level UI components with renderBody func\n- Switching to using `prepublish` with npm@5\n\n### 4.4.3\n\n- Use parent module to require express patch [#701](https://github.com/marko-js/marko/pull/701)\n- [docs] Reference app should point to \"marko-lasso\" because \"ui-components-playground\" does not contain lasso\n- [docs] Add articles section to docs.\n\n### 4.4.2\n\n- Build fixes related to compiler\n\n### 4.4.0\n\n- Improve no-update-if condition check\n- Compatibility improvements for Try Online\n- Code size reduction\n- Introduced src/ and dist/ folders for optimized production builds\n- Fixes #695 - Default to ignoring unrecognized tags for XML files.\n\n## 4.3.x\n\n### 4.3.1\n\n- Add basic test for ensuring that res.marko returns a promise.\n- enable res.marko can catch a error safe\n\n### 4.3.0\n\n- [compiler] Added more control over how attributes are targeted to props\n- Don't add root markers to tags that don't produce output\n- [docs] Added docs for Marko + Huncwot integration\n- [AST] Added `node.removeChildren()`\n- Extend marko globals with defaults\n\n### 4.3.0-beta.4\n\n- Fixes #673 - Circular dependency is causing problems with Webpack\n\n### 4.3.0-beta.3\n\n- Changes related to #670 - Globals must be serialized earlier to allow early mount of UI components in\n- [docs] Improved docs for SSR\n\n### 4.3.0-beta.2\n\n- Fixes for #670 - Add support for serialized globals and retain globals on re-render\n\n## 4.2.x\n\n### 4.2.8\n\n- Bug: Fixes [#661](https://github.com/marko-js/marko/issues/661) - Component initialization code may end up in the wrong place\n- Bug: Fixes [#668](https://github.com/marko-js/marko/issues/668) - Declarative event listeners are now allowed on the `<include>` tag\n\n### 4.2.7\n\n- Bug: Fixes [#650](https://github.com/marko-js/marko/issues/650) - The tag \"await\" does not support attribute \"unless\"\n- Improvements to legacy state\n\n### 4.2.6\n\n- Bug: Fixes [#654](https://github.com/marko-js/marko/issues/654) - Bug: components implementing a `key` attribute break in Marko v4\n- Improvements to legacy compatibility layer\n\n### 4.2.5\n\n- Improved support for UI components implemented using native JavaScript class in a separate file\n- Improved how legacy layout tags are handled by Marko v4\n\n### 4.2.4\n\n- Bug: Fixes [#653](https://github.com/marko-js/marko/issues/653) - Event handlers are no longer bound in edge case\n\n### 4.2.3\n\n- Bug: Fixes [#649](https://github.com/marko-js/marko/issues/649) - New line always added to `textarea` and other elements for single line/delimited HTML blocks\n\n### 4.2.2\n\n- Bug: Fixes [#648](https://github.com/marko-js/marko/issues/648) - Style attribute object and lengths not handled properly\n\n### 4.2.1\n\n- Bug: Fixed [#644](https://github.com/marko-js/marko/issues/644) - Attribute not rendered by Marko is not preserved if component first rendered on the server\n- [Performance] Escaping is not needed for the `data-marko` attribute\n\n### 4.2.0\n\n- Bug: Fixed [#629](https://github.com/marko-js/marko/issues/629) - VDOM: Rendering unescaped HTML produces non-functioning HTML input controls\n- Bug: Fixed [#634](https://github.com/marko-js/marko/issues/634) - writeInitComponentsCode is not a function\n- Enhancement: Added support to allow improved precompiling of templates\n- Enhancement: Fixed [#636](https://github.com/marko-js/marko/issues/636) - Add error when macro with duplicate name is found\n- Performance: Optimized diffing/patching to avoid indexing entire tree to find keyed elements\n- Performance: Optimized how event handlers are attached to VDOM nodes (separated from attributes)\n\n## 4.1.x\n\n### 4.1.3\n\n- Bug: Fixed losing cursor position in Edge (see [morphdom PR #100](https://github.com/patrick-steele-idem/morphdom/pull/100) by [@zastavnitskiy](https://github.com/zastavnitskiy))\n- Bug: Ignore `xmlns` attributes when virtualizing real DOM nodes (needed when inserting an HTML string when rendering to a VDOM)\n\n### 4.1.2\n\n- Bug: Fixed [#623](https://github.com/marko-js/marko/issues/623) - Uncaught TypeError: `toEl.$__hasAttribute` is not a function\n- Bug: Fixed [#619](https://github.com/marko-js/marko/issues/619) - Deprecated `constructor()` for UI component classes\n\n### 4.1.1\n\n- Added `\"use strict\";` to restore Node.js compatibility for Node.js v4 and v5\n\n### 4.1.0\n\n- Bug: Fixes [#611](https://github.com/marko-js/marko/issues/611) - Component IDs are not being assigned correctly when intermediate non-component is rendered\n- Performance: SVG namespaced elements are now resolved determined at compile-time\n- Performance: Merged in `morphdom` and optimized for Marko\n- Performance: Optimized diffing/patching of elements with only simple attributes in the following set: `class`, `id` and `style`\n\n## 4.0.x\n\n### 4.0.1\n\n- Bug: Fixes [#612](https://github.com/marko-js/marko/issues/612) - Compile error when class method has empty `return`\n- Bug: Fixes [#604](https://github.com/marko-js/marko/issues/604) - `no-update` attributes error when first rendered on the server\n- Bug: Fixes [#608](https://github.com/marko-js/marko/issues/608) - Component losing `renderBody` input on a particular redraw\n- Enhancement: Fixes [#606](https://github.com/marko-js/marko/issues/606) - named single-file component doesn't work\n\n### 4.0.0\n\n- Marko v4! [Release Announcement](https://medium.com/@mlrawlings/marko-4-0-is-here-837884c5f60d)\n\n# 3.x\n\n## 3.13.x\n\n### 3.13.2\n\n- Fixed [#478](TagLookup fails when merging taglibs) - TagLookup fails when merging taglibs\n\n### 3.13.1\n\n- Fixes [#465](https://github.com/marko-js/marko/issues/465)\n\n### 3.13.0\n\n## 3.12.x\n\n### 3.12.0\n\n- Added warnings for using render methods when you want string output ([Pull Request #450](https://github.com/marko-js/marko/pull/450) by [@mlrawlings](https://github.com/mlrawlings))\n\n## 3.11.x\n\n### 3.11.8\n\n- Fixes [#382](https://github.com/marko-js/marko/issues/382) - Local variable for tag should have prefix or suffix to avoid conflict\n\n### 3.11.7\n\n- Fixes [#381](https://github.com/marko-js/marko/issues/381) - `$global` broken when using `template.stream()`\n\n### 3.11.6\n\n- Internal change: `AsyncWriter` → `AsyncStream`\n\n### 3.11.5\n\n- (no changes)\n\n### 3.11.4\n\n- Update to `async-writer@2`\n\n### 3.11.3\n\n- Silently ignore errors when parsing tag definition code inlined in JavaScript\n\n### 3.11.2\n\n- Fixed [#318](https://github.com/marko-js/marko/issues/318) - Use compiler options passed to require hook to configure marko globally\n\n```javascript\nrequire(\"marko/node-require\").install({\n  compilerOptions: {\n    writeToDisk: false,\n  },\n});\n```\n\n### 3.11.1\n\n- Fixed [#370](https://github.com/marko-js/marko/issues/370) - HTML characters in loop separator string should not be escaped\n\n### 3.11.0\n\n- Introduced the `<include-html(path)>` tag for including static HTML:\n\n```xml\n<include-html('./foo.html')>\n```\n\n## 3.10.x\n\n### 3.10.1\n\n- Fixed [#44](https://github.com/marko-js/marko/issues/44) - Webpack compatibility fixes. Also see [marko-loader](https://github.com/marko-js/marko-loader) (A marko loader for webpack)\n\n### 3.10.0\n\n- Fixed [#357](https://github.com/marko-js/marko/issues/357) - Deprecate `empty`/`notEmpty` in Marko v3\n\n## 3.9.x\n\n### 3.9.4\n\n- Fixed [#355](https://github.com/marko-js/marko/issues/355) - `status-var`/`separator` options not handled when looping over properties\n- Fixed [#354](https://github.com/marko-js/marko/issues/354) - regular expressions used in attribute values are not being handled correctly\n- Fixed [#353](https://github.com/marko-js/marko/issues/353) - `body-only-if` attribute does not work with custom tags (only HTML tags)\n\n### 3.9.3\n\n- Upgraded to `raptor-util@^2`\n\n### 3.9.2\n\n- Fixed [#327](https://github.com/marko-js/marko/issues/327) - alt attribute with empty string should be allowed ([Pull Request #350](https://github.com/marko-js/marko/pull/350) by [@mlrawlings](https://github.com/mlrawlings))\n\n### 3.9.1\n\n- Fixed [#348](https://github.com/marko-js/marko/issues/348) - exclude all `*.orig` and other files from published npm package\n\n### 3.9.0\n\n- Fixed [#231](https://github.com/marko-js/marko/issues/231) - Allow <assign count++>\n- Fixed [#345](https://github.com/marko-js/marko/issues/345) - Whitespace preservation now applies to all deeply nested text nodes\n- Fixed [#344](https://github.com/marko-js/marko/issues/344) - Introduced [defineRenderer](./docs/javascript-api.md#requiremarkodefinerenderer) for Marko\n- Docs: Added docs for excluding directories from taglib discovery ([@mlrawlings](https://github.com/mlrawlings))\n- Docs: Added docs for component autodiscovery ([@mlrawlings](https://github.com/mlrawlings))\n- Docs: Added docs for passing a data object to a custom tag\n\n## 3.8.x\n\n### 3.8.1\n\n- Fixed [#342](https://github.com/marko-js/marko/issues/342) - `await:finish` event not emitted for async fragments with client reorder and that complete synchronously\n\n### 3.8.0\n\n- Fixed [#329](https://github.com/marko-js/marko/issues/329) - Add autodiscover of components/ directory ([Pull Request #338](https://github.com/marko-js/marko/pull/338) by [@mlrawlings](https://github.com/mlrawlings))\n\n## 3.7.x\n\n### 3.7.4\n\n- Fixed [#339](https://github.com/marko-js/marko/issues/339) - Tag transformers are not being applied to tags with a dynamic tag name (fixes [#146](https://github.com/marko-js/marko-components/issues/146) for Marko Components)\n\n### 3.7.3\n\n- Fixed [#332](https://github.com/marko-js/marko/issues/332) and [#333](https://github.com/marko-js/marko/issues/333) - Correct values for `literalUndefined` and `literalFalse` in the Builder API [@bkuri](https://github.com/bkuri)\n- Fixed [#336](https://github.com/marko-js/marko/issues/336) - Upgraded to latest version of `minimatch`\n\n### 3.7.2\n\n- Fixed [#328](https://github.com/marko-js/marko/issues/328) - Improve error reporting when taglib/tag definition fails to load\n- Additional change to disable escaping for dynamic `Text` nodes added to body of `<script>` tag to fix [issue #326](https://github.com/marko-js/marko/issues/326)\n\n### 3.7.1\n\n- Improved escaping within the `<script>` tag to fix [issue #322](https://github.com/marko-js/marko/issues/322). Special HTML characters will no longer be escaped within the context of the `<script>` tag since browsers do not decode HTML entities within the `<script>` tag. Instead, only the ending `</script>` tag sequence is escaped using JavaScript string escaping sequences.\n\n### 3.7.0\n\n- Made change to make configuration a true singleton shared across all instances of `marko` loaded at runtime ([commit](https://github.com/marko-js/marko/commit/cd797322adf80f2890015de7b8f62301c2921a0a))\n\n## 3.6.x\n\n### 3.6.2\n\n- Improved support for hot reloading by automatically disabling `assumeUpToDate` if hot reload is enabled. ([Pull Request #320](https://github.com/marko-js/marko/pull/320) by [@ianvonholt](https://github.com/ianvonholt))\n\n### 3.6.1\n\n- Fixed a bug that was causing transforms to be run on detached nodes. This was manifesting itself in the `<async-fragment>` to `<await>` transform if an `if()` attribute was present (or other core attributes that end up wrapping the tag it is defined on).\n\n### 3.6.0\n\n- Introduced a new and simpler `<await>` tag that should be used instead of the now deprecated `<async-fragment>` tag (see deprecation details below) ([Pull Request #312](https://github.com/marko-js/marko/pull/312) by [@mlrawlings](https://github.com/mlrawlings))\n\n#### Deprecations\n\n- Deprecated the `<async-fragment var=\"<var>\" data-provider=<data-provider>>` tag in favor of the `<await(<var> from <data-provider>)>` tag:\n\nOLD:\n\n```xml\n<async-fragment var=\"userInfo\" data-provider=data.userInfoPromise>\n    Hello ${userInfo.name}!\n</async-fragment>\n```\n\nNEW:\n\n```xml\n<await(userInfo from data.userInfoPromise)>\n    Hello ${userInfo.name}!\n</await>\n```\n\nThe `<await>` tag supports all of the attributes of the previous `<async-fragment>` tag except for `var` and `data-provider`:\n\n```xml\n<await(userInfo from data.userInfoPromise) name=\"userInfo\" timeout=10000 client-reorder>\n    Hello ${userInfo.name}!\n</await>\n```\n\nFinally, the nested tags for providing content for the placeholder, error and timeout messages have been renamed accordingly:\n\n```xml\n<await(userInfo from data.userInfoPromise) client-reorder>\n    <await-placeholder>\n        This is alternate content while the async fragment is loading.\n    </await-placeholder>\n    <await-timeout>\n        A timeout has occurred!\n    </await-timeout>\n    <await-error>\n        A error has occurred!\n    </await-error>\n\n    Hello ${userInfo.name}!\n</await>\n```\n\n## 3.5.x\n\n### 3.5.1\n\n- Fixes #316 - Autocomplete for tags is not updated when tag files updated despite clearing cache. This improves the [autocomplete-marko](https://github.com/marko-js/atom-autocomplete-marko) plugin for Atom.\n- Fixes #314 - Remove hyphens from include props\n- Deprecated:\n  - Properties passed in using the `<include>` tag should not be access using hyphens.\n\nFor example, given the following template:\n\n```xml\n<include(\"./include-target.marko\") first-name='Jane'/>\n```\n\nThe `first-name` data should be accessed using the `firstName` property:\n\n```javascript\nvar firstName = input.firstName;\n// NOT: var firstName = input['first-name'];\n```\n\n### 3.5.0\n\n- Added functionality to exclude specific directory or package from taglib finder ([Pull Request #309](https://github.com/marko-js/marko/pull/309) by [@oxala](https://github.com/oxala))\n\n## 3.4.x\n\n### 3.4.9\n\n- Fixed [https://github.com/marko-js/marko/issues/307] - Marko concise syntax, with multiple class names ([Pull Request #308](https://github.com/marko-js/marko/pull/308) by [@mlrawlings](https://github.com/mlrawlings))\n\n### 3.4.8\n\n- Added support for an \"enum\" attribute value\n\n### 3.4.7\n\n- Async fragment improvements ([Pull Request #305](https://github.com/marko-js/marko/pull/305) by [@mlrawlings](https://github.com/mlrawlings))\n  - Adds additional event info (finished/timedout) to the data emitted from <async-fragment> tags.\n  - Ensures that renderBody() is not called again if the fragment has already finished (timed out).\n  - Fixes `npm run test-async`\n  - Removes a redundant `async-fragment` timeout related test\n\n### 3.4.6\n\n- Updated autocomplete information\n\n### 3.4.5\n\n- Fixes #304 - async-fragment-tag-transformer.js being loaded by PhantomJS\n- Updated taglibs with additional information to support tooling\n- Added [Michael Rawlings](https://github.com/mlrawlings) as a maintainer\n\n### 3.4.4\n\n- Fixes #303 - `addStaticVar` is not generating unique variable names correctly\n\n### 3.4.3\n\n- Improved validation for macros ([@mlrawlings](https://github.com/mlrawlings), [PR #300](https://github.com/marko-js/marko/pull/300))\n- Added code coverage reporting ([@mlrawlings](https://github.com/mlrawlings), [PR #301](https://github.com/marko-js/marko/pull/301))\n\n### 3.4.2\n\n- Improved error reporting in cases when code generation fails ([@mlrawlings](https://github.com/mlrawlings))\n\n### 3.4.1\n\n- Additional tweaks for #298 - Always emit correct events for async fragments\n\n### 3.4.0\n\n- Fixes #298 - Always emit correct events for async fragments\n- Updated docs\n\n## 3.3.x\n\n### 3.3.0\n\n- Include async fragment name in the `asyncFragmentFinish` events ([@kprakasam](https://github.com/kprakasam))\n\n## 3.2.x\n\n### 3.2.0\n\n- Fixes #286 - Add res.marko(templateData) for use with Express ([@mlrawlings](https://github.com/mlrawlings))\n\n## 3.1.x\n\n### 3.1.9\n\n- Fixes #288 - Provide API for discovering custom tags and attributes for autocomplete/tooling purposes\n- Documentation improvements\n\n### 3.1.8\n\n- Fixes #280 - Switch from jsonminify to strip-json-comments\n- Updated docs for Koa and Hapi\n- Additional tests for Node.js v6\n\n### 3.1.7\n\n- Fixes #274 - marko-compiler-options tag is not properly ended when using raw parsing (for prettyprint)\n\n### 3.1.6\n\n- Fixes #268 - this.write is not a function for empty ArrayExpression\n\n### 3.1.5\n\n- Fixes #262 - node-require module removes `.marko` extension from filenames in compiled code\n\n### 3.1.4\n\n- Fixes #267 - Shorthand CSS class name cannot be combined with object/array class names\n\n### 3.1.3\n\n- Fixed #266 - Hot reloading fails if original template is deleted\n\n### 3.1.2\n\n- Fixed error reporting when using `compiler.parseRaw()`\n- Added test for #262\n\n### 3.1.1\n\n- Improved whitespace removal for text nodes directly below the root\n\n### 3.1.0\n\n- Fixes #254 - Allow preserve whitespace to be enabled at the global level\n\n## 3.0.x\n\n### 3.0.7\n\n- Fixes #240 - Always trim start and end of template (even if preserveWhitespace is true)\n- Fixes #260 - Circular custom tags causes infinite recursion when writeToDisk is set to false\n- Minor internal cleanup\n\n### 3.0.6\n\n- Don't wrap exception in `parseJavaScript` if error object was not created by Esprima\n\n### 3.0.5\n\n- Fixes #257 - Placeholders don't render for out-of-order async fragments\n\n### 3.0.4\n\n- Fixes #256 - Convert attributes to title case if no attributes are declared for a custom tag\n- Use `<noscript>` for out-of-order async fragment placeholders\n\n### 3.0.3\n\n- Make renderSync behave if no context was supplied ([PR #250](https://github.com/marko-js/marko/pull/250) by [@jsumners](https://github.com/jsumners))\n\n### 3.0.2\n\n- Store `tagDef` with `HtmlElement` node (needed for pretty printing)\n\n### 3.0.1\n\n- Docs: Fixed minor issues in docs\n- Reintroduced support for the `MARKO_CLEAN` environment variable: `MARK_CLEAN=true node server.js`\n\n### 3.0.0\n\n- See: [What's New in Marko v3](http://markojs.com/docs/marko/what-is-new-marko-v3/)\n\n# 2.x\n\n## 2.8.x\n\n### 2.8.4\n\n- Fixes circular dependency issue between runtime/index.js and hot-reload/index.js\n\n### 2.8.3\n\n- Fixes circular dependency issue between runtime/index.js and hot-reload/index.js\n\n### 2.8.2\n\n- Fixes #203 - Incorrect behavior when attrs is used on a standard HTML tag with a tag def\n\n### 2.8.1\n\n- Fixes #202 - Pass along options to compiler when loading a template\n\n### 2.8.0\n\n- Added support for automatically discovering taglibs from installed packages that are scoped. ([PR #183](https://github.com/marko-js/marko/pull/183) by [@tropperstyle](https://github.com/tropperstyle))\n\n### 2.8.3\n\n- Fixes circular dependency issue between `hot-reload/index.js` and `runtime/index.js`\n\n## 2.7.x\n\n### 2.7.31\n\n- Fixes #167 - Nested tags only work one level deep\n\n### 2.7.30\n\n- docs: don't exclude docs in .npmignore\n\n### 2.7.29\n\n- Fixes #161 - Nested tags with no body content are not handled correctly\n\n### 2.7.28\n\n- Fixes #140 - Also de-dupe cached taglibs in finder\n\n### 2.7.27\n\n- Make loading template from String template source easier:\n\n```javascript\nvar template = marko.load(templatePath, \"Hello $!{data.name}!\");\n```\n\n_NOTE: Loading directly from source only works on the server_\n\nSee [Pull Request #153](https://github.com/marko-js/marko/pull/153)\n\n### 2.7.26\n\n- Use shorter relative paths in error messages\n\n### 2.7.25\n\n- Fixes #150 - Provide option to prevent writing compiled templates to disk. Example usage:\n\n```javascript\nrequire(\"marko/compiler\").defaultOptions.writeToDisk = false;\n```\n\nNOTE: If you disable writing compiled templates to disk then it will be a little harder to debug errors in templates on the server since the stack trace will refer to a file that has not been written to disk.\n\nFor a more complete list of compiler options please see: http://markojs.com/docs/marko/javascript-api/#defaultoptions\n\n### 2.7.24\n\n- Fixes #140 - De-dupe taglibs by module name\n- Documentation: Miscellaneous changes\n\n### 2.7.23\n\n- Fixed a typo for `rendererFunc` `in helpers.js` (commit: 0205a47f04911f34ca4d458970d710f81a143987)\n\n### 2.7.22\n\n- New language feature: [`unless` support added](http://markojs.com/docs/marko/language-guide/#unlesselse-ifelse)\n\n### 2.7.21\n\n- Automatically enable hot-reload and browser-refresh if launched using [browser-refresh](https://github.com/patrick-steele-idem/browser-refresh)\n\n### 2.7.20\n\n- Documentation: Miscellaneous changes\n\n### 2.7.19\n\n- Fixes #137 - adds support for dynamic HTML tag names\n\n### 2.7.18\n\n- Improvement: Better resolving of tag renderer\n- Compiler: Fix to make compiler work in the browser\n\n### 2.7.17\n\n- Fixes #135 Allow \"attrs\" attribute on custom tags\n\n### 2.7.16\n\n- Improved handling of imports\n- Better handling of loading taglibs with circular dependencies\n\n### 2.7.15\n\n- Handle circular taglib imports\n\n### 2.7.14\n\n- Fixes #131 - Recursively handle taglib imports\n\n### 2.7.13\n\n- Added a `.npmignore` file\n- Fixed licensing header in source\n- Documentation: improved docs for input.renderBody()\n- Documentation: Miscellaneous changes\n\n### 2.7.12\n\n- Fixes #122 Don't allow invalid attributes when using shorthand\n- Fixes #122 Typo in hasAttributes\n- Fixes #127 - Make sure all possible input files are accounted for when checking if a compiled template is up-to-date\n- Use `browser.json` files instead of `optimizer.json` files\n- Documentation: Improved docs for async taglib\n- Documentation: Added empty() and notEmpty() helpers to the readme\n- Added Martin Aberer as a maintainer\n- Documentation: Miscellaneous changes\n\n### 2.7.11\n\n- New logo!\n\n### 2.7.10\n\n- Fixes #118 Better error when parsing JSON file for tag\n- Testing: More test cases related to empty attributes\n- Documentation: Clarification for the Node.js require extension\n- Documentation: doc reference for `getLength()` of loop `status-var`\n- Documentation: Added reference to [sublime-marko](https://github.com/merwan7/sublime-marko) under the tools section.\n\n### 2.7.9\n\n- Fixes #109 - Allow `compiler.createNode('div')`\n- Fixes #108 - Improve how the `MARKO_CLEAN` env variable is handled\n\n### 2.7.8\n\n- Minor documentation changes\n\n### 2.7.7\n\n- Allow `.html` extension for layouts (Fix for https://github.com/raptorjs/marko-layout/issues/2)\n\n### 2.7.6\n\n- Make require('marko/node-require').install() a noop in the browser\n\n### 2.7.5\n\n- Improvement: Allow `template-data` to be combined with other attributes on the `<include>` tag\n- Documentation: Fixes #98 - docs for `<include template-data=\"...\">`\n\n### 2.7.4\n\n- Fixes #96 - Allow relative, dynamic include paths\n\n### 2.7.3\n\n- Internal change: Additional test cases added for using promises with async fragments\n\n### 2.7.2\n\n- Fixes #73 - Prevent same taglib from being loaded multiple times\n\n### 2.7.1\n\n- Fixes #88 - Assign global data to the correct out\n\n### 2.7.0\n\n- Fixes [#27](https://github.com/raptorjs/marko/issues/27) - IE conditional comments (e.g., `<!--[if lt IE 9]><div><![endif]-->`) are automatically preserved. Previously, all HTML comments were stripped out when loading a template. For example:\n- Added support for `<compiler-options comments=\"preserve\"/>` to enable comments to preserved in a template. For example:\n\n```xml\n<compiler-options comments=\"preserve\"/>\nHello\n<!--This comment should be preserved-->\nWorld\n```\n\nOutput:\n\n```xml\nHello\n<!--This comment should be preserved-->\nWorld\n```\n\n## 2.6.x\n\n### 2.6.0\n\n- Performance improvements\n  - `'use strict';`\n  - Optimized render code paths\n- Code cleanup\n- Compatibility fixes for Node.js 0.12\n  - Bad: `fs.readFile(path, 'utf8')`\n  - Good: `fs.readFile(path, {encoding: 'utf8'})`\n\n## 2.5.x\n\n### 2.5.0\n\n- Fixes #78 - Custom Node.js require extension for Marko template files. Example usage:\n\n```javascript\n// Install the Node.js require extension in your application's main script (server-side only)\nrequire(\"marko/node-require\").install();\n\n// Now you can require `*.marko` files just like any other JavaScript module\nvar template = require(\"./hello.marko\");\nvar html = template.renderSync({ name: \"Frank\" });\n```\n\n- Compiled templates now export a loaded Template instance. In the previous version of marko, compiled templates exported a function that could be used to create a loaded Template instance.\n\n## 2.4.x\n\n### 2.4.3\n\n- Fixes edge case: More precise regular expression for decoding HTML entities\n\n### 2.4.2\n\n- Internal: Fixes #75 Always assign the tag property to custom tag nodes\n\n### 2.4.1\n\n- Improvement to allow taglibs to be imported from other taglibs ([commit](https://github.com/raptorjs/marko/commit/73e9a3420a1bac3e2c201d4dcadf21c0701b5222))\n\n### 2.4.0\n\n- Added support for short-hand tags and attributes\n\nOld `marko-taglib.json`:\n\n```json\n{\n  \"tags\": {\n    \"my-hello\": {\n      \"renderer\": \"./hello-renderer\",\n      \"attributes\": {\n        \"name\": \"string\"\n      }\n    }\n  }\n}\n```\n\nShort-hand `marko-taglib.json`:\n\n```json\n{\n  \"<my-hello>\": {\n    \"renderer\": \"./hello-renderer\",\n    \"@name\": \"string\"\n  }\n}\n```\n\n- Fixes #61 Simplify parent/child relationships\n\nMarko now supports custom tags in the following format: `<parent_tag.nested_tag>`\n\nExample usage:\n\n```html\n<ui-tabs orientation=\"horizontal\">\n  <ui-tabs.tab title=\"Home\"> Content for Home </ui-tabs.tab>\n  <ui-tabs.tab title=\"Profile\"> Content for Profile </ui-tabs.tab>\n  <ui-tabs.tab title=\"Messages\"> Content for Messages </ui-tabs.tab>\n</ui-tabs>\n```\n\n**_ui-tabs/marko-tag.json_**\n\n```json\n{\n  \"@orientation\": \"string\",\n  \"@tabs <tab>[]\": {\n    \"@title\": \"string\"\n  }\n}\n```\n\n**_ui-tabs/renderer.js_**\n\n```javascript\nvar template = require(\"marko\").load(require.resolve(\"./template.marko\"));\n\nexports.renderer = function (input, out) {\n  var tabs = input.tabs;\n\n  // Tabs will be in the following form:\n  // [\n  //     {\n  //         title: 'Home',\n  //         renderBody: function(out) { ... }\n  //     },\n  //     {\n  //         title: 'Profile',\n  //         renderBody: function(out) { ... }\n  //     },\n  //     {\n  //         title: 'Messages',\n  //         renderBody: function(out) { ... }\n  //     }\n  // ]\n  console.log(tabs.length); // Output: 3\n\n  template.render(\n    {\n      tabs: tabs,\n    },\n    out,\n  );\n};\n```\n\n**_ui-tabs/template.marko_**\n\n```html\n<div class=\"tabs\">\n  <ul class=\"nav nav-tabs\">\n    <li class=\"tab\" for=\"tab in data.tabs\">\n      <a href=\"#${tab.title}\"> ${tab.title} </a>\n    </li>\n  </ul>\n  <div class=\"tab-content\">\n    <div class=\"tab-pane\" for=\"tab in data.tabs\">\n      <invoke function=\"tab.renderBody(out)\" />\n    </div>\n  </div>\n</div>\n```\n\n## 2.3.x\n\n### 2.3.2\n\nFixes #66 - Allow circular dependencies when loading templates\n\n### 2.3.1\n\n- Testing framework changes\n- Fixes #65 - Generated variable name is an empty string in some cases\n\n### 2.3.0\n\n- Fixes #53 Merge c-input with attr props\n\n## 2.2.x\n\n### 2.2.2\n\nFixes #60 Don't replace special operators for body functions\n\n### 2.2.1\n\n- Fixes #58 Added support for MARKO_CLEAN env variable (force recompile of all loaded templates). Example usage:\n\n```bash\nMARKO_CLEAN=true node run.js\n```\n\n- Code formatting: add spaces in var code\n\n### 2.2.0\n\n- Fixes #51 Allow body content to be mapped to a String input property\n- Fixes #52 Remove JavaScript comments from JSON taglib files before parsing\n\n## 2.1.x\n\n### 2.1.6\n\n- Fixes #50 Initialize the loader after the runtime is fully initialized\n\n### 2.1.5\n\n- Fixes #50 Ensure that all instances of marko have hot-reload and browser-refresh enabled\n\n### 2.1.4\n\n- Allowing complex var names (i.e. LHS) for the `<assign>` tag.\n\n### 2.1.3\n\n- Minor change: Slight improvement to code to resolve tag handler\n\n### 2.1.2\n\n- Minor change: Improve how renderer is resolved\n\n### 2.1.1\n\n- Fixes #48 name in marko-tag.json should override default name given during discovery\n\n### 2.1.0\n\n- Fixes #47 - Added support for \"taglib-imports\"\n\n## 2.0.x\n\n### 2.0.12\n\n- Fixes #31 - Add support for providing prefix when scanning for tags\n- Allow \"code\" to be a function that lazily evaluates to a code string during code generation\n\n### 2.0.11\n\n- Added method for custom node compilers to get access to the `escapeXml` function at runtime\n\n### 2.0.10\n\n- Fixes #39 - Added missing return when using hot-reload\n\n### 2.0.9\n\n- Fixed bad publish\n\n### 2.0.8\n\n- Better merging of tags when loading and merging taglibs\n\n### 2.0.7\n\n- Changes to avoid problems associated with the same taglib being found multiple times in the search path\n\n### 2.0.6\n\n- `renderBody` function is only added if tag has children\n\n### 2.0.5\n\n- Fixed #36 - Don't use `invokeBody()` in the cache taglib\n\n### 2.0.4\n\n- :exclamation: Fixed #36 - Deprecated - When using `<include>` with body content, nested body content is now passed in as `String` property named `body`. Old behavior: nested content would be passed in as a `Function` property named `invokeBody` that would return the `String` value of the nested content. `invokeBody()` has been deprecated.\n\n### 2.0.3\n\n- Fixed #36 - Don't use `invokeBody()` in test code and the HTML comments tag\n\n### 2.0.2\n\n- :exclamation: Fixed #36 - Deprecated `input.invokeBody()` in favor of `input.renderBody(out)`\n- Fixed #37 - Duplicate input property for custom tag renderers\n\n### 2.0.1\n\n- Fixed #35 - Added support for `<compiler-options>`. Example:\n\n```html\n<compiler-options whitespace=\"preserve\" /> A B C\n```\n\n### 2.0.0\n\n- Dynamic attributes for scanned tags without a tag will have dashes removed by default.\n  - :exclamation: When using `tags-dir` to discover tags that do not have a `marko-tag.json`, the previous behavior was to allow all attributes and to use the actual attribute name as the input property name. For example, when using `<hello first-name=\"John\">`, first name would need to be read in as `input['first-name']`. This was changed such that the first name property should now be read in as `input.firstName` (dashes removed and converted to camel case)\n- Changes to allow UI component to be put into a single JS file:\n  - Updated taglib directory scanner to use `index.js` if found. New search order:\n    1.  `renderer.js` (use `renderer.js` if it exists)\n    2.  `index.js` (use `index.js` if it exists and assume it exports a `renderer` or `render` property)\n    3.  `template.marko` (use the template as the renderer if no `renderer.js` or `index.js`)\n  - :exclamation: Changes to the taglib directory scanner could break existing code. Specifically, if a UI component directory had an `index.js` file and a `template.marko` file then in in `marko@<2` the `template.marko` file would have been selected as the renderer. In `marko@2.x`, the `index.js` will be selected as the tag renderer.\n- :exclamation: Removed support for mapping a tag renderer to a module with a `process` method\n- Removed sub-module `marko/renderer` that exports [raptor-renderer](https://github.com/raptorjs/raptor-renderer)\n\n# 1.x\n\n## 1.6.x\n\n### 1.6.1\n\n- Added back code to allow the new marko runtime to load templates compiled by an earlier compiler that used `module.exports`\n\n### 1.6.0\n\n- Fixed #32. Switched from `module.exports = function create(__helpers) { ... }` to `exports.create = function(__helpers) { ... }` to avoid circular dependency problems\n\n## 1.5.x\n\n### 1.5.8\n\n- Added support for adding \"static\" code to the top of a compiled template (helpful for initializing variables or running code once).\n\n### 1.5.7\n\n- Added sub-module `marko/renderer` that exports [raptor-renderer](https://github.com/raptorjs/raptor-renderer)\n\n### 1.5.6\n\n- Changes to avoid unoptimized code in V8\n\n### 1.5.5\n\n- Handle case where template was loaded before hot-reload was enabled\n\n## 1.5.4\n\n- Added support for `$global` in `renderSync`\n"
  },
  {
    "path": "packages/runtime-class/README.md",
    "content": "<div align=\"center\">\n\n# [<img alt=\"Marko\" src=\"https://raw.githubusercontent.com/marko-js/branding/master/marko-logo-medium-cropped.png\" width=\"250\">](https://markojs.com/)\n\n**A declarative, HTML-based language that makes building web apps fun 🔥**\n\n[![NPM](https://img.shields.io/npm/v/marko.svg)](https://www.npmjs.com/package/marko)\n[![Discord Chat](https://img.shields.io/badge/discord-chat-7188da.svg)](https://discord.gg/RFGxYGs)\n[![Continuous Integration status](https://github.com/marko-js/marko/actions/workflows/ci.yml/badge.svg)](https://github.com/marko-js/marko/actions/workflows/ci.yml)\n[![Code coverage %](https://codecov.io/gh/marko-js/marko/branch/master/graph/badge.svg)](https://codecov.io/gh/marko-js/marko)\n[![# of monthly downloads](https://img.shields.io/npm/dm/marko.svg)](https://npm-stat.com/charts.html?package=marko)\n[![OpenSSF Best Practices](https://bestpractices.coreinfrastructure.org/projects/7029/badge)](https://bestpractices.coreinfrastructure.org/projects/7029)\n\n[Docs](https://markojs.com/docs/getting-started/) ∙ [Try Online](https://markojs.com/try-online/) ∙ [Contribute](#contributors) ∙ [Get Support](#community--support)\n\n</div>\n\n## Intro\n\nMarko is HTML _reimagined_ as a language for building dynamic and reactive user interfaces. Almost any valid HTML is valid Marko, and Marko extends HTML for building modern applications more declaratively. Among these extensions are [conditionals and lists](https://markojs.com/docs/conditionals-and-lists/), [state](https://markojs.com/docs/state/), and [components](https://markojs.com/docs/class-components/).\n\nMarko supports both single-file components and components across separate files.\n\n### Single-file component\n\nThe following renders a button and a counter of how many times the button has been pressed:\n\n**click-count.marko**\n\n```marko\nclass {\n  onCreate() {\n    this.state = { count: 0 };\n  }\n  increment() {\n    this.state.count++;\n  }\n}\n\nstyle {\n  .count {\n    color: #09c;\n    font-size: 3em;\n  }\n  .press-me {\n    padding: 0.5em;\n  }\n}\n\n<output.count>\n  ${state.count}\n</output>\n<button.press-me on-click('increment')>\n  Press me!\n</button>\n```\n\n### Multi-file component\n\nThe same component as above, but split into:\n\n- `index.marko` template file\n- `component.js` component JS logic file\n- `style.css` component styles file\n\n**index.marko**\n\n```marko\n<output.count>\n  ${state.count}\n</output>\n<button.press-me on-click('increment')>\n  Press me!\n</button>\n```\n\n**component.js**\n\n```js\nexport default {\n  onCreate() {\n    this.state = { count: 0 };\n  },\n  increment() {\n    this.state.count++;\n  },\n};\n```\n\n**style.css**\n\n```css\n.count {\n  color: #09c;\n  font-size: 3em;\n}\n.press-me {\n  padding: 0.5em;\n}\n```\n\n## Concise Syntax\n\nMarko also supports [a beautifully concise syntax as an alternative](https://markojs.com/docs/concise/) to its HTML syntax:\n\n<table><thead><tr><th>Concise syntax<th>HTML syntax\n<tbody><tr>\n<td>\n\n```marko\nul.example-list\n  for|color| of=[a, b, c]\n    li -- ${color}\n```\n\n<td>\n\n```marko\n<ul class=\"example-list\">\n  <for|color| of=[a, b, c]>\n    <li>${color}</li>\n  </for>\n</ul>\n```\n\n</table>\n\n## Getting Started\n\n1. `npm install marko`\n2. Read the [docs](https://markojs.com/docs/getting-started/)\n\n## Community & Support\n\n<table>\n<thead><tr>\n  <th><img alt=\"Stack Overflow\" src=\"https://user-images.githubusercontent.com/1958812/56055468-619b3e00-5d0e-11e9-92ae-200c212cafb8.png\" width=\"205\"> \n  <th><img alt=\"Discord\" src=\"https://user-images.githubusercontent.com/4985201/89313514-6edbea80-d62d-11ea-8447-ca2fd8983661.png\" width=\"162\">\n  <th><img alt=\"Twitter\" src=\"https://user-images.githubusercontent.com/1958812/56055707-07e74380-5d0f-11e9-8a59-d529fbb5a81e.png\" width=\"53\">\n<tbody><tr><td>\n  \n  Ask and answer [StackOverflow questions with the `#marko` tag](https://stackoverflow.com/questions/tagged/marko)<td>\n\nCome [hang out in our Discord chat](https://discord.gg/RFGxYGs), ask questions, and discuss project direction<td>\n\n[Tweet to `@MarkoDevTeam`](https://twitter.com/MarkoDevTeam), or with the [`#markojs` hashtag](https://twitter.com/search?q=%23markojs&f=live)\n\n</table>\n\n### Contributors\n\nMarko would not be what it is without all those who have contributed ✨\n\n[![All marko-js/marko GitHub contributors](https://opencollective.com/marko-js/contributors.svg?width=890&button=false)](https://github.com/marko-js/marko/graphs/contributors)\n\n### Get Involved!\n\n- Pull requests are welcome!\n- Submit [GitHub issues](https://github.com/marko-js/marko/issues) for any feature enhancements, bugs, or documentation problems\n- [Read the Contribution Tips and Guidelines](.github/CONTRIBUTING.md)\n- Participants in this project agree to abide by [its Code of Conduct](https://github.com/eBay/.github/blob/main/CODE_OF_CONDUCT.md)\n"
  },
  {
    "path": "packages/runtime-class/bin/markoc",
    "content": "#!/usr/bin/env node\nrequire(\"./markoc.js\");\n"
  },
  {
    "path": "packages/runtime-class/bin/markoc.js",
    "content": "// TODO: Should deprecate and move into marko/cli\n\nvar fs = require(\"fs\");\nvar nodePath = require(\"path\");\nvar cwd = process.cwd();\nvar appModulePath = require(\"app-module-path\");\nvar args = require(\"argly\")\n  .createParser({\n    \"--help\": {\n      type: \"boolean\",\n      description: \"Show this help message\",\n    },\n    \"--files --file -f *\": {\n      type: \"string[]\",\n      description: \"A set of directories or files to compile\",\n    },\n    \"--ignore -i\": {\n      type: \"string[]\",\n      description: 'An ignore rule (default: --ignore \"/node_modules\" \".*\")',\n    },\n    \"--clean -c\": {\n      type: \"boolean\",\n      description: \"Clean all of the *.marko.js files\",\n    },\n    \"--force\": {\n      type: \"boolean\",\n      description: \"Force template recompilation even if unchanged\",\n    },\n    \"--paths -p\": {\n      type: \"string[]\",\n      description:\n        \"Additional directories to add to the Node.js module search path\",\n    },\n    \"--quiet -q\": {\n      type: \"boolean\",\n      description: \"Only print warnings and errors\",\n    },\n    \"--migrate -m\": {\n      type: \"boolean\",\n      description:\n        \"Run any migrations that exist for the provided template and write changes to disk\",\n    },\n    \"--strip-types -t\": {\n      type: \"boolean\",\n      description: \"Strip all type information from the compiled template\",\n    },\n    \"--browser -b\": {\n      type: \"boolean\",\n      description: \"Browser output\",\n    },\n    \"--source-maps -s\": {\n      type: \"string\",\n      description:\n        \"Output a sourcemap beside the compiled file. (use --source-maps inline for an inline source map)\",\n    },\n    \"--version -v\": {\n      type: \"boolean\",\n      description: \"Print markoc and marko compiler versions to the console\",\n    },\n  })\n  .usage(\"Usage: $0 <pattern> [options]\")\n  .example(\"Compile a single template\", \"$0 template.marko\")\n  .example(\"Compile all templates in the current directory\", \"$0 .\")\n  .example(\"Compile multiple templates\", \"$0 template.marko src/ foo/\")\n  .example(\n    \"Delete all *.marko.js files in the current directory\",\n    \"$0 . --clean\",\n  )\n  .validate(function (result) {\n    if (result.help) {\n      this.printUsage();\n      process.exit(0);\n    } else if (result.version) {\n      console.log(\"markoc@\" + markocPkgVersion);\n\n      if (markoPkgVersion) {\n        console.log(\"marko@\" + markoPkgVersion);\n      }\n\n      process.exit(0);\n    } else if (!result.files || result.files.length === 0) {\n      this.printUsage();\n      process.exit(1);\n    }\n  })\n  .onError(function (err) {\n    this.printUsage();\n\n    if (err) {\n      console.log();\n      console.log(err);\n    }\n\n    process.exit(1);\n  })\n  .parse();\nvar Minimatch = require(\"minimatch\").Minimatch;\nvar resolveFrom = require(\"resolve-from\").silent;\n\n// Try to use the Marko compiler installed with the project\nvar markoCompilerPath = resolveFrom(process.cwd(), \"marko/compiler\");\nconst markocPkgVersion = require(\"../package.json\").version;\n\nvar markoPkgPath = resolveFrom(process.cwd(), \"marko/package.json\");\nvar markoPkgVersion = markoPkgPath && require(markoPkgPath).version;\n\nvar markoCompiler = markoCompilerPath\n  ? require(markoCompilerPath)\n  : require(\"../compiler\");\n\nvar mmOptions = {\n  matchBase: true,\n  dot: true,\n  flipNegate: true,\n};\n\nfunction relPath(path) {\n  if (path.startsWith(cwd)) {\n    return path.substring(cwd.length + 1);\n  }\n}\n\nvar output = \"html\";\n\nvar isForBrowser = false;\n\nif (args.browser) {\n  output = \"dom\";\n  isForBrowser = true;\n} else if (args.migrate) {\n  output = \"migrate\";\n}\n\nvar compileOptions = {\n  output: output,\n  browser: isForBrowser,\n  sourceOnly: false,\n  stripTypes: args.stripTypes,\n  sourceMaps: args.sourceMaps || false,\n  compilerType: \"markoc\",\n  compilerVersion: markoPkgVersion || markocPkgVersion,\n};\n\nvar force = args.force;\nif (force) {\n  markoCompiler.defaultOptions.checkUpToDate = false;\n}\n\nvar paths = args.paths;\nif (paths && paths.length) {\n  paths.forEach(function (path) {\n    appModulePath.addPath(nodePath.resolve(cwd, path));\n  });\n}\n\nvar ignoreRules = args.ignore;\n\nif (!ignoreRules) {\n  ignoreRules = [\"/node_modules\", \".*\"];\n}\n\nignoreRules = ignoreRules.filter(function (s) {\n  s = s.trim();\n  return s && !s.match(/^#/);\n});\n\nignoreRules = ignoreRules.map(function (pattern) {\n  return new Minimatch(pattern, mmOptions);\n});\n\nfunction isIgnored(path, dir, stat) {\n  if (path.startsWith(dir)) {\n    path = path.substring(dir.length);\n  }\n\n  path = path.replace(/\\\\/g, \"/\");\n\n  var ignore = false;\n  var ignoreRulesLength = ignoreRules.length;\n  for (var i = 0; i < ignoreRulesLength; i++) {\n    var rule = ignoreRules[i];\n\n    var match = rule.match(path);\n\n    if (!match && stat && stat.isDirectory()) {\n      try {\n        stat = fs.statSync(path);\n      } catch (e) {\n        /* ignore error */\n      }\n\n      if (stat && stat.isDirectory()) {\n        match = rule.match(path + \"/\");\n      }\n    }\n\n    if (match) {\n      if (rule.negate) {\n        ignore = false;\n      } else {\n        ignore = true;\n      }\n    }\n  }\n\n  return ignore;\n}\n\nfunction walk(files, options, done) {\n  if (!files || files.length === 0) {\n    done(\"No files provided\");\n  }\n\n  var pending = 0;\n\n  if (!Array.isArray(files)) {\n    files = [files];\n  }\n\n  var fileCallback = options.file;\n  var context = {\n    errors: [],\n    beginAsync: function () {\n      pending++;\n    },\n    endAsync: function (err) {\n      if (err) {\n        this.errors.push(err);\n      }\n\n      pending--;\n\n      if (pending === 0) {\n        if (this.errors.length) {\n          done(this.errors);\n        } else {\n          done(null);\n        }\n      }\n    },\n  };\n\n  function doWalk(dir) {\n    context.beginAsync();\n    fs.readdir(dir, function (err, list) {\n      if (err) {\n        return context.endAsync(err);\n      }\n\n      if (list.length) {\n        list.forEach(function (basename) {\n          var file = nodePath.join(dir, basename);\n\n          context.beginAsync();\n          fs.stat(file, function (err, stat) {\n            if (err) {\n              return context.endAsync(err);\n            }\n\n            if (!isIgnored(file, dir, stat)) {\n              if (stat && stat.isDirectory()) {\n                doWalk(file);\n              } else {\n                fileCallback(file, context);\n              }\n            }\n\n            context.endAsync();\n          });\n        });\n      }\n\n      context.endAsync();\n    });\n  }\n\n  for (var i = 0; i < files.length; i++) {\n    var file = nodePath.resolve(cwd, files[i]);\n\n    var stat = fs.statSync(file);\n\n    if (stat.isDirectory()) {\n      doWalk(file);\n    } else {\n      fileCallback(file, context);\n    }\n  }\n}\n\nif (args.clean) {\n  var deleteCount = 0;\n\n  walk(\n    args.files,\n    {\n      file: function (file, context) {\n        var basename = nodePath.basename(file);\n\n        if (\n          basename.endsWith(\".marko.js\") ||\n          basename.endsWith(\".marko.html\") ||\n          basename.endsWith(\".marko.xml.js\")\n        ) {\n          context.beginAsync();\n          fs.unlink(file, function (err) {\n            if (err) {\n              return context.endAsync(err);\n            }\n            deleteCount++;\n            console.log(\"Deleted: \" + file);\n            context.endAsync();\n          });\n        }\n      },\n    },\n    function () {\n      if (deleteCount === 0) {\n        console.log(\"No *.marko.js files were found. Already clean.\");\n      } else {\n        console.log(\"Deleted \" + deleteCount + \" file(s)\");\n      }\n    },\n  );\n} else {\n  var found = {};\n  var compileCount = 0;\n  var failed = [];\n\n  var compile = function (path, context) {\n    if (found[path]) {\n      return;\n    }\n\n    found[path] = true;\n    var outPath = args.migrate ? path : path + \".js\";\n\n    if (!args.quiet)\n      console.log(\n        \"Compiling:\\n  Input:  \" +\n          relPath(path) +\n          \"\\n  Output: \" +\n          relPath(outPath) +\n          \"\\n\",\n      );\n\n    context.beginAsync();\n\n    markoCompiler.compileFile(path, compileOptions, function (err, result) {\n      if (err) {\n        failed.push(\n          'Failed to compile \"' +\n            relPath(path) +\n            '\". Error: ' +\n            (err.stack || err),\n        );\n        context.endAsync(err);\n        return;\n      }\n\n      var src = result.code;\n      context.beginAsync();\n      fs.writeFile(outPath, src, \"utf8\", function (err) {\n        if (err) {\n          failed.push(\n            'Failed to write \"' + path + '\". Error: ' + (err.stack || err),\n          );\n          context.endAsync(err);\n          return;\n        }\n\n        if (result.map) {\n          fs.writeFile(\n            outPath + \".map\",\n            JSON.stringify(result.map),\n            \"utf-8\",\n            function (err) {\n              if (err) {\n                failed.push(\n                  'Failed to write sourcemap\"' +\n                    path +\n                    '\". Error: ' +\n                    (err.stack || err),\n                );\n                context.endAsync(err);\n                return;\n              }\n\n              compileCount++;\n              context.endAsync();\n            },\n          );\n\n          return;\n        }\n\n        compileCount++;\n        context.endAsync();\n      });\n\n      context.endAsync();\n    });\n  };\n\n  if (args.files && args.files.length) {\n    walk(\n      args.files,\n      {\n        file: function (file, context) {\n          var basename = nodePath.basename(file);\n\n          if (\n            basename.endsWith(\".marko\") ||\n            basename.endsWith(\".marko.html\") ||\n            basename.endsWith(\".marko.xml\")\n          ) {\n            compile(file, context);\n          }\n        },\n      },\n      function (err) {\n        if (err) {\n          if (failed.length) {\n            console.error(\n              \"The following errors occurred:\\n- \" + failed.join(\"\\n- \"),\n            );\n          } else {\n            console.error(err);\n          }\n\n          return;\n        }\n\n        if (compileCount === 0) {\n          console.log(\"No templates found\");\n        } else {\n          console.log(\"Compiled \" + compileCount + \" templates(s)\");\n        }\n      },\n    );\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/browser-refresh.js",
    "content": "// This is a noop in Marko 5 and should eventually be removed.\n// In Marko 5 `browser-refresh` is automatically enabled if you use the require hook, and\n// browser refresh is running. We still expose this API to simplify the upgrade process from\n// Marko 4 to Marko 5.\nexports.enable = () => {};\n"
  },
  {
    "path": "packages/runtime-class/compiler-browser.marko",
    "content": "<module-code(function(require, opts) {\n    var file = `\"./${opts.optimize ? \"dist\" : \"src\"}/compiler\"`;\n\n    if (opts.modules === \"cjs\") {\n        return `module.exports = require(${file});\\n`;\n    } else {\n        return `export * from ${file};\\n`;\n    }\n})/>\n\n// What's going on here? We are using Marko to do JavaScript code generation\n// during the module bundling phase to conditionally export either the\n// \"src\" or the \"dist\" folder based on whether or not we are doing a\n// debug or non-debug build. We are using Marko since we know the Marko compiler\n// is enabled already (no extra babel transform required).\n"
  },
  {
    "path": "packages/runtime-class/compiler.js",
    "content": "var isDebug = require(\"./env\").isDebug;\n\nif (isDebug) {\n  module.exports = require(\"./src/compiler\");\n} else {\n  module.exports = require(\"./dist/compiler\");\n}\n"
  },
  {
    "path": "packages/runtime-class/components-browser.marko",
    "content": "<module-code(function(require, opts) {\n    var file = `\"./${opts.optimize ? \"dist\" : \"src\"}/runtime/components\"`;\n\n    if (opts.modules === \"cjs\") {\n        return `module.exports = require(${file});\\n`;\n    } else {\n        return `export { default } from ${file};\\nexport * from ${file};\\n`;\n    }\n})/>\n\n// What's going on here? We are using Marko to do JavaScript code generation\n// during the module bundling phase to conditionally export either the\n// \"src\" or the \"dist\" folder based on whether or not we are doing a\n// debug or non-debug build. We are using Marko since we know the Marko compiler\n// is enabled already (no extra babel transform required).\n"
  },
  {
    "path": "packages/runtime-class/components.js",
    "content": "var isDebug = require(\"./env\").isDebug;\n\nif (isDebug) {\n  module.exports = require(\"./src/runtime/components\");\n} else {\n  module.exports = require(\"./dist/runtime/components\");\n}\n"
  },
  {
    "path": "packages/runtime-class/docs/10-awesome-marko-features.md",
    "content": "<a href=\"#\">\n  <img src=\"https://cdn-images-1.medium.com/max/1000/1*Cmy6UutD5-ogL8dr1DySMQ.png\" alt=\"Marko logo\" width=\"100%\" />\n</a><br />\n\n> This article was published in August 2017. You can find the original [\"10 Awesome Marko Features\" article here](https://medium.com/@austinkelleher/10-awesome-marko-features-afba9d094d42)!\n\n# 10 Awesome Marko Features\n\n[Marko](https://markojs.com/) is a friendly and super fast UI library that makes\nbuilding web apps<br> fun! In celebration of rapidly approaching [5,000 stars on\nGitHub](https://github.com/marko-js/marko) (the ultimate open source vanity\nmetric), here are 10 features that will make you more productive in no\nparticular order...\n\n#### 1. Shorthand Attributes\n\nTired of constantly typing out `class` and `id` attributes? No need with Marko.\nSimply utilize the shorthand based on CSS selectors:\n\n```marko\nstyle {\n  .count {\n    color:#09c;\n  }\n}\n\n// Equivalent to <div class=\"count\"/>\n<div.count/>\n\n// Equivalent to <span id=\"my-id\"/>\n<span#my-id/>\n\n// Combined\n<button#submit.primary/>\n```\n\n#### 2. All attribute values are Just JavaScript™\n\nUnlike with HTML, you are not limited to string attribute values when using\nMarko. Attributes can have types, which makes it really easy to pass data to\ncustom tags and it works for standard HTML tags too:\n\n```marko\n<div class=input.myClassName/>\n<input type=\"checkbox\" checked=input.isChecked/>\n<awesome-component myString=\"Hello\"/>\n<awesome-component myNumber=1/>\n<awesome-component myTemplateString=`Hello ${name}`/>\n<awesome-component myBoolean=true/>\n<awesome-component myArray=[1, 2, 3]/>\n<awesome-component myObject={hello: 'world'}/>\n<awesome-component myVariable=name/>\n<awesome-component myFunctionCall=input.foo()/>\n```\n\n#### 3. Isomorphic UI components made easy\n\nTired of boilerplate code and trouble managing component input and state? Marko\nmakes it a breeze to develop self-contained and individually testable\ncomponents. Changing state is completely synchronous, so there won’t be any\nheadaches. You can also use inline styles making it very easy to develop small\ncomponents quickly.\n\n```marko\nclass {\n  onInput(input) {\n    this.state = {\n      count: input.count || 0\n    };\n  }\n  increment() {\n    this.state.count++;\n  }\n}\n\nstyle {\n  .count {\n    color:#09c;\n  }\n}\n\n<div.count>${state.count}</div>\n<button on-click('increment')>\n  Click me!\n</button>\n```\n\nDo you see references to “Marko” in the snippet above? Yeah, me neither.\n\nIs your component becoming too large? Do you prefer separating your CSS,\nJavaScript, and markup code? No problem. You can easily [rip out your code into\nmultiple files](https://markojs.com/docs/class-components/#multi-file-components):\n\n```\ncomponents/\n  click-counter/\n    component.js\n    index.marko\n    style.css\n```\n\n#### 4. Concise syntax\n\nThe DOM is just a tree structure. Indentation is a great way to describe a DOM\ntree without having to worry about matching up beginning and ending tags. Marko\nlets you choose between a concise, indentation-based syntax, and a familiar HTML\nsyntax:\n\n```marko\n<!-- Count our clicks! -->\n<div.count>\n  <p>Count: ${state.count}</p>\n</div>\n<button.example-button on-click('increment')>\n  Click me!\n</button>\n```\n\nHere’s the same thing with the concise syntax:\n\n```marko\n// Count our clicks!\ndiv.count\n  p -- Count: ${state.count}\nbutton.example-button on-click('increment') -- Click me!\n```\n\nCan’t make up your mind or just want to paste in that code snippet from\nStackOverflow? HTML syntax can be used within in the concise syntax. You’ll come\nback and make it consistent…_one day_.\n\n#### 5. Import JavaScript modules\n\nDo you have some helper JavaScript functions that you need to use in your views?\nMarko lets you import any JavaScript module into your template using the same\nsyntax as the JavaScript `import` statement without using Babel or any other\nbuild tool. No need for problematic globals (you could do that too, but please\ndon’t or your coworkers will hate you).\n\n```marko\nimport sum from './utils/sum';\n\n<div>The sum of 2 + 3 is ${sum(2, 3)}</div>\n```\n\n#### 6. No need to import custom tags (it’s a good thing, trust me)\n\nMarko uses your directory structure as a method for automatically registering\ncustom tags. This means that Marko can implicitly import tags based on where the\ntemplate is located on disk. Marko will search up the directory looking for\ncustom tags in `components/`directories similar to how Node.js discovers modules\nin `node_modules/` directories.\n\nGiven the following directory structure:\n\n```\ncomponents/\n  fancy-button/\n    index.marko\n  fancy-container/\n    index.marko\n```\n\nIf `fancy-button` is used inside of `fancy-container`, it will be implicitly<br>\nimported:\n\n```marko\n<!-- No need to use `require` or `import` because it will implicitly import custom tags -->\n<div>\n  <fancy-button color=input.buttonColor/>\n</div>\n```\n\n#### 7. Use JavaScript to set CSS classes and styles\n\nSetting CSS classes and styles is made easy using JavaScript! Marko will happily\naccept simple strings, JavaScript objects and arrays (_falsy values will be\nignored)._\n\n```marko\n$ const fontColor = input.color || 'blue';\n$ const isActive = input.active === true;\n\n<div class=['person', isActive && 'active']\n  style={color: fontColor} />\n```\n\n#### 8. Inline JavaScript Statements\n\nMarko takes HTML and makes it more like JavaScript. You can exit out of HTML\nmode to embed a JavaScript statement by starting the line with a `$`. You can\nuse this feature to embed JavaScript variables, functions, etc. where they are\nneeded (take that, “separation of concerns”).\n\n```marko\n$ const randomNumber = Math.random();\n$ const person = {\n  name: 'Frank',\n  age: 32\n};\n\n<div>Random number: ${randomNumber}</div>\n<div>${person.name} is ${person.age} years old</div>\n```\n\nIf you want to combine multiple JavaScript statements you can do that too:\n\n```marko\n$ {\n  const randomNumber = Math.random();\n  const person = {\n    name: 'Frank',\n    age: 32\n  };\n}\n\n<div>Random number: ${randomNumber}</div>\n<div>${person.name} is ${person.age} years old</div>\n```\n\n#### 9. Async rendering with the `<await>` tag\n\nNode.js is asynchronous. Browsers are asynchronous. Why should rendering be\nsynchronous? Pass your promise along to your template and Marko will\nasynchronously render parts of your view. Turns out, [this is good for\nperformance](https://tech.ebayinc.com/engineering/async-fragments-rediscovering-progressive-html-rendering-with-marko/).\n\n```marko\n$ const searchResultsPromise = searchService.performSearch(keywords);\n\n<await(searchResultsPromise)>\n  <@then|person|>\n    Hello ${person.name}!\n  </@then>\n  <@catch|err|>\n    The error was: ${err.message}.\n  </@catch>\n</await>\n```\n\n#### 10. Server side rendering is easy\n\nCan’t decide if you want to do server-side rendering or client-side rendering?\nWhy are we even talking about this in 2017? It doesn’t matter. Seriously, just\ndo both. Marko makes this a no-brainer since you can render a Marko template\ndirectly to a stream (oh, and Marko will automatically mount UI\ncomponents rendered on the server when the page loads in the browser):\n\n```js\nrequire(\"@marko/compiler/register\"); // require .marko files!\n\nconst http = require(\"http\");\nconst template = require(\"./template\");\n\nhttp\n  .createServer()\n  .on(\"request\", (req, res) => {\n    template.render(\n      {\n        name: \"Frank\",\n        count: 30,\n        colors: [\"red\", \"green\", \"blue\"],\n      },\n      res,\n    );\n  })\n  .listen(8080);\n```\n\n#### Bonus: Friendly compile-time errors\n\nWe all make mistakes _every now and then_. Typo in your custom tag? Forgot an\nending tag? No worries! Marko will give you a friendly error message and point\nyou right to the problematic code.\n\n```marko\n<!-- Ahhhh typo! This should be <fancy-button/> -->\n<fancy-buttn/>\n```\n\nYou may have missed it, but it was obvious to Marko:\n\n```\nUnrecognized tag: fancy-buttn — More details: https://github.com/marko-js/marko/wiki/Error:-Unrecognized-Tag at line 2 col 1\n```\n\nComing soon: auto correction and autonomous coding\n\n---\n\n[_Cover image from Wikipedia_](https://commons.wikimedia.org/wiki/File:Amanhecer_no_Hercules_--.jpg)\n"
  },
  {
    "path": "packages/runtime-class/docs/body-content.md",
    "content": "# Body content\n\nWe're used to passing body content to HTML tags. When you do this, the tag has control over where and when this content is rendered. A good example of this is the [HTML `<details>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details):\n\n```html\n<details>\n  <summary>Hello <strong>World</strong></summary>\n  This is some <em>content</em> that can be toggled.\n</details>\n```\n\nThis is what it renders (try clicking it):\n\n---\n\n<details>\n    <summary>Hello <strong>World</strong></summary>\n    This is some <em>content</em> that can be toggled.\n</details>\n\n---\n\nCustom tags can also receive content in the same way. This allows a component to give its user full control over _how_ some section of the content is rendered, but control _where_, _when_, and with _what_ data it is rendered. This feature is necessary to build composable components like overlays, layouts, dropdowns, etc. Imagine a `<table>` that didn't give you control over how its cells were rendered. That would be pretty limited!\n\n## Rendering body content\n\nWhen a custom tag is passed body content, it is received as a special `renderBody` property on the component's `input`. You can include this content anywhere in your component by using the [`<${dynamic}>` syntax](./syntax.md#dynamic-tagname).\n\n_components/fancy-container.marko:_\n\n```marko\n<div class=\"container fancy\">\n    <${input.renderBody}/>\n</div>\n```\n\nIf we were to use this tag like this:\n\n_Marko Source:_\n\n```marko\n<fancy-container>\n    <p>Content goes here...</p>\n</fancy-container>\n```\n\nThe rendered output would be:\n\n_HTML Output:_\n\n```html\n<div class=\"container fancy\"><p>Content goes here...</p></div>\n```\n\nThis is a pretty basic example, but you can imagine how this could be incorporated into a more advanced component to render passed content where/when needed.\n\n> **ProTip:**\n> Body content can be rendered multiple times. Or not at all.\n\n## Passing attributes to body content\n\nWhen rendering body content with `<${dynamic}>`, attributes may also be passed:\n\n_components/random-value.marko:_\n\n```marko\n<!-- heh, it's not actually random -->\n<${input.renderBody} number=1337 />\n```\n\nThese attribute values can be received as a [tag parameter](./syntax.md#parameters):\n\n```marko\n<random-value|{ number }|>\n    The number is ${number}\n</random-value>\n```\n\n> **ProTip:**\n> Some tags (like the above tag) may not render anything except their body content with some data. This can be quite useful, just look at the `<for>` and `<await>` tags!\n\n## Named body content\n\nYou can also pass named content sections to a tag using [attribute tags](./syntax.md#attribute-tag) which are denoted by the `@` prefix.\n\n```marko\n<layout>\n    <@heading>\n        <h1>Hello Marko</h1>\n    </@heading>\n    <@content>\n        <p>...</p>\n    </@content>\n</layout>\n```\n\nLike attributes, these attribute tags are received as `input.heading` and `input.content`, but they each have a `renderBody` property which we can now use:\n\n_components/layout.marko_\n\n```marko\n<!doctype html>\n<html>\n    <body>\n        <${input.heading.renderBody}/>\n        <hr/>\n        <${input.content.renderBody}/>\n    </body>\n</html>\n```\n\n> **ProTip:** The `renderBody` property can be omitted. You could use `<${input.heading}/>`, for example.\n\n### Repeated body content\n\nWhen an attribute tag is repeated, the child component can consume all instances using the [iterable protocol](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#the_iterable_protocol).\n\nThis allows us to, for example, build a custom table component which allows its user to specify any number of columns, while still giving the user control over how each column is rendered.\n\n_Marko Source:_\n\n```marko\n<fancy-table data=people>\n    <@column|person|>\n        Name: ${person.name}\n    </@column>\n    <@column|person|>\n        Age: ${person.age}\n    </@column>\n</fancy-table>\n```\n\n> _Note_\n> For TypeScript the [`Marko.AttrTag` helper](./typescript.md#built-in-marko-types) should be used here.\n\n> _Protip_\n> Since attribute tags are iterable you could pass `input.column` to a `for of` loop, or `[...spread]` it into an array.\n> To `.map`, `.filter` or otherwise work with attribute tags as an array you can use the following pattern:\n>\n> ```marko\n> $ const columns = [...input.column || []];\n> ```\n\nWe can then use the `<for>` tag to render the body content into table, passing the row data to each column's body.\n\n_components/fancy-table/index.marko:_\n\n```marko {4-8}\n<table class=\"fancy\">\n    <for|row| of=input.data>\n        <tr>\n            <for|column| of=input.column>\n                <td>\n                    <${column.renderBody} ...row/>\n                </td>\n            </for>\n        </tr>\n    </for>\n</table>\n```\n\nWe now have a working `<fancy-table>`. Let's see what it renders:\n\n_Example Data:_\n\n```js\n[\n  {\n    name: \"Patrick\",\n    age: 63,\n  },\n  {\n    name: \"Austin\",\n    age: 12,\n  },\n];\n```\n\n_HTML Output:_\n\n```html\n<table class=\"fancy\">\n  <tr>\n    <td>Name: Patrick</td>\n    <td>Age: 63</td>\n  </tr>\n  <tr>\n    <td>Name: Austin</td>\n    <td>Age: 12</td>\n  </tr>\n</table>\n```\n\n### Attributes on attribute tags\n\nIf you look at our previous example, we had to prefix each cell with the column label. It would be better if we could give a name to each column instead and only render that once.\n\n_Marko Source:_\n\n```marko\n<fancy-table>\n    <@column|person| heading=\"Name\">\n        ${person.name}\n    </@column>\n    <@column|person| heading=\"Age\">\n        ${person.age}\n    </@column>\n</fancy-table>\n```\n\nNow, each attribute tag in `input.column` will contain a `heading` property in addition to its `renderBody`. We can use another `<for>` and render the headings in `<th>` tags:\n\n_components/fancy-table/index.marko:_\n\n```marko {3-5}\n<table class=\"fancy\">\n    <tr>\n        <for|column| of=input.column>\n            <th>${column.heading}</th>\n        </for>\n    </tr>\n    <for|row| of=input.data>\n        <tr>\n            <for|column| of=input.column>\n                <td>\n                    <${column.renderBody} ...row/>\n                </td>\n            </for>\n        </tr>\n    </for>\n</table>\n```\n\nWe'll now get a row of headings when we render our `<fancy-table>`\n\n_HTML Output:_\n\n```html\n<table class=\"fancy\">\n  <tr>\n    <th>Name</th>\n    <th>Age</th>\n  </tr>\n  <tr>\n    <td>Patrick</td>\n    <td>63</td>\n  </tr>\n  <tr>\n    <td>Austin</td>\n    <td>12</td>\n  </tr>\n</table>\n```\n\n### Nested attribute tags\n\nContinuing to build on our example, what if we want to add some custom content or even components into the column headings? In this case, we can extend our `<fancy-table>` to use nested attribute tags. We'll now have `<@heading>` and `<@cell>` tags nested under `<@column>`. This gives users of our tag full control over how to render both column headings and the cells within the column!\n\n_Marko Source:_\n\n```marko {3-8}\n<fancy-table>\n    <@column>\n        <@heading>\n            <app-icon type=\"profile\"/> Name\n        </@heading>\n        <@cell|person|>\n            ${person.name}\n        </@cell>\n    </@column>\n    <@column>\n        <@heading>\n            <app-icon type=\"calendar\"/> Age\n        </@heading>\n        <@cell|person|>\n            ${person.age}\n        </@cell>\n    </@column>\n</fancy-table>\n```\n\nNow instead of rendering the heading as text, we'll render the heading's body content.\n\n_components/fancy-table/index.marko:_\n\n```marko {5}\n<table class=\"fancy\">\n    <tr>\n        <for|column| of=input.column>\n            <th>\n                <${column.heading.renderBody}/>\n            </th>\n        </for>\n    </tr>\n    <for|row| of=input.data>\n        <tr>\n            <for|column| of=input.column>\n                <td>\n                    <${column.cell.renderBody} ...row/>\n                </td>\n            </for>\n        </tr>\n    </for>\n</table>\n```\n\nOur headings can now include icons (and anything else)!\n\n_HTML Output:_\n\n```html\n<table class=\"fancy\">\n  <tr>\n    <th><img class=\"icon\" src=\"profile.svg\" /> Name</th>\n    <th><img class=\"icon\" src=\"calendar.svg\" /> Age</th>\n  </tr>\n  <tr>\n    <td>Patrick</td>\n    <td>63</td>\n  </tr>\n  <tr>\n    <td>Austin</td>\n    <td>12</td>\n  </tr>\n</table>\n```\n\n### Dynamic attribute tags\n\nThe flexibility of the `<fancy-table>` is great if you want to render columns differently or have columns that display the data in a special way (such as displaying an age derived from a date of birth). However, if all columns are basically the same, the user might feel they're repeating themselves. As you might expect, you can use `<for>` (and `<if>`) to dynamically render attribute tags.\n\n```marko\n$ const columns = [{\n    property: \"name\",\n    title: \"Name\",\n    icon: \"profile\"\n}, {\n    property: \"age\",\n    title: \"Age\",\n    icon: \"calendar\"\n}]\n\n<fancy-table>\n    <for|{ property, title, icon }|>\n        <@column>\n            <@heading>\n                <app-icon type=icon/> ${title}\n            </@heading>\n            <@cell|person|>\n                ${person[property]}\n            </@cell>\n        </@column>\n    </for>\n</fancy-table>\n```\n"
  },
  {
    "path": "packages/runtime-class/docs/class-components.md",
    "content": "# Class Components\n\nMarko makes it easy to create user interface components to use as building blocks for web pages and applications of any complexity.\n\nMarko promotes self-contained components that:\n\n- Are independently testable\n- Encapsulate the view, client-side behavior (like event handling) and styling\n- Can easily be combined to create composite UI components.\n\nMarko components compile into small, efficient JavaScript modules that hide implementation details from consumers. Components can be published to [npm](https://www.npmjs.com) for reuse across applications.\n\n## UI component diagram\n\n![Component diagram](./component-diagram.svg)\n\nIn Marko, the DOM output of a UI component is based on _input properties_ and optional _internal state_ used to control the view.\n\nIf Marko detects changes to `input` or the internal `state`, then the view (that is, the DOM) will automatically update to reflect the new input and state. Internally, Marko uses virtual DOM diffing/patching to update the view, but that’s an implementation detail that could change at any time.\n\n## Component structure\n\nMarko makes it easy to keep your component’s class and styles next to the HTML view that they correspond to. The following are the key parts of any UI component:\n\n- **View** - The HTML template for your UI component. Receives input properties and states, and renders to either server-side HTML or browser-side virtual DOM nodes.\n- **Client-side behavior** - A JavaScript `class` with methods and properties for initialization, event handling (including DOM events, custom events and lifecycle events), and state management.\n- **Styles** - Cascading StyleSheets, including support for CSS preprocessors like [Less](https://lesscss.org/) or [Sass](https://sass-lang.com/).\n\n## Server-side rendering\n\nA UI component can be rendered on the server or in the browser, but stateful component instances will be automatically mounted to the DOM in the browser for both. If a UI component tree is rendered on the server, then Marko will recreate the UI component tree in the browser with no extra code required. For more details, please see [Rendering](/docs/rendering/).\n\n## Single-file components\n\nMarko lets you define a `class` for a component right in the `.marko` file, and call that class’s methods with `on-*` attributes:\n\n```marko\nclass {\n    onCreate() {\n        this.state = {\n            count: 0\n        };\n    }\n    increment() {\n        this.state.count++;\n    }\n}\n\n<label>The current count is <output>${state.count}</output></label>\n<p><button on-click('increment')>+1</button></p>\n```\n\n### Styles\n\nAdding styles in your view is also made easy:\n\n```marko\nstyle {\n    .primary {\n        background: #09c;\n    }\n}\n\n<label>The current count is <output>${state.count}</output></label>\n<p><button.primary on-click('increment')>+1</button></p>\n```\n\nThese styles aren’t output in a `<style>` tag as inline styles usually are, but are externalized to deduplicate them across multiple component instances on a page.\n\nIf you use a CSS preprocessor, you can add its file extension on `style`:\n\n```marko\nstyle.less {\n    .primary {\n        background: @primaryColor;\n    }\n}\n```\n\n> **Note:** The code in the `style` section is processed in a context separate from the rest of the template, so you can’t use JavaScript variables inside it. If you need variables in your CSS, use a CSS preprocessor that supports them.\n\n## Multi-file components\n\nYou might prefer to keep your component’s class and styles in separate files from the view — the classical separation of HTML, CSS, and JavaScript. Marko makes this possible with a filename-based convention.\n\n> **ProTip:** If your’re moving the component’s class and styles to separate files is because the code is getting too large, consider splitting the component into smaller, more manageable components.\n\n### Supporting files\n\nMarko discovers supporting files in the same directory as a Marko view. For example, if you have a view named `counter.marko`, Marko will automatically look for `counter.component.js` and `counter.style.css`.\n\n```\ncounter.marko\ncounter.component.js\ncounter.style.css\n```\n\nMarko also handles views named `index.marko` specially. It will look for `component.js` and `style.css` in addition to `index.component.js` and `index.style.css`. This allows easily grouping component files into a directory:\n\n```\ncounter/\n    index.marko\n    component.js\n    style.css\n```\n\nIn your `component.js` file, export the component’s class:\n\n```js\nexport default class {\n  onCreate() {\n    this.state = {\n      count: 0,\n    };\n  }\n  increment() {\n    this.state.count++;\n  }\n}\n```\n\nIn your `index.marko` file, you can reference methods from that class with `on-*` attributes:\n\n```marko\n<label>The current count is <output>${state.count}</output></label>\n<p><button.primary on-click('increment')>+1</button></p>\n```\n\nAnd in your `style.css`, define the styles:\n\n```css\n.primary {\n  background: #09c;\n}\n```\n\n> **ProTip:** Marko actually looks any filenames with the pattern `[name].style.*`, so it will pick up any CSS preprocessor file extensions you use: `.less`, `.stylus`, `.scss`, etc.\n\n### Components with plain objects\n\nIf you target browsers that does not support classes, a plain object of methods can be exported:\n\n```js\nexport default {\n  onCreate: function () {\n    this.state = {\n      count: 0,\n    };\n  },\n  increment: function () {\n    this.state.count++;\n  },\n};\n```\n\n## Split components\n\nSplit components optimize for when a component renders on the server, and doesn’t need to dynamically rerender in the browser. As a result, its template and logic aren’t sent to the browser, reducing load time and download size.\n\n> **Note:** If a split component is the child of a stateful component, its full rendering logic will still be sent because the parent may pass new input to the split component and rerender it.\n\nAdditionally, if _all_ components rendered on a page are split components, Marko’s VDOM and rendering runtime is unnecessary, and therefore not sent to the browser.\n\n> **ProTip:** Don’t over-optimize. If your component really doesn’t need rerendering, go ahead and split, but don’t forgo stateful rerendering when it would make your code more maintainable.\n\n### Usage\n\nMarko discovers split components similarly to how it discovers an external component class. For example, if you have a view named `button.marko`, it will automatically look for `button.component-browser.js`. If your view is named `index.marko`, it will look for `component-browser.js` in addition to `index.component-browser.js`.\n\n```\ncounter/\n    index.marko\n    component-browser.js\n```\n\nA split component might need to do some setup as part of its initial render. In this case, the component may define a second component class to use the `onCreate`, `onInput`, and `onRender` [lifecycle methods](#lifecycle-events).\n\nThis class can be exported from `component.js`, or defined right in the template as a single-file components. In this case, your component folder may contain a `component.js` file, and must contain a `component-browser.js`. The following [lifecycle methods](#lifecycle-events) can go inside the `component.js` file:\n\n```\nclass {\n  onCreate(input, out) { }\n  onInput(input, out) { }\n  onRender(out) { }\n  onDestroy() { }\n}\n```\n\nAnd the following [lifecycle methods](#lifecycle-events) can go inside the `component-browser.js` file:\n\n```\nclass {\n  onMount() { }\n  onUpdate() { }\n}\n```\n\nAny JavaScript code related to the DOM or browser should also be inside `component-browser.js`.\n\n### Example\n\n`index.marko`\n\n```marko\nclass {\n    onCreate() {\n        this.number = 123;\n    }\n}\n\n<button on-click('shout')>What’s my favorite number?</button>\n```\n\n`component-browser.js`\n\n```js\nexport default {\n  shout() {\n    alert(`My favorite number is ${this.number}!`);\n  },\n};\n```\n\n## Event handling\n\nThe `on-[event](methodName|function, ...args)` attributes allow event listeners to be attached for either:\n\n- A native DOM event, when used on a native DOM element such as a `<button>`\n- Or a UI component event, when used on a custom tag for a UI component such as `<my-component>`\n\nThe `on-*` attributes are used to associate event handler methods with an event name. Event handlers may be specified by `'methodName'` — a string that matches a method on the component instance, or they may be a `function`. Attaching listeners for native DOM events and UI component custom events is explained in more detail in the sections below.\n\nYou may also use the `once-[event](methodName|function, ...args)` syntax, which will listen for only the first event, and then remove the listener.\n\n### Attaching DOM event listeners\n\nThe code below illustrates how to attach an event listener for native DOM events:\n\n```marko\nclass {\n  onButtonClick(name, event, el) {\n    alert(`Hello ${name}!`);\n  }\n}\n\nstatic function fadeIn(event, el) {\n  el.hidden = false;\n  el.style.opacity = 0;\n  el.style.transition = 'opacity 1s';\n  setTimeout(() => el.style.opacity = 1);\n}\n\n<button on-click('onButtonClick', 'Frank')>\n  Say Hello to Frank\n</button>\n\n<button on-click('onButtonClick', 'John')>\n  Say Hello to John\n</button>\n\n<img src='foo.jpg' once-load(fadeIn) hidden />\n```\n\nThe following arguments are passed to the event handler when the event occurs:\n\n1.  `...args` - Any extra bound arguments are _prepended_ to the arguments passed to the component’s handler method.\n    For example: `on-click('onButtonClick', arg1, arg2)` → `onButtonClick(arg1, arg2, event, el)`\n2.  `event` - The native DOM event object.\n3.  `el` - The DOM element that the event listener was attached to.\n\nWhen using the `on-*` or `once-*` attributes to attach event listeners, Marko uses event delegation that is more efficient than direct attachment of `el.addEventListener()`. Please see [Why is Marko Fast? § Event delegation](/docs/why-is-marko-fast/#event-delegation) for more details.\n\n<a id=\"declarative-custom-events\"></a>\n\n### Attaching custom event listeners\n\nThe code below illustrates how to attach an event listener for a UI component’s custom event:\n\n```marko\nclass {\n  onCounterChange(newValue, el) {\n    alert(`New value: ${newValue}!`);\n  }\n  onCounterMax(max) {\n    alert(`It reached the max: ${max}!`);\n  }\n}\n\n<counter on-change('onCounterChange') once-max('onCounterMax') />\n```\n\nThe following arguments are passed to the event handler when the event occurs:\n\n1.  `...args` - Any extra bound arguments are _prepended_ to the arguments passed to the component’s handler method.\n2.  `...eventArgs` - The arguments passed to `this.emit()` by the target UI component.\n3.  `component` - The component instance that the event listener was attached to.\n\nThe following code illustrates how the UI component for `<counter>` might emit its `change` event:\n\n`counter/index.marko`\n\n```marko\nclass {\n  onCreate() {\n    this.max = 50;\n    this.state = { count: 0 };\n  }\n  increment() {\n    if (this.state.count < this.max) {\n        this.emit('change', ++this.state.count);\n    }\n    if (this.state.count === this.max) {\n        this.emit('max', this.state.count);\n    }\n  }\n}\n\n\n<button.example-button on-click('increment')>\n  Increment\n</button>\n```\n\n> **ProTip:** Unlike native DOM events, UI component custom events may be emitted with multiple arguments. For example:\n>\n> ```js\n> this.emit(\"foo\", \"bar\", \"baz\");\n> ```\n\n## Attributes\n\n### `on-[event](methodName|function, ...args)`\n\nThe `on-*` attribute syntax attaches an event listener to either a native DOM event or a UI component event. The `on-*` attribute associates an event handler method with an event name. Please see the [Event handling](#event-handling) section above for details.\n\n### `once-[event](methodName|function, ...args)`\n\nThe same as the `on-*` attribute, except that its listener is only invoked for the first event, and then removed from memory. Please see the [Event handling](#event-handling) section above for more details.\n\n### `key`\n\nThe `key` property does 2 things in Marko:\n\n- Obtains references to nested HTML elements and nested UI components.\n- Matches corresponding elements together when DOM diffing/patching after a rerender. When updating the DOM, keyed elements/components are matched up and reused rather than discarded and recreated.\n\nInternally, Marko assigns a unique key to all HTML elements and UI components in a `.marko` file, based on the order they appear in the file. If you have repeated elements or elements that move between locations in the DOM, then you likely want to assign a custom `key` by adding a `key` attribute. The `key` attribute can be applied to both HTML elements and custom tags.\n\n#### Referencing nested HTML elements and components\n\n```marko\nclass {\n  onMount() {\n    const headerElement = this.getEl('header');\n    const colorListItems = this.getEls('colors');\n    const myFancyButton = this.getComponent('myFancyButton');\n  }\n}\n\n<h1 key=\"header\">Hello</h1>\n\n<ul>\n  <for|color| of=['red', 'green', 'blue']>\n      <li key=\"colors[]\">${color}</li>\n  </for>\n</ul>\n\n<fancy-button key=\"myFancyButton\"/>\n```\n\n> **Note:** The `[]` suffix (e.g. `key=\"colors[]\"`) lets Marko know that the element will be repeated multiple times with the same key.\n\n#### Keyed matching\n\nThe `key` attribute can pair an HTML element or UI component that moves to a new location in the DOM. For example:\n\n```marko\nclass {\n  onCreate() {\n    this.state = {\n      swapped: false\n    }\n  }\n}\n\n<if(state.swapped)>\n  <p key=\"b\">B</p>\n  <p key=\"a\">A</p>\n</if>\n<else>\n  <p key=\"a\">A</p>\n  <p key=\"b\">B</p>\n</else>\n```\n\nThe `key` attribute can be used to pair HTML elements or UI components that are repeated:\n\n```marko\n<ul>\n  <for|user| of=input.users>\n      <li key=user.id>${user.name}</li>\n  </for>\n</ul>\n```\n\nThis way, if the order of `input.users` changes, the DOM will be rerendered more efficiently.\n\n#### `*:scoped`\n\nThe `:scoped` attribute modifier results in the attribute value getting prefixed with a unique ID associated with the current UI component. `:scoped` attribute modifiers can be used to assign a globally unique attribute value from a value that only needs to be unique to the current UI component.\n\nHere’s a use-case: certain HTML attributes reference the `id` of other elements on the page. For example, the [HTML `<label>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/label) `for` attribute takes an `id` as its value. Many `ARIA` attributes like [`aria-describedby`](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-describedby_attribute) also take an `id` as their value.\n\nThe `:scoped` modifier on an attribute allows you to reference another element without fear of duplicate `id`s, as shown in the following examples:\n\n**`for:scoped`**\n\n```marko\n<label for:scoped=\"name\">Name</label>\n<input id:scoped=\"name\" value=\"Frank\"/>\n```\n\nThe above code will output HTML similar to the following:\n\n```html\n<label for=\"c0-name\">Name</label> <input id=\"c0-name\" value=\"Frank\" />\n```\n\n**`aria-describedby:scoped`**\n\n```marko\n<button\n   aria-describedby:scoped=\"closeDisclaimer\"\n   on-click('closeDialog')>Close</button>\n\n<p id:scoped=\"closeDisclaimer\">\n   Closing this window will discard any entered information and return you to the main page.\n</p>\n```\n\n```html\n<button aria-describedby=\"c0-closeDisclaimer\">Close</button>\n\n<p id=\"c0-closeDisclaimer\">\n  Closing this window will discard any entered information and return you to the\n  main page.\n</p>\n```\n\n**`href:scoped`**\n\n```marko\n<a href:scoped=\"#anchor\">Jump to section</a>\n<section id:scoped=\"anchor\"></section>\n```\n\n```html\n<a href=\"#c0-anchor\">Jump to section</a>\n<section id=\"c0-anchor\"></section>\n```\n\n### `no-update`\n\nPreserves the DOM subtree associated with the element or component, so it won’t be modified when rerendering.\n\n```marko\n<!-- Never rerender this table -->\n<table no-update>\n  …\n</table>\n```\n\n```marko\n<!-- N ever rerender this UI component -->\n<app-map no-update/>\n```\n\nThis is most useful when other JavaScript modifies the DOM tree of an element, like for embeds.\n\n### `no-update-if`\n\nSimilar to [no-update](#no-update), except that the DOM subtree is _conditionally_ preserved:\n\n```marko\n<!-- Don’t re-render this table without table data -->\n<table no-update-if(input.tableData == null)>\n  …\n</table>\n```\n\n### `no-update-body`\n\nSimilar to [no-update](#no-update), except that only the descendant DOM nodes are preserved:\n\n```marko\n<!-- Never rerender any nested DOM elements -->\n<div no-update-body>\n  …\n</div>\n```\n\n### `no-update-body-if`\n\nSimilar to [no-update-body](#no-update-body), except that its descendant DOM nodes are _conditionally_ preserved:\n\n```marko\n<!-- Never rerender any nested DOM elements without table data -->\n<table no-update-body-if(input.tableData == null)>\n  …\n</table>\n```\n\n### `:no-update`\n\nPrevents certain attributes from being modified during a rerender. The attribute(s) that should not be modified should have a `:no-update` modifier:\n\n```marko\n<!-- Never modify the `class` attribute -->\n<div class:no-update=input.className>\n  …\n</div>\n```\n\n## Properties\n\n### `this.id`\n\nA string identifier for the root HTML element that the component is bound to. (Not the `id` attribute.)\n\n### `this.state`\n\nThe current state for the component. Changing `this.state` or its direct properties will cause the component to rerender.\n\nOnly properties that exist when `this.state` is first defined will be watched for changes. If you don’t need a property initially, you can set its value to `null`:\n\n```marko\nclass {\n    onCreate() {\n        this.state = {\n            data: null,\n            error: null\n        }\n    }\n    getData() {\n        fetch('/endpoint')\n            .then(data => this.state.data = data)\n            .catch(error => this.state.error = error);\n    }\n}\n```\n\nBeware: setting a `state` property only _nominates_ the component for a possible rerender, and properties are only watched one level deep. Thus, the component is only rerendered if at least one of the component state properties changed (`oldValue !== newValue`).\n\nIf none of the properties changed (because the new value is identical, or no difference is detected by a shallow comparison), the assignment is considered a no-operation (great for performance).\n\nWe recommend using [immutable data structures](https://wecodetheweb.com/2016/02/12/immutable-javascript-using-es6-and-beyond/), but if you want to mutate a state property (perhaps push a new item into an array), you can mark it as dirty with `setStateDirty`:\n\n```js\nthis.state.numbers.push(num);\n\n// Mark numbers as dirty, because a `push`\n// won’t be automatically detected by Marko\nthis.setStateDirty(\"numbers\");\n```\n\n### `this.input`\n\nThe current input for the component. Setting `this.input` will rerender the component which can be useful for testing, but generally avoided (prefer `state` instead).\n\n## Variables\n\nWhen a Marko component is compiled, some additional variables are available to the rendering function. These variables are described below.\n\n### `component`\n\nThe `component` variable refers to the instance of the currently rendering UI component. This variable can be used to call methods on the UI component instance:\n\n```marko\nclass {\n    getFullName() {\n        const { person } = this.input;\n        return `${person.firstName} ${person.lastName}`;\n    }\n}\n\n<h1>Hello, ${component.getFullName()}</h1>\n```\n\n### `input`\n\nThe `input` variable refers to the `input` object, and is equivalent to `component.input`|`this.input`.\n\n```marko\n<h1>Hello, ${input.name}</h1>\n```\n\n### `state`\n\nThe `state` variable refers to the UI component’s `state` object, and is the _unwatched_ equivalent of `component.state`|`this.state`.\n\n```marko\n<h1>Hello ${state.name}</h1>\n```\n\n## Methods\n\n### `destroy([options])`\n\n| Option       | Type      | Default | Description                                                                       |\n| ------------ | --------- | ------- | --------------------------------------------------------------------------------- |\n| `removeNode` | `Boolean` | `true`  | `false` will keep the component in the DOM while unsubscribing all events from it |\n| `recursive`  | `Boolean` | `true`  | `false` will prevent child components from being destroyed                        |\n\nDestroys the component by unsubscribing from all listeners made using the `subscribeTo` method, and then detaching the component’s root element from the DOM. All nested components (discovered by querying the DOM) are also destroyed.\n\n```js\ncomponent.destroy({\n  removeNode: false, // true by default\n  recursive: false, // true by default\n});\n```\n\n### `forceUpdate()`\n\nQueue the component to re-render and skip all checks to see if it actually needs it.\n\n> When using `forceUpdate()` the updating of the DOM will be queued up. If you want to immediately update the DOM\n> then call `this.update()` after calling `this.forceUpdate()`.\n\n### `getEl([key, index])`\n\n| Signature    | Type          | Description                                                                       |\n| ------------ | ------------- | --------------------------------------------------------------------------------- |\n| `key`        | `String`      | _optional_ — the scoped identifier for the element                                |\n| `index`      | `Number`      | _optional_ — the index of the component, if `key` references a repeated component |\n| return value | `HTMLElement` | The element matching the key, or `this.el` if no key is provided                  |\n\nReturns a nested DOM element by prefixing the provided `key` with the component’s ID. For Marko, nested DOM elements should be assigned an ID with the `key` attribute.\n\n### `getEls(key)`\n\n| Signature    | Type                 | Description                                           |\n| ------------ | -------------------- | ----------------------------------------------------- |\n| `key`        | `String`             | The scoped identifier for the element                 |\n| return value | `Array<HTMLElement>` | An array of _repeated_ DOM elements for the given key |\n\nRepeated DOM elements must have a value for the `key` attribute that ends with `[]`. For example, `key=\"items[]\"`.\n\n### `getElId([key, index])`\n\n| Signature    | Type     | Description                                                                       |\n| ------------ | -------- | --------------------------------------------------------------------------------- |\n| `key`        | `String` | _optional_ — The scoped identifier for the element                                |\n| `index`      | `Number` | _optional_ — The index of the component, if `key` references a repeated component |\n| return value | `String` | The element ID matching the key, or `this.el.id` if `key` is undefined            |\n\nSimilar to `getEl`, but only returns the String ID of the nested DOM element instead of the actual DOM element.\n\n### `getComponent(key[, index])`\n\n| Signature    | Type        | Description                                                                                                                                                                                                       |\n| ------------ | ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `key`        | `String`    | The scoped identifier for the element                                                                                                                                                                             |\n| `index`      | `Number`    | _optional_ — The index of the component, if `key` references a repeated component                                                                                                                                 |\n| return value | `Component` | A reference to a nested `Component` for the given key. If an `index` is provided and the target component is a repeated component (i.e. `key=\"items[]\"`), then the component at the given index will be returned. |\n\nFor example, given the following component,\n\n```marko\n<app-main>\n  <app-child key=\"child\"/>\n</app-main>\n```\n\nThe following code can be used to get the `<app-child/>` component:\n\n```js\nconst childComponent = this.getComponent(\"child\");\n```\n\n### `getComponents(key, [, index])`\n\n| Signature    | Type               | Description                                                                       |\n| ------------ | ------------------ | --------------------------------------------------------------------------------- |\n| `key`        | `String`           | The scoped identifier for the element                                             |\n| `index`      | `Number`           | _optional_ — The index of the component, if `key` references a repeated component |\n| return value | `Array<Component>` | An array of _repeated_ `Component` instances for the given key                    |\n\nRepeated components must have a value for the `key` attribute that ends with `[]`, like `key=\"items[]\"`.\n\n### `isDestroyed()`\n\nReturns `true` if a component has been destroyed using [`component.destroy()`](#ondestroy), otherwise `false`.\n\n### `isDirty()`\n\nReturns `true` if the component needs a bath.\n\n### `replaceState(newState)`\n\n| Signature  | Type     | Description                                      |\n| ---------- | -------- | ------------------------------------------------ |\n| `newState` | `Object` | A new state object to replace the previous state |\n\nReplaces the state with an entirely new state. Equivalent to `this.state = newState`.\n\n> **Note:** While `setState()` is additive and will not remove properties that are in the old state but not in the new state, `replaceState()` _will_ add the new state and remove the old state properties that are not found in the new state. Thus, if `replaceState()` is used, consider possible side effects if the new state contains less or other properties than the replaced state.\n\n### `rerender([input])`\n\n| Signature | Type     | Description                                         |\n| --------- | -------- | --------------------------------------------------- |\n| `input`   | `Object` | _optional_ — New input data to use when rerendering |\n\nRerenders the component using its `renderer`, and either supplied `input` or internal `input` and `state`.\n\n### `setState(name, value)`\n\n| Signature | Type     | Description                                |\n| --------- | -------- | ------------------------------------------ |\n| `name`    | `String` | The name of the `state` property to update |\n| `value`   | `Any`    | The new value for the `state` property     |\n\nChanges the value of a single `state` property. Equivalent to `this.state[name] = value`, except it will also work for adding new properties to the component state.\n\n```js\nthis.setState(\"disabled\", true);\n```\n\n### `setState(newState)`\n\n| Signature  | Type     | Description                                         |\n| ---------- | -------- | --------------------------------------------------- |\n| `newState` | `Object` | A new state object to merge into the previous state |\n\nChanges the value of multiple state properties:\n\n```js\nthis.setState({\n  disabled: true,\n  size: \"large\",\n});\n```\n\n### `setStateDirty(name[, value])`\n\n| Signature | Type     | Description                                       |\n| --------- | -------- | ------------------------------------------------- |\n| `name`    | `String` | The name of the `state` property to mark as dirty |\n| `value`   | `Any`    | _optional_ — A new value for the `state` property |\n\nForces a state property change, even if the value is equal to the old value. This is helpful in cases where a change occurs to a complex object that would not be detected by a shallow compare. Invoking this function completely circumvents all property equality checks (shallow compares) and always rerenders the component.\n\n#### More details\n\nThe first parameter, `name`, is used to allow update handlers (e.g. `update_foo(newValue)`) to handle the state transition for the specific state property that was marked dirty.\n\nThe second parameter, `value`, is used as the new value that is given to update handlers. Because `setStateDirty()` always bypasses all property equality checks, this parameter is optional. If not given or equal to the old value, the old value will be used for the update handler.\n\nImportant: the given parameters do not affect how or if `setStateDirty()` rerenders a component; they are only considered as additional information to update handlers.\n\n```js\n// Because this does not create a new array, the change\n// would not be detected by a shallow property comparison\nthis.state.colors.push(\"red\");\n\n// Force that particular state property to be considered dirty so\n// that it will trigger the component's view to be updated\nthis.setStateDirty(\"colors\");\n```\n\n### `subscribeTo(emitter)`\n\n| Signature    | Description                                                                                                                                           |\n| ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `emitter`    | A [Node.js `EventEmitter`](https://nodejs.org/api/events.html#events_class_eventemitter) or DOM object that emits events (`window`, `document`, etc.) |\n| return value | A tracked subscription                                                                                                                                |\n\nWhen a component is destroyed, it is necessary to remove any listeners that were attached by the component to prevent memory leaks. By using `subscribeTo`, Marko will automatically track and remove any listeners you attach when the component is destroyed.\n\nMarko uses [`listener-tracker`](https://github.com/patrick-steele-idem/listener-tracker) to provide this feature.\n\n```js\nthis.subscribeTo(window).on(\"scroll\", () =>\n  console.log(\"The user scrolled the window!\"),\n);\n```\n\n### `update()`\n\nImmediately executes any pending updates to the DOM, rather than following the normal queued update mechanism for rendering.\n\n```js\nthis.setState(\"foo\", \"bar\");\nthis.update(); // Force the DOM to update\nthis.setState(\"hello\", \"world\");\nthis.update(); // Force the DOM to update\n```\n\n## Event methods\n\nMarko components inherit from [`EventEmitter`](https://nodejs.org/api/events.html#events_class_eventemitter). Below are a few commonly used methods — view the Node.js docs for the full list.\n\n### `emit(eventName, ...args)`\n\n| Signature   | Type     | Description                                           |\n| ----------- | -------- | ----------------------------------------------------- |\n| `eventName` | `String` | Name of the event                                     |\n| `...args`   | `Any`    | All subsequent parameters are passed to the listeners |\n\nEmits a UI component custom event. If a UI component attached a listener with the matching `eventName`, then the corresponding event listener method will be invoked. Event listeners can be attached using either the [`on-[event](methodName|function, ...args)`](#declarative-custom-events) attribute syntax, or `targetComponent.on()`.\n\n### `on(eventName, handler)`\n\n| Signature   | Type       | Description                               |\n| ----------- | ---------- | ----------------------------------------- |\n| `eventName` | `String`   | Name of the event to listen for           |\n| `handler`   | `Function` | The function to call when the event fires |\n\nAdds the listener function to the end of the listeners array for the `eventName` event. Does not check to see if the listener has already been added. Multiple calls passing the same combination of `eventName` and `handler` will result in the listener being added and called multiple times.\n\n### `once(eventName, handler)`\n\n| Signature   | Type       | Description                               |\n| ----------- | ---------- | ----------------------------------------- |\n| `eventName` | `String`   | Name of the event to listen for           |\n| `handler`   | `Function` | The function to call when the event fires |\n\nAdds a one-time listener function for the `eventName` event. The next time `eventName` triggers, this listener is removed and then invoked.\n\n## Lifecycle events\n\nMarko defines six lifecycle events:\n\n- `create`\n- `input`\n- `render`\n- `mount`\n- `update`\n- `destroy`\n\nThese events are emitted at specific points over the lifecycle of a component, as shown below:\n\n**First render**\n\n```js\nemit('create') → emit('input') → emit('render') → emit('mount')\n```\n\n**New input**\n\n```js\nemit('input') → emit('render') → emit('update')\n```\n\n**Internal state change**\n\n```js\nemit('render') → emit('update')\n```\n\n**Destroy**\n\n```js\nemit(\"destroy\");\n```\n\n### Lifecycle event methods\n\nEach lifecycle event has a corresponding component lifecycle method that can listen for the event:\n\n```js\nclass {\n  onCreate(input, out) { }\n  onInput(input, out) { }\n  onRender(out) { }\n  onMount() { }\n  onUpdate() { }\n  onDestroy() { }\n}\n```\n\n> **ProTip:** When a lifecycle event occurs in the browser, the corresponding event is emitted on the component instance. A parent component, or other code that has access to the component instance, can listen for these events. For example:\n>\n> ```js\n> component.on(\"input\", function (input, out) {\n>   // The component received an input\n> });\n> ```\n\n### `onCreate(input, out)`\n\n| Signature | Description                                                     |\n| --------- | --------------------------------------------------------------- |\n| `input`   | The input data used to render the component for the first time  |\n| `out`     | The async `out` used to render the component for the first time |\n\nThe `create` event is emitted (and `onCreate` is called) when the component is first created.\n\n`onCreate` is typically used to set the initial state for stateful components:\n\n```marko\nclass {\n    onCreate(input) {\n        this.state = { count: input.initialCount };\n    }\n}\n```\n\n### `onInput(input, out)`\n\n| Signature | Description        |\n| --------- | ------------------ |\n| `input`   | The new input data |\n\nThe `input` event is emitted (and `onInput` is called) when the component receives input: both the initial input, and for any subsequent updates to its input.\n\n### `onRender(out)`\n\n| Signature | Description                            |\n| --------- | -------------------------------------- |\n| `out`     | The async `out` for the current render |\n\nThe `render` event is emitted (and `onRender` is called) when the component is about to render or rerender.\n\n### `onMount()`\n\nThe `mount` event is emitted (and `onMount` is called) when the component is first mounted to the DOM. For server-rendered components, this is the first event that is emitted only in the browser.\n\nThis is the first point at which `this.el` and `this.els` are defined. `onMount` is commonly used to attach third-party JavaScript to the newly-mounted DOM.\n\nFor example, attaching a library that monitors if the component is in the viewport:\n\n```marko\nimport scrollmonitor from 'scrollmonitor';\n\nclass {\n    onMount() {\n        this.watcher = scrollmonitor.create(this.el);\n        this.watcher.enterViewport(() => console.log('I have entered the viewport'));\n        this.watcher.exitViewport(() => console.log('I have left the viewport'));\n    }\n}\n```\n\n### `onUpdate()`\n\nThe `update` event is emitted (and `onUpdate` is called) when the component is called after a component rerenders and the DOM has been updated. If a rerender does not update the DOM (nothing changed), this event will not fire.\n\n### `onDestroy()`\n\nThe `destroy` event is emitted (and `onDestroy` is called) when the component is about to unmount from the DOM and cleaned up. `onDestroy` should be used to do any additional cleanup beyond what Marko handles itself.\n\nFor example, cleaning up from our `scrollmonitor` example in [`onMount`](#onmount):\n\n```marko\nimport scrollmonitor from 'scrollmonitor';\n\nclass {\n    onMount() {\n        this.watcher = scrollmonitor.create(this.el);\n        this.watcher.enterViewport(() => console.log('Entered the viewport'));\n        this.watcher.exitViewport(() => console.log('Left the viewport'));\n    }\n    onDestroy() {\n        this.watcher.destroy();\n    }\n}\n```\n\n## DOM manipulation methods\n\nThe following methods move the component’s root DOM node(s) from the current parent element to a new parent element (or out of the DOM in the case of `detach`).\n\n### `appendTo(targetEl)`\n\nMoves the UI component’s DOM elements into the position after the target element’s last child.\n\n```js\nthis.appendTo(document.body);\n```\n\n### `insertAfter(targetEl)`\n\nMoves the UI component’s DOM elements into the position after the target DOM element.\n\n### `insertBefore(targetEl)`\n\nMoves the UI component’s DOM elements into the position before the target DOM element.\n\n### `prependTo(targetEl)`\n\nMoves the UI component’s DOM elements into the position before the target element’s first child.\n\n### `replace(targetEl)`\n\nReplaces the target element with the UI component’s DOM elements.\n\n### `replaceChildrenOf(targetEl)`\n\nReplaces the target element’s children with the UI component’s DOM elements.\n"
  },
  {
    "path": "packages/runtime-class/docs/cloudflare-workers.md",
    "content": "# Marko + Cloudflare Workers\n\nSee the [the cloudflare sample](https://github.com/marko-js/examples/tree/master/examples/vite-cloudflare)\nproject for a working example.\n\n## Usage\n\nWhen using Marko with [Cloudflare Workers](https://workers.cloudflare.com/), make sure that Marko is loaded with a `worker` [export condition](https://nodejs.org/api/packages.html#conditional-exports). Most bundlers support defining export conditions.\n\nAfter that point, imported `.marko` files will export a `.stream` method that returns a worker compatible [`ReadableStream`](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream). You can then respond with that returned stream:\n\n```js\nimport Template from \"./index.marko\";\n\naddEventListener(\"fetch\", (event) => {\n  event.respondWith(handleRequest(event.request));\n});\n\nasync function handleRequest(request) {\n  return new Response(Template.stream(), {\n    headers: {\n      status: 200,\n      headers: { \"content-type\": \"text/html;charset=UTF-8\" },\n    },\n  });\n}\n```\n\n### BYOB (Bring your own bundler)\n\nFor the large portion of Marko's API a bundler is required. The example code above assumes that Marko templates can be loaded in your environment.\nMarko supports a number of bundlers, [take a look through our supported bundlers](https://markojs.com/docs/bundler-integrations-overview/) and pick what works best for you.\n"
  },
  {
    "path": "packages/runtime-class/docs/compiler.md",
    "content": "# Compiler\n\n> **Warning**:\n> The compiler API and hooks are not terribly stable. They’re intended for advanced integrations or userland experimentation with new language features.\n>\n> Prefer existing official plugins and the standard tag library when possible.\n\n## Compile API\n\n> **Warning**:\n> The Compile API is intended for advanced integration with build tools, like Webpack and Rollup. Unless you’re doing that, you probably instead want [`build`/`serve` in the Marko CLI](https://github.com/marko-js/cli#readme), or one of [Marko’s bundler integrations](https://markojs.com/docs/bundler-integrations-overview/).\n\n### Compile Functions\n\nCompile functions take two arguments:\n\n1. A source Marko template\n2. [`CompileOptions`](#options)\n\nThen, they return a `CompileResult`:\n\n```ts\ntype CompileResult = {\n  code: string;\n  map?: SourceMap;\n  meta: Record<string, unknown>;\n};\n```\n\n- `code`: The compiled output of executable JavaScript code.\n- `map`: [A source map, used for debugging.](https://firefox-source-docs.mozilla.org/devtools-user/debugger/how_to/use_a_source_map/index.html)\n- `meta`: Metadata gathered while compiling — nothing terribly useful, probably going to get deprecated.\n  - Data about child dependencies. Was useful back when it was primarily the bundlers that handled tree-shaking out server components. Now that happens in the compiler, so we don’t use this anymore and therefore might become inaccurate in the future.\n  - A list of `watchFiles`: files that were used to compile the template (e.g. `marko.json`). Used to tell bundlers which files should be watched in dev mode.\n\n#### `compileFile()` and `compileFileSync`\n\n```ts\ncompiler.compileFile(filename: string, options?: CompileOptions): Promise<CompileResult>\ncompiler.compileFileSync(filename: string, options?: CompileOptions): CompileResult\n```\n\n`compileFile` and `compileFileSync` load `filename` from disk to use as a source template, then translate it into JavaScript.\n\n```js\nimport * as compiler from \"@marko/compiler\";\n\nconst asyncResult = await compiler.compileFile(\"./src/index.marko\", {\n  modules: \"cjs\",\n});\nconst syncResult = compiler.compileFileSync(\"./src/index.marko\", {\n  modules: \"cjs\",\n});\n```\n\n#### `compile()` and `compileSync()`\n\n```ts\ncompiler.compile(src: string, filename: string, options?: CompileOptions): Promise<CompileResult>\ncompiler.compileSync(src: string, filename: string, options?: CompileOptions): CompileResult\n```\n\n`compile` and `compileSync` accept source templates as a string, rather than loading from disk.\n\nThe `filename` location is used for resolving taglibs and imports, but does not have to be an actually existing file. <!-- TODO: should it be renamed to baseFile or importBase or something? -->\n\n```js\nimport * as compiler from \"@marko/compiler\";\n\nconst asyncResult = await compiler.compile(\n  \"<h1>Hello!</>\",\n  \"./src/index.marko\",\n  { modules: \"cjs\" },\n);\nconst syncResult = compiler.compileSync(\"<h1>Hello!</>\", \"./src/index.marko\", {\n  modules: \"cjs\",\n});\n```\n\n### Options\n\nThe compiler may be configured globally to change its default options:\n\n```js\nimport * as compiler from \"@marko/compiler\";\ncompiler.configure({ output: \"dom\" });\n```\n\nOr you can pass options objects when calling compile functions. Each property will override individual properties set by `configure()`:\n\n```js\nimport * as compiler from \"@marko/compiler\";\ncompiler.configure({\n  output: \"dom\",\n  sourceMaps: true,\n});\nconst result = compiler.compileFileSync(\"./example.marko\", {\n  output: \"html\",\n});\n```\n\nIn the above example, `result` would be compiled with the options of `{ output: \"html\", sourceMaps: true }`.\n\n#### `output`\n\nType: `string`<br>\nDefault: `\"html\"`\n\n- `\"html\"`: compiles templates to JavaScript that generates HTML strings for server HTTP responses, writing `.html` files, or maybe even constructing `Response`s in Web Workers.\n- `\"dom\"`: compiles templates to JavaScript that generates DOM nodes for client-side rendering in browsers.\n- `\"hydrate\"`: like `\"dom\"`, but only includes assets & components needed in-browser, assuming the page was rendered on the server.\n- `\"migrate\"`: only runs migrations (no transforms or translation) and returns the migrated template code.\n- `\"source\"`: parses templates without running any migrations or transforms. (Useful with `ast: true`)\n\n> **Note**:\n> For `dom` or `hydrate` outputs, you should also specify a [`resolveVirtualDependency`](#resolvevirtualdependency) function.\n\n#### `code`\n\nType: `boolean`<br>\nDefault: `true`\n\nIf `false`, will not generate or return the compiled `code` string.\n\n#### `ast`\n\nType: `boolean`<br>\nDefault: `false`\n\nIf `true`, the compiler will provide the `ast` in its output.\n\n#### `stripTypes`\n\nType: `boolean|undefined`<br>\nDefault: `undefined`\n\nIf `true`, removes all TypeScript types from the output.\nIf the value is `undefined` (the default), the compiler will remove types if the `output` option is not `source` or `migrate`.\n\nFor example, to run migrations _and_ strip types, you can set both `output: \"migrate\"` and `stripTypes: true`.\n\n#### `runtimeId`\n\nType: `string`<br>\nDefault: `undefined`\n\nOptionally use to override the runtime ID used to differentiate multiple copies of Marko on the same page, which is passed to `marko/components.init(runtimeId)` when compiling in the `hydrate` output.\n\n#### `writeVersionComment`\n\nType: `boolean`<br>\nDefault: `true`\n\nWhether the Marko version should be written to the template in a comment, like so:\n\n```js\n// Compiled using marko@x.x.x - DO NOT EDIT\n```\n\n#### `ignoreUnrecognizedTags`\n\nType: `boolean`<br>\nDefault: `false`\n\nWhether unrecognized tags should be silently ignored or throw a compile error. Ignored tags will be output as native elements.\n\n> **ProTip**:\n> Some test setups use this alongside `@marko/compiler/taglib`'s `excludeDir` and `excludePackage` to simulate \"shallow\" rendering.\n\n#### `sourceMaps`\n\nType: `boolean` or `string`<br>\nDefault: `false`\n\nWhether source maps should be output with the compiled templates.\n\n- When `true` a `map` property will be available on the compile result.\n- When `\"inline\"` the sourcemap will be inlined as a comment in the output code.\n- When `\"both\"` both of the above will be used.\n\n#### `meta`\n\nType: `boolean`<br>\nDefault: `false`\n\n_Deprecated_. This option inlines the metadata in the output Javascript code. Metadata should be accessed instead from the `CompileResult`.\n\n#### `fileSystem`\n\nType: typeof [`fs`](https://nodejs.org/api/fs.html) (specifically read APIs)<br>\nDefault: Cached `fs`\n\nUse a different file system object (eg. webpack's [CachedInputFileSystem](https://github.com/webpack/enhanced-resolve/blob/f08fe3f1a22c90c722eca14b38a9300ad00c62e8/lib/CachedInputFileSystem.js) or [`arc-fs`](https://github.com/eBay/arc/tree/master/packages/arc-fs))\n\n#### `modules`\n\nType: `string` (`\"esm\"` or `\"cjs\"`)<br>\nDefault: `\"esm\"`\n\nBy default Marko outputs ES Modules. You can optionally specify `\"cjs\"` for CommonJS/`require()`.\n\n#### `optimize`\n\nType: `boolean`<br>\nDefault: [environment based](https://github.com/marko-js/marko/blob/0f212897d2d3ec30b12c2f18ba950818bccb83b4/packages/compiler/src/babel-plugin/index.js#L277-L284) (`false` in development, `true` in production)\n\nEnables production mode optimizations.\n\n#### `optimizeKnownTemplates`\n\nType: `string[]`<br>\nDefault: `undefined`\n\nIf `optimize` is enabled you can provide an array of template paths which the compiler will use to generate shorter registry/template ids using incrementing ids. This can only be used if the same `optimizeKnownTemplates` are used for both server and client compilations.\n\n#### `resolveVirtualDependency`\n\nType:\n\n```ts\n(\n  filename: string,\n  dep: {\n    code: string;\n    virtualPath: string;\n    map?: SourceMap;\n  },\n) => string;\n```\n\nDefault: `undefined`\n\nThis option should be set for `dom` or `hydrate` outputs. Since Marko templates can represent multiple output files (eg. JS renderer and CSS styles), a single source `.marko` file must be treated as potentially multiple virtual files.\n\nDifferent build tools have different mechanisms for handling virtual files. You should pass a function that returns a virtual path that can be handled by your build tool.\n\n##### Example based on `@marko/webpack/loader`:\n\n```js\n// lookup is shared between resolveVirtualDependency and markoLoader\nconst virtualSources = new Map();\n\nfunction resolveVirtualDependency(filename, { virtualPath, code, map }) {\n  const virtualFilename = `${filename}?virtual=${virtualPath}`;\n\n  // Add virtual source to the lookup to be later accessed by the loader\n  virtualSources.set(virtualFilename, { code, map });\n\n  // Generate the webpack path, from right to left...\n  // 1. Pass the virtualFilename so webpack can find the real file\n  //    located at sourceFilename, but the virtualPath is also present\n  //    (eg. \"./index.marko?virtual=./index.marko.css\")\n  // 2. Use an inline loader to run this file through @marko/webpack/loader\n  //    https://webpack.js.org/concepts/loaders/#inline\n  // 3. Use an inline matchResource to redefine this as the virtualPath\n  //    which allows the appropriate loaders to match the virtual dependency\n  //    https://webpack.js.org/api/loaders/#inline-matchresource\n  return `${virtualPath}!=!@marko/webpack/loader!${virtualFilename}`;\n}\n\nexport default function markoLoader(source) {\n  let code, map;\n\n  if (virtualSources.has(this.resource)) {\n    // If the resource has a ?virtual query param, we should\n    // find it in the lookup and then return the virtual code\n    // rather than performing the normal compilation\n    { code, map } = virtualSources.get(this.resource);\n    virtualSources.delete(this.resource);\n  } else {\n    // The default behavior is to compile the template in dom output mode\n    { code, map } = markoCompiler.compileSync(source, this.resourcePath, {\n      output: \"dom\",\n      resolveVirtualDependency\n    });\n  }\n\n  return this.callback(null, code, map);\n}\n```\n\n#### `hydrateIncludeImports`\n\nThis option is only used for `output: \"hydrate\"`. By default, `import`s in server-only files are not included in the hydrate output. However, for some assets, like stylesheets, it is useful to have them included in hydrate mode.\n\nThe `hydrateIncludeImports` option allows you to provide a function which receives an import path, or a regexp to match against that path which tells Marko to include that import in the hydrate mode output.\n\nThe default regexp includes a list of common known asset file extensions, and is as follows:\n\n```js\n/\\.(css|less|s[ac]ss|styl|png|jpe?g|gif|svg|ico|webp|avif|mp4|webm|ogg|mp3|wav|flac|aac|woff2?|eot|[ot]tf)$/;\n```\n\nLooking at a partial Marko file such as:\n\n```marko\nimport \"./bar\"\nimport \"./foo.css\";\nimport \"./baz.wasm\";\n\n<div/>\n```\n\nFor `hydrate` output, with the default `hydrateIncludeImports`, would only cause `./foo.css` to be loaded in the browser.\n\n#### `hydrateInit`\n\nThis option is only used for `output: \"hydrate\"`. It defaults to `true` and causes the hydrate output to include code which tells the Marko runtime to begin hydrating any registered components.\n\nSetting to false will disable that `init` call and allow you to generate code which _just_ imports any hydrate dependencies for a template.\n\n#### `cache`\n\nType: typeof [`Map`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) (specifically, `.get()` is required)<br>\nDefault: `new Map()`\n\nCompiling a Marko template may require other (used) Marko templates to compile. To prevent compiling templates more than once, most of the compilation is cached.\n\nThe default cache strategy is to clear the cache each macrotask. If the default cache is overwritten, it is up to the user to determine when the cache is cleared.\n\n#### `babelConfig`\n\nType: see [babel options](https://babeljs.io/docs/en/options)<br>\nDefault: babel defaults, plus\n\n```js\n{\n  filename,\n  sourceType: \"module\",\n  sourceMaps: config.sourceMaps\n}\n```\n\n#### `translator`\n\nType: `{ analyze: Visitor, transform:Visitor }`<br>\nDefault: [autodiscovers](https://github.com/marko-js/marko/blob/0f212897d2d3ec30b12c2f18ba950818bccb83b4/packages/compiler/src/config.js#L46-L89) a translator package starting with `@marko/translator-` or `marko-translator-`\n\nThe translator is a collection of transforms that translates the Marko AST into a valid JavaScript AST based on the `output` option. There is a default translator in Marko, but this option may be used to switch to experimental translators for alternate runtimes.\n\nThe translator is an object with `analyze` and `transform` [Babel Visitors](https://github.com/jamiebuilds/babel-handbook/blob/master/translations/en/plugin-handbook.md#visitors):\n\n- The result of the `analyze` visitor is cached and may be requested by other templates.\n- The `transform` visitor transforms the AST to its final JavaScript AST.\n\nSee [`@marko/translator-default`](https://github.com/marko-js/marko/blob/11a10f82cdb5389880e6deca5f77d17727acb831/packages/translator-default/src/index.js) for a reference implementation.\n\n## Hooks\n\n> **Note**:\n> These compiler hooks aren’t terribly stable either. Using hooks for one-time migrations, like a codemod, is the best-supported way to use the compiler hooks, since you won’t have to worry about the code changing underneath you in the future.\n\n![1. Parse (angle bracket source code) 2. Migrate (old Marko to new Marko) 3. Transform (objects to different objects) 4. Translate (Marko to JavaScript.)](./compiler-hooks.png)\n\nThe Marko compiler runs a series of stages to produce its final JavaScript output. These stages handle different steps of template processing, and can be tweaked, extended, and hooked into with [`marko.json` configuration files](./marko-json.md).\n\n- All compiler hooks must have a default export of a [Babel-style visitor function](https://github.com/jamiebuilds/babel-handbook/blob/master/translations/en/plugin-handbook.md#toc-visitors), which will receive a [babel `NodePath`](https://github.com/jamiebuilds/babel-handbook/blob/master/translations/en/plugin-handbook.md#paths) with a `MarkoTag` node.\n\n- Hooks will also receive a `types` object that matches the [`@babel/types`](https://babeljs.io/docs/en/babel-types) API extended with the [Marko AST types](#marko-ast). (You may also reference the types by importing `{ types } from \"@marko/compiler\"`.)\n\n- Hooks may alternatively export an `enter` function (alias of `default`), and optionally an `exit` function. These map to [`@babel/traverse`’s `enter` and `exit` methods](https://github.com/jamiebuilds/babel-handbook/blob/master/translations/en/plugin-handbook.md#babel-traverse).\n\nHere is an example hook:\n\n```js\nexport default (tag, types) => {\n  if (types.isStringLiteral(tag.node.name)) {\n    console.log(`Found a tag called ${tag.node.name.value}`);\n    tag.remove();\n  }\n};\n```\n\n### Parse\n\nMarko compilation starts by converting the raw text of your Marko template into an [AST (Abstract Syntax Tree)](https://en.wikipedia.org/wiki/Abstract_syntax_tree) — an object representation of your code.\n\n```marko\n<h1>Hello!</h1>\n```\n\n…will roughly become:\n\n```json\n{\n  \"type\": \"MarkoTag\",\n  \"name\": {\n    \"type\": \"StringLiteral\",\n    \"value\": \"h1\"\n  },\n  \"body\": {\n    \"type\": \"MarkoTagBody\",\n    \"body\": [\n      {\n        \"type\": \"MarkoText\",\n        \"value\": \"Hello!\"\n      }\n    ]\n  }\n}\n```\n\nThis might look a bit verbose, but ASTs aim for completeness, not terseness.\n\nMarko parses in two steps to stay flexible with the ever-changing syntax of JavaScript:\n\n1. The first parsing pass happens in our [`htmljs-parser`](https://github.com/marko-js/htmljs-parser), which understands the HTML and HTML-like parts of your template.\n\n2. For JavaScript expressions, Marko defers to [`@babel/parser`](https://babeljs.io/docs/en/babel-parser). The resulting [Marko AST](#marko-ast) is a superset of what `@babel/parser` would return.\n\nTo hook into the `parse` stage, use [the `parse` option in the `marko.json` file](https://markojs.com/docs/marko-json/#paths).\n\n> **Note**: The `parse` hook deviates from the other compiler hooks:\n>\n> - It does not support the `enter` & `exit` API.\n> - You _must return_ a replacement AST node.\n\n### Migrate\n\nThat’s right, Marko has _first-class_ support for migrations. The **migration stage** can translate outdated APIs into modern counterparts, leaving the rest of the compilation none the wiser.\n\nMigrations run automatically in the background, and can be written to disk when users are ready by running the [`@marko/migrate` CLI command](https://github.com/marko-js/cli/blob/master/packages/migrate/README.md).\n\nTo hook into the `migrate` stage, [use the `migrate` option in the `marko.json` file](https://markojs.com/docs/marko-json/#paths).\n\n> **Note:**\n> To make the compiler stop at this point and output the migrated template, rather than continuing to produce the JavaScript output, [set `output: \"migrate\"`](#output) in the [compilation options](#options).\n\n### Transform\n\nThe **transform stage** is meant for userland transformations of Marko code into different Marko code. Think of it like [`babel.transform`](https://babeljs.io/docs/en/babel-core#transform) for Marko templates.\nAt this stage, you are given a fully parsed and migrated AST to do what you will with.\n\nTo hook into the `transform` stage, [use the `transform` option in the `marko.json` file](https://markojs.com/docs/marko-json/#paths).\n\n### Analyze\n\nNext is the **analyze stage**, intended for non-mutative analysis of the entire AST in a way that can be cached in RAM.\n\n> **Note**:\n> “Non-mutative analysis” means that if you modify the AST during this stage, _you’ll probably regret it_ someday.\n\nMetadata should be stored on nodes’ `.extra` property. These `.extra` properties are typically read in [the translate stage](#translate), or when using the child template analysis helpers.\n\nTo hook into the `analyze` stage, [use the `analyze` option in the `marko.json` file](https://markojs.com/docs/marko-json/#paths).\n\n### Translate\n\nFinally, we have the **translation stage**. This stage is Marko’s “Rosetta Stone”, and is responsible for turning your beautiful `.marko` code into different versions of optimized JavaScript you’d rather not write yourself.\n\nTo hook into the `translate` stage, [use the `translate` option in the `marko.json` file](https://markojs.com/docs/marko-json/#paths).\n\n## Utilities\n\n[The `@marko/babel-utils` package](https://github.com/marko-js/marko/tree/master/packages/babel-utils/index.d.ts) exposes a handful of utilities for various tasks on [Marko ASTs](#marko-ast).\n\n### Marko AST\n\nMarko extends Babel’s AST types to add nodes for `MarkoTag`, `MarkoAttribute`, etc.\n\nFor AST creation and assertion utilities, you can import Marko’s `@babel/types` superset from the compiler package:\n\n```js\nimport { types } from \"@marko/compiler\";\n```\n\nThe [`@babel/types` documentation](https://babeljs.io/docs/en/babel-types) shows all utility methods available for Babel AST nodes. When importing `types` from `@marko/compiler`, you also get the same types of utilities for Marko nodes: `types.markoTag`, `types.isMarkoTag`, `types.assertMarkoTag`, and so on.\n\nFor full definitions, view the source code for Babel and Marko:\n\n- [Babel’s Core Definitions](https://github.com/babel/babel/blob/master/packages/babel-types/src/definitions/core.js)\n- [Babel’s Extended Definitions](https://github.com/babel/babel/tree/master/packages/babel-types/src/definitions)\n- [Marko’s Definitions](https://github.com/marko-js/marko/blob/main/packages/compiler/src/babel-types/types/definitions.js)\n"
  },
  {
    "path": "packages/runtime-class/docs/concise.md",
    "content": "# Concise syntax\n\nMarko's concise syntax is very similar to the HTML syntax, except it's more... concise. Essentially, you take an HTML tag, remove the angle brackets (`<>`) and use indentation rather than a closing tag:\n\n_input.marko_\n\n```marko\ndiv class=\"thumbnail\"\n    img src=\"https://example.com/thumb.png\"\n```\n\n_output.html_\n\n```html\n<div class=\"thumbnail\"><img src=\"https://example.com/thumb.png\" /></div>\n```\n\n## Shorthand attributes\n\nMarko provides a shorthand for declaring classes and ids on an element:\n\n_input.marko_\n\n```marko\ndiv.my-class\nspan#my-id\nbutton#submit.primary.large\n```\n\nYields this HTML:\n\n_output.html_\n\n```html\n<div class=\"my-class\"></div>\n<span id=\"my-id\"></span> <button id=\"submit\" class=\"primary large\"></button>\n```\n\n> **ProTip:** These shorthand attributes are available within the HTML syntax as well\n\n## Attributes on multiple lines\n\nIf a component has lots of attributes, you can spread them across multiple lines by surrounding them with square brackets\n\n_input.marko_\n\n```marko\ndiv [\n    id=\"hello\"\n    class=[\"class1\", \"class2\", \"class3\"]\n    style={ border: \"1px solid red\" }\n] -- hello\n```\n\n_output.html_\n\n```html\n<div id=\"hello\" class=\"class1 class2 class3\" style=\"border:1px solid red\">\n  hello\n</div>\n```\n\n## Text\n\nText in concise mode is denoted by two or more dashes (`--`).\n\nIf there is text on the same line following `--`, it is single-line text:\n\n_single-line-text.marko_\n\n```marko\n-- Hello world\n```\n\nThe dashes can also follow an element to give it a single text node as a child\n\n_single-line-text.marko_\n\n```marko\ndiv -- Hello world\n```\n\nIf there is a line break immediately following `--`, everything following the `--` at the current indentation is parsed as multi-line line text.\n\n_multi-line-text.marko_\n\n```marko\ndiv\n    --\n    Hello world\n    this text\n    is multi-line\n\ndiv\n    --\n    this is more\n    text\n```\n\nA multi-line text block can be ended by the same number of dashes that opened it. This allows it to have siblings:\n\n_multi-line-text.marko_\n\n```marko\ndiv\n    img src=\"https://example.com/photo.png\"\n    --\n    Hello world\n    this text\n    is multi-line\n    --\n    span -- text after\n```\n\n### Root level text\n\nThere is one \"gotcha\" that you need to be aware of. The Marko parser starts out in the concise mode. Therefore, given the following template:\n\n_input.marko_\n\n```marko\nHello World\nWelcome to Marko\n```\n\nThe output would be the following:\n\n_output.html_\n\n```html\n<Hello World></Hello> <Welcome to Marko></Welcome>\n```\n\nInstead, prefix the lines with `--` so they are parsed as text:\n\n_input.marko_\n\n```marko\n-- Hello World\n-- Welcome to Marko\n```\n"
  },
  {
    "path": "packages/runtime-class/docs/conditionals-and-lists.md",
    "content": "# Conditionals and Lists\n\nWhile HTML itself does not support conditionally displaying elements or repeating elements, it is a critical part of building any web application. In Marko, this functionality is provided by the `<if>` and `<for>` tags.\n\n## Conditionals\n\nThe `<if>` tag receives an [argument](./syntax.md#arguments) which is used to determine if its body content should be present.\n\n```marko\n<if(user.loggedOut)>\n    <a href=\"/login\">Log in</a>\n</if>\n```\n\nAs you might expect, there are also `<else>` and `<else-if>` tags as well:\n\n```marko\n<if(user.loggedOut)>\n    <a href=\"/login\">Log in</a>\n</if>\n<else-if(!user.trappedForever)>\n    <a href=\"/logout\">Log out</a>\n</else-if>\n<else>\n    Hey ${user.name}!\n</else>\n```\n\n## Lists\n\nIf you have a list of data and need to represent it in the UI, the `<for>` tag is probably what you're looking for. The `<for>` tag passes each item and its index to its body as [parameters](./syntax.md#parameters).\n\n```marko\n<ul>\n    <for|color, index| of=colors>\n        <li>${index}: ${color}</li>\n    </for>\n</ul>\n```\n\nThe `<for>` tag actually support 3 different flavors:\n\n- [`<for|item, index, array| of=array>`](./core-tags.md#iterating-over-a-list) renders its body for each item of an array. It's similar to the JavaScript [`for...of`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of) loop.\n- [`<for|key, value| in=object>`](./core-tags.md#iterating-over-an-objects-properties) renders its body for each property in an object. It's similar to the JavaScript [`for...in`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in) loop.\n- [`<for|value| from=first to=last step=increment>`](./core-tags.md#iterating-between-a-range-of-numbers) renders its body for each value in between and including `from` and `to`.\n\n### Always set a `key`\n\nMarko automatically keeps your UI in sync with the state behind it, but one place where it needs a little extra help is repeated content. Specifying keys gives Marko a way to identify items in a list and keep track of which items have been changed, added, or removed.\n\nA key should be a string or number that uniquely identifies an item in the list and differentiates it from its siblings. The same key value should never be used twice! Often, you will use something like an `id` property.\n\n```marko\n<for|user| of=users>\n    <user-card key=user.id data=user/>\n</for>\n```\n\n> **ProTip:** If you have multiple tags underneath `<for>`, you can key only the first tag and that is enough to properly identify its siblings as well\n>\n> ```marko\n> <dl>\n>     <for|entry| of=entries>\n>         <!-- only the first tag needs a key -->\n>         <dt key=entry.id>${entry.word}</dt>\n>         <!-- This key can be omitted -->\n>         <dd>${entry.definition}</dd>\n>     </for>\n> </dl>\n> ```\n\n> **Note:** If a key is not set, Marko will use the index of an item as its key. However this only works perfectly if items are only ever added or removed at the end of a list. Here's an example where things break down: if we have a list of `[\"A\", \"B\", \"C\"]` and reverse the order, index keys would cause \"A\" to be transformed into \"C\" (and \"C\" into \"A\"), rather than just swapping them. Additionally if these components contained state, the new \"C\" would contain the state from the old \"A\" (and vice-versa). Be aware, stateful components include tags like the native `<input>` element. For this reason **it is always recommended to set a `key` on tags in a `<for>`.**\n"
  },
  {
    "path": "packages/runtime-class/docs/core-tags.md",
    "content": "# Core tags and attributes\n\nMuch like [HTML has its own native tags](https://developer.mozilla.org/en-US/docs/Web/HTML/Element), Marko includes **core tags** and **global attributes** for declaratively building modern applications.\n\n## `<if>`, `<else-if>`, `<else>`\n\nLike the [equivalent JavaScript statements](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/if...else), these tags render [conditional content](./conditionals-and-lists.md#conditionals):\n\n```marko\n<if(arriving)>\n  Hey there\n</if>\n<else-if(leaving)>\n  Bye now\n</else-if>\n<else>\n  What’s up?\n</else>\n```\n\nThey support any JavaScript expression in their [tag arguments](./syntax.md#arguments):\n\n```marko\n<if(Math.random() > 0.5)>\n  <p>50% chance to see this</p>\n</if>\n```\n\n## `<for>`\n\nThe `<for>` tag iterates over [arrays/array-likes](#iterating-over-a-list), [object properties](#iterating-over-an-objects-properties), and [ranges of numbers](#iterating-between-a-range-of-numbers).\n\n### Iterating over a list\n\nLike the [JavaScript `for...of` loop statement](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of), giving `<for>`’s `of` attribute a value will loop over that value as an array or iterable.\n\nThe current **item**, **index**, and the **iterating list** are provided as [tag parameters](./syntax.md#parameters):\n\n```marko\n$ const colors = [\"red\", \"green\", \"blue\"];\n<ol>\n  <for|color, index, colorList| of=colors>\n    <li value=index>${color}</li>\n  </for>\n</ol>\n```\n\nThe output HTML would be:\n\n```html\n<ol>\n  <li value=\"0\">red</li>\n  <li value=\"1\">green</li>\n  <li value=\"2\">blue</li>\n</ol>\n```\n\n> **Pro Tip**: `<for>`’s `of` attribute can loop over any iterable, just like JavaScript’s [`for...of`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of). This includes strings, `NodeList`s, `Set`s… any object with zero-indexed numeric properties and a `.length`, basically.\n\n### Iterating over an object’s properties\n\nLike [JavaScript’s `for...in` loop statement](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in), giving `<for>` an object as its `in` attribute will loop over that object’s properties.\n\nThe current **property name** and **property value** are provided as [tag parameters](./syntax.md#parameters):\n\n```marko\n$ const settings = {\n  \"Dark Mode\": false,\n  \"Fullscreen\": true\n};\n\n<dl>\n  <for|name, enabled| in=settings>\n    <dt>${name}:</dt>\n    <dd>${enabled ? \"on\" : \"off\"}</dd>\n  </for>\n</dl>\n```\n\nThe output HTML would be:\n\n```html\n<dl>\n  <dt>Dark Mode:</dt>\n  <dd>off</dd>\n  <dt>Fullscreen:</dt>\n  <dd>on</dd>\n</dl>\n```\n\n### Iterating between a range of numbers\n\nThe final `<for>` variant loops between two numbers, by providing `from` and `to` attributes. The current number in the range will be provided as a [tag parameter](./syntax.md#parameters):\n\n```marko\n<ol type=\"I\">\n  <for|i| from=0 to=10>\n    <li value=i>${i}</li>\n  </for>\n</ol>\n```\n\nYou can also pass an optional `step` attribute, which defaults to 1 otherwise. `step` lets you increment by a specific amount:\n\n```marko\n<ol type=\"I\">\n  <for|i| from=0 to=10 step=2>\n    <li value=i>${i}</li>\n  </for>\n</ol>\n```\n\n…becomes:\n\n```marko\n<ol type=\"I\">\n  <li value=\"0\">0</li>\n  <li value=\"2\">2</li>\n  <li value=\"4\">4</li>\n  <li value=\"6\">6</li>\n  <li value=\"8\">8</li>\n  <li value=\"10\">10</li>\n</ol>\n```\n\n> **ProTip:** This syntax is for generating numbers from nothing. Don’t use it to iterate over an object, like so:\n>\n> ```marko\n> <!-- Inefficient code, do not copy -->\n> <ul>\n>   <for|i| from=0 to=(myArray.length - 1)>\n>     <li>${myArray[i]}</li>\n>   </for>\n> </ul>\n> ```\n>\n> Use [`<for of>`](#iterating-over-a-list) instead.\n\n## `<while>`\n\n> **Warning:** Using `<while>` is not recommended. Instead, replicate it with [an iterable and `<for>`](#iterating-over-a-list).\n>\n> In the future, Marko may restrict value mutation during rendering, for runtime optimizations.\n\nYou can repeat a chunk of markup _until a condition is met_ with the `while` tag:\n\n```marko\n$ let n = 0;\n\n<while(n < 4)>\n  <p>${n++}</p>\n</while>\n```\n\n…becomes:\n\n```html\n<p>0</p>\n<p>1</p>\n<p>2</p>\n<p>3</p>\n```\n\n## `<macro>`\n\nMacros create reusable markup fragments for later use in the same template they were defined in.\n\nThe `<macro>` tag defines a macro as a tag via the `name` attribute. For example, the following macro is registered as the `<greeting>` tag:\n\n```marko\n<macro name=\"greeting\">\n  <p>Welcome!</p>\n</macro>\n\n<greeting/>\n<greeting/>\n```\n\n…the output HTML would be:\n\n```html\n<p>Welcome!</p>\n<p>Welcome!</p>\n```\n\nMacros become more useful with [tag parameters](./syntax.md#parameters), allowing complex templates. In this next example, `<greeting>` can now receive `firstName` and `count` parameters from its parent:\n\n```marko\n<macro|{ firstName, count }| name=\"greeting\">\n  <p>Hello ${firstName}!\n    <output>You have ${count} new messages.</output>\n  </p>\n</macro>\n\n<greeting firstName=\"Frank\" count=20/>\n```\n\n…the output HTML would be:\n\n```html\n<p>\n  Hello Frank!\n  <output>You have 20 new messages.</output>\n</p>\n```\n\nMacros receive input like components do, including [a `renderBody` for provided body content](./body-content.md):\n\n```marko\n<macro|{ renderBody }| name=\"special-heading\">\n  <h1>\n    <${renderBody}/>!\n  </h1>\n</macro>\n\n<special-heading>\n  Hello\n</special-heading>\n```\n\n…the output HTML would be:\n\n```html\n<h1>Hello!</h1>\n```\n\n> **ProTip:** You can use a macro inside itself for recursive layouts, like displaying directory contents.\n\n## `<await>`\n\nThe `<await>` tag **renders markup asynchronously using a [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)**.\n\n- Its `<@then>` [attribute tag](./syntax.md#attribute-tag) displays when the Promise _resolves_, optionally receiving the resolved value as a [tag parameter](./syntax.md#parameters).\n- Its `<@catch>` attribute tag displays when the Promise _rejects_, optionally receiving the rejected value as a tag parameter.\n- Its optional `<@placeholder>` attribute tag displays while the Promise is pending.\n\n```marko\n$ const personPromise = new Promise((resolve, reject) => {\n  setTimeout(() => resolve({ name: 'Frank' }), 1000);\n});\n\n<await(personPromise) client-reorder=true>\n  <@placeholder>\n    <!-- Displays while promise is pending -->\n    <label>Loading…\n      <progress></progress>\n    </label>\n  </@placeholder>\n\n  <@then|person|>\n    <!-- Displays if promise resolves -->\n    <p>Hello ${person.name}!</p>\n  </@then>\n\n  <@catch|err|>\n    <!-- Displays if promise rejects -->\n    ${err.name} error: ${err.message}\n  </@catch>\n</await>\n```\n\nOptional attributes for `<await>`:\n\n|        Attribute | Type    | Description                                                                                                                                                                   |\n| ---------------: | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|        `timeout` | integer | An optional timeout. If reached, rejects the promise with a `TimeoutError`.                                                                                                   |\n|           `name` | string  | Improves debugging and ensures ordering with the `show-after` attribute.                                                                                                      |\n|     `show-after` | string  | Another `<await>` tag’s `name`. Use with `client-reorder` to ensure that the current `<await>` will always render alongside or after the named `<await>`.                     |\n| `client-reorder` | boolean | If true, anything after this `<await>` will be server-rendered before the Promise completes, then the fulfilled Promise’s result will be updated with client-side JavaScript. |\n\nRegardless of these attributes, the promise is executed as eagerly as possible. The attributes control how to coordinate rendering with the rest of the page:\n\n- `client-reorder` prevents `<await>` blocks from delaying the HTTP stream, at the expense of making their rendering rely on client-side JS. Useful for making non-critical page sections not block HTML streaming of important content.\n\n- Using `show-after` with `client-reorder` ensures that the current `<await>` block will always render simultaneously with or after the named `<await>`. Useful for cutting down on [layout shift](https://web.dev/debug-layout-shifts/). `<@placeholder>`s can help fine-tune the user experience while loading.\n\n- `timeout` is useful for limiting non-critical content from slowing down the rest of the page too much.\n\n> **Pro Tip**: When using `timeout`, you can distinguish between `TimeoutError`s and promise rejections by checking the error’s `name`:\n>\n> ```marko\n> <await(slowPromise) timeout=5000>\n>   <@then>Done</@then>\n>   <@catch|err|>\n>     <if(err.name === \"TimeoutError\")>\n>       Took too long to fetch the data!\n>     </if>\n>     <else>\n>       Promise failed with ${err.message}.\n>     </else>\n>   </@catch>\n> </await>\n> ```\n\n## `<include-text>`\n\n`<include-text>` inlines text files into a template, escaping HTML syntax characters (`<`, `\"`, etc.).\n\n```marko\n<include-text('./foo.txt')/>\n```\n\nIf you do not want escaping, use [`<include-html>`](#include-html) instead.\n\n## `<include-html>`\n\nLike `<include-text>`, `<include-html>` inlines the contents of a file. However, this tag **does _not_ escape** special HTML characters.\n\n```marko\n<include-html('./foo.html')/>\n```\n\n## `<html-comment>`\n\nMarko removes HTML comment tags from its output. But if you need comments in the output, that’s what `<html-comment>` is for:\n\n```marko\n<html-comment>[if IE]><script src=\"html-shiv.js\"></script><![endif]</html-comment>\n```\n\n…becomes:\n\n```html\n<!--[if IE]><script src=\"html-shiv.js\"></script><![endif]-->\n```\n"
  },
  {
    "path": "packages/runtime-class/docs/custom-tags.md",
    "content": "# Custom tags\n\nCustom tags allow you to break up your application UI into encapsulated, reusable components.\n\n## Your first custom tag\n\nLet's say we have a page with the following content:\n\n_page.marko_\n\n```marko\n<!doctype html>\n<html>\n<body>\n    <h1>Hello World!</h1>\n</body>\n</html>\n```\n\nHowever, this page is getting pretty complex and unmaintainable. Let's split out the content into a separate component. To do this, we'll create a `components/` folder and inside it a `hello.marko` file:\n\n_components/hello.marko_\n\n```marko\n<h1>Hello World!</h1>\n```\n\nMarko [automatically discovers](#how-tags-are-discovered) `.marko` files under a `components/` directory, so we can now use the `<hello>` tag in our page:\n\n_page.marko_\n\n```marko\n<!doctype html>\n<html>\n<body>\n    <hello/>\n</body>\n</html>\n```\n\nNow this `<hello>` tag can be used multiple times, and even on multiple pages. But what if we don't only want to say hello to the world? Let's pass some attributes.\n\n_page.marko_\n\n```marko\n<!doctype html>\n<html>\n<body>\n    <hello name=\"World\"/>\n</body>\n</html>\n```\n\nThe component will receive these attributes as `input`:\n\n_components/hello.marko_\n\n```marko\n<h1>Hello ${input.name}!</h1>\n```\n\nNice.\n\n## How tags are discovered\n\nMarko discovers components relative to the `.marko` file where a custom tag is used. From this file, Marko walks up directories until it finds a `components/` folder which contains a component matching the name of the custom tag. If it reaches the project root without finding anything, it will then check installed packages for the component.\n\nLet's take a look at an example directory structure to better understand this:\n\n```dir\ncomponents/\n    app-header.marko\n    app-footer.marko\npages/\n    about/\n        components/\n            team-members.marko\n        page.marko\n    home/\n        components/\n            home-banner.marko\n        page.marko\n```\n\nThe file `pages/home/page.marko` can use the following tags:\n\n- `<app-header>`\n- `<app-footer>`\n- `<home-banner>`\n\nAnd the file `pages/about/page.marko` can use the following tags:\n\n- `<app-header>`\n- `<app-footer>`\n- `<team-members>`\n\nThe home page can't see `<team-members>` and the about page can't see `<home-banner>`. By using nested `component/` directories, we've scoped our page-specific components to their respective pages.\n\n## Tag directories\n\nIn addition to a Marko template, the children of `components/` can be a directory with an `index.marko` template:\n\n```dir\ncomponents/\n    app-header/\n        index.marko\n        logo.png\n        style.css\n    app-footer/\n        index.marko\n```\n\nOr a directory with a template whose name matches its parent directory:\n\n```dir\ncomponents/\n    app-header/\n        app-header.marko\n        app-header.style.css\n        logo.png\n    app-footer/\n        app-footer.marko\n```\n\nThis allows you to create components that have other files associated with them and keep those files together in the directory structure.\n\n> **ProTip:**\n> You can take advantage of nested `components/` directories to create \"subcomponents\" that are only available to the component that contains them.\n>\n> ```dir\n> components/\n>     app-header/\n>         components/\n>             navigation.marko\n>             user-info.marko\n>         app-header.marko\n>     app-footer/\n>         app-footer.marko\n> ```\n\n## Using tags from npm\n\nTo use [tags from npm](https://www.npmjs.com/search?q=keywords%3Amarko%20components), ensure that the package is installed and listed in your `package.json` dependencies:\n\n```\nnpm install --save @marko-tags/match-media\n```\n\nMarko discovers tags from packages defined in your `package.json`, so you can start using them right away:\n\n```marko\n<div>\n    <match-media|{ mobile }| mobile=\"max-width:30em\">\n        <!-- nice -->\n    </match-media>\n</div>\n```\n\n## Publishing tags to npm\n\nWe saw above that tags from npm are automatically discovered. In order to make this work, your package must include a [`marko.json`](./marko-json.md) at the root.\n\n_marko.json_\n\n```json\n{\n  \"tags-dir\": \"./dist/components\"\n}\n```\n\nThis example file tells Marko to expose all components directly under the `dist/components/` directory to the application using your package.\n\nWe recommend adding the `marko` and `components` keywords to your `package.json` so others can find your components. Then `npm publish`!\n\n# Macros\n\nThe [`<macro>`](./core-tags.md#macro) tag allows you to create custom tags in the same file that they are used in.\n\n```marko\n<macro|{ name }| name=\"welcome-message\">\n    <h1>Hello ${name}!</h1>\n</macro>\n\n<welcome-message name=\"Patrick\"/>\n<welcome-message name=\"Austin\"/>\n```\n\n# From Variables\n\nIf no other tag would be discovered Marko will check for an in scope variable that matches the tag name.\n\n```marko\nimport SomeTag from \"./somewhere.marko\"\n\n$ const { renderBody } = input;\n$ const MyTag = input.href ? \"a\" : \"button\";\n\n<SomeTag/>\n<MyTag/>\n<renderBody/>\n```\n"
  },
  {
    "path": "packages/runtime-class/docs/editor-plugins.md",
    "content": "# Editor Plugins\n\n## Visual Studio Code\n\n[Documentation](https://marketplace.visualstudio.com/items?itemName=Marko-JS.marko-vscode)\n\n- Syntax highlighting\n- Tag matching\n- Tag, attribute and css autocompletion\n- Hyperclick (clickable tags and attributes)\n- Surfaces errors within the templates.\n- Prettyprinting ([marko-prettyprint](https://github.com/marko-js/marko-prettyprint) is used internally)\n\n## Atom\n\n[Documentation](https://atom.io/packages/language-marko)\n\n- Syntax highlighting\n- Tag matching\n- Tag and attribute autocompletion\n- Code snippets\n- Hyperclick (clickable tags and attributes)\n- Prettyprinting ([marko-prettyprint](https://github.com/marko-js/marko-prettyprint) is used internally)\n\n## Sublime\n\n[Documentation](https://github.com/merwan7/sublime-marko)\n\n- Syntax highlighting\n\n## WebStorm\n\n[Documentation](https://github.com/marko-js/marko-tmbundle)\n\n- Syntax highlighting\n\n## TextMate\n\n[Documentation](https://github.com/marko-js/marko-tmbundle)\n\n- Syntax highlighting\n\n## CodeMirror\n\n[codemirror-atom-modes](https://github.com/patrick-steele-idem/codemirror-atom-modes) + [atom-language-marko](https://github.com/marko-js/atom-language-marko)\n"
  },
  {
    "path": "packages/runtime-class/docs/events.md",
    "content": "# Events\n\nMarko’s event API supports:\n\n- [Browser events](https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model/Events) on native tags\n- Custom events from [custom tags](./custom-tags.md)\n\nNote that **you can’t mix event targets and event types**: custom tags can only listen for custom events, and native tags can only listen for native events.\n\n## Listening to events\n\nBoth kinds of events are received with an `on-*` attribute and the [attribute arguments syntax](./syntax.md#arguments):\n\n```marko\n<input type=\"checkbox\"\n  on-change(event => console.info(`Checked? ${event.target.checked}`))\n/>\n```\n\nThe [first argument for the attribute can be a function](#function-handler), or [a string matching a method name](#method-handler) on the [component’s `class` declaration](./class-components.md).\n\n### Function handler\n\nIf you provide a function as the first argument of the `on-*` attribute, the function is called whenever the event fires, like standard event listeners.\n\nBelow we use the [`static` prefix](./syntax.md#static-javascript) to define a function, then use it as a `click` handler:\n\n```marko\nstatic function handleClick(event) {\n  event.preventDefault();\n  console.log(\"Clicked!\");\n}\n\n<button on-click(handleClick)>\n  Log click\n</button>\n```\n\nIn the above example, any time the `<button>` is clicked the `handleClick` function is called.\n\nYou can also use an inline arrow function:\n\n```marko\n<button on-click(() => alert(\"Clicked! 🎉\"))>\n  Celebrate click\n</button>\n```\n\n…or anything that evaluates to a function:\n\n```marko\n$ const handler = (\n  input.dontBreakMyApp ?\n    () => console.error(\"Clicked!\") :\n    () => { throw Error(\"Clicked!\") }\n);\n\n<button on-click(handler)>\n  Do not click\n</button>\n```\n\n### Method handler\n\nWhen a string is the first argument, Marko calls a matching method on the component's `class`.\n\n```marko\nclass {\n  logChange(newTab) {\n    console.log(`changed to: ${newTab}`);\n  }\n}\n\n<my-tabs on-switch-tab(\"logChange\")>\n  …\n</my-tabs>\n```\n\nWhen `<my-tabs>` emits the `switch-tab` event, it will call its `logChange` method.\n\nWithin the handler you can access the current component instance, read data, emit events, update state, etc.\n\n### Binding additional arguments\n\nArguments after the handler are prepended when the handler is called:\n\n```marko\nstatic function removeFriend(friendId, event) {\n  event.preventDefault();\n  window.myAPI.unfriend(friendId);\n}\n\n<for|friend| of=input.friends>\n  <button on-click(removeFriend, friend.id)>\n    Unfriend ${friend.name}\n  </button>\n</for>\n```\n\nHere we share the logic for `removeFriend()` with each `friend` in the `friends` array. When the `<button>` is clicked, the `id` of the removed `friend` is passed to the `removeFriend()`, handler followed by the DOM `click` event.\n\n## Emitting custom events\n\nThe recommended way for a [custom tag](./custom-tags.md) to communicate with its parent is through **custom events**.\n\nAll components implement a [Node.js-style event emitter](https://nodejs.org/api/events.html#events_class_eventemitter) to send events to parent components.\n\n_email-input.marko_\n\n```marko\nclass {\n  handleChange(event) {\n    if (event.target.validity.valid) {\n      // Only emit email-changes if they are valid.\n      this.emit(\"email-change\", { email: event.target.value });\n    }\n  }\n}\n\n<input type=\"email\" name=input.name on-change(\"handleChange\")/>\n```\n\nThe above code listens to native `change` events from the `<input>` element, and then emits its own `email-change` event if the change was valid.\n\n```marko\n<form>\n  <email-input name=\"email\" on-email-change(\"...\")/>\n</form>\n```\n\n> **Note:** Events are not received as `input`; you cannot access `input.onEmailChange`. Instead, they set up subscriptions.\n"
  },
  {
    "path": "packages/runtime-class/docs/express.md",
    "content": "# Marko + Express\n\n## Quick Start\n\n```sh\nnpm init marko -- --template vite-express\n# Or `npx create-marko --template vite-express`\n```\n\nSee [Marko’s example projects](https://github.com/marko-js/examples) for working [Express](https://expressjs.com/) integration code, such as:\n\n- [`examples/vite-express`](https://github.com/marko-js/examples/tree/master/examples/vite-express)\n- [`examples/rollup-express`](https://github.com/marko-js/examples/tree/master/examples/rollup-express)\n- [`examples/webpack-express`](https://github.com/marko-js/examples/tree/master/examples/webpack-express)\n\nBut if you want to do things the hard way…\n\n## Doing things the hard way\n\nFirst, install Marko, Express, and the glue to hold them together:\n\n```sh\nnpm install marko express @marko/express --save\n```\n\n### Skip the view engine\n\nExpress’s builtin view engine may be asynchronous, but it doesn’t support streaming — see [Rediscovering Progressive HTML Rendering](https://tech.ebayinc.com/engineering/async-fragments-rediscovering-progressive-html-rendering-with-marko/) for why that’s important. So instead, we [bypass Express’s view engine](https://strongloop.com/strongblog/bypassing-express-view-rendering-for-speed-and-modularity/) to use `@marko/express` instead.\n\n[The `@marko/express` package](https://www.npmjs.com/package/@marko/express) adds a `res.marko()` method to [Express’s response object](https://expressjs.com/en/api.html#res). This method works like [`res.render()`](https://expressjs.com/en/api.html#res.render), but without the restrictions of Express’s view engine, letting you take full advantage of Marko’s streaming and modular template organization.\n\n> **ProTip**: By using `res.marko()`, properties from [`app.locals`](https://expressjs.com/en/api.html#app.locals) and [`res.locals`](https://expressjs.com/en/api.html#res.locals) are automatically [available on `$global`](https://markojs.com/docs/rendering/#global-data).\n\n```js\nimport express from \"express\";\nimport markoPlugin from \"@marko/express\";\nimport template from \"./template.marko\";\n\nconst app = express();\napp.use(markoPlugin()); // Enables `res.marko(template, input)`\n\napp.get(\"/\", function (req, res) {\n  res.marko(template, {\n    name: \"Frank\",\n    count: 30,\n    colors: [\"red\", \"green\", \"blue\"],\n  });\n});\n\napp.listen(8080);\n```\n\n> **Note**: Older versions of `@marko/express` used to also attach Express’s `app`, `req`, and `res` objects onto `$global`. This meant uncontrolled network data could cause new and exciting surprises in your app code. Nowadays we recommend explicitly accessing the specific pieces of the HTTP exchange you’re interested in, like this:\n>\n> ```js\n> app.get(\"/\", function (req, res) {\n>   res.marko(template, {\n>     params: req.params,\n>     submitted: req.method === \"POST\" && req.body,\n>   });\n> });\n> ```\n\n### BYOB (Bring Your Own Bundler)\n\nMost of Marko’s API requires a bundler: the example code above assumes that `.marko` files can be `import`ed in your environment. [Check out Marko’s supported bundlers](https://markojs.com/docs/bundler-integrations-overview/) to see what works best for you.\n"
  },
  {
    "path": "packages/runtime-class/docs/fastify.md",
    "content": "# Marko + Fastify\n\n## Quick Start\n\n```terminal\nnpm init marko -- --template vite-fastify\n```\n\nSee the [the fastify sample](https://github.com/marko-js/examples/tree/master/examples/vite-fastify)\nproject for a working example.\n\n## From Scratch\n\nFirst install Marko and the fastify related dependencies:\n\n```terminal\nnpm install marko @marko/fastify fastify --save\n```\n\n### Usage\n\nThe [`@marko/fastify`](https://github.com/marko-js/fastify/) adds a `reply.marko` decorator to the `reply` object. This function allows us to pass in a Marko template and supports Marko's streaming and modular approach to templates.\n\nBy using `reply.marko` you'll automatically have access to `app.locals`, and `reply.locals` from within your Marko template and custom tags. These values are added to `$global`.\n\n```javascript\nimport fastify from \"fastify\";\nimport markoPlugin from \"@marko/fastify\";\nimport Template from \"./template.marko\";\n\nconst app = fastify();\n\napp.register(markoPlugin);\n\napp.get(\"/\", (request, reply) => {\n  // Streams Marko template into the response.\n  // Forwards errors into fa error handler.\n  reply.marko(Template, { hello: \"world\" });\n});\n\nawait fastify.listen(3000);\n```\n\n### Global Outputs\n\nWe can add global outputs from the server side using the reply object or fastify instance.\n\n```javascript\nreply.locals.newProperty = \"Your value\";\n```\n\nTo use this in marko components we just need to refer out.global\n\n```marko\n$ const { newProperty } = $global;\n```\n\nTo know more about sending the data to the browser checkout:\n\n### [Sending global data to browsers](https://markojs.com/docs/rendering/#sending-global-data-to-browsers)\n\n### BYOB (Bring your own bundler)\n\nFor the large portion of Marko's API a bundler is required. The example code above assumes that Marko templates can be loaded in your environment.\nMarko supports a number of bundlers, [take a look through our supported bundlers](https://markojs.com/docs/bundler-integrations-overview/) and pick what works best for you.\n"
  },
  {
    "path": "packages/runtime-class/docs/getting-started.md",
    "content": "# Getting started\n\n## Setup\n\n### Marko Run (Recommended)\n\n[Marko Run](https://github.com/marko-js/run) makes it easy to get started with little to no config and is the recommended starting point for a new Marko project.\n\nTo set up your project:\n\n1. `npm init marko -- -t basic`\n2. `cd ./<PROJECT_NAME>`\n3. `npm run dev`\n\nOpen `src/routes/_index/+page.marko` in your editor to change the index page. See the [routing documentation](https://github.com/marko-js/run#file-based-routing) to learn how to add additional pages to your project.\n\n### Other setups\n\nIf you just want to test out Marko in your browser, use the [Try Online](https://markojs.com/try-online) feature. You can open it in another tab and follow along. For other setups, check out the [Installation](./installing.md) page.\n\n## Hello world\n\nMarko makes it easy to represent your UI using a [syntax](./syntax.md) that is like HTML:\n\n_hello.marko_\n\n```marko\n<h1>Hello World</h1>\n```\n\nIn fact, Marko is so much like HTML, that you can use it as a replacement for a templating language like handlebars, mustache, or pug:\n\n_template.marko_\n\n```marko\n<!doctype html>\n<html>\n<head>\n    <title>Hello World</title>\n</head>\n<body>\n    <h1>Hello World</h1>\n</body>\n</html>\n```\n\nHowever, Marko is much more than a templating language. It's a language that allows you to declaratively build an application by describing how the application view changes over time and in response to user actions.\n\nIn the browser, when the data representing your UI changes, Marko will automatically and efficiently update the DOM to reflect the changes.\n\n## A simple component\n\nLet's say we want to perform an action once a `<button>` is clicked:\n\n_button.marko_\n\n```marko\n<button>Click me!</button>\n```\n\nMarko makes this really easy, allowing you to define a `class` for a component right in the `.marko` view and call methods of that class with `on-` attributes:\n\n_button.marko_\n\n```marko\nclass {\n    sayHi() {\n        alert(\"Hi!\");\n    }\n}\n\n<button on-click(\"sayHi\")>Click me!</button>\n```\n\n### Adding state\n\nAlerting when a button is clicked is great, but what about updating your UI in response to an action? Marko's stateful components make this easy. All you need to do is set `this.state` from inside your component's class. This makes a new `state` variable available to your view. When a value in `this.state` is changed, the view will automatically re-render and only update the part of the DOM that changed.\n\n_counter.marko_\n\n```marko\nclass {\n    onCreate() {\n        this.state = {\n            count: 0\n        };\n    }\n    increment() {\n        this.state.count++;\n    }\n}\n\n<div>The current count is ${state.count}</div>\n<button on-click(\"increment\")>Click me!</button>\n```\n"
  },
  {
    "path": "packages/runtime-class/docs/http.md",
    "content": "# Marko + HTTP Server\n\nSee the [the http sample](https://github.com/marko-js/examples/tree/master/examples/vite-http)\nproject for a working example.\n\n## Usage\n\n```js\nimport http from \"http\";\nimport Template from \"./index.marko\";\n\nconst port = 8080;\nconst server = http.createServer();\n\nserver.on(\"request\", (req, res) => {\n  Template.render(\n    {\n      name: \"Frank\",\n      count: 30,\n      colors: [\"red\", \"green\", \"blue\"],\n    },\n    res,\n  );\n});\n\nserver.listen(port, () => {\n  console.log(`Successfully started server on port ${port}`);\n});\n```\n\n### BYOB (Bring your own bundler)\n\nFor the large portion of Marko's API a bundler is required. The example code above assumes that Marko templates can be loaded in your environment.\nMarko supports a number of bundlers, [take a look through our supported bundlers](https://markojs.com/docs/bundler-integrations-overview/) and pick what works best for you.\n"
  },
  {
    "path": "packages/runtime-class/docs/installing.md",
    "content": "# Installation\n\n## Trying out Marko\n\nIf you just want to play around with Marko in the browser, head on over to our [Try Online](https://markojs.com/try-online) feature. You'll be able to develop a Marko application right in your browser.\n\n## Creating new apps (Recommended)\n\nIf you're starting from scratch, you can use Marko's [CLI](https://github.com/marko-js/cli) commands to quickly create a starter app:\n\n```bash\nnpm init marko\n```\n\nThis will use an interactive [CLI](https://github.com/marko-js/cli) to automatically create a project for you using the pre-made starter template of your choosing. The `basic` template is the most minimal and the easiest way to get started. It uses our recommended app framework [Marko Run](https://github.com/marko-js/run) that handles building, bundling, and serving your web application. These projects are config-free with built-in file based routing and automatic code reloading.\n\n## Custom Bundling\n\nMarko relies on JavaScript bundlers to package your code on both the client and the server. This is because Marko's client and server bundling works closely together to optimize the smallest client bundles and handle shared assets properly.\n\nUsing the CLI is still the easiest way to get started even when you want to get your hands dirty tweaking every last part of your config files. Marko currently supports Webpack, Lasso, and Rollup.\n\n### Webpack\n\n[Webpack Integration Docs](https://markojs.com/docs/webpack/)\n\n[Marko Webpack Plugin](https://github.com/marko-js/webpack)\n\n[Webpack Example](https://github.com/marko-js/examples/tree/master/examples/webpack-express)\n\nCLI Command: `npx @marko/create --template webpack-express`\n\n### Lasso\n\n[Lasso Integration Docs](https://markojs.com/docs/lasso/)\n\n[Marko Lasso Plugin](https://github.com/lasso-js/lasso-marko)\n\n[Lasso Example](https://github.com/marko-js/examples/tree/master/examples/lasso-express)\n\nCLI Command: `npx @marko/create --template lasso-express`\n\n### Rollup\n\n[Rollup Integration Docs](https://markojs.com/docs/rollup/)\n\n[Marko Rollup Plugin](https://github.com/marko-js/rollup)\n\n<!-- [Rollup Example](https://github.com/marko-js/examples/tree/master/examples/rollup)\n\nCLI Command: `npx @marko/create --template rollup` -->\n"
  },
  {
    "path": "packages/runtime-class/docs/koa.md",
    "content": "# Marko + Koa\n\nSee the [the koa sample](https://github.com/marko-js/examples/tree/master/examples/vite-koa)\nproject for a working example.\n\n## Installation\n\n```terminal\nnpm install koa marko --save\n```\n\n## Usage\n\n```javascript\nimport Koa from \"koa\";\nimport Template from \"./index.marko\";\n\nconst app = new Koa();\n\napp.use((ctx, next) => {\n  ctx.type = \"html\";\n  ctx.body = Template.stream({\n    name: \"Frank\",\n    count: 30,\n    colors: [\"red\", \"green\", \"blue\"],\n  });\n});\n\napp.listen(8080);\n```\n\n### BYOB (Bring your own bundler)\n\nFor the large portion of Marko's API a bundler is required. The example code above assumes that Marko templates can be loaded in your environment.\nMarko supports a number of bundlers, [take a look through our supported bundlers](https://markojs.com/docs/bundler-integrations-overview/) and pick what works best for you.\n"
  },
  {
    "path": "packages/runtime-class/docs/lasso.md",
    "content": "# Marko + Lasso\n\nThe [lasso-marko](https://github.com/lasso-js/lasso-marko) plugin for [Lasso.js](https://github.com/lasso-js/lasso) will automatically compile all imported Marko templates during bundling. In addition, the `lasso-marko` plugin will automatically bundle any template dependencies (including required CSS).\n\nLasso.js provides Marko custom tags for injecting JavaScript and CSS bundles, images and other resources.\n\nThe sample [lasso-express](https://github.com/marko-js/examples/tree/master/examples/lasso-express) app demonstrates how to build a production-ready web application using Marko and Lasso. Run `npx @marko/create --template lasso-express` to use this sample as a starting point for a new app.\n\n## Installation\n\n```\nnpm install lasso-marko --save\n```\n\n## Registering the plugin\n\n```js\nrequire('lasso').configure({\n    \"plugins\": [\n        ...\n        \"lasso-marko\"\n    ]\n    ...\n});\n```\n\n## Lasso custom tags\n\nTo inject the required JavaScript and CSS into the page you will want to use the `<lasso-page>`, `<lasso-head>` and `<lasso-body>` tags.\n\nIf you are using lasso@^3 (latest), make sure to install the [lasso-marko-taglib](https://github.com/lasso-js/lasso-marko-taglib), so that you can use the lasso custom tags.\n\n```\nnpm install lasso-marko\nnpm install @lasso/marko-taglib\n```\n\nAfter installing, the lasso custom tags can be used in your templates:\n\n```html\n<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <title>Marko + Lasso</title>\n    <lasso-head />\n  </head>\n  <body>\n    <lasso-body />\n  </body>\n</html>\n```\n\nLasso.js will automatically bundle up transitive dependencies by building and walking a dependency graph.\n\n## Client-side rendering\n\nMarko templates can be imported and rendered by any JavaScript module. The code below shows how to render a top-level UI component and have it be mounted to the DOM as a child `document.body`:\n\n_client.js_\n\n<!-- prettier-ignore -->\n```js\nrequire(\"./components/app/index.marko\")\n  .renderSync({})\n  .appendTo(document.body);\n```\n\nWhen Lasso.js bundles up the code above it will automatically bundle up the required `./components/app/index.marko` file.\n\n## Server-side rendering\n\nIf you are rendering the initial UI on the server then it is necessary to make sure that all UI components are bundled and sent to the browser so that UI components can be mounted in the browser. For example:\n\n_about-me/index.marko_\n\n```marko\n<!DOCTYPE html>\n<html lang=\"en\">\n    <head>\n        <meta charset=\"UTF-8\">\n        <title>Marko + Lasso</title>\n\n        <!-- CSS will be inserted here -->\n        <lasso-head/>\n    </head>\n    <body>\n        <!-- Top-level UI component: -->\n        <app/>\n\n        <!-- JS will be inserted here -->\n        <lasso-body/>\n    </body>\n</html>\n```\n\n## Browser refresh\n\n[browser-refresh](https://github.com/patrick-steele-idem/browser-refresh) is recommended in development for instant page refreshes and hot reloading of Marko templates, styles and other resources. `browser-refresh` works well with Lasso and Marko and is very easy to use as a drop-in replacement for `node`:\n\n```bash\nbrowser-refresh server.js\n```\n\n## Lasso package types commonly used with Marko\n\nFor many use cases, the combination of `lasso-marko` and `@lasso/marko-taglib` is sufficient to render and bundle components without the need for explicit `browser.json` files. For more advanced use cases, the following bundle types may be defined in a `browser.json` for Lasso.\n\n#### `marko-dependencies` _(provided by `lasso-marko`)_\n\nIncludes all the dependencies needed by template and the code to register all components that would be rendered by the template. It does not automatically initialize the component, so is most useful if you need to initialize components manually.\n\n```json\n{\n  \"type\": \"marko-dependencies\",\n  \"path\": \"src/ui-modules/outdated-browser-banner/index.marko\"\n}\n```\n\n**Note:** To initialize the server rendered components, there are 2 steps:\n\n**Step 1:** Manually _retrieve_ server rendered components, shipped via `marko-dependencies`.\n\nTo retrieve the list of server rendered components, do:\n\n```javascript\ntemplate.render(data, (err, output) => {\n  const renderedComponentsList =\n    require(\"marko/components\").getRenderedComponents(output.out);\n  const html = output.getOutput();\n});\nres.json({\n  renderedComponentsList,\n  html,\n});\n```\n\n**Step 2:** Manually _initialize_ server rendered components, shipped via `marko-dependencies`.\n\nTo initialize the list of server rendered components, do:\n\n```javascript\n// from the response received, retrieve as\nrequire(\"marko/components\").init(response.renderedComponentsList);\n```\n\n**Note:** Ensure Step 2 is inside a DOM-ready wrapper, for the legacy widgets layer to load (if there are widgets built out of Marko 3, that is being used inside a Marko 4 component.)\n\n#### `marko-hydrate` _(provided by `lasso-marko`)_\n\nIncludes all the dependencies needed by template and the code to register all components that would be rendered by the template. This also includes the code to initialize the rendered components. Including this bundle on the page will automatically hydrate server rendered components.\n\n```json\n{\n  \"type\": \"marko-hydrate\",\n  \"path\": \"src/ui-modules/outdated-browser-banner/index.marko\"\n}\n```\n\n**Note:** `marko-hydrate` will initialize the component if its defined on the global `window.$components` which is inserted by `Marko` when it sees a `<body>` tag. Else, if you are just rendering out and lasso-ing the a portion of a page with a set of components, include `<init-components/>` at the end of the associated `template.marko` file that builds out the page fragment.\n\n#### `package`\n\nA collection of dependencies. `browser.json` is the most common package type.\nIt could be used to point to another `browser.json` from within one component's `browser.json`.\nTypically also used when the dependencies of the referred `browser.json` have to be packaged inline.\n\n```json\n{\n  \"type\": \"package\",\n  \"path\": \"src/ui-modules/show-diag/browser.json\"\n}\n```\n\n#### `require`\n\nIf a javascript file has to be wrapped over for its common JS syntax, to a browser understandable format.\n\n```json\n{\n  \"type\": \"require\",\n  \"path\": \"src/ui-modules/dynamic-module-loader/dynamic-init-client.js\"\n}\n```\n\n#### `require` and `run`\n\nIf a javascript file has to be wrapped over for its common JS syntax, to a browser understandable format and be executed immediately.\n\n```json\n{\n  \"run\": true,\n  \"type\": \"require\",\n  \"path\": \"src/ui-modules/my-module/init.js\"\n}\n```\n"
  },
  {
    "path": "packages/runtime-class/docs/marko-5-upgrade.md",
    "content": "# Upgrading to Marko 5\n\n## Step 0 - Ensure you're in a working state on the latest version of Marko 4\n\nBefore we start, you'll want to make sure that you are already on the latest `4.x` release of `marko`.\n\n```bash\n# Upgrade using yarn\nyarn upgrade marko@^4\n```\n\n```bash\n# Upgrade using npm\nnpm install marko@^4\n```\n\n> [!Warning]\n> Do _not_ run `npm install marko` (without the `@^4`). This will put you on Marko 5 and we're not quite there yet.\n\n> [!Tip]\n> If upgrading from Marko 3 you may want to reference [this guide](https://marko-v4.github.io/docs/marko-4-upgrade/).\n\nRun your application and tests to ensure your project is in a working state. There's little worse than finding an issue after you've started the upgrade process only to figure out the issue existed beforehand.\n\n## Step 1 - Upgrade Marko & Dependencies\n\n**TL;DR**: Paste & run this random shell script. It's safe. Trust us.\n\n```bash\n# Update Marko, and related ecosystem dependencies\nnpx -y npm-check-updates -u \\\n  marko \\\n  `# for webpack projects` \\\n  @marko/webpack \\\n  `# for lasso projects` \\\n  lasso lasso-marko @lasso/marko-taglib \\\n  `# for jest test runner` \\\n  @marko/jest \\\n  `# for projects with v3 widgets` \\\n  marko-widgets\n\n# Install @marko/compat-v4 unless `marko-widgets` is already installed\ngrep -q \"marko-widgets\" package.json || { [[ -f yarn.lock ]] && yarn add @marko/compat-v4 || npm install @marko/compat-v4; }\n[[ -f yarn.lock ]] && npx -y yarn-deduplicate && yarn\n[[ -f yarn.lock ]] || npm i\n```\n\nThis script automates the following steps for you:\n\n- Install the compat package\n  - `marko-widgets` if using Marko 3's Widgets\n  - `@marko/compat-v4` if not using Widgets\n- Update `marko` to 5.x\n- Update any ecosystem packages used by your app (lasso, webpack, jest, etc)\n\n> [!Note]\n> Check your `package.json`. If you have other third-party Marko packages not covered by the script, you may need to update them as well.\n\nYour application should continue to work. Run your tests to ensure everything is working. Congratulations! You've upgraded to Marko 5.\n"
  },
  {
    "path": "packages/runtime-class/docs/marko-json.md",
    "content": "# `marko.json` & `marko-tag.json`\n\nMarko supports configuration files for validation, enabling experimental features, and custom paths for component files.\n\nThese configuration files are automatically found with [the same discovery mechanism as custom tags](./custom-tags.md#how-tags-are-discovered).\n\nThere are 2 types of configuration files:\n\n1. `marko.json` describes an entire suite of components.\n2. `marko-tag.json` describes a single component.\n\n## Single component definition\n\n`marko-tag.json` configures a single component. It’s automatically discovered if placed inside a [tag directory](./custom-tags.md#tag-directories).\n\n### Options\n\n```js\n{\n  \"html\": true, // Treat as a native HTML tag, not a custom tag.\n  \"htmlType\": \"svg\", // Optimizes for specific types of native tags (currently only `svg` and `html`).\n  \"open-tag-only\": true, // Forbids passing body content to this tag.\n  \"featureFlags\": [ \"feature-a\" ], // Enable beta features by passing feature flags.\n  \"nested-tags\": { // This section configures attribute tags.\n    \"tab\": {\n      \"target-property\": \"tabs\", // Puts `<@tab>` tags into `input.tabs`.\n      \"is-repeated\": true,  // Allow more than one nested `<@tab>`.\n      \"attributes\": {\n        // Same as the “Attributes” section below.\n      }\n    }\n  }\n}\n```\n\n### Attributes\n\nOne commonly-used feature of this config file is compile-time checks for attributes.\n\n```js\n{\n  \"attributes\": {\n    \"heading\": \"string\"\n  }\n}\n```\n\nThe above code ensures that the `heading` attribute is the _only_ attribute supplied to this tag.\n\nThe `string` value is used as documentation for the custom tag. It may be picked up by tooling, like Marko’s editor plugins, to provide hints to the user.\n\nThe recommended list of attribute types are as follows:\n\n- `expression` (any JavaScript expression)\n- `string`\n- `number`\n- `boolean`\n- `regexp`\n- `date`\n- `object`\n- `array`\n- `function`\n\nYou can also provide an object for an attribute definition’s value for additional options:\n\n```js\n{\n  \"attributes\": {\n    \"heading\": {\n      \"type\": \"string\", // Same as setting \"string\" above.\n      \"default-value\": 0, // The attribute will default to this value.\n      \"required\": true, // Error during compilation if this attribute is undefined. (Mutually exclusive with \"default-value\"\n      \"preserve-name\": true, // By default component attributes are camelCased; this disables that feature.\n      \"remove-dashes\": true, // By default native tag attributes are dash-cased; this disables that feature.\n\n      // The following attributes do nothing, but are picked up by tooling.\n      \"deprecated\": true,\n      \"description\": \"The component’s heading text\" // Describes the attribute’s purpose.\n    }\n  }\n}\n```\n\nWe can also describe a _pattern_ of attributes to match a definition:\n\n```js\n{\n    \"attributes\": {\n        \"data-*\": {\n          \"type\": \"string\",\n          \"pattern\": true\n        }\n    }\n}\n```\n\nIn the above, all attributes prefixed with `data-` are configured to be a `string`.\n\n> **Note:** Future Marko versions will describe these definitions/types in the component itself, reducing the need for this configuration file.\n\n### Paths\n\nThere are several options that override the default discovery of component files, such as the template.\n\nTypically, you should let Marko find these files automatically, but here is a reference in case you encounter these settings in the wild.\n\n```javascript\n{\n  \"template\": \"./template.marko\", // Custom path to the `.marko` template.\n  \"renderer\": \"./renderer.js\", // Custom path to the `renderer.js` file.\n\n  // Compiler file hooks\n  \"parse\": \"./parse.js\", // Used to augment parsing.\n  \"migrate\": \"./migrate.js\", // Used for migrating deprecated features.\n  \"transform\": \"./transform.js\", // Used to modify the AST before generating it.\n  \"analyze\": \"./analyze.js\" // Used to analyze metadata the entire ast before beginning to translate it.\n  \"translate\": \"./translate.js\" // Used to generate custom JS.\n}\n```\n\nFor more information about the compiler hooks [jump over here](./compiler.md#hooks).\n\n## Tag library definition\n\nAlong with configuring a single component, you can use a `marko.json` file to configure an _entire library of components_.\n\nSimilar to [`marko-tag.json`](#single-component-definition), this file is discovered if placed within a [tag directory](./custom-tags.md#tag-directories). It will also be discovered at the root directory of a project, or [in a `node_module` package](./custom-tags.md#publishing-tags-to-npm).\n\n### Options\n\n```js\n{\n  \"taglib-id\": \"my-custom-tag-library\", // Names the component library, for better errors.\n  \"exports\": \"./dist\", // Where to export the compiled components.\n  \"tags-dir\": \"./ui-modules\", // What directory to crawl to autodiscover components. Default:`./components/`\n  \"taglib-imports\": [\"./some-folder/marko.json\", \"./other-folder/marko.json\"], // Creates a _combined_ tag library by referencing others.\n\n  \"tags\": { // Definitions for individual tags.\n    \"my-tag\": {\n      // Same options as “marko-tag.json”.\n    }\n  },\n\n  \"attributes\": {\n    // Defines attributes on all tags.\n    // Options are the same as the “attributes” section in “marko-tag.json”.\n  },\n\n  // Compiler file hooks (run on all templates)\n  \"migrator\": \"./migrator.js\", // Hooks into the migration stage for migrating deprecated features.\n  \"transformer\": \"./transformer.js\", // Used to modify the AST before generating it.\n  \"text-transformer\": \"./text-transformer.js\", // Used to transform all static text in the template.\n}\n```\n\n> **⚠️ Note:** Compiler hooks are currently undocumented: avoid using them. The compiler API is overhauled in Marko 5, and will be documented once that transition is complete.\n\n## Shorthands\n\nBoth configuration files support _shorthands_ for defining `tags` and `attributes`. For example, take this `marko.json` file:\n\n_marko.json_\n\n```js\n{\n  \"taglib-id\": \"my-custom-tag-library\",\n  \"tags\": {\n    \"my-layout\": {\n      \"attributes\": {\n        \"name\": \"string\",\n        \"age\": \"number\"\n      },\n      \"nested-tags\": {\n        \"heading\": {\n          \"attributes\": {\n            \"color\": \"string\"\n          }\n        },\n        \"body\": {\n          \"attributes\": {\n            \"color\": \"string\"\n          }\n        }\n      }\n    }\n  }\n}\n```\n\nAs a shorthand, anywhere `tags` or `nested-tags` is used, you can remove the outer object and wrap the individual tags in `<angle-brackets>`.\n\nFor `attributes`, you can remove the outer object and prefix the attributes with an `@`.\n\nThe above example using the shorthand syntax would become:\n\n_marko.json_\n\n```js\n{\n  \"taglib-id\": \"my-custom-tag-library\",\n  \"<my-layout>\": {\n    \"@name\": \"string\",\n    \"@age\": \"number\",\n    \"<heading>\": {\n      \"@color\": \"string\"\n    },\n    \"<body>\": {\n      \"@color\": \"string\"\n    }\n  }\n}\n```\n\nFor `nested-tags`, there is also a shorthand for `is-repeated` (a postfix of `[]`) and `target-property` (a prefix of `@newName`):\n\n_marko.json_\n\n```javascript\n{\n  \"<my-layout>\": {\n    \"@sections <section>[]\": {\n      \"@color\": \"string\"\n    }\n  }\n}\n```\n\nIs equivalent to:\n\n_marko.json_\n\n```javascript\n{\n  \"tags\": {\n    \"my-layout\": {\n      \"nested-tags\": {\n        \"section\": {\n          \"target-property\": \"sections\",\n          \"is-repeated\": true,\n          \"attributes\": {\n            \"color\": \"string\"\n          }\n        }\n      }\n    }\n  }\n}\n```\n"
  },
  {
    "path": "packages/runtime-class/docs/marko-vs-react.md",
    "content": "# Marko vs React: An In-depth Look\n\n<a href=\"https://hackernoon.com/marko-vs-react-an-in-depth-look-767de0a5f9a6\">\n  <img src=\"https://cdn-images-1.medium.com/max/2000/1*4BP6tPQtwImj6_QseeybwQ.png\" alt=\"Marko logo\" width=\"100%\" />\n</a><br />\n\n> This article was published March 2017. Both frameworks have gone through several updates since. You can find the original [\"Marko vs React: An In-depth Look\" article here](https://hackernoon.com/marko-vs-react-an-in-depth-look-767de0a5f9a6)!\n\nIn this article we will take an in-depth look at the differences and\nsimilarities between [Marko](https://markojs.com/) and React from the perspective\nof the maintainers of Marko.\n\nOn the surface, Marko and React have a lot in common and both are trying to\nsolve very similar problems. Specifically, both Marko and React allow developers\nto build web applications based on UI components and both free developers from\nhaving to write code to manually update the DOM. While many of the features in\nMarko were inspired by React, Marko and React offer very different usability and\nperformance characteristics. Marko was designed to avoid almost all boilerplate\nand is more closely aligned with HTML. In almost all cases, a Marko UI component\nwill require less lines of code than its React JSX equivalent while maintaining\nreadability and allowing the same expressiveness as JSX. In addition, Marko is\nhighly optimized for use on the server and in the browser and has a much smaller\nweight:\n\n<img src=\"https://cdn-images-1.medium.com/max/1600/1*a9hL_pfNrRq1UU3Mxkf3Jg.png\" alt=\"Marko logo\" width=\"100%\" /><br />\n\nBecause the Marko JavaScript library is much smaller than React, it will require\nless time to load and parse and this will drastically improve page load times on\nslow connections or on older devices. Based on [our\nbenchmarks](https://markojs.com/#benchmarks), Marko consistently outperforms\nReact by a significant margin on both the server and in the browser.\n\n### Example\n\nThe following code highlights some of the differences between Marko and React\nJSX using a somewhat contrived UI component as an example:\n\n#### React JSX\n\n```jsx\nclass Counter extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state = { count: 0 };\n  }\n\n  increment(delta) {\n    this.setState({ count: this.state.count + delta });\n  }\n\n  render() {\n    const count = this.state.count;\n    let countClassName = \"count\";\n\n    if (count > 0) {\n      countClassName += \" positive\";\n    } else if (count < 0) {\n      countClassName += \" negative\";\n    }\n\n    return (\n      <div className=\"click-count\">\n        <div className={countClassName}>{count}</div>\n        <button\n          onClick={() => {\n            this.increment(-1);\n          }}\n        >\n          -1\n        </button>\n        <button\n          onClick={() => {\n            this.increment(1);\n          }}\n        >\n          +1\n        </button>\n      </div>\n    );\n  }\n}\n```\n\n<span class=\"figcaption_hack\">[▶ Try Online](https://codepen.io/mlrawlings/pen/wJXOWR?editors=0010)</span>\n\n#### Marko\n\n```marko\nclass {\n  onCreate() {\n    this.state = { count: 0 };\n  }\n  increment(delta) {\n    this.state.count += delta;\n  }\n}\n\n$ var count = state.count;\n\n<div.click-count>\n  <div.count class={\n      positive: count > 0,\n      negative: count < 0\n    }>\n    ${count}\n  </div>\n  <button on-click('increment', -1)>\n    -1\n  </button>\n  <button on-click('increment', 1)>\n    +1\n  </button>\n</div>\n```\n\n<span class=\"figcaption_hack\">[▶ Try\nOnline](https://markojs.com/try-online/?gist=8fe46bc5866605aca0dfeec202604011)</span>\n\n### Similarities\n\nMarko and React have the following in common:\n\n- UI component-based\n- JavaScript and HTML markup can be intertwined\n- No restrictions on JavaScript (use ES5 or ES2015+, your choice)\n- Virtual DOM rendering in the browser\n- DOM diffing/patching is used to reconcile views\n- Both support keyed element matching\n- UI components can have input properties\n- UI components can have internal state\n- Changes to state trigger an asynchronous update to the DOM\n- Updates to the DOM are batched\n- Compatible with central application state stores such as Redux and MobX\n- UI components can be embedded using custom tags\n- Declarative event binding (no `domEl.addEventListener()` needed)\n- Support for all DOM events\n- Event delegation utilized internally for DOM events that bubble\n- IE9+ support\n- Similar lifecycle events for UI components\n- JSX and Marko both compile to JavaScript\n\n### Differences\n\nAt a high level here are some differences:\n\n#### Differences in rendering\n\n- **Improved performance:** Marko renders to a virtual DOM in the browser and\n  directly to an HTML stream on the server (Marko supports multiple compilation\n  targets).\n- **Improved performance:** Marko supports asynchronous rendering with [early\n  flushing of\n  HTML](https://tech.ebayinc.com/engineering/async-fragments-rediscovering-progressive-html-rendering-with-marko/)\n  for improvements in actual and perceived page load times.\n- **Improved performance:** React requires an additional client-side re-render if\n  a page is initially rendered on the server while Marko does not.\n- **Improved ease of use:** Marko automatically serializes UI component state and\n  input down to the browser so that the browser can pick up right where the server\n  left off.\n- **Improved ease of use:** Marko is suitable for rendering an entire HTML page on\n  the server with support for tags such as `<doctype>` and `<html>`\n\n#### Differences in syntax\n\n- **Improved ease of use:** Marko uses the\n  [HTML-JS](https://markojs.com/docs/syntax/) syntax and the\n  [JSX](https://facebook.github.io/react/docs/jsx-in-depth.html) syntax is offered\n  for React.\n- **Improved ease of use:** Marko supports both a concise syntax and a familiar\n  HTML syntax.\n- **Improved ease of use:** JSX requires strict XML while Marko aligns with less\n  strict HTML that web developers are used to.\n- **Improved ease of use:** With Marko, _all_ HTML attribute values are parsed as\n  JavaScript expressions.\n- **Improved ease of use:** Marko supports simple directives for conditionals,\n  looping, etc.\n- **JSX limitation:** JSX is “just JavaScript” but requires expressions that\n  preclude the usage of JavaScript statements such as in certain places.\n\n#### Differences in compilation\n\n- **Improved performance:** Marko supports multiple compilation outputs (Marko\n  VDOM and HTML streaming are currently supported).\n- **Improved ease of use:** Marko compiles UI components to JavaScript modules\n  that export a rendering API.\n- **Expanded capabilities:** Marko supports a robust API for controlling how\n  custom tags and custom attributes get compiled and it supports compile-time\n  transforms based on a friendly Abstract Syntax Tree (AST).\n- **Improved performance:** JSX is just syntactic sugar that translates elements\n  to `createElement()` function calls while the Marko compiler has full control over how things are\n  compiled and optimized.\n- **Improved ease of use:** React requires all UI components to be explicitly\n  imported before they can be used as custom tags while Marko supports both\n  explicit importing and implicit importing.\n- **Improved performance:** Marko has a modular runtime and the compiler generates\n  code that only imports the parts of the Marko runtime that are needed for much\n  smaller builds.\n- **Improved ease of use:** Marko supports optional compile-time checks to ensure\n  that only allowed attributes are passed to custom tags. (React `PropTypes` only provide\n  validation at render-time)\n- **Improved ease of use:** Marko validates _all_ tag names at compile-time.\n- **Improved ease of use:** Marko provides its own compiler that integrates with\n  Node.js and JavaScript module bundlers while React JSX requires babel and custom\n  babel transforms.\n\n#### Differences in UI components\n\n- **Reduced boilerplate:** No explicit extending of JavaScript classes in Marko\n  (in contrast to `class Counter extends React.Component` in React).\n- **Improved ease of use:** Modifications to UI component state are synchronous\n  with Marko while [the rules for React are more\n  complicated](https://facebook.github.io/react/docs/state-and-lifecycle.html#state-updates-may-be-asynchronous).\n- **Improved ease of use:** Marko watches UI component state objects to allow\n  state to be modified directly (e.g., `this.state.count++`).\n- **Improved ease of use:** Marko supports single-file UI components combining\n  JavaScript behavior, CSS styling (with support for CSS preprocessors) and HTML\n  markup. (React requires using one of the many [CSS in JS\n  solutions](https://github.com/MicheleBertoli/css-in-js) if you want styles in\n  the same file as your component and there is no standard in the community)\n- **Improved maintainability:** Marko supports a seamless transition from a\n  single-file UI component to a multi-file UI component.\n- **Improved performance:** Marko assumes UI components are pure by default and\n  skips re-rendering when input properties and state are unchanged (React requires\n  extending\n  [React.PureComponent](https://facebook.github.io/react/docs/react-api.html#react.purecomponent)).\n\n#### Differences in event systems\n\n- **Reduced complexity:** React utilizes [synthetic\n  events](https://facebook.github.io/react/docs/events.html) while Marko utilizes\n  real DOM events.\n- **Improved ease of use:** Custom events are emitted using the [EventEmitter\n  API](https://nodejs.org/api/events.html) in Marko (e.g., `this.emit('myCustomEvent', arg1, arg2)`).\n- **Improved ease of use:** Marko has a consistent approach for listening to both\n  native DOM events and custom events.\n- **Improved ease of use:** React requires passing around `Function` references for custom\n  events while Marko automatically delegates emitted custom events to event\n  handler methods on components.\n- **Improved ease of use:** Marko provides a simple mechanism for binding\n  additional arguments to event handler methods and `this` will be the component\n  instance.\n\n#### Differences in compatibility\n\n- **Marko limitation:** Marko has no support for native mobile similar to React\n  Native (although with Marko VDOM rendering, this is possible).\n- **Marko limitation:** Marko requires a JavaScript module bundler (such as\n  [Lasso](https://markojs.com/docs/lasso/),\n  [Webpack](https://markojs.com/docs/webpack/),\n  [Rollup](https://markojs.com/docs/rollup/)\n  since Marko UI components compile down to JavaScript modules. (we consider using\n  a JavaScript module bundler a best practice)\n\n---\n\nIn the sections below we will take a closer look at some of the differences\nbetween Marko and React.\n\n### Syntax\n\nBoth Marko and React JSX allow HTML markup and JavaScript to be combined into a\nsingle file and both support building web applications based on UI components.\nMarko utilizes an [HTML-JS syntax](https://markojs.com/docs/syntax/) while most\nReact apps use the JSX syntax.\n\n> React JSX makes JavaScript more like HTML and Marko makes HTML more like\n> JavaScript.\n\nIn the end, both Marko and React allow JavaScript and HTML to be intertwined.\n\n### Syntax: attributes\n\n#### React JSX\n\nIn React JSX, all attribute values are parsed as string values unless `{}` is used.\n\n```jsx\n<MyComponent\n  name=\"Frank\"\n  messageCount={30}\n  visible={true}\n  person={{ firstName: 'John', lastName: 'Doe' }}\n  colors={['red', 'green', 'blue']} />\n\n<div id=\"content\" className=\"foo\">Hello</div>\n```\n\n#### Marko\n\nWith Marko, _all_ attribute values are parsed as JavaScript expressions. The\nfollowing Marko code is equivalent to the React JSX code above:\n\n```marko\n<my-component\n  name=\"Frank\"\n  message-count=30\n  visible=true\n  person={ firstName: 'John', lastName: 'Doe' }\n  colors=['red', 'green', 'blue'] />\n\n<div id=\"content\" class=\"foo\">Hello</div>\n```\n\n### Syntax: inline JavaScript\n\n#### React JSX\n\nReact JSX starts with JavaScript and allows XML elements to be inlined as shown\nbelow:\n\n```jsx\nimport { formatDate } from \"./util\";\n\nfunction formatName(person) {\n  return person.firstName + \" \" + person.lastName.charAt(0) + \".\";\n}\n\nexport default function HelloMessage(props) {\n  var person = props.person;\n\n  return (\n    <div>\n      Hello {formatName(person)}!\n      <span>You were born on {formatDate(person.birthday)}.</span>\n    </div>\n  );\n}\n```\n\n#### Marko\n\nMarko starts out in HTML, but it allows JavaScript to be inlined in a clean and\nmaintainable way. Unlike other template languages, Marko aims to allow the full\npower of JavaScript. The following Marko code is equivalent to the React JSX\ncode above:\n\n```marko\nimport { formatDate } from './util';\n\nstatic function formatName(person) {\n    return person.firstName + ' ' + person.lastName.charAt(0) + '.';\n}\n\n$ var person = input.person;\n\n<div>\n    Hello ${formatName(person)}!\n    <span>\n      You were born on ${formatDate(person.birthday)}.\n    </span>\n</div>\n```\n\nLines prefixed with `$` are directly added to the compiled JavaScript output inside\nthe compiled `render()` function (for JavaScript code that should run for every render).\nLines prefixed with `static` are directly added to the compiled JavaScript output\noutside the `render()` function (for code that should only run _once_ when the template is\nloaded).\n\n### Syntax: HTML support\n\nWith Marko any valid HTML markup can be used inside a Marko template. This is\nnot the case with React. The following quote is from the [React\ndocumentation](https://facebook.github.io/react/docs/introducing-jsx.html#specifying-children-with-jsx):\n\n> **Caveat:**\n\n> Since JSX is closer to JavaScript than HTML, React DOM uses `camelCase` property naming\n> convention instead of HTML attribute names.\n\n> For example, `class` becomes `className` in JSX, and `tabindex` becomes `tabIndex`.\n\nAs a result of this caveat for React, [tools for converting HTML to JSX\nexist](https://magic.reactjs.net/htmltojsx.htm).\n\n#### React JSX\n\n```jsx\n<div id=\"content\" className=\"my-component\">Hello</div>\n\n<input type=\"text\" name=\"firstName\" value=\"John\" />\n```\n\n#### Marko\n\n```marko\n<div id=\"content\" class=\"my-component\">Hello</div>\n\n<input type=\"text\" name=\"firstName\" value=\"John\">\n```\n\n### Syntax: conditionals\n\nJSX is syntactic sugar on top of JavaScript, but it requires expressions, so\nsimple things like an `if/else/for` statement don’t work on their own within a JSX element. As\na result, you must either use a ternary expression, an immediately invoked\nfunction expression, function call expression, or the experimental `do {}` expression\n(stage 0 at the time of writing). This is not an issue for Marko, and tags\nsuch as `if()` and `for` can be used anywhere as shown below:\n\n#### React JSX\n\n```jsx\nfunction counterMessage(count) {\n  return (\n    <div className=\"counter-message\">\n      (function() {\n        if (count < 0) {\n          return <div>Count is negative</div>\n        } else if (count === 0) {\n          return <div>Count is zero</div>\n        } else {\n          return <div>Count is positive</div>\n        }\n      }())\n    </div>\n  )\n}\n```\n\n#### Marko\n\n```marko\n<div.counter-message>\n  <if(count < 0)>\n    <div>Count is negative</div>\n  </if>\n  <else if(count === 0)>\n    <div>Count is zero</div>\n  </else>\n  <else>\n    <div>Count is positive</div>\n  </else>\n</div>\n```\n\nMarko also allows directives to be used as attributes for a more condensed\ntemplate:\n\n```marko\n<div.counter-message>\n  <div if(count < 0)>Count is negative</div>\n  <div if(count === 0)>Count is zero</div>\n  <div else>Count is positive</div>\n</div>\n```\n\n### Syntax: looping\n\n#### React JSX\n\n```jsx\nfunction renderColors(colors) {\n  return (\n    <ul>\n      {colors.map((color) => (\n        <li\n          className=\"color\"\n          style={{\n            backgroundColor: color,\n          }}\n        >\n          {color}\n        </li>\n      ))}\n    </ul>\n  );\n}\n```\n\n#### Marko\n\n```marko\n<ul>\n  <for|color| of=colors>\n    <li.color style={ backgroundColor: color }>\n        ${color}\n    </li>\n  </for>\n</ul>\n```\n\n### Syntax: HTML shorthand\n\n```marko\n<div id=\"content\"/>\n<h1 class=\"subheader\"/>\n<h1 id=\"pageTitle\" class=\"foo bar\"/>\n\n<!-- Shorthand equivalent: -->\n<div#content/>\n<h1.subheader/>\n<h1#pageTitle.foo.bar/>\n```\n\nMarko supports a shorthand based on CSS selectors for less code.\n\nReact does not support these helpful shorthands.\n\n### Syntax: concise\n\nMarko supports a concise syntax that drops angled brackets and ending tags in\nfavor of indentation. Here’s how the Marko syntax options compare:\n\n#### Marko HTML syntax\n\n```marko\n<ul>\n  <for|color| of=colors>\n    <li>${color}</li>\n  </for>\n</ul>\n```\n\n#### Marko concise syntax\n\n```marko\nul\n  for|color| of=colors\n    li -- ${color}\n```\n\n#### Marko mixed syntax\n\n```marko\nul\n  for|color| of=colors\n    <li>${color}</li>\n```\n\nThe HTML syntax and the concise syntax can be used together:\n\n#### React JSX\n\nReact does not offer a concise syntax.\n\n### Components\n\nMarko starts with simple HTML and allows UI component logic to easily be layered\non top.\n\n#### React JSX\n\nA React UI component is typically implemented as a class that extends `ReactComponent`:\n\n```jsx\nclass HelloMessage extends React.Component {\n  render() {\n    return <div>Hello {this.props.name.toUpperCase()}</div>;\n  }\n}\n```\n\nReact also supports a more concise functional component:\n\n```jsx\nfunction HelloMessage(props) {\n  return <div>Hello {props.name.toUpperCase()}</div>;\n}\n```\n\nHowever, if state or lifecycle events are needed then a functional UI component\nmust be converted to a class component:\n\n```jsx\nclass HelloMessage extends React.Component {\n  componentDidMount() {\n    // ...\n  }\n  render() {\n    return <div>Hello {this.props.name.toUpperCase()}</div>;\n  }\n}\n```\n\n#### Marko\n\nHere is the same component in Marko:\n\n```marko\n<div>Hello ${input.name.toUpperCase()}</div>\n```\n\nBehavior can easily be added to any Marko UI component:\n\n```marko\nclass {\n  onMount() {\n    // ...\n  }\n}\n\n<div>Hello ${input.name.toUpperCase()}</div>\n```\n\nMarko also allows JavaScript behavior, CSS styling and HTML markup to be\nembedded in the Marko template as a single file UI component:\n\n```marko\nclass {\n  onMount() {\n    // ...\n  }\n}\n\nstyle.less {\n  .hello {\n    color: red;\n  }\n}\n\n<div.hello>\n  Hello ${input.name.toUpperCase()}\n</div>\n```\n\n### API\n\nMarko compiles components to JavaScript modules that export their rendering APIs,\nas shown below:\n\n```js\nimport Greeting from \"./components/greeting.marko\";\nGreeting.renderSync({ name: \"Frank\" }).appendTo(document.body);\n```\n\nThe same UI component can render to streams, such as a writable HTTP\nresponse stream:\n\n```js\nimport Greeting from \"./components/greeting.marko\";\nGreeting.render({ name: \"John\" }, res);\n```\n\n> The users of a Marko UI component do not need to know that the component was\n> implemented using Marko.\n\nContrast this with React as an example:\n\n```jsx\nimport ReactDOM from \"react-dom\";\n\nReactDOM.render(\n  <HelloMessage name=\"John\" />,\n  document.getElementById(\"container\"),\n);\n```\n\nOn top of that, React requires that a different module be imported to render the\nexact same UI component on the server:\n\n```jsx\nimport ReactDOMServer from \"react-dom/server\";\n\nvar html = ReactDOMServer.renderToString(<HelloMessage name=\"John\" />);\n```\n\n### Custom tags\n\n#### React JSX\n\nWith React, all custom tags for UI components must be explicitly imported:\n\n```jsx\nimport Hello from \"./components/Hello\";\nimport GoodBye from \"./components/GoodBye\";\n\nexport default function HelloGoodBye(props) {\n  return (\n    <div>\n      <Hello name={props.name} />\n      <GoodBye name={props.name} />\n    </div>\n  );\n}\n```\n\n#### Marko\n\nMarko supports a mechanism for [automatically discovering custom\ntags](https://markojs.com/docs/custom-tags/#discovering-tags) for UI components\nbased on the project directory structure. Marko walks up the directory tree to\ndiscover all directories and it will also automatically discover custom tags\nexported by installed packages. This approach negates the need for explicitly\nimporting a custom tag to reduce the amount of code needed in a Marko template.\nFor example given the following directory structure:\n\n```\n    .\n    ├── components/\n    │   ├── hello.marko\n    │   └── good-bye.marko\n    └── index.marko\n```\n\nThe `<hello>` tag and the `<good-bye>` tag nested below the `components/`\ndirectory will automatically be made available to the `index.marko` at the root:\n\n```marko\n<div>\n  <hello name=input.name />\n  <good-bye name=input.name />\n</div>\n```\n\nThis approach also allows editors and IDEs to offer autocompletion for custom\ntags.\n\n### Async\n\nEven after rendering has started, Marko allows parts of the view to be rendered\nasynchronously using the [`<await>`](https://markojs.com/docs/core-tags#await)\ntag as shown in the following Marko template:\n\n```marko\nimport fsp from 'fs-promise';\n\n$ var filePath = __dirname + '/hello.txt';\n$ var readPromise = fsp.readFile(filePath, {encoding: 'utf8'});\n\n<await(readPromise)>\n  <@then|helloText|>\n    <p>${helloText}</p>\n  </@then>\n</await>\n```\n\n### Compiler\n\nMarko compiles a template differently based on whether or not it will be used on\nthe server or in the browser. For example, given the following template:\n\n```marko\n<div>Hello ${input.name}!</div>\n```\n\n#### Compiled for the server:\n\n```js\nvar marko_template = require(\"marko/html\").t(__filename),\n  marko_helpers = require(\"marko/runtime/html/helpers\"),\n  marko_escapeXml = marko_helpers.x;\n\nfunction render(input, out) {\n  out.w(\"<div>Hello \" + marko_escapeXml(input.name) + \"!</div>\");\n}\n```\n\n#### Compiled for the browser:\n\n```js\nvar marko_template = require(\"marko/vdom\").t(__filename);\n\nfunction render(input, out) {\n  out.e(\"DIV\", null, 3).t(\"Hello \").t(input.name).t(\"!\");\n}\n```\n\n### Compile-time code transforms\n\nThe Marko compiler was built to support compile-time code generators for custom\ntags and it also provides support for compile-time transforms. While Babel\nallows code transformations of JavaScript, the Marko compiler provides support\nfor resolving custom tags declaratively and the Marko AST provides for very\npowerful and simple transformations as shown in the following code for rendering\nMarkdown to HTML at _compile-time_:\n\n**components/markdown/code-generator.js:**\n\n```js\nimport marked from \"marked\";\nimport { removeIndentation } from \"./util\";\n\nexport default function generateCode(el, codegen) {\n  var bodyText = removeIndentation(el.bodyText);\n  var html = marked(bodyText);\n  var builder = codegen.builder;\n  return builder.html(builder.literal(html));\n}\n```\n\nThe `<markdown>` tag can then be used as shown below:\n\n```marko\n<markdown>\n\n> This section demonstrates Markdown in Marko\n\n# Marko is awesome!\n\n- High performance\n- Small\n- Intuitive\n\n</markdown>\n```\n\nIn this example, after the template is compiled, the\n[marked](https://github.com/chjj/marked) library is no longer needed at\nrender-time.\n\n### Tools\n\nMarko and React offer a variety of developer tools. The [Marko developer\ntools](https://github.com/marko-js/marko-devtools) are constantly evolving, but\nMarko currently provides tools for unit testing UI components, precompiling `.marko`\nfiles and generating configuration-less apps (similar to\n[create-react-app](https://github.com/facebookincubator/create-react-app)).\nCurrently, there are no Marko developer tools that integrate with the browser,\nbut this is something we would like to see in the future. We will go into more\ndetail on the Marko developer tools in a future post.\n\n#### IDE and editor support\n\nMarko offers syntax highlighting across all major IDEs and editors, as well as\non GitHub. Marko provides first-class support for the Atom editor with syntax\nhighlighting,\n[Autocomplete](https://github.com/marko-js/atom-language-marko#autocomplete) for\nboth HTML and custom tags,\n[Hyperclick](https://github.com/marko-js/atom-language-marko#hyperclick) to\nquickly jump to referenced files and methods, and [Pretty\nprinting](https://github.com/marko-js/atom-language-marko#prettyprint) to keep\nyour code readable.\n\n---\n\n### Why Marko?\n\nHere are just a few reasons you should consider using\n[Marko](https://markojs.com/) over React:\n\n- Marko requires much less boilerplate.\n- Marko has much better performance based on our benchmarks.\n- Marko offers a clean and powerful syntax that aligns with HTML while also\n  allowing the full power of JavaScript.\n- Marko has much less complexity and a very small runtime.\n- Marko has a much lower page weight for faster page loads.\n- Marko has strong integrations with Node.js.\n- Marko allows for extremely powerful IDE and editor plugins (see the [Marko\n  plugin for Atom](https://github.com/marko-js/atom-language-marko) as an\n  example).\n- Marko has a powerful compiler that allows new features to be added without\n  introducing bloat.\n- eBay relies heavily on Marko and it is being used to build ebay.com (including\n  the mobile web).\n- Marko has a strong and growing community on\n  [GitHub](https://github.com/marko-js/marko) and in\n  [Discord](https://discord.gg/RFGxYGs).\n\nInterested in learning more about Marko? If so, you can get additional\ninformation on the [Marko website](https://markojs.com/). Join the conversation\nand contribute on [GitHub](https://github.com/marko-js/marko) and follow us on\n[Twitter](https://twitter.com/MarkoDevTeam).\n"
  },
  {
    "path": "packages/runtime-class/docs/redux.md",
    "content": "# Redux + Marko\n\nSee the [`marko-redux` sample project](https://github.com/marko-js/examples/tree/master/examples/redux) for a fully-working example.\n\n## Installation\n\nFirst, save the [`marko`](https://www.npmjs.com/package/marko) and [`redux`](https://www.npmjs.com/package/redux) packages to your project’s dependencies:\n\n```bash\nnpm i marko redux\n```\n\n## Usage\n\nThe partial code below shows how a Marko UI component can connect to a Redux store, using Redux’s `store.subscribe()` method and Marko’s `forceUpdate()` method:\n\n### `counter.marko`\n\n```marko\nimport store from './store.js';\n\nclass {\n  onMount () {\n    store.subscribe(() => {\n      // Force this UI component to rerender\n      this.forceUpdate();\n\n      // The UI component will rerender with the new\n      // state returned by `store.getState()`\n      //\n      // You could also force an update like this:\n      // this.input = store.getState();\n    });\n  }\n}\n\n<counter(store.getState()) />\n```\n\n### `reducer.js`\n\n```js\nexport default function (state, action) {\n  state = state || { value: 0 };\n\n  // Additional reducer logic here…\n\n  return state;\n}\n```\n\n### `store.js`\n\nIn `counter.marko`, the imported store module exports a Redux store created with the following code:\n\n```js\nimport redux from \"redux\";\nimport counter from \"./reducer.js\";\n\nexport default redux.createStore(counter);\n```\n"
  },
  {
    "path": "packages/runtime-class/docs/rendering.md",
    "content": "# Rendering\n\nTo render a Marko view, you need to `import` it.\n\n_example.js_\n\n```js\nimport FancyButton from \"./components/fancy-button.marko\";\n```\n\n> **Note:** If you are targeting node.js, you will need to enable the [require extension](./installing.md#require-marko-views) in order to require `.marko` files or you will need to precompile all of your templates using [Marko CLI](https://github.com/marko-js/cli). If you are targeting the browser, you will need to use a bundler like [`lasso`](./lasso.md), [`webpack`](./webpack.md) or [`rollup`](./rollup.md).\n\nOnce you have a view, you can pass input data and render it:\n\n_example.js_\n\n```js\nimport FancyButton from \"./components/fancy-button.marko\";\nconst html = FancyButton.renderToString({ label: \"Click me!\" });\n\nconsole.log(html);\n```\n\nThe data passed to `renderToString` becomes available as `input` in the component, so if `fancy-button.marko` looked like this:\n\n_./components/fancy-button.marko_\n\n```marko\n<button>${input.label}</button>\n```\n\nThe output HTML would be:\n\n```html\n<button>Click me!</button>\n```\n\n## Rendering methods\n\nWe used the `renderToString` method above to render the view, but there are a number of different method signatures that can be used to render.\n\nMany of these methods return a [`RenderResult`](#renderresult) which is an object with helper methods for working with the rendered output.\n\n### `renderSync(input)`\n\n| params       | type                            | description                            |\n| ------------ | ------------------------------- | -------------------------------------- |\n| `input`      | `Object`                        | the input data used to render the view |\n| return value | [`RenderResult`](#renderresult) | The result of the render               |\n\nUsing `renderSync` forces the render to complete synchronously. If a tag attempts to run asynchronously, an error will be thrown.\n\n```js\nimport View from \"./view.marko\";\nvar result = View.renderSync({});\n\nresult.appendTo(document.body);\n```\n\n### `render(input)`\n\n| params       | type                             | description                            |\n| ------------ | -------------------------------- | -------------------------------------- |\n| `input`      | `Object`                         | the input data used to render the view |\n| return value | `AsyncStream`/`AsyncVDOMBuilder` | the async `out` render target          |\n\nThe `render` method returns an async `out` which is used to generate HTML on the server or a virtual DOM in the browser. In either case, the async `out` has a `then` method that follows the Promises/A+ spec, so it can be used as if it were a Promise. This promise resolves to a [`RenderResult`](#renderresult).\n\n```js\nimport View from \"./view.marko\";\nvar resultPromise = View.render({});\n\nresultPromise.then((result) => {\n  result.appendTo(document.body);\n});\n```\n\n### `render(input, callback)`\n\n| params         | type                             | description                                    |\n| -------------- | -------------------------------- | ---------------------------------------------- |\n| `input`        | `Object`                         | the input data used to render the view         |\n| `callback`     | `Function`                       | a function to call when the render is complete |\n| callback value | [`RenderResult`](#renderresult)  | The result of the render                       |\n| return value   | `AsyncStream`/`AsyncVDOMBuilder` | the async `out` render target                  |\n\n```js\nimport View from \"./view.marko\";\n\nView.render({}, (err, result) => {\n  result.appendTo(document.body);\n});\n```\n\n### `render(input, stream)`\n\n| params       | type                             | description                            |\n| ------------ | -------------------------------- | -------------------------------------- |\n| `input`      | `Object`                         | the input data used to render the view |\n| `stream`     | `WritableStream`                 | a writeable stream                     |\n| return value | `AsyncStream`/`AsyncVDOMBuilder` | the async `out` render target          |\n\nThe HTML output is written to the passed `stream`.\n\n```js\nimport http from \"http\";\nimport View from \"./view.marko\";\n\nhttp.createServer((req, res) => {\n  res.setHeader(\"content-type\", \"text/html\");\n  View.render({}, res);\n});\n```\n\n### `render(input, out)`\n\n| params       | type                             | description                            |\n| ------------ | -------------------------------- | -------------------------------------- |\n| `input`      | `Object`                         | the input data used to render the view |\n| `out`        | `AsyncStream`/`AsyncVDOMBuilder` | The async `out` to render to           |\n| return value | `AsyncStream`/`AsyncVDOMBuilder` | The `out` that was passed              |\n\nThe `render` method also allows passing an existing async `out`. If you do this, `render` will not automatically end the async `out` (this allows rendering a view in the middle of another view). If the async `out` won't be ended by other means, you are responsible for ending it.\n\n```js\nimport View from \"./view.marko\";\nvar out = View.createOut();\n\nView.render({}, out);\n\nout.on(\"finish\", () => {\n  console.log(out.getOutput());\n});\n\nout.end();\n```\n\n### `renderToString(input)`\n\n| params       | type     | description                            |\n| ------------ | -------- | -------------------------------------- |\n| `input`      | `Object` | the input data used to render the view |\n| return value | `String` | The HTML string produced by the render |\n\nReturns an HTML string and forces the render to complete synchronously. If a tag attempts to run asynchronously, an error will be thrown.\n\n```js\nimport View from \"./view.marko\";\nvar html = View.renderToString({});\n\ndocument.body.innerHTML = html;\n```\n\n### `renderToString(input, callback)`\n\n| params         | type        | description                            |\n| -------------- | ----------- | -------------------------------------- |\n| `input`        | `Object`    | the input data used to render the view |\n| callback value | `String`    | The HTML string produced by the render |\n| return value   | `undefined` | N/A                                    |\n\nAn HTML string is passed to the callback.\n\n```js\nimport View from \"./view.marko\";\n\nView.renderToString({}, (err, html) => {\n  document.body.innerHTML = html;\n});\n```\n\n### `stream(input)`\n\nThe `stream` method returns a Node.js-style stream of the output HTML.\n\n```js\nimport fs from \"fs\";\nimport View from \"./view.marko\";\nconst writeStream = fs.createWriteStream(\"output.html\");\n\nView.stream({}).pipe(writeStream);\n```\n\nThis method is available on the server, but not available by default in the browser. If you need to use streams in the browser, you may `import 'marko/stream'` as part of your client-side bundle.\n\n## RenderResult\n\n### `getComponent()`\n\n### `getComponents(selector)`\n\n### `afterInsert(doc)`\n\n### `getNode(doc)`\n\n### `getOutput()`\n\n### `appendTo(targetEl)`\n\n### `insertAfter(targetEl)`\n\n### `insertBefore(targetEl)`\n\n### `prependTo(targetEl)`\n\n### `replace(targetEl)`\n\n### `replaceChildrenOf(targetEl)`\n\n## Global data\n\nIf you need to make data available to all rendered views, use the `$global` property on the input data object. This property will be removed from `input` and provided to the template through a variable called `$global`. It is also made available on the `out.global` property.\n\nGlobal values persist across renders.\n\n```js\nView.render({\n  $global: {\n    flags: [\"mobile\"],\n  },\n});\n```\n\nWithin the template you can access `$global` similar to accessing `input`.\n\n```marko\n<div>\n  You are on ${$global.flags.includes(\"mobile\") ? \"mobile\" : \"desktop\"}\n</div>\n```\n\n> **Note:** `$global` is not available within [`static`](./syntax.md#static-javascript) parts of the template. In order to reference `$global` within the component class you must use `out.global` from one of the lifecycle methods that provide it.\n\n> **Warning:** Use `$global` with caution; it is visible in any component.\n\n### Sending global data to browsers\n\n⚠️ To prevent accidentally exposing sensitive data, by default **no keys** in `$global` are sent to browsers. To serialize data to the frontend, name the desired properties in `$global.serializedGlobals`.\n\nValues must be serializable by [the `warp10` module](https://www.npmjs.com/package/warp10).\n\n```js\nimport Page from \"./index.marko\";\n\napp.get(\"/\", (req, res) => {\n  const ua = req.get(\"User-Agent\");\n\n  Page.render(\n    {\n      $global: {\n        isIos: /iPad|iPhone/.test(ua), // Serialized and available on the server and browser as `$global.isIos`\n        isAndroid: /Android/.test(ua), // Serialized and available on the server and browser as `$global.isAndroid`\n        req, // Only available server-side and not serialized, because it’s not in `serializedGlobals`\n\n        serializedGlobals: {\n          isIos: true, // Tell Marko to serialize `isIos`\n          isAndroid: true, // Tell Marko to serialize `isAndroid`\n        },\n      },\n    },\n    res,\n  );\n});\n```\n\n> **Warning:** Ensure that you serialize only data which is necessary for the browser. Serialization is expensive for both server rendering performance and HTML output size.\n\nFor details, check [#672: “Serialize only input and state on top-level server-rendered UI components”](https://github.com/marko-js/marko/pull/672).\n"
  },
  {
    "path": "packages/runtime-class/docs/rollup.md",
    "content": "# Marko + Rollup\n\nThis is Marko’s official integration plugin for [the Rollup bundler](https://rollupjs.org/).\n\n## Installation\n\n```sh\nnpm install --save-dev \\\n  @marko/rollup \\\n  rollup \\\n  @rollup/plugin-node-resolve \\\n  @rollup/plugin-commonjs\n```\n\n> **Note**: The Marko runtime is CommonJS, so don’t forget the `@rollup/plugin-commonjs` package!\n\n## Configuration\n\n`@marko/rollup` exports two methods for use in [Rollup configuration files](https://rollupjs.org/guide/en/#configuration-files): `.browser()` and `.server()`.\n\nYou _probably_ want to use both, since that’ll get you…\n\n- Automatic [`input` entrypoint configuration](https://rollupjs.org/guide/en/#input) for route-based bundle splitting\n- Complete control over asset loading with [the `<rollup>` tag](#rollup-tag)\n- The strengths behind why Marko exists in the first place: cooperation between servers and browsers for high performance in both\n\n> **ProTip**: You _could_ use only `.browser()` or only `.server()` to build a completely client-side-rendered or server-side-rendered app. That would be a little odd, but you could.\n\n### Config example\n\n```js\nimport nodeResolve from \"@rollup/plugin-node-resolve\";\nimport commonjs from \"@rollup/plugin-commonjs\";\nimport marko from \"@marko/rollup\";\n\nconst sharedPlugins = [\n  commonjs({\n    extensions: [\".js\", \".marko\"]\n  }),\n  // If using Marko’s `style {}` blocks, you’ll need an appropriate plugin, like npmjs.com/rollup-plugin-postcss\n  postcss({ external: true })\n]\n\nconst serverAssetsConfig = {\n  input: \"src/start-server.js\",\n  plugins: [\n    marko.server(),\n    nodeResolve({ preferBuiltins: true })\n    ...sharedPlugins\n  ]\n};\nconst browsersAssetsConfig = {\n  plugins: [\n    marko.browser(),\n    nodeResolve({ browser: true })\n    ...sharedPlugins\n  ]\n};\n\nexport default [serverAssetsConfig, browsersAssetsConfig];\n```\n\n### Advanced config example\n\nThe following configuration file is long and hairy, which may be upsetting to some viewers. However, it does show how to accomplish the following:\n\n- Support for Rollup’s watch mode\n- A bundle analyzer\n- The ability to `import` JSON files to use their data\n- The ability to `import` image files to use their asset URLs for `img[src]` and such\n- Dead-code elimination for development-only code\n- Static compression of assets for something like [NGiNX’s `gzip_static`](https://nginx.org/en/docs/http/ngx_http_gzip_static_module.html)\n- A CSS preprocessor (Sass, in this case)\n- Browserslist to automatically configure:\n  - Babel for JS transpilation\n  - Autoprefixer for CSS transpilation\n\n<details><summary>Big ugly production-esque Rollup config</summary>\n\n```js\nimport { builtinModules } from \"module\";\nimport path from \"path\";\nimport autoprefixer from \"autoprefixer\";\nimport babelPlugin from \"@rollup/plugin-babel\";\nimport commonjsPlugin from \"@rollup/plugin-commonjs\";\nimport jsonPlugin from \"@rollup/plugin-json\";\nimport markoPlugin from \"@marko/rollup\";\nimport nodeResolvePlugin from \"@rollup/plugin-node-resolve\";\nimport replacePlugin from \"@rollup/plugin-replace\";\nimport runPlugin from \"@rollup/plugin-run\";\nimport stylesPlugin from \"rollup-plugin-styles\";\nimport urlPlugin from \"@rollup/plugin-url\";\nimport pkg from \"./package.json\";\n\nconst __DEV__ = process.env.NODE_ENV === \"development\";\nconst __PROD__ = !__DEV__;\n\nconst isWatch = Boolean(process.env.ROLLUP_WATCH);\n\nconst publicPath = \"/s/\"; // Guess what character is only 5 bits under HPACK\nconst assetFileNames = \"[name]-[hash][extname]\";\n\nconst externalDependencies = [\n  ...Object.keys(pkg.dependencies),\n  ...builtinModules,\n];\n\nprocess.env.SASS_PATH = \"./:./node_modules\";\n\nexport default (async () => [\n  compiler(\"server\", {\n    input: \"index.js\",\n    output: {\n      dir: \"built/server/\",\n      assetFileNames: `../browser/${assetFileNames}`,\n      format: \"cjs\",\n      sourcemap: true,\n    },\n    external: (id) =>\n      externalDependencies.some(\n        (dependency) => id === dependency || id.startsWith(dependency + \"/\"),\n      ),\n    plugins: [isWatch && runPlugin({ execArgv: [\"--enable-source-maps\"] })],\n  }),\n\n  compiler(\"browser\", {\n    output: {\n      dir: \"built/browser/\",\n      chunkFileNames: __PROD__ ? \"[name]-[hash].js\" : null,\n      entryFileNames: __PROD__ ? \"[name]-[hash].js\" : null,\n      assetFileNames,\n      sourcemap: true,\n      sourcemapExcludeSources: __PROD__,\n    },\n    plugins: [\n      stylesPlugin({\n        mode: \"extract\",\n        sourceMap: true,\n        config: {\n          target: \"browserslist:css\",\n          plugins: [autoprefixer({ env: \"css\" })],\n        },\n        minimize: __PROD__,\n        url: {\n          publicPath,\n          hash: assetFileNames,\n        },\n      }),\n      __PROD__ && (await import(\"rollup-plugin-terser\")).terser(),\n      __PROD__ &&\n        (await import(\"rollup-plugin-gzip\")).default({\n          filter: /\\.(?:js|css|svg|json|xml|txt)$/,\n          minSize: 1024,\n          gzipOptions: {\n            level: 9,\n            memLevel: 9,\n          },\n        }),\n      __PROD__ &&\n        !isWatch &&\n        (await import(\"rollup-plugin-visualizer\")).default(),\n      __PROD__ &&\n        !isWatch && {\n          name: \"bundle-visualizer-location\",\n          writeBundle() {\n            console.info(\n              `📊 Bundle visualizer at \\x1b[4;36mfile://${path.join(\n                __dirname,\n                \"../../\",\n                bundleAnalyzerFilename,\n              )}\\x1b[0m`,\n            );\n          },\n        },\n    ],\n  }),\n])();\n\nfunction compiler(target, config) {\n  const isBrowser = target === \"browser\";\n  const browserslistEnv = isBrowser ? \"js\" : \"server\";\n  const babelConfig = {\n    comments: false,\n    browserslistEnv,\n    compact: false,\n    babelrc: false,\n    caller: { target },\n  };\n  if (isBrowser) {\n    babelConfig.presets = [\n      [\n        \"@babel/preset-env\",\n        {\n          browserslistEnv,\n          bugfixes: true,\n        },\n      ],\n    ];\n  }\n\n  return {\n    ...config,\n    preserveEntrySignatures: false,\n    plugins: [\n      markoPlugin[target]({ babelConfig }),\n      nodeResolvePlugin({\n        browser: isBrowser,\n        preferBuiltins: !isBrowser,\n      }),\n      commonjsPlugin(),\n      replacePlugin({\n        preventAssignment: true,\n        values: { __DEV__, __PROD__ },\n      }),\n      babelPlugin({\n        babelHelpers: \"bundled\",\n        ...babelConfig,\n      }),\n      jsonPlugin(),\n      urlPlugin({\n        publicPath,\n        destDir: \"built/browser/\",\n        fileName: assetFileNames,\n        include: \"**/*.{svg,png,jpg,jpeg}\",\n        limit: 0, // Never Base64 & inline\n        emitFiles: !isBrowser,\n      }),\n      ...config.plugins,\n    ],\n  };\n}\n```\n\n</details>\n\n## `<rollup>` tag\n\nUsing both `.server()` and `.browser()` enables **the `<rollup>` tag**, which gives you complete control over how your app loads assets. That lets you do things like:\n\n- [Critical CSS](https://web.dev/extract-critical-css/) for components as they write out within a kB budget, or [as components first appear on the page](https://jakearchibald.com/2016/link-in-body/#a-simpler-better-way), or any other style-loading mad science\n- [`module`/`nomodule` scripts](https://philipwalton.com/articles/using-native-javascript-modules-in-production-today/) for smaller bundles in modern browsers\n- [Content-Security Policy `nonce`s](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/nonce) or [Subresource `integrity` hashes](https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity)\n- Anything a web page can do, really. You can even combine `<rollup>` with [the `serialize` option](#options.serialize) to be as fancy as you wanna be.\n\nThe `<rollup>` tag provides two [tag parameters](https://markojs.com/docs/syntax/#parameters):\n\n1. `entry` is the generated `input` string that the `server` plugin gave to the `browser` plugin. You can use it to find the corresponding entry chunk from Rollup’s `output` (the next parameter).\n\n2. `output` is an array of `AssetInfo | ChunkInfo` objects with most of [the data returned from Rollup's `generateBundle` hook](https://rollupjs.org/guide/en/#generatebundle). Some properties are omitted, like `code` and `map`, since they’re often too large to inline directly. However, each chunk also has a `size` property, to let you filter out empty chunks, inline code yourself below a certain size, or other delightful devilishness.\n\nFor example, using the `entry` name and properties of `output` items to load scripts:\n\n```marko\n<head>\n  <rollup|entry, output|>\n    $ const entryChunk = output.find(chunk => chunk.name === entry);\n\n    <if(entryChunk.size /* only load non-empty JS entry points */)>\n      <for|fileName| of=entryChunk.imports>\n        <link rel=\"modulepreload\" href=fileName />\n      </for>\n\n      <script async type=\"module\" src=entryChunk.fileName></script>\n    </if>\n  </rollup>\n</head>\n```\n\n> **Note**: It’s up to you to transform the chunk data (also called the **manifest**) into `<link>`s, `<script>`s, and other HTML to load assets. Opting into complete control means we can’t do any of it for you.\n\nIf your Rollup `browser` config contains multiple `output` options, or you have multiple `browser` configs, every `output`’s chunk is passed to the `<rollup>` tag.\n\nFor example, if you have both `esm` and `iife` build outputs configured:\n\n```js\n{\n  output: [\n    { dir: \"dist/iife\", format: \"iife\" },\n    { dir: \"dist/esm\", format: \"esm\" },\n  ];\n}\n```\n\n…you could cross-reference assets from both…\n\n```marko\n<rollup|entry, iifeOutput, esmOutput|>\n  $ const iifeEntryChunk = iifeOutput.find(chunk => chunk.name === entry);\n  $ const esmEntryChunk = esmOutput.find(chunk => chunk.name === entry);\n\n  <script src=esmEntryChunk.fileName type=\"module\" async></script>\n  <script src=iifeEntryChunk.fileName nomodule async></script>\n</rollup>\n```\n\n…and _boom:_ you now have [a `module`/`nomodule` setup](https://philipwalton.com/articles/using-native-javascript-modules-in-production-today/).\n\n## Options\n\n### `options.babelConfig`\n\nBoth the `.server()` and `.browser()` plugins accept this option.\n\nYou can manually override the builtin Babel configuration by passing a `babelConfig` object. By default, [Babel’s regular config file resolution](https://babeljs.io/docs/en/config-files) will be used.\n\n```js\nmarko.browser({\n  babelConfig: {\n    presets: [\"@babel/preset-env\"],\n  },\n});\n```\n\n### `options.runtimeId`\n\nBoth the `.server()` and `.browser()` plugins accept this option. In fact, you _really_ want to use it with both simultaneously.\n\nIn some cases, you may want to embed multiple isolated copies of Marko on the page. (If you can’t think of why, then don’t worry about this option.)\n\nSince Marko uses some `window` properties to initialize, multiple instances can cause issues. For example, by default Marko checks `window.$components` for server-rendered hydration. Usually you can change these `window` properties by [rendering with `{ $global: { runtimeId: \"MY_MARKO_RUNTIME_ID\" } }` as input](https://markojs.com/docs/rendering/#global-data) on the server, but since `@marko/rollup` usually writes the autoinitialization code for you, instead this plugin exposes a `runtimeId` option to automatically set `$global.runtimeId` to initialize properly in the browser:\n\n```js\nconst runtimeId = \"MY_MARKO_RUNTIME_ID\";\n// Make the `runtimeId` the same across `server` and `browser`, or it’ll error!\nmarko.server({ runtimeId });\nmarko.browser({ runtimeId });\n```\n\n### `options.serialize`\n\nThis option is only available for the `.browser()` plugin. It lets you inspect and transform the `output` chunks before they’re passed to [the `<rollup>` tag](#rollup-tag).\n\nFor example, if you _did_ want to include the `code` property from the Rollup chunk — say, to inline code small enough that it’s not worth the overhead of an HTTP request, you’d try something like the following:\n\n```js\nmarko.browser({\n  serialize(output) {\n    return output.map(({ type, fileName, isEntry, code }) =>\n      type === \"asset\"\n        ? { type, fileName }\n        : {\n            type,\n            name,\n            isEntry,\n            fileName,\n            // only inline code chunks below 1kB\n            inline: code.trim().length < 1024 && code,\n          },\n    );\n  },\n});\n```\n"
  },
  {
    "path": "packages/runtime-class/docs/state.md",
    "content": "# State\n\nThe output of a component is based on input properties passed from its parent as attributes. However, a component may also maintain internal state that it uses to control its view. If Marko detects a change to either input or to the internal state, the view will automatically be updated.\n\n> **ProTip:**\n> Only data that is owned and modified by the component should go into its `state`. State should be exclusively used for data that triggers rerenders. Parents control `input`, and the component controls its own `state`.\n\n## Initializing state\n\nTo use `state` in Marko, you must first create a [class component](./class-components.md) and initialize the state within the [`onCreate`](./class-components.md#oncreateinput-out) method. In class methods, `this.state` may be used and within the template section, a `state` variable is available.\n\n```marko\nclass {\n    onCreate() {\n        this.state = { count: 0 };\n    }\n}\n\n<div>The count is ${state.count}</div>\n```\n\n> **Note:** Only properties that exist when `this.state` is first defined will be watched for changes. If you don't need a property initially, you can set it to `null`.\n\n## Updating state\n\nYou can update `state` in response to DOM events, browser events, ajax calls, etc. When a property on the state changes, the view will be updated to match.\n\n```marko\nclass {\n    onCreate() {\n        this.state = { count: 0 };\n    }\n    increment() {\n        this.state.count++;\n    }\n}\n\n<div>The count is ${state.count}</div>\n<button on-click('increment')>Increment</button>\n```\n\nWe've extended our example above to add a button with an [event handler](./events.md), so that, when clicked, the `state.count` value is incremented.\n\n> **Note:**\n> When browsing existing code, you may see `this.setState('name', value)` being used. This is equivalent to `this.state.name = value`.\n\n### How updates work\n\nWhen a property on `state` is set, the component will be scheduled for an update if the property has changed. All updates are batched together for performance. This means you can update multiple state properties at the same time without causing multiple updates.\n\n> **ProTip:** If you need to know when the update has been applied, you can use `this.once('update', fn)` within a component method.\n\n> **Note:** The state object only watches its properties one level deep. This means updates to nested properties on the state (e.g. `this.state.object.something = newValue`) will not be detected.\n>\n> Using [immutable](https://wecodetheweb.com/2016/02/12/immutable-javascript-using-es6-and-beyond/) data structures is recommended, but if you want to mutate a state property (perhaps push a new item into an array) you can let Marko know it changed using `setStateDirty`.\n>\n> ```js\n> this.state.numbers.push(num);\n>\n> // mark numbers as dirty, because a `push`\n> // won't be automatically detected by Marko\n> this.setStateDirty(\"numbers\");\n> ```\n\n## Cross component state management\n\nThere are various tools available to manage state outside of a single component. Here are some basic guidelines.\n\nTypically we recommend using `attributes` to pass data in to a child component, and children can [emit events](./events.md#emitting-custom-events) to communicate back up to their parents. In some cases this can become cumbersome with deeply nested data dependencies or global state.\n\n### Global/Subtree\n\nFor passing state throughout a component tree without explicit attribute setting throughout the entire app, you can leverage the [`<context>`](https://github.com/marko-js/tags/tree/master/tags/context) tag. This tag can be [installed from npm](./custom-tags.md#using-tags-from-npm).\n\nThis tag allows you to pull state from any level above in the tree and can also be used to pass global state throughout your app.\nContext providers can register event handlers that any child in the tree can trigger similar to the [events API](./events.md).\n\n_fancy-form.marko_\n\n```marko\n<context coupon=input.coupon on-buy(handleBuy)>\n    <!-- Somewhere nested in the container will be the buy button -->\n    <fancy-container/>\n</context>\n```\n\n_fancy-save-button.marko_\n\n```marko\n<context|{ coupon }, emit| from=\"fancy-form\">\n    Coupon: ${coupon}.\n    <button on-click(emit, \"buy\")>Buy</button>\n</context>\n```\n\n> **Note:** Context _couples_ tags together and can limit reuse of components.\n\n### When to use a Redux like pattern\n\nOften the above two approaches are enough, and many people [jump to this part far too quickly](https://medium.com/@dan_abramov/you-might-not-need-redux-be46360cf367). Like `<context>`, often anything stored in redux is `global`. This means that it can (if abused) create components that are hard to reuse, reason about and test. However it is important to understand when a tool like `redux` is useful in any UI library.\n\nRedux provides indirection to updating any state that it controls. This is useful if you need the following:\n\n- Single state update, multiple actions (eg: logging, computed data, etc).\n- Time travel debugging and other [redux-specific tooling](https://redux.js.org/introduction/ecosystem).\n"
  },
  {
    "path": "packages/runtime-class/docs/structure.json",
    "content": "[\n  {\n    \"title\": \"Guides\",\n    \"docs\": [\n      \"Installing\",\n      \"Getting started\",\n      \"Conditionals and lists\",\n      \"Custom tags\",\n      \"State\",\n      \"Styles\",\n      \"Events\",\n      \"Body content\",\n      \"TypeScript\",\n      \"Marko 5 upgrade\",\n      \"Troubleshooting Streaming\"\n    ]\n  },\n  {\n    \"title\": \"Tutorials\",\n    \"docs\": [\"Color Picker\"]\n  },\n  {\n    \"title\": \"Reference\",\n    \"docs\": [\n      \"Rendering\",\n      \"Syntax\",\n      \"Core tags\",\n      \"Class components\",\n      \"marko.json\",\n      \"Compiler\"\n    ]\n  },\n  {\n    \"title\": \"Bundler Integrations\",\n    \"docs\": [\"Vite\", \"Webpack\", \"Rollup\", \"Lasso\"]\n  },\n  {\n    \"title\": \"Server Integrations\",\n    \"docs\": [\"Cloudflare Workers\", \"Express\", \"Fastify\", \"Koa\", \"HTTP\"]\n  },\n  {\n    \"title\": \"Tooling\",\n    \"docs\": [\"Editor plugins\"]\n  },\n  {\n    \"title\": \"Articles\",\n    \"docs\": [\"Marko vs React\", \"Why is Marko Fast\", \"10 Awesome Marko Features\"]\n  }\n]\n"
  },
  {
    "path": "packages/runtime-class/docs/styles.md",
    "content": "# Styles\n\nBoth HTML and Marko provide support for `<style>` tags. However, Marko also provides a special syntax (called a style _block_) which adds support for CSS preprocessors and acts as a hint to bundlers to extract this static css from your templates into a common bundle.\n\n```marko\nstyle {\n    div {\n        color: green;\n    }\n}\n\n<div>Hello World</div>\n```\n\nThese blocks add global css to the page. The above example will not style just the `<div>` in the component, but all divs on the page. Because of this we recommend following a naming convention such as [BEM](https://getbem.com/introduction/). Marko will likely provide a way to automatically scope these styles to the current component [in the future](https://github.com/marko-js/marko/issues/666).\n\n> **Note:** Style blocks (unlike `<style>` tags) do not support `${placeholders}` and must be static.\n\n## Preprocessors\n\nIf you use a css preprocessor, you can add the extension right on `style`. This will cause your bundler of choice to run the contents of the style block through the appropriate processor.\n\n```marko\nstyle.less {\n    button.primary {\n        background-color: @primaryColor;\n    }\n}\n```\n"
  },
  {
    "path": "packages/runtime-class/docs/syntax.md",
    "content": "# Syntax\n\nMarko is HTML _re-imagined_ as a language for building dynamic and reactive user interfaces.\nJust about any valid HTML is valid Marko, but Marko extends the HTML language to allow building modern applications in a declarative way.\n\n> **ProTip:** Marko also supports a [beautiful concise syntax](./concise.md). If you'd prefer to see the documentation using this syntax, just click the `switch syntax` button in the corner of any Marko code sample.\n\n> **Note:** Text at the root of a template (outside any tags) must be prefixed with the [concise syntax's `--`](./concise.md#text) to denote it is text. The parser starts in concise mode and would otherwise try to parse what you meant to be text as a concise tag declaration.\n>\n> ```marko\n> -- Root level text\n> ```\n\n## Tags\n\nAs you might expect, Marko supports all native HTML/SVG/whatever tags and attributes. In addition to these, it also comes with a set of useful [core tags](./core-tags.md). Beyond this, you can also build your own [custom tags](./custom-tags.md) and [install third-party tags](./custom-tags.md#using-tags-from-npm) from `npm`.\n\nAll of these types of tags use the same syntax:\n\n```marko\n<my-tag-name/>\n```\n\nYou don't need to import tags. Marko discovers them based on the folder structure—similar to how you don't specify a full path when referencing a module in `node_modules/`. Marko looks in [`components/`](./custom-tags.md#how-tags-are-discovered) by default and this directory can be configured in [`marko.json`](./marko-json.md).\n\n## Dynamic text\n\nYou can use placeholders (`${}`) to insert a value into the template:\nPlaceholders accept any JavaScript expression and the result of the expression will be inserted into the HTML output:\n\n```marko\n<div>\n    Hello ${\"world\".toUpperCase()}\n</div>\n```\n\nThese values are automatically escaped so you don't accidentally insert malicious code. If you do need to pass unescaped HTML, you can use `$!{}`:\n\n```marko\n<div>\n    Hello $!{\"<b>World</b>\"}\n</div>\n```\n\n> **ProTip:** If necessary, you can escape `$` using a backslash to have it be treated as text instead of a placeholder token:\n>\n> ```marko\n> <div>\n>     Placeholder example: <code>\\${someValue}</code>\n> </div>\n> ```\n\n## Attributes\n\nIn marko attributes are parsed as JavaScript expressions (instead of just strings).\n\n```marko\n<div class=myClassName/>\n<input type=\"checkbox\" checked=isChecked/>\n\n<custom-tag string=\"Hello\"/>\n<custom-tag number=1/>\n<custom-tag template-string=`Hello ${name}`/>\n<custom-tag boolean=true/>\n<custom-tag array=[1, 2, 3]/>\n<custom-tag object={ hello: \"world\" }/>\n<custom-tag variable=name/>\n<custom-tag function-call=user.getName()/>\n```\n\nAttributes that are passed to a custom tag are received as it's [`input`](https://markojs.com/docs/class-components/#input).\n\n> **Note:** Although in most cases you won't see a difference, strings are parsed as JavaScript strings, not HTML strings. Where this comes up most often is using the `pattern` attribute with the `<input>` tag: you need to \"double escape\" your regex escape sequences much like you were passing a string to the [`RegExp` constructor](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp) (or you can use a literal `/regex/`).\n>\n> _Marko Source:_\n>\n> ```marko\n> <input pattern=\"\\\\w+\" type=\"text\"/>\n> <input pattern=/\\w+/ type=\"text\"/>\n> ```\n>\n> _HTML Output:_\n>\n> ```html\n> <input pattern=\"\\w+\" type=\"text\" />\n> ```\n\n### Complex expressions\n\nAny JavaScript expression is a valid attribute value, provided it meets the following criteria:\n\n_It does not contain any spaces_\n\n_It does not contain any right angle brackets (`>`)_\n\n```marko\n<custom-tag sum=1+2 difference=3-4/>\n```\n\n```marko\ncustom-tag sum=1+2 difference=3-4\n```\n\n_Spaces and `>` are contained within matching `()`, `[]`, `{}`, strings and regexps_\n\n```marko\n<custom-tag sum=(1 + 2) difference=(3 - 4) greater=(1 > 2)/>\n```\n\n```marko\ncustom-tag sum=(1 + 2) difference=(3 - 4) greater=(1 > 2)\n```\n\n### Boolean attributes\n\nHTML defines the following rules for [boolean attributes](https://www.w3.org/TR/2008/WD-html5-20080610/semantics.html#boolean):\n\n> The presence of a boolean attribute on an element represents the true value, and the absence of the attribute represents the false value.\n\nIn Marko when an attribute value evaluates to `false`, `null`, or `undefined`, the attribute is not included in the output. If an attribute value is `true`, only the attribute name is included in the output.\n\n_Marko Source:_\n\n```marko\n<input type=\"checkbox\" checked=true>\n<input type=\"checkbox\" checked=false>\n```\n\nRenders the following HTML:\n\n_HTML Output:_\n\n```html\n<input type=\"checkbox\" checked /> <input type=\"checkbox\" />\n```\n\nSimilarly, when only an attribute name is defined, it is equivalent to specifying the attribute with a value of `true`:\n\n```marko\n<!-- These are equivalent -->\n<custom-menu expanded/>\n<custom-menu expanded=true/>\n```\n\n> **ProTip:**\n> You can take advantage of the way Marko handles boolean attributes to conditionally render attributes:\n>\n> _Marko Source:_\n>\n> ```marko\n> <div class=(active && \"tab-active\")>Hello</div>\n> ```\n>\n> With a value of `true` for `active`, the output would be the following:\n>\n> _HTML Output:_\n>\n> ```html\n> <div class=\"tab-active\">Hello</div>\n> ```\n>\n> With a value of `false` for `active`, the output would be the following:\n>\n> _HTML Output:_\n>\n> ```html\n> <div>Hello</div>\n> ```\n\n### Dynamic attributes\n\nThe spread syntax (`...`) can be used to merge in an object as attributes to a tag:\n\n_Marko Source:_\n\n```marko\n<a ...attrs target=\"_blank\">eBay</a>\n```\n\nWith `attrs` as the following value:\n\n```js\n{\n    class: \"active\",\n    href: \"https://ebay.com/\"\n}\n```\n\nwould output the following HTML:\n\n_HTML Output:_\n\n```html\n<a class=\"active\" href=\"https://ebay.com/\" target=\"_blank\">eBay</a>\n```\n\n> **ProTip:**\n> With spread attributes order matters.\n> You can take advantage of this to implement both default attributes, and enforced attributes.\n>\n> ```marko\n> <custom-tag ...defaults ...userSupplied class=\"overridden\"/>\n> ```\n\n> **ProTip:**\n> You can provide `undefined` to a spread attribute which will output nothing.\n\n### Style attribute\n\nYou can pass a string as the value of `style` just as you would in HTML, in addition Marko supports passing an object or array as the value of the `style` attribute:\n\n_Marko Source:_\n\n```marko\n<!-- string: -->\n<div style=\"display:block;margin-right:16px\"/>\n\n<!-- object: -->\n<div style={ display: \"block\", color: false, marginRight: 16 }/>\n\n<!-- array: -->\n<div style=[\"display:block\", null, { marginRight: 16 }]/>\n```\n\nIn all cases, the output will be the same:\n\n_HTML Output:_\n\n```html\n<div style=\"display:block;margin-right:16px;\"></div>\n```\n\n### Class attribute\n\nThe `class` attribute also supports receiving an object or array (in addition to a string) as shown below:\n\n_Marko Source:_\n\n```marko\n<!-- string: -->\n<div class=\"a c\"/>\n\n<!-- object: -->\n<div class={ a:true, b:false, c:true }/>\n\n<!-- array: -->\n<div class=[\"a\", null, { c:true }]/>\n```\n\nIn all cases, the output will be the same:\n\n_HTML Output:_\n\n```html\n<div class=\"a c\"></div>\n```\n\n### Shorthand attributes\n\nMarko provides a shorthand for declaring classes and ids on an element, including interpolation. Given `size` is the string `small`:\n\n_Marko Source:_\n\n```marko\n<div.my-class/>\n<span#my-id/>\n<button#submit.primary.large/>\n<button.button--${size}></button>\n```\n\nRenders the following HTML:\n\n_HTML Output:_\n\n<!-- prettier-ignore -->\n```html\n<div class=\"my-class\"></div>\n<span id=\"my-id\"></span>\n<button id=\"submit\" class=\"primary large\"></button>\n<button class=\"button--small\"></button>\n```\n\n## Parameters\n\nWhen a tag renders its body content, it may provide data which can be received by defining parameters after the tagname. Parameters are available to the tag's body content.\n\nThis is a powerful feature that allows components to provide functionality and data while giving you full control over what gets rendered.\n\nIn the following example, `<mouse>` provides a parameter which we have named `position`:\n\n```marko\n<mouse|position|>\n   The mouse is at ${position.x}, ${position.y}!\n</mouse>\n```\n\n> `<mouse>` would [render its body](./body-content.md) and provide the position similar to this: `<${input.renderBody} x=0 y=0/>`.\n\n> **ProTip:** Tag `|parameters|` are treated as regular JavaScript function parameters. This means you can destructure, set default values, etc.\n>\n> ```marko\n> <mouse|{ x, y }|>\n>   The mouse is at ${x}, ${y}!\n> </mouse>\n> ```\n\n> **Note:** Parameters are not available to attributes, only to the tag body.\n>\n> ```marko\n> <mouse|position| something=position>\n>   ReferenceError when setting the \"something\" attribute\n> </mouse>\n> ```\n\nParameters are used by some of Marko's [core tags](./core-tags.md) like the [`<for>`](./core-tags.md#for) and [`<await>`](./core-tags.md#await) tags.\n\n## Arguments\n\nSome tags and attributes accept javascript style `arguments`. Arguments are denoted by parenthesis following the tag or attribute name. Arguments provide a way to pass unnamed data to a tag.\n\n```marko\n<if(true)>\n    <strong>Marko is awesome</strong>\n</if>\n\n<h1 body-only-if(skipHeading)>\n    Conditional display heading, but always show content!\n</h1>\n```\n\nArguments are used by some of Marko's [core tags](./core-tags.md) like the [`<if>`](./core-tags.md#if-else-if-else) tag and [`body-only-if`](./core-tags.md#body-only-if) attribute displayed above.\n\nPreviously you could also use them in your own [custom tags](./custom-tags.md) however it is now recommended to use [dynamic attributes](#dynamic-attributes).\n\n## Dynamic tagname\n\nThe `<${dynamic}>` syntax is used to render a tag or component that isn't determined until runtime. It can also be used within a [custom tag](./custom-tags.md) to render body content that was passed to that tag.\n\n_Marko Source:_\n\n```marko\n<${href ? 'a' : 'button'} href=href>\n    Click me!\n</>\n```\n\nWith `href` as `https://ebay.com` would output the following HTML:\n\n_HTML Output:_\n\n```html\n<a href=\"https://ebay.com\">Click me!</a>\n```\n\nAnd with `href` as `undefined` would output the following HTML:\n\n_HTML Output:_\n\n```html\n<button>Click me!</button>\n```\n\nAs a shorthand if there is a variable in scope and [no other matching tag is discovered](#how-tags-are-discovered) the wrapping `${}` is unnecessary.\n\nFor example the following are equivalent:\n\n```marko\n$ const MyTag = href ? 'a' : 'button';\n<${MyTag}/>\n<MyTag/>\n```\n\n> **ProTip:**\n> If you find that you have a wrapper element that is conditional, but whose body should always be rendered then you can use a null dynamic tag. For example, to only render a wrapping `<a>` tag if there is a valid URL then you could do the following:\n>\n> _Marko Source:_\n>\n> ```marko\n> <${input.linkUrl ? \"a\" : null} href=input.linkUrl >\n>    Some body content\n> </>\n> ```\n>\n> Given a value of `\"http://localhost/\"` for the `input.linkUrl` variable: , the output would be the following:\n>\n> _HTML Output:_\n>\n> ```html\n> <a href=\"http://localhost/\"> Some body content </a>\n> ```\n>\n> Given a value of `undefined` for the `input.linkUrl` variable: , the output would be the following:\n>\n> _HTML Output:_\n>\n> ```html\n> Some body content\n> ```\n\n### Dynamic components\n\nInstead of just strings, the dynamic tagname can also be a component:\n\n```marko\nimport componentA from \"<component-a>\";\nimport componentB from \"<component-b>\";\n\n<${useA ? componentA : componentB}/>\n```\n\n> **ProTip:**\n> You can also switch between a normal HTML tag and a component:\n>\n> ```marko\n> import FancyButton from \"<fancy-button>\";\n>\n> <${isFancy ? FancyButton : 'button'}>\n>     Button text\n> </>\n> ```\n\n> **Note:** You **cannot** reference a Marko custom tag or macro using a name string:\n>\n> _Marko Source:_\n>\n> ```marko\n> <${isFancy ? 'fancy-button' : 'button'}>\n>     Button text\n> </>\n> ```\n>\n> With `isFancy` as `true` would output the following HTML:\n>\n> _HTML Output:_\n>\n> ```html\n> <fancy-button>Button text</fancy-button>\n> ```\n\n### Dynamic body content\n\nWhen a custom tag receives [body content](./body-content.md), it is passed as a `renderBody` property. To render this content you can pass the `renderBody` as the dynamic tagname.\n\n```marko\n<div class=\"container\">\n    <${input.renderBody}/>\n</div>\n```\n\n## Attribute Tag\n\nAs the name implies, `<@attribute-tags>` are special attributes that take the form of tags. They allow you to pass named body sections to a [custom tag](./custom-tags.md).\n\nThe core `<await>` tag allows you to pass multiple body sections that it will conditionally render based on the state of the promise.\n\n```marko\n<await(somePromise)>\n    <@then|result|>\n        The promise resolved: ${result}\n    </@then>\n    <@catch|error|>\n        The promise rejected: ${error.message}\n    </@catch>\n</await>\n```\n\nThese body sections are also commonly used to create layouts:\n\n```marko\n<page-layout>\n    <@heading>\n        <h1>Hello</h1>\n    </@heading>\n    <@body>\n        <p>Lorem ipsum....</p>\n    </@body>\n</page-layout>\n```\n\nThese tags are passed to the custom tag as objects with a `renderBody`, it can then [render its body content](./body-content.md).\n\n> **Note:**\n> Attribute tags can have their own parameters, but like attributes, they cannot access the parameters of their parent tag:\n>\n> ```marko\n> <list|item|>\n>   ${item.name}\n>   <@separator>${item} (oops, ReferenceError)</@separator>\n> </list>\n> ```\n\n## Inline JavaScript\n\nTo execute JavaScript in your template you can insert a Javascript statement using the `$ <code>` syntax.\n\nA line that starts with a `$` followed by a space will execute the code that follows.\n\n```marko\n$ const name = \"World\";\n\n<div>\n    Hello, ${name}\n    $ console.log(\"The value rendered was\", name);\n</div>\n```\n\nA statement may continue onto subsequent lines if new lines are bounded by `{}`, `[]`, `()`, ` `` `, or `/**/`:\n\n```marko\n$ const person = {\n    name: \"Frank\",\n    age: 32\n};\n```\n\nMultiple statements or an unbounded statement may be used by wrapping the statement(s) in a block:\n\n```marko\n$ {\n    const bgColor = getRandomColor();\n    const textColor = isLight(bgColor)\n        ? \"black\"\n        : \"white\";\n}\n```\n\n> **ProTip:** Any JavaScript statement can be used here, even `debugger`:\n>\n> ```marko\n> <div>\n>     ${textColor}\n>     $ debugger; // Quickly debug `textColor`\n> </div>\n> ```\n\n> **ProTip:** If necessary, you can escape `$` using a backslash to have it be treated as text instead of a placeholder token:\n>\n> ```marko\n> <p>You can run JS in a Marko template like this:</p>\n> <code>\n>     \\$ var num = 123;\n> </code>\n> ```\n\n> **ProTip:** If you find yourself writing a lot of inline JS, consider moving it out to an external file and then [`import`](#importing-external-files) it.\n\n### Static JavaScript\n\nInline JavaScript will run each time your template is rendered, but the JavaScript code that follows `static` will only run once when the template is loaded. It must be declared at the top level and does not have access to values passed in at render time.\n\n```marko\nstatic var count = 0;\nstatic var formatter = new Formatter();\n\nstatic function sum(a, b) {\n    return a + b;\n};\n\n<div>${formatter.format(sum(2, 3))}</div>\n```\n\nLike inline Javascript, multiple statements or an unbounded statement may be used by wrapping the statement(s) in a block:\n\n```marko\nstatic {\n    var base = 2;\n    function sum(a, b) {\n        return base + a + b;\n    };\n}\n```\n\n### Importing external files\n\nThe `import` statement is used to access data and functions from external files. It follows the same syntax as the [JavaScript `import` statement](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import).\n\n```marko\nimport sum from './utils/sum';\n<div>The sum of 2 + 3 is ${sum(2, 3)}</div>\n```\n\nAs a shorthand you can also import components by providing it's html tag name wrapped in angle brackets, eg:\n\n```marko\nimport MyComponent from \"<my-component>\"\n```\n\nThis is especially useful with the [dynamic tag name syntax](./syntax.md#dynamic-tagname) and uses the same [component discovery](./custom-tags.md#how-tags-are-discovered) as if the tag was used in the template.\n\n## Comments\n\nStandard HTML comments can be used and will be stripped out of the rendered output.\nAt the top level of the template JavaScript comments (`// comment` and `/** comment */`) can also be used.\n\n```marko\n<!-- This is a comment that will not be rendered -->\n\n<h1>Hello</h1>\n```\n\nIf you would like for your HTML comment to show up in the final output then you can use the [`html-comment` core tag](./core-tags.md#html-comment).\n"
  },
  {
    "path": "packages/runtime-class/docs/troubleshooting-streaming.md",
    "content": "# Troubleshooting HTTP Streams\n\n[The way Marko streams HTML](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Transfer-Encoding) is old and well-supported, but default configurations and assumptions by other software can foil it. This page describes some known culprits that may buffer your Node server’s output HTTP streams.\n\n## Reverse proxies/load balancers\n\n- Turn off proxy buffering, or if you can’t, set the proxy buffer sizes to be reasonably small.\n\n- Make sure the “upstream” HTTP version is 1.1 or higher; HTTP/1.0 and lower do not support streaming.\n\n- Some software doesn’t support HTTP/2 or higher “upstream” connections at all or very well — if your Node server uses HTTP/2, you may need to downgrade.\n\n- Check if “upstream” connections are `keep-alive`: overhead from closing and reopening connections may delay responses.\n\n- For typical modern webpage file sizes, the following bullet points probably won’t matter. But if you want to stream **small chunks of data with the lowest latency**, investigate these sources of buffering:\n  - Automatic gzip/brotli compression may have their buffer sizes set too high; you can tune their buffers to be smaller for faster streaming in exchange for slightly worse compression.\n\n  - You can [tune HTTPS record sizes for lower latency, as described in High Performance Browser Networking](https://hpbn.co/transport-layer-security-tls/#optimize-tls-record-size).\n\n  - Turning off MIME sniffing with [the `X-Content-Type-Options`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options) header eliminates browser buffering at the very beginning of HTTP responses\n\n### NGiNX\n\nMost of NGiNX’s relevant parameters are inside [its builtin `http_proxy` module](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffering):\n\n```nginx\nproxy_http_version 1.1; # 1.0 by default\nproxy_buffering off; # on by default\n```\n\n### Apache\n\nApache’s default configuration works fine with streaming, but your host may have it configured differently. The relevant Apache configuration is inside [its `mod_proxy` and `mod_proxy_*` modules](https://httpd.apache.org/docs/2.4/mod/mod_proxy.html) and their [associated environment variables](https://httpd.apache.org/docs/2.4/env.html).\n\n## CDNs\n\nContent Delivery Networks (CDNs) consider efficient streaming one of their best features, but it may be off by default or if certain features are enabled.\n\n- For Fastly or another provider that uses VCL configuration, check [if backend responses have `beresp.do_stream = true` set](https://developer.fastly.com/reference/vcl/variables/backend-response/beresp-do-stream/).\n\n- Some [Akamai features designed to mitigate slow backends can ironically slow down fast chunked responses](https://community.akamai.com/customers/s/question/0D50f00006n975d/enabling-chunked-transfer-encoding-responses). Try toggling off Adaptive Acceleration, Ion, mPulse, Prefetch, and/or similar performance features. Also check for the following in the configuration:\n\n  ```xml\n  <network:http.buffer-response-v2>off</network:http.buffer-response-v2>\n  ```\n\n## Node.js itself\n\nFor extreme cases where [Node streams very small HTML chunks with its built-in compression modules](https://github.com/marko-js/marko/pull/1641), you may need to tweak the compressor stream settings. Here’s an example with `createGzip` and its `Z_PARTIAL_FLUSH` flag:\n\n```js\nimport http from \"http\";\nimport zlib from \"zlib\";\n\nimport MarkoTemplate from \"./something.marko\";\n\nhttp\n  .createServer(function (request, response) {\n    response.writeHead(200, { \"content-type\": \"text/html;charset=utf-8\" });\n    const templateStream = MarkoTemplate.stream({});\n    const gzipStream = zlib.createGzip({\n      flush: zlib.constants.Z_PARTIAL_FLUSH,\n    });\n    templateStream.pipe(outputStream).pipe(response);\n  })\n  .listen(80);\n```\n"
  },
  {
    "path": "packages/runtime-class/docs/typescript.md",
    "content": "# TypeScript in Marko\n\n> **Note:** Types are supported in Marko v5.22.7+ and Marko v4.24.6+\n\nMarko’s TypeScript support offers in-editor error checking, makes refactoring less scary, verifies that data matches expectations, and even helps with API design.\n\nOr maybe you just want more autocomplete in VSCode. That works too.\n\n## Enabling TypeScript in your Marko project\n\nThere are two (non-exclusive) ways to add TypeScript to a Marko project:\n\n- **For sites and web apps**, you can place [a `tsconfig.json` file](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html) at the project root:\n  <pre>\n  📁 components/\n  📁 node_modules/\n  <img src=\"./icons/marko.svg\" width=16> index.marko\n  📦 package.json\n  <mark><img src=\"./icons/ts.svg\" width=16> tsconfig.json</mark>\n  </pre>\n- **If you’re [publishing packages of Marko tags](https://markojs.com/docs/custom-tags/#publishing-tags-to-npm)**, add the following to [your `marko.json`](./marko-json.md):\n  ```json\n  \"script-lang\": \"ts\"\n  ```\n  This will automatically expose type-checking and autocomplete for the published tags.\n\n> **ProTip**: You can also use the `script-lang` method for sites and apps.\n\n## Typing a tag's `input`\n\nA `.marko` file will use any exported `Input` type for [that file’s `input` object](./class-components.md#input).\n\nThis can be `export type Input` or `export interface Input`.\n\n### Example\n\n_PriceField.marko_\n\n```marko\nexport interface Input {\n  currency: string;\n  amount: number;\n}\n\n<label>\n  Price in ${input.currency}:\n  <input type=\"number\" value=input.amount min=0 step=0.01>\n</label>\n```\n\nYou can also import, reuse, and extend `Input` interfaces from other `.marko` or `.ts` files:\n\n```marko\nimport { Input as PriceInput } from \"<PriceField>\";\nimport { ExtraTypes } from \"lib/utils.ts\";\nexport type Input = PriceInput & ExtraTypes;\n```\n\n```marko\nimport { Input as PriceInput } from \"<PriceField>\";\nexport interface Input extends PriceInput {\n  discounted: boolean;\n  expiresAt: Date;\n};\n```\n\n### Generic `Input`s\n\n[Generic Types and Type Parameters](https://www.typescriptlang.org/docs/handbook/2/generics.html) on `Input` are recognized throughout the entire `.marko` template (excluding [static statements](./syntax.md#static-javascript)).\n\nFor example, if you set up a component like this:\n\n_components/my-select.marko_\n\n```marko\nexport interface Input<T> {\n  options: T[];\n  onSelect: (newVal: T) => unknown;\n}\n\nstatic function staticFn() {\n  // can NOT use `T` here\n}\n\n$ const instanceFn = (val: T) => {\n  // can use `T` here\n}\n\n// can use `as T` here\n<select on-input(evt => input.onSelect(options[evt.target.value] as T))>\n  <for|value, i| of=input.options>\n    <option value=i>${value}</option>\n  </for>\n</select>\n```\n\n…then your editor will figure out the types of inputs to that component:\n\n```marko\n<my-select options=[1,2,3] onSelect=val => {}/>\n                                 // ^^^ number\n\n<my-select options=[\"M\",\"K\",\"O\"] onSelect=val => {}/>\n                                       // ^^^ string\n```\n\n## Built-in Marko Types\n\nMarko exposes [type definitions](https://github.com/marko-js/marko/blob/main/packages/runtime-class/index.d.ts) you can reuse in [a TypeScript namespace](https://www.typescriptlang.org/docs/handbook/namespaces.html) called `Marko`:\n\n- **`Marko.Template<Input, Return>`**\n  - The type of a `.marko` file\n  - `typeof import(\"./template.marko\")`\n- **`Marko.TemplateInput<Input>`**\n  - The object accepted by the render methods of a template. It includes the template's `Input` as well as `$global` values.\n- **`Marko.Body<Params, Return>`**\n  - The type of the [body content](./body-content.md) of a tag (`renderBody`)\n- **`Marko.Component<Input, State>`**\n  - The base class for a [class component](./class-components.md)\n- **`Marko.Renderable`**\n  - Values accepted by the [`<${dynamic}/>` tag](./syntax.md#dynamic-tagname)\n  - `string | Marko.Template | Marko.Body | { renderBody: Marko.Body}`\n- **`Marko.Out`**\n  - The render context with methods like `write`, `beginAsync`, etc.\n  - `ReturnType<template.render>`\n- **`Marko.Global`**\n  - The type of the object in `$global` and `out.global` that can be passed to a template's render methods as the `$global` property.\n- **`Marko.RenderResult`**\n  - The [result](./rendering.md#renderresult) of rendering a Marko template\n  - `ReturnType<template.renderSync>`\n  - `Awaited<ReturnType<template.render>>`\n- **`Marko.Emitter`**\n  - `EventEmitter` from `@types/node`\n- **`Marko.NativeTags`**\n  - `Marko.NativeTags`: An object containing all native tags and their types\n- **`Marko.Input<TagName>`** and **`Marko.Return<TagName>`**\n  - Helpers to extract the input and return types native tags (when a string is passed) or a custom tag.\n- **`Marko.BodyParameters<Body>`** and **`Marko.BodyReturnType<Body>`**\n  - Helpers to extract the parameters and return types from the specified `Marko.Body`\n- **`Marko.AttrTag<T>`**\n  - Used to represent types for [attributes tags](./body-content.md#named-body-content)\n  - A single attribute tag, with a `[Symbol.iterator]` to consume any repeated tags.\n\n### Typing `renderBody`\n\nThe most commonly used type from the `Marko` namespace is `Marko.Body` which can be used to type `input.renderBody`:\n\n_child.marko_\n\n```marko\nexport interface Input {\n  renderBody?: Marko.Body;\n}\n```\n\nHere, the following will be acceptable values:\n\n_index.marko_\n\n```marko\n<child/>\n<child>Text in render body</child>\n<child>\n  <div>Any combination of components</div>\n</child>\n```\n\nPassing other values (including components) will cause a type error:\n\n_index.marko_\n\n```marko\nimport OtherTag from \"<other-tag>\";\n<child renderBody=OtherTag/>\n```\n\n### Typing Tag Parameters\n\nTag parameters are passed to the `renderBody` by the child tag. For this reason, `Marko.Body` also allows typing of its parameters:\n\n_for-by-two.marko_\n\n```marko\nexport interface Input {\n  to: number;\n  renderBody: Marko.Body<[number]>\n}\n\n<for|i| from=0 to=input.to by=2>\n  <${input.renderBody}(i)/>\n</for>\n```\n\n_index.marko_\n\n```marko\n<for-by-two|i| to=10>\n  <div>${i}</div>\n</for-by-two>\n```\n\n### Extending native tag types within a Marko tag\n\nThe types for native tags are accessed via the global `Marko.Input` type. Here's an example of a component that extends the `button` html tag:\n\n_color-button.marko_\n\n```marko\nexport interface Input extends Marko.Input<\"button\"> {\n  color: string;\n  renderBody?: Marko.Body;\n}\n\n$ const { color, renderBody, ...restOfInput } = input;\n\n<button style=`color: ${color}` ...restOfInput>\n  <${renderBody}/>\n</button>\n```\n\n### Registering a new native tag (eg for custom elements).\n\n```ts\ninterface MyCustomElementAttributes {\n  // ...\n}\n\ndeclare global {\n  namespace Marko {\n    interface NativeTags {\n      // By adding this entry, you can now use `my-custom-element` as a native html tag.\n      \"my-custom-element\": MyCustomElementAttributes;\n    }\n  }\n}\n```\n\n### Registering new \"global\" HTML Attributes\n\n```ts\ndeclare global {\n  namespace Marko {\n    interface HTMLAttributes {\n      \"my-non-standard-attribute\"?: string; // Adds this attribute as available on all HTML tags.\n    }\n  }\n}\n```\n\n### Registering CSS Properties (eg for custom properties)\n\n```ts\ndeclare global {\n  namespace Marko {\n    namespace CSS {\n      interface Properties {\n        \"--foo\"?: string; // adds a support for a custom `--foo` css property.\n      }\n    }\n  }\n}\n```\n\n## TypeScript Syntax in `.marko`\n\nAny [JavaScript expression in Marko](./syntax.md#inline-javascript) can also be written as a TypeScript expression.\n\n### Tag Type Parameters\n\n```marko\n<child <T>|value: T|>\n  ...\n</child>\n```\n\n### Tag Type Arguments\n\n_components/child.marko_\n\n```marko\nexport interface Input<T> {\n  value: T;\n}\n```\n\n_index.marko_\n\n```marko\n// number would be inferred in this case, but we can be explicit\n<child<number> value=1 />\n```\n\n### Method Shorthand Type Parameters\n\n```marko\n<child process<T>() { /* ... */ } />\n```\n\n### Attribute Type Assertions\n\nThe types of attribute values can _usually_ be inferred. When needed, you can assert values to be more specific with [TypeScript’s `as` keyword](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#type-assertions):\n\n```marko\n<some-component\n  number=1 as const\n  names=[] as string[]\n/>\n```\n\n# JSDoc Support\n\nFor existing projects that want to incrementally add type safety, adding full TypeScript support is a big leap. This is why Marko also includes full support for [incremental typing via JSDoc](https://www.typescriptlang.org/docs/handbook/intro-to-js-ts.html).\n\n## Setup\n\nYou can enable type checking in an existing `.marko` file by adding a `// @ts-check` comment at the top:\n\n```js\n// @ts-check\n```\n\nIf you want to enable type checking for all Marko & JavaScript files in a JavaScript project, you can switch to using a [`jsconfig.json`](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html#using-tsconfigjson-or-jsconfigjson). You can skip checking some files by adding a `// @ts-nocheck` comment to files.\n\nOnce that has been enabled, you can start by typing the input with JSDoc. Here's an example component with typed `input`:\n\n```marko\n// @ts-check\n\n/**\n * @typedef {{\n *   firstName: string,\n *   lastName: string,\n * }} Input\n */\n\n<div>${firstName} ${lastName}</div>\n```\n\n## With a separate `component.js` file\n\nMany components in existing projects adhere to the following structure:\n\n<pre>\n📁 components/\n  📁 color-rotate-button/\n    <img src=\"./icons/marko.svg\" width=16> index.marko\n    <img src=\"./icons/js.svg\" width=16> component.js\n</pre>\n\nThe `color-rotate-button` takes a list of colors and moves to the next one each time the button is clicked:\n\n```marko\n<color-rotate-button colors=[\"red\", \"blue\", \"yellow\"]>\n  Next Color\n</color-rotate-button>\n```\n\nHere is an example of how this `color-rotate-button` component could be typed:\n\n_components/color-rotate-button/component.js_\n\n```js\n// @ts-check\n\n/**\n * @typedef {{\n *   colors: string[],\n *   renderBody: Marko.Renderable\n * }} Input\n * @typedef {{\n *   colorIndex: number\n * }} State\n * @extends {Marko.Component<Input, State>}\n */\nexport default class extends Marko.Component {\n  onCreate() {\n    this.state = {\n      colorIndex: 0,\n    };\n  }\n\n  rotateColor() {\n    this.state.colorIndex =\n      (this.state.colorIndex + 1) % this.input.colors.length;\n  }\n}\n```\n\n_components/color-rotate-button/index.marko_\n\n```marko\n// @ts-check\n\n/* Input will be automatically imported from `component.js`! */\n\n<button\n  onClick('rotateColor')\n  style=`color: ${input.colors[state.colorIndex]}`>\n  <${input.renderBody}/>\n</button>\n```\n\n# CI Type Checking\n\nFor type checking Marko files outside of your editor there is the [\"@marko/type-check\" cli](https://github.com/marko-js/language-server/tree/main/packages/type-check).\nCheck out the CLI documentation for more information.\n"
  },
  {
    "path": "packages/runtime-class/docs/vite.md",
    "content": "# Marko + Vite\n\n# Installation\n\n```console\nnpm install @marko/vite vite\n```\n\n# Example config\n\n```javascript\nimport { defineConfig } from \"vite\";\nimport marko from \"@marko/vite\";\nexport default defineConfig({\n  plugins: [marko()],\n});\n```\n\n# Linked Mode\n\nBy default this plugin operates in `linked` mode (you can disabled this by passing [`linked: false` as an option](#optionslinked)). In `linked` mode the plugin automatically discovers all of the entry `.marko` files while compiling the server, and tells `Vite` which modules to load in the browser.\n\nWith this you _do not_ create `.html` files for `Vite`, it's Marko all the way down!\nScripts, styles and other content that _would have_ been injected into the `.html` files is instead automatically injected into your `.marko` templates.\n\nIn this mode you must use the [Vite SSR API](https://vitejs.dev/guide/ssr.html#setting-up-the-dev-server).\n\nHere's an example using `express`.\n\n```js\nimport { createServer } from \"vite\";\n\nconst app = express();\nlet loadTemplate;\n\nif (process.env.NODE_ENV === \"production\") {\n  // Use Vite's built asset in prod mode.\n  loadTemplate = () => import(\"./dist\");\n} else {\n  // Hookup the vite dev server.\n  const vite = await createServer({\n    server: { middlewareMode: true }\n  });\n\n  app.use(vite.middlewares);\n  loadTemplate = () => vite.ssrLoadModule(\"./template.marko\");\n}\n\napp.get(\"/\", async (req, res) => {\n  const template = (await loadTemplate()).default;\n  // When the template is loaded, it will automatically have `vite` assets inlined.\n  template.render({ hello: \"world\" }, res);\n);\n\napp.listen(3000);\n```\n\n> For a more real world setup check out our [vite express](https://github.com/marko-js/examples/tree/master/examples/vite-express) example app.\n\n# Options\n\n### options.babelConfig\n\nYou can manually override Marko's Babel configuration by passing a `babelConfig` object to the `@marko/vite` plugin. By default Babel's regular [config file resolution](https://babeljs.io/docs/en/config-files) will be used.\n\n```javascript\nmarko({\n  babelConfig: {\n    presets: [\"@babel/preset-env\"],\n  },\n});\n```\n\n### options.runtimeId\n\nIn some cases you may want to embed multiple isolated copies of Marko on the page. Since Marko relies on some `window` properties to initialize this can cause issues. For example, by default Marko will read the server rendered hydration code from `window.$components`. In Marko you can change these `window` properties by rendering with `{ $global: { runtimeId: \"MY_MARKO_RUNTIME_ID\" } }` as input on the server side.\n\nThis plugin exposes a `runtimeId` option produces output that automatically sets `$global.runtimeId` on the server side and initializes properly in the browser.\n\n```js\nmarko({ runtimeId: \"MY_MARKO_RUNTIME_ID\" });\n```\n\n### options.linked\n\nSet this to `false` to opt out of [linked mode](#linked-mode). When this is false, the plugin will only handle resolving and transforming `.marko` files.\n"
  },
  {
    "path": "packages/runtime-class/docs/webpack.md",
    "content": "# Marko + Webpack\n\n# Installation\n\n> `@marko/webpack` >= 7 Only supports Marko 5+.\n> For Marko 4 support use `@marko/webpack@6`.\n\n```console\nnpm install @marko/webpack\n```\n\n### Loader: `@marko/webpack/loader`\n\nThe loader portion of this module can be used standalone and simply transforms your Marko templates into the appropriate JavaScript depending on your webpack target.\n\nYou can override the output by adding a `target` option to the loader of `target: \"server\" | \"browser\"`.\n\n### Plugin: `@marko/webpack/plugin`\n\nThe plugin actually creates two separate webpack plugins, the `browser` plugin and the `server` plugin.\n\nThese are intended to be used in a isomorphic [webpack multi compiler](https://github.com/webpack/webpack/tree/master/examples/multi-compiler) where you are bundling both the server and the browser. The way it works is that the server plugin is going to analyze the top level Marko components in your server and automatically communicate with the browser compiler to retrieve the assets for that template.\n\nThis plugin also analyzes the top level Marko templates and determines if it is possible for them to rerender (currently the heuristic is simply does the component have an associated `class` or `component.js`). The plugin will automatically skip sending down any unnecessary top level templates to the browser.\n\nThe end result is that you setup a multi compiler (as shown below) and you can simply import Marko templates, and all assets are automatically generated and inlined into an optimized server response. No need to keep track of a webpack manifest yourself!\n\n### Tag: `<webpack-assets>`\n\nThe `<webpack-assets>` tag can be used along with the plugin in a multi-compiler setup. This tag allows you to inject `<script>`/`<style>` tags into a server-rendered template for the assets of an entry in the client compiler.\n\n#### Example Usage\n\n```marko\n<webpack-assets entry=\"tracking\"/>\n```\n\n#### Example Config\n\n```js\n// ...\nexport default [\n  {\n    entry: \"./server.js\",\n    plugins: [markoPlugin.server],\n    // ...\n  },\n  {\n    // ...\n    entry: {\n      tracking: \"./tracking.js\",\n    },\n    plugins: [markoPlugin.browser],\n  },\n];\n```\n\n# Example\n\n```javascript\nimport MarkoPlugin from \"@marko/webpack/plugin\";\n\nconst markoPlugin = new MarkoPlugin();\n\nexport default [\n  {\n    entry: \"./server.js\",\n    module: {\n      rules: [\n        {\n          test: /\\.marko$/,\n          loader: \"@marko/webpack/loader\",\n        },\n      ],\n    },\n    plugins: [markoPlugin.server],\n  },\n  {\n    rules: [\n      {\n        test: /\\.marko$/,\n        loader: \"@marko/webpack/loader\",\n      },\n      // If using `style` blocks with Marko you must use an appropriate loader\n      {\n        test: /\\.css$/,\n        use: [\"style-loader\", \"css-loader\"],\n      },\n    ],\n    plugins: [markoPlugin.browser],\n  },\n];\n```\n\n## Babel options (Marko 5+)\n\nIf you are using Marko 5 with this plugin you can manually override the Babel configuration used by passing a `babelConfig` object along side the `@marko/webpack/loader`. By default Babels regular [config file resolution](https://babeljs.io/docs/en/config-files) will be used.\n\n```javascript\nexport default {\n    module: {\n      rules: [\n        {\n          test: /\\.marko$/,\n          loader: \"@marko/webpack/loader\",\n          options: {\n            babelConfig: {\n              presets: [\n                [\"@babel/preset-env\", { node: \"current\" }]\n              ]\n            }\n          }\n        }\n      ]\n    }\n  },\n```\n\n## Multiple client-side compilers\n\nSometimes you need multiple compilers for your client-side bundles. For example, with [`i18n`](https://github.com/webpack/webpack/tree/master/examples/i18n) or [even shipping dynamic runtime bundles to the browser](https://github.com/eBay/arc/tree/master/packages/arc-webpack).\n\nThe `@marko/webpack` plugin’s `.browser` property can be passed to multiple Webpack compilers. While rendering at runtime, you can provide a `$global.buildName` property to choose which assets from the Webpack compiler are included in the page.\n\nFor example, with the Webpack internationalization plugin, you might have a config like the following:\n\n```js\nimport MarkoPlugin from \"@marko/webpack/plugin\";\nimport I18nPlugin from \"i18n-webpack-plugin\";\nimport germanTranslations from \"./de.json\";\n\nconst languages = {\n  en: null,\n  de: germanTranslations,\n};\n\nconst markoPlugin = new MarkoPlugin();\n\nexport default [\n  {\n    name: \"Server\",\n    entry: \"./server.js\",\n    module: {\n      rules: [\n        {\n          test: /\\.marko$/,\n          loader: \"@marko/webpack/loader\",\n        },\n      ],\n    },\n    plugins: [markoPlugin.server],\n  },\n  ...Object.keys(languages).map((language) => ({\n    name: `Browser-${language}`,\n    rules: [\n      {\n        test: /\\.marko$/,\n        loader: \"@marko/webpack/loader\",\n      },\n      // If using `style` blocks with Marko you must use an appropriate loader\n      {\n        test: /\\.css$/,\n        use: [\"style-loader\", \"css-loader\"],\n      },\n    ],\n    plugins: [new I18nPlugin(languages[language]), markoPlugin.browser],\n  })),\n];\n```\n\nWith the above config, you can render your top-level Marko template server-side with a `$global.buildName` like so:\n\n```javascript\ntemplate.render({ $global: { buildName: \"Browser-de\" } });\n```\n\nThat will automatically send German assets. However, what you _probably_ want instead of always serving German is conditionally sending appropriate assets for a user’s locale. This can be done like so:\n\n```javascript\ntemplate.render({ $global: { buildName: `Browser-${req.language}` } });\n```\n\n**Note:** If a bundle with the provided `buildName` does not exist, an error is thrown.\n\n## Multiple copies of Marko\n\nIn some cases you may want to embed multiple isolated copies of Marko on the page. Since Marko relies on some `window` properties to initialize this can cause issues. For example, by default Marko will read the server rendered hydration code from `window.$components`. In Marko you can change these `window` properties by rendering with `{ $global: { runtimeId: \"MY_MARKO_RUNTIME_ID\" } }` as input on the server side.\n\nThis plugin exposes a `runtimeId` option produces output that automatically sets `$global.runtimeId` on the server side and initializes properly in the browser.\nThe `runtimeId` will default to the [`uniqueName` option](https://webpack.js.org/configuration/output/#outputuniquename) from the server compiler in the webpack config.\n\n```js\nimport MarkoPlugin from \"@marko/webpack/plugin\";\n\nconst markoPlugin = new MarkoPlugin({\n  runtimeId: \"MY_MARKO_RUNTIME_ID\", // default to webpack `output.uniqueName` option.\n});\n```\n\nNote: This option will also override the default values for the `jsonpFunction`, `chunkCallbackName` and `hotUpdateFunction` webpack `output` options, which all use global variables, to be prefixed with the `runtimeId`.\n\n## Dynamic public paths\n\nWhen using the plugin, the server will automatically sync the runtime [`__webpack_public_path__`](https://webpack.js.org/guides/public-path/#on-the-fly) with the browser.\nThis means that you only need to setup the dynamic public path on the server side.\n"
  },
  {
    "path": "packages/runtime-class/docs/why-is-marko-fast.md",
    "content": "# Why is Marko Fast?\n\n<a href=\"https://medium.com/@psteeleidem/why-is-marko-fast-a20796cb8ae3\">\n  <img src=\"https://user-images.githubusercontent.com/1958812/28104838-d0182f48-6691-11e7-808d-d1ae2d0fed6d.png\" alt=\"Marko logo\" width=\"100%\" />\n</a><br />\n\n> This article was published in May 2017. You can find the original [\"Why is Marko Fast?\" article here](https://medium.com/@psteeleidem/why-is-marko-fast-a20796cb8ae3)!\n\nAt eBay we are using [Marko](https://markojs.com/) to render over a billion\nrequests every day and this has required us to finely tune Marko, our open\nsource UI library. We have heavily optimized Marko for fast rendering, [advanced\nperformance\ntechniques](https://tech.ebayinc.com/engineering/async-fragments-rediscovering-progressive-html-rendering-with-marko/)\nand to achieve a minimal page weight (~10kb gzipped). Performance is only one\nconcern because we have also had to scale Marko to support development across\nhundreds of teams in a way that allows developers to efficiently create\nmaintainable and robust web apps.\n\nWe have created [our own\nbenchmarks](https://github.com/marko-js/isomorphic-ui-benchmarks) and we have\n[added Marko to other\nbenchmarks](https://github.com/raxjs/server-side-rendering-comparison/pull/11),\nbut benchmarks cannot always be trusted. While we make every effort to be fair\nwith our benchmarks, what matters most is performance in real world applications\nas opposed to focusing on micro benchmarks. This is one reason that the V8 team\nhas switched to [a new methodology to measure and understand real-world\nJavaScript\nperformance](https://v8project.blogspot.com/2016/12/how-v8-measures-real-world-performance.html).\n\nSimilarly, we’ve taken a look at how our developers are _actually_ writing their\nMarko components and have found patterns that could be further optimized.\nInstead of focusing on benchmarks in this article, I want to focus on the\ndetails of optimizations that we have applied to Marko.\n\n### Multiple Compilation Outputs\n\nMarko is an isomorphic UI library that runs on both the server and in the\nbrowser. As [Michael Rawlings](https://medium.com/@mlrawlings) mentioned in\n“[Server-side Rendering\nShootout](https://hackernoon.com/server-side-rendering-shootout-with-marko-preact-rax-react-and-vue-25e1ae17800f)”,\nwhen rendering on the server, Marko renders directly to a string representation\nof the document (HTML) that can be sent as the HTTP response.\n\nWhen rendering in the browser, an HTML string would have to be parsed in order\nto update the DOM. For this reason, Marko compiles a view to a program that\nrenders directly to a virtual document (VDOM) tree that can be used to\nefficiently update the real DOM when targeting the browser.\n\nGiven the following template:\n\n```marko\n<div>Hello ${input.name}!</div>\n```\n\n#### Compiled for the server\n\nThe compiled output is optimized for streaming HTML output on the server:\n\n```js\nvar marko_template = require(\"marko/html\").t(__filename),\n  marko_helpers = require(\"marko/runtime/html/helpers\"),\n  marko_escapeXml = marko_helpers.x;\n\nfunction render(input, out) {\n  out.w(\"<div>Hello \" + marko_escapeXml(input.name) + \"!</div>\");\n}\n```\n\n#### Compiled for the browser\n\n<!-- prettier-ignore -->\n```js\nvar marko_template = require(\"marko/vdom\").t(__filename);\n\nfunction render(input, out) {\n  out\n    .e(\"DIV\", null, 3)\n    .t(\"Hello \")\n    .t(input.name)\n    .t(\"!\");\n}\n```\n\nThe compiled output is optimized for virtual DOM rendering in the browser:\n\n### Modular Runtime\n\nThe Marko runtime is not distributed as a single JavaScript file. Instead, the\nMarko compiler generates a JavaScript module that will only import the parts of\nthe runtime that are actually needed. This allows us to add new features to\nMarko without bloating existing applications. For example, given the following\ntemplate:\n\n```marko\n$ var color = 'red';\n<div style={backgroundColor: color}></div>\n```\n\nIn the above example, extra runtime code is needed to render the `style` attribute\nbased on the JavaScript object that is provided. The compiled code that imports\nthe `styleAttr` helper is shown below:\n\n```js\nvar marko_styleAttr = require(\"marko/runtime/vdom/helper-styleAttr\");\n\nfunction render(input, out) {\n  var color = \"red\";\n  out.e(\n    \"DIV\",\n    {\n      style: marko_styleAttr({\n        backgroundColor: color,\n      }),\n    },\n    0,\n    4,\n  );\n}\n```\n\n### High performance server-side rendering\n\nCompared to solutions based on JSX that exclusively do virtual DOM rendering,\nMarko has a huge advantage for server-side rendering. When rendering to a\nvirtual DOM tree on the server it’s a two-step process to render HTML:\n\n- First pass to produce an entire virtual DOM tree in memory\n- Second pass to serialize the virtual DOM tree to an HTML string that can then be\n  sent over the wire (this requires traversing the entire tree structure)\n\nIn contrast, Marko renders directly to an HTML stream in a single pass. There is\nno intermediate tree data structure.\n\n### Compile-time optimization of static sub-trees\n\nGiven the following template:\n\n```marko\n<div>This is a <strong>static</strong> node</div>\n```\n\nMarko will recognize that the template fragment produces the same output every\ntime and it will thus create the virtual DOM node once as shown in the following\ncompiled output:\n\n```js\nvar marko_node0 = marko_createElement(\"DIV\", null, 3, ...)\n  .t(\"This is a \")\n  .e(\"STRONG\", null, 1)\n    .t(\"static\")\n  .t(\" node\");\n\nfunction render(input, out) {\n  out.n(marko_node0);\n}\n```\n\nRendering a static sub-tree has virtually zero cost. In addition, Marko will\nskip diffing/patching static sub-trees.\n\nSimilarly, on the server, Marko will merge static parts of the template into a\nsingle string:\n\n```js\nfunction render(input, out) {\n  out.w(\"<div>This is a <strong>static</strong> node</div>\");\n}\n```\n\n### Compile-time optimization of static attributes\n\nMarko will also optimize static attributes on dynamic elements.\n\nGiven the following template:\n\n```marko\n<div.hello>Hello ${input.name}!</div>\n```\n\nMarko will produce the following compiled output:\n\n<!-- prettier-ignore -->\n```js\nvar marko_attrs0 = {\n  class: \"hello\"\n};\n\nfunction render(input, out) {\n  out\n    .e(\"DIV\", marko_attrs0, 3)\n    .t(\"Hello \")\n    .t(input.name)\n    .t(\"!\");\n}\n```\n\nNotice that the attributes object is only created once and it is used for every\nrender. In addition, no diffing/patching will happen for static attributes.\n\n### Smart compiler\n\nWith Marko we favor doing as much at compile-time as possible. This has made our\ncompiler more complex, but it gives us significant gains at runtime. We have\n~90% code coverage and over 2,000 tests to ensure that the compiler is working\ncorrectly. In addition, in many cases the Marko compiler provides hints to the\nruntime for a given template so that the runtime can optimize for specific\npatterns. For example, Marko recognizes if an HTML element only has `class`/`id`/`style` defined\nand the runtime optimizes for these virtual DOM nodes when doing\ndiffing/patching (the Marko compiler generates code that flags simple virtual\nDOM nodes for targeted diffing/patching logic).\n\n### Event delegation\n\nIf you are building a UI component you will likely need to write code to handle\nvarious DOM events (`click`, `submit`, etc.). It is common for developers to write code that\nadds DOM event listeners using `dom.addEventListener(...)` or using a library such as jQuery. You can still\ndo that when building UI components using Marko, but there is overhead in\nattaching listeners when lots of components are being initialized. Instead,\nMarko recommends using declarative event binding as shown below:\n\n```marko\n<button type=\"button\" on-click(\"handleClick\")>\n  Click Me\n</button>\n```\n\nWhen using declarative event binding, no DOM event listeners are actually\nattached for events that bubble. Instead, Marko attaches a single listener on\nthe root DOM element of the page for each DOM event that bubbles (done at\nstartup). When Marko receives an event at the root it handles delegating the\nevent to the appropriate components that are interested in that event. This is\ndone by looking at the `event.target` property to see where the event originated and then\nwalking up the tree to find components that need to be notified. As a result,\nthere is slightly more work that is done when a DOM event is captured at the\nroot, but this approach uses much less memory and reduces the amount of work\nthat is done during initialization. The extra overhead of delegating events to\ncomponents will not be noticeable so it is a very beneficial optimization.\n\n_Cover image credit: [Superhero by Gan Khoon Lay from the Noun Project](https://thenounproject.com/search/?q=superhero&i=690775)_\n"
  },
  {
    "path": "packages/runtime-class/env.js",
    "content": "var env = process.env || {};\nvar NODE_ENV = env.NODE_ENV;\nvar MARKO_DEBUG = env.MARKO_DEBUG;\n\nexports.isDebug = !(MARKO_DEBUG\n  ? MARKO_DEBUG === \"false\" || MARKO_DEBUG === \"0\"\n  : NODE_ENV && NODE_ENV !== \"development\");\n"
  },
  {
    "path": "packages/runtime-class/helpers/README.md",
    "content": "# Marko Helpers\n\nThis directory contains helpers that were deprecated in Marko v3. Marko v4/5 no longer adds these helpers to every compiled template, but you can still import them if needed.\n"
  },
  {
    "path": "packages/runtime-class/helpers/empty.js",
    "content": "var notEmpty = require(\"./notEmpty\");\nmodule.exports = function empty(o) {\n  return !notEmpty(o);\n};\n"
  },
  {
    "path": "packages/runtime-class/helpers/notEmpty.js",
    "content": "module.exports = function (o) {\n  if (o == null) {\n    return false;\n  } else if (Array.isArray(o)) {\n    return !!o.length;\n  } else if (o === \"\") {\n    return false;\n  }\n\n  return true;\n};\n"
  },
  {
    "path": "packages/runtime-class/index-browser.marko",
    "content": "<module-code(function(require, opts) {\n    var file = `\"./${opts.optimize ? \"dist\" : \"src\"}\"`;\n\n    if (opts.modules === \"cjs\") {\n        return `module.exports = require(${file});\\n`;\n    } else {\n        return `export * from ${file};\\n`;\n    }\n})/>\n\n// What's going on here? We are using Marko to do JavaScript code generation\n// during the module bundling phase to conditionally export either the\n// \"src\" or the \"dist\" folder based on whether or not we are doing a\n// debug or non-debug build. We are using Marko since we know the Marko compiler\n// is enabled already (no extra babel transform required).\n"
  },
  {
    "path": "packages/runtime-class/index.d.ts",
    "content": "import \"./tags-html\";\n\ndeclare module \"*.marko\" {\n  const template: Marko.Template;\n  export default template;\n}\n\ndeclare global {\n  namespace NodeJS {\n    interface ReadableStream {}\n  }\n\n  namespace Marko {\n    /** A mutable global object for the current render. */\n    export interface Global {\n      [x: PropertyKey]: unknown;\n      /** An AbortSignal instance that, when aborted, stops further streamed content. */\n      signal?: AbortSignal;\n      /** A CSP Nonce to add to each script output from Marko. */\n      cspNonce?: string;\n      /** Used for rendering multiple Marko templates in a single hydrated page. */\n      renderId?: string;\n      /** Used to uniquely identify a instance of a Marko runtime. */\n      runtimeId?: string;\n      /** A list of globals that should be serialized to the browser. */\n      serializedGlobals?: Record<string, boolean>;\n      /** @deprecated prefer `renderId` */\n      widgetIdPrefix?: string;\n      /** @deprecated prefer `renderId` */\n      componentIdPrefix?: string;\n    }\n\n    export type TemplateInput<Input> = Input & {\n      $global?: Global;\n    };\n\n    /** The result of calling `template.render`. */\n    export type RenderedTemplate<Component = unknown> = Promise<\n      Component extends Marko.Component ? RenderResult<Component> : string\n    > &\n      AsyncIterable<string> & {\n        toReadable(): ReadableStream<Uint8Array<ArrayBufferLike>>;\n        pipe(stream: {\n          write(chunk: string): unknown;\n          end(): unknown;\n          flush?(): void;\n        }): void;\n        toString(): string;\n      };\n\n    /** The result of calling `template.mount`. */\n    export type MountedTemplate<Input = unknown, Return = unknown> = {\n      get value(): Return extends { value: infer Value } ? Value : void;\n      set value(\n        next: Return extends { valueChange?(next: infer Next): any }\n          ? Next\n          : never,\n      );\n      update(input: Marko.TemplateInput<Input>): void;\n      destroy(): void;\n    };\n\n    export interface Out<\n      Component = unknown,\n    > extends Marko.RenderedTemplate<Component> {\n      /** The underlying ReadableStream Marko is writing into. */\n      stream: unknown;\n      /** A mutable global object for the current render. */\n      global: Global;\n      /** Disable all async rendering. Will error if something beings async. */\n      sync(): void;\n      /** Returns true if async rendering is disabled. */\n      isSync(): boolean;\n      /** Write unescaped text at the current stream position. */\n      write(val: string | void): this;\n      /** Write javascript content to be merged with the scripts Marko sends out on the next flush. */\n      script(val: string | void): this;\n      /** Starts a new async/forked stream. */\n      beginAsync(options?: {\n        name?: string;\n        timeout?: number;\n        last?: boolean;\n      }): Out;\n      /** Marks the current stream as complete (async streams may still be executing). */\n      end(val?: string | void): this;\n      emit(eventName: PropertyKey, ...args: any[]): boolean;\n      on(eventName: PropertyKey, listener: (...args: any[]) => any): this;\n      once(eventName: PropertyKey, listener: (...args: any[]) => any): this;\n      prependListener(\n        eventName: PropertyKey,\n        listener: (...args: any[]) => any,\n      ): this;\n      removeListener(\n        eventName: PropertyKey,\n        listener: (...args: any[]) => any,\n      ): this;\n      /** Register a callback executed when the last async out has completed. */\n      onLast(listener: (next: () => void) => unknown): this;\n      /** Emits an error on the stream. */\n      error(e: Error): this;\n      /** Schedules a Marko to flush buffered html to the underlying stream. */\n      flush(): this;\n      /** Creates a detached out stream (used for out of order flushing). */\n      createOut(): Out;\n      /** Write escaped text at the current stream position. */\n      text(val: string | void): void;\n    }\n\n    /** Body content created from by a component, typically held in an object with a renderBody property. */\n\n    export interface Body<\n      in Params extends readonly any[] = [],\n      out Return = void,\n    > {}\n\n    /** Valid data types which can be passed in as a <${dynamic}/> tag name. */\n    export type Renderable =\n      | { renderBody: Body<any, any> | Template | string }\n      | Body<any, any>\n      | Template\n      | string;\n\n    /** Extract the return tag type from a renderBody. */\n    export type BodyReturnType<B> =\n      B extends Body<any, infer Return> ? Return : never;\n\n    /** Extract the tag parameter types received by a renderBody. */\n    export type BodyParameters<B> =\n      B extends Body<infer Params, any> ? Params : never;\n\n    export class Component<\n      Input = unknown,\n      State = unknown,\n    > implements Emitter {\n      /** A unique id for this instance. */\n      public readonly id: string;\n      /** The top level element rendered by this instance. */\n      public readonly el: Element | void;\n      /** The attributes passed to this instance. */\n      public readonly input: Input;\n      /** @deprecated */\n      public readonly els: Element[];\n      /** Mutable state that when changed causes a rerender. */\n      state: State;\n\n      /** Returns the amount of event handlers listening to a specific event. */\n      listenerCount(eventName: PropertyKey): number;\n      /**\n       * Used to wrap an existing event emitted and ensure that all events are\n       * cleaned up once this component is destroyed\n       * */\n      subscribeTo(\n        emitter: unknown,\n      ): Omit<Emitter, \"listenerCount\" | \"prependListener\" | \"emit\">;\n      /** Emits an event on the component instance. */\n      emit(eventName: PropertyKey, ...args: any[]): boolean;\n      /** Listen to an event on the component instance. */\n      on(eventName: PropertyKey, listener: (...args: any[]) => any): this;\n      /** Listen to an event on the component instance once. */\n      once(eventName: PropertyKey, listener: (...args: any[]) => any): this;\n      /** Listen to an event on the component instance before all other listeners. */\n      prependListener(\n        eventName: PropertyKey,\n        listener: (...args: any[]) => any,\n      ): this;\n      /** Remove a listener from the component instance. */\n      removeListener(\n        eventName: PropertyKey,\n        listener: (...args: any[]) => any,\n      ): this;\n      /** Remove all listeners from the component instance. */\n      removeAllListeners(eventName?: PropertyKey): this;\n      /** Removes the component instance from the DOM and cleans up all active event handlers including all children. */\n      destroy(): void;\n      /** Schedule an update (similar to if a state had been changed). */\n      forceUpdate(): void;\n      /** Generates a unique id derived from the current unique instance id (similar to :scoped in the template). */\n      elId(key?: string, index?: number): string;\n      /** @alias elId */\n      getElId(key?: string, index?: number): string;\n      /** Gets an element reference by its `key` attribute in the template. */\n      getEl<T extends Element | void = Element | void>(\n        key?: string,\n        index?: number,\n      ): T;\n      /** Gets all element references by their `key` attribute in the template. */\n      getEls<T extends Element[] = Element[]>(key: string): T;\n      /** Gets a component reference by its `key` attribute in the template. */\n      getComponent<T extends Component | void = Component | void>(\n        key: string,\n        index?: number,\n      ): T;\n      /** Gets all component references by their `key` attribute in the template. */\n      getComponents<T extends Component[] = Component[]>(key: string): T;\n      /** True if this instance has been removed from the dom. */\n      /** True if this instance is scheduled to rerender. */\n      isDestroyed(): boolean;\n      /** Replace the entire state object with a new one, removing old properties. */\n      replaceState(state: this[\"state\"]): void;\n      /**\n       * Update a property on this.state (should prefer mutating this.state directly).\n       * When passed an object as the first argument, it will be merged into the state.\n       */\n      setState<Key extends PropertyKey>(\n        name: Key & keyof this[\"state\"],\n        value: (this[\"state\"] & Record<PropertyKey, unknown>)[Key],\n      ): void;\n      setState(value: Partial<this[\"state\"]>): void;\n\n      /** Schedules an update related to a specific state property and optionally updates the value. */\n      setStateDirty<Key extends PropertyKey>(\n        name: Key & keyof this[\"state\"],\n        value?: (this[\"state\"] & Record<PropertyKey, unknown>)[Key],\n      ): void;\n      /** Synchronously flush any scheduled updates. */\n      update(): void;\n      /** Appends the dom for the current instance to a parent DOM element. */\n      appendTo(target: ParentNode): this;\n      /** Inserts the dom for the current instance after a sibling DOM element. */\n      insertAfter(target: ChildNode): this;\n      /** Inserts the dom for the current instance before a sibling DOM element. */\n      insertBefore(target: ChildNode): this;\n      /** Prepends the dom for the current instance to a parent DOM element. */\n      prependTo(target: ParentNode): this;\n      /** Replaces an existing DOM element with the dom for the current instance. */\n      replace(target: ChildNode): this;\n      /** Replaces the children of an existing DOM element with the dom for the current instance. */\n      replaceChildrenOf(target: ParentNode): this;\n      // /** Called when the component is first created. */\n      // onCreate?(input: this[\"input\"], out: Marko.Out): void;\n      // /** Called every time the component receives input from it's parent. */\n      // onInput?(input: this[\"input\"], out: Marko.Out): void | this[\"input\"];\n      // /** Called after a component has successfully rendered, but before it's update has been applied to the dom. */\n      // onRender?(out: Marko.Out): void;\n      // /** Called after the first time the component renders and is attached to the dom. */\n      // onMount?(): void;\n      // /** Called when a components render has been applied to the DOM (excluding when it is initially mounted). */\n      // onUpdate?(): void;\n      // /** Called when a component is destroyed and removed from the dom. */\n      // onDestroy?(): void;\n    }\n\n    /** The top level api for a Marko Template. */\n    export abstract class Template<Input = unknown, Return = unknown> {\n      /** Creates a Marko compatible output stream. */\n      createOut(): Out;\n\n      /**\n       * The following types are processed up by the @marko/language-tools\n       * and inlined into the compiled template.\n       *\n       * This is done to support generics on each of these methods\n       * until TypeScript supports higher kinded types.\n       *\n       * https://github.com/microsoft/TypeScript/issues/1213\n       */\n\n      /** @marko-overload-start */\n      /** Asynchronously render the template. */\n      abstract render(\n        input: Marko.TemplateInput<Input>,\n        stream?: {\n          write: (chunk: string) => void;\n          end: (chunk?: string) => void;\n        },\n      ): Marko.Out<Marko.Component>;\n\n      /** Asynchronously render the template in buffered mode. */\n      abstract render(\n        input: Marko.TemplateInput<Input>,\n        cb?: (\n          err: Error | null,\n          result: Marko.RenderResult<Marko.Component>,\n        ) => void,\n      ): Marko.Out<Marko.Component>;\n\n      /** Synchronously render the template. */\n      abstract renderSync(\n        input: Marko.TemplateInput<Input>,\n      ): Marko.RenderResult<Marko.Component>;\n\n      /** Synchronously render a template to a string. */\n      abstract renderToString(input: Marko.TemplateInput<Input>): string;\n\n      /** Render a template and return a stream.Readable in nodejs or a ReadableStream in a web worker environment. */\n      abstract stream(\n        input: Marko.TemplateInput<Input>,\n      ): ReadableStream<string> & NodeJS.ReadableStream;\n\n      /** Render and attach the template to a DOM node. */\n      abstract mount(\n        input: Marko.TemplateInput<Input>,\n        reference: Node,\n        position?: \"afterbegin\" | \"afterend\" | \"beforebegin\" | \"beforeend\",\n      ): Marko.MountedTemplate<typeof input>;\n      /** @marko-overload-end */\n    }\n\n    export interface RenderResult<\n      out Component extends Marko.Component = Marko.Component,\n    > {\n      /** Returns the component created as a result of rendering the template. */\n      getComponent(): Component;\n      getComponents(selector?: any): any;\n      /** Triggers the mount lifecycle of a component without necessarily attaching it to the DOM. */\n      afterInsert(host?: any): this;\n      /** Gets the DOM node rendered by a template. */\n      getNode(host?: any): Node;\n      /** Gets the HTML output of the rendered template. */\n      toString(): string;\n      /** Appends the dom of the rendered template to a parent DOM element. */\n      appendTo(target: ParentNode): this;\n      /** Inserts the dom of the rendered template after a sibling DOM element. */\n      insertAfter(target: ChildNode): this;\n      /** Inserts the dom of the rendered template before a sibling DOM element. */\n      insertBefore(target: ChildNode): this;\n      /** Prepends the dom of the rendered template to a parent DOM element. */\n      prependTo(target: ParentNode): this;\n      /** Replaces an existing DOM element with the dom of the rendered template. */\n      replace(target: ChildNode): this;\n      /** Replaces the children of an existing DOM element with the dom of the rendered template. */\n      replaceChildrenOf(target: ParentNode): this;\n      out: Out<Component>;\n      /** @deprecated */\n      document: any;\n      /** @deprecated */\n      getOutput(): string;\n      /** @deprecated */\n      html: string;\n      /** @deprecated */\n      context: Out<Component>;\n    }\n\n    export interface Emitter {\n      listenerCount(eventName: PropertyKey): number;\n      emit(eventName: PropertyKey, ...args: any[]): boolean;\n      on(eventName: PropertyKey, listener: (...args: any[]) => any): this;\n      once(eventName: PropertyKey, listener: (...args: any[]) => any): this;\n      prependListener(\n        eventName: PropertyKey,\n        listener: (...args: any[]) => any,\n      ): this;\n      removeListener(\n        eventName: PropertyKey,\n        listener: (...args: any[]) => any,\n      ): this;\n      removeAllListeners(eventName?: PropertyKey): this;\n    }\n\n    export type AttrTag<T> = T & {\n      [Symbol.iterator](): Iterator<T>;\n    };\n\n    export interface NativeTag<\n      Input extends Record<string, any>,\n      Return extends Element,\n    > {\n      input: Input;\n      return: { value: () => Return };\n    }\n    export interface NativeTags {\n      [name: string]: NativeTag<Record<string, any>, Element>;\n    }\n\n    export type Input<Name> = 0 extends 1 & Name\n      ? any\n      : Name extends string\n        ? Name extends keyof NativeTags\n          ? NativeTags[Name][\"input\"]\n          : Record<string, unknown>\n        : Name extends\n              | Template<infer Input, any>\n              | { _(): () => (input: infer Input) => any }\n          ? Input\n          : Name extends Body<infer Args, any>\n            ? Args extends {\n                length: infer Length;\n              }\n              ? number extends Length\n                ? Args[0] | undefined\n                : 0 extends Length\n                  ? undefined\n                  : Args[0]\n              : never\n            : never;\n\n    export type Return<Name> = 0 extends 1 & Name\n      ? any\n      : Name extends string\n        ? Name extends keyof NativeTags\n          ? NativeTags[Name][\"return\"]\n          : () => Element\n        : Name extends\n              | { _(): () => (input: any) => { return: infer Return } }\n              | Template<any, infer Return>\n              | Body<any, infer Return>\n          ? Return\n          : never;\n\n    /** @deprecated @see {@link Marko.AttrTag} */\n    export type RepeatableAttrTag<T> = AttrTag<T>;\n\n    /** @deprecated @see {@link Marko.Input} */\n    export type NativeTagInput<Name extends keyof NativeTags> =\n      NativeTags[Name][\"input\"];\n    /** @deprecated @see {@link Marko.Return} */\n    export type NativeTagReturn<Name extends keyof NativeTags> =\n      NativeTags[Name][\"return\"];\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/index.js",
    "content": "var isDebug = require(\"./env\").isDebug;\n\nif (isDebug) {\n  module.exports = require(\"./src/\");\n} else {\n  module.exports = require(\"./dist/\");\n}\n"
  },
  {
    "path": "packages/runtime-class/legacy-components-browser.marko",
    "content": "<module-code(function(require, opts) {\n    var file = `\"./${opts.optimize ? \"dist\" : \"src\"}/runtime/components/legacy\"`;\n\n    if (opts.modules === \"cjs\") {\n        return `module.exports = require(${file});\\n`;\n    } else {\n        return `export { default } from ${file};\\nexport * from ${file};\\n`;\n    }\n})/>\n\n// What's going on here? We are using Marko to do JavaScript code generation\n// during the module bundling phase to conditionally export either the\n// \"src\" or the \"dist\" folder based on whether or not we are doing a\n// debug or non-debug build. We are using Marko since we know the Marko compiler\n// is enabled already (no extra babel transform required).\n"
  },
  {
    "path": "packages/runtime-class/legacy-components.js",
    "content": "var isDebug = require(\"./env\").isDebug;\n\nif (isDebug) {\n  module.exports = require(\"./src/runtime/components/legacy\");\n} else {\n  module.exports = require(\"./dist/runtime/components/legacy\");\n}\n"
  },
  {
    "path": "packages/runtime-class/node-require.js",
    "content": "// TODO: Should deprecate and extract into @marko/register\nvar isDebug = require(\"./env\").isDebug;\n\nif (isDebug) {\n  module.exports = require(\"./src/node-require\");\n} else {\n  module.exports = require(\"./dist/node-require\");\n}\n"
  },
  {
    "path": "packages/runtime-class/package.json",
    "content": "{\n  \"name\": \"marko\",\n  \"version\": \"5.38.33\",\n  \"description\": \"UI Components + streaming, async, high performance, HTML templating for Node.js and the browser.\",\n  \"keywords\": [\n    \"front-end\",\n    \"templating\",\n    \"template\",\n    \"async\",\n    \"streaming\",\n    \"components\",\n    \"ui\",\n    \"vdom\",\n    \"dom\",\n    \"morphdom\",\n    \"virtual\",\n    \"virtual-dom\"\n  ],\n  \"homepage\": \"https://markojs.com/\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/marko-js/marko.git\",\n    \"directory\": \"packages/runtime-class\"\n  },\n  \"license\": \"MIT\",\n  \"author\": \"Patrick Steele-Idem <pnidem@gmail.com>\",\n  \"maintainers\": [\n    \"Patrick Steele-Idem <pnidem@gmail.com>\",\n    \"Michael Rawlings <ml.rawlings@gmail.com>\",\n    \"Phillip Gates-Idem <phillip.idem@gmail.com>\",\n    \"Austin Kelleher <a@alk.im>\",\n    \"Dylan Piercey <pierceydylan@gmail.com>\",\n    \"Martin Aberer\"\n  ],\n  \"main\": \"index.js\",\n  \"browser\": {\n    \"./compiler.js\": \"./compiler-browser.marko\",\n    \"./components.js\": \"./components-browser.marko\",\n    \"./legacy-components.js\": \"./legacy-components-browser.marko\",\n    \"./index.js\": \"./index-browser.marko\"\n  },\n  \"types\": \"index.d.ts\",\n  \"bin\": {\n    \"markoc\": \"bin/markoc\"\n  },\n  \"files\": [\n    \"bin\",\n    \"dist\",\n    \"docs\",\n    \"src\",\n    \"helpers\",\n    \"browser-refresh.js\",\n    \"compiler-browser.marko\",\n    \"compiler.js\",\n    \"components-browser.marko\",\n    \"components.js\",\n    \"legacy-components-browser.marko\",\n    \"legacy-components.js\",\n    \"env.js\",\n    \"index.d.ts\",\n    \"index-browser.marko\",\n    \"index.js\",\n    \"node-require.js\",\n    \"tags-html.d.ts\",\n    \"translator/package.json\",\n    \"translator/index.d.ts\"\n  ],\n  \"scripts\": {\n    \"build\": \"babel ./src --out-dir ./dist --extensions .js --copy-files --config-file ../../babel.config.js --env-name=production\"\n  },\n  \"dependencies\": {\n    \"@marko/compiler\": \"^5.39.62\",\n    \"@marko/runtime-tags\": \"^6.0.159\",\n    \"app-module-path\": \"^2.2.0\",\n    \"argly\": \"^1.2.0\",\n    \"browser-refresh-client\": \"1.1.4\",\n    \"complain\": \"^1.6.1\",\n    \"csstype\": \"^3.2.3\",\n    \"events-light\": \"^1.0.5\",\n    \"listener-tracker\": \"^2.0.0\",\n    \"magic-string\": \"^0.30.21\",\n    \"minimatch\": \"^9.0.5\",\n    \"raptor-util\": \"^3.2.0\",\n    \"resolve-from\": \"^5.0.0\",\n    \"self-closing-tags\": \"^1.0.1\",\n    \"warp10\": \"^2.1.0\"\n  },\n  \"engines\": {\n    \"node\": \"18 || 20 || >=22\"\n  },\n  \"logo\": {\n    \"url\": \"https://raw.githubusercontent.com/marko-js/branding/master/marko-logo-small.png\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/src/build.json",
    "content": "{\n  \"isDebug\": true\n}\n"
  },
  {
    "path": "packages/runtime-class/src/compiler/config.js",
    "content": "var config;\n\nvar g = typeof window === \"undefined\" ? global : window;\n\nif (g.__MARKO_CONFIG) {\n  config = g.__MARKO_CONFIG;\n} else {\n  config = g.__MARKO_CONFIG = {\n    // The default output mode for compiled templates\n    output: \"html\",\n\n    /**\n     * Whether the version should be written to the template as a comment e.g.\n     * // Compiled using marko@4.0.0 - DO NOT EDIT\n     */\n    writeVersionComment: true,\n\n    /**\n     * Whether unrecognized tags should be ignored or not. This flag will\n     * be enabled by default when compiling XML.\n     */\n    ignoreUnrecognizedTags: false,\n\n    /**\n     * Whether source maps should be output with the compiled templates.\n     * When `true` a `map` property will be available on the compile result.\n     * When `\"inline\"` the sourcemap will be inlined as a comment in the output code.\n     * When `\"both\"` both of the above will be used.\n     */\n    sourceMaps: false,\n\n    /**\n     * This option inlines all of the meta data in the template.\n     * You can also access this metadata via `compile(...).meta`.\n     * This API is sticking around for compatibility purposes.\n     */\n    meta: true,\n  };\n\n  if (process.env.MARKO_CONFIG) {\n    Object.assign(config, JSON.parse(process.env.MARKO_CONFIG));\n  }\n}\n\nmodule.exports = config;\n"
  },
  {
    "path": "packages/runtime-class/src/compiler/index.js",
    "content": "\"use strict\";\n\nvar ok = require(\"assert\").ok;\nvar fs = require(\"fs\");\n\n// eslint-disable-next-line no-constant-binary-expression\nvar complain = \"MARKO_DEBUG\" && require(\"complain\");\nvar compiler = require(\"@marko/compiler\");\nvar extend = require(\"raptor-util/extend\");\nvar taglib = require(\"../taglib\");\nvar globalConfig = require(\"./config\");\nvar defaults = extend({}, globalConfig);\n\n// eslint-disable-next-line no-constant-condition\nif (\"MARKO_DEBUG\") {\n  if (\n    require.main &&\n    require.main.filename !== require.resolve(\"../../bin/markoc\")\n  ) {\n    complain(\n      \"Using `marko/compiler` has been deprecated, please upgrade to the `@marko/compiler` module.\",\n    );\n  }\n}\n\nvar defaultOptionsExportDefinition = {\n  get: function () {\n    return globalConfig;\n  },\n  enumerable: true,\n  configurable: false,\n};\n\nObject.defineProperties(exports, {\n  defaultOptions: defaultOptionsExportDefinition,\n  config: defaultOptionsExportDefinition,\n});\n\nfunction configure(newConfig) {\n  if (!newConfig) {\n    newConfig = {};\n  }\n\n  globalConfig = extend({}, defaults);\n  extend(globalConfig, newConfig);\n\n  compiler.configure(newConfig);\n}\n\nfunction resultCompat({ code, meta, map }, options = {}) {\n  if (options.sourceOnly !== false) {\n    return code;\n  } else {\n    return { code, meta, map };\n  }\n}\n\nfunction _compile(src, filename, userConfig, callback) {\n  ok(filename, '\"filename\" argument is required');\n  ok(typeof filename === \"string\", '\"filename\" argument should be a string');\n  var options = {};\n\n  extend(options, globalConfig);\n\n  if (userConfig) {\n    extend(options, userConfig);\n  }\n\n  if (callback) {\n    compiler.compile(src, filename, options).then(\n      (result) => callback(null, resultCompat(result, options)),\n      (error) => callback(error),\n    );\n  } else {\n    return resultCompat(compiler.compileSync(src, filename, options), options);\n  }\n}\n\nfunction compile(src, filename, options, callback) {\n  if (typeof options === \"function\") {\n    callback = options;\n    options = null;\n  }\n\n  options = options || {};\n  options.sourceOnly = options.sourceOnly !== false;\n\n  return _compile(src, filename, options, callback);\n}\n\nfunction compileForBrowser(src, filename, options, callback) {\n  if (typeof options === \"function\") {\n    callback = options;\n    options = null;\n  }\n\n  options = extend(\n    {\n      output: \"dom\",\n      meta: false,\n      sourceOnly: false,\n    },\n    options,\n  );\n\n  return compile(src, filename, options, callback);\n}\n\nfunction compileFile(filename, options, callback) {\n  if (typeof options === \"function\") {\n    callback = options;\n    options = null;\n  }\n\n  options = options || {};\n  options.sourceOnly = options.sourceOnly !== false;\n\n  if (callback) {\n    fs.readFile(filename, { encoding: \"utf8\" }, function (err, templateSrc) {\n      if (err) {\n        return callback(err);\n      }\n\n      _compile(templateSrc, filename, options, callback);\n    });\n  } else {\n    let templateSrc = fs.readFileSync(filename, { encoding: \"utf8\" });\n    return _compile(templateSrc, filename, options, callback);\n  }\n}\n\nfunction compileFileForBrowser(filename, options, callback) {\n  if (typeof options === \"function\") {\n    callback = options;\n    options = null;\n  }\n\n  options = extend({ output: \"dom\", meta: false, sourceOnly: false }, options);\n  return compileFile(filename, options, callback);\n}\n\nexports.compileFile = compileFile;\nexports.compile = compile;\nexports.compileForBrowser = compileForBrowser;\nexports.compileFileForBrowser = compileFileForBrowser;\n\nexports.configure = configure;\n\nexports.taglibLookup = taglib.lookup;\nexports.taglibLoader = taglib.loader;\nexports.taglibFinder = taglib.finder;\nexports.buildTaglibLookup = taglib.lookup.buildLookup;\nexports.clearCaches = function clearCaches() {\n  compiler._clearDefaults();\n  taglib.clearCache();\n};\n\nexports.registerTaglib = function (filePath) {\n  ok(typeof filePath === \"string\", '\"filePath\" should be a string');\n  taglib.registerFromFile(filePath);\n  exports.clearCaches();\n};\n\nexports.isVDOMSupported = true;\n"
  },
  {
    "path": "packages/runtime-class/src/compiler/modules.js",
    "content": "\"use strict\";\n\nif (typeof document === \"undefined\") {\n  exports.require = require;\n}\n"
  },
  {
    "path": "packages/runtime-class/src/core-tags/.eslintrc",
    "content": "{\n    \"env\": {\n        \"browser\": true\n    }\n}"
  },
  {
    "path": "packages/runtime-class/src/core-tags/components/init-components-tag.js",
    "content": "\"use strict\";\n\nconst INIT_COMPONENTS_KEY = Symbol();\n\nconst addComponentsFromContext =\n  require(\"../../runtime/components\").___addComponentsFromContext;\nconst getInitComponentsCode =\n  require(\"../../runtime/components\").___getInitComponentsCode;\n\nfunction addComponentsFromOut(source, target) {\n  const sourceOut = source.out || source;\n  const targetOut = target || sourceOut;\n  const componentsContext = sourceOut.___components;\n  const componentDefs = targetOut.writer.get(\"componentDefs\");\n  addComponentsFromContext(componentsContext, componentDefs);\n}\n\nfunction addInitScript(writer) {\n  const out = writer.state.root;\n  const componentDefs = writer.get(\"componentDefs\");\n  writer.script(getInitComponentsCode(out, componentDefs));\n}\n\nmodule.exports = function render(input, out) {\n  const $global = out.global;\n  if ($global[INIT_COMPONENTS_KEY] === undefined) {\n    $global[INIT_COMPONENTS_KEY] = true;\n\n    out.on(\"await:finish\", addComponentsFromOut);\n    out.on(\"___toString\", addInitScript);\n\n    if (out.isSync() === true) {\n      // Generate initialization code for any of the UI components that were\n      // rendered synchronously\n      addComponentsFromOut(out);\n    } else {\n      // Generate initialization code for any of the UI components that were\n      // rendered asynchronously, but were outside an `<await>` tag\n      // (each `<await>` tag will have its own component initialization block)\n      const asyncOut = out.beginAsync({ last: true, timeout: -1 });\n      out.onLast(function (next) {\n        // Ensure we're getting init code starting from the root\n        let rootOut = out;\n        while (rootOut._parentOut) {\n          rootOut = rootOut._parentOut;\n        }\n        // Write out all of the component init code from the main out\n        addComponentsFromOut(rootOut, asyncOut);\n        asyncOut.end();\n        next();\n      });\n    }\n  }\n};\n"
  },
  {
    "path": "packages/runtime-class/src/core-tags/components/preferred-script-location-tag.js",
    "content": "\"use strict\";\n\nfunction forceScriptTagAtThisPoint(out) {\n  const writer = out.writer;\n\n  out.global.___isLastFlush = true;\n  const htmlSoFar = writer.toString();\n  out.global.___isLastFlush = undefined;\n\n  writer.clear();\n  writer.write(htmlSoFar);\n}\n\nmodule.exports = function render(input, out) {\n  if (out.isSync() === true) {\n    forceScriptTagAtThisPoint(out);\n  } else {\n    const asyncOut = out.beginAsync({ last: true, timeout: -1 });\n    out.onLast(function (next) {\n      forceScriptTagAtThisPoint(asyncOut);\n      asyncOut.end();\n      next();\n    });\n  }\n};\n"
  },
  {
    "path": "packages/runtime-class/src/core-tags/components/preserve-tag.js",
    "content": "module.exports = require(\"@internal/preserve-tag\");\n"
  },
  {
    "path": "packages/runtime-class/src/core-tags/core/__flush_here_and_after__.js",
    "content": "const BufferedWriter = require(\"../../runtime/html/BufferedWriter\");\n\nmodule.exports = function __flushHereAndAfter__(input, out) {\n  if (out.isSync()) {\n    // We create an async out that we pinky promise is going to be sync in order to postpone execution of the renderBody.\n    out._sync = false;\n    const asyncOut = out.beginAsync({ last: true });\n    out._sync = true;\n    asyncOut.sync();\n    out.onLast(() => {\n      input.renderBody(asyncOut);\n      asyncOut.end();\n    });\n  } else {\n    let flushed = false;\n    const asyncOut = out.beginAsync({ last: true });\n    const nextWriter = out.writer;\n\n    out.on(\"___toString\", (writer) => {\n      if (writer instanceof BufferedWriter) {\n        if (flushed) {\n          const detachedOut = out.createOut();\n          detachedOut.sync();\n          input.renderBody(detachedOut);\n          writer._content = detachedOut.toString() + writer._content;\n        } else if (writer.next === nextWriter) {\n          asyncOut.sync();\n          input.renderBody(asyncOut);\n          asyncOut.end();\n          flushed = true;\n        }\n      }\n    });\n\n    out.onLast(() => {\n      if (!flushed) {\n        asyncOut.sync();\n        input.renderBody(asyncOut);\n        asyncOut.end();\n        flushed = true;\n      }\n    });\n  }\n};\n"
  },
  {
    "path": "packages/runtime-class/src/core-tags/core/await/AsyncValue.js",
    "content": "var queueMicrotask = require(\"@internal/set-immediate\").___queueMicrotask;\n\nfunction AsyncValue() {\n  /**\n   * The data that was provided via call to resolve(data).\n   * This property is assumed to be public and available for inspection.\n   */\n  this.___value = undefined;\n\n  /**\n   * The data that was provided via call to reject(err)\n   * This property is assumed to be public and available for inspection.\n   */\n  this.___error = undefined;\n\n  /**\n   * The queue of callbacks that are waiting for data\n   */\n  this.___callbacks = undefined;\n\n  /**\n   * The state of the data holder (STATE_INITIAL, STATE_RESOLVED, or STATE_REJECTED)\n   */\n  this.___settled = false;\n}\n\nfunction notifyCallbacks(asyncValue, err, value) {\n  var callbacks = asyncValue.___callbacks;\n  if (callbacks) {\n    // clear out the registered callbacks (we still have reference to the original value)\n    asyncValue.___callbacks = undefined;\n\n    // invoke all of the callbacks and use their scope\n    for (var i = 0; i < callbacks.length; i++) {\n      // each callback is actually an object with \"scope and \"callback\" properties\n      var callback = callbacks[i];\n      callback(err, value);\n    }\n  }\n}\n\nAsyncValue.prototype = {\n  /**\n   * Adds a callback to the queue. If there is not a pending request to load data\n   * and we have a \"loader\" then we will use that loader to request the data.\n   * The given callback will be invoked when there is an error or resolved data\n   * available.\n   */\n  ___done: function (callback) {\n    // Do we already have data or error?\n    if (this.___settled) {\n      // invoke the callback immediately\n      return callback(this.___error, this.___value);\n    }\n\n    var callbacks = this.___callbacks || (this.___callbacks = []);\n    callbacks.push(callback);\n  },\n\n  /**\n   * This method will trigger any callbacks to be notified of rejection (error).\n   * If this data holder has a loader then the data holder will be returned to\n   * its initial state so that any future requests to load data will trigger a\n   * new load call.\n   */\n  ___reject: function (err) {\n    if (this.___settled) {\n      return;\n    }\n\n    // remember the error\n    this.___error = err;\n\n    // Go to the rejected state if we don't have a loader.\n    // If we do have a loader then return to the initial state\n    // (we do this so that next call to done() will trigger load\n    // again in case the error was transient).\n    this.___settled = true;\n\n    // always notify callbacks regardless of whether or not we return to the initial state\n    notifyCallbacks(this, err, null);\n  },\n\n  /**\n   * This method will trigger any callbacks to be notified of data.\n   */\n  ___resolve: function (value) {\n    if (this.___settled) {\n      return;\n    }\n\n    if (value && typeof value.then === \"function\") {\n      // eslint-disable-next-line @typescript-eslint/no-this-alias\n      var asyncValue = this;\n\n      var finalPromise = value.then(\n        function onFulfilled(value) {\n          queueMicrotask(asyncValue.___resolve.bind(asyncValue, value));\n        },\n        function onRejected(err) {\n          queueMicrotask(asyncValue.___reject.bind(asyncValue, err));\n        },\n      );\n\n      if (finalPromise.done) {\n        finalPromise.done();\n      }\n    } else {\n      // remember the state\n      this.___value = value;\n\n      // go to the resolved state\n      this.___settled = true;\n\n      // notify callbacks\n      notifyCallbacks(this, null, value);\n    }\n  },\n};\n\nmodule.exports = AsyncValue;\n"
  },
  {
    "path": "packages/runtime-class/src/core-tags/core/await/client-reorder-runtime.js",
    "content": "function $af(\n  id,\n  after,\n  doc,\n  sourceEl,\n  targetEl,\n  docFragment,\n  childNodes,\n  i,\n  len,\n  af,\n) {\n  af = $af;\n\n  if (after && !af[after]) {\n    (af[(after = after + \"$\")] || (af[after] = [])).push(id);\n  } else {\n    doc = document;\n    sourceEl = doc.getElementById(\"af\" + id);\n    targetEl = doc.getElementById(\"afph\" + id);\n    docFragment = doc.createDocumentFragment();\n    childNodes = sourceEl.childNodes;\n    i = 0;\n    len = childNodes.length;\n\n    for (; i < len; i++) {\n      docFragment.appendChild(childNodes.item(0));\n    }\n\n    if (targetEl) {\n      targetEl.parentNode.replaceChild(docFragment, targetEl);\n    }\n\n    af[id] = 1;\n\n    after = af[id + \"$\"];\n\n    if (after) {\n      i = 0;\n      len = after.length;\n\n      for (; i < len; i++) {\n        af(after[i]);\n      }\n    }\n  }\n\n  // sourceEl.parentNode.removeChild(sourceEl);\n}\n\nwindow.$af = $af;\n"
  },
  {
    "path": "packages/runtime-class/src/core-tags/core/await/index.d.marko",
    "content": "export type Input<T> = {\n  value: readonly [T];\n  then?: Marko.AttrTag<{ renderBody: Marko.Body<[Awaited<T>]> }>;\n  catch?: Marko.AttrTag<{ renderBody: Marko.Body<[unknown]> }>;\n  placeholder?: Marko.AttrTag<{ renderBody: Marko.Body }>;\n  \"client-reorder\"?: boolean;\n  name?: string;\n  timeout?: number;\n  \"show-after\"?: string;\n} | {\n  value: T;\n  renderBody: Marko.Body<[Awaited<T>]>\n}\n"
  },
  {
    "path": "packages/runtime-class/src/core-tags/core/await/renderer.js",
    "content": "\"use strict\";\n// eslint-disable-next-line no-constant-binary-expression\nvar complain = \"MARKO_DEBUG\" && require(\"complain\");\nvar getRenderId = require(\"../../../runtime/html/get-render-id\");\nvar AsyncValue = require(\"./AsyncValue\");\n\nfunction safeRenderBody(renderBody, targetOut, data) {\n  try {\n    renderBody(targetOut, data);\n  } catch (err) {\n    return err;\n  }\n}\n\nfunction requestData(provider, timeout) {\n  var asyncValue = new AsyncValue();\n\n  if (typeof provider === \"function\") {\n    // eslint-disable-next-line no-constant-condition\n    if (\"MARKO_DEBUG\") {\n      complain(\n        \"Passing a callback function to the <await> tag has been deprecated, please use a promise instead.\",\n        { level: 1, locationIndex: 3 },\n      );\n    }\n\n    var callback = function (err, data) {\n      if (err) {\n        asyncValue.___reject(err);\n      } else {\n        asyncValue.___resolve(data);\n      }\n    };\n\n    var value =\n      provider.length === 1\n        ? // one argument so only provide callback to function call\n          provider(callback)\n        : // two arguments so provide args and callback to function call\n          provider(null, callback);\n\n    if (value !== undefined) {\n      asyncValue.___resolve(value);\n    }\n  } else {\n    // Assume the provider is a data object...\n    asyncValue.___resolve(provider);\n  }\n\n  if (timeout == null) {\n    timeout = 10000;\n  }\n\n  var error;\n  var errorMsg = \"Timed out after \" + timeout + \"ms\";\n  // eslint-disable-next-line no-constant-condition\n  if (\"MARKO_DEBUG\") {\n    // Make sure we have a meaningful stack trace in development preparing the stacktrace upfront.\n    // If we create it inside the setTimeout, we will end up with a short, not meaningful, stack trace\n    // We only do it in development to avoid overhead in production\n    error = new Error(errorMsg);\n  }\n  if (timeout > 0) {\n    let timeoutId = setTimeout(function () {\n      timeoutId = null;\n      if (!error) error = new Error(errorMsg);\n      error.code = \"ERR_AWAIT_TIMEDOUT\";\n      error.name = \"TimeoutError\";\n      asyncValue.___reject(error);\n    }, timeout);\n\n    asyncValue.___done(function () {\n      if (timeoutId != null) {\n        clearTimeout(timeoutId);\n      }\n    });\n  }\n\n  return asyncValue;\n}\n\nconst LAST_OPTIONS = { last: true, name: \"await:finish\" };\n\nmodule.exports = function awaitTag(input, out) {\n  var clientReorder =\n    typeof document === \"undefined\" &&\n    input.clientReorder === true &&\n    !out.isVDOM;\n\n  var name = input.name || input._name;\n  var timeout = input.timeout;\n  var provider = input._provider;\n  var asyncValue = requestData(provider, timeout);\n  var placeholderRenderer = input.placeholder && input.placeholder.renderBody;\n\n  if (asyncValue.___settled) {\n    renderContents(asyncValue.___error, asyncValue.___value, input, out);\n    return;\n  }\n\n  var asyncOut;\n  var clientReorderContext;\n\n  var awaitInfo = {\n    name: name,\n    clientReorder: clientReorder,\n    dataProvider: provider,\n  };\n\n  if (clientReorder) {\n    awaitInfo.parent = out;\n    awaitInfo.after = input.showAfter;\n\n    clientReorderContext =\n      out.global.___clientReorderContext ||\n      (out.global.___clientReorderContext = {\n        handleAwait: undefined,\n        instances: [],\n        nextId: 0,\n      });\n\n    /** SHOULD MATCH THE reorder-renderer.js IMPLEMENTATION */\n    var reorderFunctionId =\n      out.global.runtimeId !== \"M\" ? \"af\" + out.global.runtimeId : \"af\";\n\n    var id = (awaitInfo.id =\n      input.name ||\n      (getRenderId(out.global) || 0) + clientReorderContext.nextId++);\n    var placeholderIdAttrValue = reorderFunctionId + \"ph\" + id;\n\n    if (placeholderRenderer) {\n      out.write(\"<span id=\" + placeholderIdAttrValue + \">\");\n      placeholderRenderer(out);\n      out.write(\"</span>\");\n    } else {\n      out.write(\"<noscript id=\" + placeholderIdAttrValue + \"></noscript>\");\n    }\n\n    // If `client-reorder` is enabled then we asynchronously render the await instance to a new\n    // \"out\" instance so that we can Write to a temporary in-memory buffer.\n    asyncOut = awaitInfo.out = out.createOut();\n\n    var oldEmit = asyncOut.emit;\n\n    // Since we are rendering the await instance to a new and separate out,\n    // we want to proxy any child events to the main AsyncWriter in case anyone is interested\n    // in those events. This is also needed for the following events to be handled correctly:\n    //\n    // - await:begin\n    // - await:beforeRender\n    // - await:finish\n    //\n    asyncOut.emit = function (event) {\n      if (event !== \"finish\" && event !== \"error\") {\n        // We don't want to proxy the finish and error events since those are\n        // very specific to the AsyncWriter associated with the await instance\n        out.emit.apply(out, arguments);\n      }\n\n      oldEmit.apply(asyncOut, arguments);\n    };\n\n    if (clientReorderContext.handleAwait) {\n      clientReorderContext.handleAwait(awaitInfo);\n    } else {\n      clientReorderContext.instances.push(awaitInfo);\n    }\n\n    out.emit(\"await:clientReorder\", awaitInfo);\n  } else {\n    out.flush(); // Flush everything up to this await instance\n    asyncOut = awaitInfo.out = out.beginAsync({\n      timeout: 0, // We will use our code for controlling timeout\n      name: name,\n    });\n  }\n\n  var beforeRenderEmitted = false;\n\n  out.emit(\"await:begin\", awaitInfo);\n\n  function renderBody(err, data) {\n    if (awaitInfo.finished) {\n      return;\n    }\n\n    if (err) {\n      awaitInfo.error = err;\n    }\n\n    if (!beforeRenderEmitted) {\n      beforeRenderEmitted = true;\n      out.emit(\"await:beforeRender\", awaitInfo);\n    }\n\n    renderContents(err, data, input, asyncOut);\n\n    awaitInfo.finished = true;\n\n    if (clientReorder) {\n      asyncOut.end();\n      out.flush();\n    } else {\n      // When using client reordering we want to delay\n      // this event until after the code to move\n      // the async fragment into place has been written\n      let asyncLastOut = asyncOut.beginAsync(LAST_OPTIONS);\n      asyncOut.onLast(function () {\n        var oldWriter = asyncOut.writer;\n        // We swap out the writer so that writing will happen to our `asyncLastOut`\n        // even though we are still passing along the original `asyncOut`. We have\n        // to pass along the original `asyncOut` because that has contextual\n        // information (such as the rendered UI components)\n        asyncOut.writer = asyncLastOut.writer;\n        out.emit(\"await:finish\", awaitInfo);\n        asyncOut.writer = oldWriter;\n        asyncLastOut.end();\n        out.flush();\n      });\n\n      asyncOut.end();\n    }\n  }\n\n  asyncValue.___done(renderBody);\n};\n\nfunction renderContents(err, data, input, out) {\n  var resultRenderer = input.then && input.then.renderBody;\n  var errorRenderer = input.catch && input.catch.renderBody;\n\n  if (err) {\n    if (input.catch) {\n      if (errorRenderer) {\n        try {\n          errorRenderer(out, err);\n        } catch (err2) {\n          out.error(err2);\n        }\n      }\n    } else {\n      out.error(err);\n    }\n  } else {\n    if (resultRenderer) {\n      var renderBodyErr = safeRenderBody(resultRenderer, out, data);\n\n      if (renderBodyErr) {\n        return renderContents(renderBodyErr, data, input, out);\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/src/core-tags/core/await/reorderer-renderer.js",
    "content": "\"use strict\";\n\nvar attrAssignment = require(\"../../../runtime/html/helpers/attr\").a;\n\nmodule.exports = function (input, out) {\n  // We cannot call beginSync() when using renderSync(). In this case we will\n  // ignore the await-reorderer tag.\n  if (out.isSync()) {\n    return;\n  }\n\n  var global = out.global;\n\n  // We have already invoked an <await-reorderer>. We do not need to do this\n  // work again.\n  if (global.__awaitReordererInvoked) {\n    return;\n  }\n\n  global.__awaitReordererInvoked = true;\n\n  if (out.global.___clientReorderContext) {\n    out.flush();\n  }\n\n  /** SHOULD MATCH THE renderer.js IMPLEMENTATION */\n  var reorderFunctionId =\n    out.global.runtimeId !== \"M\" ? \"af\" + out.global.runtimeId : \"af\";\n\n  var asyncOut = out.beginAsync({\n    last: true,\n    timeout: -1,\n    name: \"await-reorderer\",\n  });\n\n  out.onLast(function (next) {\n    var awaitContext = global.___clientReorderContext;\n    var remaining;\n\n    // Validate that we have remaining <await> instances that need handled\n    if (\n      !awaitContext ||\n      !awaitContext.instances ||\n      !(remaining = awaitContext.instances.length)\n    ) {\n      asyncOut.end();\n      next();\n      return;\n    }\n\n    function handleAwait(awaitInfo) {\n      let flushedScript = false;\n      let flushedContent = false;\n      let flushedPlaceholder = awaitInfo.parent._state.finished;\n      if (flushedPlaceholder) {\n        if (awaitInfo.out._state.finished) {\n          writeResult(awaitInfo.out.___getResult());\n          return;\n        }\n      } else {\n        awaitInfo.parent.on(\"___toString\", () => {\n          flushedPlaceholder = true;\n          if (!flushedScript && flushedContent) {\n            flushedScript = true;\n            asyncOut.script(\n              `$${reorderFunctionId}(` +\n                (typeof awaitInfo.id === \"number\"\n                  ? awaitInfo.id\n                  : '\"' + awaitInfo.id + '\"') +\n                (awaitInfo.after ? ',\"' + awaitInfo.after + '\"' : \"\") +\n                \")\",\n            );\n          }\n        });\n      }\n\n      awaitInfo.out\n        .on(\"___toString\", out.emit.bind(out, \"___toString\"))\n        .on(\"finish\", writeResult)\n        .on(\"error\", function (err) {\n          asyncOut.error(err);\n        });\n\n      function writeResult(result) {\n        flushedContent = true;\n        if (!global._afRuntime) {\n          // Minified version of ./client-reorder-runtime.js\n          asyncOut.script(\n            `function $${reorderFunctionId}(d,a,e,l,g,h,k,b,f,c){c=$${reorderFunctionId};if(a&&!c[a])(c[a+=\"$\"]||(c[a]=[])).push(d);else{e=document;l=e.getElementById(\"${reorderFunctionId}\"+d);g=e.getElementById(\"${reorderFunctionId}ph\"+d);h=e.createDocumentFragment();k=l.childNodes;b=0;for(f=k.length;b<f;b++)h.appendChild(k.item(0));g&&g.parentNode.replaceChild(h,g);c[d]=1;if(a=c[d+\"$\"])for(b=0,f=a.length;b<f;b++)c(a[b])}}`,\n          );\n          global._afRuntime = true;\n        }\n\n        if (global.cspNonce) {\n          asyncOut.write(\n            \"<style nonce\" +\n              attrAssignment(global.cspNonce) +\n              \">#\" +\n              reorderFunctionId +\n              awaitInfo.id +\n              \"{display:none}</style><div id=\" +\n              reorderFunctionId +\n              awaitInfo.id +\n              \">\" +\n              result.toString() +\n              \"</div>\",\n          );\n        } else {\n          asyncOut.write(\n            \"<div id=\" +\n              reorderFunctionId +\n              awaitInfo.id +\n              \" style=display:none>\" +\n              result.toString() +\n              \"</div>\",\n          );\n        }\n\n        if (!flushedScript && flushedPlaceholder) {\n          flushedScript = true;\n          asyncOut.script(\n            `$${reorderFunctionId}(` +\n              (typeof awaitInfo.id === \"number\"\n                ? awaitInfo.id\n                : '\"' + awaitInfo.id + '\"') +\n              (awaitInfo.after ? ',\"' + awaitInfo.after + '\"' : \"\") +\n              \")\",\n          );\n        }\n\n        awaitInfo.out.writer = asyncOut.writer;\n\n        out.emit(\"await:finish\", awaitInfo);\n\n        out.flush();\n\n        if (--remaining === 0) {\n          asyncOut.end();\n          next();\n        }\n      }\n    }\n\n    awaitContext.instances.forEach(handleAwait);\n    awaitContext.handleAwait = function (awaitInfo) {\n      remaining++;\n      handleAwait(awaitInfo);\n    };\n\n    // Now that we have a listener attached, we want to receive any additional\n    // out-of-sync instances via the method\n    awaitContext.instances = undefined;\n  });\n};\n"
  },
  {
    "path": "packages/runtime-class/src/core-tags/core/script.d.marko",
    "content": "/** File for types only, not actual implementation **/\n\nexport interface Input extends Marko.HTML.Script {\n  value?(): unknown;\n}\n"
  },
  {
    "path": "packages/runtime-class/src/index.js",
    "content": "\"use strict\";\n\nexports.createOut = require(\"./runtime/createOut\");\nexports.load = require(\"@internal/loader\");\n"
  },
  {
    "path": "packages/runtime-class/src/node-require/browser-refresh.js",
    "content": "// eslint-disable-next-line no-constant-condition\nif (\"MARKO_DEBUG\") {\n  const browserRefreshClient = require(\"browser-refresh-client\");\n  if (browserRefreshClient.isBrowserRefreshEnabled()) {\n    const extensions = require(\".\").getExtensions();\n    const hotReload = require(\"./hot-reload\");\n\n    browserRefreshClient\n      .enableSpecialReload(\n        `${extensions\n          .map((ext) => `*${ext}`)\n          .join(\" \")} marko.json marko-tag.json`,\n      )\n      .onFileModified((path) => {\n        hotReload.handleFileModified(path);\n      });\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/src/node-require/hot-reload.js",
    "content": "const fs = require(\"fs\");\nconst path = require(\"path\");\nconst compiler = require(\"../compiler\");\nrequire(\"../runtime/html/hot-reload\");\n\nexports.handleFileModified = function (filename) {\n  if (!fs.existsSync(filename)) {\n    console.log(\n      \"[marko/hot-reload] WARNING cannot resolve template path: \",\n      filename,\n    );\n    return;\n  }\n\n  compiler.clearCaches();\n  console.log(`[marko] File modified: ${cwdRelative(filename)}`);\n\n  if (path.extname(filename) === \".json\") {\n    // If we taglib was modified then uncache *all* templates so that they will\n    // all be reloaded\n    for (const filename in require.cache) {\n      if (path.extname(filename) === \".marko\") {\n        tryReload(filename);\n      }\n    }\n  } else {\n    tryReload(filename);\n  }\n};\n\nfunction tryReload(filename) {\n  try {\n    delete require.cache[filename];\n    require(filename);\n    console.log(\n      `[marko] Template successfully reloaded: ${cwdRelative(filename)}`,\n    );\n  } catch (e) {\n    console.error(e);\n  }\n}\n\nfunction cwdRelative(filename) {\n  return path.relative(process.cwd(), filename);\n}\n"
  },
  {
    "path": "packages/runtime-class/src/node-require/index.js",
    "content": "\"use strict\";\n// eslint-disable-next-line no-constant-binary-expression\nconst complain = \"MARKO_DEBUG\" && require(\"complain\");\nconst path = require(\"path\");\nconst resolveFrom = require(\"resolve-from\");\nconst requiredCompilerOptions = { modules: \"cjs\" };\nconst defaultCompilerOptions = {\n  // eslint-disable-next-line no-constant-condition\n  sourceMaps: \"MARKO_DEBUG\" ? \"inline\" : false,\n  meta: true,\n  babelConfig: {\n    babelrc: false,\n    configFile: false,\n    browserslistConfigFile: false,\n  },\n};\nconst MARKO_EXTENSIONS = Symbol(\"MARKO_EXTENSIONS\");\n\n// eslint-disable-next-line no-constant-condition\nif (\"MARKO_DEBUG\") {\n  complain(\n    'Using \"marko/node-require\" has been replaced with \"@marko/compiler/register\".',\n  );\n}\n\nfunction normalizeExtension(extension) {\n  if (extension.charAt(0) !== \".\") {\n    extension = \".\" + extension;\n  }\n  return extension;\n}\n\nfunction compile(templatePath, markoCompiler, userCompilerOptions) {\n  return markoCompiler.compileFileSync(\n    templatePath,\n    Object.assign(\n      {},\n      defaultCompilerOptions,\n      userCompilerOptions,\n      requiredCompilerOptions,\n    ),\n  ).code;\n}\n\nfunction install(options) {\n  options = options || {};\n\n  var requireExtensions = options.require // options.require introduced for testing\n    ? options.require.extensions\n    : require.extensions;\n\n  var compilerOptions = options.compilerOptions;\n\n  var extensions = [];\n\n  if (options.extension) {\n    extensions.push(options.extension);\n  }\n\n  if (options.extensions) {\n    extensions = extensions.concat(options.extensions);\n  }\n\n  if (extensions.length === 0) {\n    extensions.push(\".marko\");\n  }\n\n  function markoRequireExtension(module, filename) {\n    // Resolve the appropriate compiler relative to the location of the\n    // marko template file on disk using the \"resolve-from\" module.\n    var dirname = path.dirname(filename);\n    var markoCompilerModulePath = resolveFrom(dirname, \"@marko/compiler\");\n    var markoCompiler = require(markoCompilerModulePath);\n\n    // Now use the appropriate Marko compiler to compile the Marko template\n    // file to JavaScript source code:\n    var compiledSrc = compile(filename, markoCompiler, compilerOptions);\n\n    // Append \".js\" to the filename since that is where we write the compiled\n    // source code that is being loaded. This allows stack traces to match up.\n    module._compile(compiledSrc, filename);\n  }\n\n  requireExtensions[MARKO_EXTENSIONS] =\n    requireExtensions[MARKO_EXTENSIONS] ||\n    (requireExtensions[MARKO_EXTENSIONS] = []);\n\n  extensions.forEach((extension) => {\n    extension = normalizeExtension(extension);\n    requireExtensions[extension] = markoRequireExtension;\n    requireExtensions[MARKO_EXTENSIONS].push(extension);\n  });\n}\n\ninstall();\n\nexports.install = install;\n\nexports.getExtensions = function () {\n  return require.extensions[MARKO_EXTENSIONS];\n};\n\nrequire(\"./browser-refresh\");\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/components-beginComponent/index-browser.js",
    "content": "var ComponentDef = require(\"../../../runtime/components/ComponentDef\");\n\nmodule.exports = function beginComponent(\n  componentsContext,\n  component,\n  key,\n  ownerComponentDef\n) {\n  var componentId = component.id;\n  var componentDef = (componentsContext.___componentDef = new ComponentDef(\n    component,\n    componentId,\n    componentsContext\n  ));\n  componentsContext.___globalContext.___renderedComponentsById[\n    componentId\n  ] = true;\n  componentsContext.___components.push(componentDef);\n\n  var out = componentsContext.___out;\n  out.bc(component, key, ownerComponentDef && ownerComponentDef.___component);\n  return componentDef;\n};\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/components-beginComponent/index.js",
    "content": "\"use strict\";\n\nconst ComponentDef = require(\"../../../runtime/components/ComponentDef\");\n\nvar FLAG_WILL_RERENDER_IN_BROWSER = 1;\n// var FLAG_HAS_RENDER_BODY = 2;\nvar FLAG_OLD_HYDRATE_NO_CREATE = 8;\n\nmodule.exports = function beginComponent(\n  componentsContext,\n  component,\n  key,\n  ownerComponentDef,\n  isSplitComponent,\n  isImplicitComponent,\n  existingComponentDef\n) {\n  var componentId = component.id;\n\n  // existingComponentDef is only here to allow binding a conditional\n  // widget.  It should be removed when the legacy compat layer is removed.\n  var componentDef =\n    existingComponentDef ||\n    (componentsContext.___componentDef = new ComponentDef(\n      component,\n      componentId,\n      componentsContext\n    ));\n\n  var ownerIsRenderBoundary =\n    ownerComponentDef && ownerComponentDef.___renderBoundary;\n  var ownerWillRerender =\n    ownerComponentDef &&\n    ownerComponentDef.___flags & FLAG_WILL_RERENDER_IN_BROWSER;\n  // On the server\n  if (ownerWillRerender && !componentsContext.___isPreserved) {\n    componentDef.___flags |= FLAG_WILL_RERENDER_IN_BROWSER;\n    componentDef._wrr = true;\n    return componentDef;\n  }\n\n  if (componentsContext.___forceBoundary) {\n    componentsContext.___forceBoundary = false;\n    isSplitComponent = false;\n  } else if (isImplicitComponent === true) {\n    // We don't mount implicit components rendered on the server\n    // unless the implicit component is nested within a UI component\n    // that will re-render in the browser\n    return componentDef;\n  }\n\n  componentsContext.___components.push(componentDef);\n\n  let out = componentsContext.___out;\n  let runtimeId = out.global.runtimeId;\n\n  componentDef.___renderBoundary = true;\n  componentDef.___parentPreserved = componentsContext.___isPreserved;\n\n  if (isSplitComponent === false && out.global.noBrowserRerender !== true) {\n    componentDef.___flags |= FLAG_WILL_RERENDER_IN_BROWSER;\n    componentDef._wrr = true;\n    componentsContext.___isPreserved = false;\n  }\n\n  if (out.global.oldHydrateNoCreate === true) {\n    componentDef.___flags |= FLAG_OLD_HYDRATE_NO_CREATE;\n  }\n\n  if ((ownerIsRenderBoundary || ownerWillRerender) && key != null) {\n    out.w(\n      \"<!--\" +\n        runtimeId +\n        \"^\" +\n        componentId +\n        \" \" +\n        ownerComponentDef.id +\n        \" \" +\n        key +\n        \"-->\"\n    );\n  } else {\n    out.w(\"<!--\" + runtimeId + \"#\" + componentId + \"-->\");\n  }\n\n  return componentDef;\n};\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/components-beginComponent/package.json",
    "content": "{\n  \"main\": \"./index.js\",\n  \"browser\": \"./index-browser.js\",\n  \"exports\": {\n    \".\": {\n      \"worker\": \"./index.js\",\n      \"browser\": \"./index-browser.js\",\n      \"default\": \"./index.js\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/components-define-widget-legacy/index-browser.js",
    "content": "\"use strict\";\n/* jshint newcap:false */\n\nvar BaseState;\nvar BaseComponent;\nvar inherit;\nvar req = require(\"@internal/require\");\nvar registry = require(\"@internal/components-registry\");\nvar jQuery = require(\"../../../runtime/components/legacy/jquery\");\nvar ready = require(\"../../../runtime/components/legacy/ready\");\n// eslint-disable-next-line no-constant-binary-expression\nvar complain = \"MARKO_DEBUG\" && require(\"complain\");\nvar hasHowOwnProperty = {}.hasOwnProperty;\nvar stateToJSONDef = {\n  enumerable: false,\n  value: function returnSelf() {\n    return this;\n  },\n};\nfunction noop() {}\n\nmodule.exports = function defineWidget(def, renderer) {\n  def = def.Widget || def;\n\n  if (def.___isComponent) {\n    return def;\n  }\n\n  var ComponentClass = function () {};\n  var proto;\n  var legacyInit;\n\n  if (typeof def === \"function\") {\n    proto = def.prototype;\n    legacyInit = def;\n  } else if (typeof def === \"object\") {\n    proto = def;\n    legacyInit = def.init;\n  } else {\n    throw TypeError();\n  }\n\n  ComponentClass.prototype = proto;\n\n  // We don't use the constructor provided by the user\n  // since we don't invoke their constructor until\n  // we have had a chance to do our own initialization.\n  // Instead, we store their constructor in the \"initComponent\"\n  // property and that method gets called later inside\n  // init-components-browser.js\n  function Component(id, doc) {\n    BaseComponent.call(this, id, doc);\n  }\n\n  if (!proto.___isComponent) {\n    // Inherit from Component if they didn't already\n    ComponentClass.prototype = Object.create(BaseComponent.prototype);\n    for (var propName in proto) {\n      if (hasOwnProperty.call(proto, propName)) {\n        ComponentClass.prototype[propName] = proto[propName];\n      }\n    }\n  }\n\n  // The same prototype will be used by our constructor after\n  // we he have set up the prototype chain using the inherit function\n  proto = Component.prototype = ComponentClass.prototype;\n  proto.___isLegacy = true;\n\n  proto.constructor = def.constructor = Component;\n\n  Object.defineProperty(proto, \"state\", {\n    get: function () {\n      var raw = this.___state && this.___state.___raw;\n\n      if (raw && !raw.toJSON) {\n        Object.defineProperty(this.___state.___raw, \"toJSON\", stateToJSONDef);\n      }\n\n      return raw;\n    },\n    set: function (newState) {\n      newState = newState || {};\n      // eslint-disable-next-line no-constant-condition\n      if (\"MARKO_DEBUG\") {\n        if (\n          Object.keys(newState).sort().join(\"\") !==\n          Object.keys((this.___state && this.___state.___raw) || {})\n            .sort()\n            .join(\"\")\n        )\n          complain(\n            \"'widget.state = newState' has changed from merging the newState to replacing the old state.\"\n          );\n      }\n\n      this.setState(newState);\n    },\n  });\n\n  Object.defineProperty(proto, \"__document\", {\n    get: function () {\n      // eslint-disable-next-line no-constant-condition\n      if (\"MARKO_DEBUG\") {\n        complain(\"__document is deprecated\");\n      }\n      return this.___host;\n    },\n  });\n\n  Object.defineProperty(proto, \"el\", {\n    get: function () {\n      // eslint-disable-next-line no-constant-condition\n      if (\"MARKO_DEBUG\") {\n        if (\n          this.___currentLegacyBindEl !==\n          (this.___rootNode && this.___rootNode.firstChild)\n        ) {\n          complain(\n            \"this.el no longer returns the `w-bind` element and instead returns the first node in the template. Assign a key to the w-bind element and use getEl(key) instead.\"\n          );\n        }\n      }\n\n      return this.___currentLegacyBindEl;\n    },\n  });\n\n  // get legacy methods\n\n  proto.___legacyOnRender = proto.onRender;\n  Object.defineProperty(proto, \"onRender\", {\n    get: noop,\n    set: function (v) {\n      proto.___legacyOnRender = v;\n    },\n  });\n\n  proto.___legacyOnUpdate = proto.onUpdate;\n  Object.defineProperty(proto, \"onUpdate\", {\n    get: function () {\n      return modernMountOrUpdate;\n    },\n    set: function (v) {\n      proto.___legacyOnUpdate = v;\n    },\n  });\n\n  proto.___legacyOnDestroy = proto.onDestroy;\n  Object.defineProperty(proto, \"onDestroy\", {\n    get: function () {\n      return modernOnDestroy;\n    },\n    set: function (v) {\n      proto.___legacyOnDestroy = v;\n    },\n  });\n\n  proto.getWidget = proto.getComponent;\n  proto.getWidgets = proto.getComponents;\n  proto.onMount = modernMountOrUpdate;\n\n  if (legacyInit) {\n    proto.___legacyInit = legacyInit;\n  }\n\n  // convert legacy to modern\n  proto.___modernUpdate = proto.update;\n  proto.update = function () {\n    if (this.___destroyed) {\n      // eslint-disable-next-line no-constant-condition\n      if (\"MARKO_DEBUG\") {\n        complain(\n          \"widget was updated after it was destroyed, if this widget is migrated to a modern component this will become a noop.\",\n          {\n            location: this.___type,\n          }\n        );\n      }\n\n      this.destroy = modernOnDestroy;\n      this.___destroyed = false;\n    }\n    this.___legacyExplicitUpdate = true;\n    if (this.___currentLegacyBindEl) {\n      this.onBeforeUpdate && this.onBeforeUpdate();\n    }\n\n    this.___modernUpdate();\n    this.___legacyExplicitUpdate = false;\n  };\n\n  function modernMountOrUpdate() {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    var self = this;\n    var el = this.___keyedElements[\"@_wbind\"];\n    var prevEl = this.___currentLegacyBindEl;\n\n    if (prevEl !== el) {\n      this.___currentLegacyBindEl = el;\n\n      if (prevEl) {\n        this.onBeforeDestroy && this.onBeforeDestroy();\n        this.___legacyOnDestroy && this.___legacyOnDestroy();\n        this.___legacyRender = undefined;\n        this.removeAllListeners();\n      }\n\n      if (el) {\n        this.___legacyInit && this.___legacyInit(this.widgetConfig || {});\n        this.___legacyOnRender && this.___legacyOnRender({ firstRender: true });\n        this.___legacyRender = legacyRender;\n\n        // eslint-disable-next-line no-constant-condition\n        if (\"MARKO_DEBUG\") {\n          Object.defineProperty(el, \"__widget\", {\n            configurable: true,\n            get: function () {\n              complain(\"__widget is deprecated\");\n              return self;\n            },\n          });\n        } else {\n          el.__widget = this;\n        }\n      }\n    } else if (el) {\n      if (prevEl) {\n        this.___legacyOnUpdate && this.___legacyOnUpdate();\n      }\n\n      if (this.___didUpdate) {\n        this.___legacyOnRender &&\n          this.___legacyOnRender({ firstRender: false });\n      }\n    }\n\n    this.___widgetProps = this.___input;\n    this.___input = null;\n    this.___didUpdate = false;\n  }\n\n  function legacyRender() {\n    if (!this.___legacyExplicitUpdate) {\n      this.onBeforeUpdate && this.onBeforeUpdate();\n    }\n\n    this.___didUpdate = true;\n  }\n\n  function modernOnDestroy() {\n    if (this.___currentLegacyBindEl) {\n      this.onBeforeDestroy && this.onBeforeDestroy();\n      this.___legacyOnDestroy && this.___legacyOnDestroy();\n      this.___currentLegacyBindEl = null;\n    }\n  }\n\n  // Set a flag on the constructor function to make it clear this is\n  // a component so that we can short-circuit this work later\n  Component.___isComponent = true;\n\n  function State() {\n    BaseState.apply(this, arguments);\n  }\n  inherit(State, BaseState);\n  proto.___State = State;\n\n  jQuery.patchComponent(\n    window.$,\n    proto,\n    true /* don't throw error until used if `$` is missing*/\n  );\n\n  ready.patchComponent(proto);\n\n  if (!renderer) {\n    renderer = ComponentClass.renderer || ComponentClass.prototype.renderer;\n    if (renderer) {\n      // Legacy support\n      var createOut = renderer.createOut;\n      if (typeof renderer !== \"function\") {\n        var rendererObject = renderer;\n        renderer = function (input, out) {\n          var rendererFunc = rendererObject.renderer || rendererObject.render;\n          rendererFunc(input, out);\n        };\n        renderer.createOut = createOut;\n      }\n\n      renderer.render = function (input) {\n        var out = createOut();\n        renderer(input, out);\n        return out.end();\n      };\n    }\n  }\n\n  if (renderer) {\n    // Add the rendering related methods as statics on the\n    // new component constructor function\n    Component.renderer = proto.___renderer = renderer;\n    Component.render = renderer.render;\n    Component.renderSync = renderer.renderSync;\n  }\n\n  // eslint-disable-next-line no-constant-condition\n  if (\"MARKO_DEBUG\") {\n    Object.defineProperty(Component, \"_isWidget\", {\n      get: function () {\n        complain(\"_isWidget is deprecated\");\n        return true;\n      },\n    });\n  } else {\n    Component._isWidget = true;\n  }\n\n  var template = def.template;\n  if (template) {\n    if (typeof template === \"string\") {\n      template = req(template);\n    }\n\n    registry.r((template.default || template).___typeName, function () {\n      return Component;\n    });\n  }\n\n  return Component;\n};\n\nBaseState = require(\"../../../runtime/components/State\");\nBaseComponent = require(\"../../../runtime/components/Component\");\ninherit = require(\"raptor-util/inherit\");\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/components-define-widget-legacy/index.js",
    "content": "module.exports = function defineWidget(def, renderer) {\n  if (def.___isComponent) {\n    return def;\n  }\n\n  if (renderer) {\n    return {\n      ___isComponent: true,\n      _isWidget: true,\n      renderer: renderer,\n      render: renderer.render,\n      renderSync: renderer.renderSync,\n      template: renderer.template,\n    };\n  } else {\n    return { ___isComponent: true, _isWidget: true };\n  }\n};\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/components-define-widget-legacy/package.json",
    "content": "{\n  \"main\": \"./index.js\",\n  \"browser\": \"./index-browser.js\",\n  \"exports\": {\n    \".\": {\n      \"worker\": \"./index.js\",\n      \"browser\": \"./index-browser.js\",\n      \"default\": \"./index.js\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/components-endComponent/index-browser.js",
    "content": "\"use strict\";\n\nmodule.exports = function endComponent(out) {\n  out.ee(); // endElement() (also works for VComponent nodes pushed on to the stack)\n};\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/components-endComponent/index.js",
    "content": "\"use strict\";\n\nvar ComponentsContext = require(\"../../../runtime/components/ComponentsContext\");\nvar getComponentsContext = ComponentsContext.___getComponentsContext;\n\nmodule.exports = function endComponent(out, componentDef) {\n  if (componentDef.___renderBoundary) {\n    out.w(\"<!--\" + out.global.runtimeId + \"/-->\");\n    getComponentsContext(out).___isPreserved = componentDef.___parentPreserved;\n  }\n};\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/components-endComponent/package.json",
    "content": "{\n  \"main\": \"./index.js\",\n  \"browser\": \"./index-browser.js\",\n  \"exports\": {\n    \".\": {\n      \"worker\": \"./index.js\",\n      \"browser\": \"./index-browser.js\",\n      \"default\": \"./index.js\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/components-entry/index-browser.js",
    "content": "require(\"../../../runtime/vdom/marko-namespace\");\nvar registry = require(\"@internal/components-registry\");\n\nexports.getComponentForEl =\n  require(\"@internal/components-util\").___getComponentForEl;\nexports.init = registry.___initServerRendered;\nexports.register = function (id, component) {\n  registry.r(id, function () {\n    return component;\n  });\n};\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/components-entry/index.js",
    "content": "\"use strict\";\nrequire(\"../../../runtime/html/marko-namespace\");\n\nvar warp10 = require(\"warp10\");\nvar w10ToJSON = require(\"../../../runtime/helpers/serialize-noop\").___toJSON;\nvar getRenderId = require(\"../../../runtime/html/get-render-id\");\nvar safeJSONRegExp = /<\\/|\\u2028|\\u2029/g;\nvar IGNORE_GLOBAL_TYPES = new Set([\"undefined\", \"function\", \"symbol\"]);\nvar DEFAULT_RUNTIME_ID = \"M\";\n\nvar FLAG_WILL_RERENDER_IN_BROWSER = 1;\nvar FLAG_HAS_RENDER_BODY = 2;\nvar FLAG_IS_LEGACY = 4;\nvar FLAG_OLD_HYDRATE_NO_CREATE = 8;\n\nfunction safeJSONReplacer(match) {\n  if (match === \"</\") {\n    return \"\\\\u003C/\";\n  } else {\n    return \"\\\\u\" + match.charCodeAt(0).toString(16);\n  }\n}\n\nfunction isNotEmpty(obj) {\n  var keys = Object.keys(obj);\n  for (var i = keys.length; i--; ) {\n    if (obj[keys[i]] !== undefined) {\n      return true;\n    }\n  }\n\n  return false;\n}\nfunction safeStringify(data) {\n  return JSON.stringify(warp10.stringifyPrepare(data)).replace(\n    safeJSONRegExp,\n    safeJSONReplacer,\n  );\n}\n\nfunction getSerializedGlobals($global) {\n  let serializedGlobalsLookup = $global.serializedGlobals;\n  if (serializedGlobalsLookup) {\n    let serializedGlobals;\n    let keys = Object.keys(serializedGlobalsLookup);\n    for (let i = keys.length; i--; ) {\n      let key = keys[i];\n      if (serializedGlobalsLookup[key]) {\n        let value = $global[key];\n        if (!IGNORE_GLOBAL_TYPES.has(typeof value)) {\n          if (serializedGlobals === undefined) {\n            serializedGlobals = {};\n          }\n          serializedGlobals[key] = value;\n        }\n      }\n    }\n\n    return serializedGlobals;\n  }\n}\n\nfunction addComponentsFromContext(componentsContext, componentsToHydrate) {\n  var components = componentsContext.___components;\n\n  var len = components.length;\n\n  for (var i = 0; i < len; i++) {\n    var componentDef = components[i];\n    var id = componentDef.id;\n    var component = componentDef.___component;\n    var flags = componentDef.___flags;\n    var isLegacy = componentDef.___isLegacy;\n\n    var state = component.state;\n    var input = component.input || 0;\n    var typeName = component.typeName;\n    var customEvents = component.___customEvents;\n    var scope = component.___scope || undefined;\n    var bubblingDomEvents = component.___bubblingDomEvents;\n\n    var needsState;\n    var serializedProps;\n    var renderBody;\n\n    if (isLegacy) {\n      flags |= FLAG_IS_LEGACY;\n      renderBody = component.___widgetBody;\n\n      if (component.widgetConfig && isNotEmpty(component.widgetConfig)) {\n        serializedProps = component.widgetConfig;\n      }\n\n      needsState = true;\n    } else {\n      if (\n        !(flags & FLAG_WILL_RERENDER_IN_BROWSER) ||\n        flags & FLAG_OLD_HYDRATE_NO_CREATE\n      ) {\n        component.___state = undefined; // We don't use `delete` to avoid V8 deoptimization\n        component.___input = undefined; // We don't use `delete` to avoid V8 deoptimization\n        component.typeName = undefined;\n        component.id = undefined;\n        component.___customEvents = undefined;\n        component.___scope = undefined;\n        component.___bubblingDomEvents = undefined;\n        component.___bubblingDomEventsExtraArgsCount = undefined;\n        component.___updatedInput = undefined;\n        component.___updateQueued = undefined;\n\n        needsState = true;\n\n        if (isNotEmpty(component)) {\n          serializedProps = component;\n        }\n      } else {\n        renderBody = input.renderBody;\n      }\n    }\n\n    var undefinedPropNames = undefined;\n\n    if (needsState && state) {\n      // Update state properties with an `undefined` value to have a `null`\n      // value so that the property name will be serialized down to the browser.\n      // This ensures that we add the proper getter/setter for the state property.\n      const stateKeys = Object.keys(state);\n      for (let i = stateKeys.length; i--; ) {\n        const stateKey = stateKeys[i];\n\n        if (state[stateKey] === undefined) {\n          if (undefinedPropNames) {\n            undefinedPropNames.push(stateKey);\n          } else {\n            undefinedPropNames = [stateKey];\n          }\n        }\n      }\n    }\n\n    if (typeof renderBody === \"function\" && renderBody.toJSON === w10ToJSON) {\n      flags |= FLAG_HAS_RENDER_BODY;\n      renderBody = undefined;\n      if (input) input.renderBody = undefined;\n    }\n\n    var extra = {\n      b: bubblingDomEvents,\n      d: componentDef.___domEvents,\n      e: customEvents,\n      f: flags || undefined,\n      p: customEvents && scope, // Only serialize scope if we need to attach custom events\n      s: needsState && state,\n      u: undefinedPropNames,\n      w: serializedProps,\n      r: renderBody,\n    };\n\n    var parts = [id, typeName];\n    var hasExtra = isNotEmpty(extra);\n\n    if (input) {\n      parts.push(input);\n\n      if (hasExtra) {\n        parts.push(extra);\n      }\n    } else if (hasExtra) {\n      parts.push(0, extra); // empty input;\n    }\n\n    componentsToHydrate.push(parts);\n  }\n\n  components.length = 0;\n\n  // Also add any components from nested contexts\n  var nestedContexts = componentsContext.___nestedContexts;\n  if (nestedContexts !== undefined) {\n    nestedContexts.forEach(function (nestedContext) {\n      addComponentsFromContext(nestedContext, componentsToHydrate);\n    });\n  }\n}\n\nfunction getInitComponentsData($global, componentDefs) {\n  const len = componentDefs.length;\n  const isLast = $global.___isLastFlush;\n  const didSerializeComponents = $global.___didSerializeComponents;\n  const prefix = getRenderId($global);\n\n  if (len === 0) {\n    if (isLast && didSerializeComponents) {\n      return { p: prefix, l: 1 };\n    }\n\n    return;\n  }\n\n  const TYPE_INDEX = 1;\n  const typesLookup =\n    $global.___typesLookup || ($global.___typesLookup = new Map());\n  let newTypes;\n\n  for (let i = 0; i < len; i++) {\n    const componentDef = componentDefs[i];\n    const typeName = componentDef[TYPE_INDEX];\n    let typeIndex = typesLookup.get(typeName);\n\n    if (typeIndex === undefined) {\n      typeIndex = typesLookup.size;\n      typesLookup.set(typeName, typeIndex);\n\n      if (newTypes) {\n        newTypes.push(typeName);\n      } else {\n        newTypes = [typeName];\n      }\n    }\n\n    componentDef[TYPE_INDEX] = typeIndex;\n  }\n\n  let serializedGlobals;\n\n  if (!didSerializeComponents) {\n    $global.___didSerializeComponents = true;\n    serializedGlobals = getSerializedGlobals($global);\n  }\n\n  return {\n    p: prefix,\n    l: isLast && 1,\n    g: serializedGlobals,\n    w: componentDefs,\n    t: newTypes,\n  };\n}\n\nfunction getInitComponentsDataFromOut(out) {\n  const componentsContext = out.___components;\n\n  if (componentsContext === null) {\n    return;\n  }\n\n  const $global = out.global;\n  const runtimeId = $global.runtimeId;\n  const componentsToHydrate = [];\n  addComponentsFromContext(componentsContext, componentsToHydrate);\n\n  $global.___isLastFlush = true;\n  const data = getInitComponentsData($global, componentsToHydrate);\n  $global.___isLastFlush = undefined;\n\n  if (runtimeId !== DEFAULT_RUNTIME_ID && data) {\n    data.r = runtimeId;\n  }\n\n  return data;\n}\n\nfunction writeInitComponentsCode(out) {\n  out.script(exports.___getInitComponentsCode(out));\n}\n\nexports.___getInitComponentsCode = function getInitComponentsCode(\n  out,\n  componentDefs,\n) {\n  const $global = out.global;\n  return getInitComponentsCodeFromData(\n    $global,\n    arguments.length === 2\n      ? getInitComponentsData($global, componentDefs)\n      : getInitComponentsDataFromOut(out),\n  );\n};\n\nfunction getInitComponentsCodeFromData($global, initComponentsData) {\n  if (initComponentsData === undefined) {\n    return \"\";\n  }\n\n  const runtimeId = $global.runtimeId;\n  const componentGlobalKey =\n    runtimeId === DEFAULT_RUNTIME_ID ? \"MC\" : runtimeId + \"_C\";\n\n  return `$${componentGlobalKey}=(window.$${componentGlobalKey}||[]).concat(${safeStringify(\n    initComponentsData,\n  )})`;\n}\n\nexports.___getInitComponentsCodeForDefs = function getInitComponentsCodeForDefs($global, defs) {\n  return getInitComponentsCodeFromData($global, getInitComponentsData($global, defs));\n}\nexports.___addComponentsFromContext = addComponentsFromContext;\nexports.writeInitComponentsCode = writeInitComponentsCode;\n\n/**\n * Returns an object that can be sent to the browser using JSON.stringify. The parsed object should be\n * passed to require('marko-components').initComponents(...);\n *\n * @param  {ComponentsContext|AsyncWriter} componentsContext A ComponentsContext or an AsyncWriter\n * @return {Object} An object with information about the rendered components that can be serialized to JSON. The object should be treated as opaque\n */\nexports.getRenderedComponents = function (out) {\n  return warp10.stringifyPrepare(getInitComponentsDataFromOut(out));\n};\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/components-entry/package.json",
    "content": "{\n  \"main\": \"./index.js\",\n  \"browser\": \"./index-browser.js\",\n  \"exports\": {\n    \".\": {\n      \"worker\": \"./index.js\",\n      \"browser\": \"./index-browser.js\",\n      \"default\": \"./index.js\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/components-entry-legacy/index-browser.js",
    "content": "var Component = require(\"../../../runtime/components/Component\");\nvar req = require(\"@internal/require\");\nvar getComponentForEl =\n  require(\"@internal/components-util\").___getComponentForEl;\n\n// eslint-disable-next-line no-constant-binary-expression\nvar complain = \"MARKO_DEBUG\" && require(\"complain\");\n\n// expose legacy\nrequire(\"@internal/components-registry\").___legacy = exports;\nexports.load = function (typeName) {\n  return exports.defineWidget(req(typeName));\n};\n\n// legacy api\nexports.defineComponent = require(\"../../../runtime/components/legacy/defineComponent-legacy\");\nexports.defineWidget = require(\"@internal/components-define-widget-legacy\");\nexports.defineRenderer = require(\"../../../runtime/components/legacy/defineRenderer-legacy\");\nexports.makeRenderable =\n  exports.renderable = require(\"../../../runtime/renderable\");\n\n// browser only\nvar Widget = (exports.Widget = Component);\nexports.getWidgetForEl = exports.get = function (elOrId) {\n  var el = elOrId;\n\n  if (typeof elOrId === \"string\") {\n    el = document.getElementById(elOrId);\n  }\n\n  if (el && el.__widget) {\n    return el.__widget;\n  }\n\n  return getComponentForEl(el);\n};\nexports.initWidgets =\n  require(\"@internal/components-registry\").___initServerRendered;\n\n// monkey patch Widget\nif (Widget) {\n  var WidgetProto = Widget.prototype;\n  WidgetProto.setProps = function (newInput) {\n    this.___isReceivingNewInput = true;\n    this.___setInput(newInput);\n  };\n  WidgetProto.rerender = function (newInput) {\n    if (newInput) {\n      this.setProps(newInput);\n    }\n\n    this.forceUpdate();\n    this.update();\n  };\n}\n\nvar RenderResult = require(\"../../../runtime/RenderResult\");\n\nRenderResult.prototype.getWidget = function () {\n  // eslint-disable-next-line no-constant-condition\n  if (\"MARKO_DEBUG\") {\n    complain(\"getWidget is deprecated. use getComponent instead.\");\n  }\n  return this.getWidgets()[0];\n};\nRenderResult.prototype.getWidgets = function () {\n  // eslint-disable-next-line no-constant-condition\n  if (\"MARKO_DEBUG\") {\n    complain(\"getWidgets is deprecated. use getComponents instead.\");\n  }\n  return RenderResult.prototype.getComponents\n    .apply(this, arguments)\n    .filter(function (component) {\n      return component.___isLegacy;\n    });\n};\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/components-entry-legacy/index.js",
    "content": "var modernMarko = require(\"@internal/components-entry\");\n\n// legacy api\nexports.defineComponent = require(\"../../../runtime/components/legacy/defineComponent-legacy\");\nexports.defineWidget = require(\"@internal/components-define-widget-legacy\");\nexports.defineRenderer = require(\"../../../runtime/components/legacy/defineRenderer-legacy\");\nexports.makeRenderable =\n  exports.renderable = require(\"../../../runtime/renderable\");\n\n// server only\nexports.writeInitWidgetsCode = modernMarko.writeInitComponentsCode;\nexports.getRenderedWidgets = exports.getRenderedWidgetIds =\n  modernMarko.getRenderedComponents;\nexports.getInitWidgetsCode = function (out) {\n  return modernMarko.___getInitComponentsCode(out);\n};\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/components-entry-legacy/package.json",
    "content": "{\n  \"main\": \"./index.js\",\n  \"browser\": \"./index-browser.js\",\n  \"exports\": {\n    \".\": {\n      \"worker\": \"./index.js\",\n      \"browser\": \"./index-browser.js\",\n      \"default\": \"./index.js\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/components-registry/index-browser.js",
    "content": "// eslint-disable-next-line no-constant-binary-expression\nvar complain = \"MARKO_DEBUG\" && require(\"complain\");\nvar setImmediate = require(\"@internal/set-immediate\").___setImmediate;\nvar warp10Finalize = require(\"warp10/finalize\");\nvar defineComponent = require(\"../../../runtime/components/defineComponent\");\nvar eventDelegation = require(\"../../../runtime/components/event-delegation\");\nvar createFragmentNode =\n  require(\"../../../runtime/vdom/morphdom/fragment\").___createFragmentNode;\nvar ComponentDef = require(\"../../../runtime/components/ComponentDef\");\nvar domData = require(\"../../../runtime/components/dom-data\");\nvar componentsUtil = require(\"@internal/components-util\");\nvar req = require(\"@internal/require\");\nvar componentLookup = componentsUtil.___componentLookup;\nvar addComponentRootToKeyedElements =\n  componentsUtil.___addComponentRootToKeyedElements;\nvar keysByDOMNode = domData.___keyByDOMNode;\nvar keyedElementsByComponentId = domData.___ssrKeyedElementsByComponentId;\nvar componentsByDOMNode = domData.___componentByDOMNode;\nvar serverComponentRootNodes = {};\nvar serverRenderedMeta = {};\nvar win = window;\nwin.Marko = {\n  Component: function () {},\n};\n\nvar DEFAULT_RUNTIME_ID = \"M\";\nvar FLAG_WILL_RERENDER_IN_BROWSER = 1;\n// var FLAG_HAS_RENDER_BODY = 2;\n\nvar registered = {};\nvar loaded = {};\nvar componentTypes = {};\nvar deferredDefs;\nvar pendingDefs;\n\nfunction register(type, def) {\n  var pendingForType;\n  if (pendingDefs) {\n    pendingForType = pendingDefs[type];\n  }\n  registered[type] = def;\n  delete loaded[type];\n  delete componentTypes[type];\n\n  if (pendingForType) {\n    delete pendingDefs[type];\n    setImmediate(function () {\n      pendingForType.forEach(function (args) {\n        tryHydrateComponent(args[0], args[1], args[2], args[3])();\n      });\n    });\n  }\n\n  return type;\n}\n\nfunction addPendingDef(def, type, meta, host, runtimeId) {\n  if (!pendingDefs) {\n    pendingDefs = {};\n  }\n  (pendingDefs[type] = pendingDefs[type] || []).push([\n    def,\n    meta,\n    host,\n    runtimeId,\n  ]);\n}\n\nfunction load(typeName, isLegacy) {\n  var target = loaded[typeName];\n  if (!target) {\n    target = registered[typeName];\n\n    if (target) {\n      target = target();\n    } else if (isLegacy) {\n      target = exports.___legacy.load(typeName);\n    } else {\n      target = req(typeName);\n      // eslint-disable-next-line no-constant-condition\n      if (\"MARKO_DEBUG\") {\n        complain(\n          \"Looks like you used `require:` in your browser.json to load a component.  This requires that Marko has knowledge of how lasso generates paths and will be removed in a future version.  `marko-dependencies:/path/to/template.marko` should be used instead.\"\n        );\n      }\n    }\n\n    if (!target) {\n      throw Error(\"Component not found: \" + typeName);\n    }\n\n    loaded[typeName] = target;\n  }\n\n  return target;\n}\n\nfunction getComponentClass(typeName, isLegacy) {\n  var ComponentClass = componentTypes[typeName];\n\n  if (ComponentClass) {\n    return ComponentClass;\n  }\n\n  ComponentClass = load(typeName, isLegacy);\n\n  ComponentClass = ComponentClass.Component || ComponentClass;\n\n  if (!ComponentClass.___isComponent) {\n    ComponentClass = defineComponent(ComponentClass, ComponentClass.renderer);\n  }\n\n  // Make the component \"type\" accessible on each component instance\n  ComponentClass.prototype.___type = typeName;\n\n  // eslint-disable-next-line no-constant-condition\n  if (\"MARKO_DEBUG\") {\n    var classNameMatch =\n      /\\/([^/]+?)(?:\\/index|\\/template|)(?:\\.marko|\\.component(?:-browser)?|)$/.exec(\n        typeName\n      );\n    var className = classNameMatch ? classNameMatch[1] : \"AnonymousComponent\";\n    className = className.replace(/-(.)/g, function (g) {\n      return g[1].toUpperCase();\n    });\n    className = className\n      .replace(/\\$\\d+\\.\\d+\\.\\d+$/, \"\")\n      .replace(/^[^a-z$_]/i, \"_$&\")\n      .replace(/[^0-9a-z$_]+/gi, \"_\");\n    className = className[0].toUpperCase() + className.slice(1);\n     \n    var OldComponentClass = ComponentClass;\n    ComponentClass = {\n      [className]: function (id, doc) {\n        OldComponentClass.call(this, id, doc);\n      },\n    }[className];\n    ComponentClass.prototype = OldComponentClass.prototype;\n  }\n\n  componentTypes[typeName] = ComponentClass;\n\n  return ComponentClass;\n}\n\nfunction createComponent(typeName, id, isLegacy) {\n  var ComponentClass = getComponentClass(typeName, isLegacy);\n  return new ComponentClass(id);\n}\n\nfunction indexServerComponentBoundaries(node, runtimeId, stack) {\n  var componentId;\n  var ownerId;\n  var ownerComponent;\n  var keyedElements;\n  var nextSibling;\n  var runtimeLength = runtimeId.length;\n  stack = stack || [];\n\n  node = node.firstChild;\n  while (node) {\n    nextSibling = node.nextSibling;\n    if (node.nodeType === 8) {\n      // Comment node\n      var commentValue = node.nodeValue;\n      if (commentValue.slice(0, runtimeLength) === runtimeId) {\n        var firstChar = commentValue[runtimeLength];\n\n        if (firstChar === \"^\" || firstChar === \"#\") {\n          stack.push(node);\n        } else if (firstChar === \"/\") {\n          var endNode = node;\n          var startNode = stack.pop();\n          var rootNode;\n\n          if (startNode.parentNode === endNode.parentNode) {\n            rootNode = createFragmentNode(startNode.nextSibling, endNode);\n          } else {\n            rootNode = createFragmentNode(\n              endNode.parentNode.firstChild,\n              endNode\n            );\n          }\n\n          componentId = startNode.nodeValue.substring(runtimeLength + 1);\n          firstChar = startNode.nodeValue[runtimeLength];\n\n          if (firstChar === \"^\") {\n            var parts = componentId.split(/ /g);\n            var key = parts[2];\n            ownerId = parts[1];\n            componentId = parts[0];\n            if ((ownerComponent = componentLookup[ownerId])) {\n              keyedElements = ownerComponent.___keyedElements;\n            } else {\n              keyedElements =\n                keyedElementsByComponentId[ownerId] ||\n                (keyedElementsByComponentId[ownerId] = {});\n            }\n            addComponentRootToKeyedElements(\n              keyedElements,\n              key,\n              rootNode,\n              componentId\n            );\n          }\n\n          serverComponentRootNodes[componentId] = rootNode;\n\n          startNode.parentNode.removeChild(startNode);\n          endNode.parentNode.removeChild(endNode);\n        }\n      }\n    } else if (node.nodeType === 1) {\n      // HTML element node\n      var markoKey = node.getAttribute(\"data-marko-key\");\n      var markoProps = componentsUtil.___getMarkoPropsFromEl(node);\n      if (markoKey) {\n        var separatorIndex = markoKey.indexOf(\" \");\n        ownerId = markoKey.substring(separatorIndex + 1);\n        markoKey = markoKey.substring(0, separatorIndex);\n        if ((ownerComponent = componentLookup[ownerId])) {\n          keyedElements = ownerComponent.___keyedElements;\n        } else {\n          keyedElements =\n            keyedElementsByComponentId[ownerId] ||\n            (keyedElementsByComponentId[ownerId] = {});\n        }\n\n        keysByDOMNode.set(node, markoKey);\n        keyedElements[markoKey] = node;\n      }\n      if (markoProps) {\n        Object.keys(markoProps).forEach(function (key) {\n          if (key.slice(0, 2) === \"on\") {\n            eventDelegation.___addDelegatedEventHandler(key.slice(2));\n          }\n        });\n      }\n      indexServerComponentBoundaries(node, runtimeId, stack);\n    }\n\n    node = nextSibling;\n  }\n}\n\nfunction invokeComponentEventHandler(component, targetMethodName, args) {\n  var method = component[targetMethodName];\n  if (!method) {\n    throw Error(\"Method not found: \" + targetMethodName);\n  }\n\n  method.apply(component, args);\n}\n\nfunction addEventListenerHelper(el, eventType, isOnce, listener) {\n  var eventListener = listener;\n  if (isOnce) {\n    eventListener = function (event) {\n      listener(event);\n      el.removeEventListener(eventType, eventListener);\n    };\n  }\n\n  el.addEventListener(eventType, eventListener, false);\n\n  return function remove() {\n    el.removeEventListener(eventType, eventListener);\n  };\n}\n\nfunction addDOMEventListeners(\n  component,\n  el,\n  eventType,\n  targetMethodName,\n  isOnce,\n  extraArgs,\n  handles\n) {\n  var removeListener = addEventListenerHelper(\n    el,\n    eventType,\n    isOnce,\n    function (event) {\n      var args = [event, el];\n      if (extraArgs) {\n        args = extraArgs.concat(args);\n      }\n\n      invokeComponentEventHandler(component, targetMethodName, args);\n    }\n  );\n  handles.push(removeListener);\n}\n\nfunction initComponent(componentDef, host) {\n  var component = componentDef.___component;\n\n  if (!component || !component.___isComponent) {\n    return; // legacy\n  }\n\n  component.___reset();\n  component.___host = host;\n\n  var isExisting = componentDef.___isExisting;\n\n  if (isExisting) {\n    component.___removeDOMEventListeners();\n  }\n\n  var domEvents = componentDef.___domEvents;\n  if (domEvents) {\n    var eventListenerHandles = [];\n\n    domEvents.forEach(function (domEventArgs) {\n      // The event mapping is for a direct DOM event (not a custom event and not for bubblign dom events)\n\n      var eventType = domEventArgs[0];\n      var targetMethodName = domEventArgs[1];\n      var eventEl = component.___keyedElements[domEventArgs[2]];\n      var isOnce = domEventArgs[3];\n      var extraArgs = domEventArgs[4];\n\n      addDOMEventListeners(\n        component,\n        eventEl,\n        eventType,\n        targetMethodName,\n        isOnce,\n        extraArgs,\n        eventListenerHandles\n      );\n    });\n\n    if (eventListenerHandles.length) {\n      component.___domEventListenerHandles = eventListenerHandles;\n    }\n  }\n\n  if (component.___mounted) {\n    component.___emitUpdate();\n  } else {\n    component.___mounted = true;\n    component.___emitMount();\n  }\n}\n\n/**\n * This method is used to initialized components associated with UI components\n * rendered in the browser. While rendering UI components a \"components context\"\n * is added to the rendering context to keep up with which components are rendered.\n * When ready, the components can then be initialized by walking the component tree\n * in the components context (nested components are initialized before ancestor components).\n * @param  {Array<marko-components/lib/ComponentDef>} componentDefs An array of ComponentDef instances\n */\nfunction initClientRendered(componentDefs, host) {\n  if (!host) host = document;\n  // Ensure that event handlers to handle delegating events are\n  // always attached before initializing any components\n  eventDelegation.___init(host);\n  var len = componentDefs.length;\n  var componentDef;\n  var i;\n\n  for (i = len; i--; ) {\n    componentDef = componentDefs[i];\n    trackComponent(componentDef);\n  }\n\n  for (i = len; i--; ) {\n    componentDef = componentDefs[i];\n    initComponent(componentDef, host);\n  }\n}\n\n/**\n * This method initializes all components that were rendered on the server by iterating over all\n * of the component IDs.\n */\nfunction initServerRendered(renderedComponents, host) {\n  var type = typeof renderedComponents;\n  var globalKey = \"$\";\n  var runtimeId;\n\n  if (type !== \"object\") {\n    if (type === \"string\") {\n      runtimeId = renderedComponents;\n      globalKey += runtimeId + \"_C\";\n    } else {\n      globalKey += (runtimeId = DEFAULT_RUNTIME_ID) + \"C\";\n    }\n\n    renderedComponents = win[globalKey];\n\n    // eslint-disable-next-line no-constant-condition\n    if (\"MARKO_DEBUG\") {\n      if (\n        renderedComponents &&\n        renderedComponents.i !== undefined &&\n        renderedComponents.i !== componentsUtil.___runtimeId\n      ) {\n        console.warn(\n          \"Multiple instances of Marko have attached to the same runtime id. This could mean that more than one copy of Marko is loaded on the page, or that the script containing Marko has executed more than once.\"\n        );\n      }\n    }\n\n    var fakeArray = (win[globalKey] = {\n      r: runtimeId,\n      concat: initServerRendered,\n    });\n\n    // eslint-disable-next-line no-constant-condition\n    if (\"MARKO_DEBUG\") {\n      fakeArray.i = componentsUtil.___runtimeId;\n    }\n\n    if (renderedComponents && renderedComponents.forEach) {\n      renderedComponents.forEach(function (renderedComponent) {\n        fakeArray.concat(renderedComponent);\n      });\n    }\n\n    return fakeArray;\n  }\n\n  var isFromSerializedGlobals = this.concat === initServerRendered;\n  renderedComponents = warp10Finalize(renderedComponents);\n\n  if (isFromSerializedGlobals) {\n    runtimeId = this.r;\n    host = document;\n  } else {\n    runtimeId = renderedComponents.r || DEFAULT_RUNTIME_ID;\n    if (!host) host = document;\n\n    // eslint-disable-next-line no-constant-condition\n    if (\"MARKO_DEBUG\") {\n      complain(\n        \"Passing serialized data to `require('marko/components).init` is deprecated. Instead set '$global.runtimeId' and provide the 'runtimeId' option to your Marko bundler plugin.\"\n      );\n    }\n  }\n\n  // eslint-disable-next-line no-constant-condition\n  if (\"MARKO_DEBUG\") {\n    if (host !== document) {\n      complain(\n        \"Passing a document other than the current document to `require('marko/components).init` is deprecated.\"\n      );\n    }\n  }\n\n  var prefix = renderedComponents.p || \"s\";\n  var meta = serverRenderedMeta[prefix];\n  var isLast = renderedComponents.l;\n\n  if (meta) {\n    if (isLast) {\n      delete serverRenderedMeta[prefix];\n    }\n  } else {\n    meta = {};\n\n    if (!isLast) {\n      serverRenderedMeta[prefix] = meta;\n    }\n  }\n\n  // Ensure that event handlers to handle delegating events are\n  // always attached before initializing any components\n  indexServerComponentBoundaries(host, runtimeId);\n  eventDelegation.___init(host);\n\n  if (!meta.___globals) {\n    meta.___globals = Object.assign({\n      renderId: prefix,\n      runtimeId: runtimeId,\n      componentIdPrefix: prefix,\n    }, renderedComponents.g);\n  }\n\n  if (renderedComponents.t) {\n    meta.___types = meta.___types\n      ? meta.___types.concat(renderedComponents.t)\n      : renderedComponents.t;\n  }\n\n  // hydrate components top down (leaf nodes last)\n  // and return an array of functions to mount these components\n  (renderedComponents.w || [])\n    .map(function (componentDef) {\n      var typeName = meta.___types[componentDef[1]];\n\n      return registered[typeName] ||\n        req.e(typeName)\n        ? tryHydrateComponent(componentDef, meta, host, runtimeId)\n        : addPendingDef(componentDef, typeName, meta, host, runtimeId);\n    })\n    .reverse()\n    .forEach(tryInvoke);\n\n  return this;\n}\n\nfunction tryHydrateComponent(rawDef, meta, host, runtimeId) {\n  var componentDef = ComponentDef.___deserialize(\n    rawDef,\n    meta.___types,\n    meta.___globals,\n    exports\n  );\n  var mount = hydrateComponentAndGetMount(componentDef, host);\n\n  if (!mount) {\n    // hydrateComponentAndGetMount will return false if there is not rootNode\n    // for the component.  If this is the case, we'll wait until the\n    // DOM has fully loaded to attempt to init the component again.\n    if (deferredDefs) {\n      deferredDefs.push(componentDef);\n    } else {\n      deferredDefs = [componentDef];\n      document.addEventListener(\"DOMContentLoaded\", function () {\n        indexServerComponentBoundaries(host, runtimeId);\n        deferredDefs\n          .map(function (componentDef) {\n            return hydrateComponentAndGetMount(componentDef, host);\n          })\n          .reverse()\n          .forEach(tryInvoke);\n        deferredDefs.length = 0;\n      });\n    }\n  }\n\n  return mount;\n}\n\nfunction hydrateComponentAndGetMount(componentDef, host) {\n  var componentId = componentDef.id;\n  var component = componentDef.___component;\n  var rootNode = serverComponentRootNodes[componentId];\n  var renderResult;\n\n  if (rootNode) {\n    delete serverComponentRootNodes[componentId];\n\n    component.___rootNode = rootNode;\n    componentsByDOMNode.set(rootNode, component);\n\n    if (componentDef.___flags & FLAG_WILL_RERENDER_IN_BROWSER) {\n      component.___host = host;\n      renderResult = component.___rerender(component.___input, true);\n      trackComponent(componentDef);\n      return function mount() {\n        renderResult.afterInsert(host);\n      };\n    } else {\n      trackComponent(componentDef);\n    }\n\n    return function mount() {\n      initComponent(componentDef, host);\n    };\n  }\n}\n\nfunction trackComponent(componentDef) {\n  var component = componentDef.___component;\n  if (component) {\n    componentLookup[component.id] = component;\n  }\n}\n\nfunction tryInvoke(fn) {\n  if (fn) fn();\n}\n\nexports.r = register;\nexports.___createComponent = createComponent;\nexports.___getComponentClass = getComponentClass;\nexports.___initServerRendered = win.$initComponents = initServerRendered;\n\nrequire(\"../../../runtime/components/ComponentsContext\").___initClientRendered =\n  initClientRendered;\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/components-registry/index.js",
    "content": "\"use strict\";\nconst copyProps = require(\"raptor-util/copyProps\");\nconst constructorCache = new Map();\nconst BaseServerComponent = require(\"../../../runtime/components/ServerComponent\");\n\nfunction createServerComponentClass(renderingLogic) {\n  var renderingLogicProps =\n    typeof renderingLogic === \"function\"\n      ? renderingLogic.prototype\n      : renderingLogic;\n\n  class ServerComponent extends BaseServerComponent {}\n\n  copyProps(renderingLogicProps, ServerComponent.prototype);\n\n  return ServerComponent;\n}\nfunction createComponent(\n  renderingLogic,\n  id,\n  input,\n  out,\n  typeName,\n  customEvents,\n  scope\n) {\n  let ServerComponent;\n\n  if (renderingLogic) {\n    ServerComponent = constructorCache.get(renderingLogic);\n\n    if (!ServerComponent) {\n      ServerComponent = createServerComponentClass(renderingLogic);\n      constructorCache.set(renderingLogic, ServerComponent);\n    }\n  } else {\n    ServerComponent = BaseServerComponent;\n  }\n\n  return new ServerComponent(id, input, out, typeName, customEvents, scope);\n}\n\nexports.___isServer = true;\nexports.___createComponent = createComponent;\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/components-registry/package.json",
    "content": "{\n  \"main\": \"./index.js\",\n  \"browser\": \"./index-browser.js\",\n  \"exports\": {\n    \".\": {\n      \"worker\": \"./index.js\",\n      \"browser\": \"./index-browser.js\",\n      \"default\": \"./index.js\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/components-util/index-browser.js",
    "content": "var domData = require(\"../../../runtime/components/dom-data\");\nvar componentsByDOMNode = domData.___componentByDOMNode;\nvar keysByDOMNode = domData.___keyByDOMNode;\nvar vElementsByDOMNode = domData.___vElementByDOMNode;\nvar vPropsByDOMNode = domData.___vPropsByDOMNode;\nvar markoUID = window.$MUID || (window.$MUID = { i: 0 });\nvar runtimeId = markoUID.i++;\n\nvar componentLookup = {};\n\nvar EMPTY_OBJECT = {};\n\nfunction getComponentForEl(el, host) {\n  var node =\n    typeof el == \"string\"\n      ? ((host ? host.ownerDocument : host) || document).getElementById(el)\n      : el;\n  var component;\n  var vElement;\n\n  while (node) {\n    if (node.fragment) {\n      if (node.fragment.endNode === node) {\n        node = node.fragment.startNode;\n      } else {\n        node = node.fragment;\n        component = componentsByDOMNode.get(node);\n      }\n    } else if ((vElement = vElementsByDOMNode.get(node))) {\n      component = vElement.___ownerComponent;\n    }\n\n    if (component) {\n      return component;\n    }\n\n    node = node.previousSibling || node.parentNode;\n  }\n}\n\nfunction destroyComponentForNode(node) {\n  var componentToDestroy = componentsByDOMNode.get(node.fragment || node);\n  if (componentToDestroy) {\n    componentToDestroy.___destroyShallow();\n    delete componentLookup[componentToDestroy.id];\n  }\n}\nfunction destroyNodeRecursive(node, component) {\n  destroyComponentForNode(node);\n  if (node.nodeType === 1 || node.nodeType === 12) {\n    var key;\n\n    if (component && (key = keysByDOMNode.get(node))) {\n      if (node === component.___keyedElements[key]) {\n        if (componentsByDOMNode.get(node) && /\\[\\]$/.test(key)) {\n          delete component.___keyedElements[key][\n            componentsByDOMNode.get(node).id\n          ];\n        } else {\n          delete component.___keyedElements[key];\n        }\n      }\n    }\n\n    var curChild = node.firstChild;\n    while (curChild && curChild !== node.endNode) {\n      destroyNodeRecursive(curChild, component);\n      curChild = curChild.nextSibling;\n    }\n  }\n}\n\nfunction nextComponentId() {\n  // Each component will get an ID that is unique across all loaded\n  // marko runtimes. This allows multiple instances of marko to be\n  // loaded in the same window and they should all place nice\n  // together\n  return \"c\" + markoUID.i++;\n}\n\nfunction nextComponentIdProvider() {\n  return nextComponentId;\n}\n\nfunction attachBubblingEvent(\n  componentDef,\n  handlerMethodName,\n  isOnce,\n  extraArgs\n) {\n  if (handlerMethodName) {\n    var componentId = componentDef.id;\n    if (extraArgs) {\n      return [handlerMethodName, componentId, isOnce, extraArgs];\n    } else {\n      return [handlerMethodName, componentId, isOnce];\n    }\n  }\n}\n\nfunction getMarkoPropsFromEl(el) {\n  var vElement = vElementsByDOMNode.get(el);\n  var virtualProps;\n\n  if (vElement) {\n    virtualProps = vElement.___properties;\n  } else {\n    virtualProps = vPropsByDOMNode.get(el);\n    if (!virtualProps) {\n      virtualProps = el.getAttribute(\"data-marko\");\n      vPropsByDOMNode.set(\n        el,\n        (virtualProps = virtualProps ? JSON.parse(virtualProps) : EMPTY_OBJECT)\n      );\n    }\n  }\n\n  return virtualProps;\n}\n\nfunction normalizeComponentKey(key, parentId) {\n  if (key[0] === \"#\") {\n    key = key.replace(\"#\" + parentId + \"-\", \"\");\n  }\n  return key;\n}\n\nfunction addComponentRootToKeyedElements(\n  keyedElements,\n  key,\n  rootNode,\n  componentId\n) {\n  if (/\\[\\]$/.test(key)) {\n    var repeatedElementsForKey = (keyedElements[key] =\n      keyedElements[key] || {});\n    repeatedElementsForKey[componentId] = rootNode;\n  } else {\n    keyedElements[key] = rootNode;\n  }\n}\n\nexports.___runtimeId = runtimeId;\nexports.___componentLookup = componentLookup;\nexports.___getComponentForEl = getComponentForEl;\nexports.___destroyComponentForNode = destroyComponentForNode;\nexports.___destroyNodeRecursive = destroyNodeRecursive;\nexports.___nextComponentIdProvider = nextComponentIdProvider;\nexports.___attachBubblingEvent = attachBubblingEvent;\nexports.___getMarkoPropsFromEl = getMarkoPropsFromEl;\nexports.___addComponentRootToKeyedElements = addComponentRootToKeyedElements;\nexports.___normalizeComponentKey = normalizeComponentKey;\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/components-util/index.js",
    "content": "var getRenderId = require(\"../../../runtime/html/get-render-id\");\n\nvar FLAG_WILL_RERENDER_IN_BROWSER = 1;\n// var FLAG_HAS_RENDER_BODY = 2;\n\nfunction nextComponentIdProvider(out) {\n  var prefix = getRenderId(out.global) || \"s\"; // \"s\" is for server (we use \"b\" for the browser)\n  var nextId = 0;\n\n  return function nextComponentId() {\n    return prefix + nextId++;\n  };\n}\n\nfunction attachBubblingEvent(\n  componentDef,\n  handlerMethodName,\n  isOnce,\n  extraArgs\n) {\n  if (handlerMethodName) {\n    if (extraArgs) {\n      var component = componentDef.___component;\n      var eventIndex = component.___bubblingDomEventsExtraArgsCount++;\n\n      // If we are not going to be doing a rerender in the browser\n      // then we need to actually store the extra args with the UI component\n      // so that they will be serialized down to the browser.\n      // If we are rerendering in the browser then we just need to\n      // increment ___bubblingDomEventsExtraArgsCount to keep track of\n      // where the extra args will be found when the UI component is\n      // rerendered in the browser\n\n      if (!(componentDef.___flags & FLAG_WILL_RERENDER_IN_BROWSER)) {\n        if (eventIndex === 0) {\n          component.___bubblingDomEvents = [extraArgs];\n        } else {\n          component.___bubblingDomEvents.push(extraArgs);\n        }\n      }\n\n      return (\n        handlerMethodName +\n        \" \" +\n        componentDef.id +\n        \" \" +\n        isOnce +\n        \" \" +\n        eventIndex\n      );\n    } else {\n      return handlerMethodName + \" \" + componentDef.id + \" \" + isOnce;\n    }\n  }\n}\n\nexports.___nextComponentIdProvider = nextComponentIdProvider;\nexports.___isServer = true;\nexports.___attachBubblingEvent = attachBubblingEvent;\nexports.___destroyComponentForNode = function noop() {};\nexports.___destroyNodeRecursive = function noop() {};\n\n// eslint-disable-next-line no-constant-condition\nif (\"MARKO_DEBUG\") {\n  exports.___startDOMManipulationWarning = function noop() {};\n  exports.___stopDOMManipulationWarning = function noop() {};\n}\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/components-util/package.json",
    "content": "{\n  \"main\": \"./index.js\",\n  \"browser\": \"./index-browser.js\",\n  \"exports\": {\n    \".\": {\n      \"worker\": \"./index.js\",\n      \"browser\": \"./index-browser.js\",\n      \"default\": \"./index.js\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/create-readable/index-browser.js",
    "content": "var encoder = new TextEncoder();\nvar noop = function () {};\n\nmodule.exports = function (data) {\n  var transformStream = new TransformStream();\n  var writer = transformStream.writable.getWriter();\n  var facade = {\n    write: function (string) {\n      writer.write(encoder.encode(string));\n    },\n    end: function () {\n      writer.close();\n    },\n  };\n  var out = this.createOut(\n    data && data.$global,\n    facade,\n    undefined,\n    this.___shouldBuffer\n  );\n  out.once(\"error\", (err) => {\n    facade.write = facade.end = noop;\n    writer.abort(err);\n  });\n  this.render(data, out);\n  out.end();\n\n  return transformStream.readable;\n};\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/create-readable/index.js",
    "content": "var stream = require(\"stream\");\n\nvar OutgoingMessageProto = require(\"http\").OutgoingMessage.prototype;\nif (String(OutgoingMessageProto.flush).indexOf(\"deprecated\") !== -1) {\n  // Yes, we are monkey-patching http. This method should never have been added and it was introduced on\n  // the iojs fork. It was quickly deprecated and I'm 99% sure no one is actually using it.\n  // See:\n  // - https://github.com/marko-js/async-writer/issues/3\n  // - https://github.com/nodejs/node/issues/2920\n  //\n  // This method causes problems since marko looks for the flush method and calls it found.\n  // The `res.flush()` method is introduced by the [compression](https://www.npmjs.com/package/compression)\n  // middleware, but, otherwise, it should typically not exist.\n  delete OutgoingMessageProto.flush;\n}\n\nclass Readable extends stream.Readable {\n  constructor(template, data) {\n    super();\n    this.___template = template;\n    this.___data = data;\n    this.___rendered = false;\n  }\n\n  write(data) {\n    if (data != null) {\n      this.push(data);\n    }\n  }\n\n  end() {\n    this.push(null);\n  }\n\n  _read() {\n    if (this.___rendered) {\n      return;\n    }\n\n    this.___rendered = true;\n    var template = this.___template;\n    var data = this.___data;\n    var globalData = data && data.$global;\n    var out = this.___template.createOut(\n      globalData,\n      this,\n      undefined,\n      template.___shouldBuffer\n    );\n    template.render(data, out);\n    out.end();\n  }\n}\n\nmodule.exports = function (data) {\n  return new Readable(this, data);\n};\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/create-readable/package.json",
    "content": "{\n  \"main\": \"./index.js\",\n  \"browser\": \"./index-browser.js\",\n  \"exports\": {\n    \".\": {\n      \"worker\": \"./index-browser.js\",\n      \"browser\": \"./index-browser.js\",\n      \"default\": \"./index.js\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/loader/fallback-node.js",
    "content": "\"use strict\";\n\nvar nodePath = require(\"path\");\nvar fs = require(\"fs\");\nvar Module = require(\"module\").Module;\nvar markoCompiler = require(\"../../../compiler\");\nvar cwd = process.cwd();\nvar fsOptions = { encoding: \"utf8\" };\nvar requiredCompilerOptions = { modules: \"cjs\" };\n\nmodule.exports = function load(templatePath, templateSrc, options) {\n  if (arguments.length === 1) {\n    return doLoad(templatePath);\n  } else if (arguments.length === 2) {\n    // see if second argument is templateSrc (a String)\n    // or options (an Object)\n    var lastArg = arguments[arguments.length - 1];\n    if (typeof lastArg === \"string\") {\n      return doLoad(templatePath, templateSrc);\n    } else {\n      var finalOptions = templateSrc;\n      return doLoad(templatePath, null, finalOptions);\n    }\n  } else if (arguments.length === 3) {\n    // assume function called according to function signature\n    return doLoad(templatePath, templateSrc, options);\n  } else {\n    throw new Error(\"Illegal arguments\");\n  }\n};\n\nfunction loadSource(templatePath, compiledSrc) {\n  // Short-circuit loading if the template has already been cached in the Node.js require cache\n  var cached = require.cache[templatePath];\n  if (cached) {\n    return cached.exports;\n  }\n\n  var templateModule = new Module(templatePath, module);\n  templateModule.paths = Module._nodeModulePaths(\n    nodePath.dirname(templatePath)\n  );\n  templateModule.filename = templatePath;\n\n  Module._cache[templatePath] = templateModule;\n\n  templateModule._compile(compiledSrc, templatePath);\n\n  return templateModule.exports;\n}\n\nfunction getCachedTemplate(templatePath) {\n  var precompiledTemplatePath = templatePath + \".js\";\n  var templateModule =\n    require.cache[templatePath] || require.cache[precompiledTemplatePath];\n\n  if (templateModule) {\n    return templateModule.exports;\n  } else if (fs.existsSync(precompiledTemplatePath)) {\n    return require(precompiledTemplatePath);\n  }\n}\n\nfunction doLoad(templatePath, templateSrc, options) {\n  options = Object.assign(\n    {},\n    markoCompiler.defaultOptions,\n    options,\n    requiredCompilerOptions\n  );\n  templatePath = nodePath.resolve(cwd, templatePath);\n  var template = getCachedTemplate(templatePath);\n\n  if (!template) {\n    if (templateSrc == null) {\n      templateSrc = fs.readFileSync(templatePath, fsOptions);\n    }\n\n    var compiledSrc = markoCompiler.compile(templateSrc, templatePath, options);\n\n    template = loadSource(templatePath, compiledSrc);\n  }\n\n  if (template.default) {\n    template = template.default;\n  }\n\n  return template;\n}\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/loader/index-browser.js",
    "content": "\"use strict\";\nmodule.exports = require(\"@internal/require\");\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/loader/index.js",
    "content": "\"use strict\";\n\nconst req = require(\"@internal/require\");\nlet fallback;\nmodule.exports = !require.extensions[\".marko\"]\n  ? require(\"./fallback-node\")\n  : function load(templatePath, templateSrc, options) {\n      switch (arguments.length) {\n        case 1:\n          return req(templatePath);\n        case 2:\n          return (fallback = fallback || require(\"./fallback-node\"))(\n            templatePath,\n            templateSrc\n          );\n        case 3:\n          return (fallback = fallback || require(\"./fallback-node\"))(\n            templatePath,\n            templateSrc,\n            options\n          );\n      }\n    };\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/loader/package.json",
    "content": "{\n  \"main\": \"./index.js\",\n  \"browser\": \"./index-browser.js\",\n  \"exports\": {\n    \".\": {\n      \"node\": \"./index.js\",\n      \"default\": \"./index-browser.js\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/preserve-tag/index-browser.js",
    "content": "module.exports = function render(input, out) {\n  var isComponent = !input.n;\n  var shouldPreserve = !(\"i\" in input) || input.i;\n  var componentsContext = out.___components;\n  var isHydrate =\n    componentsContext && componentsContext.___globalContext.___isHydrate;\n  var ownerComponent = out.___assignedComponentDef.___component;\n  var referenceComponent = ownerComponent;\n  var key = out.___assignedKey;\n  var checkKey = key;\n\n  if (key[0] !== \"@\") {\n    var parentComponent = componentsContext.___componentDef.___component;\n    if (ownerComponent !== parentComponent) {\n      referenceComponent = parentComponent;\n      checkKey += \":\" + ownerComponent.id;\n    }\n  }\n\n  var isPreserved =\n    shouldPreserve &&\n    ((isHydrate && (isComponent || input.b)) ||\n      referenceComponent.___keyedElements[checkKey]);\n\n  if (isComponent) {\n    out.bf(key, ownerComponent, shouldPreserve);\n\n    if (!isPreserved && input.renderBody) {\n      input.renderBody(out);\n    }\n\n    out.ef();\n  } else {\n    if (isPreserved) {\n      if (input.b) {\n        out.___parent.___preserveBody = true;\n      } else {\n        out.beginElement(\"\", null, key, ownerComponent);\n        out.___parent.___preserve = true;\n        out.endElement();\n      }\n    } else if (input.renderBody) {\n      input.renderBody(out);\n    }\n  }\n};\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/preserve-tag/index.js",
    "content": "var ComponentsContext = require(\"../../../runtime/components/ComponentsContext\");\nvar getComponentsContext = ComponentsContext.___getComponentsContext;\n\nmodule.exports = function render(input, out) {\n  var isComponent = !input.n;\n  var shouldPreserve = !(\"i\" in input) || input.i;\n  var componentsContext = out.___components;\n\n  if (isComponent) {\n    out.bf(out.___assignedKey, out.___assignedComponentDef.___component, true);\n  }\n\n  if (input.renderBody) {\n    if (shouldPreserve) {\n      var parentPreserved = false;\n\n      if (componentsContext) {\n        parentPreserved = componentsContext.___isPreserved;\n      } else {\n        componentsContext = getComponentsContext(out);\n      }\n\n      componentsContext.___isPreserved = true;\n      input.renderBody(out);\n      componentsContext.___isPreserved = parentPreserved;\n    } else {\n      input.renderBody(out);\n    }\n  }\n\n  if (isComponent) {\n    out.ef();\n  }\n};\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/preserve-tag/package.json",
    "content": "{\n  \"main\": \"./index.js\",\n  \"browser\": \"./index-browser.js\",\n  \"exports\": {\n    \".\": {\n      \"worker\": \"./index.js\",\n      \"browser\": \"./index-browser.js\",\n      \"default\": \"./index.js\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/require/index-browser.js",
    "content": "\"use strict\";\nload.e = exists;\nmodule.exports = load;\n\nfunction load(id) {\n  return interopRequire(require(id));\n}\n\nfunction exists() {\n  return false;\n}\n\nfunction interopRequire(mod) {\n  return mod.default || mod;\n}\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/require/index-legacy-browser.js",
    "content": "\"use strict\";\nload.e = exists;\nmodule.exports = load;\n\nfunction load(id) {\n  return interopRequire(require(id));\n}\n\nfunction exists(id) {\n  // In lasso this helper is used to determine if a module was loaded but not run.\n  return !!(\n    require.runtime &&\n    require.runtime.resolve &&\n    require.runtime.resolve(id, \"/\")\n  );\n}\n\nfunction interopRequire(mod) {\n  return mod.default || mod;\n}\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/require/index-webpack.js",
    "content": "\"use strict\";\nload.e = exists;\nmodule.exports = load;\n\nfunction load(id) {\n  // eslint-disable-next-line no-undef\n  return interopRequire(__webpack_require__(id));\n}\n\nfunction exists() {\n  return false;\n}\n\nfunction interopRequire(mod) {\n  return mod.default || mod;\n}\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/require/index.js",
    "content": "\"use strict\";\nload.e = exists;\nmodule.exports = load;\n\nfunction load(id) {\n  return interopRequire(require(id));\n}\n\nfunction exists() {\n  return false;\n}\n\nfunction interopRequire(mod) {\n  return mod.default || mod;\n}\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/require/package.json",
    "content": "{\n  \"main\": \"./index.js\",\n  \"browser\": \"./index-legacy-browser.js\",\n  \"exports\": {\n    \".\": {\n      \"webpack\": \"./index-webpack.js\",\n      \"browser\": \"./index-browser.js\",\n      \"default\": \"./index.js\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/set-immediate/index-browser.js",
    "content": "var queue = [];\nvar msg = \"\" + Math.random();\nwindow.addEventListener(\"message\", function (ev) {\n  if (ev.data === msg) {\n    var callbacks = queue;\n    queue = [];\n    for (var i = 0; i < callbacks.length; i++) {\n      callbacks[i]();\n    }\n  }\n});\n\nexports.___setImmediate = function (callback) {\n  if (queue.push(callback) === 1) {\n    window.postMessage(msg, \"*\");\n  }\n};\n\nexports.___queueMicrotask = require(\"./queueMicrotask\");\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/set-immediate/index-worker.js",
    "content": "var queueMicrotask = require(\"./queueMicrotask\");\nvar count = 0;\nvar queue = new Set();\nfunction noop() {}\n\nexports.___setImmediate = function setImmediate(cb) {\n  queue.add(cb);\n  if (!count) {\n    queueMicrotaskInternal(noop);\n  }\n  return cb;\n};\n\nexports.___clearImmediate = function clearImmediate(id) {\n  queue.delete(id);\n};\n\nexports.___queueMicrotask = queueMicrotaskInternal;\n\nfunction queueMicrotaskInternal(cb) {\n  count++;\n  queueMicrotask(function () {\n    if (--count === 0 && queue.size) {\n      for (const fn of queue) {\n        queueMicrotask(fn);\n      }\n      queue = new Set();\n    }\n    cb();\n  });\n}\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/set-immediate/index.js",
    "content": "exports.___setImmediate = setImmediate;\nexports.___clearImmediate = clearImmediate;\nexports.___queueMicrotask = require(\"./queueMicrotask\");\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/set-immediate/package.json",
    "content": "{\n  \"main\": \"./index.js\",\n  \"browser\": \"./index-browser.js\",\n  \"exports\": {\n    \".\": {\n      \"worker\": \"./index-worker.js\",\n      \"browser\": \"./index-browser.js\",\n      \"default\": \"./index.js\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/src/node_modules/@internal/set-immediate/queueMicrotask.js",
    "content": "var promise;\nmodule.exports =\n  typeof queueMicrotask === \"function\"\n    ? queueMicrotask\n    : ((promise = Promise.resolve()),\n      function (cb) {\n        promise.then(cb);\n      });\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/.eslintrc",
    "content": "{\n    \"env\": {\n        \"browser\": true\n    }\n}"
  },
  {
    "path": "packages/runtime-class/src/runtime/RenderResult.js",
    "content": "var domInsert = require(\"./dom-insert\");\n// eslint-disable-next-line no-constant-binary-expression\nvar complain = \"MARKO_DEBUG\" && require(\"complain\");\n\nfunction getRootNode(el) {\n  var cur = el;\n  while (cur.parentNode) cur = cur.parentNode;\n  return cur;\n}\n\nfunction getComponentDefs(result) {\n  var componentDefs = result.___components;\n\n  if (!componentDefs) {\n    throw Error(\"No component\");\n  }\n  return componentDefs;\n}\n\nfunction RenderResult(out) {\n  this.out = this.___out = out;\n  this.___components = undefined;\n}\n\nmodule.exports = RenderResult;\n\nvar proto = (RenderResult.prototype = {\n  getComponent: function () {\n    return this.getComponents()[0];\n  },\n  getComponents: function (selector) {\n    if (this.___components === undefined) {\n      throw Error(\"Not added to DOM\");\n    }\n\n    var componentDefs = getComponentDefs(this);\n\n    var components = [];\n\n    componentDefs.forEach(function (componentDef) {\n      var component = componentDef.___component;\n      if (!selector || selector(component)) {\n        components.push(component);\n      }\n    });\n\n    return components;\n  },\n\n  afterInsert: function (host) {\n    var out = this.___out;\n    var componentsContext = out.___components;\n    if (componentsContext) {\n      this.___components = componentsContext.___initComponents(host);\n    } else {\n      this.___components = null;\n    }\n\n    return this;\n  },\n  getNode: function (host) {\n    return this.___out.___getNode(host);\n  },\n  getOutput: function () {\n    return this.___out.___getOutput();\n  },\n  toString: function () {\n    return this.___out.toString();\n  },\n  document: typeof document === \"object\" && document,\n});\n\nObject.defineProperty(proto, \"html\", {\n  get: function () {\n    // eslint-disable-next-line no-constant-condition\n    if (\"MARKO_DEBUG\") {\n      complain(\n        'The \"html\" property is deprecated. Please use \"toString\" instead.',\n      );\n    }\n    return this.toString();\n  },\n});\n\nObject.defineProperty(proto, \"context\", {\n  get: function () {\n    // eslint-disable-next-line no-constant-condition\n    if (\"MARKO_DEBUG\") {\n      complain(\n        'The \"context\" property is deprecated. Please use \"out\" instead.',\n      );\n    }\n    return this.___out;\n  },\n});\n\n// Add all of the following DOM methods to Component.prototype:\n// - appendTo(referenceEl)\n// - replace(referenceEl)\n// - replaceChildrenOf(referenceEl)\n// - insertBefore(referenceEl)\n// - insertAfter(referenceEl)\n// - prependTo(referenceEl)\ndomInsert(\n  proto,\n  function getEl(renderResult, referenceEl) {\n    return renderResult.getNode(getRootNode(referenceEl));\n  },\n  function afterInsert(renderResult, referenceEl) {\n    return renderResult.afterInsert(getRootNode(referenceEl));\n  },\n);\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/components/Component.js",
    "content": "\"use strict\";\n\n// eslint-disable-next-line no-constant-binary-expression\nvar complain = \"MARKO_DEBUG\" && require(\"complain\");\nvar EventEmitter = require(\"events-light\");\nvar SubscriptionTracker = require(\"listener-tracker\");\nvar inherit = require(\"raptor-util/inherit\");\nvar componentsUtil = require(\"@internal/components-util\");\nvar componentLookup = componentsUtil.___componentLookup;\nvar destroyNodeRecursive = componentsUtil.___destroyNodeRecursive;\nvar defaultCreateOut = require(\"../createOut\");\nvar domInsert = require(\"../dom-insert\");\nvar RenderResult = require(\"../RenderResult\");\nvar morphdom = require(\"../vdom/morphdom\");\nvar getComponentsContext =\n  require(\"./ComponentsContext\").___getComponentsContext;\nvar domData = require(\"./dom-data\");\nvar eventDelegation = require(\"./event-delegation\");\nvar updateManager = require(\"./update-manager\");\nvar componentsByDOMNode = domData.___componentByDOMNode;\nvar keyedElementsByComponentId = domData.___ssrKeyedElementsByComponentId;\nvar CONTEXT_KEY = \"__subtree_context__\";\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar slice = Array.prototype.slice;\n\nvar NON_COMPONENT_SUBSCRIBE_TO_OPTIONS = {\n  addDestroyListener: false,\n};\n\nvar emit = EventEmitter.prototype.emit;\nvar ELEMENT_NODE = 1;\n\nfunction removeListener(removeEventListenerHandle) {\n  removeEventListenerHandle();\n}\n\nfunction walkFragments(fragment) {\n  var node;\n\n  while (fragment) {\n    node = fragment.firstChild;\n\n    if (!node) {\n      break;\n    }\n\n    fragment = node.fragment;\n  }\n\n  return node;\n}\n\nfunction handleCustomEventWithMethodListener(\n  component,\n  targetMethodName,\n  args,\n  extraArgs,\n) {\n  // Remove the \"eventType\" argument\n  args.push(component);\n\n  if (extraArgs) {\n    args = extraArgs.concat(args);\n  }\n\n  var targetComponent = componentLookup[component.___scope];\n  var targetMethod =\n    typeof targetMethodName === \"function\"\n      ? targetMethodName\n      : targetComponent[targetMethodName];\n  if (!targetMethod) {\n    throw Error(\"Method not found: \" + targetMethodName);\n  }\n\n  targetMethod.apply(targetComponent, args);\n}\n\nfunction resolveKeyHelper(key, index) {\n  return index ? key + \"_\" + index : key;\n}\n\nfunction resolveComponentIdHelper(component, key, index) {\n  return component.id + \"-\" + resolveKeyHelper(key, index);\n}\n\n/**\n * This method is used to process \"update_<stateName>\" handler functions.\n * If all of the modified state properties have a user provided update handler\n * then a rerender will be bypassed and, instead, the DOM will be updated\n * looping over and invoking the custom update handlers.\n * @return {boolean} Returns true if if the DOM was updated. False, otherwise.\n */\nfunction processUpdateHandlers(component, stateChanges, oldState) {\n  var handlerMethod;\n  var handlers;\n\n  for (var propName in stateChanges) {\n    if (hasOwnProperty.call(stateChanges, propName)) {\n      var handlerMethodName = \"update_\" + propName;\n\n      handlerMethod = component[handlerMethodName];\n      if (handlerMethod) {\n        (handlers || (handlers = [])).push([propName, handlerMethod]);\n      } else {\n        // This state change does not have a state handler so return false\n        // to force a rerender\n        return;\n      }\n    }\n  }\n\n  // If we got here then all of the changed state properties have\n  // an update handler or there are no state properties that actually\n  // changed.\n  if (handlers) {\n    // Otherwise, there are handlers for all of the changed properties\n    // so apply the updates using those handlers\n\n    handlers.forEach(function (handler) {\n      var propertyName = handler[0];\n      handlerMethod = handler[1];\n\n      var newValue = stateChanges[propertyName];\n      var oldValue = oldState[propertyName];\n      handlerMethod.call(component, newValue, oldValue);\n    });\n\n    component.___emitUpdate();\n    component.___reset();\n  }\n\n  return true;\n}\n\nfunction checkInputChanged(existingComponent, oldInput, newInput) {\n  if (oldInput != newInput) {\n    if (oldInput == null || newInput == null) {\n      return true;\n    }\n\n    var oldKeys = Object.keys(oldInput);\n    var newKeys = Object.keys(newInput);\n    var len = oldKeys.length;\n    if (len !== newKeys.length) {\n      return true;\n    }\n\n    for (var i = len; i--; ) {\n      var key = oldKeys[i];\n      if (!(key in newInput && oldInput[key] === newInput[key])) {\n        return true;\n      }\n    }\n  }\n\n  return false;\n}\n\nvar componentProto;\n\n/**\n * Base component type.\n *\n * NOTE: Any methods that are prefixed with an underscore should be considered private!\n */\nfunction Component(id) {\n  EventEmitter.call(this);\n  this.id = id;\n  this.___state = null;\n  this.___rootNode = null;\n  this.___subscriptions = null;\n  this.___domEventListenerHandles = null;\n  this.___bubblingDomEvents = null; // Used to keep track of bubbling DOM events for components rendered on the server\n  this.___customEvents = null;\n  this.___scope = null;\n  this.___renderInput = null;\n  this.___input = undefined;\n  this.___mounted = false;\n  this.___global = undefined;\n  this.___destroyed = false;\n  this.___updateQueued = false;\n  this.___dirty = false;\n  this.___settingInput = false;\n  this.___host = undefined;\n\n  var ssrKeyedElements = keyedElementsByComponentId[id];\n\n  if (ssrKeyedElements) {\n    this.___keyedElements = ssrKeyedElements;\n    delete keyedElementsByComponentId[id];\n  } else {\n    this.___keyedElements = {};\n  }\n}\n\nComponent.prototype = componentProto = {\n  ___isComponent: true,\n\n  subscribeTo: function (target) {\n    if (!target) {\n      throw TypeError();\n    }\n\n    var subscriptions =\n      this.___subscriptions ||\n      (this.___subscriptions = new SubscriptionTracker());\n\n    var subscribeToOptions = target.___isComponent\n      ? undefined\n      : NON_COMPONENT_SUBSCRIBE_TO_OPTIONS;\n\n    return subscriptions.subscribeTo(target, subscribeToOptions);\n  },\n\n  emit: function (eventType) {\n    var customEvents = this.___customEvents;\n    var target;\n\n    if (customEvents && (target = customEvents[eventType])) {\n      var targetMethodName = target[0];\n      var isOnce = target[1];\n      var extraArgs = target[2];\n      var args = slice.call(arguments, 1);\n\n      handleCustomEventWithMethodListener(\n        this,\n        targetMethodName,\n        args,\n        extraArgs,\n      );\n\n      if (isOnce) {\n        delete customEvents[eventType];\n      }\n    }\n\n    return emit.apply(this, arguments);\n  },\n  getElId: function (key, index) {\n    if (!key) {\n      return this.id;\n    }\n    return resolveComponentIdHelper(this, key, index);\n  },\n  getEl: function (key, index) {\n    if (key) {\n      var resolvedKey = resolveKeyHelper(key, index);\n      var keyedElement = this.___keyedElements[\"@\" + resolvedKey];\n      if (keyedElement && keyedElement.nodeType === 12 /** FRAGMENT_NODE */) {\n        // eslint-disable-next-line no-constant-condition\n        if (\"MARKO_DEBUG\") {\n          complain(\n            \"Accessing the elements of a child component using 'component.getEl' is deprecated.\",\n          );\n        }\n\n        return walkFragments(keyedElement);\n      }\n\n      return keyedElement;\n    } else {\n      return this.el;\n    }\n  },\n  getEls: function (key) {\n    key = key + \"[]\";\n\n    var els = [];\n    var i = 0;\n    var el;\n    while ((el = this.getEl(key, i))) {\n      els.push(el);\n      i++;\n    }\n    return els;\n  },\n  getComponent: function (key, index) {\n    var rootNode = this.___keyedElements[\"@\" + resolveKeyHelper(key, index)];\n    if (/\\[\\]$/.test(key)) {\n      // eslint-disable-next-line no-constant-condition\n      if (\"MARKO_DEBUG\") {\n        complain(\n          \"A repeated key[] was passed to getComponent. Use a non-repeating key if there is only one of these components.\",\n        );\n      }\n      rootNode = rootNode && rootNode[Object.keys(rootNode)[0]];\n    }\n    return rootNode && componentsByDOMNode.get(rootNode);\n  },\n  getComponents: function (key) {\n    var lookup = this.___keyedElements[\"@\" + key + \"[]\"];\n    return lookup\n      ? Object.keys(lookup)\n          .map(function (key) {\n            return componentsByDOMNode.get(lookup[key]);\n          })\n          .filter(Boolean)\n      : [];\n  },\n  destroy: function () {\n    if (this.___destroyed) {\n      return;\n    }\n\n    var root = this.___rootNode;\n\n    this.___destroyShallow();\n\n    var nodes = root.nodes;\n\n    nodes.forEach(function (node) {\n      destroyNodeRecursive(node);\n\n      if (eventDelegation.___handleNodeDetach(node) !== false) {\n        node.parentNode.removeChild(node);\n      }\n    });\n\n    root.detached = true;\n\n    delete componentLookup[this.id];\n    this.___keyedElements = {};\n  },\n\n  ___destroyShallow: function () {\n    if (this.___destroyed) {\n      return;\n    }\n\n    this.___emitDestroy();\n    this.___destroyed = true;\n\n    componentsByDOMNode.set(this.___rootNode, undefined);\n\n    this.___rootNode = null;\n\n    // Unsubscribe from all DOM events\n    this.___removeDOMEventListeners();\n\n    var subscriptions = this.___subscriptions;\n    if (subscriptions) {\n      subscriptions.removeAllListeners();\n      this.___subscriptions = null;\n    }\n  },\n\n  isDestroyed: function () {\n    return this.___destroyed;\n  },\n  get state() {\n    return this.___state;\n  },\n  set state(newState) {\n    var state = this.___state;\n    if (!state && !newState) {\n      return;\n    }\n\n    if (!state) {\n      state = this.___state = new this.___State(this);\n    }\n\n    state.___replace(newState || {});\n\n    if (state.___dirty) {\n      this.___queueUpdate();\n    }\n\n    if (!newState) {\n      this.___state = null;\n    }\n  },\n  setState: function (name, value) {\n    var state = this.___state;\n\n    if (!state) {\n      state = this.___state = new this.___State(this);\n    }\n    if (typeof name == \"object\") {\n      // Merge in the new state with the old state\n      var newState = name;\n      for (var k in newState) {\n        if (hasOwnProperty.call(newState, k)) {\n          state.___set(k, newState[k], true /* ensure:true */);\n        }\n      }\n    } else {\n      state.___set(name, value, true /* ensure:true */);\n    }\n  },\n\n  setStateDirty: function (name, value) {\n    var state = this.___state;\n\n    if (arguments.length == 1) {\n      value = state[name];\n    }\n\n    state.___set(\n      name,\n      value,\n      true /* ensure:true */,\n      true /* forceDirty:true */,\n    );\n  },\n\n  replaceState: function (newState) {\n    this.___state.___replace(newState);\n  },\n\n  get input() {\n    return this.___input;\n  },\n  set input(newInput) {\n    if (this.___settingInput) {\n      this.___input = newInput;\n    } else {\n      this.___setInput(newInput);\n    }\n  },\n\n  ___setInput: function (newInput, onInput, out) {\n    onInput = onInput || this.onInput;\n    var updatedInput;\n\n    var oldInput = this.___input;\n    this.___input = undefined;\n    this.___context = (out && out[CONTEXT_KEY]) || this.___context;\n\n    if (onInput) {\n      // We need to set a flag to preview `this.input = foo` inside\n      // onInput causing infinite recursion\n      this.___settingInput = true;\n      updatedInput = onInput.call(this, newInput || {}, out);\n      this.___settingInput = false;\n    }\n\n    newInput = this.___renderInput = updatedInput || newInput;\n\n    if ((this.___dirty = checkInputChanged(this, oldInput, newInput))) {\n      this.___queueUpdate();\n    }\n\n    if (this.___input === undefined) {\n      this.___input = newInput;\n      if (newInput && newInput.$global) {\n        this.___global = newInput.$global;\n      }\n    }\n\n    return newInput;\n  },\n\n  forceUpdate: function () {\n    this.___dirty = true;\n    this.___queueUpdate();\n  },\n\n  ___queueUpdate: function () {\n    if (!this.___updateQueued) {\n      this.___updateQueued = true;\n      updateManager.___queueComponentUpdate(this);\n    }\n  },\n\n  update: function () {\n    if (this.___destroyed === true || this.___isDirty === false) {\n      return;\n    }\n\n    var input = this.___input;\n    var state = this.___state;\n\n    if (this.___dirty === false && state !== null && state.___dirty === true) {\n      if (processUpdateHandlers(this, state.___changes, state.___old, state)) {\n        state.___dirty = false;\n      }\n    }\n\n    if (this.___isDirty === true) {\n      // The UI component is still dirty after process state handlers\n      // then we should rerender\n\n      if (this.shouldUpdate(input, state) !== false) {\n        this.___scheduleRerender();\n      }\n    }\n\n    this.___reset();\n  },\n\n  get ___isDirty() {\n    return (\n      this.___dirty === true ||\n      (this.___state !== null && this.___state.___dirty === true)\n    );\n  },\n\n  ___reset: function () {\n    this.___dirty = false;\n    this.___updateQueued = false;\n    this.___renderInput = null;\n    var state = this.___state;\n    if (state) {\n      state.___reset();\n    }\n  },\n\n  shouldUpdate: function () {\n    return true;\n  },\n\n  ___scheduleRerender: function () {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    var self = this;\n    var renderer = self.___renderer;\n\n    if (!renderer) {\n      throw TypeError();\n    }\n\n    var input = this.___renderInput || this.___input;\n\n    updateManager.___batchUpdate(function () {\n      self.___rerender(input, false).afterInsert(self.___host);\n    });\n\n    this.___reset();\n  },\n\n  ___rerender: function (input, isHydrate) {\n    var host = this.___host;\n    var globalData = this.___global;\n    var rootNode = this.___rootNode;\n    var renderer = this.___renderer;\n    var createOut = renderer.createOut || defaultCreateOut;\n    var out = createOut(globalData);\n    out.sync();\n    out.___host = this.___host;\n    out[CONTEXT_KEY] = this.___context;\n\n    var componentsContext = getComponentsContext(out);\n    var globalComponentsContext = componentsContext.___globalContext;\n    globalComponentsContext.___rerenderComponent = this;\n    globalComponentsContext.___isHydrate = isHydrate;\n\n    renderer(input, out);\n\n    var result = new RenderResult(out);\n\n    var targetNode = out.___getOutput().___firstChild;\n\n    morphdom(rootNode, targetNode, host, componentsContext);\n\n    return result;\n  },\n\n  ___detach: function () {\n    var root = this.___rootNode;\n    root.remove();\n    return root;\n  },\n\n  ___removeDOMEventListeners: function () {\n    var eventListenerHandles = this.___domEventListenerHandles;\n    if (eventListenerHandles) {\n      eventListenerHandles.forEach(removeListener);\n      this.___domEventListenerHandles = null;\n    }\n  },\n\n  get ___rawState() {\n    var state = this.___state;\n    return state && state.___raw;\n  },\n\n  ___setCustomEvents: function (customEvents, scope) {\n    var finalCustomEvents = (this.___customEvents = {});\n    this.___scope = scope;\n\n    customEvents.forEach(function (customEvent) {\n      var eventType = customEvent[0];\n      var targetMethodName = customEvent[1];\n      var isOnce = customEvent[2];\n      var extraArgs = customEvent[3];\n\n      if (targetMethodName) {\n        finalCustomEvents[eventType] = [targetMethodName, isOnce, extraArgs];\n      }\n    });\n  },\n\n  get el() {\n    return walkFragments(this.___rootNode);\n  },\n\n  get els() {\n    // eslint-disable-next-line no-constant-condition\n    if (\"MARKO_DEBUG\") {\n      complain(\n        'The \"this.els\" attribute is deprecated. Please use \"this.getEls(key)\" instead.',\n      );\n    }\n    return (this.___rootNode ? this.___rootNode.nodes : []).filter(\n      function (el) {\n        return el.nodeType === ELEMENT_NODE;\n      },\n    );\n  },\n\n  ___emit: emit,\n  ___emitCreate(input, out) {\n    this.onCreate && this.onCreate(input, out);\n    this.___emit(\"create\", input, out);\n  },\n\n  ___emitRender(out) {\n    this.onRender && this.onRender(out);\n    this.___emit(\"render\", out);\n  },\n\n  ___emitUpdate() {\n    this.onUpdate && this.onUpdate();\n    this.___emit(\"update\");\n  },\n\n  ___emitMount() {\n    this.onMount && this.onMount();\n    this.___emit(\"mount\");\n  },\n\n  ___emitDestroy() {\n    this.onDestroy && this.onDestroy();\n    this.___emit(\"destroy\");\n  },\n};\n\ncomponentProto.elId = componentProto.getElId;\ncomponentProto.___update = componentProto.update;\ncomponentProto.___destroy = componentProto.destroy;\n\n// Add all of the following DOM methods to Component.prototype:\n// - appendTo(referenceEl)\n// - replace(referenceEl)\n// - replaceChildrenOf(referenceEl)\n// - insertBefore(referenceEl)\n// - insertAfter(referenceEl)\n// - prependTo(referenceEl)\ndomInsert(\n  componentProto,\n  function getEl(component) {\n    return component.___detach();\n  },\n  function afterInsert(component) {\n    return component;\n  },\n);\n\ninherit(Component, EventEmitter);\n\nmodule.exports = Component;\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/components/ComponentDef.js",
    "content": "\"use strict\";\n// eslint-disable-next-line no-constant-binary-expression\nvar complain = \"MARKO_DEBUG\" && require(\"complain\");\nvar extend = require(\"raptor-util/extend\");\nvar componentUtil = require(\"@internal/components-util\");\nvar w10NOOP = require(\"../helpers/serialize-noop\").___noop;\nvar attachBubblingEvent = componentUtil.___attachBubblingEvent;\nvar addDelegatedEventHandler =\n  require(\"./event-delegation\").___addDelegatedEventHandler;\nvar KeySequence = require(\"./KeySequence\");\nvar EMPTY_OBJECT = {};\n\nvar FLAG_WILL_RERENDER_IN_BROWSER = 1;\nvar FLAG_HAS_RENDER_BODY = 2;\nvar FLAG_IS_LEGACY = 4;\nvar FLAG_OLD_HYDRATE_NO_CREATE = 8;\n\n/**\n * A ComponentDef is used to hold the metadata collected at runtime for\n * a single component and this information is used to instantiate the component\n * later (after the rendered HTML has been added to the DOM)\n */\nfunction ComponentDef(component, componentId, componentsContext) {\n  this.___componentsContext = componentsContext; // The AsyncWriter that this component is associated with\n  this.___component = component;\n  this.id = componentId;\n\n  this.___domEvents = undefined; // An array of DOM events that need to be added (in sets of three)\n\n  this.___isExisting = false;\n\n  this.___renderBoundary = false;\n  this.___flags = 0;\n\n  this.___nextIdIndex = 0; // The unique integer to use for the next scoped ID\n  this.___keySequence = null;\n}\n\nComponentDef.prototype = {\n  ___nextKey: function (key) {\n    return (\n      this.___keySequence || (this.___keySequence = new KeySequence())\n    ).___nextKey(key);\n  },\n\n  /**\n   * This helper method generates a unique and fully qualified DOM element ID\n   * that is unique within the scope of the current component.\n   */\n  elId: function (nestedId) {\n    var id = this.id;\n\n    if (nestedId == null) {\n      return id;\n    } else {\n      if (typeof nestedId !== \"string\") {\n        // eslint-disable-next-line no-constant-condition\n        if (\"MARKO_DEBUG\") {\n          complain(\"Using non strings as keys is deprecated.\");\n        }\n\n        nestedId = String(nestedId);\n      }\n\n      if (nestedId.indexOf(\"#\") === 0) {\n        id = \"#\" + id;\n        nestedId = nestedId.substring(1);\n      }\n\n      return id + \"-\" + nestedId;\n    }\n  },\n  /**\n   * Returns the next auto generated unique ID for a nested DOM element or nested DOM component\n   */\n  ___nextComponentId: function () {\n    return this.id + \"-c\" + this.___nextIdIndex++;\n  },\n\n  d: function (eventName, handlerMethodName, isOnce, extraArgs) {\n    addDelegatedEventHandler(eventName);\n    return attachBubblingEvent(this, handlerMethodName, isOnce, extraArgs);\n  },\n\n  get ___type() {\n    return this.___component.___type;\n  },\n};\n\nComponentDef.prototype.nk = ComponentDef.prototype.___nextKey;\n\nComponentDef.___deserialize = function (o, types, global, registry) {\n  var id = o[0];\n  var typeName = types[o[1]];\n  var input = o[2] || null;\n  var extra = o[3] || EMPTY_OBJECT;\n\n  var state = extra.s;\n  var componentProps = extra.w || EMPTY_OBJECT;\n  var flags = extra.f;\n  var isLegacy = flags & FLAG_IS_LEGACY;\n  var renderBody = flags & FLAG_HAS_RENDER_BODY ? w10NOOP : extra.r;\n\n  var component =\n    typeName /* legacy */ &&\n    registry.___createComponent(typeName, id, isLegacy);\n\n  // Prevent newly created component from being queued for update since we area\n  // just building it from the server info\n  component.___updateQueued = true;\n  component.___global = global;\n\n  if (isLegacy) {\n    component.widgetConfig = componentProps;\n    component.___widgetBody = renderBody;\n  } else if (renderBody) {\n    (input || (input = {})).renderBody = renderBody;\n  }\n\n  if (\n    !isLegacy &&\n    flags & FLAG_WILL_RERENDER_IN_BROWSER &&\n    !(flags & FLAG_OLD_HYDRATE_NO_CREATE)\n  ) {\n    if (component.onCreate) {\n      component.onCreate(input, { global: global });\n    }\n    if (component.onInput) {\n      input = component.onInput(input, { global: global }) || input;\n    }\n  } else {\n    if (state) {\n      var undefinedPropNames = extra.u;\n      if (undefinedPropNames) {\n        undefinedPropNames.forEach(function (undefinedPropName) {\n          state[undefinedPropName] = undefined;\n        });\n      }\n      // We go through the setter here so that we convert the state object\n      // to an instance of `State`\n      component.state = state;\n    }\n\n    if (!isLegacy && componentProps) {\n      extend(component, componentProps);\n    }\n  }\n\n  component.___input = input;\n\n  if (extra.b) {\n    component.___bubblingDomEvents = extra.b;\n  }\n\n  var scope = extra.p;\n  var customEvents = extra.e;\n  if (customEvents) {\n    component.___setCustomEvents(customEvents, scope);\n  }\n\n  return {\n    id: id,\n    ___component: component,\n    ___domEvents: extra.d,\n    ___flags: extra.f || 0,\n  };\n};\n\nmodule.exports = ComponentDef;\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/components/ComponentsContext.js",
    "content": "\"use strict\";\nvar GlobalComponentsContext = require(\"./GlobalComponentsContext\");\n\nfunction ComponentsContext(out, parentComponentsContext) {\n  var globalComponentsContext;\n  var componentDef;\n\n  if (parentComponentsContext) {\n    globalComponentsContext = parentComponentsContext.___globalContext;\n    componentDef = parentComponentsContext.___componentDef;\n\n    var nestedContextsForParent;\n    if (\n      !(nestedContextsForParent = parentComponentsContext.___nestedContexts)\n    ) {\n      nestedContextsForParent = parentComponentsContext.___nestedContexts = [];\n    }\n\n    nestedContextsForParent.push(this);\n  } else {\n    globalComponentsContext = out.global.___components;\n    if (globalComponentsContext === undefined) {\n      out.global.___components = globalComponentsContext =\n        new GlobalComponentsContext(out);\n    }\n  }\n\n  this.___globalContext = globalComponentsContext;\n  this.___components = [];\n  this.___out = out;\n  this.___componentDef = componentDef;\n  this.___nestedContexts = undefined;\n  this.___isPreserved =\n    parentComponentsContext && parentComponentsContext.___isPreserved;\n}\n\nComponentsContext.prototype = {\n  ___initComponents: function (host) {\n    var componentDefs = this.___components;\n\n    ComponentsContext.___initClientRendered(componentDefs, host);\n\n    this.___out.emit(\"___componentsInitialized\");\n\n    // Reset things stored in global since global is retained for\n    // future renders\n    this.___out.global.___components = undefined;\n\n    return componentDefs;\n  },\n};\n\nfunction getComponentsContext(out) {\n  return out.___components || (out.___components = new ComponentsContext(out));\n}\n\nmodule.exports = exports = ComponentsContext;\n\nexports.___getComponentsContext = getComponentsContext;\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/components/GlobalComponentsContext.js",
    "content": "var nextComponentIdProvider =\n  require(\"@internal/components-util\").___nextComponentIdProvider;\n\nfunction GlobalComponentsContext(out) {\n  this.___renderedComponentsById = {};\n  this.___rerenderComponent = undefined;\n  this.___nextComponentId = nextComponentIdProvider(out);\n}\n\nmodule.exports = GlobalComponentsContext;\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/components/KeySequence.js",
    "content": "function KeySequence() {\n  this.___lookup = Object.create(null);\n}\n\nKeySequence.prototype.___nextKey = function (key) {\n  var lookup = this.___lookup;\n\n  if (lookup[key]) {\n    return key + \"_\" + lookup[key]++;\n  }\n\n  lookup[key] = 1;\n  return key;\n};\n\nmodule.exports = KeySequence;\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/components/ServerComponent.js",
    "content": "\"use strict\";\n// eslint-disable-next-line no-constant-binary-expression\nvar complain = \"MARKO_DEBUG\" && require(\"complain\");\n\nclass ServerComponent {\n  constructor(id, input, out, typeName, customEvents, scope) {\n    this.id = id;\n    this.___customEvents = customEvents;\n    this.___scope = scope;\n    this.typeName = typeName;\n    this.___bubblingDomEvents = undefined; // Used to keep track of bubbling DOM events for components rendered on the server\n    this.___bubblingDomEventsExtraArgsCount = 0;\n\n    this.onCreate(input, out);\n    this.___updatedInput = this.onInput(input, out) || input;\n    if (this.___input === undefined) {\n      this.___input = this.___updatedInput;\n    }\n    this.onRender(out);\n  }\n\n  set input(newInput) {\n    this.___input = newInput;\n  }\n\n  get input() {\n    return this.___input;\n  }\n\n  set state(newState) {\n    this.___state = newState;\n  }\n\n  get state() {\n    return this.___state;\n  }\n\n  get ___rawState() {\n    return this.___state;\n  }\n\n  elId(nestedId) {\n    var id = this.id;\n\n    if (nestedId == null) {\n      return id;\n    } else {\n      if (typeof nestedId !== \"string\") {\n        // eslint-disable-next-line no-constant-condition\n        if (\"MARKO_DEBUG\") {\n          complain(\"Using non strings as keys is deprecated.\");\n        }\n\n        nestedId = String(nestedId);\n      }\n\n      if (nestedId.indexOf(\"#\") === 0) {\n        id = \"#\" + id;\n        nestedId = nestedId.substring(1);\n      }\n\n      return id + \"-\" + nestedId;\n    }\n  }\n\n  onCreate() {}\n  onInput() {}\n  onRender() {}\n\n  isDestroyed() {\n    return false;\n  }\n\n  setState(name, value) {\n    if (typeof name == \"object\") {\n      if (this.___state) {\n        Object.assign(this.___state, name);\n      } else {\n        this.___state = name;\n      }\n    } else {\n      this.___state[name] = value;\n    }\n  }\n\n  setStateDirty(name, value) {\n    if (typeof name == \"object\") {\n      if (this.___state) {\n        Object.assign(this.___state, name);\n      } else {\n        this.___state = name;\n      }\n    } else {\n      this.___state[name] = value;\n    }\n  }\n\n  replaceState(newState) {\n    this.___state = newState;\n  }\n\n  subscribeTo() {\n    notImplemented(\"subscribeTo\");\n  }\n\n  emit() {\n    notImplemented(\"emit\");\n  }\n\n  getEl() {\n    notImplemented(\"getEl\");\n  }\n\n  getEls() {\n    notImplemented(\"getEls\");\n  }\n\n  getComponent() {\n    notImplemented(\"getComponent\");\n  }\n\n  getComponents() {\n    notImplemented(\"getComponents\");\n  }\n\n  forceUpdate() {\n    notImplemented(\"forceUpdate\");\n  }\n\n  update() {\n    notImplemented(\"update\");\n  }\n}\n\nServerComponent.prototype.getElId = ServerComponent.prototype.elId;\n\nmodule.exports = ServerComponent;\n\nfunction notImplemented(name) {\n  throw new Error(name + \" method not supported during SSR.\");\n}\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/components/State.js",
    "content": "var extend = require(\"raptor-util/extend\");\n\nfunction ensure(state, propertyName) {\n  var proto = state.constructor.prototype;\n  if (!(propertyName in proto)) {\n    Object.defineProperty(proto, propertyName, {\n      get: function () {\n        return this.___raw[propertyName];\n      },\n      set: function (value) {\n        this.___set(propertyName, value, false /* ensure:false */);\n      },\n    });\n  }\n}\n\nfunction State(component) {\n  this.___component = component;\n  this.___raw = {};\n\n  this.___dirty = false;\n  this.___old = null;\n  this.___changes = null;\n  this.___forced = null; // An object that we use to keep tracking of state properties that were forced to be dirty\n\n  Object.seal(this);\n}\n\nState.prototype = {\n  ___reset: function () {\n    this.___dirty = false;\n    this.___old = null;\n    this.___changes = null;\n    this.___forced = null;\n  },\n\n  ___replace: function (newState) {\n    var key;\n    var rawState = this.___raw;\n\n    for (key in rawState) {\n      if (!(key in newState)) {\n        this.___set(\n          key,\n          undefined,\n          false /* ensure:false */,\n          false /* forceDirty:false */,\n        );\n      }\n    }\n\n    for (key in newState) {\n      this.___set(\n        key,\n        newState[key],\n        true /* ensure:true */,\n        false /* forceDirty:false */,\n      );\n    }\n  },\n  ___set: function (name, value, shouldEnsure, forceDirty) {\n    var rawState = this.___raw;\n\n    if (shouldEnsure) {\n      ensure(this, name);\n    }\n\n    if (forceDirty) {\n      var forcedDirtyState = this.___forced || (this.___forced = {});\n      forcedDirtyState[name] = true;\n    } else if (rawState[name] === value) {\n      return;\n    }\n\n    if (!this.___dirty) {\n      // This is the first time we are modifying the component state\n      // so introduce some properties to do some tracking of\n      // changes to the state\n      this.___dirty = true; // Mark the component state as dirty (i.e. modified)\n      this.___old = rawState;\n      this.___raw = rawState = extend({}, rawState);\n      this.___changes = {};\n      this.___component.___queueUpdate();\n    }\n\n    this.___changes[name] = value;\n\n    if (value === undefined) {\n      // Don't store state properties with an undefined or null value\n      delete rawState[name];\n    } else {\n      // Otherwise, store the new value in the component state\n      rawState[name] = value;\n    }\n  },\n  toJSON: function () {\n    return this.___raw;\n  },\n};\n\nmodule.exports = State;\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/components/attach-detach.js",
    "content": "var eventDelegation = require(\"./event-delegation\");\nvar delegateEvent = eventDelegation.___delegateEvent;\nvar getEventFromEl = eventDelegation.___getEventFromEl;\n\n// var componentsUtil = require('@internal/components-util');\n// var destroyNodeRecursive = componentsUtil.___destroyNodeRecursive;\n// var destroyComponentForNode = componentsUtil.___destroyComponentForNode;\n\nfunction handleNodeAttach(node, componentsContext) {\n  if (node.nodeType === 1) {\n    var eventName = \"onattach\";\n    var target = getEventFromEl(node, eventName);\n    if (target) {\n      var out = componentsContext.___out;\n      var data = out.data;\n\n      var attachTargets = data.___attachTargets;\n      if (!attachTargets) {\n        attachTargets = data.___attachTargets = [];\n        out.on(\"___componentsInitialized\", function () {\n          for (var i = 0; i < attachTargets.length; i += 2) {\n            var node = attachTargets[i];\n            var target = attachTargets[i + 1];\n            delegateEvent(node, eventName, target, {});\n          }\n        });\n      }\n\n      attachTargets.push(node);\n      attachTargets.push(target);\n    }\n  }\n}\n\nfunction handleNodeDetach(node) {\n  if (node.nodeType === 1) {\n    var eventName = \"ondetach\";\n    var target = getEventFromEl(node, eventName);\n    if (target) {\n      var allowDetach;\n\n      delegateEvent(node, eventName, target, {\n        preventDefault: function () {\n          allowDetach = false;\n        },\n        detach: function () {\n          var parentNode = node.parentNode;\n          if (parentNode) {\n            parentNode.removeChild(node);\n          }\n        },\n      });\n\n      return allowDetach;\n    }\n  }\n}\n\neventDelegation.___handleNodeAttach = handleNodeAttach;\neventDelegation.___handleNodeDetach = handleNodeDetach;\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/components/defineComponent.js",
    "content": "\"use strict\";\n\nvar inherit = require(\"raptor-util/inherit\");\nvar BaseComponent = require(\"./Component\");\nvar BaseState = require(\"./State\");\n\nmodule.exports = function defineComponent(def, renderer) {\n  if (def.___isComponent) {\n    return def;\n  }\n\n  var ComponentClass = function () {};\n  var proto;\n\n  var type = typeof def;\n\n  if (type == \"function\") {\n    proto = def.prototype;\n  } else if (type == \"object\") {\n    proto = def;\n  } else {\n    throw TypeError();\n  }\n\n  ComponentClass.prototype = proto;\n\n  // We don't use the constructor provided by the user\n  // since we don't invoke their constructor until\n  // we have had a chance to do our own initialization.\n  // Instead, we store their constructor in the \"initComponent\"\n  // property and that method gets called later inside\n  // init-components-browser.js\n  function Component(id) {\n    BaseComponent.call(this, id);\n  }\n\n  if (!proto.___isComponent) {\n    // Inherit from Component if they didn't already\n    inherit(ComponentClass, BaseComponent);\n  }\n\n  // The same prototype will be used by our constructor after\n  // we he have set up the prototype chain using the inherit function\n  proto = Component.prototype = ComponentClass.prototype;\n\n  // proto.constructor = def.constructor = Component;\n\n  // Set a flag on the constructor function to make it clear this is\n  // a component so that we can short-circuit this work later\n  Component.___isComponent = true;\n\n  function State(component) {\n    BaseState.call(this, component);\n  }\n  inherit(State, BaseState);\n  proto.___State = State;\n  proto.___renderer = renderer;\n\n  return Component;\n};\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/components/dom-data.js",
    "content": "module.exports = {\n  ___vPropsByDOMNode: new WeakMap(),\n  ___vElementByDOMNode: new WeakMap(),\n  ___componentByDOMNode: new WeakMap(),\n  ___detachedByDOMNode: new WeakMap(),\n  ___keyByDOMNode: new WeakMap(),\n  ___ssrKeyedElementsByComponentId: {},\n};\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/components/event-delegation.js",
    "content": "var componentsUtil = require(\"@internal/components-util\");\nvar runtimeId = componentsUtil.___runtimeId;\nvar componentLookup = componentsUtil.___componentLookup;\nvar getMarkoPropsFromEl = componentsUtil.___getMarkoPropsFromEl;\n\nvar TEXT_NODE = 3;\n\n// We make our best effort to allow multiple marko runtimes to be loaded in the\n// same window. Each marko runtime will get its own unique runtime ID.\nvar listenersAttachedKey = \"$MDE\" + runtimeId;\nvar delegatedEvents = {};\n\nfunction getEventFromEl(el, eventName) {\n  var virtualProps = getMarkoPropsFromEl(el);\n  var eventInfo = virtualProps[eventName];\n\n  if (typeof eventInfo === \"string\") {\n    eventInfo = eventInfo.split(\" \");\n    if (eventInfo[2]) {\n      eventInfo[2] = eventInfo[2] === \"true\";\n    }\n    if (eventInfo.length == 4) {\n      eventInfo[3] = parseInt(eventInfo[3], 10);\n    }\n  }\n\n  return eventInfo;\n}\n\nfunction delegateEvent(node, eventName, target, event) {\n  var targetMethod = target[0];\n  var targetComponentId = target[1];\n  var isOnce = target[2];\n  var extraArgs = target[3];\n\n  if (isOnce) {\n    var virtualProps = getMarkoPropsFromEl(node);\n    delete virtualProps[eventName];\n  }\n\n  var targetComponent = componentLookup[targetComponentId];\n\n  if (!targetComponent) {\n    return;\n  }\n\n  var targetFunc =\n    typeof targetMethod === \"function\"\n      ? targetMethod\n      : targetComponent[targetMethod];\n  if (!targetFunc) {\n    throw Error(\"Method not found: \" + targetMethod);\n  }\n\n  if (extraArgs != null) {\n    if (typeof extraArgs === \"number\") {\n      extraArgs = targetComponent.___bubblingDomEvents[extraArgs];\n    }\n  }\n\n  // Invoke the component method\n  if (extraArgs) {\n    targetFunc.apply(targetComponent, extraArgs.concat(event, node));\n  } else {\n    targetFunc.call(targetComponent, event, node);\n  }\n}\n\nfunction addDelegatedEventHandler(eventType) {\n  if (!delegatedEvents[eventType]) {\n    delegatedEvents[eventType] = true;\n  }\n}\n\nfunction addDelegatedEventHandlerToHost(eventType, host) {\n  var listeners = (host[listenersAttachedKey] =\n    host[listenersAttachedKey] || {});\n  if (!listeners[eventType]) {\n    (host.body || host).addEventListener(\n      eventType,\n      (listeners[eventType] = function (event) {\n        var curNode = event.target;\n        if (!curNode) {\n          return;\n        }\n\n        curNode =\n          // event.target of an SVGElementInstance does not have a\n          // `getAttribute` function in IE 11.\n          // See https://github.com/marko-js/marko/issues/796\n          curNode.correspondingUseElement ||\n          // in some browsers the event target can be a text node\n          // one example being dragenter in firefox.\n          (curNode.nodeType === TEXT_NODE ? curNode.parentNode : curNode);\n\n        // Search up the tree looking DOM events mapped to target\n        // component methods\n        var propName = \"on\" + eventType;\n        var target;\n\n        // Attributes will have the following form:\n        // on<event_type>(\"<target_method>|<component_id>\")\n\n        if (event.bubbles) {\n          var propagationStopped = false;\n\n          // Monkey-patch to fix #97\n          var oldStopPropagation = event.stopPropagation;\n\n          event.stopPropagation = function () {\n            oldStopPropagation.call(event);\n            propagationStopped = true;\n          };\n\n          do {\n            if ((target = getEventFromEl(curNode, propName))) {\n              delegateEvent(curNode, propName, target, event);\n\n              if (propagationStopped) {\n                break;\n              }\n            }\n          } while ((curNode = curNode.parentNode) && curNode.getAttribute);\n        } else if ((target = getEventFromEl(curNode, propName))) {\n          delegateEvent(curNode, propName, target, event);\n        }\n      }),\n      true,\n    );\n  }\n}\n\nfunction noop() {}\n\nexports.___handleNodeAttach = noop;\nexports.___handleNodeDetach = noop;\nexports.___delegateEvent = delegateEvent;\nexports.___getEventFromEl = getEventFromEl;\nexports.___addDelegatedEventHandler = addDelegatedEventHandler;\nexports.___init = function (host) {\n  Object.keys(delegatedEvents).forEach(function (eventType) {\n    addDelegatedEventHandlerToHost(eventType, host);\n  });\n};\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/components/index.js",
    "content": "module.exports = require(\"@internal/components-entry\");\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/components/legacy/browser.json",
    "content": "{\n  \"dependencies\": [\n    {\n      \"type\": \"require\",\n      \"path\": \"./index\",\n      \"run\": true\n    }\n  ]\n}\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/components/legacy/defineComponent-legacy.js",
    "content": "/**\n * Define a new UI component that includes component and renderer.\n *\n * @param  {Object} def The definition of the UI component (component methods, component constructor, rendering methods, etc.)\n * @return {Component} The resulting Component with renderer\n */\nvar defineRenderer;\nvar defineWidget;\n\nmodule.exports = function defineComponent(def) {\n  if (def.___isComponent) {\n    return def;\n  }\n\n  var renderer;\n\n  if (def.template || def.renderer) {\n    renderer = defineRenderer(def);\n  } else {\n    throw new Error('Expected \"template\" or \"renderer\"');\n  }\n\n  return defineWidget(def, renderer);\n};\n\ndefineRenderer = require(\"./defineRenderer-legacy\");\ndefineWidget = require(\"./defineWidget-legacy\");\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/components/legacy/defineRenderer-legacy.js",
    "content": "// eslint-disable-next-line no-constant-binary-expression\nvar complain = \"MARKO_DEBUG\" && require(\"complain\");\nvar componentLookup = require(\"@internal/components-util\").___componentLookup;\nvar req = require(\"@internal/require\");\nvar makeRenderable = require(\"../../renderable\");\nvar getComponentsContext =\n  require(\"../ComponentsContext\").___getComponentsContext;\nvar modernRenderer = require(\"../renderer\");\nvar resolveComponentKey = modernRenderer.___resolveComponentKey;\n\nmodule.exports = function defineRenderer(renderingLogic) {\n  var renderer = renderingLogic.renderer;\n\n  if (renderer && renderer.___isRenderer) {\n    return renderer;\n  }\n\n  var template = renderingLogic.template;\n\n  if (typeof template === \"string\") {\n    template = req(template);\n  }\n\n  if (template && template.default) {\n    template = template.default;\n  }\n\n  if (!renderer) {\n    var getInitialProps;\n    var getTemplateData;\n    var getInitialState;\n    var getWidgetConfig;\n    var getInitialBody;\n\n    if (renderingLogic) {\n      getInitialProps = renderingLogic.getInitialProps;\n      getTemplateData = renderingLogic.getTemplateData;\n      getInitialState = renderingLogic.getInitialState;\n      getWidgetConfig = renderingLogic.getWidgetConfig;\n      getInitialBody = renderingLogic.getInitialBody;\n    }\n\n    // Create a renderer function that takes care of translating\n    // the input properties to a view state. Also, this renderer\n    // takes care of re-using existing components.\n    renderer = function renderer(input, out) {\n      var componentsContext = getComponentsContext(out);\n      var globalComponentsContext = componentsContext.___globalContext;\n      var component = globalComponentsContext.___rerenderComponent;\n      var isReceivingNewInput = !component || component.___isReceivingNewInput;\n      var parentComponentDef;\n\n      if (component) {\n        component.___isReceivingNewInput = false;\n      }\n\n      // Render the template associated with the component using the final template\n      // data that we constructed\n      var newProps = input;\n      var widgetConfig;\n      var widgetState;\n      var widgetBody;\n      var id;\n\n      if (!component && componentLookup) {\n        var key = out.___assignedKey;\n\n        if (\n          (parentComponentDef = componentsContext.___componentDef) &&\n          key != null\n        ) {\n          id = resolveComponentKey(key.toString(), parentComponentDef);\n        } else if (parentComponentDef) {\n          id = parentComponentDef.___nextComponentId();\n        } else {\n          id = globalComponentsContext.___nextComponentId();\n        }\n\n        component = componentLookup[id];\n      }\n\n      if (isReceivingNewInput) {\n        // If we do not have state then we need to go through the process\n        // of converting the input to a widget state, or simply normalizing\n        // the input using getInitialProps\n\n        if (getInitialProps) {\n          // This optional method is used to normalize input state\n          newProps = getInitialProps(newProps, out) || {};\n        }\n\n        if (getInitialState) {\n          // This optional method is used to derive the widget state\n          // from the input properties\n          widgetState = getInitialState(newProps, out);\n        }\n\n        if (getInitialBody) {\n          // If we have widget a widget body then pass it to the template\n          // so that it is available to the widget tag and can be inserted\n          // at the w-body marker\n          widgetBody = getInitialBody(newProps, out);\n        } else {\n          // Default to using the nested content as the widget body\n          // getInitialBody was not implemented\n          widgetBody = newProps.renderBody;\n        }\n      } else if (component) {\n        newProps = newProps || component.___widgetProps;\n        widgetBody = component.___widgetBody;\n        widgetState = component.___rawState;\n        widgetConfig = component.widgetConfig;\n      }\n\n      // Use getTemplateData(state, props, out) to get the template\n      // data. If that method is not provided then just use the\n      // the state (if provided) or the input data.\n      var templateData = clone(\n        getTemplateData\n          ? getTemplateData(widgetState, newProps, out)\n          : widgetState || newProps,\n      );\n\n      if (isReceivingNewInput && getWidgetConfig) {\n        // If getWidgetConfig() was implemented then use that to\n        // get the widget config. The widget config will be passed\n        // to the widget constructor. If rendered on the server the\n        // widget config will be serialized.\n        widgetConfig = getWidgetConfig(newProps, out);\n      }\n      // eslint-disable-next-line no-constant-condition\n      if (\"MARKO_DEBUG\") {\n        if (widgetState && \"widgetState\" in templateData) {\n          complain(\"Passing widgetState as input is deprecated.\");\n        }\n\n        if (widgetConfig && \"widgetConfig\" in templateData) {\n          complain(\"Passing widgetConfig as input is deprecated.\");\n        }\n      }\n\n      templateData.widgetProps = newProps;\n      widgetBody && (templateData.renderBody = widgetBody);\n      widgetState && (templateData.widgetState = widgetState);\n      widgetConfig && (templateData.widgetConfig = widgetConfig);\n\n      template._(templateData, out, id, renderingLogic);\n    };\n  }\n\n  renderer.___isRenderer = true;\n  renderer.createOut = template ? template.createOut : renderingLogic.createOut;\n  renderer.template = template;\n\n  makeRenderable(renderer, renderer);\n  renderer.render = renderer.render.bind(renderer);\n\n  return renderer;\n};\n\nfunction clone(src) {\n  var result = {};\n\n  if (src) {\n    for (var key in src) {\n      result[key] = src[key];\n    }\n  }\n\n  return result;\n}\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/components/legacy/defineWidget-legacy.js",
    "content": "module.exports = require(\"@internal/components-define-widget-legacy\");\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/components/legacy/dependencies/html.js",
    "content": "var Template = require(\"../../../html\").Template;\nvar patch = require(\"./\").patch;\npatch(Template);\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/components/legacy/dependencies/index.js",
    "content": "var nodePath = require(\"path\");\nvar defaultResolveFrom = require(\"resolve-from\");\nvar env = process.env.NODE_ENV;\nvar production = !env || env !== \"development\";\n\nfunction getRootDeps(template, context) {\n  if (production && template.___depsArray) {\n    return template.___depsArray;\n  }\n\n  attachDepsAndComponentsToTemplate(template, context);\n\n  var deps = (template.___depsArray = Object.keys(template.___deps).map(\n    (key) => template.___deps[key],\n  ));\n  var initModule = getInitModule(template.path, template.___components);\n\n  if (initModule) deps.push(initModule);\n\n  // these dependencies should be last\n  deps.concat = function () {\n    var result = [];\n    result = result.concat.apply(result, arguments);\n    result.push.apply(result, this);\n    return result;\n  };\n\n  return deps;\n}\n\nfunction attachDepsAndComponentsToTemplate(target, context) {\n  var template;\n\n  if (!target.meta && target.template) {\n    template = target.template;\n  } else {\n    template = target;\n  }\n\n  if (typeof template.createOut !== \"function\") return;\n  if (production && target.___deps) return;\n\n  var deps = (target.___deps = {});\n  var components = (target.___components = {});\n\n  if (!template.meta) {\n    console.warn(\"Metadata not set for template at \", template.path);\n    return;\n  }\n\n  var meta = template.meta;\n  var root = nodePath.dirname(template.path);\n\n  if (meta.deps) {\n    meta.deps.forEach((dep) => {\n      dep = resolveDep(dep, root, context);\n      deps[dep.virtualPath || dep.path] = dep;\n    });\n  }\n\n  if (meta.id && meta.component) {\n    var resolveFrom = (context && context.resolveFrom) || defaultResolveFrom;\n    components[meta.id] = {\n      id: meta.id,\n      path: resolveFrom(root, meta.component),\n    };\n  }\n\n  if (meta.tags) {\n    meta.tags.forEach((tagPath) => {\n      var resolveFrom = context.resolveFrom || defaultResolveFrom;\n      var tag = resolveFrom(root, tagPath);\n      var ext = nodePath.extname(tag);\n      var req = context.require || require;\n\n      try {\n        tag = req.resolve(tag.slice(0, 0 - ext.length) + \".js\");\n      } catch (e) {\n        /* ignore error */\n      }\n\n      tag = req(tag);\n\n      attachDepsAndComponentsToTemplate(tag, context);\n\n      if (tag.___deps) Object.assign(deps, tag.___deps);\n      if (tag.___components) Object.assign(components, tag.___components);\n    });\n  }\n}\n\nfunction getInitModule(path, components) {\n  var module = null;\n\n  if (components) {\n    components = Object.keys(components).map((key) => components[key]);\n\n    if (components.length) {\n      var root = nodePath.dirname(path);\n      var virtualPath = path + \".init.js\";\n      var registrations = components.map(\n        (component) =>\n          `components.register('${component.id}', require('.${\n            nodePath.sep\n          }${nodePath.relative(root, component.path)}'));`,\n      );\n      var code = `\n                var components = require('marko/components');\n                ${registrations.join(\"\\n\")}\n            `;\n\n      module = {\n        type: \"require\",\n        run: true,\n        virtualModule: {\n          path: virtualPath,\n          read: function (_, callback) {\n            // TODO: Check if read can just return string in lasso 2\n            if (callback) {\n              callback(null, code);\n            } else {\n              return code;\n            }\n          },\n        },\n      };\n    }\n  }\n\n  return module;\n}\n\nfunction resolveDep(dep, root, context) {\n  if (typeof dep === \"string\") {\n    dep = parseDependencyString(dep);\n  }\n\n  if (dep.path) {\n    var resolveFrom = (context && context.resolveFrom) || defaultResolveFrom;\n    dep.path = resolveFrom(root, dep.path);\n\n    if (dep.path && !dep.type) {\n      dep.type = dep.path.slice(dep.path.lastIndexOf(\".\") + 1);\n    }\n  }\n\n  if (dep.virtualPath) {\n    dep.virtualPath = nodePath.resolve(root, dep.virtualPath);\n  }\n\n  if (dep.type === \"js\") {\n    dep.type = \"require\";\n    dep.run = true;\n  }\n\n  return dep;\n}\n\nfunction parseDependencyString(string) {\n  var match = /^(?:([\\w-]+)(?::\\s*|\\s+))?(.*?(?:\\.(\\w+))?)$/.exec(string);\n  return {\n    type: match[1] || match[3],\n    path: match[2],\n  };\n}\n\nfunction patch(Template) {\n  Template.prototype.getDependencies = function (context) {\n    context = context || {};\n\n    return getRootDeps(this, context);\n  };\n}\n\nexports.getDeps = getRootDeps;\nexports.resolveDep = resolveDep;\nexports.patch = patch;\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/components/legacy/dependencies/vdom.js",
    "content": "var Template = require(\"../../../vdom\").Template;\nvar patch = require(\"./\").patch;\npatch(Template);\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/components/legacy/index.js",
    "content": "module.exports = require(\"@internal/components-entry-legacy\");\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/components/legacy/jquery.js",
    "content": "var ready = require(\"./ready\");\n\nvar idRegExp = /^#(\\S+)( .*)?/;\n\nexports.patchComponent = function (jQuery, proto, delayThrow) {\n  if (!jQuery && !delayThrow) {\n    throw new Error(\"jQuery not found\");\n  }\n\n  (proto || require(\"../Component\").prototype).$ = function jqueryProxy(arg) {\n    var args = arguments;\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    var self = this;\n\n    if (!(jQuery || (jQuery = window.$))) {\n      throw new Error(\"jQuery not found\");\n    }\n\n    if (args.length === 1) {\n      //Handle an \"ondomready\" callback function\n      if (typeof arg === \"function\") {\n        return ready(function () {\n          arg.call(self);\n        });\n      } else if (typeof arg === \"string\") {\n        var match = idRegExp.exec(arg);\n        //Reset the search to 0 so the next call to exec will start from the beginning for the new string\n        if (match != null) {\n          var key = match[1];\n          if (match[2] == null) {\n            return jQuery(self.getEl(key));\n          } else {\n            return jQuery(match[2].trim(), self.getEl(key));\n          }\n        } else {\n          var rootEl = self.getEl();\n          if (!rootEl) {\n            throw new Error(\"Root element is not defined for component\");\n          }\n          if (rootEl) {\n            return jQuery(arg, rootEl);\n          }\n        }\n      }\n    } else if (args.length === 2 && typeof args[1] === \"string\") {\n      return jQuery(arg, self.getEl(args[1]));\n    } else if (args.length === 0) {\n      return jQuery(self.el);\n    }\n    return jQuery.apply(window, arguments);\n  };\n};\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/components/legacy/ready.js",
    "content": "/*\n    jQuery's doc.ready/$(function(){}) should\n    you wish to use a cross-browser domReady solution\n    without opting for a library.\n\n    Demo: http://jsfiddle.net/zKLpb/\n\n    usage:\n    $(function(){\n        // your code\n    });\n\n    Parts: jQuery project, Diego Perini, Lucent M.\n    Previous version from Addy Osmani (https://raw.github.com/addyosmani/jquery.parts/master/jquery.documentReady.js)\n\n    This version: Patrick Steele-Idem\n    - Converted to CommonJS module\n    - Code cleanup\n    - Fixes for IE <=10\n*/\n\nvar isReady = false;\nvar readyBound = false;\n\nvar defaultWindow = typeof window != \"undefined\" && window;\nvar defaultDocument = typeof document != \"undefined\" && document;\n\nvar listeners = [];\n\nfunction domReadyCallback() {\n  for (var i = 0, len = listeners.length; i < len; i++) {\n    var listener = listeners[i];\n    listener[0].call(listener[1]);\n  }\n  listeners = null;\n}\n\nfunction bindReady(doc) {\n  var toplevel = false;\n  var win = doc.defaultView || defaultWindow || doc;\n\n  // Handle when the DOM is ready\n  function domReady() {\n    // Make sure that the DOM is not already loaded\n    if (!isReady) {\n      // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n      if (!doc.body) {\n        return setTimeout(domReady, 1);\n      }\n      // Remember that the DOM is ready\n      isReady = true;\n      // If there are functions bound, to execute\n      domReadyCallback();\n      // Execute all of them\n    }\n  } // /ready()\n\n  // The ready event handler\n  function domContentLoaded() {\n    if (doc.addEventListener) {\n      doc.removeEventListener(\"DOMContentLoaded\", domContentLoaded, false);\n      doc.removeEventListener(\"load\", domContentLoaded, false);\n    } else {\n      // we're here because readyState !== \"loading\" in oldIE\n      // which is good enough for us to call the dom ready!\n      doc.detachEvent(\"onreadystatechange\", domContentLoaded);\n      doc.detachEvent(\"onload\", domContentLoaded);\n    }\n    domReady();\n  }\n\n  // The DOM ready check for Internet Explorer\n  function doScrollCheck() {\n    if (isReady) {\n      return;\n    }\n\n    try {\n      // If IE is used, use the trick by Diego Perini\n      // http://javascript.nwbox.com/IEContentLoaded/\n      doc.documentElement.doScroll(\"left\");\n    } catch (error) {\n      setTimeout(doScrollCheck, 1);\n      return;\n    }\n    // and execute any waiting functions\n    domReady();\n  }\n\n  // Catch cases where $ is called after the\n  // browser event has already occurred. IE <= 10 has a bug that results in 'interactive' being assigned\n  // to the readyState before the DOM is really ready\n  if (\n    document.attachEvent\n      ? document.readyState === \"complete\"\n      : document.readyState !== \"loading\"\n  ) {\n    // We will get here if the browser is IE and the readyState === 'complete' or the browser\n    // is not IE and the readyState === 'interactive' || 'complete'\n    domReady(doc);\n  } else if (doc.addEventListener) {\n    // Standards-based browsers support DOMContentLoaded\n    // Use the handy event callback\n    doc.addEventListener(\"DOMContentLoaded\", domContentLoaded, false);\n    // A fallback to win.onload, that will always work\n    win.addEventListener(\"load\", domContentLoaded, false);\n    // If IE event model is used\n  } else if (doc.attachEvent) {\n    // ensure firing before onload,\n    // maybe late but safe also for iframes\n    doc.attachEvent(\"onreadystatechange\", domContentLoaded);\n    // A fallback to win.onload, that will always work\n    win.attachEvent(\"onload\", domContentLoaded);\n    // If IE and not a frame\n    // continually check to see if the document is ready\n    try {\n      toplevel = win.frameElement == null;\n    } catch (e) {\n      /* ignore error */\n    }\n    if (doc.documentElement.doScroll && toplevel) {\n      doScrollCheck();\n    }\n  }\n}\n\nfunction ready(callback, thisObj, doc) {\n  if (isReady) {\n    return callback.call(thisObj);\n  }\n\n  listeners.push([callback, thisObj]);\n\n  if (!readyBound) {\n    readyBound = true;\n    bindReady(doc || defaultDocument);\n  }\n}\n\nmodule.exports = ready;\n\nmodule.exports.patchComponent = function (proto) {\n  if (proto && proto.ready) {\n    // Don't patch if the component has overwritten the ready method.\n    return;\n  }\n\n  (proto || require(\"../Component\").prototype).ready = function (callback) {\n    var document = this.el.ownerDocument;\n    ready(callback, this, document);\n  };\n};\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/components/legacy/renderer-legacy.js",
    "content": "var beginComponent = require(\"@internal/components-beginComponent\");\nvar endComponent = require(\"@internal/components-endComponent\");\nvar registry = require(\"@internal/components-registry\");\nvar componentsUtil = require(\"@internal/components-util\");\nvar getComponentsContext =\n  require(\"../ComponentsContext\").___getComponentsContext;\nvar componentLookup = componentsUtil.___componentLookup;\nvar modernRenderer = require(\"../renderer\");\nvar resolveComponentKey = modernRenderer.___resolveComponentKey;\nvar trackAsyncComponents = modernRenderer.___trackAsyncComponents;\n// eslint-disable-next-line no-constant-binary-expression\nvar complain = \"MARKO_DEBUG\" && require(\"complain\");\n\nfunction createRendererFunc(templateRenderFunc, componentProps) {\n  var typeName = componentProps.t;\n  //var assignedId = componentProps.id;\n  var isSplit = componentProps.s === true;\n  var isImplicit = componentProps.i === true;\n\n  return function renderer(input, out, assignedId, renderingLogic) {\n    trackAsyncComponents(out);\n\n    var componentsContext = getComponentsContext(out);\n    var parentLegacyComponentDef = componentsContext.___legacyComponentDef;\n\n    if (isImplicit && parentLegacyComponentDef) {\n      templateRenderFunc(\n        input,\n        out,\n        parentLegacyComponentDef,\n        parentLegacyComponentDef.___component,\n        parentLegacyComponentDef.___component.___rawState,\n        out.global,\n      );\n      return;\n    }\n\n    var widgetBody = input.renderBody;\n    var widgetState = input.widgetState;\n    var widgetConfig = input.widgetConfig;\n    var globalComponentsContext = componentsContext.___globalContext;\n    var component = globalComponentsContext.___rerenderComponent;\n\n    var isRerender = component !== undefined;\n    var id = assignedId;\n    var isExisting;\n    var parentComponentDef = componentsContext.___componentDef;\n    var ownerComponentDef = out.___assignedComponentDef;\n    var ownerComponentId = ownerComponentDef && ownerComponentDef.id;\n    var key = out.___assignedKey;\n    var customEvents = out.___assignedCustomEvents;\n\n    out.___assignedComponentDef = null;\n\n    if (component) {\n      id = component.id;\n      isExisting = true;\n      globalComponentsContext.___rerenderComponent = null;\n    } else {\n      if (key != null) {\n        id = id || resolveComponentKey(key.toString(), parentComponentDef);\n      } else if (parentComponentDef) {\n        id = parentComponentDef.___nextComponentId();\n      } else {\n        id = globalComponentsContext.___nextComponentId();\n      }\n    }\n\n    if (registry.___isServer && typeName) {\n      if (renderingLogic) delete renderingLogic.onRender;\n      component = registry.___createComponent(\n        renderingLogic,\n        id,\n        input,\n        out,\n        typeName,\n        customEvents,\n        ownerComponentId,\n      );\n      if (isSplit || widgetState) {\n        component.input = null;\n      } else if (input.widgetProps) {\n        // eslint-disable-next-line no-constant-condition\n        if (\"MARKO_DEBUG\") {\n          complain(\n            \"Possible performance impact: this widget does not contain state, but is marked as a stateful widget. This will result in additional hydration data serialized.  In order for marko to identify this as a split widget, w-bind should use a widget.js with defineWidget rather than index.js with defineComponent.\",\n            { location: typeName, level: 1 },\n          );\n        }\n        component.input = input.widgetProps;\n      }\n    } else {\n      if (!component) {\n        if (isRerender) {\n          // Look in in the DOM to see if a component with the same ID and type already exists.\n          component = componentLookup[id];\n          if (component && component.___type !== typeName) {\n            component = undefined;\n          }\n        }\n\n        if (component) {\n          isExisting = true;\n        } else {\n          isExisting = false;\n          // We need to create a new instance of the component\n          if (typeName) {\n            component = registry.___createComponent(typeName, id);\n          }\n        }\n      }\n    }\n\n    var isFakeComponent = false;\n\n    if (!component) {\n      isFakeComponent = true;\n      component = {\n        id: id,\n        ___keyedElements: {},\n      };\n    } else {\n      component.___updateQueued = true;\n\n      if (widgetState) {\n        component.state = widgetState;\n      }\n    }\n\n    component.widgetConfig = widgetConfig;\n    component.___widgetBody = widgetBody || component.___widgetBody;\n\n    var componentDef = beginComponent(\n      componentsContext,\n      component,\n      key,\n      ownerComponentDef,\n      isSplit,\n      isFakeComponent,\n    );\n    componentsContext.___legacyComponentDef = componentDef;\n\n    // This is a hack, but we have to swap out the component instance stored with this node\n    var vComponentNode = out.___parent;\n\n    componentDef.___component = isFakeComponent ? null : component;\n    componentDef.___isExisting = isExisting;\n    componentDef.___isLegacy = true;\n\n    componentDef.t = function (typeName) {\n      if (typeName) {\n        if (registry.___isServer) {\n          var oldComponent = component;\n          if (renderingLogic) delete renderingLogic.onRender;\n          component = registry.___createComponent(\n            renderingLogic || {},\n            id,\n            input,\n            out,\n            typeName,\n            customEvents,\n            ownerComponentId,\n          );\n          if (isSplit || widgetState) {\n            component.input = null;\n          } else if (input.widgetProps) {\n            // eslint-disable-next-line no-constant-condition\n            if (\"MARKO_DEBUG\") {\n              complain(\n                \"Possible performance impact: this widget does not contain state, but is marked as a stateful widget. This will result in additional hydration data serialized.  In order for marko to identify this as a split widget, w-bind should use a widget.js with defineWidget rather than index.js with defineComponent.\",\n                { location: typeName, level: 1 },\n              );\n            }\n            component.input = input.widgetProps;\n          }\n          Object.assign(component, oldComponent);\n          beginComponent(\n            componentsContext,\n            component,\n            key,\n            ownerComponentDef,\n            isSplit,\n            false,\n            this,\n          );\n        } else {\n          vComponentNode.___component = component = registry.___createComponent(\n            typeName,\n            component.id,\n          );\n        }\n        this.___component = component;\n      }\n\n      return component;\n    };\n\n    if (!registry.___isServer) {\n      component.___legacyRender && component.___legacyRender();\n    }\n\n    // Render the template associated with the component using the final template\n    // data that we constructed\n    templateRenderFunc(\n      input,\n      out,\n      componentDef,\n      component,\n      component.___rawState,\n      out.global,\n    );\n\n    if (customEvents && componentDef.___component) {\n      if (registry.___isServer) {\n        componentDef.___customEvents = customEvents;\n        componentDef.___scope = ownerComponentId;\n      } else {\n        componentDef.___component.___setCustomEvents(\n          customEvents,\n          ownerComponentId,\n        );\n      }\n    }\n\n    endComponent(out, componentDef);\n    componentsContext.___componentDef = parentComponentDef;\n    componentsContext.___legacyComponentDef = parentLegacyComponentDef;\n  };\n}\n\nmodule.exports = createRendererFunc;\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/components/registry.js",
    "content": "module.exports = require(\"@internal/components-registry\");\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/components/renderer.js",
    "content": "var copyProps = require(\"raptor-util/copyProps\");\nvar beginComponent = require(\"@internal/components-beginComponent\");\nvar endComponent = require(\"@internal/components-endComponent\");\nvar registry = require(\"@internal/components-registry\");\nvar componentsUtil = require(\"@internal/components-util\");\nvar componentLookup = componentsUtil.___componentLookup;\n\nvar ComponentsContext = require(\"./ComponentsContext\");\nvar getComponentsContext = ComponentsContext.___getComponentsContext;\nvar isServer = componentsUtil.___isServer === true;\n\nvar COMPONENT_BEGIN_ASYNC_ADDED_KEY = \"$wa\";\n\nfunction resolveComponentKey(key, parentComponentDef) {\n  if (key[0] === \"#\") {\n    return key.substring(1);\n  } else {\n    return parentComponentDef.id + \"-\" + parentComponentDef.___nextKey(key);\n  }\n}\n\nfunction trackAsyncComponents(out) {\n  if (out.isSync() || out.global[COMPONENT_BEGIN_ASYNC_ADDED_KEY]) {\n    return;\n  }\n\n  out.on(\"beginAsync\", handleBeginAsync);\n  out.on(\"beginDetachedAsync\", handleBeginDetachedAsync);\n  out.global[COMPONENT_BEGIN_ASYNC_ADDED_KEY] = true;\n}\n\nfunction handleBeginAsync(event) {\n  var parentOut = event.parentOut;\n  var asyncOut = event.out;\n  var componentsContext = parentOut.___components;\n\n  if (componentsContext !== undefined) {\n    // We are going to start a nested ComponentsContext\n    asyncOut.___components = new ComponentsContext(asyncOut, componentsContext);\n  }\n  // Carry along the component arguments\n  asyncOut.c(\n    parentOut.___assignedComponentDef,\n    parentOut.___assignedKey,\n    parentOut.___assignedCustomEvents,\n  );\n}\n\nfunction handleBeginDetachedAsync(event) {\n  var asyncOut = event.out;\n  handleBeginAsync(event);\n  asyncOut.on(\"beginAsync\", handleBeginAsync);\n  asyncOut.on(\"beginDetachedAsync\", handleBeginDetachedAsync);\n}\n\nfunction createRendererFunc(\n  templateRenderFunc,\n  componentProps,\n  renderingLogic,\n) {\n  var onInput = renderingLogic && renderingLogic.onInput;\n  var typeName = componentProps.t;\n  var isSplit = componentProps.s === true;\n  var isImplicitComponent = componentProps.i === true;\n\n  var shouldApplySplitMixins = renderingLogic && isSplit;\n\n  // eslint-disable-next-line no-constant-condition\n  if (\"MARKO_DEBUG\") {\n    if (!componentProps.d) {\n      throw new Error(\n        \"Component was compiled in a different NODE_ENV than the Marko runtime is using.\",\n      );\n    }\n  } else if (componentProps.d) {\n    throw new Error(\"Runtime/NODE_ENV Mismatch\");\n  }\n\n  return function renderer(input, out) {\n    trackAsyncComponents(out);\n\n    var componentsContext = getComponentsContext(out);\n    var globalComponentsContext = componentsContext.___globalContext;\n\n    var component = globalComponentsContext.___rerenderComponent;\n    var isRerender = component !== undefined;\n    var id;\n    var isExisting;\n    var customEvents;\n    var parentComponentDef = componentsContext.___componentDef;\n    var ownerComponentDef = out.___assignedComponentDef;\n    var ownerComponentId = ownerComponentDef && ownerComponentDef.id;\n    var key = out.___assignedKey;\n\n    if (component) {\n      // If component is provided then we are currently rendering\n      // the top-level UI component as part of a re-render\n      id = component.id; // We will use the ID of the component being re-rendered\n      isExisting = true; // This is a re-render so we know the component is already in the DOM\n      globalComponentsContext.___rerenderComponent = null;\n    } else {\n      // Otherwise, we are rendering a nested UI component. We will need\n      // to match up the UI component with the component already in the\n      // DOM (if any) so we will need to resolve the component ID from\n      // the assigned key. We also need to handle any custom event bindings\n      // that were provided.\n      if (parentComponentDef) {\n        // console.log('componentArgs:', componentArgs);\n        customEvents = out.___assignedCustomEvents;\n\n        if (key != null) {\n          id = resolveComponentKey(key.toString(), parentComponentDef);\n        } else {\n          id = parentComponentDef.___nextComponentId();\n        }\n      } else {\n        id = globalComponentsContext.___nextComponentId();\n      }\n    }\n\n    if (isServer) {\n      // If we are rendering on the server then things are simpler since\n      // we don't need to match up the UI component with a previously\n      // rendered component already mounted to the DOM. We also create\n      // a lightweight ServerComponent\n      component = registry.___createComponent(\n        renderingLogic,\n        id,\n        input,\n        out,\n        typeName,\n        customEvents,\n        ownerComponentId,\n      );\n\n      // This is the final input after running the lifecycle methods.\n      // We will be passing the input to the template for the `input` param\n      input = component.___updatedInput;\n    } else {\n      if (!component) {\n        if (\n          isRerender &&\n          (component = componentLookup[id]) &&\n          component.___type !== typeName\n        ) {\n          // Destroy the existing component since\n          component.destroy();\n          component = undefined;\n        }\n\n        if (component) {\n          isExisting = true;\n        } else {\n          isExisting = false;\n          // We need to create a new instance of the component\n          component = registry.___createComponent(typeName, id);\n\n          if (shouldApplySplitMixins === true) {\n            shouldApplySplitMixins = false;\n\n            var renderingLogicProps =\n              typeof renderingLogic == \"function\"\n                ? renderingLogic.prototype\n                : renderingLogic;\n\n            copyProps(renderingLogicProps, component.constructor.prototype);\n          }\n        }\n\n        // Set this flag to prevent the component from being queued for update\n        // based on the new input. The component is about to be rerendered\n        // so we don't want to queue it up as a result of calling `setInput()`\n        component.___updateQueued = true;\n\n        if (customEvents) {\n          component.___setCustomEvents(customEvents, ownerComponentId);\n        }\n\n        if (isExisting === false) {\n          component.___emitCreate(input, out);\n        }\n\n        input = component.___setInput(input, onInput, out);\n\n        if (isExisting === true) {\n          if (\n            component.___isDirty === false ||\n            component.shouldUpdate(input, component.___state) === false\n          ) {\n            // We put a placeholder element in the output stream to ensure that the existing\n            // DOM node is matched up correctly when using morphdom. We flag the VElement\n            // node to track that it is a preserve marker\n            out.___preserveComponent(component);\n            globalComponentsContext.___renderedComponentsById[id] = true;\n            component.___reset(); // The component is no longer dirty so reset internal flags\n            return;\n          }\n        }\n      }\n\n      component.___global = out.global;\n      component.___emitRender(out);\n    }\n\n    var componentDef = beginComponent(\n      componentsContext,\n      component,\n      key,\n      ownerComponentDef,\n      isSplit,\n      isImplicitComponent,\n    );\n\n    componentDef.___isExisting = isExisting;\n\n    // Render the template associated with the component using the final template\n    // data that we constructed\n    templateRenderFunc(\n      input,\n      out,\n      componentDef,\n      component,\n      component.___rawState,\n      out.global,\n    );\n\n    endComponent(out, componentDef);\n    componentsContext.___componentDef = parentComponentDef;\n  };\n}\n\nmodule.exports = createRendererFunc;\n\n// exports used by the legacy renderer\ncreateRendererFunc.___resolveComponentKey = resolveComponentKey;\ncreateRendererFunc.___trackAsyncComponents = trackAsyncComponents;\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/components/update-manager.js",
    "content": "\"use strict\";\n\nvar updatesScheduled = false;\nvar batchStack = []; // A stack of batched updates\nvar unbatchedQueue = []; // Used for scheduled batched updates\n\nvar setImmediate = require(\"@internal/set-immediate\").___setImmediate;\n\n/**\n * This function is called when we schedule the update of \"unbatched\"\n * updates to components.\n */\nfunction updateUnbatchedComponents() {\n  if (unbatchedQueue.length) {\n    try {\n      updateComponents(unbatchedQueue);\n    } finally {\n      // Reset the flag now that this scheduled batch update\n      // is complete so that we can later schedule another\n      // batched update if needed\n      updatesScheduled = false;\n    }\n  }\n}\n\nfunction scheduleUpdates() {\n  if (updatesScheduled) {\n    // We have already scheduled a batched update for the\n    // nextTick so nothing to do\n    return;\n  }\n\n  updatesScheduled = true;\n\n  setImmediate(updateUnbatchedComponents);\n}\n\nfunction updateComponents(queue) {\n  // Loop over the components in the queue and update them.\n  // NOTE: It is okay if the queue grows during the iteration\n  //       since we will still get to them at the end\n  for (var i = 0; i < queue.length; i++) {\n    var component = queue[i];\n    component.___update(); // Do the actual component update\n  }\n\n  // Clear out the queue by setting the length to zero\n  queue.length = 0;\n}\n\nfunction batchUpdate(func) {\n  // If the batched update stack is empty then this\n  // is the outer batched update. After the outer\n  // batched update completes we invoke the \"afterUpdate\"\n  // event listeners.\n  var batch = [];\n\n  batchStack.push(batch);\n\n  try {\n    func();\n  } finally {\n    try {\n      // Update all of the components that where queued up\n      // in this batch (if any)\n      updateComponents(batch);\n    } finally {\n      // Now that we have completed the update of all the components\n      // in this batch we need to remove it off the top of the stack\n      batchStack.length--;\n    }\n  }\n}\n\nfunction queueComponentUpdate(component) {\n  var batchStackLen = batchStack.length;\n\n  if (batchStackLen) {\n    // When a batch update is started we push a new batch on to a stack.\n    // If the stack has a non-zero length then we know that a batch has\n    // been started so we can just queue the component on the top batch. When\n    // the batch is ended this component will be updated.\n    batchStack[batchStackLen - 1].push(component);\n  } else {\n    // We are not within a batched update. We need to schedule a batch update\n    // for the nextTick (if that hasn't been done already) and we will\n    // add the component to the unbatched queue\n    scheduleUpdates();\n    unbatchedQueue.push(component);\n  }\n}\n\nexports.___queueComponentUpdate = queueComponentUpdate;\nexports.___batchUpdate = batchUpdate;\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/createOut.js",
    "content": "var actualCreateOut;\n\nfunction setCreateOut(createOutFunc) {\n  actualCreateOut = createOutFunc;\n}\n\nfunction createOut(globalData) {\n  return actualCreateOut(globalData);\n}\n\ncreateOut.___setCreateOut = setCreateOut;\n\nmodule.exports = createOut;\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/dom-insert.js",
    "content": "var extend = require(\"raptor-util/extend\");\nvar componentsUtil = require(\"@internal/components-util\");\nvar destroyComponentForNode = componentsUtil.___destroyComponentForNode;\nvar destroyNodeRecursive = componentsUtil.___destroyNodeRecursive;\nvar helpers = require(\"./vdom/morphdom/helpers\");\n\nvar insertBefore = helpers.___insertBefore;\nvar insertAfter = helpers.___insertAfter;\nvar removeChild = helpers.___removeChild;\n\nfunction resolveEl(el) {\n  if (typeof el == \"string\") {\n    var elId = el;\n    el = document.getElementById(elId);\n    if (!el) {\n      throw Error(\"Not found: \" + elId);\n    }\n  }\n  return el;\n}\n\nfunction beforeRemove(referenceEl) {\n  destroyNodeRecursive(referenceEl);\n  destroyComponentForNode(referenceEl);\n}\n\nmodule.exports = function (target, getEl, afterInsert) {\n  extend(target, {\n    appendTo: function (referenceEl) {\n      referenceEl = resolveEl(referenceEl);\n      var el = getEl(this, referenceEl);\n      insertBefore(el, null, referenceEl);\n      return afterInsert(this, referenceEl);\n    },\n    prependTo: function (referenceEl) {\n      referenceEl = resolveEl(referenceEl);\n      var el = getEl(this, referenceEl);\n      insertBefore(el, referenceEl.firstChild || null, referenceEl);\n      return afterInsert(this, referenceEl);\n    },\n    replace: function (referenceEl) {\n      referenceEl = resolveEl(referenceEl);\n      var el = getEl(this, referenceEl);\n      beforeRemove(referenceEl);\n      insertBefore(el, referenceEl, referenceEl.parentNode);\n      removeChild(referenceEl);\n      return afterInsert(this, referenceEl);\n    },\n    replaceChildrenOf: function (referenceEl) {\n      referenceEl = resolveEl(referenceEl);\n      var el = getEl(this, referenceEl);\n\n      var curChild = referenceEl.firstChild;\n      while (curChild) {\n        var nextSibling = curChild.nextSibling; // Just in case the DOM changes while removing\n        beforeRemove(curChild);\n        curChild = nextSibling;\n      }\n\n      referenceEl.innerHTML = \"\";\n      insertBefore(el, null, referenceEl);\n      return afterInsert(this, referenceEl);\n    },\n    insertBefore: function (referenceEl) {\n      referenceEl = resolveEl(referenceEl);\n      var el = getEl(this, referenceEl);\n      insertBefore(el, referenceEl, referenceEl.parentNode);\n      return afterInsert(this, referenceEl);\n    },\n    insertAfter: function (referenceEl) {\n      referenceEl = resolveEl(referenceEl);\n      var el = getEl(this, referenceEl);\n      insertAfter(el, referenceEl, referenceEl.parentNode);\n      return afterInsert(this, referenceEl);\n    },\n  });\n};\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/events.js",
    "content": "var EventEmitter = require(\"events-light\");\nmodule.exports = new EventEmitter();\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/helpers/_change-case.js",
    "content": "\"use strict\";\n\nvar camelToDashLookup = Object.create(null);\nvar dashToCamelLookup = Object.create(null);\n\n/**\n * Helper for converting camelCase to dash-case.\n */\nexports.___camelToDashCase = function camelToDashCase(name) {\n  var nameDashed = camelToDashLookup[name];\n  if (!nameDashed) {\n    nameDashed = camelToDashLookup[name] = name\n      .replace(/([A-Z])/g, \"-$1\")\n      .toLowerCase();\n\n    if (nameDashed !== name) {\n      dashToCamelLookup[nameDashed] = name;\n    }\n  }\n\n  return nameDashed;\n};\n\n/**\n * Helper for converting dash-case to camelCase.\n */\nexports.___dashToCamelCase = function dashToCamelCase(name) {\n  var nameCamel = dashToCamelLookup[name];\n  if (!nameCamel) {\n    nameCamel = dashToCamelLookup[name] = name.replace(\n      /-([a-z])/g,\n      matchToUpperCase,\n    );\n\n    if (nameCamel !== name) {\n      camelToDashLookup[nameCamel] = name;\n    }\n  }\n\n  return nameCamel;\n};\n\nfunction matchToUpperCase(_, char) {\n  return char.toUpperCase();\n}\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/helpers/assign.js",
    "content": "\"use strict\";\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * Merges object properties\n */\nmodule.exports = function assign() {\n  var into = arguments[0];\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n    if (source != null) {\n      for (var k in source) {\n        if (hasOwnProperty.call(source, k)) {\n          into[k] = source[k];\n        }\n      }\n    }\n  }\n  return into;\n};\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/helpers/attr-tag.js",
    "content": "\"use strict\";\n\nvar ownerInput;\n\nexports.r = function repeatedAttrTag(targetProperty, attrTagInput) {\n  var prev = ownerInput[targetProperty];\n  if (prev) {\n    prev.push(attrTagInput);\n  } else {\n    ownerInput[targetProperty] = [attrTagInput];\n  }\n};\nexports.a = function repeatableAttrTag(targetProperty, attrTagInput) {\n  var prev = ownerInput[targetProperty];\n  if (prev) {\n    if (Array.isArray(prev)) {\n      prev.push(attrTagInput);\n    } else {\n      ownerInput[targetProperty] = [prev, attrTagInput];\n    }\n  } else {\n    attrTagInput[Symbol.iterator] = selfIterator;\n    ownerInput[targetProperty] = attrTagInput;\n  }\n};\n\nexports.i = function attrTagInput(render, input) {\n  var prevOwnerInput = ownerInput;\n  ownerInput = input || {};\n  try {\n    var renderBody = render();\n    if (renderBody) {\n      ownerInput.renderBody = renderBody;\n    }\n    return ownerInput;\n  } finally {\n    ownerInput = prevOwnerInput;\n  }\n};\n\nfunction* selfIterator() {\n  yield this;\n}\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/helpers/class-value.js",
    "content": "\"use strict\";\n\nmodule.exports = function classHelper(arg) {\n  switch (typeof arg) {\n    case \"string\":\n      return arg || undefined;\n    case \"object\":\n      var result = \"\";\n      var sep = \"\";\n\n      if (Array.isArray(arg)) {\n        for (var i = 0, len = arg.length; i < len; i++) {\n          var value = classHelper(arg[i]);\n          if (value) {\n            result += sep + value;\n            sep = \" \";\n          }\n        }\n      } else {\n        for (var key in arg) {\n          if (arg[key]) {\n            result += sep + key;\n            sep = \" \";\n          }\n        }\n      }\n\n      return result || undefined;\n  }\n};\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/helpers/dynamic-tag.js",
    "content": "\"use strict\";\n\n// eslint-disable-next-line no-constant-binary-expression\nvar complain = \"MARKO_DEBUG\" && require(\"complain\");\nvar ComponentDef = require(\"../components/ComponentDef\");\nvar ComponentsContext = require(\"../components/ComponentsContext\");\nvar serializeNOOP = require(\"../helpers/serialize-noop\");\nvar w10NOOP = serializeNOOP.___noop;\nvar w10ToJSON = serializeNOOP.___toJSON;\nvar changeCase = require(\"./_change-case\");\nvar getComponentsContext = ComponentsContext.___getComponentsContext;\n\nvar FLAG_WILL_RERENDER_IN_BROWSER = 1;\n// var FLAG_HAS_RENDER_BODY = 2;\nvar IS_SERVER = typeof document === \"undefined\";\n\n/**\n * Helper to render a dynamic tag\n */\nmodule.exports = function dynamicTag(\n  out,\n  tag,\n  getAttrs,\n  renderBody,\n  args,\n  props,\n  componentDef,\n  key,\n  customEvents,\n) {\n  if (tag) {\n    if (tag.default) {\n      tag = tag.default;\n    }\n\n    var attrs = getAttrs && getAttrs();\n    var component = componentDef && componentDef.___component;\n    if (typeof tag === \"string\") {\n      if (renderBody) {\n        out.___beginElementDynamic(\n          tag,\n          attrs,\n          key,\n          componentDef,\n          addEvents(componentDef, customEvents, props),\n        );\n        renderBody(out);\n        out.___endElement();\n      } else {\n        out.___elementDynamic(\n          tag,\n          attrs,\n          key,\n          componentDef,\n          addEvents(componentDef, customEvents, props),\n        );\n      }\n    } else {\n      if (attrs == null) {\n        attrs = { renderBody: renderBody };\n      } else if (typeof attrs === \"object\") {\n        attrs = attrsToCamelCase(attrs);\n        if (renderBody) {\n          attrs.renderBody = renderBody;\n        }\n      }\n\n      var renderer =\n        tag._ ||\n        (tag.renderer ? tag.renderer.renderer || tag.renderer : tag.render);\n      var render = (tag && tag.renderBody) || tag;\n\n      // eslint-disable-next-line no-constant-condition\n      if (\"MARKO_DEBUG\") {\n        if (tag.renderer && tag.renderer.renderer) {\n          complain(\n            \"An object with a 'renderer' was passed to the dynamic tag, but renderer was another template.\",\n          );\n        }\n      }\n\n      if (dynamicTag.___runtimeCompat) {\n        renderer = dynamicTag.___runtimeCompat(\n          renderer,\n          render,\n          args,\n          out.global,\n        );\n      }\n\n      if (renderer) {\n        out.c(componentDef, key, customEvents);\n        renderer(attrs, out);\n        out.___assignedComponentDef = null;\n      } else {\n        var isFn = typeof render === \"function\";\n\n        // eslint-disable-next-line no-constant-condition\n        if (\"MARKO_DEBUG\") {\n          if (render.safeHTML || render.toHTML) {\n            throw new Error(\n              \"Using `<include(x)/>` or the `<${dynamic}/>` tags with a `{ safeHTML: ... }` object is no longer supported. Use the unescaped text placeholder syntax instead.\",\n            );\n          }\n        }\n        if (isFn) {\n          var flags = componentDef ? componentDef.___flags : 0;\n          var willRerender = flags & FLAG_WILL_RERENDER_IN_BROWSER;\n          var isW10NOOP = render === w10NOOP;\n          var preserve = IS_SERVER ? willRerender : isW10NOOP;\n          out.bf(key, component, preserve);\n          if (!isW10NOOP && isFn) {\n            var componentsContext = getComponentsContext(out);\n            var parentComponentDef = componentsContext.___componentDef;\n            var globalContext = componentsContext.___globalContext;\n            componentsContext.___componentDef = new ComponentDef(\n              component,\n              parentComponentDef.id + \"-\" + parentComponentDef.___nextKey(key),\n              globalContext,\n            );\n            render.toJSON = w10ToJSON;\n\n            if (args) {\n              render.apply(null, [out].concat(args, attrs));\n            } else {\n              render(out, attrs);\n            }\n\n            componentsContext.___componentDef = parentComponentDef;\n          }\n          out.ef();\n        } else {\n          out.error(\"Invalid dynamic tag value\");\n        }\n      }\n    }\n  } else if (renderBody) {\n    out.bf(\n      key,\n      component,\n      IS_SERVER &&\n        componentDef &&\n        componentDef.___flags & FLAG_WILL_RERENDER_IN_BROWSER,\n    );\n    renderBody(out);\n    out.ef();\n  }\n};\n\nfunction attrsToCamelCase(attrs) {\n  var result = {};\n\n  for (var key in attrs) {\n    result[changeCase.___dashToCamelCase(key)] = attrs[key];\n  }\n\n  return result;\n}\n\nfunction addEvents(componentDef, customEvents, props) {\n  var len = customEvents ? customEvents.length : 0;\n\n  if (len === 0) {\n    return props;\n  }\n\n  var result = props || {};\n  var event;\n\n  for (var i = len; i--; ) {\n    event = customEvents[i];\n    result[\"on\" + event[0]] = componentDef.d(\n      event[0],\n      event[1],\n      event[2],\n      event[3],\n    );\n  }\n\n  return result;\n}\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/helpers/empty-component.js",
    "content": "module.exports = {};\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/helpers/merge.js",
    "content": "var hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * Merges object properties\n */\nmodule.exports = function merge(into, source) {\n  for (var k in source) {\n    if (hasOwnProperty.call(source, k) && !hasOwnProperty.call(into, k)) {\n      into[k] = source[k];\n    }\n  }\n  return into;\n};\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/helpers/of-fallback.js",
    "content": "var arr = [];\nmodule.exports = function (v) {\n  return v || arr;\n};\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/helpers/render-tag.js",
    "content": "\"use strict\";\n\n/**\n * Helper to render a custom tag\n */\nmodule.exports = function renderTagHelper(\n  handler,\n  input,\n  out,\n  componentDef,\n  key,\n  customEvents,\n) {\n  out.c(componentDef, key, customEvents);\n  (handler._ || (handler._ = handler.render || handler.renderer || handler))(\n    input,\n    out,\n  );\n  out.___assignedComponentDef = null;\n};\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/helpers/serialize-noop.js",
    "content": "var w10NOOP = require(\"warp10/constants\").NOOP;\nexports.___noop = w10NOOP;\nexports.___toJSON = function () {\n  return w10NOOP;\n};\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/helpers/skip-serialize.js",
    "content": "var toJSONDescriptor = {\n  configurable: true,\n  enumerable: false,\n  writable: true,\n  value: function emptyInput() {\n    return {};\n  },\n};\nmodule.exports = function (input) {\n  if (input.toJSON) {\n    return input;\n  } else {\n    const newInput = { ...input };\n    Object.defineProperty(newInput, \"toJSON\", toJSONDescriptor);\n    return newInput;\n  }\n};\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/helpers/style-value.js",
    "content": "\"use strict\";\n\nvar changeCase = require(\"./_change-case\");\n\n/**\n * Helper for generating the string for a style attribute\n */\nmodule.exports = function styleHelper(style) {\n  if (!style) {\n    return;\n  }\n\n  var type = typeof style;\n\n  if (type !== \"string\") {\n    var styles = \"\";\n    var sep = \"\";\n\n    if (Array.isArray(style)) {\n      for (var i = 0, len = style.length; i < len; i++) {\n        var next = styleHelper(style[i]);\n        if (next) {\n          styles += sep + next;\n          sep = \";\";\n        }\n      }\n    } else if (type === \"object\") {\n      for (var name in style) {\n        var value = style[name];\n        if (value != null && value !== false) {\n          if (typeof value === \"number\" && value) {\n            value += \"px\";\n          }\n\n          styles += sep + changeCase.___camelToDashCase(name) + \":\" + value;\n          sep = \";\";\n        }\n      }\n    }\n\n    return styles || undefined;\n  }\n\n  return style;\n};\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/helpers/tags-compat/dom-debug.js",
    "content": "require(\"./runtime-dom.js\").p(require(\"@marko/runtime-tags/debug/dom\").compat);\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/helpers/tags-compat/dom-debug.mjs",
    "content": "import { compat } from \"@marko/runtime-tags/debug/dom\";\n\nimport { p } from \"./runtime-dom.js\";\np(compat);\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/helpers/tags-compat/dom.js",
    "content": "require(\"./runtime-dom.js\").p(require(\"@marko/runtime-tags/dom\").compat);\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/helpers/tags-compat/dom.mjs",
    "content": "import { compat } from \"@marko/runtime-tags/dom\";\n\nimport { p } from \"./runtime-dom.js\";\np(compat);\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/helpers/tags-compat/html-debug.js",
    "content": "exports.s = require(\"./runtime-html.js\").p(\n  require(\"@marko/runtime-tags/debug/html\").compat,\n);\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/helpers/tags-compat/html-debug.mjs",
    "content": "import { compat } from \"@marko/runtime-tags/debug/html\";\n\nimport { p } from \"./runtime-html.js\";\nexport const s = p(compat);\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/helpers/tags-compat/html.js",
    "content": "exports.s = require(\"./runtime-html.js\").p(\n  require(\"@marko/runtime-tags/html\").compat,\n);\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/helpers/tags-compat/html.mjs",
    "content": "import { compat } from \"@marko/runtime-tags/html\";\n\nimport { p } from \"./runtime-html.js\";\nexport const s = p(compat);\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/helpers/tags-compat/runtime-dom.js",
    "content": "const { ___componentLookup } = require(\"@internal/components-util\");\nconst {\n  ___getComponentsContext,\n} = require(\"../../components/ComponentsContext\");\nconst ComponentDef = require(\"../../components/ComponentDef\");\nconst defineComponent = require(\"../../components/defineComponent\");\nconst { r: registerComponent } = require(\"../../components/registry\");\nconst createRenderer = require(\"../../components/renderer\");\nconst defaultCreateOut = require(\"../../createOut\");\nconst morphdom = require(\"../../vdom/morphdom\");\nconst { ___createFragmentNode } = require(\"../../vdom/morphdom/fragment\");\nconst dynamicTag = require(\"../dynamic-tag\");\nconst Component = require(\"../../components/Component\");\nconst noopRenderer = require(\"../serialize-noop\").___noop;\n\nexports.p = function (domCompat) {\n  dynamicTag.___runtimeCompat = function tagsToVdom(\n    renderer,\n    renderBody,\n    args,\n    global,\n  ) {\n    const tagsRenderer = domCompat.resolveRegistered(\n      renderer || renderBody,\n      global,\n    );\n\n    if (tagsRenderer && domCompat.isRenderer(tagsRenderer)) {\n      return (input, out) => {\n        return TagsCompat({ i: args ? args : input, r: tagsRenderer }, out);\n      };\n    }\n\n    return renderer;\n  };\n\n  Component.prototype.___setCustomEventsOriginal =\n    Component.prototype.___setCustomEvents;\n  Component.prototype.___setCustomEvents = function (customEvents, scopeId) {\n    for (const customEvent of customEvents) {\n      customEvent[1] = domCompat.resolveRegistered(\n        customEvent[1],\n        this.___global,\n      );\n    }\n\n    this.___setCustomEventsOriginal(customEvents, scopeId);\n  };\n\n  const defDeserialize = ComponentDef.___deserialize;\n  ComponentDef.___deserialize = function (o, types, global, registry) {\n    if (typeof o[2] === \"number\") {\n      o[2] = self[global.runtimeId][global.renderId].s[o[2]].m5i;\n    }\n    return defDeserialize(o, types, global, registry);\n  };\n\n  const TagsCompatId = \"tags-compat\";\n  const TagsCompat = createRenderer(\n    function (_, out, componentDef, component) {\n      const input = Array.isArray(_.i) ? _.i : [_.i];\n      const tagsRenderer = domCompat.resolveRegistered(_.r, out.global);\n      const newNode = domCompat.render(out, component, tagsRenderer, input);\n\n      out.bf(\"1\", component, !newNode);\n      if (newNode) {\n        out.node({ ___actualize: () => newNode });\n      }\n      out.ef();\n    },\n    // eslint-disable-next-line no-constant-condition\n    \"MARKO_DEBUG\"\n      ? {\n          t: TagsCompatId,\n          d: true,\n        }\n      : {\n          t: TagsCompatId,\n        },\n    {},\n  );\n\n  registerComponent(TagsCompatId, () => ({\n    _: TagsCompat,\n    Component: defineComponent(\n      {\n        onMount: domCompat.runComponentEffects,\n        onUpdate: domCompat.runComponentEffects,\n        onDestroy: domCompat.runComponentDestroy,\n      },\n      TagsCompat,\n    ),\n  }));\n\n  const rendererCache = new WeakMap();\n\n  domCompat.patchDynamicTag((dynamicTag) => (...args) => {\n    const signal = dynamicTag(...args);\n    return (scope, renderer, getInput) => {\n      return signal(scope, create5to6Renderer(renderer), getInput);\n    };\n  });\n\n  function create5to6Renderer(renderer) {\n    let newRenderer = renderer;\n    if (renderer && typeof renderer !== \"string\") {\n      if (renderer === noopRenderer) {\n        return noopRenderer;\n      }\n\n      const rendererFromAnywhere =\n        renderer._ ||\n        renderer.render ||\n        (renderer.renderer && renderer.renderer.renderer) ||\n        renderer.renderer;\n\n      if (!domCompat.isRenderer(rendererFromAnywhere || renderer)) {\n        newRenderer = rendererCache.get(renderer);\n        if (!newRenderer) {\n          newRenderer = domCompat.createRenderer(\n            (scope, input) =>\n              renderAndMorph(scope, rendererFromAnywhere, renderer, input),\n            () => ___createFragmentNode(),\n          );\n          rendererCache.set(renderer, newRenderer);\n        }\n      }\n    }\n    return newRenderer;\n  }\n\n  domCompat.registerRenderer(create5to6Renderer);\n  domCompat.init(noopRenderer);\n\n  function renderAndMorph(scope, renderer, renderBody, input) {\n    const out = defaultCreateOut(scope.$global);\n    let host = domCompat.getStartNode(scope);\n    let rootNode = host.fragment;\n    if (!rootNode) {\n      const component = (scope.___marko5Component =\n        ___componentLookup[scope.m5c]);\n      rootNode = component.___rootNode;\n      host = rootNode.startNode;\n      domCompat.setScopeNodes(host, rootNode.startNode, rootNode.endNode);\n    }\n    const existingComponent = scope.___marko5Component;\n    const componentsContext = ___getComponentsContext(out);\n    const globalComponentsContext = componentsContext.___globalContext;\n    let customEvents;\n    let normalizedInput;\n    globalComponentsContext.___rerenderComponent = existingComponent;\n    out.sync();\n    if (renderer) {\n      const [rawInput] = input;\n      normalizedInput = {};\n\n      for (const key in rawInput) {\n        const value = rawInput[key];\n        if (/^on[-A-Z]/.test(key)) {\n          if (typeof value === \"function\") {\n            (customEvents || (customEvents = {}))[\n              key[2] === \"-\" ? key.slice(3) : key.slice(2).toLowerCase()\n            ] = [value];\n          }\n        } else {\n          normalizedInput[key === \"content\" ? \"renderBody\" : key] = value;\n        }\n      }\n\n      renderer(normalizedInput, out);\n    } else {\n      normalizedInput = input[0];\n      RenderBodyComponent({ renderBody, args: input }, out);\n    }\n\n    domCompat.queueEffect(scope, () => {\n      const targetNode = out.___getOutput().___firstChild;\n      morphdom(rootNode, targetNode, host, componentsContext);\n      const componentDefs = componentsContext.___initComponents(\n        getRootNode(host),\n      );\n      const component = componentDefs[0].___component;\n      component.___rootNode = rootNode;\n      component.___input = normalizedInput;\n      component.___customEvents = customEvents;\n      scope.___marko5Component = component;\n    });\n  }\n\n  function getRootNode(el) {\n    var cur = el;\n    while (cur.parentNode) cur = cur.parentNode;\n    return cur;\n  }\n\n  const RenderBodyComponentId = \"renderbody-renderer\";\n  const RenderBodyComponent = createRenderer(\n    function (input, out, _componentDef) {\n      dynamicTag(\n        out,\n        input.renderBody,\n        null,\n        null,\n        input.args,\n        null,\n        _componentDef,\n        \"0\",\n      );\n    },\n    // eslint-disable-next-line no-constant-condition\n    \"MARKO_DEBUG\"\n      ? {\n          t: RenderBodyComponentId,\n          i: true,\n          d: true,\n        }\n      : {\n          t: RenderBodyComponentId,\n          i: true,\n        },\n    {},\n  );\n\n  registerComponent(RenderBodyComponentId, () => ({\n    _: RenderBodyComponent,\n    Component: defineComponent({}, RenderBodyComponent),\n  }));\n};\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/helpers/tags-compat/runtime-html.js",
    "content": "const {\n  ___getInitComponentsCodeForDefs,\n  ___addComponentsFromContext,\n} = require(\"@internal/components-entry\");\nconst {\n  ___getComponentsContext,\n} = require(\"../../components/ComponentsContext\");\nconst createRenderer = require(\"../../components/renderer\");\nconst defaultCreateOut = require(\"../../createOut\");\nconst dynamicTag5 = require(\"../dynamic-tag\");\n\nexports.p = function (htmlCompat) {\n  const writersByGlobal = new WeakMap();\n  const isMarko6 = (fn) => typeof fn !== \"function\" || htmlCompat.isTagsAPI(fn);\n  const isMarko5 = (fn) =>\n    typeof fn !== \"function\" || !htmlCompat.isTagsAPI(fn);\n  const writeClassAPIResultToTagsAPI = ({ out }) => {\n    const { writer } = out._state;\n    htmlCompat.write(writer._content);\n    htmlCompat.writeScript(writer._script);\n    writer._content = writer._scripts = \"\";\n\n    if (out.___components) {\n      let writers = writersByGlobal.get(out.global);\n      if (!writers) {\n        writersByGlobal.set(\n          out.global,\n          (writers = { classAPI: [], tagsAPI: [] }),\n        );\n      }\n      ___addComponentsFromContext(out.___components, writers.classAPI);\n    }\n  };\n  const flushScripts = ($global, flushDefs) => {\n    const writers = writersByGlobal.get($global);\n    if (!writers) return \"\";\n\n    const { classAPI, tagsAPI } = writers;\n    let scripts = \"\";\n    let componentDefs = flushDefs;\n\n    if (classAPI.length) {\n      componentDefs = flushDefs ? flushDefs.concat(classAPI) : classAPI;\n      writers.classAPI = [];\n    }\n\n    if (componentDefs?.length) {\n      scripts = ___getInitComponentsCodeForDefs($global, componentDefs);\n      if (scripts) {\n        htmlCompat.ensureState($global).walkOnNextFlush = true;\n\n        if (!tagsAPI.length) {\n          scripts = concatScripts(htmlCompat.flushScript($global), scripts);\n        }\n      }\n    }\n\n    if (tagsAPI.length) {\n      const [chunk] = tagsAPI;\n      for (let i = 1; i < tagsAPI.length; i++) {\n        chunk.append(tagsAPI[i]);\n      }\n\n      chunk.boundary.flush();\n      if (chunk.boundary.count) {\n        throw new Error(\n          \"Cannot serialize promise across tags/class compat layer.\",\n        );\n      }\n\n      scripts = concatScripts(chunk.flushScript().scripts, scripts);\n      writers.tagsAPI = [];\n    }\n\n    return scripts;\n  };\n\n  htmlCompat.onFlush((chunk) => {\n    chunk.render(() => {\n      chunk.writeScript(flushScripts(chunk.boundary.state.$global));\n    });\n  });\n\n  dynamicTag5.___runtimeCompat = function tagsToVdom(\n    tagsRenderer,\n    renderBody,\n    args,\n  ) {\n    if (tagsRenderer ? isMarko5(tagsRenderer) : isMarko5(renderBody)) {\n      return tagsRenderer;\n    }\n\n    return (input, out) => {\n      if (!tagsRenderer && renderBody) {\n        renderBody.toJSON = htmlCompat.toJSON(\n          htmlCompat.ensureState(out.global),\n        );\n      }\n      TagsCompat(\n        args\n          ? { i: args, r: (args) => (tagsRenderer || renderBody)(...args) }\n          : { i: input, r: tagsRenderer || renderBody },\n        out,\n      );\n    };\n  };\n\n  const TagsCompatId = \"tags-compat\";\n  const TagsCompat = createRenderer(\n    function (_, out, componentDef, component) {\n      // class to tags\n      const $global = out.global;\n      let writers = writersByGlobal.get($global);\n      if (!writers) {\n        writersByGlobal.set($global, (writers = { classAPI: [], tagsAPI: [] }));\n        out.prependListener(\"___toString\", (writer) => {\n          const defs = writer._data?.componentDefs;\n          const scripts = flushScripts($global, defs);\n          if (scripts) {\n            if (defs) writer._data.componentDefs = undefined;\n            writer.script(scripts);\n          }\n        });\n      }\n\n      const input = _.i;\n      const tagsRenderer = _.r;\n      const willRerender = componentDef._wrr || htmlCompat.isInResumedBranch();\n      out.bf(\"1\", component, willRerender);\n      htmlCompat.render(\n        tagsRenderer,\n        willRerender,\n        out,\n        component,\n        input,\n        writers.tagsAPI,\n      );\n      out.ef();\n    },\n    // eslint-disable-next-line no-constant-condition\n    \"MARKO_DEBUG\"\n      ? {\n          t: TagsCompatId,\n          i: true,\n          d: true,\n        }\n      : {\n          t: TagsCompatId,\n          i: true,\n        },\n    {},\n  );\n\n  htmlCompat.patchDynamicTag(function getRenderer(tag, scopeId, accessor) {\n    if (!tag || isMarko6(tag._ || tag.content || tag)) {\n      return tag;\n    }\n\n    const renderer5 =\n      tag._ ||\n      tag.render ||\n      (tag.renderer && tag.renderer.renderer) ||\n      tag.renderer;\n    const renderBody5 = tag.renderBody || tag;\n\n    if (!renderer5 && renderBody5) {\n      htmlCompat.registerRenderBody(renderBody5);\n    }\n    return (input, ...args) => {\n      // tags to class\n      const $global = htmlCompat.$global();\n      const state = htmlCompat.ensureState($global);\n      const out = defaultCreateOut($global);\n      const branchId = htmlCompat.nextScopeId();\n\n      if (renderer5) {\n        const componentsContext = ___getComponentsContext(out);\n        const originalInput = input;\n        let customEvents;\n        input = {};\n\n        for (const key in originalInput) {\n          const value = originalInput[key];\n          if (/^on[-A-Z]/.test(key)) {\n            if (typeof value === \"function\") {\n              (customEvents || (customEvents = [])).push([\n                key[2] === \"-\" ? key.slice(3) : key.slice(2).toLowerCase(),\n                value,\n              ]);\n              value.toJSON = htmlCompat.toJSON(state);\n            }\n          } else {\n            input[key === \"content\" ? \"renderBody\" : key] = value;\n          }\n        }\n\n        componentsContext.___forceBoundary = true;\n        renderer5(input, out);\n\n        const componentDef = componentsContext.___components[0];\n        if (componentDef) {\n          const rawInput = componentDef.___component.___input;\n          const { toJSON: _, ...serializeInput } = rawInput;\n          componentDef.___component.___customEvents = customEvents;\n          rawInput.toJSON = () => branchId;\n          htmlCompat.writeSetScopeForComponent(\n            branchId,\n            componentDef.id,\n            serializeInput,\n          );\n        }\n      } else {\n        renderBody5(out, input, ...args);\n      }\n\n      let async;\n      out.once(\"finish\", (result) => {\n        if (!async) {\n          async = false;\n          writeClassAPIResultToTagsAPI(result);\n        }\n      });\n\n      out.end();\n\n      if (async !== false) {\n        async = true;\n        htmlCompat.fork(scopeId, accessor, out, writeClassAPIResultToTagsAPI);\n      }\n    };\n  });\n\n  return htmlCompat.registerRenderer;\n};\n\nfunction concatScripts(a, b) {\n  return a ? (b ? a + \";\" + b : a) : b;\n}\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/helpers/to-string.js",
    "content": "\"use strict\";\n\nmodule.exports = function (value) {\n  return value == null ? \"\" : value + \"\";\n};\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/html/AsyncStream.js",
    "content": "\"use strict\";\nvar EventEmitter = require(\"events-light\");\nvar selfClosingTags = require(\"self-closing-tags\");\nvar RenderResult = require(\"../RenderResult\");\nvar parseHTML = require(\"../vdom/parse-html\");\nvar BufferedWriter = require(\"./BufferedWriter\");\nvar attrsHelper = require(\"./helpers/attrs\");\nvar markoAttr = require(\"./helpers/data-marko\");\nvar escapeXmlHelper = require(\"./helpers/escape-xml\");\nvar StringWriter = require(\"./StringWriter\");\nvar escapeXmlOrNullish = escapeXmlHelper.x;\nvar escapeXmlString = escapeXmlHelper.___escapeXML;\nvar missingSetTimeout = typeof setTimeout !== \"function\";\n\nfunction noop() {}\n\nvar voidWriter = {\n  write: noop,\n  script: noop,\n  merge: noop,\n  clear: noop,\n  get: function () {\n    return [];\n  },\n  toString: function () {\n    return \"\";\n  },\n};\n\nfunction State(root, stream, writer, events) {\n  this.root = root;\n  this.stream = stream;\n  this.writer = writer;\n  this.events = events;\n\n  this.finished = false;\n}\n\nfunction escapeEndingComment(text) {\n  return text.replace(/(--!?)>/g, \"$1&gt;\");\n}\n\nfunction deferred() {\n  let resolve;\n  let reject;\n  const promise = new Promise((res, rej) => {\n    resolve = res;\n    reject = rej;\n  });\n  return { promise, resolve, reject };\n}\n\nfunction AsyncStream(global, writer, parentOut) {\n  if (parentOut === null) {\n    throw new Error(\"illegal state\");\n  }\n  var finalGlobal = (this.attributes = global || {});\n  var originalStream;\n  var state;\n\n  if (parentOut) {\n    state = parentOut._state;\n    originalStream = state.stream;\n  } else {\n    var events = (finalGlobal.events /* deprecated */ =\n      writer && writer.on ? writer : new EventEmitter());\n\n    if (writer) {\n      originalStream = writer;\n      writer = new BufferedWriter(writer);\n    } else {\n      writer = originalStream = new StringWriter();\n    }\n\n    state = new State(this, originalStream, writer, events);\n    writer.state = state;\n  }\n\n  finalGlobal.runtimeId = finalGlobal.runtimeId || \"M\";\n  this.global = finalGlobal;\n  this.stream = originalStream;\n  this._state = state;\n\n  this._ended = false;\n  this._remaining = 1;\n  this._lastCount = 0;\n  this._last = undefined; // Array\n  this._parentOut = parentOut;\n\n  this.data = {};\n  this.writer = writer;\n  writer.stream = this;\n\n  this._sync = false;\n  this._stack = undefined;\n  this.name = undefined;\n  this._timeoutId = undefined;\n\n  this._node = undefined;\n\n  this._elStack = undefined; // Array\n\n  this.___components = null; // ComponentsContext\n\n  this.___assignedComponentDef = null;\n  this.___assignedKey = null;\n  this.___assignedCustomEvents = null;\n  this.___isLast = false;\n}\n\nAsyncStream.DEFAULT_TIMEOUT = 10000;\n\n/**\n * If set to `true`, AsyncStream errors will include the full stack trace\n */\nAsyncStream.INCLUDE_STACK =\n  typeof process !== \"undefined\" &&\n  (!process.env.NODE_ENV ||\n    process.env.NODE_ENV === \"development\" ||\n    process.env.NODE_ENV === \"dev\");\n\nAsyncStream.enableAsyncStackTrace = function () {\n  AsyncStream.INCLUDE_STACK = true;\n};\n\nvar proto = (AsyncStream.prototype = {\n  constructor: AsyncStream,\n  ___host: typeof document === \"object\" && document,\n  ___isOut: true,\n\n  [Symbol.asyncIterator]() {\n    if (this.___iterator) {\n      return this.___iterator;\n    }\n\n    const originalWriter = this._state.writer;\n    let buffer = \"\";\n    let iteratorNextFn;\n\n    if (!originalWriter.stream) {\n      // Writing has finished completely so we can use a simple iterator\n      buffer = this.toString();\n      iteratorNextFn = () => {\n        const value = buffer;\n        buffer = \"\";\n        return { value, done: !value };\n      };\n    } else {\n      let done = false;\n      let error = noop; // Used as a identity object reference.\n      let pending;\n      const stream = {\n        write(data) {\n          buffer += data;\n        },\n        end() {\n          done = true;\n\n          if (pending) {\n            pending.resolve(\n              buffer\n                ? {\n                    value: buffer,\n                    done: false,\n                  }\n                : {\n                    value: undefined,\n                    done: true,\n                  },\n            );\n            pending = undefined;\n          }\n        },\n        flush() {\n          if (pending) {\n            pending.resolve({\n              value: buffer,\n              done: false,\n            });\n            buffer = \"\";\n            pending = undefined;\n          }\n        },\n      };\n\n      this.once(\"error\", (err) => {\n        error = err;\n\n        if (pending) {\n          pending.reject(error);\n          pending = undefined;\n        }\n      });\n\n      const writer = new BufferedWriter(stream);\n      writer.stream = originalWriter.stream;\n      writer.stream.writer = writer;\n      writer.next = originalWriter.next;\n      writer.state = this._state;\n      writer.merge(originalWriter);\n      writer.scheduleFlush();\n\n      this._state.stream = stream;\n      this._state.writer = writer;\n\n      iteratorNextFn = async () => {\n        if (error !== noop) {\n          throw error;\n        } else if (buffer) {\n          const value = buffer;\n          buffer = \"\";\n          return { value, done: false };\n        } else if (done) {\n          return { value: undefined, done: true };\n        }\n\n        if (!pending) {\n          pending = deferred();\n        }\n\n        return pending.promise;\n      };\n    }\n\n    return (this.___iterator = {\n      next: iteratorNextFn,\n      return: iteratorReturnFn,\n      throw: iteratorReturnFn,\n      [Symbol.asyncIterator]() {\n        return this;\n      },\n    });\n  },\n\n  toReadable() {\n    let cancelled = false;\n    return new ReadableStream({\n      start: async (ctrl) => {\n        const encoder = new TextEncoder();\n        try {\n          for await (const chunk of this) {\n            if (cancelled) {\n              return;\n            }\n            ctrl.enqueue(encoder.encode(chunk));\n          }\n          ctrl.close();\n        } catch (err) {\n          if (!cancelled) {\n            ctrl.error(err);\n          }\n        }\n      },\n      cancel() {\n        cancelled = true;\n      },\n    });\n  },\n\n  sync: function () {\n    this._sync = true;\n  },\n\n  isSync: function () {\n    return this._sync === true;\n  },\n\n  write: function (str) {\n    if (str != null) {\n      this.writer.write(str.toString());\n    }\n    return this;\n  },\n\n  script: function (str) {\n    if (str != null) {\n      this.writer.script(str.toString());\n    }\n    return this;\n  },\n\n  ___getOutput: function () {\n    return this._state.writer.toString();\n  },\n\n  /**\n   * Legacy...\n   */\n  getOutput: function () {\n    return this.___getOutput();\n  },\n\n  toString: function () {\n    return this._state.writer.toString();\n  },\n\n  ___getResult: function () {\n    this._result = this._result || new RenderResult(this);\n    return this._result;\n  },\n\n  beginAsync: function (options) {\n    if (this._sync) {\n      throw new Error(\"beginAsync() not allowed when using renderSync()\");\n    }\n\n    var state = this._state;\n\n    var currentWriter = this.writer;\n\n    /* ┏━━━━━┓               this\n           ┃ WAS ┃               ↓↑\n           ┗━━━━━┛  prevWriter → currentWriter → nextWriter  */\n\n    var newWriter = new StringWriter();\n    var newStream = new AsyncStream(this.global, currentWriter, this);\n    newWriter.state = state;\n\n    this.writer = newWriter;\n    newWriter.stream = this;\n\n    newWriter.next = currentWriter.next;\n    currentWriter.next = newWriter;\n\n    /* ┏━━━━━┓               newStream       this\n           ┃ NOW ┃               ↓↑              ↓↑\n           ┗━━━━━┛  prevWriter → currentWriter → newWriter → nextWriter  */\n\n    var timeout;\n    var name;\n\n    this._remaining++;\n\n    if (options != null) {\n      if (typeof options === \"number\") {\n        timeout = options;\n      } else {\n        timeout = options.timeout;\n\n        if (options.last === true) {\n          if (timeout == null) {\n            // Don't assign a timeout to last flush fragments\n            // unless it is explicitly given a timeout\n            timeout = 0;\n          }\n\n          this._lastCount++;\n          newStream.___isLast = true;\n        }\n\n        name = options.name;\n      }\n    }\n\n    if (missingSetTimeout) {\n      timeout = 0;\n    } else if (timeout == null) {\n      timeout = AsyncStream.DEFAULT_TIMEOUT;\n    }\n\n    newStream._stack = AsyncStream.INCLUDE_STACK ? new Error() : null;\n    newStream.name = name;\n\n    if (timeout > 0) {\n      newStream._timeoutId = setTimeout(function () {\n        newStream.error(\n          new Error(\n            \"Async fragment \" +\n              (name ? \"(\" + name + \") \" : \"\") +\n              \"timed out after \" +\n              timeout +\n              \"ms\",\n          ),\n        );\n      }, timeout);\n    }\n\n    state.events.emit(\"beginAsync\", {\n      out: newStream,\n      parentOut: this,\n    });\n\n    return newStream;\n  },\n\n  _doFinish: function () {\n    var state = this._state;\n\n    state.finished = true;\n\n    if (state.writer.end) {\n      state.writer.end();\n    }\n\n    if (state.events !== state.stream) {\n      state.events.emit(\"finish\", this.___getResult());\n    }\n  },\n\n  end: function (data) {\n    if (this._ended === true) {\n      return;\n    }\n\n    this._ended = true;\n\n    var remaining = --this._remaining;\n\n    if (data != null) {\n      this.write(data);\n    }\n\n    var currentWriter = this.writer;\n\n    /* ┏━━━━━┓  this            nextStream\n           ┃ WAS ┃  ↓↑              ↓↑\n           ┗━━━━━┛  currentWriter → nextWriter → futureWriter  */\n\n    // Prevent any more writes to the current steam\n    this.writer = voidWriter;\n    currentWriter.stream = null;\n\n    // Flush the contents of nextWriter to the currentWriter\n    this._flushNext(currentWriter);\n\n    /* ┏━━━━━┓    this        ╵  nextStream\n           ┃     ┃    ↓           ╵  ↓↑\n           ┃ NOW ┃    voidWriter  ╵  currentWriter → futureWriter\n           ┃     ┃  ──────────────┴────────────────────────────────\n           ┗━━━━━┛    Flushed & garbage collected: nextWriter  */\n\n    var parentOut = this._parentOut;\n\n    if (parentOut === undefined) {\n      if (remaining === 0) {\n        this._doFinish();\n      } else if (remaining - this._lastCount === 0) {\n        this._emitLast();\n      }\n    } else {\n      var timeoutId = this._timeoutId;\n\n      if (timeoutId) {\n        clearTimeout(timeoutId);\n      }\n\n      if (remaining === 0) {\n        parentOut._handleChildDone(this);\n      } else if (remaining - this._lastCount === 0) {\n        this._emitLast();\n      }\n    }\n\n    return this;\n  },\n\n  _handleChildDone: function (childOut) {\n    var remaining = --this._remaining;\n\n    if (remaining === 0) {\n      var parentOut = this._parentOut;\n      if (parentOut === undefined) {\n        this._doFinish();\n      } else {\n        parentOut._handleChildDone(this);\n      }\n    } else {\n      if (childOut.___isLast) {\n        this._lastCount--;\n      }\n\n      if (remaining - this._lastCount === 0) {\n        this._emitLast();\n      }\n    }\n  },\n\n  _flushNext: function (currentWriter) {\n    // It is possible that currentWriter is the\n    // last writer in the chain, so let's make\n    // sure there is a nextWriter to flush.\n    var nextWriter = currentWriter.next;\n    if (nextWriter) {\n      // Flush the contents of nextWriter\n      // to the currentWriter\n      currentWriter.merge(nextWriter);\n\n      // Remove nextWriter from the chain.\n      // It has been flushed and can now be\n      // garbage collected.\n      currentWriter.next = nextWriter.next;\n\n      // It's possible that nextWriter is the last\n      // writer in the chain and its stream already\n      // ended, so let's make sure nextStream exists.\n      var nextStream = nextWriter.stream;\n      if (nextStream) {\n        // Point the nextStream to currentWriter\n        nextStream.writer = currentWriter;\n        currentWriter.stream = nextStream;\n      }\n    }\n  },\n\n  on: function (event, callback) {\n    var state = this._state;\n\n    if (event === \"finish\" && state.finished === true) {\n      callback(this.___getResult());\n    } else if (event === \"last\") {\n      this.onLast(callback);\n    } else {\n      state.events.on(event, callback);\n    }\n\n    return this;\n  },\n\n  once: function (event, callback) {\n    var state = this._state;\n\n    if (event === \"finish\" && state.finished === true) {\n      callback(this.___getResult());\n    } else if (event === \"last\") {\n      this.onLast(callback);\n    } else {\n      state.events.once(event, callback);\n    }\n\n    return this;\n  },\n\n  onLast: function (callback) {\n    var lastArray = this._last;\n\n    if (lastArray === undefined) {\n      this._last = [callback];\n    } else {\n      lastArray.push(callback);\n    }\n\n    return this;\n  },\n\n  _emitLast: function () {\n    if (this._last) {\n      var i = 0;\n      var lastArray = this._last;\n      this._last = undefined;\n      (function next() {\n        if (i === lastArray.length) {\n          return;\n        }\n        var lastCallback = lastArray[i++];\n        lastCallback(next);\n\n        if (lastCallback.length === 0) {\n          next();\n        }\n      })();\n    }\n  },\n\n  emit: function (type, arg) {\n    var events = this._state.events;\n    switch (arguments.length) {\n      case 1:\n        events.emit(type);\n        break;\n      case 2:\n        events.emit(type, arg);\n        break;\n      default:\n        events.emit.apply(events, arguments);\n        break;\n    }\n    return this;\n  },\n\n  removeListener: function () {\n    var events = this._state.events;\n    events.removeListener.apply(events, arguments);\n    return this;\n  },\n\n  prependListener: function () {\n    var events = this._state.events;\n    events.prependListener.apply(events, arguments);\n    return this;\n  },\n\n  pipe: function (stream) {\n    this._state.stream.pipe(stream);\n    return this;\n  },\n\n  error: function (e) {\n    var name = this.name;\n    var stack = this._stack;\n    if (stack) stack = getNonMarkoStack(stack);\n\n    if (!(e instanceof Error)) {\n      e = new Error(JSON.stringify(e));\n    }\n\n    if (name || stack) {\n      e.message +=\n        \"\\nRendered by\" +\n        (name ? \" \" + name : \"\") +\n        (stack ? \":\\n\" + stack : \"\");\n    }\n    try {\n      this.emit(\"error\", e);\n    } finally {\n      // If there is no listener for the error event then it will\n      // throw a new here. In order to ensure that the async fragment\n      // is still properly ended we need to put the end() in a `finally`\n      // block\n      this.end();\n    }\n\n    return this;\n  },\n\n  flush: function () {\n    var state = this._state;\n\n    if (!state.finished) {\n      var writer = state.writer;\n      if (writer && writer.scheduleFlush) {\n        writer.scheduleFlush();\n      }\n    }\n    return this;\n  },\n\n  createOut: function () {\n    var newOut = new AsyncStream(this.global);\n    // Forward error events to the parent out.\n    newOut.on(\"error\", this.emit.bind(this, \"error\"));\n    this._state.events.emit(\"beginDetachedAsync\", {\n      out: newOut,\n      parentOut: this,\n    });\n    return newOut;\n  },\n\n  ___elementDynamic: function (\n    tagName,\n    elementAttrs,\n    key,\n    componentDef,\n    props,\n  ) {\n    var str =\n      \"<\" +\n      tagName +\n      markoAttr(\n        this,\n        componentDef,\n        props,\n        key && key[0] === \"@\" ? key : undefined,\n      ) +\n      attrsHelper(elementAttrs);\n\n    if (selfClosingTags.voidElements.indexOf(tagName) !== -1) {\n      str += \">\";\n    } else if (selfClosingTags.svgElements.indexOf(tagName) !== -1) {\n      str += \"/>\";\n    } else {\n      str += \"></\" + tagName + \">\";\n    }\n\n    this.write(str);\n  },\n\n  element: function (tagName, elementAttrs, openTagOnly) {\n    var str = \"<\" + tagName + attrsHelper(elementAttrs) + \">\";\n\n    if (openTagOnly !== true) {\n      str += \"</\" + tagName + \">\";\n    }\n\n    this.write(str);\n  },\n\n  ___beginElementDynamic: function (\n    name,\n    elementAttrs,\n    key,\n    componentDef,\n    props,\n  ) {\n    var str =\n      \"<\" +\n      name +\n      markoAttr(this, componentDef, props, key) +\n      attrsHelper(elementAttrs) +\n      \">\";\n\n    this.write(str);\n\n    if (this._elStack) {\n      this._elStack.push(name);\n    } else {\n      this._elStack = [name];\n    }\n  },\n\n  beginElement: function (name, elementAttrs) {\n    var str = \"<\" + name + attrsHelper(elementAttrs) + \">\";\n\n    this.write(str);\n\n    if (this._elStack) {\n      this._elStack.push(name);\n    } else {\n      this._elStack = [name];\n    }\n  },\n\n  endElement: function () {\n    var tagName = this._elStack.pop();\n    this.write(\"</\" + tagName + \">\");\n  },\n\n  comment: function (str) {\n    this.write(\"<!--\" + escapeEndingComment(str) + \"-->\");\n  },\n\n  text: function (str) {\n    this.write(escapeXmlOrNullish(str));\n  },\n\n  bf: function (key, component, preserve) {\n    if (preserve) {\n      this.write(\"<!--F#\" + escapeXmlString(key) + \"-->\");\n    }\n    if (this._elStack) {\n      this._elStack.push(preserve);\n    } else {\n      this._elStack = [preserve];\n    }\n  },\n\n  ef: function () {\n    var preserve = this._elStack.pop();\n    if (preserve) {\n      this.write(\"<!--F/-->\");\n    }\n  },\n\n  ___getNode: function (host) {\n    var node = this._node;\n\n    if (!node) {\n      var nextEl;\n      var fragment;\n      var html = this.___getOutput();\n      if (!host) host = this.___host;\n      var doc = host.ownerDocument || host;\n\n      if (html) {\n        node = parseHTML(html);\n\n        if (node && node.nextSibling) {\n          // If there are multiple nodes, turn it into a document fragment.\n          fragment = doc.createDocumentFragment();\n\n          do {\n            nextEl = node.nextSibling;\n            fragment.appendChild(node);\n          } while ((node = nextEl));\n\n          node = fragment;\n        }\n      }\n\n      // if HTML is empty use empty document fragment (so that we're returning a valid DOM node)\n      this._node = node || doc.createDocumentFragment();\n    }\n    return node;\n  },\n\n  then: function (fn, fnErr) {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    var out = this;\n    return new Promise(function (resolve, reject) {\n      out.on(\"error\", reject);\n      out.on(\"finish\", function (result) {\n        resolve(result);\n      });\n    }).then(fn, fnErr);\n  },\n\n  catch: function (fnErr) {\n    return this.then(undefined, fnErr);\n  },\n\n  finally: function (fn) {\n    return this.then(undefined, undefined).finally(fn);\n  },\n\n  c: function (componentDef, key, customEvents) {\n    this.___assignedComponentDef = componentDef;\n    this.___assignedKey = key;\n    this.___assignedCustomEvents = customEvents;\n  },\n});\n\n// alias:\nproto.w = proto.write;\nproto.___endElement = proto.endElement;\n\nmodule.exports = AsyncStream;\n\nfunction getNonMarkoStack(error) {\n  return error.stack\n    .toString()\n    .split(\"\\n\")\n    .slice(1)\n    .filter((line) => !/\\/node_modules\\/marko\\//.test(line))\n    .join(\"\\n\");\n}\n\nfunction iteratorReturnFn(value) {\n  return Promise.resolve({\n    value,\n    done: true,\n  });\n}\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/html/BufferedWriter.js",
    "content": "\"use strict\";\n\nconst immediate = require(\"@internal/set-immediate\");\nconst setImmediate = immediate.___setImmediate;\nconst clearImmediate = immediate.___clearImmediate;\nconst StringWriter = require(\"./StringWriter\");\n\n/**\n * Simple wrapper that can be used to wrap a stream\n * to reduce the number of write calls. In Node.js world,\n * each stream.write() becomes a chunk. We can avoid overhead\n * by reducing the number of chunks by buffering the output.\n */\nfunction BufferedWriter(wrappedStream) {\n  StringWriter.call(this);\n  this._wrapped = wrappedStream;\n  this._scheduled = null;\n}\n\nBufferedWriter.prototype = Object.assign(\n  {\n    scheduleFlush() {\n      if (!this._scheduled) {\n        this._scheduled = setImmediate(flush.bind(0, this));\n      }\n    },\n\n    end: function () {\n      flush(this);\n      if (!this._wrapped.isTTY) {\n        this._wrapped.end();\n      }\n    },\n  },\n  StringWriter.prototype,\n);\n\nfunction flush(writer) {\n  const contents = writer.toString();\n  if (contents.length !== 0) {\n    writer._wrapped.write(contents);\n    writer.clear();\n    if (writer._wrapped.flush) {\n      writer._wrapped.flush();\n    }\n  }\n\n  clearImmediate(writer._scheduled);\n  writer._scheduled = null;\n}\n\nmodule.exports = BufferedWriter;\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/html/StringWriter.js",
    "content": "\"use strict\";\n\nvar attrAssignment = require(\"./helpers/attr\").a;\n\nfunction StringWriter() {\n  this._content = \"\";\n  this._scripts = \"\";\n  this._data = null;\n}\n\nStringWriter.prototype = {\n  write: function (str) {\n    this._content += str;\n  },\n\n  script: function (str) {\n    if (str) {\n      this._scripts += (this._scripts ? \";\" : \"\") + str;\n    }\n  },\n\n  get: function (key) {\n    const extra = (this._data = this._data || {});\n    return (extra[key] = extra[key] || []);\n  },\n\n  merge: function (otherWriter) {\n    this._content += otherWriter._content;\n\n    if (otherWriter._scripts) {\n      this._scripts = this._scripts\n        ? this._scripts + \";\" + otherWriter._scripts\n        : otherWriter._scripts;\n    }\n\n    if (otherWriter._data) {\n      if (this._data) {\n        for (const key in otherWriter._data) {\n          if (this._data[key]) {\n            this._data[key].push.apply(this._data[key], otherWriter._data[key]);\n          } else {\n            this._data[key] = this._writer[key];\n          }\n        }\n      } else {\n        this._data = otherWriter._data;\n      }\n    }\n  },\n\n  clear: function () {\n    this._content = \"\";\n    this._scripts = \"\";\n    this._data = null;\n  },\n\n  toString: function () {\n    this.state.events.emit(\"___toString\", this);\n    let str = this._content;\n    if (this._scripts) {\n      const cspNonce = this.state.root.global.cspNonce;\n      const nonceAttr = cspNonce ? \" nonce\" + attrAssignment(cspNonce) : \"\";\n      str += `<script${nonceAttr}>${this._scripts}</script>`;\n    }\n    return str;\n  },\n};\n\nmodule.exports = StringWriter;\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/html/get-render-id.js",
    "content": "module.exports = function getRenderId($global) {\n  if (!(\"renderId\" in $global)) {\n    $global.renderId =\n      $global.componentIdPrefix || $global.widgetIdPrefix || \"s\";\n\n    // eslint-disable-next-line no-constant-condition\n    if (\"MARKO_DEBUG\") {\n      if ($global.renderId !== \"s\") {\n        require(\"complain\")(\n          \"$global.componentIdPrefix and $global.widgetIdPrefix are deprecated. Use $global.renderId instead.\",\n          { location: false },\n        );\n      }\n    }\n  }\n\n  if ($global.renderId !== \"s\") {\n    return $global.renderId;\n  }\n};\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/html/helpers/_dynamic-attr.js",
    "content": "\"use strict\";\nvar attrHelper = require(\"./attr\");\nvar notEmptyAttr = attrHelper.___notEmptyAttr;\nvar isEmptyAttrValue = attrHelper.___isEmptyAttrValue;\nvar classHelper = require(\"./class-attr\");\nvar styleHelper = require(\"./style-attr\");\n\nmodule.exports = function dynamicAttr(name, value) {\n  switch (name) {\n    case \"class\":\n      return classHelper(value);\n    case \"style\":\n      return styleHelper(value);\n    case \"renderBody\":\n      return \"\";\n    default:\n      return isEmptyAttrValue(value) || isInvalidAttrName(name)\n        ? \"\"\n        : notEmptyAttr(name, value);\n  }\n};\n\n// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n// Technically the above includes more invalid characters for attributes.\n// In practice however the only character that does not become an attribute name\n// is when there is a >.\nfunction isInvalidAttrName(name) {\n  for (let i = name.length; i--; ) {\n    if (name[i] === \">\") {\n      return true;\n    }\n  }\n\n  return false;\n}\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/html/helpers/attr.js",
    "content": "\"use strict\";\n\n// eslint-disable-next-line no-constant-binary-expression\nvar complain = \"MARKO_DEBUG\" && require(\"complain\");\n\nmodule.exports = attr;\n\nattr.___notEmptyAttr = nonVoidAttr;\nattr.___isEmptyAttrValue = isVoid;\nattr.a = attrAssignment;\nattr.d = escapeDoubleQuotedAttrValue;\nattr.s = escapeSingleQuotedAttrValue;\n\nfunction attr(name, value) {\n  return isVoid(value) ? \"\" : nonVoidAttr(name, value);\n}\n\nfunction nonVoidAttr(name, value) {\n  switch (typeof value) {\n    case \"string\":\n      return \" \" + name + attrAssignment(value);\n    case \"boolean\":\n      return \" \" + name;\n    case \"number\":\n      return \" \" + name + \"=\" + value;\n    case \"object\":\n      switch (value.toString) {\n        case Object.prototype.toString:\n        case Array.prototype.toString:\n          // eslint-disable-next-line no-constant-condition\n          if (\"MARKO_DEBUG\") {\n            complain(\n              \"Relying on JSON.stringify for attribute values is deprecated, in future versions of Marko these will be cast to strings instead.\",\n              { locationIndex: 2 },\n            );\n          }\n\n          return (\n            \" \" +\n            name +\n            \"='\" +\n            escapeSingleQuotedAttrValue(JSON.stringify(value)) +\n            \"'\"\n          );\n        case RegExp.prototype.toString:\n          return \" \" + name + attrAssignment(value.source);\n      }\n  }\n\n  return \" \" + name + attrAssignment(value + \"\");\n}\n\nfunction isVoid(value) {\n  return value == null || value === false;\n}\n\nvar singleQuoteAttrReplacements = /'|&(?=#?\\w+;)/g;\nvar doubleQuoteAttrReplacements = /\"|&(?=#?\\w+;)/g;\nvar needsQuotedAttr = /[\"'>\\s]|&#?\\w+;|\\/$/g;\nfunction attrAssignment(value) {\n  return value\n    ? needsQuotedAttr.test(value)\n      ? value[needsQuotedAttr.lastIndex - 1] ===\n        ((needsQuotedAttr.lastIndex = 0), '\"')\n        ? \"='\" + escapeSingleQuotedAttrValue(value) + \"'\"\n        : '=\"' + escapeDoubleQuotedAttrValue(value) + '\"'\n      : \"=\" + value\n    : \"\";\n}\n\nfunction escapeSingleQuotedAttrValue(value) {\n  return singleQuoteAttrReplacements.test(value)\n    ? value.replace(\n        singleQuoteAttrReplacements,\n        replaceUnsafeSingleQuoteAttrChar,\n      )\n    : value;\n}\n\nfunction replaceUnsafeSingleQuoteAttrChar(match) {\n  return match === \"'\" ? \"&#39;\" : \"&amp;\";\n}\n\nfunction escapeDoubleQuotedAttrValue(value) {\n  return doubleQuoteAttrReplacements.test(value)\n    ? value.replace(\n        doubleQuoteAttrReplacements,\n        replaceUnsafeDoubleQuoteAttrChar,\n      )\n    : value;\n}\n\nfunction replaceUnsafeDoubleQuoteAttrChar(match) {\n  return match === '\"' ? \"&#34;\" : \"&amp;\";\n}\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/html/helpers/attrs.js",
    "content": "\"use strict\";\n\n// eslint-disable-next-line no-constant-binary-expression\nvar complain = \"MARKO_DEBUG\" && require(\"complain\");\nvar dynamicAttrHelper = require(\"./_dynamic-attr\");\n\nmodule.exports = function attrs(arg) {\n  switch (typeof arg) {\n    case \"object\":\n      var result = \"\";\n      for (var attrName in arg) {\n        result += dynamicAttrHelper(attrName, arg[attrName]);\n      }\n      return result;\n    case \"string\":\n      // eslint-disable-next-line no-constant-condition\n      if (\"MARKO_DEBUG\") {\n        complain(\n          \"Passing a string as a dynamic attribute value is deprecated - More details: https://github.com/marko-js/marko/wiki/Deprecation:-String-as-dynamic-attribute-value\",\n        );\n      }\n      return arg;\n    default:\n      return \"\";\n  }\n};\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/html/helpers/class-attr.js",
    "content": "\"use strict\";\n\nvar classHelper = require(\"../../helpers/class-value\");\nvar attr = require(\"./attr\");\n\nmodule.exports = function classAttr(value) {\n  return attr(\"class\", classHelper(value));\n};\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/html/helpers/data-marko.js",
    "content": "\"use strict\";\n\nvar attr = require(\"./attr\");\nvar escapeSingleQuotes = attr.s;\nvar escapeDoubleQuotes = attr.d;\nvar FLAG_WILL_RERENDER_IN_BROWSER = 1;\n// var FLAG_HAS_RENDER_BODY = 2;\n\nmodule.exports = function dataMarko(out, componentDef, props, key) {\n  var result = \"\";\n  var willNotRerender =\n    out.___components.___isPreserved ||\n    (componentDef.___renderBoundary &&\n      (componentDef.___flags & FLAG_WILL_RERENDER_IN_BROWSER) === 0);\n\n  if (willNotRerender) {\n    if (props) {\n      for (var _ in props) {\n        result +=\n          \" data-marko='\" + escapeSingleQuotes(JSON.stringify(props)) + \"'\";\n        break;\n      }\n    }\n\n    if (key) {\n      result +=\n        ' data-marko-key=\"' +\n        escapeDoubleQuotes(\n          componentDef.___nextKey(key) + \" \" + componentDef.id,\n        ) +\n        '\"';\n    }\n  }\n\n  return result;\n};\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/html/helpers/escape-script-placeholder.js",
    "content": "\"use strict\";\nconst unsafeCharsReg = /<\\/script/g;\nconst replaceMatch = () => \"\\\\x3C/script\";\nconst escape = (str) =>\n  unsafeCharsReg.test(str) ? str.replace(unsafeCharsReg, replaceMatch) : str;\n\n/**\n * Escapes the '</' sequence in the body of a <script> body to avoid the `<script>` being\n * ended prematurely.\n *\n * For example:\n * var evil = {\n * \tname:  '</script><script>alert(1)</script>'\n * };\n *\n * <script>var foo = ${JSON.stringify(evil)}</script>\n *\n * Without escaping the ending '</script>' sequence the opening <script> tag would be\n * prematurely ended and a new script tag could then be started that could then execute\n * arbitrary code.\n */\nmodule.exports = function escapeScriptHelper(value) {\n  return escape(value + \"\");\n};\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/html/helpers/escape-style-placeholder.js",
    "content": "\"use strict\";\nconst unsafeCharsReg = /<\\/style/g;\nconst replaceMatch = () => \"\\\\3C/style\";\nconst escape = (str) =>\n  unsafeCharsReg.test(str) ? str.replace(unsafeCharsReg, replaceMatch) : str;\n\n/**\n * Escapes the '</' sequence in the body of a <style> body to avoid the `<style>` being\n * ended prematurely.\n *\n * For example:\n * var color = '</style><script>alert(1)</script>';\n *\n * <style>#foo { background-color:${color} }</style>\n *\n * Without escaping the ending '</style>' sequence the opening <style> tag would be\n * prematurely ended and a script tag could then be started that could then execute\n * arbitrary code.\n */\nmodule.exports = function escapeScriptHelper(value) {\n  return escape(value + \"\");\n};\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/html/helpers/escape-xml.js",
    "content": "\"use strict\";\nconst unsafeCharsRegExp = /[<&]/g;\nconst replaceMatch = (c) => (c === \"&\" ? \"&amp;\" : \"&lt;\");\nconst escape = (str) =>\n  unsafeCharsRegExp.test(str)\n    ? str.replace(unsafeCharsRegExp, replaceMatch)\n    : str;\n\nmodule.exports.x = function (value) {\n  if (value == null) {\n    return \"\";\n  }\n\n  if (value.toHTML) {\n    return value.toHTML();\n  }\n\n  return escape(value + \"\");\n};\n\nexports.___escapeXML = escape;\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/html/helpers/merge-attrs.js",
    "content": "\"use strict\";\n\n// eslint-disable-next-line no-constant-binary-expression\nvar complain = \"MARKO_DEBUG\" && require(\"complain\");\nvar dynamicAttrHelper = require(\"./_dynamic-attr\");\n\n/**\n * Merges attribute objects into a string.\n */\nmodule.exports = function mergeAttrs() {\n  var i = arguments.length;\n  var last = arguments[--i];\n  var seen = new Set();\n  var result = \"\";\n  var attrName;\n\n  if (typeof last === \"string\") {\n    // eslint-disable-next-line no-constant-condition\n    if (\"MARKO_DEBUG\") {\n      complain(\n        \"Passing a string as dynamic attributes ('<div ${string}>' or '<div ...string>') is deprecated, use an object instead.\",\n      );\n    }\n\n    result += last[0] === \" \" ? last : \" \" + last;\n  } else {\n    for (attrName in last) {\n      result += dynamicAttrHelper(attrName, last[attrName]);\n      seen.add(attrName);\n    }\n  }\n\n  while (i) {\n    var arg = arguments[--i];\n    if (typeof arg === \"string\") {\n      // eslint-disable-next-line no-constant-condition\n      if (\"MARKO_DEBUG\") {\n        complain(\n          \"Passing a string as dynamic attributes ('<div ${string}>' or '<div ...string>') is deprecated, use an object instead.\",\n        );\n      }\n\n      result += arg[0] === \" \" ? arg : \" \" + arg;\n    } else {\n      for (attrName in arg) {\n        if (!seen.has(attrName)) {\n          result += dynamicAttrHelper(attrName, arg[attrName]);\n          seen.add(attrName);\n        }\n      }\n    }\n  }\n\n  return result;\n};\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/html/helpers/props-script.js",
    "content": "\"use strict\";\n\nvar attrAssignment = require(\"./attr\").a;\nvar escapeScript = require(\"./escape-script-placeholder\");\nvar assignPropsFunction = `\n    function ap_(p) {\n        var s = document.currentScript;\n        var ps = s.previousSibling;\n        for (var k in p) ps[k] = p[k];\n        s.parentNode.removeChild(s);\n    }\n`\n  .replace(/\\s+/g, \" \")\n  .replace(/([\\W]) (.)/g, \"$1$2\")\n  .replace(/(.) ([\\W])/g, \"$1$2\")\n  .trim();\n\nmodule.exports = function propsForPreviousNode(props, out) {\n  var cspNonce = out.global.cspNonce;\n  var nonceAttr = cspNonce ? \" nonce\" + attrAssignment(cspNonce) : \"\";\n\n  out.w(\"<script\" + nonceAttr + \">\");\n\n  if (!out.global.assignPropsFunction) {\n    out.w(assignPropsFunction);\n    out.global.assignPropsFunction = true;\n  }\n\n  out.w(\"ap_(\" + escapeScript(JSON.stringify(props)) + \");</script>\");\n};\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/html/helpers/style-attr.js",
    "content": "\"use strict\";\n\nvar styleHelper = require(\"../../helpers/style-value\");\nvar attr = require(\"./attr\");\n\nmodule.exports = function styleAttr(value) {\n  return attr(\"style\", styleHelper(value));\n};\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/html/hot-reload.js",
    "content": "var runtime = require(\".\");\nvar createTemplate = runtime.t;\nvar registered = {};\n\nexports.t = runtime.t = function (typeName) {\n  if (registered[typeName]) {\n    return registered[typeName];\n  }\n\n  var renderFn;\n  var template = (registered[typeName] = createTemplate(typeName));\n  Object.defineProperty(template, \"_\", {\n    get: function () {\n      return renderFn && proxyRenderFn;\n    },\n    set: function (v) {\n      renderFn = v;\n    },\n  });\n\n  return template;\n\n  function proxyRenderFn() {\n    return renderFn.apply(this, arguments);\n  }\n};\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/html/index.js",
    "content": "\"use strict\";\n\nrequire(\"./marko-namespace\");\n\n/**\n * Method is for internal usage only. This method\n * is invoked by code in a compiled Marko template and\n * it is used to create a new Template instance.\n * @private\n */\nexports.t = function createTemplate(typeName) {\n  return new Template(typeName);\n};\n\nfunction Template(typeName) {\n  this.path = this.___typeName = typeName;\n}\n\nTemplate.prototype.stream = require(\"@internal/create-readable\");\n\nvar AsyncStream = require(\"./AsyncStream\");\nrequire(\"../createOut\").___setCreateOut(\n  (Template.prototype.createOut = function createOut(\n    globalData,\n    writer,\n    parentOut,\n    buffer,\n  ) {\n    return new AsyncStream(globalData, writer, parentOut, buffer);\n  }),\n);\n\nrequire(\"../renderable\")(Template.prototype);\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/html/marko-namespace.js",
    "content": "globalThis.Marko = {\n  Component: function () {},\n};\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/renderable.js",
    "content": "\"use strict\";\n\nvar extend = require(\"raptor-util/extend\");\nvar setImmediate = require(\"@internal/set-immediate\").___setImmediate;\nvar defaultCreateOut = require(\"./createOut\");\n\nfunction safeRender(renderFunc, finalData, finalOut, shouldEnd) {\n  try {\n    renderFunc(finalData, finalOut);\n\n    if (shouldEnd) {\n      finalOut.end();\n    }\n  } catch (err) {\n    var actualEnd = finalOut.end;\n    finalOut.end = function () {};\n\n    setImmediate(function () {\n      finalOut.end = actualEnd;\n      finalOut.error(err);\n    });\n  }\n  return finalOut;\n}\n\nmodule.exports = function (target, renderer) {\n  var renderFunc =\n    renderer && (renderer.renderer || renderer.render || renderer);\n  var createOut = target.createOut || renderer.createOut || defaultCreateOut;\n\n  return extend(target, {\n    _: renderFunc,\n    createOut: createOut,\n\n    renderToString: function (data, callback) {\n      var localData = data || {};\n      var render = renderFunc || this._;\n      var globalData = localData.$global;\n      var out = createOut(globalData);\n\n      out.global.template = this;\n\n      if (globalData) {\n        localData.$global = undefined;\n      }\n\n      if (callback) {\n        out\n          .on(\"finish\", function () {\n            callback(null, out.toString(), out);\n          })\n          .once(\"error\", callback);\n\n        return safeRender(render, localData, out, true);\n      } else {\n        out.sync();\n        render(localData, out);\n        return out.toString();\n      }\n    },\n\n    renderSync: function (data) {\n      var localData = data || {};\n      var render = renderFunc || this._;\n      var globalData = localData.$global;\n      var out = createOut(globalData);\n      out.sync();\n\n      out.global.template = this;\n\n      if (globalData) {\n        localData.$global = undefined;\n      }\n\n      render(localData, out);\n      return out.___getResult();\n    },\n\n    /**\n     * Renders a template to nodes and inserts them into the DOM relative\n     * to the provided reference based on the optional position parameter.\n     *\n     * Supported signatures:\n     *\n     * mount(data, reference)\n     * mount(data, reference, position)\n     *\n     * @param  {Object} data The view model data for the template\n     * @param  {Node} reference DOM node to insert the rendered node(s) relative to\n     * @param  {string} [position] A string representing the position relative to the `reference`; must match (case-insensitively) one of the following strings:\n     *  'beforebegin': Before the targetElement itself.\n     *  'afterbegin': Just inside the targetElement, before its first child.\n     *  'beforeend': Just inside the targetElement, after its last child.\n     *  'afterend': After the targetElement itself.\n     * @return {TemplateInstance} Object with `update` and `dispose` methods\n     */\n    mount: function (data, reference, position) {\n      const result = this.renderSync(data);\n\n      switch (position) {\n        case \"afterbegin\":\n          result.prependTo(reference);\n          break;\n        case \"afterend\":\n          result.insertAfter(reference);\n          break;\n        case \"beforebegin\":\n          result.insertBefore(reference);\n          break;\n        default:\n          result.appendTo(reference);\n          break;\n      }\n\n      const component = result.getComponent();\n\n      return {\n        update(input) {\n          component.input = input;\n          component.update();\n        },\n        destroy() {\n          component.destroy();\n        },\n      };\n    },\n\n    /**\n     * Renders a template to either a stream (if the last\n     * argument is a Stream instance) or\n     * provides the output to a callback function (if the last\n     * argument is a Function).\n     *\n     * Supported signatures:\n     *\n     * render(data)\n     * render(data, out)\n     * render(data, stream)\n     * render(data, callback)\n     *\n     * @param  {Object} data The view model data for the template\n     * @param  {AsyncStream/AsyncVDOMBuilder} out A Stream, an AsyncStream/AsyncVDOMBuilder instance, or a callback function\n     * @return {AsyncStream/AsyncVDOMBuilder} Returns the AsyncStream/AsyncVDOMBuilder instance that the template is rendered to\n     */\n    render: function (data, out) {\n      var callback;\n      var finalOut;\n      var finalData;\n      var globalData;\n      var render = renderFunc || this._;\n      var shouldBuffer = this.___shouldBuffer;\n      var shouldEnd = true;\n\n      if (data) {\n        finalData = data;\n        if ((globalData = data.$global)) {\n          finalData.$global = undefined;\n        }\n      } else {\n        finalData = {};\n      }\n\n      if (out && out.___isOut) {\n        finalOut = out;\n        shouldEnd = false;\n        extend(out.global, globalData);\n      } else if (typeof out == \"function\") {\n        finalOut = createOut(globalData);\n        callback = out;\n      } else {\n        finalOut = createOut(\n          globalData, // global\n          out, // writer(AsyncStream) or parentNode(AsyncVDOMBuilder)\n          undefined, // parentOut\n          shouldBuffer, // ignored by AsyncVDOMBuilder\n        );\n      }\n\n      if (callback) {\n        finalOut\n          .on(\"finish\", function () {\n            callback(null, finalOut.___getResult(), finalOut);\n          })\n          .once(\"error\", callback);\n      }\n\n      globalData = finalOut.global;\n\n      globalData.template = globalData.template || this;\n\n      return safeRender(render, finalData, finalOut, shouldEnd);\n    },\n  });\n};\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/vdom/AsyncVDOMBuilder.js",
    "content": "var EventEmitter = require(\"events-light\");\nvar RenderResult = require(\"../RenderResult\");\nvar attrsHelper = require(\"./helpers/attrs\");\nvar morphdom = require(\"./morphdom\");\nvar vdom = require(\"./vdom\");\nvar VElement = vdom.___VElement;\nvar VComment = vdom.___VComment;\nvar VDocumentFragment = vdom.___VDocumentFragment;\nvar VText = vdom.___VText;\nvar VComponent = vdom.___VComponent;\nvar VFragment = vdom.___VFragment;\nvar virtualizeHTML = vdom.___virtualizeHTML;\n\nvar EVENT_UPDATE = \"update\";\nvar EVENT_FINISH = \"finish\";\n\nfunction State(tree) {\n  this.___events = new EventEmitter();\n  this.___tree = tree;\n  this.___finished = false;\n}\n\nfunction AsyncVDOMBuilder(globalData, parentNode, parentOut) {\n  if (!parentNode) {\n    parentNode = new VDocumentFragment();\n  }\n\n  var state;\n\n  if (parentOut) {\n    state = parentOut.___state;\n  } else {\n    state = new State(parentNode);\n  }\n\n  this.___remaining = 1;\n  this.___lastCount = 0;\n  this.___last = null;\n  this.___parentOut = parentOut;\n\n  this.data = {};\n  this.___state = state;\n  this.___parent = parentNode;\n  this.global = globalData || {};\n  this.___stack = [parentNode];\n  this.___sync = false;\n  this.___vnode = undefined;\n  this.___components = null;\n\n  this.___assignedComponentDef = null;\n  this.___assignedKey = null;\n  this.___assignedCustomEvents = null;\n}\n\nvar proto = (AsyncVDOMBuilder.prototype = {\n  ___isOut: true,\n  ___host: typeof document === \"object\" && document,\n\n  bc: function (component, key, ownerComponent) {\n    var vComponent = new VComponent(component, key, ownerComponent);\n    return this.___beginNode(vComponent, 0, true);\n  },\n\n  ___preserveComponent: function (component, key, ownerComponent) {\n    var vComponent = new VComponent(component, key, ownerComponent, true);\n    this.___beginNode(vComponent, 0);\n  },\n\n  ___beginNode: function (child, childCount, pushToStack) {\n    this.___parent.___appendChild(child);\n    if (pushToStack === true) {\n      this.___stack.push(child);\n      this.___parent = child;\n    }\n    return childCount === 0 ? this : child;\n  },\n\n  element: function (tagName, attrs, key, component, childCount, flags, props) {\n    var element = new VElement(\n      tagName,\n      attrs,\n      key,\n      component,\n      childCount,\n      flags,\n      props,\n    );\n    return this.___beginNode(element, childCount);\n  },\n\n  ___elementDynamic: function (tagName, attrs, key, componentDef, props) {\n    return this.element(\n      tagName,\n      attrsHelper(attrs),\n      key,\n      componentDef.___component,\n      0,\n      0,\n      props,\n    );\n  },\n\n  n: function (node, component) {\n    // NOTE: We do a shallow clone since we assume the node is being reused\n    //       and a node can only have one parent node.\n    var clone = node.___cloneNode();\n    this.node(clone);\n    clone.___ownerComponent = component;\n\n    return this;\n  },\n\n  node: function (node) {\n    this.___parent.___appendChild(node);\n    return this;\n  },\n\n  text: function (text, ownerComponent) {\n    var type = typeof text;\n\n    if (type != \"string\") {\n      if (text == null) {\n        return;\n      } else if (type === \"object\") {\n        if (text.toHTML) {\n          return this.h(text.toHTML(), ownerComponent);\n        }\n      }\n\n      text = text.toString();\n    }\n\n    this.___parent.___appendChild(new VText(text, ownerComponent));\n    return this;\n  },\n\n  comment: function (comment, ownerComponent) {\n    return this.node(new VComment(comment, ownerComponent));\n  },\n\n  html: function (html, ownerComponent) {\n    if (html != null) {\n      var vdomNode = virtualizeHTML(html, ownerComponent);\n      this.node(vdomNode);\n    }\n\n    return this;\n  },\n\n  beginElement: function (\n    tagName,\n    attrs,\n    key,\n    component,\n    childCount,\n    flags,\n    props,\n  ) {\n    var element = new VElement(\n      tagName,\n      attrs,\n      key,\n      component,\n      childCount,\n      flags,\n      props,\n    );\n    this.___beginNode(element, childCount, true);\n    return this;\n  },\n\n  ___beginElementDynamic: function (tagName, attrs, key, componentDef, props) {\n    return this.beginElement(\n      tagName,\n      attrsHelper(attrs),\n      key,\n      componentDef.___component,\n      0,\n      0,\n      props,\n    );\n  },\n\n  bf: function (key, component, preserve) {\n    var fragment = new VFragment(key, component, preserve);\n    this.___beginNode(fragment, null, true);\n    return this;\n  },\n\n  ef: function () {\n    this.endElement();\n  },\n\n  endElement: function () {\n    var stack = this.___stack;\n    stack.pop();\n    this.___parent = stack[stack.length - 1];\n  },\n\n  end: function () {\n    this.___parent = undefined;\n\n    var remaining = --this.___remaining;\n    var parentOut = this.___parentOut;\n\n    if (remaining === 0) {\n      if (parentOut) {\n        parentOut.___handleChildDone();\n      } else {\n        this.___doFinish();\n      }\n    } else if (remaining - this.___lastCount === 0) {\n      this.___emitLast();\n    }\n\n    return this;\n  },\n\n  ___handleChildDone: function () {\n    var remaining = --this.___remaining;\n\n    if (remaining === 0) {\n      var parentOut = this.___parentOut;\n      if (parentOut) {\n        parentOut.___handleChildDone();\n      } else {\n        this.___doFinish();\n      }\n    } else if (remaining - this.___lastCount === 0) {\n      this.___emitLast();\n    }\n  },\n\n  ___doFinish: function () {\n    var state = this.___state;\n    state.___finished = true;\n    state.___events.emit(EVENT_FINISH, this.___getResult());\n  },\n\n  ___emitLast: function () {\n    var lastArray = this._last;\n\n    var i = 0;\n\n    function next() {\n      if (i === lastArray.length) {\n        return;\n      }\n      var lastCallback = lastArray[i++];\n      lastCallback(next);\n\n      if (!lastCallback.length) {\n        next();\n      }\n    }\n\n    next();\n  },\n\n  error: function (e) {\n    try {\n      this.emit(\"error\", e);\n    } finally {\n      // If there is no listener for the error event then it will\n      // throw a new Error here. In order to ensure that the async fragment\n      // is still properly ended we need to put the end() in a `finally`\n      // block\n      this.end();\n    }\n\n    return this;\n  },\n\n  beginAsync: function (options) {\n    if (this.___sync) {\n      throw Error(\n        \"Tried to render async while in sync mode. Note: Client side await is not currently supported in re-renders (Issue: #942).\",\n      );\n    }\n\n    var state = this.___state;\n\n    if (options) {\n      if (options.last) {\n        this.___lastCount++;\n      }\n    }\n\n    this.___remaining++;\n\n    var documentFragment = this.___parent.___appendDocumentFragment();\n    var asyncOut = new AsyncVDOMBuilder(this.global, documentFragment, this);\n\n    state.___events.emit(\"beginAsync\", {\n      out: asyncOut,\n      parentOut: this,\n    });\n\n    return asyncOut;\n  },\n\n  createOut: function () {\n    return new AsyncVDOMBuilder(this.global);\n  },\n\n  flush: function () {\n    var events = this.___state.___events;\n\n    if (events.listenerCount(EVENT_UPDATE)) {\n      events.emit(EVENT_UPDATE, new RenderResult(this));\n    }\n  },\n\n  ___getOutput: function () {\n    return this.___state.___tree;\n  },\n\n  ___getResult: function () {\n    return this.___result || (this.___result = new RenderResult(this));\n  },\n\n  on: function (event, callback) {\n    var state = this.___state;\n\n    if (event === EVENT_FINISH && state.___finished) {\n      callback(this.___getResult());\n    } else if (event === \"last\") {\n      this.onLast(callback);\n    } else {\n      state.___events.on(event, callback);\n    }\n\n    return this;\n  },\n\n  once: function (event, callback) {\n    var state = this.___state;\n\n    if (event === EVENT_FINISH && state.___finished) {\n      callback(this.___getResult());\n    } else if (event === \"last\") {\n      this.onLast(callback);\n    } else {\n      state.___events.once(event, callback);\n    }\n\n    return this;\n  },\n\n  emit: function (type, arg) {\n    var events = this.___state.___events;\n    switch (arguments.length) {\n      case 1:\n        events.emit(type);\n        break;\n      case 2:\n        events.emit(type, arg);\n        break;\n      default:\n        events.emit.apply(events, arguments);\n        break;\n    }\n    return this;\n  },\n\n  removeListener: function () {\n    var events = this.___state.___events;\n    events.removeListener.apply(events, arguments);\n    return this;\n  },\n\n  sync: function () {\n    this.___sync = true;\n  },\n\n  isSync: function () {\n    return this.___sync;\n  },\n\n  onLast: function (callback) {\n    var lastArray = this._last;\n\n    if (lastArray === undefined) {\n      this._last = [callback];\n    } else {\n      lastArray.push(callback);\n    }\n\n    return this;\n  },\n\n  ___getNode: function (host) {\n    var node = this.___vnode;\n    if (!node) {\n      var vdomTree = this.___getOutput();\n\n      if (!host) host = this.___host;\n      this.___vnode = node = vdomTree.___actualize(host, null);\n      morphdom(node, vdomTree, host, this.___components);\n    }\n    return node;\n  },\n\n  toString: function (host) {\n    var docFragment = this.___getNode(host);\n    var html = \"\";\n\n    var child = docFragment.firstChild;\n    while (child) {\n      var nextSibling = child.nextSibling;\n      if (child.nodeType != 1) {\n        var container = docFragment.ownerDocument.createElement(\"div\");\n        container.appendChild(child.cloneNode());\n        html += container.innerHTML;\n      } else {\n        html += child.outerHTML;\n      }\n\n      child = nextSibling;\n    }\n\n    return html;\n  },\n\n  then: function (fn, fnErr) {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    var out = this;\n    var promise = new Promise(function (resolve, reject) {\n      out.on(\"error\", reject).on(EVENT_FINISH, function (result) {\n        resolve(result);\n      });\n    });\n\n    return Promise.resolve(promise).then(fn, fnErr);\n  },\n\n  catch: function (fnErr) {\n    return this.then(undefined, fnErr);\n  },\n\n  isVDOM: true,\n\n  c: function (componentDef, key, customEvents) {\n    this.___assignedComponentDef = componentDef;\n    this.___assignedKey = key;\n    this.___assignedCustomEvents = customEvents;\n  },\n});\n\nproto.e = proto.element;\nproto.be = proto.beginElement;\nproto.ee = proto.___endElement = proto.endElement;\nproto.t = proto.text;\nproto.h = proto.w = proto.write = proto.html;\n\nmodule.exports = AsyncVDOMBuilder;\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/vdom/VComment.js",
    "content": "var VNode = require(\"./VNode\");\nvar inherit = require(\"raptor-util/inherit\");\n\nfunction VComment(value, ownerComponent) {\n  this.___VNode(-1 /* no children */, ownerComponent);\n  this.___nodeValue = value;\n}\n\nVComment.prototype = {\n  ___nodeType: 8,\n\n  ___actualize: function (host) {\n    var nodeValue = this.___nodeValue;\n    return (host.ownerDocument || host).createComment(nodeValue);\n  },\n\n  ___cloneNode: function () {\n    return new VComment(this.___nodeValue);\n  },\n};\n\ninherit(VComment, VNode);\n\nmodule.exports = VComment;\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/vdom/VComponent.js",
    "content": "var inherit = require(\"raptor-util/inherit\");\nvar VNode = require(\"./VNode\");\n\nfunction VComponent(component, key, ownerComponent, preserve) {\n  this.___VNode(null /* childCount */, ownerComponent);\n  this.___key = key;\n  this.___component = component;\n  this.___preserve = preserve;\n}\n\nVComponent.prototype = {\n  ___nodeType: 2,\n};\n\ninherit(VComponent, VNode);\n\nmodule.exports = VComponent;\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/vdom/VDocumentFragment.js",
    "content": "var extend = require(\"raptor-util/extend\");\nvar inherit = require(\"raptor-util/inherit\");\nvar VNode = require(\"./VNode\");\n\nfunction VDocumentFragmentClone(other) {\n  extend(this, other);\n  this.___parentNode = null;\n  this.___nextSiblingInternal = null;\n}\n\nfunction VDocumentFragment(out) {\n  this.___VNode(null /* childCount */);\n  this.___out = out;\n}\n\nVDocumentFragment.prototype = {\n  ___nodeType: 11,\n\n  ___DocumentFragment: true,\n\n  ___cloneNode: function () {\n    return new VDocumentFragmentClone(this);\n  },\n\n  ___actualize: function (host) {\n    return (host.ownerDocument || host).createDocumentFragment();\n  },\n};\n\ninherit(VDocumentFragment, VNode);\n\nVDocumentFragmentClone.prototype = VDocumentFragment.prototype;\n\nmodule.exports = VDocumentFragment;\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/vdom/VElement.js",
    "content": "// eslint-disable-next-line no-constant-binary-expression\nvar complain = \"MARKO_DEBUG\" && require(\"complain\");\nvar inherit = require(\"raptor-util/inherit\");\nvar componentsUtil = require(\"@internal/components-util\");\nvar domData = require(\"../components/dom-data\");\nvar vElementByDOMNode = domData.___vElementByDOMNode;\nvar VNode = require(\"./VNode\");\nvar isTextOnly = require(\"./is-text-only\");\nvar ATTR_XLINK_HREF = \"xlink:href\";\nvar xmlnsRegExp = /^xmlns(:|$)/;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar NS_XLINK = \"http://www.w3.org/1999/xlink\";\nvar NS_HTML = \"http://www.w3.org/1999/xhtml\";\nvar NS_MATH = \"http://www.w3.org/1998/Math/MathML\";\nvar NS_SVG = \"http://www.w3.org/2000/svg\";\nvar DEFAULT_NS = {\n  svg: NS_SVG,\n  math: NS_MATH,\n};\n\nvar FLAG_SIMPLE_ATTRS = 1;\nvar FLAG_CUSTOM_ELEMENT = 2;\nvar FLAG_SPREAD_ATTRS = 4;\n\nvar ATTR_HREF = \"href\";\nvar EMPTY_OBJECT = Object.freeze(Object.create(null));\nvar specialElHandlers = {\n  option: {\n    selected: function (fromEl, value) {\n      fromEl.selected = value !== undefined;\n    },\n  },\n  input: {\n    value: function (fromEl, value) {\n      fromEl.value = value === undefined ? \"\" : value;\n    },\n    checked: function (fromEl, value) {\n      fromEl.checked = value !== undefined;\n    },\n  },\n};\n\nfunction normalizeValue(value) {\n  if (value === true) {\n    return \"\";\n  }\n\n  if (value == null || value === false) {\n    return;\n  }\n\n  switch (typeof value) {\n    case \"string\":\n      return value;\n    case \"object\":\n      switch (value.toString) {\n        case Object.prototype.toString:\n        case Array.prototype.toString:\n          // eslint-disable-next-line no-constant-condition\n          if (\"MARKO_DEBUG\") {\n            complain(\n              \"Relying on JSON.stringify for attribute values is deprecated, in future versions of Marko these will be cast to strings instead.\",\n            );\n          }\n          return JSON.stringify(value);\n        case RegExp.prototype.toString:\n          return value.source;\n      }\n      break;\n  }\n\n  return value + \"\";\n}\n\nfunction assign(a, b) {\n  for (var key in b) {\n    if (hasOwnProperty.call(b, key)) {\n      a[key] = b[key];\n    }\n  }\n}\n\nfunction VElementClone(other) {\n  this.___firstChildInternal = other.___firstChildInternal;\n  this.___parentNode = null;\n  this.___nextSiblingInternal = null;\n\n  this.___key = other.___key;\n  this.___attributes = other.___attributes;\n  this.___properties = other.___properties;\n  this.___nodeName = other.___nodeName;\n  this.___flags = other.___flags;\n  this.___textContent = other.___textContent;\n  this.___constId = other.___constId;\n}\n\nfunction VElement(\n  tagName,\n  attrs,\n  key,\n  ownerComponent,\n  childCount,\n  flags,\n  props,\n) {\n  this.___VNode(childCount, ownerComponent);\n\n  var constId;\n\n  if (props) {\n    constId = props.i;\n  }\n\n  this.___key = key;\n  this.___flags = flags || 0;\n  this.___attributes = attrs || EMPTY_OBJECT;\n  this.___properties = props || EMPTY_OBJECT;\n  this.___nodeName = tagName;\n  this.___textContent = \"\";\n  this.___constId = constId;\n  this.___preserve = false;\n  this.___preserveBody = false;\n}\n\nVElement.prototype = {\n  ___nodeType: 1,\n\n  ___cloneNode: function () {\n    return new VElementClone(this);\n  },\n\n  /**\n   * Shorthand method for creating and appending an HTML element\n   *\n   * @param  {String} tagName    The tag name (e.g. \"div\")\n   * @param  {int|null} attrCount  The number of attributes (or `null` if not known)\n   * @param  {int|null} childCount The number of child nodes (or `null` if not known)\n   */\n  e: function (tagName, attrs, key, ownerComponent, childCount, flags, props) {\n    var child = this.___appendChild(\n      new VElement(\n        tagName,\n        attrs,\n        key,\n        ownerComponent,\n        childCount,\n        flags,\n        props,\n      ),\n    );\n\n    if (childCount === 0) {\n      return this.___finishChild();\n    } else {\n      return child;\n    }\n  },\n\n  /**\n   * Shorthand method for creating and appending a static node. The provided node is automatically cloned\n   * using a shallow clone since it will be mutated as a result of setting `nextSibling` and `parentNode`.\n   *\n   * @param  {String} value The value for the new Comment node\n   */\n  n: function (node, ownerComponent) {\n    node = node.___cloneNode();\n    node.___ownerComponent = ownerComponent;\n    this.___appendChild(node);\n    return this.___finishChild();\n  },\n\n  ___actualize: function (host, parentNamespaceURI) {\n    var tagName = this.___nodeName;\n    var attributes = this.___attributes;\n    var namespaceURI = DEFAULT_NS[tagName] || parentNamespaceURI || NS_HTML;\n\n    var flags = this.___flags;\n    var el = (host.ownerDocument || host).createElementNS(\n      namespaceURI,\n      tagName,\n    );\n\n    if (flags & FLAG_CUSTOM_ELEMENT) {\n      assign(el, attributes);\n    } else {\n      for (var attrName in attributes) {\n        var attrValue = normalizeValue(attributes[attrName]);\n\n        if (attrValue !== undefined) {\n          if (attrName == ATTR_XLINK_HREF) {\n            el.setAttributeNS(NS_XLINK, ATTR_HREF, attrValue);\n          } else {\n            el.setAttribute(attrName, attrValue);\n          }\n        }\n      }\n\n      if (isTextOnly(tagName)) {\n        el.textContent = this.___textContent;\n      }\n    }\n\n    vElementByDOMNode.set(el, this);\n\n    return el;\n  },\n};\n\ninherit(VElement, VNode);\n\nVElementClone.prototype = VElement.prototype;\n\nfunction virtualizeElement(node, virtualizeChildNodes, ownerComponent) {\n  var attributes = node.attributes;\n  var attrCount = attributes.length;\n\n  var attrs = null;\n  var props = null;\n\n  if (attrCount) {\n    attrs = {};\n    for (var i = 0; i < attrCount; i++) {\n      var attr = attributes[i];\n      var attrName = attr.name;\n      if (!xmlnsRegExp.test(attrName)) {\n        if (attrName === \"data-marko\") {\n          props = componentsUtil.___getMarkoPropsFromEl(node);\n        } else if (attr.namespaceURI === NS_XLINK) {\n          attrs[ATTR_XLINK_HREF] = attr.value;\n        } else {\n          attrs[attrName] = attr.value;\n        }\n      }\n    }\n  }\n\n  var tagName = node.nodeName;\n\n  if (node.namespaceURI === NS_HTML) {\n    tagName = tagName.toLowerCase();\n  }\n\n  var vdomEl = new VElement(\n    tagName,\n    attrs,\n    null /*key*/,\n    ownerComponent,\n    0 /*child count*/,\n    0 /*flags*/,\n    props,\n  );\n\n  if (isTextOnly(tagName)) {\n    vdomEl.___textContent = node.textContent;\n  } else if (virtualizeChildNodes) {\n    virtualizeChildNodes(node, vdomEl, ownerComponent);\n  }\n\n  return vdomEl;\n}\n\nVElement.___virtualize = virtualizeElement;\n\nVElement.___morphAttrs = function (fromEl, vFromEl, toEl) {\n  var fromFlags = vFromEl.___flags;\n  var toFlags = toEl.___flags;\n  var attrs = toEl.___attributes;\n\n  if (toFlags & FLAG_CUSTOM_ELEMENT) {\n    return assign(fromEl, attrs);\n  }\n\n  var props = toEl.___properties;\n  var attrName;\n\n  // We use expando properties to associate the previous HTML\n  // attributes provided as part of the VDOM node with the\n  // real VElement DOM node. When diffing attributes,\n  // we only use our internal representation of the attributes.\n  // When diffing for the first time it's possible that the\n  // real VElement node will not have the expando property\n  // so we build the attribute map from the expando property\n\n  var oldAttrs = vFromEl.___attributes;\n\n  if (oldAttrs === attrs) {\n    // For constant attributes the same object will be provided\n    // every render and we can use that to our advantage to\n    // not waste time diffing a constant, immutable attribute\n    // map.\n    return;\n  }\n\n  var attrValue;\n\n  if (toFlags & FLAG_SIMPLE_ATTRS && fromFlags & FLAG_SIMPLE_ATTRS) {\n    if (oldAttrs[\"class\"] !== (attrValue = attrs[\"class\"])) {\n      if (attrValue) {\n        fromEl.className = attrValue;\n      } else {\n        fromEl.removeAttribute(\"class\");\n      }\n    }\n    if (oldAttrs.id !== (attrValue = attrs.id)) {\n      if (attrValue) {\n        fromEl.id = attrValue;\n      } else {\n        fromEl.removeAttribute(\"id\");\n      }\n    }\n    if (oldAttrs.style !== (attrValue = attrs.style)) {\n      if (attrValue) {\n        fromEl.style.cssText = attrValue;\n      } else {\n        fromEl.removeAttribute(\"style\");\n      }\n    }\n    return;\n  }\n\n  var preserve = (props && props.pa) || EMPTY_OBJECT;\n  var specialAttrs = specialElHandlers[toEl.___nodeName] || EMPTY_OBJECT;\n  var specialAttr;\n\n  // Loop over all of the attributes in the attribute map and compare\n  // them to the value in the old map. However, if the value is\n  // null/undefined/false then we want to remove the attribute\n  for (attrName in attrs) {\n    if (!preserve[attrName]) {\n      attrValue = normalizeValue(attrs[attrName]);\n      if ((specialAttr = specialAttrs[attrName])) {\n        specialAttr(fromEl, attrValue);\n      } else if (normalizeValue(oldAttrs[attrName]) !== attrValue) {\n        if (attrName === ATTR_XLINK_HREF) {\n          if (attrValue === undefined) {\n            fromEl.removeAttributeNS(NS_XLINK, ATTR_HREF);\n          } else {\n            fromEl.setAttributeNS(NS_XLINK, ATTR_HREF, attrValue);\n          }\n        } else if (attrValue === undefined) {\n          fromEl.removeAttribute(attrName);\n        } else {\n          fromEl.setAttribute(attrName, attrValue);\n        }\n      }\n    }\n  }\n\n  // If there are any old attributes that are not in the new set of attributes\n  // then we need to remove those attributes from the target node\n  //\n  // NOTE: We can skip this if the the element is keyed and didn't have spread attributes\n  //       because we know we already processed all of the attributes for\n  //       both the target and original element since target VElement nodes will\n  //       have all attributes declared. However, we can only skip if the node\n  //       was not a virtualized node (i.e., a node that was not rendered by a\n  //       Marko template, but rather a node that was created from an HTML\n  //       string or a real DOM node).\n  if (toEl.___key === null || fromFlags & FLAG_SPREAD_ATTRS) {\n    for (attrName in oldAttrs) {\n      if (!(attrName in attrs)) {\n        if ((specialAttr = specialAttrs[attrName])) {\n          specialAttr(fromEl, undefined);\n        } else if (attrName === ATTR_XLINK_HREF) {\n          fromEl.removeAttributeNS(ATTR_XLINK_HREF, ATTR_HREF);\n        } else {\n          fromEl.removeAttribute(attrName);\n        }\n      }\n    }\n  }\n};\n\nmodule.exports = VElement;\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/vdom/VFragment.js",
    "content": "var inherit = require(\"raptor-util/inherit\");\nvar domData = require(\"../components/dom-data\");\nvar keysByDOMNode = domData.___keyByDOMNode;\nvar vElementByDOMNode = domData.___vElementByDOMNode;\nvar createFragmentNode = require(\"./morphdom/fragment\").___createFragmentNode;\nvar VNode = require(\"./VNode\");\n\nfunction VFragment(key, ownerComponent, preserve) {\n  this.___VNode(null /* childCount */, ownerComponent);\n  this.___key = key;\n  this.___preserve = preserve;\n}\n\nVFragment.prototype = {\n  ___nodeType: 12,\n  ___actualize: function () {\n    var fragment = createFragmentNode();\n    keysByDOMNode.set(fragment, this.___key);\n    vElementByDOMNode.set(fragment, this);\n    return fragment;\n  },\n};\n\ninherit(VFragment, VNode);\n\nmodule.exports = VFragment;\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/vdom/VNode.js",
    "content": "var hasTextContent = require(\"./is-text-only\");\n\nfunction VNode() {}\n\nVNode.prototype = {\n  ___VNode: function (finalChildCount, ownerComponent) {\n    this.___finalChildCount = finalChildCount;\n    this.___childCount = 0;\n    this.___firstChildInternal = null;\n    this.___lastChild = null;\n    this.___parentNode = null;\n    this.___nextSiblingInternal = null;\n    this.___ownerComponent = ownerComponent;\n  },\n\n  get ___firstChild() {\n    var firstChild = this.___firstChildInternal;\n\n    if (firstChild && firstChild.___DocumentFragment) {\n      var nestedFirstChild = firstChild.___firstChild;\n      // The first child is a DocumentFragment node.\n      // If the DocumentFragment node has a first child then we will return that.\n      // Otherwise, the DocumentFragment node is not *really* the first child and\n      // we need to skip to its next sibling\n      return nestedFirstChild || firstChild.___nextSibling;\n    }\n\n    return firstChild;\n  },\n\n  get ___nextSibling() {\n    var nextSibling = this.___nextSiblingInternal;\n\n    if (nextSibling) {\n      if (nextSibling.___DocumentFragment) {\n        var firstChild = nextSibling.___firstChild;\n        return firstChild || nextSibling.___nextSibling;\n      }\n    } else {\n      var parentNode = this.___parentNode;\n      if (parentNode && parentNode.___DocumentFragment) {\n        return parentNode.___nextSibling;\n      }\n    }\n\n    return nextSibling;\n  },\n\n  ___appendChild: function (child) {\n    this.___childCount++;\n\n    if (hasTextContent(this.___nodeName)) {\n      if (child.___Text) {\n        this.___textContent += child.___nodeValue;\n      } else {\n        throw TypeError();\n      }\n    } else {\n      var lastChild = this.___lastChild;\n\n      child.___parentNode = this;\n\n      if (lastChild) {\n        lastChild.___nextSiblingInternal = child;\n      } else {\n        this.___firstChildInternal = child;\n      }\n\n      this.___lastChild = child;\n    }\n\n    return child;\n  },\n\n  ___finishChild: function finishChild() {\n    if (this.___childCount === this.___finalChildCount && this.___parentNode) {\n      return this.___parentNode.___finishChild();\n    } else {\n      return this;\n    }\n  },\n\n  // ,toJSON: function() {\n  //     var clone = Object.assign({\n  //         nodeType: this.nodeType\n  //     }, this);\n  //\n  //     for (var k in clone) {\n  //         if (k.startsWith('_')) {\n  //             delete clone[k];\n  //         }\n  //     }\n  //     delete clone._nextSibling;\n  //     delete clone._lastChild;\n  //     delete clone.parentNode;\n  //     return clone;\n  // }\n};\n\nmodule.exports = VNode;\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/vdom/VText.js",
    "content": "var inherit = require(\"raptor-util/inherit\");\nvar VNode = require(\"./VNode\");\n\nfunction VText(value, ownerComponent) {\n  this.___VNode(-1 /* no children */, ownerComponent);\n  this.___nodeValue = value;\n}\n\nVText.prototype = {\n  ___Text: true,\n\n  ___nodeType: 3,\n\n  ___actualize: function (host) {\n    return (host.ownerDocument || host).createTextNode(this.___nodeValue);\n  },\n\n  ___cloneNode: function () {\n    return new VText(this.___nodeValue);\n  },\n};\n\ninherit(VText, VNode);\n\nmodule.exports = VText;\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/vdom/helpers/attrs.js",
    "content": "\"use strict\";\n\n// eslint-disable-next-line no-constant-binary-expression\nvar complain = \"MARKO_DEBUG\" && require(\"complain\");\nvar classHelper = require(\"../../helpers/class-value\");\nvar styleHelper = require(\"../../helpers/style-value\");\nvar parseHTML = require(\"../parse-html\");\n\n/**\n * Helper for processing dynamic attributes\n */\nmodule.exports = function (attributes) {\n  if (typeof attributes === \"string\") {\n    // eslint-disable-next-line no-constant-condition\n    if (\"MARKO_DEBUG\") {\n      complain(\n        \"Passing a string as a dynamic attribute value is deprecated - More details: https://github.com/marko-js/marko/wiki/Deprecation:-String-as-dynamic-attribute-value\",\n      );\n    }\n    return parseAttrs(attributes);\n  }\n\n  if (attributes) {\n    var newAttributes = {};\n\n    for (var attrName in attributes) {\n      var val = attributes[attrName];\n      if (attrName === \"renderBody\") {\n        continue;\n      }\n\n      if (attrName === \"class\") {\n        val = classHelper(val);\n      } else if (attrName === \"style\") {\n        val = styleHelper(val);\n      }\n\n      newAttributes[attrName] = val;\n    }\n\n    return newAttributes;\n  }\n\n  return attributes;\n};\n\nfunction parseAttrs(str) {\n  if (str === \"\") {\n    return {};\n  }\n\n  var attrs = parseHTML(\"<a \" + str + \">\").attributes;\n  var result = {};\n  var attr;\n\n  for (var len = attrs.length, i = 0; i < len; i++) {\n    attr = attrs[i];\n    result[attr.name] = attr.value;\n  }\n\n  return result;\n}\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/vdom/helpers/const-element.js",
    "content": "\"use strict\";\n\nvar VElement = require(\"../vdom\").___VElement;\nvar i = 0;\n\nmodule.exports = function (tagName, attrs, childCount) {\n  return new ConstVElement(tagName, attrs, childCount);\n};\n\nfunction ConstVElement(tagName, attrs, childCount) {\n  VElement.call(this, tagName, attrs, null, null, childCount, null, { i: i++ });\n}\n\nConstVElement.prototype = Object.create(VElement.prototype);\nConstVElement.prototype.e = function (tagName, attrs, childCount) {\n  var child = this.___appendChild(\n    new ConstVElement(tagName, attrs, childCount),\n  );\n\n  if (childCount === 0) {\n    return this.___finishChild();\n  } else {\n    return child;\n  }\n};\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/vdom/helpers/merge-attrs.js",
    "content": "\"use strict\";\n\nvar attrs = require(\"./attrs\");\n\n/**\n * Merges attribute objects into a object.\n */\nmodule.exports = function mergeAttrs() {\n  var len = arguments.length;\n  var result = {};\n  for (var i = 0; i < len; i++) {\n    Object.assign(result, attrs(arguments[i]));\n  }\n\n  return result;\n};\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/vdom/hot-reload.js",
    "content": "var registry = require(\"@internal/components-registry\");\nvar setImmediate = require(\"@internal/set-immediate\").___setImmediate;\nvar updateManager = require(\"../components/update-manager\");\nvar runtime = require(\".\");\n\nvar createTemplate = runtime.t;\nvar createComponent = registry.___createComponent;\nvar registered = {};\nvar instancesByType = {};\nvar queue;\n\nexports.t = runtime.t = function (typeName) {\n  if (registered[typeName]) {\n    return registered[typeName];\n  }\n\n  var renderFn;\n  var template = (registered[typeName] = createTemplate(typeName));\n  var instances = (instancesByType[typeName] = new Set());\n  Object.defineProperty(template, \"_\", {\n    get: function () {\n      return renderFn && proxyRenderer;\n    },\n    set: function (v) {\n      renderFn = v;\n\n      if (instances.size) {\n        if (!queue) {\n          queue = [];\n          setImmediate(batchUpdate);\n        }\n\n        queue.push(function () {\n          var newProto = registry.___getComponentClass(typeName).prototype;\n          instances.forEach(function (instance) {\n            if (hasLifecycleChanged(instance.__proto__, newProto)) {\n              var renderer = instance.___renderer;\n              instance.___renderer = (input, out) => {\n                instance.___emitCreate(input, out);\n                if (instance.onInput) {\n                  input = instance.onInput(input, out) || input;\n                }\n                instance.___renderer = renderer;\n                instance.___renderer(input, out);\n              };\n\n              instance.___hmrDestroyed = true;\n              instance.___emitDestroy();\n              instance.___mounted = false;\n\n              if (instance.___subscriptions) {\n                instance.___subscriptions.removeAllListeners();\n                instance.___subscriptions = null;\n              }\n            }\n\n            instance.__proto__ = newProto;\n            instance\n              .___rerender(instance.___input, false)\n              .afterInsert(instance.___host);\n          });\n        });\n      }\n    },\n  });\n\n  return template;\n\n  function proxyRenderer() {\n    return renderFn.apply(this, arguments);\n  }\n};\n\nregistry.___createComponent = function (typeName, id) {\n  var instances = instancesByType[typeName];\n  var instance = createComponent(typeName, id);\n\n  if (instances) {\n    instances.add(instance);\n    instance.once(\"destroy\", function () {\n      if (!instance.___hmrDestroyed) {\n        instances.delete(instance);\n      }\n    });\n  }\n\n  return instance;\n};\n\nfunction hasLifecycleChanged(oldProto, newProto) {\n  return (\n    hasMethodChanged(\"onCreate\") ||\n    hasMethodChanged(\"onInput\") ||\n    hasMethodChanged(\"onRender\") ||\n    hasMethodChanged(\"onMount\")\n  );\n\n  function hasMethodChanged(method) {\n    return (\n      (oldProto[method] && oldProto[method].toString()) !==\n      (newProto[method] && newProto[method].toString())\n    );\n  }\n}\n\nfunction batchUpdate() {\n  updateManager.___batchUpdate(function () {\n    var pending = queue;\n    queue = undefined;\n\n    for (var i = 0; i < pending.length; i++) {\n      pending[i]();\n    }\n  });\n}\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/vdom/index.js",
    "content": "\"use strict\";\n\nrequire(\"./marko-namespace\");\n\n/**\n * Method is for internal usage only. This method\n * is invoked by code in a compiled Marko template and\n * it is used to create a new Template instance.\n * @private\n */\nexports.t = function createTemplate(typeName) {\n  return new Template(typeName);\n};\n\nfunction Template(typeName) {\n  this.path = this.___typeName = typeName;\n}\n\nvar AsyncVDOMBuilder = require(\"./AsyncVDOMBuilder\");\nrequire(\"../createOut\").___setCreateOut(\n  (Template.prototype.createOut = function createOut(\n    globalData,\n    parent,\n    parentOut,\n  ) {\n    return new AsyncVDOMBuilder(globalData, parent, parentOut);\n  }),\n);\n\nrequire(\"../renderable\")(Template.prototype);\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/vdom/is-text-only.js",
    "content": "module.exports = function isTextOnly(nodeName) {\n  switch (nodeName) {\n    case \"textarea\":\n    case \"script\":\n    case \"style\":\n      return true;\n  }\n\n  return false;\n};\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/vdom/marko-namespace.js",
    "content": "window.Marko = {\n  Component: function () {},\n};\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/vdom/morphdom/fragment.js",
    "content": "var helpers = require(\"./helpers\");\nvar insertBefore = helpers.___insertBefore;\n\nvar fragmentPrototype = {\n  nodeType: 12,\n  get firstChild() {\n    var firstChild = this.startNode.nextSibling;\n    return firstChild === this.endNode ? undefined : firstChild;\n  },\n  get lastChild() {\n    var lastChild = this.endNode.previousSibling;\n    return lastChild === this.startNode ? undefined : lastChild;\n  },\n  get parentNode() {\n    var parentNode = this.startNode.parentNode;\n    return parentNode === this.detachedContainer ? undefined : parentNode;\n  },\n  get namespaceURI() {\n    return this.startNode.parentNode.namespaceURI;\n  },\n  get nextSibling() {\n    return this.endNode.nextSibling;\n  },\n  get nodes() {\n    // eslint-disable-next-line no-constant-condition\n    if (\"MARKO_DEBUG\") {\n      if (this.___markersRemovedError) {\n        throw this.___markersRemovedError(\"Cannot get fragment nodes.\");\n      }\n    }\n    var nodes = [];\n    var current = this.startNode;\n    while (current !== this.endNode) {\n      nodes.push(current);\n      current = current.nextSibling;\n    }\n    nodes.push(current);\n    return nodes;\n  },\n  insertBefore: function (newChildNode, referenceNode) {\n    var actualReference = referenceNode == null ? this.endNode : referenceNode;\n    return insertBefore(\n      newChildNode,\n      actualReference,\n      this.startNode.parentNode,\n    );\n  },\n  insertInto: function (newParentNode, referenceNode) {\n    this.nodes.forEach(function (node) {\n      insertBefore(node, referenceNode, newParentNode);\n    }, this);\n    return this;\n  },\n  remove: function () {\n    this.nodes.forEach(function (node) {\n      this.detachedContainer.appendChild(node);\n    }, this);\n  },\n};\n\nfunction createFragmentNode(startNode, nextNode, parentNode) {\n  var fragment = Object.create(fragmentPrototype);\n  var isRoot = startNode && startNode.ownerDocument === startNode.parentNode;\n  fragment.startNode = isRoot\n    ? document.createComment(\"\")\n    : document.createTextNode(\"\");\n  fragment.endNode = isRoot\n    ? document.createComment(\"\")\n    : document.createTextNode(\"\");\n  fragment.startNode.fragment = fragment;\n  fragment.endNode.fragment = fragment;\n  var detachedContainer = (fragment.detachedContainer =\n    document.createDocumentFragment());\n  parentNode =\n    parentNode || (startNode && startNode.parentNode) || detachedContainer;\n  insertBefore(fragment.startNode, startNode, parentNode);\n  insertBefore(fragment.endNode, nextNode, parentNode);\n  return fragment;\n}\n\nfunction beginFragmentNode(startNode, parentNode) {\n  var fragment = createFragmentNode(startNode, null, parentNode);\n  fragment.___finishFragment = function (nextNode) {\n    fragment.___finishFragment = null;\n    insertBefore(\n      fragment.endNode,\n      nextNode,\n      parentNode || startNode.parentNode,\n    );\n  };\n  return fragment;\n}\n\nexports.___createFragmentNode = createFragmentNode;\nexports.___beginFragmentNode = beginFragmentNode;\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/vdom/morphdom/helpers.js",
    "content": "function insertBefore(node, referenceNode, parentNode) {\n  if (node.insertInto) {\n    return node.insertInto(parentNode, referenceNode);\n  }\n  return parentNode.insertBefore(\n    node,\n    (referenceNode && referenceNode.startNode) || referenceNode,\n  );\n}\n\nfunction insertAfter(node, referenceNode, parentNode) {\n  return insertBefore(\n    node,\n    referenceNode && referenceNode.nextSibling,\n    parentNode,\n  );\n}\n\nfunction nextSibling(node) {\n  var next = node.nextSibling;\n  var fragment = next && next.fragment;\n  if (fragment) {\n    return next === fragment.startNode ? fragment : null;\n  }\n  return next;\n}\n\nfunction firstChild(node) {\n  var next = node.firstChild;\n  return (next && next.fragment) || next;\n}\n\nfunction removeChild(node) {\n  if (node.remove) node.remove();\n  else node.parentNode.removeChild(node);\n}\n\nexports.___insertBefore = insertBefore;\nexports.___insertAfter = insertAfter;\nexports.___nextSibling = nextSibling;\nexports.___firstChild = firstChild;\nexports.___removeChild = removeChild;\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/vdom/morphdom/index.js",
    "content": "\"use strict\";\nvar componentsUtil = require(\"@internal/components-util\");\nvar existingComponentLookup = componentsUtil.___componentLookup;\nvar destroyNodeRecursive = componentsUtil.___destroyNodeRecursive;\nvar addComponentRootToKeyedElements =\n  componentsUtil.___addComponentRootToKeyedElements;\nvar normalizeComponentKey = componentsUtil.___normalizeComponentKey;\nvar domData = require(\"../../components/dom-data\");\nvar eventDelegation = require(\"../../components/event-delegation\");\nvar KeySequence = require(\"../../components/KeySequence\");\nvar VElement = require(\"../vdom\").___VElement;\nvar fragment = require(\"./fragment\");\nvar helpers = require(\"./helpers\");\nvar isTextOnly = require(\"../is-text-only\");\nvar virtualizeElement = VElement.___virtualize;\nvar morphAttrs = VElement.___morphAttrs;\nvar keysByDOMNode = domData.___keyByDOMNode;\nvar componentByDOMNode = domData.___componentByDOMNode;\nvar vElementByDOMNode = domData.___vElementByDOMNode;\nvar detachedByDOMNode = domData.___detachedByDOMNode;\n\nvar insertBefore = helpers.___insertBefore;\nvar insertAfter = helpers.___insertAfter;\nvar nextSibling = helpers.___nextSibling;\nvar firstChild = helpers.___firstChild;\nvar removeChild = helpers.___removeChild;\nvar createFragmentNode = fragment.___createFragmentNode;\nvar beginFragmentNode = fragment.___beginFragmentNode;\n\nvar ELEMENT_NODE = 1;\nvar TEXT_NODE = 3;\nvar COMMENT_NODE = 8;\nvar COMPONENT_NODE = 2;\nvar FRAGMENT_NODE = 12;\nvar DOCTYPE_NODE = 10;\n\n// var FLAG_SIMPLE_ATTRS = 1;\n// var FLAG_CUSTOM_ELEMENT = 2;\n// var FLAG_SPREAD_ATTRS = 4;\n\nfunction isAutoKey(key) {\n  return key[0] !== \"@\";\n}\n\nfunction compareNodeNames(fromEl, toEl) {\n  return fromEl.___nodeName === toEl.___nodeName;\n}\n\nfunction caseInsensitiveCompare(a, b) {\n  return a.toLowerCase() === b.toLowerCase();\n}\n\nfunction onNodeAdded(node, componentsContext) {\n  if (node.nodeType === ELEMENT_NODE) {\n    eventDelegation.___handleNodeAttach(node, componentsContext);\n  }\n}\n\nfunction morphdom(fromNode, toNode, host, componentsContext) {\n  var globalComponentsContext;\n  var isHydrate = false;\n  var keySequences = Object.create(null);\n\n  if (componentsContext) {\n    globalComponentsContext = componentsContext.___globalContext;\n    isHydrate = globalComponentsContext.___isHydrate;\n  }\n\n  function insertVirtualNodeBefore(\n    vNode,\n    key,\n    referenceEl,\n    parentEl,\n    ownerComponent,\n    parentComponent,\n  ) {\n    var realNode = vNode.___actualize(host, parentEl.namespaceURI);\n    insertBefore(realNode, referenceEl, parentEl);\n\n    if (\n      vNode.___nodeType === ELEMENT_NODE ||\n      vNode.___nodeType === FRAGMENT_NODE\n    ) {\n      if (key) {\n        keysByDOMNode.set(realNode, key);\n        (isAutoKey(key) ? parentComponent : ownerComponent).___keyedElements[\n          key\n        ] = realNode;\n      }\n\n      if (!isTextOnly(vNode.___nodeName)) {\n        morphChildren(realNode, vNode, parentComponent);\n      }\n\n      onNodeAdded(realNode, componentsContext);\n    }\n  }\n\n  function insertVirtualComponentBefore(\n    vComponent,\n    referenceNode,\n    referenceNodeParentEl,\n    component,\n    key,\n    ownerComponent,\n    parentComponent,\n  ) {\n    var rootNode = (component.___rootNode = insertBefore(\n      createFragmentNode(),\n      referenceNode,\n      referenceNodeParentEl,\n    ));\n    componentByDOMNode.set(rootNode, component);\n\n    if (key && ownerComponent) {\n      key = normalizeComponentKey(key, parentComponent.id);\n      addComponentRootToKeyedElements(\n        ownerComponent.___keyedElements,\n        key,\n        rootNode,\n        component.id,\n      );\n      keysByDOMNode.set(rootNode, key);\n    }\n\n    morphComponent(component, vComponent);\n  }\n\n  function morphComponent(component, vComponent) {\n    morphChildren(component.___rootNode, vComponent, component);\n  }\n\n  var detachedNodes = [];\n\n  function detachNode(node, parentNode, ownerComponent) {\n    if (node.nodeType === ELEMENT_NODE || node.nodeType === FRAGMENT_NODE) {\n      detachedNodes.push(node);\n      detachedByDOMNode.set(node, ownerComponent || true);\n    } else {\n      destroyNodeRecursive(node);\n      removeChild(node);\n    }\n  }\n\n  function destroyComponent(component) {\n    component.destroy();\n  }\n\n  function morphChildren(fromNode, toNode, parentComponent) {\n    var curFromNodeChild = firstChild(fromNode);\n    var curToNodeChild = toNode.___firstChild;\n\n    var curToNodeKey;\n    var curFromNodeKey;\n    var curToNodeType;\n\n    var fromNextSibling;\n    var toNextSibling;\n    var matchingFromEl;\n    var matchingFromComponent;\n    var curVFromNodeChild;\n    var fromComponent;\n\n    outer: while (curToNodeChild) {\n      toNextSibling = curToNodeChild.___nextSibling;\n      curToNodeType = curToNodeChild.___nodeType;\n      curToNodeKey = curToNodeChild.___key;\n\n      // Skip <!doctype>\n      if (curFromNodeChild && curFromNodeChild.nodeType === DOCTYPE_NODE) {\n        curFromNodeChild = nextSibling(curFromNodeChild);\n      }\n\n      var ownerComponent = curToNodeChild.___ownerComponent || parentComponent;\n      var referenceComponent;\n\n      if (curToNodeType === COMPONENT_NODE) {\n        var component = curToNodeChild.___component;\n        if (\n          (matchingFromComponent = existingComponentLookup[component.id]) ===\n          undefined\n        ) {\n          if (isHydrate) {\n            var rootNode = beginFragmentNode(curFromNodeChild, fromNode);\n            component.___rootNode = rootNode;\n            componentByDOMNode.set(rootNode, component);\n\n            if (ownerComponent && curToNodeKey) {\n              curToNodeKey = normalizeComponentKey(\n                curToNodeKey,\n                parentComponent.id,\n              );\n              addComponentRootToKeyedElements(\n                ownerComponent.___keyedElements,\n                curToNodeKey,\n                rootNode,\n                component.id,\n              );\n\n              keysByDOMNode.set(rootNode, curToNodeKey);\n            }\n\n            morphComponent(component, curToNodeChild);\n\n            curFromNodeChild = nextSibling(rootNode);\n          } else {\n            insertVirtualComponentBefore(\n              curToNodeChild,\n              curFromNodeChild,\n              fromNode,\n              component,\n              curToNodeKey,\n              ownerComponent,\n              parentComponent,\n            );\n          }\n        } else {\n          if (matchingFromComponent.___rootNode !== curFromNodeChild) {\n            if (\n              curFromNodeChild &&\n              (fromComponent = componentByDOMNode.get(curFromNodeChild)) &&\n              globalComponentsContext.___renderedComponentsById[\n                fromComponent.id\n              ] === undefined\n            ) {\n              // The component associated with the current real DOM node was not rendered\n              // so we should just remove it out of the real DOM by destroying it\n              curFromNodeChild = nextSibling(fromComponent.___rootNode);\n              destroyComponent(fromComponent);\n              continue;\n            }\n\n            // We need to move the existing component into\n            // the correct location\n            insertBefore(\n              matchingFromComponent.___rootNode,\n              curFromNodeChild,\n              fromNode,\n            );\n          } else {\n            curFromNodeChild =\n              curFromNodeChild && nextSibling(curFromNodeChild);\n          }\n\n          if (!curToNodeChild.___preserve) {\n            morphComponent(component, curToNodeChild);\n          }\n        }\n\n        curToNodeChild = toNextSibling;\n        continue;\n      } else if (curToNodeKey) {\n        curVFromNodeChild = undefined;\n        curFromNodeKey = undefined;\n        var curToNodeKeyOriginal = curToNodeKey;\n\n        if (isAutoKey(curToNodeKey)) {\n          if (ownerComponent !== parentComponent) {\n            curToNodeKey += \":\" + ownerComponent.id;\n          }\n          referenceComponent = parentComponent;\n        } else {\n          referenceComponent = ownerComponent;\n        }\n\n        // We have a keyed element. This is the fast path for matching\n        // up elements\n        curToNodeKey = (\n          keySequences[referenceComponent.id] ||\n          (keySequences[referenceComponent.id] = new KeySequence())\n        ).___nextKey(curToNodeKey);\n\n        if (curFromNodeChild) {\n          curFromNodeKey = keysByDOMNode.get(curFromNodeChild);\n          curVFromNodeChild = vElementByDOMNode.get(curFromNodeChild);\n          fromNextSibling = nextSibling(curFromNodeChild);\n        }\n\n        if (curFromNodeKey === curToNodeKey) {\n          // Elements line up. Now we just have to make sure they are compatible\n          if (!curToNodeChild.___preserve) {\n            // We just skip over the fromNode if it is preserved\n\n            if (\n              curVFromNodeChild &&\n              curToNodeType === curVFromNodeChild.___nodeType &&\n              (curToNodeType !== ELEMENT_NODE ||\n                compareNodeNames(curToNodeChild, curVFromNodeChild))\n            ) {\n              if (curToNodeType === ELEMENT_NODE) {\n                morphEl(\n                  curFromNodeChild,\n                  curVFromNodeChild,\n                  curToNodeChild,\n                  parentComponent,\n                );\n              } else {\n                morphChildren(\n                  curFromNodeChild,\n                  curToNodeChild,\n                  parentComponent,\n                );\n              }\n            } else {\n              // Remove the old node\n              detachNode(curFromNodeChild, fromNode, ownerComponent);\n\n              // Incompatible nodes. Just move the target VNode into the DOM at this position\n              insertVirtualNodeBefore(\n                curToNodeChild,\n                curToNodeKey,\n                curFromNodeChild,\n                fromNode,\n                ownerComponent,\n                parentComponent,\n              );\n            }\n          }\n        } else {\n          matchingFromEl = referenceComponent.___keyedElements[curToNodeKey];\n          if (\n            matchingFromEl === undefined ||\n            matchingFromEl === curFromNodeChild\n          ) {\n            if (isHydrate && curFromNodeChild) {\n              if (\n                curFromNodeChild.nodeType === ELEMENT_NODE &&\n                (curToNodeChild.___preserve ||\n                  caseInsensitiveCompare(\n                    curFromNodeChild.nodeName,\n                    curToNodeChild.___nodeName || \"\",\n                  ))\n              ) {\n                curVFromNodeChild = virtualizeElement(curFromNodeChild);\n                curVFromNodeChild.___nodeName = curToNodeChild.___nodeName;\n                keysByDOMNode.set(curFromNodeChild, curToNodeKey);\n                referenceComponent.___keyedElements[curToNodeKey] =\n                  curFromNodeChild;\n\n                if (curToNodeChild.___preserve) {\n                  vElementByDOMNode.set(curFromNodeChild, curVFromNodeChild);\n                } else {\n                  morphEl(\n                    curFromNodeChild,\n                    curVFromNodeChild,\n                    curToNodeChild,\n                    parentComponent,\n                  );\n                }\n\n                curToNodeChild = toNextSibling;\n                curFromNodeChild = fromNextSibling;\n                continue;\n              } else if (\n                curToNodeChild.___nodeType === FRAGMENT_NODE &&\n                curFromNodeChild.nodeType === COMMENT_NODE\n              ) {\n                var content = curFromNodeChild.nodeValue;\n                if (content == \"F#\" + curToNodeKeyOriginal) {\n                  var endNode = curFromNodeChild.nextSibling;\n                  var depth = 0;\n                  var nodeValue;\n\n                  while (true) {\n                    if (endNode.nodeType === COMMENT_NODE) {\n                      nodeValue = endNode.nodeValue;\n                      if (nodeValue === \"F/\") {\n                        if (depth === 0) {\n                          break;\n                        } else {\n                          depth--;\n                        }\n                      } else if (nodeValue.indexOf(\"F#\") === 0) {\n                        depth++;\n                      }\n                    }\n                    endNode = endNode.nextSibling;\n                  }\n\n                  var fragment = createFragmentNode(\n                    curFromNodeChild,\n                    endNode.nextSibling,\n                    fromNode,\n                  );\n                  keysByDOMNode.set(fragment, curToNodeKey);\n                  vElementByDOMNode.set(fragment, curToNodeChild);\n                  referenceComponent.___keyedElements[curToNodeKey] = fragment;\n                  removeChild(curFromNodeChild);\n                  removeChild(endNode);\n\n                  if (!curToNodeChild.___preserve) {\n                    morphChildren(fragment, curToNodeChild, parentComponent);\n                  }\n\n                  curToNodeChild = toNextSibling;\n                  curFromNodeChild = fragment.nextSibling;\n                  continue;\n                }\n              }\n            }\n\n            insertVirtualNodeBefore(\n              curToNodeChild,\n              curToNodeKey,\n              curFromNodeChild,\n              fromNode,\n              ownerComponent,\n              parentComponent,\n            );\n            fromNextSibling = curFromNodeChild;\n          } else {\n            if (detachedByDOMNode.get(matchingFromEl) !== undefined) {\n              detachedByDOMNode.set(matchingFromEl, undefined);\n            }\n\n            if (!curToNodeChild.___preserve) {\n              curVFromNodeChild = vElementByDOMNode.get(matchingFromEl);\n\n              if (\n                curVFromNodeChild &&\n                curToNodeType === curVFromNodeChild.___nodeType &&\n                (curToNodeType !== ELEMENT_NODE ||\n                  compareNodeNames(curVFromNodeChild, curToNodeChild))\n              ) {\n                if (fromNextSibling === matchingFromEl) {\n                  // Single element removal:\n                  // A <-> A\n                  // B <-> C <-- We are here\n                  // C     D\n                  // D\n                  //\n                  // Single element swap:\n                  // A <-> A\n                  // B <-> C <-- We are here\n                  // C     B\n\n                  if (\n                    toNextSibling &&\n                    toNextSibling.___key === curFromNodeKey\n                  ) {\n                    // Single element swap\n\n                    // We want to stay on the current real DOM node\n                    fromNextSibling = curFromNodeChild;\n\n                    // But move the matching element into place\n                    insertBefore(matchingFromEl, curFromNodeChild, fromNode);\n                  } else {\n                    // Single element removal\n\n                    // We need to remove the current real DOM node\n                    // and the matching real DOM node will fall into\n                    // place. We will continue diffing with next sibling\n                    // after the real DOM node that just fell into place\n                    fromNextSibling = nextSibling(fromNextSibling);\n\n                    if (curFromNodeChild) {\n                      detachNode(curFromNodeChild, fromNode, ownerComponent);\n                    }\n                  }\n                } else {\n                  // A <-> A\n                  // B <-> D <-- We are here\n                  // C\n                  // D\n\n                  // We need to move the matching node into place\n                  insertAfter(matchingFromEl, curFromNodeChild, fromNode);\n\n                  if (curFromNodeChild) {\n                    detachNode(curFromNodeChild, fromNode, ownerComponent);\n                  }\n                }\n\n                if (curToNodeType === ELEMENT_NODE) {\n                  morphEl(\n                    matchingFromEl,\n                    curVFromNodeChild,\n                    curToNodeChild,\n                    parentComponent,\n                  );\n                } else {\n                  morphChildren(\n                    matchingFromEl,\n                    curToNodeChild,\n                    parentComponent,\n                  );\n                }\n              } else {\n                insertVirtualNodeBefore(\n                  curToNodeChild,\n                  curToNodeKey,\n                  curFromNodeChild,\n                  fromNode,\n                  ownerComponent,\n                  parentComponent,\n                );\n                detachNode(matchingFromEl, fromNode, ownerComponent);\n              }\n            } else {\n              // preserve the node\n              // but still we need to diff the current from node\n              insertBefore(matchingFromEl, curFromNodeChild, fromNode);\n              fromNextSibling = curFromNodeChild;\n            }\n          }\n        }\n\n        curToNodeChild = toNextSibling;\n        curFromNodeChild = fromNextSibling;\n        continue;\n      }\n\n      // The know the target node is not a VComponent node and we know\n      // it is also not a preserve node. Let's now match up the HTML\n      // element, text node, comment, etc.\n      while (curFromNodeChild) {\n        fromNextSibling = nextSibling(curFromNodeChild);\n\n        if ((fromComponent = componentByDOMNode.get(curFromNodeChild))) {\n          // The current \"to\" element is not associated with a component,\n          // but the current \"from\" element is associated with a component\n\n          // Even if we destroy the current component in the original\n          // DOM or not, we still need to skip over it since it is\n          // not compatible with the current \"to\" node\n          curFromNodeChild = fromNextSibling;\n\n          if (\n            !globalComponentsContext.___renderedComponentsById[fromComponent.id]\n          ) {\n            destroyComponent(fromComponent);\n          }\n\n          continue; // Move to the next \"from\" node\n        }\n\n        var curFromNodeType = curFromNodeChild.nodeType;\n\n        var isCompatible = undefined;\n\n        if (curFromNodeType === curToNodeType) {\n          if (curFromNodeType === ELEMENT_NODE) {\n            // Both nodes being compared are Element nodes\n            curVFromNodeChild = vElementByDOMNode.get(curFromNodeChild);\n            if (curVFromNodeChild === undefined) {\n              if (isHydrate) {\n                curVFromNodeChild = virtualizeElement(curFromNodeChild);\n\n                if (\n                  caseInsensitiveCompare(\n                    curVFromNodeChild.___nodeName,\n                    curToNodeChild.___nodeName,\n                  )\n                ) {\n                  curVFromNodeChild.___nodeName = curToNodeChild.___nodeName;\n                }\n              } else {\n                // Skip over nodes that don't look like ours...\n                curFromNodeChild = fromNextSibling;\n                continue;\n              }\n            } else if (curVFromNodeChild.___key) {\n              // We have a keyed element here but our target VDOM node\n              // is not keyed so this not doesn't belong\n              isCompatible = false;\n            }\n\n            isCompatible =\n              isCompatible !== false &&\n              compareNodeNames(curVFromNodeChild, curToNodeChild) === true;\n\n            if (isCompatible === true) {\n              // We found compatible DOM elements so transform\n              // the current \"from\" node to match the current\n              // target DOM node.\n              morphEl(\n                curFromNodeChild,\n                curVFromNodeChild,\n                curToNodeChild,\n                parentComponent,\n              );\n            }\n          } else if (\n            curFromNodeType === TEXT_NODE ||\n            curFromNodeType === COMMENT_NODE\n          ) {\n            // Both nodes being compared are Text or Comment nodes\n            isCompatible = true;\n            var curToNodeValue = curToNodeChild.___nodeValue;\n            var curFromNodeValue = curFromNodeChild.nodeValue;\n            if (curFromNodeValue !== curToNodeValue) {\n              if (\n                isHydrate &&\n                toNextSibling &&\n                curFromNodeType === TEXT_NODE &&\n                toNextSibling.___nodeType === TEXT_NODE &&\n                curFromNodeValue.startsWith(curToNodeValue) &&\n                curFromNodeValue\n                  .slice(curToNodeValue.length)\n                  .startsWith(toNextSibling.___nodeValue)\n              ) {\n                // In hydrate mode we can use splitText to more efficiently handle\n                // adjacent text vdom nodes that were merged.\n                fromNextSibling = curFromNodeChild.splitText(\n                  curToNodeValue.length,\n                );\n              } else {\n                // Simply update nodeValue on the original node to\n                // change the text value\n                curFromNodeChild.nodeValue = curToNodeValue;\n              }\n            }\n          }\n        }\n\n        if (isCompatible === true) {\n          // Advance both the \"to\" child and the \"from\" child since we found a match\n          curToNodeChild = toNextSibling;\n          curFromNodeChild = fromNextSibling;\n          continue outer;\n        }\n\n        detachNode(curFromNodeChild, fromNode, ownerComponent);\n        curFromNodeChild = fromNextSibling;\n      } // END: while (curFromNodeChild)\n\n      // If we got this far then we did not find a candidate match for\n      // our \"to node\" and we exhausted all of the children \"from\"\n      // nodes. Therefore, we will just append the current \"to\" node\n      // to the end\n      insertVirtualNodeBefore(\n        curToNodeChild,\n        curToNodeKey,\n        curFromNodeChild,\n        fromNode,\n        ownerComponent,\n        parentComponent,\n      );\n\n      curToNodeChild = toNextSibling;\n      curFromNodeChild = fromNextSibling;\n    }\n\n    // We have processed all of the \"to nodes\".\n    if (fromNode.___finishFragment) {\n      // If we are in an unfinished fragment, we have reached the end of the nodes\n      // we were matching up and need to end the fragment\n      fromNode.___finishFragment(curFromNodeChild);\n    } else {\n      // If curFromNodeChild is non-null then we still have some from nodes\n      // left over that need to be removed\n      var fragmentBoundary =\n        fromNode.nodeType === FRAGMENT_NODE ? fromNode.endNode : null;\n\n      while (curFromNodeChild && curFromNodeChild !== fragmentBoundary) {\n        fromNextSibling = nextSibling(curFromNodeChild);\n\n        if ((fromComponent = componentByDOMNode.get(curFromNodeChild))) {\n          curFromNodeChild = fromNextSibling;\n          if (\n            !globalComponentsContext.___renderedComponentsById[fromComponent.id]\n          ) {\n            destroyComponent(fromComponent);\n          }\n          continue;\n        }\n\n        curVFromNodeChild = vElementByDOMNode.get(curFromNodeChild);\n        curFromNodeKey = keysByDOMNode.get(fromNode);\n\n        // For transcluded content, we need to check if the element belongs to a different component\n        // context than the current component and ensure it gets removed from its key index.\n        if (!curFromNodeKey || isAutoKey(curFromNodeKey)) {\n          referenceComponent = parentComponent;\n        } else {\n          referenceComponent =\n            curVFromNodeChild && curVFromNodeChild.___ownerComponent;\n        }\n\n        detachNode(curFromNodeChild, fromNode, referenceComponent);\n\n        curFromNodeChild = fromNextSibling;\n      }\n    }\n  }\n\n  function morphEl(fromEl, vFromEl, toEl, parentComponent) {\n    var nodeName = toEl.___nodeName;\n    var constId = toEl.___constId;\n    vElementByDOMNode.set(fromEl, toEl);\n\n    if (constId !== undefined && vFromEl.___constId === constId) {\n      return;\n    }\n\n    morphAttrs(fromEl, vFromEl, toEl);\n\n    if (toEl.___preserveBody) {\n      return;\n    }\n\n    if (isTextOnly(nodeName)) {\n      if (toEl.___textContent !== vFromEl.___textContent) {\n        if (nodeName === \"textarea\") {\n          fromEl.value = toEl.___textContent;\n        } else {\n          fromEl.textContent = toEl.___textContent;\n        }\n      }\n    } else {\n      morphChildren(fromEl, toEl, parentComponent);\n    }\n  } // END: morphEl(...)\n\n  morphChildren(fromNode, toNode, toNode.___component);\n\n  detachedNodes.forEach(function (node) {\n    var detachedFromComponent = detachedByDOMNode.get(node);\n\n    if (detachedFromComponent !== undefined) {\n      detachedByDOMNode.set(node, undefined);\n\n      var componentToDestroy = componentByDOMNode.get(node);\n      if (componentToDestroy) {\n        componentToDestroy.destroy();\n      } else if (node.parentNode) {\n        destroyNodeRecursive(\n          node,\n          detachedFromComponent !== true && detachedFromComponent,\n        );\n\n        if (eventDelegation.___handleNodeDetach(node) != false) {\n          removeChild(node);\n        }\n      }\n    }\n  });\n}\n\nmodule.exports = morphdom;\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/vdom/parse-html.js",
    "content": "var parseHTML = function (html) {\n  var container = document.createElement(\"template\");\n  parseHTML = container.content\n    ? function (html) {\n        container.innerHTML = html;\n        return container.content;\n      }\n    : function (html) {\n        container.innerHTML = html;\n        return container;\n      };\n\n  return parseHTML(html);\n};\n\nmodule.exports = function (html) {\n  return parseHTML(html).firstChild;\n};\n"
  },
  {
    "path": "packages/runtime-class/src/runtime/vdom/vdom.js",
    "content": "var parseHTML = require(\"./parse-html\");\nvar VComment = require(\"./VComment\");\nvar VComponent = require(\"./VComponent\");\nvar VDocumentFragment = require(\"./VDocumentFragment\");\nvar VElement = require(\"./VElement\");\nvar VFragment = require(\"./VFragment\");\nvar VNode = require(\"./VNode\");\nvar VText = require(\"./VText\");\n\nvar specialHtmlRegexp = /[&<]/;\n\nfunction virtualizeChildNodes(node, vdomParent, ownerComponent) {\n  var curChild = node.firstChild;\n  while (curChild) {\n    vdomParent.___appendChild(virtualize(curChild, ownerComponent));\n    curChild = curChild.nextSibling;\n  }\n}\n\nfunction virtualize(node, ownerComponent) {\n  switch (node.nodeType) {\n    case 1:\n      return VElement.___virtualize(node, virtualizeChildNodes, ownerComponent);\n    case 3:\n      return new VText(node.nodeValue, ownerComponent);\n    case 8:\n      return new VComment(node.nodeValue, ownerComponent);\n    case 11:\n      var vdomDocFragment = new VDocumentFragment();\n      virtualizeChildNodes(node, vdomDocFragment, ownerComponent);\n      return vdomDocFragment;\n  }\n}\n\nfunction virtualizeHTML(html, ownerComponent) {\n  if (!specialHtmlRegexp.test(html)) {\n    return new VText(html, ownerComponent);\n  }\n\n  var vdomFragment = new VDocumentFragment();\n  var curChild = parseHTML(html);\n  var virtualized;\n\n  while (curChild) {\n    virtualized = virtualize(curChild, ownerComponent);\n    if (virtualized) vdomFragment.___appendChild(virtualized);\n    curChild = curChild.nextSibling;\n  }\n\n  return vdomFragment;\n}\n\nvar Node_prototype = VNode.prototype;\n\n/**\n * Shorthand method for creating and appending a Text node with a given value\n * @param  {String} value The text value for the new Text node\n */\nNode_prototype.t = function (value) {\n  var type = typeof value;\n  var vdomNode;\n\n  if (type !== \"string\") {\n    if (value == null) {\n      value = \"\";\n    } else if (type === \"object\") {\n      if (value.toHTML) {\n        vdomNode = virtualizeHTML(value.toHTML());\n      }\n    }\n  }\n\n  this.___appendChild(vdomNode || new VText(value.toString()));\n  return this.___finishChild();\n};\n\nNode_prototype.___appendDocumentFragment = function () {\n  return this.___appendChild(new VDocumentFragment());\n};\n\nexports.___VComment = VComment;\nexports.___VDocumentFragment = VDocumentFragment;\nexports.___VElement = VElement;\nexports.___VText = VText;\nexports.___VComponent = VComponent;\nexports.___VFragment = VFragment;\nexports.___virtualize = virtualize;\nexports.___virtualizeHTML = virtualizeHTML;\n"
  },
  {
    "path": "packages/runtime-class/src/taglib/index.js",
    "content": "\"use strict\";\n\n// eslint-disable-next-line no-constant-binary-expression\nlet complain = \"MARKO_DEBUG\" && require(\"complain\");\nconst compiler = require(\"@marko/compiler\");\n\nfunction clearCache() {\n  compiler.taglib.clearCaches();\n}\n\nfunction register(taglibProps, taglibPath) {\n  return compiler.taglib.register(taglibPath, taglibProps);\n}\n\nfunction registerFromFile(taglibPath) {\n  return register(\n    compiler.taglib._loader.loadTaglibFromFile(taglibPath),\n    taglibPath,\n  );\n}\n\nexports.clearCache = clearCache;\nexports.register = register;\nexports.registerFromFile = registerFromFile;\nexports.buildLookup = compiler.taglib.buildLookup;\nexports.excludeDir = compiler.taglib.excludeDir;\nexports.excludePackage = compiler.taglib.excludePackage;\nexports.loader = compiler.taglib._loader;\nexports.finder = compiler.taglib._finder;\nexports.lookup = {\n  buildLookup: function (dir, translator) {\n    if (!translator || !Array.isArray(translator.taglibs)) {\n      translator = require(\"../translator\");\n      // eslint-disable-next-line no-constant-condition\n      if (\"MARKO_DEBUG\") {\n        complain(\n          \"buildTaglibLookup now requires passing in a translator as the second argument, eg `buildTaglibLookup(dir, require('marko/translator'))`.\",\n        );\n      }\n    }\n\n    return compiler.taglib.buildLookup(dir, translator);\n  },\n  registerTaglib(taglib) {\n    if (typeof taglib === \"string\") {\n      registerFromFile(taglib);\n    } else {\n      register(taglib, taglib.id);\n    }\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/src/translator/cdata/index.js",
    "content": "import translateHTML from \"./index[html]\";\nimport translateVDOM from \"./index[vdom]\";\n\nexport default function (path) {\n  const {\n    hub: {\n      file: { markoOpts },\n    },\n  } = path;\n  if (markoOpts.output === \"html\") {\n    translateHTML(path);\n  } else {\n    translateVDOM(path);\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/cdata/index[html].js",
    "content": "import { types as t } from \"@marko/compiler\";\n\nimport write from \"../util/html-out-write\";\nimport withPreviousLocation from \"../util/with-previous-location\";\n\nexport default function (path) {\n  const { node } = path;\n\n  path.replaceWith(\n    withPreviousLocation(\n      write`<![CDATA[${t.stringLiteral(node.value)}]]>`,\n      node,\n    ),\n  );\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/cdata/index[vdom].js",
    "content": "import { types as t } from \"@marko/compiler\";\n\nimport write from \"../util/vdom-out-write\";\nimport withPreviousLocation from \"../util/with-previous-location\";\n\nexport default function (path) {\n  const { node } = path;\n\n  path.replaceWith(\n    withPreviousLocation(write(\"t\", t.stringLiteral(node.value)), node),\n  );\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/class.js",
    "content": "import { types as t } from \"@marko/compiler\";\n\nexport default function (path) {\n  const {\n    hub: { file },\n    node: {\n      body: { body },\n    },\n  } = path;\n\n  const classProperties = [];\n  let onCreateMethod = body.find(\n    (prop) =>\n      prop.computed === false &&\n      t.isIdentifier(prop.key) &&\n      prop.key.name === \"onCreate\",\n  );\n\n  const objectProperties = body\n    .map((prop) => {\n      if (t.isClassMethod(prop)) {\n        prop.type = \"ObjectMethod\";\n        delete prop.start;\n        delete prop.end;\n        delete prop.loc;\n        return prop;\n      } else if (t.isClassProperty(prop) && !prop.static) {\n        if (!prop.declare) {\n          classProperties.push(\n            t.assignmentExpression(\n              \"=\",\n              t.memberExpression(t.thisExpression(), prop.key, prop.computed),\n              prop.value || t.unaryExpression(\"void\", t.numericLiteral(0)),\n            ),\n          );\n        }\n\n        return undefined;\n      }\n\n      throw file.buildCodeFrameError(\n        prop,\n        \"Unsupported class property on component.\",\n      );\n    })\n    .filter(Boolean);\n\n  if (classProperties.length) {\n    if (!onCreateMethod) {\n      objectProperties.push(\n        (onCreateMethod = t.objectMethod(\n          \"method\",\n          t.identifier(\"onCreate\"),\n          [],\n          t.blockStatement([]),\n        )),\n      );\n    }\n\n    onCreateMethod.body.body.unshift(...classProperties);\n  }\n\n  file._inlineComponentClass = t.objectExpression(objectProperties);\n  path.remove();\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/comment/index.js",
    "content": "import translateHTML from \"./index[html]\";\nimport translateVDOM from \"./index[vdom]\";\n\nexport default function (path) {\n  const {\n    hub: {\n      file: { markoOpts },\n    },\n  } = path;\n  if (markoOpts.output === \"html\") {\n    translateHTML(path);\n  } else {\n    translateVDOM(path);\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/comment/index[html].js",
    "content": "import { types as t } from \"@marko/compiler\";\n\nimport write from \"../util/html-out-write\";\nimport withPreviousLocation from \"../util/with-previous-location\";\nconst ieConditionalCommentRegExp = /^\\[if |<!\\[endif\\]$/;\n\nexport default function (path) {\n  const { node } = path;\n\n  if (ieConditionalCommentRegExp.test(node.value)) {\n    path.replaceWith(\n      withPreviousLocation(write`<!--${t.stringLiteral(node.value)}-->`, node),\n    );\n  } else {\n    path.remove();\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/comment/index[vdom].js",
    "content": "export default function (path) {\n  path.remove();\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/declaration/index.js",
    "content": "import translateHTML from \"./index[html]\";\nimport translateVDOM from \"./index[vdom]\";\n\nexport default function (path) {\n  const {\n    hub: {\n      file: { markoOpts },\n    },\n  } = path;\n  if (markoOpts.output === \"html\") {\n    translateHTML(path);\n  } else {\n    translateVDOM(path);\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/declaration/index[html].js",
    "content": "import { types as t } from \"@marko/compiler\";\n\nimport write from \"../util/html-out-write\";\nimport withPreviousLocation from \"../util/with-previous-location\";\n\nexport default function (path) {\n  const { node } = path;\n\n  path.replaceWith(\n    withPreviousLocation(write`<?${t.stringLiteral(node.value)}?>`, node),\n  );\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/declaration/index[vdom].js",
    "content": "export default function (path) {\n  path.remove();\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/document-type/index.js",
    "content": "import translateHTML from \"./index[html]\";\nimport translateVDOM from \"./index[vdom]\";\n\nexport default function (path) {\n  const {\n    hub: {\n      file: { markoOpts },\n    },\n  } = path;\n  if (markoOpts.output === \"html\") {\n    translateHTML(path);\n  } else {\n    translateVDOM(path);\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/document-type/index[html].js",
    "content": "import { types as t } from \"@marko/compiler\";\n\nimport write from \"../util/html-out-write\";\nimport withPreviousLocation from \"../util/with-previous-location\";\n\nexport default function (path) {\n  const { node } = path;\n\n  path.replaceWith(\n    withPreviousLocation(write`<!${t.stringLiteral(node.value)}>`, node),\n  );\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/document-type/index[vdom].js",
    "content": "export default function (path) {\n  path.remove();\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/index.js",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  findParentTag,\n  getTagDef,\n  importDefault,\n  importNamed,\n  isAttributeTag,\n  isDynamicTag,\n  isMacroTag,\n  isNativeTag,\n  loadFileForTag,\n  parseExpression,\n  parseStatements,\n  resolveRelativePath,\n  resolveTagImport,\n} from \"@marko/compiler/babel-utils\";\nimport { version } from \"marko/package.json\";\nimport { resolve } from \"path\";\n\nimport MarkoCDATA from \"./cdata\";\nimport MarkoClass from \"./class\";\nimport MarkoComment from \"./comment\";\nimport MarkoDeclaration from \"./declaration\";\nimport MarkoDocumentType from \"./document-type\";\nimport MarkoPlaceholder from \"./placeholder\";\nimport MarkoScriptlet from \"./scriptlet\";\nimport MarkoTag from \"./tag\";\nimport MarkoText from \"./text\";\nimport addDependencies from \"./util/add-dependencies\";\nimport getComponentFiles from \"./util/get-component-files\";\nimport { optimizeHTMLWrites } from \"./util/optimize-html-writes\";\nimport { analyzeStaticVDOM } from \"./util/optimize-vdom-create\";\n\nexport const tagDiscoveryDirs = [\"components\"];\nexport { optionalTaglibs, default as taglibs } from \"./taglib\";\nexport { entryBuilder as internalEntryBuilder } from \"./util/add-dependencies\";\n\nexport const preferAPI = \"class\";\nexport const analyze = {\n  Program: {\n    enter(program) {\n      // Pre populate metadata for component files.\n      const meta = program.hub.file.metadata.marko;\n      getComponentFiles(program);\n\n      if (!meta.hasComponent && !meta.hasComponentBrowser) {\n        meta.hasComponent = program\n          .get(\"body\")\n          .some((child) => child.isMarkoClass());\n      }\n    },\n    exit(program) {\n      const { file } = program.hub;\n      const meta = file.metadata.marko;\n      const componentFiles = getComponentFiles(program);\n      const { styleFile, packageFile, componentBrowserFile } = componentFiles;\n\n      if (packageFile) {\n        meta.deps.unshift(`package: ${packageFile}`);\n      }\n\n      if (styleFile) {\n        meta.deps.unshift(styleFile);\n      }\n\n      if (!meta.widgetBind) {\n        if (meta.hasComponentBrowser) {\n          meta.component = componentBrowserFile;\n        } else if (\n          meta.hasComponent ||\n          meta.hasStatefulTagParams ||\n          meta.hasFunctionEventHandlers\n        ) {\n          meta.component = file.opts.filename;\n        } else if (meta.hasStringEventHandlers) {\n          meta.implicitSplitComponent = true;\n          meta.component = componentFiles.componentBrowserFile =\n            \"marko/src/runtime/helpers/empty-component.js\";\n          meta.hasComponentBrowser = true;\n        }\n      }\n\n      meta.component =\n        meta.component && resolveRelativePath(file, meta.component);\n      meta.deps = meta.deps.map((filename) =>\n        typeof filename === \"string\"\n          ? resolveRelativePath(file, filename)\n          : filename,\n      );\n    },\n  },\n  MarkoTag(tag) {\n    const { file } = tag.hub;\n    const tagDef = getTagDef(tag);\n    // Check if tag uses stateful tag params.\n    const meta = tag.hub.file.metadata.marko;\n    let relativePath;\n\n    if (tagDef) {\n      if (tagDef.html && !tagDef.template && !tagDef.renderer) {\n        if (tagDef.htmlType === \"custom-element\") {\n          if (tagDef.parseOptions && tagDef.parseOptions.import) {\n            // TODO: the taglib should be updated to support this as a top level option.\n            meta.deps.push(\n              resolve(\n                tagDef.dir,\n                resolve(tagDef.dir, tagDef.parseOptions.import),\n              ),\n            );\n          }\n        }\n      } else if (t.isStringLiteral(tag.node.name)) {\n        relativePath = resolveRelativeTagEntry(file, tagDef);\n      }\n\n      if (tagDef.translator && tagDef.translator.path) {\n        meta.watchFiles.push(tagDef.translator.path);\n      }\n    }\n\n    if (!relativePath && t.isStringLiteral(tag.node.name)) {\n      const tagName = tag.node.name.value;\n      const binding =\n        /^[A-Z][a-zA-Z0-9_$]*$/.test(tagName) && tag.scope.getBinding(tagName);\n      if (binding && binding.kind === \"module\" && binding.identifier.loc) {\n        const importSource = binding.path.parent.source.value;\n        relativePath = resolveTagImport(tag, importSource) || importSource;\n        tag.node.extra = tag.node.extra || {};\n        tag.node.extra.tagNameImported = relativePath;\n      }\n    }\n\n    if (relativePath) {\n      tag.node.extra = tag.node.extra || {};\n      tag.node.extra.relativePath = relativePath;\n\n      if (!meta.tags.includes(relativePath)) {\n        meta.tags.push(relativePath);\n      }\n\n      const childFile = loadFileForTag(tag);\n      if (childFile?.ast.program.extra?.featureType === \"tags\") {\n        tag.node.extra.featureType = \"tags\";\n        (file.path.node.extra ??= {}).needsCompat = true;\n      }\n    }\n\n    if (!(meta.hasFunctionEventHandlers || meta.hasStringEventHandlers)) {\n      for (const attr of tag.node.attributes) {\n        if (\n          t.isMarkoAttribute(attr) &&\n          attr.arguments &&\n          /^on[-A-Z]/.test(attr.name)\n        ) {\n          if (\n            attr.arguments.length >= 1 &&\n            attr.arguments[0].type === \"StringLiteral\"\n          ) {\n            meta.hasStringEventHandlers = true;\n          } else {\n            meta.hasFunctionEventHandlers = true;\n          }\n          break;\n        }\n      }\n    }\n\n    if (\n      meta.hasStatefulTagParams ||\n      isNativeTag(tag) ||\n      isMacroTag(tag) ||\n      !tag.get(\"body\").get(\"params\").length\n    ) {\n      return;\n    }\n\n    if (isDynamicTag(tag)) {\n      meta.hasStatefulTagParams = true;\n      return;\n    }\n\n    let curTag = tag;\n    while (isAttributeTag(curTag)) {\n      curTag = findParentTag(curTag);\n    }\n\n    const tagFile = loadFileForTag(curTag);\n    const childMeta = tagFile && tagFile.metadata.marko;\n    meta.hasStatefulTagParams =\n      childMeta &&\n      (childMeta.hasStatefulTagParams ||\n        childMeta.hasFunctionEventHandlers ||\n        (childMeta.hasComponent && !childMeta.hasComponentBrowser));\n  },\n  ImportDeclaration: {\n    exit(path) {\n      const source = path.get(\"source\");\n      const tagEntry = resolveTagImport(source, source.node.value);\n\n      if (tagEntry) {\n        const meta = path.hub.file.metadata.marko;\n        source.node.value = tagEntry;\n\n        if (!meta.tags.includes(tagEntry)) {\n          meta.tags.push(tagEntry);\n        }\n      }\n    },\n  },\n};\n\nexport const translate = {\n  MarkoDocumentType,\n  MarkoDeclaration,\n  MarkoCDATA,\n  MarkoTag,\n  MarkoText,\n  MarkoPlaceholder,\n  MarkoScriptlet,\n  MarkoClass,\n  MarkoComment,\n  ReferencedIdentifier(path) {\n    if (path.node.name === \"component\" && !path.scope.hasBinding(\"component\")) {\n      path.replaceWith(path.hub.file._componentInstanceIdentifier);\n    }\n  },\n  Program: {\n    enter(path) {\n      const {\n        hub: { file },\n      } = path;\n\n      if (file.markoOpts.output === \"hydrate\") {\n        addDependencies(file, true);\n        return;\n      } else if (\n        file.markoOpts.resolveVirtualDependency &&\n        file.markoOpts.output !== \"html\"\n      ) {\n        addDependencies(file, false);\n      }\n\n      if (file.metadata.marko.moduleCode) {\n        path\n          .replaceWith(\n            t.program(\n              parseStatements(file, file.metadata.marko.moduleCode),\n              undefined,\n              file.markoOpts.modules === \"cjs\" ? \"script\" : \"module\",\n            ),\n          )[0]\n          .skip();\n        return;\n      }\n\n      file._componentDefIdentifier =\n        path.scope.generateUidIdentifier(\"componentDef\");\n\n      file._componentInstanceIdentifier =\n        path.scope.generateUidIdentifier(\"component\");\n\n      // Pre-Analyze tree\n      analyzeStaticVDOM(path);\n\n      // Move non static content into the renderBody.\n      const [renderBlock] = path.pushContainer(\"body\", t.blockStatement([]));\n      path\n        .get(\"body\")\n        .filter(isRenderContent)\n        .forEach((childPath) => {\n          renderBlock.pushContainer(\"body\", childPath.node);\n          childPath.remove();\n        });\n\n      file._renderBlock = renderBlock;\n      path.scope.crawl();\n    },\n    exit(path) {\n      const {\n        hub: { file },\n      } = path;\n      const { markoOpts, _inlineComponentClass } = file;\n      const includeMetaInSource = markoOpts.meta !== false;\n      const meta = file.metadata.marko;\n      const { componentFile, componentBrowserFile } = getComponentFiles(path);\n      const isHTML = markoOpts.output === \"html\";\n\n      const renderBlock = file._renderBlock;\n      const componentClass =\n        (componentFile &&\n          importDefault(\n            file,\n            resolveRelativePath(file, componentFile),\n            \"marko_component\",\n          )) ||\n        _inlineComponentClass ||\n        t.objectExpression([]);\n\n      const componentIdentifier =\n        path.scope.generateUidIdentifier(\"marko_component\");\n      const componentTypeIdentifier = path.scope.generateUidIdentifier(\n        \"marko_componentType\",\n      );\n      const templateIdentifier =\n        path.scope.generateUidIdentifier(\"marko_template\");\n      const rendererIdentifier = importDefault(\n        file,\n        \"marko/src/runtime/components/renderer.js\",\n        \"marko_renderer\",\n      );\n      const templateRendererMember = t.memberExpression(\n        templateIdentifier,\n        t.identifier(\"_\"),\n      );\n      const templateMetaMember = t.memberExpression(\n        templateIdentifier,\n        t.identifier(\"meta\"),\n      );\n\n      if (markoOpts.writeVersionComment) {\n        path.addComment(\n          \"leading\",\n          ` Compiled using marko@${version} - DO NOT EDIT`,\n          true,\n        );\n      }\n\n      const runtimeTemplateIdentifier = path.scope.generateUidIdentifier(\"t\");\n\n      path.unshiftContainer(\n        \"body\",\n        [\n          path.node.extra?.needsCompat &&\n            t.importDeclaration(\n              [],\n              t.stringLiteral(\n                `marko/${markoOpts.optimize ? \"dist\" : \"src\"}/runtime/helpers/tags-compat/${\n                  markoOpts.output === \"html\" ? \"html\" : \"dom\"\n                }${markoOpts.optimize ? \"\" : \"-debug\"}.${markoOpts.modules === \"esm\" ? \"mjs\" : \"js\"}`,\n              ),\n            ),\n          t.importDeclaration(\n            [t.importSpecifier(runtimeTemplateIdentifier, t.identifier(\"t\"))],\n            t.stringLiteral(\n              `marko/${markoOpts.optimize ? \"dist\" : \"src\"}/runtime/${\n                isHTML ? \"html\" : \"vdom\"\n              }/${markoOpts.hot ? \"hot-reload.js\" : \"index.js\"}`,\n            ),\n          ),\n          t.variableDeclaration(\"const\", [\n            t.variableDeclarator(\n              componentTypeIdentifier,\n              t.stringLiteral(meta.id),\n            ),\n            t.variableDeclarator(\n              templateIdentifier,\n              t.callExpression(runtimeTemplateIdentifier, [\n                componentTypeIdentifier,\n              ]),\n            ),\n          ]),\n          includeMetaInSource &&\n            t.expressionStatement(\n              t.assignmentExpression(\n                \"=\",\n                t.memberExpression(templateIdentifier, t.identifier(\"path\")),\n                t.identifier(\"__filename\"),\n              ),\n            ),\n          t.exportDefaultDeclaration(templateIdentifier),\n        ].filter(Boolean),\n      );\n\n      path.pushContainer(\n        \"body\",\n        [\n          !isHTML &&\n            t.expressionStatement(\n              t.callExpression(\n                importNamed(\n                  file,\n                  \"marko/src/runtime/components/registry.js\",\n                  \"r\",\n                  \"marko_registerComponent\",\n                ),\n                [\n                  componentTypeIdentifier,\n                  t.arrowFunctionExpression(\n                    [],\n                    componentBrowserFile && !meta.implicitSplitComponent\n                      ? importDefault(\n                          file,\n                          resolveRelativePath(file, componentBrowserFile),\n                          \"marko_split_component\",\n                        )\n                      : templateIdentifier,\n                  ),\n                ],\n              ),\n            ),\n          t.variableDeclaration(\"const\", [\n            t.variableDeclarator(componentIdentifier, componentClass),\n          ]),\n        ].filter(Boolean),\n      );\n\n      const templateRenderOptionsProps = [\n        t.objectProperty(t.identifier(\"t\"), componentTypeIdentifier),\n      ];\n\n      if (!meta.component) {\n        templateRenderOptionsProps.push(\n          t.objectProperty(t.identifier(\"i\"), t.booleanLiteral(true)),\n        );\n      }\n\n      if (componentBrowserFile) {\n        templateRenderOptionsProps.push(\n          t.objectProperty(t.identifier(\"s\"), t.booleanLiteral(true)),\n        );\n      }\n\n      if (!markoOpts.optimize) {\n        templateRenderOptionsProps.push(\n          t.objectProperty(t.identifier(\"d\"), t.booleanLiteral(true)),\n        );\n      }\n\n      let inputName = \"input\";\n\n      if (meta.implicitSplitComponent && isHTML) {\n        inputName = path.scope.generateUid(inputName);\n        renderBlock.unshiftContainer(\n          \"body\",\n          t.variableDeclaration(\"const\", [\n            t.variableDeclarator(\n              t.identifier(\"input\"),\n              t.callExpression(\n                importDefault(\n                  file,\n                  \"marko/src/runtime/helpers/skip-serialize.js\",\n                  \"marko_skip_serialize\",\n                ),\n                [t.identifier(inputName)],\n              ),\n            ),\n          ]),\n        );\n      }\n\n      let rendererAssignment = t.assignmentExpression(\n        \"=\",\n        templateRendererMember,\n        t.callExpression(rendererIdentifier, [\n          t.functionExpression(\n            null,\n            [\n              t.identifier(inputName),\n              t.identifier(\"out\"),\n              file._componentDefIdentifier,\n              file._componentInstanceIdentifier,\n              t.identifier(\"state\"),\n              t.identifier(\"$global\"),\n            ],\n            renderBlock.node,\n          ),\n          t.objectExpression(templateRenderOptionsProps),\n          componentIdentifier,\n        ]),\n      );\n\n      if (!isHTML && componentBrowserFile && !meta.implicitSplitComponent) {\n        rendererAssignment = t.assignmentExpression(\n          \"=\",\n          t.memberExpression(\n            importDefault(\n              file,\n              resolveRelativePath(file, componentBrowserFile),\n              \"marko_split_component\",\n            ),\n            t.identifier(\"renderer\"),\n          ),\n          rendererAssignment,\n        );\n      }\n\n      path.pushContainer(\"body\", t.expressionStatement(rendererAssignment));\n\n      renderBlock.remove();\n\n      if (!isHTML) {\n        path.pushContainer(\n          \"body\",\n          t.expressionStatement(\n            t.assignmentExpression(\n              \"=\",\n              t.memberExpression(templateIdentifier, t.identifier(\"Component\")),\n              t.callExpression(\n                importDefault(\n                  file,\n                  \"marko/src/runtime/components/defineComponent.js\",\n                  \"marko_defineComponent\",\n                ),\n                [componentIdentifier, templateRendererMember],\n              ),\n            ),\n          ),\n        );\n      }\n\n      if (includeMetaInSource) {\n        const metaObject = t.objectExpression([\n          t.objectProperty(t.identifier(\"id\"), componentTypeIdentifier),\n        ]);\n\n        if (meta.component) {\n          metaObject.properties.push(\n            t.objectProperty(\n              t.identifier(\"component\"),\n              t.stringLiteral(meta.component),\n            ),\n          );\n        }\n\n        if (meta.deps.length) {\n          metaObject.properties.push(\n            t.objectProperty(\n              t.identifier(\"deps\"),\n              parseExpression(file, JSON.stringify(meta.deps)),\n            ),\n          );\n        }\n\n        if (meta.tags.length) {\n          metaObject.properties.push(\n            t.objectProperty(\n              t.identifier(\"tags\"),\n              t.arrayExpression(meta.tags.map((tag) => t.stringLiteral(tag))),\n            ),\n          );\n        }\n\n        path.pushContainer(\n          \"body\",\n          t.expressionStatement(\n            t.assignmentExpression(\"=\", templateMetaMember, metaObject),\n          ),\n        );\n      }\n\n      optimizeHTMLWrites(path);\n    },\n  },\n};\n\nexport function getRuntimeEntryFiles(output, optimize) {\n  const base = `marko/${optimize ? \"dist\" : \"src\"}/`;\n\n  return [\n    `${base}runtime/components/index.js`,\n    `${base}runtime/components/defineComponent.js`,\n    `${base}runtime/components/renderer.js`,\n    `${base}runtime/components/registry.js`,\n    `${base}runtime/components/attach-detach.js`,\n    `${base}runtime/helpers/assign.js`,\n    `${base}runtime/helpers/class-value.js`,\n    `${base}runtime/helpers/of-fallback.js`,\n    `${base}runtime/helpers/dynamic-tag.js`,\n    `${base}runtime/helpers/attr-tag.js`,\n    `${base}runtime/helpers/merge.js`,\n    `${base}runtime/helpers/render-tag.js`,\n    `${base}runtime/helpers/style-value.js`,\n    `${base}runtime/helpers/to-string.js`,\n    `${base}runtime/helpers/empty-component.js`,\n    `${base}core-tags/components/preserve-tag.js`,\n    ...(output === \"html\"\n      ? [\n          `${base}runtime/html/index.js`,\n          `${base}runtime/html/hot-reload.js`,\n          `${base}runtime/html/helpers/attr.js`,\n          `${base}runtime/html/helpers/attrs.js`,\n          `${base}runtime/html/helpers/class-attr.js`,\n          `${base}runtime/html/helpers/data-marko.js`,\n          `${base}runtime/html/helpers/escape-script-placeholder.js`,\n          `${base}runtime/html/helpers/escape-style-placeholder.js`,\n          `${base}runtime/html/helpers/escape-xml.js`,\n          `${base}runtime/html/helpers/merge-attrs.js`,\n          `${base}runtime/html/helpers/props-script.js`,\n          `${base}runtime/html/helpers/style-attr.js`,\n          `${base}core-tags/components/init-components-tag.js`,\n          `${base}core-tags/components/preferred-script-location-tag.js`,\n          `${base}core-tags/core/__flush_here_and_after__.js`,\n          `${base}core-tags/core/await/renderer.js`,\n          `${base}core-tags/core/await/reorderer-renderer.js`,\n          `${base}runtime/helpers/skip-serialize.js`,\n          `${base}runtime/helpers/tags-compat/html${optimize ? \"\" : \"-debug\"}.mjs`,\n        ]\n      : [\n          `${base}runtime/vdom/index.js`,\n          `${base}runtime/vdom/hot-reload.js`,\n          `${base}runtime/vdom/helpers/attrs.js`,\n          `${base}runtime/vdom/helpers/const-element.js`,\n          `${base}runtime/helpers/tags-compat/dom${optimize ? \"\" : \"-debug\"}.mjs`,\n        ]),\n  ];\n}\n\nfunction isRenderContent({ node }) {\n  return /^Marko/.test(node.type) && !node.static;\n}\n\nfunction resolveRelativeTagEntry(file, tagDef) {\n  // TODO: support transform and other entries.\n  const entry = tagDef.template || tagDef.renderer;\n  return entry && resolveRelativePath(file, entry);\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/placeholder/index.js",
    "content": "import translateHTML from \"./index[html]\";\nimport translateVDOM from \"./index[vdom]\";\n\nexport default function (path) {\n  const {\n    hub: {\n      file: { markoOpts },\n    },\n  } = path;\n  if (markoOpts.output === \"html\") {\n    translateHTML(path);\n  } else {\n    translateVDOM(path);\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/placeholder/index[html].js",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  computeNode,\n  getTagDef,\n  importDefault,\n  importNamed,\n} from \"@marko/compiler/babel-utils\";\nimport toString from \"marko/src/runtime/helpers/to-string\";\nimport escapeScript from \"marko/src/runtime/html/helpers/escape-script-placeholder\";\nimport escapeStyle from \"marko/src/runtime/html/helpers/escape-style-placeholder\";\nimport { x as escapeXML } from \"marko/src/runtime/html/helpers/escape-xml\";\n\nimport write from \"../util/html-out-write\";\nimport withPreviousLocation from \"../util/with-previous-location\";\n\nconst ESCAPE_TYPES = {\n  html: {\n    name: \"x\",\n    module: \"marko/src/runtime/html/helpers/escape-xml.js\",\n    alias: \"marko_escapeXml\",\n    fn: escapeXML,\n  },\n  script: {\n    module: \"marko/src/runtime/html/helpers/escape-script-placeholder.js\",\n    alias: \"marko_escapeScript\",\n    fn: escapeScript,\n  },\n  style: {\n    module: \"marko/src/runtime/html/helpers/escape-style-placeholder.js\",\n    alias: \"marko_escapeStyle\",\n    fn: escapeStyle,\n  },\n};\n\nexport default function (path) {\n  const {\n    node,\n    hub: { file },\n  } = path;\n  const computed = computeNode(node.value);\n  let { escape, value } = node;\n\n  if (escape) {\n    const tagName = findParentTagName(path);\n    const escapeType = ESCAPE_TYPES[tagName] || ESCAPE_TYPES.html;\n\n    value = computed\n      ? t.stringLiteral(escapeType.fn(computed.value))\n      : t.callExpression(\n          escapeType.name\n            ? importNamed(\n                file,\n                escapeType.module,\n                escapeType.name,\n                escapeType.alias,\n              )\n            : importDefault(file, escapeType.module, escapeType.alias),\n          [value],\n        );\n  } else {\n    value = computed\n      ? t.stringLiteral(toString(computed.value))\n      : t.callExpression(\n          importDefault(\n            file,\n            \"marko/src/runtime/helpers/to-string.js\",\n            \"marko_to_string\",\n          ),\n          [value],\n        );\n  }\n\n  const replacement = write`${value}`;\n\n  if (replacement) {\n    path.replaceWith(withPreviousLocation(replacement, node));\n  } else {\n    path.remove();\n  }\n}\n\nfunction findParentTagName(path) {\n  while ((path = path.parentPath)) {\n    if (path.isProgram()) {\n      return;\n    }\n\n    if (path.isMarkoTag()) {\n      const tagDef = getTagDef(path);\n      return tagDef && tagDef.html && path.get(\"name.value\").node;\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/placeholder/index[vdom].js",
    "content": "import { computeNode } from \"@marko/compiler/babel-utils\";\n\nimport write from \"../util/vdom-out-write\";\nimport withPreviousLocation from \"../util/with-previous-location\";\n\nexport default function (path) {\n  const { node } = path;\n  const { escape, value } = node;\n  const method = escape ? \"t\" : \"h\";\n  const computed = computeNode(value);\n\n  if (computed && computed.value == null) {\n    path.remove();\n  } else {\n    path.replaceWith(\n      withPreviousLocation(\n        write(method, value, path.hub.file._componentInstanceIdentifier),\n        node,\n      ),\n    );\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/scriptlet.js",
    "content": "import { types as t } from \"@marko/compiler\";\n\nexport default function (path) {\n  const { node } = path;\n  const isHTML = path.hub.file.markoOpts.output === \"html\";\n  switch (node.target) {\n    case \"server\":\n      if (!isHTML) {\n        replaceWithUndefinedIdentifiers(path);\n        return;\n      }\n      break;\n    case \"client\":\n      if (isHTML) {\n        replaceWithUndefinedIdentifiers(path);\n        return;\n      }\n      break;\n  }\n  path.replaceWithMultiple(node.body);\n}\n\nfunction replaceWithUndefinedIdentifiers(path) {\n  const keys = Object.keys(path.getOuterBindingIdentifiers());\n  if (keys.length) {\n    path.replaceWith(\n      t.variableDeclaration(\n        \"var\",\n        keys.map((key) => t.variableDeclarator(t.identifier(key))),\n      ),\n    );\n  } else {\n    path.remove();\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/tag/attribute/directives/class.js",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  computeNode,\n  importDefault,\n  isNativeTag,\n} from \"@marko/compiler/babel-utils\";\nimport classToString from \"marko/src/runtime/helpers/class-value\";\n\nimport withPreviousLocation from \"../../../util/with-previous-location\";\n\nexport default {\n  exit(tag, _, value) {\n    const {\n      hub: { file },\n    } = tag;\n    if (!isNativeTag(tag)) return;\n\n    const computed = computeNode(value.node);\n    if (computed) {\n      const str = classToString(computed.value);\n      if (str) {\n        value.replaceWith(t.stringLiteral(str));\n      } else {\n        value.parentPath.remove();\n      }\n    } else if (!value.isTemplateLiteral()) {\n      value.replaceWith(\n        withPreviousLocation(\n          t.callExpression(\n            importDefault(\n              file,\n              \"marko/src/runtime/helpers/class-value.js\",\n              \"marko_class_merge\",\n            ),\n            [value.node],\n          ),\n          value.node,\n        ),\n      );\n    }\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/src/translator/tag/attribute/directives/index.js",
    "content": "import classPlugin from \"./class\";\nimport noUpdatePlugin from \"./no-update\";\nimport noUpdateBodyPlugin from \"./no-update-body\";\nimport noUpdateBodyIfPlugin from \"./no-update-body-if\";\nimport noUpdateIfPlugin from \"./no-update-if\";\nimport stylePlugin from \"./style\";\n\nexport default {\n  class: classPlugin,\n  style: stylePlugin,\n  \"no-update\": noUpdatePlugin,\n  \"no-update-if\": noUpdateIfPlugin,\n  \"no-update-body\": noUpdateBodyPlugin,\n  \"no-update-body-if\": noUpdateBodyIfPlugin,\n};\n"
  },
  {
    "path": "packages/runtime-class/src/translator/tag/attribute/directives/no-update-body-if.js",
    "content": "import { getArgOrSequence } from \"@marko/compiler/babel-utils\";\n\nimport noUpdateTransform from \"./no-update\";\n\nexport default {\n  enter(tag) {\n    tag.node.isPreserved = true;\n  },\n  exit(tag, attr, value) {\n    noUpdateTransform.exit(tag, attr, value, {\n      if: getArgOrSequence(attr),\n      bodyOnly: true,\n    });\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/src/translator/tag/attribute/directives/no-update-body.js",
    "content": "import noUpdateTransform from \"./no-update\";\n\nexport default {\n  enter(tag) {\n    tag.node.isPreserved = true;\n  },\n  exit(tag, attr, value) {\n    noUpdateTransform.exit(tag, attr, value, { bodyOnly: true });\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/src/translator/tag/attribute/directives/no-update-if.js",
    "content": "import { getArgOrSequence } from \"@marko/compiler/babel-utils\";\n\nimport noUpdateTransform from \"./no-update\";\n\nexport default {\n  enter(tag) {\n    tag.node.isPreserved = true;\n  },\n  exit(tag, attr, value) {\n    noUpdateTransform.exit(tag, attr, value, { if: getArgOrSequence(attr) });\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/src/translator/tag/attribute/directives/no-update.js",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  isNativeTag,\n  normalizeTemplateString,\n} from \"@marko/compiler/babel-utils\";\nconst EMPTY_OBJECT = {};\n\nexport default {\n  enter(tag) {\n    tag.node.isPreserved = true;\n  },\n  exit(tag, attr, _, opts = EMPTY_OBJECT) {\n    attr.remove();\n    const { node } = tag;\n    const replacement = t.markoTag(\n      t.stringLiteral(\"_preserve\"),\n      [],\n      opts.bodyOnly ? node.body : t.markoTagBody([node]),\n    );\n\n    if (isNativeTag(tag)) {\n      replacement.key = node.key;\n      replacement.attributes.push(\n        t.markoAttribute(\"n\", t.booleanLiteral(true)),\n      );\n\n      if (opts.bodyOnly) {\n        replacement.attributes.push(\n          t.markoAttribute(\"b\", t.booleanLiteral(true)),\n        );\n      }\n    } else {\n      replacement.key = normalizeTemplateString`p_${node.key}`;\n    }\n\n    replacement.isPreserved = true;\n\n    if (opts.if) {\n      replacement.attributes.push(t.markoAttribute(\"i\", opts.if));\n    }\n\n    if (opts.bodyOnly) {\n      tag.set(\"body\", t.markoTagBody([replacement]));\n    } else {\n      tag.replaceWith(replacement);\n    }\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/src/translator/tag/attribute/directives/style.js",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  computeNode,\n  importDefault,\n  isNativeTag,\n} from \"@marko/compiler/babel-utils\";\nimport styleToString from \"marko/src/runtime/helpers/style-value\";\n\nimport withPreviousLocation from \"../../../util/with-previous-location\";\n\nexport default {\n  exit(tag, _, value) {\n    const {\n      hub: { file },\n    } = tag;\n    if (!isNativeTag(tag)) return;\n\n    const computed = computeNode(value.node);\n    if (computed) {\n      const str = styleToString(computed.value);\n      if (str) {\n        value.replaceWith(t.stringLiteral(str));\n      } else {\n        value.parentPath.remove();\n      }\n    } else if (!value.isTemplateLiteral()) {\n      value.replaceWith(\n        withPreviousLocation(\n          t.callExpression(\n            importDefault(\n              file,\n              \"marko/src/runtime/helpers/style-value.js\",\n              \"marko_style_merge\",\n            ),\n            [value.node],\n          ),\n          value.node,\n        ),\n      );\n    }\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/src/translator/tag/attribute/index.js",
    "content": "import {\n  getTagDef,\n  importDefault,\n  isNativeTag,\n} from \"@marko/compiler/babel-utils\";\n\nimport directives from \"./directives\";\nimport modifiers from \"./modifiers\";\n\nconst EMPTY_ARRAY = [];\nconst EVENT_REG = /^(on(?:ce)?)(-)?(.*)$/;\nconst attachedDetachedLoaded = new WeakSet();\n\nexport default {\n  enter(attr) {\n    const {\n      hub: { file },\n    } = attr;\n    const tag = attr.parentPath;\n    const value = attr.get(\"value\");\n    const { name, arguments: args } = attr.node;\n    const isVDOM = file.markoOpts.output !== \"html\";\n\n    if (execModifiersAndDirectives(\"enter\", tag, attr, value)) {\n      return;\n    }\n\n    // Event handlers.\n    let [, eventType, isDash, eventName] = EVENT_REG.exec(name) || EMPTY_ARRAY;\n\n    if (eventType && args) {\n      if (!args.length) {\n        throw attr.buildCodeFrameError(\"Event handler is missing arguments.\");\n      }\n\n      if (!value.isBooleanLiteral(true)) {\n        throw value.buildCodeFrameError(\n          `\"${name}(handler, ...args)\" does not accept a value.`,\n        );\n      }\n\n      if (!isDash) {\n        // When the event is not in dash case we normalized differently for html tags and custom tags.\n\n        if (isNativeTag(tag)) {\n          // Lowercase the string\n          // Example: onMouseOver → mouseover\n          eventName = eventName.toLowerCase();\n        } else {\n          // Convert first character to lower case:\n          // Example: onBeforeShow → beforeShow\n          eventName = eventName.charAt(0).toLowerCase() + eventName.slice(1);\n        }\n      }\n\n      const handlers = (tag.node.handlers = tag.node.handlers || {});\n      if (handlers[eventName]) {\n        throw attr.buildCodeFrameError(\n          \"Duplicate event handlers are not supported.\",\n        );\n      }\n\n      handlers[eventName] = {\n        arguments: args,\n        once: eventType === \"once\",\n      };\n\n      if (isVDOM) {\n        if (eventName === \"attach\" || eventName === \"detach\") {\n          if (!attachedDetachedLoaded.has(file)) {\n            // Pull in helper for element attach/detach;\n            attachedDetachedLoaded.add(file);\n            importDefault(\n              file,\n              \"marko/src/runtime/components/attach-detach.js\",\n            );\n          }\n        }\n      }\n\n      attr.remove();\n      return;\n    }\n  },\n  exit(attr) {\n    const tag = attr.parentPath;\n    const { name, arguments: args } = attr.node;\n    const value = attr.get(\"value\");\n\n    if (execModifiersAndDirectives(\"exit\", tag, attr, value)) {\n      return;\n    }\n\n    const tagDef = getTagDef(tag);\n\n    if (tagDef) {\n      if (!tagDef.html && !tagDef.getAttribute(name)) {\n        throw attr.buildCodeFrameError(\n          `<${\n            tag.get(\"name.value\").node\n          }> does not support the \"${name}\" attribute.`,\n        );\n      }\n    }\n\n    if (args && args.length) {\n      throw attr.buildCodeFrameError(\n        `Unsupported arguments on the \"${name}\" attribute.`,\n      );\n    }\n\n    if (attr.node.bound) {\n      throw attr.buildCodeFrameError(\n        `The binding syntax (:=) is only supported when using the \"Tags API\".`,\n      );\n    }\n  },\n};\n\nfunction execModifiersAndDirectives(type, tag, attr, value) {\n  const { node } = attr;\n  const { name, modifier } = node;\n\n  if (modifier) {\n    const modifierTranslate = modifiers[modifier];\n    if (modifierTranslate) {\n      if (modifierTranslate[type]) {\n        const tagNode = tag.node;\n        const attrNode = attr.node;\n        modifierTranslate[type](tag, attr, value);\n        if (tag.node !== tagNode || attr.node !== attrNode) return true;\n      }\n    } else if (name === \"xlink\" && modifier === \"href\" && isNativeTag(tag)) {\n      node.name += `:${modifier}`;\n      node.modifier = undefined;\n    } else {\n      throw attr.buildCodeFrameError(`Unsupported modifier \"${modifier}\".`);\n    }\n  }\n\n  const directiveTranslate = directives[name];\n  if (directiveTranslate) {\n    if (directiveTranslate[type]) {\n      const tagNode = tag.node;\n      const attrNode = attr.node;\n      directiveTranslate[type](tag, attr, value);\n      if (tag.node !== tagNode || attr.node !== attrNode) return true;\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/tag/attribute/modifiers/index.js",
    "content": "import noUpdatePlugin from \"./no-update\";\nimport scopedPlugin from \"./scoped\";\n\nexport default {\n  scoped: scopedPlugin,\n  \"no-update\": noUpdatePlugin,\n};\n"
  },
  {
    "path": "packages/runtime-class/src/translator/tag/attribute/modifiers/no-update.js",
    "content": "/**\n * Does nothing in html mode.\n */\nexport default {\n  exit(tag, attr) {\n    const { node } = tag;\n\n    if (!node.preserveAttrs) {\n      node.preserveAttrs = [];\n    }\n\n    node.preserveAttrs.push(attr.node.name);\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/src/translator/tag/attribute/modifiers/scoped.js",
    "content": "import { types as t } from \"@marko/compiler\";\n\nimport withPreviousLocation from \"../../../util/with-previous-location\";\n\nconst seen = new WeakSet();\n\nexport default {\n  exit(tag, _, value) {\n    const {\n      hub: { file },\n    } = tag;\n\n    if (seen.has(value.node)) {\n      return;\n    }\n\n    const replacement = withPreviousLocation(\n      t.callExpression(\n        t.memberExpression(file._componentDefIdentifier, t.identifier(\"elId\")),\n        [value.node],\n      ),\n      value.node,\n    );\n\n    seen.add(replacement);\n    value.replaceWith(replacement);\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/src/translator/tag/attribute-tag.js",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  assertNoArgs,\n  findParentTag,\n  getFullyResolvedTagName,\n  getTagDef,\n  importNamed,\n  isAttributeTag,\n  isTransparentTag,\n} from \"@marko/compiler/babel-utils\";\n\nimport { getAttrs } from \"./util\";\n\nconst attributeTagsForTag = new WeakMap();\nconst contentTypeCache = new WeakMap();\nconst ContentType = {\n  attribute: 0,\n  render: 1,\n  mixed: 2,\n};\n\nexport function analyzeAttributeTags(rootTag) {\n  const visit = [rootTag];\n  const parentTags = [rootTag];\n  let i = 0;\n  let attributeTags;\n\n  while (i < visit.length) {\n    const tag = visit[i++];\n    const attrTags = tag.node.body.attributeTags\n      ? tag.get(\"body\").get(\"body\")\n      : tag.get(\"attributeTags\");\n    for (const child of attrTags) {\n      if (isAttributeTag(child)) {\n        assertNoArgs(child);\n        const tagDef = getTagDef(child) || {};\n        const name = getFullyResolvedTagName(child);\n        let {\n          targetProperty = child.node.name.value.slice(1),\n          isRepeated = false,\n        } = tagDef;\n\n        const preserveName =\n          tagDef.preserveName === true || tagDef.removeDashes === false;\n\n        if (!preserveName) {\n          targetProperty = removeDashes(targetProperty);\n        }\n\n        const attrTagMeta = ((attributeTags ||= {})[name] ||= {\n          targetProperty,\n          isRepeated,\n        });\n\n        (child.node.extra ||= {}).attributeTag = attrTagMeta;\n\n        const parentTag = findParentTag(child);\n        const parentTagExtra = (parentTag.node.extra ||= {});\n        const parentSeenAttributeTagProperties =\n          attributeTagsForTag.get(parentTag);\n        let hasAttributeTags = false;\n\n        if (!parentSeenAttributeTagProperties) {\n          parentTagExtra.hasAttributeTags = true;\n          attributeTagsForTag.set(parentTag, new Set([targetProperty]));\n        } else if (parentSeenAttributeTagProperties.has(targetProperty)) {\n          hasAttributeTags = true;\n        } else {\n          parentSeenAttributeTagProperties.add(targetProperty);\n        }\n\n        if (!hasAttributeTags) {\n          if (\n            parentTag\n              .get(\"attributes\")\n              .some(\n                (attr) =>\n                  attr.isMarkoSpreadAttribute() ||\n                  attr.node.name === targetProperty,\n              )\n          ) {\n            parentTag.pushContainer(\n              \"attributes\",\n              t.markoAttribute(\n                targetProperty,\n                t.unaryExpression(\"void\", t.numericLiteral(0)),\n              ),\n            );\n          }\n        }\n\n        parentTags.push(child);\n        visit.push(child);\n      } else if (isTransparentTag(child)) {\n        visit.push(child);\n      }\n    }\n  }\n\n  if (attributeTags) {\n    (rootTag.node.extra ??= {}).attributeTags = attributeTags;\n  }\n}\n\nexport default function translateAttributeTag(tag) {\n  const { node } = tag;\n  const meta = node.extra?.attributeTag;\n  if (!meta) {\n    throw tag\n      .get(\"name\")\n      .buildCodeFrameError(\"@tags must be nested within another element.\");\n  }\n\n  assertNoArgs(tag);\n\n  tag.replaceWith(\n    t.expressionStatement(\n      t.callExpression(\n        importNamed(\n          tag.hub.file,\n          \"marko/src/runtime/helpers/attr-tag.js\",\n          meta.isRepeated ? \"r\" : \"a\",\n          meta.isRepeated\n            ? \"marko_repeated_attr_tag\"\n            : \"marko_repeatable_attr_tag\",\n        ),\n        [t.stringLiteral(meta.targetProperty), getAttrTagObject(tag)],\n      ),\n    ),\n  );\n}\n\nfunction getAttrTagObject(tag) {\n  const attrs = getAttrs(tag, false, true);\n\n  if (t.isNullLiteral(attrs)) {\n    return t.objectExpression([]);\n  }\n\n  return attrs;\n}\n\nfunction removeDashes(str) {\n  return str.replace(/-([a-z])/g, matchToUpperCase);\n}\n\nfunction matchToUpperCase(_match, lower) {\n  return lower.toUpperCase();\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/tag/custom-tag.js",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  assertNoArgs,\n  getTagDef,\n  importDefault,\n  loadFileForTag,\n  resolveRelativePath,\n  resolveTagImport,\n} from \"@marko/compiler/babel-utils\";\n\nimport withPreviousLocation from \"../util/with-previous-location\";\nimport dynamicTag from \"./dynamic-tag\";\nimport nativeTag from \"./native-tag\";\nimport { buildEventHandlerArray, getAttrs } from \"./util\";\n\nexport default function (path, isNullable) {\n  const {\n    hub: { file },\n    node,\n  } = path;\n  const { markoOpts } = file;\n  const { name, key } = node;\n\n  assertNoArgs(path);\n\n  let tagIdentifier;\n\n  if (node.extra?.featureType === \"tags\") {\n    path.set(\n      \"name\",\n      path.scope.hasBinding(name.value)\n        ? t.identifier(name.value)\n        : importDefault(file, node.extra.relativePath, name.value),\n    );\n    return dynamicTag(path);\n  }\n\n  if (t.isStringLiteral(name)) {\n    const tagName = name.value;\n    let relativePath = node.extra && node.extra.relativePath;\n\n    if (!relativePath) {\n      const tagDef = getTagDef(path);\n      if (tagDef && tagDef.renderer) {\n        // Normally new tags should not be added in the translate stage.\n        // We make an exception here for core tags, init-components & _preserve being the primary culprits.\n        // TODO: in the future refactor so this is not needed.\n        relativePath = resolveRelativePath(file, tagDef.renderer);\n      }\n    }\n\n    let binding = !relativePath && path.scope.getBinding(tagName);\n    if (binding && !binding.identifier.loc) binding = null;\n\n    if (relativePath) {\n      tagIdentifier = importDefault(file, relativePath, tagName);\n    } else if (binding) {\n      path.set(\"name\", t.identifier(tagName));\n      return dynamicTag(path);\n    } else if (markoOpts.ignoreUnrecognizedTags) {\n      return nativeTag(path);\n    } else {\n      throw path\n        .get(\"name\")\n        .buildCodeFrameError(\n          `Unable to find entry point for custom tag <${tagName}>.`,\n        );\n    }\n  } else {\n    tagIdentifier = name;\n  }\n\n  const foundAttrs = getAttrs(path);\n  const customTagRenderCall = withPreviousLocation(\n    t.expressionStatement(\n      t.callExpression(\n        importDefault(\n          file,\n          \"marko/src/runtime/helpers/render-tag.js\",\n          \"marko_tag\",\n        ),\n        [\n          tagIdentifier,\n          // TODO: this could be left as null if we froze input mutations and used a default object in the runtime.\n          t.isNullLiteral(foundAttrs) ? t.objectExpression([]) : foundAttrs,\n          t.identifier(\"out\"),\n          file._componentDefIdentifier,\n          key,\n          ...buildEventHandlerArray(path),\n        ],\n      ),\n    ),\n    node,\n  );\n\n  if (isNullable) {\n    let renderBodyIdentifier;\n    const renderBodyProp =\n      t.isObjectExpression(foundAttrs) &&\n      foundAttrs.properties.find(\n        (prop) => prop.key && prop.key.value === \"renderBody\",\n      );\n\n    if (renderBodyProp) {\n      renderBodyIdentifier = path.scope.generateUidIdentifier(\"renderBody\");\n      path.insertBefore(\n        t.variableDeclaration(\"const\", [\n          t.variableDeclarator(renderBodyIdentifier, renderBodyProp.value),\n        ]),\n      );\n\n      renderBodyProp.value = renderBodyIdentifier;\n    }\n\n    path.replaceWith(\n      t.ifStatement(\n        name,\n        customTagRenderCall,\n        renderBodyIdentifier &&\n          t.expressionStatement(\n            t.callExpression(renderBodyIdentifier, [t.identifier(\"out\")]),\n          ),\n      ),\n    );\n  } else {\n    path.replaceWith(customTagRenderCall);\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/tag/dynamic-tag.js",
    "content": "import { types as t } from \"@marko/compiler\";\nimport { importDefault } from \"@marko/compiler/babel-utils\";\n\nimport withPreviousLocation from \"../util/with-previous-location\";\nimport { buildEventHandlerArray, getAttrs } from \"./util\";\n\nexport default function (path) {\n  const {\n    node,\n    hub: { file },\n  } = path;\n  const extra = path.node.extra || {};\n  const tagProperties = extra.properties || [];\n  const { key, arguments: args } = node;\n  const foundAttrs = getAttrs(path, true);\n  let renderBodyProp;\n  let attrsLen = t.isNullLiteral(foundAttrs) ? 0 : 1;\n\n  if (node.preserveAttrs) {\n    tagProperties.push(\n      t.objectProperty(\n        t.identifier(\"pa\"),\n        t.objectExpression(\n          node.preserveAttrs.map((name) =>\n            t.objectProperty(\n              t.isValidIdentifier(name)\n                ? t.identifier(name)\n                : t.stringLiteral(name),\n              t.numericLiteral(1),\n            ),\n          ),\n        ),\n      ),\n    );\n  }\n\n  if (t.isObjectExpression(foundAttrs)) {\n    const renderBodyKey =\n      extra.featureType === \"tags\" ? \"content\" : \"renderBody\";\n    const renderBodyIndex = foundAttrs.properties.findIndex(\n      (prop) => prop.key && prop.key.value === renderBodyKey,\n    );\n\n    attrsLen = foundAttrs.properties.length;\n\n    if (renderBodyIndex > -1) {\n      renderBodyProp = foundAttrs.properties[renderBodyIndex];\n      foundAttrs.properties.splice(renderBodyIndex, 1);\n      attrsLen--;\n    }\n  }\n\n  const dynamicTagRenderCall = t.expressionStatement(\n    t.callExpression(\n      importDefault(\n        file,\n        `marko/src/runtime/helpers/dynamic-tag.js`,\n        \"marko_dynamic_tag\",\n      ),\n      [\n        t.identifier(\"out\"),\n        node.name,\n        attrsLen ? t.arrowFunctionExpression([], foundAttrs) : t.nullLiteral(),\n        renderBodyProp ? renderBodyProp.value : t.nullLiteral(),\n        args && args.length ? t.arrayExpression(args) : t.nullLiteral(),\n        tagProperties.length\n          ? t.objectExpression(tagProperties)\n          : t.nullLiteral(),\n        file._componentDefIdentifier,\n        key,\n        ...buildEventHandlerArray(path),\n      ],\n    ),\n  );\n\n  path.replaceWith(withPreviousLocation(dynamicTagRenderCall, node));\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/tag/index.js",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  assertNoVar,\n  findAttributeTags,\n  getTagDef,\n  isAttributeTag,\n  isDynamicTag,\n  isMacroTag,\n  isNativeTag,\n  isTransparentTag,\n  resolveTagImport,\n} from \"@marko/compiler/babel-utils\";\nimport nodePath from \"path\";\n\nimport { getKeyManager } from \"../util/key-manager\";\nimport { optimizeStaticVDOM } from \"../util/optimize-vdom-create\";\nimport { enter, exit } from \"../util/plugin-hooks\";\nimport attributeTranslators from \"./attribute\";\nimport attributeTag, { analyzeAttributeTags } from \"./attribute-tag\";\nimport customTag from \"./custom-tag\";\nimport dynamicTag from \"./dynamic-tag\";\nimport macroTag from \"./macro-tag\";\nimport nativeTag from \"./native-tag\";\n\nexport default {\n  enter(path) {\n    const tagDef = getTagDef(path);\n\n    if (tagDef && tagDef.translator) {\n      const { node } = path;\n      enter(tagDef.translator.hook, path, t);\n\n      if (path.node !== node) {\n        return;\n      }\n    }\n\n    assertNoVar(path);\n\n    for (const attr of path.get(\"attributes\")) {\n      if (attr.isMarkoAttribute()) {\n        const { node } = path;\n        attributeTranslators.enter(attr);\n        if (path.node !== node) {\n          return;\n        }\n      }\n    }\n\n    if (!isAttributeTag(path)) {\n      if (\n        !tagDef &&\n        path.hub.file.markoOpts.ignoreUnrecognizedTags &&\n        (path.node.attributeTags.length || path.node.body.attributeTags) &&\n        !isDynamicTag(path)\n      ) {\n        moveIgnoredAttrTags(path);\n      }\n\n      if (isNativeTag(path)) {\n        if (tagDef && tagDef.name === \"body\") {\n          path\n            .get(\"body\")\n            .pushContainer(\"body\", [\n              t.markoTag(\n                t.stringLiteral(\"init-components\"),\n                [],\n                t.markoTagBody(),\n              ),\n              t.markoTag(\n                t.stringLiteral(\"await-reorderer\"),\n                [],\n                t.markoTagBody(),\n              ),\n              t.markoTag(\n                t.stringLiteral(\"_preferred-script-location\"),\n                [],\n                t.markoTagBody(),\n              ),\n            ]);\n        }\n      } else if (!isMacroTag(path)) {\n        analyzeAttributeTags(path);\n      }\n\n      getKeyManager(path).resolveKey(path);\n    }\n\n    optimizeStaticVDOM(path);\n  },\n  exit(path) {\n    let isUnknownDynamic = false;\n    let isDynamicNullable = false;\n\n    if (isDynamicTag(path)) {\n      const name = path.get(\"name\");\n      const types = findDynamicTagTypes(name);\n      if (types && !(types.string && types.component)) {\n        if (!name.isIdentifier()) {\n          const tagIdentifier = path.scope.generateUidIdentifier(`tagName`);\n          path.insertBefore(\n            t.variableDeclaration(\"const\", [\n              t.variableDeclarator(tagIdentifier, name.node),\n            ]),\n          );\n\n          name.replaceWith(tagIdentifier);\n        }\n\n        isDynamicNullable = types.empty;\n        path.node._isDynamicString = types.string;\n      } else {\n        isUnknownDynamic = true;\n      }\n    }\n\n    for (const attr of path.get(\"attributes\")) {\n      if (attr.isMarkoAttribute()) {\n        const { node } = path;\n        attributeTranslators.exit(attr);\n        if (path.node !== node) {\n          return;\n        }\n      }\n    }\n\n    if (isUnknownDynamic) {\n      return dynamicTag(path);\n    }\n\n    if (isAttributeTag(path)) {\n      return attributeTag(path);\n    }\n\n    if (isMacroTag(path)) {\n      return macroTag(path);\n    }\n\n    const tagDef = getTagDef(path);\n\n    if (tagDef && tagDef.translator) {\n      const { node } = path;\n\n      exit(tagDef.translator.hook, path, t);\n\n      if (path.node !== node) {\n        return;\n      }\n    }\n\n    if (isNativeTag(path)) {\n      return nativeTag(path, isDynamicNullable);\n    } else {\n      return customTag(path, isDynamicNullable);\n    }\n  },\n};\n\nconst HANDLE_BINDINGS = [\"module\", \"var\", \"let\", \"const\"];\nfunction findDynamicTagTypes(root) {\n  const pending = [root];\n  const types = {\n    string: false,\n    empty: false,\n    component: false,\n  };\n  let tagNameImported;\n\n  let path;\n  while ((path = pending.pop())) {\n    switch (path.type) {\n      case \"ConditionalExpression\":\n        pending.push(path.get(\"consequent\"));\n\n        if (path.get(\"alternate\").node) {\n          pending.push(path.get(\"alternate\"));\n        }\n        break;\n\n      case \"LogicalExpression\":\n        if (path.get(\"operator\").node === \"||\") {\n          pending.push(path.get(\"left\"));\n        } else {\n          types.empty = true;\n        }\n\n        pending.push(path.get(\"right\"));\n        break;\n\n      case \"AssignmentExpression\":\n        pending.push(path.get(\"right\"));\n        break;\n\n      case \"BinaryExpression\":\n        if (path.get(\"operator\").node !== \"+\") {\n          return false;\n        }\n\n        types.string = true;\n        break;\n\n      case \"StringLiteral\":\n      case \"TemplateLiteral\":\n        types.string = true;\n        break;\n\n      case \"NullLiteral\":\n        types.empty = true;\n        break;\n\n      case \"Identifier\":\n        if (path.get(\"name\").node === \"undefined\") {\n          types.empty = true;\n        } else {\n          const binding = path.scope.getBinding(path.node.name);\n\n          if (!binding || !HANDLE_BINDINGS.includes(binding.kind)) {\n            return false;\n          }\n\n          if (binding.kind === \"module\") {\n            const importSource = binding.path.parent.source;\n            if (\n              t.isStringLiteral(importSource) &&\n              isMarkoFile(importSource.value)\n            ) {\n              const resolvedImport =\n                resolveTagImport(root.parentPath, importSource.value) ||\n                importSource.value;\n\n              if (tagNameImported === undefined) {\n                tagNameImported = resolvedImport;\n              } else if (\n                tagNameImported &&\n                tagNameImported !== resolvedImport\n              ) {\n                tagNameImported = null;\n              }\n\n              types.component = true;\n            } else {\n              return false;\n            }\n          } else {\n            const initialValue = binding.path.get(\"init\");\n            if (initialValue.node) {\n              pending.push(initialValue);\n            } else {\n              types.empty = true;\n            }\n\n            const assignments = binding.constantViolations;\n            if (assignments && assignments.length) {\n              for (const assignment of assignments) {\n                const operator = assignment.get(\"operator\").node;\n                if (operator === \"=\") {\n                  pending.push(assignment.get(\"right\"));\n                } else if (operator === \"+=\") {\n                  types.string = true;\n                } else {\n                  return false;\n                }\n              }\n            }\n          }\n        }\n        break;\n\n      default:\n        return false;\n    }\n  }\n\n  if (tagNameImported && !types.string) {\n    (root.parent.extra ??= {}).tagNameImported = tagNameImported;\n  }\n\n  return types;\n}\n\nfunction isMarkoFile(request) {\n  return nodePath.extname(request) === \".marko\" || /^<.*>$/.test(request);\n}\n\nfunction moveIgnoredAttrTags(parentTag) {\n  const attrTags = parentTag.node.body.attributeTags\n    ? parentTag.get(\"body\").get(\"body\")\n    : parentTag.get(\"attributeTags\");\n\n  if (!attrTags.length) return;\n\n  for (const attrTag of attrTags) {\n    if (attrTag.isMarkoTag()) {\n      if (isAttributeTag(attrTag)) {\n        attrTag.set(\n          \"name\",\n          t.stringLiteral(`at_${attrTag.get(\"name.value\").node.slice(1)}`),\n        );\n      }\n\n      moveIgnoredAttrTags(attrTag);\n    }\n  }\n\n  parentTag.node.body.body = parentTag.node.attributeTags.concat(\n    parentTag.node.body.body,\n  );\n  parentTag.node.attributeTags = [];\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/tag/macro-tag.js",
    "content": "import { getMacroIdentifier } from \"@marko/compiler/babel-utils\";\n\nexport default function (path) {\n  path.node.name = getMacroIdentifier(path);\n  path.node._isMacroTagCall = true;\n  path.requeue();\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/tag/native-tag.js",
    "content": "import {\n  assertNoArgs,\n  assertNoAttributeTags,\n  assertNoParams,\n} from \"@marko/compiler/babel-utils\";\n\nimport nativeTagHtml from \"./native-tag[html]\";\nimport nativeTagVdom from \"./native-tag[vdom]\";\n\nexport default function (path, isNullable) {\n  const {\n    hub: { file },\n  } = path;\n  const { markoOpts } = file;\n\n  if (!markoOpts.ignoreUnrecognizedTags) {\n    assertNoArgs(path);\n    assertNoParams(path);\n    assertNoAttributeTags(path);\n  }\n\n  if (markoOpts.output === \"html\") {\n    nativeTagHtml(path, isNullable);\n  } else {\n    nativeTagVdom(path, isNullable);\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/tag/native-tag[html]/attributes.js",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  importDefault,\n  importNamed,\n  normalizeTemplateString,\n} from \"@marko/compiler/babel-utils\";\nimport attrHelper from \"marko/src/runtime/html/helpers/attr\";\n\nimport { evaluateAttr } from \"../util\";\n\nexport default function (path, attrs) {\n  const len = attrs.length;\n  if (len === 0) return t.stringLiteral(\"\");\n  if (len === 1 && attrs[0].node.type === \"MarkoSpreadAttribute\") {\n    return t.callExpression(\n      importDefault(\n        path.hub.file,\n        \"marko/src/runtime/html/helpers/attrs.js\",\n        \"marko_attrs\",\n      ),\n      [attrs[0].node.value],\n    );\n  }\n\n  if (attrs.some((attr) => attr.node.type === \"MarkoSpreadAttribute\")) {\n    const attrsObjects = [];\n    let props;\n\n    for (let i = 0; i < len; i++) {\n      const attr = attrs[i];\n      const {\n        node: { name, value },\n      } = attr;\n\n      if (name) {\n        const computed = evaluateAttr(attr);\n        const prop = t.objectProperty(\n          t.stringLiteral(name),\n          computed?.value !== undefined\n            ? t.stringLiteral(computed.value)\n            : value,\n        );\n        if (props) {\n          props.push(prop);\n        } else {\n          attrsObjects.push(t.objectExpression((props = [prop])));\n        }\n      } else {\n        attrsObjects.push(value);\n        props = undefined;\n      }\n    }\n\n    return t.callExpression(\n      importDefault(\n        path.hub.file,\n        \"marko/src/runtime/html/helpers/merge-attrs.js\",\n        \"marko_merge_attrs\",\n      ),\n      attrsObjects,\n    );\n  }\n\n  const file = path.hub.file;\n  const quasis = [];\n  const expressions = [];\n  const attrValues = new Map();\n  let curString = \"\";\n\n  // Remove duplicate attrs so last one wins.\n  for (let i = len; i--; ) {\n    const attr = attrs[i];\n    const { name, value } = attr.node;\n    if (attrValues.has(name)) continue;\n    const computed = evaluateAttr(attr);\n    attrValues.set(\n      name,\n      computed\n        ? {\n            confident: true,\n            computed: computed.value,\n            value,\n          }\n        : {\n            confident: false,\n            computed: undefined,\n            value,\n          },\n    );\n  }\n\n  for (const [name, { confident, computed, value }] of [\n    ...attrValues,\n  ].reverse()) {\n    if (confident) {\n      if (computed == null || computed === false) {\n        continue;\n      }\n\n      curString += attrHelper(name, computed);\n    } else if (value.type === \"TemplateLiteral\") {\n      curString += \" \" + name + '=\"';\n\n      for (let i = 0; i < value.expressions.length; i++) {\n        const quasi = value.quasis[i];\n        const expression = value.expressions[i];\n        curString += attrHelper.d(quasi.value.cooked);\n        quasis.push(curString);\n        curString = \"\";\n        expressions.push(\n          t.callExpression(\n            t.memberExpression(\n              importDefault(\n                file,\n                \"marko/src/runtime/html/helpers/attr.js\",\n                \"marko_attr\",\n              ),\n              t.identifier(\"d\"),\n            ),\n            [expression],\n          ),\n        );\n      }\n\n      curString +=\n        attrHelper.d(value.quasis[value.expressions.length].value.cooked) + '\"';\n    } else {\n      quasis.push(curString);\n      curString = \"\";\n      expressions.push(\n        t.callExpression(\n          importDefault(\n            file,\n            \"marko/src/runtime/html/helpers/attr.js\",\n            \"marko_attr\",\n          ),\n          [t.stringLiteral(name), value],\n        ),\n      );\n    }\n  }\n\n  quasis.push(curString);\n\n  if (expressions.length) {\n    return normalizeTemplateString(quasis, ...expressions);\n  } else {\n    return t.stringLiteral(quasis.join(\"\"));\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/tag/native-tag[html]/index.js",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  getTagDef,\n  importDefault,\n  normalizeTemplateString,\n} from \"@marko/compiler/babel-utils\";\nimport { resolve } from \"path\";\nimport SELF_CLOSING from \"self-closing-tags\";\n\nimport write from \"../../util/html-out-write\";\nimport { hasUserKey } from \"../../util/key-manager\";\nimport withPreviousLocation from \"../../util/with-previous-location\";\nimport translateAttributes from \"./attributes\";\n\nconst EMPTY_OBJECT = {};\n\n/**\n * Translates the html streaming version of a standard html element.\n */\nexport default function (path, isNullable) {\n  const {\n    hub: { file },\n    node,\n  } = path;\n  const {\n    key,\n    name,\n    body: { body },\n    handlers,\n  } = node;\n  const tagProperties = (path.node.extra && path.node.extra.properties) || [];\n  const tagDef = getTagDef(path);\n  const meta = file.metadata.marko;\n\n  if (tagDef) {\n    const { parseOptions = EMPTY_OBJECT } = tagDef;\n    if (parseOptions.import) {\n      // TODO: the taglib should be updated to support this as a top level option.\n      file.metadata.marko.deps.push(resolve(tagDef.dir, parseOptions.import));\n    }\n  }\n\n  if (handlers) {\n    Object.entries(handlers).forEach(\n      ([eventName, { arguments: args, once }]) => {\n        const delegateArgs = [t.stringLiteral(eventName), args[0]];\n\n        // TODO: look into only sending this if once is true.\n        delegateArgs.push(t.booleanLiteral(once));\n\n        if (args.length > 1) {\n          delegateArgs.push(t.arrayExpression(args.slice(1)));\n        }\n\n        // TODO: why do we output eventName twice.\n        tagProperties.push(\n          t.objectProperty(\n            t.stringLiteral(`on${eventName}`),\n            t.callExpression(\n              t.memberExpression(\n                file._componentDefIdentifier,\n                t.identifier(\"d\"),\n              ),\n              delegateArgs,\n            ),\n          ),\n        );\n      },\n    );\n  }\n\n  const isHTML = file.markoOpts.output === \"html\";\n  let dataMarko = t.stringLiteral(\"\");\n\n  if (node.preserveAttrs) {\n    tagProperties.push(\n      t.objectProperty(\n        t.identifier(\"pa\"),\n        t.objectExpression(\n          node.preserveAttrs.map((name) =>\n            t.objectProperty(\n              t.isValidIdentifier(name)\n                ? t.identifier(name)\n                : t.stringLiteral(name),\n              t.numericLiteral(1),\n            ),\n          ),\n        ),\n      ),\n    );\n  }\n\n  if (isHTML) {\n    if (\n      (!meta.hasStatefulTagParams &&\n        !meta.hasFunctionEventHandlers &&\n        (meta.hasComponentBrowser || !meta.hasComponent)) ||\n      isPreserved(path)\n    ) {\n      const dataMarkoArgs = [t.identifier(\"out\"), file._componentDefIdentifier];\n\n      if (tagProperties.length) {\n        // TODO we should pre evaluate this if it is static.\n        dataMarkoArgs.push(t.objectExpression(tagProperties));\n      }\n\n      if (hasUserKey(path) || (key && node.isPreserved)) {\n        if (dataMarkoArgs.length === 2) {\n          dataMarkoArgs.push(t.numericLiteral(0));\n        }\n\n        dataMarkoArgs.push(key);\n      }\n\n      if (dataMarkoArgs.length > 2) {\n        dataMarko = t.callExpression(\n          importDefault(\n            file,\n            \"marko/src/runtime/html/helpers/data-marko.js\",\n            \"marko_props\",\n          ),\n          dataMarkoArgs,\n        );\n      }\n    }\n  }\n\n  const translatedAttrs = translateAttributes(path, path.get(\"attributes\"));\n  let isSelfClosing = false;\n  let openTagEnding = \">\";\n\n  if (t.isStringLiteral(name)) {\n    if (\n      tagDef &&\n      tagDef.htmlType &&\n      (tagDef.htmlType === \"svg\" || tagDef.htmlType === \"math\")\n    ) {\n      if (!body.length) {\n        isSelfClosing = true;\n        openTagEnding = \" />\";\n      }\n    } else if (SELF_CLOSING.voidElements.indexOf(name.value) !== -1) {\n      isSelfClosing = true;\n    }\n  }\n\n  const isEmpty = isSelfClosing || !body.length;\n  let writeStartNode = normalizeTemplateString`<${name}${dataMarko}${translatedAttrs}${openTagEnding}`;\n\n  writeStartNode = withPreviousLocation(\n    isEmpty && !isSelfClosing\n      ? write`${writeStartNode}</${name}>`\n      : write`${writeStartNode}`,\n    name,\n  );\n\n  if (isNullable) {\n    writeStartNode = t.ifStatement(name, writeStartNode);\n\n    if (!isEmpty) {\n      writeStartNode.alternate = t.expressionStatement(\n        t.callExpression(\n          t.memberExpression(t.identifier(\"out\"), t.identifier(\"bf\")),\n          [\n            normalizeTemplateString`f_${key}`,\n            file._componentInstanceIdentifier,\n            t.numericLiteral(1),\n          ],\n        ),\n      );\n    }\n  }\n\n  if (isEmpty) {\n    path.replaceWith(writeStartNode);\n    return;\n  }\n\n  let needsBlock;\n  let needsIIFE;\n  for (const childNode of body) {\n    if (t.isVariableDeclaration(childNode)) {\n      if (childNode.kind === \"const\" || childNode.kind === \"let\") {\n        needsBlock = true;\n      } else {\n        needsIIFE = true;\n      }\n\n      break;\n    }\n  }\n\n  let writeEndNode = write`</${name}>`;\n\n  if (isNullable) {\n    writeEndNode = t.ifStatement(\n      name,\n      writeEndNode,\n      t.expressionStatement(\n        t.callExpression(\n          t.memberExpression(t.identifier(\"out\"), t.identifier(\"ef\")),\n          [],\n        ),\n      ),\n    );\n  }\n\n  path.replaceWithMultiple(\n    [writeStartNode]\n      .concat(\n        needsIIFE\n          ? t.expressionStatement(\n              t.callExpression(\n                t.arrowFunctionExpression([], t.blockStatement(body)),\n                [],\n              ),\n            )\n          : needsBlock\n            ? t.blockStatement(body)\n            : body,\n      )\n      .concat(writeEndNode),\n  );\n}\n\nfunction isPreserved(path) {\n  let parentTag = path;\n  do {\n    parentTag = parentTag.parentPath.parentPath;\n    if (parentTag.get(\"isPreserved\").node === true) {\n      return true;\n    }\n  } while (t.isMarkoTag(parentTag));\n\n  return false;\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/tag/native-tag[vdom]/attributes.js",
    "content": "import { types as t } from \"@marko/compiler\";\nimport { importDefault } from \"@marko/compiler/babel-utils\";\n\nimport { evaluateAttr } from \"../util\";\n\nexport default function (path, attrs) {\n  const len = attrs.length;\n  if (len === 0) return t.nullLiteral();\n  if (len === 1 && attrs[0].node.type === \"MarkoSpreadAttribute\") {\n    return t.callExpression(\n      importDefault(\n        path.hub.file,\n        \"marko/src/runtime/vdom/helpers/attrs.js\",\n        \"marko_attrs\",\n      ),\n      [attrs[0].node.value],\n    );\n  }\n\n  if (attrs.some((attr) => attr.node.type === \"MarkoSpreadAttribute\")) {\n    const attrsObjects = [];\n    let props;\n\n    for (let i = 0; i < len; i++) {\n      const attr = attrs[i];\n      const {\n        node: { name, value },\n      } = attr;\n\n      if (name) {\n        const computed = evaluateAttr(attr);\n        const prop = t.objectProperty(\n          t.stringLiteral(name),\n          computed?.value !== undefined\n            ? t.stringLiteral(computed.value)\n            : value,\n        );\n        if (props) {\n          props.push(prop);\n        } else {\n          attrsObjects.push(t.objectExpression((props = [prop])));\n        }\n      } else {\n        attrsObjects.push(value);\n        props = undefined;\n      }\n    }\n\n    return t.callExpression(\n      importDefault(\n        path.hub.file,\n        \"marko/src/runtime/vdom/helpers/merge-attrs.js\",\n        \"marko_merge_attrs\",\n      ),\n      attrsObjects,\n    );\n  }\n\n  const attrValues = new Map();\n  const props = [];\n\n  // Remove duplicate attrs so last one wins.\n  for (let i = len; i--; ) {\n    const attr = attrs[i];\n    const { name, value } = attr.node;\n    if (attrValues.has(name)) continue;\n    const computed = evaluateAttr(attr);\n    attrValues.set(\n      name,\n      computed\n        ? {\n            confident: true,\n            computed: computed.value,\n            value,\n          }\n        : {\n            confident: false,\n            computed: undefined,\n            value,\n          },\n    );\n  }\n\n  for (const [name, { confident, computed, value }] of [\n    ...attrValues,\n  ].reverse()) {\n    if (confident) {\n      if (computed == null || computed === false) {\n        continue;\n      }\n\n      props.push(\n        t.objectProperty(t.stringLiteral(name), t.stringLiteral(computed)),\n      );\n    } else {\n      props.push(t.objectProperty(t.stringLiteral(name), value));\n    }\n  }\n\n  if (props.length) {\n    return t.objectExpression(props);\n  }\n\n  return t.nullLiteral();\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/tag/native-tag[vdom]/index.js",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  getTagDef,\n  normalizeTemplateString,\n} from \"@marko/compiler/babel-utils\";\n\nimport * as FLAGS from \"../../util/runtime-flags\";\nimport write from \"../../util/vdom-out-write\";\nimport withPreviousLocation from \"../../util/with-previous-location\";\nimport translateAttributes from \"./attributes\";\n\nconst SIMPLE_ATTRS = [\"id\", \"class\", \"style\"];\n\n/**\n * Translates the html streaming version of a standard html element.\n */\nexport default function (path, isNullable) {\n  const { node } = path;\n  const {\n    name,\n    key,\n    body: { body },\n  } = node;\n\n  const isEmpty = !body.length;\n  const writeArgs = tagArguments(path, false);\n  let writeStartNode = withPreviousLocation(\n    write(isEmpty ? \"e\" : \"be\", ...writeArgs),\n    node.name,\n  );\n\n  if (isNullable) {\n    writeStartNode = t.ifStatement(name, writeStartNode);\n\n    if (!isEmpty) {\n      writeStartNode.alternate = t.expressionStatement(\n        t.callExpression(\n          t.memberExpression(t.identifier(\"out\"), t.identifier(\"bf\")),\n          [\n            normalizeTemplateString`f_${key}`,\n            path.hub.file._componentInstanceIdentifier,\n          ],\n        ),\n      );\n    }\n  }\n\n  if (isEmpty) {\n    path.replaceWith(writeStartNode);\n    return;\n  }\n\n  let writeEndNode = write(\"ee\");\n  if (isNullable) {\n    writeEndNode = t.ifStatement(\n      name,\n      writeEndNode,\n      t.expressionStatement(\n        t.callExpression(\n          t.memberExpression(t.identifier(\"out\"), t.identifier(\"ef\")),\n          [],\n        ),\n      ),\n    );\n  }\n\n  let needsBlock;\n  let needsIIFE;\n  for (const childNode of body) {\n    if (t.isVariableDeclaration(childNode)) {\n      if (childNode.kind === \"const\" || childNode.kind === \"let\") {\n        needsBlock = true;\n      } else {\n        needsIIFE = true;\n      }\n\n      break;\n    }\n  }\n\n  path.replaceWithMultiple(\n    [writeStartNode]\n      .concat(\n        needsIIFE\n          ? t.expressionStatement(\n              t.callExpression(\n                t.arrowFunctionExpression([], t.blockStatement(body)),\n                [],\n              ),\n            )\n          : needsBlock\n            ? t.blockStatement(body)\n            : body,\n      )\n      .concat(writeEndNode),\n  );\n}\n\nfunction isPropertyName({ key }, names) {\n  if (t.isStringLiteral(key)) {\n    return names.includes(key.value);\n  } else if (t.isIdentifier(key)) {\n    return names.includes(key.name);\n  }\n}\n\nfunction tagArguments(path) {\n  const {\n    hub: { file },\n    node,\n  } = path;\n  const {\n    name,\n    key,\n    body: { body },\n    handlers,\n  } = node;\n  const tagProperties = (path.node.extra && path.node.extra.properties) || [];\n  const attrsObj = translateAttributes(path, path.get(\"attributes\"));\n  let runtimeFlags = 0;\n\n  if (!t.isNullLiteral(attrsObj) && !t.isObjectExpression(attrsObj)) {\n    runtimeFlags |= FLAGS.SPREAD_ATTRS;\n  }\n\n  const writeArgs = [\n    name,\n    attrsObj,\n    key,\n    file._componentInstanceIdentifier,\n    body.length ? t.nullLiteral() : t.numericLiteral(0),\n  ];\n\n  if (node.preserveAttrs) {\n    tagProperties.push(\n      t.objectProperty(\n        t.identifier(\"pa\"),\n        t.objectExpression(\n          node.preserveAttrs.map((name) =>\n            t.objectProperty(\n              t.isValidIdentifier(name)\n                ? t.identifier(name)\n                : t.stringLiteral(name),\n              t.numericLiteral(1),\n            ),\n          ),\n        ),\n      ),\n    );\n  }\n\n  if (handlers) {\n    Object.entries(handlers).forEach(\n      ([eventName, { arguments: args, once }]) => {\n        const delegateArgs = [t.stringLiteral(eventName), args[0]];\n\n        // TODO: look into only sending this if once is true.\n        delegateArgs.push(t.booleanLiteral(once));\n\n        if (args.length > 1) {\n          delegateArgs.push(t.arrayExpression(args.slice(1)));\n        }\n\n        // TODO: why do we output eventName twice.\n        tagProperties.push(\n          t.objectProperty(\n            t.stringLiteral(`on${eventName}`),\n            t.callExpression(\n              t.memberExpression(\n                file._componentDefIdentifier,\n                t.identifier(\"d\"),\n              ),\n              delegateArgs,\n            ),\n          ),\n        );\n      },\n    );\n  }\n\n  if (\n    t.isObjectExpression(attrsObj) &&\n    attrsObj.properties.every((n) => isPropertyName(n, SIMPLE_ATTRS)) &&\n    !node.preserveAttrs\n  ) {\n    runtimeFlags |= FLAGS.HAS_SIMPLE_ATTRS;\n  }\n\n  const tagDef = getTagDef(path);\n\n  if (tagDef) {\n    const { htmlType } = tagDef;\n    if (htmlType === \"custom-element\") {\n      runtimeFlags |= FLAGS.IS_CUSTOM_ELEMENT;\n    }\n  }\n\n  writeArgs.push(t.numericLiteral(runtimeFlags));\n\n  if (tagProperties.length) {\n    writeArgs.push(t.objectExpression(tagProperties));\n  }\n  return writeArgs;\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/tag/util.js",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  computeNode,\n  findParentTag,\n  getTagDef,\n  importNamed,\n  isAttributeTag,\n} from \"@marko/compiler/babel-utils\";\nimport classToString from \"marko/src/runtime/helpers/class-value\";\nimport styleToString from \"marko/src/runtime/helpers/style-value\";\n\nexport function getAttrs(path, preserveNames, isAttrTag) {\n  const { node } = path;\n  const {\n    extra,\n    attributes,\n    attributeTags,\n    body: { body, params },\n  } = node;\n  const attrsLen = attributes.length;\n  const childLen = body.length;\n  const properties = [];\n  const targetObjects = {};\n  const tagDef = getTagDef(path);\n  const foundProperties = {};\n  const hasAttributeTags = !!attributeTags.length;\n  const isTagsAPI = findRootTag(path)?.node.extra?.featureType === \"tags\";\n  const renderBodyKey = isTagsAPI ? \"content\" : \"renderBody\";\n\n  for (let i = 0; i < attrsLen; i++) {\n    const { name, value } = attributes[i];\n\n    if (name) {\n      const attrDef = tagDef && tagDef.getAttribute(name);\n      let targetProperties = properties;\n      let targetProperty = name;\n      let preserveName = preserveNames;\n\n      if (attrDef) {\n        if (attrDef.targetProperty) {\n          const key = attrDef.targetProperty;\n          preserveName =\n            attrDef.preserveName !== false && attrDef.removeDashes !== true;\n\n          if (attrDef.dynamicAttribute) {\n            let targetObject = targetObjects[key];\n\n            if (!targetObject) {\n              properties.push(\n                t.objectProperty(\n                  t.stringLiteral(key),\n                  (targetObject = targetObjects[key] = t.objectExpression([])),\n                ),\n              );\n            }\n\n            targetProperties = targetObject.properties;\n          } else {\n            targetProperty = key;\n          }\n        } else if (\n          !preserveName &&\n          (attrDef.preserveName === true || attrDef.removeDashes === false)\n        ) {\n          preserveName = true;\n        }\n      }\n\n      if (!preserveName) {\n        targetProperty = camelCase(targetProperty);\n      }\n\n      foundProperties[targetProperty] = true;\n      targetProperties.push(\n        t.objectProperty(t.stringLiteral(targetProperty), value),\n      );\n    } else {\n      mergeSpread(properties, value);\n    }\n  }\n\n  if (childLen && !hasAttributeTags) {\n    properties.push(\n      t.objectProperty(\n        t.stringLiteral(renderBodyKey),\n        t.arrowFunctionExpression(\n          [t.identifier(\"out\"), ...params],\n          t.blockStatement(body),\n        ),\n      ),\n    );\n  }\n\n  // Default parameters\n  tagDef &&\n    tagDef.forEachAttribute &&\n    tagDef.forEachAttribute((attr) => {\n      if (foundProperties[attr.name] || attr.dynamicAttribute) {\n        return;\n      }\n\n      if (attr.defaultValue !== undefined) {\n        properties.push(\n          t.objectProperty(\n            t.stringLiteral(attr.name),\n            t.stringLiteral(attr.defaultValue + \"\"),\n          ),\n        );\n      } else if (attr.required) {\n        throw path\n          .get(\"name\")\n          .buildCodeFrameError(`The \"${attr.name}\" attribute is required.`);\n      }\n    });\n\n  let attrsObject =\n    properties.length === 0\n      ? t.nullLiteral()\n      : !hasAttributeTags &&\n          !isAttrTag &&\n          properties.length === 1 &&\n          t.isSpreadElement(properties[0])\n        ? properties[0].argument\n        : t.objectExpression(properties);\n\n  if (hasAttributeTags) {\n    let attrTagBody = attributeTags;\n\n    if (body.length) {\n      attrTagBody = attrTagBody.concat(\n        t.returnStatement(\n          t.arrowFunctionExpression(\n            [t.identifier(\"out\"), ...params],\n            t.blockStatement(body),\n          ),\n        ),\n      );\n    }\n\n    const attrTagFn = t.arrowFunctionExpression(\n      [],\n      t.blockStatement(attrTagBody),\n    );\n\n    attrsObject = t.callExpression(\n      importNamed(\n        path.hub.file,\n        \"marko/src/runtime/helpers/attr-tag.js\",\n        \"i\",\n        \"marko_render_input\",\n      ),\n      properties.length === 0 ? [attrTagFn] : [attrTagFn, attrsObject],\n    );\n  }\n\n  return attrsObject;\n}\n\nexport function buildEventHandlerArray(path) {\n  const { handlers } = path.node;\n  if (!handlers) {\n    return [];\n  }\n\n  return [\n    t.arrayExpression(\n      Object.entries(handlers).map(([eventName, { arguments: args, once }]) => {\n        const parts = [\n          t.stringLiteral(eventName),\n          args[0],\n          t.booleanLiteral(once),\n        ];\n\n        if (args.length > 1) {\n          parts.push(t.arrayExpression(args.slice(1)));\n        }\n\n        return t.arrayExpression(parts);\n      }),\n    ),\n  ];\n}\n\nexport function evaluateAttr(attr) {\n  const computed = computeNode(attr.node.value);\n  if (computed) {\n    const { value } = computed;\n    switch (attr.node.name) {\n      case \"class\":\n        return {\n          value: classToString(value)?.replace(/\\s+/, \" \").trim(),\n        };\n      case \"style\":\n        return {\n          value: styleToString(value)\n            ?.replace(/\\s+/, \" \")\n            .trim()\n            .replace(/;$/, \"\"),\n        };\n    }\n\n    if (value == null || value === false) {\n      return { value: undefined };\n    }\n\n    if (value === true) {\n      return { value: \"\" };\n    }\n\n    if (typeof value === \"object\") {\n      switch (value.toString) {\n        case Object.prototype.toString:\n        case Array.prototype.toString:\n          return { value: JSON.stringify(value) };\n        case RegExp.prototype.toString:\n          return { value: value.source };\n      }\n    }\n\n    return { value: value + \"\" };\n  }\n}\n\nfunction camelCase(string) {\n  return string.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());\n}\n\nfunction findLastIndex(arr, check) {\n  for (let i = arr.length; i--; ) {\n    if (check(arr[i])) {\n      return i;\n    }\n  }\n\n  return -1;\n}\n\nfunction mergeSpread(properties, value) {\n  if (t.isObjectExpression(value)) {\n    for (const prop of value.properties) {\n      if (t.isSpreadElement(prop)) {\n        mergeSpread(properties, prop.argument);\n      } else {\n        properties.push(prop);\n      }\n    }\n  } else {\n    properties.push(t.spreadElement(value));\n  }\n}\n\nfunction findRootTag(tag) {\n  let cur = tag;\n\n  while (isAttributeTag(cur)) {\n    cur = findParentTag(cur);\n  }\n\n  return cur;\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/taglib/core/conditional/translate-else-if.js",
    "content": "import { assertNoAttributes } from \"@marko/compiler/babel-utils\";\n\nimport { buildIfStatement } from \"./util\";\n\nexport function exit(path) {\n  assertNoAttributes(path);\n\n  const { ifStatement, arguments: args } = path.node;\n\n  if (!ifStatement) {\n    throw path\n      .get(\"name\")\n      .buildCodeFrameError(\n        \"Invalid 'else-if' tag, expected preceding 'if' or 'else-if' tag.\",\n      );\n  }\n\n  ifStatement.alternate = buildIfStatement(path, args);\n  path.remove();\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/taglib/core/conditional/translate-else.js",
    "content": "import { types as t } from \"@marko/compiler\";\nimport { assertNoArgs, assertNoAttributes } from \"@marko/compiler/babel-utils\";\n\nexport function exit(path) {\n  assertNoArgs(path);\n  assertNoAttributes(path);\n\n  const { ifStatement } = path.node;\n\n  if (!ifStatement) {\n    throw path\n      .get(\"name\")\n      .buildCodeFrameError(\n        \"Invalid 'else' tag, expected preceding 'if' or 'else-if' tag.\",\n      );\n  }\n\n  ifStatement.alternate = t.blockStatement(path.node.body.body);\n  path.remove();\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/taglib/core/conditional/translate-if.js",
    "content": "import { assertNoAttributes } from \"@marko/compiler/babel-utils\";\n\nimport { buildIfStatement } from \"./util\";\n\nexport function exit(path) {\n  assertNoAttributes(path);\n  path.replaceWith(buildIfStatement(path, path.node.arguments));\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/taglib/core/conditional/util.js",
    "content": "import { types as t } from \"@marko/compiler\";\n\nimport withPreviousLocation from \"../../../util/with-previous-location\";\n\nexport function buildIfStatement(path, args) {\n  if (!args || !args.length) {\n    const name = path.get(\"name\");\n    throw name.buildCodeFrameError(\n      `Invalid '<${name.node.value}>' tag, expected arguments like '<${name.node.value}(test)>'.`,\n    );\n  }\n\n  const ifStatement = t.ifStatement(\n    args.length === 1 ? args[0] : t.sequenceExpression(args),\n    t.blockStatement(path.node.body.body),\n  );\n\n  let nextPath = path.getNextSibling();\n\n  while (\n    nextPath.isMarkoComment() ||\n    (nextPath.isMarkoText() && /^\\s*$/.test(nextPath.node.value))\n  ) {\n    const ignorePath = nextPath;\n    nextPath = nextPath.getNextSibling();\n    ignorePath.remove();\n  }\n\n  // Provide the if statement to the next part of the if chain.\n  if (nextPath.isMarkoTag()) {\n    const nextTagName = nextPath.get(\"name\");\n    if (\n      nextTagName.isStringLiteral({ value: \"else\" }) ||\n      nextTagName.isStringLiteral({ value: \"else-if\" })\n    ) {\n      nextPath.node.ifStatement = ifStatement;\n    }\n  }\n\n  return withPreviousLocation(ifStatement, path.node);\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/taglib/core/index.js",
    "content": "import * as translateElse from \"./conditional/translate-else\";\nimport * as translateElseIf from \"./conditional/translate-else-if\";\nimport * as translateIf from \"./conditional/translate-if\";\nimport * as parseMacro from \"./macro/parse\";\nimport * as translateMacro from \"./macro/translate\";\nimport migrate from \"./migrate\";\nimport * as parseClass from \"./parse-class\";\nimport * as parseClient from \"./parse-client\";\nimport * as parseExport from \"./parse-export\";\nimport * as parseImport from \"./parse-import\";\nimport * as parseModuleCode from \"./parse-module-code\";\nimport * as parseServer from \"./parse-server\";\nimport * as parseStatic from \"./parse-static\";\nimport * as transformBody from \"./transform-body\";\nimport * as transformStyle from \"./transform-style\";\nimport * as translateAwait from \"./translate-await\";\nimport * as translateFor from \"./translate-for\";\nimport * as translateHTMLComment from \"./translate-html-comment\";\nimport * as translateIncludeContent from \"./translate-include-content\";\nimport * as translateServerOnly from \"./translate-server-only\";\nimport * as translateWhile from \"./translate-while\";\n\nexport default {\n  taglibId: \"marko-core\",\n  migrate,\n  \"<import>\": {\n    \"node-factory\": parseImport,\n    \"parse-options\": {\n      statement: true,\n      rawOpenTag: true,\n    },\n    autocomplete: [\n      {\n        displayText: 'import <scope> from \"<path>\"',\n        description:\n          \"Use to import external modules, follows the same syntax as JavaScript imports.\",\n        snippet: 'import ${2} from \"${1:path}\"',\n        descriptionMoreURL:\n          \"https://markojs.com/docs/syntax/#importing-external-files\",\n      },\n    ],\n  },\n  \"<export>\": {\n    \"node-factory\": parseExport,\n    \"parse-options\": {\n      statement: true,\n      rawOpenTag: true,\n    },\n    autocomplete: [\n      {\n        displayText: \"export <scope>\",\n        description:\n          \"Use export additional data with the template, follows the same syntax as JavaScript exports.\",\n        snippet: \"export ${1}\",\n        descriptionMoreURL:\n          \"https://markojs.com/docs/syntax/#importing-external-files\",\n      },\n    ],\n  },\n  \"<client>\": {\n    \"node-factory\": parseClient,\n    \"parse-options\": {\n      statement: true,\n      rawOpenTag: true,\n    },\n  },\n  \"<server>\": {\n    \"node-factory\": parseServer,\n    \"parse-options\": {\n      statement: true,\n      rawOpenTag: true,\n    },\n  },\n  \"<class>\": {\n    \"node-factory\": parseClass,\n    \"parse-options\": {\n      statement: true,\n      rawOpenTag: true,\n    },\n    autocomplete: [\n      {\n        displayText: \"class { /** lifecycle methods **/ }\",\n        snippet: \"class {\\n\\t$0\\n}\",\n        description:\n          \"A class containing the lifecycle methods, event handlers, and other properties for this component.\",\n        descriptionMoreURL:\n          \"https://markojs.com/docs/class-components/#single-file-components\",\n      },\n    ],\n  },\n  \"<static>\": {\n    \"node-factory\": parseStatic,\n    \"parse-options\": {\n      statement: true,\n      rawOpenTag: true,\n    },\n    autocomplete: [\n      {\n        displayText: \"static <statement>\",\n        description:\n          \"A JavaScript statement which is only evaluated once your template is loaded.\",\n        descriptionMoreURL:\n          \"https://markojs.com/docs/syntax/#static-javascript\",\n      },\n    ],\n  },\n  \"<style>\": {\n    transformer: transformStyle,\n    \"parse-options\": {\n      text: true,\n      rawOpenTag: true,\n      preserveWhitespace: true,\n    },\n  },\n  \"<macro>\": {\n    \"node-factory\": parseMacro,\n    \"code-generator\": translateMacro,\n    \"@name\": {\n      type: \"string\",\n      autocomplete: [\n        {\n          description: \"The name which can be used as a tag within a template.\",\n        },\n      ],\n    },\n    autocomplete: [\n      {\n        displayText: 'macro|<params>| name=\"<name>\"',\n        description: \"Creates a reusable fragment within the template.\",\n        snippet: 'macro|${2:param1, param2}| name=\"${1:name}\"',\n        descriptionMoreURL: \"https://markojs.com/docs/core-tags/#macro\",\n      },\n    ],\n  },\n  \"<include-text>\": {\n    \"code-generator\": translateIncludeContent,\n    attributes: {},\n    autocomplete: [\n      {\n        displayText: 'include-text(\"<path>\")',\n        description: \"Allows you to inline the contents of a text file.\",\n        snippet: 'include-text(${1:\"./foo.txt\"})',\n        descriptionMoreURL: \"https://markojs.com/docs/core-tags/#include-text\",\n      },\n    ],\n  },\n  \"<include-html>\": {\n    \"code-generator\": translateIncludeContent,\n    attributes: {},\n    autocomplete: [\n      {\n        displayText: 'include-html(\"<path>\")',\n        snippet: 'include-html(${1:\"./foo.html\"})',\n        description: \"Allows you to inline the contents of an html file.\",\n        descriptionMoreURL: \"https://markojs.com/docs/core-tags/#include-html\",\n      },\n    ],\n  },\n  \"<if>\": {\n    \"parse-options\": { controlFlow: true },\n    \"code-generator\": translateIf,\n    attributes: {},\n    autocomplete: [\n      {\n        snippet: \"if(${1:condition})\",\n        description: \"Use to display content only if the condition is meant.\",\n        descriptionMoreURL:\n          \"https://markojs.com/docs/core-tags/#if-else-if-else\",\n      },\n    ],\n  },\n  \"<else-if>\": {\n    \"parse-options\": { controlFlow: true },\n    \"code-generator\": translateElseIf,\n    attributes: {},\n    autocomplete: [\n      {\n        snippet: \"else-if(${1:condition})\",\n        description:\n          \"Use after an <if> or <else-if> tag to display content if those conditions do not match and this one does.\",\n        descriptionMoreURL:\n          \"https://markojs.com/docs/core-tags/#if-else-if-else\",\n      },\n    ],\n  },\n  \"<else>\": {\n    \"parse-options\": { controlFlow: true },\n    \"code-generator\": translateElse,\n    attributes: {},\n    autocomplete: [\n      {\n        description:\n          \"Use after an <if> or <else-if> tag to display content if those conditions do not match.\",\n        descriptionMoreURL:\n          \"https://markojs.com/docs/core-tags/#if-else-if-else\",\n      },\n    ],\n  },\n  \"<for>\": {\n    \"parse-options\": { controlFlow: true },\n    \"code-generator\": translateFor,\n    \"@of\": {\n      type: \"expression\",\n      autocomplete: [\n        {\n          description: \"Iterates over a list of items.\",\n        },\n      ],\n    },\n    \"@in\": {\n      type: \"expression\",\n      autocomplete: [\n        {\n          description: \"Iterates over the keys and values of an object.\",\n        },\n      ],\n    },\n    \"@to\": {\n      type: \"number\",\n      autocomplete: [\n        {\n          description: \"Iterates up to the provided number (inclusive)\",\n        },\n      ],\n    },\n    \"@from\": {\n      type: \"number\",\n      autocomplete: [\n        {\n          description: \"Iterates starting from the provided number (inclusive)\",\n        },\n      ],\n    },\n    \"@step\": {\n      type: \"number\",\n      autocomplete: [\n        {\n          description:\n            \"The amount to increment during each iteration (with from/to)\",\n        },\n      ],\n    },\n    autocomplete: [\n      {\n        snippet: \"for|${1:value, index}| of=${3:array}\",\n        description:\n          \"Use to iterate over lists, object properties, or between ranges.\",\n        descriptionMoreURL:\n          \"https://markojs.com/docs/core-tags/#iterating-over-a-list\",\n      },\n      {\n        snippet: \"for|${1:name, value}| in=${3:object}\",\n        descriptionMoreURL:\n          \"https://markojs.com/docs/core-tags/#iterating-over-an-objects-properties\",\n      },\n      {\n        snippet:\n          \"for|${1:index}| from=${2:number} to=${3:number} step=${4:number}\",\n        descriptionMoreURL:\n          \"https://markojs.com/docs/core-tags/#iterating-between-a-range-of-numbers\",\n      },\n    ],\n  },\n  \"<while>\": {\n    \"parse-options\": { controlFlow: true },\n    \"code-generator\": translateWhile,\n    autocomplete: [\n      {\n        snippet: \"while(${1:condition})\",\n        description:\n          \"Renders the content multiple times until the condition is no longer met.\",\n        descriptionMoreURL: \"https://markojs.com/docs/core-tags/#while\",\n      },\n    ],\n  },\n  \"<html-comment>\": {\n    \"code-generator\": translateHTMLComment,\n    \"parse-options\": {\n      text: true,\n    },\n    attributes: {},\n    autocomplete: [\n      {\n        description:\n          \"Use to create an html comment that is not stripped from the output.\",\n        descriptionMoreURL: \"https://markojs.com/docs/core-tags/#html-comment\",\n      },\n    ],\n  },\n  \"<_preserve>\": {\n    renderer: \"marko/src/core-tags/components/preserve-tag.js\",\n    \"@n\": \"boolean\",\n    \"@i\": \"boolean\",\n    \"@b\": \"boolean\",\n    autocomplete: [],\n  },\n  \"<init-components>\": {\n    \"code-generator\": translateServerOnly,\n    renderer: \"marko/src/core-tags/components/init-components-tag.js\",\n    \"@immediate\": \"boolean\",\n  },\n  \"<_preferred-script-location>\": {\n    \"code-generator\": translateServerOnly,\n    renderer: \"marko/src/core-tags/components/preferred-script-location-tag.js\",\n  },\n  \"<await>\": {\n    renderer: \"marko/src/core-tags/core/await/renderer.js\",\n    types: \"marko/src/core-tags/core/await/index.d.marko\",\n    \"code-generator\": translateAwait,\n    \"@_provider\": \"expression\",\n    \"@_name\": \"string\",\n    \"@name\": {\n      type: \"string\",\n      autocomplete: [\n        {\n          description:\n            \"Used to improve debugging and also to ensure promise ordering with the show-after attribute.\",\n          snippet: 'name=\"${1:name}\"',\n        },\n      ],\n    },\n    \"@timeout\": {\n      type: \"number\",\n      autocomplete: [\n        {\n          description:\n            \"An optional timeout that when reached will cause the promise to reject with a TimeoutError.\",\n        },\n      ],\n    },\n    \"@client-reorder\": {\n      type: \"boolean\",\n      autocomplete: [\n        {\n          description:\n            \"If set anything after this promise will be sent out immediately, and reordered using JS in the browser.\",\n        },\n      ],\n    },\n    \"@show-after\": {\n      type: \"string\",\n      autocomplete: [\n        {\n          description:\n            \"This attribute will ensure that (with client-reorder) this await tag will always show after another await tag with the provided name.\",\n        },\n      ],\n    },\n    \"@then <then>\": {\n      autocomplete: [\n        {\n          displayText: \"then|<result>|\",\n          description: \"Executed with the result of the resolved promise.\",\n          snippet: \"then|${1:result}|\",\n          descriptionMoreURL: \"https://markojs.com/docs/core-tags/#await\",\n        },\n      ],\n    },\n    \"@catch <catch>\": {\n      autocomplete: [\n        {\n          displayText: \"catch|<err>|\",\n          description: \"Executed with the err of the rejected promise.\",\n          snippet: \"catch|${1:err}|\",\n          descriptionMoreURL: \"https://markojs.com/docs/core-tags/#await\",\n        },\n      ],\n    },\n    \"@placeholder <placeholder>\": {\n      autocomplete: [\n        {\n          description: \"A placeholder to display while the promise is pending.\",\n          descriptionMoreURL: \"https://markojs.com/docs/core-tags/#await\",\n        },\n      ],\n    },\n    autocomplete: [\n      {\n        displayText: \"await(<promise>)\",\n        description:\n          \"Used to render a template asynchronously with the results of a Promise\",\n        snippet: \"await(${1:promise})\",\n        descriptionMoreURL: \"https://markojs.com/docs/core-tags/#await\",\n      },\n    ],\n  },\n  \"<await-reorderer>\": {\n    \"code-generator\": translateServerOnly,\n    renderer: \"marko/src/core-tags/core/await/reorderer-renderer.js\",\n    autocomplete: [\n      {\n        snippet: \"await-reorderer\",\n        descriptionMoreURL: \"https://markojs.com/docs/core-tags/#await\",\n      },\n    ],\n  },\n  \"<__flush_here_and_after__>\": {\n    \"code-generator\": translateServerOnly,\n    renderer: \"marko/src/core-tags/core/__flush_here_and_after__.js\",\n  },\n  \"<module-code>\": {\n    \"node-factory\": parseModuleCode,\n    \"parse-options\": {\n      rawOpenTag: true,\n    },\n  },\n  \"<script>\": {\n    types: \"marko/src/core-tags/core/script.d.marko\",\n  },\n  \"<*>\": {\n    \"@key\": {\n      type: \"string\",\n      \"preserve-name\": true,\n      autocomplete: [\n        {\n          displayText: 'key=\"<method>\"',\n          snippet: 'key=\"${1:method}\"',\n          descriptionMoreURL: \"https://markojs.com/docs/class-components/#key\",\n        },\n        {\n          descriptionMoreURL: \"https://markojs.com/docs/class-components/#key\",\n        },\n      ],\n    },\n    \"@on*\": {\n      pattern: true,\n      type: \"statement\",\n      \"allow-expressions\": true,\n      \"preserve-name\": true,\n      \"set-flag\": \"hasComponentEvents\",\n      autocomplete: [\n        {\n          displayText: 'on<event>(\"<method>\")',\n          snippet: 'on${1:Click}(\"handle${2:Button}${1:Click}\")',\n          descriptionMoreURL:\n            \"https://markojs.com/docs/components/#attaching-dom-event-listeners\",\n        },\n      ],\n    },\n    \"@once*\": {\n      pattern: true,\n      type: \"statement\",\n      \"allow-expressions\": true,\n      \"preserve-name\": true,\n      \"set-flag\": \"hasComponentEvents\",\n      autocomplete: {\n        displayText: 'once<event>(\"<method>\")',\n        snippet: 'once${1:Click}(\"handle${2:Button}${1:Click}\")',\n        descriptionMoreURL:\n          \"https://markojs.com/docs/components/#attaching-dom-event-listeners\",\n      },\n    },\n    \"@no-update\": {\n      type: \"flag\",\n      \"preserve-name\": true,\n      autocomplete: [\n        {\n          descriptionMoreURL:\n            \"https://markojs.com/docs/class-components/#no-update\",\n        },\n      ],\n    },\n    \"@no-update-body\": {\n      type: \"flag\",\n      \"preserve-name\": true,\n      autocomplete: [\n        {\n          descriptionMoreURL:\n            \"https://markojs.com/docs/class-components/#no-update-body\",\n        },\n      ],\n    },\n    \"@no-update-if\": {\n      \"preserve-name\": true,\n      autocomplete: [\n        {\n          snippet: \"no-update-if(${1:condition})\",\n          descriptionMoreURL:\n            \"https://markojs.com/docs/class-components/#no-update-if\",\n        },\n      ],\n    },\n    \"@no-update-body-if\": {\n      \"preserve-name\": true,\n      autocomplete: [\n        {\n          snippet: \"no-update-body-if(${1:condition})\",\n          descriptionMoreURL:\n            \"https://markojs.com/docs/class-components/#no-update-body-if\",\n        },\n      ],\n    },\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/src/translator/taglib/core/macro/parse.js",
    "content": "import { types as t } from \"@marko/compiler\";\nimport { registerMacro } from \"@marko/compiler/babel-utils\";\n\nexport default function (path) {\n  const attrs = path.node.attributes;\n  if (attrs.length === 1) {\n    const [attr] = attrs;\n\n    if (\n      t.isMarkoAttribute(attr) &&\n      attr.name === \"name\" &&\n      t.isStringLiteral(attr.value)\n    ) {\n      registerMacro(path.get(\"attributes\")[0], attr.value.value);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/taglib/core/macro/translate.js",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  diagnosticError,\n  getMacroIdentifierForName,\n} from \"@marko/compiler/babel-utils\";\n\nimport withPreviousLocation from \"../../../util/with-previous-location\";\n\nexport function exit(path) {\n  const { node } = path;\n  const { attributes, body } = node;\n  if (attributes.length === 0) {\n    diagnosticError(path, {\n      label: \"The 'macro' tag must have a 'name' attribute.\",\n    });\n    path.remove();\n    return;\n  }\n\n  if (attributes.length > 1) {\n    diagnosticError(path, {\n      label: \"The 'macro' tag can only have a 'name' attribute.\",\n    });\n    path.remove();\n    return;\n  }\n\n  const [nameAttr] = attributes;\n  if (!t.isStringLiteral(nameAttr.value)) {\n    diagnosticError(path, {\n      label: \"The 'name' attribute for 'macro' tags must be a string literal.\",\n      loc: nameAttr.loc || node.loc || undefined,\n    });\n    path.remove();\n    return;\n  }\n\n  path.replaceWith(\n    withPreviousLocation(\n      t.functionDeclaration(\n        getMacroIdentifierForName(path, nameAttr.value.value),\n        [t.identifier(\"out\"), ...body.params],\n        t.blockStatement(body.body),\n      ),\n      node,\n    ),\n  );\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/taglib/core/migrate.js",
    "content": "import { types as t } from \"@marko/compiler\";\nimport { diagnosticDeprecate } from \"@marko/compiler/babel-utils\";\n\nimport withPreviousLocation from \"../../util/with-previous-location\";\nconst kHadAssignment = Symbol();\n\nexport default {\n  AssignmentExpression(path, state) {\n    if (\n      !state[kHadAssignment] &&\n      path.node.left.type === \"Identifier\" &&\n      path.node.left.name === \"data\"\n    ) {\n      state[kHadAssignment] = true;\n\n      let root = path.parentPath;\n      while (root.parentPath.type !== \"Program\") {\n        root = root.parentPath;\n      }\n\n      root.insertBefore(\n        t.markoScriptlet([\n          t.variableDeclaration(\"var\", [\n            t.variableDeclarator(t.identifier(\"data\")),\n          ]),\n        ]),\n      );\n    }\n  },\n  ReferencedIdentifier(path, state) {\n    if (\n      !state[kHadAssignment] &&\n      path.node.name === \"data\" &&\n      !path.scope.hasBinding(\"data\")\n    ) {\n      diagnosticDeprecate(path, {\n        label: \"The 'data' variable is deprecated. Use 'input' instead.\",\n        fix() {\n          path.replaceWith(\n            withPreviousLocation(t.identifier(\"input\"), path.node),\n          );\n        },\n      });\n    }\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/src/translator/taglib/core/parse-class.js",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  diagnosticDeprecate,\n  diagnosticError,\n  parseExpression,\n} from \"@marko/compiler/babel-utils\";\n\nimport getComponentFiles from \"../../util/get-component-files\";\n\nexport default function (path) {\n  const {\n    node,\n    hub: { file },\n  } = path;\n  const { rawValue: code, start, end } = node;\n  const meta = file.metadata.marko;\n\n  if (meta.hasComponent) {\n    diagnosticError(path.get(\"name\"), {\n      label: \"A Marko component can only have one top level class.\",\n    });\n    path.remove();\n    return;\n  }\n\n  meta.hasComponent = true;\n\n  if (getComponentFiles(path).componentFile) {\n    diagnosticError(path.get(\"name\"), {\n      label:\n        'A Marko file can either have an inline class, or an external \"component.js\", but not both.',\n    });\n\n    path.remove();\n    return;\n  }\n\n  const parsed = parseExpression(file, code.replace(/;\\s*$/, \"\"), start, end);\n  if (parsed.type === \"MarkoParseError\") {\n    const replacement = t.markoClass(t.classBody([]));\n    replacement.body.body.push(parsed);\n    path.replaceWith(replacement);\n    return;\n  }\n\n  if (parsed.superClass) {\n    diagnosticError(path, {\n      label: \"Component class cannot have a super class.\",\n      loc: parsed.superClass.loc,\n    });\n  }\n\n  const constructorPropIndex = parsed.body.body.findIndex(\n    (prop) => t.isClassMethod(prop) && prop.kind === \"constructor\",\n  );\n  if (constructorPropIndex !== -1) {\n    const constructorProp = parsed.body.body[constructorPropIndex];\n    diagnosticError(path, {\n      label:\n        \"The constructor method should not be used for a component, use onCreate instead.\",\n      loc: constructorProp.key.loc,\n    });\n\n    parsed.body.body.splice(constructorProp, 1);\n  }\n\n  if (parsed.id) {\n    diagnosticDeprecate(path, {\n      label: \"Component class should not have a name.\",\n      loc: parsed.id.loc,\n      fix() {\n        parsed.id = null;\n      },\n    });\n  }\n\n  path.replaceWith(t.markoClass(parsed.body));\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/taglib/core/parse-client.js",
    "content": "import { types as t } from \"@marko/compiler\";\nimport { parseStatements } from \"@marko/compiler/babel-utils\";\n\nexport default function (path) {\n  const {\n    node,\n    hub: { file },\n  } = path;\n  const { rawValue, end } = node;\n  const code = rawValue.replace(/^client\\s*/, \"\");\n  const start = node.start + (rawValue.length - code.length);\n  let body = parseStatements(file, code, start, end);\n  if (body.length === 1 && t.isBlockStatement(body[0])) {\n    body = body[0].body;\n  }\n\n  path.replaceWith(t.markoScriptlet(body, true, \"client\"));\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/taglib/core/parse-export.js",
    "content": "import { parseStatements } from \"@marko/compiler/babel-utils\";\n\nexport default function (path) {\n  const {\n    node,\n    hub: { file },\n  } = path;\n  const { rawValue, start, end } = node;\n  const [exportNode] = parseStatements(file, rawValue, start, end);\n  path.replaceWith(exportNode);\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/taglib/core/parse-import.js",
    "content": "import { parseStatements } from \"@marko/compiler/babel-utils\";\n\nexport default function (path) {\n  const {\n    node,\n    hub: { file },\n  } = path;\n  const { rawValue, start, end } = node;\n  const [importNode] = parseStatements(file, rawValue, start, end);\n  path.replaceWith(importNode);\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/taglib/core/parse-module-code.js",
    "content": "import markoModules from \"@marko/compiler/modules\";\nimport path from \"path\";\n\nconst startOffset = \"module-code\".length;\n\nexport default function (tag) {\n  const {\n    hub: { file },\n    node: { rawValue },\n  } = tag;\n  const dirname = path.dirname(file.opts.filename);\n  const relativeRequire = (entry) =>\n    markoModules.require(markoModules.resolve(entry, dirname));\n  const fn = eval(rawValue.slice(startOffset));\n  const source = fn(relativeRequire, file.markoOpts);\n  file.metadata.marko.moduleCode = source;\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/taglib/core/parse-server.js",
    "content": "import { types as t } from \"@marko/compiler\";\nimport { parseStatements } from \"@marko/compiler/babel-utils\";\n\nexport default function (path) {\n  const {\n    node,\n    hub: { file },\n  } = path;\n  const { rawValue, end } = node;\n  const code = rawValue.replace(/^server\\s*/, \"\");\n  const start = node.start + (rawValue.length - code.length);\n  let body = parseStatements(file, code, start, end);\n  if (body.length === 1 && t.isBlockStatement(body[0])) {\n    body = body[0].body;\n  }\n\n  path.replaceWith(t.markoScriptlet(body, true, \"server\"));\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/taglib/core/parse-static.js",
    "content": "import { types as t } from \"@marko/compiler\";\nimport { parseStatements } from \"@marko/compiler/babel-utils\";\n\nexport default function (path) {\n  const {\n    node,\n    hub: { file },\n  } = path;\n  const { rawValue, end } = node;\n  const code = rawValue.replace(/^static\\s*/, \"\");\n  const start = node.start + (rawValue.length - code.length);\n  let body = parseStatements(file, code, start, end);\n  if (body.length === 1 && t.isBlockStatement(body[0])) {\n    body = body[0].body;\n  }\n\n  path.replaceWith(t.markoScriptlet(body, true));\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/taglib/core/transform-body.js",
    "content": "import { types as t } from \"@marko/compiler\";\n\nexport default function (path) {\n  path\n    .get(\"body\")\n    .pushContainer(\"body\", [\n      t.markoTag(t.stringLiteral(\"init-components\"), [], t.markoTagBody()),\n      t.markoTag(t.stringLiteral(\"await-reorderer\"), [], t.markoTagBody()),\n      t.markoTag(\n        t.stringLiteral(\"_preferred-script-location\"),\n        [],\n        t.markoTagBody(),\n      ),\n    ]);\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/taglib/core/transform-style.js",
    "content": "import { getStart } from \"@marko/compiler/babel-utils\";\nimport path from \"path\";\n\nimport getComponentFiles from \"../../util/get-component-files\";\n\nconst STYLE_REG = /^style((?:\\.[^.\\s\\\\/:*?\"<>|({]+)+)?\\s*\\{/;\n\nexport default function (tag) {\n  const { hub, node } = tag;\n  const { deps } = hub.file.metadata.marko;\n  const { rawValue } = node;\n  const matchedBlock = STYLE_REG.exec(rawValue);\n  if (!matchedBlock) {\n    return;\n  }\n\n  if (!tag.parentPath.isProgram()) {\n    throw tag\n      .get(\"name\")\n      .buildCodeFrameError(\n        \"Style blocks must be at the root of your Marko template.\",\n      );\n  }\n\n  if (deps.some((dep) => dep.style)) {\n    throw tag\n      .get(\"name\")\n      .buildCodeFrameError(\n        \"A Marko file can only contain a single inline style block.\",\n      );\n  }\n\n  if (getComponentFiles(tag).styleFile) {\n    throw tag\n      .get(\"name\")\n      .buildCodeFrameError(\n        'A Marko file can either have an inline style block, or an external \"style.ext\" file, but not both.',\n      );\n  }\n\n  const [startContent, type = \".css\"] = matchedBlock;\n  const codeStartOffset = startContent.length;\n  const codeEndOffset = rawValue.lastIndexOf(\"}\");\n  const code = rawValue.slice(codeStartOffset, codeEndOffset);\n  const base = path.basename(hub.file.opts.filename);\n  const start = getStart(hub.file, node.name);\n  let startPos = undefined;\n  let endPos = undefined;\n\n  if (start !== null) {\n    startPos = start + codeStartOffset;\n    endPos = start + codeEndOffset;\n  }\n\n  deps.push({\n    type: type.slice(1),\n    code,\n    style: true,\n    startPos,\n    endPos,\n    path: `./${base}`,\n    virtualPath: `./${base + type}`,\n  });\n\n  tag.remove();\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/taglib/core/translate-await.js",
    "content": "import { types as t } from \"@marko/compiler\";\n\nexport function enter(path) {\n  const args = path.get(\"arguments\");\n\n  if (!args.length) {\n    throw path\n      .get(\"name\")\n      .buildCodeFrameError(\n        'You must provide a promise argument to the \"<await>\" tag, eg: \"<await(promise)>\".',\n      );\n  } else if (args.length > 1) {\n    const {\n      loc: { start },\n    } = args[1].node;\n    const {\n      loc: { end },\n    } = args[args.length - 1].node;\n    throw path.hub.file.buildCodeFrameError(\n      { loc: { start, end } },\n      'You can only pass one argument to the \"<await>\" tag.',\n    );\n  }\n\n  const [provider] = args;\n  path.pushContainer(\n    \"attributes\",\n    t.markoAttribute(\"_provider\", provider.node),\n  );\n\n  if (\n    !path.get(\"attributes\").some((attr) => attr.get(\"name\").node === \"name\")\n  ) {\n    path.pushContainer(\n      \"attributes\",\n      t.markoAttribute(\"_name\", t.stringLiteral(provider.toString())),\n    );\n  }\n\n  path.set(\"arguments\", undefined);\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/taglib/core/translate-for.js",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  assertAllowedAttributes,\n  importDefault,\n} from \"@marko/compiler/babel-utils\";\n\nexport function exit(path) {\n  const { node } = path;\n  const {\n    attributes,\n    body: { params },\n  } = node;\n  const body = node.body.body;\n  const namePath = path.get(\"name\");\n  const ofAttr = findName(attributes, \"of\");\n  const inAttr = findName(attributes, \"in\");\n  const fromAttr = findName(attributes, \"from\");\n  const toAttr = findName(attributes, \"to\");\n  const block = t.blockStatement(body);\n  let forNode;\n  let allowedAttributes = [\"by\"];\n\n  if (inAttr) {\n    allowedAttributes.push(\"in\");\n\n    const [keyParam, valParam] = params;\n\n    if (!keyParam) {\n      throw namePath.buildCodeFrameError(\n        \"Invalid 'for in' tag, missing |key, value| params.\",\n      );\n    }\n\n    if (valParam) {\n      block.body.unshift(\n        t.variableDeclaration(\"const\", [\n          t.variableDeclarator(\n            valParam,\n            t.memberExpression(inAttr.value, keyParam, true),\n          ),\n        ]),\n      );\n    }\n\n    forNode = t.forInStatement(\n      t.variableDeclaration(\"const\", [t.variableDeclarator(keyParam)]),\n      inAttr.value,\n      block,\n    );\n  } else if (ofAttr) {\n    let ofAttrValue = t.callExpression(\n      importDefault(\n        path.hub.file,\n        \"marko/src/runtime/helpers/of-fallback.js\",\n        \"of_fallback\",\n      ),\n      [ofAttr.value],\n    );\n    allowedAttributes.push(\"of\");\n\n    const [valParam, keyParam, loopParam] = params;\n\n    if (!valParam) {\n      throw namePath.buildCodeFrameError(\n        \"Invalid 'for of' tag, missing |value, index| params.\",\n      );\n    }\n\n    forNode = [];\n\n    if (keyParam) {\n      const indexName = path.scope.generateUidIdentifier(keyParam.name);\n      forNode.push(\n        t.variableDeclaration(\"let\", [\n          t.variableDeclarator(indexName, t.numericLiteral(0)),\n        ]),\n      );\n\n      block.body.unshift(\n        t.variableDeclaration(\"let\", [\n          t.variableDeclarator(keyParam, t.updateExpression(\"++\", indexName)),\n        ]),\n      );\n    }\n\n    if (loopParam) {\n      ofAttrValue = loopParam;\n      forNode.push(\n        t.variableDeclaration(\"const\", [\n          t.variableDeclarator(loopParam, ofAttr.value),\n        ]),\n      );\n    }\n\n    forNode.push(\n      t.forOfStatement(\n        t.variableDeclaration(\"const\", [t.variableDeclarator(valParam)]),\n        ofAttrValue,\n        block,\n      ),\n    );\n  } else if (fromAttr && toAttr) {\n    allowedAttributes.push(\"from\", \"to\", \"step\");\n\n    const stepAttr = findName(attributes, \"step\") || {\n      value: t.numericLiteral(1),\n    };\n    const stepValue = stepAttr ? stepAttr.value : t.numericLiteral(1);\n    const [indexParam] = params;\n    const stepsName = path.scope.generateUidIdentifier(\"steps\");\n    const stepName = path.scope.generateUidIdentifier(\"step\");\n\n    if (indexParam) {\n      block.body.unshift(\n        t.variableDeclaration(\"const\", [\n          t.variableDeclarator(\n            indexParam,\n            t.binaryExpression(\n              \"+\",\n              fromAttr.value,\n              t.binaryExpression(\"*\", stepName, stepValue),\n            ),\n          ),\n        ]),\n      );\n    }\n\n    forNode = t.forStatement(\n      t.variableDeclaration(\"let\", [\n        t.variableDeclarator(\n          stepsName,\n          t.binaryExpression(\n            \"/\",\n            t.binaryExpression(\"-\", toAttr.value, fromAttr.value),\n            stepValue,\n          ),\n        ),\n        t.variableDeclarator(stepName, t.numericLiteral(0)),\n      ]),\n      t.binaryExpression(\"<=\", stepName, stepsName),\n      t.updateExpression(\"++\", stepName),\n      block,\n    );\n  } else {\n    throw namePath.buildCodeFrameError(\n      \"Invalid 'for' tag, missing an 'of', 'in' or 'to' attribute.\",\n    );\n  }\n\n  assertAllowedAttributes(path, allowedAttributes);\n  path.replaceWithMultiple([].concat(forNode));\n}\n\nfunction findName(arr, value) {\n  return arr.find((obj) => obj.name === value);\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/taglib/core/translate-html-comment.js",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  assertNoArgs,\n  assertNoAttributes,\n  assertNoParams,\n} from \"@marko/compiler/babel-utils\";\n\nimport writeHTML from \"../../util/html-out-write\";\nimport writeVDOM from \"../../util/vdom-out-write\";\nimport withPreviousLocation from \"../../util/with-previous-location\";\n\nexport function enter(path) {\n  assertNoArgs(path);\n  assertNoParams(path);\n  assertNoAttributes(path);\n\n  if (path.hub.file.markoOpts.output === \"html\") {\n    path.replaceWithMultiple([\n      writeHTML`<!--`,\n      ...path.node.body.body,\n      writeHTML`-->`,\n    ]);\n  } else {\n    const templateQuasis = [];\n    const templateExpressions = [];\n    let currentQuasi = \"\";\n    for (const child of path.node.body.body) {\n      if (t.isMarkoText(child)) {\n        currentQuasi += child.value;\n      } else if (t.isMarkoPlaceholder(child)) {\n        templateQuasis.push(t.templateElement({ raw: currentQuasi }));\n        templateExpressions.push(child.value);\n        currentQuasi = \"\";\n      }\n    }\n\n    let value;\n    if (templateExpressions.length === 0) {\n      value = t.stringLiteral(currentQuasi);\n    } else {\n      templateQuasis.push(t.templateElement({ raw: currentQuasi }));\n      value = t.templateLiteral(templateQuasis, templateExpressions);\n    }\n\n    path.replaceWith(\n      withPreviousLocation(\n        writeVDOM(\"comment\", value, path.hub.file._componentInstanceIdentifier),\n        path.node,\n      ),\n    );\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/taglib/core/translate-include-content.js",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  assertNoAttributes,\n  assertNoParams,\n} from \"@marko/compiler/babel-utils\";\nimport path from \"path\";\n\nexport function enter(tag) {\n  const {\n    hub: { file },\n  } = tag;\n  assertNoParams(tag);\n  assertNoAttributes(tag);\n\n  const fs = file.markoOpts.fileSystem;\n  const tagName = tag.get(\"name\").node.value;\n  const tagExample = `<${tagName}(\"./path-to-file.ext\")>`;\n  const args = tag.get(\"arguments\");\n\n  if (args.length !== 1) {\n    throw tag.buildCodeFrameError(\n      `A single path argument is required for ${tagExample}.`,\n    );\n  }\n\n  const [content] = args;\n\n  if (!content.isStringLiteral()) {\n    throw content.buildCodeFrameError(\n      `The argument to ${tagExample} must be a static string.`,\n    );\n  }\n\n  const dir = path.dirname(file.opts.filename);\n  const fullPath = path.resolve(dir, content.node.value);\n\n  try {\n    const stat = fs.statSync(fullPath);\n\n    if (!stat.isFile()) {\n      throw new Error();\n    }\n  } catch {\n    throw content.buildCodeFrameError(`Unable to find file for <${tagName}>.`);\n  }\n\n  tag.replaceWith(\n    t.markoPlaceholder(\n      t.stringLiteral(fs.readFileSync(fullPath).toString(\"utf-8\")),\n      tagName === \"include-text\",\n    ),\n  );\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/taglib/core/translate-server-only.js",
    "content": "export function enter(path) {\n  if (path.hub.file.markoOpts.output !== \"html\") {\n    path.remove();\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/taglib/core/translate-while.js",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  assertNoAttributes,\n  assertNoParams,\n  getArgOrSequence,\n} from \"@marko/compiler/babel-utils\";\n\nimport withPreviousLocation from \"../../util/with-previous-location\";\n\nexport function exit(path) {\n  assertNoParams(path);\n  assertNoAttributes(path);\n  const arg = getArgOrSequence(path);\n\n  if (!arg) {\n    throw path\n      .get(\"name\")\n      .buildCodeFrameError(\n        \"A condition is required for the <while(condition)> tag.\",\n      );\n  }\n\n  path.replaceWith(\n    withPreviousLocation(\n      t.whileStatement(\n        getArgOrSequence(path),\n        t.blockStatement(path.node.body.body),\n      ),\n      path.node,\n    ),\n  );\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/taglib/index.js",
    "content": "import coreTaglib from \"./core\";\nexport const optionalTaglibs = [\"marko-widgets\", \"@marko/compat-v4\"];\nexport default [\n  [\"marko-html-title\", { \"<title>\": { parseOptions: { text: false } } }], // In Marko 5 the title tag parses as html even though only text is really allowed.\n  [coreTaglib.taglibId, coreTaglib],\n];\n"
  },
  {
    "path": "packages/runtime-class/src/translator/text/index.js",
    "content": "import translateHTML from \"./index[html]\";\nimport translateVDOM from \"./index[vdom]\";\n\nexport default function (path) {\n  if (path.hub.file.markoOpts.output === \"html\") {\n    translateHTML(path);\n  } else {\n    translateVDOM(path);\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/text/index[html].js",
    "content": "import { types as t } from \"@marko/compiler\";\n\nimport write from \"../util/html-out-write\";\nimport withPreviousLocation from \"../util/with-previous-location\";\n\nexport default function (path) {\n  const { node } = path;\n\n  path.replaceWith(\n    withPreviousLocation(write`${t.stringLiteral(node.value)}`, node),\n  );\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/text/index[vdom].js",
    "content": "import { types as t } from \"@marko/compiler\";\nimport { decode } from \"he\";\n\nimport write from \"../util/vdom-out-write\";\nimport withPreviousLocation from \"../util/with-previous-location\";\n\nexport default function (path) {\n  const { node } = path;\n\n  path.replaceWith(\n    withPreviousLocation(\n      write(\n        \"t\",\n        t.stringLiteral(decode(node.value)),\n        path.hub.file._componentInstanceIdentifier,\n      ),\n      node,\n    ),\n  );\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/util/add-dependencies.js",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  loadFileForImport,\n  parseStatements,\n  resolveRelativePath,\n} from \"@marko/compiler/babel-utils\";\nimport markoModules from \"@marko/compiler/modules\";\nimport MagicString from \"magic-string\";\nimport path from \"path\";\nconst kEntryState = Symbol();\nconst lassoDepPrefix = \"package: \";\n\nexport default (entryFile, isHydrate) => {\n  const program = entryFile.path;\n  const programNode = program.node;\n\n  if (!isHydrate) {\n    const body = [];\n    addBrowserImports(new Set(), undefined, body, entryFile, entryFile);\n    if (body.length) {\n      programNode.body = body.concat(programNode.body);\n    }\n    return;\n  }\n\n  const visitedFiles = new Set([\n    resolveRelativePath(entryFile, entryFile.opts.filename),\n  ]);\n  entryBuilder.visit(entryFile, entryFile, function visitChild(resolved) {\n    if (!visitedFiles.has(resolved)) {\n      visitedFiles.add(resolved);\n      const file = loadFileForImport(entryFile, resolved);\n      if (file) {\n        entryBuilder.visit(file, entryFile, (id) =>\n          visitChild(resolveRelativeToEntry(entryFile, file, id)),\n        );\n      }\n    }\n  });\n\n  programNode.body = entryBuilder.build(entryFile);\n  program.skip();\n};\n\nexport const entryBuilder = {\n  build(entryFile, exportInit) {\n    const state = entryFile[kEntryState];\n    if (!state) {\n      throw entryFile.path.buildCodeFrameError(\n        \"Unable to build hydrate code, no files were visited before finalizing the build\",\n      );\n    }\n    const { markoOpts } = entryFile;\n    const entryMarkoMeta = entryFile.metadata.marko;\n    const { body } = state;\n    let didExportInit = false;\n    entryMarkoMeta.watchFiles = [...state.watchFiles];\n    entryMarkoMeta.deps = [...state.lassoDeps];\n\n    if (state.hasComponents) {\n      const initId = t.identifier(\"init\");\n      const markoComponentsImport = importPath(\n        resolveRelativePath(entryFile, \"marko/src/runtime/components/index.js\"),\n      );\n      if (state.splitComponentIndex) {\n        markoComponentsImport.specifiers.push(\n          t.importSpecifier(t.identifier(\"register\"), t.identifier(\"register\")),\n        );\n      }\n\n      body.unshift(markoComponentsImport);\n\n      if (markoOpts.hydrateInit || exportInit) {\n        const initExpression = t.callExpression(\n          initId,\n          markoOpts.runtimeId ? [t.stringLiteral(markoOpts.runtimeId)] : [],\n        );\n        markoComponentsImport.specifiers.push(\n          t.importSpecifier(initId, initId),\n        );\n\n        body.push(\n          exportInit\n            ? t.exportDefaultDeclaration(\n                t.arrowFunctionExpression([], initExpression),\n              )\n            : t.expressionStatement(initExpression),\n        );\n      }\n    } else if (exportInit) {\n      body.push(\n        t.exportDefaultDeclaration(\n          t.arrowFunctionExpression([], t.blockStatement([])),\n        ),\n      );\n    }\n\n    return body;\n  },\n  visit(file, entryFile, visitChild) {\n    const fileMeta = file.metadata.marko;\n    const fileName = file.opts.filename;\n    const state = (entryFile[kEntryState] ||= {\n      shouldIncludeImport: toTestFn(file.markoOpts.hydrateIncludeImports),\n      watchFiles: new Set(),\n      imports: new Set(),\n      lassoDeps: new Set(),\n      hasComponents: false,\n      splitComponentIndex: 0,\n      body: [],\n    });\n\n    const { watchFiles, imports, lassoDeps, body } = state;\n\n    if (fileMeta.component) {\n      state.hasComponents = true;\n\n      if (path.basename(fileMeta.component) === path.basename(fileName)) {\n        // Stateful component.\n        addImport(imports, body, resolveRelativePath(entryFile, fileName));\n        return;\n      }\n    }\n\n    watchFiles.add(fileName);\n\n    for (const watchFile of fileMeta.watchFiles) {\n      watchFiles.add(watchFile);\n    }\n\n    addBrowserImports(imports, lassoDeps, body, file, entryFile);\n\n    for (const child of file.path.node.body) {\n      if (t.isImportDeclaration(child)) {\n        const { value } = child.source;\n        if (state.shouldIncludeImport(value)) {\n          addImport(\n            imports,\n            body,\n            resolveRelativeToEntry(entryFile, file, value),\n          );\n        }\n      } else if (\n        t.isMarkoScriptlet(child) &&\n        child.static &&\n        child.target !== \"server\"\n      ) {\n        for (const stmt of child.body) {\n          if (t.isImportDeclaration(stmt)) {\n            const { value } = stmt.source;\n            if (child.target === \"client\" || state.shouldIncludeImport(value)) {\n              addImport(\n                imports,\n                body,\n                resolveRelativeToEntry(entryFile, file, value),\n              );\n            }\n          }\n        }\n      }\n    }\n\n    for (const tag of fileMeta.tags) {\n      if (tag.endsWith(\".marko\")) {\n        visitChild(tag);\n      } else if (/^@lasso\\/marko-taglib\\//.test(tag)) {\n        state.hasComponents = true;\n      } else {\n        const importedTemplates = tryGetTemplateImports(file, tag);\n        if (importedTemplates) {\n          for (const templateFile of importedTemplates) {\n            visitChild(templateFile);\n          }\n        }\n      }\n    }\n\n    if (fileMeta.component) {\n      // Split component\n      const splitComponentId = t.identifier(\n        `component_${state.splitComponentIndex++}`,\n      );\n      const splitComponentImport = importPath(\n        resolveRelativeToEntry(entryFile, file, fileMeta.component),\n      );\n      splitComponentImport.specifiers.push(\n        t.importDefaultSpecifier(splitComponentId),\n      );\n      body.push(\n        splitComponentImport,\n        t.expressionStatement(\n          t.callExpression(t.identifier(\"register\"), [\n            t.stringLiteral(fileMeta.id),\n            splitComponentId,\n          ]),\n        ),\n      );\n    }\n  },\n};\n\nfunction addBrowserImports(seenImports, lassoDeps, body, file, entryFile) {\n  const { filename, sourceMaps } = file.opts;\n  let s;\n\n  for (let dep of file.metadata.marko.deps) {\n    if (typeof dep !== \"string\") {\n      const { virtualPath } = dep;\n      let { code } = dep;\n      let map;\n\n      if (sourceMaps && dep.startPos !== undefined) {\n        s = s || new MagicString(file.code, { filename });\n        map = s.snip(dep.startPos, dep.endPos).generateMap({\n          source: filename,\n          includeContent: true,\n        });\n\n        if (sourceMaps === \"inline\" || sourceMaps === \"both\") {\n          code += dep.style\n            ? `\\n/*# sourceMappingURL=${map.toUrl()}*/`\n            : `\\n//# sourceMappingURL=${map.toUrl()}`;\n\n          if (sourceMaps === \"inline\") {\n            map = undefined;\n          }\n        }\n      }\n\n      dep = file.markoOpts.resolveVirtualDependency(filename, {\n        map,\n        code,\n        virtualPath,\n      });\n\n      if (!dep) {\n        continue;\n      }\n    } else if (isLassoDep(dep)) {\n      if (lassoDeps) {\n        lassoDeps.add(\n          resolveLassoManifestDepRelativeToEntry(entryFile, file, dep),\n        );\n      }\n      continue;\n    }\n\n    addImport(seenImports, body, resolveRelativeToEntry(entryFile, file, dep));\n  }\n}\n\nfunction addImport(seenImports, body, resolved) {\n  if (seenImports.has(resolved)) return;\n  seenImports.add(resolved);\n  body.push(importPath(resolved));\n}\n\nfunction resolveRelativeToEntry(entryFile, file, req) {\n  return file === entryFile\n    ? resolveRelativePath(file, req)\n    : resolveRelativePath(\n        entryFile,\n        req[0] === \".\" ? path.join(file.opts.filename, \"..\", req) : req,\n      );\n}\n\nfunction importPath(path) {\n  return t.importDeclaration([], t.stringLiteral(path));\n}\n\nfunction tryGetTemplateImports(file, rendererRelativePath) {\n  const resolvedRendererPath = tryResolveFrom(\n    rendererRelativePath,\n    file.opts.filename,\n  );\n  let templateImports;\n\n  if (resolvedRendererPath) {\n    if (resolvedRendererPath.endsWith(\".marko\")) {\n      addTemplateImport(resolvedRendererPath);\n    } else if (resolvedRendererPath.endsWith(\".js\")) {\n      try {\n        for (const statement of parseStatements(\n          file,\n          file.markoOpts.fileSystem.readFileSync(resolvedRendererPath, \"utf-8\"),\n        )) {\n          if (statement.type === \"ImportDeclaration\") {\n            addTemplateImport(statement.source.value);\n          } else {\n            t.traverseFast(statement, (node) => {\n              if (\n                node.type === \"CallExpression\" &&\n                (node.callee.name === \"require\" ||\n                  (node.callee.type === \"MemberExpression\" &&\n                    node.callee.object.type === \"Identifier\" &&\n                    node.callee.object.name === \"require\" &&\n                    node.callee.property.type === \"Identifier\" &&\n                    node.callee.property.name === \"resolve\")) &&\n                node.arguments.length === 1 &&\n                node.arguments[0].type === \"StringLiteral\"\n              ) {\n                addTemplateImport(node.arguments[0].value);\n              }\n            });\n          }\n        }\n      } catch {\n        // Ignore\n      }\n    }\n  }\n\n  return templateImports;\n\n  function addTemplateImport(request) {\n    if (request.endsWith(\".marko\")) {\n      const resolvedTemplatePath = tryResolveFrom(\n        request,\n        resolvedRendererPath,\n      );\n      if (resolvedTemplatePath) {\n        if (templateImports) {\n          templateImports.push(resolvedTemplatePath);\n        } else {\n          templateImports = [resolvedTemplatePath];\n        }\n      }\n    }\n  }\n}\n\nfunction tryResolveFrom(request, from) {\n  return request[0] === \".\"\n    ? path.resolve(from, \"..\", request)\n    : /^(?:[/\\\\]|[a-zA-Z]:)/.test(request)\n      ? request\n      : markoModules.tryResolve(request, path.dirname(from));\n}\n\nfunction toTestFn(val) {\n  if (typeof val === \"function\") {\n    return val;\n  }\n\n  return val.test.bind(val);\n}\n\nfunction isLassoDep(dep) {\n  return dep.startsWith(lassoDepPrefix);\n}\n\n/**\n * Lasso manifest deps in `lasso-marko` do not support node module resolution.\n * eg `package: @ebay/ebayui-core/browser.json` will not resolve.\n *\n * This resolution returns a direct posix relative path.\n */\nfunction resolveLassoManifestDepRelativeToEntry(entryFile, targetFile, dep) {\n  const entryFileName = entryFile.opts.filename;\n  const targetFileName = targetFile.opts.filename;\n  if (entryFileName === targetFileName) return dep;\n\n  const resolved = toPosix(\n    path.relative(\n      path.dirname(entryFileName),\n      path.join(targetFileName, \"..\", dep.slice(lassoDepPrefix.length)),\n    ),\n  );\n  return lassoDepPrefix + (resolved[0] === \".\" ? resolved : `./${resolved}`);\n}\n\nconst toPosix = path.sep === \"/\" ? (v) => v : (v) => v.replace(/\\\\/g, \"/\");\n"
  },
  {
    "path": "packages/runtime-class/src/translator/util/escape-regexp.js",
    "content": "const regexpCharsReg = /[\\\\^$.*+?()[\\]{}|]/g;\nexport function escapeRegExp(str) {\n  return str.replace(regexpCharsReg, \"\\\\$&\");\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/util/get-component-files.js",
    "content": "import path from \"path\";\n\nimport { escapeRegExp } from \"./escape-regexp\";\n\nconst COMPONENT_FILES_KEY = \"___marko_component_files___\";\n\nexport default function getComponentFiles({ hub: { file } }) {\n  const meta = file.metadata.marko;\n\n  if (meta[COMPONENT_FILES_KEY]) {\n    return meta[COMPONENT_FILES_KEY];\n  }\n\n  const { filename } = file.opts;\n  const fs = file.markoOpts.fileSystem;\n  const dirname = path.dirname(filename);\n  const dirFiles = fs.readdirSync(dirname).sort();\n  const base = getBase(filename);\n  const isEntry = \"index\" === base || \"template\" === base;\n  const fileMatch = `(${escapeRegExp(base)}\\\\.${isEntry ? \"|\" : \"\"})`;\n  const styleMatch = new RegExp(`^${fileMatch}style\\\\.\\\\w+$`);\n  const componentMatch = new RegExp(`^${fileMatch}component\\\\.\\\\w+$`);\n  const splitComponentMatch = new RegExp(\n    `^${fileMatch}component-browser\\\\.\\\\w+$`,\n  );\n  const packageMatch = new RegExp(`^${fileMatch}browser\\\\.\\\\json$`);\n  let styleFile;\n  let packageFile;\n  let componentFile;\n  let componentBrowserFile;\n\n  for (const file of dirFiles) {\n    if (!styleFile && styleMatch.test(file)) {\n      styleFile = `./${file}`;\n    } else if (!packageFile && packageMatch.test(file)) {\n      packageFile = `./${file}`;\n    } else if (!componentFile && componentMatch.test(file)) {\n      componentFile = `./${file}`;\n      meta.hasComponent = true;\n    } else if (!componentBrowserFile && splitComponentMatch.test(file)) {\n      componentBrowserFile = `./${file}`;\n      meta.hasComponentBrowser = true;\n    }\n  }\n\n  return (meta[COMPONENT_FILES_KEY] = {\n    styleFile,\n    packageFile,\n    componentFile,\n    componentBrowserFile,\n  });\n}\n\n/**\n * Given a filename, gets the base name, strips off the file extension\n * and removes any arc flags (https://github.com/eBay/arc).\n *\n * @example\n * getBase(\"/dir/foo.marko\") // => \"foo\"\n * getBase(\"/dir/foo.bar.marko\") // => \"foo.bar\"\n * getBase(\"/dir/foo[bar].marko\") // => \"foo\"\n * getBase(\"/dir/foo[bar].baz.marko\") // => \"foo.baz\"\n */\nfunction getBase(filename) {\n  const start = filename.lastIndexOf(path.sep) + 1;\n  const leftDot = filename.indexOf(\".\", start);\n\n  if (leftDot === -1) {\n    return filename.slice(start);\n  }\n\n  const rightDot = filename.lastIndexOf(\".\");\n  const closeBracket = leftDot - 1;\n  if (filename[closeBracket] === \"]\") {\n    const openBracket = filename.lastIndexOf(\"[\", closeBracket);\n    if (openBracket > start) {\n      // If we match a \"]\" before the extension and find a \"[\" before that,\n      // then we have an arc flag. Strip it off.\n      return (\n        filename.slice(start, openBracket) + filename.slice(leftDot, rightDot)\n      );\n    }\n  }\n\n  return filename.slice(start, rightDot);\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/util/html-out-write.js",
    "content": "import { types as t } from \"@marko/compiler\";\nimport { normalizeTemplateString } from \"@marko/compiler/babel-utils\";\n\nexport default function write(strings, ...expressions) {\n  const template = normalizeTemplateString(strings, ...expressions);\n\n  if (template) {\n    return t.expressionStatement(\n      t.callExpression(\n        t.memberExpression(t.identifier(\"out\"), t.identifier(\"w\")),\n        [template],\n      ),\n    );\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/util/key-manager.js",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  isLoopTag,\n  isTransparentTag,\n  normalizeTemplateString,\n} from \"@marko/compiler/babel-utils\";\nconst KeyManagerLookup = new WeakMap();\n\n/**\n * @returns {KeyManager}\n */\nexport function getKeyManager(path) {\n  const { hub } = path;\n  return (\n    KeyManagerLookup.get(hub) ||\n    KeyManagerLookup.set(hub, new KeyManager()).get(hub)\n  );\n}\n\nexport function hasAutoKey(path) {\n  const key = path.get(\"key\").node;\n  return Boolean(key && key._isAutoKey);\n}\n\nexport function hasUserKey(path) {\n  return path.node._hasUserKey;\n}\n\nclass KeyManager {\n  constructor() {\n    this._nextKey = 0;\n  }\n\n  nextKey() {\n    return Object.assign(t.stringLiteral(String(this._nextKey++)), {\n      _isAutoKey: true,\n    });\n  }\n\n  resolveKey(path) {\n    if (isLoopTag(path)) {\n      // Record the first child key if found under a loop.\n      const firstChildTag = path\n        .get(\"body.body\")\n        .find((child) => child.isMarkoTag());\n      const firstChildKey = firstChildTag && getUserKey(firstChildTag);\n\n      if (firstChildKey) {\n        const keyValueIdentifier = path.scope.generateUidIdentifier(\"keyValue\");\n        firstChildTag.set(\"key\", keyValueIdentifier);\n        firstChildTag.insertBefore(\n          t.variableDeclaration(\"const\", [\n            t.variableDeclarator(keyValueIdentifier, firstChildKey),\n          ]),\n        );\n\n        path.set(\"keyValue\", keyValueIdentifier);\n        path.get(\"body\").scope.crawl();\n      }\n      return;\n    }\n\n    if (isTransparentTag(path)) {\n      return;\n    }\n\n    if (getUserKey(path)) {\n      return;\n    }\n\n    const parentKeyScope = getParentKeyScope(path);\n    const autoKey = path.get(\"key\").node || this.nextKey();\n    path.set(\n      \"key\",\n      parentKeyScope\n        ? t.binaryExpression(\"+\", autoKey, parentKeyScope)\n        : autoKey,\n    );\n  }\n}\n\nfunction getParentKeyScope(path) {\n  const parentLoopTag = path.findParent(isLoopTag);\n  return parentLoopTag && getKeyScope(parentLoopTag);\n}\n\nfunction getKeyScope(path) {\n  const existingKeyScope = path.get(\"keyScope\").node;\n  if (existingKeyScope) {\n    return existingKeyScope;\n  }\n\n  const keyScopeIdentifier = path.scope.generateUidIdentifier(\"keyScope\");\n  const firstChildKeyValue = path.get(\"keyValue\").node;\n\n  if (firstChildKeyValue) {\n    const valuePath = path\n      .get(\"body\")\n      .scope.getOwnBinding(firstChildKeyValue.name).path;\n    const declarationPath = valuePath.parentPath;\n    declarationPath.pushContainer(\n      \"declarations\",\n      t.variableDeclarator(\n        keyScopeIdentifier,\n        normalizeTemplateString`[${firstChildKeyValue}]`,\n      ),\n    );\n  } else {\n    let keyValue;\n\n    if (path.get(\"name.value\").node === \"for\") {\n      if (path.node.attributes.some((attr) => attr.name === \"of\")) {\n        keyValue = path.node.body.params[1];\n      } else {\n        keyValue = path.node.body.params[0];\n      }\n    }\n\n    if (!keyValue) {\n      const keyValueIdentifier = path.scope.generateUidIdentifier(\"keyValue\");\n      path.insertBefore(\n        t.variableDeclaration(\"let\", [\n          t.variableDeclarator(keyValueIdentifier, t.numericLiteral(0)),\n        ]),\n      );\n\n      keyValue = t.updateExpression(\"++\", keyValueIdentifier);\n    }\n\n    const parentKeyScope = getParentKeyScope(path);\n    if (parentKeyScope) {\n      keyValue = t.binaryExpression(\"+\", keyValue, parentKeyScope);\n    }\n\n    const keyScopeDecl = t.variableDeclaration(\"const\", [\n      t.variableDeclarator(\n        keyScopeIdentifier,\n        normalizeTemplateString`[${keyValue}]`,\n      ),\n    ]);\n\n    if (path.node.attributeTags.length) {\n      path.unshiftContainer(\"attributeTags\", keyScopeDecl);\n    } else {\n      path.get(\"body\").unshiftContainer(\"body\", keyScopeDecl);\n    }\n  }\n\n  path.set(\"keyScope\", keyScopeIdentifier);\n  return keyScopeIdentifier;\n}\n\nfunction getUserKey(path) {\n  if (hasAutoKey(path)) {\n    return undefined;\n  }\n\n  let key = path.get(\"key\").node;\n  if (key === undefined) {\n    const keyAttr = path\n      .get(\"attributes\")\n      .find((attr) => attr.get(\"name\").node === \"key\");\n\n    if (keyAttr) {\n      key = normalizeTemplateString`@${keyAttr.get(\"value\").node}`;\n      path.node._hasUserKey = true;\n      keyAttr.remove();\n    } else {\n      key = null;\n    }\n\n    path.set(\"key\", key);\n  }\n\n  return key;\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/util/optimize-html-writes.js",
    "content": "import { normalizeTemplateString } from \"@marko/compiler/babel-utils\";\n\nconst mergeWriteCallsVisitor = {\n  ExpressionStatement(path) {\n    let curPath = path;\n    const quasis = [\"\"];\n    const expressions = [];\n    const removals = [];\n\n    do {\n      const content = getOutContent(curPath);\n      if (!content) break;\n      if (curPath !== path) removals.push(curPath);\n      quasis.push(\"\");\n      expressions.push(content);\n    } while ((curPath = curPath.getNextSibling()));\n\n    removals.forEach((removal) => removal.remove());\n\n    if (expressions.length > 1) {\n      path\n        .get(\"expression.arguments.0\")\n        .replaceWith(normalizeTemplateString(quasis, ...expressions));\n    }\n  },\n};\n\nexport function optimizeHTMLWrites(path) {\n  const {\n    hub: {\n      file: { markoOpts },\n    },\n  } = path;\n\n  if (markoOpts.optimize && markoOpts.output === \"html\") {\n    path.traverse(mergeWriteCallsVisitor);\n  }\n}\n\nfunction getOutContent(path) {\n  if (path.isExpressionStatement()) {\n    return getOutContent(path.get(\"expression\"));\n  }\n\n  return (\n    path.isCallExpression() &&\n    path.get(\"callee\").isMemberExpression() &&\n    path.get(\"callee.object.name\").node === \"out\" &&\n    path.get(\"callee.property.name\").node === \"w\" &&\n    path.get(\"arguments.0\").node\n  );\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/util/optimize-vdom-create.js",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  computeNode,\n  getTagDef,\n  importDefault,\n  isLoopTag,\n  isNativeTag,\n} from \"@marko/compiler/babel-utils\";\nimport { decode } from \"he\";\n\nimport translateAttributes from \"../tag/native-tag[vdom]/attributes\";\nimport { getKeyManager, hasUserKey } from \"./key-manager\";\nimport write from \"./vdom-out-write\";\n\nconst skipDirectives = new Set([\n  \"key\",\n  \"w-bind\",\n  \"no-update\",\n  \"no-update-if\",\n  \"no-update-body\",\n  \"no-update-body-if\",\n]);\nconst staticNodes = new WeakSet();\n\nconst mergeStaticCreateVisitor = {\n  MarkoText(path, state) {\n    const { node } = path;\n    state.currentRoot = t.callExpression(\n      t.memberExpression(state.currentRoot, t.identifier(\"t\")),\n      [t.stringLiteral(decode(node.value))],\n    );\n  },\n  MarkoPlaceholder(path, state) {\n    const computed = computeNode(path.node.value);\n    state.currentRoot = t.callExpression(\n      t.memberExpression(state.currentRoot, t.identifier(\"t\")),\n      [\n        t.stringLiteral(\n          computed && computed.value != null ? `${computed.value}` : \"\",\n        ),\n      ],\n    );\n  },\n  MarkoTag(path, state) {\n    getKeyManager(path).resolveKey(path);\n    state.currentRoot = t.callExpression(\n      t.memberExpression(state.currentRoot, t.identifier(\"e\")),\n      getConstElementArgs(path),\n    );\n  },\n};\n\nconst analyzeStaticVisitor = {\n  MarkoText(path) {\n    staticNodes.add(path.node);\n  },\n  MarkoPlaceholder(path) {\n    if (path.node.escape) {\n      const computed = computeNode(path.node.value);\n      if (computed) {\n        staticNodes.add(path.node);\n      }\n    }\n  },\n  MarkoTag: {\n    enter(path) {\n      // needed to handle global keys on elements that don't have specific key attributes\n      if (isLoopTag(path)) path.skip();\n    },\n    exit(path) {\n      // check name\n      let isStatic =\n        isNativeTag(path) &&\n        !path.node.attributeTags.length &&\n        !path.node.body.attributeTags &&\n        !path.node.body.params.length &&\n        !path.node.arguments &&\n        !hasUserKey(path);\n\n      const tagDef = getTagDef(path);\n      isStatic =\n        isStatic &&\n        (!tagDef.translator ||\n          tagDef.name === \"script\" ||\n          tagDef.name === \"style\");\n\n      // check attributes\n      isStatic =\n        isStatic &&\n        path\n          .get(\"attributes\")\n          .every(\n            (attr) =>\n              t.isMarkoAttribute(attr) &&\n              !(\n                attr.node.arguments ||\n                attr.node.modifier ||\n                skipDirectives.has(attr.node.name) ||\n                !computeNode(attr.node.value)\n              ),\n          );\n\n      // check children\n      isStatic =\n        isStatic &&\n        path\n          .get(\"body\")\n          .get(\"body\")\n          .every((t) => staticNodes.has(t.node));\n\n      if (isStatic) staticNodes.add(path.node);\n    },\n  },\n};\n\nexport function optimizeStaticVDOM(path) {\n  const {\n    hub: { file },\n  } = path;\n\n  if (\n    !shouldRun(file.markoOpts) ||\n    !staticNodes.has(path.node) ||\n    staticNodes.has(path.parentPath.parentPath.node)\n  ) {\n    return;\n  }\n\n  const identifier = path.scope.generateUidIdentifier(\"marko_node\");\n  const state = {\n    currentRoot: t.callExpression(\n      importDefault(\n        file,\n        \"marko/src/runtime/vdom/helpers/const-element.js\",\n        \"marko_constElement\",\n      ),\n      getConstElementArgs(path),\n    ),\n  };\n\n  path.traverse(mergeStaticCreateVisitor, state);\n\n  const d = t.variableDeclaration(\"const\", [\n    t.variableDeclarator(identifier, state.currentRoot),\n  ]);\n  file.path.node.body.push(d);\n  path.replaceWith(write(\"n\", identifier, file._componentInstanceIdentifier));\n  path.skip();\n}\n\nexport function analyzeStaticVDOM(path) {\n  if (shouldRun(path.hub.file.markoOpts)) {\n    path.traverse(analyzeStaticVisitor);\n  }\n}\n\nfunction shouldRun(markoOpts) {\n  return markoOpts.optimize && markoOpts.output !== \"html\";\n}\n\nfunction getConstElementArgs(path) {\n  const { node } = path;\n  return [\n    node.name,\n    translateAttributes(path, path.get(\"attributes\")),\n    t.numericLiteral(node.body.body.length),\n  ];\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/util/plugin-hooks.js",
    "content": "// Utilities for executing multi step compiler hooks (code generators in this package).\n\nexport function enter(plugin, ...args) {\n  const fn =\n    (plugin &&\n      (plugin.enter ||\n        (plugin.default && plugin.default.enter) ||\n        plugin.default)) ||\n    plugin;\n  if (typeof fn === \"function\") {\n    fn(...args);\n  }\n}\n\nexport function exit(plugin, ...args) {\n  const fn =\n    plugin &&\n    (plugin.exit || (plugin.default ? plugin.default.exit : undefined));\n  if (typeof fn === \"function\") {\n    fn(...args);\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/util/runtime-flags.js",
    "content": "export const HAS_SIMPLE_ATTRS = 1;\nexport const IS_CUSTOM_ELEMENT = 2; // TODO: impl custom elements.\nexport const SPREAD_ATTRS = 4; // TODO: impl custom elements.\n"
  },
  {
    "path": "packages/runtime-class/src/translator/util/vdom-out-write.js",
    "content": "import { types as t } from \"@marko/compiler\";\n\nexport default function write(method, ...args) {\n  return t.expressionStatement(\n    t.callExpression(\n      t.memberExpression(t.identifier(\"out\"), t.identifier(method)),\n      args,\n    ),\n  );\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator/util/with-previous-location.js",
    "content": "export default function withPreviousLocation(newNode, originalNode) {\n  newNode.start = originalNode.start;\n  newNode.loc = originalNode.loc;\n  newNode.end = originalNode.end;\n  return newNode;\n}\n"
  },
  {
    "path": "packages/runtime-class/src/translator.js",
    "content": "import * as tagsAPI from \"@marko/runtime-tags/translator\";\n\nimport * as classAPI from \"./translator/index\";\n\nexport const {\n  preferAPI,\n  tagDiscoveryDirs,\n  transform,\n  analyze,\n  translate,\n  taglibs,\n  getRuntimeEntryFiles,\n} = tagsAPI.createInteropTranslator(classAPI);\n"
  },
  {
    "path": "packages/runtime-class/tags-html.d.ts",
    "content": "import * as csstype from \"csstype\";\n\n/**\n * Potential improvements:\n * - Share properties between input interfaces\n * - Add more interfaces of `Link` which restrict specific attributes based on type.\n * - Isolate some event handlers to specific elements (eg media events).\n * - Create more interface for individual aria roles.\n */\n\ndeclare global {\n  namespace Marko {\n    interface NativeTags {\n      a: NativeTag<Marko.HTML.A, HTMLAnchorElement>;\n      abbr: NativeTag<Marko.HTML.Abbr, HTMLElement>;\n      address: NativeTag<Marko.HTML.Address, HTMLElement>;\n      area: NativeTag<Marko.HTML.Area, HTMLAreaElement>;\n      article: NativeTag<Marko.HTML.Article, HTMLElement>;\n      aside: NativeTag<Marko.HTML.Aside, HTMLElement>;\n      audio: NativeTag<Marko.HTML.Audio, HTMLAudioElement>;\n      b: NativeTag<Marko.HTML.B, HTMLElement>;\n      base: NativeTag<Marko.HTML.Base, HTMLBaseElement>;\n      bdi: NativeTag<Marko.HTML.BDI, HTMLElement>;\n      bdo: NativeTag<Marko.HTML.BDO, HTMLElement>;\n      blockquote: NativeTag<Marko.HTML.BlockQuote, HTMLQuoteElement>;\n      body: NativeTag<Marko.HTML.Body, HTMLBodyElement>;\n      br: NativeTag<Marko.HTML.Br, HTMLBRElement>;\n      button: NativeTag<Marko.HTML.Button, HTMLButtonElement>;\n      canvas: NativeTag<Marko.HTML.Canvas, HTMLCanvasElement>;\n      caption: NativeTag<Marko.HTML.Caption, HTMLTableCaptionElement>;\n      cite: NativeTag<Marko.HTML.Cite, HTMLElement>;\n      code: NativeTag<Marko.HTML.Code, HTMLElement>;\n      col: NativeTag<Marko.HTML.Col, HTMLTableColElement>;\n      colgroup: NativeTag<Marko.HTML.ColGroup, HTMLTableColElement>;\n      data: NativeTag<Marko.HTML.Data, HTMLDataElement>;\n      datalist: NativeTag<Marko.HTML.DataList, HTMLDataListElement>;\n      dd: NativeTag<Marko.HTML.DD, HTMLElement>;\n      del: NativeTag<Marko.HTML.Del, HTMLModElement>;\n      details: NativeTag<Marko.HTML.Details, HTMLDetailsElement>;\n      dfn: NativeTag<Marko.HTML.Dfn, HTMLElement>;\n      dialog: NativeTag<Marko.HTML.Dialog, HTMLDialogElement>;\n      div: NativeTag<Marko.HTML.Div, HTMLDivElement>;\n      dl: NativeTag<Marko.HTML.DL, HTMLDListElement>;\n      dt: NativeTag<Marko.HTML.DT, HTMLElement>;\n      em: NativeTag<Marko.HTML.Em, HTMLElement>;\n      embed: NativeTag<Marko.HTML.Embed, HTMLEmbedElement>;\n      fieldset: NativeTag<Marko.HTML.FieldSet, HTMLFieldSetElement>;\n      figcaption: NativeTag<Marko.HTML.FigCaption, HTMLElement>;\n      figure: NativeTag<Marko.HTML.Figure, HTMLElement>;\n      footer: NativeTag<Marko.HTML.Footer, HTMLElement>;\n      form: NativeTag<Marko.HTML.Form, HTMLFormElement>;\n      h1: NativeTag<Marko.HTML.H1, HTMLHeadingElement>;\n      h2: NativeTag<Marko.HTML.H2, HTMLHeadingElement>;\n      h3: NativeTag<Marko.HTML.H3, HTMLHeadingElement>;\n      h4: NativeTag<Marko.HTML.H4, HTMLHeadingElement>;\n      h5: NativeTag<Marko.HTML.H5, HTMLHeadingElement>;\n      h6: NativeTag<Marko.HTML.H6, HTMLHeadingElement>;\n      head: NativeTag<Marko.HTML.Head, HTMLHeadElement>;\n      header: NativeTag<Marko.HTML.Header, HTMLElement>;\n      hgroup: NativeTag<Marko.HTML.HGroup, HTMLElement>;\n      hr: NativeTag<Marko.HTML.HR, HTMLHRElement>;\n      html: NativeTag<Marko.HTML.HTML, HTMLHtmlElement>;\n      i: NativeTag<Marko.HTML.I, HTMLElement>;\n      iframe: NativeTag<Marko.HTML.IFrame, HTMLIFrameElement>;\n      img: NativeTag<Marko.HTML.Img, HTMLImageElement>;\n      input: NativeTag<Marko.HTML.Input, HTMLInputElement>;\n      ins: NativeTag<Marko.HTML.Ins, HTMLModElement>;\n      kbd: NativeTag<Marko.HTML.Kbd, HTMLElement>;\n      label: NativeTag<Marko.HTML.Label, HTMLLabelElement>;\n      legend: NativeTag<Marko.HTML.Legend, HTMLLegendElement>;\n      li: NativeTag<Marko.HTML.LI, HTMLLIElement>;\n      link: NativeTag<Marko.HTML.Link, HTMLLinkElement>;\n      main: NativeTag<Marko.HTML.Main, HTMLElement>;\n      map: NativeTag<Marko.HTML.Map, HTMLMapElement>;\n      mark: NativeTag<Marko.HTML.Mark, HTMLElement>;\n      menu: NativeTag<Marko.HTML.Menu, HTMLMenuElement>;\n      meta: NativeTag<Marko.HTML.Meta, HTMLMetaElement>;\n      meter: NativeTag<Marko.HTML.Meter, HTMLMeterElement>;\n      nav: NativeTag<Marko.HTML.Nav, HTMLElement>;\n      noscript: NativeTag<Marko.HTML.NoScript, HTMLElement>;\n      object: NativeTag<Marko.HTML.Object, HTMLObjectElement>;\n      ol: NativeTag<Marko.HTML.OL, HTMLOListElement>;\n      optgroup: NativeTag<Marko.HTML.OptGroup, HTMLOptGroupElement>;\n      option: NativeTag<Marko.HTML.Option, HTMLOptionElement>;\n      output: NativeTag<Marko.HTML.Output, HTMLOutputElement>;\n      p: NativeTag<Marko.HTML.P, HTMLParagraphElement>;\n      picture: NativeTag<Marko.HTML.Picture, HTMLPictureElement>;\n      pre: NativeTag<Marko.HTML.Pre, HTMLPreElement>;\n      progress: NativeTag<Marko.HTML.Progress, HTMLProgressElement>;\n      q: NativeTag<Marko.HTML.Q, HTMLQuoteElement>;\n      rp: NativeTag<Marko.HTML.RP, HTMLElement>;\n      rt: NativeTag<Marko.HTML.RT, HTMLElement>;\n      ruby: NativeTag<Marko.HTML.Ruby, HTMLElement>;\n      s: NativeTag<Marko.HTML.S, HTMLElement>;\n      samp: NativeTag<Marko.HTML.Samp, HTMLElement>;\n      script: NativeTag<Marko.HTML.Script, HTMLScriptElement>;\n      section: NativeTag<Marko.HTML.Section, HTMLElement>;\n      select: NativeTag<Marko.HTML.Select, HTMLSelectElement>;\n      slot: NativeTag<Marko.HTML.Slot, HTMLSlotElement>;\n      small: NativeTag<Marko.HTML.Small, HTMLElement>;\n      source: NativeTag<Marko.HTML.Source, HTMLSourceElement>;\n      span: NativeTag<Marko.HTML.Span, HTMLSpanElement>;\n      strong: NativeTag<Marko.HTML.Strong, HTMLElement>;\n      style: NativeTag<Marko.HTML.Style, HTMLStyleElement>;\n      sub: NativeTag<Marko.HTML.Sub, HTMLElement>;\n      summary: NativeTag<Marko.HTML.Summary, HTMLElement>;\n      sup: NativeTag<Marko.HTML.Sup, HTMLElement>;\n      table: NativeTag<Marko.HTML.Table, HTMLTableElement>;\n      tbody: NativeTag<Marko.HTML.TBody, HTMLTableSectionElement>;\n      td: NativeTag<Marko.HTML.TD, HTMLTableDataCellElement>;\n      template: NativeTag<Marko.HTML.Template, HTMLTemplateElement>;\n      textarea: NativeTag<Marko.HTML.TextArea, HTMLTextAreaElement>;\n      tfoot: NativeTag<Marko.HTML.TFoot, HTMLTableSectionElement>;\n      th: NativeTag<Marko.HTML.TH, HTMLTableHeaderCellElement>;\n      thead: NativeTag<Marko.HTML.THead, HTMLTableSectionElement>;\n      time: NativeTag<Marko.HTML.Time, HTMLTimeElement>;\n      title: NativeTag<Marko.HTML.Title, HTMLTitleElement>;\n      tr: NativeTag<Marko.HTML.TR, HTMLTableRowElement>;\n      track: NativeTag<Marko.HTML.Track, HTMLTrackElement>;\n      u: NativeTag<Marko.HTML.U, HTMLElement>;\n      ul: NativeTag<Marko.HTML.UL, HTMLUListElement>;\n      var: NativeTag<Marko.HTML.Var, HTMLElement>;\n      video: NativeTag<Marko.HTML.Video, HTMLVideoElement>;\n      wbr: NativeTag<Marko.HTML.WBr, HTMLElement>;\n    }\n\n    namespace CSS {\n      export interface Properties\n        extends csstype.PropertiesHyphen, csstype.Properties {}\n    }\n\n    namespace HTML {\n      interface A extends HTMLAttributes<HTMLAnchorElement> {\n        /**\n         * Specifies whether to download the resource, or the name of the file to download.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-hyperlink-download\n         */\n        download?: AttrBooleanOrString;\n\n        /**\n         * Specifies the URL of the linked resource.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-hyperlink-href\n         */\n        href?: AttrString;\n\n        /**\n         * Specifies the language of the linked resource.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-hyperlink-hreflang\n         */\n        hreflang?: AttrString;\n\n        /**\n         * Specifies the intended media type for the linked resource.\n         * @see https://html.spec.whatwg.org/multipage/semantics.html#attr-link-media\n         */\n        media?: AttrString;\n\n        /**\n         * Specifies a space-separated list of URLs to send a ping request to when the link is followed.\n         * @see https://html.spec.whatwg.org/multipage/links.html#ping\n         */\n        ping?: AttrString;\n\n        /**\n         * Specifies the referrer policy for the linked resource.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-hyperlink-referrerpolicy\n         */\n        referrerpolicy?: AttrReferrerPolicy;\n\n        /**\n         * Specifies the relationship between the current document and the linked resource.\n         * @see https://html.spec.whatwg.org/multipage/links.html#linkTypes\n         */\n        rel?:\n          | AttrMissing\n          | \"alternate\"\n          | \"author\"\n          | \"bookmark\"\n          | \"external\"\n          | \"help\"\n          | \"license\"\n          | \"next\"\n          | \"nofollow\"\n          | \"noopener\"\n          | \"noreferrer\"\n          | \"opener\"\n          | \"prev\"\n          | \"search\"\n          | \"tag\"\n          | (string & {});\n\n        /**\n         * Specifies the browsing context for the linked resource.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-hyperlink-target\n         */\n        target?: AttrTarget;\n\n        /**\n         * Specifies the MIME type of the linked resource.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-hyperlink-type\n         */\n        type?: AttrString;\n\n        /** @deprecated */\n        charset?: AttrString;\n\n        /** @deprecated */\n        coords?: AttrString;\n\n        /** @deprecated */\n        name?: AttrString;\n\n        /** @deprecated */\n        rev?: AttrString;\n\n        /** @deprecated */\n        shape?: AttrString;\n      }\n\n      interface Abbr extends HTMLAttributes<HTMLElement> {}\n      interface Address extends HTMLAttributes<HTMLElement> {}\n      interface Area extends HTMLAttributes<HTMLAreaElement> {\n        /**\n         * Specifies an alternative text for the area.\n         * @see https://html.spec.whatwg.org/multipage/image-maps.html#attr-area-alt\n         */\n        alt?: AttrString;\n\n        /**\n         * Specifies the coordinates of the area's shape.\n         * @see https://html.spec.whatwg.org/multipage/image-maps.html#attr-area-coords\n         */\n        coords?: AttrString;\n\n        /**\n         * Specifies whether to download the resource, or the name of the file to download.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-hyperlink-download\n         */\n        download?: A[\"download\"];\n\n        /**\n         * Specifies the URL of the linked resource.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-hyperlink-href\n         */\n        href?: A[\"href\"];\n\n        /**\n         * Specifies the language of the linked resource.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-hyperlink-hreflang\n         */\n        hreflang?: A[\"hreflang\"];\n\n        /**\n         * Specifies a space-separated list of URLs to send a ping request to when the link is followed.\n         * @see https://html.spec.whatwg.org/multipage/links.html#ping\n         */\n        ping?: A[\"ping\"];\n\n        /**\n         * Specifies the referrer policy for the linked resource.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-hyperlink-referrerpolicy\n         */\n        referrerpolicy?: A[\"referrerpolicy\"];\n\n        /**\n         * Specifies the relationship between the current document and the linked resource.\n         * @see https://html.spec.whatwg.org/multipage/links.html#linkTypes\n         */\n        rel?: A[\"rel\"];\n\n        /**\n         * Specifies the shape of the clickable region on the area.\n         * @see https://html.spec.whatwg.org/multipage/image-maps.html#attr-area-shape\n         */\n        shape?: AttrMissing | \"rect\" | \"circle\" | \"poly\" | \"default\";\n\n        /**\n         * Specifies the browsing context for the linked resource.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-hyperlink-target\n         */\n        target?: A[\"target\"];\n\n        /** @deprecated */\n        name?: AttrString;\n\n        /** @deprecated */\n        nohref?: AttrString;\n\n        /** @deprecated */\n        type?: AttrString;\n      }\n      interface Article extends HTMLAttributes<HTMLElement> {}\n      interface Aside extends HTMLAttributes<HTMLElement> {}\n      interface Audio extends HTMLAttributes<HTMLAudioElement> {\n        /**\n         * Specifies whether the audio should start playing automatically.\n         * @see https://html.spec.whatwg.org/multipage/media.html#attr-media-autoplay\n         */\n        autoplay?: AttrBoolean;\n\n        /**\n         * Specifies whether the audio controls should be displayed.\n         * @see https://html.spec.whatwg.org/multipage/media.html#attr-media-controls\n         */\n        controls?: AttrBoolean;\n\n        /**\n         * Specifies the controls to be shown or hidden on the audio player.\n         * @see https://wicg.github.io/controls-list/explainer.html\n         */\n        controlslist?:\n          | AttrMissing\n          | \"nodownload\"\n          | \"nofullscreen\"\n          | \"noplaybackrate\"\n          | \"noremoteplayback\"\n          | (string & {});\n\n        /**\n         * Specifies the CORS settings for the audio resource.\n         * @see https://html.spec.whatwg.org/multipage/media.html#attr-media-crossorigin\n         */\n        crossorigin?: AttrCrossOrigin;\n\n        /**\n         * Specifies whether to disable remote playback of the audio.\n         * @see https://www.w3.org/TR/remote-playback/#the-disableremoteplayback-attribute\n         */\n        disableremoteplayback?: AttrBoolean;\n\n        /**\n         * Specifies whether the audio should start over again when finished.\n         * @see https://html.spec.whatwg.org/multipage/media.html#attr-media-loop\n         */\n        loop?: AttrBoolean;\n\n        /**\n         * Specifies whether the audio should be muted by default.\n         * @see https://html.spec.whatwg.org/multipage/media.html#attr-media-muted\n         */\n        muted?: AttrBoolean;\n\n        /**\n         * Specifies the type of preloading for the audio.\n         * @see https://html.spec.whatwg.org/multipage/media.html#attr-media-preload\n         */\n        preload?: AttrBoolean | \"none\" | \"metadata\" | \"auto\";\n\n        /**\n         * Specifies the URL of the audio resource.\n         * @see https://html.spec.whatwg.org/multipage/media.html#attr-media-src\n         */\n        src?: AttrString;\n      }\n\n      interface B extends HTMLAttributes<HTMLElement> {}\n      interface Base extends HTMLAttributes<HTMLBaseElement> {\n        /**\n         * Specifies the base URL for resolving relative URLs within the document.\n         * @see https://html.spec.whatwg.org/multipage/semantics.html#attr-base-href\n         */\n        href?: AttrString;\n\n        /**\n         * Specifies the default browsing context for links and forms in the document.\n         * @see https://html.spec.whatwg.org/multipage/semantics.html#attr-base-target\n         */\n        target?: AttrTarget;\n      }\n      interface BDI extends HTMLAttributes<HTMLElement> {}\n      interface BDO extends HTMLAttributes<HTMLElement> {}\n      interface BlockQuote extends HTMLAttributes<HTMLQuoteElement> {\n        /**\n         * Specifies the URL of the source document or quoted content.\n         * @see https://html.spec.whatwg.org/multipage/grouping-content.html#attr-blockquote-cite\n         */\n        cite?: AttrString;\n      }\n      interface Body extends HTMLAttributes<HTMLBodyElement> {\n        /**\n         * Fires after printing the document.\n         * @see https://html.spec.whatwg.org/multipage/indices.html#event-afterprint\n         */\n        onAfterPrint?: AttrEventHandler<Event, HTMLBodyElement>;\n        \"on-afterprint\"?: this[\"onAfterPrint\"];\n\n        /**\n         * Fires before printing the document.\n         * @see https://html.spec.whatwg.org/multipage/indices.html#event-beforeprint\n         */\n        onBeforePrint?: AttrEventHandler<Event, HTMLBodyElement>;\n        \"on-beforeprint\"?: this[\"onBeforePrint\"];\n\n        /**\n         * Fired when the page is about to be unloaded, in case the page would like to show a warning prompt.\n         * @see https://html.spec.whatwg.org/multipage/indices.html#event-beforeunload\n         */\n        onBeforeUnload?: AttrEventHandler<BeforeUnloadEvent, HTMLBodyElement>;\n        \"on-beforeunload\"?: this[\"onBeforeUnload\"];\n\n        /**\n         * Fired when the fragment part of the document's URL changes.\n         * @see https://html.spec.whatwg.org/multipage/indices.html#event-hashchange\n         */\n        onHashChange?: AttrEventHandler<HashChangeEvent, HTMLBodyElement>;\n        \"on-hashchange\"?: this[\"onHashChange\"];\n\n        /**\n         * Fired when the user's preferred languages change.\n         * @see https://html.spec.whatwg.org/multipage/indices.html#event-languagechange\n         */\n        onLanguageChange?: AttrEventHandler<Event, HTMLBodyElement>;\n        \"on-languagechange\"?: this[\"onLanguageChange\"];\n\n        /**\n         * Fired when the window receives a message.\n         * @see https://html.spec.whatwg.org/multipage/indices.html#event-message\n         */\n        onMessage?: AttrEventHandler<MessageEvent, HTMLBodyElement>;\n        \"on-message\"?: this[\"onMessage\"];\n\n        /**\n         * Fired when the window receives an error message.\n         * @see https://html.spec.whatwg.org/multipage/indices.html#event-messageerror\n         */\n        onMessageError?: AttrEventHandler<MessageEvent, HTMLBodyElement>;\n        \"on-messageerror\"?: this[\"onMessageError\"];\n\n        /**\n         * Fired when the network connection is lost.\n         * @see https://html.spec.whatwg.org/multipage/indices.html#event-offline\n         */\n        onOffline?: AttrEventHandler<Event, HTMLBodyElement>;\n        \"on-offline\"?: this[\"onOffline\"];\n\n        /**\n         * Fired when the network connection is recovered.\n         * @see https://html.spec.whatwg.org/multipage/indices.html#event-online\n         */\n        onOnline?: AttrEventHandler<Event, HTMLBodyElement>;\n        \"on-online\"?: this[\"onOnline\"];\n\n        /**\n         * Fired when the page's session history entry stops being the active entry.\n         * @see https://html.spec.whatwg.org/multipage/indices.html#event-pagehide\n         */\n        onPageHide?: AttrEventHandler<PageTransitionEvent, HTMLBodyElement>;\n        \"on-pagehide\"?: this[\"onPageHide\"];\n\n        /**\n         * Fired when the page's session history entry becomes the active entry.\n         * @see https://html.spec.whatwg.org/multipage/indices.html#event-pageshow\n         */\n        onPageShow?: AttrEventHandler<PageTransitionEvent, HTMLBodyElement>;\n        \"on-pageshow\"?: this[\"onPageShow\"];\n\n        /**\n         * Fired when the window's session history is popped.\n         * @see https://html.spec.whatwg.org/multipage/indices.html#event-popstate\n         */\n        onPopState?: AttrEventHandler<PopStateEvent, HTMLBodyElement>;\n        \"on-popstate\"?: this[\"onPopState\"];\n\n        /**\n         * Fires when a previously-unhandled promise rejection becomes handled.\n         * @see https://html.spec.whatwg.org/multipage/indices.html#event-rejectionhandled\n         */\n        onRejectionHandled?: AttrEventHandler<Event, HTMLBodyElement>;\n        \"on-rejectionhandled\"?: this[\"onRejectionHandled\"];\n\n        /**\n         * Fired when the corresponding localStorage or sessionStorage storage areas change.\n         * @see https://html.spec.whatwg.org/multipage/indices.html#event-storage\n         */\n        onStorage?: AttrEventHandler<StorageEvent, HTMLBodyElement>;\n        \"on-storage\"?: this[\"onStorage\"];\n\n        /**\n         * Fired when a promise rejection goes unhandled.\n         * @see https://html.spec.whatwg.org/multipage/indices.html#event-unhandledrejection\n         */\n        onUnhandledRejection?: AttrEventHandler<\n          PromiseRejectionEvent,\n          HTMLBodyElement\n        >;\n        \"on-unhandledrejection\"?: this[\"onUnhandledRejection\"];\n\n        /**\n         * Fired when the page is going away.\n         * @see https://html.spec.whatwg.org/multipage/indices.html#event-unload\n         */\n        onUnload?: AttrEventHandler<Event, HTMLBodyElement>;\n        \"on-unload\"?: this[\"onUnload\"];\n\n        /** @deprecated */\n        alink?: AttrString;\n\n        /** @deprecated */\n        background?: AttrString;\n\n        /** @deprecated */\n        bgcolor?: AttrString;\n\n        /** @deprecated */\n        link?: AttrString;\n\n        /** @deprecated */\n        text?: AttrString;\n\n        /** @deprecated */\n        vlink?: AttrString;\n\n        /** @deprecated */\n        bottommargin?: AttrStringOrNumber;\n\n        /** @deprecated */\n        leftmargin?: AttrStringOrNumber;\n\n        /** @deprecated */\n        rightmargin?: AttrStringOrNumber;\n\n        /** @deprecated */\n        topmargin?: AttrStringOrNumber;\n      }\n\n      interface Br extends HTMLAttributes<HTMLBRElement> {\n        /** @deprecated */\n        clear?: AttrString;\n      }\n      interface Button extends HTMLAttributes<HTMLButtonElement> {\n        /**\n         * Specifies whether the button should be disabled.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-disabled\n         */\n        disabled?: AttrBoolean;\n\n        /**\n         * Specifies the form element associated with the button.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-fae-form\n         */\n        form?: AttrString;\n\n        /**\n         * Specifies the URL of the form's action when the button is clicked.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-fs-formaction\n         */\n        formaction?: Form[\"action\"];\n\n        /**\n         * Specifies the enctype attribute for the form when the button is clicked.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-fs-formenctype\n         */\n        formenctype?: Form[\"enctype\"];\n\n        /**\n         * Specifies the method attribute for the form when the button is clicked.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-fs-formmethod\n         */\n        formmethod?: Form[\"method\"];\n\n        /**\n         * Specifies whether the form should not validate when the button is clicked.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-fs-formnovalidate\n         */\n        formnovalidate?: Form[\"novalidate\"];\n\n        /**\n         * Specifies the target attribute for the form when the button is clicked.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-fs-formtarget\n         */\n        formtarget?: Form[\"target\"];\n\n        /**\n         * Specifies the name of the button.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-name\n         */\n        name?: AttrString;\n\n        /**\n         * Specifies the type of the button.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-button-type\n         */\n        type?: AttrMissing | \"submit\" | \"reset\" | \"button\";\n\n        /**\n         * Specifies the value of the button.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-button-value\n         */\n        value?: AttrString;\n\n        /**\n         * Specifies the target element for the popover.\n         * @see https://developer.chrome.com/docs/web-platform/popover-api/popovertargetaction-toggle-attribute\n         */\n        popovertarget?: AttrString;\n\n        /**\n         * Specifies the action to perform on the popover target.\n         * @see https://developer.chrome.com/docs/web-platform/popover-api/popovertargetaction-toggle-attribute\n         */\n        popovertargetaction?: AttrMissing | \"toggle\" | \"show\" | \"hide\";\n      }\n      interface Canvas extends HTMLAttributes<HTMLCanvasElement> {\n        /**\n         * Specifies the height of the canvas element.\n         * @see https://html.spec.whatwg.org/multipage/canvas.html#attr-canvas-height\n         */\n        height?: AttrStringOrNumber;\n\n        /**\n         * Specifies the width of the canvas element.\n         * @see https://html.spec.whatwg.org/multipage/canvas.html#attr-canvas-width\n         */\n        width?: AttrStringOrNumber;\n      }\n      interface Caption extends HTMLAttributes<HTMLTableCaptionElement> {\n        /** @deprecated */\n        align?: AttrString;\n      }\n      interface Cite extends HTMLAttributes<HTMLElement> {}\n      interface Code extends HTMLAttributes<HTMLElement> {}\n      interface Col extends HTMLAttributes<HTMLTableColElement> {\n        /**\n         * Specifies how many columns in the table the `<col>` element spans.\n         * @see https://html.spec.whatwg.org/multipage/tables.html#attr-col-span\n         */\n        span?: AttrStringOrNumber;\n\n        /** @deprecated */\n        align?: AttrString;\n\n        /** @deprecated */\n        char?: AttrString;\n\n        /** @deprecated */\n        charoff?: AttrStringOrNumber;\n\n        /** @deprecated */\n        valign?: AttrString;\n\n        /** @deprecated */\n        width?: AttrStringOrNumber;\n      }\n      interface ColGroup extends HTMLAttributes<HTMLTableColElement> {\n        /**\n         * Specifies how many columns in the table the `<colgroup>` element spans.\n         * @see https://html.spec.whatwg.org/multipage/tables.html#attr-colgroup-span\n         */\n        span?: AttrStringOrNumber;\n\n        /** @deprecated */\n        align?: AttrString;\n\n        /** @deprecated */\n        bgcolor?: AttrString;\n\n        /** @deprecated */\n        char?: AttrString;\n\n        /** @deprecated */\n        charoff?: AttrStringOrNumber;\n\n        /** @deprecated */\n        valign?: AttrString;\n      }\n      interface Data extends HTMLAttributes<HTMLDataElement> {\n        /**\n         * Specifies the machine-readable value of the `<data>` element.\n         * @see https://html.spec.whatwg.org/multipage/text-level-semantics.html#attr-data-value\n         */\n        value?: AttrStringOrNumber;\n      }\n\n      interface DataList extends HTMLAttributes<HTMLDataListElement> {}\n      interface DD extends HTMLAttributes<HTMLElement> {\n        /** @deprecated */\n        nowrap?: AttrYesNoString;\n      }\n      interface Del extends HTMLAttributes<HTMLModElement> {\n        /**\n         * Specifies the URL of the source of the quote or change.\n         * @see https://html.spec.whatwg.org/multipage/edits.html#attr-mod-cite\n         */\n        cite?: AttrString;\n\n        /**\n         * Specifies the date and time of the quote or change.\n         * @see https://html.spec.whatwg.org/multipage/edits.html#attr-mod-datetime\n         */\n        datetime?: AttrString;\n      }\n      interface Details extends HTMLAttributes<HTMLDetailsElement> {\n        /**\n         * Specifies whether the `<details>` element is open.\n         * @see https://html.spec.whatwg.org/multipage/interactive-elements.html#attr-details-open\n         */\n        open?: AttrBoolean;\n\n        // NON STANDARD\n        /**\n         * Called whenever a the `open` attribute has changed.\n         * When `openChange` is a function, `open` becomes controlled.\n         */\n        openChange?: AttrMissing | ((open: boolean) => void);\n      }\n      interface Dfn extends HTMLAttributes<HTMLElement> {}\n      interface Dialog extends HTMLAttributes<HTMLDialogElement> {\n        /**\n         * Specifies the types of user actions that can be used to close the `<dialog>` element.\n         * @see https://html.spec.whatwg.org/multipage/interactive-elements.html#attr-dialog-closedby\n         */\n        closedby?: AttrMissing | \"any\" | \"closerequest\" | \"none\";\n\n        /**\n         * Specifies whether the `<dialog>` element is open.\n         * @see https://html.spec.whatwg.org/multipage/interactive-elements.html#attr-dialog-open\n         */\n        open?: AttrBoolean;\n\n        // NON STANDARD\n        /**\n         * Called whenever a the `open` attribute has changed.\n         * When `openChange` is a function, `open` becomes controlled.\n         */\n        openChange?: AttrMissing | ((open: boolean) => void);\n      }\n      interface Div extends HTMLAttributes<HTMLDivElement> {}\n      interface DL extends HTMLAttributes<HTMLDListElement> {}\n      interface DT extends HTMLAttributes<HTMLElement> {}\n      interface Em extends HTMLAttributes<HTMLElement> {}\n      interface Embed extends HTMLAttributes<HTMLEmbedElement> {\n        /**\n         * Specifies the height of the embedded content.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content-other.html#attr-dim-height\n         */\n        height?: AttrStringOrNumber;\n\n        /**\n         * Specifies the URL of the resource to embed.\n         * @see https://html.spec.whatwg.org/multipage/iframe-embed-object.html#attr-embed-src\n         */\n        src?: AttrString;\n\n        /**\n         * Specifies the MIME type of the embedded content.\n         * @see https://html.spec.whatwg.org/multipage/iframe-embed-object.html#attr-embed-type\n         */\n        type?: AttrString;\n\n        /**\n         * Specifies the width of the embedded content.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content-other.html#attr-dim-width\n         */\n        width?: AttrStringOrNumber;\n      }\n      interface FieldSet extends HTMLAttributes<HTMLFieldSetElement> {\n        /**\n         * Specifies whether the `<fieldset>` element is disabled.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-fieldset-disabled\n         */\n        disabled?: AttrBoolean;\n        /**\n         * Specifies associated form for the `<fieldset>`.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fae-form\n         */\n        form?: AttrString;\n        /**\n         * Specifies the name of the `<fieldset>` on the form.elements api.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-name\n         * @see HTMLFormElement.elements\n         */\n        name?: AttrString;\n      }\n      interface FigCaption extends HTMLAttributes<HTMLElement> {}\n      interface Figure extends HTMLAttributes<HTMLElement> {}\n      interface Form extends HTMLAttributes<HTMLFormElement> {\n        /**\n         * Specifies the character encodings that are to be used for the form submission.\n         * @see https://html.spec.whatwg.org/multipage/forms.html#attr-form-accept-charset\n         */\n        \"accept-charset\"?: AttrString;\n        /**\n         * Specifies the URL which the form data will be submitted to.\n         * @see https://html.spec.whatwg.org/multipage/forms.html#attr-fs-action\n         */\n        action?: AttrString;\n        /**\n         * Controls whether the browser should automatically complete form input values.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-autocomplete\n         */\n        autocomplete?: AttrOnOff;\n        /**\n         * Specifies the content type used to submit the form to the server.\n         * @see https://html.spec.whatwg.org/multipage/forms.html#attr-form-enctype\n         */\n        enctype?:\n          | AttrMissing\n          | \"application/x-www-form-urlencoded\"\n          | \"multipart/form-data\"\n          | \"text/plain\";\n        /**\n         * Specifies the HTTP method used to submit the form to the server.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fs-method\n         */\n        method?:\n          | AttrMissing\n          | \"POST\"\n          | \"post\"\n          | \"GET\"\n          | \"get\"\n          | \"dialog\"\n          | \"DIALOG\";\n        /**\n         * The name attribute represents the form's name within the forms collection.\n         * @see https://html.spec.whatwg.org/multipage/forms.html#attr-form-name\n         * @see Document.forms\n         */\n        name?: AttrString;\n        /**\n         * Indicates that the form should not be validated when submitted.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fs-novalidate\n         */\n        novalidate?: AttrBoolean;\n        /**\n         * Specifies the relationship between the current document and the linked document.\n         * @see https://html.spec.whatwg.org/multipage/links.html#linkTypes\n         */\n        rel?:\n          | AttrMissing\n          | \"external\"\n          | \"help\"\n          | \"license\"\n          | \"next\"\n          | \"nofollow\"\n          | \"noopener\"\n          | \"noreferrer\"\n          | \"opener\"\n          | \"prev\"\n          | \"search\"\n          | (string & {});\n        /**\n         * Specifies the browsing context in which the linked resource will be opened.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fs-target\n         */\n        target?: AttrTarget;\n        /** @deprecated */\n        accept?: AttrString;\n\n        /**\n         * Fired at a form element when it is constructing the entry list\n         * @see https://html.spec.whatwg.org/multipage/indices.html#event-formdata\n         */\n        onFormData?: AttrEventHandler<FormDataEvent, HTMLFormElement>;\n        \"on-formdata\"?: this[\"onFormData\"];\n\n        /**\n         * Fired when a form is submitted, either by user interaction or through a script.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#event-submit\n         */\n        onSubmit?: AttrEventHandler<SubmitEvent, HTMLFormElement>;\n        \"on-submit\"?: this[\"onSubmit\"];\n      }\n      interface H1 extends HTMLAttributes<HTMLHeadingElement> {}\n      interface H2 extends HTMLAttributes<HTMLHeadingElement> {}\n      interface H3 extends HTMLAttributes<HTMLHeadingElement> {}\n      interface H4 extends HTMLAttributes<HTMLHeadingElement> {}\n      interface H5 extends HTMLAttributes<HTMLHeadingElement> {}\n      interface H6 extends HTMLAttributes<HTMLHeadingElement> {}\n      interface Footer extends HTMLAttributes<HTMLElement> {}\n      interface Head extends HTMLAttributes<HTMLHeadElement> {\n        /** @deprecated */\n        profile?: AttrString;\n        /** @see https://ogp.me/ */\n        prefix?: AttrString;\n      }\n      interface Header extends HTMLAttributes<HTMLElement> {}\n      interface HGroup extends HTMLAttributes<HTMLElement> {}\n      interface HR extends HTMLAttributes<HTMLHRElement> {\n        /** @deprecated */\n        align?: AttrMissing | \"left\" | \"center\" | \"right\";\n        /** @deprecated */\n        color?: AttrString;\n        /** @deprecated */\n        noshade?: AttrBoolean;\n        /** @deprecated */\n        size?: AttrStringOrNumber;\n        /** @deprecated */\n        width?: AttrStringOrNumber;\n      }\n      interface HTML extends HTMLAttributes<HTMLHtmlElement> {\n        /** @deprecated */\n        xmlns?: AttrString;\n        /** @deprecated */\n        manifest?: AttrString;\n        /** @deprecated */\n        version?: AttrString;\n        /** @see https://ogp.me/ */\n        prefix?: AttrString;\n      }\n      interface I extends HTMLAttributes<HTMLElement> {}\n      interface IFrame extends HTMLAttributes<HTMLIFrameElement> {\n        /**\n         * A space-separated list of permissions that are granted to the content inside the frame.\n         * @see https://html.spec.whatwg.org/multipage/iframe-embed-object.html#attr-iframe-allow\n         */\n        allow?: AttrString;\n        /**\n         * Indicates whether the iframe can be displayed in fullscreen mode.\n         * @see https://html.spec.whatwg.org/multipage/iframe-embed-object.html#attr-iframe-allowfullscreen\n         */\n        allowfullscreen?: AttrBoolean;\n        /**\n         * The height of the iframe.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content-other.html#attr-dim-height\n         */\n        height?: AttrStringOrNumber;\n        /**\n         * Indicates whether the browser should eagerly load the frame's contents or not.\n         * @see https://html.spec.whatwg.org/multipage/iframe-embed-object.html#attr-iframe-loading\n         */\n        loading?: AttrMissing | \"eager\" | \"lazy\";\n        /**\n         * A name or keyword that can be used to refer to the iframe from elsewhere in the document.\n         * @see https://html.spec.whatwg.org/multipage/iframe-embed-object.html#attr-iframe-name\n         */\n        name?: AttrString;\n        /**\n         * Specifies the referrer policy for the iframe.\n         * @see https://html.spec.whatwg.org/multipage/iframe-embed-object.html#attr-iframe-referrerpolicy\n         */\n        referrerpolicy?: AttrReferrerPolicy;\n        /**\n         * A set of sandbox flags that are applied to the iframe.\n         * @see https://html.spec.whatwg.org/multipage/iframe-embed-object.html#attr-iframe-sandbox\n         */\n        sandbox?:\n          | AttrMissing\n          | \"allow-downloads-without-user-activation\"\n          | \"allow-downloads\"\n          | \"allow-forms\"\n          | \"allow-modals\"\n          | \"allow-orientation-lock\"\n          | \"allow-pointer-lock\"\n          | \"allow-popups-to-escape-sandbox\"\n          | \"allow-popups\"\n          | \"allow-presentation\"\n          | \"allow-same-origin\"\n          | \"allow-scripts\"\n          | \"allow-storage-access-by-user-activation\"\n          | \"allow-top-navigation-by-user-activation\"\n          | \"allow-top-navigation-to-custom-protocols\"\n          | \"allow-top-navigation\"\n          | (string & {});\n        /**\n         * The URL of the page to embed in the iframe.\n         * @see https://html.spec.whatwg.org/multipage/iframe-embed-object.html#attr-iframe-src\n         */\n        src?: AttrString;\n        /**\n         * A document to render inside the iframe.\n         * @see https://html.spec.whatwg.org/multipage/iframe-embed-object.html#attr-iframe-srcdoc\n         */\n        srcdoc?: AttrString;\n        /**\n         * The width of the iframe.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content-other.html#attr-dim-width\n         */\n        width?: AttrStringOrNumber;\n        /** @deprecated */\n        align?: AttrString;\n        /** @deprecated */\n        frameborder?: AttrStringOrNumber;\n        /** @deprecated */\n        longdesc?: AttrString;\n        /** @deprecated */\n        marginheight?: AttrStringOrNumber;\n        /** @deprecated */\n        marginwidth?: AttrStringOrNumber;\n        /** @deprecated */\n        scrolling?: AttrYesNoString | \"auto\";\n      }\n      interface Img extends HTMLAttributes<HTMLImageElement> {\n        /**\n         * The alternative text for the image, displayed when the image cannot be loaded or\n         * rendered. This is useful for accessibility purposes.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content.html#attr-img-alt\n         */\n        alt?: AttrString;\n\n        /**\n         * A CORS setting attribute that determines if the image should be fetched with CORS or not.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content.html#attr-img-crossorigin\n         */\n        crossorigin?: AttrCrossOrigin;\n\n        /**\n         * Specifies the decoding mode for the image, which can be \"sync\", \"async\", or \"auto\".\n         * @see https://html.spec.whatwg.org/multipage/embedded-content.html#attr-img-decoding\n         */\n        decoding?: AttrMissing | \"sync\" | \"async\" | \"auto\";\n\n        /**\n         * Sets the fetch priority of the image, which can be \"auto\", \"high\", or \"low\".\n         * @see https://html.spec.whatwg.org/multipage/embedded-content.html#attr-img-fetchpriority\n         */\n        fetchpriority?: AttrMissing | \"auto\" | \"high\" | \"low\";\n\n        /**\n         * The height of the image, either as a string (CSS length value) or a number (pixels).\n         * @see https://html.spec.whatwg.org/multipage/embedded-content.html#attr-dim-height\n         */\n        height?: AttrStringOrNumber;\n\n        /**\n         * Indicates that the image is part of a server-side image map.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content.html#attr-img-ismap\n         */\n        ismap?: AttrBoolean;\n\n        /**\n         * Specifies the loading behavior of the image, which can be \"eager\" or \"lazy\".\n         * @see https://html.spec.whatwg.org/multipage/embedded-content.html#attr-img-loading\n         */\n        loading?: AttrMissing | \"eager\" | \"lazy\";\n\n        /**\n         * Sets the referrer policy for the image request.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content.html#attr-img-referrerpolicy\n         */\n        referrerpolicy?: AttrReferrerPolicy;\n\n        /**\n         * A string containing size descriptors for responsive images.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content.html#attr-img-sizes\n         */\n        sizes?: AttrString;\n\n        /**\n         * The URL of the image to display.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content.html#attr-img-src\n         */\n        src?: AttrString;\n\n        /**\n         * A string containing URL and size descriptor pairs for responsive images.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content.html#attr-img-srcset\n         */\n        srcset?: AttrString;\n\n        /**\n         * The URL of a client-side image map to associate with the image.\n         * @see https://html.spec.whatwg.org/multipage/image-maps.html#attr-hyperlink-usemap\n         */\n        usemap?: AttrString;\n\n        /**\n         * The width of the image, either as a string (CSS length value) or a number (pixels\n         * @see https://html.spec.whatwg.org/multipage/embedded-content.html#attr-dim-width\n         */\n        width?: AttrStringOrNumber;\n\n        /** @deprecated */\n        align?: AttrMissing | \"left\" | \"center\" | \"right\" | \"justify\" | \"char\";\n        /** @deprecated */\n        border?: AttrStringOrNumber;\n        /** @deprecated */\n        hspace?: AttrStringOrNumber;\n        /** @deprecated */\n        longdesc?: AttrString;\n        /** @deprecated */\n        name?: AttrString;\n        /** @deprecated */\n        vspace?: AttrStringOrNumber;\n      }\n      interface Input extends HTMLAttributes<HTMLInputElement> {\n        /**\n         * A comma-separated list of file types that a file input should accept.\n         * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-accept\n         */\n        accept?: AttrString;\n\n        /**\n         * The alternate text for an image input, displayed if the image cannot be loaded.\n         * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-alt\n         */\n        alt?: AttrString;\n\n        /**\n         * Specifies whether the input field should have autocomplete enabled or disabled.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-autocomplete\n         */\n        autocomplete?: AttrAutoComplete;\n\n        /**\n         * Indicates whether a file input should use a specific capture method.\n         * \"user\" indicates the front camera, \"environment\" indicates the rear camera.\n         * @see https://w3c.github.io/html-media-capture/#dfn-capture\n         */\n        capture?: AttrBoolean | \"user\" | \"environment\";\n\n        /**\n         * Indicates whether a checkbox should be checked or not.\n         * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-checked\n         */\n        checked?: AttrBoolean;\n\n        /**\n         * Enables the submission of the directionality of a text input.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-dirname\n         */\n        dirname?: AttrString;\n\n        /**\n         * Indicates whether the input should be disabled or not. When disabled,\n         * the input will not be interactable or submitted with the form.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-disabled\n         */\n        disabled?: AttrBoolean;\n\n        /**\n         * The ID of the form element that this input is associated with.\n         * This allows the input to be associated with a form even if it is\n         * not a direct descendant of the form element.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fae-form\n         */\n        form?: AttrString;\n\n        /**\n         * The URL of the form processing endpoint when the input image is used for form submission.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fs-formaction\n         */\n        formaction?: Form[\"action\"];\n\n        /**\n         * The encoding type for the form data when the input image is used for form submission.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fs-formenctype\n         */\n        formenctype?: Form[\"enctype\"];\n\n        /**\n         * The HTTP method to use when the input image is used for form submission.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fs-formmethod\n         */\n        formmethod?: Form[\"method\"];\n\n        /**\n         * Indicates whether form validation should be skipped when the input image is used for form submission.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fs-formnovalidate\n         */\n        formnovalidate?: Form[\"novalidate\"];\n\n        /**\n         * The browsing context for displaying the response after form submission when the input image is used.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fs-formtarget\n         */\n        formtarget?: Form[\"target\"];\n\n        /**\n         * The height of of an image input in pixels.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content-other.html#attr-dim-height\n         */\n        height?: AttrStringOrNumber;\n\n        /**\n         * The ID of a <datalist> element that provides a list of suggested values for the input.\n         * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-list\n         */\n        list?: AttrString;\n\n        /**\n         * The maximum allowed value for the input.\n         * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-max\n         */\n        max?: AttrStringOrNumber;\n\n        /**\n         * The maximum number of characters allowed in the input.\n         * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-maxlength\n         */\n        maxlength?: AttrStringOrNumber;\n\n        /**\n         * The minimum allowed value for the input.\n         * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-min\n         */\n        min?: AttrStringOrNumber;\n\n        /**\n         * The minimum number of characters required in the input.\n         * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-minlength\n         */\n        minlength?: AttrStringOrNumber;\n\n        /**\n         * Indicates whether the input should allow more than one value.\n         * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-multiple\n         */\n        multiple?: AttrBoolean;\n\n        /**\n         * Used as a key when submitting the forms data. Also the name used in the form.elements api.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-name\n         * @see HTMLFormElement.elements\n         */\n        name?: AttrString;\n\n        /**\n         * A regular expression pattern to be validated against the input value.\n         * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-pattern\n         */\n        pattern?: AttrString;\n\n        /**\n         * A short hint to display in the input field before the user enters a value.\n         * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-placeholder\n         */\n        placeholder?: AttrStringOrNumber;\n\n        /**\n         * Specifies the target element for the popover.\n         * @see https://developer.chrome.com/docs/web-platform/popover-api/popovertargetaction-toggle-attribute\n         */\n        popovertarget?: AttrString;\n\n        /**\n         * Specifies the action to perform on the popover target.\n         * @see https://developer.chrome.com/docs/web-platform/popover-api/popovertargetaction-toggle-attribute\n         */\n        popovertargetaction?: AttrMissing | \"toggle\" | \"show\" | \"hide\";\n\n        /**\n         * Indicates whether the input should be read-only or not. Read-only inputs cannot be edited.\n         * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-readonly\n         */\n        readonly?: AttrBoolean;\n\n        /**\n         * Indicates whether the input is required to have a value for the form to be submitted.\n         * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-required\n         */\n        required?: AttrBoolean;\n\n        /**\n         * The number of characters wide a text input field should be displayed.\n         * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-size\n         */\n        size?: AttrStringOrNumber;\n\n        /**\n         * The URL of the image file.\n         * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-src\n         */\n        src?: AttrString;\n\n        /**\n         * Specifies the allowed number intervals for the input value.\n         * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-step\n         */\n        step?: AttrStringOrNumber;\n\n        /**\n         * Controls the data type (and associated control) of the element.\n         * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-type\n         */\n        type?:\n          | AttrMissing\n          | \"button\"\n          | \"checkbox\"\n          | \"color\"\n          | \"date\"\n          | \"datetime-local\"\n          | \"email\"\n          | \"file\"\n          | \"hidden\"\n          | \"image\"\n          | \"month\"\n          | \"number\"\n          | \"password\"\n          | \"radio\"\n          | \"range\"\n          | \"reset\"\n          | \"search\"\n          | \"submit\"\n          | \"tel\"\n          | \"text\"\n          | \"time\"\n          | \"url\"\n          | \"week\";\n\n        /**\n         * Specifies the string value you want to pass back to the server.\n         * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-value\n         */\n        value?: AttrStringOrNumber;\n\n        /**\n         * Indicates that the file input allows the user to select a directory instead of a file.\n         * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/webkitdirectory\n         */\n        webkitdirectory?: AttrBoolean;\n\n        /**\n         * The width of an image input in pixels.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content-other.html#attr-dim-width\n         */\n        width?: AttrStringOrNumber;\n\n        // NON STANDARD\n\n        /**\n         * Called whenever a the `checked` property of an `input` has changed.\n         * When `checkedChange` is a function, `checked` becomes controlled.\n         * This means the `checked` property is synchronized instead of the `checked` attribute.\n         */\n        checkedChange?: AttrMissing | ((checked: boolean) => void);\n\n        /**\n         * Used to synchronize the `checked` attribute with a `value` attribute used across related `input type=\"checkbox\"` and `input type=\"radio\"` controls.\n         * When `checkedValue` is a string, the `checked` attribute will be set to a boolean that is `true` if the `checkedValue` is the same as the `value`.\n         * When `checkedValue` is an array of strings, the `checked` attribute will be set to a boolean that is `true` if the `checkedValue` array includes the `value`.\n         * If the `checkedValue` is falsy then `checked` is always `false`.\n         */\n        checkedValue?: AttrStringOrNumber | string[] | number[];\n        /**\n         * Called whenever a `input type=\"checkbox\"` or `input type=\"radio\"` using the `checkedValue` attribute has changed.\n         * When `checkedValueChange` is a function, `checked` becomes controlled.\n         * This means the `checked` property is synchronized instead of the `checked` attribute.\n         */\n        checkedValueChange?:\n          | AttrMissing\n          | ((\n              /** Note this is hack that allows you to work with the value as both a string and a string[] without needing generics */\n              checkedValue: string & string[],\n            ) => void);\n\n        /**\n         * Called whenever a the `value` property of an `input` has changed.\n         * When `valueChange` is a function, `value` becomes controlled. This means\n         * This means the `value` property is synchronized instead of the `value` attribute.\n         */\n        valueChange?: AttrMissing | ((value: string) => void);\n      }\n\n      interface Ins extends HTMLAttributes<HTMLModElement> {\n        /**\n         * A URI for a resource that explains the reason for the insertion.\n         * @see https://html.spec.whatwg.org/multipage/edits.html#attr-mod-cite\n         */\n        cite?: AttrString;\n\n        /**\n         * The date and time when the element's contents were inserted, in the format \"YYYY-MM-DDThh:mm:ssZ\".\n         * @see https://html.spec.whatwg.org/multipage/edits.html#attr-mod-datetime\n         */\n        datetime?: AttrString;\n      }\n\n      interface Kbd extends HTMLAttributes<HTMLElement> {}\n      interface Label extends HTMLAttributes<HTMLLabelElement> {\n        /**\n         * The ID of a form control that this label is associated with.\n         * @see https://html.spec.whatwg.org/multipage/forms.html#attr-label-for\n         */\n        for?: AttrString;\n\n        /**\n         * The ID of the form element that this label is associated with, if the form control is not a descendant of the label element.\n         * Note that this attribute is non standard.\n         *\n         * @see https://www.w3schools.com/tags//att_label_form.asp\n         */\n        form?: AttrString;\n      }\n\n      interface Legend extends HTMLAttributes<HTMLLegendElement> {}\n      interface LI extends HTMLAttributes<HTMLLIElement> {\n        /**\n         * The value used to determine the ordinal value of the list item.\n         * @see https://html.spec.whatwg.org/multipage/grouping-content.html#attr-li-value\n         */\n        value?: AttrStringOrNumber;\n\n        /** @deprecated */\n        type?: AttrString;\n      }\n      // TODO break into multiple interfaces based on rel?\n      interface Link extends HTMLAttributes<HTMLLinkElement> {\n        /**\n         * Specifies the type of resource for the preload request.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-link-as\n         */\n        as?:\n          | AttrMissing\n          | \"audio\"\n          | \"document\"\n          | \"embed\"\n          | \"fetch\"\n          | \"font\"\n          | \"image\"\n          | \"object\"\n          | \"script\"\n          | \"style\"\n          | \"track\"\n          | \"video\"\n          | \"worker\";\n\n        /**\n         * Specifies whether the link should block rendering or not.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-link-blocking\n         */\n        blocking?: AttrMissing | \"render\";\n\n        /**\n         * Specifies how the CORS requests for the element should be handled.\n         * @see https://html.spec.whatwg.org/multipage/urls-and-fetching.html#cors-settings-attributes\n         */\n        crossorigin?: AttrCrossOrigin;\n\n        /**\n         * Indicates if the link element is disabled.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-link-disabled\n         */\n        disabled?: AttrBoolean;\n\n        /**\n         * Specifies the priority for the fetch request.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-link-fetchpriority\n         */\n        fetchpriority?: AttrMissing | \"auto\" | \"high\" | \"low\";\n\n        /**\n         * Specifies the URL of the linked resource.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-link-href\n         */\n        href?: AttrString;\n\n        /**\n         * Specifies the language of the linked resource.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-link-hreflang\n         */\n        hreflang?: AttrString;\n\n        /**\n         * Specifies the sizes for image resources.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-link-imagesizes\n         */\n        imagesizes?: AttrString;\n\n        /**\n         * Specifies a set of source sizes for responsive images.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-link-imagesrcset\n         */\n        imagesrcset?: AttrString;\n\n        /**\n         * Allows a resource to be fetched with a cryptographic hash, ensuring the integrity of the resource.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-link-integrity\n         */\n        integrity?: AttrString;\n\n        /**\n         * Specifies the media for which the linked resource is designed.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-link-media\n         */\n        media?: AttrString;\n\n        /**\n         * Specifies the referrer policy for the request initiated by the link element.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-link-referrerpolicy\n         */\n        referrerpolicy?: AttrReferrerPolicy;\n\n        /**\n         * Specifies the relationship between the current document and the linked resource.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-link-rel\n         */\n        rel?:\n          | AttrMissing\n          | \"alternate\"\n          | \"author\"\n          | \"bookmark\"\n          | \"canonical\"\n          | \"dns-prefetch\"\n          | \"external\"\n          | \"help\"\n          | \"icon\"\n          | \"manifest\"\n          | \"modulepreload\"\n          | \"license\"\n          | \"next\"\n          | \"pingback\"\n          | \"preconnect\"\n          | \"prefetch\"\n          | \"preload\"\n          | \"prev\"\n          | \"search\"\n          | \"stylesheet\"\n          | (string & {});\n\n        /**\n         * Specifies the size of the resource for rel=\"icon\" or rel=\"apple-touch-icon\".\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-link-sizes\n         */\n        sizes?: AttrString;\n\n        /**\n         * Specifies the MIME type of the linked resource.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-link-type\n         */\n        type?: AttrString;\n\n        /** @deprecated */\n        charset?: AttrString;\n\n        /** @deprecated */\n        rev?: AttrString;\n      }\n\n      interface Main extends HTMLAttributes<HTMLElement> {}\n      interface Map extends HTMLAttributes<HTMLMapElement> {\n        /**\n         * Specifies the name of the map.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content.html#attr-map-name\n         */\n        name?: AttrString;\n      }\n      interface Mark extends HTMLAttributes<HTMLElement> {}\n      interface Menu extends HTMLAttributes<HTMLMenuElement> {\n        /**\n         * Specifies the title of the menu.\n         * @see https://html.spec.whatwg.org/multipage/interactive-elements.html#attr-menu-label\n         */\n        label?: AttrString;\n\n        /**\n         * Specifies the type of the menu, either a context menu or a toolbar.\n         * @see https://html.spec.whatwg.org/multipage/interactive-elements.html#attr-menu-type\n         */\n        type?: AttrMissing | \"context\" | \"toolbar\";\n      }\n      interface Meta extends HTMLAttributes<HTMLMetaElement> {\n        /**\n         * Specifies the character encoding for the HTML document.\n         * @see https://html.spec.whatwg.org/multipage/semantics.html#attr-meta-charset\n         */\n        charset?: AttrString;\n\n        /**\n         * Specifies the value associated with the http-equiv or name attribute.\n         * @see https://html.spec.whatwg.org/multipage/semantics.html#attr-meta-content\n         */\n        content?: AttrString;\n\n        /**\n         * Specifies a pragma directive to affect the behavior of the user agent or server.\n         * @see https://html.spec.whatwg.org/multipage/semantics.html#attr-meta-http-equiv\n         */\n        \"http-equiv\"?:\n          | AttrMissing\n          | \"Content-Security-Policy\"\n          | \"Content-Type\"\n          | \"Default-Style\"\n          | \"Refresh\"\n          | \"X-UA-Compatible\";\n\n        /**\n         * Specifies the metadata name for the content attribute.\n         * @see https://html.spec.whatwg.org/multipage/semantics.html#attr-meta-name\n         */\n        name?: AttrString;\n\n        /** @see https://ogp.me/ */\n        property?: AttrString;\n      }\n      interface Meter extends HTMLAttributes<HTMLMeterElement> {\n        /**\n         * Specifies the upper bound of the high end of the measured range.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-meter-high\n         */\n        high?: AttrStringOrNumber;\n\n        /**\n         * Specifies the lower bound of the low end of the measured range.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-meter-low\n         */\n        low?: AttrStringOrNumber;\n\n        /**\n         * Specifies the maximum value of the range.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-meter-max\n         */\n        max?: AttrStringOrNumber;\n\n        /**\n         * Specifies the minimum value of the range.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-meter-min\n         */\n        min?: AttrStringOrNumber;\n\n        /**\n         * Specifies the value that is considered optimal.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-meter-optimum\n         */\n        optimum?: AttrStringOrNumber;\n\n        /**\n         * Specifies the current value of the meter.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-meter-value\n         */\n        value?: AttrStringOrNumber;\n      }\n\n      interface Nav extends HTMLAttributes<HTMLElement> {}\n      interface NoScript extends HTMLAttributes<HTMLElement> {}\n      interface Object extends HTMLAttributes<HTMLObjectElement> {\n        /**\n         * Specifies the URL of the resource to be embedded.\n         * @see https://html.spec.whatwg.org/multipage/iframe-embed-object.html#attr-object-data\n         */\n        data?: AttrString;\n\n        /**\n         * Associates the object element with a form element.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fae-form\n         */\n        form?: AttrString;\n\n        /**\n         * Specifies the height of the object element.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content-other.html#attr-dim-height\n         */\n        height?: AttrStringOrNumber;\n\n        /**\n         * Specifies the name of the object element.\n         * @see https://html.spec.whatwg.org/multipage/iframe-embed-object.html#attr-object-name\n         */\n        name?: AttrString;\n\n        /**\n         * Specifies the MIME type of the resource.\n         * @see https://html.spec.whatwg.org/multipage/iframe-embed-object.html#attr-object-type\n         */\n        type?: AttrString;\n\n        /**\n         * Specifies a client-side image map to be used with the object element.\n         * @see https://html.spec.whatwg.org/multipage/iframe-embed-object.html#attr-object-usemap\n         */\n        usemap?: AttrString;\n\n        /**\n         * Specifies the width of the object element.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content-other.html#attr-dim-width\n         */\n        width?: AttrStringOrNumber;\n\n        /** @deprecated */\n        archive?: AttrString;\n        /** @deprecated */\n        border?: AttrString;\n        /** @deprecated */\n        classid?: AttrString;\n        /** @deprecated */\n        codebase?: AttrString;\n        /** @deprecated */\n        codetype?: AttrString;\n        /** @deprecated */\n        declare?: AttrBoolean;\n        /** @deprecated */\n        standby?: AttrString;\n      }\n      interface OL extends HTMLAttributes<HTMLOListElement> {\n        /**\n         * Specifies whether the list items are numbered in reverse order.\n         * @see https://html.spec.whatwg.org/multipage/grouping-content.html#attr-ol-reversed\n         */\n        reversed?: AttrBoolean;\n\n        /**\n         * Specifies the starting value of the list items.\n         * @see https://html.spec.whatwg.org/multipage/grouping-content.html#attr-ol-start\n         */\n        start?: AttrStringOrNumber;\n\n        /**\n         * Specifies the numbering type of the list items.\n         * @see https://html.spec.whatwg.org/multipage/grouping-content.html#attr-ol-type\n         */\n        type?: AttrMissing | \"1\" | \"a\" | \"A\" | \"i\" | \"I\";\n      }\n      interface OptGroup extends HTMLAttributes<HTMLOptGroupElement> {\n        /**\n         * Specifies that the option group is disabled.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-optgroup-disabled\n         */\n        disabled?: AttrBoolean;\n\n        /**\n         * Specifies a label for the option group.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-optgroup-label\n         */\n        label?: AttrString;\n      }\n      interface Option extends HTMLAttributes<HTMLOptionElement> {\n        /**\n         * Specifies that the option is disabled.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-option-disabled\n         */\n        disabled?: AttrBoolean;\n\n        /**\n         * Specifies a label for the option element.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-option-label\n         */\n        label?: AttrString;\n\n        /**\n         * Specifies that the option element is selected by default.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-option-selected\n         */\n        selected?: AttrBoolean;\n\n        /**\n         * Specifies the value of the option element.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-option-value\n         */\n        value?: AttrStringOrNumber;\n      }\n      interface Output extends HTMLAttributes<HTMLOutputElement> {\n        /**\n         * Specifies the ID of the form element that this output element is associated with.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-output-for\n         */\n        for?: AttrString;\n\n        /**\n         * Specifies the ID of the form that this output element belongs to.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fae-form\n         */\n        form?: AttrString;\n\n        /**\n         * Specifies the name of the output element.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-name\n         */\n        name?: AttrString;\n      }\n\n      interface P extends HTMLAttributes<HTMLParagraphElement> {}\n      interface Picture extends HTMLAttributes<HTMLPictureElement> {}\n      interface Pre extends HTMLAttributes<HTMLPreElement> {\n        /** @deprecated */\n        cols?: AttrStringOrNumber;\n        /** @deprecated */\n        width?: AttrStringOrNumber;\n        /** @deprecated */\n        wrap?: AttrString;\n      }\n      interface Progress extends HTMLAttributes<HTMLProgressElement> {\n        /**\n         * Specifies the maximum value of the progress bar.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-progress-max\n         */\n        max?: AttrStringOrNumber;\n\n        /**\n         * Specifies the current value of the progress bar.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-progress-value\n         */\n        value?: AttrStringOrNumber;\n      }\n\n      interface Q extends HTMLAttributes<HTMLQuoteElement> {\n        /**\n         * Specifies the URL of the source document or message that the quotation came from.\n         * @see https://html.spec.whatwg.org/multipage/text-level-semantics.html#attr-q-cite\n         */\n        cite?: AttrString;\n      }\n\n      interface RP extends HTMLAttributes<HTMLElement> {}\n      interface RT extends HTMLAttributes<HTMLElement> {}\n      interface Ruby extends HTMLAttributes<HTMLElement> {}\n      interface S extends HTMLAttributes<HTMLElement> {}\n      interface Samp extends HTMLAttributes<HTMLElement> {}\n      interface Script extends HTMLAttributes<HTMLScriptElement> {\n        /**\n         * Specifies that the script should be executed asynchronously.\n         * @see https://html.spec.whatwg.org/multipage/scripting.html#attr-script-async\n         */\n        async?: AttrBoolean;\n\n        /**\n         * Specifies that the script should be fetched and executed after the page is rendered.\n         * @see https://html.spec.whatwg.org/multipage/scripting.html#attr-script-blocking\n         */\n        blocking?: AttrMissing | \"render\";\n\n        /**\n         * Specifies whether CORS (Cross-Origin Resource Sharing) requests should be used when fetching the script.\n         * @see https://html.spec.whatwg.org/multipage/scripting.html#attr-script-crossorigin\n         */\n        crossorigin?: AttrCrossOrigin;\n\n        /**\n         * Specifies that the script should be executed after the page is parsed, but before the document is loaded.\n         * @see https://html.spec.whatwg.org/multipage/scripting.html#attr-script-defer\n         */\n        defer?: AttrBoolean;\n\n        /**\n         * Specifies the priority level for fetching the script.\n         * @see https://html.spec.whatwg.org/multipage/scripting.html#attr-script-fetchpriority\n         */\n        fetchpriority?: AttrMissing | \"auto\" | \"high\" | \"low\";\n\n        /**\n         * Specifies the integrity hash for the script.\n         * @see https://html.spec.whatwg.org/multipage/urls-and-fetching.html#attr-link-integrity\n         */\n        integrity?: AttrString;\n\n        /**\n         * Specifies that the script should be ignored if the browser doesn't support modules.\n         * @see https://html.spec.whatwg.org/multipage/scripting.html#attr-script-nomodule\n         */\n        nomodule?: AttrBoolean;\n\n        /**\n         * Specifies the referrer policy for the script.\n         * @see https://html.spec.whatwg.org/multipage/urls-and-fetching.html#attr-link-referrerpolicy\n         */\n        referrerpolicy?: AttrReferrerPolicy;\n\n        /**\n         * Specifies the URL of the script.\n         * @see https://html.spec.whatwg.org/multipage/scripting.html#attr-script-src\n         */\n        src?: AttrString;\n\n        /**\n         * Specifies the type of the script.\n         * @see https://html.spec.whatwg.org/multipage/scripting.html#attr-script-type\n         */\n        type?:\n          | AttrMissing\n          | \"application/javascript\"\n          | \"module\"\n          | \"import-map\"\n          | (string & {});\n\n        /** @deprecated */\n        charset?: AttrString;\n        /** @deprecated */\n        language?: AttrString;\n      }\n\n      interface Section extends HTMLAttributes<HTMLElement> {}\n      interface Select extends HTMLAttributes<HTMLSelectElement> {\n        /**\n         * Controls whether the browser should automatically complete the value for the select.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-autocomplete\n         */\n        autocomplete?: AttrAutoComplete;\n\n        /**\n         * Indicates whether the select element should be disabled or not.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-disabled\n         */\n        disabled?: AttrBoolean;\n\n        /**\n         * Specifies the form element associated with the select.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-fae-form\n         */\n        form?: AttrString;\n\n        /**\n         * Indicates that multiple options can be selected.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-select-multiple\n         */\n        multiple?: AttrBoolean;\n\n        /**\n         * The name attribute of the select element, which is used as a key\n         * when submitting the form data. Also the named used in the form.elements.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-name\n         * @see HTMLFormElement.elements\n         */\n        name?: AttrString;\n\n        /**\n         * Indicates whether a selection is required or not for the select.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-select-required\n         */\n        required?: AttrBoolean;\n\n        /**\n         * Specifies how many options are visible at once.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-select-size\n         */\n        size?: AttrStringOrNumber;\n\n        // NON STANDARD\n\n        /**\n         * When the `value` is a string, nested `<option>` tags with a matching `value` attribute become `selected`.\n         * When the `value` is an array of strings, nested `<option>` tags with a `value` contained within the array are `selected.\n         */\n        value?: AttrStringOrNumber | string[] | number[];\n\n        /**\n         * Called whenever a the `value` property of the `select` has changed.\n         * When `valueChange` is a function, `value` becomes controlled. This means\n         * This means the `value` property is synchronized instead of the `value` attribute.\n         */\n        valueChange?:\n          | AttrMissing\n          | ((\n              /** Note this is hack that allows you to work with the value as both a string and a string[] without needing generics */\n              value: string & string[],\n            ) => void);\n      }\n\n      interface Slot extends HTMLAttributes<HTMLSlotElement> {\n        /**\n         * Used to assign slots to other elements\n         * @see https://html.spec.whatwg.org/multipage/semantics.html#attr-slot-name\n         */\n        name?: AttrString;\n      }\n\n      interface Small extends HTMLAttributes<HTMLElement> {}\n      interface Source extends HTMLAttributes<HTMLSourceElement> {\n        /**\n         * Specifies the MIME type of the resource provided by the <source> element.\n         * Helps the browser decide if it can play the resource or not.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content.html#attr-source-type\n         */\n        type?: AttrString;\n\n        /**\n         * Specifies the URL of the media resource for the <source> element.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content.html#attr-source-src\n         */\n        src?: AttrString;\n\n        /**\n         * Specifies a list of image sources for the <source> element when used inside a <picture> element.\n         * Provides a way to offer multiple image formats or resolutions.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content.html#attr-source-srcset\n         */\n        srcset?: AttrString;\n\n        /**\n         * Specifies the sizes of the images provided in the srcset attribute for the <source> element.\n         * Helps the browser choose the most suitable image based on the device's dimensions.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content.html#attr-source-sizes\n         */\n        sizes?: AttrString;\n\n        /**\n         * Specifies the media conditions for the <source> element.\n         * Helps the browser choose the most suitable source based on the device's capabilities and preferences.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content.html#attr-source-media\n         */\n        media?: AttrString;\n\n        /**\n         * Specifies the height of the <source> element's media resource.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content-other.html#attr-dim-height\n         */\n        height?: AttrStringOrNumber;\n\n        /**\n         * Specifies the width of the <source> element's media resource.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content-other.html#attr-dim-width\n         */\n        width?: AttrStringOrNumber;\n      }\n\n      interface Span extends HTMLAttributes<HTMLSpanElement> {}\n      interface Strong extends HTMLAttributes<HTMLElement> {}\n      interface Style extends HTMLAttributes<HTMLStyleElement> {\n        /**\n         * Determines whether the <style> element blocks rendering.\n         * Since <style> already blocks rendering, this attribute is currently useless until\n         * a non-blocking option for this attribute is added.\n         * @see https://html.spec.whatwg.org/multipage/semantics.html#attr-style-blocking\n         */\n        blocking?: AttrMissing | \"render\";\n\n        /**\n         * Specifies the intended media for which the styles in the <style> element should be applied.\n         * For example, \"print\" for print media or \"screen\" for screen display.\n         * @see https://html.spec.whatwg.org/multipage/semantics.html#attr-style-media\n         */\n        media?: AttrString;\n        /** @deprecated */\n        scoped?: AttrBoolean;\n        /** @deprecated */\n        type?: AttrMissing | \"text/css\";\n      }\n      interface Sub extends HTMLAttributes<HTMLElement> {}\n      interface Summary extends HTMLAttributes<HTMLElement> {}\n      interface Sup extends HTMLAttributes<HTMLElement> {}\n      interface Table extends HTMLAttributes<HTMLTableElement> {\n        /** @deprecated */\n        align?: AttrString;\n        /** @deprecated */\n        bgcolor?: AttrString;\n        /** @deprecated */\n        border?: AttrStringOrNumber;\n        /** @deprecated */\n        cellpadding?: AttrStringOrNumber;\n        /** @deprecated */\n        cellspacing?: AttrStringOrNumber;\n        /** @deprecated */\n        frame?: AttrString;\n        /** @deprecated */\n        rules?: AttrString;\n        /** @deprecated */\n        summary?: AttrString;\n        /** @deprecated */\n        width?: AttrStringOrNumber;\n      }\n      interface TBody extends HTMLAttributes<HTMLTableSectionElement> {\n        /** @deprecated */\n        align?: AttrString;\n        /** @deprecated */\n        bgcolor?: AttrString;\n        /** @deprecated */\n        char?: AttrString;\n        /** @deprecated */\n        charoff?: AttrStringOrNumber;\n        /** @deprecated */\n        valign?: AttrString;\n      }\n      interface TD extends HTMLAttributes<HTMLTableCellElement> {\n        /**\n         * Specifies how many columns the <td> element should span in the table.\n         * @see https://html.spec.whatwg.org/multipage/tables.html#attr-tdth-colspan\n         */\n        colspan?: AttrStringOrNumber;\n\n        /**\n         * Specifies a list of header cell IDs that are related to the content of the <td> element.\n         * @see https://html.spec.whatwg.org/multipage/tables.html#attr-tdth-headers\n         */\n        headers?: AttrString;\n\n        /**\n         * Specifies how many rows the <td> element should span in the table.\n         * @see https://html.spec.whatwg.org/multipage/tables.html#attr-tdth-rowspan\n         */\n        rowspan?: AttrStringOrNumber;\n\n        /** @deprecated */\n        align?: AttrString;\n        /** @deprecated */\n        axis?: AttrString;\n        /** @deprecated */\n        bgcolor?: AttrString;\n        /** @deprecated */\n        char?: AttrString;\n        /** @deprecated */\n        charoff?: AttrStringOrNumber;\n        /** @deprecated */\n        height?: AttrStringOrNumber;\n        /** @deprecated */\n        scope?: AttrString;\n        /** @deprecated */\n        valign?: AttrString;\n        /** @deprecated */\n        width?: AttrStringOrNumber;\n      }\n      interface Template extends HTMLAttributes<HTMLTemplateElement> {\n        /**\n         * Specifies the shadow root mode for the <template> element when creating a shadow root.\n         * \"open\" allows access to the shadow root, while \"closed\" restricts access.\n         * @see https://developer.chrome.com/articles/declarative-shadow-dom\n         * @see https://github.com/mfreed7/declarative-shadow-dom\n         */\n        shadowrootmode?: AttrMissing | \"open\" | \"closed\";\n      }\n      interface TextArea extends HTMLAttributes<HTMLTextAreaElement> {\n        /**\n         * Represents the autocomplete attribute of the <textarea> element.\n         * Helps browsers autofill the user's input based on previous entries.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-autocomplete\n         */\n        autocomplete?: AttrAutoComplete;\n\n        /**\n         * (Safari only). Controls the autocorrect behavior of the <textarea> element.\n         */\n        autocorrect?: AttrOnOff;\n\n        /**\n         * Specifies the visible width of the <textarea> element in terms of character width.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-textarea-cols\n         */\n        cols?: AttrStringOrNumber;\n\n        /**\n         * Represents the dirname attribute of the <textarea> element.\n         * Provides a way to submit the text direction (ltr or rtl) along with the form data.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-dirname\n         */\n        dirname?: AttrString;\n\n        /**\n         * Indicates whether the <textarea> element should be disabled or not.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-disabled\n         */\n        disabled?: AttrBoolean;\n\n        /**\n         * Represents the form attribute of the <textarea> element.\n         * Associates the <textarea> with a specific <form> element.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fae-form\n         */\n        form?: AttrString;\n\n        /**\n         * Specifies the maximum number of characters that can be entered into the <textarea> element.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-textarea-maxlength\n         */\n        maxlength?: AttrStringOrNumber;\n\n        /**\n         * Specifies the minimum number of characters required for the <textarea> element.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-textarea-minlength\n         */\n        minlength?: AttrStringOrNumber;\n\n        /**\n         * Represents the name attribute of the <textarea> element.\n         * Used as a key when submitting the form data.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-name\n         */\n        name?: AttrString;\n\n        /**\n         * Specifies a short hint that describes the expected value of the <textarea> element.\n         * Displayed when the element is empty and not focused.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-textarea-placeholder\n         */\n        placeholder?: AttrString;\n\n        /**\n         * Indicates whether the <textarea> element should be read-only or not.\n         * Users can't modify the content, but the text is selectable and can be copied.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-textarea-readonly\n         */\n        readonly?: AttrBoolean;\n\n        /**\n         * Indicates whether a value is required or not for the <textarea> element.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-textarea-required\n         */\n        required?: AttrBoolean;\n\n        /**\n         * Specifies the visible height of the <textarea> element in terms of text lines.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-textarea-rows\n         */\n        rows?: AttrStringOrNumber;\n\n        /**\n         * Controls the line wrapping behavior of the <textarea> element.\n         * \"hard\" inserts line breaks in the submitted value, \"soft\" doesn't, and \"off\" disables wrapping.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-textarea-wrap\n         */\n        wrap?: AttrMissing | \"hard\" | \"soft\" | \"off\";\n\n        // NON STANDARD\n\n        /**\n         * Represents the current value of the `textarea` element.\n         */\n        value?: AttrMissing | string;\n\n        /**\n         * Called whenever a the `value` property of the `textarea` has changed.\n         * When `valueChange` is a function, `value` becomes controlled. This means\n         * This means the `value` property is synchronized instead of the `value` attribute.\n         */\n        valueChange?: AttrMissing | ((value: string) => void);\n      }\n\n      interface TFoot extends HTMLAttributes<HTMLTableSectionElement> {\n        /** @deprecated */\n        align?: AttrString;\n        /** @deprecated */\n        bgcolor?: AttrString;\n        /** @deprecated */\n        char?: AttrString;\n        /** @deprecated */\n        charoff?: AttrStringOrNumber;\n        /** @deprecated */\n        valign?: AttrString;\n      }\n      interface TH extends HTMLAttributes<HTMLTableCellElement> {\n        /**\n         * Represents the abbreviation for the content of the <th> element.\n         * Provides a short description or label for the cell, which can be used by screen readers.\n         * @see https://html.spec.whatwg.org/multipage/tables.html#attr-th-abbr\n         */\n        abbr?: AttrString;\n\n        /**\n         * Specifies how many columns the <th> element should span in the table.\n         * @see https://html.spec.whatwg.org/multipage/tables.html#attr-tdth-colspan\n         */\n        colspan?: AttrStringOrNumber;\n\n        /**\n         * Specifies a list of header cell IDs that are related to the content of the <th> element.\n         * @see https://html.spec.whatwg.org/multipage/tables.html#attr-tdth-headers\n         */\n        headers?: AttrString;\n\n        /**\n         * Specifies how many rows the <th> element should span in the table.\n         * @see https://html.spec.whatwg.org/multipage/tables.html#attr-tdth-rowspan\n         */\n        rowspan?: AttrStringOrNumber;\n\n        /**\n         * Specifies the scope of the <th> element, defining its association with either row or column headers.\n         * @see https://html.spec.whatwg.org/multipage/tables.html#attr-th-scope\n         */\n        scope?: AttrMissing | \"col\" | \"row\" | \"rowgroup\" | \"colgroup\";\n\n        /** @deprecated */\n        align?: AttrString;\n        /** @deprecated */\n        axis?: AttrString;\n        /** @deprecated */\n        bgcolor?: AttrString;\n        /** @deprecated */\n        char?: AttrString;\n        /** @deprecated */\n        charoff?: AttrStringOrNumber;\n        /** @deprecated */\n        height?: AttrStringOrNumber;\n        /** @deprecated */\n        valign?: AttrString;\n        /** @deprecated */\n        width?: AttrStringOrNumber;\n      }\n      interface THead extends HTMLAttributes<HTMLTableSectionElement> {\n        /** @deprecated */\n        align?: AttrString;\n        /** @deprecated */\n        bgcolor?: AttrString;\n        /** @deprecated */\n        char?: AttrString;\n        /** @deprecated */\n        charoff?: AttrStringOrNumber;\n        /** @deprecated */\n        valign?: AttrString;\n      }\n      interface Time extends HTMLAttributes<HTMLTimeElement> {\n        /**\n         * Represents the machine-readable datetime attribute of the <time> element.\n         * Provides a standardized way to represent dates and times in HTML content.\n         * @see https://html.spec.whatwg.org/multipage/text-level-semantics.html#attr-time-datetime\n         */\n        datetime?: AttrString;\n      }\n      interface Title extends HTMLAttributes<HTMLTitleElement> {}\n      interface TR extends HTMLAttributes<HTMLTableRowElement> {\n        /** @deprecated */\n        align?: AttrString;\n        /** @deprecated */\n        bgcolor?: AttrString;\n        /** @deprecated */\n        char?: AttrString;\n        /** @deprecated */\n        charoff?: AttrStringOrNumber;\n        /** @deprecated */\n        valign?: AttrString;\n      }\n      interface Track extends HTMLAttributes<HTMLTrackElement> {\n        default?: AttrBoolean;\n        kind?:\n          | AttrMissing\n          | \"subtitles\"\n          | \"captions\"\n          | \"descriptions\"\n          | \"chapters\"\n          | \"metadata\";\n        label?: AttrString;\n        src?: AttrString;\n        srclang?: AttrString;\n      }\n      interface U extends HTMLAttributes<HTMLElement> {}\n      interface UL extends HTMLAttributes<HTMLUListElement> {\n        /** @deprecated */\n        compact?: AttrBoolean;\n        /** @deprecated */\n        type?: AttrMissing | \"disc\" | \"square\" | \"circle\";\n      }\n      interface Var extends HTMLAttributes<HTMLElement> {}\n      interface Video extends HTMLAttributes<HTMLVideoElement> {\n        /**\n         * Indicates if the video can automatically enter Picture-in-Picture mode when not visible.\n         * @see https://w3c.github.io/picture-in-picture/#auto-pip\n         */\n        autopictureinpicture?: AttrBoolean;\n\n        /**\n         * Specifies whether the video should start playing automatically when the page loads.\n         * @see https://html.spec.whatwg.org/multipage/media.html#attr-media-autoplay\n         */\n        autoplay?: AttrBoolean;\n\n        /**\n         * Indicates whether the browser should provide default video controls.\n         * @see https://html.spec.whatwg.org/multipage/media.html#attr-media-controls\n         */\n        controls?: AttrBoolean;\n\n        /**\n         * Specifies the controls to be shown or hidden on the audio player.\n         * @see https://wicg.github.io/controls-list/explainer.html\n         */\n        controlslist?:\n          | AttrMissing\n          | \"nodownload\"\n          | \"nofullscreen\"\n          | \"noplaybackrate\"\n          | \"noremoteplayback\"\n          | (string & {});\n\n        /**\n         * Specifies the CORS settings for the video resource.\n         * @see https://html.spec.whatwg.org/multipage/media.html#attr-media-crossorigin\n         */\n        crossorigin?: AttrCrossOrigin;\n\n        /**\n         * Disables the Picture-in-Picture mode for the video.\n         * @see https://wicg.github.io/picture-in-picture/#disablepictureinpicture-attribute\n         */\n        disablepictureinpicture?: AttrBoolean;\n\n        /**\n         * Disables the Remote Playback API for the video.\n         * @see https://w3c.github.io/remote-playback/#the-disableremoteplayback-attribute\n         */\n        disableremoteplayback?: AttrBoolean;\n\n        /**\n         * Specifies the height of the video's display area.\n         * @see https://html.spec.whatwg.org/multipage/media.html#attr-video-height\n         */\n        height?: AttrStringOrNumber;\n\n        /**\n         * Indicates whether the video should start over again when it ends.\n         * @see https://html.spec.whatwg.org/multipage/media.html#attr-media-loop\n         */\n        loop?: AttrBoolean;\n\n        /**\n         * Indicates whether the video should be muted by default.\n         * @see https://html.spec.whatwg.org/multipage/media.html#attr-media-muted\n         */\n        muted?: AttrBoolean;\n\n        /**\n         * Specifies that the video should be played inline on iOS devices, rather than automatically entering fullscreen mode when playback begins.\n         * @see https://webkit.org/blog/6784/new-video-policies-for-ios/\n         */\n        playsinline?: AttrBoolean;\n\n        /**\n         * Specifies the URL of an image to be shown while the video is downloading or until the user plays the video.\n         * @see https://html.spec.whatwg.org/multipage/media.html#attr-video-poster\n         */\n        poster?: AttrString;\n\n        /**\n         * Specifies how much of the video should be preloaded when the page loads.\n         * @see https://html.spec.whatwg.org/multipage/media.html#attr-media-preload\n         */\n        preload?: AttrBoolean | \"none\" | \"metadata\" | \"auto\";\n        /**\n         * Specifies the URL of the video file to be embedded.\n         * @see https://html.spec.whatwg.org/multipage/media.html#attr-media-src\n         */\n        src?: AttrString;\n        /**\n         * Specifies the width of the video's display area.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content-other.html#attr-dim-width\n         */\n        width?: AttrStringOrNumber;\n      }\n\n      interface WBr extends HTMLAttributes<HTMLElement> {}\n    }\n\n    interface Directives {\n      /**\n       * Used to uniquely identify a tag within a template in order\n       * to get an element reference to it later.\n       *\n       * @see Marko.Component.getEl\n       * @see Marko.Component.getComponent\n       */\n      key?: AttrString;\n\n      /**\n       * Tells Marko to avoid updating the element or its contents (excluding custom tags which may rerender independently).\n       */\n      \"no-update\"?: AttrBoolean;\n\n      /**\n       * Tells Marko to avoid updating an element's contents (excluding custom tags which may rerender independently). Used instead of no-update when runtime functionality is needed.\n       */\n      \"no-update-if\"?: AttrBoolean;\n\n      /**\n       * Tells Marko to avoid updating an element's body.\n       */\n      \"no-update-body\"?: AttrBoolean;\n\n      /**\n       * Tells Marko to avoid updating an element's body. Used instead of no-update-body when runtime functionality is needed.\n       * @see https://markojs.com/docs/syntax/#conditional-rendering\n       */\n      \"no-update-body-if\"?: AttrBoolean;\n    }\n\n    interface HTMLAttributes<\n      T extends Element = Element,\n    > extends AriaAttributes {\n      /**\n       * Specifies a keyboard shortcut to activate or focus on an element.\n       * @see https://html.spec.whatwg.org/multipage/interaction.html#the-accesskey-attribute\n       */\n      accesskey?: AttrString;\n\n      /**\n       * Controls the capitalization behavior of user input.\n       * @see https://html.spec.whatwg.org/multipage/interaction.html#attr-autocapitalize\n       */\n      autocapitalize?:\n        | AttrOnOff\n        | \"characters\"\n        | \"none\"\n        | \"sentences\"\n        | \"words\";\n\n      /**\n       * Indicates whether the element should automatically get focus when the page loads.\n       * @see https://html.spec.whatwg.org/multipage/interaction.html#the-autofocus-attribute\n       */\n      autofocus?: AttrBoolean;\n\n      /**\n       * Specifies a space-separated list of class names for an element.\n       * @see https://markojs.com/docs/syntax/#class-attribute\n       * @see https://html.spec.whatwg.org/multipage/dom.html#classes\n       */\n      class?: AttrClass;\n\n      /**\n       * Specifies whether the content of an element is editable or not.\n       * @see https://html.spec.whatwg.org/multipage/interaction.html#attr-contenteditable\n       */\n      contenteditable?: AttrBooleanString | \"plaintext-only\";\n\n      /**\n       * Specifies the ID of a context menu to show when the element is right-clicked.\n       * @see https://html.spec.whatwg.org/multipage/interaction.html#attr-contextmenu\n       */\n      contextmenu?: AttrString;\n\n      /**\n       * Specifies the text direction for the content of an element.\n       * @see https://html.spec.whatwg.org/multipage/dom.html#the-dir-attribute\n       */\n      dir?: AttrMissing | \"ltr\" | \"rtl\" | \"auto\";\n\n      /**\n       * Specifies whether an element is draggable or not.\n       * @see https://html.spec.whatwg.org/multipage/dnd.html#the-draggable-attribute\n       */\n      draggable?: AttrBooleanString;\n\n      /**\n       * A string used to identify the element for performance measurement purposes.\n       * @see https://wicg.github.io/element-timing/#sec-elements-exposed\n       */\n      elementtiming?: AttrString;\n\n      /**\n       * Provides a hint to the user agent about the type of action expected from the \"Enter\" key.\n       * @see https://html.spec.whatwg.org/multipage/interaction.html#attr-enterkeyhint\n       */\n      enterkeyhint?:\n        | AttrMissing\n        | \"enter\"\n        | \"done\"\n        | \"go\"\n        | \"next\"\n        | \"previous\"\n        | \"search\"\n        | \"send\";\n\n      /**\n       * Specifies a list of part names for the element that are available for CSS ::part() selector.\n       * @see https://drafts.csswg.org/css-shadow-parts-1/#exportparts-attribute\n       */\n      exportparts?: AttrString;\n\n      /**\n       * Indicates whether the element should be hidden from rendering or not.\n       * @see https://html.spec.whatwg.org/multipage/interaction.html#the-hidden-attribute\n       */\n      hidden?: AttrBoolean | \"until-found\";\n\n      /**\n       * Specifies a unique identifier for the element within the document.\n       * @see https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute\n       */\n      id?: AttrString;\n\n      /**\n       * Specifies whether an element should be inert or not, preventing user interaction and making it non-focusable.\n       * @see https://html.spec.whatwg.org/multipage/interaction.html#inert-subtrees\n       */\n      inert?: AttrBoolean;\n\n      /**\n       * Provides a hint to the user agent about the type of virtual keyboard to display for text input.\n       * @see https://html.spec.whatwg.org/multipage/interaction.html#attr-inputmode\n       */\n      inputmode?:\n        | AttrMissing\n        | \"decimal\"\n        | \"email\"\n        | \"none\"\n        | \"numeric\"\n        | \"search\"\n        | \"tel\"\n        | \"text\"\n        | \"url\";\n\n      /**\n       * Specifies the name of a custom element to use as a replacement for the standard built-in element.\n       * @see https://html.spec.whatwg.org/multipage/custom-elements.html#attr-is\n       */\n      is?: AttrString;\n\n      /**\n       * Specifies a globally unique identifier (URI) for the element in the context of microdata.\n       * @see https://html.spec.whatwg.org/multipage/microdata.html#attr-itemid\n       */\n      itemid?: AttrString;\n\n      /**\n       * Specifies a list of one or more property names for the element in the context of microdata.\n       * @see https://html.spec.whatwg.org/multipage/microdata.html#attr-itemprop\n       */\n      itemprop?: AttrString;\n\n      /**\n       * Specifies a list of IDs of elements that contain additional properties for the item in the context of microdata.\n       * @see https://html.spec.whatwg.org/multipage/microdata.html#attr-itemref\n       */\n      itemref?: AttrString;\n\n      /**\n       * Specifies that the element is a microdata item, representing a single entity or concept.\n       * @see https://html.spec.whatwg.org/multipage/microdata.html#attr-itemscope\n       */\n      itemscope?: AttrBoolean;\n\n      /**\n       * Specifies the type of item represented by the element using a vocabulary URL in the context of microdata.\n       * @see https://html.spec.whatwg.org/multipage/microdata.html#attr-itemtype\n       */\n      itemtype?: AttrString;\n\n      /**\n       * Specifies the primary language for the element's contents and for any child elements.\n       * @see https://html.spec.whatwg.org/multipage/dom.html#attr-lang\n       */\n      lang?: AttrString;\n\n      /**\n       * Specifies a cryptographic nonce (number used once) for content within a script or style element.\n       * @see https://html.spec.whatwg.org/multipage/urls-and-fetching.html#attr-nonce\n       */\n      nonce?: AttrString;\n\n      /**\n       * Specifies that the element won't be rendered until it becomes shown, at which point it will be rendered on top of other page content.\n       * @see https://html.spec.whatwg.org/multipage/popover.html#attr-popover\n       */\n      popover?: AttrBoolean | \"auto\" | \"manual\";\n\n      /**\n       * Specifies a list of part names for the element that can be targeted by the ::part() CSS pseudo-element.\n       * @see https://drafts.csswg.org/css-shadow-parts-1/#part-attribute\n       */\n      part?: AttrString;\n\n      /**\n       * Specifies the name of the slot the element should be assigned to when inside a shadow tree.\n       * @see https://html.spec.whatwg.org/multipage/scripting.html#attr-slot\n       */\n      slot?: AttrString;\n\n      /**\n       * Specifies whether the element should have its spelling and grammar checked or not.\n       * @see https://html.spec.whatwg.org/multipage/interaction.html#attr-spellcheck\n       */\n      spellcheck?: AttrBooleanString;\n\n      /**\n       * Specifies the inline CSS styles for the element.\n       * @see https://markojs.com/docs/syntax/#style-attribute\n       * @see https://html.spec.whatwg.org/multipage/dom.html#the-style-attribute\n       */\n      style?: AttrStyle;\n\n      /**\n       * Specifies the order in which elements should be focused when navigating via the keyboard.\n       * @see https://html.spec.whatwg.org/multipage/interaction.html#attr-tabindex\n       */\n      tabindex?: AttrStringOrNumber;\n\n      /**\n       * Specifies extra information about the element, usually shown as a tooltip.\n       * @see https://html.spec.whatwg.org/multipage/dom.html#the-title-attribute\n       */\n      title?: AttrString;\n\n      /**\n       * Specifies whether the element's content should be translated when the page is localized.\n       * @see https://html.spec.whatwg.org/multipage/dom.html#the-translate-attribute\n       */\n      translate?: AttrYesNoString;\n\n      /**\n       * Specifies the policy for showing the virtual keyboard when an element receives focus.\n       * @see https://w3c.github.io/virtual-keyboard/#dom-elementcontenteditable-virtualkeyboardpolicy\n       */\n      virtualkeyboardpolicy?: AttrMissing | \"auto\" | \"manual\";\n\n      /**\n       * Provide body content for the tag as a Marko.Body.\n       * @see Marko.Body\n       */\n      renderBody?: Marko.Body<[], void>;\n\n      /**\n       * Provide body content for the tag as a Marko.Body.\n       * @see Marko.Body\n       */\n      content?:\n        | AttrString\n        | Marko.Body<[], void>\n        | Marko.Template<Record<any, never>, void>;\n\n      /**\n       * Fired when resource was not fully loaded, but not as the result of an error.\n       * @see https://html.spec.whatwg.org/multipage/media.html#event-media-abort\n       */\n      onAbort?: AttrEventHandler<Event, T>;\n      \"on-abort\"?: this[\"onAbort\"];\n      onabort?: AttrString;\n\n      /**\n       * Fired when an Animation unexpectedly aborts.\n       * @see https://w3c.github.io/csswg-drafts/css-animations/#eventdef-globaleventhandlers-animationcancel\n       */\n      onAnimationcancel?: AttrEventHandler<AnimationEvent, T>;\n      \"on-animationcancel\"?: this[\"onAnimationcancel\"];\n\n      /**\n       * Fired when an animation has completed.\n       * @see https://w3c.github.io/csswg-drafts/css-animations/#eventdef-globaleventhandlers-animationend\n       */\n      onAnimationend?: AttrEventHandler<AnimationEvent, T>;\n      \"on-animationend\"?: this[\"onAnimationend\"];\n\n      /**\n       * Fired at the end of each iteration of an animation, except when an animationend event would fire at the same time.\n       * @see https://w3c.github.io/csswg-drafts/css-animations/#eventdef-globaleventhandlers-animationiteration\n       */\n      onAnimationiteration?: AttrEventHandler<AnimationEvent, T>;\n      \"on-animationiteration\"?: this[\"onAnimationiteration\"];\n\n      /**\n       * Fired when an animation has started.\n       * @see https://w3c.github.io/csswg-drafts/css-animations/#eventdef-globaleventhandlers-animationstart\n       */\n      onAnimationstart?: AttrEventHandler<AnimationEvent, T>;\n      \"on-animationstart\"?: this[\"onAnimationstart\"];\n\n      /**\n       * Fired when a non-primary pointing device button (any mouse button other than the primary—usually leftmost—button)\n       * has been pressed and released both within the same element.\n       * @see https://w3c.github.io/uievents/#event-type-auxclick\n       */\n      onAuxclick?: AttrEventHandler<PointerEvent, T>;\n      \"on-auxclick\"?: this[\"onAuxclick\"];\n      onauxclick?: AttrString;\n\n      /**\n       * Fires when the value of an <input>, or <textarea> element is about to be modified.\n       * @see https://w3c.github.io/uievents/#event-type-beforeinput\n       */\n      onBeforeinput?: AttrEventHandler<InputEvent, T>;\n      \"on-beforeinput\"?: this[\"onBeforeinput\"];\n      onbeforeinput?: AttrString;\n\n      /**\n       * Fired on elements with the hidden=until-found attribute before they are revealed.\n       * @see https://html.spec.whatwg.org/multipage/indices.html#event-beforematch\n       */\n      onBeforematch?: AttrEventHandler<Event, T>;\n      \"on-beforematch\"?: this[\"onBeforematch\"];\n      onbeforematch?: AttrString;\n\n      /**\n       * Fired on elements with the popover attribute when they are transitioning between showing and hidden\n       * @see https://html.spec.whatwg.org/multipage/indices.html#event-beforetoggle\n       */\n      onBeforetoggle?: AttrEventHandler<Event, T>;\n      \"on-beforetoggle\"?: this[\"onBeforetoggle\"];\n      onbeforetoggle?: AttrString;\n\n      /**\n       * Fires when a node loses focus.\n       * @see https://html.spec.whatwg.org/multipage/indices.html#event-blur\n       */\n      onBlur?: AttrEventHandler<Event, T>;\n      \"on-blur\"?: this[\"onBlur\"];\n      onblur?: AttrString;\n\n      /**\n       * Fired at controls when the user commits a value change (see also the input event)\n       * @see https://html.spec.whatwg.org/multipage/indices.html#event-cancel\n       */\n      onCancel?: AttrEventHandler<Event, T>;\n      \"on-cancel\"?: this[\"onCancel\"];\n      oncancel?: AttrString;\n\n      /**\n       * Fires when the user agent can resume playback of the media data,\n       * but estimates that if playback were to be started now, the media resource could not be rendered at the current\n       * playback rate up to its end without having to stop for further buffering of content.\n       * @see https://html.spec.whatwg.org/multipage/media.html#event-media-canplay\n       */\n      onCanplay?: AttrEventHandler<Event, T>;\n      \"on-canplay\"?: this[\"onCanplay\"];\n      oncanplay?: AttrString;\n\n      /**\n       * Fires when the user agent can play through the media data without having to stop for further buffering of content.\n       * @see https://html.spec.whatwg.org/multipage/media.html#event-media-canplaythrough\n       */\n      onCanplaythrough?: AttrEventHandler<Event, T>;\n      \"on-canplaythrough\"?: this[\"onCanplaythrough\"];\n      oncanplaythrough?: AttrString;\n\n      /**\n       * Fired when the form elements value is modified.\n       * @see https://html.spec.whatwg.org/multipage/indices.html#event-change\n       */\n      onChange?: AttrEventHandler<Event, T>;\n      \"on-change\"?: this[\"onChange\"];\n      onchange?: AttrString;\n\n      /**\n       * Normally a mouse event; also synthetically fired at an element before its activation behavior is run,\n       * when an element is activated from a non-pointer input device (e.g. a keyboard).\n       * @see https://w3c.github.io/uievents/#event-type-click\n       */\n      onClick?: AttrEventHandler<PointerEvent, T>;\n      \"on-click\"?: this[\"onClick\"];\n      onclick?: AttrString;\n\n      /**\n       * Fired at dialog elements when they are closed\n       * @see https://html.spec.whatwg.org/multipage/indices.html#event-close\n       */\n      onClose?: AttrEventHandler<Event, T>;\n      \"on-close\"?: this[\"onClose\"];\n      onclose?: AttrString;\n\n      /**\n       * Fired when a text composition system such as an input method editor completes or cancels the current composition session.\n       * @see https://w3c.github.io/uievents/#event-type-compositionend\n       */\n      onCompositionend?: AttrEventHandler<CompositionEvent, T>;\n      \"on-compositionend\"?: this[\"onCompositionend\"];\n\n      /**\n       * Fired when a text composition system such as an input method editor starts a new composition session.\n       * @see https://w3c.github.io/uievents/#event-type-compositionstart\n       */\n      onCompositionstart?: AttrEventHandler<CompositionEvent, T>;\n      \"on-compositionstart\"?: this[\"onCompositionstart\"];\n\n      /**\n       * Fired when a new character is received in the context of a text composition session controlled by a text\n       * composition system such as an input method editor.\n       * @see https://w3c.github.io/uievents/#event-type-compositionupdate\n       */\n      onCompositionupdate?: AttrEventHandler<CompositionEvent, T>;\n      \"on-compositionupdate\"?: this[\"onCompositionupdate\"];\n\n      /**\n       * Fired when the corresponding CanvasRenderingContext2D or OffscreenCanvasRenderingContext2D is lost\n       * @see https://html.spec.whatwg.org/multipage/indices.html#event-contextlost\n       */\n      onContextlost?: AttrEventHandler<Event, T>;\n      \"on-contextlost\"?: this[\"onContextlost\"];\n      oncontextlost?: AttrString;\n\n      /**\n       * Fired when the user attempts to open a context menu.\n       * This event is typically triggered by clicking the right mouse button, or by pressing the context menu key.\n       * @see https://w3c.github.io/uievents/#event-type-contextmenu\n       */\n      onContextmenu?: AttrEventHandler<PointerEvent, T>;\n      \"on-contextmenu\"?: this[\"onContextmenu\"];\n      oncontextmenu?: AttrString;\n\n      /**\n       * Fired when the corresponding CanvasRenderingContext2D or OffscreenCanvasRenderingContext2D is restored after being lost\n       * @see https://html.spec.whatwg.org/multipage/indices.html#event-contextrestored\n       */\n      onContextrestored?: AttrEventHandler<Event, T>;\n      \"on-contextrestored\"?: this[\"onContextrestored\"];\n      oncontextrestored?: AttrString;\n\n      /**\n       * Fired when the user copies the content of an element.\n       * @see https://w3c.github.io/clipboard-apis/#clipboard-event-copy\n       */\n      onCopy?: AttrEventHandler<ClipboardEvent, T>;\n      \"on-copy\"?: this[\"onCopy\"];\n      oncopy?: AttrString;\n\n      /**\n       * Fired when one or more cues in the track have become active or stopped being active.\n       * @see https://html.spec.whatwg.org/multipage/media.html#event-media-cuechange\n       */\n      onCuechange?: AttrEventHandler<Event, T>;\n      \"on-cuechange\"?: this[\"onCuechange\"];\n      oncuechange?: AttrString;\n\n      /**\n       * Fired when the user cuts the content of an element.\n       * @see https://w3c.github.io/clipboard-apis/#clipboard-event-cut\n       */\n      onCut?: AttrEventHandler<ClipboardEvent, T>;\n      \"on-cut\"?: this[\"onCut\"];\n      oncut?: AttrString;\n\n      /**\n       * Fired when the user double-clicks on an element.\n       * @see https://w3c.github.io/uievents/#event-type-dblclick\n       */\n      onDblclick?: AttrEventHandler<MouseEvent, T>;\n      \"on-dblclick\"?: this[\"onDblclick\"];\n      ondblclick?: AttrString;\n\n      /**\n       * Fired every few hundred milliseconds as an element or text selection is being dragged by the user.\n       * @see https://html.spec.whatwg.org/multipage/dnd.html#event-dnd-drag\n       */\n      onDrag?: AttrEventHandler<DragEvent, T>;\n      \"on-drag\"?: this[\"onDrag\"];\n      ondrag?: AttrString;\n\n      /**\n       * Fired when a drag operation is being ended (by releasing a mouse button or hitting the escape key).\n       * @see https://html.spec.whatwg.org/multipage/dnd.html#event-dnd-dragend\n       */\n      onDragend?: AttrEventHandler<DragEvent, T>;\n      \"on-dragend\"?: this[\"onDragend\"];\n      ondragend?: AttrString;\n\n      /**\n       * Fired when a drag operation is being ended (by releasing a mouse button or hitting the escape key).\n       * @see https://html.spec.whatwg.org/multipage/dnd.html#event-dnd-dragenter\n       */\n      onDragenter?: AttrEventHandler<DragEvent, T>;\n      \"on-dragenter\"?: this[\"onDragenter\"];\n      ondragenter?: AttrString;\n\n      /**\n       * Fired when a dragged element or text selection leaves a valid drop target.\n       * @see https://html.spec.whatwg.org/multipage/dnd.html#event-dnd-dragleave\n       */\n      onDragleave?: AttrEventHandler<DragEvent, T>;\n      \"on-dragleave\"?: this[\"onDragleave\"];\n      ondragleave?: AttrString;\n\n      /**\n       * Fired an element or text selection is being dragged over a valid drop target (every few hundred milliseconds).\n       * @see https://html.spec.whatwg.org/multipage/dnd.html#event-dnd-dragover\n       */\n      onDragover?: AttrEventHandler<DragEvent, T>;\n      \"on-dragover\"?: this[\"onDragover\"];\n      ondragover?: AttrString;\n\n      /**\n       * Fired when an element or text selection has started being dragged.\n       * @see https://html.spec.whatwg.org/multipage/dnd.html#event-dnd-dragstart\n       */\n      onDragstart?: AttrEventHandler<DragEvent, T>;\n      \"on-dragstart\"?: this[\"onDragstart\"];\n      ondragstart?: AttrString;\n\n      /**\n       * Fired when an element or text selection is dropped on a valid drop target.\n       * @see https://html.spec.whatwg.org/multipage/dnd.html#event-dnd-drop\n       */\n      onDrop?: AttrEventHandler<DragEvent, T>;\n      \"on-drop\"?: this[\"onDrop\"];\n      ondrop?: AttrString;\n\n      /**\n       * Fired when the duration attribute of a media element has just been updated.\n       * @see https://html.spec.whatwg.org/multipage/media.html#event-media-durationchange\n       */\n      onDurationchange?: AttrEventHandler<Event, T>;\n      \"on-durationchange\"?: this[\"onDurationchange\"];\n      ondurationchange?: AttrString;\n\n      /**\n       * Fired when a media element's playback stops because its source data has been fully consumed and not looped.\n       * @see https://html.spec.whatwg.org/multipage/media.html#event-media-emptied\n       */\n      onEmptied?: AttrEventHandler<Event, T>;\n      \"on-emptied\"?: this[\"onEmptied\"];\n      onemptied?: AttrString;\n\n      /**\n       * Fired when an encrypted media stream is encountered and the user agent recognizes the stream's encryption scheme.\n       * @see https://w3c.github.io/encrypted-media/#dom-evt-encrypted\n       */\n      onEncrypted?: AttrEventHandler<MediaEncryptedEvent, T>;\n      \"on-encrypted\"?: this[\"onEncrypted\"];\n\n      /**\n       * Fired when playback of a media element reaches its end, either because the media has reached its end or the loop attribute is not set.\n       * @see https://html.spec.whatwg.org/multipage/media.html#event-media-ended\n       */\n      onEnded?: AttrEventHandler<Event, T>;\n      \"on-ended\"?: this[\"onEnded\"];\n      onended?: AttrString;\n\n      /**\n       * Fired when an error occurs while fetching an external resource, such as a script, image, or video.\n       * @see https://html.spec.whatwg.org/multipage/indices.html#event-error\n       */\n      onError?: AttrEventHandler<ErrorEvent | Event, T>;\n      \"on-error\"?: this[\"onError\"];\n      onerror?: AttrString;\n\n      /**\n       * Fired when an element receives focus, either by user input or via script.\n       * @see https://html.spec.whatwg.org/multipage/interaction.html#event-focus\n       */\n      onFocus?: AttrEventHandler<FocusEvent, T>;\n      \"on-focus\"?: this[\"onFocus\"];\n      onfocus?: AttrString;\n\n      /**\n       * Fires when an element has received focus, after the focus event. The two events differ in that focusin bubbles, while focus does not.\n       * @see HTMLAttributes.onFocus\n       * @see https://w3c.github.io/uievents/#event-type-focusin\n       */\n      onFocusin?: AttrEventHandler<FocusEvent, T>;\n      \"on-focusin\"?: this[\"onFocusin\"];\n\n      /**\n       * Fires when an element has lost focus, after the blur event. The two events differ in that focusout bubbles, while blur does not.\n       * @see HTMLAttributes.onBlur\n       * @see https://w3c.github.io/uievents/#event-type-focusout\n       */\n      onFocusout?: AttrEventHandler<FocusEvent, T>;\n      \"on-focusout\"?: this[\"onFocusout\"];\n\n      /**\n       * Fired at a form element when it is constructing the entry list\n       * @see https://html.spec.whatwg.org/multipage/indices.html#event-formdata\n       */\n      onFormdata?: AttrEventHandler<FormDataEvent, T>;\n      \"on-formdata\"?: this[\"onFormdata\"];\n      onformdata?: AttrString;\n\n      /**\n       * Fired immediately after an Element switches into or out of fullscreen mode.\n       * @see https://fullscreen.spec.whatwg.org/#handler-document-onfullscreenchange\n       */\n      onFullscreenchange?: AttrEventHandler<Event, T>;\n      \"on-fullscreenchange\"?: this[\"onFullscreenchange\"];\n\n      /**\n       * Fired when the browser cannot switch to fullscreen mode.\n       * @see https://fullscreen.spec.whatwg.org/#handler-document-onfullscreenerror\n       */\n      onFullscreenerror?: AttrEventHandler<Event, T>;\n      \"on-fullscreenerror\"?: this[\"onFullscreenerror\"];\n\n      /**\n       * Fired when an element captures a pointer using setPointerCapture().\n       *\n       * @see Element.setPointerCapture\n       * @see https://w3c.github.io/pointerevents/#the-gotpointercapture-event\n       */\n      onGotpointercapture?: AttrEventHandler<PointerEvent, T>;\n      \"on-gotpointercapture\"?: this[\"onGotpointercapture\"];\n\n      /**\n       * Fired when the form element's value changes, as a result of user input.\n       * @see https://w3c.github.io/uievents/#event-type-input\n       */\n      onInput?: AttrEventHandler<InputEvent, T>;\n      \"on-input\"?: this[\"onInput\"];\n      oninput?: AttrString;\n\n      /**\n       * Fired when a form element is found to be invalid during submission or constraint validation.\n       * @see https://html.spec.whatwg.org/multipage/indices.html#event-invalid\n       */\n      onInvalid?: AttrEventHandler<Event, T>;\n      \"on-invalid\"?: this[\"onInvalid\"];\n      oninvalid?: AttrString;\n\n      /**\n       * Fired when a key is first pressed down.\n       * @see https://w3c.github.io/uievents/#event-type-keydown\n       */\n      onKeydown?: AttrEventHandler<KeyboardEvent, T>;\n      \"on-keydown\"?: this[\"onKeydown\"];\n      onkeydown?: AttrString;\n\n      /**\n       * Fired when a key is pressed down and then released, while the element has focus.\n       * @see https://w3c.github.io/uievents/#event-type-keypress\n       */\n      onKeypress?: AttrEventHandler<KeyboardEvent, T>;\n      \"on-keypress\"?: this[\"onKeypress\"];\n      onkeypress?: AttrString;\n\n      /**\n       * Fired when a key is released after being pressed down.\n       * @see https://w3c.github.io/uievents/#event-type-keyup\n       */\n      onKeyup?: AttrEventHandler<KeyboardEvent, T>;\n      \"on-keyup\"?: this[\"onKeyup\"];\n      onkeyup?: AttrString;\n\n      /**\n       * Fired when an element or resource, such as an image, has completely loaded.\n       * @see https://html.spec.whatwg.org/multipage/indices.html#event-load\n       */\n      onLoad?: AttrEventHandler<Event, T>;\n      \"on-load\"?: this[\"onLoad\"];\n      onload?: AttrString;\n\n      /**\n       * Fired when the user agent can render the media data at the current playback position for the first time.\n       * @see https://html.spec.whatwg.org/multipage/media.html#event-media-loadeddata\n       */\n      onLoadeddata?: AttrEventHandler<Event, T>;\n      \"on-loadeddata\"?: this[\"onLoadeddata\"];\n      onloadeddata?: AttrString;\n\n      /**\n       * Fired when the user agent has just determined the duration and dimensions of the media resource.\n       * @see https://html.spec.whatwg.org/multipage/media.html#event-media-loadedmetadata\n       */\n      onLoadedmetadata?: AttrEventHandler<Event, T>;\n      \"on-loadedmetadata\"?: this[\"onLoadedmetadata\"];\n      onloadedmetadata?: AttrString;\n\n      /**\n       * Fired when the user agent begins looking for media data, before the media has begun to load.\n       * @see https://html.spec.whatwg.org/multipage/media.html#event-media-loadstart\n       */\n      onLoadstart?: AttrEventHandler<Event, T>;\n      \"on-loadstart\"?: this[\"onLoadstart\"];\n      onloadstart?: AttrString;\n\n      /**\n       * Fired when a captured pointer is released.\n       * @see https://w3c.github.io/pointerevents/#dfn-lostpointercapture\n       */\n      onLostpointercapture?: AttrEventHandler<PointerEvent, T>;\n      \"on-lostpointercapture\"?: this[\"onLostpointercapture\"];\n\n      /**\n       * Fired when a pointing device button is pressed down over an element.\n       * @see https://w3c.github.io/uievents/#event-type-mousedown\n       */\n      onMousedown?: AttrEventHandler<MouseEvent, T>;\n      \"on-mousedown\"?: this[\"onMousedown\"];\n      onmousedown?: AttrString;\n\n      /**\n       * Fired when a pointing device is moved onto the element.\n       * @see https://w3c.github.io/uievents/#event-type-mouseenter\n       */\n      onMouseenter?: AttrEventHandler<MouseEvent, T>;\n      \"on-mouseenter\"?: this[\"onMouseenter\"];\n      onmouseenter?: AttrString;\n\n      /**\n       * Fired when a pointing device is moved off the element.\n       * @see https://w3c.github.io/uievents/#event-type-mouseleave\n       */\n      onMouseleave?: AttrEventHandler<MouseEvent, T>;\n      \"on-mouseleave\"?: this[\"onMouseleave\"];\n      onmouseleave?: AttrString;\n\n      /**\n       * Fired when a pointing device is moved over an element.\n       * @see https://w3c.github.io/uievents/#event-type-mousemove\n       */\n      onMousemove?: AttrEventHandler<MouseEvent, T>;\n      \"on-mousemove\"?: this[\"onMousemove\"];\n      onmousemove?: AttrString;\n\n      /**\n       * Fired when a pointing device is moved off the element or off one of its children.\n       * @see https://w3c.github.io/uievents/#event-type-mouseout\n       */\n      onMouseout?: AttrEventHandler<MouseEvent, T>;\n      \"on-mouseout\"?: this[\"onMouseout\"];\n      onmouseout?: AttrString;\n\n      /**\n       * Fired when a pointing device is moved onto the element or onto one of its children.\n       * @see https://w3c.github.io/uievents/#event-type-mouseover\n       */\n      onMouseover?: AttrEventHandler<MouseEvent, T>;\n      \"on-mouseover\"?: this[\"onMouseover\"];\n      onmouseover?: AttrString;\n\n      /**\n       * Fired when a pointing device button is released over an element.\n       * @see https://w3c.github.io/uievents/#event-type-mouseup\n       */\n      onMouseup?: AttrEventHandler<MouseEvent, T>;\n      \"on-mouseup\"?: this[\"onMouseup\"];\n      onmouseup?: AttrString;\n\n      /**\n       * Fired when the user has completed a \"paste\" action, usually through a context menu or keyboard shortcut.\n       * @see https://w3c.github.io/clipboard-apis/#clipboard-event-paste\n       */\n      onPaste?: AttrEventHandler<ClipboardEvent, T>;\n      \"on-paste\"?: this[\"onPaste\"];\n      onpaste?: AttrString;\n\n      /**\n       * Fired when playback of a media element is paused.\n       * @see https://html.spec.whatwg.org/multipage/media.html#event-media-pause\n       */\n      onPause?: AttrEventHandler<Event, T>;\n      \"on-pause\"?: this[\"onPause\"];\n      onpause?: AttrString;\n\n      /**\n       * Fired when playback of a media element is ready to start after having been paused.\n       * @see https://html.spec.whatwg.org/multipage/media.html#event-media-play\n       */\n      onPlay?: AttrEventHandler<Event, T>;\n      \"on-play\"?: this[\"onPlay\"];\n      onplay?: AttrString;\n\n      /**\n       * Fired when playback of a media element is ready to start, or when playback is resumed after a pause event.\n       * @see https://html.spec.whatwg.org/multipage/media.html#event-media-playing\n       */\n      onPlaying?: AttrEventHandler<Event, T>;\n      \"on-playing\"?: this[\"onPlaying\"];\n      onplaying?: AttrString;\n\n      /**\n       * Fired when the pointing device's hardware triggers a cancellation of the pointer event, such as due to a system event.\n       * @see https://w3c.github.io/pointerevents/#the-pointercancel-event\n       */\n      onPointercancel?: AttrEventHandler<PointerEvent, T>;\n      \"on-pointercancel\"?: this[\"onPointercancel\"];\n\n      /**\n       * Fired when a pointing device's button is pressed down on an element.\n       * @see https://w3c.github.io/pointerevents/#the-pointerdown-event\n       */\n      onPointerdown?: AttrEventHandler<PointerEvent, T>;\n      \"on-pointerdown\"?: this[\"onPointerdown\"];\n\n      /**\n       * Fired when a pointing device is moved onto the element.\n       * @see https://w3c.github.io/pointerevents/#the-pointerenter-event\n       */\n      onPointerenter?: AttrEventHandler<PointerEvent, T>;\n      \"on-pointerenter\"?: this[\"onPointerenter\"];\n\n      /**\n       * Fired when a pointing device is moved off the element.\n       * @see https://w3c.github.io/pointerevents/#the-pointerleave-event\n       */\n      onPointerleave?: AttrEventHandler<PointerEvent, T>;\n      \"on-pointerleave\"?: this[\"onPointerleave\"];\n\n      /**\n       * Fired when a pointing device is moved over an element.\n       * @see https://w3c.github.io/pointerevents/#the-pointermove-event\n       */\n      onPointermove?: AttrEventHandler<PointerEvent, T>;\n      \"on-pointermove\"?: this[\"onPointermove\"];\n\n      /**\n       * Fired when a pointing device is moved off the element or off one of its children.\n       * @see https://w3c.github.io/pointerevents/#the-pointerout-event\n       */\n      onPointerout?: AttrEventHandler<PointerEvent, T>;\n      \"on-pointerout\"?: this[\"onPointerout\"];\n\n      /**\n       * Fired when a pointing device is moved onto the element or onto one of its children.\n       * @see https://w3c.github.io/pointerevents/#the-pointerover-event\n       */\n      onPointerover?: AttrEventHandler<PointerEvent, T>;\n      \"on-pointerover\"?: this[\"onPointerover\"];\n\n      /**\n       * Fired when a pointing device's button is released over an element.\n       * @see https://w3c.github.io/pointerevents/#the-pointerup-event\n       */\n      onPointerup?: AttrEventHandler<PointerEvent, T>;\n      \"on-pointerup\"?: this[\"onPointerup\"];\n\n      /**\n       * Fired when the user agent is downloading media data or resources, to indicate progress.\n       * @see https://html.spec.whatwg.org/multipage/media.html#event-media-progress\n       */\n      onProgress?: AttrEventHandler<Event, T>;\n      \"on-progress\"?: this[\"onProgress\"];\n      onprogress?: AttrString;\n\n      /**\n       * Fired when the playback rate of a media element has changed.\n       * @see https://html.spec.whatwg.org/multipage/media.html#event-media-ratechange\n       */\n      onRatechange?: AttrEventHandler<Event, T>;\n      \"on-ratechange\"?: this[\"onRatechange\"];\n      onratechange?: AttrString;\n\n      /**\n       * Fired when a form is reset, either by user interaction or through a script.\n       * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#event-reset\n       */\n      onReset?: AttrEventHandler<Event, T>;\n      \"on-reset\"?: this[\"onReset\"];\n      onreset?: AttrString;\n\n      /**\n       * Fired at the Window when the viewport is resized. Fired at VisualViewport when the visual viewport is resized or the layout viewport is scaled.\n       * @see https://drafts.csswg.org/cssom-view/#eventdef-window-resize\n       */\n      onResize?: AttrEventHandler<Event, T>;\n      \"on-resize\"?: this[\"onResize\"];\n      onresize?: AttrString;\n\n      /**\n       * Fired when an element's scrollbar is being scrolled.\n       * @see https://drafts.csswg.org/cssom-view/#eventdef-document-scroll\n       */\n      onScroll?: AttrEventHandler<Event, T>;\n      \"on-scroll\"?: this[\"onScroll\"];\n      onscroll?: AttrString;\n\n      /**\n       * Fired when element scrolling has completed. Scrolling is considered completed when the scroll position has no more pending updates and the user has completed their gesture.\n       * @see https://drafts.csswg.org/cssom-view/#eventdef-document-scrollend\n       */\n      onScrollend?: AttrEventHandler<Event, T>;\n      \"on-scrollend\"?: this[\"onScrollend\"];\n      onscrollend?: AttrString;\n\n      /**\n       * Fired when a security policy violation occurs, such as when an attempted resource load is blocked due to the security settings of the browser or when an inline script violates the Content Security Policy (CSP) of the page.\n       * @see https://w3c.github.io/webappsec-csp/#eventdef-globaleventhandlers-securitypolicyviolation\n       */\n      onSecurityPolicyViolation?: AttrEventHandler<\n        SecurityPolicyViolationEvent,\n        T\n      >;\n      \"on-securitypolicyviolation\"?: this[\"onSecurityPolicyViolation\"];\n      onsecuritypolicyviolation?: AttrString;\n\n      /**\n       * Fired when a seek operation on a media element completes.\n       * @see https://html.spec.whatwg.org/multipage/media.html#event-media-seeked\n       */\n      onSeeked?: AttrEventHandler<Event, T>;\n      \"on-seeked\"?: this[\"onSeeked\"];\n      onseeked?: AttrString;\n\n      /**\n       * Fired when a seek operation on a media element begins.\n       * @see https://html.spec.whatwg.org/multipage/media.html#event-media-seeking\n       */\n      onSeeking?: AttrEventHandler<Event, T>;\n      \"on-seeking\"?: this[\"onSeeking\"];\n      onseeking?: AttrString;\n\n      /**\n       * Fired when some text is selected within an input or textarea element.\n       * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#event-select\n       */\n      onSelect?: AttrEventHandler<Event, T>;\n      \"on-select\"?: this[\"onSelect\"];\n      onselect?: AttrString;\n\n      /**\n       * Fired when a <slot> element's distributed nodes change.\n       * @see https://dom.spec.whatwg.org/#eventdef-htmlslotelement-slotchange\n       */\n      onSlotchange?: AttrEventHandler<Event, T>;\n      \"on-slotchange\"?: this[\"onSlotchange\"];\n      onslotchange?: AttrString;\n\n      /**\n       * Fired when a media element's data downloading has been stalled due to an issue, such as a lack of data.\n       * @see https://html.spec.whatwg.org/multipage/media.html#event-media-stalled\n       */\n      onStalled?: AttrEventHandler<Event, T>;\n      \"on-stalled\"?: this[\"onStalled\"];\n      onstalled?: AttrString;\n\n      /**\n       * Fired at a form element when it is submitted\n       * @see https://html.spec.whatwg.org/multipage/indices.html#event-submit\n       */\n      onSubmit?: AttrEventHandler<SubmitEvent, T>;\n      \"on-submit\"?: this[\"onSubmit\"];\n      onsubmit?: AttrString;\n\n      /**\n       * Fired when the user agent intentionally does not download media data.\n       * @see https://html.spec.whatwg.org/multipage/media.html#event-media-suspend\n       */\n      onSuspend?: AttrEventHandler<Event, T>;\n      \"on-suspend\"?: this[\"onSuspend\"];\n      onsuspend?: AttrString;\n\n      /**\n       * Fired when the current playback position of a media element changes as part of normal playback or due to a seek operation.\n       * @see https://html.spec.whatwg.org/multipage/media.html#event-media-timeupdate\n       */\n      onTimeupdate?: AttrEventHandler<Event, T>;\n      \"on-timeupdate\"?: this[\"onTimeupdate\"];\n      ontimeupdate?: AttrString;\n\n      /**\n       * Fired at details elements when they open or close; fired on elements with the popover attribute when they are transitioning between showing and hidden\n       * @see https://html.spec.whatwg.org/multipage/indices.html#event-toggle\n       */\n      onToggle?: AttrEventHandler<Event, T>;\n      \"on-toggle\"?: this[\"onToggle\"];\n      ontoggle?: AttrString;\n\n      /**\n       * Fired when a touch event is interrupted, such as by a modal window or an incoming phone call.\n       * @see https://w3c.github.io/touch-events/#event-touchcancel\n       */\n      onTouchcancel?: AttrEventHandler<TouchEvent, T>;\n      \"on-touchcancel\"?: this[\"onTouchcancel\"];\n\n      /**\n       * Fired when a finger is lifted from a touch surface.\n       * @see https://w3c.github.io/touch-events/#event-touchend\n       */\n      onTouchend?: AttrEventHandler<TouchEvent, T>;\n      \"on-touchend\"?: this[\"onTouchend\"];\n\n      /**\n       * Fired when a finger is moved along a touch surface.\n       * @see https://w3c.github.io/touch-events/#event-touchmove\n       */\n      onTouchmove?: AttrEventHandler<TouchEvent, T>;\n      \"on-touchmove\"?: this[\"onTouchmove\"];\n\n      /**\n       * Fired when a finger is placed on a touch surface.\n       * @see https://w3c.github.io/touch-events/#event-touchstart\n       */\n      onTouchstart?: AttrEventHandler<TouchEvent, T>;\n      \"on-touchstart\"?: this[\"onTouchstart\"];\n\n      /**\n       * Fired when a CSS transition is canceled.\n       * @see https://drafts.csswg.org/css-transitions/#transitioncancel\n       */\n      onTransitioncancel?: AttrEventHandler<TransitionEvent, T>;\n      \"on-transitioncancel\"?: this[\"onTransitioncancel\"];\n\n      /**\n       * Fired when a CSS transition has completed.\n       * @see https://drafts.csswg.org/css-transitions/#transitionend\n       */\n      onTransitionend?: AttrEventHandler<TransitionEvent, T>;\n      \"on-transitionend\"?: this[\"onTransitionend\"];\n\n      /**\n       * Fired when a CSS transition is first created, i.e. before any transition-delay has begun.\n       * @see https://drafts.csswg.org/css-transitions/#transitionrun\n       */\n      onTransitionrun?: AttrEventHandler<TransitionEvent, T>;\n      \"on-transitionrun\"?: this[\"onTransitionrun\"];\n\n      /**\n       * Fired when a CSS transition has actually started, i.e., after any transition-delay has ended.\n       * @see https://drafts.csswg.org/css-transitions/#transitionstart\n       */\n      onTransitionstart?: AttrEventHandler<TransitionEvent, T>;\n      \"on-transitionstart\"?: this[\"onTransitionstart\"];\n\n      /**\n       * Fired when the volume level or muted state of a media element changes.\n       * @see https://html.spec.whatwg.org/multipage/media.html#event-media-volumechange\n       */\n      onVolumechange?: AttrEventHandler<Event, T>;\n      \"on-volumechange\"?: this[\"onVolumechange\"];\n      onvolumechange?: AttrString;\n\n      /**\n       * Fired when a media element is waiting for data to continue playback, such as when buffering.\n       * @see https://html.spec.whatwg.org/multipage/media.html#event-media-waiting\n       */\n      onWaiting?: AttrEventHandler<Event, T>;\n      \"on-waiting\"?: this[\"onWaiting\"];\n      onwaiting?: AttrString;\n\n      /**\n       * Fired when a user rotates a mouse wheel or similar input device over an element.\n       * @see https://w3c.github.io/uievents/#event-type-wheel\n       */\n      onWheel?: AttrEventHandler<WheelEvent, T>;\n      \"on-wheel\"?: this[\"onWheel\"];\n      onwheel?: AttrString;\n\n      /**\n       * data-* global attributes form a class of attributes called custom data attributes, that allow proprietary\n       * information to be exchanged between the HTML and its DOM representation by scripts.\n       * @see https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes\n       */\n      [data: `data-${string}`]: AttrMissing | string | number | boolean;\n    }\n\n    interface AriaAttributes {\n      /**\n       * Identifies the currently active element when DOM focus is on a composite widget, textbox, group, or application.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-activedescendant\n       */\n      \"aria-activedescendant\"?: AttrString;\n      /**\n       * Indicates whether assistive technologies will present all, or only parts of, the changed region based on the change notifications defined by the aria-relevant attribute.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-atomic\n       * @see aria-relevant\n       */\n      \"aria-atomic\"?: AttrBooleanString;\n      /**\n       * Indicates whether inputting text could trigger display of one or more predictions of the user's intended value for an input and specifies how predictions would be\n       * presented if they are made.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-autocomplete\n       */\n      \"aria-autocomplete\"?: AttrMissing | \"both\" | \"inline\" | \"list\" | \"none\";\n      /**\n       * Indicates an element is being modified and that assistive technologies MAY want to wait until the modifications are complete before exposing them to the user.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-busy\n       */\n      \"aria-busy\"?: AttrBooleanString;\n      /**\n       * Indicates the current \"checked\" state of checkboxes, radio buttons, and other widgets.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-checked\n       */\n      \"aria-checked\"?: AttrTriState;\n      /**\n       * Defines the total number of columns in a table, grid, or treegrid.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-colcount\n       */\n      \"aria-colcount\"?: AttrStringOrNumber;\n      /**\n       * Defines an element's column index or position with respect to the total number of columns within a table, grid, or treegrid.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-colindex\n       */\n      \"aria-colindex\"?: AttrStringOrNumber;\n      /**\n       * Defines a human readable text alternative of aria-colindex.\n       * @see https://w3c.github.io/aria/#aria-colindextext\n       * @see aria-colindex\n       */\n      \"aria-colindextext\"?: AttrString;\n      /**\n       * Defines the number of columns spanned by a cell or gridcell within a table, grid, or treegrid.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-colspan\n       */\n      \"aria-colspan\"?: AttrStringOrNumber;\n      /**\n       * Identifies the element (or elements) whose contents or presence are controlled by the current element.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-controls\n       * @see aria-owns\n       */\n      \"aria-controls\"?: AttrString;\n      /**\n       * Indicates the element that represents the current item within a container or set of related elements.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-current\n       */\n      \"aria-current\"?:\n        | AttrBooleanString\n        | \"date\"\n        | \"location\"\n        | \"page\"\n        | \"step\"\n        | \"time\"\n        | \"true\";\n      /**\n       * Identifies the element (or elements) that describes the object.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-describedby\n       * @see aria-labelledby\n       */\n      \"aria-describedby\"?: AttrString;\n      /**\n       * Defines a string value that describes or annotates the current element.\n       * @see https://w3c.github.io/aria/#aria-description\n       * @see aria-describedby\n       */\n      \"aria-description\"?: AttrString;\n      /**\n       * Identifies the element that provides a detailed, extended description for the object.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-details\n       * @see aria-describedby\n       */\n      \"aria-details\"?: AttrString;\n      /**\n       * Indicates that the element is perceivable but disabled, so it is not editable or otherwise operable.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-disabled\n       */\n      \"aria-disabled\"?: AttrBooleanString;\n      /**\n       * @deprecated Indicates what functions can be performed when a dragged object is released on the drop target.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-dropeffect\n       * */\n      \"aria-dropeffect\"?:\n        | AttrMissing\n        | \"copy\"\n        | \"execute\"\n        | \"link\"\n        | \"move\"\n        | \"none\"\n        | \"popup\";\n      /**\n       * Identifies the element that provides an error message for the object.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-errormessage\n       * @see aria-invalid\n       * @see aria-describedby\n       */\n      \"aria-errormessage\"?: AttrString;\n      /**\n       * Indicates whether the element, or another grouping element it controls, is currently expanded or collapsed.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-expanded\n       * @see aria-controls\n       */\n      \"aria-expanded\"?: AttrBooleanString;\n      /**\n       * Identifies the next element (or elements) in an alternate reading order of content which, at the user's discretion,\n       * allows assistive technology to override the general default of reading in document source order.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-flowto\n       */\n      \"aria-flowto\"?: AttrString;\n      /**\n       * @deprecated Indicates an element's \"grabbed\" state in a drag-and-drop operation.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-grabbed\n       */\n      \"aria-grabbed\"?: AttrBooleanString;\n      /**\n       * Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by an element.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-haspopup\n       */\n      \"aria-haspopup\"?:\n        | AttrBooleanString\n        | \"dialog\"\n        | \"grid\"\n        | \"listbox\"\n        | \"menu\"\n        | \"tree\";\n      /**\n       * Indicates whether the element is exposed to an accessibility API.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-hidden\n       * @see aria-disabled\n       */\n      \"aria-hidden\"?: AttrBooleanString;\n      /**\n       * Indicates the entered value does not conform to the format expected by the application.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-invalid\n       * @see aria-errormessage\n       */\n      \"aria-invalid\"?: AttrBooleanString | \"grammar\" | \"spelling\";\n      /**\n       * Indicates keyboard shortcuts that an author has implemented to activate or give focus to an element.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-keyshortcuts\n       */\n      \"aria-keyshortcuts\"?: AttrString;\n      /**\n       * Defines a string value that labels the current element.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-label\n       * @see aria-labelledby\n       */\n      \"aria-label\"?: AttrString;\n      /**\n       * Identifies the element (or elements) that labels the current element.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-labelledby\n       * @see aria-describedby\n       */\n      \"aria-labelledby\"?: AttrString;\n      /**\n       * Defines the hierarchical level of an element within a structure.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-level\n       */\n      \"aria-level\"?: AttrMissing | number | string;\n      /**\n       * Indicates that an element will be updated, and describes the types of updates the user agents, assistive technologies,\n       * and user can expect from the live region.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-live\n       */\n      \"aria-live\"?: AttrMissing | \"assertive\" | \"off\" | \"polite\";\n      /**\n       * Indicates whether an element is modal when displayed.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-modal\n       */\n      \"aria-modal\"?: AttrBooleanString;\n      /**\n       * Indicates whether a text box accepts multiple lines of input or only a single line.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-multiline\n       */\n      \"aria-multiline\"?: AttrBooleanString;\n      /**\n       * Indicates that the user may select more than one item from the current selectable descendants.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-multiselectable\n       */\n      \"aria-multiselectable\"?: AttrBooleanString;\n      /**\n       * Indicates whether the element's orientation is horizontal, vertical, or unknown/ambiguous.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-orientation\n       */\n      \"aria-orientation\"?: AttrMissing | \"horizontal\" | \"vertical\";\n      /**\n       * Identifies an element (or elements) in order to define a visual, functional, or contextual parent/child relationship\n       * between DOM elements where the DOM hierarchy cannot be used to represent the relationship.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-owns\n       */\n      \"aria-owns\"?: AttrString;\n      /**\n       * Defines a short hint (a word or short phrase) intended to aid the user with data entry when the control has no value.\n       * A hint could be a sample value or a brief description of the expected format.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-placeholder\n       */\n      \"aria-placeholder\"?: AttrString;\n      /**\n       * Defines an element's number or position in the current set of listitems or treeitems.\n       * Not required if all elements in the set are present in the DOM.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-posinset\n       */\n      \"aria-posinset\"?: AttrStringOrNumber;\n      /**\n       * Indicates the current \"pressed\" state of toggle buttons.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-pressed\n       */\n      \"aria-pressed\"?: AttrTriState;\n      /**\n       * Indicates that the element is not editable, but is otherwise operable.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-readonly\n       */\n      \"aria-readonly\"?: AttrBooleanString;\n      /**\n       * Indicates what notifications the user agent will trigger when the accessibility tree within a live region is modified.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-relevant\n       */\n      \"aria-relevant\"?:\n        | AttrMissing\n        | \"additions removals\"\n        | \"additions text\"\n        | \"additions\"\n        | \"all\"\n        | \"removals additions\"\n        | \"removals text\"\n        | \"removals\"\n        | \"text additions\"\n        | \"text removals\"\n        | \"text\";\n      /**\n       * Indicates that user input is required on the element before a form may be submitted.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-required\n       */\n      \"aria-required\"?: AttrBooleanString;\n      /**\n       * Defines a human-readable, author-localized description for the role of an element.\n       */\n      \"aria-roledescription\"?: AttrString;\n      /**\n       * Defines the total number of rows in a table, grid, or treegrid.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-rowcount\n       */\n      \"aria-rowcount\"?: AttrStringOrNumber;\n      /**\n       * Defines an element's row index or position with respect to the total number of rows within a table, grid, or treegrid.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-rowindex\n       */\n      \"aria-rowindex\"?: AttrStringOrNumber;\n      /**\n       * Defines a human readable text alternative of aria-rowindex.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-rowindextext\n       * @see aria-rowindex\n       */\n      \"aria-rowindextext\"?: AttrString;\n      /**\n       * Defines the number of rows spanned by a cell or gridcell within a table, grid, or treegrid.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-rowspan\n       */\n      \"aria-rowspan\"?: AttrStringOrNumber;\n      /**\n       * Indicates the current \"selected\" state of various widgets.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-selected\n       */\n      \"aria-selected\"?: AttrBooleanString;\n      /**\n       * Defines the number of items in the current set of listitems or treeitems.\n       * Not required if all elements in the set are present in the DOM.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-setsize\n       */\n      \"aria-setsize\"?: AttrStringOrNumber;\n      /**\n       * Indicates if items in a table or grid are sorted in ascending or descending order.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-sort\n       */\n      \"aria-sort\"?: \"ascending\" | \"descending\" | \"none\" | \"other\";\n      /**\n       * Defines the maximum allowed value for a range widget.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-valuemax\n       * @see aria-valuenow\n       */\n      \"aria-valuemax\"?: AttrStringOrNumber;\n      /**\n       * Defines the minimum allowed value for a range widget.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-valuemin\n       * @see aria-valuenow\n       */\n      \"aria-valuemin\"?: AttrStringOrNumber;\n      /**\n       * Defines the current value for a range widget.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-valuenow\n       * @see aria-valuetext\n       * @see aria-valuemin\n       * @see aria-valuemax\n       */\n      \"aria-valuenow\"?: AttrStringOrNumber;\n      /**\n       * Defines the human readable text alternative of aria-valuenow for a range widget.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#aria-valuetext\n       * @see aria-valuenow\n       */\n      \"aria-valuetext\"?: AttrString;\n      /**\n       * Defines the ARIA role of an element.\n       * @see https://www.w3.org/TR/wai-aria-1.1/#role_definitions\n       */\n      role?:\n        | AttrMissing\n        | \"alert\"\n        | \"alertdialog\"\n        | \"application\"\n        | \"article\"\n        | \"banner\"\n        | \"button\"\n        | \"cell\"\n        | \"checkbox\"\n        | \"columnheader\"\n        | \"combobox\"\n        | \"complementary\"\n        | \"contentinfo\"\n        | \"definition\"\n        | \"dialog\"\n        | \"directory\"\n        | \"document\"\n        | \"feed\"\n        | \"figure\"\n        | \"form\"\n        | \"grid\"\n        | \"gridcell\"\n        | \"group\"\n        | \"heading\"\n        | \"img\"\n        | \"link\"\n        | \"list\"\n        | \"listbox\"\n        | \"listitem\"\n        | \"log\"\n        | \"main\"\n        | \"marquee\"\n        | \"math\"\n        | \"menu\"\n        | \"menubar\"\n        | \"menuitem\"\n        | \"menuitemcheckbox\"\n        | \"menuitemradio\"\n        | \"meter\"\n        | \"navigation\"\n        | \"none\"\n        | \"note\"\n        | \"option\"\n        | \"presentation\"\n        | \"progressbar\"\n        | \"radio\"\n        | \"radiogroup\"\n        | \"region\"\n        | \"row\"\n        | \"rowgroup\"\n        | \"rowheader\"\n        | \"scrollbar\"\n        | \"search\"\n        | \"searchbox\"\n        | \"separator\"\n        | \"slider\"\n        | \"spinbutton\"\n        | \"status\"\n        | \"switch\"\n        | \"tab\"\n        | \"table\"\n        | \"tablist\"\n        | \"tabpanel\"\n        | \"term\"\n        | \"textbox\"\n        | \"timer\"\n        | \"toolbar\"\n        | \"tooltip\"\n        | \"tree\"\n        | \"treegrid\"\n        | \"treeitem\";\n    }\n  }\n}\n\ntype AttrMissing = undefined | null | false;\ntype AttrClass =\n  | AttrMissing\n  | string\n  | AttrClass[]\n  | Record<string, AttrMissing | boolean>;\ntype AttrStyle = AttrMissing | string | Marko.CSS.Properties | AttrStyle[];\ntype AttrCrossOrigin = AttrBoolean | \"anonymous\" | \"use-credentials\";\ntype AttrEventHandler<Event, Target> =\n  | AttrMissing\n  | ((event: Event, target: Target) => unknown);\ntype AttrTarget =\n  | AttrMissing\n  | \"_blank\"\n  | \"_parent\"\n  | \"_self\"\n  | \"_top\"\n  | (string & {});\ntype AttrReferrerPolicy =\n  | AttrMissing\n  | \"no-referrer-when-downgrade\"\n  | \"no-referrer\"\n  | \"origin-when-cross-origin\"\n  | \"origin\"\n  | \"same-origin\"\n  | \"strict-origin-when-cross-origin\"\n  | \"strict-origin\"\n  | \"unsafe-url\";\ntype AttrString = AttrMissing | string;\ntype AttrStringOrNumber = AttrString | number;\ntype AttrBoolean = AttrMissing | boolean;\ntype AttrBooleanOrString = AttrBoolean | string;\ntype AttrBooleanString = AttrMissing | \"false\" | \"true\";\ntype AttrYesNoString = AttrMissing | \"no\" | \"yes\";\ntype AttrTriState = AttrBooleanString | \"mixed\";\ntype AttrOnOff = AttrMissing | \"on\" | \"off\";\ntype AttrAutoComplete =\n  | AttrOnOff\n  | \"shipping\"\n  | \"billing\"\n  | \"name\"\n  | \"honorific-prefix\"\n  | \"given-name\"\n  | \"additional-name\"\n  | \"family-name\"\n  | \"honorific-suffix\"\n  | \"nickname\"\n  | \"username\"\n  | \"new-password\"\n  | \"current-password\"\n  | \"one-time-code\"\n  | \"organization-title\"\n  | \"organization\"\n  | \"street-address\"\n  | \"address-line1\"\n  | \"address-line2\"\n  | \"address-line3\"\n  | \"address-level4\"\n  | \"address-level3\"\n  | \"address-level2\"\n  | \"address-level1\"\n  | \"country\"\n  | \"country-name\"\n  | \"postal-code\"\n  | \"cc-name\"\n  | \"cc-given-name\"\n  | \"cc-additional-name\"\n  | \"cc-family-name\"\n  | \"cc-number\"\n  | \"cc-exp\"\n  | \"cc-exp-month\"\n  | \"cc-exp-year\"\n  | \"cc-csc\"\n  | \"cc-type\"\n  | \"transaction-currency\"\n  | \"transaction-amount\"\n  | \"language\"\n  | \"bday\"\n  | \"bday-day\"\n  | \"bday-month\"\n  | \"bday-year\"\n  | \"sex\"\n  | \"url\"\n  | \"photo\"\n  | \"home\"\n  | \"work\"\n  | \"mobile\"\n  | \"fax\"\n  | \"pager\"\n  | (string & {});\n"
  },
  {
    "path": "packages/runtime-class/test/.gitignore",
    "content": "/node_modules\n/scratch.js\n\n*.actual.js\n*.actual.html\n\n*-actual*\nactual-*\nactual.*\nactualized-expected.html\n\n*.generated.*\n\nerror.txt"
  },
  {
    "path": "packages/runtime-class/test/__util__/BrowserHelpers.js",
    "content": "var assert = require(\"assert\");\nvar expect = require(\"chai\").expect;\nvar markoComponents = require(\"marko/components\");\nvar getComponentsFromMeta = require(\"./components-from-meta\");\n\nfunction BrowserHelpers() {\n  this.logOutput = [];\n  this.rendered = [];\n  this.instances = [];\n}\n\nBrowserHelpers.prototype = {\n  triggerEvent: function (el, type) {\n    var ev = document.createEvent(\"Event\");\n    ev.initEvent(type, true, true);\n    el.dispatchEvent(ev);\n  },\n\n  triggerCustomEvent: function (el, type, detail) {\n    var ev = new CustomEvent(type, { detail: detail });\n    el.dispatchEvent(ev);\n  },\n\n  triggerMouseEvent: function (el, type) {\n    var ev = document.createEvent(\"MouseEvent\");\n    ev.initMouseEvent(\n      type,\n      true /* bubble */,\n      true /* cancelable */,\n      window,\n      null,\n      0,\n      0,\n      0,\n      0 /* coordinates */,\n      false,\n      false,\n      false,\n      false /* modifier keys */,\n      0 /*left*/,\n      null,\n    );\n    el.dispatchEvent(ev);\n  },\n\n  triggerClick: function (el) {\n    this.triggerMouseEvent(el, \"click\");\n  },\n\n  triggerMouseMove: function (el) {\n    this.triggerMouseEvent(el, \"mousemove\");\n  },\n\n  mount: function (templatePath, input) {\n    var $global = input && input.$global;\n    var template = require(templatePath);\n    template = template.default || template;\n    var renderResult = template.renderSync(input).appendTo(this.targetEl);\n    var instance;\n\n    try {\n      instance = renderResult.getComponent();\n    } catch (e) {\n      if (e.toString().indexOf(\"No component\") === -1) {\n        throw e;\n      }\n    }\n\n    if (instance) {\n      this.instances.push(instance);\n    }\n\n    this.rendered.push({\n      template: this.cleanPath(templatePath),\n      components: getComponentsFromMeta(template),\n      input: input,\n      $global: $global,\n    });\n\n    return instance;\n  },\n\n  log: function (data) {\n    this.logOutput.push(data);\n  },\n\n  getComponentForEl: function (el) {\n    return markoComponents.getComponentForEl(el);\n  },\n\n  get targetEl() {\n    return document.getElementById(\"testsTarget\");\n  },\n\n  nodeListToArray: function (nodes) {\n    var nodeArray = new Array(nodes.length);\n    for (var i = 0; i < nodes.length; i++) {\n      nodeArray[i] = nodes[i];\n    }\n    return nodeArray;\n  },\n\n  checkChildrenMatch: function (children1, children2) {\n    expect(children1.length).to.equal(children2.length);\n\n    for (var i = 0; i < children1.length; i++) {\n      var child1 = children1[i];\n      var child2 = children2[i];\n      assert.ok(\n        child1 === child2,\n        \"Children at index \" +\n          i +\n          \" do not match. child 1: \" +\n          child1 +\n          \" child 2: \" +\n          child2,\n      );\n    }\n  },\n\n  cleanPath: function (path) {\n    return path.replace(/\\.\\d+\\.in-context$/, \"\");\n  },\n};\n\nmodule.exports = BrowserHelpers;\n"
  },
  {
    "path": "packages/runtime-class/test/__util__/async-helpers.js",
    "content": "exports.promiseProvider = async (delay, value) => {\n  while (1 + delay--) {\n    await immediatePromise();\n  }\n  if (value instanceof Error) {\n    throw value;\n  } else {\n    return value;\n  }\n};\n\nexports.callbackProvider = (delay, value) => {\n  return function (callback) {\n    exports.promiseProvider(delay, value).then(\n      (resolved) => callback(null, resolved),\n      (rejected) => callback(rejected),\n    );\n  };\n};\n\nexports.callbackProviderWithArgs = (delay, resolver = (x) => x) => {\n  return function (...all) {\n    const args = all.slice(0, all.length - 1);\n    const callback = all[all.length - 1];\n    const value = resolver(...args);\n    exports.callbackProvider(delay, value)(callback);\n  };\n};\n\nconst immediate =\n  typeof setImmediate === \"undefined\" ? setTimeout : setImmediate;\nfunction immediatePromise() {\n  return new Promise((resolve) => immediate(resolve));\n}\n"
  },
  {
    "path": "packages/runtime-class/test/__util__/async-test-suite.js",
    "content": "module.exports = function addAsyncTestSuites(name, fn) {\n  var originalDescribe = global.describe;\n  var originalIt = global.it;\n  // Trick mocha into running the before hook without any tests.\n  var runner = describe(name, () => {\n    it(\"\"); // Executes the before even though there are not tests yet.\n    before(function () {\n      // Test init can take a while. (This does not change the timeout of the actual tests, just the lasso compile time).\n      this.timeout(20000);\n\n      // Remove empty test inserted above.\n      runner.tests.splice(0, 1);\n\n      // patch describe to add to the current suite\n      var patchedDescribe = (global.describe = function (name, fn) {\n        return moveSuite(originalDescribe(name, fn), runner);\n      });\n      patchedDescribe.only = function (name, fn) {\n        return moveSuite(originalDescribe.only(name, fn), runner);\n      };\n      patchedDescribe.skip = function (name, fn) {\n        return moveSuite(originalDescribe.skip(name, fn), runner);\n      };\n\n      // patch it to add to the current suite\n      var patchedIt = (global.it = function (name, fn) {\n        return moveTest(originalIt(name, fn), runner);\n      });\n      patchedIt.only = function (name, fn) {\n        return moveTest(originalIt.only(name, fn), runner);\n      };\n      patchedIt.skip = function (name, fn) {\n        return moveTest(originalIt.skip(name, fn), runner);\n      };\n\n      return fn();\n    });\n\n    after(function () {\n      // restore the previous describe\n      global.describe = originalDescribe;\n    });\n  });\n};\n\nfunction moveSuite(suite, newParent) {\n  var oldSuites = suite.parent.suites;\n  newParent.addSuite(suite);\n  oldSuites.splice(oldSuites.indexOf(suite), 1);\n  return suite;\n}\n\nfunction moveTest(test, newParent) {\n  newParent.addTest(test);\n  return test;\n}\n"
  },
  {
    "path": "packages/runtime-class/test/__util__/components-from-meta.js",
    "content": "const path = require(\"path\");\n\nconst getComponents = (module.exports = (template, components) => {\n  const meta = template.meta;\n  components = components || {};\n  if (meta) {\n    if (!components[meta.id]) {\n      const dir = path.dirname(template.path);\n      components[meta.id] =\n        meta.component && /-browser/.test(meta.component)\n          ? path.resolve(dir, meta.component)\n          : template.path;\n\n      if (meta.tags) {\n        const dir = path.dirname(template.path);\n        meta.tags.forEach((tagRelativePath) => {\n          var tagPath =\n            \".\" === tagRelativePath[0]\n              ? path.resolve(dir, tagRelativePath)\n              : tagRelativePath;\n          var tagTemplate = require(tagPath);\n          tagTemplate = tagTemplate.default || tagTemplate;\n          components = getComponents(tagTemplate, components);\n        });\n      }\n    }\n  }\n  return components;\n});\n"
  },
  {
    "path": "packages/runtime-class/test/__util__/create-marko-jsdom-module.js",
    "content": "\"use strict\";\n\nconst { createBrowser } = require(\"jsdom-context-require\");\nconst compiler = require(\"../../compiler\");\nconst globals = [\n  \"console\",\n  \"__coverage__\",\n  \"Error\",\n  \"describe\",\n  \"before\",\n  \"after\",\n  \"beforeEach\",\n  \"afterEach\",\n  \"it\",\n];\n\nconst browserExtensions = {\n  \".marko\": compileMarkoModule,\n  \".html\": compileMarkoModule,\n};\n\nmodule.exports = function (dir, html, options) {\n  options = options || {};\n  return createBrowser({\n    dir: dir,\n    html: html,\n    extensions: browserExtensions,\n    // runScripts: 'dangerously', // JSDOM 10+\n    beforeParse(window, browser) {\n      window.global = window;\n      window.alert = () => {};\n      window.addEventListener(\"error\", (e) => {\n        browser.error = browser.error || e.error;\n      });\n      browser.require(\"complain\").log = (...args) =>\n        require(\"complain\").log(...args);\n      globals.forEach(function (k) {\n        window[k] = global[k];\n      });\n      if (options.beforeParse) {\n        options.beforeParse(window, browser);\n      }\n    },\n  });\n};\n\nfunction compileMarkoModule(module, filename) {\n  return module._compile(\n    compiler.compileFile(filename, {\n      writeToDisk: false,\n      output: \"vdom\",\n      browser: true,\n      meta: true,\n      modules: \"cjs\",\n      babelConfig: {\n        babelrc: false,\n        configFile: false,\n        browserslistConfigFile: false,\n      },\n    }),\n    filename,\n  );\n}\n"
  },
  {
    "path": "packages/runtime-class/test/__util__/domToHTML.js",
    "content": "\"use strict\";\n\nvar runtimeHtmlHelpers = require(\"marko/runtime/html/helpers\");\nvar escapeXml = runtimeHtmlHelpers.x;\nvar escapeXmlAttr = runtimeHtmlHelpers.xa;\nvar escapeScript = runtimeHtmlHelpers.xs;\nvar escapeStyle = runtimeHtmlHelpers.xc;\n\nvar openTagOnly = {};\n\n[\n  \"base\",\n  \"br\",\n  \"col\",\n  \"hr\",\n  \"embed\",\n  \"img\",\n  \"input\",\n  \"keygen\",\n  \"link\",\n  \"meta\",\n  \"param\",\n  \"source\",\n  \"track\",\n  \"wbr\",\n].forEach(function (tagName) {\n  openTagOnly[tagName] = true;\n});\n\nfunction getNodeValue(node) {\n  return node.___nodeValue || node.nodeValue;\n}\n\nfunction getFirstChild(node) {\n  return node.___firstChild || node.firstChild;\n}\n\nfunction getNextSibling(node) {\n  return node.___nextSibling || node.nextSibling;\n}\n\nfunction vdomToHTML(node, options) {\n  // NOTE: We don't use XMLSerializer because we need to sort the attributes to correctly compare output HTML strings\n  // BAD: return (new XMLSerializer()).serializeToString(node);\n  var html = \"\";\n  function serializeHelper(node) {\n    var nodeType = node.nodeType || node.___nodeType;\n\n    if (nodeType === 1) {\n      serializeElHelper(node);\n    } else if (nodeType === 3) {\n      serializeTextHelper(node);\n    } else if (nodeType === 8) {\n      serializeCommentHelper(node);\n    } else {\n      html += `INVALID NODE TYPE ${nodeType}\\n`;\n    }\n  }\n\n  function serializeElHelper(el) {\n    var tagName = el.nodeName;\n\n    html += \"<\" + tagName;\n\n    var attributes = el.attributes;\n    var attributesArray = [];\n    var attrName;\n\n    if (typeof attributes.length === \"number\") {\n      for (var i = 0; i < attributes.length; i++) {\n        var attr = attributes[i];\n        attrName = attr.name;\n\n        if (attrName === \"data-marko-const\") {\n          continue;\n        }\n        attributesArray.push(\n          \" \" + attrName + '=\"' + escapeXmlAttr(attr.value) + '\"',\n        );\n      }\n    } else {\n      for (attrName in attributes) {\n        if (attrName === \"data-marko-const\") {\n          continue;\n        }\n\n        var attrValue = attributes[attrName];\n        if (typeof attrValue !== \"string\") {\n          if (attrValue === true) {\n            attrValue = \"\";\n          } else if (!attrValue) {\n            continue;\n          }\n        }\n\n        if (attrName === \"xlink:href\") {\n          attrName = \"http://www.w3.org/1999/xlink:href\";\n        }\n        attributesArray.push(\n          \" \" + attrName + '=\"' + escapeXmlAttr(attrValue) + '\"',\n        );\n      }\n    }\n\n    attributesArray.sort();\n\n    html += attributesArray.join(\"\");\n\n    html += \">\";\n\n    var hasEndTag = true;\n    if (tagName.toUpperCase() === \"TEXTAREA\") {\n      html += el.value;\n    } else {\n      var curChild = getFirstChild(el);\n      if (curChild) {\n        while (curChild) {\n          let nodeType = curChild.nodeType || curChild.___nodeType;\n          if (nodeType === 3) {\n            let tag = tagName.toUpperCase();\n            let escapeText =\n              tag === \"SCRIPT\"\n                ? escapeScript\n                : tag === \"STYLE\"\n                  ? escapeStyle\n                  : escapeXml;\n            serializeTextHelper(curChild, escapeText);\n          } else {\n            serializeHelper(curChild);\n          }\n\n          curChild = getNextSibling(curChild);\n        }\n      } else if (openTagOnly[tagName.toLowerCase()]) {\n        hasEndTag = false;\n      }\n    }\n\n    if (hasEndTag) {\n      html += \"</\" + tagName + \">\";\n    }\n  }\n\n  function serializeTextHelper(node, escape) {\n    escape = escape || escapeXml;\n    html += escape(getNodeValue(node));\n  }\n\n  function serializeCommentHelper(node) {\n    html += \"<!--\" + getNodeValue(node) + \"-->\";\n  }\n\n  let nodeType = node.nodeType || node.___nodeType;\n\n  if (\n    nodeType === 11 /* DocumentFragment */ ||\n    (options && options.childrenOnly)\n  ) {\n    var curChild = getFirstChild(node);\n    while (curChild) {\n      serializeHelper(curChild);\n      curChild = getNextSibling(curChild);\n    }\n  } else {\n    serializeHelper(node);\n  }\n\n  return html;\n}\n\nmodule.exports = vdomToHTML;\n"
  },
  {
    "path": "packages/runtime-class/test/__util__/domToString.js",
    "content": "function ltrim(s) {\n  return s ? s.replace(/^\\s\\s*/, \"\") : \"\";\n}\n\nfunction getNodeType(node) {\n  return node.nodeType || node.___nodeType;\n}\n\nfunction getNodeValue(node) {\n  return node.___nodeValue || node.nodeValue;\n}\n\nfunction getFirstChild(node) {\n  return node.___firstChild || node.firstChild;\n}\n\nfunction getNextSibling(node) {\n  return node.___nextSibling || node.nextSibling;\n}\n\nfunction vdomToHTML(node, options) {\n  // NOTE: We don't use XMLSerializer because we need to sort the attributes to correctly compare output HTML strings\n  // BAD: return (new XMLSerializer()).serializeToString(node);\n  var html = \"\";\n  function serializeHelper(node, indent) {\n    var nodeType = getNodeType(node);\n\n    if (nodeType === 1) {\n      serializeElHelper(node, indent);\n    } else if (nodeType === 3) {\n      serializeTextHelper(node, indent);\n    } else if (nodeType === 8) {\n      serializeCommentHelper(node, indent);\n    } else {\n      html += indent + `INVALID NODE TYPE ${nodeType}\\n`;\n      // throw new Error('Unexpected node type');\n    }\n  }\n\n  function serializeElHelper(el, indent) {\n    var tagName = el.nodeName || el.___nodeName;\n\n    var elNamespaceURI = el.namespaceURI || el.___namespaceURI;\n\n    if (elNamespaceURI === \"http://www.w3.org/2000/svg\") {\n      tagName = \"svg:\" + tagName;\n    } else if (elNamespaceURI === \"http://www.w3.org/1998/Math/MathML\") {\n      tagName = \"math:\" + tagName;\n    }\n\n    html += indent + \"<\" + tagName;\n\n    var attributes = el.attributes || el.___attributes;\n    var attributesArray = [];\n    var attrName;\n\n    if (typeof attributes.length === \"number\") {\n      for (var i = 0; i < attributes.length; i++) {\n        var attr = attributes[i];\n        if (attr.namespaceURI) {\n          attrName = attr.namespaceURI + \":\" + attr.localName;\n        } else {\n          attrName = attr.name;\n        }\n\n        if (attrName === \"data-marko-const\") {\n          continue;\n        }\n        attributesArray.push(\" \" + attrName + '=\"' + attr.value + '\"');\n      }\n    } else {\n      for (attrName in attributes) {\n        if (attrName === \"data-marko-const\") {\n          continue;\n        }\n\n        var attrValue = attributes[attrName];\n        if (typeof attrValue !== \"string\") {\n          if (attrValue === true) {\n            attrValue = \"\";\n          } else if (attrValue == null || attrValue === false) {\n            continue;\n          }\n        }\n\n        if (attrName === \"xlink:href\") {\n          attrName = \"http://www.w3.org/1999/xlink:href\";\n        }\n        attributesArray.push(\" \" + attrName + '=\"' + attrValue + '\"');\n      }\n    }\n\n    attributesArray.sort();\n\n    html += attributesArray.join(\"\");\n\n    html += \">\\n\";\n\n    if (tagName.toUpperCase() === \"TEXTAREA\") {\n      html +=\n        indent +\n        \"  VALUE: \" +\n        JSON.stringify(ltrim(el.value || el.___textContent)) +\n        \"\\n\";\n    } else {\n      var curChild = getFirstChild(el);\n      while (curChild) {\n        serializeHelper(curChild, indent + \"  \");\n        curChild = getNextSibling(curChild);\n      }\n    }\n  }\n\n  function serializeTextHelper(node, indent) {\n    html +=\n      indent +\n      JSON.stringify(\n        getNodeValue(node).replace(/s\\d+(-\\d+)*/g, \"s-normalized\"),\n      ) +\n      \"\\n\";\n  }\n\n  function serializeCommentHelper(node, indent) {\n    html +=\n      indent +\n      \"<!--\" +\n      JSON.stringify(\n        getNodeValue(node).replace(/s\\d+(-\\d+)*/g, \"s-normalized\"),\n      ) +\n      \"-->\\n\";\n  }\n\n  if (\n    getNodeType(node) === 11 /* DocumentFragment */ ||\n    (options && options.childrenOnly)\n  ) {\n    var curChild = getFirstChild(node);\n\n    while (curChild) {\n      serializeHelper(curChild, \"\");\n      curChild = getNextSibling(curChild);\n    }\n  } else {\n    serializeHelper(node, \"\");\n  }\n\n  return html;\n}\n\nmodule.exports = vdomToHTML;\n"
  },
  {
    "path": "packages/runtime-class/test/__util__/package.json",
    "content": "{\n  \"browser\": {\n    \"./test-init.js\": \"./test-init-browser.js\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/__util__/patch-module.js",
    "content": "var fs = require(\"fs\");\nvar Module = require(\"module\").Module;\nvar nodePath = require(\"path\");\n\nvar oldResolveFilename = Module._resolveFilename;\n\nvar isDebug = require(\"../../env\").isDebug;\n\nvar rootDir = nodePath.join(__dirname, \"../../\");\nvar markoDir = isDebug\n  ? nodePath.join(rootDir, \"src\")\n  : nodePath.join(rootDir, \"dist\");\n\ntry {\n  var markoInstalledDir = nodePath.dirname(require.resolve(\"marko\"));\n  if (fs.existsSync(markoInstalledDir)) {\n    fs.renameSync(\n      markoInstalledDir,\n      markoInstalledDir.replace(\"node_modules/marko\", \"node_modules/~marko\"),\n    );\n  }\n} catch (e) {\n  // ignore error\n}\n\nModule._resolveFilename = function (request, parent, isMain) {\n  if (request.charAt(0) !== \".\" && parent?.filename.startsWith(rootDir)) {\n    if (\n      request === \"marko/components\" ||\n      request === \"marko/env\" ||\n      request.startsWith(\"marko/dist/\") ||\n      request.startsWith(\"marko/src/\") ||\n      request.startsWith(\"marko/helpers/\")\n    ) {\n      request = nodePath.join(rootDir, request.substring(\"marko/\".length));\n    } else if (request === \"marko\") {\n      request = rootDir;\n    } else if (\n      request !== \"marko/package.json\" &&\n      request.startsWith(\"marko/\")\n    ) {\n      request = nodePath.join(markoDir, request.substring(\"marko/\".length));\n    }\n  }\n\n  return oldResolveFilename.call(this, request, parent, isMain);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/__util__/pubsub.js",
    "content": "var EventEmitter = require(\"events\").EventEmitter;\n\nvar channels = {};\n\nmodule.exports = exports = new EventEmitter();\n\nexports.channel = function (name) {\n  return channels[name] || (channels[name] = new EventEmitter());\n};\n"
  },
  {
    "path": "packages/runtime-class/test/__util__/test-init-browser.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/__util__/test-init.js",
    "content": "require(\"./patch-module\");\nrequire(\"../../node-require\").install({\n  extensions: [\".marko\", \".html\"],\n});\nrequire(\"it-fails\");\n"
  },
  {
    "path": "packages/runtime-class/test/__util__/toHTML.js",
    "content": "function getNodeType(node) {\n  return node.nodeType || node.___nodeType;\n}\n\nfunction getNodeValue(node) {\n  return node.___nodeValue || node.nodeValue;\n}\n\nfunction getFirstChild(node) {\n  return node.___firstChild || node.firstChild;\n}\n\nfunction getNextSibling(node) {\n  return node.___nextSibling || node.nextSibling;\n}\n\nfunction toHTML(node) {\n  // NOTE: We don't use XMLSerializer because we need to sort the attributes to correctly compare output HTML strings\n  // BAD: return (new XMLSerializer()).serializeToString(node);\n  var html = \"\";\n  function serializeHelper(node, indent) {\n    var nodeType = getNodeType(node);\n\n    if (nodeType === 1) {\n      serializeElHelper(node, indent);\n    } else if (nodeType === 3) {\n      serializeTextHelper(node, indent);\n    } else if (nodeType === 8) {\n      serializeCommentHelper(node, indent);\n    } else {\n      html += indent + `INVALID NODE TYPE ${nodeType}\\n`;\n      // throw new Error('Unexpected node type');\n    }\n  }\n\n  function serializeElHelper(el, indent) {\n    var tagName = el.nodeName || el.___nodeName;\n\n    var elNamespaceURI = el.namespaceURI || el.___namespaceURI;\n\n    if (elNamespaceURI === \"http://www.w3.org/2000/svg\") {\n      tagName = \"svg:\" + tagName;\n    } else if (elNamespaceURI === \"http://www.w3.org/1998/Math/MathML\") {\n      tagName = \"math:\" + tagName;\n    }\n\n    html += indent + \"<\" + tagName;\n\n    var attributes = el.attributes || el.___attributes;\n    var attributesArray = [];\n    var attrName;\n\n    if (typeof attributes.length === \"number\") {\n      for (var i = 0; i < attributes.length; i++) {\n        var attr = attributes[i];\n        if (attr.namespaceURI) {\n          attrName = attr.namespaceURI + \":\" + attr.localName;\n        } else {\n          attrName = attr.name;\n        }\n        attributesArray.push(\" \" + attrName + '=\"' + attr.value + '\"');\n      }\n    } else {\n      for (attrName in attributes) {\n        var attrValue = attributes[attrName];\n        if (typeof attrValue !== \"string\") {\n          if (attrValue === true) {\n            attrValue = \"\";\n          } else if (!attrValue) {\n            continue;\n          }\n        }\n\n        if (attrName === \"xlink:href\") {\n          attrName = \"http://www.w3.org/1999/xlink:href\";\n        }\n        attributesArray.push(\" \" + attrName + '=\"' + attrValue + '\"');\n      }\n    }\n\n    attributesArray.sort();\n\n    html += attributesArray.join(\"\");\n\n    html += \">\\n\";\n\n    if (tagName.toUpperCase() === \"TEXTAREA\") {\n      html +=\n        indent +\n        \"  VALUE: \" +\n        JSON.stringify(el.value || el.___textContent) +\n        \"\\n\";\n    } else {\n      var curChild = getFirstChild(el);\n      while (curChild) {\n        serializeHelper(curChild, indent + \"  \");\n        curChild = getNextSibling(curChild);\n      }\n    }\n\n    // var childNodes = el.childNodes;\n    //\n    // if (childNodes && childNodes.length) {\n    //     for (i=0; i<childNodes.length; i++) {\n    //         serializeHelper(childNodes[i], indent + '  ');\n    //     }\n    // }\n  }\n\n  function serializeTextHelper(node, indent) {\n    html += indent + JSON.stringify(getNodeValue(node)) + \"\\n\";\n  }\n\n  function serializeCommentHelper(node, indent) {\n    html += indent + \"<!--\" + JSON.stringify(getNodeValue(node)) + \"-->\\n\";\n  }\n\n  if (getNodeType(node) === 11 /* DocumentFragment */) {\n    var curChild = getFirstChild(node);\n    while (curChild) {\n      serializeHelper(curChild, \"\");\n      curChild = getNextSibling(curChild);\n    }\n  } else {\n    serializeHelper(node, \"\");\n  }\n\n  return html;\n}\n\nmodule.exports = toHTML;\n"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/error-renderSync/template.marko",
    "content": "$ throw new Error('Test');"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/error-renderSync/test.js",
    "content": "var nodePath = require(\"path\");\n\nexports.check = function (marko, markoCompiler, expect, helpers, done) {\n  var template = marko.load(nodePath.join(__dirname, \"template.marko\"));\n  var output;\n  var e;\n\n  try {\n    output = template.renderSync();\n  } catch (_e) {\n    e = _e;\n  }\n\n  expect(output).to.equal(undefined);\n  expect(e).to.not.equal(undefined);\n  done();\n};\n"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/error-renderSync-beginAsync/template.marko",
    "content": "<await(data.nameDataProvider)>\n    <@then|name|>Hello ${name}!</@then>\n</await>"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/error-renderSync-beginAsync/test.js",
    "content": "var nodePath = require(\"path\");\nvar promiseProvider =\n  require(\"../../../__util__/async-helpers\").promiseProvider;\n\nexports.check = function (marko, markoCompiler, expect, helpers, done) {\n  var template = marko.load(nodePath.join(__dirname, \"template.marko\"));\n  var output;\n  var e;\n\n  try {\n    output = template.renderSync({\n      nameDataProvider: promiseProvider(1, \"John\"),\n    });\n  } catch (_e) {\n    e = _e;\n  }\n\n  expect(output).to.equal(undefined);\n  expect(e).to.not.equal(undefined);\n  done();\n};\n"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/load-render-callback/expected.html",
    "content": "Hello John!"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/load-render-callback/template.marko",
    "content": "-- Hello ${data.name}!\n"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/load-render-callback/test.js",
    "content": "var nodePath = require(\"path\");\n\nexports.check = function (marko, markoCompiler, expect, snapshot, done) {\n  var template = marko.load(nodePath.join(__dirname, \"template.marko\"));\n  template.renderToString(\n    {\n      name: \"John\",\n    },\n    function (err, html) {\n      if (err) {\n        return done(err);\n      }\n\n      snapshot(html);\n      done();\n    },\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/load-render-promise/expected.html",
    "content": "Hello John!"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/load-render-promise/template.marko",
    "content": "-- Hello ${data.name}!"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/load-render-promise/test.js",
    "content": "\"use strict\";\n\nconst nodePath = require(\"path\");\n\nexports.check = function (marko, markoCompiler, expect, snapshot, done) {\n  let template = marko.load(nodePath.join(__dirname, \"template.marko\"));\n\n  template\n    .render({\n      name: \"John\",\n    })\n    .then((result) => {\n      snapshot(result.toString());\n      done();\n    })\n    .catch((err) => {\n      done(err);\n    });\n};\n"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/load-source/custom-options-expected.html",
    "content": "<missing-tag></missing-tag>"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/load-source/empty-options-expected.html",
    "content": "Hello Frank!"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/load-source/invalid-template.marko",
    "content": "<missing-tag/>\n"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/load-source/no-options-expected.html",
    "content": "Hello Frank!"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/load-source/test.js",
    "content": "var nodePath = require(\"path\");\n\nexports.check = function (marko, markoCompiler, expect, snapshot, done) {\n  var template;\n  var templatePath;\n\n  // Make sure calling load with templatePath:String, templateSrc:String arguments works\n  templatePath = nodePath.join(__dirname, \"dummy.marko\");\n  template = marko.load(templatePath, \"-- Hello $!{data.name}!\");\n  snapshot(template.renderSync({ name: \"Frank\" }).toString(), {\n    name: \"no-options\",\n  });\n\n  // Make sure calling load with templatePath:String, templateSrc:String, options:Object arguments works\n  templatePath = nodePath.join(__dirname, \"dummy.marko\");\n  template = marko.load(templatePath, \"-- Hello $!{data.name}!\", {});\n  snapshot(template.renderSync({ name: \"Frank\" }).toString(), {\n    name: \"empty-options\",\n  });\n\n  // Make sure calling load with templatePath:String, options:Object arguments works\n  templatePath = nodePath.join(__dirname, \"invalid-template.marko\");\n\n  template = marko.load(templatePath, { ignoreUnrecognizedTags: true });\n  expect(template.render).to.be.a(\"function\");\n  snapshot(template.renderSync({}).toString(), { name: \"custom-options\" });\n  done();\n};\n"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/no-write-to-disk-load/expected.html",
    "content": "Hello Frank!"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/no-write-to-disk-load/template.marko",
    "content": "-- Hello ${data.name}!\n"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/no-write-to-disk-load/test.js",
    "content": "var fs = require(\"fs\");\nvar nodePath = require(\"path\");\n\nexports.check = function (marko, markoCompiler, expect, snapshot, done) {\n  markoCompiler.defaultOptions.writeToDisk = false;\n  try {\n    var templatePath = nodePath.join(__dirname, \"template.marko\");\n    var compiledPath = nodePath.join(__dirname, \"template.marko.js\");\n    var template = marko.load(templatePath);\n    expect(fs.existsSync(compiledPath)).to.equal(false);\n    expect(template.render).to.be.a(\"function\");\n    snapshot(template.renderSync({ name: \"Frank\" }).toString());\n  } finally {\n    markoCompiler.defaultOptions.writeToDisk = true;\n  }\n\n  done();\n};\n"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/no-write-to-disk-require/expected.html",
    "content": "Hello Frank!"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/no-write-to-disk-require/template.marko",
    "content": "-- Hello ${data.name}!\n"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/no-write-to-disk-require/test.js",
    "content": "var fs = require(\"fs\");\nvar nodePath = require(\"path\");\n\nexports.check = function (marko, markoCompiler, expect, snapshot, done) {\n  markoCompiler.defaultOptions.writeToDisk = false;\n  try {\n    var templatePath = nodePath.join(__dirname, \"template.marko\");\n    var compiledPath = nodePath.join(__dirname, \"template.marko.js\");\n    var template = require(templatePath).default;\n    expect(fs.existsSync(compiledPath)).to.equal(false);\n    expect(template.render).to.be.a(\"function\");\n    snapshot(template.renderSync({ name: \"Frank\" }).toString());\n  } finally {\n    markoCompiler.defaultOptions.writeToDisk = true;\n  }\n\n  done();\n};\n"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/render-await-client-reorder-unhandled-rejected-promise/template.marko",
    "content": "<div>\n    <await(input.userPromise) client-reorder>\n        <@then|user|>Hello ${user.name}!</@then>\n    </await>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/render-await-client-reorder-unhandled-rejected-promise/test.js",
    "content": "var nodePath = require(\"path\");\nvar promiseProvider =\n  require(\"../../../__util__/async-helpers\").promiseProvider;\n\nexports.check = function (marko, markoCompiler, expect, snapshot, done) {\n  var template = marko.load(nodePath.join(__dirname, \"template.marko\"));\n  var out = template.createOut();\n\n  template.render(\n    {\n      userPromise: promiseProvider(1, new Error(\"User Promise Rejected Error\")),\n    },\n    out,\n  );\n\n  out.on(\"error\", (err) => {\n    expect(err.message.indexOf(\"User Promise Rejected Error\") !== -1).to.equal(\n      true,\n    );\n    done();\n  });\n};\n"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/render-await-promise-toString/expected.html",
    "content": "<div>Hello John!</div>"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/render-await-promise-toString/template.marko",
    "content": "<div>\n    <await(input.userPromise)>\n        <@then|user|>Hello ${user.name}!</@then>\n    </await>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/render-await-promise-toString/test.js",
    "content": "var nodePath = require(\"path\");\nvar promiseProvider =\n  require(\"../../../__util__/async-helpers\").promiseProvider;\n\nexports.check = function (marko, markoCompiler, expect, snapshot, done) {\n  var template = marko.load(nodePath.join(__dirname, \"template.marko\"));\n\n  template\n    .render({\n      userPromise: promiseProvider(1, { name: \"John\" }),\n    })\n    .then((result) => {\n      process.nextTick(() => {\n        snapshot(result.toString());\n        done();\n      });\n    });\n};\n"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/render-callback-args/expected.2.html",
    "content": "\"TBD\""
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/render-callback-args/expected.html",
    "content": "Hello John!"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/render-callback-args/template.marko",
    "content": "-- Hello ${data.name}!\n"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/render-callback-args/test.js",
    "content": "exports.check = function (marko, markoCompiler, expect, snapshot, done) {\n  var template = require(\"./template.marko\").default;\n  var data = {\n    name: \"John\",\n  };\n  template.renderToString(data, function (error, html, out) {\n    snapshot(html);\n    expect(out != null).to.equal(true);\n    done();\n  });\n};\n"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/render-callback-global-data/expected.html",
    "content": "Greetings John!"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/render-callback-global-data/template.marko",
    "content": "-- ${out.global.greeting} ${data.name}!\n"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/render-callback-global-data/test.js",
    "content": "var nodePath = require(\"path\");\n\nexports.check = function (marko, markoCompiler, expect, snapshot, done) {\n  var template = marko.load(nodePath.join(__dirname, \"template.marko\"));\n  var data = {\n    name: \"John\",\n    $global: {\n      greeting: \"Greetings\",\n    },\n  };\n  template.render(data, function (error, result) {\n    snapshot(result.toString());\n    done();\n  });\n};\n"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/render-readable-stream-global-data/expected.html",
    "content": "bar"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/render-readable-stream-global-data/template.marko",
    "content": "-- ${out.global.foo}"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/render-readable-stream-global-data/test.js",
    "content": "var nodePath = require(\"path\");\nvar through = require(\"through\");\n\nexports.check = function (marko, markoCompiler, expect, snapshot, done) {\n  var output = \"\";\n\n  var stream = through(function write(data) {\n    output += data;\n  });\n\n  stream\n    .on(\"end\", function () {\n      snapshot(output);\n      done();\n    })\n    .on(\"error\", function (e) {\n      done(e);\n    });\n\n  var template = marko.load(nodePath.join(__dirname, \"template.marko\"));\n  template\n    .stream({\n      $global: {\n        foo: \"bar\",\n      },\n    })\n    .pipe(stream);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/render-to-out-error/template.marko",
    "content": "-- Hello ${data.name.invalid()}!\n"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/render-to-out-error/test.js",
    "content": "var nodePath = require(\"path\");\n\nexports.check = function (marko, markoCompiler, expect, helpers, done) {\n  var template = marko.load(nodePath.join(__dirname, \"template.marko\"));\n  var out = template.createOut();\n  var events = [];\n  var error;\n\n  out\n    .on(\"error\", function (_error) {\n      events.push(\"error\");\n      error = _error;\n    })\n    .on(\"finish\", function () {\n      events.push(\"finish\");\n\n      expect(events).to.deep.equal([\"error\", \"finish\"]);\n      expect(error != null).to.equal(true);\n      expect(error.toString()).to.contain(\"invalid\");\n\n      done();\n    });\n  template.render({ name: \"John\" }, out);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/render-writable-stream-global-data/expected.html",
    "content": "bar"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/render-writable-stream-global-data/template.marko",
    "content": "-- ${out.global.foo}"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/render-writable-stream-global-data/test.js",
    "content": "var nodePath = require(\"path\");\nvar through = require(\"through\");\n\nexports.check = function (marko, markoCompiler, expect, snapshot, done) {\n  var output = \"\";\n\n  var stream = through(function write(data) {\n    output += data;\n  });\n\n  stream\n    .on(\"end\", function () {\n      snapshot(output);\n      done();\n    })\n    .on(\"error\", function (e) {\n      done(e);\n    });\n\n  var template = marko.load(nodePath.join(__dirname, \"template.marko\"));\n  template.render(\n    {\n      $global: {\n        foo: \"bar\",\n      },\n    },\n    stream,\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/renderSync/expected.html",
    "content": "Hello John!"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/renderSync/template.marko",
    "content": "-- Hello ${data.name}!"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/renderSync/test.js",
    "content": "var nodePath = require(\"path\");\n\nexports.check = function (marko, markoCompiler, expect, snapshot, done) {\n  var template = marko.load(nodePath.join(__dirname, \"template.marko\"));\n  var result = template.renderSync({ name: \"John\" });\n  snapshot(result.toString());\n  done();\n};\n"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/renderSync-global-data/expected.html",
    "content": "Greetings John!"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/renderSync-global-data/template.marko",
    "content": "-- ${out.global.greeting} ${data.name}!"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/renderSync-global-data/test.js",
    "content": "var nodePath = require(\"path\");\n\nexports.check = function (marko, markoCompiler, expect, snapshot, done) {\n  var template = marko.load(nodePath.join(__dirname, \"template.marko\"));\n  var data = {\n    name: \"John\",\n    $global: {\n      greeting: \"Greetings\",\n    },\n  };\n  var result = template.renderSync(data);\n  snapshot(result.toString());\n  done();\n};\n"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/renderSync-no-data/expected.html",
    "content": "Hello!"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/renderSync-no-data/template.marko",
    "content": "-- Hello!"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/renderSync-no-data/test.js",
    "content": "var nodePath = require(\"path\");\n\nexports.check = function (marko, markoCompiler, expect, snapshot, done) {\n  var template = marko.load(nodePath.join(__dirname, \"template.marko\"));\n  var result = template.renderSync();\n  snapshot(result.toString());\n  done();\n};\n"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/renderToString/expected.html",
    "content": "Hello John!"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/renderToString/template.marko",
    "content": "-- Hello ${data.name}!"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/renderToString/test.js",
    "content": "var nodePath = require(\"path\");\n\nexports.check = function (marko, markoCompiler, expect, snapshot, done) {\n  var template = marko.load(nodePath.join(__dirname, \"template.marko\"));\n  var result = template.renderToString({ name: \"John\" });\n  snapshot(result);\n  done();\n};\n"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/renderToString-callback-async/components/test-async/renderer.js",
    "content": "var promiseProvider =\n  require(\"../../../../../__util__/async-helpers\").promiseProvider;\n\nmodule.exports = async function (input, out) {\n  var asyncOut = out.beginAsync();\n  await promiseProvider(1);\n  asyncOut.write(\"[async]\");\n  asyncOut.end();\n};\n"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/renderToString-callback-async/expected.html",
    "content": "Hello John![async]"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/renderToString-callback-async/template.marko",
    "content": "-- Hello ${data.name}!\n<test-async/>"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/renderToString-callback-async/test.js",
    "content": "var nodePath = require(\"path\");\n\nexports.check = function (marko, markoCompiler, expect, snapshot, done) {\n  var template = marko.load(nodePath.join(__dirname, \"template.marko\"));\n  template.renderToString({ name: \"John\" }, function (err, html) {\n    snapshot(html);\n    done();\n  });\n};\n"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/renderToString-callback-sync/expected.2.html",
    "content": "\"TBD\""
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/renderToString-callback-sync/expected.html",
    "content": "Hello John!"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/renderToString-callback-sync/template.marko",
    "content": "-- Hello ${data.name}!"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/renderToString-callback-sync/test.js",
    "content": "var nodePath = require(\"path\");\n\nexports.check = function (marko, markoCompiler, expect, snapshot, done) {\n  var template = marko.load(nodePath.join(__dirname, \"template.marko\"));\n  template.renderToString({ name: \"John\" }, function (err, html) {\n    snapshot(html);\n    done();\n  });\n};\n"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/renderToString-no-callback-async/components/test-async/renderer.js",
    "content": "module.exports = function (input, out) {\n  var asyncOut = out.beginAsync();\n  asyncOut.write(\"[async]\");\n  asyncOut.end();\n};\n"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/renderToString-no-callback-async/template.marko",
    "content": "-- Hello ${data.name}!\n<test-async/>"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/renderToString-no-callback-async/test.js",
    "content": "var nodePath = require(\"path\");\n\nexports.check = function (marko, markoCompiler, expect, helpers, done) {\n  var template = marko.load(nodePath.join(__dirname, \"template.marko\"));\n  expect(function () {\n    template.renderToString({ name: \"John\" });\n  }).to.throw(\"beginAsync() not allowed when using renderSync()\");\n  done();\n};\n"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/require-compiled-template/expected.html",
    "content": "Hello John!"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/require-compiled-template/template.marko",
    "content": "-- Hello ${data.name}!"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/require-compiled-template/test.js",
    "content": "var nodePath = require(\"path\");\n\nexports.check = function (marko, markoCompiler, expect, snapshot, done) {\n  // Load the JS file to ensure the hello.marko.js file is created\n  marko.load(nodePath.join(__dirname, \"template.marko\"));\n\n  var template = require(nodePath.join(__dirname, \"template.marko\")).default;\n  template.render(\n    {\n      name: \"John\",\n    },\n    function (err, result) {\n      if (err) {\n        return done(err);\n      }\n\n      snapshot(result.toString());\n      done();\n    },\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/require-hook-compiler-options/invalid.marko",
    "content": "<missing-tag/>\n"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/require-hook-compiler-options/test.js",
    "content": "var expect = require(\"chai\").expect;\nvar requireHook = require(\"../../../../node-require\");\n\nfunction compileAndCheck(path, shouldHaveErrored) {\n  var resolved = require.resolve(path);\n  var err;\n\n  try {\n    require(resolved);\n  } catch (_e) {\n    err = _e;\n  }\n\n  if (shouldHaveErrored) {\n    expect(err).is.an.instanceOf(Error);\n  } else {\n    expect(err).to.equal(undefined);\n  }\n}\n\nexports.check = function (marko, markoCompiler, expect, helpers, done) {\n  try {\n    requireHook.install({\n      compilerOptions: {\n        ignoreUnrecognizedTags: false,\n      },\n    }); // Reconfigure for testing\n\n    expect(markoCompiler.config.ignoreUnrecognizedTags).to.equal(false);\n\n    compileAndCheck(\"./invalid.marko\", true /* should error */);\n\n    requireHook.install({\n      compilerOptions: {\n        ignoreUnrecognizedTags: true,\n      },\n    });\n\n    expect(markoCompiler.config.ignoreUnrecognizedTags).to.equal(true);\n\n    compileAndCheck(\"./invalid.marko\", false /* should not error */);\n  } finally {\n    markoCompiler.configure(); // Reset to defaults\n    expect(markoCompiler.config.ignoreUnrecognizedTags).to.equal(false);\n    done();\n  }\n};\n"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/require-render-callback/expected.html",
    "content": "Hello John!"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/require-render-callback/template.marko",
    "content": "-- Hello ${data.name}!"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/require-render-callback/test.js",
    "content": "var nodePath = require(\"path\");\n\nexports.check = function (marko, markoCompiler, expect, snapshot, done) {\n  var templatePath = nodePath.join(__dirname, \"template.marko\");\n  var template = require(templatePath).default;\n  template.render(\n    {\n      name: \"John\",\n    },\n    function (err, result) {\n      if (err) {\n        return done(err);\n      }\n\n      snapshot(result.toString());\n      done();\n    },\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/require-render-to-stream/expected.html",
    "content": "Hello John!"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/require-render-to-stream/template.marko",
    "content": "-- Hello ${data.name}!"
  },
  {
    "path": "packages/runtime-class/test/api/fixtures/require-render-to-stream/test.js",
    "content": "var through = require(\"through\");\n\nexports.check = function (marko, markoCompiler, expect, snapshot, done) {\n  var output = \"\";\n  var outStream = through(function write(data) {\n    output += data;\n  });\n\n  outStream.on(\"end\", function () {\n    snapshot(output);\n    done();\n  });\n\n  var template = require(\"./template.marko\").default;\n  template\n    .stream({\n      name: \"John\",\n    })\n    .pipe(outStream)\n    .on(\"error\", function (e) {\n      done(e);\n    });\n};\n"
  },
  {
    "path": "packages/runtime-class/test/api/index.test.js",
    "content": "\"use strict\";\n\nrequire(\"../__util__/test-init\");\n\nvar chai = require(\"chai\");\nchai.config.includeStack = true;\n\nvar expect = require(\"chai\").expect;\nrequire(\"../../compiler\");\nvar autotest = require(\"mocha-autotest\").default;\nvar marko = require(\"../../\");\nvar markoCompiler = require(\"../../compiler\");\n\nautotest(\"fixtures\", (fixture) => {\n  let test = fixture.test;\n  let resolve = fixture.resolve;\n  let snapshot = fixture.snapshot;\n  test((done) => {\n    require(resolve(\"test.js\")).check(\n      marko,\n      markoCompiler,\n      expect,\n      snapshot,\n      done,\n    );\n  });\n});\n"
  },
  {
    "path": "packages/runtime-class/test/api-compiler/fixtures/compileFileForBrowser-callback.js/expected.js",
    "content": "\"use strict\";exports.__esModule = true;exports.default = void 0;var _index = require(\"marko/src/runtime/vdom/index.js\");var _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));var _registry = require(\"marko/src/runtime/components/registry.js\");var _defineComponent = _interopRequireDefault(require(\"marko/src/runtime/components/defineComponent.js\"));function _interopRequireDefault(e) {return e && e.__esModule ? e : { default: e };}const _marko_componentType = \"packages/runtime-class/test/api-compiler/fixtures/compileFileForBrowser-callback.js/template.marko\",_marko_template = (0, _index.t)(_marko_componentType);var _default = exports.default = _marko_template;(0, _registry.r)(_marko_componentType, () => _marko_template);const _marko_component = {};_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {out.t(\"Hello \", _component);out.t(input.name, _component);out.t(\"!\", _component);}, { t: _marko_componentType, i: true, d: true }, _marko_component);_marko_template.Component = (0, _defineComponent.default)(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/api-compiler/fixtures/compileFileForBrowser-callback.js/template.marko",
    "content": "-- Hello ${data.name}!"
  },
  {
    "path": "packages/runtime-class/test/api-compiler/fixtures/compileFileForBrowser-callback.js/test.js",
    "content": "var path = require(\"path\");\n\nexports.check = function (marko, markoCompiler, expect, snapshot, done) {\n  var compiler = require(\"marko/compiler\");\n  var templatePath = path.join(__dirname, \"template.marko\");\n\n  compiler.compileFileForBrowser(\n    templatePath,\n    {\n      writeVersionComment: false,\n    },\n    function (err, compiledTemplate) {\n      if (err) {\n        return done(err);\n      }\n      var code = compiledTemplate.code;\n      code = code.replace(/marko\\/dist\\//g, \"marko/src/\");\n\n      try {\n        snapshot(code, \".js\");\n        done();\n      } catch (err) {\n        done(err);\n      }\n    },\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/api-compiler/fixtures/compileFileForBrowser.js/expected.js",
    "content": "\"use strict\";exports.__esModule = true;exports.default = void 0;var _index = require(\"marko/src/runtime/vdom/index.js\");var _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));var _registry = require(\"marko/src/runtime/components/registry.js\");var _defineComponent = _interopRequireDefault(require(\"marko/src/runtime/components/defineComponent.js\"));function _interopRequireDefault(e) {return e && e.__esModule ? e : { default: e };}const _marko_componentType = \"packages/runtime-class/test/api-compiler/fixtures/compileFileForBrowser.js/template.marko\",_marko_template = (0, _index.t)(_marko_componentType);var _default = exports.default = _marko_template;(0, _registry.r)(_marko_componentType, () => _marko_template);const _marko_component = {};_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {out.t(\"Hello \", _component);out.t(input.name, _component);out.t(\"!\", _component);}, { t: _marko_componentType, i: true, d: true }, _marko_component);_marko_template.Component = (0, _defineComponent.default)(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/api-compiler/fixtures/compileFileForBrowser.js/template.marko",
    "content": "-- Hello ${data.name}!"
  },
  {
    "path": "packages/runtime-class/test/api-compiler/fixtures/compileFileForBrowser.js/test.js",
    "content": "var path = require(\"path\");\n\nexports.check = function (marko, markoCompiler, expect, snapshot, done) {\n  var compiler = require(\"marko/compiler\");\n  var templatePath = path.join(__dirname, \"template.marko\");\n\n  var compiledTemplate = compiler.compileFileForBrowser(templatePath, {\n    writeVersionComment: false,\n  });\n\n  var code = compiledTemplate.code;\n  code = code.replace(/marko\\/dist\\//g, \"marko/src/\");\n  snapshot(code, \".js\");\n\n  done();\n};\n"
  },
  {
    "path": "packages/runtime-class/test/api-compiler/fixtures/compileForBrowser-callback.js/expected.js",
    "content": "\"use strict\";exports.__esModule = true;exports.default = void 0;var _index = require(\"marko/src/runtime/vdom/index.js\");var _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));var _registry = require(\"marko/src/runtime/components/registry.js\");var _defineComponent = _interopRequireDefault(require(\"marko/src/runtime/components/defineComponent.js\"));function _interopRequireDefault(e) {return e && e.__esModule ? e : { default: e };}const _marko_componentType = \"packages/runtime-class/test/api-compiler/fixtures/compileForBrowser-callback.js/template.marko\",_marko_template = (0, _index.t)(_marko_componentType);var _default = exports.default = _marko_template;(0, _registry.r)(_marko_componentType, () => _marko_template);const _marko_component = {};_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {out.t(\"Hello \", _component);out.t(input.name, _component);out.t(\"!\", _component);}, { t: _marko_componentType, i: true, d: true }, _marko_component);_marko_template.Component = (0, _defineComponent.default)(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/api-compiler/fixtures/compileForBrowser-callback.js/template.marko",
    "content": "-- Hello ${data.name}!"
  },
  {
    "path": "packages/runtime-class/test/api-compiler/fixtures/compileForBrowser-callback.js/test.js",
    "content": "var fs = require(\"fs\");\nvar path = require(\"path\");\n\nexports.check = function (marko, markoCompiler, expect, snapshot, done) {\n  var compiler = require(\"marko/compiler\");\n  var templatePath = path.join(__dirname, \"template.marko\");\n\n  var templateSrc = fs.readFileSync(templatePath, { encoding: \"utf8\" });\n\n  compiler.compileForBrowser(\n    templateSrc,\n    templatePath,\n    {\n      writeVersionComment: false,\n    },\n    function (err, compiledTemplate) {\n      if (err) {\n        return done(err);\n      }\n\n      try {\n        var code = compiledTemplate.code;\n        code = code.replace(/marko\\/dist\\//g, \"marko/src/\");\n        snapshot(code, \".js\");\n        done();\n      } catch (err) {\n        done(err);\n      }\n    },\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/api-compiler/fixtures/compileForBrowser-write-version-comment.js/template.marko",
    "content": "-- Hello ${data.name}!"
  },
  {
    "path": "packages/runtime-class/test/api-compiler/fixtures/compileForBrowser-write-version-comment.js/test.js",
    "content": "var fs = require(\"fs\");\nvar path = require(\"path\");\nvar markoVersion = require(\"../../../../package.json\").version;\n\nfunction getMarkoVersionComment() {\n  return \"Compiled using marko@\" + markoVersion + \" - DO NOT EDIT\";\n}\n\nexports.check = function (marko, markoCompiler, expect, helpers, done) {\n  var compiler = require(\"marko/compiler\");\n  var templatePath = path.join(__dirname, \"template.marko\");\n\n  var templateSrc = fs.readFileSync(templatePath, { encoding: \"utf8\" });\n\n  var compiledTemplate = compiler.compileForBrowser(templateSrc, templatePath);\n\n  expect(compiledTemplate.code).to.include(getMarkoVersionComment());\n\n  done();\n};\n"
  },
  {
    "path": "packages/runtime-class/test/api-compiler/fixtures/compileForBrowser.js/expected.js",
    "content": "\"use strict\";exports.__esModule = true;exports.default = void 0;var _index = require(\"marko/src/runtime/vdom/index.js\");var _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));var _registry = require(\"marko/src/runtime/components/registry.js\");var _defineComponent = _interopRequireDefault(require(\"marko/src/runtime/components/defineComponent.js\"));function _interopRequireDefault(e) {return e && e.__esModule ? e : { default: e };}const _marko_componentType = \"packages/runtime-class/test/api-compiler/fixtures/compileForBrowser.js/template.marko\",_marko_template = (0, _index.t)(_marko_componentType);var _default = exports.default = _marko_template;(0, _registry.r)(_marko_componentType, () => _marko_template);const _marko_component = {};_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {out.t(\"Hello \", _component);out.t(input.name, _component);out.t(\"!\", _component);}, { t: _marko_componentType, i: true, d: true }, _marko_component);_marko_template.Component = (0, _defineComponent.default)(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/api-compiler/fixtures/compileForBrowser.js/template.marko",
    "content": "-- Hello ${data.name}!"
  },
  {
    "path": "packages/runtime-class/test/api-compiler/fixtures/compileForBrowser.js/test.js",
    "content": "var fs = require(\"fs\");\nvar path = require(\"path\");\n\nexports.check = function (marko, markoCompiler, expect, snapshot, done) {\n  var compiler = require(\"marko/compiler\");\n  var templatePath = path.join(__dirname, \"template.marko\");\n\n  var templateSrc = fs.readFileSync(templatePath, { encoding: \"utf8\" });\n  var compiledTemplate = compiler.compileForBrowser(templateSrc, templatePath, {\n    writeVersionComment: false,\n  });\n\n  var code = compiledTemplate.code;\n  code = code.replace(/marko\\/dist\\//g, \"marko/src/\");\n\n  snapshot(code, \".js\");\n\n  done();\n};\n"
  },
  {
    "path": "packages/runtime-class/test/api-compiler/fixtures/configure/test.js",
    "content": "exports.check = function (marko, markoCompiler, expect, helpers, done) {\n  var compiler = require(\"marko/compiler\");\n  compiler.configure(); // Use defaults\n  expect(compiler.config.writeVersionComment).to.equal(true);\n  expect(compiler.config.ignoreUnrecognizedTags).to.equal(false);\n\n  compiler.configure({\n    ignoreUnrecognizedTags: true,\n  });\n  expect(compiler.config.writeVersionComment).to.equal(true);\n  expect(compiler.config.ignoreUnrecognizedTags).to.equal(true);\n\n  compiler.configure(); // Use defaults\n  expect(compiler.config.writeVersionComment).to.equal(true);\n  expect(compiler.config.ignoreUnrecognizedTags).to.equal(false);\n  done();\n};\n"
  },
  {
    "path": "packages/runtime-class/test/api-compiler/fixtures/configure-singleton/test.js",
    "content": "exports.check = function (marko, markoCompiler, expect, helpers, done) {\n  var configModulePath = require.resolve(\"marko/compiler/config\");\n  var config = require(configModulePath);\n\n  var globalConfig = global.__MARKO_CONFIG;\n  expect(config).to.equal(globalConfig);\n\n  delete require.cache[configModulePath];\n\n  config = require(configModulePath);\n  expect(config).to.equal(globalConfig);\n\n  done();\n};\n"
  },
  {
    "path": "packages/runtime-class/test/api-compiler/index.test.js",
    "content": "\"use strict\";\n\nrequire(\"../__util__/test-init\");\n\nvar chai = require(\"chai\");\nchai.config.includeStack = true;\nvar expect = require(\"chai\").expect;\nrequire(\"../../compiler\");\nvar autotest = require(\"mocha-autotest\").default;\nvar marko = require(\"../../\");\nvar markoCompiler = require(\"../../compiler\");\n\nautotest(\"fixtures\", (fixture) => {\n  let test = fixture.test;\n  let resolve = fixture.resolve;\n  let snapshot = fixture.snapshot;\n  test((done) => {\n    require(resolve(\"test.js\")).check(\n      marko,\n      markoCompiler,\n      expect,\n      snapshot,\n      done,\n    );\n  });\n});\n"
  },
  {
    "path": "packages/runtime-class/test/async-stream/fixtures/hello.txt",
    "content": "Hello World"
  },
  {
    "path": "packages/runtime-class/test/async-stream/index.test.js",
    "content": "\"use strict\";\n\nrequire(\"../__util__/test-init\");\nvar fs = require(\"fs\");\nvar nodePath = require(\"path\");\nvar chai = require(\"chai\");\nchai.config.includeStack = true;\n\nvar expect = chai.expect;\nvar fsReadOptions = { encoding: \"utf8\" };\nvar AsyncStream = require(\"marko/runtime/html/AsyncStream\");\n\n/* DEBUG INFO:\n   ===========\n   Want pretty debug statements and diagrams?\n   Uncomment the following statement: */\n\n// var asyncWriter = require('../debug');\n\nfunction createAsyncStream(options) {\n  if (typeof options.write === \"function\") {\n    return new AsyncStream(null, options);\n  } else if (typeof options === \"object\") {\n    var name = options.name;\n    var globalData = options.global;\n    var out = new AsyncStream(globalData);\n    if (name) {\n      out.name = name;\n    }\n    return out;\n  } else {\n    return new AsyncStream();\n  }\n}\n\ndescribe(\"AsyncStream\", function () {\n  beforeEach(function (done) {\n    // for (var k in require.cache) {\n    //     if (require.cache.hasOwnProperty(k)) {\n    //         delete require.cache[k];\n    //     }\n    // }\n\n    done();\n  });\n\n  it(\"should render a series of sync calls correctly\", function (done) {\n    var out = new AsyncStream();\n    out.write(\"1\");\n    out.write(\"2\");\n    out.write(\"3\");\n    out.write(\"4\");\n    out.end();\n    out.on(\"finish\", function (result) {\n      var output = result.getOutput();\n      expect(output).to.equal(\"1234\");\n      done();\n    });\n  });\n\n  it(\"should resolve promise upon finish\", function () {\n    var out = new AsyncStream();\n\n    out.write(\"1\");\n    out.write(\"2\");\n\n    return out.end().then((result) => {\n      const output = result.getOutput();\n      expect(output).to.equal(\"12\");\n      expect(result.toString()).to.equal(\"12\");\n    });\n  });\n\n  it(\"should render a series of sync and async calls correctly\", function (done) {\n    var out = new AsyncStream();\n    out.write(\"1\");\n\n    var asyncOut1 = out.beginAsync();\n    setTimeout(function () {\n      asyncOut1.write(\"2\");\n      asyncOut1.end();\n    }, 100);\n\n    out.write(\"3\");\n\n    var asyncOut2 = out.beginAsync();\n    setTimeout(function () {\n      asyncOut2.write(\"4\");\n      asyncOut2.end();\n    }, 10);\n\n    out.end();\n    out.on(\"finish\", function (result) {\n      var output = result.getOutput();\n      expect(output).to.equal(\"1234\");\n      done();\n    });\n  });\n\n  it(\"should allow an async fragment to complete synchronously\", function (done) {\n    var out = new AsyncStream();\n    out.write(\"1\");\n\n    var asyncOut = out.beginAsync();\n    setTimeout(function () {\n      asyncOut.write(\"2\");\n      asyncOut.end();\n    }, 10);\n\n    out.write(\"3\");\n    out.end();\n    out.on(\"finish\", function (result) {\n      var output = result.getOutput();\n      expect(output).to.equal(\"123\");\n      done();\n    });\n  });\n\n  it(\"should allow the async callback to provide data\", function (done) {\n    var out = new AsyncStream();\n    out.write(\"1\");\n\n    var asyncOut = out.beginAsync();\n    setTimeout(function () {\n      asyncOut.end(\"2\");\n    }, 10);\n\n    out.write(\"3\");\n    out.end();\n    out.on(\"finish\", function (result) {\n      var output = result.getOutput();\n      expect(output).to.equal(\"123\");\n      done();\n    });\n  });\n\n  it(\"should handle timeouts correctly\", function (done) {\n    var out = new AsyncStream();\n    var errors = [];\n    out.on(\"error\", function (e) {\n      errors.push(e);\n    });\n\n    out.write(\"1\");\n\n    var asyncOut = out.beginAsync({ timeout: 100, name: \"test\" });\n    setTimeout(function () {\n      asyncOut.write(\"2\");\n      asyncOut.end();\n    }, 200);\n\n    out.write(\"3\");\n    out.end();\n\n    out.on(\"finish\", function (result) {\n      expect(errors.length).to.equal(1);\n      expect(result.getOutput()).to.equal(\"13\");\n      done();\n    });\n  });\n\n  it(\"should render nested async calls correctly\", function (done) {\n    var out = new AsyncStream();\n    out.write(\"1\");\n\n    var asyncOut = out.beginAsync();\n    setTimeout(function () {\n      asyncOut.write(\"2a\");\n\n      var nestedAsyncContext = asyncOut.beginAsync();\n      setTimeout(function () {\n        nestedAsyncContext.write(\"2b\");\n        nestedAsyncContext.end();\n      }, 10);\n\n      asyncOut.write(\"2c\");\n      asyncOut.end();\n    }, 10);\n\n    out.write(\"3\");\n\n    var asyncOut2 = out.beginAsync();\n    setTimeout(function () {\n      var nestedAsyncContext = asyncOut2.beginAsync();\n      setTimeout(function () {\n        nestedAsyncContext.write(\"4a\");\n        nestedAsyncContext.end();\n      }, 10);\n\n      var nestedAsyncContext2 = asyncOut2.beginAsync();\n      setTimeout(function () {\n        nestedAsyncContext2.write(\"4b\");\n        nestedAsyncContext2.end();\n      }, 10);\n\n      asyncOut2.write(\"4c\");\n      asyncOut2.end();\n    }, 10);\n\n    out.end();\n    out.on(\"finish\", function (result) {\n      var output = result.getOutput();\n      expect(output).to.equal(\"12a2b2c34a4b4c\");\n      done();\n    });\n  });\n\n  it(\"should handle odd execution ordering\", function (done) {\n    var outA = createAsyncStream({ name: \"outA\" });\n\n    outA.on(\"finish\", function (result) {\n      var output = result.getOutput();\n      expect(output).to.equal(\"1234567\");\n      done();\n    });\n\n    outA.write(\"1\");\n\n    var outB = outA.beginAsync({ name: \"outB\" });\n\n    outA.write(\"3\");\n\n    var outC = outA.beginAsync({ name: \"outC\" });\n    var outD = outC.beginAsync({ name: \"outD\" });\n\n    outB.write(\"2\");\n    outB.end();\n\n    outA.write(\"7\");\n\n    outC.write(\"5\");\n\n    outD.write(\"4\");\n    outD.end();\n\n    outC.write(\"6\");\n    outC.end();\n\n    outA.end();\n  });\n\n  it(\"should handle sync errors correctly\", function (done) {\n    var out = new AsyncStream();\n    var errors = [];\n    out.on(\"error\", function (e) {\n      errors.push(e);\n    });\n\n    out.write(\"1\");\n\n    var asyncOut = out.beginAsync();\n    setTimeout(function () {\n      asyncOut.error(new Error(\"test\"));\n    }, 10);\n    out.write(\"3\");\n    out.end();\n    out.on(\"finish\", function (result) {\n      var output = result.getOutput();\n      expect(errors.length).to.equal(1);\n      expect(output).to.equal(\"13\");\n      done();\n    });\n  });\n\n  it(\"should catch error in promise catch\", function (done) {\n    const out = new AsyncStream();\n\n    let errors = [];\n\n    out.on(\"error\", function (e) {\n      errors.push(e);\n    });\n\n    out.write(\"1\");\n\n    let asyncOut = out.beginAsync();\n    setTimeout(function () {\n      asyncOut.error(new Error(\"test\"));\n    }, 10);\n\n    out.write(\"3\");\n    out.end().catch((err) => {\n      expect(errors.length).to.equal(1);\n      expect(err).to.be.an(\"error\");\n      done();\n    });\n  });\n\n  it(\"should catch error in promise catch if `error` listener only set inside mixin\", function (done) {\n    const out = new AsyncStream();\n\n    out\n      .catch((err) => {\n        expect(err).to.be.an(\"error\");\n        expect(out.getOutput()).to.equal(\"1\");\n        done();\n      })\n      .then(() => {\n        throw new Error(\"Should not get here!\");\n      });\n\n    out.write(\"1\");\n    out.error(new Error(\"test\"));\n    out.write(\"2\");\n  });\n\n  it(\"should support chaining\", function (done) {\n    var errors = [];\n    var out = new AsyncStream()\n      .on(\"error\", function (e) {\n        errors.push(e);\n      })\n      .on(\"finish\", function (result) {\n        var output = result.getOutput();\n        expect(errors.length).to.equal(1);\n        expect(output).to.equal(\"13\");\n        done();\n      })\n      .write(\"1\");\n\n    var asyncOut = out.beginAsync();\n    setTimeout(function () {\n      asyncOut.error(new Error(\"test\"));\n    }, 10);\n\n    out.write(\"3\").end();\n  });\n\n  it(\"should support writing to a through2 stream\", function (done) {\n    var output = \"\";\n    var through2 = require(\"through2\")(\n      function write(data, encoding, callback) {\n        output += data;\n        callback(null, data);\n      },\n    );\n\n    var errors = [];\n    var out = createAsyncStream(through2)\n      .on(\"error\", function (e) {\n        errors.push(e);\n      })\n      .on(\"finish\", function () {\n        expect(errors.length).to.equal(0);\n        expect(output).to.equal(\"123\");\n        done();\n      })\n      .write(\"1\");\n\n    var asyncOut = out.beginAsync();\n    setTimeout(function () {\n      asyncOut.write(\"2\");\n      asyncOut.end();\n    }, 10);\n\n    out.write(\"3\").end();\n  });\n\n  it(\"should support writing to a through stream\", function (done) {\n    var output = \"\";\n    var through = require(\"through\")(function write(data) {\n      output += data;\n      this.queue(data);\n    });\n\n    var errors = [];\n    var out = createAsyncStream(through)\n      .on(\"error\", function (e) {\n        errors.push(e);\n      })\n      .on(\"end\", function () {\n        expect(errors.length).to.equal(0);\n        expect(output).to.equal(\"123\");\n        done();\n      })\n      .write(\"1\");\n\n    var asyncOut = out.beginAsync();\n    setTimeout(function () {\n      asyncOut.write(\"2\");\n      asyncOut.end();\n    }, 10);\n\n    out.write(\"3\").end();\n  });\n\n  it(\"should support writing to a file output stream\", function (done) {\n    var outFile = nodePath.join(__dirname, \"test.out\");\n    var out = fs.createWriteStream(outFile, fsReadOptions);\n    var errors = [];\n\n    out.on(\"close\", function () {\n      var output = fs.readFileSync(outFile, fsReadOptions);\n      expect(errors.length).to.equal(0);\n      expect(output).to.equal(\"123\");\n      fs.unlinkSync(outFile);\n      done();\n    });\n\n    out = createAsyncStream(out)\n      .on(\"error\", function (e) {\n        errors.push(e);\n      })\n      .on(\"finish\", function () {})\n      .write(\"1\");\n\n    var asyncOut = out.beginAsync();\n    setTimeout(function () {\n      asyncOut.write(\"2\");\n      asyncOut.end();\n    }, 10);\n\n    out.write(\"3\").end();\n  });\n\n  it(\"should support piping to an async writer\", function (done) {\n    var out = new AsyncStream();\n    out.write(\"1\");\n\n    var asyncOut = out.beginAsync();\n\n    var helloReadStream = fs.createReadStream(\n      nodePath.join(__dirname, \"fixtures/hello.txt\"),\n      fsReadOptions,\n    );\n    helloReadStream.pipe(asyncOut);\n\n    out.write(\"2\");\n    out.end();\n    out.on(\"finish\", function (result) {\n      var output = result.getOutput();\n      expect(output).to.equal(\"1Hello World2\");\n      done();\n    });\n  });\n\n  it(\"should support a writer being piped to another stream\", function (done) {\n    var through = require(\"through\")();\n    var outStr = \"\";\n\n    var out = require(\"through\")(function write(str) {\n      outStr += str;\n    });\n\n    through.pipe(out).on(\"error\", function (e) {\n      done(e);\n    });\n\n    out = createAsyncStream(through);\n    out.write(\"1\");\n\n    var asyncOut = out.beginAsync();\n\n    var helloReadStream = fs.createReadStream(\n      nodePath.join(__dirname, \"fixtures/hello.txt\"),\n      fsReadOptions,\n    );\n    helloReadStream.pipe(asyncOut);\n\n    out.write(\"2\");\n\n    out.on(\"end\", function () {\n      expect(outStr).to.equal(\"1Hello World2\");\n      done();\n    });\n\n    out.end();\n  });\n\n  it(\"should allow an async fragment to flush last\", function (done) {\n    var out = new AsyncStream();\n    out.write(\"1\");\n\n    var asyncOut = out.beginAsync({ last: true });\n    out.once(\"last\", function () {\n      asyncOut.write(\"2\");\n      asyncOut.end();\n    });\n\n    out.write(\"3\");\n    out.end();\n    out.on(\"finish\", function (result) {\n      var output = result.getOutput();\n      expect(output).to.equal(\"123\");\n      done();\n    });\n  });\n\n  it(\"should allow an async fragment to flush last asynchronously\", function (done) {\n    var out = new AsyncStream();\n    out.write(\"1\");\n\n    var asyncOut = out.beginAsync({ last: true });\n    var lastFiredCount = 0;\n\n    out.on(\"last\", function () {\n      lastFiredCount++;\n    });\n\n    out.once(\"last\", function () {\n      setTimeout(function () {\n        asyncOut.write(\"2\");\n        asyncOut.end();\n      }, 10);\n    });\n\n    out.write(\"3\");\n    out.end();\n    out.on(\"finish\", function (result) {\n      expect(lastFiredCount).to.equal(1);\n      var output = result.getOutput();\n      expect(output).to.equal(\"123\");\n      done();\n    });\n  });\n\n  it(\"should not crash the program if the underlying stream has an error listener\", function (done) {\n    var stream = require(\"stream\");\n    var PassThrough = stream.PassThrough;\n    var passthrough = new PassThrough();\n\n    passthrough.on(\"error\", function () {\n      done();\n    });\n\n    var out = createAsyncStream(passthrough);\n    out.write(\"hello\");\n    out.error(\"test\");\n  });\n\n  it(\"should crash the program if the underlying stream does *not* have an error listener\", function (done) {\n    var stream = require(\"stream\");\n    var PassThrough = stream.PassThrough;\n    var passthrough = new PassThrough();\n\n    var out = createAsyncStream(passthrough);\n    out.write(\"hello\");\n    try {\n      out.error(\"test\");\n      done(\"uncaught exception expected\");\n    } catch (e) {\n      done();\n    }\n  });\n\n  it(\"should allow multiple onLast calls\", function (done) {\n    var out = new AsyncStream();\n    out.write(\"1\");\n\n    var asyncOut1 = out.beginAsync();\n    setTimeout(function () {\n      asyncOut1.write(\"2\");\n      asyncOut1.end();\n    }, 20);\n\n    var asyncOut2 = out.beginAsync({ last: true });\n    var onLastCount = 0;\n    var lastOutput = [];\n\n    out.onLast(function (next) {\n      onLastCount++;\n      lastOutput.push(\"a\");\n      asyncOut2.write(\"3\");\n      asyncOut2.end();\n      setTimeout(next, 10);\n    });\n\n    var asyncOut3 = out.beginAsync({ last: true });\n    out.onLast(function (next) {\n      onLastCount++;\n      lastOutput.push(\"b\");\n      asyncOut3.write(\"4\");\n      asyncOut3.end();\n      next();\n    });\n\n    out.write(\"5\");\n    out.end();\n    out.on(\"finish\", function (result) {\n      var output = result.getOutput();\n      expect(output).to.equal(\"12345\");\n      expect(onLastCount).to.equal(2);\n      expect(lastOutput).to.deep.equal([\"a\", \"b\"]);\n      done();\n    });\n  });\n\n  it(\"should handle timeout errors correctly\", function (done) {\n    var output = \"\";\n    var errors = [];\n\n    var through = require(\"through\")(function write(data) {\n      output += data;\n    })\n      .on(\"error\", function (err) {\n        errors.push(err);\n      })\n      .on(\"end\", function () {\n        expect(output).to.equal(\"12\");\n        expect(errors.length).to.equal(1);\n        expect(errors[0].toString()).to.contain(\"timed out\");\n        done();\n      });\n\n    var out = createAsyncStream(through);\n    out.write(\"1\");\n\n    var asyncOut1 = out.beginAsync();\n    out.beginAsync({ timeout: 50 });\n\n    setTimeout(function () {\n      asyncOut1.write(\"2\");\n      asyncOut1.end();\n    }, 100);\n\n    out.end();\n  });\n\n  it(\"should avoid writes after end (a)\", function (done) {\n    var output = \"\";\n    var errors = [];\n    var ended = false;\n\n    var through = require(\"through\")(function write(data) {\n      expect(ended).to.equal(false);\n      output += data;\n    })\n      .on(\"error\", function (err) {\n        errors.push(err);\n      })\n      .on(\"end\", function () {\n        ended = true;\n        expect(output).to.equal(\"13\");\n        done();\n      });\n\n    var out = createAsyncStream(through);\n    out.write(\"1\");\n\n    var asyncOut1 = out.beginAsync({ timeout: 50 });\n\n    setTimeout(function () {\n      asyncOut1.write(\"2\");\n      asyncOut1.end();\n    }, 100);\n\n    var asyncOut2 = out.beginAsync();\n    setTimeout(function () {\n      asyncOut2.write(\"3\");\n      asyncOut2.end();\n    }, 50);\n\n    out.end();\n  });\n\n  it(\"should avoid writes after end (b)\", function (done) {\n    var output = \"\";\n    var errors = [];\n    var ended = false;\n\n    var through = require(\"through\")(function write(data) {\n      expect(ended).to.equal(false);\n      output += data;\n    })\n      .on(\"error\", function (err) {\n        errors.push(err);\n      })\n      .on(\"end\", function () {\n        ended = true;\n        expect(output).to.equal(\"12\");\n        done();\n      });\n\n    var out = createAsyncStream(through);\n    out.write(\"1\");\n\n    var asyncOut1 = out.beginAsync();\n\n    setTimeout(function () {\n      asyncOut1.write(\"2\");\n      asyncOut1.end();\n    }, 75);\n\n    var asyncOut2 = out.beginAsync({ timeout: 50 });\n    // This async fragment will timeout but we will\n    // still write to it after it ends\n    setTimeout(function () {\n      asyncOut2.write(\"3\");\n      asyncOut2.end();\n    }, 100);\n\n    out.end();\n  });\n\n  it(\"should avoid writes after end (c)\", function (done) {\n    var output = \"\";\n    var errors = [];\n    var ended = false;\n\n    var through = require(\"through\")(function write(data) {\n      expect(ended).to.equal(false);\n      output += data;\n    })\n      .on(\"error\", function (err) {\n        errors.push(err);\n      })\n      .on(\"end\", function () {\n        ended = true;\n        expect(output).to.equal(\"12\");\n        expect(errors.length).to.equal(1);\n        done();\n      });\n\n    var out = createAsyncStream(through);\n    out.write(\"1\");\n\n    var asyncOut1 = out.beginAsync();\n\n    setTimeout(function () {\n      asyncOut1.write(\"2\");\n      asyncOut1.end();\n    }, 75);\n\n    var asyncOut2 = out.beginAsync();\n    // This async fragment will timeout but we will\n    // still write to it after it ends\n    setTimeout(function () {\n      asyncOut2.error(\"TEST ERROR\");\n      asyncOut2.end();\n    }, 100);\n\n    out.end();\n  });\n\n  it(\"should track finished correctly\", function (done) {\n    var myGlobal = {};\n\n    var out1 = createAsyncStream({ global: myGlobal });\n    var out2 = createAsyncStream({ global: myGlobal });\n\n    function handleFinished() {\n      if (out1.data.__finishedFlag && out2.data.__finishedFlag) {\n        done();\n      }\n    }\n\n    out1.on(\"finish\", function () {\n      if (out1.data.__finishedFlag) {\n        return done(new Error(\"finished invoked multiple times!\"));\n      }\n\n      out1.data.__finishedFlag = true;\n      handleFinished();\n    });\n    out2.on(\"finish\", function () {\n      if (out2.data.__finishedFlag) {\n        return done(new Error(\"finished invoked multiple times!\"));\n      }\n\n      out2.data.__finishedFlag = true;\n      handleFinished();\n    });\n\n    out1.write(\"foo\");\n    out1.end();\n    out1.end();\n\n    out2.write(\"bar\");\n    out2.end();\n  });\n\n  it(\"should end correctly if top-level is ended asynchronously\", function (done) {\n    var out = new AsyncStream();\n    out.name = \"outer\";\n\n    out.on(\"finish\", function (result) {\n      var output = result.getOutput();\n      expect(output).to.equal(\"123\");\n      done();\n    });\n\n    out.write(\"1\");\n\n    setTimeout(function () {\n      var asyncOut = out.beginAsync({ name: \"inner\" });\n      setTimeout(function () {\n        asyncOut.write(\"2\");\n        asyncOut.end();\n      }, 50);\n\n      out.write(\"3\");\n\n      out.end();\n    }, 10);\n  });\n\n  it(\"should end correctly if top-level is ended asynchronously when providing custom globals\", function (done) {\n    var out = createAsyncStream({ global: { foo: \"bar\" } });\n    out.name = \"outer\";\n\n    out.on(\"finish\", function (result) {\n      var output = result.getOutput();\n      expect(output).to.equal(\"123\");\n      done();\n    });\n\n    out.write(\"1\");\n\n    setTimeout(function () {\n      var asyncOut = out.beginAsync({ name: \"inner\" });\n      setTimeout(function () {\n        asyncOut.write(\"2\");\n        asyncOut.end();\n      }, 50);\n\n      out.write(\"3\");\n\n      out.end();\n    }, 10);\n  });\n\n  it(\"should support out.stream for accessing the original stream\", function (done) {\n    var through = require(\"through\");\n    var stream = through(function write() {});\n\n    var out = createAsyncStream(stream);\n    expect(out.stream).to.equal(stream);\n\n    var asyncOut1 = out.beginAsync();\n    expect(asyncOut1.stream).to.equal(stream);\n    setTimeout(function () {\n      expect(asyncOut1.stream).to.equal(stream);\n      asyncOut1.end();\n    }, 100);\n\n    var asyncOut2 = out.beginAsync();\n    expect(asyncOut2.stream).to.equal(stream);\n    setTimeout(function () {\n      expect(asyncOut2.stream).to.equal(stream);\n      asyncOut2.end();\n    }, 50);\n\n    out.on(\"end\", function () {\n      expect(out.stream).to.equal(stream);\n      expect(asyncOut1.stream).to.equal(stream);\n      expect(asyncOut2.stream).to.equal(stream);\n      done();\n    });\n\n    out.end();\n  });\n});\n"
  },
  {
    "path": "packages/runtime-class/test/async-vdom-builder/index.test.js",
    "content": "require(\"../__util__/test-init\");\nvar expect = require(\"chai\").expect;\nvar AsyncVDOMBuilder = require(\"marko/runtime/vdom/AsyncVDOMBuilder\");\nvar VElement = require(\"marko/runtime/vdom/VElement\");\n\nfunction getChildNodes(parentNode) {\n  var childNodes = [];\n\n  var curChild = parentNode.___firstChild;\n  while (curChild) {\n    childNodes.push(curChild);\n    curChild = curChild.___nextSibling;\n  }\n\n  return childNodes;\n}\ndescribe(\"AsyncVDOMBuilder\", function () {\n  it(\"sync\", function () {\n    var out = new AsyncVDOMBuilder();\n    out.element(\"div\", {}, 0);\n    var tree = out.___getOutput();\n    expect(getChildNodes(tree).length).to.equal(1);\n  });\n\n  it(\"end, then listen for finish\", function (done) {\n    var out = new AsyncVDOMBuilder();\n    out.element(\"div\", {}, 0);\n    out.end();\n    out.on(\"finish\", function (result) {\n      expect(getChildNodes(result.getOutput()).length).to.equal(1);\n      done();\n    });\n  });\n\n  it(\"async\", function (done) {\n    var out = new AsyncVDOMBuilder();\n    out.element(\"div\", {}, 0);\n    var asyncOut = out.beginAsync();\n\n    setTimeout(function () {\n      asyncOut.element(\"span\", {}, 0);\n      asyncOut.end();\n    }, 10);\n\n    out.element(\"section\", {}, 0);\n\n    out.end();\n    out.on(\"finish\", function (result) {\n      var tree = result.getOutput();\n      expect(getChildNodes(tree).length).to.equal(3);\n      expect(tree.___firstChild.___nodeName).to.equal(\"div\");\n      expect(tree.___firstChild.___nextSibling.___nodeName).to.equal(\"span\");\n      expect(\n        tree.___firstChild.___nextSibling.___nextSibling.___nodeName,\n      ).to.equal(\"section\");\n      done();\n    });\n  });\n\n  it(\"promise\", function (done) {\n    const out = new AsyncVDOMBuilder();\n    out.element(\"div\", {}, 0);\n    out\n      .end()\n      .then((result) => {\n        expect(getChildNodes(result.getOutput()).length).to.equal(1);\n        done();\n      })\n      .catch(done);\n  });\n\n  it(\"async flush\", function (done) {\n    var out = new AsyncVDOMBuilder();\n    out.on(\"update\", function (result) {\n      expect(getChildNodes(result.getOutput()).length).to.equal(1);\n    });\n    out.once(\"finish\", function (result) {\n      expect(getChildNodes(result.getOutput()).length).to.equal(2);\n      done();\n    });\n\n    out.element(\"div\", {}, 0);\n    out.flush();\n\n    var asyncOut = out.beginAsync();\n\n    setTimeout(function () {\n      asyncOut.element(\"span\", {}, 0);\n      asyncOut.end();\n    }, 10);\n\n    out.end();\n  });\n\n  it(\"for loop\", function (done) {\n    var out = new AsyncVDOMBuilder();\n    out.once(\"finish\", function (result) {\n      var tree = result.getOutput();\n      var childNodes = getChildNodes(tree);\n      var header = childNodes[0];\n      var list = childNodes[1];\n      var paragraph = childNodes[2];\n      expect(header.___nodeName).to.equal(\"h1\");\n      expect(list.___nodeName).to.equal(\"ul\");\n      expect(getChildNodes(list).length).to.equal(10);\n      expect(paragraph.___nodeName).to.equal(\"p\");\n      done();\n    });\n\n    out.element(\"h1\", {}, 0);\n\n    out.beginElement(\"ul\", {});\n\n    for (var i = 0; i < 10; i++) {\n      out.element(\"li\", {}, 1).t(i);\n    }\n\n    out.endElement();\n\n    out.element(\"p\", {}, 0);\n\n    out.end();\n  });\n\n  it(\"staticNode, comment\", function (done) {\n    var staticNode = new VElement(\"div\", {}, 0, \"f891ea3\");\n    var out = new AsyncVDOMBuilder();\n\n    out.node(staticNode);\n    out.text(\"Hello <em>World</em>\");\n    out.end();\n\n    out.once(\"finish\", function (result) {\n      var tree = result.getOutput();\n      var childNodes = getChildNodes(tree);\n      expect(childNodes[0].___nodeName).to.equal(\"div\");\n      expect(childNodes[1].___nodeValue).to.equal(\"Hello <em>World</em>\");\n      done();\n    });\n  });\n\n  // it('should handle timeouts correctly');\n  //\n  // it('should handle sync errors correctly');\n  //\n  // it('should handle timeout errors correctly');\n  //\n  // it('should avoid writes after end');\n  //\n  // it('globals');\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/adjacent-nested-fragments/components/text-display/index.marko",
    "content": "<macro|{ type, value }| name=\"value\">\n    ${type}: ${value}\n</macro>\n\n<macro|{ value }| name=\"display\">\n    $ const type = typeof value;\n    <value type=type value=value/>\n    <span>: ${type}</span>\n</macro>\n\n<display value=input.value/>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/adjacent-nested-fragments/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = {\n            show: true\n        }\n    }\n\n    hide() {\n        this.state.show = false;\n    }\n}\n\n<div key=\"root\">\n    <if(state.show)>\n        <text-display value=123/>\n    </if>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/adjacent-nested-fragments/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index.marko\"), {});\n  var root = component.getEl(\"root\");\n  expect(root.textContent).to.equal(\"number: 123: number\");\n  component.hide();\n  component.update();\n  expect(root.textContent).to.equal(\"\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/append-prepend/components/app-hello/index.marko",
    "content": "<div>\n    Hello ${input.value}\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/append-prepend/index.marko",
    "content": "class {}\n\n<div key=\"renderTarget\">\n    <span key=\"referenceElement\">ref</span>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/append-prepend/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index.marko\"));\n  var hello = require(\"./components/app-hello\").default;\n\n  var renderTarget = component.getEl(\"renderTarget\");\n  expect(renderTarget.innerHTML).to.equal(\"<span>ref</span>\");\n\n  hello.renderSync({ value: \"before\" }).prependTo(renderTarget);\n  hello.renderSync({ value: \"after\" }).appendTo(renderTarget);\n  expect(renderTarget.innerHTML).to.equal(\n    \"<div>Hello before</div><span>ref</span><div>Hello after</div>\",\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-api/component.js",
    "content": "module.exports = {\n  onMount: function () {},\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-api/index.marko",
    "content": "div\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-api/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  expect(component.id).to.be.a(\"string\");\n  expect(component.emit).to.be.a(\"function\");\n  expect(component.on).to.be.a(\"function\");\n  expect(component.once).to.be.a(\"function\");\n  expect(component.subscribeTo).to.be.a(\"function\");\n  expect(component.getElId).to.be.a(\"function\");\n  expect(component.elId).to.be.a(\"function\");\n  expect(component.getEl).to.be.a(\"function\");\n  expect(component.destroy).to.be.a(\"function\");\n  expect(component.isDestroyed).to.be.a(\"function\");\n  expect(component.update).to.be.a(\"function\");\n  expect(component.forceUpdate).to.be.a(\"function\");\n  expect(component.appendTo).to.be.a(\"function\");\n  expect(component.replace).to.be.a(\"function\");\n  expect(component.replaceChildrenOf).to.be.a(\"function\");\n  expect(component.insertBefore).to.be.a(\"function\");\n  expect(component.insertAfter).to.be.a(\"function\");\n  expect(component.prependTo).to.be.a(\"function\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-api-move-root/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = { count:0 };\n    }\n    increment() {\n        this.state.count++;\n    }\n}\n\n-- Hello World ${state.count}"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-api-move-root/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  var newTarget = document.createElement(\"div\");\n  document.body.appendChild(newTarget);\n  component.increment();\n  component.update();\n  component.appendTo(newTarget);\n  expect(newTarget.innerHTML).to.equal(\"Hello World 1\");\n  component.increment();\n  component.update();\n  expect(newTarget.innerHTML).to.equal(\"Hello World 2\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-conditional-events/component.js",
    "content": "var Component = {\n  onCreate: function () {\n    this.logOutput = [];\n    this.state = { active: true };\n  },\n\n  log(data) {\n    this.logOutput.push(data);\n  },\n\n  clearLog() {\n    this.logOutput = [];\n  },\n\n  toggle() {\n    this.state.active = !this.state.active;\n  },\n\n  handleDOMClick: function () {\n    this.log(\"dom:click\");\n  },\n\n  handleCustomClick: function () {\n    this.log(\"custom:click\");\n  },\n};\n\nmodule.exports = Component;\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-conditional-events/components/custom-button.marko",
    "content": "class {}\n<button id=input.id on-click('emit', 'button-click')>\n  <${input.renderBody}/>\n</button>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-conditional-events/index.marko",
    "content": "<button id=\"toggle\" on-click(\"toggle\")>\n    Toggle. (current value: ${state.active})\n</button>\n\n<button id=\"dom-button\" on-click(state.active && \"handleDOMClick\")>\n  Test DOM\n</button>\n\n<custom-button id=\"custom-button\" on-button-click(state.active && 'handleCustomClick')>\n  Test Custom\n</custom-button>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-conditional-events/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-conditional-events/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  component.clearLog();\n  helpers.triggerMouseEvent(document.getElementById(\"dom-button\"), \"click\");\n  helpers.triggerMouseEvent(document.getElementById(\"custom-button\"), \"click\");\n  expect(component.logOutput).to.deep.equal([\"dom:click\", \"custom:click\"]);\n\n  helpers.triggerMouseEvent(document.getElementById(\"toggle\"), \"click\");\n  component.update();\n\n  component.clearLog();\n  helpers.triggerMouseEvent(document.getElementById(\"dom-button\"), \"click\");\n  helpers.triggerMouseEvent(document.getElementById(\"custom-button\"), \"click\");\n  expect(component.logOutput).to.deep.equal([]);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-destroy-ref/component.js",
    "content": "module.exports = {\n  destroyButton1: function () {\n    this.getComponent(\"button1\").destroy();\n  },\n\n  getButton1: function () {\n    return this.getComponent(\"button1\");\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-destroy-ref/components/app-legacy-button/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    this.name = \"app-legacy-button\";\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-destroy-ref/components/app-legacy-button/index.marko",
    "content": "<button\n    type=\"button\"\n    class=\"app-legacy-button\"\n    onMousedown(\"handleRootMouseDown\")>\n    <${input.renderBody}/>\n</button>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-destroy-ref/index.marko",
    "content": "<div>\n    <app-legacy-button size=\"small\" key=\"button1\">button1</app-legacy-button>\n    <app-legacy-button size=\"normal\" key=\"button2\">button2</app-legacy-button>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-destroy-ref/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-destroy-ref/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  var button1Component = component.getButton1();\n  expect(button1Component != null).to.equal(true);\n\n  component.destroyButton1();\n\n  button1Component = component.getButton1();\n  expect(button1Component === undefined).to.equal(true);\n  expect(component.getComponent(\"simple\") == null).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-destroy-unsubscribe-custom-events/component.js",
    "content": "module.exports = {\n  destroyButton1: function () {\n    this.getComponent(\"button1\").destroy();\n  },\n\n  getButton1: function () {\n    return this.getComponent(\"button1\");\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-destroy-unsubscribe-custom-events/components/app-custom-events/component.js",
    "content": "module.exports = {\n  emitTestEvent1: function () {\n    this.emit(\"testEvent\", \"a\", \"b\");\n  },\n\n  emitTestEvent2: function () {\n    this.emit(\"testEvent\");\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-destroy-unsubscribe-custom-events/components/app-custom-events/index.marko",
    "content": "<div class=\"bar\">\n    ${input.label}\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-destroy-unsubscribe-custom-events/index.marko",
    "content": "<div>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-destroy-unsubscribe-custom-events/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-destroy-unsubscribe-custom-events/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  var customEventsComponent = helpers.mount(\n    require.resolve(\"./components/app-custom-events\"),\n    {},\n  );\n\n  var receivedEvents = [];\n\n  component.subscribeTo(customEventsComponent).on(\"testEvent\", function () {\n    receivedEvents.push(arguments);\n  });\n\n  customEventsComponent.emitTestEvent1();\n  expect(receivedEvents.length).to.equal(1);\n  customEventsComponent.destroy();\n  customEventsComponent.emitTestEvent2();\n  expect(receivedEvents.length).to.equal(1);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-destroy-unsubscribe-dom-events/component.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = {\n  onMount: function () {\n    this.logOutput = [];\n\n    this.name = \"app-dom-events\";\n\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    var self = this;\n    function log(data) {\n      self.logOutput.push(data);\n    }\n\n    this.log = log;\n    this.clearLog = function () {\n      this.logOutput = [];\n    };\n\n    this.logOutput = [];\n  },\n\n  handleFooLinkDblClick: function () {\n    this.log(\"#fooLink:dblclick\");\n  },\n\n  handleFooLinkMouseOut: function (event, el) {\n    expect(event.target).to.equal(el);\n    this.log(\"#fooLink:mouseout\");\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-destroy-unsubscribe-dom-events/index.marko",
    "content": "<div>\n    <a href=\"#foo\" key=\"fooLink\"\n        onDblclick(\"handleFooLinkDblClick\")\n        onMouseout(\"handleFooLinkMouseOut\")>\n    </a>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-destroy-unsubscribe-dom-events/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  // expect(Array.isArray(component.___domEventListenerHandles)).to.equal(true);\n\n  var el = component.el;\n  var fooLink = component.getEl(\"fooLink\");\n\n  component.destroy();\n\n  // expect(component.___domEventListenerHandles).to.equal(null);\n\n  // Make sure the component is removed from the DOM tree\n\n  expect(el.parentNode == null).to.equal(true);\n\n  // Make sure there are no DOM event listeners\n  component.clearLog();\n  helpers.triggerMouseEvent(fooLink, \"mouseout\");\n  expect(component.logOutput).to.deep.equal([]);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-dom-event-listeners-repeated-non-bubbling/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    this.counter = 0;\n  },\n\n  handleMouseMove: function (event, el) {\n    el.innerHTML = \"\" + this.counter++;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-dom-event-listeners-repeated-non-bubbling/index.marko",
    "content": "<div>\n    <ul>\n        <for|i, color| in=[\"red\", \"green\", \"blue\"]>\n            <li onMouseMove(\"handleMouseMove\") key=`foo-${i}`>${color}</li>\n        </for>\n    </ul>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-dom-event-listeners-repeated-non-bubbling/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    name: \"Frank\",\n    count: 30,\n  });\n\n  var li1 = component.getEl(\"foo-0\");\n  var li2 = component.getEl(\"foo-1\");\n  var li3 = component.getEl(\"foo-2\");\n\n  expect(li1.innerHTML).to.equal(\"red\");\n  expect(li2.innerHTML).to.equal(\"green\");\n  expect(li3.innerHTML).to.equal(\"blue\");\n\n  helpers.triggerMouseMove(li1);\n\n  expect(li1.innerHTML).to.equal(\"0\");\n  expect(li2.innerHTML).to.equal(\"green\");\n  expect(li3.innerHTML).to.equal(\"blue\");\n\n  helpers.triggerMouseMove(li2);\n\n  expect(li1.innerHTML).to.equal(\"0\");\n  expect(li2.innerHTML).to.equal(\"1\");\n  expect(li3.innerHTML).to.equal(\"blue\");\n\n  helpers.triggerMouseMove(li3);\n\n  expect(li1.innerHTML).to.equal(\"0\");\n  expect(li2.innerHTML).to.equal(\"1\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-dom-events/component.js",
    "content": "var expect = require(\"chai\").expect;\n\nvar Component = {\n  onCreate: function () {\n    this.logOutput = [];\n\n    this.name = \"app-dom-events\";\n\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    var self = this;\n    function log(data) {\n      self.logOutput.push(data);\n    }\n\n    this.log = log;\n    this.clearLog = function () {\n      this.logOutput = [];\n    };\n\n    this.logOutput = [];\n  },\n\n  handleRootClick: function (event, el) {\n    expect(el.getAttribute(\"class\")).to.equal(\"app-dom-events\");\n    expect(event.target.tagName.length > 0).to.equal(true);\n    this.log(\"el:click\");\n    expect(this.name).to.equal(\"app-dom-events\");\n  },\n\n  handleButtonClick: function () {\n    this.log(\"button:click\");\n  },\n\n  handleRootMouseMove: function () {\n    this.log(\"el:mousemove\");\n  },\n\n  handleButtonSpanMouseMove: function () {\n    this.log(\"button>span:mousemove\");\n  },\n\n  handleFooLinkDblClick: function () {\n    this.log(\"#fooLink:dblclick\");\n  },\n\n  handleFooLinkMouseOut: function (event, el) {\n    expect(event.target).to.equal(el);\n    this.log(\"#fooLink:mouseout\");\n  },\n\n  handleHelloWorldMouseDown: function (event, el) {\n    expect(this.getEl(\"helloWorld\")).to.equal(el);\n    this.log(\"#helloWorld:mousedown\");\n  },\n};\n\nmodule.exports = Component;\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-dom-events/components/app-legacy-button/component.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = {\n  onMount: function () {\n    this.name = \"app-legacy-button\";\n\n    var logOutput = (this.logOutput = []);\n\n    function log(data) {\n      logOutput.push(data);\n    }\n\n    this.log = log;\n    this.clicked = false;\n  },\n\n  handleRootMouseDown: function (event, el) {\n    this.clicked = true;\n    expect(el.getAttribute(\"class\")).to.equal(\"app-legacy-button\");\n    this.log(\"click\");\n    expect(this.name).to.equal(\"app-legacy-button\");\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-dom-events/components/app-legacy-button/index.marko",
    "content": "<button\n    type=\"button\"\n    class=\"app-legacy-button\"\n    onMousedown(\"handleRootMouseDown\")>\n    <${input.renderBody}/>\n</button>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-dom-events/index.marko",
    "content": "<div class=\"app-dom-events\"\n    \n    onMousemove(\"handleRootMouseMove\")\n    onClick(\"handleRootClick\")>\n    <button type=\"button\" key=\"button\"\n        onClick(\"handleButtonClick\")>\n        <span onMousemove(\"handleButtonSpanMouseMove\")>\n            Button\n        </span>\n    </button>\n\n    <a href=\"#foo\" id=\"fooLink\"\n        onDblclick(\"handleFooLinkDblClick\")\n        onMouseout(\"handleFooLinkMouseOut\")>\n    </a>\n\n    <app-legacy-button key=\"appButton\">\n        <span key=\"helloWorld\" onMousedown(\"handleHelloWorldMouseDown\")>Hello World</span>\n    </app-legacy-button>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-dom-events/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-dom-events/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  component.clearLog();\n\n  // Trigger a click event on the root element\n  helpers.triggerMouseEvent(component.el, \"click\");\n  expect(component.logOutput).to.deep.equal([\"el:click\"]);\n\n  component.clearLog();\n  helpers.triggerMouseEvent(component.getEl(\"button\"), \"click\");\n  expect(component.logOutput).to.deep.equal([\"button:click\", \"el:click\"]);\n\n  component.clearLog();\n  helpers.triggerMouseEvent(\n    component.getEl(\"button\").firstElementChild,\n    \"click\",\n  );\n  expect(component.logOutput).to.deep.equal([\"button:click\", \"el:click\"]);\n\n  component.clearLog();\n  helpers.triggerMouseEvent(component.el, \"mousemove\");\n  expect(component.logOutput).to.deep.equal([\"el:mousemove\"]);\n\n  component.clearLog();\n  helpers.triggerMouseEvent(\n    component.getEl(\"button\").firstElementChild,\n    \"mousemove\",\n  );\n  expect(component.logOutput).to.deep.equal([\n    \"button>span:mousemove\",\n    \"el:mousemove\",\n  ]);\n\n  component.clearLog();\n  helpers.triggerMouseEvent(document.getElementById(\"fooLink\"), \"dblclick\");\n  expect(component.logOutput).to.deep.equal([\"#fooLink:dblclick\"]);\n\n  component.clearLog();\n  helpers.triggerMouseEvent(document.getElementById(\"fooLink\"), \"mouseout\");\n  expect(component.logOutput).to.deep.equal([\"#fooLink:mouseout\"]);\n\n  component.clearLog();\n  expect(component.getComponent(\"appButton\").clicked).to.equal(false);\n  helpers.triggerMouseEvent(component.getEl(\"helloWorld\"), \"mousedown\");\n  expect(component.logOutput).to.deep.equal([\"#helloWorld:mousedown\"]);\n  expect(component.getComponent(\"appButton\").clicked).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-dynamic-tag-name/component.js",
    "content": "module.exports = {};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-dynamic-tag-name/index.marko",
    "content": "<${input.rootTagName} class=\"foo\"></>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-dynamic-tag-name/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  function renderComponent(rootTagName) {\n    var component = helpers.mount(require.resolve(\"./index\"), {\n      rootTagName: rootTagName,\n    });\n    return component;\n  }\n\n  var componentDiv = renderComponent(\"div\");\n  var componentSpan = renderComponent(\"span\");\n\n  expect(componentDiv.el.nodeName).to.equal(\"DIV\");\n  expect(componentSpan.el.nodeName).to.equal(\"SPAN\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-event-handler-method-conditional-bubbles/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    this.clicked = false;\n  },\n\n  handleButtonClick: function () {\n    this.clicked = true;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-event-handler-method-conditional-bubbles/index.marko",
    "content": "<div>\n\t<input onClick(false && 'handleButtonClick') key=\"inputWithoutHandler\" type=\"button\">\n\t<input onClick(true && 'handleButtonClick') key=\"inputWithHandler\" type=\"button\">\n\t<input onClick('handleButtonClick') key=\"inputWithLiteralHandler\" type=\"button\">\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-event-handler-method-conditional-bubbles/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  helpers.triggerClick(component.getEl(\"inputWithoutHandler\"));\n  expect(component.clicked).to.equal(false);\n\n  helpers.triggerClick(component.getEl(\"inputWithHandler\"));\n  expect(component.clicked).to.equal(true);\n\n  // Reset component.clicked\n  component.clicked = false;\n\n  helpers.triggerClick(component.getEl(\"inputWithLiteralHandler\"));\n  expect(component.clicked).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-event-handler-method-conditional-direct/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    this.mouseMoved = false;\n  },\n\n  handleMouseMove: function () {\n    this.mouseMoved = true;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-event-handler-method-conditional-direct/index.marko",
    "content": "<div>\n\t<input onMouseMove(false && \"handleMouseMove\") key=\"inputWithoutHandler\" type=\"button\">\n\t<input onMouseMove(true && 'handleMouseMove') key=\"inputWithHandler\" type=\"button\">\n\t<input onMouseMove('handleMouseMove') key=\"inputWithLiteralHandler\" type=\"button\">\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-event-handler-method-conditional-direct/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  helpers.triggerMouseMove(component.getEl(\"inputWithoutHandler\"));\n  expect(component.mouseMoved).to.equal(false);\n\n  helpers.triggerMouseMove(component.getEl(\"inputWithHandler\"));\n  expect(component.mouseMoved).to.equal(true);\n\n  // Reset component.mouseMoved\n  component.mouseMoved = false;\n\n  helpers.triggerMouseMove(component.getEl(\"inputWithLiteralHandler\"));\n  expect(component.mouseMoved).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-event-handler-method-dynamic/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    this.fooClicked = false;\n    this.barClicked = false;\n  },\n\n  handleFooClick: function () {\n    this.fooClicked = true;\n  },\n\n  handleBarClick: function () {\n    this.barClicked = true;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-event-handler-method-dynamic/index.marko",
    "content": "<div>\n    <h1>app-macro-events</h1>\n    <macro|macroInput| name=\"renderButton\">\n        $ var id = macroInput.id;\n        $ var label = macroInput.label;\n        $ var handler = macroInput.handler;\n        <button key=id type=\"button\" onClick(handler)>\n            $label\n        </button>\n    </macro>\n    <renderButton id=\"foo\" label=\"Foo\" handler=\"handleFooClick\"/>\n    <renderButton id=\"bar\" label=\"Bar\" handler=\"handleBarClick\"/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-event-handler-method-dynamic/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  expect(component.fooClicked).to.equal(false);\n  expect(component.barClicked).to.equal(false);\n\n  helpers.triggerClick(component.getEl(\"foo\"));\n  expect(component.fooClicked).to.equal(true);\n  expect(component.barClicked).to.equal(false);\n\n  helpers.triggerClick(component.getEl(\"bar\"));\n  expect(component.fooClicked).to.equal(true);\n  expect(component.barClicked).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-extends-EventEmitter/component.js",
    "content": "module.exports = {\n  onMount: function () {},\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-extends-EventEmitter/index.marko",
    "content": "div\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-extends-EventEmitter/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  var fooEvent = null;\n  var fooEventThis = null;\n\n  function fooListener() {\n    fooEvent = arguments;\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    fooEventThis = this;\n  }\n\n  component.on(\"foo\", fooListener);\n\n  component.emit(\"foo\", \"a\", \"b\");\n\n  expect(fooEvent[0]).to.equal(\"a\");\n\n  expect(fooEvent[1]).to.equal(\"b\");\n  expect(fooEventThis).to.equal(component);\n\n  fooEvent = null;\n\n  component.removeListener(\"foo\", fooListener);\n\n  component.emit(\"foo\", \"a\", \"b\");\n\n  expect(fooEvent).to.equal(null);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-file-exports-class/component.js",
    "content": "function Component() {\n  throw new Error(\"THIS SHOULD NOT BE CALLED\");\n}\n\nComponent.prototype = {\n  onCreate: function () {\n    this.state = {\n      name: \"Frank\",\n    };\n  },\n};\n\nmodule.exports = Component;\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-file-exports-class/index.marko",
    "content": "<div.hello>\n    Hello ${state.name}!\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-file-exports-class/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  expect(component.el.innerHTML).to.contain(\"Frank\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-getComponent/component.js",
    "content": "module.exports = {\n  onMount: function () {},\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-getComponent/components/app-foo/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    this.name = \"app-foo\";\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-getComponent/components/app-foo/index.marko",
    "content": "div"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-getComponent/index.marko",
    "content": "div\n    app-foo key=\"bar\""
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-getComponent/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-getComponent/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  expect(component.getComponent(\"bar\").name).to.equal(\"app-foo\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-getComponents-multiple/component.js",
    "content": "module.exports = {\n  onMount: function () {},\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-getComponents-multiple/components/app-foo/component.js",
    "content": "module.exports = {\n  onInput: function (input) {\n    this.name = input.name;\n  },\n\n  onMount: function () {},\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-getComponents-multiple/components/app-foo/index.marko",
    "content": "div"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-getComponents-multiple/index.marko",
    "content": "div\n    app-foo name=\"a\" key=\"bar[]\"\n    app-foo name=\"b\" key=\"bar[]\""
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-getComponents-multiple/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-getComponents-multiple/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  expect(component.getComponents(\"bar\").length).to.equal(2);\n  expect(component.getComponents(\"bar\")[0].name).to.equal(\"a\");\n  expect(component.getComponents(\"bar\")[1].name).to.equal(\"b\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-getComponents-single/component.js",
    "content": "module.exports = {\n  onMount: function () {},\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-getComponents-single/components/app-foo/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    this.name = \"app-foo\";\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-getComponents-single/components/app-foo/index.marko",
    "content": "div"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-getComponents-single/index.marko",
    "content": "div\n    app-foo key=\"bar[]\""
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-getComponents-single/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-getComponents-single/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  expect(component.getComponents(\"bar\").length).to.equal(1);\n  expect(component.getComponents(\"bar\")[0].name).to.equal(\"app-foo\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-getEl/component.js",
    "content": "module.exports = {\n  onMount: function () {},\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-getEl/index.marko",
    "content": "div\n    span.foo key=\"foo\"\n    span.bar key=\"bar\"\n    span.foo-bar key=\"foo-bar\""
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-getEl/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  expect(component.getEl(\"foo\").className).to.equal(\"foo\");\n  expect(component.getEl(\"bar\").className).to.equal(\"bar\");\n  expect(component.getEl(\"foo-bar\").className).to.equal(\"foo-bar\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-getEls/component.js",
    "content": "module.exports = {\n  onMount: function () {},\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-getEls/index.marko",
    "content": "<div>\n    <ul>\n        <for|color| of=[\"red\", \"green\", \"blue\"]>\n            <li key=\"colorListItems[]\">${color}</li>\n        </for>\n    </ul>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-getEls/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  var els = component.getEls(\"colorListItems\");\n  expect(els.length).to.equal(3);\n  expect(els[0].innerHTML).to.equal(\"red\");\n  expect(els[1].innerHTML).to.equal(\"green\");\n  expect(els[2].innerHTML).to.equal(\"blue\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-include-ref/component.js",
    "content": "module.exports = {};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-include-ref/components/app-bar/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    this.name = \"app-bar\";\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-include-ref/components/app-bar/index.marko",
    "content": "$ var label=(input.label || 'BAR')\n\n<div class=\"bar\">\n    ${label}\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-include-ref/index.marko",
    "content": "import barComponent from './components/app-bar'\n\n<div class=\"app-invoke-component-id\">\n    <${barComponent} key=\"barTest\"/>\n    <app-bar key=\"test\"/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-include-ref/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  var barComponent = component.getComponent(\"barTest\");\n  expect(barComponent != null).to.equal(true);\n  expect(barComponent.name).to.equal(\"app-bar\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-include-ref-dynamic/component.js",
    "content": "module.exports = {};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-include-ref-dynamic/components/app-bar/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    this.name = \"app-bar\";\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-include-ref-dynamic/components/app-bar/index.marko",
    "content": "$ var label=(input.label || 'BAR')\n\n<div class=\"bar\">\n    ${label}\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-include-ref-dynamic/index.marko",
    "content": "import barComponent from './components/app-bar'\n\nstatic var barComponentRef = \"myBar\";\n\n<div class=\"app-invoke-component-id\">\n    <${barComponent} ...{} key=barComponentRef/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-include-ref-dynamic/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  var barComponent = component.getComponent(\"myBar\");\n  expect(barComponent != null).to.equal(true);\n  expect(barComponent.name).to.equal(\"app-bar\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-no-update-attrs/component.js",
    "content": "module.exports = {\n  onInput: function (input) {\n    this.state = {\n      className: input.className,\n    };\n  },\n\n  getTemplateData: function (state) {\n    return state;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-no-update-attrs/index.marko",
    "content": "<div>\n    <span class:no-update=\"test\">\n    </span>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-no-update-attrs/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"));\n\n  var span = component.el.querySelector(\"span\");\n  expect(span.className).to.equal(\"test\");\n\n  component.update();\n\n  expect(span.className).to.equal(\"test\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-no-update-attrs-dynamic/component.js",
    "content": "module.exports = {\n  onInput: function (input) {\n    this.state = {\n      className: input.className,\n    };\n  },\n\n  getTemplateData: function (state) {\n    return state;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-no-update-attrs-dynamic/index.marko",
    "content": "<div>\n    <span class:no-update=input.className>\n    </span>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-no-update-attrs-dynamic/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    className: \"foo\",\n  });\n\n  var span = component.el.querySelector(\"span\");\n  expect(span.className).to.equal(\"foo\");\n\n  component.setState(\"className\", \"bar\");\n  component.update();\n\n  expect(span.className).to.equal(\"foo\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-preserve-all-state-when-rendered-in-loop/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = { items: [] };\n    }\n\n    addItem(id) {\n        this.state.items = this.state.items.concat(id);\n    }\n\n    removeItem(id) {\n        this.state.items = this.state.items.filter(item => item !== id);\n    }\n}\n\n<div>\n    <for|item| of=state.items>\n        <div key=`loop1:${item}`>\n            <span/>\n        </div>\n    </for>\n    <if(state.items.length)>\n        <for|i| from=0 to=(state.items.length - 1)>\n            <div key=`loop2:${state.items[i]}`>\n                <span/>\n            </div>\n        </for>\n    </if>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-preserve-all-state-when-rendered-in-loop/test.js",
    "content": "var expect = require(\"chai\").expect;\nvar domData = require(\"../../../../src/runtime/components/dom-data\");\nvar vElementByDOMNode = domData.___vElementByDOMNode;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  var rootEl = component.getEl();\n  var itemIds = [\"child-a\", \"child-b\", \"child-c\"];\n\n  itemIds.forEach((id) => component.addItem(id));\n  component.update();\n\n  var curLookup = getKeyLookup();\n\n  component.removeItem(itemIds[1]);\n  component.update();\n\n  ensurePreservedKeys(curLookup, (curLookup = getKeyLookup()));\n\n  component.removeItem(itemIds[0]);\n  component.update();\n\n  ensurePreservedKeys(curLookup, getKeyLookup());\n\n  function getKeyLookup(els) {\n    els = els || rootEl.children;\n    var lookup = {};\n\n    for (var i = 0; i < els.length; i++) {\n      var el = els[i];\n      var component = helpers.getComponentForEl(el);\n      var key = vElementByDOMNode.get(el).___key;\n      lookup[key] = {\n        el: el,\n        component: component,\n        children: getKeyLookup(el.children),\n      };\n    }\n\n    return lookup;\n  }\n\n  function ensurePreservedKeys(lookupA, lookupB, path) {\n    path = path || \"\";\n    for (var key in lookupB) {\n      if (lookupA[key]) {\n        var fullPath = path + \" \" + key;\n        expect(\n          lookupA[key].el === lookupB[key].el,\n          'unpreserved element \"' + fullPath + '\"',\n        ).to.equal(true);\n        expect(\n          lookupA[key].component === lookupB[key].component,\n          'unpreserved component \"' + fullPath + '\"',\n        ).to.equal(true);\n        ensurePreservedKeys(\n          lookupA[key].children,\n          lookupB[key].children,\n          fullPath,\n        );\n      }\n    }\n  }\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-preserve-all-state-when-rerendered/component.js",
    "content": "module.exports = {\n  onInput: function (input) {\n    this.state = {\n      name: input.name,\n      count: input.count,\n      className: input[\"class\"],\n      foo: \"bar\",\n      hello: \"world\",\n    };\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-preserve-all-state-when-rerendered/index.marko",
    "content": "<div class=[\"app-stateful-rerender\", state.className]>\n    Hello ${state.name}! You have ${state.count} new messages.\n    <ul>\n        <li>\n            foo: ${state.foo}\n        </li>\n        <li>\n            hello: ${state.hello}\n        </li>\n    </ul>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-preserve-all-state-when-rerendered/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    name: \"Frank\",\n    count: 30,\n  });\n\n  var targetEl = component.el;\n\n  expect(targetEl.innerHTML).to.contain(\n    \"Hello Frank! You have 30 new messages.\",\n  );\n  expect(targetEl.innerHTML).to.contain(\"foo: bar\");\n  expect(targetEl.innerHTML).to.contain(\"hello: world\");\n  expect(component.state.name).to.equal(\"Frank\");\n  expect(component.state.count).to.equal(30);\n\n  component.setState(\"name\", \"John\");\n  component.update();\n\n  expect(targetEl.innerHTML).to.contain(\n    \"Hello John! You have 30 new messages.\",\n  );\n  expect(targetEl.innerHTML).to.contain(\"foo: bar\");\n  expect(targetEl.innerHTML).to.contain(\"hello: world\");\n  expect(component.state.name).to.equal(\"John\");\n  expect(component.state.count).to.equal(30);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-preserve-all-state-when-rerendered-setTimeout/component.js",
    "content": "module.exports = {\n  onInput: function (input) {\n    this.state = {\n      name: input.name,\n      count: input.count,\n      className: input[\"class\"],\n      foo: \"bar\",\n      hello: \"world\",\n    };\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-preserve-all-state-when-rerendered-setTimeout/index.marko",
    "content": "<div class=[\"app-stateful-rerender\", state.className]>\n    Hello ${state.name}! You have ${state.count} new messages.\n    <ul>\n        <li>\n            foo: ${state.foo}\n        </li>\n        <li>\n            hello: ${state.hello}\n        </li>\n    </ul>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-preserve-all-state-when-rerendered-setTimeout/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers, done) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    name: \"Frank\",\n    count: 30,\n  });\n\n  var targetEl = component.el;\n\n  setTimeout(function () {\n    component.setState(\"count\", 100);\n    component.update();\n    expect(component.state.count).to.equal(100);\n    expect(targetEl.innerHTML).to.contain(\n      \"Hello Frank! You have 100 new messages.\",\n    );\n  }, 100);\n\n  setTimeout(function () {\n    component.setState(\"count\", 200);\n    component.update();\n    expect(component.state.count).to.equal(200);\n    expect(targetEl.innerHTML).to.contain(\n      \"Hello Frank! You have 200 new messages.\",\n    );\n    done();\n  }, 200);\n\n  setTimeout(function () {\n    component.setState(\"count\", 1);\n    component.update();\n    expect(component.state.count).to.equal(1);\n    expect(targetEl.innerHTML).to.contain(\n      \"Hello Frank! You have 1 new messages.\",\n    );\n  }, 1);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-preserve-dom-attrs/component.js",
    "content": "module.exports = {\n  onInput: function () {\n    this.state = {\n      name: \"Joe\",\n    };\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-preserve-dom-attrs/index.marko",
    "content": "<div style:no-update class:no-update>\n    <a href:no-update=\"http://www.ebay.com\">\n        eBay\n    </a>\n    <span key=\"hello\">Hello ${state.name}!</span>\n    <span key=\"hello2\" class:no-update=\"foo\">Hello ${state.name}!</span>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-preserve-dom-attrs/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  var helloEl = component.getEl(\"hello\");\n  expect(helloEl.innerHTML).to.equal(\"Hello Joe!\");\n\n  component.el.style.border = \"1px solid red\";\n  component.el.className = \"foo\";\n\n  component.el.querySelector(\"a\").href = \"http://www.foo.com/\";\n\n  component.getEl(\"hello2\").removeAttribute(\"class\");\n\n  component.setState(\"name\", \"Frank\");\n  component.update();\n\n  expect(helloEl.innerHTML).to.equal(\"Hello Frank!\");\n  expect(component.getEl(\"hello2\").getAttribute(\"class\")).to.equal(null);\n\n  // Make sure the preserved attributes did not change\n  expect(component.el.style.border).to.equal(\"1px solid red\");\n  expect(component.el.className).to.equal(\"foo\");\n  expect(component.el.querySelector(\"a\").href).to.equal(\"http://www.foo.com/\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-preserve-dom-attrs-dynamic/component.js",
    "content": "module.exports = {\n  onInput: function (input) {\n    this.state = {\n      className: input.className,\n    };\n  },\n\n  getTemplateData: function (state) {\n    return state;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-preserve-dom-attrs-dynamic/index.marko",
    "content": "<div>\n    <span class:no-update=input.className>\n    </span>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-preserve-dom-attrs-dynamic/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    className: \"foo\",\n  });\n\n  var span = component.el.querySelector(\"span\");\n  expect(span.className).to.equal(\"foo\");\n\n  component.setState(\"className\", \"bar\");\n  component.update();\n\n  expect(span.className).to.equal(\"foo\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-preserve-dom-if/component.js",
    "content": "module.exports = {\n  onInput: function (input) {\n    return {\n      preserveCondition: input.preserveCondition,\n      renderId: input.renderId || 0,\n    };\n  },\n  onMount: function () {},\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-preserve-dom-if/components/app-stateful-rerender/component.js",
    "content": "module.exports = {\n  onInput: function (input) {\n    this.state = {\n      name: input.name,\n      count: input.count,\n      className: input[\"class\"],\n      foo: \"bar\",\n      hello: \"world\",\n    };\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-preserve-dom-if/components/app-stateful-rerender/index.marko",
    "content": "<div class=[\"app-stateful-rerender\", state.className]>\n    Hello ${state.name}! You have ${state.count} new messages.\n    <ul>\n        <li>\n            foo: ${state.foo}\n        </li>\n        <li>\n            hello: ${state.hello}\n        </li>\n    </ul>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-preserve-dom-if/index.marko",
    "content": "<div>\n    <h1>Preserve Begin</h1>\n    <span key=\"preserve\" no-update-if(input.preserveCondition) data-renderId=input.renderId>${input.renderId}</span>\n\n    <span key=\"preserveBody\" no-update-body-if(input.preserveCondition) data-renderId=input.renderId>${input.renderId}</span>\n\n    <app-stateful-rerender key=\"component\" name=(input.renderId.toString()) no-update-if(input.preserveCondition) />\n\n    <!-- Test without an ID -->\n\n    <span class=\"preserve\" no-update-if(input.preserveCondition) data-renderId=input.renderId>${input.renderId}</span>\n\n    <span class=\"preserve-body\" no-update-body-if(input.preserveCondition) data-renderId=input.renderId>${input.renderId}</span>\n\n    <app-stateful-rerender class=\"component-no-id\" name=(input.renderId.toString()) no-update-if(input.preserveCondition) data-renderId=input.renderId/>\n\n    <h1>Preserve End</h1>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-preserve-dom-if/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-preserve-dom-if/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  function getTimestamps() {\n    return {\n      preserveId: component.getEl(\"preserve\").getAttribute(\"data-renderId\"),\n      preserveIdBody: component.getEl(\"preserve\").innerHTML,\n      preserveBodyId: component\n        .getEl(\"preserveBody\")\n        .getAttribute(\"data-renderId\"),\n      preserveBodyIdBody: component.getEl(\"preserveBody\").innerHTML,\n      componentId: component.getComponent(\"component\").state.name,\n      preserveClass: component.el\n        .querySelector(\".preserve\")\n        .getAttribute(\"data-renderId\"),\n      preserveClassBody: component.el.querySelector(\".preserve\").innerHTML,\n      preserveBodyClass: component.el\n        .querySelector(\".preserve-body\")\n        .getAttribute(\"data-renderId\"),\n      preserveBodyClassBody:\n        component.el.querySelector(\".preserve-body\").innerHTML,\n      componentClass: require(\"marko/components\").getComponentForEl(\n        component.el.querySelector(\".component-no-id\"),\n      ).state.name,\n    };\n  }\n\n  var renderId = 10;\n\n  component.input = {\n    preserveCondition: true,\n    renderId: renderId,\n  };\n  component.update();\n\n  var timestamps = getTimestamps();\n  expect(timestamps.preserveId).to.equal(\"0\");\n  expect(timestamps.preserveIdBody).to.equal(\"0\");\n  expect(timestamps.preserveBodyId).to.equal(\"10\");\n  expect(timestamps.preserveBodyIdBody).to.equal(\"0\");\n  expect(timestamps.componentId).to.equal(\"0\");\n  expect(timestamps.preserveClass).to.equal(\"0\");\n  expect(timestamps.preserveClassBody).to.equal(\"0\");\n  expect(timestamps.preserveBodyClass).to.equal(\"10\");\n  expect(timestamps.preserveBodyClassBody).to.equal(\"0\");\n  expect(timestamps.componentClass).to.equal(\"0\");\n\n  // expect(newEls1.el != null).to.equal(true);\n  // expect(newEls1.el).to.equal(origEls.el);\n  // expect(newEls1.preserveEl1).to.equal(origEls.preserveEl1);\n  // expect(newEls1.preserveEl2).to.equal(origEls.preserveEl2);\n  // expect(newEls1.preserveEl1).to.equal(origEls.preserveEl1);\n  // expect(newEls1.preserveEl2).to.equal(origEls.preserveEl2);\n  //\n  //\n  // expect(newEls1.preserveBodyEl1).to.equal(origEls.preserveBodyEl1);\n  // expect(newEls1.preserveBodyEl2).to.equal(origEls.preserveBodyEl2);\n  //\n  // checkChildrenMatch(newEls1.preserveBodyEl1Children, origEls.preserveBodyEl1Children);\n  // checkChildrenMatch(newEls1.preserveBodyEl2Children, origEls.preserveBodyEl2Children);\n  //\n  // expect(newEls1.helloEl1).to.equal(origEls.helloEl1);\n  // expect(newEls1.helloEl2).to.equal(origEls.helloEl2);\n\n  renderId = 100;\n\n  // Do not preserve\n  component.input = {\n    preserveCondition: false,\n    renderId: renderId,\n  };\n  component.update();\n\n  timestamps = getTimestamps();\n  expect(timestamps.preserveId).to.equal(\"100\");\n  expect(timestamps.preserveIdBody).to.equal(\"100\");\n  expect(timestamps.preserveBodyId).to.equal(\"100\");\n  expect(timestamps.preserveBodyIdBody).to.equal(\"100\");\n  expect(timestamps.componentId).to.equal(\"100\");\n  expect(timestamps.preserveClass).to.equal(\"100\");\n  expect(timestamps.preserveClassBody).to.equal(\"100\");\n  expect(timestamps.preserveBodyClass).to.equal(\"100\");\n  expect(timestamps.preserveBodyClassBody).to.equal(\"100\");\n  expect(timestamps.componentClass).to.equal(\"100\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-preserve-dom-repeated/component.js",
    "content": "module.exports = {\n  onMount: function () {},\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-preserve-dom-repeated/index.marko",
    "content": "<div>\n    <for|color| of=[\"red\", \"green\", \"blue\"]>\n        <div no-update>${color}</div>\n    </for>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-preserve-dom-repeated/test.js",
    "content": "module.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  var oldChildren = helpers.nodeListToArray(component.el.childNodes);\n\n  component.forceUpdate();\n  component.update();\n\n  var newChildren = component.el.childNodes;\n  helpers.checkChildrenMatch(oldChildren, newChildren);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-preserve-dom-root/component.js",
    "content": "module.exports = {\n  onInput: function (input) {\n    this.state = {\n      name: input.name,\n      messageCount: input.messageCount,\n    };\n  },\n\n  getTemplateData: function (state) {\n    return {\n      name: state.name,\n      messageCount: state.messageCount,\n    };\n  },\n\n  setName: function (newName) {\n    this.setState(\"name\", newName);\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-preserve-dom-root/index.marko",
    "content": "<div no-update>\n\tHello ${input.name}! You have ${input.messageCount} new messages.\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-preserve-dom-root/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    name: \"Frank\",\n    messageCount: 30,\n  });\n\n  expect(component.el.innerHTML).to.contain(\"Frank\");\n  expect(component.el.innerHTML).to.contain(\"30\");\n\n  component.setName(\"John\");\n  component.update();\n\n  expect(component.el.innerHTML).to.not.contain(\"John\");\n  expect(component.el.innerHTML).to.contain(\"Frank\");\n  expect(component.el.innerHTML).to.contain(\"30\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-preserve-multiple-split/components/app-split/component-browser.js",
    "content": "window.mountCount = 0;\n\nmodule.exports = {\n  onMount: function () {\n    window.mountCount++;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-preserve-multiple-split/components/app-split/index.marko",
    "content": "<div/>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-preserve-multiple-split/index.marko",
    "content": "class {}\n\n<div no-update>\n    <app-split/>\n    <app-split/>\n    <app-split/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-preserve-multiple-split/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  helpers.mount(require.resolve(\"./index\"), {});\n  expect(window.mountCount).to.equal(3);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-render-to-iframe/component.js",
    "content": "var expect = require(\"chai\").expect;\nvar iframeContentComponent = require(\"./components/app-iframe-content\").default;\n\nmodule.exports = {\n  renderIntoIframe: function () {\n    var frameEl = this.getEl(\"frame\");\n    return iframeContentComponent\n      .renderSync({})\n      .appendTo(frameEl.contentWindow.document.body)\n      .getComponent();\n  },\n\n  test: function (helpers) {\n    var contentComponent = this.renderIntoIframe();\n    expect(contentComponent.el.ownerDocument).to.equal(\n      this.getEl(\"frame\").contentWindow.document,\n    );\n    expect(contentComponent.getEl(\"input\").value).to.equal(\"test\");\n    expect(contentComponent.getComponent(\"more\").getValue()).to.equal(\"hello\");\n\n    var buttonClick = false;\n\n    contentComponent.on(\"buttonClick\", function () {\n      buttonClick = true;\n    });\n\n    helpers.triggerMouseEvent(contentComponent.getEl(\"button\"), \"click\");\n\n    expect(buttonClick).to.equal(true);\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-render-to-iframe/components/app-iframe-content/index.marko",
    "content": "class {\n    handleButtonClick() {\n        this.emit('buttonClick');\n    }\n}\n\n<div>\n    <input key=\"input\" type=\"text\" value=\"test\" />\n    <button key=\"button\" on-click('handleButtonClick') />\n    <app-iframe-more-content key=\"more\" />\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-render-to-iframe/components/app-iframe-more-content/index.marko",
    "content": "class {\n    getValue() {\n\t\treturn this.getEl('input').value;\n\t}\n}\n\n<div>\n    <input key=\"input\" type=\"text\" value=\"hello\" />\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-render-to-iframe/index.marko",
    "content": "<div class=\"foo\">\n    <iframe key=\"frame\"></iframe>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-render-to-iframe/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-render-to-iframe/test.js",
    "content": "module.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  component.test(helpers);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-renderToString/component.js",
    "content": "var helloComponent = require(\"./components/hello\").default;\n\nmodule.exports = {\n  onMount: function () {\n    this.renderedHtml = helloComponent.renderToString({\n      name: this.input.name,\n    });\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-renderToString/components/hello.marko",
    "content": "<div class=\"hello\">\n    <div>${input.name}</div>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-renderToString/index.marko",
    "content": "<div>\n    <hello name=input.name/>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-renderToString/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    name: \"john\",\n  });\n\n  expect(component.renderedHtml).to.equal(\n    '<div class=\"hello\"><div>john</div></div>',\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-renderToString-callback-sync/component.js",
    "content": "var helloComponent = require(\"./components/hello\").default;\n\nmodule.exports = {\n  onMount: function () {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    var self = this;\n    helloComponent.renderToString(\n      {\n        name: this.input.name,\n      },\n      function (error, html) {\n        if (error) {\n          self.emit(\"renderError\", error);\n        } else {\n          self.emit(\"html\", html);\n        }\n      },\n    );\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-renderToString-callback-sync/components/hello/index.marko",
    "content": "<div>\n    <test-async name=input.name/>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-renderToString-callback-sync/components/test-async/renderer.js",
    "content": "module.exports = function (input, out) {\n  var asyncOut = out.beginAsync();\n  setTimeout(function () {\n    asyncOut.write(\"[async] \" + input.name);\n    asyncOut.end();\n  }, 10);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-renderToString-callback-sync/index.marko",
    "content": "<div>\n    <div name=input.name/>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-renderToString-callback-sync/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers, done) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    name: \"john\",\n  });\n\n  component.on(\"html\", function (renderedHtml) {\n    expect(renderedHtml).to.equal(\"<div>[async] john</div>\");\n    done();\n  });\n\n  component.on(\"error\", function (error) {\n    done(error);\n  });\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-renderToString-text-node/component.js",
    "content": "var myTextNodeComponent = require(\"./components/my-text-node\").default;\n\nmodule.exports = {\n  onMount: function () {\n    this.renderedHtml = myTextNodeComponent.renderToString();\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-renderToString-text-node/components/my-text-node.marko",
    "content": "-- hello\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-renderToString-text-node/index.marko",
    "content": "<div></div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-renderToString-text-node/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"));\n  expect(component.renderedHtml).to.equal(\"hello\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-replaceState/component.js",
    "content": "module.exports = {\n  onInput: function (input) {\n    this.state = {\n      heading: input.heading || \"\",\n      message: input.message || \"\",\n      colors: input.colors || [],\n    };\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-replaceState/index.marko",
    "content": "<div>\n    <h1>${state.heading}</h1>\n    <if(state.message)>\n        <h2>${state.message}</h2>\n    </if>\n    <ul>\n        <for|color| of=state.colors>\n            <li>${color}</li>\n        </for>\n    </ul>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-replaceState/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var states = {\n    original: {\n      heading: \"original colors\",\n      message: \"These are primary colors!\",\n      colors: [\"red\", \"green\", \"blue\"],\n    },\n    new: {\n      heading: \"new colors\",\n      colors: [\"orange\", \"yellow\", \"purple\"],\n    },\n  };\n\n  var component = helpers.mount(require.resolve(\"./index\"), states.original);\n\n  expect(component.state.heading).to.equal(states.original.heading);\n  expect(component.state.message).to.equal(states.original.message);\n  expect(component.state.colors).to.deep.equal(states.original.colors);\n\n  component.replaceState(states.new);\n  component.update();\n\n  expect(component.state.heading).to.equal(states.new.heading);\n  expect(component.state.message).to.equal(states.new.message); // undefined\n  expect(component.state.colors).to.deep.equal(states.new.colors);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-rerender-init-order/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    window.rerenderInitOrder.push(\"parent\");\n  },\n  onUpdate: function () {\n    window.rerenderInitOrder.push(\"parent\");\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-rerender-init-order/components/app-rerender-init-order-child/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    // console.log(module.id, 'init()', this.state);\n    window.rerenderInitOrder = window.rerenderInitOrder || [];\n    window.rerenderInitOrder.push(this.input.id);\n  },\n  onUpdate: function () {\n    // console.log(module.id, 'init()', this.state);\n    window.rerenderInitOrder.push(this.input.id);\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-rerender-init-order/components/app-rerender-init-order-child/index.marko",
    "content": "<div>\n    [app-rerender-init-order-child] ${input.id}\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-rerender-init-order/index.marko",
    "content": "<div>\n    [app-rerender-init-order]\n    <app-rerender-init-order-child key=\"childA\" id=\"childA\" version=input.version/>\n    <app-rerender-init-order-child key=\"childB\" id=\"childB\" version=input.version/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-rerender-init-order/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-rerender-init-order/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    version: 0,\n  });\n\n  expect(window.rerenderInitOrder).to.deep.equal([\n    \"childB\",\n    \"childA\",\n    \"parent\",\n  ]);\n\n  window.rerenderInitOrder = [];\n\n  component.input = { version: 1 };\n  component.update();\n\n  // console.log('ACTUAL ORDER: ', window.rerenderInitOrder);\n  expect(window.rerenderInitOrder).to.deep.equal([\n    \"childB\",\n    \"childA\",\n    \"parent\",\n  ]);\n\n  window.rerenderInitOrder = null;\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-rerender-reuse-stateful/components/hello/index.marko",
    "content": "class {\n    onMount() {\n        window.helloInstances = window.helloInstances || [];\n        window.helloInstances.push(this);\n    }\n\n    onInput(input) {\n        this.state = {\n            name: input.name\n        }\n    }\n}\n\n<div.hello key=\"root\">Hello ${state.name}</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-rerender-reuse-stateful/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = {\n            count: 0\n        };\n    }\n}\n\n<div key=\"root\">\n    <hello name=\"Jane\" key=\"hello1\"/>\n    <hello name=`John${state.count}` key=\"hello2\"/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-rerender-reuse-stateful/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-rerender-reuse-stateful/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  expect(window.helloInstances.length).to.equal(2);\n\n  var helloEls = component.getEl(\"root\").querySelectorAll(\".hello\");\n  expect(helloEls[0].innerHTML).to.equal(\"Hello Jane\");\n  expect(helloEls[1].innerHTML).to.equal(\"Hello John0\");\n\n  var hello1 = component.getComponent(\"hello1\");\n  var hello2 = component.getComponent(\"hello2\");\n\n  component.state.count++;\n  component.update();\n\n  // Make sure no more instances of the nested components were created\n  expect(window.helloInstances.length).to.equal(2);\n\n  // Make sure the UI components received the new state as part of onInput()\n  expect(hello1.state.name).to.equal(\"Jane\");\n  expect(hello2.state.name).to.equal(\"John1\");\n\n  // Make sure the HTML elements were reused\n  var helloElsAfter = component.getEl(\"root\").querySelectorAll(\".hello\");\n  expect(helloElsAfter[0]).to.equal(helloEls[0]);\n  expect(helloElsAfter[1]).to.equal(helloEls[1]);\n\n  // Make sure the DOM was updated\n  expect(helloElsAfter[0].innerHTML).to.equal(\"Hello Jane\");\n  expect(helloElsAfter[1].innerHTML).to.equal(\"Hello John1\");\n\n  window.helloInstances = undefined;\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-rerender-stateless-new-props/component.js",
    "content": "module.exports = {};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-rerender-stateless-new-props/index.marko",
    "content": "<div>\n\tHello ${input.name}! You have ${input.messageCount} new messages.\n\t<div key=\"foo\">foo</div>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-rerender-stateless-new-props/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var targetEl = helpers.targetEl;\n\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    name: \"Frank\",\n    messageCount: 10,\n  });\n\n  expect(targetEl.innerHTML).to.contain(\n    \"Hello Frank! You have 10 new messages.\",\n  );\n\n  component.input = {\n    name: \"John\",\n    messageCount: 20,\n  };\n\n  component.update();\n\n  expect(targetEl.innerHTML).to.contain(\n    \"Hello John! You have 20 new messages.\",\n  );\n\n  component.input = {\n    name: \"Jane\",\n    messageCount: 30,\n  };\n\n  expect(targetEl.innerHTML).to.contain(\n    \"Hello John! You have 20 new messages.\",\n  );\n\n  component.update();\n\n  expect(targetEl.innerHTML).to.contain(\n    \"Hello Jane! You have 30 new messages.\",\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-setStateDirty/component.js",
    "content": "module.exports = {\n  onInput: function (input) {\n    this.state = {\n      colors: input.colors || [],\n    };\n  },\n\n  addColor: function (color) {\n    this.state.colors.push(color);\n    this.setStateDirty(\"color\");\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-setStateDirty/index.marko",
    "content": "<ul>\n    <for|color| of=state.colors>\n        <li>${color}</li>\n    </for>\n</ul>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-setStateDirty/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    colors: [\"red\", \"green\", \"blue\"],\n  });\n\n  expect(component.el.innerHTML).to.contain(\"red\");\n  expect(component.el.innerHTML).to.contain(\"green\");\n  expect(component.el.innerHTML).to.contain(\"blue\");\n\n  component.addColor(\"orange\");\n  component.update();\n\n  expect(component.el.innerHTML).to.contain(\"red\");\n  expect(component.el.innerHTML).to.contain(\"green\");\n  expect(component.el.innerHTML).to.contain(\"blue\");\n  expect(component.el.innerHTML).to.contain(\"orange\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-stateful-copy-state-on-write/component.js",
    "content": "module.exports = {\n  onInput: function (input) {\n    this.state = {\n      size: input.size || \"normal\",\n      variant: input.variant || \"primary\",\n    };\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-stateful-copy-state-on-write/index.marko",
    "content": "<div>${__filename}</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-stateful-copy-state-on-write/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./\"), {});\n\n  var oldState = component.state.toJSON();\n  component.setState(\"foo\", \"bar\");\n\n  expect(component.state.toJSON()).to.not.equal(oldState);\n\n  oldState = component.state.toJSON();\n  component.setState(\"hello\", \"world\");\n  expect(component.state.toJSON()).to.equal(oldState);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-stateful-no-copy-state-on-write-if-same-value/component.js",
    "content": "module.exports = {\n  onInput: function (input) {\n    this.state = {\n      size: input.size || \"normal\",\n      label: input.label || \"(no label)\",\n    };\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-stateful-no-copy-state-on-write-if-same-value/index.marko",
    "content": "<div>\n    <span>${__filename}</span>\n    <span>${state.size}</span>\n    <span>${state.label}</span>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-stateful-no-copy-state-on-write-if-same-value/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    size: \"large\",\n    label: \"Initial Label\",\n  });\n\n  var oldState = component.state;\n  component.setState(\"size\", \"large\");\n  expect(component.state).to.equal(oldState);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-stateful-no-rerender-if-destroyed/component.js",
    "content": "module.exports = {\n  onInput: function (input) {\n    this.state = {\n      size: input.size || \"normal\",\n      label: input.label || \"(no label)\",\n    };\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-stateful-no-rerender-if-destroyed/index.marko",
    "content": "<div class=(\"button-\"+state.size)>\n    <span>${__filename}</span>\n    <span>${state.label}</span>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-stateful-no-rerender-if-destroyed/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    size: \"large\",\n    label: \"Initial Label\",\n  });\n\n  expect(component.el.className).to.contain(\"large\");\n\n  component.destroy();\n\n  expect(component.update() === undefined).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-stateful-preserve-body/component.js",
    "content": "module.exports = {\n  onInput: function () {\n    this.state = {\n      buttonLabel: \"Initial Button Label\",\n    };\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-stateful-preserve-body/components/app-stateful-button/component.js",
    "content": "module.exports = {\n  onInput: function (input) {\n    this.state = {\n      size: input.size || \"normal\",\n      label: input.label || \"(no label)\",\n    };\n  },\n\n  setSize: function (newSize) {\n    this.state.size = newSize;\n  },\n\n  setLabel: function (newLabel) {\n    this.state.label = newLabel;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-stateful-preserve-body/components/app-stateful-button/index.marko",
    "content": "<div class=(\"button-\"+state.size)>\n    <span>${__filename}</span>\n    <span.label>${state.label}</span>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-stateful-preserve-body/components/app-stateful-button/marko-tag.json",
    "content": "{\n  \"attributes\": {\n    \"label\": \"string\",\n    \"href\": \"string\",\n    \"variant\": {\n      \"type\": \"string\",\n      \"description\": \"primary | secondary\"\n    },\n    \"size\": {\n      \"type\": \"string\",\n      \"description\": \"small | normal | large\"\n    },\n    \"class\": {\n      \"type\": \"string\",\n      \"description\": \"Additional CSS class names\"\n    },\n    \"@*\": {\n      \"type\": \"string\",\n      \"target-property\": null\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-stateful-preserve-body/index.marko",
    "content": "<div class=\"app-stateful-preserve-body\">\n    <app-stateful-button size=\"large\" key=\"button1\" label=state.buttonLabel/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-stateful-preserve-body/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-stateful-preserve-body/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  var button1Component = component.getComponent(\"button1\");\n\n  expect(button1Component.el.innerHTML).to.contain(\"Initial Button Label\");\n  expect(button1Component.el.className).to.contain(\"large\");\n\n  button1Component.setSize(\"small\");\n  button1Component.update();\n\n  expect(button1Component.el.innerHTML).to.contain(\"Initial Button Label\");\n  expect(button1Component.el.className).to.contain(\"small\");\n\n  component.setState(\"buttonLabel\", \"New Button Label\");\n  component.update();\n\n  expect(button1Component.el.innerHTML).to.contain(\"New Button Label\");\n  expect(button1Component.el.className).to.contain(\"large\"); // Size will revert back to large since it was not driven by state\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-stateful-update/component.js",
    "content": "module.exports = {\n  onInput: function (input) {\n    this.state = {\n      size: input.size || \"normal\",\n      variant: input.variant || \"primary\",\n    };\n  },\n\n  handleClick: function (event) {\n    // Every Component instance is also an EventEmitter instance.\n    // We will emit a custom \"click\" event when a DOM click event\n    // is triggered\n    this.emit(\"click\", {\n      event: event, // Pass along the DOM event in case it is helpful to others\n    });\n  },\n\n  // Add any other methods here\n  setVariant: function (variant) {\n    this.setState(\"variant\", variant);\n  },\n\n  setSize: function (size) {\n    this.setState(\"size\", size);\n  },\n\n  getSize: function () {\n    return this.state.size;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-stateful-update/index.marko",
    "content": "$ var classes = [\n    input.class,\n    \"app-button\",\n    state.size !== \"normal\" && \"app-button-\" + state.size,\n    state.variant !== \"primary\" && \"app-button-\" + state.variant\n];\n<button ...input[\"*\"] class=classes onClick(\"handleClick\")>\n    <if(input.label)>\n        ${input.label}\n    </if>\n    <else>\n        <${input.renderBody}/>\n    </else>\n</button>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-stateful-update/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    size: \"large\",\n    label: \"Initial Label\",\n  });\n\n  expect(component.el.className).to.contain(\"large\");\n\n  component.setSize(\"small\");\n  component.update();\n\n  expect(component.el.className).to.contain(\"small\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-stateful-update-handler/component.js",
    "content": "module.exports = {\n  onInput: function () {\n    this.state = {\n      buttonSize: \"small\",\n      buttonLabel: \"Initial Label\",\n    };\n  },\n\n  update_buttonSize: function (newSize) {\n    var button1Component = this.getComponent(\"button1\");\n    button1Component.setSize(newSize);\n    button1Component.update();\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-stateful-update-handler/components/app-stateful-button/component.js",
    "content": "module.exports = {\n  onInput: function (input) {\n    this.state = {\n      size: input.size || \"normal\",\n      label: input.label || \"(no label)\",\n    };\n  },\n\n  setSize: function (newSize) {\n    this.state.size = newSize;\n  },\n\n  setLabel: function (newLabel) {\n    this.state.label = newLabel;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-stateful-update-handler/components/app-stateful-button/index.marko",
    "content": "<div class=(\"button-\"+state.size)>\n    <span>${__filename}</span>\n    <span.label>${state.label}</span>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-stateful-update-handler/components/app-stateful-button/marko-tag.json",
    "content": "{\n  \"attributes\": {\n    \"label\": \"string\",\n    \"href\": \"string\",\n    \"variant\": {\n      \"type\": \"string\",\n      \"description\": \"primary | secondary\"\n    },\n    \"size\": {\n      \"type\": \"string\",\n      \"description\": \"small | normal | large\"\n    },\n    \"class\": {\n      \"type\": \"string\",\n      \"description\": \"Additional CSS class names\"\n    },\n    \"*\": {\n      \"type\": \"string\",\n      \"target-property\": null\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-stateful-update-handler/index.marko",
    "content": "<div>\n    <app-stateful-button size=state.buttonSize key=\"button1\" label=state.buttonLabel/>\n    <app-stateful-button size=state.buttonSize key=\"button2\" label=state.buttonLabel/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-stateful-update-handler/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-stateful-update-handler/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  var oldEl = component.el;\n\n  var button1Component = component.getComponent(\"button1\");\n  var button2Component = component.getComponent(\"button2\");\n\n  expect(button1Component.el.className).to.contain(\"small\");\n  expect(button2Component.el.className).to.contain(\"small\");\n\n  expect(button1Component.el.innerHTML).to.contain(\"Initial Label\");\n  expect(button2Component.el.innerHTML).to.contain(\"Initial Label\");\n\n  component.setState(\"buttonSize\", \"large\");\n  component.update();\n\n  expect(button1Component).to.equal(component.getComponent(\"button1\"));\n  expect(button2Component).to.equal(component.getComponent(\"button2\"));\n\n  expect(button1Component.el.className).to.contain(\"large\");\n  expect(button2Component.el.className).to.contain(\"small\");\n\n  expect(button1Component.el.innerHTML).to.contain(\"Initial Label\");\n  expect(button2Component.el.innerHTML).to.contain(\"Initial Label\");\n\n  expect(component.el).to.equal(oldEl);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-stateful-update-handler-no-match/component.js",
    "content": "module.exports = {\n  onInput: function () {\n    this.state = {\n      buttonSize: \"small\",\n      buttonLabel: \"Initial Label\",\n    };\n  },\n\n  update_buttonSize: function (newSize) {\n    var button1Component = this.getComponent(\"button1\");\n    button1Component.setSize(newSize);\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-stateful-update-handler-no-match/components/app-stateful-button/component.js",
    "content": "module.exports = {\n  onInput: function (input) {\n    this.state = {\n      size: input.size || \"normal\",\n      label: input.label || \"(no label)\",\n    };\n  },\n\n  setSize: function (newSize) {\n    this.state.size = newSize;\n  },\n\n  setLabel: function (newLabel) {\n    this.state.label = newLabel;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-stateful-update-handler-no-match/components/app-stateful-button/index.marko",
    "content": "<div class=(\"button-\"+state.size)>\n    <span>${__filename}</span>\n    <span.label>${state.label}</span>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-stateful-update-handler-no-match/components/app-stateful-button/marko-tag.json",
    "content": "{\n  \"attributes\": {\n    \"label\": \"string\",\n    \"href\": \"string\",\n    \"variant\": {\n      \"type\": \"string\",\n      \"description\": \"primary | secondary\"\n    },\n    \"size\": {\n      \"type\": \"string\",\n      \"description\": \"small | normal | large\"\n    },\n    \"class\": {\n      \"type\": \"string\",\n      \"description\": \"Additional CSS class names\"\n    },\n    \"@*\": {\n      \"type\": \"string\",\n      \"target-property\": null\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-stateful-update-handler-no-match/index.marko",
    "content": "<div>\n    <app-stateful-button size=state.buttonSize key=\"button1\" label=state.buttonLabel/>\n    <app-stateful-button size=state.buttonSize key=\"button2\" label=state.buttonLabel/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-stateful-update-handler-no-match/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-stateful-update-handler-no-match/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  var oldEl = component.el;\n\n  var button1Component = component.getComponent(\"button1\");\n  var button2Component = component.getComponent(\"button2\");\n\n  expect(button1Component.el.className).to.contain(\"small\");\n  expect(button2Component.el.className).to.contain(\"small\");\n\n  expect(button1Component.el.innerHTML).to.contain(\"Initial Label\");\n  expect(button2Component.el.innerHTML).to.contain(\"Initial Label\");\n\n  component.setState(\"buttonSize\", \"large\");\n  component.setState(\"buttonLabel\", \"New Label\"); // buttonLabel does not have an update handler\n  component.update();\n\n  expect(button1Component.el.className).to.contain(\"large\");\n  expect(button2Component.el.className).to.contain(\"large\");\n\n  expect(button1Component.el.innerHTML).to.contain(\"New Label\");\n  expect(button2Component.el.innerHTML).to.contain(\"New Label\");\n\n  expect(component.el).to.equal(oldEl);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-stateful-update-on-mount/component.js",
    "content": "module.exports = {\n  onCreate() {\n    this.state = { mounted: false };\n  },\n  onMount() {\n    this.state.mounted = true;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-stateful-update-on-mount/index.marko",
    "content": "<div key=\"root\">Is Mounted: ${state.mounted}</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-stateful-update-on-mount/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers, done) {\n  var component = helpers.mount(require.resolve(\"./index\"));\n  setTimeout(function () {\n    expect(component.getEl(\"root\").innerHTML).to.contain(\"Mounted: true\");\n    done();\n  });\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-stopPropagation/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    this.divClicked = false;\n    this.buttonClicked = false;\n  },\n\n  handleDivClick: function () {\n    this.divClicked = true;\n  },\n\n  handleButtonClick: function (event) {\n    this.buttonClicked = true;\n    event.stopPropagation();\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-stopPropagation/index.marko",
    "content": "<div>\n\t<div onClick(\"handleDivClick\")>\n\t\tHello\n\t\t<button key=\"button\" type=\"button\" onClick(\"handleButtonClick\")>\n\t\t\tButton\n\t\t</button>\n\t</div>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-stopPropagation/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  helpers.triggerClick(component.getEl(\"button\"));\n  expect(component.divClicked).to.equal(false);\n  expect(component.buttonClicked).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-subscribeTo-destroy-subscriber/component.js",
    "content": "module.exports = {\n  onMount: function () {},\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-subscribeTo-destroy-subscriber/index.marko",
    "content": "div\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-subscribeTo-destroy-subscriber/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component1 = helpers.mount(require.resolve(\"./index\"), {});\n  var component2 = helpers.mount(require.resolve(\"./index\"), {});\n\n  var fooEvent = null;\n  var fooEventThis = null;\n\n  component1.subscribeTo(component2).on(\"foo\", function fooListener() {\n    fooEvent = arguments;\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    fooEventThis = this;\n  });\n\n  component2.emit(\"foo\", \"a\", \"b\");\n\n  expect(fooEvent[0]).to.equal(\"a\");\n  expect(fooEvent[1]).to.equal(\"b\");\n  expect(fooEventThis).to.equal(component2);\n\n  fooEvent = null;\n\n  component1.destroy();\n\n  component2.emit(\"foo\", \"a\", \"b\");\n\n  expect(fooEvent).to.equal(null);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-subscribeTo-destroy-target/component.js",
    "content": "module.exports = {\n  onMount: function () {},\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-subscribeTo-destroy-target/index.marko",
    "content": "div\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-subscribeTo-destroy-target/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component1 = helpers.mount(require.resolve(\"./index\"), {});\n  var component2 = helpers.mount(require.resolve(\"./index\"), {});\n\n  var fooEvent = null;\n  var fooEventThis = null;\n\n  component1.subscribeTo(component2).on(\"foo\", function fooListener() {\n    fooEvent = arguments;\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    fooEventThis = this;\n  });\n\n  component2.emit(\"foo\", \"a\", \"b\");\n\n  expect(fooEvent[0]).to.equal(\"a\");\n  expect(fooEvent[1]).to.equal(\"b\");\n  expect(fooEventThis).to.equal(component2);\n\n  fooEvent = null;\n\n  component2.destroy();\n\n  component2.emit(\"foo\", \"a\", \"b\");\n\n  expect(fooEvent).to.equal(null);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-toggle-spread-attributes/component.js",
    "content": "module.exports = {\n  onCreate: function () {\n    this.state = { attrs: {} };\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-toggle-spread-attributes/index.marko",
    "content": "<button ...state.attrs/>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-toggle-spread-attributes/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  var root = component.el;\n  expect(root.outerHTML).to.equal(\"<button></button>\");\n\n  component.setState(\"attrs\", { \"aria-pressed\": true });\n  component.update();\n  expect(root.outerHTML).to.equal('<button aria-pressed=\"\"></button>');\n\n  component.setState(\"attrs\", { \"aria-pressed\": null });\n  component.update();\n  expect(root.outerHTML).to.equal(\"<button></button>\");\n\n  component.setState(\"attrs\", { \"aria-pressed\": true });\n  component.update();\n  expect(root.outerHTML).to.equal('<button aria-pressed=\"\"></button>');\n\n  component.setState(\"attrs\", { \"aria-pressed\": false });\n  component.update();\n  expect(root.outerHTML).to.equal(\"<button></button>\");\n\n  component.setState(\"attrs\", { \"aria-pressed\": undefined });\n  component.update();\n  expect(root.outerHTML).to.equal(\"<button></button>\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-transclusion/component.js",
    "content": "module.exports = {\n  onInput: function (input) {\n    var alertType = input.alertType || \"success\";\n    var alertMessage = input.alertMessage || \"Hello World!\";\n\n    this.state = {\n      alertType: alertType,\n      alertMessage: alertMessage,\n    };\n  },\n\n  setAlertType: function (newAlertType) {\n    this.setState(\"alertType\", newAlertType);\n  },\n\n  setAlertMessage: function (newAlertMessage) {\n    this.setState(\"alertMessage\", newAlertMessage);\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-transclusion/components/app-transclusion-alert/component.js",
    "content": "module.exports = {\n  onInput: function (input) {\n    this.state = {\n      type: input.type || \"success\",\n      body: input.message || input.renderBody,\n    };\n  },\n\n  setType: function (newType) {\n    this.setState(\"type\", newType);\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-transclusion/components/app-transclusion-alert/index.marko",
    "content": "$ var type = state.type;\n$ var className = \"alert alert-\" + type;\n<div class=className role=\"alert\">\n    <div>\n        <h1>ALERT! ${type}</h1>\n        <div>\n            <if(typeof state.body === \"string\")>${state.body}</if>\n            <else>\n                <${state.body}/>\n            </else>\n        </div>\n    </div>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-transclusion/components/app-transclusion-alert/marko-tag.json",
    "content": "{\n  \"@type\": \"string\",\n  \"@message\": \"string\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-transclusion/index.marko",
    "content": "$ var alertType=state.alertType\n$ var alertMessage=state.alertMessage\n\n<div>\n    <app-transclusion-alert type=alertType>\n        <p>\n            <b>${alertType}</b> ${alertMessage}\n        </p>\n    </app-transclusion-alert>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-transclusion/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-transclusion/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  var el = component.el;\n  var originalH1Html = el.querySelector(\"h1\").innerHTML;\n\n  expect(el.innerHTML).to.contain(\"alert alert-success\");\n\n  // The inner HTML for the H1 should not change since only the body content changed\n  component.setAlertMessage(\"Hello Universe\");\n  component.update();\n\n  expect(el.querySelector(\"h1\").innerHTML).to.equal(originalH1Html);\n  expect(el.querySelector(\"h1\").innerHTML).to.contain(\"success\");\n  expect(el.querySelector(\".alert\").className).to.contain(\n    \"alert alert-success\",\n  );\n\n  // The inner HTML for the H1 should change since the state of the alert component changed\n  component.setAlertType(\"failure\");\n  component.update();\n\n  expect(el.querySelector(\"h1\").innerHTML).to.not.equal(originalH1Html);\n  expect(el.querySelector(\"h1\").innerHTML).to.contain(\"failure\");\n  expect(el.querySelector(\".alert\").className).to.contain(\n    \"alert alert-failure\",\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-unescaped-html/index.marko",
    "content": "class {\n\n  onCreate() {\n    this.state = {\n      html: \"<input type='text' name='test' value='x' />\"\n    }\n  }\n}\n\n<div>$!{state.html}</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-unescaped-html/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  expect(component.el.childNodes.length).to.equal(1);\n  expect(component.el.firstChild.nodeName).to.equal(\"INPUT\");\n  expect(component.el.firstChild.value).to.equal(\"x\");\n\n  component.state.html = \"<textarea>HELLO WORLD!</textarea>\";\n  component.update();\n\n  expect(component.el.childNodes.length).to.equal(1);\n  expect(component.el.firstChild.nodeName).to.equal(\"TEXTAREA\");\n  expect(component.el.firstChild.value).to.equal(\"HELLO WORLD!\");\n\n  component.state.html =\n    '<select><option value=\"1\">One</option><option value=\"2\" selected>Two</option></select>';\n  component.update();\n\n  expect(component.el.childNodes.length).to.equal(1);\n  expect(component.el.firstChild.nodeName).to.equal(\"SELECT\");\n  expect(component.el.firstChild.selectedIndex).to.equal(1);\n\n  component.state.html =\n    '<!-- A comment -->';\n  component.update();\n\n  expect(component.el.childNodes.length).to.equal(1);\n  expect(component.el.firstChild.nodeType).to.equal(Node.COMMENT_NODE);\n  expect(component.el.firstChild.data).to.equal(\" A comment \");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-unique-id/component.js",
    "content": "module.exports = {\n  onMount: function () {},\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-unique-id/index.marko",
    "content": "div"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-unique-id/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var components = [];\n\n  function renderComponent() {\n    var component = helpers.mount(require.resolve(\"./index\"), {});\n    components.push(component);\n  }\n\n  renderComponent();\n  renderComponent();\n  renderComponent();\n\n  var ids = {};\n  components.forEach(function (component) {\n    ids[component.id] = true;\n  });\n\n  expect(components.length).to.equal(3);\n  expect(Object.keys(ids).length).to.equal(components.length);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-update-batch-not-empty/components/counter.marko",
    "content": "class {\n    onCreate(input) {\n        this.state = {\n            count: 0\n        }\n    }\n    handleClick() {\n        this.state.count++;\n        this.once('update', () => {\n            this.emit('change', this.state.count);\n        });\n    }\n}\n\n<button key=\"button\" on-click('handleClick')>${state.count}</button>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-update-batch-not-empty/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = {\n            count: 0\n        }\n    }\n    handleCountChange(value) {\n        this.state.count = value\n    }\n}\n\n<counter key=\"counter\" on-change('handleCountChange')/>\n<div>${state.count}</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-update-batch-not-empty/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers, done) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  var counter = component.getComponent(\"counter\");\n  var button = counter.getEl(\"button\");\n\n  expect(component.state.count).to.equal(0);\n  expect(counter.state.count).to.equal(0);\n  button.click();\n\n  setTimeout(() => {\n    expect(component.state.count).to.equal(1);\n    expect(counter.state.count).to.equal(1);\n    done();\n  }, 100);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-var/index.marko",
    "content": "class {\n    getFullName() {\n        return this.input.firstName + ' ' + this.input.lastName;\n    }\n}\n\n<div>Hello ${component.getFullName()}!</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/component-var/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index.marko\"), {\n    firstName: \"John\",\n    lastName: \"Doe\",\n  });\n\n  expect(component.el.innerHTML).to.contain(\"Hello John Doe!\");\n\n  component.input = {\n    firstName: \"Jane\",\n    lastName: \"Doe\",\n  };\n\n  component.update();\n\n  expect(component.el.innerHTML).to.contain(\"Hello Jane Doe!\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    this.name = \"app-foo\";\n    this.getComponent(\"bar\").appendHtml(\"FOO\");\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events/components/app-bar/component.js",
    "content": "module.exports = {\n  onInput: function (input) {\n    this.label = input.label;\n  },\n\n  onMount: function () {\n    this.name = \"app-bar\";\n\n    var el = this.el;\n\n    this.appendHtml = function (html) {\n      el.innerHTML += html;\n    };\n  },\n\n  emitTestEvent: function () {\n    this.emit(\"testEvent\", \"a\", \"b\");\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events/components/app-bar/index.marko",
    "content": "<div class=\"bar\">\n    ${input.label}\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events/components/app-custom-events/component.js",
    "content": "var pubsub = require(\"../../../../../__util__/pubsub\");\n\nmodule.exports = {\n  onInput: function (input) {\n    this.name = input.name;\n    this.channel = input.channel;\n  },\n\n  onMount: function () {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    var self = this;\n\n    if (this.channel) {\n      pubsub.channel(this.channel).on(\"emitTestEvent2\", function () {\n        self.emitTestEvent2();\n      });\n    }\n  },\n\n  emitTestEvent1: function () {\n    this.emit(\"testEvent\", \"a\", \"b\");\n  },\n\n  emitTestEvent2: function () {\n    this.emit(\"testEvent\");\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events/components/app-custom-events/index.marko",
    "content": "<div class=\"bar\">\n    ${input.label}\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events/index.marko",
    "content": "<div class=\"foo\">\n    <app-bar key=\"bar\"/>\n    <app-bar key=\"bar2\"/>\n    <app-bar key=\"barArray[]\" label=\"1\"/>\n    <app-bar key=\"barArray[]\" label=\"2\"/>\n    <app-custom-events onTestEvent(\"handleTestEvent1\") key=\"customEvents\"/>\n    <app-custom-events\n        onTestEvent(\"handleTestEvent2\")\n        channel=`customEvents-${component.id}`/>\n    <ul>\n        <for|color| of=[\"red\", \"green\", \"blue\"]>\n            <li key=\"colorListItems[]\">${color}</li>\n        </for>\n    </ul>\n    <span class=\"config\" key=\"config\"/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  var testEventFired = false;\n\n  component.getComponent(\"bar\").on(\"testEvent\", function (a, b) {\n    expect(a).to.equal(\"a\");\n    expect(b).to.equal(\"b\");\n    testEventFired = true;\n  });\n\n  component.getComponent(\"bar\").emitTestEvent();\n\n  expect(testEventFired).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events-declarative/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    this.name = \"app-foo\";\n    this.getComponent(\"bar\").appendHtml(\"FOO\");\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events-declarative/components/app-bar/index.marko",
    "content": "class {\n    onMount() {\n        this.name = 'app-bar';\n\n        var el = this.el;\n\n        this.appendHtml = function(html) {\n            el.innerHTML += html;\n        };\n    }\n\n    emitTestEvent() {\n        this.emit('testEvent', 'a', 'b');\n    }\n}\n\n<div class=\"bar\">\n    ${input.label}\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events-declarative/components/app-custom-events/component.js",
    "content": "var pubsub = require(\"../../../../../__util__/pubsub\");\n\nmodule.exports = {\n  onInput: function (input) {\n    this.name = input.name;\n    this.channel = input.channel;\n  },\n\n  onMount: function () {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    var self = this;\n\n    if (this.channel) {\n      pubsub.channel(this.channel).on(\"emitTestEvent2\", function () {\n        self.emitTestEvent2();\n      });\n    }\n  },\n\n  emitTestEvent1: function () {\n    this.emit(\"testEvent\", \"a\", \"b\");\n  },\n\n  emitTestEvent2: function () {\n    this.emit(\"testEvent\");\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events-declarative/components/app-custom-events/index.marko",
    "content": "<div class=\"bar\">\n    ${input.label}\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events-declarative/index.marko",
    "content": "<div class=\"foo\">\n    <app-bar key=\"bar\"/>\n    <app-bar key=\"bar2\"/>\n    <app-bar key=\"barArray[]\" label=\"1\"/>\n    <app-bar key=\"barArray[]\" label=\"2\"/>\n    <app-custom-events onTestEvent(\"handleTestEvent1\") key=\"customEvents\"/>\n    <app-custom-events\n        onTestEvent(\"handleTestEvent2\")\n        channel=`customEvents-${component.id}`/>\n    <ul>\n        <for|color| of=[\"red\", \"green\", \"blue\"]>\n            <li key=\"colorListItems[]\">${color}</li>\n        </for>\n    </ul>\n    <span class=\"config\" key=\"config\"/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events-declarative/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events-declarative/test.js",
    "content": "var expect = require(\"chai\").expect;\nvar pubsub = require(\"../../../__util__/pubsub\");\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  var received1 = [];\n  var received2 = [];\n\n  component.handleTestEvent1 = function () {\n    received1.push({\n      args: arguments,\n      component: arguments[arguments.length - 1],\n    });\n  };\n\n  component.handleTestEvent2 = function () {\n    received2.push({\n      args: arguments,\n      component: arguments[arguments.length - 1],\n    });\n  };\n\n  component.getComponent(\"customEvents\").emitTestEvent1();\n  expect(received1.length).to.equal(1);\n  expect(received1[0].args.length).to.equal(3); // ['a', 'b', sourceComponent]\n  expect(received1[0].component).to.equal(\n    component.getComponent(\"customEvents\"),\n  );\n\n  pubsub.channel(\"customEvents-\" + component.id).emit(\"emitTestEvent2\");\n\n  expect(received1.length).to.equal(1);\n  expect(received2.length).to.equal(1);\n\n  expect(received2[0].args.length).to.equal(1); // [sourceComponent]\n  expect(received2[0].component).to.be.an(\"object\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events-declarative-function/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    this.name = \"app-foo\";\n    this.getComponent(\"bar\").appendHtml(\"FOO\");\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events-declarative-function/components/app-bar/index.marko",
    "content": "class {\n    onMount() {\n        this.name = 'app-bar';\n\n        var el = this.el;\n\n        this.appendHtml = function(html) {\n            el.innerHTML += html;\n        };\n    }\n\n    emitTestEvent() {\n        this.emit('testEvent', 'a', 'b');\n    }\n}\n\n<div class=\"bar\">\n    ${input.label}\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events-declarative-function/components/app-bar/renderer.js",
    "content": "module.exports = {};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events-declarative-function/components/app-custom-events/component.js",
    "content": "var pubsub = require(\"../../../../../__util__/pubsub\");\n\nmodule.exports = {\n  onInput: function (input) {\n    this.name = input.name;\n    this.channel = input.channel;\n  },\n\n  onMount: function () {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    var self = this;\n\n    if (this.channel) {\n      pubsub.channel(this.channel).on(\"emitTestEvent2\", function () {\n        self.emitTestEvent2();\n      });\n    }\n  },\n\n  emitTestEvent1: function () {\n    this.emit(\"testEvent\", \"a\", \"b\");\n  },\n\n  emitTestEvent2: function () {\n    this.emit(\"testEvent\");\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events-declarative-function/components/app-custom-events/index.marko",
    "content": "<div class=\"bar\">\n    ${input.label}\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events-declarative-function/index.marko",
    "content": "static function handleTestEvent1() {\n    window.received1.push({\n        args: arguments,\n        component: arguments[arguments.length - 1]\n    });\n}\nstatic function handleTestEvent2() {\n    window.received2.push({\n        args: arguments,\n        component: arguments[arguments.length - 1]\n    });\n}\n\n<div class=\"foo\">\n    <app-bar key=\"bar\"/>\n    <app-bar key=\"bar2\"/>\n    <app-bar key=\"barArray[]\" label=\"1\"/>\n    <app-bar key=\"barArray[]\" label=\"2\"/>\n    <app-custom-events onTestEvent(handleTestEvent1) key=\"customEvents\"/>\n    <app-custom-events\n        onTestEvent(handleTestEvent2)\n        channel=`customEvents-${component.id}`/>\n    <ul>\n        <for|color| of=[\"red\", \"green\", \"blue\"]>\n            <li key=\"colorListItems[]\">${color}</li>\n        </for>\n    </ul>\n    <span class=\"config\" key=\"config\"/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events-declarative-function/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events-declarative-function/test.js",
    "content": "var expect = require(\"chai\").expect;\nvar pubsub = require(\"../../../__util__/pubsub\");\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  window.received1 = [];\n  window.received2 = [];\n\n  component.getComponent(\"customEvents\").emitTestEvent1();\n  expect(window.received1.length).to.equal(1);\n  expect(window.received1[0].args.length).to.equal(3); // ['a', 'b', sourceComponent]\n  expect(window.received1[0].component).to.equal(\n    component.getComponent(\"customEvents\"),\n  );\n\n  pubsub.channel(\"customEvents-\" + component.id).emit(\"emitTestEvent2\");\n\n  expect(window.received1.length).to.equal(1);\n  expect(window.received2.length).to.equal(1);\n\n  expect(window.received2[0].args.length).to.equal(1); // [sourceComponent]\n  expect(window.received2[0].component).to.be.an(\"object\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events-declarative-multiple/components/app-bar/index.marko",
    "content": "class {\n    emitTestEvent1() {\n        this.emit('testEvent1');\n    }\n\n    emitTestEvent2() {\n        this.emit('testEvent2');\n    }\n};\n\n<div class=\"bar\">\n    [app-bar]\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events-declarative-multiple/index.marko",
    "content": "import { expect } from 'chai';\n\nclass {\n    onCreate() {\n        this.testEvent1Fired = false;\n        this.testEvent2Fired = false;\n\n    }\n    handleTestEvent1(arg1, arg2) {\n        expect(arg1).to.equal('a');\n        expect(arg2).to.equal('b');\n        this.testEvent1Fired = true;\n    }\n\n    handleTestEvent2(arg1, arg2) {\n        expect(arg1).to.equal('c');\n        expect(arg2).to.equal('d');\n        this.testEvent2Fired = true;\n    }\n}\n\n<div>\n    <app-bar key=\"bar\" on-testEvent1('handleTestEvent1', 'a', 'b') on-testEvent2('handleTestEvent2', 'c', 'd')/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events-declarative-multiple/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  component.getComponent(\"bar\").emitTestEvent1();\n\n  expect(component.testEvent1Fired).to.equal(true);\n\n  component.getComponent(\"bar\").emitTestEvent2();\n\n  expect(component.testEvent2Fired).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events-declarative-multiple-once/components/app-bar/index.marko",
    "content": "class {\n    emitTestEvent1() {\n        this.emit('testEvent1');\n    }\n\n    emitTestEvent2() {\n        this.emit('testEvent2');\n    }\n};\n\n<div class=\"bar\">\n    [app-bar]\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events-declarative-multiple-once/index.marko",
    "content": "import { expect } from 'chai';\n\nclass {\n    onCreate() {\n        this.testEvent1Fired = 0;\n        this.testEvent2Fired = 0;\n\n    }\n    handleTestEvent1(arg1, arg2) {\n        expect(arg1).to.equal('a');\n        expect(arg2).to.equal('b');\n        this.testEvent1Fired++;\n    }\n\n    handleTestEvent2(arg1, arg2) {\n        expect(arg1).to.equal('c');\n        expect(arg2).to.equal('d');\n        this.testEvent2Fired++;\n    }\n}\n\n<div>\n    <app-bar key=\"bar\" once-testEvent1('handleTestEvent1', 'a', 'b') once-testEvent2('handleTestEvent2', 'c', 'd')/>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events-declarative-multiple-once/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  component.getComponent(\"bar\").emitTestEvent1();\n  component.getComponent(\"bar\").emitTestEvent1();\n\n  expect(component.testEvent1Fired).to.equal(1);\n\n  component.getComponent(\"bar\").emitTestEvent2();\n  component.getComponent(\"bar\").emitTestEvent2();\n\n  expect(component.testEvent2Fired).to.equal(1);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events-declaritive-once/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    this.name = \"app-foo\";\n    this.getComponent(\"bar\").appendHtml(\"FOO\");\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events-declaritive-once/components/app-bar/component.js",
    "content": "module.exports = {\n  onInput: function (input) {\n    this.label = input.label;\n  },\n\n  onMount: function () {\n    this.name = \"app-bar\";\n\n    var el = this.el;\n\n    this.appendHtml = function (html) {\n      el.innerHTML += html;\n    };\n  },\n\n  emitTestEvent: function () {\n    this.emit(\"testEvent\", \"a\", \"b\");\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events-declaritive-once/components/app-bar/index.marko",
    "content": "<div class=\"bar\">\n    ${input.label}\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events-declaritive-once/index.marko",
    "content": "<div class=\"foo\">\n    <app-bar key=\"bar\" once-testEvent(\"handleTestEvent1\")/>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events-declaritive-once/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events-declaritive-once/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  var numTestEventFired = 0;\n\n  component.handleTestEvent1 = function (a, b) {\n    expect(a).to.equal(\"a\");\n    expect(b).to.equal(\"b\");\n    numTestEventFired++;\n  };\n\n  component.getComponent(\"bar\").emitTestEvent();\n  component.getComponent(\"bar\").emitTestEvent();\n\n  expect(numTestEventFired).to.equal(1);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events-repeated-component/components/item/index.marko",
    "content": "import lookup from '../../lookup';\n\nclass {\n    onMount() {\n        var item = this.input.item;\n        lookup.addComponent(item.id, this);\n    }\n\n    emitPurchase() {\n        var item = this.input.item;\n        this.emit('purchase', item);\n    }\n}\n\n$ var item = input.item;\n\n<div.item>\n    <span.title>${item.title}</span>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events-repeated-component/index.marko",
    "content": "class {\n    onMount() {\n        this.purchaseEvents = [];\n    }\n\n    handleItemPurchase(item) {\n        this.purchaseEvents.push(item);\n    }\n}\n\n<div>\n    <for|item| of=input.items>\n        <item item=item on-purchase(\"handleItemPurchase\")/>\n    </for>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events-repeated-component/lookup.js",
    "content": "var componentsById = {};\n\nexports.addComponent = function (itemId, component) {\n  componentsById[itemId] = component;\n};\n\nexports.componentsById = componentsById;\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events-repeated-component/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events-repeated-component/test.js",
    "content": "var expect = require(\"chai\").expect;\nvar lookup = require(\"./lookup\");\n\nvar items = [\n  {\n    id: 0,\n    title: \"Item 1\",\n  },\n  {\n    id: 1,\n    title: \"Item 2\",\n  },\n  {\n    id: 2,\n    title: \"Item 3\",\n  },\n];\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    items: items,\n  });\n\n  expect(Object.keys(lookup.componentsById).length).to.equal(3);\n\n  expect(lookup.componentsById[0].id).to.not.equal(lookup.componentsById[1].id);\n\n  lookup.componentsById[0].emitPurchase();\n  expect(component.purchaseEvents).to.deep.equal([\n    {\n      id: 0,\n      title: \"Item 1\",\n    },\n  ]);\n\n  lookup.componentsById[1].emitPurchase();\n  expect(component.purchaseEvents).to.deep.equal([\n    {\n      id: 0,\n      title: \"Item 1\",\n    },\n    {\n      id: 1,\n      title: \"Item 2\",\n    },\n  ]);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events-repeated-component-once/components/item/index.marko",
    "content": "import lookup from '../../lookup';\n\nclass {\n    onMount() {\n        var item = this.input.item;\n        lookup.addComponent(item.id, this);\n    }\n\n    emitPurchase() {\n        var item = this.input.item;\n        this.emit('purchase', item);\n    }\n}\n\n$ var item = input.item;\n\n<div.item>\n    <span.title>${item.title}</span>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events-repeated-component-once/index.marko",
    "content": "class {\n    onMount() {\n        this.purchaseEvents = [];\n    }\n\n    handleItemPurchase(item) {\n        this.purchaseEvents.push(item);\n    }\n}\n\n<div>\n    <for|item| of=input.items>\n        <item item=item once-purchase(\"handleItemPurchase\")/>\n    </for>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events-repeated-component-once/lookup.js",
    "content": "var componentsById = {};\n\nexports.addComponent = function (itemId, component) {\n  componentsById[itemId] = component;\n};\n\nexports.componentsById = componentsById;\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events-repeated-component-once/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/custom-events-repeated-component-once/test.js",
    "content": "var expect = require(\"chai\").expect;\nvar lookup = require(\"./lookup\");\n\nvar items = [\n  {\n    id: 0,\n    title: \"Item 1\",\n  },\n  {\n    id: 1,\n    title: \"Item 2\",\n  },\n  {\n    id: 2,\n    title: \"Item 3\",\n  },\n];\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    items: items,\n  });\n\n  // Test first one twice, should be the same\n  lookup.componentsById[0].emitPurchase();\n  expect(component.purchaseEvents).to.deep.equal([\n    {\n      id: 0,\n      title: \"Item 1\",\n    },\n  ]);\n\n  lookup.componentsById[0].emitPurchase();\n  expect(component.purchaseEvents).to.deep.equal([\n    {\n      id: 0,\n      title: \"Item 1\",\n    },\n  ]);\n\n  // Test second one twice, should be the same\n  lookup.componentsById[1].emitPurchase();\n  expect(component.purchaseEvents).to.deep.equal([\n    {\n      id: 0,\n      title: \"Item 1\",\n    },\n    {\n      id: 1,\n      title: \"Item 2\",\n    },\n  ]);\n\n  lookup.componentsById[1].emitPurchase();\n  expect(component.purchaseEvents).to.deep.equal([\n    {\n      id: 0,\n      title: \"Item 1\",\n    },\n    {\n      id: 1,\n      title: \"Item 2\",\n    },\n  ]);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/destroy-cleanup/component.js",
    "content": "module.exports = {\n  onMount() {\n    const root = this.getEl(\"root\");\n    this.before = document.createElement(\"span\");\n    this.before.id = \"before\";\n    root.parentNode.insertBefore(this.before, root);\n  },\n  onDestroy() {\n    this.before.remove();\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/destroy-cleanup/index.marko",
    "content": "<div key=\"root\"/>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/destroy-cleanup/test.js",
    "content": "const expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  const component = helpers.mount(require.resolve(\"./index\"), {});\n  const root = component.getEl(\"root\");\n  const before = component.before;\n\n  expect(root.parentNode).to.equal(helpers.targetEl);\n  expect(before.parentNode).to.equal(helpers.targetEl);\n  component.destroy();\n  expect(root.parentNode).to.equal(null);\n  expect(before.parentNode).to.equal(null);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/destroy-component/component.js",
    "content": "module.exports = {};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/destroy-component/components/app-simple/component.js",
    "content": "module.exports = {};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/destroy-component/components/app-simple/index.marko",
    "content": "<div>\n\tHello ${input.name}! You have ${input.messageCount} new messages.\n\t<div key=\"foo\">foo</div>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/destroy-component/index.marko",
    "content": "$ var showSimple = input.showSimple == null ? true : input.showSimple;\n<div class=\"app-discard\">\n    [app-discard]\n    <if(showSimple)>\n        <app-simple name=\"John\" message-count=50 key=\"simple\"/>\n    </if>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/destroy-component/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    showSimple: true,\n  });\n\n  var simple = component.getComponent(\"simple\");\n  var simpleDestroyed = false;\n\n  simple.onDestroy = function () {\n    simpleDestroyed = true;\n  };\n\n  expect(simple != null).to.equal(true);\n\n  component.input = {\n    showSimple: false,\n  };\n\n  component.update();\n\n  expect(simpleDestroyed).to.equal(true);\n  expect(simple.isDestroyed()).to.equal(true);\n\n  expect(component.getComponent(\"simple\") == null).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/destroy-detach/component.js",
    "content": "module.exports = {};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/destroy-detach/index.marko",
    "content": "<div>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/destroy-detach/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  var el = component.el;\n\n  expect(component.el.parentNode).to.equal(helpers.targetEl);\n  component.destroy();\n  expect(component.el == null).to.equal(true);\n  expect(el.parentNode == null).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/destroy-legacy/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    this.name = \"app-foo\";\n    this.getComponent(\"bar\").appendHtml(\"FOO\");\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/destroy-legacy/components/app-bar/component.js",
    "content": "module.exports = {\n  onInput: function (input) {\n    var label = input.label || \"BAR\";\n    this.label = label;\n  },\n\n  onMount: function () {\n    this.name = \"app-bar\";\n\n    var el = this.el;\n\n    this.appendHtml = function (html) {\n      el.innerHTML += html;\n    };\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/destroy-legacy/components/app-bar/index.marko",
    "content": "$ var label=(input.label || 'BAR')\n\n<div class=\"bar\">\n    ${label}\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/destroy-legacy/components/app-custom-events/component.js",
    "content": "module.exports = {\n  onInput: function (input) {\n    this.name = input.name;\n    this.channel = input.channel;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/destroy-legacy/components/app-custom-events/index.marko",
    "content": "<div class=\"bar\">\n    ${input.label}\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/destroy-legacy/index.marko",
    "content": "<div class=\"foo\">\n    <app-bar key=\"bar\"/>\n    <app-bar key=\"bar2\"/>\n    <app-bar key=\"barArray[]\" label=\"1\"/>\n    <app-bar key=\"barArray[]\" label=\"2\"/>\n    <app-custom-events onTestEvent(\"handleTestEvent1\") key=\"customEvents\"/>\n    <app-custom-events\n        onTestEvent(\"handleTestEvent2\")\n        channel=`customEvents-${component.id}`/>\n    <ul>\n        <for|color| of=[\"red\", \"green\", \"blue\"]>\n            <li key=\"colorListItems[]\">${color}</li>\n        </for>\n    </ul>\n    <span class=\"config\" key=\"config\"/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/destroy-legacy/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/destroy-legacy/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  expect(component.getComponent(\"bar\") == null).to.equal(false);\n\n  component.getComponent(\"bar\").destroy();\n\n  expect(component.getComponent(\"bar\") == null).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/destroy-multiple-root-els/component.js",
    "content": "module.exports = {\n  onInput: function (input) {\n    this.state = {\n      name: input.name,\n      age: input.age,\n    };\n  },\n  setName: function (newName) {\n    this.setState(\"name\", newName);\n  },\n  setAge: function (newAge) {\n    this.setState(\"age\", newAge);\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/destroy-multiple-root-els/index.marko",
    "content": "<div key=\"name\">${state.name}</div>\n<span key=\"age\">${state.age}</span>\n<a key=\"link\" href=\"ebay.com\">\n</a>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/destroy-multiple-root-els/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    name: \"Frank\",\n    age: 30,\n  });\n\n  var nameEl = component.getEl(\"name\");\n  var ageEl = component.getEl(\"age\");\n  var linkEl = component.getEl(\"link\");\n\n  expect(nameEl.parentNode != null).to.equal(true);\n  expect(ageEl.parentNode != null).to.equal(true);\n  expect(linkEl.parentNode != null).to.equal(true);\n\n  component.destroy();\n\n  expect(nameEl.parentNode == null).to.equal(true);\n  expect(ageEl.parentNode == null).to.equal(true);\n  expect(linkEl.parentNode == null).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-boundary-inner-component-only/components/inner/index.marko",
    "content": "class {}\n\n<div.inner>${input.count}</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-boundary-inner-component-only/index.marko",
    "content": "class  {\n    onCreate() {\n        this.state = {\n            count: 0\n        }\n    }\n}\n\n<inner count=state.count key=\"inner\"/>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-boundary-inner-component-only/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  var innerComponent = component.getComponent(\"inner\");\n\n  expect(helpers.targetEl.querySelector(\".inner\").innerHTML).to.equal(\"0\");\n\n  component.state.count++;\n  component.update();\n\n  expect(component.getComponent(\"inner\")).to.equal(innerComponent);\n\n  expect(helpers.targetEl.querySelector(\".inner\").innerHTML).to.equal(\"1\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-component-mismatch/components/bar/index.marko",
    "content": "class {}\n\n<div.bar>bar ${component.id}</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-component-mismatch/components/foo/index.marko",
    "content": "class {}\n\n<div.foo>foo ${component.id}</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-component-mismatch/index.marko",
    "content": "class  {\n    onCreate() {\n        this.state = {\n            count: 0\n        }\n    }\n}\n\n<div.root key=\"root\">\n    <if(state.count === 0)>\n        <foo key=\"a\" count=state.count/>\n        <bar key=\"b\" count=state.count/>\n        <foo key=\"c\" count=state.count/>\n    </if>\n    <else>\n        <foo key=\"a\" count=state.count/>\n        <foo key=\"b\" count=state.count/>\n    </else>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-component-mismatch/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  var children;\n\n  children = component.getEl(\"root\").children;\n  expect(children.length).to.equal(3);\n\n  component.state.count++;\n  component.update();\n\n  children = component.getEl(\"root\").children;\n  expect(children.length).to.equal(2);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-component-mismatch-append/components/bar/index.marko",
    "content": "class {}\n\n<div.bar>${input.name}</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-component-mismatch-append/components/foo/index.marko",
    "content": "class {}\n\n<div.foo>${input.name}</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-component-mismatch-append/index.marko",
    "content": "class  {\n    onCreate() {\n        this.state = {\n            count: 0\n        }\n    }\n}\n\n<div.root key=\"root\">\n    <if(state.count === 0)>\n        <foo key=\"a\" name=\"foo-a\" count=state.count/>\n        <bar key=\"b\" name=\"bar-b\" count=state.count/>\n    </if>\n    <else>\n        <foo key=\"a\" name=\"foo-a\" count=state.count/>\n        <foo key=\"b\" name=\"foo-b\" count=state.count/>\n        <bar key=\"c\" name=\"bar-c\" count=state.count/>\n    </else>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-component-mismatch-append/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  var children;\n\n  children = component.getEl(\"root\").children;\n  expect(children.length).to.equal(2);\n  expect(children[0].innerHTML).to.equal(\"foo-a\");\n  expect(children[1].innerHTML).to.equal(\"bar-b\");\n\n  component.state.count++;\n  component.update();\n\n  children = component.getEl(\"root\").children;\n  expect(children.length).to.equal(3);\n  expect(children[0].innerHTML).to.equal(\"foo-a\");\n  expect(children[1].innerHTML).to.equal(\"foo-b\");\n  expect(children[2].innerHTML).to.equal(\"bar-c\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-component-toplevel-surrounded/components/bar/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = {\n            count: 1\n        };\n    }\n\n    increment() {\n        this.state.count++;\n    }\n}\n\n<for|i| from=0 to=(state.count - 1)>\n    <div>${i}</div>\n</for>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-component-toplevel-surrounded/components/foo/index.marko",
    "content": "class {}\n\n<span.foo>foo ${component.id}</span>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-component-toplevel-surrounded/index.marko",
    "content": "class  {\n    incrementBar() {\n        this.getComponent('bar').increment();\n        this.getComponent('bar').update();\n    }\n}\n\n<div.root key=\"root\">\n    <foo/>\n    <bar key=\"bar\"/>\n    <foo/>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-component-toplevel-surrounded/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  component.incrementBar();\n\n  var children = component.getEl(\"root\").children;\n  expect(children[children.length - 1].nodeName).to.equal(\"SPAN\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-destroy-child/components/hello/index.marko",
    "content": "class {\n\n}\n\n<div.hello>Hello<span.hello-count>${input.count}</span></div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-destroy-child/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = {\n            count: 0,\n            renderHello: true\n        };\n    }\n}\n\n<div.root>\n    [ROOT]\n    <span>\n        <if(state.renderHello)>\n            <hello key=\"hello\" count=state.count/>\n        </if>\n    </span>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-destroy-child/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  var rootEl = component.el;\n  var helloCountEl = rootEl.querySelector(\"span.hello-count\");\n  var helloComponent = component.getComponent(\"hello\");\n\n  component.state.count = 1;\n  component.update();\n\n  expect(component.el).to.equal(rootEl);\n  expect(rootEl.querySelector(\"span.hello-count\").innerHTML).to.equal(\"1\");\n  expect(rootEl.querySelector(\"span.hello-count\")).to.equal(helloCountEl);\n\n  component.state.renderHello = false;\n  component.update();\n\n  expect(helloComponent.isDestroyed()).to.equal(true);\n  expect(helloComponent.el == null).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-dynamic-attributes/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = { test: true };\n    }\n    toggleTest() {\n        this.state.test = !this.state.test;\n    }\n}\n\n$ {\n\tconst attrs = {};\n\tif(state.test) {\n\t\tattrs.href = \"https://example.com\"\n\t} else {\n\t\tattrs[\"aria-disabled\"] = true\n\t}\n}\n\n<a ...attrs>some text</a>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-dynamic-attributes/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  expect(component.el.hasAttribute(\"href\")).to.equal(true);\n  expect(component.el.hasAttribute(\"aria-disabled\")).to.equal(false);\n  component.toggleTest();\n  component.update();\n  expect(component.el.hasAttribute(\"href\")).to.equal(false);\n  expect(component.el.hasAttribute(\"aria-disabled\")).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-dynamic-nested-roots/components/hello/index.marko",
    "content": "class {}\n<message type=\"hello\"/>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-dynamic-nested-roots/components/message/index.marko",
    "content": "class {}\n<span>\n    ${input.type}\n</span>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-dynamic-nested-roots/components/welcome/index.marko",
    "content": "class {}\n<hello/>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-dynamic-nested-roots/index.marko",
    "content": "class  {}\n\n<div key=\"root\">\n    <if(input.show)>\n        <welcome/>\n    </if>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-dynamic-nested-roots/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), { show: true });\n  var rootEl = component.getEl(\"root\");\n\n  expect(rootEl.innerHTML).to.contain(\"<span>hello</span>\");\n\n  component.input = {};\n  component.update();\n\n  expect(rootEl.innerHTML).to.not.contain(\"<span>hello</span>\");\n\n  component.input = { show: true };\n  component.update();\n\n  expect(rootEl.innerHTML).to.contain(\"<span>hello</span>\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-existing-key-component-to-element/components/app-hello/index.marko",
    "content": "<div>Hello</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-existing-key-component-to-element/index.marko",
    "content": "import Hello from \"./components/app-hello/index.marko\"\nclass {\n    onCreate() {\n        this.state = {\n            tagName: Hello\n        }\n    }\n    toggle() {\n        this.state.tagName = this.state.tagName === Hello ? \"div\" : Hello;\n    }\n}\n\n<div key=\"renderTarget\">\n    <${state.tagName}/>\n    <${state.tagName} key=\"a\"/>\n    <if(state.tagName === \"div\")>\n        <div key=\"d\"/>\n    </>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-existing-key-component-to-element/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index.marko\"));\n\n  var renderTarget = component.getEl(\"renderTarget\");\n  expect(renderTarget.innerHTML).to.equal(\"<div>Hello</div><div>Hello</div>\");\n  component.toggle();\n  component.update();\n  expect(renderTarget.innerHTML).to.equal(\"<div></div><div></div><div></div>\");\n  component.toggle();\n  component.update();\n  expect(renderTarget.innerHTML).to.equal(\"<div>Hello</div><div>Hello</div>\");\n  component.toggle();\n  component.update();\n  expect(renderTarget.innerHTML).to.equal(\"<div></div><div></div><div></div>\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-existing-key-component-to-fragment/components/app-hello/index.marko",
    "content": "<div>Hello</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-existing-key-component-to-fragment/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = {\n            toggle: false\n        }\n    }\n    toggle() {\n        this.state.toggle = !this.state.toggle;\n    }\n}\n\n<macro|{ renderBody }| name=\"content\">\n    <app-hello key=state.toggle ? \"b\" : \"c\"/>\n    <${renderBody} key=state.toggle ? \"c\" : \"b\"/>\n</>\n\n<div key=\"renderTarget\">\n    <content>A</>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-existing-key-component-to-fragment/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index.marko\"));\n\n  var renderTarget = component.getEl(\"renderTarget\");\n  expect(renderTarget.innerHTML).to.equal(\"<div>Hello</div>A\");\n  component.toggle();\n  component.update();\n  expect(renderTarget.innerHTML).to.equal(\"<div>Hello</div>A\");\n  component.toggle();\n  component.update();\n  expect(renderTarget.innerHTML).to.equal(\"<div>Hello</div>A\");\n  component.toggle();\n  component.update();\n  expect(renderTarget.innerHTML).to.equal(\"<div>Hello</div>A\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-insert-el-before-component/components/hello/index.marko",
    "content": "class {\n\n}\n\n<div.hello key=\"helloRoot\">Hello: ${input.count}</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-insert-el-before-component/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = {\n            insertEl: false,\n            count: 0\n        };\n    }\n}\n\n<div.root key=\"root\">\n    <if(state.insertEl === false)>\n        <hello key=\"hello\" count=state.count/>\n    </if>\n    <else>\n        <p.after key=\"after\">New element</p>\n        <div key=\"afterDiv\">\n            <hello key=\"hello\" count=state.count/>\n        </div>\n    </else>\n\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-insert-el-before-component/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  // var rootEl = component.el;\n  var helloComponent = component.getComponent(\"hello\");\n  expect(component.getEl(\"root\").querySelector(\".hello\") != null).to.equal(\n    true,\n  );\n  // expect(helloComponent.el.parentNode).to.equal(rootEl);\n\n  component.state.insertEl = true;\n  component.state.count++;\n  component.update();\n\n  expect(component.getEl(\"root\").querySelector(\".hello\") != null).to.equal(\n    true,\n  );\n\n  expect(component.getComponent(\"hello\")).to.equal(helloComponent);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-insert-unkeyed-el-before-component/components/hello/index.marko",
    "content": "class {\n\n}\n\n<div.hello key=\"helloRoot\">Hello: ${input.count}</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-insert-unkeyed-el-before-component/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = {\n            insertEl: false,\n            count: 0\n        };\n    }\n}\n\n<div.root key=\"root\">\n    <if(state.insertEl === false)>\n        <hello key=\"hello\" count=state.count/>\n    </if>\n    <else>\n        $!{'<p></p>'}\n        <hello key=\"hello\" count=state.count/>\n    </else>\n\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-insert-unkeyed-el-before-component/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  // var rootEl = component.el;\n  var helloComponent = component.getComponent(\"hello\");\n  expect(component.getEl(\"root\").querySelector(\".hello\") != null).to.equal(\n    true,\n  );\n  // expect(helloComponent.el.parentNode).to.equal(rootEl);\n\n  component.state.insertEl = true;\n  component.state.count++;\n  component.update();\n\n  expect(component.getEl(\"root\").querySelector(\".hello\") != null).to.equal(\n    true,\n  );\n\n  expect(component.getComponent(\"hello\")).to.equal(helloComponent);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-insert-unkeyed-el-before-preserved-component/components/hello/index.marko",
    "content": "class {\n\n}\n\n<div.hello key=\"helloRoot\">Hello: ${input.count}</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-insert-unkeyed-el-before-preserved-component/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = {\n            insertEl: false,\n            count: 0\n        };\n    }\n}\n\n<div.root key=\"root\">\n    <if(state.insertEl === false)>\n        <hello key=\"hello\"/>\n    </if>\n    <else>\n        $!{'<p></p>'}\n        <hello key=\"hello\"/>\n    </else>\n\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-insert-unkeyed-el-before-preserved-component/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  // var rootEl = component.el;\n  var helloComponent = component.getComponent(\"hello\");\n  expect(component.getEl(\"root\").querySelector(\".hello\") != null).to.equal(\n    true,\n  );\n  // expect(helloComponent.el.parentNode).to.equal(rootEl);\n\n  component.state.insertEl = true;\n  component.state.count++;\n  component.update();\n\n  expect(component.getEl(\"root\").querySelector(\".hello\") != null).to.equal(\n    true,\n  );\n\n  expect(component.getComponent(\"hello\")).to.equal(helloComponent);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-mismatch-remove-fragment/index.marko",
    "content": "class  {\n    onCreate() {\n        this.state = { count: 0 };\n    }\n}\n\n<macro|input| name=\"fragment\">\n    <${input}/>\n</macro>\n\n<div.root key=\"root\">\n    <fragment>\n        <if(state.count === 0)>\n            <span>a</span>\n            <span>b</span>\n        </if>\n        <fragment>\n            <span>c</span>\n        </fragment>\n    </fragment>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-mismatch-remove-fragment/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  var root = component.getEl(\"root\");\n  expect(root.innerHTML).to.equal(\"<span>a</span><span>b</span><span>c</span>\");\n\n  var cEl = root.firstElementChild.nextElementSibling.nextElementSibling;\n  component.state.count++;\n  component.update();\n\n  expect(root.innerHTML).to.equal(\"<span>c</span>\");\n  expect(cEl).to.equal(root.firstElementChild);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-rearrange-keyed-components/components/hello/index.marko",
    "content": "class {}\n$ var value = input.value;\n<div id=value>${value}</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-rearrange-keyed-components/index.marko",
    "content": "class {}\n\n<div key=\"root\">\n    <h1>Nested components:</h1>\n    <if(input.letters)>\n        <for|letter| of=input.letters>\n            <hello value=letter key=letter/>\n        </for>\n    </if>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-rearrange-keyed-components/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  var previousComponents = {};\n\n  function checkOrder(letters) {\n    component.input = { letters: letters };\n    component.update();\n\n    var divs = component.getEl(\"root\").querySelectorAll(\"div\");\n\n    expect(divs.length).to.equal(letters.length);\n\n    var newComponents = {};\n\n    for (var i = 0; i < letters.length; i++) {\n      var letter = letters[i];\n\n      var componentForValue = component.getComponent(letter);\n      expect(componentForValue != null).to.equal(true);\n      newComponents[letter] = componentForValue;\n\n      if (previousComponents[letter]) {\n        expect(previousComponents[letter]).to.equal(componentForValue);\n      }\n\n      expect(divs[i].id).to.equal(letter);\n      expect(divs[i].innerHTML).to.equal(letter);\n    }\n\n    Object.keys(previousComponents).forEach(function (letter) {\n      if (!(letter in newComponents)) {\n        expect(previousComponents[letter].isDestroyed()).to.equal(true);\n      }\n    });\n\n    previousComponents = newComponents;\n  }\n\n  checkOrder([\"a\", \"b\", \"c\", \"d\", \"e\"]);\n\n  // Single component swap\n  checkOrder([\"a\", \"c\", \"b\", \"d\", \"e\"]);\n\n  // Single component removal (remove 'C')\n  checkOrder([\"a\", \"b\", \"d\", \"e\"]);\n\n  // Single component addition\n  checkOrder([\"a\", \"b\", \"c\", \"d\", \"e\"]);\n\n  // Double component addition\n  checkOrder([\"a\", \"b\", \"b1\", \"b2\", \"c\", \"d\", \"e\"]);\n\n  // Double component removal\n  checkOrder([\"a\", \"b\", \"c\", \"d\", \"e\"]);\n\n  // Swap b and d\n  checkOrder([\"a\", \"d\", \"c\", \"b\", \"e\"]);\n\n  // Swap b and d back to normal\n  checkOrder([\"a\", \"b\", \"c\", \"d\", \"e\"]);\n\n  // Swap a and c\n  checkOrder([\"c\", \"b\", \"a\", \"d\", \"e\"]);\n\n  // Swap c and a back to normal\n  checkOrder([\"a\", \"b\", \"c\", \"d\", \"e\"]);\n\n  // Single component addition to START\n  checkOrder([\"1\", \"a\", \"b\", \"c\", \"d\", \"e\"]);\n\n  // Double component addition to START\n  checkOrder([\"3\", \"2\", \"1\", \"a\", \"b\", \"c\", \"d\", \"e\"]);\n\n  // Single component removal from START\n  checkOrder([\"2\", \"1\", \"a\", \"b\", \"c\", \"d\", \"e\"]);\n\n  // Double component removal from START\n  checkOrder([\"a\", \"b\", \"c\", \"d\", \"e\"]);\n\n  // Single component addition to END\n  checkOrder([\"a\", \"b\", \"c\", \"d\", \"e\", \"f\"]);\n\n  // Double component addition to END\n  checkOrder([\"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\"]);\n\n  // Single component removal from END\n  checkOrder([\"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\"]);\n\n  // Double component removal from END\n  checkOrder([\"a\", \"b\", \"c\", \"d\", \"e\"]);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-rearrange-keyed-els/index.marko",
    "content": "class {}\n\n<if(input.letters)>\n    <for|letter| of=input.letters>\n        <div id=letter key=letter>${letter}</div>\n    </for>\n</if>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-rearrange-keyed-els/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  expect(helpers.targetEl.querySelectorAll(\"div\").length).to.equal(0);\n\n  function checkOrder(letters) {\n    component.input = { letters: letters };\n    component.update();\n\n    var divs = helpers.targetEl.querySelectorAll(\"div\");\n\n    expect(divs.length).to.equal(letters.length);\n\n    for (var i = 0; i < letters.length; i++) {\n      expect(divs[i].id).to.equal(letters[i]);\n      expect(divs[i].innerHTML).to.equal(letters[i]);\n    }\n  }\n\n  checkOrder([\"a\", \"b\", \"c\", \"d\", \"e\"]);\n\n  // Single element swap\n  checkOrder([\"a\", \"c\", \"b\", \"d\", \"e\"]);\n\n  // Single element removal\n  checkOrder([\"a\", \"b\", \"d\", \"e\"]);\n\n  // Single element addition\n  checkOrder([\"a\", \"b\", \"c\", \"d\", \"e\"]);\n\n  // Double element addition\n  checkOrder([\"a\", \"b\", \"b1\", \"b2\", \"c\", \"d\", \"e\"]);\n\n  // Double element removal\n  checkOrder([\"a\", \"b\", \"c\", \"d\", \"e\"]);\n\n  // Swap b and d\n  checkOrder([\"a\", \"d\", \"c\", \"b\", \"e\"]);\n\n  // Swap b and d back to normal\n  checkOrder([\"a\", \"b\", \"c\", \"d\", \"e\"]);\n\n  // Single element addition to START\n  checkOrder([\"1\", \"a\", \"b\", \"c\", \"d\", \"e\"]);\n\n  // Double element addition to START\n  checkOrder([\"3\", \"2\", \"1\", \"a\", \"b\", \"c\", \"d\", \"e\"]);\n\n  // Single element removal from START\n  checkOrder([\"2\", \"1\", \"a\", \"b\", \"c\", \"d\", \"e\"]);\n\n  // Double element removal from START\n  checkOrder([\"a\", \"b\", \"c\", \"d\", \"e\"]);\n\n  // Single element addition to END\n  checkOrder([\"a\", \"b\", \"c\", \"d\", \"e\", \"f\"]);\n\n  // Double element addition to END\n  checkOrder([\"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\"]);\n\n  // Single element removal from END\n  checkOrder([\"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\"]);\n\n  // Double element removal from END\n  checkOrder([\"a\", \"b\", \"c\", \"d\", \"e\"]);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-remove-all-els/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = {\n            show: true\n        };\n    }\n}\n\n<if(state.show)>\n    <h1>Header</h1>\n    <div>Body</div>\n</if>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-remove-all-els/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  expect(helpers.targetEl.querySelector(\"h1\") != null).to.equal(true);\n  expect(helpers.targetEl.querySelector(\"div\") != null).to.equal(true);\n\n  component.state.show = false;\n  component.update();\n\n  expect(helpers.targetEl.querySelector(\"h1\") == null).to.equal(true);\n  expect(helpers.targetEl.querySelector(\"div\") == null).to.equal(true);\n\n  expect(component.isDestroyed()).to.equal(false);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-remove-end-el/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = {\n            showFooter: true\n        };\n    }\n}\n\n<div>Body</div>\n<if(state.showFooter)>\n    <footer>Footer</footer>\n</if>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-remove-end-el/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  expect(helpers.targetEl.querySelector(\"footer\") != null).to.equal(true);\n  expect(helpers.targetEl.querySelector(\"div\") != null).to.equal(true);\n\n  component.state.showFooter = false;\n  component.update();\n\n  expect(helpers.targetEl.querySelector(\"footer\") == null).to.equal(true);\n  expect(helpers.targetEl.querySelector(\"div\") != null).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-remove-start-el/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = {\n            showHeader: true\n        };\n    }\n}\n\n<if(state.showHeader)>\n    <h1>Header</h1>\n</if>\n<div>Body</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-remove-start-el/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  expect(helpers.targetEl.querySelector(\"h1\") != null).to.equal(true);\n  expect(helpers.targetEl.querySelector(\"div\") != null).to.equal(true);\n\n  component.state.showHeader = false;\n  component.update();\n\n  expect(helpers.targetEl.querySelector(\"h1\") == null).to.equal(true);\n  expect(helpers.targetEl.querySelector(\"div\") != null).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-simple/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = {\n            count: 0\n        };\n    }\n}\n\n<div.root>\n    <span>\n        ${state.count}\n    </span>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-simple/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  var rootEl = component.el;\n  var spanEl = rootEl.querySelector(\"span\");\n\n  component.state.count = 1;\n  component.update();\n\n  expect(component.el).to.equal(rootEl);\n  expect(rootEl.querySelector(\"span\").innerHTML).to.equal(\"1\");\n  expect(rootEl.querySelector(\"span\")).to.equal(spanEl);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-swap-components-dynamic/components/hello/index.marko",
    "content": "class {\n\n}\n\n<div.hello>${input.count}</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-swap-components-dynamic/components/world/index.marko",
    "content": "class {\n\n}\n\n<div.world>${input.count}</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-swap-components-dynamic/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = {\n            swapped: false,\n            count: 0\n        };\n    }\n}\n\n<div.root>\n    <if(state.swapped)>\n        <world count=state.count/>\n        <hello count=state.count/>\n    </if>\n    <else>\n        <hello count=state.count/>\n        <world count=state.count/>\n    </else>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-swap-components-dynamic/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  var rootEl = component.el;\n\n  var nestedDivs = rootEl.querySelectorAll(\"div\");\n  expect(nestedDivs[0].className).to.equal(\"hello\");\n  expect(nestedDivs[1].className).to.equal(\"world\");\n  expect(nestedDivs[0].innerHTML).to.equal(\"0\");\n  expect(nestedDivs[1].innerHTML).to.equal(\"0\");\n\n  component.state.swapped = true;\n  component.state.count = 1;\n  component.update();\n\n  var nestedDivsAfter = rootEl.querySelectorAll(\"div\");\n  expect(nestedDivsAfter[0].className).to.equal(\"world\");\n  expect(nestedDivsAfter[1].className).to.equal(\"hello\");\n  expect(nestedDivsAfter[0].innerHTML).to.equal(\"1\");\n  expect(nestedDivsAfter[1].innerHTML).to.equal(\"1\");\n  expect(nestedDivsAfter[0]).to.not.equal(nestedDivs[1]);\n  expect(nestedDivsAfter[1]).to.not.equal(nestedDivs[0]);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-swap-components-keyed/components/hello/index.marko",
    "content": "class {\n\n}\n\n<div.hello>Hello: ${input.count}</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-swap-components-keyed/components/world/index.marko",
    "content": "class {\n\n}\n\n<div.world>World: ${input.count}</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-swap-components-keyed/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = {\n            swapped: false\n        };\n    }\n}\n\n<div.root>\n    <if(state.swapped)>\n        <world key=\"world\"/>\n        <hello key=\"hello\"/>\n    </if>\n    <else>\n        <hello key=\"hello\"/>\n        <world key=\"world\"/>\n    </else>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-swap-components-keyed/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  var rootEl = component.el;\n  var helloComponent = component.getComponent(\"hello\");\n  var worldComponent = component.getComponent(\"world\");\n  expect(helloComponent.el.parentNode).to.equal(rootEl);\n  expect(worldComponent.el.parentNode).to.equal(rootEl);\n\n  var nestedDivs = rootEl.querySelectorAll(\"div\");\n  expect(nestedDivs[0].className).to.equal(\"hello\");\n  expect(nestedDivs[1].className).to.equal(\"world\");\n\n  component.state.swapped = true;\n  component.update();\n\n  expect(component.getComponent(\"hello\")).to.equal(helloComponent);\n  expect(component.getComponent(\"world\")).to.equal(worldComponent);\n\n  var nestedDivsAfter = rootEl.querySelectorAll(\"div\");\n  expect(nestedDivsAfter[0].className).to.equal(\"world\");\n  expect(nestedDivsAfter[1].className).to.equal(\"hello\");\n\n  expect(nestedDivsAfter[0]).to.equal(nestedDivs[1]);\n  expect(nestedDivsAfter[1]).to.equal(nestedDivs[0]);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-swap-components-keyed-dynamic/components/hello/index.marko",
    "content": "class {\n\n}\n\n<div.hello>${input.count}</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-swap-components-keyed-dynamic/components/world/index.marko",
    "content": "class {\n\n}\n\n<div.world>${input.count}</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-swap-components-keyed-dynamic/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = {\n            swapped: false,\n            count: 0\n        };\n    }\n}\n\n<div.root>\n    <if(state.swapped)>\n        <world key=\"world\" count=state.count/>\n        <hello key=\"hello\" count=state.count/>\n    </if>\n    <else>\n        <hello key=\"hello\" count=state.count/>\n        <world key=\"world\" count=state.count/>\n    </else>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-swap-components-keyed-dynamic/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  var rootEl = component.el;\n  var helloComponent = component.getComponent(\"hello\");\n  var worldComponent = component.getComponent(\"world\");\n  expect(helloComponent.el.parentNode).to.equal(rootEl);\n  expect(worldComponent.el.parentNode).to.equal(rootEl);\n\n  var nestedDivs = rootEl.querySelectorAll(\"div\");\n  expect(nestedDivs[0].className).to.equal(\"hello\");\n  expect(nestedDivs[1].className).to.equal(\"world\");\n  expect(nestedDivs[0].innerHTML).to.equal(\"0\");\n  expect(nestedDivs[1].innerHTML).to.equal(\"0\");\n\n  component.state.swapped = true;\n  component.state.count = 1;\n  component.update();\n\n  expect(component.getComponent(\"hello\")).to.equal(helloComponent);\n  expect(component.getComponent(\"world\")).to.equal(worldComponent);\n\n  var nestedDivsAfter = rootEl.querySelectorAll(\"div\");\n  expect(nestedDivsAfter[0].className).to.equal(\"world\");\n  expect(nestedDivsAfter[1].className).to.equal(\"hello\");\n  expect(nestedDivs[0].innerHTML).to.equal(\"1\");\n  expect(nestedDivs[1].innerHTML).to.equal(\"1\");\n\n  expect(nestedDivsAfter[0]).to.equal(nestedDivs[1]);\n  expect(nestedDivsAfter[1]).to.equal(nestedDivs[0]);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-swap-keyed-el/index.marko",
    "content": "class  {\n    onCreate() {\n        this.state = {\n            swapped: false\n        }\n    }\n}\n\n<div.root>\n    <if(state.swapped)>\n        <div.bar key=\"bar\">bar</div>\n        <div.foo key=\"foo\">foo</div>\n    </if>\n    <else>\n        <div.foo key=\"foo\">foo</div>\n        <div.bar key=\"bar\">bar</div>\n    </else>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-swap-keyed-el/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  var fooEl = component.getEl(\"foo\");\n  var barEl = component.getEl(\"bar\");\n\n  expect(fooEl.nextSibling).to.equal(barEl);\n\n  component.state.swapped = true;\n  component.update();\n\n  expect(component.getEl(\"foo\")).to.equal(fooEl);\n  expect(component.getEl(\"bar\")).to.equal(barEl);\n\n  expect(barEl.nextSibling).to.equal(fooEl);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-swap-unkeyed-el/index.marko",
    "content": "class  {\n    onCreate() {\n        this.state = {\n            swapped: false\n        }\n    }\n}\n\n<div.root key=\"root\">\n    <if(state.swapped)>\n        <div data-bar=\"true\">bar</div>\n        <div data-foo=\"true\">foo</div>\n    </if>\n    <else>\n        <div data-foo=\"true\">foo</div>\n        <div data-bar=\"true\">bar</div>\n    </else>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/diffpatch-swap-unkeyed-el/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  var children = component.getEl(\"root\").children;\n  expect(children.length).to.equal(2);\n\n  expect(children[0].getAttribute(\"data-foo\")).to.equal(\"true\");\n  expect(children[0].getAttribute(\"data-bar\")).to.equal(null);\n\n  expect(children[1].getAttribute(\"data-foo\")).to.equal(null);\n  expect(children[1].getAttribute(\"data-bar\")).to.equal(\"true\");\n\n  component.state.swapped = true;\n  component.update();\n\n  children = component.getEl(\"root\").children;\n\n  expect(children.length).to.equal(2);\n\n  expect(children[0].getAttribute(\"data-foo\")).to.equal(null);\n  expect(children[0].getAttribute(\"data-bar\")).to.equal(\"true\");\n\n  expect(children[1].getAttribute(\"data-foo\")).to.equal(\"true\");\n  expect(children[1].getAttribute(\"data-bar\")).to.equal(null);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dom-custom-event/index.marko",
    "content": "class {\n\n    setEvent(event) {\n        this.event = event;\n    }\n}\n\n<div key=\"root\" on-Custom-Event('setEvent')>\n    Hello\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dom-custom-event/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  var rootNode = component.getEl(\"root\");\n\n  expect(component.event).to.equal(undefined);\n  helpers.triggerCustomEvent(rootNode, \"Custom-Event\", 123);\n  expect(component.event.detail).to.equal(123);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dom-event-handlers-alternate/index.marko",
    "content": "class {\n    onCreate(input) {\n        this.state = { mode: 'sign-in' };\n    }\n    setType(value) {\n        this.state.mode = value;\n    }\n}\n\n<div>\n    <if(state.mode === 'sign-in')>\n        <h1>Sign in</h1>\n        Create a new account? <a on-click('setType', 'sign-up')>Sign up</a>\n    </if>\n    <else>\n        <h1>Sign up</h1>\n        Already have an account? <a on-click('setType', 'sign-in')>Sign in</a>\n    </else>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dom-event-handlers-alternate/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  // We are initially on the \"sign-in\" page\n  expect(component.el.querySelector(\"a\").innerHTML).to.equal(\"Sign up\");\n\n  helpers.triggerMouseEvent(component.el.querySelector(\"a\"), \"click\");\n\n  component.update();\n\n  expect(component.el.querySelector(\"a\").innerHTML).to.equal(\"Sign in\");\n\n  helpers.triggerMouseEvent(component.el.querySelector(\"a\"), \"click\");\n\n  component.update();\n\n  expect(component.el.querySelector(\"a\").innerHTML).to.equal(\"Sign up\");\n\n  helpers.triggerMouseEvent(component.el.querySelector(\"a\"), \"click\");\n\n  component.update();\n\n  expect(component.el.querySelector(\"a\").innerHTML).to.equal(\"Sign in\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dom-events-repeated-el-bubbling/component.js",
    "content": "module.exports = {\n  onCreate: function () {\n    this.clicked = false;\n  },\n  handleButtonClick: function () {\n    this.clicked = true;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dom-events-repeated-el-bubbling/index.marko",
    "content": "<div>\n    <button key=\"button\" type=\"button\" on-click('handleButtonClick')>Click me</button>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dom-events-repeated-el-bubbling/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  expect(component.clicked).to.equal(false);\n  helpers.triggerMouseEvent(component.getEl(\"button\"), \"click\");\n  expect(component.clicked).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dom-events-repeated-el-bubbling-one-arg/component.js",
    "content": "module.exports = {\n  handleColorClick: function (color) {\n    this.color = color;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dom-events-repeated-el-bubbling-one-arg/index.marko",
    "content": "<div>\n    <ul>\n        <for|color| of=input.colors>\n            <li onClick(\"handleColorClick\", color)>${color}</li>\n        </for>\n    </ul>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dom-events-repeated-el-bubbling-one-arg/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    colors: [\"red\", \"green\", \"blue\"],\n  });\n\n  var liEls = component.el.querySelectorAll(\"li\");\n\n  helpers.triggerMouseEvent(liEls[0], \"click\");\n  expect(component.color).to.equal(\"red\");\n\n  helpers.triggerMouseEvent(liEls[1], \"click\");\n  expect(component.color).to.equal(\"green\");\n\n  helpers.triggerMouseEvent(liEls[2], \"click\");\n  expect(component.color).to.equal(\"blue\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dom-events-repeated-el-bubbling-two-args/component.js",
    "content": "module.exports = {\n  handleColorClick: function (color, type) {\n    this.color = { color: color, type: type };\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dom-events-repeated-el-bubbling-two-args/index.marko",
    "content": "<div>\n    <ul.primary>\n        <for|color| of=input.colors>\n            <li onClick(\"handleColorClick\", color, \"primary\")>${color}</li>\n        </for>\n    </ul>\n    <ul.secondary>\n        <for|color| of=input.colors>\n            <li onClick(\"handleColorClick\", color, \"secondary\")>${color}</li>\n        </for>\n    </ul>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dom-events-repeated-el-bubbling-two-args/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    colors: [\"red\", \"green\", \"blue\"],\n  });\n\n  var liEls = component.el.querySelectorAll(\"ul.primary li\");\n\n  helpers.triggerMouseEvent(liEls[0], \"click\");\n  expect(component.color).to.deep.equal({ color: \"red\", type: \"primary\" });\n\n  helpers.triggerMouseEvent(liEls[1], \"click\");\n  expect(component.color).to.deep.equal({ color: \"green\", type: \"primary\" });\n\n  helpers.triggerMouseEvent(liEls[2], \"click\");\n  expect(component.color).to.deep.equal({ color: \"blue\", type: \"primary\" });\n\n  liEls = component.el.querySelectorAll(\"ul.secondary li\");\n\n  helpers.triggerMouseEvent(liEls[0], \"click\");\n  expect(component.color).to.deep.equal({ color: \"red\", type: \"secondary\" });\n\n  helpers.triggerMouseEvent(liEls[1], \"click\");\n  expect(component.color).to.deep.equal({\n    color: \"green\",\n    type: \"secondary\",\n  });\n\n  helpers.triggerMouseEvent(liEls[2], \"click\");\n  expect(component.color).to.deep.equal({ color: \"blue\", type: \"secondary\" });\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dom-events-repeated-el-non-bubbling/component.js",
    "content": "module.exports = {\n  handleColorMouseOver: function (color) {\n    this.color = color;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dom-events-repeated-el-non-bubbling/index.marko",
    "content": "<div>\n    <ul>\n        <for|color| of=input.colors>\n            <li onMouseOver(\"handleColorMouseOver\", color)>${color}</li>\n        </for>\n    </ul>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dom-events-repeated-el-non-bubbling/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    colors: [\"red\", \"green\", \"blue\"],\n  });\n\n  var liEls = component.el.querySelectorAll(\"li\");\n\n  helpers.triggerMouseEvent(liEls[0], \"mouseover\");\n  expect(component.color).to.equal(\"red\");\n\n  helpers.triggerMouseEvent(liEls[1], \"mouseover\");\n  expect(component.color).to.equal(\"green\");\n\n  helpers.triggerMouseEvent(liEls[2], \"mouseover\");\n  expect(component.color).to.equal(\"blue\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dom-events-repeated-el-non-bubbling-multiple/index.marko",
    "content": "class {\n    handleColorMouseOver(color) {\n        this.mouseOverColor = color;\n    }\n\n    handleColorMouseOut(color) {\n        this.mouseOutColor = color;\n    }\n}\n\n<div>\n    <ul>\n        <for|color| of=input.colors>\n            <li\n                onMouseOver(\"handleColorMouseOver\", color)\n                onMouseOut(\"handleColorMouseOut\", color)>\n                ${color}\n            </li>\n        </for>\n    </ul>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dom-events-repeated-el-non-bubbling-multiple/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    colors: [\"red\", \"green\", \"blue\"],\n  });\n\n  var liEls = component.el.querySelectorAll(\"li\");\n\n  helpers.triggerMouseEvent(liEls[0], \"mouseover\");\n  expect(component.mouseOverColor).to.equal(\"red\");\n\n  helpers.triggerMouseEvent(liEls[1], \"mouseover\");\n  expect(component.mouseOverColor).to.equal(\"green\");\n\n  helpers.triggerMouseEvent(liEls[2], \"mouseover\");\n  expect(component.mouseOverColor).to.equal(\"blue\");\n\n  helpers.triggerMouseEvent(liEls[0], \"mouseout\");\n  expect(component.mouseOutColor).to.equal(\"red\");\n\n  helpers.triggerMouseEvent(liEls[1], \"mouseout\");\n  expect(component.mouseOutColor).to.equal(\"green\");\n\n  helpers.triggerMouseEvent(liEls[2], \"mouseout\");\n  expect(component.mouseOutColor).to.equal(\"blue\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dynamic-tag-custom-event-handler/components/hello.marko",
    "content": "class {\n}\n\n<button type=\"button\" on-click('emit', 'hello')>\n    Say hello\n</button>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dynamic-tag-custom-event-handler/index.marko",
    "content": "import helloComponent from './components/hello.marko';\n\nclass {\n    onCreate() {\n        this.helloReceived = false;\n    }\n\n    handleHello() {\n        this.helloReceived = true;\n    }\n}\n\n<div>\n    <${helloComponent} on-hello('handleHello')/>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dynamic-tag-custom-event-handler/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  expect(component.helloReceived).to.equal(false);\n\n  component.el.querySelector(\"button\").click();\n\n  expect(component.helloReceived).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dynamic-tag-default-namespace/index.marko",
    "content": "class {}\n\n<div key=\"root\">\n    <${true ? \"svg\" : \"a\"}>\n        <title>Test</title>\n    </>\n\n    <${true ? \"math\" : \"a\"}>\n        <mtext>Test</mtext> \n    </>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dynamic-tag-default-namespace/test.js",
    "content": "var expect = require(\"chai\").expect;\nvar svgNS = \"http://www.w3.org/2000/svg\";\nvar mathNS = \"http://www.w3.org/1998/Math/MathML\";\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"));\n  var root = component.getEl(\"root\");\n  var svgEl = root.firstChild;\n  var mathEl = svgEl.nextSibling;\n  expect(svgEl.namespaceURI).to.equal(svgNS);\n  expect(svgEl.firstChild.namespaceURI).to.equal(svgNS);\n  expect(mathEl.namespaceURI).to.equal(mathNS);\n  expect(mathEl.firstChild.namespaceURI).to.equal(mathNS);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dynamic-tag-html-event-handler/index.marko",
    "content": "class {\n    onCreate() {\n        this.helloReceived = false;\n    }\n\n    handleHello() {\n        this.helloReceived = true;\n    }\n}\n\n$ const tagName = \"button\";\n\n<div>\n    <${tagName} on-click('handleHello')/>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dynamic-tag-html-event-handler/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  expect(component.helloReceived).to.equal(false);\n\n  component.el.querySelector(\"button\").click();\n\n  expect(component.helloReceived).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dynamic-tag-no-update-html-attributes/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = {\n            className: \"initial\"\n        }\n    }\n\n    changeClass() {\n        this.state.className = \"SHOULD NOT CHANGE\";\n    }\n}\n\n$ const tagName = \"button\";\n\n<div key=\"root\">\n    <${tagName} class:no-update=state.className/>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dynamic-tag-no-update-html-attributes/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  var root = component.getEl(\"root\");\n  var tag = root.querySelector(\".initial\");\n\n  expect(tag).to.have.property(\"className\", \"initial\");\n\n  tag.className = \"changed\";\n  component.forceUpdate();\n  component.update();\n\n  // Should not update the class again.\n  expect(tag).to.have.property(\"className\", \"changed\");\n\n  component.changeClass();\n  component.update();\n  expect(tag).to.have.property(\"className\", \"changed\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dynamic-tag-preserve-old/components/app-foo/index.marko",
    "content": "class {\n    onInput(input) {\n        this.state = {\n            name: input.name,\n            body: input.renderBody\n        };\n    }\n}\n\n<div.foo>\n    <span>Hello ${state.name}!</span>\n    <div.body>\n        <${state.body}/>\n    </div>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dynamic-tag-preserve-old/index.marko",
    "content": "class {\n    onMount() {\n\n    }\n}\n\n<div.root>\n    <app-foo name=\"Frank\" key=\"foo\">\n        Current index: ${input.index}\n    </app-foo>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dynamic-tag-preserve-old/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    name: \"Frank\",\n    index: 0,\n  });\n\n  var fooComponent = component.getComponent(\"foo\");\n\n  expect(fooComponent.el.querySelector(\".body\").innerHTML).to.equal(\n    \"Current index: 0\",\n  );\n  expect(fooComponent.el.querySelector(\"span\").innerHTML).to.equal(\n    \"Hello Frank!\",\n  );\n\n  fooComponent.state.name = \"Jane\";\n\n  fooComponent.update();\n\n  expect(fooComponent.el.querySelector(\".body\").innerHTML).to.equal(\n    \"Current index: 0\",\n  );\n  expect(fooComponent.el.querySelector(\"span\").innerHTML).to.equal(\n    \"Hello Jane!\",\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dynamic-tag-root/index.marko",
    "content": "import Modal from './modal.marko';\n\nclass {\n    onClick() {\n    \tthis.clicked = true;\n    }\n}\n\n<${Modal}>\n    <@body>\n    \t<li>\n    \t    <button type=\"button\" key=\"button\" on-click('onClick')>Test link</button>\n    \t</li>\n    </@body>\n</>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dynamic-tag-root/modal.marko",
    "content": "class {\n\n}\n\n<div class=\"modal-dialog\">\n    <div class=\"modal-content\">\n        <${input.body}/>\n    </div>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dynamic-tag-root/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  helpers.triggerMouseEvent(component.getEl(\"button\"), \"click\");\n  expect(component.clicked).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dynamic-tag-shorthand/components/test/index.marko",
    "content": "$ const { renderBody } = input;\n<renderBody/>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dynamic-tag-shorthand/index.marko",
    "content": "import Test2 from \"<test>\";\nclass {}\n\n<div key=\"root\">\n    <test>\n        Hello\n    </test>\n    \n    <Test2>\n        Again\n    </Test2>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dynamic-tag-shorthand/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  expect(component.getEl(\"root\").textContent).to.equal(\"HelloAgain\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dynamic-tag-switch-components/components/goodbye.marko",
    "content": "class {}\n\n<button type=\"button\" on-click('emit', 'goodbye')>\n  Say goodbye\n</button>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dynamic-tag-switch-components/components/hello.marko",
    "content": "class {}\n\n<button type=\"button\" on-click('emit', 'hello')>\n    Say hello\n</button>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dynamic-tag-switch-components/index.marko",
    "content": "import helloComponent from './components/hello.marko';\nimport goodbyeComponent from './components/goodbye.marko';\n\nclass {\n    onCreate() {\n        this.helloReceived = false;\n        this.goodByeReceived = false;\n        this.state = { isHello: true };\n    }\n\n    toggle() {\n        this.state.isHello = !this.state.isHello;\n    }\n}\n\n<${state.isHello ? helloComponent : goodbyeComponent}\n    on-hello(() => component.helloReceived = true)\n    on-goodbye(() => component.goodByeReceived = true)/>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dynamic-tag-switch-components/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  expect(component.helloReceived).to.equal(false);\n  expect(component.goodByeReceived).to.equal(false);\n\n  helpers.targetEl.querySelector(\"button\").click();\n\n  expect(component.helloReceived).to.equal(true);\n  expect(component.goodByeReceived).to.equal(false);\n\n  component.toggle();\n  component.update();\n\n  expect(component.helloReceived).to.equal(true);\n  expect(component.goodByeReceived).to.equal(false);\n\n  helpers.targetEl.querySelector(\"button\").click();\n\n  expect(component.helloReceived).to.equal(true);\n  expect(component.goodByeReceived).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dynamic-tag-user-key/components/hello.marko",
    "content": "class {\n}\n\n<button type=\"button\" on-click('emit', 'hello')>\n    Say hello\n</button>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dynamic-tag-user-key/index.marko",
    "content": "import helloComponent from './components/hello.marko';\n\nclass {\n    onCreate() {\n        this.helloReceived = false;\n    }\n\n    onMount() {\n        this.getComponent('hello').on('hello', () => this.helloReceived = true)\n    }\n}\n\n<${helloComponent} key=\"hello\"/>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/dynamic-tag-user-key/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  expect(component.helloReceived).to.equal(false);\n\n  helpers.targetEl.querySelector(\"button\").click();\n\n  expect(component.helloReceived).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/emit-event-during-mount/components/custom-tag/index.marko",
    "content": "class {\n  onMount() {\n    this.emit(\"custom-event\", { hello: \"world\" });\n  }\n}\n\n<div/>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/emit-event-during-mount/index.marko",
    "content": "class {\n    handleCustomEvent(data) {\n        this.receivedData = data;\n    }\n}\n\n<custom-tag on-custom-event(\"handleCustomEvent\")/>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/emit-event-during-mount/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"));\n  expect(component.receivedData).to.eql({ hello: \"world\" });\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-attach-el/index.marko",
    "content": "class {\n    onMount() {\n        this.events = [];\n    }\n\n    handleAttach(color, event, node) {\n        this.events.push({\n            color: color,\n            event: event,\n            node: node\n        });\n    }\n}\n\n<div>\n    <ul>\n        <for|color| of=input.colors>\n            <li key=color on-attach(\"handleAttach\", color)>${color}</li>\n        </for>\n    </ul>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-attach-el/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    colors: [\"red\"],\n  });\n\n  // When hydrating, the first color item was rendered on the\n  // server so there is no corresponding attach event fired\n  var OFFSET = helpers.isHydrate ? -1 : 0;\n  if (!helpers.isHydrate) {\n    expect(component.events.length).to.equal(1);\n    expect(component.events[0].color).to.equal(\"red\");\n    expect(component.events[0].node).to.equal(\n      component.el.querySelectorAll(\"li\")[0],\n    );\n  }\n\n  component.input = {\n    colors: [\"red\", \"blue\"],\n  };\n\n  component.update();\n\n  expect(component.events.length).to.equal(OFFSET + 2);\n  expect(component.events[OFFSET + 1].color).to.equal(\"blue\");\n  expect(component.events[OFFSET + 1].node).to.equal(\n    component.el.querySelectorAll(\"li\")[1],\n  );\n\n  component.input = {\n    colors: [\"red\", \"green\", \"blue\"],\n  };\n\n  component.update();\n\n  expect(component.events.length).to.equal(OFFSET + 3);\n  expect(component.events[OFFSET + 2].color).to.equal(\"green\");\n  expect(component.events[OFFSET + 2].node).to.equal(\n    component.el.querySelectorAll(\"li\")[1],\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-attach-el-function/index.marko",
    "content": "static function handleAttach(color, event, node) {\n    window.events.push({\n        color: color,\n        event: event,\n        node: node\n    });\n}\n\nclass {}\n\n<div>\n    <ul>\n        <for|color| of=input.colors>\n            <li key=color on-attach(handleAttach, color)>${color}</li>\n        </for>\n    </ul>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-attach-el-function/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var events = (window.events = []);\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    colors: [\"red\"],\n  });\n\n  // When hydrating, the first color item was rendered on the\n  // server so there is no corresponding attach event fired\n  var OFFSET = helpers.isHydrate ? -1 : 0;\n  if (!helpers.isHydrate) {\n    expect(events.length).to.equal(1);\n    expect(events[0].color).to.equal(\"red\");\n    expect(events[0].node).to.equal(component.el.querySelectorAll(\"li\")[0]);\n  }\n\n  component.input = {\n    colors: [\"red\", \"blue\"],\n  };\n\n  component.update();\n\n  expect(events.length).to.equal(OFFSET + 2);\n  expect(events[OFFSET + 1].color).to.equal(\"blue\");\n  expect(events[OFFSET + 1].node).to.equal(\n    component.el.querySelectorAll(\"li\")[1],\n  );\n\n  component.input = {\n    colors: [\"red\", \"green\", \"blue\"],\n  };\n\n  component.update();\n\n  expect(events.length).to.equal(OFFSET + 3);\n  expect(events[OFFSET + 2].color).to.equal(\"green\");\n  expect(events[OFFSET + 2].node).to.equal(\n    component.el.querySelectorAll(\"li\")[1],\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-attach-el-once/index.marko",
    "content": "class {\n    onMount() {\n        this.numberOfInvocations = 0;\n    }\n\n    handleAttach(color, event, node) {\n        this.numberOfInvocations++;\n    }\n}\n\n<div>\n    <ul>\n        <for|color| of=input.colors>\n            <li key=color once-attach(\"handleAttach\", color)>${color}</li>\n        </for>\n    </ul>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-attach-el-once/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    colors: [\"red\"],\n  });\n\n  // When hydrating, the first color item was rendered on the\n  // server so there is no corresponding attach event fired\n  var OFFSET = helpers.isHydrate ? -1 : 0;\n\n  expect(component.numberOfInvocations).to.equal(OFFSET + 1);\n\n  component.input = {\n    colors: [\"red\", \"blue\"],\n  };\n  component.update();\n\n  expect(component.numberOfInvocations).to.equal(OFFSET + 2);\n\n  component.input = {\n    colors: [\"red\", \"green\", \"blue\"],\n  };\n  component.update();\n\n  expect(component.numberOfInvocations).to.equal(OFFSET + 3);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-attach-if-else-nested-component/components/color-include/index.marko",
    "content": "<${input.renderBody}/>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-attach-if-else-nested-component/index.marko",
    "content": "class {\n    onMount() {\n        this.events = [];\n    }\n\n    handleAttach(color, event, node) {\n        this.events.push({\n            color: color,\n            event: event,\n            node: node\n        });\n    }\n}\n\n<ul>\n    <color-include>\n        <if(input.color === \"blue\")>\n            <li.color on-attach(\"handleAttach\", input.color)>blue</li>\n        </if>\n        <else-if(input.color === \"green\")>\n            <li.color on-attach(\"handleAttach\", input.color)>green</li>\n        </else-if>\n        <else>\n            <li.color on-attach(\"handleAttach\", input.color)>\n                ${input.color}\n            </li>\n        </else>\n    </color-include>\n</ul>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-attach-if-else-nested-component/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var colors = [\"blue\", \"green\", \"red\"];\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    color: colors[0],\n  });\n\n  if (helpers.isHydrate) {\n    // When hydrating, the first color item was rendered on the\n    // server so there is no corresponding attach event f\n    // we'll push an empty event so the indexes line up\n    component.events.push(null);\n  } else {\n    expect(component.events.length).to.equal(1);\n    expect(component.events[0].color).to.equal(\"blue\");\n    expect(component.events[0].node).to.equal(\n      component.el.querySelectorAll(\"li\")[0],\n    );\n  }\n\n  component.input = { color: colors[1] };\n  component.update();\n\n  expect(component.events.length).to.equal(2);\n  expect(component.events[1].color).to.equal(colors[1]);\n  expect(component.events[1].node).to.equal(\n    component.el.querySelectorAll(\"li\")[0],\n  );\n\n  component.input = { color: colors[2] };\n  component.update();\n\n  expect(component.events.length).to.equal(3);\n  expect(component.events[2].color).to.equal(colors[2]);\n  expect(component.events[2].node).to.equal(\n    component.el.querySelectorAll(\"li\")[0],\n  );\n\n  component.input = { color: colors[0] };\n  component.update();\n\n  expect(component.events.length).to.equal(4);\n  expect(component.events[3].color).to.equal(colors[0]);\n  expect(component.events[3].node).to.equal(\n    component.el.querySelectorAll(\"li\")[0],\n  );\n\n  component.input = { color: colors[2] };\n  component.update();\n\n  expect(component.events.length).to.equal(5);\n  expect(component.events[4].color).to.equal(colors[2]);\n  expect(component.events[4].node).to.equal(\n    component.el.querySelectorAll(\"li\")[0],\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-detach-component-destroy/index.marko",
    "content": "class {\n    onMount() {\n        this.detachEvent = undefined;\n    }\n\n    handleDetach(event, node) {\n        event.preventDefault();\n        this.detachEvent = event;\n    }\n}\n\n<div.root on-detach('handleDetach')>I'm here!</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-detach-component-destroy/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  expect(helpers.targetEl.querySelector(\".root\") != null).to.equal(true);\n\n  expect(component.detachEvent).to.equal(undefined);\n  component.destroy();\n\n  expect(helpers.targetEl.querySelector(\".root\") != null).to.equal(true);\n  expect(component.detachEvent != null).to.equal(true);\n\n  component.detachEvent.detach();\n  expect(helpers.targetEl.querySelector(\".root\") == null).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-detach-el/index.marko",
    "content": "class {\n    onMount() {\n        this.events = [];\n    }\n\n    handleDetach(color, event, node) {\n        this.events.push({\n            color: color,\n            event: event,\n            node: node\n        });\n    }\n}\n\n<div>\n    <ul>\n        <for|color| of=input.colors>\n            <li key=color on-detach(\"handleDetach\", color)>${color}</li>\n        </for>\n    </ul>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-detach-el/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    colors: [\"red\", \"green\", \"blue\"],\n  });\n\n  expect(component.events.length).to.equal(0);\n\n  component.input = {\n    colors: [\"red\", \"blue\"],\n  };\n\n  component.update();\n\n  expect(component.events.length).to.equal(1);\n  expect(component.events[0].color).to.equal(\"green\");\n  expect(component.events[0].node.innerHTML).to.contain(\"green\");\n\n  component.input = {\n    colors: [\"red\"],\n  };\n\n  component.update();\n\n  expect(component.events.length).to.equal(2);\n  expect(component.events[1].color).to.equal(\"blue\");\n  expect(component.events[1].node.innerHTML).to.contain(\"blue\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-detach-el-once/index.marko",
    "content": "class {\n    onMount() {\n        this.numberOfInvocations = 0;\n    }\n\n    handleDetach(color, event, node) {\n        this.numberOfInvocations++;\n    }\n}\n\n<div>\n    <ul>\n        <for|color| of=input.colors>\n            <li key=color once-detach(\"handleDetach\", color)>${color}</li>\n        </for>\n    </ul>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-detach-el-once/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    colors: [\"red\", \"green\", \"blue\"],\n  });\n\n  expect(component.numberOfInvocations).to.equal(0);\n\n  component.input = {\n    colors: [\"red\", \"blue\"],\n  };\n  component.update();\n\n  expect(component.numberOfInvocations).to.equal(1);\n\n  component.input = {\n    colors: [\"red\"],\n  };\n  component.update();\n\n  expect(component.numberOfInvocations).to.equal(2);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-detach-el-preventDefault/index.marko",
    "content": "class {\n    onMount() {\n        this.events = [];\n    }\n}\n\n<div>\n    <ul>\n        <for|color| of=input.colors>\n            <li key=color on-detach(\"handleDetach\", color)>${color}</li>\n        </for>\n    </ul>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-detach-el-preventDefault/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    colors: [\"red\", \"green\", \"blue\"],\n  });\n\n  expect(component.events.length).to.equal(0);\n\n  var finishDetach;\n\n  component.handleDetach = function (color, event) {\n    expect(color).to.equal(\"green\");\n    finishDetach = event.detach;\n    event.preventDefault();\n  };\n\n  component.input = {\n    colors: [\"red\", \"blue\"],\n  };\n\n  component.update();\n\n  expect(component.el.querySelectorAll(\"li\").length).to.equal(3);\n  expect(component.el.querySelectorAll(\"li\")[1].innerHTML).to.contain(\"green\");\n\n  finishDetach();\n\n  expect(component.el.querySelectorAll(\"li\").length).to.equal(2);\n  expect(component.el.querySelectorAll(\"li\")[1].innerHTML).to.contain(\"blue\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-detach-remove-nested-component-last/components/color-li/index.marko",
    "content": "class {\n    onMount() {\n        this.detachEvent = undefined;\n    }\n\n    handleDetach(event, node) {\n        event.preventDefault();\n        this.detachEvent = event;\n    }\n}\n\n<li.color key=\"root\" on-detach('handleDetach')>${input.color}</li>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-detach-remove-nested-component-last/index.marko",
    "content": "class {}\n\n<ul key=\"root\">\n    <for|color| of=input.colors>\n        <color-li color=color key=color/>\n    </for>\n</ul>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-detach-remove-nested-component-last/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    colors: [\"red\", \"green\", \"blue\"],\n  });\n\n  expect(helpers.targetEl.querySelectorAll(\".color\").length).to.equal(3);\n\n  var redComponent = component.getComponent(\"red\");\n  var greenComponent = component.getComponent(\"green\");\n  var blueComponent = component.getComponent(\"blue\");\n\n  var redEl = redComponent.getEl(\"root\");\n  var greenEl = greenComponent.getEl(\"root\");\n  var blueEl = blueComponent.getEl(\"root\");\n\n  var ul = component.getEl(\"root\");\n  expect(ul != null).to.equal(true);\n\n  expect(redEl.parentNode).to.equal(ul);\n  expect(greenEl.parentNode).to.equal(ul);\n  expect(blueEl.parentNode).to.equal(ul);\n\n  component.input = { colors: [\"red\", \"green\"] };\n  component.update();\n\n  expect(redEl.parentNode).to.equal(ul);\n  expect(greenEl.parentNode).to.equal(ul);\n  expect(blueEl.parentNode).to.equal(ul);\n\n  expect(helpers.targetEl.querySelectorAll(\".color\").length).to.equal(3);\n\n  expect(redComponent.detachEvent == null).to.equal(true);\n  expect(greenComponent.detachEvent == null).to.equal(true);\n  expect(blueComponent.detachEvent != null).to.equal(true);\n\n  blueComponent.detachEvent.detach();\n\n  expect(helpers.targetEl.querySelectorAll(\".color\").length).to.equal(2);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-detach-remove-nested-component-middle/components/color-li/index.marko",
    "content": "class {\n    onMount() {\n        this.detachEvent = undefined;\n    }\n\n    handleDetach(event, node) {\n        event.preventDefault();\n        this.detachEvent = event;\n    }\n}\n\n<li.color key=\"root\" on-detach('handleDetach')>${input.color}</li>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-detach-remove-nested-component-middle/index.marko",
    "content": "class {}\n\n<ul key=\"root\">\n    <for|color| of=input.colors>\n        <color-li color=color key=color/>\n    </for>\n</ul>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-detach-remove-nested-component-middle/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    colors: [\"red\", \"green\", \"blue\"],\n  });\n\n  expect(helpers.targetEl.querySelectorAll(\".color\").length).to.equal(3);\n\n  var redComponent = component.getComponent(\"red\");\n  var greenComponent = component.getComponent(\"green\");\n  var blueComponent = component.getComponent(\"blue\");\n\n  var redEl = redComponent.getEl(\"root\");\n  var greenEl = greenComponent.getEl(\"root\");\n  var blueEl = blueComponent.getEl(\"root\");\n\n  var ul = component.getEl(\"root\");\n  expect(ul != null).to.equal(true);\n\n  expect(redEl.parentNode).to.equal(ul);\n  expect(greenEl.parentNode).to.equal(ul);\n  expect(blueEl.parentNode).to.equal(ul);\n\n  component.input = { colors: [\"red\", \"blue\"] };\n  component.update();\n\n  expect(redEl.parentNode).to.equal(ul);\n  expect(greenEl.parentNode).to.equal(ul);\n  expect(blueEl.parentNode).to.equal(ul);\n\n  expect(helpers.targetEl.querySelectorAll(\".color\").length).to.equal(3);\n\n  expect(redComponent.detachEvent == null).to.equal(true);\n  expect(greenComponent.detachEvent != null).to.equal(true);\n  expect(blueComponent.detachEvent == null).to.equal(true);\n\n  greenComponent.detachEvent.detach();\n\n  expect(helpers.targetEl.querySelectorAll(\".color\").length).to.equal(2);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-handler-bubbling-once/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    this.numOfInvocations = 0;\n  },\n\n  onceClick: function () {\n    this.numOfInvocations++;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-handler-bubbling-once/index.marko",
    "content": "<div>\n\t<button key=\"foo\" type=\"button\" once-click('onceClick')>OK</button>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-handler-bubbling-once/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  helpers.triggerClick(component.getEl(\"foo\"));\n  expect(component.numOfInvocations).to.equal(1);\n\n  helpers.triggerClick(component.getEl(\"foo\"));\n  expect(component.numOfInvocations).to.equal(1);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-handler-bubbling-once-split/component-browser.js",
    "content": "module.exports = {\n  onMount: function () {\n    this.numOfInvocations = 0;\n  },\n\n  onceClick: function () {\n    this.numOfInvocations++;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-handler-bubbling-once-split/index.marko",
    "content": "<div>\n\t<button key=\"foo\" type=\"button\" once-click('onceClick')>OK</button>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-handler-bubbling-once-split/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  helpers.triggerClick(component.getEl(\"foo\"));\n  expect(component.numOfInvocations).to.equal(1);\n\n  helpers.triggerClick(component.getEl(\"foo\"));\n  expect(component.numOfInvocations).to.equal(1);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-handler-custom-args/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    this.pressEvent = undefined;\n  },\n\n  handleButtonPress: function () {\n    this.pressEvent = arguments;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-handler-custom-args/components/app-fancy-button/component.js",
    "content": "module.exports = {\n  getTemplateData: function (state, input) {\n    return {\n      label: input.label,\n    };\n  },\n\n  emitPressEvent: function () {\n    this.emit(\"press\", { component: this });\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-handler-custom-args/components/app-fancy-button/index.marko",
    "content": "<button.fancy-button type=\"button\">\n    ${input.label}\n</button>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-handler-custom-args/index.marko",
    "content": "<div>\n\t<app-fancy-button key=\"ok\" label=\"OK\" onPress('handleButtonPress', { type: 'ok' })/>\n\t<app-fancy-button key=\"cancel\" label=\"Cancel\" onPress('handleButtonPress', { type: 'cancel' })/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-handler-custom-args/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  component.getComponent(\"ok\").emitPressEvent();\n\n  expect(component.pressEvent[0].type).to.equal(\"ok\");\n  expect(component.pressEvent[1].component).to.equal(\n    component.getComponent(\"ok\"),\n  );\n\n  component.getComponent(\"cancel\").emitPressEvent();\n\n  expect(component.pressEvent[0].type).to.equal(\"cancel\");\n  expect(component.pressEvent[1].component).to.equal(\n    component.getComponent(\"cancel\"),\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-handler-dom-args-bubbling/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    this.buttonClickCalls = [];\n  },\n\n  handleButtonClick: function () {\n    this.buttonClickCalls.push(arguments);\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-handler-dom-args-bubbling/index.marko",
    "content": "<div>\n\t<button key=\"ok\" type=\"button\" onClick('handleButtonClick', 'ok')>OK</button>\n\t<button key=\"cancel\" type=\"button\" onClick('handleButtonClick', 'cancel')>Cancel</button>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-handler-dom-args-bubbling/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  expect(component.buttonClickCalls.length).to.equal(0);\n\n  helpers.triggerClick(component.getEl(\"ok\"));\n\n  expect(component.buttonClickCalls.length).to.equal(1);\n\n  expect(component.buttonClickCalls[0][0]).to.equal(\"ok\");\n  expect(component.buttonClickCalls[0][1].stopPropagation).to.be.a(\"function\");\n  expect(component.buttonClickCalls[0][2].innerHTML).to.equal(\"OK\");\n\n  helpers.triggerClick(component.getEl(\"cancel\"));\n\n  expect(component.buttonClickCalls.length).to.equal(2);\n\n  expect(component.buttonClickCalls[1][0]).to.equal(\"cancel\");\n  expect(component.buttonClickCalls[1][1].stopPropagation).to.be.a(\"function\");\n  expect(component.buttonClickCalls[1][2].innerHTML).to.equal(\"Cancel\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-handler-dom-args-bubbling-function/component.js",
    "content": "module.exports = {};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-handler-dom-args-bubbling-function/index.marko",
    "content": "static function handleButtonClick() {\n\twindow.buttonClickCalls.push(arguments);\n}\n\n<div>\n\t<button key=\"ok\" type=\"button\" onClick(handleButtonClick, 'ok')>OK</button>\n\t<button key=\"cancel\" type=\"button\" onClick(handleButtonClick, 'cancel')>Cancel</button>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-handler-dom-args-bubbling-function/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  var buttonClickCalls = (window.buttonClickCalls = []);\n\n  expect(buttonClickCalls.length).to.equal(0);\n\n  helpers.triggerClick(component.getEl(\"ok\"));\n\n  expect(buttonClickCalls.length).to.equal(1);\n\n  expect(buttonClickCalls[0][0]).to.equal(\"ok\");\n  expect(buttonClickCalls[0][1].stopPropagation).to.be.a(\"function\");\n  expect(buttonClickCalls[0][2].innerHTML).to.equal(\"OK\");\n\n  helpers.triggerClick(component.getEl(\"cancel\"));\n\n  expect(buttonClickCalls.length).to.equal(2);\n\n  expect(buttonClickCalls[1][0]).to.equal(\"cancel\");\n  expect(buttonClickCalls[1][1].stopPropagation).to.be.a(\"function\");\n  expect(buttonClickCalls[1][2].innerHTML).to.equal(\"Cancel\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-handler-dom-args-bubbling-multiple-top-level-elements/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    this.buttonClickCalls = [];\n  },\n\n  handleButtonClick: function () {\n    this.buttonClickCalls.push(arguments);\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-handler-dom-args-bubbling-multiple-top-level-elements/index.marko",
    "content": "<div>\n\t<button key=\"ok\" type=\"button\" onClick('handleButtonClick', 'ok')>OK</button>\n\t<button key=\"cancel\" type=\"button\" onClick('handleButtonClick', 'cancel')>Cancel</button>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-handler-dom-args-bubbling-multiple-top-level-elements/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  expect(component.buttonClickCalls.length).to.equal(0);\n\n  helpers.triggerClick(component.getEl(\"ok\"));\n\n  expect(component.buttonClickCalls.length).to.equal(1);\n\n  expect(component.buttonClickCalls[0][0]).to.equal(\"ok\");\n  expect(component.buttonClickCalls[0][1].stopPropagation).to.be.a(\"function\");\n  expect(component.buttonClickCalls[0][2].innerHTML).to.equal(\"OK\");\n\n  helpers.triggerClick(component.getEl(\"cancel\"));\n\n  expect(component.buttonClickCalls.length).to.equal(2);\n\n  expect(component.buttonClickCalls[1][0]).to.equal(\"cancel\");\n  expect(component.buttonClickCalls[1][1].stopPropagation).to.be.a(\"function\");\n  expect(component.buttonClickCalls[1][2].innerHTML).to.equal(\"Cancel\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-handler-dom-args-bubbling-once/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    this.buttonClickCalls = [];\n  },\n\n  handleButtonClick: function () {\n    this.buttonClickCalls.push(arguments);\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-handler-dom-args-bubbling-once/index.marko",
    "content": "<div>\n\t<button key=\"ok\" type=\"button\" onceClick('handleButtonClick', 'ok')>OK</button>\n\t<button key=\"cancel\" type=\"button\" onceClick('handleButtonClick', 'cancel')>Cancel</button>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-handler-dom-args-bubbling-once/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  expect(component.buttonClickCalls.length).to.equal(0);\n\n  // First button\n  helpers.triggerClick(component.getEl(\"ok\"));\n\n  expect(component.buttonClickCalls.length).to.equal(1);\n\n  expect(component.buttonClickCalls[0][0]).to.equal(\"ok\");\n  expect(component.buttonClickCalls[0][1].stopPropagation).to.be.a(\"function\");\n  expect(component.buttonClickCalls[0][2].innerHTML).to.equal(\"OK\");\n\n  helpers.triggerClick(component.getEl(\"ok\"));\n\n  expect(component.buttonClickCalls.length).to.equal(1);\n\n  // Second button\n  helpers.triggerClick(component.getEl(\"cancel\"));\n\n  expect(component.buttonClickCalls.length).to.equal(2);\n\n  expect(component.buttonClickCalls[1][0]).to.equal(\"cancel\");\n  expect(component.buttonClickCalls[1][1].stopPropagation).to.be.a(\"function\");\n  expect(component.buttonClickCalls[1][2].innerHTML).to.equal(\"Cancel\");\n\n  helpers.triggerClick(component.getEl(\"cancel\"));\n\n  expect(component.buttonClickCalls.length).to.equal(2);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-handler-dom-args-non-bubbling/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    this.mouseMoveEvent = undefined;\n  },\n\n  handleButtonMouseMove: function () {\n    this.mouseMoveEvent = arguments;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-handler-dom-args-non-bubbling/index.marko",
    "content": "<div>\n\t<button key=\"ok\" type=\"button\" onMouseMove('handleButtonMouseMove', 'ok')>OK</button>\n\t<button key=\"cancel\" type=\"button\" onMouseMove('handleButtonMouseMove', 'cancel')>Cancel</button>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-handler-dom-args-non-bubbling/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  expect(component.mouseMoveEvent).to.equal(undefined);\n\n  helpers.triggerMouseMove(component.getEl(\"ok\"));\n\n  expect(component.mouseMoveEvent[0]).to.equal(\"ok\");\n  expect(component.mouseMoveEvent[1].stopPropagation).to.be.a(\"function\");\n  expect(component.mouseMoveEvent[2].innerHTML).to.equal(\"OK\");\n\n  helpers.triggerMouseMove(component.getEl(\"cancel\"));\n\n  expect(component.mouseMoveEvent[0]).to.equal(\"cancel\");\n  expect(component.mouseMoveEvent[1].stopPropagation).to.be.a(\"function\");\n  expect(component.mouseMoveEvent[2].innerHTML).to.equal(\"Cancel\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-handler-dom-args-non-bubbling-once/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    this.mouseMoveEventCalls = [];\n  },\n\n  handleButtonMouseMove: function () {\n    this.mouseMoveEventCalls.push(arguments);\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-handler-dom-args-non-bubbling-once/index.marko",
    "content": "<div>\n\t<button key=\"ok\" type=\"button\" onceMouseMove('handleButtonMouseMove', 'ok')>OK</button>\n\t<button key=\"cancel\" type=\"button\" onceMouseMove('handleButtonMouseMove', 'cancel')>Cancel</button>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-handler-dom-args-non-bubbling-once/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  expect(component.mouseMoveEvent).to.equal(undefined);\n\n  // First button\n  helpers.triggerMouseMove(component.getEl(\"ok\"));\n\n  expect(component.mouseMoveEventCalls.length).to.equal(1);\n  expect(component.mouseMoveEventCalls[0][0]).to.equal(\"ok\");\n  expect(component.mouseMoveEventCalls[0][1].stopPropagation).to.be.a(\n    \"function\",\n  );\n  expect(component.mouseMoveEventCalls[0][2].innerHTML).to.equal(\"OK\");\n\n  helpers.triggerMouseMove(component.getEl(\"ok\"));\n  expect(component.mouseMoveEventCalls.length).to.equal(1);\n\n  // Second button\n  helpers.triggerMouseMove(component.getEl(\"cancel\"));\n\n  expect(component.mouseMoveEventCalls.length).to.equal(2);\n  expect(component.mouseMoveEventCalls[1][0]).to.equal(\"cancel\");\n  expect(component.mouseMoveEventCalls[1][1].stopPropagation).to.be.a(\n    \"function\",\n  );\n  expect(component.mouseMoveEventCalls[1][2].innerHTML).to.equal(\"Cancel\");\n\n  helpers.triggerMouseMove(component.getEl(\"cancel\"));\n  expect(component.mouseMoveEventCalls.length).to.equal(2);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-handler-function/index.marko",
    "content": "class {}\n\nstatic function handleClick(component) {\n    if (component.clickCount === undefined) {\n        component.clickCount = 0;\n    }\n\n    component.clickCount++;\n}\n\n<button key=\"button\" on-click(handleClick, component)/>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-handler-function/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers, done) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  var button = component.getEl(\"button\");\n\n  expect(component.clickCount).to.equal(undefined);\n  button.click();\n\n  setTimeout(() => {\n    expect(component.clickCount).to.equal(1);\n    button.click();\n\n    setTimeout(() => {\n      expect(component.clickCount).to.equal(2);\n      done();\n    }, 100);\n  }, 100);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-handler-non-bubbling-multiple-listeners/index.marko",
    "content": "class {\n\tonCreate() {\n\t\tthis.rootCallCount = 0;\n\t\tthis.fooCallCount = 0;\n\t}\n\tfocusRoot() {\n\t\tthis.rootCallCount++;\n\t}\n\tfocusFoo() {\n\t\tthis.fooCallCount++;\n\t}\n}\n\n<div key=\"root\" tabindex=-1 onFocus(\"focusRoot\")>\n\t<input key=\"foo\" type=\"text\" onFocus(\"focusFoo\")>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-handler-non-bubbling-multiple-listeners/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  component.getEl(\"foo\").focus();\n  expect(component.fooCallCount).to.equal(1);\n  expect(component.rootCallCount).to.equal(0);\n\n  component.getEl(\"root\").focus();\n  expect(component.fooCallCount).to.equal(1);\n  expect(component.rootCallCount).to.equal(1);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-handler-non-bubbling-once/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    this.numOfInvocations = 0;\n  },\n\n  onceMouseMove: function () {\n    this.numOfInvocations++;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-handler-non-bubbling-once/index.marko",
    "content": "<div>\n\t<button key=\"foo\" type=\"button\" once-mousemove('onceMouseMove')>OK</button>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-handler-non-bubbling-once/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  helpers.triggerMouseMove(component.getEl(\"foo\"));\n  expect(component.numOfInvocations).to.equal(1);\n\n  helpers.triggerMouseMove(component.getEl(\"foo\"));\n  expect(component.numOfInvocations).to.equal(1);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-handler-non-bubbling-rerender-el-mismatch/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = {\n            div: true\n        };\n    }\n\tonMount() {\n\t\tthis.mouseMoveEvent = undefined;\n\t}\n\n\thandleMouseMove() {\n\t\tthis.mouseMoveEvent = true;\n\t}\n}\n\n<if(state.div)>\n    <div on-mousemove(\"handleMouseMove\") key=\"root\"/>\n</if>\n<else>\n    <span on-mousemove(\"handleMouseMove\") key=\"root\"/>\n</else>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-handler-non-bubbling-rerender-el-mismatch/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  expect(component.mouseMoveEvent).to.equal(undefined);\n\n  var rootEl = helpers.targetEl.querySelector(\"div\");\n  helpers.triggerMouseMove(rootEl);\n  expect(component.mouseMoveEvent).to.equal(true);\n\n  component.state.div = false;\n  component.update();\n\n  expect(helpers.targetEl.querySelector(\"div\") == null).to.equal(true);\n\n  component.mouseMoveEvent = undefined;\n\n  rootEl = helpers.targetEl.querySelector(\"span\");\n  helpers.triggerMouseMove(rootEl);\n  expect(component.mouseMoveEvent).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-handler-non-bubbling-root-el/index.marko",
    "content": "class {\n\tonMount() {\n\t\tthis.mouseMoveEvent = undefined;\n\t}\n\n\thandleMouseMove() {\n\t\tthis.mouseMoveEvent = true;\n\t}\n}\n\n<div on-mousemove(\"handleMouseMove\")/>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/event-handler-non-bubbling-root-el/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  expect(component.mouseMoveEvent).to.equal(undefined);\n\n  var rootEl = helpers.targetEl.querySelector(\"div\");\n\n  helpers.triggerMouseMove(rootEl);\n\n  expect(component.mouseMoveEvent).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/extend-component/components/app-button/component.js",
    "content": "module.exports = {\n  onInput: function (input) {\n    this.state = {\n      size: input.size || \"normal\",\n      variant: input.variant || \"primary\",\n      className: input[\"class\"],\n      body: input.label || input.renderBody,\n    };\n  },\n\n  handleClick: function (event) {\n    // Every Component instance is also an EventEmitter instance.\n    // We will emit a custom \"click\" event when a DOM click event\n    // is triggered\n    this.emit(\"click\", {\n      event: event, // Pass along the DOM event in case it is helpful to others\n    });\n  },\n\n  // Add any other methods here\n  setVariant: function (variant) {\n    this.setState(\"variant\", variant);\n  },\n\n  setSize: function (size) {\n    this.setState(\"size\", size);\n  },\n\n  setLabel: function (label) {\n    this.setState(\"label\", label);\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/extend-component/components/app-button/index.marko",
    "content": "<button\n    class=[\n        \"app-button\",\n        state.className,\n        \"app-button-\" + state.variant,\n        \"app-button-\" + state.size\n    ]\n    onClick(\"handleClick\")>\n    <span>\n        <if(typeof state.body === \"string\")>${state.body}</if>\n        <else>\n            <${state.body}/>\n        </else>\n    </span>\n</button>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/extend-component/components/app-button/marko-tag.json",
    "content": "{\n  \"@label\": \"string\",\n  \"@href\": \"string\",\n  \"@variant\": {\n    \"type\": \"string\",\n    \"enum\": [\"primary\", \"secondary\"]\n  },\n  \"@size\": {\n    \"type\": \"string\",\n    \"enum\": [\"small\", \"normal\", \"large\"]\n  },\n  \"@class\": {\n    \"type\": \"string\",\n    \"description\": \"Additional CSS class names\"\n  },\n  \"@*\": {\n    \"type\": \"string\",\n    \"target-property\": null\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/extend-component/components/app-checkbox/component.js",
    "content": "module.exports = {\n  onInput: function (input) {\n    this.state = {\n      checked: input.checked === true,\n      className: input[\"class\"],\n      data: input.data,\n      body: input.label || input.renderBody,\n    };\n  },\n\n  isChecked: function () {\n    return this.state.checked === true;\n  },\n\n  setChecked: function (newChecked) {\n    if (newChecked !== this.state.checked) {\n      this.setState(\"checked\", !this.state.checked);\n    }\n  },\n\n  toggle: function () {\n    this.setChecked(!this.state.checked);\n  },\n\n  getData: function () {\n    return this.state.data;\n  },\n\n  handleClick: function () {\n    var newChecked = !this.state.checked;\n\n    var defaultPrevented = false;\n\n    this.emit(\"toggle\", {\n      checked: newChecked,\n      data: this.state.data,\n      preventDefault: function () {\n        defaultPrevented = true;\n      },\n    });\n\n    if (!defaultPrevented) {\n      this.setState(\"checked\", newChecked);\n    }\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/extend-component/components/app-checkbox/index.marko",
    "content": "<app-button key=\"button\" class=state.className onClick(\"handleClick\")>\n    <span class=\"app-checkbox-icon\"/>\n    <span key=\"checkboxLabel\">\n        <if(typeof state.body === \"string\")>${state.body}</if>\n        <else>\n            <${state.body}/>\n        </else>\n    </span>\n</app-button>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/extend-component/components/app-checkbox/marko-tag.json",
    "content": "{\n  \"@label\": \"string\",\n  \"@data\": \"expression\",\n  \"@checked\": \"boolean\",\n  \"@class\": \"string\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/extend-component/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  helpers.mount(require.resolve(\"./components/app-checkbox\"), {\n    checked: true,\n    class: \"my-checkbox\",\n    data: 123,\n  });\n\n  expect(helpers.targetEl.children.length).to.equal(1);\n  expect(helpers.targetEl.children[0].nodeName).to.equal(\"BUTTON\");\n\n  var el = helpers.targetEl.querySelector(\".my-checkbox\");\n  expect(el != null).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/for-first-el-key-cache-value/index.marko",
    "content": "class  {\n    onCreate() {\n        this.callCount = 0;\n        this.state = {\n            list: [{\n                id: \"foo\",\n                text: \"Foo Text\"\n            }, {\n                id: \"bar\",\n                text: \"Bar Text\"\n            }]\n        }\n    }\n\n    calcKey(id) {\n        this.callCount++;\n        return `${id}`;\n    }\n\n    swap() {\n        const [a, b] = this.state.list;\n        this.state.list = [b, a];\n    }\n}\n\n<div.root>\n    <for|item| of=state.list>\n        <div key=component.calcKey(item.id)>\n            ${item.text}\n        </div>\n        <div>\n            Non Keyed ${item.text}\n        </div>\n    </for>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/for-first-el-key-cache-value/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  expect(component.callCount).to.equal(2);\n\n  var fooEl = component.getEl(\"foo\");\n  var fooNextSibling = fooEl.nextElementSibling;\n  var barEl = component.getEl(\"bar\");\n  var barNextSibling = barEl.nextElementSibling;\n\n  expect(fooNextSibling.nextElementSibling).to.equal(barEl);\n\n  component.swap();\n  component.update();\n\n  expect(component.callCount).to.equal(4);\n\n  expect(component.getEl(\"bar\").nextElementSibling.nextElementSibling).to.equal(\n    component.getEl(\"foo\"),\n  );\n  expect(component.getEl(\"foo\")).to.equal(fooEl);\n  expect(component.getEl(\"foo\").nextElementSibling).to.equal(fooNextSibling);\n  expect(component.getEl(\"bar\")).to.equal(barEl);\n  expect(component.getEl(\"bar\").nextElementSibling).to.equal(barNextSibling);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/forceUpdate/index.marko",
    "content": "import { expect } from 'chai';\n\nstatic var counter = 0;\n\nclass {\n    test(done) {\n        var el = this.el;\n\n        expect(el.innerHTML).to.equal('0');\n\n        this.onUpdate = function() {\n            expect(el.innerHTML).to.equal('1');\n            done();\n        }\n\n        this.forceUpdate();\n    }\n}\n\n<div>${counter++}</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/forceUpdate/test.js",
    "content": "module.exports = function (helpers, done) {\n  var component = helpers.mount(require.resolve(\"./index.marko\"), {});\n  component.test(done);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/form-controls-default-value/index.marko",
    "content": "class {}\n\n<input key=\"a\" type=\"checkbox\" value=\"abc\" checked/>\n<input key=\"b\" type=\"checkbox\" value=\"abc\"/>\n<input key=\"c\" type=\"text\" value=\"abc\"/>\n<textarea key=\"d\">abc</textarea>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/form-controls-default-value/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index.marko\"));\n\n  expect(component.getEl(\"a\")).has.property(\"defaultValue\", \"abc\");\n  expect(component.getEl(\"a\")).has.property(\"defaultChecked\", true);\n\n  expect(component.getEl(\"b\")).has.property(\"defaultValue\", \"abc\");\n  expect(component.getEl(\"b\")).has.property(\"defaultChecked\", false);\n\n  expect(component.getEl(\"c\")).has.property(\"defaultValue\", \"abc\");\n  expect(component.getEl(\"d\")).has.property(\"defaultValue\", \"abc\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/get-component-for-el-nested-fragments/components/child/index.marko",
    "content": "class {\n    onCreate(input) {\n        this.name = input.name;\n    }\n}\n\n<macro|input| name=\"fragment\">\n    <${input}/>\n</macro>\n\n<fragment>\n    <fragment>\n        <div class=input.name/>\n    </fragment>\n</fragment>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/get-component-for-el-nested-fragments/index.marko",
    "content": "class {\n    onCreate() {\n        this.name = \"parent\";\n    }\n}\n\n<macro|input| name=\"fragment\">\n    <${input}/>\n</macro>\n\n<div key=\"root\">\n    <fragment>\n        <fragment>\n            <child name=\"child-a\"/>\n        </fragment>\n    </fragment>\n    <div.child-b/>\n    <child name=\"child-c\"/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/get-component-for-el-nested-fragments/test.js",
    "content": "var expect = require(\"chai\").expect;\nvar getComponentForEl = require(\"marko/components\").getComponentForEl;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index.marko\"), {});\n  var root = component.getEl(\"root\");\n  var childA = root.querySelector(\".child-a\");\n  var childB = root.querySelector(\".child-b\");\n  var childC = root.querySelector(\".child-c\");\n\n  expect(getComponentForEl(childA)).has.property(\"name\", \"child-a\");\n  expect(getComponentForEl(childB)).has.property(\"name\", \"parent\");\n  expect(getComponentForEl(childC)).has.property(\"name\", \"child-c\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/get-component-for-el-split-component/component-browser.js",
    "content": "module.exports = {};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/get-component-for-el-split-component/components/child/component-browser.js",
    "content": "module.exports = {};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/get-component-for-el-split-component/components/child/index.marko",
    "content": "class {\n    onCreate(input) {\n        this.name = input.name;\n    }\n}\n\n<macro|input| name=\"fragment\">\n    <${input}/>\n</macro>\n\n<fragment>\n    <fragment>\n        <div class=input.name/>\n    </fragment>\n</fragment>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/get-component-for-el-split-component/index.marko",
    "content": "class {\n    onCreate() {\n        this.name = \"parent\";\n    }\n}\n\n<macro|input| name=\"fragment\">\n    <${input}/>\n</macro>\n\n<div key=\"root\">\n    <fragment>\n        <fragment>\n            <child name=\"child-a\"/>\n        </fragment>\n    </fragment>\n    <div.child-b/>\n    <child name=\"child-c\"/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/get-component-for-el-split-component/test.js",
    "content": "var expect = require(\"chai\").expect;\nvar getComponentForEl = require(\"marko/components\").getComponentForEl;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index.marko\"), {});\n  var root = component.getEl(\"root\");\n  var childA = root.querySelector(\".child-a\");\n  var childB = root.querySelector(\".child-b\");\n  var childC = root.querySelector(\".child-c\");\n\n  expect(getComponentForEl(childA)).has.property(\"name\", \"child-a\");\n  expect(getComponentForEl(childB)).has.property(\"name\", \"parent\");\n  expect(getComponentForEl(childC)).has.property(\"name\", \"child-c\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/get-el-nested-fragments/components/child/index.marko",
    "content": "<nested-child/>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/get-el-nested-fragments/components/nested-child/index.marko",
    "content": "<div data-id=\"nested-child\"/>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/get-el-nested-fragments/template.marko",
    "content": "class {}\n\n<child/>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/get-el-nested-fragments/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./template.marko\"));\n  var el = component.el;\n  expect(el).to.have.property(\"tagName\", \"DIV\");\n  expect(el.getAttribute(\"data-id\")).to.equal(\"nested-child\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/global-rerender/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = {\n            count: 1\n        }\n    }\n}\n<div>\n    <span.name>${out.global.name}</span>\n    <span.count>${state.count}</span>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/global-rerender/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index.marko\"), {\n    $global: {\n      name: \"Frank\",\n      serializedGlobals: { name: true },\n    },\n  });\n\n  expect(component.el.querySelector(\".name\").innerHTML).to.equal(\"Frank\");\n  expect(component.el.querySelector(\".count\").innerHTML).to.equal(\"1\");\n\n  component.state.count++;\n  component.update();\n\n  expect(component.el.querySelector(\".name\").innerHTML).to.equal(\"Frank\");\n  expect(component.el.querySelector(\".count\").innerHTML).to.equal(\"2\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/global-rerender-nested/components/hello/index.marko",
    "content": "class {\n}\n<div>\n    <span.name>${out.global.name}</span>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/global-rerender-nested/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = {\n            count: 1\n        }\n    }\n}\n\n<div>\n    <hello/>\n    <span.count>${state.count}</span>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/global-rerender-nested/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index.marko\"), {\n    $global: {\n      name: \"Frank\",\n      serializedGlobals: { name: true },\n    },\n  });\n\n  expect(component.el.querySelector(\".name\").innerHTML).to.equal(\"Frank\");\n  expect(component.el.querySelector(\".count\").innerHTML).to.equal(\"1\");\n\n  component.state.count++;\n  component.update();\n\n  expect(component.el.querySelector(\".name\").innerHTML).to.equal(\"Frank\");\n  expect(component.el.querySelector(\".count\").innerHTML).to.equal(\"2\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/implicit-component/index.marko",
    "content": "<div.hello>Hello!</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/implicit-component/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  expect(helpers.targetEl.querySelector(\".hello\") != null).to.equal(true);\n  component.destroy();\n  expect(helpers.targetEl.querySelector(\".hello\") == null).to.equal(true);\n};\n\nmodule.exports.skip_hydrate = \"Implicit components do not get hydrated\";\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/implicit-component-keys/index.marko",
    "content": "<if(input.swapped === false)>\n    <div.a key=\"a\"/>\n    <div.b key=\"b\"/>\n</if>\n<else>\n    <div.b key=\"b\"/>\n    <div.a key=\"a\"/>\n</else>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/implicit-component-keys/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    swapped: false,\n  });\n\n  var els = helpers.targetEl.querySelectorAll(\"div\");\n  expect(els[0].className).to.equal(\"a\");\n  expect(els[1].className).to.equal(\"b\");\n\n  component.input = { swapped: true };\n  component.update();\n\n  var elsAfter = helpers.targetEl.querySelectorAll(\"div\");\n  expect(elsAfter[0].className).to.equal(\"b\");\n  expect(elsAfter[1].className).to.equal(\"a\");\n\n  // Make sure the same element was swapped\n  expect(els[0]).to.equal(elsAfter[1]);\n  expect(els[1]).to.equal(elsAfter[0]);\n};\n\nmodule.exports.skip_hydrate = \"Implicit components do not get hydrated\";\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/include-event-handler/components/hello.marko",
    "content": "class {\n}\n\n<button type=\"button\" on-click('emit', 'hello')>\n    Say hello\n</button>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/include-event-handler/index.marko",
    "content": "import helloComponent from './components/hello.marko'\n\nclass {\n    onCreate() {\n        this.helloReceived = false;\n    }\n\n    handleHello() {\n        this.helloReceived = true;\n    }\n}\n\n<div>\n    <${helloComponent} on-hello(\"handleHello\")/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/include-event-handler/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  expect(component.helloReceived).to.equal(false);\n\n  component.el.querySelector(\"button\").click();\n\n  expect(component.helloReceived).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/include-preserve-old/components/app-foo/index.marko",
    "content": "class {\n    onInput(input) {\n        this.state = {\n            name: input.name\n        };\n    }\n}\n\n<div.foo>\n    <span>Hello ${state.name}!</span>\n    <div.body>\n        <${input.renderBody}/>\n    </div>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/include-preserve-old/index.marko",
    "content": "class {\n    onMount() {\n\n    }\n}\n\n<div.root>\n    <app-foo name=\"Frank\" key=\"foo\">\n        Current index: ${input.index}\n    </app-foo>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/include-preserve-old/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    name: \"Frank\",\n    index: 0,\n  });\n\n  var fooComponent = component.getComponent(\"foo\");\n\n  expect(fooComponent.el.querySelector(\".body\").innerHTML).to.equal(\n    \"Current index: 0\",\n  );\n  expect(fooComponent.el.querySelector(\"span\").innerHTML).to.equal(\n    \"Hello Frank!\",\n  );\n\n  fooComponent.state.name = \"Jane\";\n\n  fooComponent.update();\n\n  expect(fooComponent.el.querySelector(\".body\").innerHTML).to.equal(\n    \"Current index: 0\",\n  );\n  expect(fooComponent.el.querySelector(\"span\").innerHTML).to.equal(\n    \"Hello Jane!\",\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/include-root/index.marko",
    "content": "import Modal from \"./modal.marko\"\n\nclass {\n    onClick() {\n        this.clicked = true;\n    }\n}\n\n<${Modal}>\n    <@body>\n        <li>\n            <button type=\"button\" key=\"button\" on-click(\"onClick\")>\n                Test link\n            </button>\n        </li>\n    </@body>\n</>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/include-root/modal.marko",
    "content": "class {}\n\n<div class=\"modal-dialog\">\n    <div class=\"modal-content\">\n        <${input.body}/>\n    </div>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/include-root/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  helpers.triggerMouseEvent(component.getEl(\"button\"), \"click\");\n  expect(component.clicked).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/input-checkbox/index.marko",
    "content": "class {\n    onInput(input) {\n        this.state = { first: true, second: false }\n    }\n    toggleValue(e) {\n        this.state[ e.target.value ] = e.target.checked\n    }\n}\n\n<div id=\"the-component\">\n    <input type=\"checkbox\" name=\"opts[]\" value=\"first\" checked=state.first\n        on-change('toggleValue') key=\"first\"/>\n    First Checkbox\n    <br/>\n    <input type=\"checkbox\" name=\"opts[]\" value=\"second\" checked=state.second\n        on-change('toggleValue') key=\"second\"/>\n    Second Checkbox\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/input-checkbox/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index.marko\"));\n\n  var firstCheckbox = component.getEl(\"first\");\n  var secondCheckbox = component.getEl(\"second\");\n\n  expect(firstCheckbox.checked).to.equal(true);\n  expect(secondCheckbox.checked).to.equal(false);\n\n  helpers.triggerMouseEvent(firstCheckbox, \"click\");\n\n  expect(firstCheckbox.checked).to.equal(false);\n  expect(secondCheckbox.checked).to.equal(false);\n\n  helpers.triggerMouseEvent(firstCheckbox, \"click\");\n\n  expect(firstCheckbox.checked).to.equal(true);\n  expect(secondCheckbox.checked).to.equal(false);\n\n  helpers.triggerMouseEvent(secondCheckbox, \"click\");\n\n  expect(firstCheckbox.checked).to.equal(true);\n  expect(secondCheckbox.checked).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/input-global/index.marko",
    "content": "class {\n}\n\n<div key=\"current\">\n    Pathname: ${out.global.pathname}\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/input-global/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index.marko\"), {\n    $global: {\n      pathname: \"/\",\n    },\n  });\n\n  expect(component.getEl(\"current\").innerHTML).to.equal(\"Pathname: /\");\n\n  component.input = {\n    $global: {\n      pathname: \"/test\",\n    },\n  };\n  component.update();\n\n  expect(component.getEl(\"current\").innerHTML).to.equal(\"Pathname: /test\");\n};\n\nmodule.exports.skip_hydrate =\n  \"When hydrating, only one $global value can be passed.  This test uses 2.\";\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/input-no-change/index.marko",
    "content": "static var renderCount = 0;\n\nclass {\n}\n\n<div>\n    Hello <span.name>${input.name}</span>!\n    <span.render-count>${renderCount++}</span>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/input-no-change/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index.marko\"), {\n    name: \"Frank\",\n  });\n\n  expect(component.el.querySelector(\".render-count\").innerHTML).to.equal(\"0\");\n  expect(component.el.querySelector(\".name\").innerHTML).to.equal(\"Frank\");\n\n  // Rerender with a new props object that has the shallow properties\n  component.input = {\n    name: \"Frank\",\n  };\n\n  component.update();\n\n  expect(component.el.querySelector(\".render-count\").innerHTML).to.equal(\"0\");\n  expect(component.el.querySelector(\".name\").innerHTML).to.equal(\"Frank\");\n\n  // Rerender with a new props object that has the shallow properties\n  component.input = {\n    name: \"John\",\n  };\n\n  component.update();\n\n  expect(component.el.querySelector(\".render-count\").innerHTML).to.equal(\"1\");\n  expect(component.el.querySelector(\".name\").innerHTML).to.equal(\"John\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/input-no-change-nested/components/foo/index.marko",
    "content": "static var renderCount = 0;\n\nclass {\n}\n\n<div>\n    Hello <span.name>${input.name}</span>!\n    <span.render-count>${renderCount++}</span>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/input-no-change-nested/components/foo/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index.marko\"), {\n    name: \"Frank\",\n  });\n\n  expect(component.el.querySelector(\".render-count\").innerHTML).to.equal(\"0\");\n  expect(component.el.querySelector(\".name\").innerHTML).to.equal(\"Frank\");\n\n  // Rerender with a new props object that has the shallow properties\n  component.input = {\n    name: \"Frank\",\n  };\n\n  component.update();\n\n  expect(component.el.querySelector(\".render-count\").innerHTML).to.equal(\"0\");\n  expect(component.el.querySelector(\".name\").innerHTML).to.equal(\"Frank\");\n\n  // Rerender with a new props object that has the shallow properties\n  component.input = {\n    name: \"John\",\n  };\n\n  component.update();\n\n  expect(component.el.querySelector(\".render-count\").innerHTML).to.equal(\"1\");\n  expect(component.el.querySelector(\".name\").innerHTML).to.equal(\"John\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/input-no-change-nested/index.marko",
    "content": "class {\n\n}\n\n<foo key=\"foo\" name=input.name/>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/input-no-change-nested/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index.marko\"), {\n    name: \"Frank\",\n  });\n\n  expect(\n    component.getComponent(\"foo\").el.querySelector(\".render-count\").innerHTML,\n  ).to.equal(\"0\");\n  expect(\n    component.getComponent(\"foo\").el.querySelector(\".name\").innerHTML,\n  ).to.equal(\"Frank\");\n\n  // Rerender with a new props object that has the shallow properties\n  component.input = {\n    name: \"Frank\",\n  };\n\n  component.update();\n\n  expect(\n    component.getComponent(\"foo\").el.querySelector(\".render-count\").innerHTML,\n  ).to.equal(\"0\");\n  expect(\n    component.getComponent(\"foo\").el.querySelector(\".name\").innerHTML,\n  ).to.equal(\"Frank\");\n\n  // Rerender with a new props object that has the shallow properties\n  component.input = {\n    name: \"John\",\n  };\n\n  component.update();\n\n  expect(\n    component.getComponent(\"foo\").el.querySelector(\".render-count\").innerHTML,\n  ).to.equal(\"1\");\n  expect(\n    component.getComponent(\"foo\").el.querySelector(\".name\").innerHTML,\n  ).to.equal(\"John\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/input-no-value/index.marko",
    "content": "class {\n    onInput(input) {\n        this.state = {\n            counter: 1\n        }\n    }\n\n    increment() {\n        this.state.counter++;\n    }\n}\n\n<div>\n    <input type='text'\n        placeholder=\"What are you looking for?\"\n        tabindex=1\n        class='input'\n        autocomplete='off'\n        key='searchInput'>\n\n    <button type='button' class='btn btn-search'></button>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/input-no-value/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index.marko\"));\n\n  expect(component.getEl(\"searchInput\").value).to.equal(\"\");\n\n  component.increment();\n  component.update();\n\n  expect(component.getEl(\"searchInput\").value).to.equal(\"\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/input-persisted/index.marko",
    "content": "class {\n    onInput() {\n        this.state = { count:0 };\n    }\n    increment() {\n        this.state.count++;\n    }\n}\n\n<div key=\"current\" style={ color:data.color }>\n    The current count is ${state.count}\n</div>\n<button on-click('increment')>+1</button>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/input-persisted/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index.marko\"), {\n    color: \"#09c\",\n  });\n\n  expect(component.getEl(\"current\").getAttribute(\"style\")).to.equal(\n    \"color:#09c\",\n  );\n\n  component.increment();\n  component.update();\n\n  expect(component.getEl(\"current\").getAttribute(\"style\")).to.equal(\n    \"color:#09c\",\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/input-persisted-nested-component/components/app-counter/index.marko",
    "content": "class {\n    onInput() {\n        if (!this.state) {\n            this.state = {\n                count: 0\n            };\n        }\n    }\n    increment() {\n        this.state.count++;\n    }\n}\n\n<div style={ color:input.color }>\n    Current count is <span.count>${state.count}</span>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/input-persisted-nested-component/index.marko",
    "content": "class {\n    onInput(input) {\n        this.state = {\n            color: input.color\n        };\n    }\n    updateColor(color) {\n        this.state.color = color;\n    }\n}\n\n<div style={ color: state.color }>\n    <app-counter key=\"counter\" color=state.color/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/input-persisted-nested-component/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index.marko\"), {\n    color: \"red\",\n  });\n\n  expect(component.el.getAttribute(\"style\")).to.equal(\"color:red\");\n  expect(component.getComponent(\"counter\").el.getAttribute(\"style\")).to.equal(\n    \"color:red\",\n  );\n  expect(\n    component.getComponent(\"counter\").el.querySelector(\".count\").innerHTML,\n  ).to.equal(\"0\");\n\n  component.getComponent(\"counter\").increment();\n  component.getComponent(\"counter\").update();\n\n  expect(component.el.getAttribute(\"style\")).to.equal(\"color:red\");\n  expect(component.getComponent(\"counter\").el.getAttribute(\"style\")).to.equal(\n    \"color:red\",\n  );\n  expect(\n    component.getComponent(\"counter\").el.querySelector(\".count\").innerHTML,\n  ).to.equal(\"1\");\n\n  component.updateColor(\"green\");\n  component.update();\n\n  expect(component.el.getAttribute(\"style\")).to.equal(\"color: green;\");\n  expect(component.getComponent(\"counter\").el.getAttribute(\"style\")).to.equal(\n    \"color: green;\",\n  );\n  expect(\n    component.getComponent(\"counter\").el.querySelector(\".count\").innerHTML,\n  ).to.equal(\"1\");\n\n  //\n  // expect(component.el.style.color).to.equal('#09c;');\n  // expect(component.getComponent('counter').el.style.color).to.equal('#09c;');\n  //\n  // expect(component.getEl('current').getAttribute('style')).to.equal('color:#09c;');\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/input-value-zero/index.marko",
    "content": "class {\n    onInput(input) {\n        this.state = {\n            value: input.value\n        }\n    }\n}\n\n<div>\n    <input type='text' value=state.value key='input'/>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/input-value-zero/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index.marko\"), {\n    value: 1,\n  });\n\n  expect(component.getEl(\"input\").value).to.equal(\"1\");\n\n  component.state.value = 0;\n  component.update();\n\n  expect(component.getEl(\"input\").value).to.equal(\"0\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/insert-before-after/components/app-hello/index.marko",
    "content": "<div>\n    Hello ${input.value}\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/insert-before-after/index.marko",
    "content": "class {}\n\n<div key=\"renderTarget\">\n    <span key=\"referenceElement\">ref</span>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/insert-before-after/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index.marko\"));\n  var hello = require(\"./components/app-hello\").default;\n\n  var renderTarget = component.getEl(\"renderTarget\");\n  var referenceElement = component.getEl(\"referenceElement\");\n  expect(renderTarget.innerHTML).to.equal(\"<span>ref</span>\");\n\n  hello.renderSync({ value: \"before\" }).insertBefore(referenceElement);\n  hello.renderSync({ value: \"after\" }).insertAfter(referenceElement);\n  expect(renderTarget.innerHTML).to.equal(\n    \"<div>Hello before</div><span>ref</span><div>Hello after</div>\",\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/key-transcluded-content/components/some-nested-component/index.marko",
    "content": "<div.some-nested-component>\n    <${input.renderBody}/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/key-transcluded-content/index.marko",
    "content": "class {\n}\n<div.my-component>\n    <some-nested-component>\n        <input type=\"password\" key=\"passwordInput\">\n    </some-nested-component>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/key-transcluded-content/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  var passwordInput = component.getEl(\"passwordInput\");\n  expect(passwordInput.type).to.equal(\"password\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/keyed-matching-transcluded/components/card/index.marko",
    "content": "class {}\n\n<div.card key=\"cardRoot\">\n    <${input.renderBody}/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/keyed-matching-transcluded/index.marko",
    "content": "class {}\n\n<for|i| of=[1, 2, 3, 4]>\n    <card>\n        <div.body key=`transcluded:${i}`>\n            <span>${i}</span>\n        </div>\n    </card>\n</for>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/keyed-matching-transcluded/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  helpers.mount(require.resolve(\"./index\"), {});\n  var targetEl = helpers.targetEl;\n  var innerHTML = targetEl.innerHTML;\n  expect(innerHTML).to.equal(\n    '<div class=\"card\"><div class=\"body\"><span>1</span></div></div><div class=\"card\"><div class=\"body\"><span>2</span></div></div><div class=\"card\"><div class=\"body\"><span>3</span></div></div><div class=\"card\"><div class=\"body\"><span>4</span></div></div>',\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/label-for/component.js",
    "content": "module.exports = {\n  onMount: function () {},\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/label-for/index.marko",
    "content": "<div key=\"root\">\n\t<label for:scoped=\"input\">foo</label>\n\t<input id:scoped=\"input\" value=\"test\">\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/label-for/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  var label = component.getEl(\"root\").querySelector(\"label\");\n  var forElId = label.getAttribute(\"for\");\n  var inputEl = document.getElementById(forElId);\n\n  expect(!!forElId).to.equal(true);\n  expect(inputEl.value).to.equal(\"test\");\n  expect(label.getAttribute(\"for:scoped\")).to.equal(null);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/label-for-scoped-repeated/index.marko",
    "content": "class {}\n\n<div key=\"root\">\n    <for|index, field| in=input.fields>\n        <div>\n            <input id:scoped=`field_${index}` type=\"text\" value=field.value/>\n            <label key=\"foo\" for:scoped=`field_${index}`>${field.label}</label>\n        </div>\n    </for>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/label-for-scoped-repeated/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var fields = [\n    {\n      value: \"name\",\n      label: \"Name\",\n    },\n    {\n      value: \"age\",\n      label: \"Age\",\n    },\n  ];\n\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    fields: fields,\n  });\n\n  var inputs = component.getEl(\"root\").querySelectorAll(\"input\");\n  var labels = component.getEl(\"root\").querySelectorAll(\"label\");\n\n  expect(inputs.length).to.equal(fields.length);\n\n  for (var i = 0; i < fields.length; i++) {\n    var input = inputs[i];\n    var label = labels[i];\n    expect(input.id).to.equal(component.id + \"-field_\" + i);\n    expect(label.getAttribute(\"for\")).to.equal(input.id);\n    expect(input.value).to.equal(fields[i].value);\n    expect(label.innerHTML).to.equal(fields[i].label);\n  }\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/lifecyle-hooks-constructor/index.marko",
    "content": "class {\n    onCreate() {\n        this.name = 'INITIAL';\n        this.onInputCalls = [];\n    }\n\n    onInput(newInput) {\n        this.onInputCalls.push({\n            name: this.name\n        })\n\n        this.name = newInput.name;\n    }\n}\n\n<div>\n\tHello <span.name>${input.name}</span>!\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/lifecyle-hooks-constructor/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    name: \"Frank\",\n  });\n  expect(component.el.querySelector(\".name\").innerHTML).to.equal(\"Frank\");\n  expect(component.onInputCalls).to.deep.equal([\n    {\n      name: \"INITIAL\",\n    },\n  ]);\n  expect(component.name).to.equal(\"Frank\");\n\n  component.input = { name: \"John\" };\n  component.update();\n\n  expect(component.onInputCalls).to.deep.equal([\n    {\n      name: \"INITIAL\",\n    },\n    {\n      name: \"Frank\",\n    },\n  ]);\n\n  expect(component.el.querySelector(\".name\").innerHTML).to.equal(\"John\");\n  expect(component.name).to.equal(\"John\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/lifecyle-hooks-destroy/components/foo/index.marko",
    "content": "import hooks from '../../hooks';\nimport { expect } from 'chai';\n\nclass {\n    onDestroy(){\n        // The nodes should still be attached\n        var rootNode = this.getEl('root');\n        expect(rootNode.parentNode != null).to.equal(true);\n        hooks.record('foo:destroy');\n    }\n}\n\n<div.foo key=\"root\">\n\tHello <span.name>${input.name}</span>!\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/lifecyle-hooks-destroy/hooks.js",
    "content": "var hooks = [];\n\nmodule.exports = {\n  record: function (name) {\n    hooks.push(name);\n  },\n\n  reset: function () {\n    hooks.length = 0;\n  },\n\n  getHookNames: function () {\n    return hooks;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/lifecyle-hooks-destroy/index.marko",
    "content": "import hooks from './hooks';\nimport { expect } from 'chai';\n\nclass {\n    onDestroy(){\n        // The nodes should still be attached\n        var rootNode = this.getEl('root');\n        expect(rootNode.parentNode != null).to.equal(true);\n        hooks.record('root:destroy');\n    }\n}\n\n<div key=\"root\">\n\t<foo name=input.name key=\"foo\"/>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/lifecyle-hooks-destroy/test.js",
    "content": "var expect = require(\"chai\").expect;\nvar hooks = require(\"./hooks\");\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    name: \"Frank\",\n  });\n\n  component.destroy();\n\n  expect(hooks.getHookNames()).deep.equal([\"root:destroy\", \"foo:destroy\"]);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/lifecyle-hooks-nested-no-id/components/foo/index.marko",
    "content": "import hooks from '../../hooks';\n\nclass {\n    onCreate() {\n        hooks.record('foo', 'create', arguments, this);\n    }\n\n    onRender(){\n        hooks.record('foo', 'render', arguments, this);\n    }\n\n    onMount(){\n        hooks.record('foo', 'mount', arguments, this);\n    }\n\n    onUpdate(){\n        hooks.record('foo', 'update', arguments, this);\n    }\n}\n\n<div.foo>\n\tHello <span.name>${input.name}</span>!\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/lifecyle-hooks-nested-no-id/hooks.js",
    "content": "module.exports = {\n  record: function (component, name, args, thisObj) {\n    var hooksByComponent =\n      this.hooksByComponent || (this.hooksByComponent = {});\n\n    var hooksArray =\n      hooksByComponent[component] || (hooksByComponent[component] = []);\n\n    hooksArray.push({\n      name: name,\n      args: args,\n      thisObject: thisObj,\n    });\n  },\n\n  reset: function () {\n    this.hooksByComponent = {};\n  },\n\n  getHookNames: function (component) {\n    var hooksArray = this.hooksByComponent[component];\n\n    return hooksArray.map(function (hook) {\n      return hook.name;\n    });\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/lifecyle-hooks-nested-no-id/index.marko",
    "content": "import hooks from './hooks';\n\nclass {\n    onCreate() {\n        hooks.record('root', 'create', arguments, this);\n    }\n\n    onRender(){\n        hooks.record('root', 'render', arguments, this);\n    }\n\n    onMount(){\n        hooks.record('root', 'mount', arguments, this);\n    }\n\n    onUpdate(){\n        hooks.record('root', 'update', arguments, this);\n    }\n}\n\n<div>\n\t<foo name=input.name/>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/lifecyle-hooks-nested-no-id/test.js",
    "content": "var expect = require(\"chai\").expect;\nvar hooks = require(\"./hooks\");\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    name: \"Frank\",\n  });\n\n  expect(component.el.querySelector(\".foo .name\").innerHTML).to.equal(\"Frank\");\n  expect(hooks.getHookNames(\"foo\")).to.deep.equal([\n    \"create\",\n    \"render\",\n    \"mount\",\n  ]);\n  expect(hooks.getHookNames(\"root\")).to.deep.equal([\n    \"create\",\n    \"render\",\n    \"mount\",\n  ]);\n\n  hooks.reset();\n\n  component.input = { name: \"John\" };\n  component.update();\n\n  expect(component.el.querySelector(\".foo .name\").innerHTML).to.equal(\"John\");\n  expect(hooks.getHookNames(\"foo\")).to.deep.equal([\"render\", \"update\"]);\n  expect(hooks.getHookNames(\"root\")).to.deep.equal([\"render\", \"update\"]);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/lifecyle-hooks-nested-with-id/components/foo/index.marko",
    "content": "import hooks from '../../hooks';\n\nclass {\n    onCreate() {\n        hooks.record('foo', 'create', arguments, this);\n    }\n\n    onRender(){\n        hooks.record('foo', 'render', arguments, this);\n    }\n\n    onMount(){\n        hooks.record('foo', 'mount', arguments, this);\n    }\n\n    onUpdate(){\n        hooks.record('foo', 'update', arguments, this);\n    }\n}\n\n<div.foo>\n\tHello <span.name>${input.name}</span>!\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/lifecyle-hooks-nested-with-id/hooks.js",
    "content": "module.exports = {\n  record: function (component, name, args, thisObj) {\n    var hooksByComponent =\n      this.hooksByComponent || (this.hooksByComponent = {});\n\n    var hooksArray =\n      hooksByComponent[component] || (hooksByComponent[component] = []);\n\n    hooksArray.push({\n      name: name,\n      args: args,\n      thisObject: thisObj,\n    });\n  },\n\n  reset: function () {\n    this.hooksByComponent = {};\n  },\n\n  getHookNames: function (component) {\n    var hooksArray = this.hooksByComponent[component];\n\n    return hooksArray.map(function (hook) {\n      return hook.name;\n    });\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/lifecyle-hooks-nested-with-id/index.marko",
    "content": "import hooks from './hooks';\n\nclass {\n    onCreate() {\n        hooks.record('root', 'create', arguments, this);\n    }\n\n    onRender(){\n        hooks.record('root', 'render', arguments, this);\n    }\n\n    onMount(){\n        hooks.record('root', 'mount', arguments, this);\n    }\n\n    onUpdate(){\n        hooks.record('root', 'update', arguments, this);\n    }\n}\n\n<div>\n\t<foo name=input.name key=\"foo\"/>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/lifecyle-hooks-nested-with-id/test.js",
    "content": "var expect = require(\"chai\").expect;\nvar hooks = require(\"./hooks\");\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    name: \"Frank\",\n  });\n\n  expect(component.el.querySelector(\".foo .name\").innerHTML).to.equal(\"Frank\");\n  expect(hooks.getHookNames(\"foo\")).to.deep.equal([\n    \"create\",\n    \"render\",\n    \"mount\",\n  ]);\n  expect(hooks.getHookNames(\"root\")).to.deep.equal([\n    \"create\",\n    \"render\",\n    \"mount\",\n  ]);\n\n  hooks.reset();\n\n  component.input = { name: \"John\" };\n  component.update();\n\n  expect(component.el.querySelector(\".foo .name\").innerHTML).to.equal(\"John\");\n  expect(hooks.getHookNames(\"foo\")).to.deep.equal([\"render\", \"update\"]);\n  expect(hooks.getHookNames(\"root\")).to.deep.equal([\"render\", \"update\"]);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/lifecyle-hooks-parent-child-ordering/components/foo/index.marko",
    "content": "import hooks from '../../hooks';\nimport { expect } from 'chai';\n\nclass {\n    onCreate() {\n        hooks.record('foo:create');\n    }\n\n    onRender(){\n        hooks.record('foo:render');\n    }\n\n    onMount(){\n        hooks.record('foo:mount');\n    }\n\n    onUpdate(){\n        hooks.record('foo:update');\n    }\n}\n\n<div.foo>\n\tHello <span.name>${input.name}</span>!\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/lifecyle-hooks-parent-child-ordering/hooks.js",
    "content": "var hooks = [];\n\nmodule.exports = {\n  record: function (name) {\n    hooks.push(name);\n  },\n\n  reset: function () {\n    hooks.length = 0;\n  },\n\n  getHookNames: function () {\n    return hooks;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/lifecyle-hooks-parent-child-ordering/index.marko",
    "content": "import hooks from './hooks';\nimport { expect } from 'chai';\n\nclass {\n    onCreate() {\n        hooks.record('root:create');\n    }\n\n    onRender(){\n        hooks.record('root:render');\n    }\n\n    onMount(){\n        hooks.record('root:mount');\n    }\n\n    onUpdate(){\n        hooks.record('root:update');\n    }\n}\n\n<div>\n\t<foo name=input.name key=\"foo\"/>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/lifecyle-hooks-parent-child-ordering/test.js",
    "content": "var expect = require(\"chai\").expect;\nvar hooks = require(\"./hooks\");\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    name: \"Frank\",\n  });\n  expect(hooks.getHookNames()).deep.equal([\n    \"root:create\",\n    \"root:render\",\n    \"foo:create\",\n    \"foo:render\",\n    \"foo:mount\",\n    \"root:mount\",\n  ]);\n\n  hooks.reset();\n\n  component.input = { name: \"John\" };\n  component.update();\n\n  expect(hooks.getHookNames()).deep.equal([\n    \"root:render\",\n    \"foo:render\",\n    \"foo:update\",\n    \"root:update\",\n  ]);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/lifecyle-hooks-render-arg/index.marko",
    "content": "class {\n    onRender(arg){\n        this.renderArg = arg;\n    }\n}\n\n<div>\n\tHello <span.name>${input.name}</span>!\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/lifecyle-hooks-render-arg/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    name: \"Frank\",\n  });\n\n  var out1 = component.renderArg;\n\n  component.input = { name: \"John\" };\n  component.update();\n\n  var out2 = component.renderArg;\n\n  expect(out1).to.not.equal(out2);\n  expect(out1.element).to.be.a(\"function\");\n  expect(out2.element).to.be.a(\"function\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/lifecyle-hooks-root/index.marko",
    "content": "class {\n    onCreate() {\n        this.record('create', arguments, this);\n    }\n\n    onRender(){\n        this.record('render', arguments, this);\n    }\n\n    onMount(){\n        this.record('mount', arguments, this);\n    }\n\n    onUpdate(){\n        this.record('update', arguments, this);\n    }\n\n    record(name, args, thisObj) {\n        this.hooks = this.hooks || (this.hooks = []);\n\n        this.hooks.push({\n            name: name,\n            args: args,\n            thisObject: thisObj\n        });\n    }\n\n    reset() {\n        this.hooks = null;\n    }\n\n    get hookNames() {\n        if (!this.hooks) {\n            return [];\n        }\n\n        return this.hooks.map(function(hook) {\n            return hook.name;\n        });\n    }\n}\n\n<div>\n\tHello <span.name>${input.name}</span>!\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/lifecyle-hooks-root/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    name: \"Frank\",\n  });\n  expect(component.el.querySelector(\".name\").innerHTML).to.equal(\"Frank\");\n  expect(component.hookNames).to.deep.equal([\"create\", \"render\", \"mount\"]);\n  component.reset();\n\n  component.input = { name: \"John\" };\n  component.update();\n\n  expect(component.el.querySelector(\".name\").innerHTML).to.equal(\"John\");\n  expect(component.hookNames).to.deep.equal([\"render\", \"update\"]);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/morphdom-node-added-nested-keyed/index.marko",
    "content": "class  {\n    onCreate() {\n        this.state = {\n            renderCount: 0\n        }\n    }\n}\n\n<div.root>\n    <if(state.renderCount === 0)>\n        <div>\n            <input type=\"text\" key=\"nameInput\" value=\"1\"/>\n        </div>\n    </if>\n    <else>\n        <p>\n            <input type=\"text\" key=\"nameInput\" value=\"2\"/>\n        </p>\n    </else>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/morphdom-node-added-nested-keyed/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  expect(component.getEl(\"nameInput\").parentNode.nodeName).to.equal(\"DIV\");\n\n  component.state.renderCount++;\n  component.update();\n\n  expect(component.getEl(\"nameInput\").parentNode.nodeName).to.equal(\"P\");\n  expect(component.getEl(\"nameInput\").value).to.equal(\"2\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/multiple-roots-rerender-root-child/components/foo/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = {\n            count: 0\n        };\n    }\n}\n\n<div.foo>\n    count:${state.count}\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/multiple-roots-rerender-root-child/index.marko",
    "content": "class {\n}\n\n<foo key=\"foo\"/>\n\n<div.root>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/multiple-roots-rerender-root-child/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index.marko\"), {});\n\n  var foo = component.getComponent(\"foo\");\n  expect(foo.el.innerHTML).to.contain(\"count:0\");\n\n  foo.state.count++;\n  foo.update();\n\n  expect(component.isDestroyed()).to.equal(false);\n  expect(foo.isDestroyed()).to.equal(false);\n  expect(foo.el.innerHTML).to.contain(\"count:1\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/nested-fragment-namespace/index.marko",
    "content": "class {}\n\n<macro name=\"nested\">\n    <title>Test</title>\n</macro>\n\n<div key=\"root\">\n    <svg>\n        <nested/>\n    </svg>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/nested-fragment-namespace/test.js",
    "content": "var expect = require(\"chai\").expect;\nvar svgNS = \"http://www.w3.org/2000/svg\";\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"));\n  var root = component.getEl(\"root\");\n  var svgEl = root.firstChild;\n  expect(svgEl.namespaceURI).to.equal(svgNS);\n  expect(svgEl.firstElementChild.tagName).to.equal(\"title\");\n  expect(svgEl.firstElementChild.namespaceURI).to.equal(svgNS);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/nested-fragments/components/container.marko",
    "content": "class {}\n\n<fragment>\n    <fragment/>\n    <fragment/>\n    <if(input.showLast)>\n        <fragment/>\n    </if>\n</fragment>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/nested-fragments/components/fragment.marko",
    "content": "class {}\n\n<${input.renderBody}/>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/nested-fragments/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = {\n            showLast: true\n        }\n    }\n}\n\n<container showLast=state.showLast/>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/nested-fragments/test.js",
    "content": "module.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index.marko\"), {});\n  component.setState(\"showLast\", false);\n  component.update();\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/onCreate/index.marko",
    "content": "class {\n    onCreate(input, out) {\n        this.onCreateArgs = arguments;\n    }\n}\n<div>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/onCreate/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index.marko\"), {\n    name: \"Frank\",\n    $global: {\n      name: \"Frank\",\n      serializedGlobals: { name: true },\n    },\n  });\n\n  var onCreateArgs = component.onCreateArgs;\n  var onCreateInput = onCreateArgs[0];\n  var onCreateOut = onCreateArgs[1];\n\n  expect(onCreateInput.name).to.equal(\"Frank\");\n  expect(onCreateOut.global.name).to.equal(\"Frank\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/onInput/component.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = {\n  onInput: function (input) {\n    expect(input.name).to.eql(\"Frank\");\n    this.state = { count: 0 };\n    this.setUpTest();\n  },\n\n  onMount: function () {\n    expect(this.state.count).to.eql(0);\n    expect(this.foo).to.eql(\"bar\");\n    expect(this.array).to.eql([1, 2, 3]);\n    this.onMountCalled = true;\n  },\n\n  setUpTest: function () {\n    this.foo = \"bar\";\n    this.array = [1, 2, 3];\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/onInput/index.marko",
    "content": "<div>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/onInput/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index.marko\"), {\n    name: \"Frank\",\n  });\n\n  expect(component.onMountCalled).to.eql(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/onInput-instance-data/component.js",
    "content": "module.exports = {\n  onInput: function () {\n    this.string = \"world\";\n    this.number = 12;\n    this.boolean = true;\n    this.complex = {\n      a: '<\"hello\">',\n      b: \"test\",\n    };\n  },\n\n  onMount: function () {\n    this.name = \"app-component-config\";\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/onInput-instance-data/index.marko",
    "content": "<div>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/onInput-instance-data/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nrequire(\"./component\");\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  expect(component.string).to.equal(\"world\");\n  expect(component.number).to.equal(12);\n  expect(component.boolean).to.equal(true);\n  expect(component.complex).to.deep.equal({\n    a: '<\"hello\">',\n    b: \"test\",\n  });\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/onInput-return/index.marko",
    "content": "class {\n    onInput(input) {\n        return {\n            name: input.name.toUpperCase()\n        }\n    }\n}\n\n<div>\n    Hello <span.name>${input.name}</span>!\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/onInput-return/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    name: \"Frank\",\n  });\n\n  expect(component.input.name).to.equal(\"FRANK\");\n  expect(component.el.querySelector(\".name\").innerHTML).to.equal(\"FRANK\");\n\n  component.input = {\n    name: \"John\",\n  };\n\n  component.update();\n\n  expect(component.input.name).to.equal(\"JOHN\");\n  expect(component.el.querySelector(\".name\").innerHTML).to.equal(\"JOHN\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/prefer-closest-tag/components/child/components/child/components/test.marko",
    "content": "-- test 3\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/prefer-closest-tag/components/child/components/child/index.marko",
    "content": "<test/>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/prefer-closest-tag/components/child/components/test.marko",
    "content": "-- test 2\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/prefer-closest-tag/components/child/index.marko",
    "content": "<test/>\n<child/>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/prefer-closest-tag/components/test.marko",
    "content": "-- test 1\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/prefer-closest-tag/index.marko",
    "content": "class {}\n\n<div>\n  <test/>\n  <child/>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/prefer-closest-tag/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  expect(component.el.textContent).to.equal(\"test 1test 2test 3\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-component-transcluded-autokey/component.js",
    "content": "module.exports = {\n  onMount: function () {},\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-component-transcluded-autokey/components/container.marko",
    "content": "<div class=input.class>\n  <${input.renderBody}/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-component-transcluded-autokey/components/counter.marko",
    "content": "<span id=\"preserve\" data-counter=input.counter no-update>\n  <div.preserved-counter>${input.counter}</div>\n</span>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-component-transcluded-autokey/index.marko",
    "content": "<container>\n    <div.unpreserved-counter>${input.counter}</div>\n    <counter counter=input.counter no-update/>\n</container>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-component-transcluded-autokey/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var counter = 0;\n\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    counter: counter,\n  });\n\n  expect(component.el.querySelector(\".unpreserved-counter\").innerHTML).to.equal(\n    \"0\",\n  );\n  expect(\n    component.el.querySelector(\"#preserve\").getAttribute(\"data-counter\"),\n  ).to.equal(\"0\");\n  expect(component.el.querySelector(\".preserved-counter\").innerHTML).to.equal(\n    \"0\",\n  );\n\n  component.input = {\n    counter: counter + 1,\n  };\n  component.update();\n\n  expect(component.el.querySelector(\".unpreserved-counter\").innerHTML).to.equal(\n    \"1\",\n  );\n  expect(\n    component.el.querySelector(\"#preserve\").getAttribute(\"data-counter\"),\n  ).to.equal(\"0\");\n  expect(component.el.querySelector(\".preserved-counter\").innerHTML).to.equal(\n    \"0\",\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-component-transcluded-userkey/component.js",
    "content": "module.exports = {\n  onMount: function () {},\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-component-transcluded-userkey/components/container.marko",
    "content": "<div class=input.class>\n  <${input.renderBody}/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-component-transcluded-userkey/components/counter.marko",
    "content": "<span id=\"preserve\" data-counter=input.counter no-update>\n  <div.preserved-counter>${input.counter}</div>\n</span>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-component-transcluded-userkey/index.marko",
    "content": "<container>\n    <div.unpreserved-counter>${input.counter}</div>\n    <counter key=\"preserved\" counter=input.counter no-update/>\n</container>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-component-transcluded-userkey/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var counter = 0;\n\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    counter: counter,\n  });\n\n  expect(component.el.querySelector(\".unpreserved-counter\").innerHTML).to.equal(\n    \"0\",\n  );\n  expect(\n    component.el.querySelector(\"#preserve\").getAttribute(\"data-counter\"),\n  ).to.equal(\"0\");\n  expect(component.el.querySelector(\".preserved-counter\").innerHTML).to.equal(\n    \"0\",\n  );\n\n  component.input = {\n    counter: counter + 1,\n  };\n  component.update();\n\n  expect(component.el.querySelector(\".unpreserved-counter\").innerHTML).to.equal(\n    \"1\",\n  );\n  expect(\n    component.el.querySelector(\"#preserve\").getAttribute(\"data-counter\"),\n  ).to.equal(\"0\");\n  expect(component.el.querySelector(\".preserved-counter\").innerHTML).to.equal(\n    \"0\",\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-dom/component.js",
    "content": "module.exports = {\n  onMount: function () {},\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-dom/index.marko",
    "content": "<div>\n    <div.unpreserved-counter>${input.counter}</div>\n    <span key=\"preserve\" data-counter=input.counter no-update>\n        <div.preserved-counter>${input.counter}</div>\n    </span>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-dom/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var counter = 0;\n\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    counter: counter,\n  });\n\n  expect(component.el.querySelector(\".unpreserved-counter\").innerHTML).to.equal(\n    \"0\",\n  );\n  expect(component.getEl(\"preserve\").getAttribute(\"data-counter\")).to.equal(\n    \"0\",\n  );\n  expect(component.el.querySelector(\".preserved-counter\").innerHTML).to.equal(\n    \"0\",\n  );\n\n  component.input = {\n    counter: counter + 1,\n  };\n  component.update();\n\n  expect(component.el.querySelector(\".unpreserved-counter\").innerHTML).to.equal(\n    \"1\",\n  );\n  expect(component.getEl(\"preserve\").getAttribute(\"data-counter\")).to.equal(\n    \"0\",\n  );\n  expect(component.el.querySelector(\".preserved-counter\").innerHTML).to.equal(\n    \"0\",\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-dom-body/component.js",
    "content": "module.exports = {\n  onMount: function () {},\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-dom-body/index.marko",
    "content": "<div>\n    <div.unpreserved-counter>${input.counter}</div>\n    <span key=\"preserve\" data-counter=input.counter no-update-body>\n        <div.preserved-counter>${input.counter}</div>\n    </span>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-dom-body/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var counter = 0;\n\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    counter: counter,\n  });\n\n  expect(component.el.querySelector(\".unpreserved-counter\").innerHTML).to.equal(\n    \"0\",\n  );\n  expect(component.getEl(\"preserve\").getAttribute(\"data-counter\")).to.equal(\n    \"0\",\n  );\n  expect(component.el.querySelector(\".preserved-counter\").innerHTML).to.equal(\n    \"0\",\n  );\n\n  component.input = {\n    counter: counter + 1,\n  };\n\n  component.update();\n\n  expect(component.el.querySelector(\".unpreserved-counter\").innerHTML).to.equal(\n    \"1\",\n  );\n  expect(component.getEl(\"preserve\").getAttribute(\"data-counter\")).to.equal(\n    \"1\",\n  );\n  expect(component.el.querySelector(\".preserved-counter\").innerHTML).to.equal(\n    \"0\",\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-dom-body-no-id/component.js",
    "content": "module.exports = {\n  onMount: function () {},\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-dom-body-no-id/index.marko",
    "content": "<div>\n    <div.unpreserved-counter>${input.counter}</div>\n    <span class=\"preserve\" data-counter=input.counter no-update-body>\n        <div.preserved-counter>${input.counter}</div>\n    </span>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-dom-body-no-id/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var counter = 0;\n\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    counter: counter,\n  });\n\n  expect(component.el.querySelector(\".unpreserved-counter\").innerHTML).to.equal(\n    \"0\",\n  );\n  expect(\n    component.el.querySelector(\".preserve\").getAttribute(\"data-counter\"),\n  ).to.equal(\"0\");\n  expect(component.el.querySelector(\".preserved-counter\").innerHTML).to.equal(\n    \"0\",\n  );\n\n  component.input = {\n    counter: counter + 1,\n  };\n  component.update();\n\n  expect(component.el.querySelector(\".unpreserved-counter\").innerHTML).to.equal(\n    \"1\",\n  );\n  expect(\n    component.el.querySelector(\".preserve\").getAttribute(\"data-counter\"),\n  ).to.equal(\"1\");\n  expect(component.el.querySelector(\".preserved-counter\").innerHTML).to.equal(\n    \"0\",\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-dom-body-shared-key/components/child-preserved.marko",
    "content": "<span no-update-body key=\"shared\">Hello</span>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-dom-body-shared-key/index.marko",
    "content": "class {}\n\n<div.unpreserved-counter key=\"shared\">${input.counter}</div>\n<child-preserved count=input.counter/>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-dom-body-shared-key/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var counter = 0;\n\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    counter: counter,\n  });\n\n  expect(\n    helpers.targetEl.querySelector(\".unpreserved-counter\").innerHTML,\n  ).to.equal(\"0\");\n\n  component.input = {\n    counter: counter + 1,\n  };\n\n  component.update();\n\n  expect(\n    helpers.targetEl.querySelector(\".unpreserved-counter\").innerHTML,\n  ).to.equal(\"1\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-dom-conditional-before/component.js",
    "content": "module.exports = {\n  onMount: function () {},\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-dom-conditional-before/index.marko",
    "content": "<div>\n    <div.unpreserved-counter>${input.counter}</div>\n    <if(input.counter % 2 === 0)>\n        <div key=\"odd\">odd</div>\n    </if>\n    <span key=\"preserve\" data-counter=input.counter no-update>\n        <div.preserved-counter>${input.counter}</div>\n    </span>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-dom-conditional-before/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var counter = 0;\n\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    counter: counter,\n  });\n\n  expect(component.el.querySelector(\".unpreserved-counter\").innerHTML).to.equal(\n    \"0\",\n  );\n  expect(component.getEl(\"preserve\").getAttribute(\"data-counter\")).to.equal(\n    \"0\",\n  );\n  expect(component.el.querySelector(\".preserved-counter\").innerHTML).to.equal(\n    \"0\",\n  );\n\n  component.input = {\n    counter: counter + 1,\n  };\n  component.update();\n\n  expect(component.el.querySelector(\".unpreserved-counter\").innerHTML).to.equal(\n    \"1\",\n  );\n  expect(component.getEl(\"preserve\").getAttribute(\"data-counter\")).to.equal(\n    \"0\",\n  );\n  expect(component.el.querySelector(\".preserved-counter\").innerHTML).to.equal(\n    \"0\",\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-dom-loop/component.js",
    "content": "module.exports = {\n  onMount: function () {},\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-dom-loop/index.marko",
    "content": "<div data-count=input.count>\n    <for|item| of=input.items>\n        <div key=item data-count=input.count no-update>${item}</div>\n    </for>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-dom-loop/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var items = [\"a\", \"b\", \"c\"];\n  var count = 0;\n\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    items: items,\n    count: count,\n  });\n\n  expect(\n    helpers.targetEl.firstElementChild.getAttribute(\"data-count\"),\n  ).to.equal(\"0\");\n\n  Array.from(helpers.targetEl.firstElementChild.childNodes).forEach((child) => {\n    if (child.tagName === \"div\") {\n      expect(child.getAttribute(\"data-count\")).to.equal(\"0\");\n    }\n  });\n\n  expect(helpers.targetEl.textContent).to.equal(\"abc\");\n\n  component.input = {\n    count: count + 1,\n    items: [].concat(items).reverse(),\n  };\n  component.update();\n\n  expect(\n    helpers.targetEl.firstElementChild.getAttribute(\"data-count\"),\n  ).to.equal(\"1\");\n\n  Array.from(helpers.targetEl.firstElementChild.childNodes).forEach((child) => {\n    if (child.tagName === \"div\") {\n      expect(child.getAttribute(\"data-count\")).to.equal(\"0\");\n    }\n  });\n\n  expect(helpers.targetEl.textContent).to.equal(\"cba\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-dom-no-id/component.js",
    "content": "module.exports = {\n  onMount: function () {},\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-dom-no-id/index.marko",
    "content": "<div>\n    <div.unpreserved-counter>${input.counter}</div>\n    <span class=\"preserve\" data-counter=input.counter no-update>\n        <div.preserved-counter>${input.counter}</div>\n    </span>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-dom-no-id/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var counter = 0;\n\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    counter: counter,\n  });\n\n  expect(component.el.querySelector(\".unpreserved-counter\").innerHTML).to.equal(\n    \"0\",\n  );\n  expect(\n    component.el.querySelector(\".preserve\").getAttribute(\"data-counter\"),\n  ).to.equal(\"0\");\n  expect(component.el.querySelector(\".preserved-counter\").innerHTML).to.equal(\n    \"0\",\n  );\n\n  component.input = {\n    counter: counter + 1,\n  };\n  component.update();\n\n  expect(component.el.querySelector(\".unpreserved-counter\").innerHTML).to.equal(\n    \"1\",\n  );\n  expect(\n    component.el.querySelector(\".preserve\").getAttribute(\"data-counter\"),\n  ).to.equal(\"0\");\n  expect(component.el.querySelector(\".preserved-counter\").innerHTML).to.equal(\n    \"0\",\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-dom-server-mismatch/component.js",
    "content": "module.exports = {\n  onMount: function () {},\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-dom-server-mismatch/components/child.marko",
    "content": "<li no-update>\n  ${input.value}\n</li>\n<if(input.value === 1 && typeof window === \"undefined\")>\n  <script/>\n</if>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-dom-server-mismatch/index.marko",
    "content": "<ul key=\"list\">\n    <for|i| from=1 to=3>\n        <child value=i/>\n    </for>\n</ul>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-dom-server-mismatch/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var counter = 0;\n\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    counter: counter,\n  });\n\n  expect(component.getEl(\"list\").textContent).to.equal(\"123\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-dom-transcluded-autokey/component.js",
    "content": "module.exports = {\n  onMount: function () {},\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-dom-transcluded-autokey/components/container.marko",
    "content": "<div class=input.class>\n  <${input.renderBody}/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-dom-transcluded-autokey/index.marko",
    "content": "<container>\n    <div.unpreserved-counter>${input.counter}</div>\n    <span id=\"preserve\" data-counter=input.counter no-update>\n        <div.preserved-counter>${input.counter}</div>\n    </span>\n</container>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-dom-transcluded-autokey/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var counter = 0;\n\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    counter: counter,\n  });\n\n  expect(component.el.querySelector(\".unpreserved-counter\").innerHTML).to.equal(\n    \"0\",\n  );\n  expect(\n    component.el.querySelector(\"#preserve\").getAttribute(\"data-counter\"),\n  ).to.equal(\"0\");\n  expect(component.el.querySelector(\".preserved-counter\").innerHTML).to.equal(\n    \"0\",\n  );\n\n  component.input = {\n    counter: counter + 1,\n  };\n  component.update();\n\n  expect(component.el.querySelector(\".unpreserved-counter\").innerHTML).to.equal(\n    \"1\",\n  );\n  expect(\n    component.el.querySelector(\"#preserve\").getAttribute(\"data-counter\"),\n  ).to.equal(\"0\");\n  expect(component.el.querySelector(\".preserved-counter\").innerHTML).to.equal(\n    \"0\",\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-dom-transcluded-userkey/component.js",
    "content": "module.exports = {\n  onMount: function () {},\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-dom-transcluded-userkey/components/container.marko",
    "content": "<div class=input.class>\n  <${input.renderBody}/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-dom-transcluded-userkey/index.marko",
    "content": "<container>\n    <div.unpreserved-counter>${input.counter}</div>\n    <span key=\"preserve\" data-counter=input.counter no-update>\n        <div.preserved-counter>${input.counter}</div>\n    </span>\n</container>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-dom-transcluded-userkey/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var counter = 0;\n\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    counter: counter,\n  });\n\n  expect(component.el.querySelector(\".unpreserved-counter\").innerHTML).to.equal(\n    \"0\",\n  );\n  expect(component.getEl(\"preserve\").getAttribute(\"data-counter\")).to.equal(\n    \"0\",\n  );\n  expect(component.el.querySelector(\".preserved-counter\").innerHTML).to.equal(\n    \"0\",\n  );\n\n  component.input = {\n    counter: counter + 1,\n  };\n  component.update();\n\n  expect(component.el.querySelector(\".unpreserved-counter\").innerHTML).to.equal(\n    \"1\",\n  );\n  expect(component.getEl(\"preserve\").getAttribute(\"data-counter\")).to.equal(\n    \"0\",\n  );\n  expect(component.el.querySelector(\".preserved-counter\").innerHTML).to.equal(\n    \"0\",\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-nested/components/hello.marko",
    "content": "static var renderCount = 0;\n\nclass {\n\n}\n\n<div.hello>\n    Hello ${input.name}!\n    <span.render-count>${renderCount++}</span>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-nested/index.marko",
    "content": "class {\n}\n\n<div>\n    <hello name=\"Frank\"/>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-nested/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  expect(component.el.querySelector(\".render-count\").innerHTML).to.equal(\"0\");\n\n  component.forceUpdate();\n  component.update();\n\n  expect(component.el.querySelector(\".render-count\").innerHTML).to.equal(\"0\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-nodes-update-scoped-elements/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = { show: true };\n    }\n    hide() {\n        this.state.show = false;\n    }\n}\n\n<div>\n    <if(state.show)>\n        <label for:scoped=\"abc\"/>\n    </if>\n    <input id:scoped=\"abc\"/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/preserve-nodes-update-scoped-elements/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  var rootEl = component.getEl();\n  var inputEl = rootEl.querySelector(\"input\");\n\n  component.hide();\n  component.update();\n\n  expect(\n    null === rootEl.querySelector(\"label\"),\n    \"label should have been removed\",\n  ).to.equal(true);\n  expect(\n    inputEl === rootEl.querySelector(\"input\"),\n    \"input should not have been removed\",\n  ).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/prevent-input-mutation-repeated-at-tags/components/menu/index.marko",
    "content": "<ul>\n    <for|item| of=input.items>\n        <li>\n            <${item}/>\n        </li>\n    </for>\n</ul>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/prevent-input-mutation-repeated-at-tags/components/menu/marko-tag.json",
    "content": "{\n  \"@items <item>[]\": {\n    \"@*\": {\n      \"type\": \"expression\",\n      \"target-property\": null\n    }\n  },\n  \"@*\": {\n    \"type\": \"expression\",\n    \"target-property\": null\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/prevent-input-mutation-repeated-at-tags/index.marko",
    "content": "class {\n    onCreate() {\n        this.data = { a: 1 };\n    }\n    onMount() {\n        window.component = this;\n    }\n}\n\n<menu ...component.data>\n    <for|i| from=1 to=3>\n        <@item>${i}</@item>\n    </for>\n</menu>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/prevent-input-mutation-repeated-at-tags/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  expect(component.data).to.deep.equal({ a: 1 });\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/redefine-component-var/index.marko",
    "content": "class {}\n\n$ const component = \"World\";\n\n<div key=\"root\">\n    Hello ${component}\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/redefine-component-var/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  expect(component.getEl(\"root\")).to.exist;\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/ref-nested-component-multiple-root-els/component.js",
    "content": "module.exports = {};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/ref-nested-component-multiple-root-els/components/multiple-root-els/component.js",
    "content": "module.exports = {\n  onInput: function (input) {\n    this.state = {\n      name: input.name,\n      age: input.age,\n    };\n  },\n  getName: function () {\n    return this.getEl(\"name\").innerHTML;\n  },\n  getAge: function () {\n    return this.getEl(\"age\").innerHTML;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/ref-nested-component-multiple-root-els/components/multiple-root-els/index.marko",
    "content": "<div key=\"name\">${state.name}</div>\n<span key=\"age\">${state.age}</span>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/ref-nested-component-multiple-root-els/index.marko",
    "content": "<multiple-root-els key=\"foo\" name='Frank' age=30/>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/ref-nested-component-multiple-root-els/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    name: \"Frank\",\n    age: 30,\n  });\n  var fooComponent = component.getComponent(\"foo\");\n  expect(fooComponent != null).to.equal(true);\n  expect(fooComponent.getName()).to.equal(\"Frank\");\n  expect(fooComponent.getAge()).to.equal(\"30\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/ref-nested-component-multiple-root-els-with-refs/component.js",
    "content": "module.exports = {\n  onInput: function (input) {\n    this.state = {\n      name: input.name,\n      age: input.age,\n    };\n  },\n  setName: function (newName) {\n    this.setState(\"name\", newName);\n  },\n  setAge: function (newAge) {\n    this.setState(\"age\", newAge);\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/ref-nested-component-multiple-root-els-with-refs/components/multiple-root-els/component.js",
    "content": "module.exports = {\n  onInput: function (input) {\n    this.state = {\n      name: input.name,\n      age: input.age,\n    };\n  },\n  getName: function () {\n    return this.getEl(\"name\").innerHTML;\n  },\n  getAge: function () {\n    return this.getEl(\"age\").innerHTML;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/ref-nested-component-multiple-root-els-with-refs/components/multiple-root-els/index.marko",
    "content": "<div key=\"name\">${state.name}</div>\n<span key=\"age\">${state.age}</span>\n<a href=\"ebay.com\">\n</a>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/ref-nested-component-multiple-root-els-with-refs/index.marko",
    "content": "<multiple-root-els key=\"foo\" name='Frank' age=30/>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/ref-nested-component-multiple-root-els-with-refs/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    name: \"Frank\",\n    age: 30,\n  });\n  var fooComponent = component.getComponent(\"foo\");\n  expect(fooComponent != null).to.equal(true);\n  expect(fooComponent.getName()).to.equal(\"Frank\");\n  expect(fooComponent.getAge()).to.equal(\"30\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/remove-last-multi-root-component/child.marko",
    "content": "<div>A</div>\n<div>B</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/remove-last-multi-root-component/index.marko",
    "content": "import Child from \"./child\"\n\nclass {\n    onCreate() {\n        this.state = { display: true };\n    }\n\n    toggle() {\n        this.state.display = !this.state.display;\n    }\n}\n\n<div key=\"root\">\n    <if(state.display)>\n        <${Child}/>\n    </if>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/remove-last-multi-root-component/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  var el = component.getEl(\"root\");\n\n  expect(el.children.length).to.equal(2);\n  component.toggle();\n  component.forceUpdate();\n  component.update();\n  expect(el.children.length).to.equal(0);\n  component.toggle();\n  component.forceUpdate();\n  component.update();\n  expect(el.children.length).to.equal(2);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/replace/components/hello/index.marko",
    "content": "<div.hello>Hello ${input.name}</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/replace/index.marko",
    "content": "class {}\n\n<div><div key=\"target\"><hello name=\"Frank\"/></div></div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/replace/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index.marko\"));\n  var hello = require(\"./components/hello\").default;\n\n  var targetEl = component.getEl(\"target\");\n  hello.renderSync({ name: \"John\" }).replace(targetEl);\n\n  expect(component.el.firstElementChild.className).to.equal(\"hello\");\n  expect(component.el.firstElementChild.innerHTML).to.equal(\"Hello John\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/replace-async/components/hello/index.marko",
    "content": "<div.hello>Hello ${input.name}</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/replace-async/index.marko",
    "content": "class {}\n\n<div><div key=\"target\"><hello name=\"Frank\"/></div></div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/replace-async/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers, done) {\n  var component = helpers.mount(require.resolve(\"./index.marko\"));\n  var hello = require(\"./components/hello\").default;\n\n  var targetEl = component.getEl(\"target\");\n  hello\n    .render({ name: \"John\" })\n    .then(function (result) {\n      result.replace(targetEl);\n      expect(component.el.firstElementChild.className).to.equal(\"hello\");\n      expect(component.el.firstElementChild.innerHTML).to.equal(\"Hello John\");\n      done();\n    })\n    .catch(function (err) {\n      done(err);\n    });\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/replaceChildrenOf/components/app-counter/index.marko",
    "content": "class {\n    onInput(input) {\n        this.state = {\n            counter: input.value\n        }\n    }\n\n    increment() {\n        this.state.counter++;\n    }\n}\n\n<div>\n    Count: ${state.counter}\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/replaceChildrenOf/index.marko",
    "content": "class {}\n\n<div>\n    <div key=\"renderTarget\">\n        <span>This should disappear</span>\n        <span>We'll add a nested UI component just to make sure it is destroyed.</span>\n        <app-counter value=0 key=\"initialCounter\"/>\n    </div>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/replaceChildrenOf/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index.marko\"));\n\n  var initialCounter = component.getComponent(\"initialCounter\");\n\n  var counter = require(\"./components/app-counter\").default;\n\n  var renderTarget = component.getEl(\"renderTarget\");\n  expect(renderTarget.innerHTML).to.contain(\"Count: 0\");\n\n  counter.renderSync({ value: 99 }).replaceChildrenOf(renderTarget);\n\n  expect(renderTarget.innerHTML).to.not.contain(\"Count: 0\");\n  expect(renderTarget.innerHTML).to.contain(\"Count: 99\");\n  expect(initialCounter.isDestroyed()).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/rerender-destroy-incompatible/components/bar/index.marko",
    "content": "class {\n    onCreate() {\n        this.isBar = true;\n    }\n}\n\n<div.bar>bar</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/rerender-destroy-incompatible/components/foo/index.marko",
    "content": "class {\n    onCreate() {\n        this.isFoo = true;\n    }\n}\n\n<div.foo>foo</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/rerender-destroy-incompatible/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = {\n            target: 'foo'\n        };\n    }\n}\n\n<div.root>\n    <if(state.target === 'foo')>\n        <foo key=\"child\"/>\n    </if>\n    <else>\n        <bar key=\"child\"/>\n    </else>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/rerender-destroy-incompatible/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index.marko\"), {});\n\n  expect(component.el.innerHTML).to.contain(\"foo\");\n  expect(component.el.innerHTML).to.not.contain(\"bar\");\n\n  var foo = component.getComponent(\"child\");\n  expect(foo.isDestroyed()).to.equal(false);\n\n  component.state.target = \"bar\";\n  component.update();\n\n  expect(foo.isDestroyed()).to.equal(true);\n\n  var bar = component.getComponent(\"child\");\n  expect(bar.isDestroyed()).to.equal(false);\n\n  expect(component.el.innerHTML).to.not.contain(\"foo\");\n  expect(component.el.innerHTML).to.contain(\"bar\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/rerender-multiple-roots/index.marko",
    "content": "class {\n    onInput() {\n        this.state = { count: 0 };\n    }\n}\n\n<div>${state.count}</div>\n-- [${state.count}]\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/rerender-multiple-roots/test.js",
    "content": "// Test for issues #749 #690. Using multiple root nodes or style tag at the root would\n// cause an infinite loop on rerender. This code does not perform any assertions\n// but it will get caught in an infinite loop without the changes in PR #751\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  component.state.count = 1;\n  component.update();\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/rerender-same-root/component.js",
    "content": "module.exports = {};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/rerender-same-root/index.marko",
    "content": "<div class=\"app-rerender\" key=\"root\">\n    ${input.label}\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/rerender-same-root/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    label: \"Foo\",\n  });\n\n  var rootEl = component.getEl(\"root\");\n\n  component.input = {\n    label: \"Bar\",\n  };\n  component.update();\n\n  expect(component.getEl(\"root\")).to.equal(rootEl);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/rerender-style-root/index.marko",
    "content": "class {\n    onInput() {\n        this.state = {\n            count: 0\n        };\n    }\n}\n\n<style>\n  button {}\n</style>\n<div/>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/rerender-style-root/test.js",
    "content": "// Test for issues #749 #690. Using multiple root nodes or style tag at the root would\n// cause an infinite loop on rerender. This code does not perform any assertions\n// but it will get caught in an infinite loop without the changes in PR #751\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  component.state.count = 1;\n  component.update();\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/sanity-check-custom-event/components/app-foo/component.js",
    "content": "module.exports = {\n  emitTestEvent: function () {\n    this.emit(\"test\", \"abc\", \"123\");\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/sanity-check-custom-event/components/app-foo/index.marko",
    "content": "<div.foo>\n    [app-foo]\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/sanity-check-custom-event/index.marko",
    "content": "<div>\n    <app-foo onTest('handleFooTest')/>\n</div>\n\nclass {\n    onMount() {\n        var fooEl = document.querySelector('.foo');\n        var fooComponent = this.fooComponent = require('marko/components').getComponentForEl(fooEl);\n        fooComponent.emitTestEvent();\n    }\n    handleFooTest() {\n        this.fooEvent = arguments;\n    }\n}"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/sanity-check-custom-event/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index.marko\"), {\n    name: \"Frank\",\n  });\n\n  expect(component.fooEvent.length).to.equal(3);\n  expect(component.fooEvent[0]).to.equal(\"abc\");\n  expect(component.fooEvent[1]).to.equal(\"123\");\n  expect(component.fooEvent[2]).to.equal(component.fooComponent);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/sanity-check-implicit-bind-component/component.js",
    "content": "module.exports = {\n  onInput: function (input) {\n    this.state = {\n      name: input.name,\n    };\n  },\n  setName: function (newName) {\n    this.setState(\"name\", newName);\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/sanity-check-implicit-bind-component/index.marko",
    "content": "<div>${state.name}</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/sanity-check-implicit-bind-component/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    name: \"Frank\",\n    age: 30,\n  });\n\n  expect(component.el.innerHTML).to.equal(\"Frank\");\n\n  component.setName(\"Jane\");\n\n  component.update();\n\n  expect(component.el.innerHTML).to.equal(\"Jane\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/sanity-check-inline/index.marko",
    "content": "<div>\n    Hello ${state.name}!\n</div>\n\nclass {\n    onInput(input) {\n        this.state = {\n            name: input.name\n        };\n    }\n    setName(newName) {\n        this.setState('name', newName);\n    }\n}"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/sanity-check-inline/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index.marko\"), {\n    name: \"Frank\",\n  });\n\n  expect(component.el.innerHTML).to.contain(\"Hello Frank!\");\n\n  component.setName(\"Jane\");\n  component.update();\n\n  expect(component.el.innerHTML).to.contain(\"Hello Jane!\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/sanity-check-key/components/app-foo/index.marko",
    "content": "class {\n    onMount() {\n\n    }\n}\n\n<div.foo>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/sanity-check-key/index.marko",
    "content": "class {\n    onMount() {\n\n    }\n}\n\n<div.root>\n    <app-foo key=\"foo\"/>\n    <a href=\"ebay.com\" key=\"link\">eBay</a>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/sanity-check-key/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  var fooComponent = component.getComponent(\"foo\");\n  expect(fooComponent.el.className).to.equal(\"foo\");\n\n  var link = component.getEl(\"link\");\n  expect(link.nodeName).to.equal(\"A\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/sanity-check-multiple-root-els/component.js",
    "content": "module.exports = {\n  onInput: function (input) {\n    this.state = {\n      name: input.name,\n      age: input.age,\n      url: input.url,\n    };\n  },\n  setName: function (newName) {\n    this.setState(\"name\", newName);\n  },\n  setAge: function (newAge) {\n    this.setState(\"age\", newAge);\n  },\n  setUrl: function (newUrl) {\n    this.setState(\"url\", newUrl);\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/sanity-check-multiple-root-els/index.marko",
    "content": "<div key=\"name\">${state.name}</div>\n<span key=\"age\">${state.age}</span>\n<a key=\"link\" href=state.url></a>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/sanity-check-multiple-root-els/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    name: \"Frank\",\n    age: 30,\n    url: \"http://ebay.com/\",\n  });\n\n  expect(component.getEl(\"name\").innerHTML).to.equal(\"Frank\");\n  expect(component.getEl(\"age\").innerHTML).to.equal(\"30\");\n  expect(component.getEl(\"link\").href).to.equal(\"http://ebay.com/\");\n\n  component.setName(\"Jane\");\n  component.setAge(50);\n  component.setUrl(\"http://ebay.com/search/\");\n\n  component.update();\n\n  expect(component.getEl(\"name\").innerHTML).to.equal(\"Jane\");\n  expect(component.getEl(\"age\").innerHTML).to.equal(\"50\");\n  expect(component.getEl(\"link\").href).to.equal(\"http://ebay.com/search/\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/sanity-check-single-file-component/index.marko",
    "content": "class {\n    onInput(input) {\n        this.state = {\n            name: input.name\n        };\n    }\n    setName(newName) {\n        this.setState('name', newName);\n    }\n}\n\n<div>\n    Hello ${state.name}!\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/sanity-check-single-file-component/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index.marko\"), {\n    name: \"Frank\",\n  });\n\n  expect(component.el.innerHTML).to.contain(\"Hello Frank!\");\n\n  component.setName(\"Jane\");\n  component.update();\n\n  expect(component.el.innerHTML).to.contain(\"Hello Jane!\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/sanity-check-template-entry/component.js",
    "content": "module.exports = {\n  onInput: function (input) {\n    this.state = {\n      name: input.name,\n    };\n  },\n  setName: function (newName) {\n    this.state.name = newName;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/sanity-check-template-entry/index.marko",
    "content": "<div>\n    Hello ${state.name}!\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/sanity-check-template-entry/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index.marko\"), {\n    name: \"Frank\",\n  });\n\n  expect(component.el.innerHTML).to.contain(\"Hello Frank!\");\n\n  component.setName(\"Jane\");\n  component.update();\n\n  expect(component.el.innerHTML).to.contain(\"Hello Jane!\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/sanity-check-template-entry-split/component-browser.js",
    "content": "module.exports = {\n  setName: function (newName) {\n    this.getEl(\"name\").innerHTML = newName;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/sanity-check-template-entry-split/component.js",
    "content": "module.exports = {\n  onInput: function (input) {\n    return {\n      name: input.name.toUpperCase(),\n    };\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/sanity-check-template-entry-split/index.marko",
    "content": "<div>\n    Hello <span key=\"name\">${input.name}</span>!\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/sanity-check-template-entry-split/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index.marko\"), {\n    name: \"Frank\",\n  });\n\n  expect(component.el.innerHTML).to.contain(\"FRANK\");\n\n  component.setName(\"Jane\");\n\n  expect(component.el.innerHTML).to.contain(\"Jane\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/scoped-link/component.js",
    "content": "module.exports = {\n  onMount: function () {},\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/scoped-link/index.marko",
    "content": "<div key=\"root\">\n\t<a href:scoped=\"#anchor\">Go to anchor</a>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/scoped-link/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  var link = component.getEl(\"root\").querySelector(\"a\");\n  var linkHref = link.getAttribute(\"href\");\n  expect(!!linkHref).to.equal(true);\n  expect(linkHref).to.match(/^#.*anchor$/);\n  expect(link.getAttribute(\"href:scoped\")).to.equal(null);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/server-client-mismatch/components/app-bar/index.marko",
    "content": "class {\n    onMount() {\n\n    }\n}\n\n<div.bar>\n    Hello\n</div>\n<div.bar>\n    World\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/server-client-mismatch/components/app-foo/index.marko",
    "content": "class {\n    onMount() {\n\n    }\n}\n\n<div.foo>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/server-client-mismatch/index.marko",
    "content": "class {\n    onMount() {\n\n    }\n}\n\n<if (typeof window !== 'undefined')>\n    <app-foo/>\n    <a href=\"ebay.com\">eBay</a>\n</if>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/server-client-mismatch/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  expect(helpers.targetEl.innerHTML).to.equal(\n    '<div class=\"foo\"></div><a href=\"ebay.com\">eBay</a>',\n  );\n\n  component.forceUpdate();\n  component.update();\n\n  expect(helpers.targetEl.innerHTML).to.equal(\n    '<div class=\"foo\"></div><a href=\"ebay.com\">eBay</a>',\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/set-null-state/index.marko",
    "content": "class {}\n$ function handleClick() {\n    component.setState('initNull', true);\n}\n\n<div>\n    <span.null>${state && state.initNull}</span>\n    <button key=\"button\" onClick(handleClick)>Update</button>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/set-null-state/test.js",
    "content": "\"use strict\";\n\nvar expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  expect(component.state).to.equal(null);\n  helpers.triggerEvent(component.getEl(\"button\"), \"click\");\n  expect(component.state.initNull).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/simple-attrs-optimize-toggle/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = {\n            toggle: true\n        }\n    }\n    toggle() {\n        this.state.toggle = !this.state.toggle;\n    }\n}\n\n<div class=state.toggle ? \"a\" : null id=state.toggle ? \"b\" : null style=state.toggle ? \"color:green\" : null/>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/simple-attrs-optimize-toggle/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index.marko\"));\n  expect(component.el.outerHTML).to.equal(`<div class=\"a\" id=\"b\" style=\"color:green\"></div>`);\n  component.toggle();\n  component.update();\n  expect(component.el.outerHTML).to.equal(`<div></div>`);\n  component.toggle();\n  component.update();\n  expect(component.el.outerHTML).to.equal(`<div class=\"a\" id=\"b\" style=\"color: green;\"></div>`);\n  component.toggle();\n  component.update();\n  expect(component.el.outerHTML).to.equal(`<div></div>`);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/split-browser/component-browser.js",
    "content": "module.exports = {\n  handleClick: function () {\n    this.state.clicked = true;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/split-browser/component.js",
    "content": "module.exports = {\n  onCreate: function () {\n    this.state = {\n      clicked: false,\n    };\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/split-browser/index.marko",
    "content": "<div on-click('handleClick')>\n    Click me\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/split-browser/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"));\n  expect(component.state.clicked).to.equal(false);\n\n  helpers.triggerClick(component.el);\n\n  expect(component.state.clicked).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/split-browser-export-class/component-browser.js",
    "content": "function Component() {}\n\nComponent.prototype = {\n  handleClick: function () {\n    this.state.clicked = true;\n  },\n};\n\nmodule.exports = Component;\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/split-browser-export-class/component.js",
    "content": "module.exports = {\n  onCreate: function () {\n    this.state = {\n      clicked: false,\n    };\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/split-browser-export-class/index.marko",
    "content": "<div on-click('handleClick')>\n    Click me\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/split-browser-export-class/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"));\n  expect(component.state.clicked).to.equal(false);\n\n  helpers.triggerClick(component.el);\n\n  expect(component.state.clicked).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/split-browser-inline/component-browser.js",
    "content": "module.exports = {\n  handleClick: function () {\n    this.state.clicked = true;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/split-browser-inline/index.marko",
    "content": "class {\n    onCreate(input) {\n        this.state = {\n            clicked: false\n        };\n    }\n}\n<div on-click('handleClick')>\n    Click me\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/split-browser-inline/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"));\n  expect(component.state.clicked).to.equal(false);\n\n  helpers.triggerClick(component.el);\n\n  expect(component.state.clicked).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/state-freeze/index.marko",
    "content": "class {\n    onInput(input) {\n        this.state = {}\n    }\n}\n\n<div>\n    Hello ${state.name || ''}!\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/state-freeze/test.js",
    "content": "\"use strict\";\n\nvar expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  expect(function () {\n    component.state.foo = \"bar\";\n  }).to.throw(\"Cannot add property foo\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/state-null-undefined/index.marko",
    "content": "class {\n    onInput(input) {\n        this.state = {\n            nameNull: null,\n            nameUndefined: undefined\n        }\n    }\n}\n\n<div>\n    <span.null>${input.nameNull}</span>\n    <span.undefined>${state.nameUndefined}</span>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/state-null-undefined/test.js",
    "content": "\"use strict\";\n\nvar expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  expect(component.state.nameNull).to.equal(null);\n  expect(component.state.nameUndefined).to.equal(undefined);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/state-var/component.js",
    "content": "module.exports = {\n  onInput: function () {\n    this.state = {\n      name: \"Frank\",\n    };\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/state-var/index.marko",
    "content": "<div>\n    Hello ${state.name}!\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/state-var/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  expect(component.el.innerHTML).to.contain(\"Frank\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/state-watch-null/index.marko",
    "content": "class {\n    onInput(input) {\n        this.state = {\n            name: null\n        }\n    }\n}\n\n<div>\n    Hello ${state.name || ''}!\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/state-watch-null/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  expect(component.el.innerHTML).to.contain(\"Hello !\");\n  component.state.name = \"Frank\";\n  component.update();\n  expect(component.el.innerHTML).to.contain(\"Hello Frank!\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/state-watch-null-async/index.marko",
    "content": "class {\n    onInput(input) {\n        this.state = {\n            error: null\n        };\n    }\n\n    submit() {\n        var self = this;\n\n        setTimeout(function() {\n            self.state.error = \"FATAL ERROR\";\n        }, 50);\n    }\n}\n\n<form on-submit(\"submit\")>\n    <if(state.error)>\n        <p>FATAL ERROR</p>\n    </if>\n</form>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/state-watch-null-async/test.js",
    "content": "// see https://github.com/marko-js/marko/issues/556\nvar expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers, done) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  expect(component.el.innerHTML).to.not.contain(\"FATAL ERROR\");\n\n  helpers.triggerEvent(component.getEl(), \"submit\");\n\n  setTimeout(function () {\n    expect(component.el.innerHTML).to.contain(\"FATAL ERROR\");\n    done();\n  }, 100);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/state-watch-undefined/index.marko",
    "content": "class {\n    onInput(input) {\n        this.state = {\n            name: undefined\n        }\n    }\n}\n\n<div>\n    Hello ${state.name || ''}!\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/state-watch-undefined/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n\n  expect(component.el.innerHTML).to.contain(\"Hello !\");\n  component.state.name = \"Frank\";\n  component.update();\n  expect(component.el.innerHTML).to.contain(\"Hello Frank!\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/style-attr/index.marko",
    "content": "class {}\n$ var marginRight = 10;\n$ var left = 0;\n\n<div style={left: left, marginRight: marginRight}></div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/style-attr/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  expect(component.el.style.left).to.equal(\"0px\");\n  expect(component.el.style.marginRight).to.equal(\"10px\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/tag-empty/component.js",
    "content": "module.exports = {\n  onMount() {\n    this.inner = this.getEl(\"item\");\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/tag-empty/index.marko",
    "content": "<div key=\"root\">\n    <${input.comp}>\n        <span>\n            body text\n        </span>\n    </>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/tag-empty/test.js",
    "content": "const expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  function check(tag, isFirst) {\n    if (!isFirst) {\n      component.input = { comp: tag };\n      component.update();\n    }\n    const openTag = tag ? `<${tag}>` : \"\";\n    const closeTag = tag ? `</${tag}>` : \"\";\n    expect(helpers.targetEl.innerHTML).to.contain(\n      `<div>${openTag}${innerHTML}${closeTag}</div>`,\n    );\n  }\n\n  const component = helpers.mount(require.resolve(\"./index\"), {\n    comp: \"a\",\n  });\n  const innerHTML = \"<span>body text</span>\";\n\n  check(\"a\", true);\n  check(null);\n  check(\"a\");\n  check();\n  check(\"div\");\n  check(\"\");\n  check(\"a\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/tag-params/components/name/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = {\n            name:'Anna'\n        }\n    }\n    changeName() {\n        this.state.name = 'Vickie';\n    }\n}\n\n<div>\n    <${input} name=state.name/>\n    <button on-click('changeName')>\n        Change\n    </button>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/tag-params/index.marko",
    "content": "class {}\n\n<name|{ name }| key=\"name\">\n    Hello, ${name}!\n</name>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/tag-params/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  expect(helpers.targetEl.innerHTML).to.contain(\"Hello, Anna!\");\n  var nameComponent = component.getComponent(\"name\");\n  nameComponent.changeName();\n  nameComponent.update();\n  expect(helpers.targetEl.innerHTML).to.contain(\"Hello, Vickie!\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/tag-params-nested-tags/components/name/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = {\n            name:'Anna'\n        }\n    }\n    changeName() {\n        this.state.name = 'Vickie';\n    }\n}\n\n<div>\n    <${input.first} name=state.name/>\n    <button on-click('changeName')>\n        Change\n    </button>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/tag-params-nested-tags/index.marko",
    "content": "class {}\n<name key=\"name\">\n    <@first|{ name }|>\n        Hello, ${name}!\n    </@first>\n</name>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/tag-params-nested-tags/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {});\n  expect(helpers.targetEl.innerHTML).to.contain(\"Hello, Anna!\");\n  var nameComponent = component.getComponent(\"name\");\n  nameComponent.changeName();\n  nameComponent.update();\n  expect(helpers.targetEl.innerHTML).to.contain(\"Hello, Vickie!\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/textarea/index.marko",
    "content": "class {\n    onInput(attrs) {\n        this.state = { code: '// Your code here', errorText: '' }\n    }\n    submit() {\n        this.state.errorText = 'Placeholder error'\n    }\n}\n\n<div class=\"code-editor\">\n    <h3>Code Editor</h3>\n    <div>\n        <textarea>${state.code}</textarea>\n    </div>\n    <button on-click('submit')>Run Code</button>\n    <pre class=\"error-message\">${state.errorText}</pre>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/textarea/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index.marko\"));\n\n  expect(component.el.querySelector(\"pre\").innerHTML).to.equal(\"\");\n\n  component.submit();\n  component.update();\n\n  expect(component.el.querySelector(\"pre\").innerHTML).to.equal(\n    \"Placeholder error\",\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/textarea-value-attribute/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = {\n            value: \"Hello\"\n        }\n    }\n}\n\n<textarea key=\"textarea\">${state.value}</>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/textarea-value-attribute/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index.marko\"));\n  var textarea = component.getEl(\"textarea\");\n\n  expect(textarea.value).to.equal(\"Hello\");\n\n  component.state.value = \"World\";\n  component.update();\n\n  expect(textarea.value).to.equal(\"World\");\n\n  component.state.value = undefined;\n  component.update();\n\n  expect(textarea.value).to.equal(\"\");\n\n  component.state.value = null;\n  component.update();\n\n  expect(textarea.value).to.equal(\"\");\n\n  component.state.value = 0;\n  component.update();\n\n  expect(textarea.value).to.equal(\"0\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/top-level-transcluded-content/components/inner.marko",
    "content": "class {}\n\n<${input.renderBody}/>\n<div/>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/top-level-transcluded-content/index.marko",
    "content": "class {}\n\n<inner key=\"inner\">\n  <div>\n    <span>Hello world</span>\n  </div>\n</inner>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/top-level-transcluded-content/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index.marko\"));\n  var inner = component.getComponent(\"inner\");\n  expect(helpers.targetEl.textContent).to.equal(\"Hello world\");\n  inner.forceUpdate(); // Toggle\n  inner.update();\n  expect(helpers.targetEl.textContent).to.equal(\"Hello world\");\n  inner.forceUpdate(); // Toggle\n  inner.update();\n  expect(helpers.targetEl.textContent).to.equal(\"Hello world\");\n  component.forceUpdate(); // Break\n  component.update();\n  expect(helpers.targetEl.textContent).to.equal(\"Hello world\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/transcluded-component-from-non-rerender-root/component-browser.js",
    "content": "module.exports = {};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/transcluded-component-from-non-rerender-root/components/app-button/index.marko",
    "content": "class {\n    onInput(input) {\n        this.state = {\n            size: input.size || \"normal\",\n            variant: input.variant || \"primary\"\n        };\n    }\n\n    // Add any other methods here\n    setVariant(variant) {\n        this.state.variant = variant;\n    }\n\n    setSize(size) {\n        this.state.size = size;\n    }\n\n    setLabel(label) {\n        this.state.label = label;\n    }\n}\n\n$ {\n    var variantClassName =\n        state.variant !== \"primary\" && \"app-button-\" + state.variant;\n}\n$ var sizeClassName = state.size !== \"normal\" && \"app-button-\" + state.size;\n<div class=[\"app-button\", variantClassName, sizeClassName]>\n    <span>\n        <${input.renderBody}/>\n    </span>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/transcluded-component-from-non-rerender-root/components/counter/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = { count:0 }\n    }\n    increment() {\n        this.state.count++;\n    }\n}\n\n<div>${state.count}</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/transcluded-component-from-non-rerender-root/index.marko",
    "content": "<div>\n    <app-button size=\"small\" variant=\"primary\" key=\"button\">\n        <counter key=\"count\"/>\n    </app-button>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/transcluded-component-from-non-rerender-root/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"));\n  var buttonComponent = component.getComponent(\"button\");\n  var countComponent = component.getComponent(\"count\");\n\n  expect(buttonComponent).to.exist;\n  expect(countComponent).to.exist;\n\n  expect(buttonComponent.el.innerHTML).to.contain(\"0\");\n  expect(buttonComponent.el.className).to.equal(\"app-button app-button-small\");\n\n  buttonComponent.setSize(\"large\");\n  buttonComponent.update();\n  expect(buttonComponent.el.innerHTML).to.contain(\"0\");\n  expect(buttonComponent.el.className).to.equal(\"app-button app-button-large\");\n\n  countComponent.increment();\n  countComponent.update();\n  expect(buttonComponent.el.innerHTML).to.contain(\"1\");\n\n  buttonComponent.setSize(\"small\");\n  buttonComponent.update();\n  expect(buttonComponent.el.innerHTML).to.contain(\"1\");\n  expect(buttonComponent.el.className).to.equal(\"app-button app-button-small\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/transclusion-body-slot-attr/components/app-button/index.marko",
    "content": "class {\n    onInput(input) {\n        this.state = {\n            size: input.size || \"normal\",\n            variant: input.variant || \"primary\"\n        };\n    }\n\n    // Add any other methods here\n    setVariant(variant) {\n        this.state.variant = variant;\n    }\n\n    setSize(size) {\n        this.state.size = size;\n    }\n\n    setLabel(label) {\n        this.state.label = label;\n    }\n}\n\n$ {\n    var variantClassName =\n        state.variant !== \"primary\" && \"app-button-\" + state.variant;\n}\n$ var sizeClassName = state.size !== \"normal\" && \"app-button-\" + state.size;\n<button class=[\"app-button\", variantClassName, sizeClassName]>\n    <span>\n        <${input.renderBody}/>\n    </span>\n</button>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/transclusion-body-slot-attr/index.marko",
    "content": "class {\n\n}\n\n<div>\n    <app-button size=\"small\" variant=\"primary\" key=\"button\">\n        <b>${input.name}</b>\n    </app-button>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/transclusion-body-slot-attr/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    name: \"Frank\",\n  });\n\n  var buttonComponent = component.getComponent(\"button\");\n  expect(buttonComponent.el.innerHTML).to.contain(\"Frank\");\n  expect(buttonComponent.el.className).to.equal(\"app-button app-button-small\");\n\n  // Button component will not rerender since it's state did not change and that means that the\n  // button content will remain as 'John' instead of 'Frank'\n  component.input = { name: \"John \" };\n  component.update();\n\n  expect(buttonComponent.el.innerHTML).to.contain(\"John\");\n\n  buttonComponent.setSize(\"large\");\n  buttonComponent.update();\n  expect(buttonComponent.el.innerHTML).to.contain(\"John\");\n  expect(buttonComponent.el.className).to.equal(\"app-button app-button-large\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/transclusion-body-slot-default-to-renderBody/components/app-button/index.marko",
    "content": "class {\n    onInput(input) {\n        this.state = {\n            size: input.size || \"normal\",\n            variant: input.variant || \"primary\"\n        };\n    }\n\n    // Add any other methods here\n    setVariant(variant) {\n        this.state.variant = variant;\n    }\n\n    setSize(size) {\n        this.state.size = size;\n    }\n\n    setLabel(label) {\n        this.state.label = label;\n    }\n}\n\n$ {\n    var variantClassName =\n        state.variant !== \"primary\" && \"app-button-\" + state.variant;\n}\n$ var sizeClassName = state.size !== \"normal\" && \"app-button-\" + state.size;\n<button class=[\"app-button\", variantClassName, sizeClassName]>\n    <span>\n        <${input.renderBody}/>\n    </span>\n</button>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/transclusion-body-slot-default-to-renderBody/index.marko",
    "content": "class {\n\n}\n\n<div>\n    <app-button size=\"small\" variant=\"primary\" key=\"button\">\n        <b>${input.name}</b>\n    </app-button>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/transclusion-body-slot-default-to-renderBody/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    name: \"Frank\",\n  });\n\n  var buttonComponent = component.getComponent(\"button\");\n  expect(buttonComponent.el.innerHTML).to.contain(\"Frank\");\n  expect(buttonComponent.el.className).to.equal(\"app-button app-button-small\");\n\n  component.input = { name: \"John \" };\n  component.update();\n\n  expect(buttonComponent.el.innerHTML).to.contain(\"John\");\n\n  buttonComponent.setSize(\"large\");\n  buttonComponent.update();\n  expect(buttonComponent.el.innerHTML).to.contain(\"John\");\n  expect(buttonComponent.el.className).to.equal(\"app-button app-button-large\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/transclusion-body-slot-tag/components/app-button/index.marko",
    "content": "class {\n    onInput(input) {\n        this.state = {\n            size: input.size || \"normal\",\n            variant: input.variant || \"primary\"\n        };\n    }\n\n    // Add any other methods here\n    setVariant(variant) {\n        this.state.variant = variant;\n    }\n\n    setSize(size) {\n        this.state.size = size;\n    }\n\n    setLabel(label) {\n        this.state.label = label;\n    }\n}\n\n$ {\n    var variantClassName =\n        state.variant !== \"primary\" && \"app-button-\" + state.variant;\n}\n$ var sizeClassName = state.size !== \"normal\" && \"app-button-\" + state.size;\n<button class=[\"app-button\", variantClassName, sizeClassName]>\n    <span>\n        <${input.renderBody}/>\n    </span>\n</button>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/transclusion-body-slot-tag/index.marko",
    "content": "class {\n\n}\n\n<div>\n    <app-button size=\"small\" variant=\"primary\" key=\"button\">\n        <b>${input.name}</b>\n    </app-button>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/transclusion-body-slot-tag/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    name: \"Frank\",\n  });\n\n  var buttonComponent = component.getComponent(\"button\");\n  expect(buttonComponent.el.innerHTML).to.contain(\"Frank\");\n  expect(buttonComponent.el.className).to.equal(\"app-button app-button-small\");\n\n  component.input = { name: \"John \" };\n  component.update();\n\n  expect(buttonComponent.el.innerHTML).to.contain(\"John\");\n\n  buttonComponent.setSize(\"large\");\n  buttonComponent.update();\n  expect(buttonComponent.el.innerHTML).to.contain(\"John\");\n  expect(buttonComponent.el.className).to.equal(\"app-button app-button-large\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/transclusion-include-not-in-state/components/app-button/index.marko",
    "content": "class {\n    onInput(input) {\n        this.state = {\n            size: input.size || \"normal\",\n            variant: input.variant || \"primary\"\n        };\n    }\n\n    // Add any other methods here\n    setVariant(variant) {\n        this.state.variant = variant;\n    }\n\n    setSize(size) {\n        this.state.size = size;\n    }\n\n    setLabel(label) {\n        this.state.label = label;\n    }\n}\n\n$ {\n    var variantClassName =\n        state.variant !== \"primary\" && \"app-button-\" + state.variant;\n}\n$ var sizeClassName = state.size !== \"normal\" && \"app-button-\" + state.size;\n<button class=[\"app-button\", variantClassName, sizeClassName]>\n    <span>\n        <${input.renderBody}/>\n    </span>\n</button>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/transclusion-include-not-in-state/index.marko",
    "content": "class {\n\n}\n\n<div>\n    <app-button size=\"small\" variant=\"primary\" key=\"button\">\n        <b>${input.name}</b>\n    </app-button>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/transclusion-include-not-in-state/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    name: \"Frank\",\n  });\n\n  var buttonComponent = component.getComponent(\"button\");\n  expect(buttonComponent.el.innerHTML).to.contain(\"Frank\");\n  expect(buttonComponent.el.className).to.equal(\"app-button app-button-small\");\n\n  component.input = { name: \"John \" };\n  component.update();\n\n  expect(buttonComponent.el.innerHTML).to.contain(\"John\");\n\n  buttonComponent.setSize(\"large\");\n  buttonComponent.update();\n  expect(buttonComponent.el.innerHTML).to.contain(\"John\");\n  expect(buttonComponent.el.className).to.equal(\"app-button app-button-large\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/transclusion-include-split/component-browser.js",
    "content": "module.exports = {};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/transclusion-include-split/components/app-button/index.marko",
    "content": "class {\n    onInput(input) {\n        this.state = {\n            size: input.size || \"normal\",\n            variant: input.variant || \"primary\"\n        };\n    }\n\n    // Add any other methods here\n    setVariant(variant) {\n        this.state.variant = variant;\n    }\n\n    setSize(size) {\n        this.state.size = size;\n    }\n\n    setLabel(label) {\n        this.state.label = label;\n    }\n}\n\n$ {\n    var variantClassName =\n        state.variant !== \"primary\" && \"app-button-\" + state.variant;\n}\n$ var sizeClassName = state.size !== \"normal\" && \"app-button-\" + state.size;\n<button class=[\"app-button\", variantClassName, sizeClassName]>\n    <span>\n        <${input.renderBody}/>\n    </span>\n</button>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/transclusion-include-split/index.marko",
    "content": "<div>\n    <app-button size=\"small\" variant=\"primary\" key=\"button\">\n        <b>${input.name}</b>\n    </app-button>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/transclusion-include-split/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    name: \"Frank\",\n  });\n\n  var buttonComponent = component.getComponent(\"button\");\n  expect(buttonComponent.el.innerHTML).to.contain(\"Frank\");\n  expect(buttonComponent.el.className).to.equal(\"app-button app-button-small\");\n\n  buttonComponent.setSize(\"large\");\n  buttonComponent.update();\n  expect(buttonComponent.el.innerHTML).to.contain(\"Frank\");\n  expect(buttonComponent.el.className).to.equal(\"app-button app-button-large\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/transclusion-non-bubbling-event/components/container/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = { show:false };\n    }\n}\n\n<div.container>\n    <${input} show=state.show/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/transclusion-non-bubbling-event/components/container/marko-tag.json",
    "content": "{\n  \"featureFlags\": [\"params\"]\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/transclusion-non-bubbling-event/index.marko",
    "content": "class {}\n\n<container|{ show }| key=\"container\">\n    <if(show)>\n        <input#eventTarget on-focus(\"emit\", \"eventFired\")/>\n    </if>\n</container>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/transclusion-non-bubbling-event/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var component = helpers.mount(require.resolve(\"./index\"), { show: false });\n  var container = component.getComponent(\"container\");\n\n  container.state.show = true;\n  container.update();\n\n  var eventTarget = helpers.targetEl.querySelector(\"#eventTarget\");\n  var eventFired = false;\n\n  component.on(\"eventFired\", function () {\n    eventFired = true;\n  });\n\n  eventTarget.focus();\n  expect(eventFired).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/transclusion-repeated-nested/components/container/index.marko",
    "content": "class {}\n\n<${input}/>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/transclusion-repeated-nested/components/counter/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = { count:0 };\n    }\n\n    increment() {\n        this.state.count++;\n    }\n}\n\n-- ${state.count}"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/transclusion-repeated-nested/components/list/index.marko",
    "content": "class {}\n\n<for|i| from=1 to=3>\n    <${input}/>\n</for>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/transclusion-repeated-nested/index.marko",
    "content": "class {}\n\n<list>\n    <container key=\"container[]\">\n        <counter key=\"counter[]\"/>\n    </container>\n</list>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/transclusion-repeated-nested/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var root = helpers.mount(require.resolve(\"./index\"));\n  var counters = root.getComponents(\"counter\");\n  var containers = root.getComponents(\"container\");\n\n  expect(helpers.targetEl.textContent).to.equal(\"000\");\n\n  counters[0].increment();\n  counters[0].update();\n  counters[1].increment();\n  counters[1].increment();\n  counters[1].update();\n  counters[2].increment();\n  counters[2].increment();\n  counters[2].increment();\n  counters[2].update();\n\n  expect(helpers.targetEl.textContent).to.equal(\"123\");\n\n  containers[1].forceUpdate();\n  containers[1].update();\n  containers[2].forceUpdate();\n  containers[2].update();\n\n  expect(helpers.targetEl.textContent).to.equal(\"123\");\n\n  counters[2].increment();\n  counters[2].update();\n\n  expect(helpers.targetEl.textContent).to.equal(\"124\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/transclusion-rerender-stateful/components/container/index.marko",
    "content": "class {}\n\n<${input.renderBody}/>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/transclusion-rerender-stateful/components/counter/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = { count:0 };\n    }\n\n    increment() {\n        this.state.count++;\n    }\n}\n\n-- ${state.count}"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/transclusion-rerender-stateful/index.marko",
    "content": "class {}\n\n<container key=\"container\">\n    <counter key=\"counter\"/>\n</container>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/transclusion-rerender-stateful/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var root = helpers.mount(require.resolve(\"./index\"));\n  var container = root.getComponent(\"container\");\n  var counter = root.getComponent(\"counter\");\n\n  expect(helpers.targetEl.textContent).to.equal(\"0\");\n\n  counter.increment();\n  counter.update();\n\n  expect(helpers.targetEl.textContent).to.equal(\"1\");\n\n  container.forceUpdate();\n  container.update();\n\n  expect(helpers.targetEl.textContent).to.equal(\"1\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/transclusion-rerender-stateful-shared-key/components/container/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = { hideOwnCounter: false };\n    }\n}\n\n<if(!state.hideOwnCounter)>\n    <counter key=\"counter\"/>\n</if>\n<span>|</span>\n<${input}/>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/transclusion-rerender-stateful-shared-key/components/counter/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = { count:0 };\n    }\n\n    increment() {\n        this.state.count++;\n    }\n}\n\n-- ${state.count}"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/transclusion-rerender-stateful-shared-key/index.marko",
    "content": "class {}\n\n<container key=\"container\">\n    <counter key=\"counter\"/>\n</container>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/transclusion-rerender-stateful-shared-key/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var root = helpers.mount(require.resolve(\"./index\"));\n  var container = root.getComponent(\"container\");\n  var counter = root.getComponent(\"counter\");\n\n  expect(helpers.targetEl.textContent).to.equal(\"0|0\");\n\n  counter.increment();\n  counter.update();\n\n  expect(helpers.targetEl.textContent).to.equal(\"0|1\");\n\n  container.state.hideOwnCounter = true;\n  container.update();\n\n  expect(helpers.targetEl.textContent).to.equal(\"|1\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/update-next-tick/index.marko",
    "content": "class {\n    onInput(input) {\n        this.state = { size: input.size || 'normal' };\n    }\n    setSize(size) {\n        this.state.size = size;\n    }\n}\n\n<button class=state.size>\n    ${input.label}\n</button>"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/update-next-tick/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers, done) {\n  var component = helpers.mount(require.resolve(\"./index.marko\"), {\n    size: \"large\",\n    label: \"Initial Label\",\n  });\n\n  component.onUpdate = function () {\n    expect(component.el.className).to.contain(\"small\");\n    done();\n  };\n\n  expect(component.el.className).to.contain(\"large\");\n  component.setSize(\"small\");\n  expect(component.el.className).to.not.contain(\"small\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/update-queued/component.js",
    "content": "module.exports = {\n  onInput: function (input) {\n    this.state = {\n      name: input.name,\n    };\n  },\n  setName: function (newName) {\n    this.state.name = newName;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/update-queued/index.marko",
    "content": "<div>\n    Hello ${state.name}!\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/fixtures/update-queued/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers, done) {\n  var component = helpers.mount(require.resolve(\"./index\"), {\n    name: \"Frank\",\n  });\n\n  expect(component.el.innerHTML).to.contain(\"Hello Frank!\");\n\n  component.setName(\"Jane\");\n\n  expect(component.el.innerHTML).to.contain(\"Hello Frank!\");\n\n  component.onUpdate = function () {\n    expect(component.el.innerHTML).to.contain(\"Hello Jane!\");\n    done();\n  };\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/index.test.js",
    "content": "\"use strict\";\nrequire(\"../__util__/test-init\");\n\nvar autotest = require(\"mocha-autotest\").default;\nvar createBrowserWithMarko = require(\"../__util__/create-marko-jsdom-module\");\nvar hydrateComponentPath = require.resolve(\"./template.component-browser.js\");\nvar browserHelpersPath = require.resolve(\"../__util__/BrowserHelpers\");\nvar testTargetHTML = '<div id=\"testsTarget\"></div><div></div>';\nvar browser = createBrowserWithMarko(__dirname, testTargetHTML);\n\nautotest(\"fixtures\", {\n  client: runClientTest,\n  hydrate: runHydrateTest,\n});\n\nfunction runClientTest(fixture) {\n  let test = fixture.test;\n  let resolve = fixture.resolve;\n  let context = fixture.context;\n  test((done) => {\n    var BrowserHelpers = browser.require(browserHelpersPath);\n    let helpers = new BrowserHelpers();\n    let testFile = resolve(\"test.js\");\n    let testFunc = browser.require(testFile);\n    let hasCallback = testFunc.length > 1;\n\n    try {\n      if (hasCallback) {\n        testFunc(helpers, cleanupAndFinish);\n      } else {\n        const result = testFunc(helpers);\n        if (result && result.then) {\n          result.then(cleanupAndFinish, cleanupAndFinish);\n        } else {\n          cleanupAndFinish();\n        }\n      }\n    } catch (err) {\n      cleanupAndFinish(err);\n    }\n\n    function cleanupAndFinish(err) {\n      // Cache components for use in hydrate run.\n      if (!err) context.rendered = helpers.rendered;\n      helpers.instances.forEach((instance) => instance.destroy());\n      helpers.targetEl.innerHTML = \"\";\n      if (browser.error) {\n        err = browser.error;\n        browser.error = undefined;\n      }\n      done(err);\n    }\n  });\n}\n\nfunction runHydrateTest(fixture) {\n  let test = fixture.test;\n  let resolve = fixture.resolve;\n  let context = fixture.context;\n  test((done) => {\n    var ssrTemplate = require(\"./template.marko\").default;\n    var components = context.rendered;\n    if (!components)\n      throw new Error(\"No components rendered by client version of test\");\n    var $global = components.reduce(\n      ($g, c) => Object.assign($g, c.$global),\n      {},\n    );\n    ssrTemplate\n      .render({ components: components, $global: $global })\n      .then(function (html) {\n        var browser = createBrowserWithMarko(__dirname, String(html), {\n          beforeParse(window, browser) {\n            var marko = browser.require(\"marko/components\");\n            var rootComponent = browser.require(hydrateComponentPath);\n            rootComponent = rootComponent.default || rootComponent;\n            marko.register(ssrTemplate.meta.id, rootComponent);\n            components.forEach(function (def) {\n              Object.keys(def.components).forEach((type) => {\n                var component = browser.require(def.components[type]);\n                component = component.default || component;\n                marko.register(type, component);\n              });\n            });\n          },\n        });\n        var testFile = resolve(\"test.js\");\n        var testFunc = browser.require(testFile);\n        var BrowserHelpers = browser.require(browserHelpersPath);\n        var helpers = new BrowserHelpers();\n        var hasCallback = testFunc.length > 1;\n        var curInstance = 0;\n\n        browser.window.$initComponents();\n        helpers.isHydrate = true;\n\n        helpers.mount = function () {\n          return browser.window.getComponent(curInstance++);\n        };\n\n        if (hasCallback) {\n          testFunc(helpers, cleanupAndFinish);\n        } else {\n          const result = testFunc(helpers);\n          if (result && result.then) {\n            result.then(cleanupAndFinish, cleanupAndFinish);\n          } else {\n            cleanupAndFinish();\n          }\n        }\n\n        function cleanupAndFinish(err) {\n          if (browser.error) {\n            err = browser.error;\n            browser.error = undefined;\n          }\n          done(err);\n        }\n      })\n      .catch(done);\n  });\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/template.component-browser.js",
    "content": "module.exports = {\n  onMount() {\n    window.getComponent = (index) => this.getComponent(`component--${index}`);\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-browser/template.marko",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n    <head>\n        <meta charset=\"UTF-8\"/>\n    </head>\n    <body>\n        <div#testsTarget>\n            <for|component, index| of=input.components>\n                <${require(component.template)} ...component.input key=`component--${index}`/>\n            </for>\n        </div>\n    </body>\n</html>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/async-boundaries/components/app-hello/component.js",
    "content": "module.exports = {\n  onInput: function (input) {\n    this.name = input.name;\n  },\n\n  onMount: function () {\n    this.type = \"app-hello\";\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/async-boundaries/components/app-hello/index.marko",
    "content": "$ var className = input['class'] || 'app-hello';\n\n<div class=className>\n    [app-hello]  Hello ${input.name}!\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/async-boundaries/components/app-hello-async/renderer.js",
    "content": "var AppHello = require(\"../app-hello\").default;\n\nmodule.exports = function (input, out) {\n  var asyncOut = out.beginAsync();\n  setTimeout(function () {\n    AppHello.render(\n      {\n        name: input.name,\n      },\n      asyncOut,\n    );\n    asyncOut.end();\n  }, 10);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/async-boundaries/components/app-init-async/component-browser.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = {\n  onMount: function () {\n    window.appInitAsync = this;\n\n    var helloFrank = this.getComponent(\"helloFrank\");\n    var helloFrankAsync = this.getComponent(\"helloFrankAsync\");\n    var helloJohn = this.getComponent(\"helloJohn\");\n    var helloJohnAsync = this.getComponent(\"helloJohnAsync\");\n    var helloJane = this.getComponent(\"helloJane\");\n\n    this.test = function () {\n      expect(helloFrank).to.be.an(\"object\");\n      expect(helloFrank.name).to.equal(\"Frank\");\n\n      expect(helloFrankAsync).to.be.an(\"object\");\n      expect(helloFrankAsync.name).to.equal(\"Frank Async\");\n\n      expect(helloJohn).to.be.an(\"object\");\n      expect(helloJohn.name).to.equal(\"John\");\n\n      expect(helloJohnAsync).to.be.an(\"object\");\n      expect(helloJohnAsync.name).to.equal(\"John Async\");\n\n      expect(helloJane).to.be.an(\"object\");\n      expect(helloJane.name).to.equal(\"Jane\");\n    };\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/async-boundaries/components/app-init-async/index.marko",
    "content": "<div>\n    <app-hello name=\"Frank\" key=\"helloFrank\"/>\n    <app-hello-async name=\"Frank Async\" key=\"helloFrankAsync\"/>\n    <app-hello name=\"John\" key=\"helloJohn\"/>\n    <app-hello-async name=\"John Async\" key=\"helloJohnAsync\"/>\n    <app-hello name=\"Jane\" key=\"helloJane\"/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/async-boundaries/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/async-boundaries/template.marko",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n    <head>\n        <meta charset=\"UTF-8\"/>\n        <title> Marko Test</title>\n    </head>\n    <body>\n        <div id=\"test\"/>\n        <div id=\"mocha\"/>\n        <div id=\"testsTarget\" />\n\n        <app-init-async />\n    </body>\n</html>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/async-boundaries/tests.js",
    "content": "it(\"should initialize components correctly across async boundaries\", function () {\n  window.appInitAsync.test();\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/await-surround-html/components/app-hello/index.marko",
    "content": "class {\n    onMount() {\n        window.helloComponent = this;\n    }\n}\n\n<div>Hello ${input.name}!</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/await-surround-html/template.marko",
    "content": "$ var userPromise = new Promise(function(resolve, reject) {\n    setTimeout(function() {\n        resolve({ name: \"Frank \" });\n    }, 10);\n});\n<!DOCTYPE html>\n<await(userPromise)>\n    <@then|user|>\n        <html lang=\"en\">\n            <head>\n                <meta charset=\"UTF-8\"/>\n                <title> Marko Test</title>\n            </head>\n            <body>\n                <div id=\"test\"/>\n                <div id=\"mocha\"/>\n                <div id=\"testsTarget\"/>\n                <app-hello name=user.name/>\n            </body>\n        </html>\n    </@then>\n</await>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/await-surround-html/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should mount components\", function () {\n  expect(window.helloComponent != null).to.equal(true);\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-$globals/components/app/index.marko",
    "content": "class {\n    onMount() {\n        window.app = this;\n    }\n}\n<div>\n    <app-hello key=\"hello\"/>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-$globals/components/app-hello/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = {\n            count: 1\n        }\n    }\n}\n<div>\n    <span.name>${$global.name}</span>\n    <span.count>${state.count}</span>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-$globals/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-$globals/template.marko",
    "content": "$ {\n    out.global.name = 'Frank';\n    out.global.serializedGlobals = {\n        name: true\n    };\n}\n\n<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Components Tests\n    body\n        div id=\"testsTarget\"\n        <app/>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-$globals/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should allow attributes to not be updated\", function () {\n  var app = window.app;\n  var helloComponent = app.getComponent(\"hello\");\n\n  expect(helloComponent.el.querySelector(\".name\").innerHTML).to.equal(\"Frank\");\n  expect(helloComponent.el.querySelector(\".count\").innerHTML).to.equal(\"1\");\n\n  helloComponent.state.count++;\n  helloComponent.update();\n\n  expect(helloComponent.el.querySelector(\".name\").innerHTML).to.equal(\"Frank\");\n  expect(helloComponent.el.querySelector(\".count\").innerHTML).to.equal(\"2\");\n\n  app.forceUpdate();\n  app.update();\n\n  helloComponent = app.getComponent(\"hello\");\n  expect(helloComponent.el.querySelector(\".name\").innerHTML).to.equal(\"Frank\");\n  expect(helloComponent.el.querySelector(\".count\").innerHTML).to.equal(\"2\");\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-config/components/app-foo/component.js",
    "content": "module.exports = {\n  onInput: function () {\n    this.name = \"app-foo\";\n  },\n\n  onMount: function () {\n    this.componentConfig = {\n      name: this.name,\n    };\n    window.fooComponent = this;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-config/components/app-foo/index.marko",
    "content": "div"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-config/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-config/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Components Tests\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        app-foo\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-config/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should serialize component config down to the browser\", function () {\n  expect(window.fooComponent.componentConfig.name).to.equal(\"app-foo\");\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-fixed-id/components/app-fixed-id/component.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = {\n  onInput: function (input) {\n    this.label = input.label || \"app-fixed-id\";\n  },\n\n  onMount: function () {\n    this.name = \"app-fixed-id\";\n    window.appFixedId = this;\n  },\n  testGetComponent: function () {\n    var helloComponent = this.getComponent(\"hello\");\n    expect(helloComponent != null).to.equal(true);\n  },\n  testGetEl: function () {\n    var wrapperEl = this.getEl(\"wrapper\");\n    expect(wrapperEl != null).to.equal(true);\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-fixed-id/components/app-fixed-id/index.marko",
    "content": "<div id=\"appFixedId\" class=\"app-fixed-id\">\n    <h1>app-fixed-id</h1>\n    <div key=\"wrapper\">\n        <app-hello key=\"hello\" name=\"hello\"/>\n    </div>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-fixed-id/components/app-hello/component.js",
    "content": "module.exports = {\n  onInput: function (input) {\n    this.name = input.name;\n  },\n\n  onMount: function () {\n    this.type = \"app-hello\";\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-fixed-id/components/app-hello/index.marko",
    "content": "$ var className = input['class'] || 'app-hello';\n\n<div class=className>\n    [app-hello]  Hello ${input.name}!\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-fixed-id/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-fixed-id/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Components Tests\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        app-fixed-id\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-fixed-id/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should allow fixed IDs for components\", function () {\n  var component = window.appFixedId;\n  expect(document.getElementById(\"appFixedId\") != null).to.equal(true);\n  component.testGetComponent();\n  component.testGetEl();\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-globals/components/app/index.marko",
    "content": "class {\n    onMount() {\n        window.app = this;\n    }\n}\n<div>\n    <app-hello key=\"hello\"/>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-globals/components/app-hello/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = {\n            count: 1\n        }\n    }\n}\n<div>\n    <span.name>${out.global.name}</span>\n    <span.count>${state.count}</span>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-globals/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-globals/template.marko",
    "content": "$ {\n    out.global.name = 'Frank';\n    out.global.serializedGlobals = {\n        name: true\n    };\n}\n\n<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Components Tests\n    body\n        div id=\"testsTarget\"\n        <app/>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-globals/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should allow attributes to not be updated\", function () {\n  var app = window.app;\n  var helloComponent = app.getComponent(\"hello\");\n\n  expect(helloComponent.el.querySelector(\".name\").innerHTML).to.equal(\"Frank\");\n  expect(helloComponent.el.querySelector(\".count\").innerHTML).to.equal(\"1\");\n\n  helloComponent.state.count++;\n  helloComponent.update();\n\n  expect(helloComponent.el.querySelector(\".name\").innerHTML).to.equal(\"Frank\");\n  expect(helloComponent.el.querySelector(\".count\").innerHTML).to.equal(\"2\");\n\n  app.forceUpdate();\n  app.update();\n\n  helloComponent = app.getComponent(\"hello\");\n  expect(helloComponent.el.querySelector(\".name\").innerHTML).to.equal(\"Frank\");\n  expect(helloComponent.el.querySelector(\".count\").innerHTML).to.equal(\"2\");\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-globals-async/components/app-hello/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = {\n            count: 1\n        }\n    }\n\n    onMount() {\n        window[this.input.name] = this;\n    }\n}\n<div>\n    <span.name>${out.global.name}</span>\n    <span.count>${state.count}</span>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-globals-async/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-globals-async/template.marko",
    "content": "$ {\n    out.global.name = \"Frank\";\n    out.global.serializedGlobals = {\n        name: true\n    };\n}\n$ var userPromise = new Promise(function(resolve, reject) {\n    setTimeout(function() {\n        resolve({});\n    }, 10);\n});\n<!DOCTYPE html>\n<html lang=\"en\">\n    <head>\n        <meta charset=\"UTF-8\"/>\n        <title>Marko Components Tests</title>\n    </head>\n    <body>\n        <div id=\"testsTarget\"/>\n        <await(userPromise)>\n            <@then|user|>\n                <app-hello name=\"hello1\"/>\n            </@then>\n        </await>\n        <await(userPromise)>\n            <@then|user|>\n                <app-hello name=\"hello2\"/>\n            </@then>\n        </await>\n        <app-hello name=\"hello3\"/>\n    </body>\n</html>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-globals-async/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should allow attributes to not be updated\", function () {\n  function testHelloComponent(helloComponent) {\n    expect(helloComponent.el.querySelector(\".name\").innerHTML).to.equal(\n      \"Frank\",\n    );\n    expect(helloComponent.el.querySelector(\".count\").innerHTML).to.equal(\"1\");\n\n    helloComponent.state.count++;\n    helloComponent.update();\n\n    expect(helloComponent.el.querySelector(\".name\").innerHTML).to.equal(\n      \"Frank\",\n    );\n    expect(helloComponent.el.querySelector(\".count\").innerHTML).to.equal(\"2\");\n  }\n\n  testHelloComponent(window.hello1);\n  testHelloComponent(window.hello2);\n  testHelloComponent(window.hello3);\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-implicit-event-handlers/components/app-button-component/index.marko",
    "content": "<button id=input.id onClick(() => {\n    component.emit(\"click\");\n})>Click me</button>\n\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-implicit-event-handlers/components/app-button-split/index.marko",
    "content": "$ if (typeof window === \"object\") throw new Error(\"Should be server only\");\n<button id=input.id onClick(\"emit\", \"click\")>Click me</button>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-implicit-event-handlers/template.component-browser.js",
    "content": "module.exports = {\n  onMount() {\n    window.testComponent = this;\n    this.clicks = 0;\n  },\n  trackClick() {\n    this.clicks++;\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-implicit-event-handlers/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Components Tests\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        app-button-split id=\"a\" onClick(\"trackClick\")\n        app-button-component id=\"b\" onClick(\"trackClick\")\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-implicit-event-handlers/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should have initialized both components\", function () {\n  var component = window.testComponent;\n  expect(component.clicks).to.equal(0);\n  document.getElementById(\"a\").click();\n  expect(component.clicks).to.equal(1);\n  document.getElementById(\"b\").click();\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-init-async/components/app-hello/index.marko",
    "content": "class {\n    onMount() {\n        window[this.input.name] = this;\n    }\n}\n<div>\n    Hello from ${input.name}!\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-init-async/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-init-async/template.marko",
    "content": "$ var userPromise = new Promise(function(resolve, reject) {\n    setTimeout(function() {\n        resolve({});\n    }, 10);\n});\n<!DOCTYPE html>\n<html lang=\"en\">\n    <head>\n        <meta charset=\"UTF-8\"/>\n        <title>Marko Components Tests</title>\n    </head>\n    <body>\n        <div id=\"testsTarget\"/>\n        <await(userPromise)>\n            <@then|user|>\n                <app-hello name=\"hello1\"/>\n            </@then>\n        </await>\n        <await(userPromise)>\n            <@then|user|>\n                <app-hello name=\"hello2\"/>\n            </@then>\n        </await>\n        <app-hello name=\"hello3\"/>\n    </body>\n</html>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-init-async/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should allow attributes to not be updated\", function () {\n  function testHelloComponent(name) {\n    var helloComponent = window[name];\n    expect(helloComponent !== undefined).to.equal(true);\n    expect(helloComponent.el.innerHTML).to.contain(\"Hello from \" + name + \"!\");\n  }\n\n  testHelloComponent(\"hello1\");\n  testHelloComponent(\"hello2\");\n  testHelloComponent(\"hello3\");\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-input/components/app-foo/component.js",
    "content": "module.exports = {\n  onInput: function () {\n    this.state = {\n      counter: 0,\n    };\n  },\n\n  increment: function () {\n    this.state.counter++;\n  },\n\n  onMount: function () {\n    window.fooComponent = this;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-input/components/app-foo/index.marko",
    "content": "div style={ color:data.color } -- The current count is ${state.counter}"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-input/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-input/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Components Tests\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        app-foo color=\"#800\"\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-input/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should serialize component input down to the browser\", function () {\n  expect(window.fooComponent.input.color).to.equal(\"#800\");\n  expect(window.fooComponent.el.textContent).to.equal(\"The current count is 0\");\n  expect(window.fooComponent.el.getAttribute(\"style\")).to.equal(\"color:#800\");\n  window.fooComponent.increment();\n  window.fooComponent.update();\n  expect(window.fooComponent.el.textContent).to.equal(\"The current count is 1\");\n  expect(window.fooComponent.el.getAttribute(\"style\")).to.equal(\"color:#800\");\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-input-ref/components/app-bar/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    window.barComponent = this;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-input-ref/components/app-bar/index.marko",
    "content": "div\n    app-foo key=\"foo\" color=\"#800\""
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-input-ref/components/app-foo/component.js",
    "content": "module.exports = {\n  onInput: function () {\n    this.state = {\n      counter: 0,\n    };\n  },\n\n  increment: function () {\n    this.state.counter++;\n  },\n\n  onMount: function () {\n    window.fooComponent = this;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-input-ref/components/app-foo/index.marko",
    "content": "div style={ color:data.color } -- The current count is ${state.counter}"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-input-ref/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-input-ref/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Components Tests\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        app-bar\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-input-ref/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should serialize component input down to the browser\", function () {\n  expect(window.barComponent.getComponent(\"foo\")).to.equal(window.fooComponent);\n  expect(window.fooComponent.input.color).to.equal(\"#800\");\n  expect(window.fooComponent.el.textContent).to.equal(\"The current count is 0\");\n  expect(window.fooComponent.el.getAttribute(\"style\")).to.equal(\"color:#800\");\n  window.fooComponent.increment();\n  window.fooComponent.update();\n  expect(window.fooComponent.el.textContent).to.equal(\"The current count is 1\");\n  expect(window.fooComponent.el.getAttribute(\"style\")).to.equal(\"color:#800\");\n  expect(window.barComponent.getComponent(\"foo\")).to.equal(window.fooComponent);\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-mount-root-hasRenderBody/components/app/index.marko",
    "content": "class {\n    onMount() {\n        window.app = this;\n\n        this.clicked = false;\n    }\n\n    handleClick() {\n        this.clicked = true;\n    }\n}\n\n<div on-click(\"handleClick\")>\n    <span.body>\n        <${input.body}/>\n    </span>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-mount-root-hasRenderBody/components/app-hello/index.marko",
    "content": "class {\n    onMount() {\n        window.hello = this;\n    }\n\n    handleClick() {\n        this.clicked = true;\n    }\n}\n<div.hello on-click('handleClick')>\n    Hello\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-mount-root-hasRenderBody/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-mount-root-hasRenderBody/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Components Tests\n    body\n        div id=\"testsTarget\"\n\n        <app name=\"App\">\n            <@body>\n                <app-hello name=\"Marko\"/>\n            </@body>\n        </app>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-mount-root-hasRenderBody/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nfunction triggerMouseEvent(el, type) {\n  var ev = document.createEvent(\"MouseEvent\");\n  ev.initMouseEvent(\n    type,\n    true /* bubble */,\n    true /* cancelable */,\n    window,\n    null,\n    0,\n    0,\n    0,\n    0 /* coordinates */,\n    false,\n    false,\n    false,\n    false /* modifier keys */,\n    0 /*left*/,\n    null,\n  );\n  el.dispatchEvent(ev);\n}\n\nfunction triggerClick(el) {\n  triggerMouseEvent(el, \"click\");\n}\n\nit(\"should mount all components\", function () {\n  var app = window.app;\n  expect(app != null).to.equal(true);\n  expect(window.hello != null).to.equal(true);\n});\n\nit(\"should have correct input\", function () {\n  expect(window.app.input.name).to.equal(\"App\");\n  expect(window.hello.input.name).to.equal(\"Marko\");\n});\n\nit(\"should attach DOM events\", function () {\n  var app = window.app;\n  triggerClick(app.el);\n  expect(app.clicked).to.equal(true);\n\n  var helloComponent = window.hello;\n  triggerClick(helloComponent.el);\n  expect(helloComponent.clicked).to.equal(true);\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-mount-root-renderBody/components/app/index.marko",
    "content": "class {\n    onMount() {\n        window.app = this;\n\n        this.clicked = false;\n    }\n\n    handleClick() {\n        this.clicked = true;\n    }\n}\n\n<div on-click(\"handleClick\")>\n    <span.body>\n        <${input.renderBody}/>\n    </span>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-mount-root-renderBody/components/app-hello/index.marko",
    "content": "class {\n    onMount() {\n        window.hello = this;\n    }\n\n    handleClick() {\n        this.clicked = true;\n    }\n}\n<div.hello on-click('handleClick')>\n    Hello\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-mount-root-renderBody/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-mount-root-renderBody/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Components Tests\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        <app name=\"App\">\n            <app-hello name=\"Marko\"/>\n        </app>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-mount-root-renderBody/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nfunction triggerMouseEvent(el, type) {\n  var ev = document.createEvent(\"MouseEvent\");\n  ev.initMouseEvent(\n    type,\n    true /* bubble */,\n    true /* cancelable */,\n    window,\n    null,\n    0,\n    0,\n    0,\n    0 /* coordinates */,\n    false,\n    false,\n    false,\n    false /* modifier keys */,\n    0 /*left*/,\n    null,\n  );\n  el.dispatchEvent(ev);\n}\n\nfunction triggerClick(el) {\n  triggerMouseEvent(el, \"click\");\n}\n\nit(\"should mount all components\", function () {\n  var app = window.app;\n  expect(app != null).to.equal(true);\n  expect(window.hello != null).to.equal(true);\n});\n\nit(\"should have correct input\", function () {\n  expect(window.app.input.name).to.equal(\"App\");\n  expect(window.hello.input.name).to.equal(\"Marko\");\n});\n\nit(\"should attach DOM events\", function () {\n  var app = window.app;\n  triggerClick(app.el);\n  expect(app.clicked).to.equal(true);\n\n  var helloComponent = window.hello;\n  triggerClick(helloComponent.el);\n  expect(helloComponent.clicked).to.equal(true);\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-state/components/app-foo/component.js",
    "content": "module.exports = {\n  onInput: function () {\n    this.state = {\n      name: \"app-foo\",\n    };\n  },\n\n  onMount: function () {\n    window.fooComponent = this;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-state/components/app-foo/index.marko",
    "content": "div"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-state/components/app-state-watch/index.marko",
    "content": "import { expect } from 'chai';\n\nclass {\n    onInput(input) {\n        this.state = {\n            nameNull: null,\n            nameUndefined: undefined\n        }\n    }\n\n    onMount() {\n        window.appStateWatch = this;\n    }\n\n    test() {\n        expect(this.state.nameNull).to.equal(null);\n        expect(this.state.nameUndefined).to.equal(undefined);\n\n        this.state.nameNull = 'Frank';\n        this.update();\n        expect(this.el.innerHTML).to.contain('nameNull:Frank');\n\n        this.state.nameUndefined = 'Frank';\n        this.update();\n        expect(this.el.innerHTML).to.contain('nameUndefined:Frank');\n    }\n}\n\n<div>\n    nameNull:${state.nameNull || ''}!\n    nameUndefined:${state.nameUndefined || ''}!\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-state/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-state/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Components Tests\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        app-foo\n        app-state-watch\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/component-state/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should serialize component state down to the browser\", function () {\n  expect(window.fooComponent.state.name).to.equal(\"app-foo\");\n});\n\nit(\"should serialize component config down to the browser\", function () {\n  window.appStateWatch.test();\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/custom-events/components/app-fancy-button/component.js",
    "content": "module.exports = {\n  emitPressEvent: function () {\n    this.emit(\"press\", { component: this });\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/custom-events/components/app-fancy-button/index.marko",
    "content": "<button.fancy-button type=\"button\">\n    ${input.label}\n</button>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/custom-events/components/app-foo/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    window.fooComponent = this;\n    this.pressEvent = undefined;\n  },\n\n  handleButtonPress: function () {\n    this.pressEvent = arguments;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/custom-events/components/app-foo/index.marko",
    "content": "<div>\n\t<app-fancy-button key=\"ok\" label=\"OK\" onPress('handleButtonPress', { type: 'ok' })/>\n\t<app-fancy-button key=\"cancel\" label=\"Cancel\" onPress('handleButtonPress', { type: 'cancel' })/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/custom-events/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/custom-events/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Components Tests\n    body\n        div id=\"testsTarget\"\n        app-foo\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/custom-events/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should invoke event handler method for custom events with extra args\", function () {\n  var component = window.fooComponent;\n\n  component.pressEvent = null;\n\n  component.getComponent(\"ok\").emitPressEvent();\n\n  expect(component.pressEvent[0].type).to.equal(\"ok\");\n  expect(component.pressEvent[1].component).to.equal(\n    component.getComponent(\"ok\"),\n  );\n\n  component.getComponent(\"cancel\").emitPressEvent();\n\n  expect(component.pressEvent[0].type).to.equal(\"cancel\");\n  expect(component.pressEvent[1].component).to.equal(\n    component.getComponent(\"cancel\"),\n  );\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/diff-body/template.marko",
    "content": "class {\n    onCreate () {\n        this.state = {\n            count: 0\n        }\n    }\n    onInput() {\n        this.input = {};\n    }\n    onMount () {\n        window.app = this;\n    }\n    increment () {\n        this.state.count++;\n    }\n}\n\n<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Test\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n        div.count key=\"count\" -- ${state.count}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/diff-body/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should allow diffing body\", function () {\n  var app = window.app;\n  var countEl = app.getEl(\"count\");\n  expect(countEl.innerHTML).to.equal(\"0\");\n\n  app.increment();\n  app.update();\n\n  expect(countEl.innerHTML).to.equal(\"1\");\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/diff-body-root/template.marko",
    "content": "class {\n    onCreate () {\n        this.state = {\n            count: 0\n        }\n    }\n    onInput() {\n        this.input = {};\n    }\n    onMount () {\n        window.app = this;\n    }\n    increment () {\n        this.state.count++;\n    }\n}\n\nbody\n    div id=\"test\"\n    div id=\"mocha\"\n    div id=\"testsTarget\"\n    div key=\"count\" -- ${state.count}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/diff-body-root/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should allow diffing body at the root\", function () {\n  var app = window.app;\n  var countEl = app.getEl(\"count\");\n  expect(countEl.innerHTML).to.equal(\"0\");\n\n  app.increment();\n  app.update();\n\n  expect(countEl.innerHTML).to.equal(\"1\");\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/diff-head/template.marko",
    "content": "class {\n    onCreate () {\n        this.state = {\n            count: 0\n        }\n    }\n    onMount () {\n        window.app = this;\n    }\n    increment () {\n        this.state.count++;\n    }\n}\n\n<!DOCTYPE html>\nhtml lang=\"en\"\n    head count=state.count\n        meta charset=\"UTF-8\"\n        title -- Marko Test\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/diff-head/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should allow diffing head\", function () {\n  var app = window.app;\n  expect(document.head.getAttribute(\"count\")).to.equal(\"0\");\n\n  app.increment();\n  app.update();\n\n  expect(document.head.getAttribute(\"count\")).to.equal(\"1\");\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/diff-head-root/template.marko",
    "content": "class {\n    onCreate () {\n        this.state = {\n            count: 0\n        }\n    }\n    onMount () {\n        window.app = this;\n    }\n    increment () {\n        this.state.count++;\n    }\n}\n\nhead count=state.count\n    meta charset=\"UTF-8\"\n    title -- Marko Test\nbody\n\n    div id=\"test\"\n    div id=\"mocha\"\n    div id=\"testsTarget\"\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/diff-head-root/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should allow diffing head at the root\", function () {\n  var app = window.app;\n  expect(document.head.getAttribute(\"count\")).to.equal(\"0\");\n\n  app.increment();\n  app.update();\n\n  expect(document.head.getAttribute(\"count\")).to.equal(\"1\");\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/diff-html/template.marko",
    "content": "class {\n    onCreate () {\n        this.state = {\n            count: 0\n        }\n    }\n    onMount () {\n        window.app = this;\n    }\n    increment () {\n        this.state.count++;\n    }\n}\n\n<!DOCTYPE html>\nhtml lang=\"en\" count=state.count\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Test\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/diff-html/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should allow diffing html\", function () {\n  var app = window.app;\n  expect(document.documentElement.getAttribute(\"count\")).to.equal(\"0\");\n\n  app.increment();\n  app.update();\n\n  expect(document.documentElement.getAttribute(\"count\")).to.equal(\"1\");\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/diff-html-include-layout/layout.marko",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n    <head>\n        <meta charset=\"UTF-8\"/>\n        <title>Marko Test</title>\n    </head>\n    <body>\n        <div id=\"test\"/>\n        <div id=\"mocha\"/>\n        <div id=\"testsTarget\"/>\n        <${input.body}/>\n    </body>\n</html>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/diff-html-include-layout/template.marko",
    "content": "import Layout from \"./layout.marko\"\n\nclass {\n    onCreate() {\n        this.state = {\n            count: 0\n        };\n    }\n    onMount() {\n        window.app = this;\n    }\n    increment() {\n        this.state.count++;\n    }\n}\n\n<${Layout}>\n    <@body>\n        <span.count>${state.count}</span>\n    </@body>\n</>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/diff-html-include-layout/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should allow diffing html\", function () {\n  var app = window.app;\n  expect(document.body.querySelector(\"span.count\").innerHTML).to.equal(\"0\");\n\n  app.increment();\n  app.update();\n\n  expect(document.body.querySelector(\"span.count\").innerHTML).to.equal(\"1\");\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/diff-title/template.marko",
    "content": "class {\n    onCreate () {\n        this.state = {\n            count: 0\n        }\n    }\n    onMount () {\n        window.app = this;\n    }\n    increment () {\n        this.state.count++;\n    }\n}\n\n<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Count: ${state.count}\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/diff-title/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should allow diffing title inside head\", function () {\n  var app = window.app;\n  expect(document.title).to.equal(\"Count: 0\");\n\n  app.increment();\n  app.update();\n\n  expect(app.state.count).to.equal(1);\n  expect(document.title).to.equal(\"Count: 1\");\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/dom-events/components/app-foo/component.js",
    "content": "module.exports = {\n  onInput: function () {\n    this.state = {\n      name: \"app-foo\",\n    };\n  },\n\n  onMount: function () {\n    window.fooComponent = this;\n    this.mouseMoveEvent = null;\n    this.clickEvent = null;\n  },\n\n  handleButtonMouseMove: function () {\n    this.mouseMoveEvent = arguments;\n  },\n\n  handleButtonClick: function () {\n    this.clickEvent = arguments;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/dom-events/components/app-foo/index.marko",
    "content": "div\n    button key=\"button\" onMouseMove('handleButtonMouseMove') onClick(\"handleButtonClick\")\n    button [\n            key=\"ok\"\n            type=\"button\"\n            onClick('handleButtonClick', {type: 'ok'})\n            onMouseMove('handleButtonMouseMove', {type: 'ok'})\n        ]\n        -- OK\n    button [\n            key=\"cancel\"\n            type=\"button\"\n            onClick('handleButtonClick', {type: 'cancel'})\n            onMouseMove('handleButtonMouseMove', {type: 'cancel'})\n        ]\n        -- Cancel"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/dom-events/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/dom-events/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Components Tests\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        app-foo\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/dom-events/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nfunction triggerMouseEvent(el, type) {\n  var ev = document.createEvent(\"MouseEvent\");\n  ev.initMouseEvent(\n    type,\n    true /* bubble */,\n    true /* cancelable */,\n    window,\n    null,\n    0,\n    0,\n    0,\n    0 /* coordinates */,\n    false,\n    false,\n    false,\n    false /* modifier keys */,\n    0 /*left*/,\n    null,\n  );\n  el.dispatchEvent(ev);\n}\n\nfunction triggerClick(el) {\n  triggerMouseEvent(el, \"click\");\n}\n\nit(\"should invoke event handler method for non-bubbling events\", function () {\n  window.fooComponent.mouseMoveEvent = null;\n  triggerMouseEvent(window.fooComponent.getEl(\"button\"), \"mousemove\");\n  expect(window.fooComponent.mouseMoveEvent != null).to.equal(true);\n\n  expect(window.fooComponent.mouseMoveEvent[0].type).to.equal(\"mousemove\");\n  expect(window.fooComponent.mouseMoveEvent[1]).to.equal(\n    window.fooComponent.getEl(\"button\"),\n  );\n});\n\nit(\"should invoke event handler method for non-bubbling events with extra args\", function () {\n  window.fooComponent.mouseMoveEvent = null;\n\n  triggerMouseEvent(window.fooComponent.getEl(\"ok\"), \"mousemove\");\n\n  expect(window.fooComponent.mouseMoveEvent != null).to.equal(true);\n  expect(window.fooComponent.mouseMoveEvent[0].type).to.equal(\"ok\");\n  expect(window.fooComponent.mouseMoveEvent[1].type).to.equal(\"mousemove\");\n  expect(window.fooComponent.mouseMoveEvent[2]).to.equal(\n    window.fooComponent.getEl(\"ok\"),\n  );\n\n  triggerMouseEvent(window.fooComponent.getEl(\"cancel\"), \"mousemove\");\n\n  expect(window.fooComponent.mouseMoveEvent != null).to.equal(true);\n  expect(window.fooComponent.mouseMoveEvent[0].type).to.equal(\"cancel\");\n  expect(window.fooComponent.mouseMoveEvent[1].type).to.equal(\"mousemove\");\n  expect(window.fooComponent.mouseMoveEvent[2]).to.equal(\n    window.fooComponent.getEl(\"cancel\"),\n  );\n});\n\nit(\"should invoke event handler method for bubbling events\", function () {\n  window.fooComponent.clickEvent = null;\n  triggerMouseEvent(window.fooComponent.getEl(\"button\"), \"click\");\n  expect(window.fooComponent.clickEvent != null).to.equal(true);\n  expect(window.fooComponent.clickEvent[0].type).to.equal(\"click\");\n  expect(window.fooComponent.clickEvent[1]).to.equal(\n    window.fooComponent.getEl(\"button\"),\n  );\n});\n\nit(\"should invoke event handler method for bubbling events with extra args\", function () {\n  var component = window.fooComponent;\n\n  window.fooComponent.clickEvent = null;\n\n  triggerClick(component.getEl(\"ok\"));\n\n  expect(component.clickEvent[0].type).to.equal(\"ok\");\n  expect(component.clickEvent[1].stopPropagation).to.be.a(\"function\");\n  expect(component.clickEvent[2].innerHTML).to.equal(\"OK\");\n\n  triggerClick(component.getEl(\"cancel\"));\n\n  expect(component.clickEvent[0].type).to.equal(\"cancel\");\n  expect(component.clickEvent[1].stopPropagation).to.be.a(\"function\");\n  expect(component.clickEvent[2].innerHTML).to.equal(\"Cancel\");\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/dom-events-bubbling/components/no-args/index.marko",
    "content": "import { expect } from 'chai';\n\nclass {\n    onCreate() {\n        this.clicked = false;\n    }\n\n    onMount() {\n        var components = window.components || (window.components = {});\n        components['no-args'] = this;\n    }\n\n\thandleButtonClick() {\n\t\tthis.clicked = true;\n\t}\n\n    test(helpers) {\n        expect(this.clicked).to.equal(false);\n        helpers.triggerMouseEvent(this.getEl('button'), 'click');\n        expect(this.clicked).to.equal(true);\n    }\n}\n\n<div>\n    <button key=\"button\" type=\"button\" on-click('handleButtonClick')>Click me</button>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/dom-events-bubbling/components/one-arg/index.marko",
    "content": "import { expect } from 'chai'\n\nclass {\n    onMount() {\n        var components = window.components || (window.components = {});\n        components[\"one-arg\"] = this;\n    }\n\n    handleColorClick(color) {\n        this.color = color;\n    }\n\n    test(helpers) {\n        var liEls = this.el.querySelectorAll(\"li\");\n\n        helpers.triggerMouseEvent(liEls[0], \"click\");\n        expect(this.color).to.equal(\"red\");\n\n        helpers.triggerMouseEvent(liEls[1], \"click\");\n        expect(this.color).to.equal(\"green\");\n\n        helpers.triggerMouseEvent(liEls[2], \"click\");\n        expect(this.color).to.equal(\"blue\");\n    }\n}\n\n<div>\n    <ul>\n        <for|color| of=input.colors>\n            <li onClick(\"handleColorClick\", color)>${color}</li>\n        </for>\n    </ul>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/dom-events-bubbling/components/one-arg-array/index.marko",
    "content": "import { expect } from 'chai'\n\nclass {\n    onMount() {\n        var components = window.components || (window.components = {});\n        components[\"one-arg-array\"] = this;\n    }\n\n    handleColorClick(color) {\n        this.color = color[0];\n    }\n\n    test(helpers) {\n        var liEls = this.el.querySelectorAll(\"li\");\n\n        helpers.triggerMouseEvent(liEls[0], \"click\");\n        expect(this.color).to.equal(\"red\");\n\n        helpers.triggerMouseEvent(liEls[1], \"click\");\n        expect(this.color).to.equal(\"green\");\n\n        helpers.triggerMouseEvent(liEls[2], \"click\");\n        expect(this.color).to.equal(\"blue\");\n    }\n}\n\n<div>\n    <ul>\n        <for|color| of=input.colors>\n            <li onClick(\"handleColorClick\", [color])>${color}</li>\n        </for>\n    </ul>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/dom-events-bubbling/components/two-args/index.marko",
    "content": "import { expect } from 'chai'\n\nclass {\n    onMount() {\n        var components = window.components || (window.components = {});\n        components[\"two-args\"] = this;\n    }\n    handleColorClick(color, type) {\n        this.color = { color: color, type: type };\n    }\n\n    test(helpers) {\n        var liEls = this.el.querySelectorAll(\"ul.primary li\");\n\n        helpers.triggerMouseEvent(liEls[0], \"click\");\n        expect(this.color).to.deep.equal({ color: \"red\", type: \"primary\" });\n\n        helpers.triggerMouseEvent(liEls[1], \"click\");\n        expect(this.color).to.deep.equal({ color: \"green\", type: \"primary\" });\n\n        helpers.triggerMouseEvent(liEls[2], \"click\");\n        expect(this.color).to.deep.equal({ color: \"blue\", type: \"primary\" });\n\n        liEls = this.el.querySelectorAll(\"ul.secondary li\");\n\n        helpers.triggerMouseEvent(liEls[0], \"click\");\n        expect(this.color).to.deep.equal({ color: \"red\", type: \"secondary\" });\n\n        helpers.triggerMouseEvent(liEls[1], \"click\");\n        expect(this.color).to.deep.equal({ color: \"green\", type: \"secondary\" });\n\n        helpers.triggerMouseEvent(liEls[2], \"click\");\n        expect(this.color).to.deep.equal({ color: \"blue\", type: \"secondary\" });\n    }\n}\n\n<div>\n    <ul.primary>\n        <for|color| of=input.colors>\n            <li onClick(\"handleColorClick\", color, \"primary\")>${color}</li>\n        </for>\n    </ul>\n    <ul.secondary>\n        <for|color| of=input.colors>\n            <li onClick(\"handleColorClick\", color, \"secondary\")>${color}</li>\n        </for>\n    </ul>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/dom-events-bubbling/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/dom-events-bubbling/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Components Tests\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        <no-args/>\n        <one-arg colors=['red', 'green', 'blue']/>\n        <one-arg-array colors=['red', 'green', 'blue']/>\n        <two-args colors=['red', 'green', 'blue']/>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/dom-events-bubbling/tests.js",
    "content": "function triggerMouseEvent(el, type) {\n  var ev = document.createEvent(\"MouseEvent\");\n  ev.initMouseEvent(\n    type,\n    true /* bubble */,\n    true /* cancelable */,\n    window,\n    null,\n    0,\n    0,\n    0,\n    0 /* coordinates */,\n    false,\n    false,\n    false,\n    false /* modifier keys */,\n    0 /*left*/,\n    null,\n  );\n  el.dispatchEvent(ev);\n}\n\nfunction triggerClick(el) {\n  triggerMouseEvent(el, \"click\");\n}\n\nvar helpers = {\n  triggerMouseEvent: triggerMouseEvent,\n  triggerClick: triggerClick,\n};\n\nit(\"should allow no args\", function () {\n  window.components[\"no-args\"].test(helpers);\n});\n\nit(\"should allow one arg\", function () {\n  window.components[\"one-arg\"].test(helpers);\n});\n\nit(\"should allow one arg as array\", function () {\n  window.components[\"one-arg-array\"].test(helpers);\n});\n\nit(\"should allow two args\", function () {\n  window.components[\"two-args\"].test(helpers);\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/empty-component/components/a/index.marko",
    "content": "class {\n    onMount() {\n        window.app = this;\n    }\n}\n\n<b key=\"b\"/>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/empty-component/components/b/index.marko",
    "content": "class {}\n\n-- ${undefined}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/empty-component/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Test\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        <a key=\"a\"/>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/empty-component/tests.js",
    "content": "it(\"should allow diffing html\", function () {\n  var app = window.app;\n  app.forceUpdate();\n  app.update();\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/empty-tag-with-key/components/dynamic-tag-key/index.marko",
    "content": "class {\n    onMount() {\n        window.dynamic = this;\n    }\n};\n\n<div>\n    <${true ? \"div\" : null} key=\"test\">Content</>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/empty-tag-with-key/components/split-tag-key/component-browser.js",
    "content": "module.exports = class {\n  onMount() {\n    window.splitDynamic = this;\n  }\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/empty-tag-with-key/components/split-tag-key/index.marko",
    "content": "<${true ? \"div\" : null} key=\"test\">Content</>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/empty-tag-with-key/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/empty-tag-with-key/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Components Tests\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        <dynamic-tag-key/>\n        <split-tag-key/>\n\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/empty-tag-with-key/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should allow getEl() with a dynamic component\", function () {\n  expect(window.dynamic.getEl(\"test\") !== undefined).to.equal(true);\n  expect(window.splitDynamic.getEl(\"test\") !== undefined).to.equal(true);\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/getEl-no-rerender/components/hello/index.marko",
    "content": "class {\n    onMount() {\n        window.hello = this;\n    }\n};\n\n\n<div.hello>\n    <button key=\"button\">Click me</button>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/getEl-no-rerender/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/getEl-no-rerender/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Components Tests\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        <hello>\n            This will prevent the UI component from re-rendering\n        </hello>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/getEl-no-rerender/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should allow getEl() with a split component\", function () {\n  var hello = window.hello;\n  expect(hello.getEl(\"button\") != null).to.equal(true);\n  expect(hello.getEl(\"button\").nodeName).to.equal(\"BUTTON\");\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/getEl-split/components/split-component/component-browser.js",
    "content": "module.exports = {\n  onMount: function () {\n    window.splitComponent = this;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/getEl-split/components/split-component/index.marko",
    "content": "<div.split-component>\n    <button key=\"button\">Click me</button>\n\n    <ul>\n        <for|i| from=1 to=3>\n            <li key=\"li[]\">${i}</li>\n        </for>\n    </ul>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/getEl-split/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/getEl-split/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Components Tests\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        <split-component/>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/getEl-split/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should allow getEl() with a split component\", function () {\n  var splitComponent = window.splitComponent;\n  expect(splitComponent.getEl(\"button\") != null).to.equal(true);\n  expect(splitComponent.getEl(\"button\").nodeName).to.equal(\"BUTTON\");\n\n  expect(splitComponent.getEls(\"li\").length).to.equal(3);\n  expect(splitComponent.getEls(\"li\").map((el) => el.textContent)).to.eql([\n    \"1\",\n    \"2\",\n    \"3\",\n  ]);\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/getRenderedComponents/browser.json",
    "content": "{\n  \"dependencies\": [\"require-run: ./components/app-simple\"]\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/getRenderedComponents/components/app-simple/component.js",
    "content": "if (typeof window !== \"undefined\") {\n  window.simpleComponents = [];\n}\n\nmodule.exports = {\n  onInput: function (input) {\n    this.type = \"component config\";\n    this.name = input.name;\n    this.messageCount = input.messageCount;\n\n    this.state = {\n      type: \"component state\",\n      name: input.name,\n      messageCount: input.messageCount,\n    };\n  },\n\n  onMount: function () {\n    window.simpleComponents.push(this);\n\n    this.componentConfig = {\n      type: this.type,\n      name: this.name,\n      messageCount: this.messageCount,\n    };\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/getRenderedComponents/components/app-simple/index.marko",
    "content": "<div>\n\tHello ${data.name}! You have ${data.messageCount} new messages.\n\t<div key=\"foo\">foo</div>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/getRenderedComponents/components.marko",
    "content": "app-simple name=\"Frank\" message-count=20\napp-simple name=\"John\" message-count=10"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/getRenderedComponents/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/getRenderedComponents/template.marko",
    "content": "static {\n    var markoComponents = require(\"marko/components\");\n    var componentsTemplate = require(\"./components.marko\").default;\n\n    function componentsDataProvider(callback) {\n        componentsTemplate.renderToString({}, function(err, html, out) {\n            var componentIds = markoComponents.getRenderedComponents(out);\n\n            // Serialize the HTML and the component IDs to the browser\n            callback(null, {\n                html: html,\n                componentIds: componentIds\n            });\n        });\n    }\n}\n\n<!DOCTYPE html>\n<html lang=\"en\">\n    <head>\n        <meta charset=\"UTF-8\"/>\n        <title>Marko Components Tests</title>\n    </head>\n    <body>\n        <await(componentsDataProvider)>\n            <@then|components|>\n                <script>window.components = ${JSON.stringify(components)};</script>\n            </@then>\n        </await>\n        <div id=\"test\"/>\n        <div id=\"mocha\"/>\n        <div id=\"testsTarget\"/>\n    </body>\n</html>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/getRenderedComponents/tests.js",
    "content": "var expect = require(\"chai\").expect;\nvar markoComponents = require(\"marko/components\");\n\nit(\"should serialize component config down to the browser\", function () {\n  expect(window.simpleComponents).to.deep.equal([]);\n\n  var components = window.components;\n  var html = components.html;\n  var componentIds = components.componentIds;\n  var testsTarget = document.getElementById(\"testsTarget\");\n\n  testsTarget.innerHTML = html; // Add the HTML to the DOM\n\n  // Initialize the components to bind behavior!\n  markoComponents.init(componentIds);\n\n  expect(window.simpleComponents.length).to.equal(2);\n  expect(window.simpleComponents[0].state.type).to.equal(\"component state\");\n  expect(window.simpleComponents[0].state.name).to.equal(\"John\");\n  expect(window.simpleComponents[0].state.messageCount).to.equal(10);\n  expect(window.simpleComponents[0].componentConfig.type).to.equal(\n    \"component config\",\n  );\n  expect(window.simpleComponents[0].componentConfig.name).to.equal(\"John\");\n  expect(window.simpleComponents[0].componentConfig.messageCount).to.equal(10);\n\n  expect(window.simpleComponents[1].state.type).to.equal(\"component state\");\n  expect(window.simpleComponents[1].state.name).to.equal(\"Frank\");\n  expect(window.simpleComponents[1].state.messageCount).to.equal(20);\n  expect(window.simpleComponents[1].componentConfig.type).to.equal(\n    \"component config\",\n  );\n  expect(window.simpleComponents[1].componentConfig.name).to.equal(\"Frank\");\n  expect(window.simpleComponents[1].componentConfig.messageCount).to.equal(20);\n\n  testsTarget.innerHTML = html; // Reset html.\n  markoComponents.init(componentIds); // Re-initialize the components.\n\n  expect(window.simpleComponents.length).to.equal(4);\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/if-empty-component/components/a/index.marko",
    "content": "class {\n    onMount() {\n        window.app = this;\n    }\n}\n\n<if(input.show)>\n    <div.show/>\n</if>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/if-empty-component/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Test\n    body\n        <a key=\"a\"/>\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/if-empty-component/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should allow diffing html\", function () {\n  var app = window.app;\n  app.forceUpdate();\n  app.update();\n  expect(app.getEl()).to.equal(undefined);\n  app.input = { show: true };\n  app.forceUpdate();\n  app.update();\n  expect(app.getEl().outerHTML).to.equal('<div class=\"show\"></div>');\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/implicit-component-macro-params/components/hello-implicit-component/index.marko",
    "content": "$ if (typeof window !== \"undefined\") {\n  window.helloImplicitComponentSent = true;\n}\n\n<macro|macroInput| name=\"add1\">\n  <${macroInput}(macroInput.value + 1)/>\n</macro>\n\n<add1|result| value=1>\n  Result: ${result}\n</add1>\n\n<add1|result| value=2>\n  Result: ${result}\n</add1>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/implicit-component-macro-params/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Components Tests\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        <hello-implicit-component/>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/implicit-component-macro-params/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should not mount implicit components with macros that have tag parameters\", function () {\n  expect(window.helloImplicitComponentSent).to.equal(undefined);\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/implicit-component-root/components/hello-explicit-component/components/implicit-nested/index.marko",
    "content": "<div>Hello implicit nested</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/implicit-component-root/components/hello-explicit-component/index.marko",
    "content": "class {\n    onMount() {\n        window.helloExplicitComponent = this;\n    }\n}\n<div>Hello component</div>\n<implicit-nested key=\"nested\"/>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/implicit-component-root/components/hello-implicit-component/index.marko",
    "content": "<div>Hello non-component</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/implicit-component-root/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Components Tests\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        <hello-implicit-component/>\n        <hello-explicit-component/>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/implicit-component-root/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should mount explicit components\", function () {\n  expect(window.helloExplicitComponent != null).to.equal(true);\n});\n\nit(\"should mount implicit components nested in an explicit component\", function () {\n  expect(window.helloExplicitComponent.getComponent(\"nested\") != null).to.equal(\n    true,\n  );\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/implicit-component-root-tag-params/components/hello-implicit-component/index.marko",
    "content": "$ if (typeof window !== \"undefined\") {\n    window.helloImplicitComponentSent = true;\n}\n<name|{ name }| key=\"name\">Hello, ${name}!</name>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/implicit-component-root-tag-params/components/name/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = {\n            name:'Anna'\n        }\n    }\n    changeName() {\n        this.state.name = 'Vickie';\n    }\n}\n\n<div>\n    <${input} name=state.name/>\n    <button on-click('changeName')>\n        Change\n    </button>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/implicit-component-root-tag-params/components/name/marko-tag.json",
    "content": "{\n  \"featureFlags\": [\"params\"]\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/implicit-component-root-tag-params/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Components Tests\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        <hello-implicit-component/>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/implicit-component-root-tag-params/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should mount implicit components with tag params\", function () {\n  expect(window.helloImplicitComponentSent).to.equal(true);\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/include-input-preserve-focus/components/container/index.marko",
    "content": "<div>\n    <${input.renderBody}/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/include-input-preserve-focus/components/root/index.marko",
    "content": "import Container from \"../container/index.marko\"\n\nclass {\n    onMount() {\n        window.component = this;\n    }\n    onCreate() {\n        this.state = {\n            text: \"\"\n        };\n    }\n}\n\n<${Container}>\n    <input key=\"input\" value=state.text/>\n</>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/include-input-preserve-focus/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Test\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        <root/>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/include-input-preserve-focus/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should update correctly\", function () {\n  var component = window.component;\n  var input = component.getEl(\"input\");\n\n  input.focus();\n  expect(document.activeElement).to.eql(input);\n\n  component.state.text = \"Updated\";\n  component.forceUpdate();\n  component.update();\n\n  expect(document.activeElement).to.eql(input);\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/include-preserve/components/app/index.marko",
    "content": "import { expect } from 'chai';\n\nclass {\n    onMount() {\n        window.app = this;\n    }\n\n    test() {\n        expect(this.el.querySelector('.foo section.input').innerHTML).to.equal('Hello Frank');\n        expect(this.el.querySelector('.foo section.renderBody').innerHTML).to.equal('Hello Frank');\n\n        var foo = window.app.getComponent('foo');\n        foo.forceUpdate();\n        foo.update();\n\n        expect(this.el.querySelector('.foo section.input').innerHTML).to.equal('Hello Frank');\n        expect(this.el.querySelector('.foo section.renderBody').innerHTML).to.equal('Hello Frank');\n\n        this.input = {\n            name: 'John'\n        };\n\n        this.update();\n\n        expect(this.el.querySelector('.foo section.input').innerHTML).to.equal('Hello John');\n        expect(this.el.querySelector('.foo section.renderBody').innerHTML).to.equal('Hello John');\n    }\n}\n\n<div>\n    <foo key=\"foo\">Hello ${input.name}</foo>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/include-preserve/components/foo/index.marko",
    "content": "class {}\n\n<div.foo>\n    <h1>Foo</h1>\n    <section.input>\n        <${input}/>\n    </section>\n    <section.renderBody>\n        <${input.renderBody}/>\n    </section>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/include-preserve/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/include-preserve/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Components Tests\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        app name=\"Frank\"\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/include-preserve/tests.js",
    "content": "it(\"preserve content included on the server\", function () {\n  window.app.test();\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-before-widgets-loaded/components/app-foo/component.js",
    "content": "module.exports = {\n  onInput: function () {\n    this.state = {\n      name: \"app-foo\",\n    };\n  },\n\n  onMount: function () {\n    window.fooComponent = this;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-before-widgets-loaded/components/app-foo/index.marko",
    "content": "div"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-before-widgets-loaded/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-before-widgets-loaded/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Components Tests\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        app-foo\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-before-widgets-loaded/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should serialize component config down to the browser\", function () {\n  expect(window.fooComponent.state.name).to.equal(\"app-foo\");\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-before-widgets-loaded-multiple-async/components/app-foo/component.js",
    "content": "module.exports = {\n  onInput: function () {\n    var parent = {\n      child: {},\n    };\n\n    parent.child.parent = parent;\n\n    this.state = {\n      name: \"app-foo\",\n      parent: parent,\n    };\n  },\n\n  onMount: function () {\n    if (!window.fooComponents) {\n      window.fooComponents = [];\n    }\n    window.fooComponents.push(this);\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-before-widgets-loaded-multiple-async/components/app-foo/index.marko",
    "content": "div"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-before-widgets-loaded-multiple-async/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-before-widgets-loaded-multiple-async/template.marko",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n    <head>\n        <meta charset=\"UTF-8\"/>\n        <title>Marko Components Tests</title>\n    </head>\n    <body>\n        <div id=\"test\"/>\n        <div id=\"mocha\"/>\n        <div id=\"testsTarget\"/>\n        <await(Promise.resolve())>\n            <@then|foo|>\n                <app-foo/>\n            </@then>\n        </await>\n        <await(Promise.resolve())>\n            <@then|foo|>\n                <app-foo/>\n            </@then>\n        </await>\n    </body>\n</html>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-before-widgets-loaded-multiple-async/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should initialize all components\", function () {\n  expect(window.fooComponents.length).to.equal(2);\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-immediate/components/app-bar/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    window.barComponent = this;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-immediate/components/app-bar/index.marko",
    "content": "div\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-immediate/components/app-baz/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    window.bazComponent = this;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-immediate/components/app-baz/index.marko",
    "content": "div\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-immediate/components/app-foo/component.js",
    "content": "module.exports = {\n  onInput: function () {\n    this.state = {\n      type: \"state\",\n      name: \"foo\",\n    };\n    this.type = \"config\";\n    this.name = \"foo\";\n  },\n\n  onMount: function () {\n    window.fooComponent = this;\n    this.componentConfig = {\n      type: this.type,\n      name: this.name,\n    };\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-immediate/components/app-foo/index.marko",
    "content": "div\n    app-baz"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-immediate/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-immediate/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Components Tests\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        app-foo\n        app-bar\n\n        script\n            ---\n            window.$initComponents();\n            ---\n\nscript\n    ---\n    // window.fooComponent should, but's store that in a variable to verify\n    window.afterInitComponentsFooComponent = window.fooComponent;\n    window.afterInitComponentsBarComponent = window.barComponent;\n    ---\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-immediate/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should initialize components before ready\", function () {\n  expect(window.afterInitComponentsFooComponent != null).to.equal(true);\n  expect(window.afterInitComponentsBarComponent != null).to.equal(true);\n\n  expect(window.fooComponent != null).to.equal(true);\n  expect(window.barComponent != null).to.equal(true);\n\n  expect(window.fooComponent.id).to.be.a(\"string\");\n  expect(window.barComponent.id).to.be.a(\"string\");\n  expect(window.fooComponent.id).to.not.equal(window.barComponent.id);\n});\n\nit(\"should assign unique IDs to each component\", function () {\n  expect(window.fooComponent.id).to.be.a(\"string\");\n  expect(window.barComponent.id).to.be.a(\"string\");\n  expect(window.bazComponent.id).to.be.a(\"string\");\n  expect(window.fooComponent.id).to.not.equal(window.barComponent.id);\n  expect(window.fooComponent.id).to.not.equal(window.bazComponent.id);\n  expect(window.bazComponent.id).to.contain(window.fooComponent.id);\n});\n\nit(\"should assign a unique ID to a nested component based on the parent ID\", function () {\n  expect(window.bazComponent.id).to.contain(window.fooComponent.id + \"-\");\n});\n\nit(\"should serialize state correctly\", function () {\n  expect(window.fooComponent.state.type).to.equal(\"state\");\n  expect(window.fooComponent.state.name).to.equal(\"foo\");\n});\n\nit(\"should serialize component config correctly\", function () {\n  expect(window.fooComponent.componentConfig.type).to.equal(\"config\");\n  expect(window.fooComponent.componentConfig.name).to.equal(\"foo\");\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-immediate-await-client-reorder/components/app-bar/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    window.barComponent = this;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-immediate-await-client-reorder/components/app-bar/index.marko",
    "content": "div.bar\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-immediate-await-client-reorder/components/app-foo/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    window.fooComponent = this;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-immediate-await-client-reorder/components/app-foo/index.marko",
    "content": "div.foo"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-immediate-await-client-reorder/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-immediate-await-client-reorder/template.marko",
    "content": "static function nameDataProvider(callback) {\n    setTimeout(function() {\n        callback(null, {});\n    }, 20);\n}\n\n<!DOCTYPE html>\n<html lang=\"en\">\n    <head>\n        <meta charset=\"UTF-8\"/>\n        <title>Marko Components Tests</title>\n    </head>\n    <body>\n        <div id=\"test\"/>\n        <div id=\"mocha\"/>\n        <div id=\"testsTarget\"/>\n        <app-foo/>\n        <await(nameDataProvider) client-reorder>\n            <@then|name|>\n                <script>\n                    // window.barComponent should not exist yet, but's store that in a variable to verify\n                    window.afterInitComponents_foo = window.fooComponent;\n                    window.afterInitComponents_bar = window.barComponent;\n                </script>\n                <app-bar/>\n            </@then>\n        </await>\n        <init-components/>\n    </body>\n</html>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-immediate-await-client-reorder/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should initialize components before ready\", function () {\n  expect(window.afterInitComponents_foo != null).to.equal(true);\n  expect(window.afterInitComponents_bar == null).to.equal(true);\n\n  expect(window.fooComponent != null).to.equal(true);\n  expect(window.barComponent != null).to.equal(true);\n\n  expect(window.fooComponent.id).to.be.a(\"string\");\n  expect(window.barComponent.id).to.be.a(\"string\");\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-tag/components/app-bar/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    window.barComponent = this;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-tag/components/app-bar/index.marko",
    "content": "div\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-tag/components/app-baz/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    window.bazComponent = this;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-tag/components/app-baz/index.marko",
    "content": "div\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-tag/components/app-foo/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    window.fooComponent = this;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-tag/components/app-foo/index.marko",
    "content": "div\n    app-baz"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-tag/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-tag/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Components Tests\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        app-foo\n        app-bar\n\n        script\n            ---\n            // window.fooComponent should not exist yet, but's store that in a variable to verify\n            window.beforeInitComponentsFooComponent = window.fooComponent;\n            window.beforeInitComponentsBarComponent = window.barComponent;\n            ---\n\n        init-components\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-tag/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should initialize components after ready\", function (done) {\n  expect(window.beforeInitComponentsFooComponent).to.equal(undefined);\n  expect(window.afterInitComponentsBarComponent).to.equal(undefined);\n\n  expect(window.fooComponent != null).to.equal(true);\n  expect(window.barComponent != null).to.equal(true);\n\n  expect(window.fooComponent.id).to.be.a(\"string\");\n  expect(window.barComponent.id).to.be.a(\"string\");\n  expect(window.fooComponent.id).to.not.equal(window.barComponent.id);\n  done();\n});\n\nit(\"should assign unique IDs to each component\", function (done) {\n  expect(window.fooComponent.id).to.be.a(\"string\");\n  expect(window.barComponent.id).to.be.a(\"string\");\n  expect(window.bazComponent.id).to.be.a(\"string\");\n  expect(window.fooComponent.id).to.not.equal(window.barComponent.id);\n  expect(window.fooComponent.id).to.not.equal(window.bazComponent.id);\n  expect(window.bazComponent.id).to.contain(window.fooComponent.id);\n  done();\n});\n\nit(\"should assign a unique ID to a nested component based on the parent ID\", function (done) {\n  expect(window.bazComponent.id).to.contain(window.fooComponent.id + \"-\");\n  done();\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-tag-none/components/app-bar/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    window.barComponent = this;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-tag-none/components/app-bar/index.marko",
    "content": "div\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-tag-none/components/app-baz/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    window.bazComponent = this;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-tag-none/components/app-baz/index.marko",
    "content": "div\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-tag-none/components/app-foo/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    window.fooComponent = this;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-tag-none/components/app-foo/index.marko",
    "content": "div\n    app-baz"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-tag-none/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-tag-none/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Components Tests\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        app-foo\n        app-bar\n\n        script\n            ---\n            // window.fooComponent should not exist yet, but's store that in a variable to verify\n            window.beforeInitComponentsFooComponent = window.fooComponent;\n            window.beforeInitComponentsBarComponent = window.barComponent;\n            ---\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-components-tag-none/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should initialize components after ready\", function (done) {\n  expect(window.beforeInitComponentsFooComponent).to.equal(undefined);\n  expect(window.afterInitComponentsBarComponent).to.equal(undefined);\n\n  expect(window.fooComponent != null).to.equal(true);\n  expect(window.barComponent != null).to.equal(true);\n\n  expect(window.fooComponent.id).to.be.a(\"string\");\n  expect(window.barComponent.id).to.be.a(\"string\");\n  expect(window.fooComponent.id).to.not.equal(window.barComponent.id);\n  done();\n});\n\nit(\"should assign unique IDs to each component\", function (done) {\n  expect(window.fooComponent.id).to.be.a(\"string\");\n  expect(window.barComponent.id).to.be.a(\"string\");\n  expect(window.bazComponent.id).to.be.a(\"string\");\n  expect(window.fooComponent.id).to.not.equal(window.barComponent.id);\n  expect(window.fooComponent.id).to.not.equal(window.bazComponent.id);\n  expect(window.bazComponent.id).to.contain(window.fooComponent.id);\n  done();\n});\n\nit(\"should assign a unique ID to a nested component based on the parent ID\", function (done) {\n  expect(window.bazComponent.id).to.contain(window.fooComponent.id + \"-\");\n  done();\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-included/components/app-bar/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    window.barComponent = this;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-included/components/app-bar/index.marko",
    "content": "div\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-included/components/app-baz/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    window.bazComponent = this;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-included/components/app-baz/index.marko",
    "content": "div\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-included/components/app-foo/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    window.fooComponent = this;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-included/components/app-foo/index.marko",
    "content": "div\n    app-baz"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-included/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-included/template.marko",
    "content": "import AppFoo from \"./components/app-foo/index.marko\"\nimport AppBar from \"./components/app-bar/index.marko\"\n\n<!DOCTYPE html>\n<html lang=\"en\">\n    <head>\n        <meta charset=\"UTF-8\"/>\n        <title>Marko Components Tests</title>\n    </head>\n    <body>\n        <div id=\"test\"/>\n        <div id=\"mocha\"/>\n        <div id=\"testsTarget\"/>\n        <${AppFoo}/>\n        <${AppBar}/>\n        <script>// window.fooComponent should not exist yet, but's store that in a variable to verify\nwindow.beforeInitComponentsFooComponent = window.fooComponent;\nwindow.beforeInitComponentsBarComponent = window.barComponent;</script>\n    </body>\n</html>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/init-included/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should initialize components after ready\", function (done) {\n  expect(window.beforeInitComponentsFooComponent).to.equal(undefined);\n  expect(window.afterInitComponentsBarComponent).to.equal(undefined);\n\n  expect(window.fooComponent != null).to.equal(true);\n  expect(window.barComponent != null).to.equal(true);\n\n  expect(window.fooComponent.id).to.be.a(\"string\");\n  expect(window.barComponent.id).to.be.a(\"string\");\n  expect(window.fooComponent.id).to.not.equal(window.barComponent.id);\n  done();\n});\n\nit(\"should assign unique IDs to each component\", function (done) {\n  expect(window.fooComponent.id).to.be.a(\"string\");\n  expect(window.barComponent.id).to.be.a(\"string\");\n  expect(window.bazComponent.id).to.be.a(\"string\");\n  expect(window.fooComponent.id).to.not.equal(window.barComponent.id);\n  expect(window.fooComponent.id).to.not.equal(window.bazComponent.id);\n  expect(window.bazComponent.id).to.contain(window.fooComponent.id);\n  done();\n});\n\nit(\"should assign a unique ID to a nested component based on the parent ID\", function (done) {\n  expect(window.bazComponent.id).to.contain(window.fooComponent.id + \"-\");\n  done();\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/lifecycle-events/components/lifecycle-events/index.marko",
    "content": "import { expect } from 'chai';\n\nclass {\n    onCreate(input, out) {\n        // if (typeof window !== 'undefined') {\n        //     throw new Error('onCreate should not be called in the browser');\n        // }\n        if (this.state != null) {\n            throw new Error('this.state should be undefined');\n        }\n        this.state = {\n            events: ['onCreate']\n        }\n\n        this.onCreateInputName = input.name;\n        this.onCreateOutName = out.global.name;\n    }\n\n    onRender(out) {\n        // if (typeof window !== 'undefined') {\n        //     throw new Error('onRender should not be called in the browser');\n        // }\n\n        this.state.events.push('onRender');\n\n        if (!out || !out.write) {\n            throw new Error('\"out\" argument expected');\n        }\n    }\n\n    onInput(input) {\n        // if (typeof window !== 'undefined') {\n        //     throw new Error('onInput should not be called in the browser');\n        // }\n\n        this.state.events.push('onInput[' + input.name + ']');\n    }\n\n    onMount() {\n        var componentsLookup = window.components || (window.components = {});\n        componentsLookup['lifecycle-events'] = this;\n    }\n\n    test() {\n        expect(this.state.events).to.deep.equal(['onCreate', 'onInput[Frank]', 'onRender']);\n        expect(this.onCreateInputName).to.equal('Frank');\n        expect(this.onCreateOutName).to.equal('FrankGlobal');\n    }\n}\n\n<div>\n    Hello <span.name>${input.name}</span>!\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/lifecycle-events/components/lifecycle-events-component-class/component.js",
    "content": "var expect = require(\"chai\").expect;\n\nfunction Component() {}\n\nComponent.prototype = {\n  onCreate: function (input, out) {\n    // if (typeof window !== 'undefined') {\n    //     throw new Error('onCreate should not be called in the browser');\n    // }\n    if (this.state != null) {\n      throw new Error(\"this.state should be undefined\");\n    }\n    this.state = {\n      events: [\"onCreate\"],\n    };\n\n    this.onCreateInputName = input.name;\n    this.onCreateOutName = out.global.name;\n  },\n\n  onRender: function (out) {\n    // if (typeof window !== 'undefined') {\n    //     throw new Error('onRender should not be called in the browser');\n    // }\n\n    this.state.events.push(\"onRender\");\n\n    if (!out || !out.write) {\n      throw new Error('\"out\" argument expected');\n    }\n  },\n\n  onInput: function (input) {\n    // if (typeof window !== 'undefined') {\n    //     throw new Error('onInput should not be called in the browser');\n    // }\n\n    this.state.events.push(\"onInput[\" + input.name + \"]\");\n  },\n\n  onMount: function () {\n    var componentsLookup = window.components || (window.components = {});\n    componentsLookup[\"lifecycle-events-component-class\"] = this;\n  },\n\n  test: function () {\n    expect(this.state.events).to.deep.equal([\n      \"onCreate\",\n      \"onInput[Frank]\",\n      \"onRender\",\n    ]);\n    expect(this.onCreateInputName).to.equal(\"Frank\");\n    expect(this.onCreateOutName).to.equal(\"FrankGlobal\");\n  },\n};\n\nmodule.exports = Component;\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/lifecycle-events/components/lifecycle-events-component-class/index.marko",
    "content": "<div>\n    Hello <span.name>${input.name}</span>!\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/lifecycle-events/components/lifecycle-events-component-class-ctor/component.js",
    "content": "var expect = require(\"chai\").expect;\n\nfunction Component() {\n  throw new Error(\"THIS SHOULD NOT BE CALLED\");\n}\n\nComponent.prototype = {\n  onCreate: function (input, out) {\n    // if (typeof window !== 'undefined') {\n    //     throw new Error('onCreate should not be called in the browser');\n    // }\n    if (this.state != null) {\n      throw new Error(\"this.state should be undefined\");\n    }\n    this.state = {\n      events: [\"onCreate\"],\n    };\n\n    this.onCreateInputName = input.name;\n    this.onCreateOutName = out.global.name;\n  },\n\n  onRender: function (out) {\n    // if (typeof window !== 'undefined') {\n    //     throw new Error('onRender should not be called in the browser');\n    // }\n\n    this.state.events.push(\"onRender\");\n\n    if (!out || !out.write) {\n      throw new Error('\"out\" argument expected');\n    }\n  },\n\n  onInput: function (input) {\n    // if (typeof window !== 'undefined') {\n    //     throw new Error('onInput should not be called in the browser');\n    // }\n\n    this.state.events.push(\"onInput[\" + input.name + \"]\");\n  },\n\n  onMount: function () {\n    var componentsLookup = window.components || (window.components = {});\n    componentsLookup[\"lifecycle-events-component-class-ctor\"] = this;\n  },\n\n  test: function () {\n    expect(this.state.events).to.deep.equal([\n      \"onCreate\",\n      \"onInput[Frank]\",\n      \"onRender\",\n    ]);\n    expect(this.onCreateInputName).to.equal(\"Frank\");\n    expect(this.onCreateOutName).to.equal(\"FrankGlobal\");\n  },\n};\n\nmodule.exports = Component;\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/lifecycle-events/components/lifecycle-events-component-class-ctor/index.marko",
    "content": "<div>\n    Hello <span.name>${input.name}</span>!\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/lifecycle-events/components/lifecycle-events-component-object/component.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = {\n  onCreate: function (input, out) {\n    // if (typeof window !== 'undefined') {\n    //     throw new Error('onCreate should not be called in the browser');\n    // }\n    if (this.state != null) {\n      throw new Error(\"this.state should be undefined\");\n    }\n    this.state = {\n      events: [\"onCreate\"],\n    };\n\n    this.onCreateInputName = input.name;\n    this.onCreateOutName = out.global.name;\n  },\n\n  onRender: function (out) {\n    // if (typeof window !== 'undefined') {\n    //     throw new Error('onRender should not be called in the browser');\n    // }\n\n    this.state.events.push(\"onRender\");\n\n    if (!out || !out.write) {\n      throw new Error('\"out\" argument expected');\n    }\n  },\n\n  onInput: function (input) {\n    // if (typeof window !== 'undefined') {\n    //     throw new Error('onInput should not be called in the browser');\n    // }\n\n    this.state.events.push(\"onInput[\" + input.name + \"]\");\n  },\n\n  onMount: function () {\n    var componentsLookup = window.components || (window.components = {});\n    componentsLookup[\"lifecycle-events-component-object\"] = this;\n  },\n\n  test: function () {\n    expect(this.state.events).to.deep.equal([\n      \"onCreate\",\n      \"onInput[Frank]\",\n      \"onRender\",\n    ]);\n    expect(this.onCreateInputName).to.equal(\"Frank\");\n    expect(this.onCreateOutName).to.equal(\"FrankGlobal\");\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/lifecycle-events/components/lifecycle-events-component-object/index.marko",
    "content": "<div>\n    Hello <span.name>${input.name}</span>!\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/lifecycle-events/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/lifecycle-events/template.marko",
    "content": "$ out.global.name = 'FrankGlobal';\n$ out.global.serializedGlobals = { name:true };\n\n<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Components Tests\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        <lifecycle-events name=\"Frank\" />\n        <lifecycle-events-component-class name=\"Frank\" />\n        <lifecycle-events-component-class-ctor name=\"Frank\" />\n        <lifecycle-events-component-object name=\"Frank\" />\n\n        init-components immediate\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/lifecycle-events/tests.js",
    "content": "it(\"should invoke lifecycle events correctly when a UI component is rendered on the server\", function () {\n  var component = window.components[\"lifecycle-events\"];\n  component.test();\n});\n\nit(\"should invoke lifecycle events correctly when a UI component is rendered on the server - component exports class\", function () {\n  var component = window.components[\"lifecycle-events-component-class\"];\n  component.test();\n});\n\nit(\"should invoke lifecycle events correctly when a UI component is rendered on the server - component exports class ctor\", function () {\n  var component = window.components[\"lifecycle-events-component-class-ctor\"];\n  component.test();\n});\n\nit(\"should invoke lifecycle events correctly when a UI component is rendered on the server - component exports object\", function () {\n  var component = window.components[\"lifecycle-events-component-object\"];\n  component.test();\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/nesting/components/a/index.marko",
    "content": "class {\n    onMount() {\n        window.app = this;\n    }\n}\n\n<b model={} key=\"b\"/>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/nesting/components/b/index.marko",
    "content": "class {\n\n}\n\n<c key=\"c\"/>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/nesting/components/c/index.marko",
    "content": "class {\n}\n\n<d key=\"d1\"/>\n<d key=\"d2\"/>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/nesting/components/d/index.marko",
    "content": "class {\n}\n\n<div.d/>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/nesting/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Test\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        div id=\"test-result\"\n            a key=\"a\"\n\n        init-components immediate\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/nesting/tests.js",
    "content": "var expect = require(\"chai\").expect;\nvar Component = require(\"./components/a/index.marko\").default;\n\nit(\"should allow diffing html\", function () {\n  var parentNode = document.getElementById(\"test-result\");\n  var app = window.app;\n  app.forceUpdate();\n  app.update();\n  expect(app.getEl().parentNode).to.equal(parentNode);\n  expect(parentNode.querySelectorAll(\".d\").length).to.equal(2);\n  // Ensure it produces the same output as rendering in the browser.\n  expect(Component.renderSync().toString(), parentNode.innerHTML);\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/no-update/components/app/index.marko",
    "content": "class {\n    onMount() {\n        window.app = this;\n    }\n}\n<div>\n    <no-update-body-textarea name=\"server\" key=\"no-update-body-textarea\"/>\n    <no-update-input-value name=\"server\" key=\"no-update-input-value\"/>\n    <no-update-attr name=\"server\" key=\"no-update-attr\"/>\n    <no-update-el name=\"server\" key=\"no-update-el\"/>\n    <no-update-el-nested name=\"server\" key=\"no-update-el-nested\"/>\n    <no-update-body-el name=\"server\" key=\"no-update-body-el\"/>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/no-update/components/no-update-attr/index.marko",
    "content": "class {\n\n}\n\n<div data-foo:no-update=input.name>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/no-update/components/no-update-body-el/index.marko",
    "content": "class {\n    getNoUpdateEl() {\n        return this.el.querySelector('.body');\n    }\n}\n\n<div >\n    <div.body data-foo=input.name no-update-body>${input.name}</div>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/no-update/components/no-update-body-textarea/index.marko",
    "content": "class {\n\n}\n\n<textarea no-update-body>${input.name}</>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/no-update/components/no-update-el/index.marko",
    "content": "class {\n    getNoUpdateEl() {\n        return this.el;\n    }\n}\n\n<div.body data-foo=input.name no-update>${input.name}</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/no-update/components/no-update-el-nested/index.marko",
    "content": "class {\n    getNoUpdateEl() {\n        return this.el.querySelector('.body');\n    }\n}\n\n<div>\n    <div.body data-foo=input.name no-update>${input.name}</div>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/no-update/components/no-update-input-value/index.marko",
    "content": "class {\n\n}\n\n<input value:no-update=input.name>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/no-update/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/no-update/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Components Tests\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        <app/>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/no-update/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should allow attributes to not be updated\", function () {\n  var app = window.app;\n  var noUpdateComponent = app.getComponent(\"no-update-attr\");\n  expect(noUpdateComponent.el.getAttribute(\"data-foo\")).to.equal(\"server\");\n\n  noUpdateComponent.input = {\n    name: \"browser\",\n  };\n\n  noUpdateComponent.update();\n\n  expect(noUpdateComponent.el.getAttribute(\"data-foo\")).to.equal(\"server\");\n});\n\nit(\"should allow input value to not be updated\", function () {\n  var app = window.app;\n  var noUpdateComponent = app.getComponent(\"no-update-input-value\");\n  expect(noUpdateComponent.el.value).to.equal(\"server\");\n\n  noUpdateComponent.input = {\n    name: \"browser\",\n  };\n\n  noUpdateComponent.update();\n\n  expect(noUpdateComponent.el.value).to.equal(\"server\");\n});\n\nit(\"should allow textarea value to not be updated\", function () {\n  var app = window.app;\n  var noUpdateComponent = app.getComponent(\"no-update-body-textarea\");\n  expect(noUpdateComponent.el.value).to.equal(\"server\");\n\n  noUpdateComponent.input = {\n    name: \"browser\",\n  };\n\n  noUpdateComponent.update();\n\n  expect(noUpdateComponent.el.value).to.equal(\"server\");\n});\n\nit(\"should allow a root element to not be updated\", function () {\n  var app = window.app;\n  var noUpdateComponent = app.getComponent(\"no-update-el\");\n\n  expect(noUpdateComponent.getNoUpdateEl().getAttribute(\"data-foo\")).to.equal(\n    \"server\",\n  );\n  expect(noUpdateComponent.getNoUpdateEl().innerHTML).to.equal(\"server\");\n\n  noUpdateComponent.input = {\n    name: \"browser\",\n  };\n\n  noUpdateComponent.update();\n\n  expect(noUpdateComponent.getNoUpdateEl().getAttribute(\"data-foo\")).to.equal(\n    \"server\",\n  );\n  expect(noUpdateComponent.getNoUpdateEl().innerHTML).to.equal(\"server\");\n});\n\nit(\"should allow a nested element to not be updated\", function () {\n  var app = window.app;\n  var noUpdateComponent = app.getComponent(\"no-update-el-nested\");\n\n  expect(noUpdateComponent.getNoUpdateEl().getAttribute(\"data-foo\")).to.equal(\n    \"server\",\n  );\n  expect(noUpdateComponent.getNoUpdateEl().innerHTML).to.equal(\"server\");\n\n  noUpdateComponent.input = {\n    name: \"browser\",\n  };\n\n  noUpdateComponent.update();\n\n  expect(noUpdateComponent.getNoUpdateEl().getAttribute(\"data-foo\")).to.equal(\n    \"server\",\n  );\n  expect(noUpdateComponent.getNoUpdateEl().innerHTML).to.equal(\"server\");\n});\n\nit(\"should allow a body element to not be updated\", function () {\n  var app = window.app;\n  var noUpdateComponent = app.getComponent(\"no-update-body-el\");\n\n  expect(noUpdateComponent.getNoUpdateEl().getAttribute(\"data-foo\")).to.equal(\n    \"server\",\n  );\n  expect(noUpdateComponent.getNoUpdateEl().innerHTML).to.equal(\"server\");\n\n  noUpdateComponent.input = {\n    name: \"browser\",\n  };\n\n  noUpdateComponent.update();\n\n  expect(noUpdateComponent.getNoUpdateEl().getAttribute(\"data-foo\")).to.equal(\n    \"browser\",\n  );\n  expect(noUpdateComponent.getNoUpdateEl().innerHTML).to.equal(\"server\");\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/no-update-component/components/counter/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = {\n            count: 0\n        };\n    }\n\n    onMount() {\n        window.counterComponent = this;\n    }\n\n    handleClick() {\n        this.state.count++;\n    }\n}\n\n<button key=\"button\" onClick(\"handleClick\")>\n    Count: ${state.count}\n</button>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/no-update-component/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Components Tests\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        counter no-update\n\n        init-components immediate\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/no-update-component/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should should have mounted the component\", function () {\n  expect(window.counterComponent).to.not.equal(undefined);\n});\n\nit(\"should be interactive\", function () {\n  var btn = window.counterComponent.getEl(\"button\");\n  expect(btn.textContent).to.equal(\"Count: 0\");\n  btn.click();\n  window.counterComponent.update();\n  expect(btn.textContent).to.equal(\"Count: 1\");\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/no-update-nested-component-key/components/child/index.marko",
    "content": "class {\n  onMount() {\n    window.child = this;\n  }\n}\n\n<div key=\"div\">Child</div>\n<nested-child key=\"nested\" no-update/>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/no-update-nested-component-key/components/container/index.marko",
    "content": "<div class=\"container\">\n    <${input.renderBody}/>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/no-update-nested-component-key/components/nested-child/index.marko",
    "content": "class {\n  onMount() {\n    window.nestedChild = this;\n  }\n}\n\n<div key=\"div\">Nested Child</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/no-update-nested-component-key/components/root/index.marko",
    "content": "class {\n    onMount() {\n        window.root = this;\n    }\n}\n\n<container>\n    <child key=\"child\"/>\n</container>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/no-update-nested-component-key/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Test\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        <root/>\n\n        init-components immediate\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/no-update-nested-component-key/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should render correctly\", function () {\n  var root = window.root;\n  var child = window.child;\n  var nestedChild = window.nestedChild;\n\n  expect(root.getComponent(\"child\")).to.eql(child);\n\n  expect(child.getComponent(\"nested\")).to.eql(nestedChild);\n  expect(child.getEl(\"div\")).has.property(\"textContent\", \"Child\");\n\n  expect(nestedChild.getEl(\"div\")).has.property(\"textContent\", \"Nested Child\");\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/no-update-with-an-event/components/counter/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = {\n            count: 0\n        };\n    }\n\n    onMount() {\n        window.counterComponent = this;\n    }\n\n    handleClick() {\n        this.state.count++;\n    }\n}\n<div key=\"count\">Count: ${state.count}</div>\n<button key=\"button\" onClick(\"handleClick\") no-update>\n    Increment\n</button>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/no-update-with-an-event/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Components Tests\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        counter no-update\n\n        init-components immediate\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/no-update-with-an-event/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should should have mounted the component\", function () {\n  expect(window.counterComponent).to.not.equal(undefined);\n});\n\nit(\"should be interactive\", function () {\n  var countDisplay = window.counterComponent.getEl(\"count\");\n  var btn = window.counterComponent.getEl(\"button\");\n  expect(countDisplay.textContent).to.equal(\"Count: 0\");\n  btn.click();\n  window.counterComponent.update();\n  expect(countDisplay.textContent).to.equal(\"Count: 1\");\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/onInput/components/onInput-assign-null/index.marko",
    "content": "class {\n    onInput(input) {\n        this.input = null;\n    }\n\n    onMount() {\n        var componentsLookup = window.components || (window.components = {});\n        componentsLookup['onInput-assign-null'] = this;\n    }\n}\n\n<div>\n    Hello <span.name>${input ? input.name : '(no input)'}</span>!\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/onInput/components/onInput-assign-null-and-return/component-browser.js",
    "content": "module.exports = {\n  onMount() {\n    var componentsLookup = window.components || (window.components = {});\n    componentsLookup[\"onInput-assign-null-and-return\"] = this;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/onInput/components/onInput-assign-null-and-return/index.marko",
    "content": "class {\n    onInput(input) {\n        this.input = null;\n\n        return {\n            name: input.name.toUpperCase()\n        }\n    }\n}\n\n<div>\n    Hello <span.name>${input ? input.name : '(no input)'}</span>!\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/onInput/components/onInput-assign-object/index.marko",
    "content": "class {\n    onInput(input) {\n        this.input = {\n            name: input.name.toUpperCase()\n        };\n    }\n\n    onMount() {\n        var componentsLookup = window.components || (window.components = {});\n        componentsLookup['onInput-assign-object'] = this;\n    }\n}\n\n<div>\n    Hello <span.name>${input.name}</span>!\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/onInput/components/onInput-assign-object-and-return/index.marko",
    "content": "class {\n    onInput(input) {\n        this.input = {\n            name: input.name.toUpperCase()\n        };\n\n        return {\n            name: input.name.toLowerCase()\n        };\n    }\n\n    onMount() {\n        var componentsLookup = window.components || (window.components = {});\n        componentsLookup['onInput-assign-object-and-return'] = this;\n    }\n}\n\n<div>\n    Hello <span.name>${input.name}</span>!\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/onInput/components/onInput-return/index.marko",
    "content": "class {\n    onInput(input) {\n        return {\n            name: input.name.toUpperCase()\n        }\n    }\n\n    onMount() {\n        var componentsLookup = window.components || (window.components = {});\n        componentsLookup['onInput-return'] = this;\n    }\n}\n\n<div>\n    Hello <span.name>${input.name}</span>!\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/onInput/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/onInput/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Components Tests\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        <onInput-return name=\"Frank\" />\n        <onInput-assign-null name=\"John\" />\n        <onInput-assign-null-and-return name=\"Jane\" />\n        <onInput-assign-object name=\"Frank\" />\n        <onInput-assign-object-and-return name=\"Heather\" />\n\n        init-components immediate\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/onInput/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit.skip(\"should allow return\", function () {\n  var component = window.components[\"onInput-return\"];\n\n  expect(component.input.name).to.equal(\"FRANK\");\n  expect(component.el.querySelector(\".name\").innerHTML).to.equal(\"FRANK\");\n\n  component.input = {\n    name: \"John\",\n  };\n\n  component.update();\n\n  expect(component.input.name).to.equal(\"JOHN\");\n  expect(component.el.querySelector(\".name\").innerHTML).to.equal(\"JOHN\");\n});\n\nit.skip(\"should allow input to be assigned to null\", function () {\n  var component = window.components[\"onInput-assign-null\"];\n\n  expect(component.input).to.equal(null);\n  expect(component.el.querySelector(\".name\").innerHTML).to.equal(\"John\");\n\n  component.input = {\n    name: \"Jane\",\n  };\n\n  component.update();\n\n  expect(component.input).to.equal(null);\n  expect(component.el.querySelector(\".name\").innerHTML).to.equal(\"Jane\");\n\n  component.input = {\n    name: \"Henry\",\n  };\n\n  component.update();\n\n  expect(component.input).to.equal(null);\n  expect(component.el.querySelector(\".name\").innerHTML).to.equal(\"Henry\");\n});\n\nit.skip(\"should allow input to be assigned to null with return\", function () {\n  var component = window.components[\"onInput-assign-null-and-return\"];\n\n  expect(component.input).to.equal(null);\n  expect(component.el.querySelector(\".name\").innerHTML).to.equal(\"JANE\");\n\n  component.input = {\n    name: \"Frank\",\n  };\n\n  component.update();\n\n  expect(component.input).to.equal(null);\n  expect(component.el.querySelector(\".name\").innerHTML).to.equal(\"FRANK\");\n\n  component.input = {\n    name: \"Henry\",\n  };\n\n  component.update();\n\n  expect(component.input).to.equal(null);\n  expect(component.el.querySelector(\".name\").innerHTML).to.equal(\"HENRY\");\n});\n\nit.skip(\"should allow input to be assigned to a new object\", function () {\n  var component = window.components[\"onInput-assign-object\"];\n\n  expect(component.input.name).to.equal(\"FRANK\");\n  expect(component.el.querySelector(\".name\").innerHTML).to.equal(\"Frank\");\n\n  component.input = {\n    name: \"Jane\",\n  };\n\n  component.update();\n\n  expect(component.input.name).to.equal(\"JANE\");\n  expect(component.el.querySelector(\".name\").innerHTML).to.equal(\"Jane\");\n\n  component.input = {\n    name: \"Henry\",\n  };\n\n  component.update();\n\n  expect(component.input.name).to.equal(\"HENRY\");\n  expect(component.el.querySelector(\".name\").innerHTML).to.equal(\"Henry\");\n});\n\nit.skip(\"should allow input to be assigned to a new object with return\", function () {\n  var component = window.components[\"onInput-assign-object-and-return\"];\n\n  expect(component.input.name).to.equal(\"HEATHER\");\n  expect(component.el.querySelector(\".name\").innerHTML).to.equal(\"heather\");\n\n  component.input = {\n    name: \"Jane\",\n  };\n\n  component.update();\n\n  expect(component.input.name).to.equal(\"JANE\");\n  expect(component.el.querySelector(\".name\").innerHTML).to.equal(\"jane\");\n\n  component.input = {\n    name: \"Henry\",\n  };\n\n  component.update();\n\n  expect(component.input.name).to.equal(\"HENRY\");\n  expect(component.el.querySelector(\".name\").innerHTML).to.equal(\"henry\");\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/preserve-looped-attribute-tag/components/child/index.marko",
    "content": "class {}\n\n<ul>\n    <for|item| of=input.items>\n        <li>\n            <if(typeof item === \"string\")>${item}</if>\n            <else>\n                <${item}/>\n            </else>\n        </li>\n    </for>\n</ul>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/preserve-looped-attribute-tag/components/child/marko-tag.json",
    "content": "{\n  \"@items <item>[]\": {\n    \"@*\": {\n      \"type\": \"expression\",\n      \"target-property\": null\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/preserve-looped-attribute-tag/components/root/index.marko",
    "content": "class {}\n\n<child>\n    <for|item| of=input.items>\n        <@item>\n            <if(typeof item === \"string\")>${item}</if>\n            <else>\n                <${item}/>\n            </else>\n        </@item>\n    </for>\n</child>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/preserve-looped-attribute-tag/components/root/marko-tag.json",
    "content": "{\n  \"@items <item>[]\": {\n    \"@*\": {\n      \"type\": \"expression\",\n      \"target-property\": null\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/preserve-looped-attribute-tag/template.marko",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n    <head>\n        <meta charset=\"UTF-8\"/>\n        <title>Marko Test</title>\n    </head>\n    <body>\n\n        <div id=\"test\"/>\n        <div id=\"mocha\"/>\n        <div id=\"testsTarget\"/>\n\n        <div id=\"root\">\n            <root>\n                <@item>A</@item>\n                <@item>B</@item>\n                <@item>C</@item>\n            </root>\n        </div>\n\n        <init-components immediate/>\n    </body>\n</html>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/preserve-looped-attribute-tag/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should update correctly\", function () {\n  var $el = document.getElementById(\"root\");\n  expect($el.innerHTML).to.eql(\"<ul><li>A</li><li>B</li><li>C</li></ul>\");\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/preserve-no-update-for-loop/components/root/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = { items: [] };\n    }\n\n    onMount() {\n        window.component = this;\n    }\n\n    append(item) {\n        this.state.items.push(item);\n        this.setStateDirty(\"items\");\n    }\n}\n\n<ul key=\"root\">\n    <for|item| of=state.items>\n        <li id=item no-update>\n            <span>${item}</span>\n        </li>\n    </for>\n</ul>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/preserve-no-update-for-loop/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Test\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        <root/>\n\n        init-components immediate\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/preserve-no-update-for-loop/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should update correctly\", function () {\n  var component = window.component;\n  var $el = component.getEl(\"root\");\n\n  expect($el.innerHTML).to.eql(\"\");\n\n  component.append(\"a\");\n  component.update();\n  expect($el.innerHTML).to.eql('<li id=\"a\"><span>a</span></li>');\n\n  component.append(\"b\");\n  component.update();\n  expect($el.innerHTML).to.eql(\n    '<li id=\"a\"><span>a</span></li><li id=\"b\"><span>b</span></li>',\n  );\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/preserve-server-rendered-content-on-mount/components/root/index.marko",
    "content": "class {}\n\n<div id=\"root\" no-update>\n    Is Server: ${typeof window === \"undefined\"}\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/preserve-server-rendered-content-on-mount/template.marko",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n    <head>\n        <meta charset=\"UTF-8\"/>\n        <title>Marko Test</title>\n    </head>\n    <body>\n\n        <div id=\"test\"/>\n        <div id=\"mocha\"/>\n        <div id=\"testsTarget\"/>\n\n        <root/>\n\n        <init-components immediate/>\n    </body>\n</html>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/preserve-server-rendered-content-on-mount/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should update correctly\", function () {\n  var $el = document.getElementById(\"root\");\n  expect($el).has.property(\"textContent\", \"Is Server: true\");\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/preserve-transcluded-content-on-state-change/components/toggle-button/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = {\n            active: false\n        };\n    }\n    onMount() {\n        window.component = this;\n    }\n    toggle(evt) {\n        this.state.active = !this.state.active;\n        this.emit(\"change\");\n    }\n    mousedown(evt) {\n        evt.preventDefault();\n    }\n}\n\n<div.toggle\n    key=\"button\"\n    class={\n        \"toggle--active\": state.active\n    }\n    onClick(\"toggle\")\n    onMouseDown(\"mousedown\")>\n    <if(typeof input.renderBody === \"string\")>${input.renderBody}</if>\n    <else>\n        <${input.renderBody}/>\n    </else>\n    <if(state.active)>test</if>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/preserve-transcluded-content-on-state-change/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Test\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        toggle-button\n            -- button label\n\n        init-components immediate\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/preserve-transcluded-content-on-state-change/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should update correctly\", function () {\n  var component = window.component;\n  var $button = component.getEl(\"button\");\n  expect($button.textContent).to.eql(\"button label\");\n\n  $button.click();\n  component.update();\n\n  expect($button.textContent).to.eql(\"button labeltest\");\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/preserve-transcluded-key-on-state-change/components/child/index.marko",
    "content": "class {\n  method () {}\n}\n\n<div>Child</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/preserve-transcluded-key-on-state-change/components/container/index.marko",
    "content": "<div class=\"container\">\n    <${input.renderBody}/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/preserve-transcluded-key-on-state-change/components/root/index.marko",
    "content": "class {\n    onMount() {\n        window.component = this;\n    }\n}\n\n<container>\n    <@renderBody> \n        <child key=\"child\"/>\n    </@renderBody>\n</container>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/preserve-transcluded-key-on-state-change/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Test\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        <root/>\n\n        init-components immediate\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/preserve-transcluded-key-on-state-change/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit.skip(\"should update correctly\", function () {\n  var component = window.component;\n  var originalChild = component.getComponent(\"child\");\n\n  // Ensure we can find the child reference and that it has the exposed method.\n  expect(originalChild).to.be.have.property(\"method\");\n\n  // Trigger a force re-render and ensure reference still exists.\n  component.forceUpdate();\n  component.update();\n  expect(component.getComponent(\"child\")).to.eql(originalChild);\n}).details = \"issue #947\";\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/remove-last-multi-root-component/components/child/index.marko",
    "content": "<div>A</div>\n<div>B</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/remove-last-multi-root-component/components/root/index.marko",
    "content": "import Child from \"../child\"\n\nclass {\n    onCreate() {\n        this.state = { display: true };\n    }\n\n    onMount() {\n        window.testComponent = this;\n    }\n\n    toggle() {\n        this.state.display = !this.state.display;\n    }\n}\n\n<div key=\"root\">\n    <if(state.display)>\n        <${Child}/>\n    </if>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/remove-last-multi-root-component/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Components Tests\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        <root/>\n\n        init-components immediate\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/remove-last-multi-root-component/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should remove the child nodes\", function () {\n  var component = window.testComponent;\n  var el = component.getEl(\"root\");\n\n  expect(el.children.length).to.equal(2);\n  component.toggle();\n  component.forceUpdate();\n  component.update();\n  expect(el.children.length).to.equal(0);\n  component.toggle();\n  component.forceUpdate();\n  component.update();\n  expect(el.children.length).to.equal(2);\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/render-and-mount-order/components/app-hello/components/inner/index.marko",
    "content": "class {\n    onMount() {\n        window.mounts = window.mounts || [];\n        window.mounts.push('inner');\n    }\n    onRender() {\n        if (typeof window !== \"undefined\") {\n            window.renders = window.renders || [];\n            window.renders.push('inner');\n        }\n    }\n}\n\n<h2>Inner</h2>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/render-and-mount-order/components/app-hello/index.marko",
    "content": "class {\n    onMount() {\n        window.mounts = window.mounts || [];\n        window.mounts.push('hello');\n    }\n    onRender() {\n        if (typeof window !== \"undefined\") {\n            window.renders = window.renders || [];\n            window.renders.push('hello');\n        }\n    }\n}\n\n<h1>Hello ${input.name}</h1>\n<inner/>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/render-and-mount-order/components/app-wrapper/index.marko",
    "content": "class {\n    onMount() {\n        window.mounts = window.mounts || [];\n        window.mounts.push('wrapper');\n    }\n    onRender() {\n        if (typeof window !== \"undefined\") {\n            window.renders = window.renders || [];\n            window.renders.push('wrapper');\n        }\n    }\n}\n<div>\n    <${input.renderBody}/>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/render-and-mount-order/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/render-and-mount-order/template.marko",
    "content": "$ var userPromise = new Promise(function(resolve, reject) {\n    setTimeout(function() {\n        resolve({});\n    }, 10);\n});\n\n<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Components Tests\n    body\n        div id=\"testsTarget\"\n\n        app-wrapper\n            app-hello name=\"Test\"\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/render-and-mount-order/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should render top down, mount bottom up\", function () {\n  expect(window.renders).to.eql([\"wrapper\", \"hello\", \"inner\"]);\n  expect(window.mounts).to.eql([\"inner\", \"hello\", \"wrapper\"]);\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/repeated-list-items-unkeyed/components/list-items/index.marko",
    "content": "class {\n    onMount() {\n        window.listItemsComponent = this;\n    }\n}\n\n<ul key=\"root\">\n    <for|option| of=input.options>\n        <li>\n            <a>${option}</a>\n        </li>\n    </for>\n</ul>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/repeated-list-items-unkeyed/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Test\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        <list-items options=[\n                'apples',\n                'bananas',\n                'cherries',\n                'dates'\n            ]/>\n\n        init-components immediate\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/repeated-list-items-unkeyed/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should update correctly\", function () {\n  var listItemsComponent = window.listItemsComponent;\n  expect(\n    listItemsComponent.getEl(\"root\").querySelectorAll(\"li\").length,\n  ).to.equal(4);\n  expect(\n    listItemsComponent.getEl(\"root\").querySelectorAll(\"a\").length,\n  ).to.equal(4);\n  expect(\n    listItemsComponent.getEl(\"root\").querySelectorAll(\"a\")[0].innerHTML,\n  ).to.equal(\"apples\");\n  expect(\n    listItemsComponent.getEl(\"root\").querySelectorAll(\"a\")[1].innerHTML,\n  ).to.equal(\"bananas\");\n  expect(\n    listItemsComponent.getEl(\"root\").querySelectorAll(\"a\")[2].innerHTML,\n  ).to.equal(\"cherries\");\n  expect(\n    listItemsComponent.getEl(\"root\").querySelectorAll(\"a\")[3].innerHTML,\n  ).to.equal(\"dates\");\n\n  listItemsComponent.input = {\n    options: [\"apples\", \"bananas\"],\n  };\n  listItemsComponent.update();\n\n  expect(\n    listItemsComponent.getEl(\"root\").querySelectorAll(\"li\").length,\n  ).to.equal(2);\n  expect(\n    listItemsComponent.getEl(\"root\").querySelectorAll(\"a\").length,\n  ).to.equal(2);\n  expect(\n    listItemsComponent.getEl(\"root\").querySelectorAll(\"a\")[0].innerHTML,\n  ).to.equal(\"apples\");\n  expect(\n    listItemsComponent.getEl(\"root\").querySelectorAll(\"a\")[1].innerHTML,\n  ).to.equal(\"bananas\");\n\n  listItemsComponent.input = {\n    options: [],\n  };\n  listItemsComponent.update();\n\n  expect(\n    listItemsComponent.getEl(\"root\").querySelectorAll(\"li\").length,\n  ).to.equal(0);\n  expect(\n    listItemsComponent.getEl(\"root\").querySelectorAll(\"a\").length,\n  ).to.equal(0);\n\n  listItemsComponent.input = {\n    options: [\"apples\", \"bananas\"],\n  };\n  listItemsComponent.update();\n\n  expect(\n    listItemsComponent.getEl(\"root\").querySelectorAll(\"li\").length,\n  ).to.equal(2);\n  expect(\n    listItemsComponent.getEl(\"root\").querySelectorAll(\"a\").length,\n  ).to.equal(2);\n  expect(\n    listItemsComponent.getEl(\"root\").querySelectorAll(\"a\")[0].innerHTML,\n  ).to.equal(\"apples\");\n  expect(\n    listItemsComponent.getEl(\"root\").querySelectorAll(\"a\")[1].innerHTML,\n  ).to.equal(\"bananas\");\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/runtime-id/components/app-foo/component.js",
    "content": "module.exports = {\n  onInput: function () {\n    this.state = {\n      counter: 0,\n    };\n  },\n\n  increment: function () {\n    this.state.counter++;\n  },\n\n  onMount: function () {\n    window.fooComponent = this;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/runtime-id/components/app-foo/index.marko",
    "content": "div style={ color:data.color } -- The current count is ${state.counter}"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/runtime-id/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/runtime-id/template.marko",
    "content": "$ out.global.runtimeId = \"test\";\n\n<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Components Tests\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        app-foo color=\"#800\"\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/runtime-id/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should serialize component input down to the browser\", function () {\n  expect(window.$test_C).to.not.equal(undefined);\n  expect(window.fooComponent).equal(undefined);\n  window.$initComponents(\"test\");\n\n  expect(window.fooComponent.input.color).to.equal(\"#800\");\n  expect(window.fooComponent.el.textContent).to.equal(\"The current count is 0\");\n  expect(window.fooComponent.el.getAttribute(\"style\")).to.equal(\"color:#800\");\n  window.fooComponent.increment();\n  window.fooComponent.update();\n  expect(window.fooComponent.el.textContent).to.equal(\"The current count is 1\");\n  expect(window.fooComponent.el.getAttribute(\"style\")).to.equal(\"color:#800\");\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/server-browser-unique-ids/components/app-foo/component.js",
    "content": "module.exports = {\n  onMount: function () {\n    window.fooComponent = this;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/server-browser-unique-ids/components/app-foo/index.marko",
    "content": "div"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/server-browser-unique-ids/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/server-browser-unique-ids/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Components Tests\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        app-foo\n\n        init-components immediate\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/server-browser-unique-ids/tests.js",
    "content": "var expect = require(\"chai\").expect;\nvar appFooComponent = require(\"./components/app-foo\").default;\n\nit(\"should generate a unique ID that is different for a UI component rendered on the server and browser\", function () {\n  var serverFooComponent = window.fooComponent;\n  var browserFooComponent = appFooComponent\n    .renderSync({})\n    .appendTo(document.body)\n    .getComponent();\n  expect(browserFooComponent.id).to.be.a(\"string\");\n  expect(serverFooComponent.id).to.be.a(\"string\");\n  expect(serverFooComponent.id).to.not.equal(browserFooComponent.id);\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/server-render-dom-event-handlers/components/app/index.marko",
    "content": "import { expect } from 'chai';\n\nstatic function triggerMouseEvent(el, type) {\n    var ev = document.createEvent(\"MouseEvent\");\n    ev.initMouseEvent(\n        type,\n        true /* bubble */, true /* cancelable */,\n        window, null,\n        0, 0, 0, 0, /* coordinates */\n        false, false, false, false, /* modifier keys */\n        0 /*left*/, null\n    );\n    el.dispatchEvent(ev);\n}\n\nstatic function triggerClick(el) {\n    triggerMouseEvent(el, 'click');\n}\n\nclass {\n    onCreate() {\n        this.buttonClicked = false;\n    }\n\n    onMount() {\n        window.app = this;\n    }\n\n    handleCounterChange(value) {\n        this.counterValue = value;\n    }\n\n    handleButtonClick() {\n        this.buttonClicked = true;\n    }\n\n    test() {\n        // Test a DOM event\n        expect(this.buttonClicked).to.equal(false);\n        triggerClick(this.el.querySelector('.click-me'));\n        expect(this.buttonClicked).to.equal(true);\n\n        // Test a custom event (and a DOM event)\n        expect(this.counterValue).to.equal(undefined);\n        triggerClick(this.el.querySelector('.counter button'));\n        expect(this.counterValue).to.equal(1);\n    }\n}\n\nstatic function formatName(person) {\n    return person.firstName + ' ' + person.lastName;\n}\n\n<div>\n    <counter on-change('handleCounterChange')/>\n    <button.click-me type=\"button\" on-click('handleButtonClick')>\n        Click me!\n    </button>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/server-render-dom-event-handlers/components/counter/index.marko",
    "content": "class {\n    onCreate() {\n        this.state = {\n            value: 0\n        }\n    }\n\n    increment() {\n        this.state.value++;\n        this.emit('change', this.state.value);\n    }\n}\n\n<div.counter>\n    <span.value>${state.value}</span>\n    <button type=\"button\" on-click('increment')>\n        Increment\n    </button>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/server-render-dom-event-handlers/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/server-render-dom-event-handlers/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Components Tests\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        <app/>\n\n        init-components immediate\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/server-render-dom-event-handlers/tests.js",
    "content": "it(\"should initialize components correctly across async boundaries\", function () {\n  window.app.test();\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/server-render-function-references/components/app/index.marko",
    "content": "import { expect } from 'chai';\n\nclass {\n    onCreate() {\n        this.state = {\n            person: {firstName: 'John', lastName: 'Doe'}\n        }\n    }\n\n    onMount() {\n        window.app = this;\n    }\n\n    test() {\n        var hello = this.getComponent('hello');\n        expect(hello.el.innerHTML).to.equal('John Doe');\n\n        // Rerender just the nested component\n        hello.forceUpdate();\n        hello.update();\n        expect(hello.el.innerHTML).to.equal('John Doe');\n\n        this.state.person = {firstName: 'Jane', lastName: 'Doe'};\n        this.update();\n\n        expect(hello.el.innerHTML).to.equal('Jane Doe');\n    }\n}\n\nstatic function formatName(person) {\n    return person.firstName + ' ' + person.lastName;\n}\n\n<div>\n    <app-hello key=\"hello\" person=state.person format-name=formatName/>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/server-render-function-references/components/app-hello/index.marko",
    "content": "class {\n\n}\n\n<div.hello>${input.formatName(input.person)}</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/server-render-function-references/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/server-render-function-references/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Components Tests\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        <app/>\n\n        init-components immediate\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/server-render-function-references/tests.js",
    "content": "it(\"should initialize components correctly across async boundaries\", function () {\n  window.app.test();\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/split-async-keys/components/app-child/index.marko",
    "content": "class {}\n<div/>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/split-async-keys/components/app-hello/component-browser.js",
    "content": "module.exports = {\n  onMount() {\n    window.component = this;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/split-async-keys/components/app-hello/index.marko",
    "content": "<div key=\"div0\"/>\n<app-child key=\"child0\"/>\n\n<await(new Promise(resolve => setTimeout(resolve, 100))) client-reorder>\n    <@then>\n        <div key=\"div1\"/>\n        <app-child key=\"child1\"/>\n\n        <await(new Promise(resolve => setTimeout(resolve, 200)))>\n            <@then>\n                <div key=\"div2\"/>\n                <app-child key=\"child2\"/>\n            </@then>\n        </await>\n\n        <div key=\"div3\"/>\n        <app-child key=\"child3\"/>\n    </@then>\n</await>\n\n<div key=\"div4\"/>\n<app-child key=\"child4\"/>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/split-async-keys/template.marko",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n    <head>\n        <meta charset=\"UTF-8\"/>\n        <title> Marko Test</title>\n    </head>\n    <body>\n        <div id=\"test\"/>\n        <div id=\"mocha\"/>\n        <div id=\"testsTarget\" />\n\n        <app-hello />\n    </body>\n</html>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/split-async-keys/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should initialize components correctly across async boundaries\", function (done) {\n  for (let i = 0; i <= 4; i++) {\n    expect(window.component.getEl(`div${i}`)).to.not.equal(undefined);\n    expect(window.component.getComponent(`child${i}`)).to.not.equal(undefined);\n  }\n  done();\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/split-component-dynamic-tag/components/app-button/index.marko",
    "content": "class {}\n\n<button on-click(\"emit\", \"click\")/>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/split-component-dynamic-tag/components/app-root/component-browser.js",
    "content": "module.exports = {\n  onMount() {\n    window.component = this;\n    this.rootButtonClicks = 0;\n    this.appButtonClicks = 0;\n  },\n\n  handleElClick() {\n    this.rootButtonClicks++;\n  },\n\n  handleComponentClick() {\n    this.appButtonClicks++;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/split-component-dynamic-tag/components/app-root/index.marko",
    "content": "import childTemplate from \"../app-button\";\n\n<div>\n    <${true ? \"button\" : undefined} key=\"element\" on-click(\"handleElClick\")/>\n    <${true ? childTemplate: undefined} key=\"component\" on-click(\"handleComponentClick\")/>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/split-component-dynamic-tag/template.marko",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n    <head>\n        <meta charset=\"UTF-8\"/>\n        <title> Marko Test</title>\n    </head>\n    <body>\n        <div id=\"test\"/>\n        <div id=\"mocha\"/>\n        <div id=\"testsTarget\" />\n\n        <app-root />\n    </body>\n</html>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/split-component-dynamic-tag/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should initialize components correctly across async boundaries\", function (done) {\n  var rootButtonEl = window.component.getEl(\"element\");\n  expect(rootButtonEl).is.instanceOf(HTMLButtonElement);\n  expect(window.component.rootButtonClicks).equals(0);\n  rootButtonEl.click();\n  expect(window.component.rootButtonClicks).equals(1);\n\n  var appButtonComponent = window.component.getComponent(\"component\");\n  expect(appButtonComponent).has.property(\"el\").instanceOf(HTMLButtonElement);\n  expect(window.component.appButtonClicks).equals(0);\n  appButtonComponent.el.click();\n  expect(window.component.appButtonClicks).equals(1);\n\n  done();\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/split-component-renderer/components/app-button-split/component-browser.js",
    "content": "module.exports = {\n  onMount: function () {\n    window.appButtonSplit = this;\n  },\n  setColor: function (color) {\n    this.el.style.backgroundColor = color;\n  },\n  setLabel: function (label) {\n    this.el.innerHTML = label;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/split-component-renderer/components/app-button-split/index.marko",
    "content": "<button onClick(\"handleClick\")>\n    <${input.renderBody}/>\n</button>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/split-component-renderer/components/app-button-split/marko-tag.json",
    "content": "{\n  \"attributes\": {\n    \"label\": \"string\",\n    \"href\": \"string\",\n    \"variant\": {\n      \"type\": \"string\",\n      \"description\": \"primary | secondary\"\n    },\n    \"size\": {\n      \"type\": \"string\",\n      \"description\": \"small | normal | large\"\n    },\n    \"class\": {\n      \"type\": \"string\",\n      \"description\": \"Additional CSS class names\"\n    },\n    \"@*\": {\n      \"type\": \"string\",\n      \"target-property\": null\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/split-component-renderer/components/app-button-split-export-class/component-browser.js",
    "content": "function Component() {}\n\nComponent.prototype = {\n  onMount: function () {\n    window.appButtonSplitExportClass = this;\n  },\n  setColor: function (color) {\n    this.el.style.backgroundColor = color;\n  },\n  setLabel: function (label) {\n    this.el.innerHTML = label;\n  },\n};\n\nmodule.exports = Component;\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/split-component-renderer/components/app-button-split-export-class/index.marko",
    "content": "<button onClick(\"handleClick\")>\n    <${input.renderBody}/>\n</button>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/split-component-renderer/components/app-button-split-export-class/marko-tag.json",
    "content": "{\n  \"attributes\": {\n    \"label\": \"string\",\n    \"href\": \"string\",\n    \"variant\": {\n      \"type\": \"string\",\n      \"description\": \"primary | secondary\"\n    },\n    \"size\": {\n      \"type\": \"string\",\n      \"description\": \"small | normal | large\"\n    },\n    \"class\": {\n      \"type\": \"string\",\n      \"description\": \"Additional CSS class names\"\n    },\n    \"@*\": {\n      \"type\": \"string\",\n      \"target-property\": null\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/split-component-renderer/components/component-only/component-browser.js",
    "content": "module.exports = {\n  onMount: function () {\n    window.componentOnly = this;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/split-component-renderer/components/component-only/index.marko",
    "content": "<div.component-only>component-only</div>"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/split-component-renderer/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/split-component-renderer/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Components Tests\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        <app-button-split>Test Button</app-button-split>\n        <app-button-split-export-class>Test Button</app-button-split-export-class>\n        <component-only/>\n\n        init-components immediate\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/split-component-renderer/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should allow component to be split from renderer\", function () {\n  var component = window.appButtonSplit;\n  expect(component.el.innerHTML).to.equal(\"Test Button\");\n  component.setLabel(\"New Label\");\n  expect(component.el.innerHTML).to.equal(\"New Label\");\n});\n\nit(\"should allow component to be split from renderer and for browser file to export class\", function () {\n  var component = window.appButtonSplitExportClass;\n  expect(component.el.innerHTML).to.equal(\"Test Button\");\n  component.setLabel(\"New Label\");\n  expect(component.el.innerHTML).to.equal(\"New Label\");\n});\n\nit(\"should allow UI component to only have a component and an index.marko\", function () {\n  expect(window.componentOnly).to.be.an(\"object\");\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/split-emit-multi-args/components/split-component/component-browser.js",
    "content": "module.exports = {\n  onMount: function () {\n    window.splitComponent = this;\n    this.clicked = false;\n  },\n  handleClick: function (value) {\n    this.clicked = value;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/split-emit-multi-args/components/split-component/index.marko",
    "content": "<button on-click('handleClick', true)/>\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/split-emit-multi-args/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/split-emit-multi-args/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Components Tests\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        split-component\n\n        init-components immediate\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/split-emit-multi-args/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nfunction triggerMouseEvent(el, type) {\n  var ev = document.createEvent(\"MouseEvent\");\n  ev.initMouseEvent(\n    type,\n    true /* bubble */,\n    true /* cancelable */,\n    window,\n    null,\n    0,\n    0,\n    0,\n    0 /* coordinates */,\n    false,\n    false,\n    false,\n    false /* modifier keys */,\n    0 /*left*/,\n    null,\n  );\n  el.dispatchEvent(ev);\n}\n\nfunction triggerClick(el) {\n  triggerMouseEvent(el, \"click\");\n}\n\nit(\"should allow getEl() with a split component\", function () {\n  var app = window.splitComponent;\n  triggerClick(app.el);\n  expect(app.clicked).to.equal(true);\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/xss/components/app-foo/component.js",
    "content": "module.exports = {\n  onInput: function () {\n    this.state = {\n      evil: '</script><script>alert(\"hello\")</script>',\n    };\n\n    this.evil = '</script><script>alert(\"hello\")</script>';\n  },\n\n  onMount: function () {\n    this.componentConfig = {\n      evil: this.evil,\n    };\n    window.fooComponent = this;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/xss/components/app-foo/index.marko",
    "content": "div"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/xss/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/xss/template.marko",
    "content": "<!DOCTYPE html>\nhtml lang=\"en\"\n    head\n        meta charset=\"UTF-8\"\n        title -- Marko Components Tests\n    body\n\n        div id=\"test\"\n        div id=\"mocha\"\n        div id=\"testsTarget\"\n\n        app-foo\n\n        init-components\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/fixtures/xss/tests.js",
    "content": "var expect = require(\"chai\").expect;\n\nit(\"should handle ending </script> tag\", function () {\n  expect(document.readyState).to.equal(\"complete\");\n  expect(window.fooComponent.state.evil).to.equal(\n    '</script><script>alert(\"hello\")</script>',\n  );\n  expect(window.fooComponent.componentConfig.evil).to.equal(\n    '</script><script>alert(\"hello\")</script>',\n  );\n});\n"
  },
  {
    "path": "packages/runtime-class/test/components-pages/index.test.js",
    "content": "\"use strict\";\n\nrequire(\"../__util__/test-init\");\n\nvar path = require(\"path\");\nvar autotest = require(\"mocha-autotest\").default;\nvar asyncTestSuite = require(\"../__util__/async-test-suite\");\nvar createBrowserWithMarko = require(\"../__util__/create-marko-jsdom-module\");\n\nautotest(\"fixtures\", run);\n\n/**\n * Builds a page with marko & lasso and then pipes it through jsdom, loading co-located tests.\n */\nfunction run(fixture) {\n  let resolve = fixture.resolve;\n  asyncTestSuite(path.basename(fixture.dir), function () {\n    var testFile = resolve(\"tests.js\");\n    var templateFile = resolve(\"template.marko\");\n    var template = require(templateFile);\n    template = template.default || template;\n    var pendingHtml = new Promise(function (resolve, reject) {\n      var html = \"\";\n      template\n        .render(\n          {},\n          {\n            write(data) {\n              html += data;\n            },\n            flush() {},\n            end() {\n              resolve(html);\n            },\n          },\n        )\n        .once(\"error\", reject);\n    });\n\n    return pendingHtml.then(function (html) {\n      var browser = createBrowserWithMarko(__dirname, html, {\n        beforeParse(window, browser) {\n          browser.require(\"../../components\");\n          browser.window.$initComponents();\n          browser.require(templateFile);\n        },\n      });\n      // TODO: we should enable this but it causes a test (diff-body) to fail\n      // due to DOMContentLoaded firing twice, which shouldn't be possible.\n      // Since this is almost certainly an issue with our JSDOM setup\n      // and not Marko, I'm disabling it for now.\n      //\n      // afterEach(function() {\n      //   if (browser.error) {\n      //     const err = browser.error;\n      //     browser.error = undefined;\n      //     throw err;\n      //   }\n      // });\n      after(function () {\n        browser.window.close();\n      });\n\n      browser.window.document.close();\n      browser.require(testFile);\n    });\n  });\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-server/fixtures/cspNonce/components/app-simple/index.marko",
    "content": "class {}\n\n<div>\n\tHello ${input.name}! You have ${input.messageCount} new messages.\n\t<div key=\"foo\">foo</div>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/components-server/fixtures/cspNonce/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/components-server/fixtures/cspNonce/template.marko",
    "content": "<div>\n\t<app-simple name=\"Frank\" count=20/>\n\t<app-simple name=\"John\" count=30/>\n</div>\n\n<init-components immediate=true/>"
  },
  {
    "path": "packages/runtime-class/test/components-server/fixtures/cspNonce/test.js",
    "content": "module.exports = function (helpers, done) {\n  var template = require(\"./template.marko\").default;\n\n  template.render({ $global: { cspNonce: \"abc123\" } }, function (err, html) {\n    if (!/<script.*nonce=\"?abc123\"?.*>/.test(html)) {\n      throw new Error(\"script tag does not contain a nonce\");\n    }\n    done();\n  });\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-server/fixtures/getRenderedWidgets/components/app-simple/index.marko",
    "content": "class {\n\n}\n\n<div>\n\tHello ${data.name}! You have ${data.messageCount} new messages.\n\t<div key=\"foo\">foo</div>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-server/fixtures/getRenderedWidgets/index.marko",
    "content": "class {\n\n}\n\n<div>\n\t<app-simple name=\"Frank\" count=20/>\n\t<app-simple name=\"John\" count=30/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/components-server/fixtures/getRenderedWidgets/test.js",
    "content": "var expect = require(\"chai\").expect;\nvar markoComponents = require(\"marko/components\");\n\nmodule.exports = function (helpers, done) {\n  var template = require(\"./index.marko\").default;\n\n  template.renderToString({}, function (err, html, out) {\n    if (err) {\n      return done(err);\n    }\n\n    var renderedComponents = markoComponents.getRenderedComponents(out);\n    expect(renderedComponents).to.be.an(\"object\");\n\n    // console.log('HTML', html);\n\n    expect(Object.keys(renderedComponents).length).to.equal(3);\n    var componentDefs = renderedComponents.w;\n    expect(componentDefs.length).to.equal(1);\n\n    expect(componentDefs[0][0]).to.equal(\"s0\");\n\n    done();\n  });\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-server/fixtures/scriptConcat/template.marko",
    "content": "import { setImmediate } from \"timers\";\nstatic function tick() {\n\treturn new Promise(resolve => setImmediate(() => setImmediate(resolve)));\n}\n\n<!-- Should merge scripts in the same writer.-->\n$ out.script(\"console.log('hello')\");\n$ out.script(\"console.log('world')\");\n\n<!-- Should merge scripts in different writers.-->\n<await(tick())>\n\t<@then>\n\t\t$ out.script(\"console.log('again')\");\n\t</>\n</await>\n\n$ out.script(\"console.log('and again')\");\n"
  },
  {
    "path": "packages/runtime-class/test/components-server/fixtures/scriptConcat/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers, done) {\n  var template = require(\"./template.marko\").default;\n\n  template.render({}, function (err, html) {\n    expect(html.toString()).to.include(\n      \"console.log('hello');console.log('world');console.log('again');console.log('and again')\",\n    );\n    done();\n  });\n};\n"
  },
  {
    "path": "packages/runtime-class/test/components-server/index.test.js",
    "content": "\"use strict\";\n\nrequire(\"../__util__/test-init\");\n\nvar autotest = require(\"mocha-autotest\").default;\n\nautotest(\"fixtures\", run);\n\nfunction run(fixture) {\n  let test = fixture.test;\n  let resolve = fixture.resolve;\n  let snapshot = fixture.snapshot;\n  test((done) => {\n    var testFunc = require(resolve(\"test.js\"));\n    if (testFunc.length <= 1) {\n      testFunc(snapshot);\n      done();\n    } else {\n      testFunc(snapshot, done);\n    }\n  });\n}\n"
  },
  {
    "path": "packages/runtime-class/test/hot-reload/fixtures/load/.gitignore",
    "content": "template.temp.marko"
  },
  {
    "path": "packages/runtime-class/test/hot-reload/fixtures/load/initial-expected.html",
    "content": "Hello John!"
  },
  {
    "path": "packages/runtime-class/test/hot-reload/fixtures/load/modified-expected.html",
    "content": "Hello John!"
  },
  {
    "path": "packages/runtime-class/test/hot-reload/fixtures/load/reloaded-expected.html",
    "content": "Hello John!!"
  },
  {
    "path": "packages/runtime-class/test/hot-reload/fixtures/load/template.marko",
    "content": "-- Hello ${data.name}!"
  },
  {
    "path": "packages/runtime-class/test/hot-reload/fixtures/load/test.js",
    "content": "var fs = require(\"fs\");\nvar nodePath = require(\"path\");\n\nexports.check = function (marko, hotReload, expect, snapshot) {\n  var srcTemplatePath = nodePath.join(__dirname, \"template.marko\");\n  var templateSrc = fs.readFileSync(srcTemplatePath, { encoding: \"utf8\" });\n\n  var tempTemplatePath = nodePath.join(__dirname, \"template.temp.marko\");\n  fs.writeFileSync(tempTemplatePath, templateSrc, { encoding: \"utf8\" });\n\n  var template = marko.load(tempTemplatePath);\n\n  snapshot(template.renderSync({ name: \"John\" }).toString(), {\n    name: \"initial\",\n    ext: \".html\",\n  });\n\n  fs.writeFileSync(tempTemplatePath, templateSrc + \"!\", { encoding: \"utf8\" });\n\n  snapshot(template.renderSync({ name: \"John\" }).toString(), {\n    name: \"modified\",\n    ext: \".html\",\n  });\n\n  hotReload.handleFileModified(tempTemplatePath);\n\n  snapshot(template.renderSync({ name: \"John\" }).toString(), {\n    name: \"reloaded\",\n    ext: \".html\",\n  });\n};\n"
  },
  {
    "path": "packages/runtime-class/test/hot-reload/fixtures/require/.gitignore",
    "content": "template.temp.marko"
  },
  {
    "path": "packages/runtime-class/test/hot-reload/fixtures/require/initial-expected.html",
    "content": "Hello John!"
  },
  {
    "path": "packages/runtime-class/test/hot-reload/fixtures/require/modified-expected.html",
    "content": "Hello John!"
  },
  {
    "path": "packages/runtime-class/test/hot-reload/fixtures/require/reloaded-expected.html",
    "content": "Hello John!!"
  },
  {
    "path": "packages/runtime-class/test/hot-reload/fixtures/require/template.marko",
    "content": "-- Hello ${data.name}!"
  },
  {
    "path": "packages/runtime-class/test/hot-reload/fixtures/require/test.js",
    "content": "var fs = require(\"fs\");\nvar nodePath = require(\"path\");\n\nexports.check = function (marko, hotReload, expect, snapshot) {\n  var srcTemplatePath = nodePath.join(__dirname, \"template.marko\");\n  var templateSrc = fs.readFileSync(srcTemplatePath, { encoding: \"utf8\" });\n\n  var tempTemplatePath = nodePath.join(__dirname, \"template.temp.marko\");\n  fs.writeFileSync(tempTemplatePath, templateSrc, { encoding: \"utf8\" });\n\n  var template = require(tempTemplatePath).default;\n\n  snapshot(template.renderSync({ name: \"John\" }).toString(), {\n    name: \"initial\",\n    ext: \".html\",\n  });\n\n  fs.writeFileSync(tempTemplatePath, templateSrc + \"!\", { encoding: \"utf8\" });\n\n  snapshot(template.renderSync({ name: \"John\" }).toString(), {\n    name: \"modified\",\n    ext: \".html\",\n  });\n\n  hotReload.handleFileModified(tempTemplatePath);\n\n  snapshot(template.renderSync({ name: \"John\" }).toString(), {\n    name: \"reloaded\",\n    ext: \".html\",\n  });\n};\n"
  },
  {
    "path": "packages/runtime-class/test/hot-reload/fixtures/require-custom-extension/.gitignore",
    "content": "template.temp*"
  },
  {
    "path": "packages/runtime-class/test/hot-reload/fixtures/require-custom-extension/initial-expected.html",
    "content": "Hello John!"
  },
  {
    "path": "packages/runtime-class/test/hot-reload/fixtures/require-custom-extension/modified-expected.html",
    "content": "Hello John!"
  },
  {
    "path": "packages/runtime-class/test/hot-reload/fixtures/require-custom-extension/reloaded-expected.html",
    "content": "Hello John!!"
  },
  {
    "path": "packages/runtime-class/test/hot-reload/fixtures/require-custom-extension/template.html",
    "content": "-- Hello ${data.name}!"
  },
  {
    "path": "packages/runtime-class/test/hot-reload/fixtures/require-custom-extension/test.js",
    "content": "var fs = require(\"fs\");\nvar nodePath = require(\"path\");\n\nexports.check = function (marko, hotReload, expect, snapshot) {\n  var srcTemplatePath = nodePath.join(__dirname, \"template.html\");\n  var templateSrc = fs.readFileSync(srcTemplatePath, { encoding: \"utf8\" });\n\n  var tempTemplatePath = nodePath.join(__dirname, \"template.temp.html\");\n  fs.writeFileSync(tempTemplatePath, templateSrc, { encoding: \"utf8\" });\n\n  var template = marko.load(tempTemplatePath);\n\n  snapshot(template.renderSync({ name: \"John\" }).toString(), {\n    name: \"initial\",\n    ext: \".html\",\n  });\n\n  fs.writeFileSync(tempTemplatePath, templateSrc + \"!\", { encoding: \"utf8\" });\n\n  snapshot(template.renderSync({ name: \"John\" }).toString(), {\n    name: \"modified\",\n    ext: \".html\",\n  });\n\n  hotReload.handleFileModified(tempTemplatePath, {\n    extension: \".html\",\n  });\n\n  snapshot(template.renderSync({ name: \"John\" }).toString(), {\n    name: \"reloaded\",\n    ext: \".html\",\n  });\n};\n"
  },
  {
    "path": "packages/runtime-class/test/hot-reload/fixtures/require-custom-multiple-extensions/.gitignore",
    "content": "template.temp*"
  },
  {
    "path": "packages/runtime-class/test/hot-reload/fixtures/require-custom-multiple-extensions/initial-expected.html",
    "content": "Hello John!"
  },
  {
    "path": "packages/runtime-class/test/hot-reload/fixtures/require-custom-multiple-extensions/modified-expected.html",
    "content": "Hello John!"
  },
  {
    "path": "packages/runtime-class/test/hot-reload/fixtures/require-custom-multiple-extensions/reloaded-expected.html",
    "content": "Hello John!!"
  },
  {
    "path": "packages/runtime-class/test/hot-reload/fixtures/require-custom-multiple-extensions/template.html",
    "content": "-- Hello ${data.name}!"
  },
  {
    "path": "packages/runtime-class/test/hot-reload/fixtures/require-custom-multiple-extensions/test.js",
    "content": "var fs = require(\"fs\");\nvar nodePath = require(\"path\");\n\nexports.check = function (marko, hotReload, expect, snapshot) {\n  var srcTemplatePath = nodePath.join(__dirname, \"template.html\");\n  var templateSrc = fs.readFileSync(srcTemplatePath, { encoding: \"utf8\" });\n\n  var tempTemplatePath = nodePath.join(__dirname, \"template.temp.html\");\n  fs.writeFileSync(tempTemplatePath, templateSrc, { encoding: \"utf8\" });\n\n  var template = marko.load(tempTemplatePath);\n\n  snapshot(template.renderSync({ name: \"John\" }).toString(), {\n    name: \"initial\",\n    ext: \".html\",\n  });\n\n  fs.writeFileSync(tempTemplatePath, templateSrc + \"!\", { encoding: \"utf8\" });\n\n  snapshot(template.renderSync({ name: \"John\" }).toString(), {\n    name: \"modified\",\n    ext: \".html\",\n  });\n\n  hotReload.handleFileModified(tempTemplatePath, {\n    extensions: [\".html\"],\n  });\n\n  snapshot(template.renderSync({ name: \"John\" }).toString(), {\n    name: \"reloaded\",\n    ext: \".html\",\n  });\n};\n"
  },
  {
    "path": "packages/runtime-class/test/hot-reload/fixtures/require-custom-without-period/.gitignore",
    "content": "template.temp*"
  },
  {
    "path": "packages/runtime-class/test/hot-reload/fixtures/require-custom-without-period/initial-expected.html",
    "content": "Hello John!"
  },
  {
    "path": "packages/runtime-class/test/hot-reload/fixtures/require-custom-without-period/modified-expected.html",
    "content": "Hello John!"
  },
  {
    "path": "packages/runtime-class/test/hot-reload/fixtures/require-custom-without-period/reloaded-expected.html",
    "content": "Hello John!!"
  },
  {
    "path": "packages/runtime-class/test/hot-reload/fixtures/require-custom-without-period/template.html",
    "content": "-- Hello ${data.name}!"
  },
  {
    "path": "packages/runtime-class/test/hot-reload/fixtures/require-custom-without-period/test.js",
    "content": "var fs = require(\"fs\");\nvar nodePath = require(\"path\");\n\nexports.check = function (marko, hotReload, expect, snapshot) {\n  var srcTemplatePath = nodePath.join(__dirname, \"template.html\");\n  var templateSrc = fs.readFileSync(srcTemplatePath, { encoding: \"utf8\" });\n\n  var tempTemplatePath = nodePath.join(__dirname, \"template.temp.html\");\n  fs.writeFileSync(tempTemplatePath, templateSrc, { encoding: \"utf8\" });\n\n  var template = marko.load(tempTemplatePath);\n\n  snapshot(template.renderSync({ name: \"John\" }).toString(), {\n    name: \"initial\",\n    ext: \".html\",\n  });\n\n  fs.writeFileSync(tempTemplatePath, templateSrc + \"!\", { encoding: \"utf8\" });\n\n  snapshot(template.renderSync({ name: \"John\" }).toString(), {\n    name: \"modified\",\n    ext: \".html\",\n  });\n\n  hotReload.handleFileModified(tempTemplatePath, {\n    extensions: [\"html\"],\n  });\n\n  snapshot(template.renderSync({ name: \"John\" }).toString(), {\n    name: \"reloaded\",\n    ext: \".html\",\n  });\n};\n"
  },
  {
    "path": "packages/runtime-class/test/hot-reload/fixtures/template-export-component/.gitignore",
    "content": "temp"
  },
  {
    "path": "packages/runtime-class/test/hot-reload/fixtures/template-export-component/a/component.js",
    "content": "module.exports = {\n  onInput() {\n    this.state = {\n      name: \"Frank\",\n    };\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/hot-reload/fixtures/template-export-component/a/index.marko",
    "content": "<div class=\"a\">\n    Hello ${state.name}\n</div>"
  },
  {
    "path": "packages/runtime-class/test/hot-reload/fixtures/template-export-component/b/component.js",
    "content": "module.exports = {\n  onInput() {\n    this.state = {\n      name: \"John\",\n    };\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/hot-reload/fixtures/template-export-component/b/index.marko",
    "content": "<div class=\"b\">\n    Hello ${state.name}\n</div>"
  },
  {
    "path": "packages/runtime-class/test/hot-reload/fixtures/template-export-component/initial-expected.html",
    "content": "<!--M#s0--><div class=a>Hello Frank</div><!--M/-->"
  },
  {
    "path": "packages/runtime-class/test/hot-reload/fixtures/template-export-component/reloaded-expected.html",
    "content": "<!--M#s0--><div class=b>Hello Frank</div><!--M/-->"
  },
  {
    "path": "packages/runtime-class/test/hot-reload/fixtures/template-export-component/test.js",
    "content": "var fs = require(\"fs\");\nvar nodePath = require(\"path\");\n\nvar tempDir = nodePath.join(__dirname, \"temp\");\n\nfunction copyFiles(dir) {\n  var files = fs.readdirSync(dir);\n  files.forEach((file) => {\n    var src = fs.readFileSync(nodePath.join(dir, file));\n    fs.writeFileSync(nodePath.join(tempDir, file), src);\n  });\n}\n\nexports.check = function (marko, hotReload, expect, snapshot) {\n  try {\n    fs.mkdirSync(nodePath.join(__dirname, \"temp\"));\n  } catch (e) {\n    /* ignore error */\n  }\n\n  var tempTemplatePath = nodePath.join(__dirname, \"temp/index.marko\");\n\n  copyFiles(nodePath.join(__dirname, \"a\"));\n  var component = require(tempTemplatePath).default;\n  snapshot(component.renderSync().toString(), {\n    name: \"initial\",\n    ext: \".html\",\n  });\n\n  copyFiles(nodePath.join(__dirname, \"b\"));\n  hotReload.handleFileModified(tempTemplatePath);\n\n  snapshot(component.renderSync().toString(), {\n    name: \"reloaded\",\n    ext: \".html\",\n  });\n};\n"
  },
  {
    "path": "packages/runtime-class/test/hot-reload/index.test.js",
    "content": "\"use strict\";\n\nrequire(\"../__util__/test-init\");\n\nvar chai = require(\"chai\");\nchai.config.includeStack = true;\n\nvar expect = require(\"chai\").expect;\n\nvar marko = require(\"marko\");\nvar hotReload = require(\"marko/src/node-require/hot-reload\");\nvar autotest = require(\"mocha-autotest\").default;\n\nautotest(\"fixtures\", (fixture) => {\n  let test = fixture.test;\n  let resolve = fixture.resolve;\n  let snapshot = fixture.snapshot;\n  test(() => {\n    require(\"marko/compiler\").configure({\n      assumeUpToDate: false,\n    });\n\n    var main = require(resolve(\"test.js\"));\n\n    main.check(marko, hotReload, expect, snapshot);\n  });\n});\n"
  },
  {
    "path": "packages/runtime-class/test/marko-debug-babel-plugin/fixtures/compiles/expected.js",
    "content": "var Or = 'or';\nvar And;\nvar NegateOr;\nvar NegateAnd = 'negate and';\n'else';\n'else';\nif (true) {\n  'else if';\n} else {\n  'else';\n}\n'negated if';\n'negated if';\n'negated if';\nif (true) {\n  'negated if';\n} else {\n  'negated else if';\n}\n'alternate';\n'negated consequent';"
  },
  {
    "path": "packages/runtime-class/test/marko-debug-babel-plugin/fixtures/compiles/input.js",
    "content": "var Or = 'or';\nvar And;\nvar NegateOr;\nvar NegateAnd = 'negate and';\n'else';\n'else';\n\nif (true) {\n  'else if';\n} else {\n  'else';\n}\n\n'negated if';\n'negated if';\n'negated if';\n\nif (true) {\n  'negated if';\n} else {\n  'negated else if';\n}\n\n'alternate';\n'negated consequent'; \n"
  },
  {
    "path": "packages/runtime-class/test/marko-debug-babel-plugin/fixtures/compiles/test.js",
    "content": "const fs = require(\"fs\");\nconst path = require(\"path\");\nconst babel = require(\"@babel/core\");\nconst pluginPath = require.resolve(\n  \"../../../../../../scripts/babel-plugin-marko-debug\",\n);\n\nexports.check = function (expect, helpers, done) {\n  const input = fs.readFileSync(path.join(__dirname, \"input.js\"), \"utf-8\");\n  const actual = babel.transform(input, {\n    plugins: [pluginPath],\n    babelrc: false,\n    configFile: false,\n  }).code;\n\n  if (process.env.UPDATE_EXPECTATIONS) {\n    fs.writeFileSync(path.join(__dirname, \"expected.js\"), actual);\n  } else {\n    const expected = fs\n      .readFileSync(path.join(__dirname, \"expected.js\"), \"utf-8\")\n      .trim();\n\n    expect(expected).to.equal(actual);\n  }\n\n  done();\n};\n"
  },
  {
    "path": "packages/runtime-class/test/marko-debug-babel-plugin/index.test.js",
    "content": "\"use strict\";\n\nrequire(\"../__util__/test-init\");\n\nvar chai = require(\"chai\");\nchai.config.includeStack = true;\n\nvar expect = require(\"chai\").expect;\nvar autotest = require(\"mocha-autotest\").default;\n\nautotest(\"fixtures\", (fixture) => {\n  let test = fixture.test;\n  let resolve = fixture.resolve;\n  let snapshot = fixture.snapshot;\n  test((done) => {\n    var main = require(resolve(\"test.js\"));\n    main.check(expect, snapshot, done);\n  });\n});\n"
  },
  {
    "path": "packages/runtime-class/test/markoc/babel-register.js",
    "content": "require(\"@babel/register\")({\n  ignore: [],\n  presets: [\n    [\n      \"@babel/env\",\n      {\n        loose: true,\n        targets: {\n          node: \"8\",\n        },\n      },\n    ],\n  ],\n});\n"
  },
  {
    "path": "packages/runtime-class/test/markoc/fixtures/clean-dir/template1.marko",
    "content": "-- Hello ${data.name}!"
  },
  {
    "path": "packages/runtime-class/test/markoc/fixtures/clean-dir/template2.marko",
    "content": "-- Hello ${data.name}!"
  },
  {
    "path": "packages/runtime-class/test/markoc/fixtures/clean-dir/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nexports.test = function (helpers) {\n  helpers.spawnSync([\"template1.marko\"]);\n  helpers.spawnSync([\"template2.marko\"]);\n  expect(helpers.existsSync(\"template1.marko.js\")).to.equal(true);\n  expect(helpers.existsSync(\"template2.marko.js\")).to.equal(true);\n\n  helpers.spawnSync([\".\", \"--clean\"]);\n\n  expect(helpers.existsSync(\"template1.marko.js\")).to.equal(false);\n  expect(helpers.existsSync(\"template2.marko.js\")).to.equal(false);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/markoc/fixtures/compile-dir/template1.marko",
    "content": "-- Hello ${data.name}!"
  },
  {
    "path": "packages/runtime-class/test/markoc/fixtures/compile-dir/template2.marko",
    "content": "-- Hello ${data.name}!"
  },
  {
    "path": "packages/runtime-class/test/markoc/fixtures/compile-dir/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nexports.test = function (helpers) {\n  expect(helpers.existsSync(\"template1.marko.js\")).to.equal(false);\n  expect(helpers.existsSync(\"template2.marko.js\")).to.equal(false);\n\n  helpers.spawnSync([\".\"]);\n\n  expect(helpers.existsSync(\"template1.marko.js\")).to.equal(true);\n  expect(helpers.existsSync(\"template2.marko.js\")).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/markoc/fixtures/compile-dir-no-template/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nexports.test = function (helpers) {\n  var result = helpers.spawnSync([\".\"], { encoding: \"utf8\" });\n\n  expect(result.stdout).to.contain(\"No templates found\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/markoc/fixtures/multiple-dirs/a/template.marko",
    "content": "-- Hello ${data.name}!"
  },
  {
    "path": "packages/runtime-class/test/markoc/fixtures/multiple-dirs/b/template.marko",
    "content": "-- Hello ${data.name}!"
  },
  {
    "path": "packages/runtime-class/test/markoc/fixtures/multiple-dirs/excluded/template.marko",
    "content": "-- Hello ${data.name}!"
  },
  {
    "path": "packages/runtime-class/test/markoc/fixtures/multiple-dirs/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nexports.test = function (helpers) {\n  expect(helpers.existsSync(\"a/template.marko.js\")).to.equal(false);\n  expect(helpers.existsSync(\"b/template.marko.js\")).to.equal(false);\n  expect(helpers.existsSync(\"excluded/template.marko.js\")).to.equal(false);\n\n  helpers.spawnSync([\"a\", \"b\"]);\n\n  expect(helpers.existsSync(\"a/template.marko.js\")).to.equal(true);\n  expect(helpers.existsSync(\"b/template.marko.js\")).to.equal(true);\n  expect(helpers.existsSync(\"excluded/template.marko.js\")).to.equal(false);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/markoc/fixtures/single-template/template.marko",
    "content": "-- Hello ${data.name}!"
  },
  {
    "path": "packages/runtime-class/test/markoc/fixtures/single-template/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nexports.test = function (helpers) {\n  expect(helpers.existsSync(\"template.marko.js\")).to.equal(false);\n  var result = helpers.spawnSync([\"template.marko\"]);\n  expect(helpers.existsSync(\"template.marko.js\")).to.equal(true);\n  expect(result.status).to.equal(0);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/markoc/fixtures/single-template-write-version-comment/template.marko",
    "content": "-- Hello ${data.name}!"
  },
  {
    "path": "packages/runtime-class/test/markoc/fixtures/single-template-write-version-comment/test.js",
    "content": "var expect = require(\"chai\").expect;\nvar markoVersion = require(\"../../../../package.json\").version;\n\nexports.test = function (helpers) {\n  helpers.spawnSync([\"template.marko\"]);\n  var compiledFile = helpers.readSync(\"template.marko.js\").toString();\n  expect(compiledFile).to.contain(\n    \"Compiled using marko@\" + markoVersion + \" - DO NOT EDIT\",\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/markoc/fixtures/usage/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nexports.test = function (helpers) {\n  var result = helpers.spawnSync([], {\n    encoding: \"utf8\",\n  });\n\n  expect(result.stdout).to.contain(\"Usage: markoc\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/markoc/index.test.js",
    "content": "\"use strict\";\n\nrequire(\"../__util__/test-init\");\n\nvar chai = require(\"chai\");\nchai.config.includeStack = true;\n\nrequire(\"../../compiler\");\n\n// TODO: currently this causes babel to recompile the compiler multiple times.\n// We should fix this since it makes the tests very slow.\n\n// var autotest = require(\"mocha-autotest\").default;\n// var markocPath = require.resolve(\"../../bin/markoc\");\n// var childProcess = require(\"child_process\");\n// var fs = require(\"fs\");\n\n// autotest(\"fixtures\", fixture => {\n//     let test = fixture.test;\n//     let dir = fixture.dir;\n//     let resolve = fixture.resolve;\n//     test(function(done) {\n//         this.timeout(20000);\n//         const testModule = require(resolve(\"test.js\"));\n//         const helpers = {};\n//         helpers.existsSync = function(filename) {\n//             return fs.existsSync(resolve(filename));\n//         };\n//         helpers.readSync = function(filename) {\n//             return fs.readFileSync(resolve(filename));\n//         };\n//         helpers.spawnSync = function(args, options) {\n//             options = options || {};\n//             if (!options.cwd) {\n//                 options.cwd = dir;\n//             }\n//             options.env = Object.create(process.env || options.env);\n//             options.env.NODE_OPTIONS = `-r ${JSON.stringify(\n//                 require.resolve(\"./babel-register\")\n//             )}`;\n//             return childProcess.spawnSync(markocPath, args, options);\n//         };\n//         helpers.spawnSync([\".\", \"--clean\"]);\n//         testModule.test(helpers);\n//         done();\n//     });\n// });\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/add-rearrange/expected.html",
    "content": "<DIV>\n  <DIV id=\"a\">\n  <DIV id=\"b\">\n\"\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/add-rearrange/from.html",
    "content": "<div><div id=\"b\"></div><div id=\"c\"></div><div id=\"a\"></div></div>\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/add-rearrange/to.html",
    "content": "<div><div id=\"a\"></div><div id=\"b\"></div></div>\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/add-rearrange-incompatible-keys/expected.html",
    "content": "<DIV>\n  <DIV id=\"a\">\n  <DIV id=\"b\">\n\"\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/add-rearrange-incompatible-keys/from.html",
    "content": "<div><div id=\"b\"></div><div id=\"c\"></div><span id=\"a\"></span></div>\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/add-rearrange-incompatible-keys/to.html",
    "content": "<div><div id=\"a\"></div><div id=\"b\"></div></div>\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/attr-value-empty-string/expected.html",
    "content": "<INPUT checked=\"\" class=\"toggle\" type=\"checkbox\" value=\"foo\">\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/attr-value-empty-string/from.html",
    "content": "<input class=\"toggle\" type=\"checkbox\" checked=\"\">"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/attr-value-empty-string/to.html",
    "content": "<input class=\"toggle\" type=\"checkbox\" checked=\"\" value=\"foo\">"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/button-element-disabled/expected.html",
    "content": "<BUTTON disabled=\"\">\n  \"Hello World\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/button-element-disabled/from.html",
    "content": "<button>Hello World</button>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/button-element-disabled/index.js",
    "content": "exports.verify = function (context, expect) {\n  var rootNode = context.rootNode;\n  var button = rootNode.querySelector(\"button\");\n  expect(button.disabled).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/button-element-disabled/to.html",
    "content": "<button disabled>Hello World</button>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/button-element-enabled/expected.html",
    "content": "<BUTTON>\n  \"Hello World\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/button-element-enabled/from.html",
    "content": "<button disabled>Hello World</button>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/button-element-enabled/index.js",
    "content": "exports.verify = function (context, expect) {\n  var rootNode = context.rootNode;\n  var button = rootNode.querySelector(\"button\");\n  expect(button.disabled).to.equal(false);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/button-element-enabled/to.html",
    "content": "<button>Hello World</button>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/change-tagname/expected.html",
    "content": "<B>\n  \"bold\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/change-tagname/from.html",
    "content": "<i>italics</i>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/change-tagname/to.html",
    "content": "<b>bold</b>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/change-tagname-ids/expected.html",
    "content": "<DIV>\n  \"\\n    \"\n  <I id=\"w0\">\n    \"italics\"\n  \"\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/change-tagname-ids/from.html",
    "content": "<p>\n    <i id=\"w0\">italics</i>\n</p>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/change-tagname-ids/to.html",
    "content": "<div>\n    <i id=\"w0\">italics</i>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/data-table/expected.html",
    "content": "<TABLE>\n  \"\\n        \"\n  <THEAD>\n    \"\\n            \"\n    <TR>\n      \"\\n                \"\n      <TD>\n      \"\\n                \"\n      <TD>\n        \"\\n                    virtual-dom\\n                \"\n      <TD>\n        \"\\n                    morphdom\\n                \"\n      \"\\n            \"\n    \"\\n        \"\n  \"\\n        \"\n  <TBODY>\n    \"\\n            \"\n    <TR>\n      \"\\n                \"\n      <TD class=\"test-name\">\n        \"\\n                    FOOBAR\\n                \"\n      \"\\n                \"\n      <TD>\n        \"\\n                    888ms\\n                \"\n      <TD>\n        \"\\n                    999ms\\n                \"\n      \"\\n            \"\n    <TR>\n      \"\\n                \"\n      <TD class=\"test-name\">\n        \"\\n                    change-tagname-ids\\n                \"\n      \"\\n                \"\n      <TD>\n        \"\\n                    0.02ms\\n                \"\n      <TD>\n        \"\\n                    0.01ms\\n                \"\n      \"\\n            \"\n    <TR>\n      \"\\n                \"\n      <TD class=\"test-name\">\n        \"\\n                    data-table\\n                \"\n      \"\\n                \"\n      <TD>\n        \"\\n                    0.30ms\\n                \"\n      <TD>\n        \"\\n                    0.34ms\\n                \"\n      \"\\n            \"\n    <TR>\n      \"\\n                \"\n      <TD class=\"test-name\">\n        \"\\n                    ids-nested\\n                \"\n      \"\\n                \"\n      <TD>\n        \"\\n                    0.01ms\\n                \"\n      <TD>\n        \"\\n                    0.01ms\\n                \"\n      \"\\n            \"\n    <TR>\n      \"\\n                \"\n      <TD class=\"test-name\">\n        \"\\n                    ids-nested-2\\n                \"\n      \"\\n                \"\n      <TD>\n        \"\\n                    0.02ms\\n                \"\n      <TD>\n        \"\\n                    0.01ms\\n                \"\n      \"\\n            \"\n    <TR>\n      \"\\n                \"\n      <TD class=\"test-name\">\n        \"\\n                    ids-nested-3\\n                \"\n      \"\\n                \"\n      <TD>\n        \"\\n                    0.16ms\\n                \"\n      <TD>\n        \"\\n                    0.00ms\\n                \"\n      \"\\n            \"\n    <TR>\n      \"\\n                \"\n      <TD class=\"test-name\">\n        \"\\n                    ids-nested-4\\n                \"\n      \"\\n                \"\n      <TD>\n        \"\\n                    0.18ms\\n                \"\n      <TD>\n        \"\\n                    0.07ms\\n                \"\n      \"\\n            \"\n    <TR>\n      \"\\n                \"\n      <TD class=\"test-name\">\n        \"\\n                    ids-nested-5\\n                \"\n      \"\\n                \"\n      <TD>\n        \"\\n                    0.03ms\\n                \"\n      <TD>\n        \"\\n                    0.01ms\\n                \"\n      \"\\n            \"\n    <TR>\n      \"\\n                \"\n      <TD class=\"test-name\">\n        \"\\n                    ids-nested-6\\n                \"\n      \"\\n                \"\n      <TD>\n        \"\\n                    0.02ms\\n                \"\n      <TD>\n        \"\\n                    0.01ms\\n                \"\n      \"\\n            \"\n    <TR>\n      \"\\n                \"\n      <TD class=\"test-name\">\n        \"\\n                    ids-prepend\\n                \"\n      \"\\n                \"\n      <TD>\n        \"\\n                    0.02ms\\n                \"\n      <TD>\n        \"\\n                    0.01ms\\n                \"\n      \"\\n            \"\n    <TR>\n      \"\\n                \"\n      <TD class=\"test-name\">\n        \"\\n                    input-element\\n                \"\n      \"\\n                \"\n      <TD>\n        \"\\n                    0.01ms\\n                \"\n      <TD>\n        \"\\n                    0.01ms\\n                \"\n      \"\\n            \"\n    <TR>\n      \"\\n                \"\n      <TD class=\"test-name\">\n        \"\\n                    input-element-disabled\\n                \"\n      \"\\n                \"\n      <TD>\n        \"\\n                    0.00ms\\n                \"\n      <TD>\n        \"\\n                    0.03ms\\n                \"\n      \"\\n            \"\n    <TR>\n      \"\\n                \"\n      <TD class=\"test-name\">\n        \"\\n                    input-element-enabled\\n                \"\n      \"\\n                \"\n      <TD>\n        \"\\n                    0.01ms\\n                \"\n      <TD>\n        \"\\n                    0.01ms\\n                \"\n      \"\\n            \"\n    <TR>\n      \"\\n                \"\n      <TD class=\"test-name\">\n        \"\\n                    large\\n                \"\n      \"\\n                \"\n      <TD>\n        \"\\n                    0.95ms\\n                \"\n      <TD>\n        \"\\n                    1.53ms\\n                \"\n      \"\\n            \"\n    <TR>\n      \"\\n                \"\n      <TD class=\"test-name\">\n        \"\\n                    lengthen\\n                \"\n      \"\\n                \"\n      <TD>\n        \"\\n                    0.02ms\\n                \"\n      <TD>\n        \"\\n                    0.02ms\\n                \"\n      \"\\n            \"\n    <TR>\n      \"\\n                \"\n      <TD class=\"test-name\">\n        \"\\n                    one\\n                \"\n      \"\\n                \"\n      <TD>\n        \"\\n                    0.01ms\\n                \"\n      <TD>\n        \"\\n                    0.00ms\\n                \"\n      \"\\n            \"\n    <TR>\n      \"\\n                \"\n      <TD class=\"test-name\">\n        \"\\n                    reverse\\n                \"\n      \"\\n                \"\n      <TD>\n        \"\\n                    0.02ms\\n                \"\n      <TD>\n        \"\\n                    0.00ms\\n                \"\n      \"\\n            \"\n    <TR>\n      \"\\n                \"\n      <TD class=\"test-name\">\n        \"\\n                    reverse-ids\\n                \"\n      \"\\n                \"\n      <TD>\n        \"\\n                    0.02ms\\n                \"\n      <TD>\n        \"\\n                    0.01ms\\n                \"\n      \"\\n            \"\n    <TR>\n      \"\\n                \"\n      <TD class=\"test-name\">\n        \"\\n                    select-element\\n                \"\n      \"\\n                \"\n      <TD>\n        \"\\n                    0.03ms\\n                \"\n      <TD>\n        \"\\n                    0.03ms\\n                \"\n      \"\\n            \"\n    <TR>\n      \"\\n                \"\n      <TD class=\"test-name\">\n        \"\\n                    shorten\\n                \"\n      \"\\n                \"\n      <TD>\n        \"\\n                    0.01ms\\n                \"\n      <TD>\n        \"\\n                    0.02ms\\n                \"\n      \"\\n            \"\n    <TR>\n      \"\\n                \"\n      <TD class=\"test-name\">\n        \"\\n                    simple\\n                \"\n      \"\\n                \"\n      <TD>\n        \"\\n                    0.02ms\\n                \"\n      <TD>\n        \"\\n                    0.00ms\\n                \"\n      \"\\n            \"\n    <TR>\n      \"\\n                \"\n      <TD class=\"test-name\">\n        \"\\n                    simple-ids\\n                \"\n      \"\\n                \"\n      <TD>\n        \"\\n                    0.03ms\\n                \"\n      <TD>\n        \"\\n                    0.02ms\\n                \"\n      \"\\n            \"\n    <TR>\n      \"\\n                \"\n      <TD class=\"test-name\">\n        \"\\n                    simple-text-el\\n                \"\n      \"\\n                \"\n      <TD>\n        \"\\n                    0.02ms\\n                \"\n      <TD>\n        \"\\n                    0.00ms\\n                \"\n      \"\\n            \"\n    <TR>\n      \"\\n                \"\n      <TD class=\"test-name\">\n        \"\\n                    svg\\n                \"\n      \"\\n                \"\n      <TD>\n        \"\\n                    0.01ms\\n                \"\n      <TD>\n        \"\\n                    0.14ms\\n                \"\n      \"\\n            \"\n    <TR>\n      \"\\n                \"\n      <TD class=\"test-name\">\n        \"\\n                    todomvc\\n                \"\n      \"\\n                \"\n      <TD>\n        \"\\n                    0.23ms\\n                \"\n      <TD>\n        \"\\n                    0.30ms\\n                \"\n      \"\\n            \"\n    <TR>\n      \"\\n                \"\n      <TD class=\"test-name\">\n        \"\\n                    two\\n                \"\n      \"\\n                \"\n      <TD>\n        \"\\n                    0.01ms\\n                \"\n      <TD>\n        \"\\n                    0.01ms\\n                \"\n      \"\\n            \"\n    \"\\n        \"\n  \"\\n    \"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/data-table/from.html",
    "content": "<table>\n\t<thead>\n\t\t<tr>\n\t\t\t<td></td>\n\t\t\t<td>\n\t\t\t\tvirtual-dom\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\tmorphdom\n\t\t\t</td>\n\t\t</tr>\n\t</thead>\n\t<tbody>\n\t\t<tr>\n\t\t\t<td class=\"test-name\">\n\t\t\t\tchange-tagname\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.01ms\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.01ms\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td class=\"test-name\">\n\t\t\t\tchange-tagname-ids\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.01ms\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.01ms\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td class=\"test-name\">\n\t\t\t\tids-nested\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.01ms\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.01ms\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td class=\"test-name\">\n\t\t\t\tids-nested-2\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.01ms\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.02ms\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td class=\"test-name\">\n\t\t\t\tids-nested-3\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.02ms\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.01ms\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td class=\"test-name\">\n\t\t\t\tids-nested-4\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.11ms\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.02ms\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td class=\"test-name\">\n\t\t\t\tids-nested-5\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.02ms\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.02ms\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td class=\"test-name\">\n\t\t\t\tids-nested-6\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.01ms\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.01ms\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td class=\"test-name\">\n\t\t\t\tids-prepend\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.01ms\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.01ms\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td class=\"test-name\">\n\t\t\t\tinput-element\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.01ms\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.01ms\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td class=\"test-name\">\n\t\t\t\tinput-element-disabled\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.01ms\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.01ms\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td class=\"test-name\">\n\t\t\t\tinput-element-enabled\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.01ms\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.01ms\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td class=\"test-name\">\n\t\t\t\tlarge\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t1.15ms\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t2.42ms\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td class=\"test-name\">\n\t\t\t\tlengthen\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.02ms\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.02ms\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td class=\"test-name\">\n\t\t\t\tone\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.01ms\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.01ms\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td class=\"test-name\">\n\t\t\t\treverse\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.02ms\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.01ms\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td class=\"test-name\">\n\t\t\t\treverse-ids\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.02ms\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.03ms\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td class=\"test-name\">\n\t\t\t\tselect-element\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.04ms\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.36ms\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td class=\"test-name\">\n\t\t\t\tshorten\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.01ms\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.02ms\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td class=\"test-name\">\n\t\t\t\tsimple\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.01ms\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.00ms\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td class=\"test-name\">\n\t\t\t\tsimple-ids\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.02ms\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.03ms\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td class=\"test-name\">\n\t\t\t\tsimple-text-el\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.01ms\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.01ms\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td class=\"test-name\">\n\t\t\t\tsvg\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.01ms\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.02ms\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td class=\"test-name\">\n\t\t\t\ttodomvc\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.25ms\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.50ms\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td class=\"test-name\">\n\t\t\t\ttwo\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.02ms\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t0.01ms\n\t\t\t</td>\n\t\t</tr>\n\t</tbody>\n</table>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/data-table/to.html",
    "content": "<table>\n        <thead>\n            <tr>\n                <td></td>\n                <td>\n                    virtual-dom\n                </td><td>\n                    morphdom\n                </td>\n            </tr>\n        </thead>\n        <tbody>\n            <tr>\n                <td class=\"test-name\">\n                    FOOBAR\n                </td>\n                <td>\n                    888ms\n                </td><td>\n                    999ms\n                </td>\n            </tr><tr>\n                <td class=\"test-name\">\n                    change-tagname-ids\n                </td>\n                <td>\n                    0.02ms\n                </td><td>\n                    0.01ms\n                </td>\n            </tr><tr>\n                <td class=\"test-name\">\n                    data-table\n                </td>\n                <td>\n                    0.30ms\n                </td><td>\n                    0.34ms\n                </td>\n            </tr><tr>\n                <td class=\"test-name\">\n                    ids-nested\n                </td>\n                <td>\n                    0.01ms\n                </td><td>\n                    0.01ms\n                </td>\n            </tr><tr>\n                <td class=\"test-name\">\n                    ids-nested-2\n                </td>\n                <td>\n                    0.02ms\n                </td><td>\n                    0.01ms\n                </td>\n            </tr><tr>\n                <td class=\"test-name\">\n                    ids-nested-3\n                </td>\n                <td>\n                    0.16ms\n                </td><td>\n                    0.00ms\n                </td>\n            </tr><tr>\n                <td class=\"test-name\">\n                    ids-nested-4\n                </td>\n                <td>\n                    0.18ms\n                </td><td>\n                    0.07ms\n                </td>\n            </tr><tr>\n                <td class=\"test-name\">\n                    ids-nested-5\n                </td>\n                <td>\n                    0.03ms\n                </td><td>\n                    0.01ms\n                </td>\n            </tr><tr>\n                <td class=\"test-name\">\n                    ids-nested-6\n                </td>\n                <td>\n                    0.02ms\n                </td><td>\n                    0.01ms\n                </td>\n            </tr><tr>\n                <td class=\"test-name\">\n                    ids-prepend\n                </td>\n                <td>\n                    0.02ms\n                </td><td>\n                    0.01ms\n                </td>\n            </tr><tr>\n                <td class=\"test-name\">\n                    input-element\n                </td>\n                <td>\n                    0.01ms\n                </td><td>\n                    0.01ms\n                </td>\n            </tr><tr>\n                <td class=\"test-name\">\n                    input-element-disabled\n                </td>\n                <td>\n                    0.00ms\n                </td><td>\n                    0.03ms\n                </td>\n            </tr><tr>\n                <td class=\"test-name\">\n                    input-element-enabled\n                </td>\n                <td>\n                    0.01ms\n                </td><td>\n                    0.01ms\n                </td>\n            </tr><tr>\n                <td class=\"test-name\">\n                    large\n                </td>\n                <td>\n                    0.95ms\n                </td><td>\n                    1.53ms\n                </td>\n            </tr><tr>\n                <td class=\"test-name\">\n                    lengthen\n                </td>\n                <td>\n                    0.02ms\n                </td><td>\n                    0.02ms\n                </td>\n            </tr><tr>\n                <td class=\"test-name\">\n                    one\n                </td>\n                <td>\n                    0.01ms\n                </td><td>\n                    0.00ms\n                </td>\n            </tr><tr>\n                <td class=\"test-name\">\n                    reverse\n                </td>\n                <td>\n                    0.02ms\n                </td><td>\n                    0.00ms\n                </td>\n            </tr><tr>\n                <td class=\"test-name\">\n                    reverse-ids\n                </td>\n                <td>\n                    0.02ms\n                </td><td>\n                    0.01ms\n                </td>\n            </tr><tr>\n                <td class=\"test-name\">\n                    select-element\n                </td>\n                <td>\n                    0.03ms\n                </td><td>\n                    0.03ms\n                </td>\n            </tr><tr>\n                <td class=\"test-name\">\n                    shorten\n                </td>\n                <td>\n                    0.01ms\n                </td><td>\n                    0.02ms\n                </td>\n            </tr><tr>\n                <td class=\"test-name\">\n                    simple\n                </td>\n                <td>\n                    0.02ms\n                </td><td>\n                    0.00ms\n                </td>\n            </tr><tr>\n                <td class=\"test-name\">\n                    simple-ids\n                </td>\n                <td>\n                    0.03ms\n                </td><td>\n                    0.02ms\n                </td>\n            </tr><tr>\n                <td class=\"test-name\">\n                    simple-text-el\n                </td>\n                <td>\n                    0.02ms\n                </td><td>\n                    0.00ms\n                </td>\n            </tr><tr>\n                <td class=\"test-name\">\n                    svg\n                </td>\n                <td>\n                    0.01ms\n                </td><td>\n                    0.14ms\n                </td>\n            </tr><tr>\n                <td class=\"test-name\">\n                    todomvc\n                </td>\n                <td>\n                    0.23ms\n                </td><td>\n                    0.30ms\n                </td>\n            </tr><tr>\n                <td class=\"test-name\">\n                    two\n                </td>\n                <td>\n                    0.01ms\n                </td><td>\n                    0.01ms\n                </td>\n            </tr>\n        </tbody>\n    </table>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/data-table2/expected.html",
    "content": "<TABLE aria-describedby=\"example_info\" cellspacing=\"0\" class=\"display dataTable\" id=\"example\" role=\"grid\" style=\"width: 100%;\" width=\"100%\">\n  \"\\n    \"\n  <THEAD>\n    \"\\n        \"\n    <TR role=\"row\">\n      \"\\n            \"\n      <TH aria-controls=\"example\" aria-label=\"Name: activate to sort column ascending\" aria-sort=\"descending\" class=\"sorting_desc\" colspan=\"1\" rowspan=\"1\" style=\"width: 137px;\" tabindex=\"0\">\n        \"Name\"\n      \"\\n            \"\n      <TH aria-controls=\"example\" aria-label=\"Position: activate to sort column ascending\" class=\"sorting\" colspan=\"1\" rowspan=\"1\" style=\"width: 214px;\" tabindex=\"0\">\n        \"Position\"\n      \"\\n            \"\n      <TH aria-controls=\"example\" aria-label=\"Office: activate to sort column ascending\" class=\"sorting\" colspan=\"1\" rowspan=\"1\" style=\"width: 103px;\" tabindex=\"0\">\n        \"Office\"\n      \"\\n            \"\n      <TH aria-controls=\"example\" aria-label=\"Age: activate to sort column ascending\" class=\"sorting\" colspan=\"1\" rowspan=\"1\" style=\"width: 41px;\" tabindex=\"0\">\n        \"Age\"\n      \"\\n            \"\n      <TH aria-controls=\"example\" aria-label=\"Start date: activate to sort column ascending\" class=\"sorting\" colspan=\"1\" rowspan=\"1\" style=\"width: 92px;\" tabindex=\"0\">\n        \"Start date\"\n      \"\\n            \"\n      <TH aria-controls=\"example\" aria-label=\"Salary: activate to sort column ascending\" class=\"sorting\" colspan=\"1\" rowspan=\"1\" style=\"width: 80px;\" tabindex=\"0\">\n        \"Salary\"\n      \"\\n        \"\n    \"\\n    \"\n  \"\\n    \"\n  <TFOOT>\n    \"\\n        \"\n    <TR>\n      \"\\n            \"\n      <TH colspan=\"1\" rowspan=\"1\">\n        \"Name\"\n      \"\\n            \"\n      <TH colspan=\"1\" rowspan=\"1\">\n        \"Position\"\n      \"\\n            \"\n      <TH colspan=\"1\" rowspan=\"1\">\n        \"Office\"\n      \"\\n            \"\n      <TH colspan=\"1\" rowspan=\"1\">\n        \"Age\"\n      \"\\n            \"\n      <TH colspan=\"1\" rowspan=\"1\">\n        \"Start date\"\n      \"\\n            \"\n      <TH colspan=\"1\" rowspan=\"1\">\n        \"Salary\"\n      \"\\n        \"\n    \"\\n    \"\n  \"\\n    \"\n  <TBODY>\n    \"\\n        \"\n    <TR class=\"odd\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Zorita Serrano\"\n      \"\\n            \"\n      <TD>\n        \"Software Engineer\"\n      \"\\n            \"\n      <TD>\n        \"San Francisco\"\n      \"\\n            \"\n      <TD>\n        \"56\"\n      \"\\n            \"\n      <TD>\n        \"2012/06/01\"\n      \"\\n            \"\n      <TD>\n        \"$115,000\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"even\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Zenaida Frank\"\n      \"\\n            \"\n      <TD>\n        \"Software Engineer\"\n      \"\\n            \"\n      <TD>\n        \"New York\"\n      \"\\n            \"\n      <TD>\n        \"63\"\n      \"\\n            \"\n      <TD>\n        \"2010/01/04\"\n      \"\\n            \"\n      <TD>\n        \"$125,250\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"odd\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Yuri Berry\"\n      \"\\n            \"\n      <TD>\n        \"Chief Marketing Officer (CMO)\"\n      \"\\n            \"\n      <TD>\n        \"New York\"\n      \"\\n            \"\n      <TD>\n        \"40\"\n      \"\\n            \"\n      <TD>\n        \"2009/06/25\"\n      \"\\n            \"\n      <TD>\n        \"$675,000\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"even\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Vivian Harrell\"\n      \"\\n            \"\n      <TD>\n        \"Financial Controller\"\n      \"\\n            \"\n      <TD>\n        \"San Francisco\"\n      \"\\n            \"\n      <TD>\n        \"62\"\n      \"\\n            \"\n      <TD>\n        \"2009/02/14\"\n      \"\\n            \"\n      <TD>\n        \"$452,500\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"odd\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Unity Butler\"\n      \"\\n            \"\n      <TD>\n        \"Marketing Designer\"\n      \"\\n            \"\n      <TD>\n        \"San Francisco\"\n      \"\\n            \"\n      <TD>\n        \"47\"\n      \"\\n            \"\n      <TD>\n        \"2009/12/09\"\n      \"\\n            \"\n      <TD>\n        \"$85,675\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"even\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Timothy Mooney\"\n      \"\\n            \"\n      <TD>\n        \"Office Manager\"\n      \"\\n            \"\n      <TD>\n        \"London\"\n      \"\\n            \"\n      <TD>\n        \"37\"\n      \"\\n            \"\n      <TD>\n        \"2008/12/11\"\n      \"\\n            \"\n      <TD>\n        \"$136,200\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"odd\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Tiger Nixon\"\n      \"\\n            \"\n      <TD>\n        \"System Architect\"\n      \"\\n            \"\n      <TD>\n        \"Edinburgh\"\n      \"\\n            \"\n      <TD>\n        \"61\"\n      \"\\n            \"\n      <TD>\n        \"2011/04/25\"\n      \"\\n            \"\n      <TD>\n        \"$320,800\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"even\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Thor Walton\"\n      \"\\n            \"\n      <TD>\n        \"Developer\"\n      \"\\n            \"\n      <TD>\n        \"New York\"\n      \"\\n            \"\n      <TD>\n        \"61\"\n      \"\\n            \"\n      <TD>\n        \"2013/08/11\"\n      \"\\n            \"\n      <TD>\n        \"$98,540\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"odd\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Tatyana Fitzpatrick\"\n      \"\\n            \"\n      <TD>\n        \"Regional Director\"\n      \"\\n            \"\n      <TD>\n        \"London\"\n      \"\\n            \"\n      <TD>\n        \"19\"\n      \"\\n            \"\n      <TD>\n        \"2010/03/17\"\n      \"\\n            \"\n      <TD>\n        \"$385,750\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"even\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Suki Burks\"\n      \"\\n            \"\n      <TD>\n        \"Developer\"\n      \"\\n            \"\n      <TD>\n        \"London\"\n      \"\\n            \"\n      <TD>\n        \"53\"\n      \"\\n            \"\n      <TD>\n        \"2009/10/22\"\n      \"\\n            \"\n      <TD>\n        \"$114,500\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"odd\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Sonya Frost\"\n      \"\\n            \"\n      <TD>\n        \"Software Engineer\"\n      \"\\n            \"\n      <TD>\n        \"Edinburgh\"\n      \"\\n            \"\n      <TD>\n        \"23\"\n      \"\\n            \"\n      <TD>\n        \"2008/12/13\"\n      \"\\n            \"\n      <TD>\n        \"$103,600\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"even\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Shou Itou\"\n      \"\\n            \"\n      <TD>\n        \"Regional Marketing\"\n      \"\\n            \"\n      <TD>\n        \"Tokyo\"\n      \"\\n            \"\n      <TD>\n        \"20\"\n      \"\\n            \"\n      <TD>\n        \"2011/08/14\"\n      \"\\n            \"\n      <TD>\n        \"$163,000\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"odd\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Shad Decker\"\n      \"\\n            \"\n      <TD>\n        \"Regional Director\"\n      \"\\n            \"\n      <TD>\n        \"Edinburgh\"\n      \"\\n            \"\n      <TD>\n        \"51\"\n      \"\\n            \"\n      <TD>\n        \"2008/11/13\"\n      \"\\n            \"\n      <TD>\n        \"$183,000\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"even\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Serge Baldwin\"\n      \"\\n            \"\n      <TD>\n        \"Data Coordinator\"\n      \"\\n            \"\n      <TD>\n        \"Singapore\"\n      \"\\n            \"\n      <TD>\n        \"64\"\n      \"\\n            \"\n      <TD>\n        \"2012/04/09\"\n      \"\\n            \"\n      <TD>\n        \"$138,575\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"odd\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Sakura Yamamoto\"\n      \"\\n            \"\n      <TD>\n        \"Support Engineer\"\n      \"\\n            \"\n      <TD>\n        \"Tokyo\"\n      \"\\n            \"\n      <TD>\n        \"37\"\n      \"\\n            \"\n      <TD>\n        \"2009/08/19\"\n      \"\\n            \"\n      <TD>\n        \"$139,575\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"even\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Rhona Davidson\"\n      \"\\n            \"\n      <TD>\n        \"Integration Specialist\"\n      \"\\n            \"\n      <TD>\n        \"Tokyo\"\n      \"\\n            \"\n      <TD>\n        \"55\"\n      \"\\n            \"\n      <TD>\n        \"2010/10/14\"\n      \"\\n            \"\n      <TD>\n        \"$327,900\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"odd\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Quinn Flynn\"\n      \"\\n            \"\n      <TD>\n        \"Support Lead\"\n      \"\\n            \"\n      <TD>\n        \"Edinburgh\"\n      \"\\n            \"\n      <TD>\n        \"22\"\n      \"\\n            \"\n      <TD>\n        \"2013/03/03\"\n      \"\\n            \"\n      <TD>\n        \"$342,000\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"even\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Prescott Bartlett\"\n      \"\\n            \"\n      <TD>\n        \"Technical Author\"\n      \"\\n            \"\n      <TD>\n        \"London\"\n      \"\\n            \"\n      <TD>\n        \"27\"\n      \"\\n            \"\n      <TD>\n        \"2011/05/07\"\n      \"\\n            \"\n      <TD>\n        \"$145,000\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"odd\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Paul Byrd\"\n      \"\\n            \"\n      <TD>\n        \"Chief Financial Officer (CFO)\"\n      \"\\n            \"\n      <TD>\n        \"New York\"\n      \"\\n            \"\n      <TD>\n        \"64\"\n      \"\\n            \"\n      <TD>\n        \"2010/06/09\"\n      \"\\n            \"\n      <TD>\n        \"$725,000\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"even\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Olivia Liang\"\n      \"\\n            \"\n      <TD>\n        \"Support Engineer\"\n      \"\\n            \"\n      <TD>\n        \"Singapore\"\n      \"\\n            \"\n      <TD>\n        \"64\"\n      \"\\n            \"\n      <TD>\n        \"2011/02/03\"\n      \"\\n            \"\n      <TD>\n        \"$234,500\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"odd\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Michelle House\"\n      \"\\n            \"\n      <TD>\n        \"Integration Specialist\"\n      \"\\n            \"\n      <TD>\n        \"Sidney\"\n      \"\\n            \"\n      <TD>\n        \"37\"\n      \"\\n            \"\n      <TD>\n        \"2011/06/02\"\n      \"\\n            \"\n      <TD>\n        \"$95,400\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"even\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Michael Silva\"\n      \"\\n            \"\n      <TD>\n        \"Marketing Designer\"\n      \"\\n            \"\n      <TD>\n        \"London\"\n      \"\\n            \"\n      <TD>\n        \"66\"\n      \"\\n            \"\n      <TD>\n        \"2012/11/27\"\n      \"\\n            \"\n      <TD>\n        \"$198,500\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"odd\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Michael Bruce\"\n      \"\\n            \"\n      <TD>\n        \"Javascript Developer\"\n      \"\\n            \"\n      <TD>\n        \"Singapore\"\n      \"\\n            \"\n      <TD>\n        \"29\"\n      \"\\n            \"\n      <TD>\n        \"2011/06/27\"\n      \"\\n            \"\n      <TD>\n        \"$183,000\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"even\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Martena Mccray\"\n      \"\\n            \"\n      <TD>\n        \"Post-Sales support\"\n      \"\\n            \"\n      <TD>\n        \"Edinburgh\"\n      \"\\n            \"\n      <TD>\n        \"46\"\n      \"\\n            \"\n      <TD>\n        \"2011/03/09\"\n      \"\\n            \"\n      <TD>\n        \"$324,050\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"odd\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Lael Greer\"\n      \"\\n            \"\n      <TD>\n        \"Systems Administrator\"\n      \"\\n            \"\n      <TD>\n        \"London\"\n      \"\\n            \"\n      <TD>\n        \"21\"\n      \"\\n            \"\n      <TD>\n        \"2009/02/27\"\n      \"\\n            \"\n      <TD>\n        \"$103,500\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"even\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Jonas Alexander\"\n      \"\\n            \"\n      <TD>\n        \"Developer\"\n      \"\\n            \"\n      <TD>\n        \"San Francisco\"\n      \"\\n            \"\n      <TD>\n        \"30\"\n      \"\\n            \"\n      <TD>\n        \"2010/07/14\"\n      \"\\n            \"\n      <TD>\n        \"$86,500\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"odd\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Jennifer Chang\"\n      \"\\n            \"\n      <TD>\n        \"Regional Director\"\n      \"\\n            \"\n      <TD>\n        \"Singapore\"\n      \"\\n            \"\n      <TD>\n        \"28\"\n      \"\\n            \"\n      <TD>\n        \"2010/11/14\"\n      \"\\n            \"\n      <TD>\n        \"$357,650\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"even\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Jennifer Acosta\"\n      \"\\n            \"\n      <TD>\n        \"Junior Javascript Developer\"\n      \"\\n            \"\n      <TD>\n        \"Edinburgh\"\n      \"\\n            \"\n      <TD>\n        \"43\"\n      \"\\n            \"\n      <TD>\n        \"2013/02/01\"\n      \"\\n            \"\n      <TD>\n        \"$75,650\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"odd\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Jenette Caldwell\"\n      \"\\n            \"\n      <TD>\n        \"Development Lead\"\n      \"\\n            \"\n      <TD>\n        \"New York\"\n      \"\\n            \"\n      <TD>\n        \"30\"\n      \"\\n            \"\n      <TD>\n        \"2011/09/03\"\n      \"\\n            \"\n      <TD>\n        \"$345,000\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"even\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Jena Gaines\"\n      \"\\n            \"\n      <TD>\n        \"Office Manager\"\n      \"\\n            \"\n      <TD>\n        \"London\"\n      \"\\n            \"\n      <TD>\n        \"30\"\n      \"\\n            \"\n      <TD>\n        \"2008/12/19\"\n      \"\\n            \"\n      <TD>\n        \"$90,560\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"odd\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Jackson Bradshaw\"\n      \"\\n            \"\n      <TD>\n        \"Director\"\n      \"\\n            \"\n      <TD>\n        \"New York\"\n      \"\\n            \"\n      <TD>\n        \"65\"\n      \"\\n            \"\n      <TD>\n        \"2008/09/26\"\n      \"\\n            \"\n      <TD>\n        \"$645,750\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"even\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Howard Hatfield\"\n      \"\\n            \"\n      <TD>\n        \"Office Manager\"\n      \"\\n            \"\n      <TD>\n        \"San Francisco\"\n      \"\\n            \"\n      <TD>\n        \"51\"\n      \"\\n            \"\n      <TD>\n        \"2008/12/16\"\n      \"\\n            \"\n      <TD>\n        \"$164,500\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"odd\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Hope Fuentes\"\n      \"\\n            \"\n      <TD>\n        \"Secretary\"\n      \"\\n            \"\n      <TD>\n        \"San Francisco\"\n      \"\\n            \"\n      <TD>\n        \"41\"\n      \"\\n            \"\n      <TD>\n        \"2010/02/12\"\n      \"\\n            \"\n      <TD>\n        \"$109,850\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"even\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Herrod Chandler\"\n      \"\\n            \"\n      <TD>\n        \"Sales Assistant\"\n      \"\\n            \"\n      <TD>\n        \"San Francisco\"\n      \"\\n            \"\n      <TD>\n        \"59\"\n      \"\\n            \"\n      <TD>\n        \"2012/08/06\"\n      \"\\n            \"\n      <TD>\n        \"$137,500\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"odd\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Hermione Butler\"\n      \"\\n            \"\n      <TD>\n        \"Regional Director\"\n      \"\\n            \"\n      <TD>\n        \"London\"\n      \"\\n            \"\n      <TD>\n        \"47\"\n      \"\\n            \"\n      <TD>\n        \"2011/03/21\"\n      \"\\n            \"\n      <TD>\n        \"$356,250\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"even\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Haley Kennedy\"\n      \"\\n            \"\n      <TD>\n        \"Senior Marketing Designer\"\n      \"\\n            \"\n      <TD>\n        \"London\"\n      \"\\n            \"\n      <TD>\n        \"43\"\n      \"\\n            \"\n      <TD>\n        \"2012/12/18\"\n      \"\\n            \"\n      <TD>\n        \"$313,500\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"odd\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Gloria Little\"\n      \"\\n            \"\n      <TD>\n        \"Systems Administrator\"\n      \"\\n            \"\n      <TD>\n        \"New York\"\n      \"\\n            \"\n      <TD>\n        \"59\"\n      \"\\n            \"\n      <TD>\n        \"2009/04/10\"\n      \"\\n            \"\n      <TD>\n        \"$237,500\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"even\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Gavin Joyce\"\n      \"\\n            \"\n      <TD>\n        \"Developer\"\n      \"\\n            \"\n      <TD>\n        \"Edinburgh\"\n      \"\\n            \"\n      <TD>\n        \"42\"\n      \"\\n            \"\n      <TD>\n        \"2010/12/22\"\n      \"\\n            \"\n      <TD>\n        \"$92,575\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"odd\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Gavin Cortez\"\n      \"\\n            \"\n      <TD>\n        \"Team Leader\"\n      \"\\n            \"\n      <TD>\n        \"San Francisco\"\n      \"\\n            \"\n      <TD>\n        \"22\"\n      \"\\n            \"\n      <TD>\n        \"2008/10/26\"\n      \"\\n            \"\n      <TD>\n        \"$235,500\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"even\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Garrett Winters\"\n      \"\\n            \"\n      <TD>\n        \"Accountant\"\n      \"\\n            \"\n      <TD>\n        \"Tokyo\"\n      \"\\n            \"\n      <TD>\n        \"63\"\n      \"\\n            \"\n      <TD>\n        \"2011/07/25\"\n      \"\\n            \"\n      <TD>\n        \"$170,750\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"odd\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Fiona Green\"\n      \"\\n            \"\n      <TD>\n        \"Chief Operating Officer (COO)\"\n      \"\\n            \"\n      <TD>\n        \"San Francisco\"\n      \"\\n            \"\n      <TD>\n        \"48\"\n      \"\\n            \"\n      <TD>\n        \"2010/03/11\"\n      \"\\n            \"\n      <TD>\n        \"$850,000\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"even\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Finn Camacho\"\n      \"\\n            \"\n      <TD>\n        \"Support Engineer\"\n      \"\\n            \"\n      <TD>\n        \"San Francisco\"\n      \"\\n            \"\n      <TD>\n        \"47\"\n      \"\\n            \"\n      <TD>\n        \"2009/07/07\"\n      \"\\n            \"\n      <TD>\n        \"$87,500\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"odd\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Doris Wilder\"\n      \"\\n            \"\n      <TD>\n        \"Sales Assistant\"\n      \"\\n            \"\n      <TD>\n        \"Sidney\"\n      \"\\n            \"\n      <TD>\n        \"23\"\n      \"\\n            \"\n      <TD>\n        \"2010/09/20\"\n      \"\\n            \"\n      <TD>\n        \"$85,600\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"even\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Donna Snider\"\n      \"\\n            \"\n      <TD>\n        \"Customer Support\"\n      \"\\n            \"\n      <TD>\n        \"New York\"\n      \"\\n            \"\n      <TD>\n        \"27\"\n      \"\\n            \"\n      <TD>\n        \"2011/01/25\"\n      \"\\n            \"\n      <TD>\n        \"$112,000\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"odd\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Dai Rios\"\n      \"\\n            \"\n      <TD>\n        \"Personnel Lead\"\n      \"\\n            \"\n      <TD>\n        \"Edinburgh\"\n      \"\\n            \"\n      <TD>\n        \"35\"\n      \"\\n            \"\n      <TD>\n        \"2012/09/26\"\n      \"\\n            \"\n      <TD>\n        \"$217,500\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"even\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Colleen Hurst\"\n      \"\\n            \"\n      <TD>\n        \"Javascript Developer\"\n      \"\\n            \"\n      <TD>\n        \"San Francisco\"\n      \"\\n            \"\n      <TD>\n        \"39\"\n      \"\\n            \"\n      <TD>\n        \"2009/09/15\"\n      \"\\n            \"\n      <TD>\n        \"$205,500\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"odd\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Charde Marshall\"\n      \"\\n            \"\n      <TD>\n        \"Regional Director\"\n      \"\\n            \"\n      <TD>\n        \"San Francisco\"\n      \"\\n            \"\n      <TD>\n        \"36\"\n      \"\\n            \"\n      <TD>\n        \"2008/10/16\"\n      \"\\n            \"\n      <TD>\n        \"$470,600\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"even\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Cedric Kelly\"\n      \"\\n            \"\n      <TD>\n        \"Senior Javascript Developer\"\n      \"\\n            \"\n      <TD>\n        \"Edinburgh\"\n      \"\\n            \"\n      <TD>\n        \"22\"\n      \"\\n            \"\n      <TD>\n        \"2012/03/29\"\n      \"\\n            \"\n      <TD>\n        \"$433,060\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"odd\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Cara Stevens\"\n      \"\\n            \"\n      <TD>\n        \"Sales Assistant\"\n      \"\\n            \"\n      <TD>\n        \"New York\"\n      \"\\n            \"\n      <TD>\n        \"46\"\n      \"\\n            \"\n      <TD>\n        \"2011/12/06\"\n      \"\\n            \"\n      <TD>\n        \"$145,600\"\n      \"\\n        \"\n    \"\\n        \"\n    <TR class=\"even\" role=\"row\">\n      \"\\n            \"\n      <TD class=\"sorting_1\">\n        \"Caesar Vance\"\n      \"\\n            \"\n      <TD>\n        \"Pre-Sales Support\"\n      \"\\n            \"\n      <TD>\n        \"New York\"\n      \"\\n            \"\n      <TD>\n        \"21\"\n      \"\\n            \"\n      <TD>\n        \"2011/12/12\"\n      \"\\n            \"\n      <TD>\n        \"$106,450\"\n      \"\\n        \"\n    \"\\n    \"\n  \"\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/data-table2/from.html",
    "content": "<table id=\"example\" class=\"display dataTable\" cellspacing=\"0\" width=\"100%\" role=\"grid\" aria-describedby=\"example_info\" style=\"width: 100%;\">\n\t<thead>\n\t\t<tr role=\"row\">\n\t\t\t<th class=\"sorting_asc\" tabindex=\"0\" aria-controls=\"example\" rowspan=\"1\" colspan=\"1\" aria-sort=\"ascending\" aria-label=\"Name: activate to sort column descending\" style=\"width: 137px;\">Name</th>\n\t\t\t<th class=\"sorting\" tabindex=\"0\" aria-controls=\"example\" rowspan=\"1\" colspan=\"1\" aria-label=\"Position: activate to sort column ascending\" style=\"width: 214px;\">Position</th>\n\t\t\t<th class=\"sorting\" tabindex=\"0\" aria-controls=\"example\" rowspan=\"1\" colspan=\"1\" aria-label=\"Office: activate to sort column ascending\" style=\"width: 103px;\">Office</th>\n\t\t\t<th class=\"sorting\" tabindex=\"0\" aria-controls=\"example\" rowspan=\"1\" colspan=\"1\" aria-label=\"Age: activate to sort column ascending\" style=\"width: 41px;\">Age</th>\n\t\t\t<th class=\"sorting\" tabindex=\"0\" aria-controls=\"example\" rowspan=\"1\" colspan=\"1\" aria-label=\"Start date: activate to sort column ascending\" style=\"width: 92px;\">Start date</th>\n\t\t\t<th class=\"sorting\" tabindex=\"0\" aria-controls=\"example\" rowspan=\"1\" colspan=\"1\" aria-label=\"Salary: activate to sort column ascending\" style=\"width: 80px;\">Salary</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th rowspan=\"1\" colspan=\"1\">Name</th>\n\t\t\t<th rowspan=\"1\" colspan=\"1\">Position</th>\n\t\t\t<th rowspan=\"1\" colspan=\"1\">Office</th>\n\t\t\t<th rowspan=\"1\" colspan=\"1\">Age</th>\n\t\t\t<th rowspan=\"1\" colspan=\"1\">Start date</th>\n\t\t\t<th rowspan=\"1\" colspan=\"1\">Salary</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr role=\"row\" class=\"odd\">\n\t\t\t<td class=\"sorting_1\">Airi Satou</td>\n\t\t\t<td>Accountant</td>\n\t\t\t<td>Tokyo</td>\n\t\t\t<td>33</td>\n\t\t\t<td>2008/11/28</td>\n\t\t\t<td>$162,700</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"even\">\n\t\t\t<td class=\"sorting_1\">Angelica Ramos</td>\n\t\t\t<td>Chief Executive Officer (CEO)</td>\n\t\t\t<td>London</td>\n\t\t\t<td>47</td>\n\t\t\t<td>2009/10/09</td>\n\t\t\t<td>$1,200,000</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"odd\">\n\t\t\t<td class=\"sorting_1\">Ashton Cox</td>\n\t\t\t<td>Junior Technical Author</td>\n\t\t\t<td>San Francisco</td>\n\t\t\t<td>66</td>\n\t\t\t<td>2009/01/12</td>\n\t\t\t<td>$86,000</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"even\">\n\t\t\t<td class=\"sorting_1\">Bradley Greer</td>\n\t\t\t<td>Software Engineer</td>\n\t\t\t<td>London</td>\n\t\t\t<td>41</td>\n\t\t\t<td>2012/10/13</td>\n\t\t\t<td>$132,000</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"odd\">\n\t\t\t<td class=\"sorting_1\">Brenden Wagner</td>\n\t\t\t<td>Software Engineer</td>\n\t\t\t<td>San Francisco</td>\n\t\t\t<td>28</td>\n\t\t\t<td>2011/06/07</td>\n\t\t\t<td>$206,850</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"even\">\n\t\t\t<td class=\"sorting_1\">Brielle Williamson</td>\n\t\t\t<td>Integration Specialist</td>\n\t\t\t<td>New York</td>\n\t\t\t<td>61</td>\n\t\t\t<td>2012/12/02</td>\n\t\t\t<td>$372,000</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"odd\">\n\t\t\t<td class=\"sorting_1\">Bruno Nash</td>\n\t\t\t<td>Software Engineer</td>\n\t\t\t<td>London</td>\n\t\t\t<td>38</td>\n\t\t\t<td>2011/05/03</td>\n\t\t\t<td>$163,500</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"even\">\n\t\t\t<td class=\"sorting_1\">Caesar Vance</td>\n\t\t\t<td>Pre-Sales Support</td>\n\t\t\t<td>New York</td>\n\t\t\t<td>21</td>\n\t\t\t<td>2011/12/12</td>\n\t\t\t<td>$106,450</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"odd\">\n\t\t\t<td class=\"sorting_1\">Cara Stevens</td>\n\t\t\t<td>Sales Assistant</td>\n\t\t\t<td>New York</td>\n\t\t\t<td>46</td>\n\t\t\t<td>2011/12/06</td>\n\t\t\t<td>$145,600</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"even\">\n\t\t\t<td class=\"sorting_1\">Cedric Kelly</td>\n\t\t\t<td>Senior Javascript Developer</td>\n\t\t\t<td>Edinburgh</td>\n\t\t\t<td>22</td>\n\t\t\t<td>2012/03/29</td>\n\t\t\t<td>$433,060</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"odd\">\n\t\t\t<td class=\"sorting_1\">Charde Marshall</td>\n\t\t\t<td>Regional Director</td>\n\t\t\t<td>San Francisco</td>\n\t\t\t<td>36</td>\n\t\t\t<td>2008/10/16</td>\n\t\t\t<td>$470,600</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"even\">\n\t\t\t<td class=\"sorting_1\">Colleen Hurst</td>\n\t\t\t<td>Javascript Developer</td>\n\t\t\t<td>San Francisco</td>\n\t\t\t<td>39</td>\n\t\t\t<td>2009/09/15</td>\n\t\t\t<td>$205,500</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"odd\">\n\t\t\t<td class=\"sorting_1\">Dai Rios</td>\n\t\t\t<td>Personnel Lead</td>\n\t\t\t<td>Edinburgh</td>\n\t\t\t<td>35</td>\n\t\t\t<td>2012/09/26</td>\n\t\t\t<td>$217,500</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"even\">\n\t\t\t<td class=\"sorting_1\">Donna Snider</td>\n\t\t\t<td>Customer Support</td>\n\t\t\t<td>New York</td>\n\t\t\t<td>27</td>\n\t\t\t<td>2011/01/25</td>\n\t\t\t<td>$112,000</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"odd\">\n\t\t\t<td class=\"sorting_1\">Doris Wilder</td>\n\t\t\t<td>Sales Assistant</td>\n\t\t\t<td>Sidney</td>\n\t\t\t<td>23</td>\n\t\t\t<td>2010/09/20</td>\n\t\t\t<td>$85,600</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"even\">\n\t\t\t<td class=\"sorting_1\">Finn Camacho</td>\n\t\t\t<td>Support Engineer</td>\n\t\t\t<td>San Francisco</td>\n\t\t\t<td>47</td>\n\t\t\t<td>2009/07/07</td>\n\t\t\t<td>$87,500</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"odd\">\n\t\t\t<td class=\"sorting_1\">Fiona Green</td>\n\t\t\t<td>Chief Operating Officer (COO)</td>\n\t\t\t<td>San Francisco</td>\n\t\t\t<td>48</td>\n\t\t\t<td>2010/03/11</td>\n\t\t\t<td>$850,000</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"even\">\n\t\t\t<td class=\"sorting_1\">Garrett Winters</td>\n\t\t\t<td>Accountant</td>\n\t\t\t<td>Tokyo</td>\n\t\t\t<td>63</td>\n\t\t\t<td>2011/07/25</td>\n\t\t\t<td>$170,750</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"odd\">\n\t\t\t<td class=\"sorting_1\">Gavin Cortez</td>\n\t\t\t<td>Team Leader</td>\n\t\t\t<td>San Francisco</td>\n\t\t\t<td>22</td>\n\t\t\t<td>2008/10/26</td>\n\t\t\t<td>$235,500</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"even\">\n\t\t\t<td class=\"sorting_1\">Gavin Joyce</td>\n\t\t\t<td>Developer</td>\n\t\t\t<td>Edinburgh</td>\n\t\t\t<td>42</td>\n\t\t\t<td>2010/12/22</td>\n\t\t\t<td>$92,575</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"odd\">\n\t\t\t<td class=\"sorting_1\">Gloria Little</td>\n\t\t\t<td>Systems Administrator</td>\n\t\t\t<td>New York</td>\n\t\t\t<td>59</td>\n\t\t\t<td>2009/04/10</td>\n\t\t\t<td>$237,500</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"even\">\n\t\t\t<td class=\"sorting_1\">Haley Kennedy</td>\n\t\t\t<td>Senior Marketing Designer</td>\n\t\t\t<td>London</td>\n\t\t\t<td>43</td>\n\t\t\t<td>2012/12/18</td>\n\t\t\t<td>$313,500</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"odd\">\n\t\t\t<td class=\"sorting_1\">Hermione Butler</td>\n\t\t\t<td>Regional Director</td>\n\t\t\t<td>London</td>\n\t\t\t<td>47</td>\n\t\t\t<td>2011/03/21</td>\n\t\t\t<td>$356,250</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"even\">\n\t\t\t<td class=\"sorting_1\">Herrod Chandler</td>\n\t\t\t<td>Sales Assistant</td>\n\t\t\t<td>San Francisco</td>\n\t\t\t<td>59</td>\n\t\t\t<td>2012/08/06</td>\n\t\t\t<td>$137,500</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"odd\">\n\t\t\t<td class=\"sorting_1\">Hope Fuentes</td>\n\t\t\t<td>Secretary</td>\n\t\t\t<td>San Francisco</td>\n\t\t\t<td>41</td>\n\t\t\t<td>2010/02/12</td>\n\t\t\t<td>$109,850</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"even\">\n\t\t\t<td class=\"sorting_1\">Howard Hatfield</td>\n\t\t\t<td>Office Manager</td>\n\t\t\t<td>San Francisco</td>\n\t\t\t<td>51</td>\n\t\t\t<td>2008/12/16</td>\n\t\t\t<td>$164,500</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"odd\">\n\t\t\t<td class=\"sorting_1\">Jackson Bradshaw</td>\n\t\t\t<td>Director</td>\n\t\t\t<td>New York</td>\n\t\t\t<td>65</td>\n\t\t\t<td>2008/09/26</td>\n\t\t\t<td>$645,750</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"even\">\n\t\t\t<td class=\"sorting_1\">Jena Gaines</td>\n\t\t\t<td>Office Manager</td>\n\t\t\t<td>London</td>\n\t\t\t<td>30</td>\n\t\t\t<td>2008/12/19</td>\n\t\t\t<td>$90,560</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"odd\">\n\t\t\t<td class=\"sorting_1\">Jenette Caldwell</td>\n\t\t\t<td>Development Lead</td>\n\t\t\t<td>New York</td>\n\t\t\t<td>30</td>\n\t\t\t<td>2011/09/03</td>\n\t\t\t<td>$345,000</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"even\">\n\t\t\t<td class=\"sorting_1\">Jennifer Acosta</td>\n\t\t\t<td>Junior Javascript Developer</td>\n\t\t\t<td>Edinburgh</td>\n\t\t\t<td>43</td>\n\t\t\t<td>2013/02/01</td>\n\t\t\t<td>$75,650</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"odd\">\n\t\t\t<td class=\"sorting_1\">Jennifer Chang</td>\n\t\t\t<td>Regional Director</td>\n\t\t\t<td>Singapore</td>\n\t\t\t<td>28</td>\n\t\t\t<td>2010/11/14</td>\n\t\t\t<td>$357,650</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"even\">\n\t\t\t<td class=\"sorting_1\">Jonas Alexander</td>\n\t\t\t<td>Developer</td>\n\t\t\t<td>San Francisco</td>\n\t\t\t<td>30</td>\n\t\t\t<td>2010/07/14</td>\n\t\t\t<td>$86,500</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"odd\">\n\t\t\t<td class=\"sorting_1\">Lael Greer</td>\n\t\t\t<td>Systems Administrator</td>\n\t\t\t<td>London</td>\n\t\t\t<td>21</td>\n\t\t\t<td>2009/02/27</td>\n\t\t\t<td>$103,500</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"even\">\n\t\t\t<td class=\"sorting_1\">Martena Mccray</td>\n\t\t\t<td>Post-Sales support</td>\n\t\t\t<td>Edinburgh</td>\n\t\t\t<td>46</td>\n\t\t\t<td>2011/03/09</td>\n\t\t\t<td>$324,050</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"odd\">\n\t\t\t<td class=\"sorting_1\">Michael Bruce</td>\n\t\t\t<td>Javascript Developer</td>\n\t\t\t<td>Singapore</td>\n\t\t\t<td>29</td>\n\t\t\t<td>2011/06/27</td>\n\t\t\t<td>$183,000</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"even\">\n\t\t\t<td class=\"sorting_1\">Michael Silva</td>\n\t\t\t<td>Marketing Designer</td>\n\t\t\t<td>London</td>\n\t\t\t<td>66</td>\n\t\t\t<td>2012/11/27</td>\n\t\t\t<td>$198,500</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"odd\">\n\t\t\t<td class=\"sorting_1\">Michelle House</td>\n\t\t\t<td>Integration Specialist</td>\n\t\t\t<td>Sidney</td>\n\t\t\t<td>37</td>\n\t\t\t<td>2011/06/02</td>\n\t\t\t<td>$95,400</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"even\">\n\t\t\t<td class=\"sorting_1\">Olivia Liang</td>\n\t\t\t<td>Support Engineer</td>\n\t\t\t<td>Singapore</td>\n\t\t\t<td>64</td>\n\t\t\t<td>2011/02/03</td>\n\t\t\t<td>$234,500</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"odd\">\n\t\t\t<td class=\"sorting_1\">Paul Byrd</td>\n\t\t\t<td>Chief Financial Officer (CFO)</td>\n\t\t\t<td>New York</td>\n\t\t\t<td>64</td>\n\t\t\t<td>2010/06/09</td>\n\t\t\t<td>$725,000</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"even\">\n\t\t\t<td class=\"sorting_1\">Prescott Bartlett</td>\n\t\t\t<td>Technical Author</td>\n\t\t\t<td>London</td>\n\t\t\t<td>27</td>\n\t\t\t<td>2011/05/07</td>\n\t\t\t<td>$145,000</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"odd\">\n\t\t\t<td class=\"sorting_1\">Quinn Flynn</td>\n\t\t\t<td>Support Lead</td>\n\t\t\t<td>Edinburgh</td>\n\t\t\t<td>22</td>\n\t\t\t<td>2013/03/03</td>\n\t\t\t<td>$342,000</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"even\">\n\t\t\t<td class=\"sorting_1\">Rhona Davidson</td>\n\t\t\t<td>Integration Specialist</td>\n\t\t\t<td>Tokyo</td>\n\t\t\t<td>55</td>\n\t\t\t<td>2010/10/14</td>\n\t\t\t<td>$327,900</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"odd\">\n\t\t\t<td class=\"sorting_1\">Sakura Yamamoto</td>\n\t\t\t<td>Support Engineer</td>\n\t\t\t<td>Tokyo</td>\n\t\t\t<td>37</td>\n\t\t\t<td>2009/08/19</td>\n\t\t\t<td>$139,575</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"even\">\n\t\t\t<td class=\"sorting_1\">Serge Baldwin</td>\n\t\t\t<td>Data Coordinator</td>\n\t\t\t<td>Singapore</td>\n\t\t\t<td>64</td>\n\t\t\t<td>2012/04/09</td>\n\t\t\t<td>$138,575</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"odd\">\n\t\t\t<td class=\"sorting_1\">Shad Decker</td>\n\t\t\t<td>Regional Director</td>\n\t\t\t<td>Edinburgh</td>\n\t\t\t<td>51</td>\n\t\t\t<td>2008/11/13</td>\n\t\t\t<td>$183,000</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"even\">\n\t\t\t<td class=\"sorting_1\">Shou Itou</td>\n\t\t\t<td>Regional Marketing</td>\n\t\t\t<td>Tokyo</td>\n\t\t\t<td>20</td>\n\t\t\t<td>2011/08/14</td>\n\t\t\t<td>$163,000</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"odd\">\n\t\t\t<td class=\"sorting_1\">Sonya Frost</td>\n\t\t\t<td>Software Engineer</td>\n\t\t\t<td>Edinburgh</td>\n\t\t\t<td>23</td>\n\t\t\t<td>2008/12/13</td>\n\t\t\t<td>$103,600</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"even\">\n\t\t\t<td class=\"sorting_1\">Suki Burks</td>\n\t\t\t<td>Developer</td>\n\t\t\t<td>London</td>\n\t\t\t<td>53</td>\n\t\t\t<td>2009/10/22</td>\n\t\t\t<td>$114,500</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"odd\">\n\t\t\t<td class=\"sorting_1\">Tatyana Fitzpatrick</td>\n\t\t\t<td>Regional Director</td>\n\t\t\t<td>London</td>\n\t\t\t<td>19</td>\n\t\t\t<td>2010/03/17</td>\n\t\t\t<td>$385,750</td>\n\t\t</tr>\n\t\t<tr role=\"row\" class=\"even\">\n\t\t\t<td class=\"sorting_1\">Thor Walton</td>\n\t\t\t<td>Developer</td>\n\t\t\t<td>New York</td>\n\t\t\t<td>61</td>\n\t\t\t<td>2013/08/11</td>\n\t\t\t<td>$98,540</td>\n\t\t</tr>\n\t</tbody>\n</table>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/data-table2/to.html",
    "content": "<table id=\"example\" class=\"display dataTable\" cellspacing=\"0\" width=\"100%\" role=\"grid\" aria-describedby=\"example_info\" style=\"width: 100%;\">\n    <thead>\n        <tr role=\"row\">\n            <th class=\"sorting_desc\" tabindex=\"0\" aria-controls=\"example\" rowspan=\"1\" colspan=\"1\" aria-label=\"Name: activate to sort column ascending\" style=\"width: 137px;\" aria-sort=\"descending\">Name</th>\n            <th class=\"sorting\" tabindex=\"0\" aria-controls=\"example\" rowspan=\"1\" colspan=\"1\" aria-label=\"Position: activate to sort column ascending\" style=\"width: 214px;\">Position</th>\n            <th class=\"sorting\" tabindex=\"0\" aria-controls=\"example\" rowspan=\"1\" colspan=\"1\" aria-label=\"Office: activate to sort column ascending\" style=\"width: 103px;\">Office</th>\n            <th class=\"sorting\" tabindex=\"0\" aria-controls=\"example\" rowspan=\"1\" colspan=\"1\" aria-label=\"Age: activate to sort column ascending\" style=\"width: 41px;\">Age</th>\n            <th class=\"sorting\" tabindex=\"0\" aria-controls=\"example\" rowspan=\"1\" colspan=\"1\" aria-label=\"Start date: activate to sort column ascending\" style=\"width: 92px;\">Start date</th>\n            <th class=\"sorting\" tabindex=\"0\" aria-controls=\"example\" rowspan=\"1\" colspan=\"1\" aria-label=\"Salary: activate to sort column ascending\" style=\"width: 80px;\">Salary</th>\n        </tr>\n    </thead>\n    <tfoot>\n        <tr>\n            <th rowspan=\"1\" colspan=\"1\">Name</th>\n            <th rowspan=\"1\" colspan=\"1\">Position</th>\n            <th rowspan=\"1\" colspan=\"1\">Office</th>\n            <th rowspan=\"1\" colspan=\"1\">Age</th>\n            <th rowspan=\"1\" colspan=\"1\">Start date</th>\n            <th rowspan=\"1\" colspan=\"1\">Salary</th>\n        </tr>\n    </tfoot>\n    <tbody>\n        <tr role=\"row\" class=\"odd\">\n            <td class=\"sorting_1\">Zorita Serrano</td>\n            <td>Software Engineer</td>\n            <td>San Francisco</td>\n            <td>56</td>\n            <td>2012/06/01</td>\n            <td>$115,000</td>\n        </tr>\n        <tr role=\"row\" class=\"even\">\n            <td class=\"sorting_1\">Zenaida Frank</td>\n            <td>Software Engineer</td>\n            <td>New York</td>\n            <td>63</td>\n            <td>2010/01/04</td>\n            <td>$125,250</td>\n        </tr>\n        <tr role=\"row\" class=\"odd\">\n            <td class=\"sorting_1\">Yuri Berry</td>\n            <td>Chief Marketing Officer (CMO)</td>\n            <td>New York</td>\n            <td>40</td>\n            <td>2009/06/25</td>\n            <td>$675,000</td>\n        </tr>\n        <tr role=\"row\" class=\"even\">\n            <td class=\"sorting_1\">Vivian Harrell</td>\n            <td>Financial Controller</td>\n            <td>San Francisco</td>\n            <td>62</td>\n            <td>2009/02/14</td>\n            <td>$452,500</td>\n        </tr>\n        <tr role=\"row\" class=\"odd\">\n            <td class=\"sorting_1\">Unity Butler</td>\n            <td>Marketing Designer</td>\n            <td>San Francisco</td>\n            <td>47</td>\n            <td>2009/12/09</td>\n            <td>$85,675</td>\n        </tr>\n        <tr role=\"row\" class=\"even\">\n            <td class=\"sorting_1\">Timothy Mooney</td>\n            <td>Office Manager</td>\n            <td>London</td>\n            <td>37</td>\n            <td>2008/12/11</td>\n            <td>$136,200</td>\n        </tr>\n        <tr role=\"row\" class=\"odd\">\n            <td class=\"sorting_1\">Tiger Nixon</td>\n            <td>System Architect</td>\n            <td>Edinburgh</td>\n            <td>61</td>\n            <td>2011/04/25</td>\n            <td>$320,800</td>\n        </tr>\n        <tr role=\"row\" class=\"even\">\n            <td class=\"sorting_1\">Thor Walton</td>\n            <td>Developer</td>\n            <td>New York</td>\n            <td>61</td>\n            <td>2013/08/11</td>\n            <td>$98,540</td>\n        </tr>\n        <tr role=\"row\" class=\"odd\">\n            <td class=\"sorting_1\">Tatyana Fitzpatrick</td>\n            <td>Regional Director</td>\n            <td>London</td>\n            <td>19</td>\n            <td>2010/03/17</td>\n            <td>$385,750</td>\n        </tr>\n        <tr role=\"row\" class=\"even\">\n            <td class=\"sorting_1\">Suki Burks</td>\n            <td>Developer</td>\n            <td>London</td>\n            <td>53</td>\n            <td>2009/10/22</td>\n            <td>$114,500</td>\n        </tr>\n        <tr role=\"row\" class=\"odd\">\n            <td class=\"sorting_1\">Sonya Frost</td>\n            <td>Software Engineer</td>\n            <td>Edinburgh</td>\n            <td>23</td>\n            <td>2008/12/13</td>\n            <td>$103,600</td>\n        </tr>\n        <tr role=\"row\" class=\"even\">\n            <td class=\"sorting_1\">Shou Itou</td>\n            <td>Regional Marketing</td>\n            <td>Tokyo</td>\n            <td>20</td>\n            <td>2011/08/14</td>\n            <td>$163,000</td>\n        </tr>\n        <tr role=\"row\" class=\"odd\">\n            <td class=\"sorting_1\">Shad Decker</td>\n            <td>Regional Director</td>\n            <td>Edinburgh</td>\n            <td>51</td>\n            <td>2008/11/13</td>\n            <td>$183,000</td>\n        </tr>\n        <tr role=\"row\" class=\"even\">\n            <td class=\"sorting_1\">Serge Baldwin</td>\n            <td>Data Coordinator</td>\n            <td>Singapore</td>\n            <td>64</td>\n            <td>2012/04/09</td>\n            <td>$138,575</td>\n        </tr>\n        <tr role=\"row\" class=\"odd\">\n            <td class=\"sorting_1\">Sakura Yamamoto</td>\n            <td>Support Engineer</td>\n            <td>Tokyo</td>\n            <td>37</td>\n            <td>2009/08/19</td>\n            <td>$139,575</td>\n        </tr>\n        <tr role=\"row\" class=\"even\">\n            <td class=\"sorting_1\">Rhona Davidson</td>\n            <td>Integration Specialist</td>\n            <td>Tokyo</td>\n            <td>55</td>\n            <td>2010/10/14</td>\n            <td>$327,900</td>\n        </tr>\n        <tr role=\"row\" class=\"odd\">\n            <td class=\"sorting_1\">Quinn Flynn</td>\n            <td>Support Lead</td>\n            <td>Edinburgh</td>\n            <td>22</td>\n            <td>2013/03/03</td>\n            <td>$342,000</td>\n        </tr>\n        <tr role=\"row\" class=\"even\">\n            <td class=\"sorting_1\">Prescott Bartlett</td>\n            <td>Technical Author</td>\n            <td>London</td>\n            <td>27</td>\n            <td>2011/05/07</td>\n            <td>$145,000</td>\n        </tr>\n        <tr role=\"row\" class=\"odd\">\n            <td class=\"sorting_1\">Paul Byrd</td>\n            <td>Chief Financial Officer (CFO)</td>\n            <td>New York</td>\n            <td>64</td>\n            <td>2010/06/09</td>\n            <td>$725,000</td>\n        </tr>\n        <tr role=\"row\" class=\"even\">\n            <td class=\"sorting_1\">Olivia Liang</td>\n            <td>Support Engineer</td>\n            <td>Singapore</td>\n            <td>64</td>\n            <td>2011/02/03</td>\n            <td>$234,500</td>\n        </tr>\n        <tr role=\"row\" class=\"odd\">\n            <td class=\"sorting_1\">Michelle House</td>\n            <td>Integration Specialist</td>\n            <td>Sidney</td>\n            <td>37</td>\n            <td>2011/06/02</td>\n            <td>$95,400</td>\n        </tr>\n        <tr role=\"row\" class=\"even\">\n            <td class=\"sorting_1\">Michael Silva</td>\n            <td>Marketing Designer</td>\n            <td>London</td>\n            <td>66</td>\n            <td>2012/11/27</td>\n            <td>$198,500</td>\n        </tr>\n        <tr role=\"row\" class=\"odd\">\n            <td class=\"sorting_1\">Michael Bruce</td>\n            <td>Javascript Developer</td>\n            <td>Singapore</td>\n            <td>29</td>\n            <td>2011/06/27</td>\n            <td>$183,000</td>\n        </tr>\n        <tr role=\"row\" class=\"even\">\n            <td class=\"sorting_1\">Martena Mccray</td>\n            <td>Post-Sales support</td>\n            <td>Edinburgh</td>\n            <td>46</td>\n            <td>2011/03/09</td>\n            <td>$324,050</td>\n        </tr>\n        <tr role=\"row\" class=\"odd\">\n            <td class=\"sorting_1\">Lael Greer</td>\n            <td>Systems Administrator</td>\n            <td>London</td>\n            <td>21</td>\n            <td>2009/02/27</td>\n            <td>$103,500</td>\n        </tr>\n        <tr role=\"row\" class=\"even\">\n            <td class=\"sorting_1\">Jonas Alexander</td>\n            <td>Developer</td>\n            <td>San Francisco</td>\n            <td>30</td>\n            <td>2010/07/14</td>\n            <td>$86,500</td>\n        </tr>\n        <tr role=\"row\" class=\"odd\">\n            <td class=\"sorting_1\">Jennifer Chang</td>\n            <td>Regional Director</td>\n            <td>Singapore</td>\n            <td>28</td>\n            <td>2010/11/14</td>\n            <td>$357,650</td>\n        </tr>\n        <tr role=\"row\" class=\"even\">\n            <td class=\"sorting_1\">Jennifer Acosta</td>\n            <td>Junior Javascript Developer</td>\n            <td>Edinburgh</td>\n            <td>43</td>\n            <td>2013/02/01</td>\n            <td>$75,650</td>\n        </tr>\n        <tr role=\"row\" class=\"odd\">\n            <td class=\"sorting_1\">Jenette Caldwell</td>\n            <td>Development Lead</td>\n            <td>New York</td>\n            <td>30</td>\n            <td>2011/09/03</td>\n            <td>$345,000</td>\n        </tr>\n        <tr role=\"row\" class=\"even\">\n            <td class=\"sorting_1\">Jena Gaines</td>\n            <td>Office Manager</td>\n            <td>London</td>\n            <td>30</td>\n            <td>2008/12/19</td>\n            <td>$90,560</td>\n        </tr>\n        <tr role=\"row\" class=\"odd\">\n            <td class=\"sorting_1\">Jackson Bradshaw</td>\n            <td>Director</td>\n            <td>New York</td>\n            <td>65</td>\n            <td>2008/09/26</td>\n            <td>$645,750</td>\n        </tr>\n        <tr role=\"row\" class=\"even\">\n            <td class=\"sorting_1\">Howard Hatfield</td>\n            <td>Office Manager</td>\n            <td>San Francisco</td>\n            <td>51</td>\n            <td>2008/12/16</td>\n            <td>$164,500</td>\n        </tr>\n        <tr role=\"row\" class=\"odd\">\n            <td class=\"sorting_1\">Hope Fuentes</td>\n            <td>Secretary</td>\n            <td>San Francisco</td>\n            <td>41</td>\n            <td>2010/02/12</td>\n            <td>$109,850</td>\n        </tr>\n        <tr role=\"row\" class=\"even\">\n            <td class=\"sorting_1\">Herrod Chandler</td>\n            <td>Sales Assistant</td>\n            <td>San Francisco</td>\n            <td>59</td>\n            <td>2012/08/06</td>\n            <td>$137,500</td>\n        </tr>\n        <tr role=\"row\" class=\"odd\">\n            <td class=\"sorting_1\">Hermione Butler</td>\n            <td>Regional Director</td>\n            <td>London</td>\n            <td>47</td>\n            <td>2011/03/21</td>\n            <td>$356,250</td>\n        </tr>\n        <tr role=\"row\" class=\"even\">\n            <td class=\"sorting_1\">Haley Kennedy</td>\n            <td>Senior Marketing Designer</td>\n            <td>London</td>\n            <td>43</td>\n            <td>2012/12/18</td>\n            <td>$313,500</td>\n        </tr>\n        <tr role=\"row\" class=\"odd\">\n            <td class=\"sorting_1\">Gloria Little</td>\n            <td>Systems Administrator</td>\n            <td>New York</td>\n            <td>59</td>\n            <td>2009/04/10</td>\n            <td>$237,500</td>\n        </tr>\n        <tr role=\"row\" class=\"even\">\n            <td class=\"sorting_1\">Gavin Joyce</td>\n            <td>Developer</td>\n            <td>Edinburgh</td>\n            <td>42</td>\n            <td>2010/12/22</td>\n            <td>$92,575</td>\n        </tr>\n        <tr role=\"row\" class=\"odd\">\n            <td class=\"sorting_1\">Gavin Cortez</td>\n            <td>Team Leader</td>\n            <td>San Francisco</td>\n            <td>22</td>\n            <td>2008/10/26</td>\n            <td>$235,500</td>\n        </tr>\n        <tr role=\"row\" class=\"even\">\n            <td class=\"sorting_1\">Garrett Winters</td>\n            <td>Accountant</td>\n            <td>Tokyo</td>\n            <td>63</td>\n            <td>2011/07/25</td>\n            <td>$170,750</td>\n        </tr>\n        <tr role=\"row\" class=\"odd\">\n            <td class=\"sorting_1\">Fiona Green</td>\n            <td>Chief Operating Officer (COO)</td>\n            <td>San Francisco</td>\n            <td>48</td>\n            <td>2010/03/11</td>\n            <td>$850,000</td>\n        </tr>\n        <tr role=\"row\" class=\"even\">\n            <td class=\"sorting_1\">Finn Camacho</td>\n            <td>Support Engineer</td>\n            <td>San Francisco</td>\n            <td>47</td>\n            <td>2009/07/07</td>\n            <td>$87,500</td>\n        </tr>\n        <tr role=\"row\" class=\"odd\">\n            <td class=\"sorting_1\">Doris Wilder</td>\n            <td>Sales Assistant</td>\n            <td>Sidney</td>\n            <td>23</td>\n            <td>2010/09/20</td>\n            <td>$85,600</td>\n        </tr>\n        <tr role=\"row\" class=\"even\">\n            <td class=\"sorting_1\">Donna Snider</td>\n            <td>Customer Support</td>\n            <td>New York</td>\n            <td>27</td>\n            <td>2011/01/25</td>\n            <td>$112,000</td>\n        </tr>\n        <tr role=\"row\" class=\"odd\">\n            <td class=\"sorting_1\">Dai Rios</td>\n            <td>Personnel Lead</td>\n            <td>Edinburgh</td>\n            <td>35</td>\n            <td>2012/09/26</td>\n            <td>$217,500</td>\n        </tr>\n        <tr role=\"row\" class=\"even\">\n            <td class=\"sorting_1\">Colleen Hurst</td>\n            <td>Javascript Developer</td>\n            <td>San Francisco</td>\n            <td>39</td>\n            <td>2009/09/15</td>\n            <td>$205,500</td>\n        </tr>\n        <tr role=\"row\" class=\"odd\">\n            <td class=\"sorting_1\">Charde Marshall</td>\n            <td>Regional Director</td>\n            <td>San Francisco</td>\n            <td>36</td>\n            <td>2008/10/16</td>\n            <td>$470,600</td>\n        </tr>\n        <tr role=\"row\" class=\"even\">\n            <td class=\"sorting_1\">Cedric Kelly</td>\n            <td>Senior Javascript Developer</td>\n            <td>Edinburgh</td>\n            <td>22</td>\n            <td>2012/03/29</td>\n            <td>$433,060</td>\n        </tr>\n        <tr role=\"row\" class=\"odd\">\n            <td class=\"sorting_1\">Cara Stevens</td>\n            <td>Sales Assistant</td>\n            <td>New York</td>\n            <td>46</td>\n            <td>2011/12/06</td>\n            <td>$145,600</td>\n        </tr>\n        <tr role=\"row\" class=\"even\">\n            <td class=\"sorting_1\">Caesar Vance</td>\n            <td>Pre-Sales Support</td>\n            <td>New York</td>\n            <td>21</td>\n            <td>2011/12/12</td>\n            <td>$106,450</td>\n        </tr>\n    </tbody>\n</table>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/equal/expected.html",
    "content": "<SECTION id=\"todoapp\">\n  \"\\n    \"\n  <DIV id=\"w0\">\n    \"\\n        \"\n    <HEADER id=\"header\">\n      \"\\n            \"\n      <H1>\n        \"todos\"\n      \"\\n            \"\n      <FORM data-w-onsubmit=\"handleFormSubmit|header\">\n        \"\\n                \"\n        <INPUT id=\"new-todo\" placeholder=\"What needs to be done?\">\n        \"\\n            \"\n      \"\\n        \"\n    \"\\n        \"\n    <SECTION id=\"main\">\n      \"\\n            \"\n      <INPUT data-w-onchange=\"handleToggleAllOnChange|main\" id=\"toggle-all\" type=\"checkbox\">\n      \"\\n            \"\n      <LABEL for=\"toggle-all\">\n        \"Mark all as complete\"\n      \"\\n            \"\n      <UL id=\"todo-list\">\n        \"\\n                \"\n        <LI id=\"main-todo-0\">\n          \"\\n                    \"\n          <DIV class=\"view\">\n            \"\\n                        \"\n            <INPUT aria-label=\"Toggle todo completed\" class=\"toggle\" data-w-onchange=\"handleCheckboxChange|main-todo-0\" type=\"checkbox\">\n            \"\\n                        \"\n            <LABEL data-w-ondblclick=\"handleLabelDblClick|main-todo-0\">\n              \"Go to the grocery store\"\n            \"\\n                        \"\n            <BUTTON aria-label=\"Delete todo\" class=\"destroy\" data-w-onclick=\"handleDestroyClick|main-todo-0\">\n            \"\\n                    \"\n          \"\\n                    \"\n          <INPUT class=\"edit\" data-w-onchange=\"handleInputChange|main-todo-0\" data-w-onkeydown=\"handleInputKeyDown|main-todo-0\" id=\"main-todo-0-titleInput\" title=\"Enter the new todo title\" type=\"text\">\n          \"\\n                \"\n        \"\\n                \"\n        <LI class=\"completed\" id=\"main-todo-1\">\n          \"\\n                    \"\n          <DIV class=\"view\">\n            \"\\n                        \"\n            <INPUT aria-label=\"Toggle todo completed\" checked=\"\" class=\"toggle\" data-w-onchange=\"handleCheckboxChange|main-todo-1\" type=\"checkbox\">\n            \"\\n                        \"\n            <LABEL data-w-ondblclick=\"handleLabelDblClick|main-todo-1\">\n              \"Ship item\"\n            \"\\n                        \"\n            <BUTTON aria-label=\"Delete todo\" class=\"destroy\" data-w-onclick=\"handleDestroyClick|main-todo-1\">\n            \"\\n                    \"\n          \"\\n                    \"\n          <INPUT class=\"edit\" data-w-onchange=\"handleInputChange|main-todo-1\" data-w-onkeydown=\"handleInputKeyDown|main-todo-1\" id=\"main-todo-1-titleInput\" title=\"Enter the new todo title\" type=\"text\">\n          \"\\n                \"\n        \"\\n                \"\n        <LI id=\"main-todo-2\">\n          \"\\n                    \"\n          <DIV class=\"view\">\n            \"\\n                        \"\n            <INPUT aria-label=\"Toggle todo completed\" class=\"toggle\" data-w-onchange=\"handleCheckboxChange|main-todo-2\" type=\"checkbox\">\n            \"\\n                        \"\n            <LABEL data-w-ondblclick=\"handleLabelDblClick|main-todo-2\">\n              \"Respond to email\"\n            \"\\n                        \"\n            <BUTTON aria-label=\"Delete todo\" class=\"destroy\" data-w-onclick=\"handleDestroyClick|main-todo-2\">\n            \"\\n                    \"\n          \"\\n                    \"\n          <INPUT class=\"edit\" data-w-onchange=\"handleInputChange|main-todo-2\" data-w-onkeydown=\"handleInputKeyDown|main-todo-2\" id=\"main-todo-2-titleInput\" title=\"Enter the new todo title\" type=\"text\">\n          \"\\n                \"\n        \"\\n                \"\n        <LI id=\"main-todo-3\">\n          \"\\n                    \"\n          <DIV class=\"view\">\n            \"\\n                        \"\n            <INPUT aria-label=\"Toggle todo completed\" class=\"toggle\" data-w-onchange=\"handleCheckboxChange|main-todo-3\" type=\"checkbox\">\n            \"\\n                        \"\n            <LABEL data-w-ondblclick=\"handleLabelDblClick|main-todo-3\">\n              \"Foo\"\n            \"\\n                        \"\n            <BUTTON aria-label=\"Delete todo\" class=\"destroy\" data-w-onclick=\"handleDestroyClick|main-todo-3\">\n            \"\\n                    \"\n          \"\\n                    \"\n          <INPUT class=\"edit\" data-w-onchange=\"handleInputChange|main-todo-3\" data-w-onkeydown=\"handleInputKeyDown|main-todo-3\" id=\"main-todo-3-titleInput\" title=\"Enter the new todo title\" type=\"text\">\n          \"\\n                \"\n        \"\\n                \"\n        <LI id=\"main-todo-4\">\n          \"\\n                    \"\n          <DIV class=\"view\">\n            \"\\n                        \"\n            <INPUT aria-label=\"Toggle todo completed\" class=\"toggle\" data-w-onchange=\"handleCheckboxChange|main-todo-4\" type=\"checkbox\">\n            \"\\n                        \"\n            <LABEL data-w-ondblclick=\"handleLabelDblClick|main-todo-4\">\n              \"Bar\"\n            \"\\n                        \"\n            <BUTTON aria-label=\"Delete todo\" class=\"destroy\" data-w-onclick=\"handleDestroyClick|main-todo-4\">\n            \"\\n                    \"\n          \"\\n                    \"\n          <INPUT class=\"edit\" data-w-onchange=\"handleInputChange|main-todo-4\" data-w-onkeydown=\"handleInputKeyDown|main-todo-4\" id=\"main-todo-4-titleInput\" title=\"Enter the new todo title\" type=\"text\">\n          \"\\n                \"\n        \"\\n                \"\n        <LI id=\"main-todo-5\">\n          \"\\n                    \"\n          <DIV class=\"view\">\n            \"\\n                        \"\n            <INPUT aria-label=\"Toggle todo completed\" class=\"toggle\" data-w-onchange=\"handleCheckboxChange|main-todo-5\" type=\"checkbox\">\n            \"\\n                        \"\n            <LABEL data-w-ondblclick=\"handleLabelDblClick|main-todo-5\">\n              \"Baz\"\n            \"\\n                        \"\n            <BUTTON aria-label=\"Delete todo\" class=\"destroy\" data-w-onclick=\"handleDestroyClick|main-todo-5\">\n            \"\\n                    \"\n          \"\\n                    \"\n          <INPUT class=\"edit\" data-w-onchange=\"handleInputChange|main-todo-5\" data-w-onkeydown=\"handleInputKeyDown|main-todo-5\" id=\"main-todo-5-titleInput\" title=\"Enter the new todo title\" type=\"text\">\n          \"\\n                \"\n        \"\\n            \"\n      \"\\n        \"\n    \"\\n        \"\n    <FOOTER id=\"footer\">\n      \"\\n            \"\n      <SPAN id=\"todo-count\">\n        \"\\n                \"\n        <STRONG>\n          \"5\"\n        \" items left\"\n      \"\\n            \"\n      <UL id=\"filters\">\n        \"\\n                \"\n        <LI>\n          <A class=\"selected\" data-w-onclick=\"handleAllFilterClick|footer\" href=\"#/\">\n            \"All\"\n        \"\\n                \"\n        <LI>\n          <A data-w-onclick=\"handleActiveFilterClick|footer\" href=\"#/active\">\n            \"Active\"\n        \"\\n                \"\n        <LI>\n          <A data-w-onclick=\"handleCompletedFilterClick|footer\" href=\"#/completed\">\n            \"Completed\"\n        \"\\n            \"\n      \"\\n            \"\n      <BUTTON data-w-onclick=\"handleClearCompletedClick|footer\" id=\"clear-completed\">\n        \"Clear completed (1)\"\n      \"\\n        \"\n    \"\\n    \"\n  \"\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/equal/from.html",
    "content": "<section id=\"todoapp\">\n    <div id=\"w0\">\n        <header id=\"header\">\n            <h1>todos</h1>\n            <form data-w-onsubmit=\"handleFormSubmit|header\">\n                <input id=\"new-todo\" placeholder=\"What needs to be done?\">\n            </form>\n        </header>\n        <section id=\"main\">\n            <input id=\"toggle-all\" type=\"checkbox\" data-w-onchange=\"handleToggleAllOnChange|main\">\n            <label for=\"toggle-all\">Mark all as complete</label>\n            <ul id=\"todo-list\">\n                <li id=\"main-todo-0\">\n                    <div class=\"view\">\n                        <input class=\"toggle\" type=\"checkbox\" aria-label=\"Toggle todo completed\" data-w-onchange=\"handleCheckboxChange|main-todo-0\">\n                        <label data-w-ondblclick=\"handleLabelDblClick|main-todo-0\">Go to the grocery store</label>\n                        <button class=\"destroy\" aria-label=\"Delete todo\" data-w-onclick=\"handleDestroyClick|main-todo-0\"></button>\n                    </div>\n                    <input title=\"Enter the new todo title\" type=\"text\" class=\"edit\" id=\"main-todo-0-titleInput\" data-w-onchange=\"handleInputChange|main-todo-0\" data-w-onkeydown=\"handleInputKeyDown|main-todo-0\">\n                </li>\n                <li class=\"completed\" id=\"main-todo-1\">\n                    <div class=\"view\">\n                        <input class=\"toggle\" type=\"checkbox\" checked=\"\" aria-label=\"Toggle todo completed\" data-w-onchange=\"handleCheckboxChange|main-todo-1\">\n                        <label data-w-ondblclick=\"handleLabelDblClick|main-todo-1\">Ship item</label>\n                        <button class=\"destroy\" aria-label=\"Delete todo\" data-w-onclick=\"handleDestroyClick|main-todo-1\"></button>\n                    </div>\n                    <input title=\"Enter the new todo title\" type=\"text\" class=\"edit\" id=\"main-todo-1-titleInput\" data-w-onchange=\"handleInputChange|main-todo-1\" data-w-onkeydown=\"handleInputKeyDown|main-todo-1\">\n                </li>\n                <li id=\"main-todo-2\">\n                    <div class=\"view\">\n                        <input class=\"toggle\" type=\"checkbox\" aria-label=\"Toggle todo completed\" data-w-onchange=\"handleCheckboxChange|main-todo-2\">\n                        <label data-w-ondblclick=\"handleLabelDblClick|main-todo-2\">Respond to email</label>\n                        <button class=\"destroy\" aria-label=\"Delete todo\" data-w-onclick=\"handleDestroyClick|main-todo-2\"></button>\n                    </div>\n                    <input title=\"Enter the new todo title\" type=\"text\" class=\"edit\" id=\"main-todo-2-titleInput\" data-w-onchange=\"handleInputChange|main-todo-2\" data-w-onkeydown=\"handleInputKeyDown|main-todo-2\">\n                </li>\n                <li id=\"main-todo-3\">\n                    <div class=\"view\">\n                        <input class=\"toggle\" type=\"checkbox\" aria-label=\"Toggle todo completed\" data-w-onchange=\"handleCheckboxChange|main-todo-3\">\n                        <label data-w-ondblclick=\"handleLabelDblClick|main-todo-3\">Foo</label>\n                        <button class=\"destroy\" aria-label=\"Delete todo\" data-w-onclick=\"handleDestroyClick|main-todo-3\"></button>\n                    </div>\n                    <input title=\"Enter the new todo title\" type=\"text\" class=\"edit\" id=\"main-todo-3-titleInput\" data-w-onchange=\"handleInputChange|main-todo-3\" data-w-onkeydown=\"handleInputKeyDown|main-todo-3\">\n                </li>\n                <li id=\"main-todo-4\">\n                    <div class=\"view\">\n                        <input class=\"toggle\" type=\"checkbox\" aria-label=\"Toggle todo completed\" data-w-onchange=\"handleCheckboxChange|main-todo-4\">\n                        <label data-w-ondblclick=\"handleLabelDblClick|main-todo-4\">Bar</label>\n                        <button class=\"destroy\" aria-label=\"Delete todo\" data-w-onclick=\"handleDestroyClick|main-todo-4\"></button>\n                    </div>\n                    <input title=\"Enter the new todo title\" type=\"text\" class=\"edit\" id=\"main-todo-4-titleInput\" data-w-onchange=\"handleInputChange|main-todo-4\" data-w-onkeydown=\"handleInputKeyDown|main-todo-4\">\n                </li>\n                <li id=\"main-todo-5\">\n                    <div class=\"view\">\n                        <input class=\"toggle\" type=\"checkbox\" aria-label=\"Toggle todo completed\" data-w-onchange=\"handleCheckboxChange|main-todo-5\">\n                        <label data-w-ondblclick=\"handleLabelDblClick|main-todo-5\">Baz</label>\n                        <button class=\"destroy\" aria-label=\"Delete todo\" data-w-onclick=\"handleDestroyClick|main-todo-5\"></button>\n                    </div>\n                    <input title=\"Enter the new todo title\" type=\"text\" class=\"edit\" id=\"main-todo-5-titleInput\" data-w-onchange=\"handleInputChange|main-todo-5\" data-w-onkeydown=\"handleInputKeyDown|main-todo-5\">\n                </li>\n            </ul>\n        </section>\n        <footer id=\"footer\">\n            <span id=\"todo-count\">\n                <strong>5</strong> items left</span>\n            <ul id=\"filters\">\n                <li><a href=\"#/\" class=\"selected\" data-w-onclick=\"handleAllFilterClick|footer\">All</a></li>\n                <li><a href=\"#/active\" data-w-onclick=\"handleActiveFilterClick|footer\">Active</a></li>\n                <li><a href=\"#/completed\" data-w-onclick=\"handleCompletedFilterClick|footer\">Completed</a></li>\n            </ul>\n            <button id=\"clear-completed\" data-w-onclick=\"handleClearCompletedClick|footer\">Clear completed (1)</button>\n        </footer>\n    </div>\n</section>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/equal/to.html",
    "content": "<section id=\"todoapp\">\n    <div id=\"w0\">\n        <header id=\"header\">\n            <h1>todos</h1>\n            <form data-w-onsubmit=\"handleFormSubmit|header\">\n                <input id=\"new-todo\" placeholder=\"What needs to be done?\">\n            </form>\n        </header>\n        <section id=\"main\">\n            <input id=\"toggle-all\" type=\"checkbox\" data-w-onchange=\"handleToggleAllOnChange|main\">\n            <label for=\"toggle-all\">Mark all as complete</label>\n            <ul id=\"todo-list\">\n                <li id=\"main-todo-0\">\n                    <div class=\"view\">\n                        <input class=\"toggle\" type=\"checkbox\" aria-label=\"Toggle todo completed\" data-w-onchange=\"handleCheckboxChange|main-todo-0\">\n                        <label data-w-ondblclick=\"handleLabelDblClick|main-todo-0\">Go to the grocery store</label>\n                        <button class=\"destroy\" aria-label=\"Delete todo\" data-w-onclick=\"handleDestroyClick|main-todo-0\"></button>\n                    </div>\n                    <input title=\"Enter the new todo title\" type=\"text\" class=\"edit\" id=\"main-todo-0-titleInput\" data-w-onchange=\"handleInputChange|main-todo-0\" data-w-onkeydown=\"handleInputKeyDown|main-todo-0\">\n                </li>\n                <li class=\"completed\" id=\"main-todo-1\">\n                    <div class=\"view\">\n                        <input class=\"toggle\" type=\"checkbox\" checked=\"\" aria-label=\"Toggle todo completed\" data-w-onchange=\"handleCheckboxChange|main-todo-1\">\n                        <label data-w-ondblclick=\"handleLabelDblClick|main-todo-1\">Ship item</label>\n                        <button class=\"destroy\" aria-label=\"Delete todo\" data-w-onclick=\"handleDestroyClick|main-todo-1\"></button>\n                    </div>\n                    <input title=\"Enter the new todo title\" type=\"text\" class=\"edit\" id=\"main-todo-1-titleInput\" data-w-onchange=\"handleInputChange|main-todo-1\" data-w-onkeydown=\"handleInputKeyDown|main-todo-1\">\n                </li>\n                <li id=\"main-todo-2\">\n                    <div class=\"view\">\n                        <input class=\"toggle\" type=\"checkbox\" aria-label=\"Toggle todo completed\" data-w-onchange=\"handleCheckboxChange|main-todo-2\">\n                        <label data-w-ondblclick=\"handleLabelDblClick|main-todo-2\">Respond to email</label>\n                        <button class=\"destroy\" aria-label=\"Delete todo\" data-w-onclick=\"handleDestroyClick|main-todo-2\"></button>\n                    </div>\n                    <input title=\"Enter the new todo title\" type=\"text\" class=\"edit\" id=\"main-todo-2-titleInput\" data-w-onchange=\"handleInputChange|main-todo-2\" data-w-onkeydown=\"handleInputKeyDown|main-todo-2\">\n                </li>\n                <li id=\"main-todo-3\">\n                    <div class=\"view\">\n                        <input class=\"toggle\" type=\"checkbox\" aria-label=\"Toggle todo completed\" data-w-onchange=\"handleCheckboxChange|main-todo-3\">\n                        <label data-w-ondblclick=\"handleLabelDblClick|main-todo-3\">Foo</label>\n                        <button class=\"destroy\" aria-label=\"Delete todo\" data-w-onclick=\"handleDestroyClick|main-todo-3\"></button>\n                    </div>\n                    <input title=\"Enter the new todo title\" type=\"text\" class=\"edit\" id=\"main-todo-3-titleInput\" data-w-onchange=\"handleInputChange|main-todo-3\" data-w-onkeydown=\"handleInputKeyDown|main-todo-3\">\n                </li>\n                <li id=\"main-todo-4\">\n                    <div class=\"view\">\n                        <input class=\"toggle\" type=\"checkbox\" aria-label=\"Toggle todo completed\" data-w-onchange=\"handleCheckboxChange|main-todo-4\">\n                        <label data-w-ondblclick=\"handleLabelDblClick|main-todo-4\">Bar</label>\n                        <button class=\"destroy\" aria-label=\"Delete todo\" data-w-onclick=\"handleDestroyClick|main-todo-4\"></button>\n                    </div>\n                    <input title=\"Enter the new todo title\" type=\"text\" class=\"edit\" id=\"main-todo-4-titleInput\" data-w-onchange=\"handleInputChange|main-todo-4\" data-w-onkeydown=\"handleInputKeyDown|main-todo-4\">\n                </li>\n                <li id=\"main-todo-5\">\n                    <div class=\"view\">\n                        <input class=\"toggle\" type=\"checkbox\" aria-label=\"Toggle todo completed\" data-w-onchange=\"handleCheckboxChange|main-todo-5\">\n                        <label data-w-ondblclick=\"handleLabelDblClick|main-todo-5\">Baz</label>\n                        <button class=\"destroy\" aria-label=\"Delete todo\" data-w-onclick=\"handleDestroyClick|main-todo-5\"></button>\n                    </div>\n                    <input title=\"Enter the new todo title\" type=\"text\" class=\"edit\" id=\"main-todo-5-titleInput\" data-w-onchange=\"handleInputChange|main-todo-5\" data-w-onkeydown=\"handleInputKeyDown|main-todo-5\">\n                </li>\n            </ul>\n        </section>\n        <footer id=\"footer\">\n            <span id=\"todo-count\">\n                <strong>5</strong> items left</span>\n            <ul id=\"filters\">\n                <li><a href=\"#/\" class=\"selected\" data-w-onclick=\"handleAllFilterClick|footer\">All</a></li>\n                <li><a href=\"#/active\" data-w-onclick=\"handleActiveFilterClick|footer\">Active</a></li>\n                <li><a href=\"#/completed\" data-w-onclick=\"handleCompletedFilterClick|footer\">Completed</a></li>\n            </ul>\n            <button id=\"clear-completed\" data-w-onclick=\"handleClearCompletedClick|footer\">Clear completed (1)</button>\n        </footer>\n    </div>\n</section>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/id-change-tag-name/expected.html",
    "content": "<DIV>\n  <DIV id=\"boo\">\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/id-change-tag-name/from.html",
    "content": "<div><span id=\"boo\" class=\"foo\"></span></div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/id-change-tag-name/to.html",
    "content": "<div><div id=\"boo\"></div></div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/ids-nested/expected.html",
    "content": "<DIV>\n  <I id=\"foo\">\n    \"foo\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/ids-nested/from.html",
    "content": "<div><b><i id=\"foo\">foo</i>bar</b></div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/ids-nested/to.html",
    "content": "<div><i id=\"foo\">foo</i></div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/ids-nested-2/expected.html",
    "content": "<DIV>\n  <I id=\"foo\">\n    <S>\n      \"strikethrough\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/ids-nested-2/from.html",
    "content": "<div><b><i id=\"foo\"><strong>strong</strong>test</i>bar</b></div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/ids-nested-2/to.html",
    "content": "<div><i id=\"foo\"><s>strikethrough</s></i></div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/ids-nested-3/expected.html",
    "content": "<DIV>\n  <S>\n    \"strikethrough\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/ids-nested-3/from.html",
    "content": "<div><b><i id=\"foo\"><strong id=\"bar\">strong</strong>test</i>bar</b></div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/ids-nested-3/to.html",
    "content": "<div><s>strikethrough</s></div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/ids-nested-4/expected.html",
    "content": "<DIV id=\"root\">\n  <DIV id=\"foo\">\n    <B id=\"foo-bold\">\n      \"foo\"\n  <DIV id=\"bar\">\n    <B id=\"bar-bold\">\n      \"bar\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/ids-nested-4/from.html",
    "content": "<div id=\"root\"><div id=\"bar\"><b id=\"bar-bold\">bold</b></div></div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/ids-nested-4/to.html",
    "content": "<div id=\"root\"><div id=\"foo\"><b id=\"foo-bold\">foo</b></div><div id=\"bar\"><b id=\"bar-bold\">bar</b></div></div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/ids-nested-5/expected.html",
    "content": "<DIV>\n  \"\\n    \"\n  <DIV id=\"foo\">\n    \"\\n        \"\n    <B id=\"foo-bold\">\n      \"foo\"\n    \"\\n    \"\n  \"\\n    \"\n  <DIV id=\"bar\">\n    \"\\n        \"\n    <I id=\"bar-italics\">\n      \"bar\"\n    \"\\n    \"\n  \"\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/ids-nested-5/from.html",
    "content": "<div>\n    <div id=\"bar\">\n        <b id=\"bar-bold\">bold</b>\n    </div>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/ids-nested-5/to.html",
    "content": "<div>\n    <div id=\"foo\">\n        <b id=\"foo-bold\">foo</b>\n    </div>\n    <div id=\"bar\">\n        <i id=\"bar-italics\">bar</i>\n    </div>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/ids-nested-6/expected.html",
    "content": "<DIV>\n  \"\\n    \"\n  <B id=\"foo-bold\">\n    \"\\n        \"\n    <DIV id=\"foo\">\n      \"\\n            foo\\n        \"\n    \"\\n    \"\n  \"\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/ids-nested-6/from.html",
    "content": "<div>\n    <div id=\"bar\">\n        <b id=\"bar-bold\">foo</b>\n    </div>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/ids-nested-6/to.html",
    "content": "<div>\n    <b id=\"foo-bold\">\n        <div id=\"foo\">\n            foo\n        </div>\n    </b>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/ids-nested-7/expected.html",
    "content": "<DIV>\n  <B>\n    <I id=\"foo\">\n      \"foo\"\n    \"bar\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/ids-nested-7/from.html",
    "content": "<div><i id=\"foo\">foo</i></div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/ids-nested-7/to.html",
    "content": "<div><b><i id=\"foo\">foo</i>bar</b></div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/ids-prepend/expected.html",
    "content": "<DIV id=\"w0\">\n  <I>\n  <B id=\"w1\">\n    \"W1\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/ids-prepend/from.html",
    "content": "<div id=\"w0\"><b id=\"w1\">W1</b></div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/ids-prepend/to.html",
    "content": "<div id=\"w0\"><i></i><b id=\"w1\">W1</b></div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/incompatible-root-tag/expected.html",
    "content": "<P>\n  \"\\n    \"\n  <SPAN>\n    \"span\"\n  \"\\n    \"\n  <STRONG>\n    \"strong\\n\"\n<STRONG>\n  \"\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/incompatible-root-tag/from.html",
    "content": "<div>\n    <span>span</span>\n    <strong>strong</span>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/incompatible-root-tag/to.html",
    "content": "<p>\n    <span>span</span>\n    <strong>strong</span>\n</p>\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/incompatible-root-tag-with-keyed-child/expected.html",
    "content": "<P>\n  \"\\n    \"\n  <SPAN key=\"foo\">\n    \"span\"\n  \"\\n    \"\n  <STRONG>\n    \"strong\\n\"\n<STRONG>\n  \"\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/incompatible-root-tag-with-keyed-child/from.html",
    "content": "<div>\n    <span key=\"foo\">span</span>\n    <strong>strong</span>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/incompatible-root-tag-with-keyed-child/to.html",
    "content": "<p>\n    <span key=\"foo\">span</span>\n    <strong>strong</span>\n</p>\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/input-element/expected.html",
    "content": "<DIV>\n  \"\\n    \"\n  <INPUT disabled=\"\" type=\"text\" value=\"Hello World 2\">\n  \"\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/input-element/from.html",
    "content": "<div>\n    <input type=\"text\" disabled value=\"Hello World\">\n</div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/input-element/to.html",
    "content": "<div>\n    <input type=\"text\" disabled value=\"Hello World 2\">\n</div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/input-element-disabled/expected.html",
    "content": "<INPUT disabled=\"\" type=\"text\" value=\"Hello World\">\n\"\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/input-element-disabled/from.html",
    "content": "<input type=\"text\" value=\"Hello World\">"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/input-element-disabled/index.js",
    "content": "exports.verify = function (context, expect) {\n  var rootNode = context.rootNode;\n  var input = rootNode.querySelector(\"input\");\n  expect(input.disabled).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/input-element-disabled/to.html",
    "content": "<input type=\"text\" value=\"Hello World\" disabled>\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/input-element-enabled/expected.html",
    "content": "<INPUT type=\"text\" value=\"Hello World\">\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/input-element-enabled/from.html",
    "content": "<input type=\"text\" disabled value=\"Hello World\">"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/input-element-enabled/index.js",
    "content": "exports.verify = function (context, expect) {\n  var rootNode = context.rootNode;\n  var input = rootNode.querySelector(\"input\");\n  expect(input.disabled).to.equal(false);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/input-element-enabled/to.html",
    "content": "<input type=\"text\" value=\"Hello World\">"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/keyed-incompatible/expected.html",
    "content": "<ARTICLE>\n  <A id=\"_A\">\n\"\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/keyed-incompatible/from.html",
    "content": "<article><div id=\"_A\"></div><a id=\"_B\"></a></article>\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/keyed-incompatible/to.html",
    "content": "<article><a id=\"_A\"></a></article>\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/large/expected.html",
    "content": "<DIV class=\"main\" style=\"display: none;\">\n  \"\\n\\t\"\n  <DIV _sp=\"p2051541.m2158.l1\" class=\"breadcrumbs\">\n    \"\\n\\t\\t\"\n    <NAV role=\"navigation\">\n      \"\\n\\t\\t\\t\"\n      <P class=\"g-hdn\" id=\"breadcrumblabel\">\n        \"You are here\"\n      \"\\n\\t\\t\\t\"\n      <OL aria-labelledby=\"breadcrumblabel\" id=\"bc\">\n        \"\\n\\t\\t\\t\\t\"\n        <LI>\n          <A class=\"thrd\" href=\"http://www.ebay.com\" title=\"eBay\">\n            \"eBay\"\n        \"\\n\\t\\t\\t\\t\"\n        <LI class=\"gspr right\">\n          \">\"\n        \"\\n\\t\\t\\t\\t\"\n        <LI>\n          \"\\n\\t\\t\\t\\t\\t\"\n          <SPAN aria-label=\"Back to School\" tabindex=\"0\">\n            \"Back to School\"\n          \"\\n\\t\\t\\t\\t\"\n        \"\\n\\t\\t\\t\"\n      \"\\n\\t\\t\"\n    \"\\n\\t\"\n  \"\\n\\t\"\n  <DIV class=\"clearFloat\">\n  \"\\n\\t\"\n  <DIV class=\"nav\">\n    \"\\n\\t\\t\"\n    <A href=\"http://www.ebay.com/rpp/back-to-school\">\n      \"\\n\\t\\t\\t\"\n    <A id=\"mainContent\" tabindex=\"-1\">\n    \"\\n\\t\\t\\t\"\n    <H1 class=\"title FOO\">\n      \"Back to School\"\n    \"\\n\\t\\t\\n\\t\\t\"\n    <UL _sp=\"p2051541.m2733.l1\" class=\"widget navigation-list main-navigation\">\n      \"\\n\\t\\t\\t\"\n      <LI data-node-id=\"FOO\">\n        \"\\n\\t\\t\\t\\t\"\n        <A class=\"title-block default-cursor\" href=\"\">\n          \"\\n\\t\\t\\t\\t\\t\"\n          <SPAN class=\"arrow-square\">\n          \"\\n\\t\\t\\t\\t\\t\"\n          <SPAN class=\"title\">\n            \"Shop Electronics\"\n          \"\\n\\t\\t\\t\\t\\t\"\n          <SPAN class=\"title\">\n            \"Shop Electronics\"\n          \"\\n\\t\\t\\t\\t\\t\"\n          <SPAN class=\"rarrow\">\n          \"\\n\\t\\t\\t\\t\"\n        \"\\n\\t\\t\\t\\t\"\n        <UL class=\"navigation-list\">\n          \"\\n\\t\\t\\t\\t\\t\"\n          <LI data-node-id=\"\">\n            <A href=\"http://www.ebay.com/rpp/back-to-school-events/dell-laptops-lte-8-3-8-10\">\n              \"Up to 60% off Dell Laptops\"\n          \"\\n\\t\\t\\t\\t\\t\"\n          <LI data-node-id=\"\">\n            <A href=\"http://www.ebay.com/rpp/back-to-school-events/refurb-tech-lte-7-27-8-10\">\n              \"Up to 60% off Refurbished Tech\"\n          \"\\n\\t\\t\\t\\t\\t\"\n          <LI data-node-id=\"\">\n            <A href=\"http://www.ebay.com/rpp/back-to-school-events/deals-on-laptops-and-accessories\">\n              \"Up to 40% off Laptops and Accessories\"\n          \"\\n\\t\\t\\t\\t\"\n        \"\\n\\t\\t\\t\"\n      \"\\n\\t\\t\\t\"\n      <LI data-node-id=\"0\">\n        \"\\n\\t\\t\\t\\t\"\n        <A class=\"title-block default-cursor\" href=\"\">\n          \"\\n\\t\\t\\t\\t\\t\"\n          <SPAN class=\"arrow-square\">\n          \"\\n\\t\\t\\t\\t\\t\"\n          <SPAN class=\"title\">\n            \"Shop Electronics\"\n          \"\\n\\t\\t\\t\\t\\t\"\n          <SPAN class=\"rarrow\">\n          \"\\n\\t\\t\\t\\t\"\n        \"\\n\\t\\t\\t\\t\"\n        <UL class=\"navigation-list\">\n          \"\\n\\t\\t\\t\\t\\t\"\n          <LI data-node-id=\"\">\n            <A href=\"http://www.ebay.com/rpp/back-to-school-events/dell-laptops-lte-8-3-8-10\">\n              \"Up to 60% off Dell Laptops\"\n          \"\\n\\t\\t\\t\\t\\t\"\n          <LI data-node-id=\"\">\n            <A href=\"http://www.ebay.com/rpp/back-to-school-events/refurb-tech-lte-7-27-8-10\">\n              \"Up to 60% off Refurbished Tech\"\n          \"\\n\\t\\t\\t\\t\\t\"\n          <LI data-node-id=\"\">\n            <A href=\"http://www.ebay.com/rpp/back-to-school-events/deals-on-laptops-and-accessories\">\n              \"Up to 40% off Laptops and Accessories\"\n          \"\\n\\t\\t\\t\\t\"\n        \"\\n\\t\\t\\t\"\n      \"\\n\\t\\t\\t\"\n      <LI data-node-id=\"1\">\n        \"\\n\\t\\t\\t\\t\"\n        <A class=\"title-block default-cursor\" href=\"\">\n          \"\\n\\t\\t\\t\\t\\t\"\n          <SPAN class=\"arrow-square\">\n          \"\\n\\t\\t\\t\\t\\t\"\n          <SPAN class=\"title\">\n            \"Shop Home and Garden\"\n          \"\\n\\t\\t\\t\\t\\t\"\n          <SPAN class=\"rarrow\">\n          \"\\n\\t\\t\\t\\t\"\n        \"\\n\\t\\t\\t\\t\"\n        <UL class=\"navigation-list\">\n          \"\\n\\t\\t\\t\\t\\t\"\n          <LI data-node-id=\"\">\n            <A href=\"http://www.ebay.com/rpp/back-to-school-events/lte-clean-up-your-study-space-8-3-8-17\">\n              \"Up to 30% off Cleaning Supplies\"\n          \"\\n\\t\\t\\t\\t\\t\"\n          <LI data-node-id=\"\">\n            <A href=\"http://www.ebay.com/rpp/back-to-school-events/lte-up-to-50-off-dorm-furniture-8-3-8-11\">\n              \"Up to 50% off Dorm Furniture\"\n          \"\\n\\t\\t\\t\\t\\t\"\n          <LI data-node-id=\"\">\n            <A href=\"http://www.ebay.com/rpp/back-to-school-events/lte-bts-furniture-bedding-0720\">\n              \"Up to 60% off Dorm Essentials\"\n          \"\\n\\t\\t\\t\\t\\t\"\n          <LI data-node-id=\"\">\n            <A href=\"http://www.ebay.com/rpp/back-to-school-events/study-in-style-up-to-60-off\">\n              \"Study in Style Up to 60% off\"\n          \"\\n\\t\\t\\t\\t\"\n        \"\\n\\t\\t\\t\"\n      \"\\n\\t\\t\\t\"\n      <LI data-node-id=\"2\">\n        \"\\n\\t\\t\\t\\t\"\n        <A class=\"title-block default-cursor\" href=\"\">\n          \"\\n\\t\\t\\t\\t\\t\"\n          <SPAN class=\"arrow-square\">\n          \"\\n\\t\\t\\t\\t\\t\"\n          <SPAN class=\"title\">\n            \"Shop Fashion\"\n          \"\\n\\t\\t\\t\\t\\t\"\n          <SPAN class=\"rarrow\">\n          \"\\n\\t\\t\\t\\t\"\n        \"\\n\\t\\t\\t\\t\"\n        <UL class=\"navigation-list\">\n          \"\\n\\t\\t\\t\\t\\t\"\n          <LI data-node-id=\"\">\n            <A href=\"http://www.ebay.com/rpp/back-to-school-events/fse-072015-p-bs-handbags-and-accessories/shop-all\">\n              \"Starting at $4.99 Handbags and Accessories\"\n          \"\\n\\t\\t\\t\\t\\t\"\n          <LI data-node-id=\"\">\n            <A href=\"http://www.ebay.com/rpp/back-to-school-events/fse-070615-p-bs-watches/shop-all\">\n              \"Under $150 Watches\"\n          \"\\n\\t\\t\\t\\t\\t\"\n          <LI data-node-id=\"\">\n            <A href=\"http://www.ebay.com/rpp/back-to-school-events/fse-070615-p-bs-apparel/shop-all\">\n              \"Apparel Starting at $4.99\"\n          \"\\n\\t\\t\\t\\t\\t\"\n          <LI data-node-id=\"\">\n            <A href=\"http://www.ebay.com/rpp/back-to-school-events/fse-070615-p-bs-athletic-shoes-and-apparel/shop-all\">\n              \"Up to 50% off Nike, adidas, and more\"\n          \"\\n\\t\\t\\t\\t\"\n        \"\\n\\t\\t\\t\"\n      \"\\n\\t\\t\\t\"\n      <LI data-node-id=\"3\">\n        \"\\n\\t\\t\\t\\t\"\n        <A class=\"title-block default-cursor\" href=\"\">\n          \"\\n\\t\\t\\t\\t\\t\"\n          <SPAN class=\"arrow-square\">\n          \"\\n\\t\\t\\t\\t\\t\"\n          <SPAN class=\"title\">\n            \"Shop More\"\n          \"\\n\\t\\t\\t\\t\\t\"\n          <SPAN class=\"rarrow\">\n          \"\\n\\t\\t\\t\\t\"\n        \"\\n\\t\\t\\t\\t\"\n        <UL class=\"navigation-list\">\n          \"\\n\\t\\t\\t\\t\\t\"\n          <LI data-node-id=\"\">\n            <A href=\"http://www.ebay.com/rpp/back-to-school-events/under-50-student-deals-7-20-8-31\">\n              \"Under $50 Student Must-Haves\"\n          \"\\n\\t\\t\\t\\t\\t\"\n          <LI data-node-id=\"\">\n            <A href=\"http://www.ebay.com/sch/Textbooks-Education-/2228/i.html?_since=15&_from=R40&_sofindtype=0&_fcm=1&_nkw=&_udlo=&_udhi=&_ftrt=901&_ftrv=1&_sabdlo=&_sabdhi=&_samilow=&_samihi=&_sadis=15&_stpos=94587&_fss=1&_fsradio=%26LH_SpecificSeller%3D1&_saslop=1&_sasl=betterworldbooks%2Cbarnesandnobleinc%2Cbuy%2Ctelewhiz%2Csaveout%2Cnationalbookseller%2Chapptimesforever%2Ctextbooks-now&_sop=12&_ipg=50&_dmd=2&LH_AllListings=1&LH_SpecificSeller=1&LH_ItemCondition=1000%7C2750%7C4000%7C5000\">\n              \"Up to 20% off Textbooks and Books\"\n          \"\\n\\t\\t\\t\\t\\t\"\n          <LI data-node-id=\"\">\n            <A href=\"http://www.ebay.com/rpp/back-to-school-events/deals-on-wheels-7-20-8-24\">\n              \"Up to 60% off Deals on Wheels\"\n          \"\\n\\t\\t\\t\"\n          <LI data-node-id=\"\">\n            <A href=\"http://www.ebay.com/rpp/gift-cards\">\n              \"Gift Cards\"\n          \"\\n\\t\\t\\t\"\n        \"\\n\\t\\t\\t\"\n      \"\\n\\t\\t\\t\"\n      <LI data-node-id=\"4\">\n        \"\\n\\t\\t\\t\\t\"\n        <A class=\"title-block default-cursor\" href=\"\">\n          \"\\n\\t\\t\\t\\t\\t\"\n          <SPAN class=\"arrow-square\">\n          \"\\n\\t\\t\\t\\t\\t\"\n          <SPAN class=\"title\">\n            \"Inspiration\"\n          \"\\n\\t\\t\\t\\t\\t\"\n          <SPAN class=\"rarrow\">\n          \"\\n\\t\\t\\t\\t\"\n        \"\\n\\t\\t\\t\\t\"\n        <UL class=\"navigation-list\">\n          \"\\n\\t\\t\\t\\t\\t\"\n          <LI data-node-id=\"\">\n            <A href=\"http://www.ebay.com/gds/Back-To-School-Essentials-High-School-Edition-/10000000205541556/g.html\">\n              \"Back-To-School Essentials: High School Edition\"\n          \"\\n\\t\\t\\t\\t\\t\"\n          <LI data-node-id=\"\">\n            <A href=\"http://stylestories.ebay.com/the-top-tech-sessories-on-ebay-right-now/\">\n              \"Top 16 Tech-Sessories on eBay Right Now\"\n          \"\\n\\t\\t\\t\\t\\t\"\n          <LI data-node-id=\"\">\n            <A href=\"http://www.ebay.com/gds/Sell-on-eBay-to-Fund-Back-to-School-Shopping-/10000000205402716/g.html\">\n              \"Sell on eBay to Fund Back to School Shopping\"\n          \"\\n\\t\\t\\t\\t\\t\"\n          <LI data-node-id=\"\">\n            <A href=\"http://www.ebay.com/gds/6-High-Tech-Lunchboxes-That-Will-Transform-Lunch-Time-/10000000205560454/g.html\">\n              \"6 High Tech Lunchboxes That Will Transform Lunch Time\"\n          \"\\n\\t\\t\\t\\t\\t\"\n          <LI data-node-id=\"\">\n            <A href=\"http://www.ebay.com/cln/ebaycollectionseditor/-/220852069015\">\n              \"Unique Dorm Room Decor\"\n          \"\\n\\t\\t\\t\\t\\t\"\n          <LI data-node-id=\"\">\n            <A href=\"http://www.ebay.com/cln/ebaycollectionseditor/-/220856092015\">\n              \"Cool First Cars Under $15,000\"\n          \"\\n\\t\\t\\t\\t\\t\"\n          <LI data-node-id=\"\">\n            <A href=\"http://www.ebay.com/cln/ebaycollectionseditor/fill-your-backpack/217869036015\">\n              \"Fill Your Backpack\"\n          \"\\n\\t\\t\\t\\t\"\n        \"\\n\\t\\t\\t\"\n      \"\\n\\t\\t\"\n    \"\\n\\t\"\n  \"\\n\\t\"\n  <DIV class=\"content \">\n    \"\\n\\t\\t\"\n    <DIV class=\"content-events-capture-mask off\">\n    \"\\n\\t\\t\"\n    <DIV class=\"widget header-banner img-banner\">\n      \"\\n\\t\\t\\t\"\n      <XIMG alt=\"Back to School\" src=\"http://rtm.ebaystatic.com/0/RTMS/Image/DealEvents_TopBanner_1200x70.png\">\n        \"\\n\\t\\t\"\n    \"\\n\\t\\t\"\n    <DIV _sp=\"p2051541.m2734.l2\" class=\"widget rpp-banner rpp-banner-first rpp-banner-last\" data-banner-id=\"2735\">\n      \"\\n\\t\\t\\t\"\n      <A href=\"http://www.ebay.com/rpp/back-to-school-events/dell-laptops-lte-8-3-8-10\" title=\"Back to School | Up to 60% off Dell Laptops | Shop now\">\n        \"\\n\\t\\t\\t\\t\"\n        <XIMG alt=\"Back to School | Up to 60% off Dell Laptops | Shop now\" src=\"http://i.ebayimg.com/00/s/NDE4WDk4MA==/z/cPQAAOSwMmBVupJx/$_57.PNG?set_id=2\">\n          \"\\n\\t\\t\\t\"\n      \"\\n\\t\\t\"\n    \"\\n\\t\\t\"\n    <DIV _sp=\"p2051541.m2735.l1\" class=\"widget top-category-deals\" data-widget-id=\"27350\">\n      \"\\n\\t\\t\\t\"\n      <H2 class=\"title top-cat-with-link\">\n        \"\\n\\t\\t\\t\\tUnder $50 Student Must-Haves\"\n        <A href=\"http://www.ebay.com/rpp/back-to-school-events/under-50-student-deals-7-20-8-31\">\n          \"Shop All\"\n          <I>\n      \"\\n\\t\\t\\t\"\n      <DIV class=\"widget-wrapper\">\n        \"\\n\\t\\t\\t\\t\"\n        <DIV class=\"widget item-widget\">\n          \"\\n\\t\\t\\t\\t\\t\"\n          <A href=\"http://www.ebay.com/itm/Logitech-Wireless-Wave-Keyboard-Mouse-Combo-/251957522514\">\n            \"\\n\\t\\t\\t\\t\\t\\t\"\n            <DIV class=\"image\">\n              \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              <XIMG alt=\"Logitech Wireless Wave Keyboard & Mouse Combo\" class=\"absolute-center\" src=\"http://i.ebayimg.com/images/m/mwXY17VxUwEe_6_6sAu1ZJA/s-l225/p.jpg\">\n                \"\\n\\t\\t\\t\\t\\t\\t\"\n            \"\\n\\t\\t\\t\\t\\t\\t\"\n            <DIV class=\"item-details\">\n              \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              <DIV class=\"title\">\n                \"Logitech Wireless Wave Keyboard & Mouse Combo\"\n              \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              <DIV class=\"price-row\">\n                \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                <DIV class=\"discounted-price\">\n                  \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"\n                  <SPAN class=\"price\">\n                    \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t$36.95\"\n                  \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              \"\\n\\t\\t\\t\\t\\t\\t\"\n            \"\\n\\t\\t\\t\\t\\t\"\n          \"\\n\\t\\t\\t\\t\"\n        \"\\n\\t\\t\\t\"\n      \"\\n\\t\\t\\t\"\n      <DIV class=\"widget-wrapper\">\n        \"\\n\\t\\t\\t\\t\"\n        <DIV class=\"widget item-widget\">\n          \"\\n\\t\\t\\t\\t\\t\"\n          <A href=\"http://www.ebay.com/itm/Automatic-Stainless-Steel-Hands-Free-IR-Sensor-Soap-Dispenser-w-Stand-Best-GIFT-/291227666715\">\n            \"\\n\\t\\t\\t\\t\\t\\t\"\n            <DIV class=\"image\">\n              \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              <XIMG alt=\"Automatic Stainless Steel Hands Free IR Sensor Soap Dispenser w/ Stand Best GIFT\" class=\"absolute-center\" src=\"http://i.ebayimg.com/images/m/mOhiJ9yRnEUp7kQbbUu6UYA/s-l225/p.jpg\">\n                \"\\n\\t\\t\\t\\t\\t\\t\"\n            \"\\n\\t\\t\\t\\t\\t\\t\"\n            <DIV class=\"item-details\">\n              \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              <DIV class=\"title\">\n                \"Automatic Stainless Steel Hands Free IR Sensor Soap Dispenser w/ Stand Best GIFT\"\n              \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              <DIV class=\"price-row\">\n                \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                <DIV class=\"discounted-price\">\n                  \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"\n                  <SPAN class=\"price\">\n                    \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t$8.88\"\n                  \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                <DIV class=\"original-price\">\n                  \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"\n                  <DEL class=\"oprc price\">\n                    \"$56.99\"\n                  \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                <DIV class=\"discount green\">\n                  <B>\n                    \"(84% off)\"\n                \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              \"\\n\\t\\t\\t\\t\\t\\t\"\n            \"\\n\\t\\t\\t\\t\\t\"\n          \"\\n\\t\\t\\t\\t\"\n        \"\\n\\t\\t\\t\"\n      \"\\n\\t\\t\\t\"\n      <DIV class=\"widget-wrapper\">\n        \"\\n\\t\\t\\t\\t\"\n        <DIV class=\"widget item-widget\">\n          \"\\n\\t\\t\\t\\t\\t\"\n          <A href=\"http://www.ebay.com/itm/SwissGear-Travel-Gear-ScanSmart-Backpack-1900-4-Colors-Laptop-Backpack-NEW-/381037241412\">\n            \"\\n\\t\\t\\t\\t\\t\\t\"\n            <DIV class=\"image\">\n              \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              <XIMG alt=\"SwissGear Travel Gear ScanSmart Backpack 1900 4 Colors Laptop Backpack NEW\" class=\"absolute-center\" src=\"http://i.ebayimg.com/images/m/myH8DjZXkAdtT6DFFrIe08w/s-l225/p.jpg\">\n                \"\\n\\t\\t\\t\\t\\t\\t\"\n            \"\\n\\t\\t\\t\\t\\t\\t\"\n            <DIV class=\"item-details\">\n              \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              <DIV class=\"title\">\n                \"SwissGear Travel Gear ScanSmart Backpack 1900 4 Colors Laptop Backpack NEW\"\n              \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              <DIV class=\"price-row\">\n                \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                <DIV class=\"discounted-price\">\n                  \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"\n                  <SPAN class=\"price\">\n                    \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t$49.99\"\n                  \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                <DIV class=\"original-price\">\n                  \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"\n                  <DEL class=\"oprc price\">\n                    \"$130.00\"\n                  \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                <DIV class=\"discount green\">\n                  <B>\n                    \"(61% off)\"\n                \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              \"\\n\\t\\t\\t\\t\\t\\t\"\n            \"\\n\\t\\t\\t\\t\\t\"\n          \"\\n\\t\\t\\t\\t\"\n        \"\\n\\t\\t\\t\"\n      \"\\n\\t\\t\\t\"\n      <DIV class=\"widget-wrapper\">\n        \"\\n\\t\\t\\t\\t\"\n        <DIV class=\"widget item-widget\">\n          \"\\n\\t\\t\\t\\t\\t\"\n          <A href=\"http://www.ebay.com/itm/2-Pack-100-Original-OEM-Apple-EarPods-White-In-Ear-Headset-for-iPhone-5-5S-6-6-/281756995268\">\n            \"\\n\\t\\t\\t\\t\\t\\t\"\n            <DIV class=\"image\">\n              \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              <XIMG alt=\"2-Pack 100% Original OEM Apple EarPods White In-Ear Headset for iPhone 5,5S,6,6+\" class=\"absolute-center\" src=\"http://i.ebayimg.com/images/m/m2W2cYIqi2UY4LFnSfHeNdg/s-l225/p.jpg\">\n                \"\\n\\t\\t\\t\\t\\t\\t\"\n            \"\\n\\t\\t\\t\\t\\t\\t\"\n            <DIV class=\"item-details\">\n              \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              <DIV class=\"title\">\n                \"2-Pack 100% Original OEM Apple EarPods White In-Ear Headset for iPhone 5,5S,6,6+\"\n              \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              <DIV class=\"price-row\">\n                \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                <DIV class=\"discounted-price\">\n                  \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"\n                  <SPAN class=\"price\">\n                    \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t$19.99\"\n                  \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                <DIV class=\"original-price\">\n                  \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"\n                  <DEL class=\"oprc price\">\n                    \"$29.99\"\n                  \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                <DIV class=\"discount green\">\n                  <B>\n                    \"(33% off)\"\n                \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              \"\\n\\t\\t\\t\\t\\t\\t\"\n            \"\\n\\t\\t\\t\\t\\t\"\n          \"\\n\\t\\t\\t\\t\"\n        \"\\n\\t\\t\\t\"\n      \"\\n\\t\\t\\t\"\n      <DIV class=\"clear-float-hack\">\n      \"\\n\\t\\t\"\n    \"\\n\\t\\t\"\n    <DIV _sp=\"p2051541.m2734.l3\" class=\"widget rpp-banner rpp-banner-first rpp-banner-last\" data-banner-id=\"2736\">\n      \"\\n\\t\\t\\t\"\n      <XIMG alt=\"Up to 30% off Cleaning Supplies | Up to 60% off Refurbished Tech | Shop now\" src=\"http://i.ebayimg.com/00/s/MzUwWDk4MA==/z/dFgAAOSwLVZVupOB/$_57.PNG?set_id=2\" usemap=\"#image-map-2736\">\n        \"\\n\\t\\t\\t\"\n        <MAP name=\"image-map-2736\">\n          \"\\n\\t\\t\\t\\t\"\n          <AREA alt=\"Up to 30% off Cleaning Supplies | Shop now\" coords=\"0,0,480,350\" href=\"http://www.ebay.com/rpp/back-to-school-events/lte-clean-up-your-study-space-8-3-8-17\" shape=\"rect\" title=\"Up to 30% off Cleaning Supplies | Shop now\">\n          \"\\n\\t\\t\\t\\t\"\n          <AREA alt=\"Up to 60% off Refurbished Tech | Shop now\" coords=\"500,0,980,350\" href=\"http://www.ebay.com/rpp/back-to-school-events/Refurb-Tech-LTE-7-27-8-10\" shape=\"rect\" title=\"Up to 60% off Refurbished Tech | Shop now\">\n          \"\\n\\t\\t\\t\"\n        \"\\n\\t\\t\"\n    \"\\n\\t\\t\"\n    <DIV _sp=\"p2051541.m2735.l2\" class=\"widget top-category-deals\" data-widget-id=\"27351\">\n      \"\\n\\t\\t\\t\"\n      <H2 class=\"title top-cat-with-link\">\n        \"\\n\\t\\t\\t\\tUp to 40% off Laptops and Accessories\"\n        <A href=\"http://www.ebay.com/rpp/back-to-school-events/deals-on-laptops-and-accessories\">\n          \"Shop All\"\n          <I>\n      \"\\n\\t\\t\\t\"\n      <DIV class=\"widget-wrapper\">\n        \"\\n\\t\\t\\t\\t\"\n        <DIV class=\"widget item-widget\">\n          \"\\n\\t\\t\\t\\t\\t\"\n          <A href=\"http://www.ebay.com/itm/HP-250-G3-15-6-Notebook-Intel-i3-4GB-RAM-500GB-HDD-Win-8-1-Win-10-Upgrade-/121604368277\">\n            \"\\n\\t\\t\\t\\t\\t\\t\"\n            <DIV class=\"image\">\n              \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              <XIMG alt=\"HP 250 G3 15.6  Notebook, Intel i3 , 4GB RAM, 500GB HDD, Win 8.1/Win 10 Upgrade\" class=\"absolute-center\" src=\"http://i.ebayimg.com/images/m/mGh_fHGD3VFDen18PZrTVKg/s-l225/p.jpg\">\n                \"\\n\\t\\t\\t\\t\\t\\t\"\n            \"\\n\\t\\t\\t\\t\\t\\t\"\n            <DIV class=\"item-details\">\n              \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              <DIV class=\"title\">\n                \"HP 250 G3 15.6 Notebook, Intel i3 , 4GB RAM, 500GB HDD, Win 8.1/Win 10 Upgrade\"\n              \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              <DIV class=\"price-row\">\n                \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                <DIV class=\"discounted-price\">\n                  \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"\n                  <SPAN class=\"price\">\n                    \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t$289.99\"\n                  \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              \"\\n\\t\\t\\t\\t\\t\\t\"\n            \"\\n\\t\\t\\t\\t\\t\"\n          \"\\n\\t\\t\\t\\t\"\n        \"\\n\\t\\t\\t\"\n      \"\\n\\t\\t\\t\"\n      <DIV class=\"widget-wrapper\">\n        \"\\n\\t\\t\\t\\t\"\n        <DIV class=\"widget item-widget\">\n          \"\\n\\t\\t\\t\\t\\t\"\n          <A href=\"http://www.ebay.com/itm/Samsung-850-Pro-Series-256GB-2-5-SATA-III-Internal-Solid-State-Drive-/391213788921\">\n            \"\\n\\t\\t\\t\\t\\t\\t\"\n            <DIV class=\"image\">\n              \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              <XIMG alt=\"Samsung 850 Pro-Series 256GB 2.5\" class=\"absolute-center\" drive=\"\" iii=\"\" internal=\"\" sata=\"\" solid=\"\" src=\"http://i.ebayimg.com/images/m/muoYJx3o-4_PhZJded_AGdQ/s-l225/p.jpg\" state=\"\">\n            <DIV class=\"item-details \">\n              <DIV class=\"title\n\t\t\t\t\t\t\t\">\n                \"Samsung 850 Pro-Series 256GB 2.5\\\" SATA III Internal Solid State Drive\"\n              \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              <DIV class=\"price-row\">\n                \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                <DIV class=\"discounted-price\">\n                  \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"\n                  <SPAN class=\"price\">\n                    \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"\n                    <SPAN class=\"gl-map-t\">\n                      \"See details...\"\n                    \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"\n                  \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                <DIV class=\"original-price\">\n                  \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"\n                  <DEL class=\"oprc price\">\n                    \"$249.99\"\n                  \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              \"\\n\\t\\t\\t\\t\\t\\t\"\n            \"\\n\\t\\t\\t\\t\\t\"\n          \"\\n\\t\\t\\t\\t\"\n        \"\\n\\t\\t\\t\"\n      \"\\n\\t\\t\\t\"\n      <DIV class=\"widget-wrapper\">\n        \"\\n\\t\\t\\t\\t\"\n        <DIV class=\"widget item-widget\">\n          \"\\n\\t\\t\\t\\t\\t\"\n          <A href=\"http://www.ebay.com/itm/Kingston-DT100-G3-64GB-USB-3-0-Flash-Drive-/301703983653\">\n            \"\\n\\t\\t\\t\\t\\t\\t\"\n            <DIV class=\"image\">\n              \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              <XIMG alt=\"Kingston DT100 G3 64GB USB 3.0 Flash Drive\" class=\"absolute-center\" src=\"http://i.ebayimg.com/images/m/mGQ9swIsKmiMO0zAf8T5LTg/s-l225/p.jpg\">\n                \"\\n\\t\\t\\t\\t\\t\\t\"\n            \"\\n\\t\\t\\t\\t\\t\\t\"\n            <DIV class=\"item-details\">\n              \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              <DIV class=\"title\">\n                \"Kingston DT100 G3 64GB USB 3.0 Flash Drive\"\n              \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              <DIV class=\"price-row\">\n                \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                <DIV class=\"discounted-price\">\n                  \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"\n                  <SPAN class=\"price\">\n                    \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t$18.99\"\n                  \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              \"\\n\\t\\t\\t\\t\\t\\t\"\n            \"\\n\\t\\t\\t\\t\\t\"\n          \"\\n\\t\\t\\t\\t\"\n        \"\\n\\t\\t\\t\"\n      \"\\n\\t\\t\\t\"\n      <DIV class=\"widget-wrapper\">\n        \"\\n\\t\\t\\t\\t\"\n        <DIV class=\"widget item-widget\">\n          \"\\n\\t\\t\\t\\t\\t\"\n          <A href=\"http://www.ebay.com/itm/Toshiba-Satellite-S55-B5155-15-6-LED-Intel-Core-i7-5500U-2-40GHz-8GB-1TB-HDD-/161780686241\">\n            \"\\n\\t\\t\\t\\t\\t\\t\"\n            <DIV class=\"image\">\n              \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              <XIMG alt=\"Toshiba Satellite S55-B5155 15.6\" class=\"absolute-center\" src=\"http://i.ebayimg.com/images/m/mbbA68ZCxx5_FmlhHBOiueQ/s-l225/p.jpg\">\n            <DIV class=\"item-details\n\t\t\t\t\t\t\t\">\n              <DIV class=\"title \">\n                \"Toshiba Satellite S55-B5155 15.6\\\" LED Intel Core i7-5500U 2.40GHz 8GB 1TB HDD\"\n              \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              <DIV class=\"price-row\">\n                \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                <DIV class=\"discounted-price\">\n                  \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"\n                  <SPAN class=\"price\">\n                    \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t$629.99\"\n                  \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              \"\\n\\t\\t\\t\\t\\t\\t\"\n            \"\\n\\t\\t\\t\\t\\t\"\n          \"\\n\\t\\t\\t\\t\"\n        \"\\n\\t\\t\\t\"\n      \"\\n\\t\\t\\t\"\n      <DIV class=\"clear-float-hack\">\n      \"\\n\\t\\t\"\n    \"\\n\\t\\t\"\n    <DIV _sp=\"p2051541.m2734.l4\" class=\"widget rpp-banner rpp-banner-first rpp-banner-last\" data-banner-id=\"2738\">\n      \"\\n\\t\\t\\t\"\n      <XIMG alt=\"Up to 50% off Dorm Furniture | Shop now\" src=\"http://i.ebayimg.com/00/s/MzUwWDk4MA==/z/vZUAAOSwyQtVw6LP/$_57.PNG?set_id=2\" usemap=\"#image-map-2738\">\n        \"\\n\\t\\t\\t\"\n        <MAP name=\"image-map-2738\">\n          \"\\n\\t\\t\\t\\t\"\n          <AREA alt=\"Up to 50% off Dorm Furniture | Shop now\" coords=\"500,0,980,350\" href=\"http://www.ebay.com/rpp/back-to-school-events/lte-up-to-50-off-dorm-furniture-8-3-8-11\" shape=\"rect\" title=\"Up to 50% off Dorm Furniture | Shop now\">\n          \"\\n\\t\\t\\t\"\n        \"\\n\\t\\t\"\n    \"\\n\\t\\t\"\n    <DIV _sp=\"p2051541.m2735.l3\" class=\"widget top-category-deals\" data-widget-id=\"27352\">\n      \"\\n\\t\\t\\t\"\n      <H2 class=\"title top-cat-with-link\">\n        \"\\n\\t\\t\\t\\tUp to 60% off Dorm Essentials\"\n        <A href=\"http://www.ebay.com/rpp/back-to-school-events/lte-bts-furniture-bedding-0720\">\n          \"Shop All\"\n          <I>\n      \"\\n\\t\\t\\t\"\n      <DIV class=\"widget-wrapper\">\n        \"\\n\\t\\t\\t\\t\"\n        <DIV class=\"widget item-widget\">\n          \"\\n\\t\\t\\t\\t\\t\"\n          <A href=\"http://www.ebay.com/itm/Angle-Height-Adjustable-Rolling-Laptop-Desk-Cart-Over-Bed-Hospital-Table-Stand-/310980165348\">\n            \"\\n\\t\\t\\t\\t\\t\\t\"\n            <DIV class=\"image\">\n              \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              <XIMG alt=\"Angle & Height Adjustable Rolling Laptop Desk Cart Over Bed Hospital Table Stand\" class=\"absolute-center\" src=\"http://i.ebayimg.com/images/m/mLdiAAbBpJ2ETBAj27oanWQ/s-l225/p.jpg\">\n                \"\\n\\t\\t\\t\\t\\t\\t\"\n            \"\\n\\t\\t\\t\\t\\t\\t\"\n            <DIV class=\"item-details\">\n              \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              <DIV class=\"title\">\n                \"Angle & Height Adjustable Rolling Laptop Desk Cart Over Bed Hospital Table Stand\"\n              \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              <DIV class=\"price-row\">\n                \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                <DIV class=\"discounted-price\">\n                  \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"\n                  <SPAN class=\"price\">\n                    \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t$41.95\"\n                  \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                <DIV class=\"original-price\">\n                  \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"\n                  <DEL class=\"oprc price\">\n                    \"$79.95\"\n                  \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                <DIV class=\"discount green\">\n                  <B>\n                    \"(47% off)\"\n                \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              \"\\n\\t\\t\\t\\t\\t\\t\"\n            \"\\n\\t\\t\\t\\t\\t\"\n          \"\\n\\t\\t\\t\\t\"\n        \"\\n\\t\\t\\t\"\n      \"\\n\\t\\t\\t\"\n      <DIV class=\"widget-wrapper\">\n        \"\\n\\t\\t\\t\\t\"\n        <DIV class=\"widget item-widget\">\n          \"\\n\\t\\t\\t\\t\\t\"\n          <A href=\"http://www.ebay.com/itm/Lavish-Home-LED-Energy-Effiecient-Desk-Lamp-with-Dimmer-Switch-/371182872837\">\n            \"\\n\\t\\t\\t\\t\\t\\t\"\n            <DIV class=\"image\">\n              \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              <XIMG alt=\"Lavish Home LED Energy Effiecient Desk Lamp with Dimmer Switch\" class=\"absolute-center\" src=\"http://i.ebayimg.com/images/m/mkShlp9UxA6xe1K_qHirzwg/s-l225/p.jpg\">\n                \"\\n\\t\\t\\t\\t\\t\\t\"\n            \"\\n\\t\\t\\t\\t\\t\\t\"\n            <DIV class=\"item-details\">\n              \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              <DIV class=\"title\">\n                \"Lavish Home LED Energy Effiecient Desk Lamp with Dimmer Switch\"\n              \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              <DIV class=\"price-row\">\n                \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                <DIV class=\"discounted-price\">\n                  \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"\n                  <SPAN class=\"price\">\n                    \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t$35.99\"\n                  \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              \"\\n\\t\\t\\t\\t\\t\\t\"\n            \"\\n\\t\\t\\t\\t\\t\"\n          \"\\n\\t\\t\\t\\t\"\n        \"\\n\\t\\t\\t\"\n      \"\\n\\t\\t\\t\"\n      <DIV class=\"widget-wrapper\">\n        \"\\n\\t\\t\\t\\t\"\n        <DIV class=\"widget item-widget\">\n          \"\\n\\t\\t\\t\\t\\t\"\n          <A href=\"http://www.ebay.com/itm/INTEX-Inflatable-Lounge-Beanless-Lounger-Bag-Chair-Grey-68579EP-/390611405782\">\n            \"\\n\\t\\t\\t\\t\\t\\t\"\n            <DIV class=\"image\">\n              \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              <XIMG alt=\"INTEX Inflatable Lounge Beanless Lounger Bag Chair - Grey | 68579EP   \" class=\"absolute-center\" src=\"http://i.ebayimg.com/images/m/mVL3mVCxuSnzSbG3Uz7iDNg/s-l225/p.jpg\">\n                \"\\n\\t\\t\\t\\t\\t\\t\"\n            \"\\n\\t\\t\\t\\t\\t\\t\"\n            <DIV class=\"item-details\">\n              \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              <DIV class=\"title\">\n                \"INTEX Inflatable Lounge Beanless Lounger Bag Chair - Grey | 68579EP \"\n              \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              <DIV class=\"price-row\">\n                \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                <DIV class=\"discounted-price\">\n                  \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"\n                  <SPAN class=\"price\">\n                    \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t$20.95\"\n                  \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                <DIV class=\"original-price\">\n                  \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"\n                  <DEL class=\"oprc price\">\n                    \"$49.99\"\n                  \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                <DIV class=\"discount green\">\n                  <B>\n                    \"(58% off)\"\n                \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              \"\\n\\t\\t\\t\\t\\t\\t\"\n            \"\\n\\t\\t\\t\\t\\t\"\n          \"\\n\\t\\t\\t\\t\"\n        \"\\n\\t\\t\\t\"\n      \"\\n\\t\\t\\t\"\n      <DIV class=\"widget-wrapper\">\n        \"\\n\\t\\t\\t\\t\"\n        <DIV class=\"widget item-widget\">\n          \"\\n\\t\\t\\t\\t\\t\"\n          <A href=\"http://www.ebay.com/itm/Star-Wars-Classic-Comforter-Twin-/301348411357\">\n            \"\\n\\t\\t\\t\\t\\t\\t\"\n            <DIV class=\"image\">\n              \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              <XIMG alt=\"Star Wars Classic Comforter - Twin\" class=\"absolute-center\" src=\"http://i.ebayimg.com/images/m/m8FxveyQGYlhwGkCWzPHp3A/s-l225/p.jpg\">\n                \"\\n\\t\\t\\t\\t\\t\\t\"\n            \"\\n\\t\\t\\t\\t\\t\\t\"\n            <DIV class=\"item-details\">\n              \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              <DIV class=\"title\">\n                \"Star Wars Classic Comforter - Twin\"\n              \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              <DIV class=\"price-row\">\n                \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                <DIV class=\"discounted-price\">\n                  \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"\n                  <SPAN class=\"price\">\n                    \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t$32.99\"\n                  \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"\n                \"\\n\\t\\t\\t\\t\\t\\t\\t\"\n              \"\\n\\t\\t\\t\\t\\t\\t\"\n            \"\\n\\t\\t\\t\\t\\t\"\n          \"\\n\\t\\t\\t\\t\"\n        \"\\n\\t\\t\\t\"\n      \"\\n\\t\\t\\t\"\n      <DIV class=\"clear-float-hack\">\n      \"\\n\\t\\t\"\n    \"\\n\\t\\t\"\n    <DIV _sp=\"p2051541.m2734.l5\" class=\"widget rpp-banner rpp-banner-first\" data-banner-id=\"2739\">\n      \"\\n\\t\\t\\t\"\n      <XIMG alt=\"Starting at $4.99 Handbags and Accessories | Under $150 Watches | Shop now\" src=\"http://i.ebayimg.com/00/s/MzUwWDk4MA==/z/Tj4AAOSwd0BVsXJS/$_57.PNG?set_id=2\" usemap=\"#image-map-2739\">\n        \"\\n\\t\\t\\t\"\n        <MAP name=\"image-map-2739\">\n          \"\\n\\t\\t\\t\\t\"\n          <AREA alt=\"Starting at $4.99 Handbags and Accessories | Shop now\" coords=\"0,0,480,350\" href=\"http://www.ebay.com/rpp/back-to-school-events/fse-072015-p-bs-handbags-and-accessories/shop-all\" shape=\"rect\" title=\"Starting at $4.99 Handbags and Accessories | Shop now\">\n          \"\\n\\t\\t\\t\\t\"\n          <AREA alt=\"Under $150 Watches | Shop now\" coords=\"500,0,980,350\" href=\"http://www.ebay.com/rpp/back-to-school-events/fse-070615-p-bs-watches/shop-all\" shape=\"rect\" title=\"Under $150 Watches | Shop now\">\n          \"\\n\\t\\t\\t\"\n        \"\\n\\t\\t\"\n    \"\\n\\t\\t\"\n    <DIV _sp=\"p2051541.m2734.l6\" class=\"widget rpp-banner\" data-banner-id=\"2741\">\n      \"\\n\\t\\t\\t\"\n      <A href=\"http://www.ebay.com/sch/Textbooks-Education-/2228/i.html?_since=15&_from=R40&_sofindtype=0&_fcm=1&_nkw=&_udlo=&_udhi=&_ftrt=901&_ftrv=1&_sabdlo=&_sabdhi=&_samilow=&_samihi=&_sadis=15&_stpos=94587&_fss=1&_fsradio=%26LH_SpecificSeller%3D1&_saslop=1&_sasl=betterworldbooks%2Cbarnesandnobleinc%2Cbuy%2Ctelewhiz%2Csaveout%2Cnationalbookseller%2Chapptimesforever%2Ctextbooks-now&_sop=12&_ipg=50&_dmd=2&LH_AllListings=1&LH_SpecificSeller=1&LH_ItemCondition=1000%7C2750%7C4000%7C5000\" title=\"Up to 20% off Textbooks and Books | Shop now\">\n        \"\\n\\t\\t\\t\\t\"\n        <XIMG alt=\"Up to 20% off Textbooks and Books | Shop now\" src=\"http://i.ebayimg.com/00/s/MzUwWDk4MA==/z/Vs8AAOSwjVVVupps/$_57.PNG?set_id=2\">\n          \"\\n\\t\\t\\t\"\n      \"\\n\\t\\t\"\n    \"\\n\\t\\t\"\n    <DIV _sp=\"p2051541.m2734.l7\" class=\"widget rpp-banner\" data-banner-id=\"2742\">\n      \"\\n\\t\\t\\t\"\n      <XIMG alt=\"Starting at $4.99 Apparel | Up to 50% off Nike, adidas, and more | Shop now\" src=\"http://i.ebayimg.com/00/s/MzUwWDk4MA==/z/nMwAAOSwPcVVsXTj/$_57.PNG?set_id=2\" usemap=\"#image-map-2742\">\n        \"\\n\\t\\t\\t\"\n        <MAP name=\"image-map-2742\">\n          \"\\n\\t\\t\\t\\t\"\n          <AREA alt=\"Starting at $4.99 Apparel | Shop now\" coords=\"0,0,480,350\" href=\"http://www.ebay.com/rpp/back-to-school-events/fse-070615-p-bs-apparel/shop-all\" shape=\"rect\" title=\"Starting at $4.99 Apparel | Shop now\">\n          \"\\n\\t\\t\\t\\t\"\n          <AREA alt=\"Up to 50% off Nike, adidas, and more | Shop now\" coords=\"500,0,980,350\" href=\"http://www.ebay.com/rpp/back-to-school-events/fse-070615-p-bs-athletic-shoes-and-apparel/shop-all\" shape=\"rect\" title=\"Up to 50% off Nike, adidas, and more | Shop now\">\n          \"\\n\\t\\t\\t\"\n        \"\\n\\t\\t\"\n    \"\\n\\t\\t\"\n    <DIV _sp=\"p2051541.m2734.l8\" class=\"widget rpp-banner\" data-banner-id=\"2744\">\n      \"\\n\\t\\t\\t\"\n      <A href=\"http://www.ebay.com/rpp/back-to-school-events/deals-on-wheels-7-20-8-24\" title=\"Up to 60% off Deals on Wheels | Shop now\">\n        \"\\n\\t\\t\\t\\t\"\n        <XIMG alt=\"Up to 60% off Deals on Wheels | Shop now\" src=\"http://i.ebayimg.com/00/s/MzUwWDk4MA==/z/2EQAAOSwyQtVupmz/$_57.PNG?set_id=2\">\n          \"\\n\\t\\t\\t\"\n      \"\\n\\t\\t\"\n    \"\\n\\t\\t\"\n    <DIV _sp=\"p2051541.m2734.l9\" class=\"widget rpp-banner\" data-banner-id=\"2745\">\n      \"\\n\\t\\t\\t\"\n      <XIMG alt=\"Back to School Guides\" src=\"http://i.ebayimg.com/00/s/NDQwWDk4MA==/z/-PgAAOSw~gRVu94D/$_57.PNG?set_id=2\" usemap=\"#image-map-2745\">\n        \"\\n\\t\\t\\t\"\n        <MAP name=\"image-map-2745\">\n          \"\\n\\t\\t\\t\\t\"\n          <AREA alt=\"Back-To-School Essentials: High School Edition | Read More\" coords=\"0,50,228,440\" href=\"http://www.ebay.com/gds/Back-To-School-Essentials-High-School-Edition-/10000000205541556/g.html\" shape=\"rect\" title=\"Back-To-School Essentials: High School Edition | Read More\">\n          \"\\n\\t\\t\\t\\t\"\n          <AREA alt=\"Top 16 Tech-Sessories on eBay Right Now | Read More\" coords=\"250,50,478,440\" href=\"http://stylestories.ebay.com/the-top-tech-sessories-on-ebay-right-now/\" shape=\"rect\" title=\"Top 16 Tech-Sessories on eBay Right Now | Read More\">\n          \"\\n\\t\\t\\t\\t\"\n          <AREA alt=\"Sell on eBay to Fund Back to School Shopping | Read More\" coords=\"500,50,730,440\" href=\"http://www.ebay.com/gds/Sell-on-eBay-to-Fund-Back-to-School-Shopping-/10000000205402716/g.html\" shape=\"rect\" title=\"Sell on eBay to Fund Back to School Shopping | Read More\">\n          \"\\n\\t\\t\\t\\t\"\n          <AREA alt=\"6 High Tech Lunchboxes That Will Transform Lunch Time | Read More\" coords=\"750,50,980,440\" href=\"http://www.ebay.com/gds/6-High-Tech-Lunchboxes-That-Will-Transform-Lunch-Time-/10000000205560454/g.html\" shape=\"rect\" title=\"6 High Tech Lunchboxes That Will Transform Lunch Time | Read More\">\n          \"\\n\\t\\t\\t\"\n        \"\\n\\t\\t\"\n    \"\\n\\t\\t\"\n    <DIV _sp=\"p2051541.m2734.l10\" class=\"widget rpp-banner rpp-banner-last\" data-banner-id=\"2746\">\n      \"\\n\\t\\t\\t\"\n      <XIMG alt=\"Get Inspired with Back to School Collections\" src=\"http://i.ebayimg.com/00/s/NTYwWDk4MA==/z/qmAAAOSwgQ9Vu94q/$_57.PNG?set_id=2\" usemap=\"#image-map-2746\">\n        \"\\n\\t\\t\\t\"\n        <MAP name=\"image-map-2746\">\n          \"\\n\\t\\t\\t\\t\"\n          <AREA alt=\"Unique Dorm Room Decor\" coords=\"0,47,312,560\" href=\"http://www.ebay.com/cln/ebaycollectionseditor/-/220852069015\" shape=\"rect\" title=\"Unique Dorm Room Decor\">\n          \"\\n\\t\\t\\t\\t\"\n          <AREA alt=\"Cool First Cars Under $15,000\" coords=\"333,47,646,560\" href=\"http://www.ebay.com/cln/ebaycollectionseditor/-/220856092015\" shape=\"rect\" title=\"Cool First Cars Under $15,000\">\n          \"\\n\\t\\t\\t\\t\"\n          <AREA alt=\"Fill Your Backpack\" coords=\"667,47,980,560\" href=\"http://www.ebay.com/cln/ebaycollectionseditor/fill-your-backpack/217869036015\" shape=\"rect\" title=\"Fill Your Backpack\">\n          \"\\n\\t\\t\\t\"\n        \"\\n\\t\\t\"\n    \"\\n\\t\\t\"\n    <DIV class=\"text-module\">\n      \"\\n\\t\\t\\t\"\n      <DIV class=\"mixed-content\">\n        \"\\n\\t\\t\\t\\t\"\n        <P class=\"p1\">\n          <B>\n            \"What should you look for in an elementary school backpack?\"\n        \"\\n\\t\\t\\t\\t\"\n        <P class=\"p2\">\n          \"\\n\\t\\t\\t\\t\\t\"\n          <BR>\n          \"\\n\\t\\t\\t\\t\"\n        \"\\n\\t\\t\\t\\t\"\n        <P class=\"p1\">\n          \"Kids heading back to school need backpacks that are supportive, comfortable, and promote healthy posture. Backpacks with two straps distribute weight evenly, which is better for a youngster's neck, shoulders, and spine. Kids who walk home from school\\n\\t\\t\\t\\t\\tor wait outdoors for transportation should have reflectors on their backpacks for visibility. A backpack should also fit properly, which means it should rest on the lower back no more than 4 inches below the waist. The seam where the straps meet\\n\\t\\t\\t\\t\\tthe top of the bag should rest roughly 1 or 2 inches below the top of the shoulders.\"\n        \"\\n\\t\\t\\t\\t\"\n        <P class=\"p2\">\n          \"\\n\\t\\t\\t\\t\\t\"\n          <BR>\n          \"\\n\\t\\t\\t\\t\"\n        \"\\n\\t\\t\\t\\t\"\n        <P class=\"p1\">\n          <B>\n            \"What is the best way to keep a school lunch fresh and safe?\"\n        \"\\n\\t\\t\\t\\t\"\n        <P class=\"p2\">\n          \"\\n\\t\\t\\t\\t\\t\"\n          <BR>\n          \"\\n\\t\\t\\t\\t\"\n        \"\\n\\t\\t\\t\\t\"\n        <P class=\"p1\">\n          \"An insulated bag with a reusable, food-safe ice pack is a great way to keep sandwiches, fruits, and veggies at a safe temperature over hours of storage in a school locker or cubby. Wrapping sensitive foods in two layers of protection, such as a layer\\n\\t\\t\\t\\t\\tof foil as well as a layer of plastic wrap, is another worthwhile precaution. Small, colorful, airtight plastic containers are also both fun and effective for keeping foods fresh, plus there are plastic food containers available with their own dedicated\\n\\t\\t\\t\\t\\tice packs that snap into the lids for safe and convenient freshness.\"\n        \"\\n\\t\\t\\t\"\n      \"\\n\\t\\t\"\n    \"\\n\\t\\t\"\n    <DIV class=\"widget footnotes\">\n      \"\\n\\t\\t\\t\"\n      <P class=\"bottom-disclaimer-text\">\n      \"\\n\\t\\t\"\n    \"\\n\\t\\t\"\n    <DIV class=\"clearFloat\">\n    \"\\n\\t\"\n  \"\\n\\t\"\n  <DIV class=\"clearFloat\">\n  \"\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/large/from.html",
    "content": "<div class=\"main\" style=\"display: none;\">\n\t<div class=\"breadcrumbs\" _sp=\"p2051541.m2158.l1\">\n\t\t<nav role=\"navigation\">\n\t\t\t<p id=\"breadcrumblabel\" class=\"g-hdn\">You are here</p>\n\t\t\t<ol id=\"bc\" aria-labelledby=\"breadcrumblabel\">\n\t\t\t\t<li><a class=\"thrd\" href=\"http://www.ebay.com\" title=\"eBay\">eBay</a></li>\n\t\t\t\t<li class=\"gspr right\">&gt;</li>\n\t\t\t\t<li>\n\t\t\t\t\t<span tabindex=\"0\" aria-label=\"Back to School\">Back to School</span>\n\t\t\t\t</li>\n\t\t\t</ol>\n\t\t</nav>\n\t</div>\n\t<div class=\"clearFloat\"></div>\n\t<div class=\"nav\">\n\t\t<a href=\"http://www.ebay.com/rpp/back-to-school\">\n\t\t\t<a tabindex=\"-1\" id=\"mainContent\"></a>\n\t\t\t<h1 class=\"title\">Back to School</h1>\n\t\t</a>\n\t\t<ul class=\"widget navigation-list main-navigation\" _sp=\"p2051541.m2733.l1\">\n\t\t\t<li data-node-id=\"0\">\n\t\t\t\t<a href=\"\" class=\"title-block default-cursor\">\n\t\t\t\t\t<span class=\"arrow-square\"></span>\n\t\t\t\t\t<span class=\"title\">Shop Electronics</span>\n\t\t\t\t\t<span class=\"rarrow\"></span>\n\t\t\t\t</a>\n\t\t\t\t<ul class=\"navigation-list\">\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/rpp/back-to-school-events/dell-laptops-lte-8-3-8-10\">Up to 60% off Dell Laptops</a></li>\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/rpp/back-to-school-events/refurb-tech-lte-7-27-8-10\">Up to 60% off Refurbished Tech</a></li>\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/rpp/back-to-school-events/deals-on-laptops-and-accessories\">Up to 40% off Laptops and Accessories</a></li>\n\t\t\t\t</ul>\n\t\t\t</li>\n\t\t\t<li data-node-id=\"1\">\n\t\t\t\t<a href=\"\" class=\"title-block default-cursor\">\n\t\t\t\t\t<span class=\"arrow-square\"></span>\n\t\t\t\t\t<span class=\"title\">Shop Home and Garden</span>\n\t\t\t\t\t<span class=\"rarrow\"></span>\n\t\t\t\t</a>\n\t\t\t\t<ul class=\"navigation-list\">\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/rpp/back-to-school-events/lte-clean-up-your-study-space-8-3-8-17\">Up to 30% off Cleaning Supplies</a></li>\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/rpp/back-to-school-events/lte-up-to-50-off-dorm-furniture-8-3-8-11\">Up to 50% off Dorm Furniture</a></li>\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/rpp/back-to-school-events/lte-bts-furniture-bedding-0720\">Up to 60% off Dorm Essentials</a></li>\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/rpp/back-to-school-events/study-in-style-up-to-60-off\">Study in Style Up to 60% off</a></li>\n\t\t\t\t</ul>\n\t\t\t</li>\n\t\t\t<li data-node-id=\"2\">\n\t\t\t\t<a href=\"\" class=\"title-block default-cursor\">\n\t\t\t\t\t<span class=\"arrow-square\"></span>\n\t\t\t\t\t<span class=\"title\">Shop Fashion</span>\n\t\t\t\t\t<span class=\"rarrow\"></span>\n\t\t\t\t</a>\n\t\t\t\t<ul class=\"navigation-list\">\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/rpp/back-to-school-events/fse-072015-p-bs-handbags-and-accessories/shop-all\">Starting at $4.99 Handbags and Accessories</a></li>\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/rpp/back-to-school-events/fse-070615-p-bs-watches/shop-all\">Under $150 Watches</a></li>\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/rpp/back-to-school-events/fse-070615-p-bs-apparel/shop-all\">Apparel Starting at $4.99</a></li>\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/rpp/back-to-school-events/fse-070615-p-bs-athletic-shoes-and-apparel/shop-all\">Up to 50% off Nike, adidas, and more</a></li>\n\t\t\t\t</ul>\n\t\t\t</li>\n\t\t\t<li data-node-id=\"3\">\n\t\t\t\t<a href=\"\" class=\"title-block default-cursor\">\n\t\t\t\t\t<span class=\"arrow-square\"></span>\n\t\t\t\t\t<span class=\"title\">Shop More</span>\n\t\t\t\t\t<span class=\"rarrow\"></span>\n\t\t\t\t</a>\n\t\t\t\t<ul class=\"navigation-list\">\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/rpp/back-to-school-events/under-50-student-deals-7-20-8-31\">Under $50 Student Must-Haves</a></li>\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/sch/Textbooks-Education-/2228/i.html?_since=15&amp;_from=R40&amp;_sofindtype=0&amp;_fcm=1&amp;_nkw=&amp;_udlo=&amp;_udhi=&amp;_ftrt=901&amp;_ftrv=1&amp;_sabdlo=&amp;_sabdhi=&amp;_samilow=&amp;_samihi=&amp;_sadis=15&amp;_stpos=94587&amp;_fss=1&amp;_fsradio=%26LH_SpecificSeller%3D1&amp;_saslop=1&amp;_sasl=betterworldbooks%2Cbarnesandnobleinc%2Cbuy%2Ctelewhiz%2Csaveout%2Cnationalbookseller%2Chapptimesforever%2Ctextbooks-now&amp;_sop=12&amp;_ipg=50&amp;_dmd=2&amp;LH_AllListings=1&amp;LH_SpecificSeller=1&amp;LH_ItemCondition=1000%7C2750%7C4000%7C5000\">Up to 20% off Textbooks and Books</a></li>\n\t\t\t\t\t<li\n\t\t\t\t\tdata-node-id=\"\"><a href=\"http://www.ebay.com/rpp/back-to-school-events/deals-on-wheels-7-20-8-24\">Up to 60% off Deals on Wheels</a></li>\n\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/rpp/gift-cards\">Gift Cards</a></li>\n\t\t\t</ul>\n\t\t\t</li>\n\t\t\t<li data-node-id=\"4\">\n\t\t\t\t<a href=\"\" class=\"title-block default-cursor\">\n\t\t\t\t\t<span class=\"arrow-square\"></span>\n\t\t\t\t\t<span class=\"title\">Inspiration</span>\n\t\t\t\t\t<span class=\"rarrow\"></span>\n\t\t\t\t</a>\n\t\t\t\t<ul class=\"navigation-list\">\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/gds/Back-To-School-Essentials-High-School-Edition-/10000000205541556/g.html\">Back-To-School Essentials: High School Edition</a></li>\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://stylestories.ebay.com/the-top-tech-sessories-on-ebay-right-now/\">Top 16 Tech-Sessories on eBay Right Now</a></li>\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/gds/Sell-on-eBay-to-Fund-Back-to-School-Shopping-/10000000205402716/g.html\">Sell on eBay to Fund Back to School Shopping</a></li>\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/gds/6-High-Tech-Lunchboxes-That-Will-Transform-Lunch-Time-/10000000205560454/g.html\">6 High Tech Lunchboxes That Will Transform Lunch Time</a></li>\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/cln/ebaycollectionseditor/-/220852069015\">Unique Dorm Room Decor</a></li>\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/cln/ebaycollectionseditor/-/220856092015\">Cool First Cars Under $15,000</a></li>\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/cln/ebaycollectionseditor/fill-your-backpack/217869036015\">Fill Your Backpack</a></li>\n\t\t\t\t</ul>\n\t\t\t</li>\n\t\t</ul>\n\t</div>\n\t<div class=\"content \">\n\t\t<div class=\"content-events-capture-mask off\"></div>\n\t\t<div class=\"widget header-banner img-banner\">\n\t\t\t<ximg src=\"http://rtm.ebaystatic.com/0/RTMS/Image/DealEvents_TopBanner_1200x70.png\" alt=\"Back to School\">\n\t\t</div>\n\t\t<div class=\"widget rpp-banner rpp-banner-first rpp-banner-last\" data-banner-id=\"2735\" _sp=\"p2051541.m2734.l2\">\n\t\t\t<a href=\"http://www.ebay.com/rpp/back-to-school-events/dell-laptops-lte-8-3-8-10\" title=\"Back to School | Up to 60% off Dell Laptops | Shop now\">\n\t\t\t\t<ximg src=\"http://i.ebayimg.com/00/s/NDE4WDk4MA==/z/cPQAAOSwMmBVupJx/$_57.PNG?set_id=2\" alt=\"Back to School | Up to 60% off Dell Laptops | Shop now\">\n\t\t\t</a>\n\t\t</div>\n\t\t<div class=\"widget top-category-deals\" data-widget-id=\"27350\" _sp=\"p2051541.m2735.l1\">\n\t\t\t<h2 class=\"title top-cat-with-link\">\n\t\t\t\tUnder $50 Student Must-Haves<a href=\"http://www.ebay.com/rpp/back-to-school-events/under-50-student-deals-7-20-8-31\">Shop All<i></i></a></h2>\n\t\t\t<div class=\"widget-wrapper\">\n\t\t\t\t<div class=\"widget item-widget\">\n\t\t\t\t\t<a href=\"http://www.ebay.com/itm/Logitech-Wireless-Wave-Keyboard-Mouse-Combo-/251957522514\">\n\t\t\t\t\t\t<div class=\"image\">\n\t\t\t\t\t\t\t<ximg class=\"absolute-center\" src=\"http://i.ebayimg.com/images/m/mwXY17VxUwEe_6_6sAu1ZJA/s-l225/p.jpg\" alt=\"Logitech Wireless Wave Keyboard &amp; Mouse Combo\">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"item-details\">\n\t\t\t\t\t\t\t<div class=\"title\">Logitech Wireless Wave Keyboard &amp; Mouse Combo</div>\n\t\t\t\t\t\t\t<div class=\"price-row\">\n\t\t\t\t\t\t\t\t<div class=\"discounted-price\">\n\t\t\t\t\t\t\t\t\t<span class=\"price\">\n\t\t\t\t\t\t\t\t\t\t$36.95</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"widget-wrapper\">\n\t\t\t\t<div class=\"widget item-widget\">\n\t\t\t\t\t<a href=\"http://www.ebay.com/itm/Automatic-Stainless-Steel-Hands-Free-IR-Sensor-Soap-Dispenser-w-Stand-Best-GIFT-/291227666715\">\n\t\t\t\t\t\t<div class=\"image\">\n\t\t\t\t\t\t\t<ximg class=\"absolute-center\" src=\"http://i.ebayimg.com/images/m/mOhiJ9yRnEUp7kQbbUu6UYA/s-l225/p.jpg\" alt=\"Automatic Stainless Steel Hands Free IR Sensor Soap Dispenser w/ Stand Best GIFT\">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"item-details\">\n\t\t\t\t\t\t\t<div class=\"title\">Automatic Stainless Steel Hands Free IR Sensor Soap Dispenser w/ Stand Best GIFT</div>\n\t\t\t\t\t\t\t<div class=\"price-row\">\n\t\t\t\t\t\t\t\t<div class=\"discounted-price\">\n\t\t\t\t\t\t\t\t\t<span class=\"price\">\n\t\t\t\t\t\t\t\t\t\t$8.88</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"original-price\">\n\t\t\t\t\t\t\t\t\t<del class=\"oprc price\">$56.99</del>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"discount green\"><b>(84% off)</b></div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"widget-wrapper\">\n\t\t\t\t<div class=\"widget item-widget\">\n\t\t\t\t\t<a href=\"http://www.ebay.com/itm/SwissGear-Travel-Gear-ScanSmart-Backpack-1900-4-Colors-Laptop-Backpack-NEW-/381037241412\">\n\t\t\t\t\t\t<div class=\"image\">\n\t\t\t\t\t\t\t<ximg class=\"absolute-center\" src=\"http://i.ebayimg.com/images/m/myH8DjZXkAdtT6DFFrIe08w/s-l225/p.jpg\" alt=\"SwissGear Travel Gear ScanSmart Backpack 1900 4 Colors Laptop Backpack NEW\">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"item-details\">\n\t\t\t\t\t\t\t<div class=\"title\">SwissGear Travel Gear ScanSmart Backpack 1900 4 Colors Laptop Backpack NEW</div>\n\t\t\t\t\t\t\t<div class=\"price-row\">\n\t\t\t\t\t\t\t\t<div class=\"discounted-price\">\n\t\t\t\t\t\t\t\t\t<span class=\"price\">\n\t\t\t\t\t\t\t\t\t\t$49.99</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"original-price\">\n\t\t\t\t\t\t\t\t\t<del class=\"oprc price\">$130.00</del>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"discount green\"><b>(61% off)</b></div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"widget-wrapper\">\n\t\t\t\t<div class=\"widget item-widget\">\n\t\t\t\t\t<a href=\"http://www.ebay.com/itm/2-Pack-100-Original-OEM-Apple-EarPods-White-In-Ear-Headset-for-iPhone-5-5S-6-6-/281756995268\">\n\t\t\t\t\t\t<div class=\"image\">\n\t\t\t\t\t\t\t<ximg class=\"absolute-center\" src=\"http://i.ebayimg.com/images/m/m2W2cYIqi2UY4LFnSfHeNdg/s-l225/p.jpg\" alt=\"2-Pack 100% Original OEM Apple EarPods White In-Ear Headset for iPhone 5,5S,6,6+\">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"item-details\">\n\t\t\t\t\t\t\t<div class=\"title\">2-Pack 100% Original OEM Apple EarPods White In-Ear Headset for iPhone 5,5S,6,6+</div>\n\t\t\t\t\t\t\t<div class=\"price-row\">\n\t\t\t\t\t\t\t\t<div class=\"discounted-price\">\n\t\t\t\t\t\t\t\t\t<span class=\"price\">\n\t\t\t\t\t\t\t\t\t\t$19.99</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"original-price\">\n\t\t\t\t\t\t\t\t\t<del class=\"oprc price\">$29.99</del>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"discount green\"><b>(33% off)</b></div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"clear-float-hack\"></div>\n\t\t</div>\n\t\t<div class=\"widget rpp-banner rpp-banner-first rpp-banner-last\" data-banner-id=\"2736\" _sp=\"p2051541.m2734.l3\">\n\t\t\t<ximg src=\"http://i.ebayimg.com/00/s/MzUwWDk4MA==/z/dFgAAOSwLVZVupOB/$_57.PNG?set_id=2\" alt=\"Up to 30% off Cleaning Supplies | Up to 60% off Refurbished Tech | Shop now\" usemap=\"#image-map-2736\">\n\t\t\t<map name=\"image-map-2736\">\n\t\t\t\t<area shape=\"rect\" coords=\"0,0,480,350\" href=\"http://www.ebay.com/rpp/back-to-school-events/lte-clean-up-your-study-space-8-3-8-17\" alt=\"Up to 30% off Cleaning Supplies | Shop now\" title=\"Up to 30% off Cleaning Supplies | Shop now\">\n\t\t\t\t<area shape=\"rect\" coords=\"500,0,980,350\" href=\"http://www.ebay.com/rpp/back-to-school-events/Refurb-Tech-LTE-7-27-8-10\" alt=\"Up to 60% off Refurbished Tech | Shop now\" title=\"Up to 60% off Refurbished Tech | Shop now\">\n\t\t\t</map>\n\t\t</div>\n\t\t<div class=\"widget top-category-deals\" data-widget-id=\"27351\" _sp=\"p2051541.m2735.l2\">\n\t\t\t<h2 class=\"title top-cat-with-link\">\n\t\t\t\tUp to 40% off Laptops and Accessories<a href=\"http://www.ebay.com/rpp/back-to-school-events/deals-on-laptops-and-accessories\">Shop All<i></i></a></h2>\n\t\t\t<div class=\"widget-wrapper\">\n\t\t\t\t<div class=\"widget item-widget\">\n\t\t\t\t\t<a href=\"http://www.ebay.com/itm/HP-250-G3-15-6-Notebook-Intel-i3-4GB-RAM-500GB-HDD-Win-8-1-Win-10-Upgrade-/121604368277\">\n\t\t\t\t\t\t<div class=\"image\">\n\t\t\t\t\t\t\t<ximg class=\"absolute-center\" src=\"http://i.ebayimg.com/images/m/mGh_fHGD3VFDen18PZrTVKg/s-l225/p.jpg\" alt=\"HP 250 G3 15.6  Notebook, Intel i3 , 4GB RAM, 500GB HDD, Win 8.1/Win 10 Upgrade\">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"item-details\">\n\t\t\t\t\t\t\t<div class=\"title\">HP 250 G3 15.6 Notebook, Intel i3 , 4GB RAM, 500GB HDD, Win 8.1/Win 10 Upgrade</div>\n\t\t\t\t\t\t\t<div class=\"price-row\">\n\t\t\t\t\t\t\t\t<div class=\"discounted-price\">\n\t\t\t\t\t\t\t\t\t<span class=\"price\">\n\t\t\t\t\t\t\t\t\t\t$289.99</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"widget-wrapper\">\n\t\t\t\t<div class=\"widget item-widget\">\n\t\t\t\t\t<a href=\"http://www.ebay.com/itm/Samsung-850-Pro-Series-256GB-2-5-SATA-III-Internal-Solid-State-Drive-/391213788921\">\n\t\t\t\t\t\t<div class=\"image\">\n\t\t\t\t\t\t\t<ximg class=\"absolute-center\" src=\"http://i.ebayimg.com/images/m/muoYJx3o-4_PhZJded_AGdQ/s-l225/p.jpg\" alt=\"Samsung 850 Pro-Series 256GB 2.5\"></div><div class=\"item-details \"><div class=\"title\n\t\t\t\t\t\t\t\">Samsung 850 Pro-Series 256GB 2.5\" SATA III Internal Solid State Drive</div>\n\t\t\t\t\t\t\t<div class=\"price-row\">\n\t\t\t\t\t\t\t\t<div class=\"discounted-price\">\n\t\t\t\t\t\t\t\t\t<span class=\"price\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"gl-map-t\">See details...</span>\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"original-price\">\n\t\t\t\t\t\t\t\t\t<del class=\"oprc price\">$249.99</del>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"widget-wrapper\">\n\t\t\t\t<div class=\"widget item-widget\">\n\t\t\t\t\t<a href=\"http://www.ebay.com/itm/Kingston-DT100-G3-64GB-USB-3-0-Flash-Drive-/301703983653\">\n\t\t\t\t\t\t<div class=\"image\">\n\t\t\t\t\t\t\t<ximg class=\"absolute-center\" src=\"http://i.ebayimg.com/images/m/mGQ9swIsKmiMO0zAf8T5LTg/s-l225/p.jpg\" alt=\"Kingston DT100 G3 64GB USB 3.0 Flash Drive\">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"item-details\">\n\t\t\t\t\t\t\t<div class=\"title\">Kingston DT100 G3 64GB USB 3.0 Flash Drive</div>\n\t\t\t\t\t\t\t<div class=\"price-row\">\n\t\t\t\t\t\t\t\t<div class=\"discounted-price\">\n\t\t\t\t\t\t\t\t\t<span class=\"price\">\n\t\t\t\t\t\t\t\t\t\t$18.99</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"widget-wrapper\">\n\t\t\t\t<div class=\"widget item-widget\">\n\t\t\t\t\t<a href=\"http://www.ebay.com/itm/Toshiba-Satellite-S55-B5155-15-6-LED-Intel-Core-i7-5500U-2-40GHz-8GB-1TB-HDD-/161780686241\">\n\t\t\t\t\t\t<div class=\"image\">\n\t\t\t\t\t\t\t<ximg class=\"absolute-center\" src=\"http://i.ebayimg.com/images/m/mbbA68ZCxx5_FmlhHBOiueQ/s-l225/p.jpg\" alt=\"Toshiba Satellite S55-B5155 15.6\"></div><div class=\"item-details\n\t\t\t\t\t\t\t\"><div class=\"title \">Toshiba Satellite S55-B5155 15.6\" LED Intel Core i7-5500U 2.40GHz 8GB 1TB HDD</div>\n\t\t\t\t\t\t\t<div class=\"price-row\">\n\t\t\t\t\t\t\t\t<div class=\"discounted-price\">\n\t\t\t\t\t\t\t\t\t<span class=\"price\">\n\t\t\t\t\t\t\t\t\t\t$629.99</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"clear-float-hack\"></div>\n\t\t</div>\n\t\t<div class=\"widget rpp-banner rpp-banner-first rpp-banner-last\" data-banner-id=\"2738\" _sp=\"p2051541.m2734.l4\">\n\t\t\t<ximg src=\"http://i.ebayimg.com/00/s/MzUwWDk4MA==/z/vZUAAOSwyQtVw6LP/$_57.PNG?set_id=2\" alt=\"Up to 50% off Dorm Furniture | Shop now\" usemap=\"#image-map-2738\">\n\t\t\t<map name=\"image-map-2738\">\n\t\t\t\t<area shape=\"rect\" coords=\"500,0,980,350\" href=\"http://www.ebay.com/rpp/back-to-school-events/lte-up-to-50-off-dorm-furniture-8-3-8-11\" alt=\"Up to 50% off Dorm Furniture | Shop now\" title=\"Up to 50% off Dorm Furniture | Shop now\">\n\t\t\t</map>\n\t\t</div>\n\t\t<div class=\"widget top-category-deals\" data-widget-id=\"27352\" _sp=\"p2051541.m2735.l3\">\n\t\t\t<h2 class=\"title top-cat-with-link\">\n\t\t\t\tUp to 60% off Dorm Essentials<a href=\"http://www.ebay.com/rpp/back-to-school-events/lte-bts-furniture-bedding-0720\">Shop All<i></i></a></h2>\n\t\t\t<div class=\"widget-wrapper\">\n\t\t\t\t<div class=\"widget item-widget\">\n\t\t\t\t\t<a href=\"http://www.ebay.com/itm/Angle-Height-Adjustable-Rolling-Laptop-Desk-Cart-Over-Bed-Hospital-Table-Stand-/310980165348\">\n\t\t\t\t\t\t<div class=\"image\">\n\t\t\t\t\t\t\t<ximg class=\"absolute-center\" src=\"http://i.ebayimg.com/images/m/mLdiAAbBpJ2ETBAj27oanWQ/s-l225/p.jpg\" alt=\"Angle &amp; Height Adjustable Rolling Laptop Desk Cart Over Bed Hospital Table Stand\">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"item-details\">\n\t\t\t\t\t\t\t<div class=\"title\">Angle &amp; Height Adjustable Rolling Laptop Desk Cart Over Bed Hospital Table Stand</div>\n\t\t\t\t\t\t\t<div class=\"price-row\">\n\t\t\t\t\t\t\t\t<div class=\"discounted-price\">\n\t\t\t\t\t\t\t\t\t<span class=\"price\">\n\t\t\t\t\t\t\t\t\t\t$41.95</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"original-price\">\n\t\t\t\t\t\t\t\t\t<del class=\"oprc price\">$79.95</del>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"discount green\"><b>(47% off)</b></div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"widget-wrapper\">\n\t\t\t\t<div class=\"widget item-widget\">\n\t\t\t\t\t<a href=\"http://www.ebay.com/itm/Lavish-Home-LED-Energy-Effiecient-Desk-Lamp-with-Dimmer-Switch-/371182872837\">\n\t\t\t\t\t\t<div class=\"image\">\n\t\t\t\t\t\t\t<ximg class=\"absolute-center\" src=\"http://i.ebayimg.com/images/m/mkShlp9UxA6xe1K_qHirzwg/s-l225/p.jpg\" alt=\"Lavish Home LED Energy Effiecient Desk Lamp with Dimmer Switch\">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"item-details\">\n\t\t\t\t\t\t\t<div class=\"title\">Lavish Home LED Energy Effiecient Desk Lamp with Dimmer Switch</div>\n\t\t\t\t\t\t\t<div class=\"price-row\">\n\t\t\t\t\t\t\t\t<div class=\"discounted-price\">\n\t\t\t\t\t\t\t\t\t<span class=\"price\">\n\t\t\t\t\t\t\t\t\t\t$35.99</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"widget-wrapper\">\n\t\t\t\t<div class=\"widget item-widget\">\n\t\t\t\t\t<a href=\"http://www.ebay.com/itm/INTEX-Inflatable-Lounge-Beanless-Lounger-Bag-Chair-Grey-68579EP-/390611405782\">\n\t\t\t\t\t\t<div class=\"image\">\n\t\t\t\t\t\t\t<ximg class=\"absolute-center\" src=\"http://i.ebayimg.com/images/m/mVL3mVCxuSnzSbG3Uz7iDNg/s-l225/p.jpg\" alt=\"INTEX Inflatable Lounge Beanless Lounger Bag Chair - Grey | 68579EP   \">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"item-details\">\n\t\t\t\t\t\t\t<div class=\"title\">INTEX Inflatable Lounge Beanless Lounger Bag Chair - Grey | 68579EP </div>\n\t\t\t\t\t\t\t<div class=\"price-row\">\n\t\t\t\t\t\t\t\t<div class=\"discounted-price\">\n\t\t\t\t\t\t\t\t\t<span class=\"price\">\n\t\t\t\t\t\t\t\t\t\t$20.95</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"original-price\">\n\t\t\t\t\t\t\t\t\t<del class=\"oprc price\">$49.99</del>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"discount green\"><b>(58% off)</b></div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"widget-wrapper\">\n\t\t\t\t<div class=\"widget item-widget\">\n\t\t\t\t\t<a href=\"http://www.ebay.com/itm/Star-Wars-Classic-Comforter-Twin-/301348411357\">\n\t\t\t\t\t\t<div class=\"image\">\n\t\t\t\t\t\t\t<ximg class=\"absolute-center\" src=\"http://i.ebayimg.com/images/m/m8FxveyQGYlhwGkCWzPHp3A/s-l225/p.jpg\" alt=\"Star Wars Classic Comforter - Twin\">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"item-details\">\n\t\t\t\t\t\t\t<div class=\"title\">Star Wars Classic Comforter - Twin</div>\n\t\t\t\t\t\t\t<div class=\"price-row\">\n\t\t\t\t\t\t\t\t<div class=\"discounted-price\">\n\t\t\t\t\t\t\t\t\t<span class=\"price\">\n\t\t\t\t\t\t\t\t\t\t$32.99</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"clear-float-hack\"></div>\n\t\t</div>\n\t\t<div class=\"widget rpp-banner rpp-banner-first\" data-banner-id=\"2739\" _sp=\"p2051541.m2734.l5\">\n\t\t\t<ximg src=\"http://i.ebayimg.com/00/s/MzUwWDk4MA==/z/Tj4AAOSwd0BVsXJS/$_57.PNG?set_id=2\" alt=\"Starting at $4.99 Handbags and Accessories | Under $150 Watches | Shop now\" usemap=\"#image-map-2739\">\n\t\t\t<map name=\"image-map-2739\">\n\t\t\t\t<area shape=\"rect\" coords=\"0,0,480,350\" href=\"http://www.ebay.com/rpp/back-to-school-events/fse-072015-p-bs-handbags-and-accessories/shop-all\" alt=\"Starting at $4.99 Handbags and Accessories | Shop now\" title=\"Starting at $4.99 Handbags and Accessories | Shop now\">\n\t\t\t\t<area shape=\"rect\" coords=\"500,0,980,350\" href=\"http://www.ebay.com/rpp/back-to-school-events/fse-070615-p-bs-watches/shop-all\" alt=\"Under $150 Watches | Shop now\" title=\"Under $150 Watches | Shop now\">\n\t\t\t</map>\n\t\t</div>\n\t\t<div class=\"widget rpp-banner\" data-banner-id=\"2741\" _sp=\"p2051541.m2734.l6\">\n\t\t\t<a href=\"http://www.ebay.com/sch/Textbooks-Education-/2228/i.html?_since=15&amp;_from=R40&amp;_sofindtype=0&amp;_fcm=1&amp;_nkw=&amp;_udlo=&amp;_udhi=&amp;_ftrt=901&amp;_ftrv=1&amp;_sabdlo=&amp;_sabdhi=&amp;_samilow=&amp;_samihi=&amp;_sadis=15&amp;_stpos=94587&amp;_fss=1&amp;_fsradio=%26LH_SpecificSeller%3D1&amp;_saslop=1&amp;_sasl=betterworldbooks%2Cbarnesandnobleinc%2Cbuy%2Ctelewhiz%2Csaveout%2Cnationalbookseller%2Chapptimesforever%2Ctextbooks-now&amp;_sop=12&amp;_ipg=50&amp;_dmd=2&amp;LH_AllListings=1&amp;LH_SpecificSeller=1&amp;LH_ItemCondition=1000%7C2750%7C4000%7C5000\"\n\t\t\ttitle=\"Up to 20% off Textbooks and Books | Shop now\">\n\t\t\t\t<ximg src=\"http://i.ebayimg.com/00/s/MzUwWDk4MA==/z/Vs8AAOSwjVVVupps/$_57.PNG?set_id=2\" alt=\"Up to 20% off Textbooks and Books | Shop now\">\n\t\t\t</a>\n\t\t</div>\n\t\t<div class=\"widget rpp-banner\" data-banner-id=\"2742\" _sp=\"p2051541.m2734.l7\">\n\t\t\t<ximg src=\"http://i.ebayimg.com/00/s/MzUwWDk4MA==/z/nMwAAOSwPcVVsXTj/$_57.PNG?set_id=2\" alt=\"Starting at $4.99 Apparel | Up to 50% off Nike, adidas, and more | Shop now\" usemap=\"#image-map-2742\">\n\t\t\t<map name=\"image-map-2742\">\n\t\t\t\t<area shape=\"rect\" coords=\"0,0,480,350\" href=\"http://www.ebay.com/rpp/back-to-school-events/fse-070615-p-bs-apparel/shop-all\" alt=\"Starting at $4.99 Apparel | Shop now\" title=\"Starting at $4.99 Apparel | Shop now\">\n\t\t\t\t<area shape=\"rect\" coords=\"500,0,980,350\" href=\"http://www.ebay.com/rpp/back-to-school-events/fse-070615-p-bs-athletic-shoes-and-apparel/shop-all\" alt=\"Up to 50% off Nike, adidas, and more | Shop now\" title=\"Up to 50% off Nike, adidas, and more | Shop now\">\n\t\t\t</map>\n\t\t</div>\n\t\t<div class=\"widget rpp-banner\" data-banner-id=\"2744\" _sp=\"p2051541.m2734.l8\">\n\t\t\t<a href=\"http://www.ebay.com/rpp/back-to-school-events/deals-on-wheels-7-20-8-24\" title=\"Up to 60% off Deals on Wheels | Shop now\">\n\t\t\t\t<ximg src=\"http://i.ebayimg.com/00/s/MzUwWDk4MA==/z/2EQAAOSwyQtVupmz/$_57.PNG?set_id=2\" alt=\"Up to 60% off Deals on Wheels | Shop now\">\n\t\t\t</a>\n\t\t</div>\n\t\t<div class=\"widget rpp-banner\" data-banner-id=\"2745\" _sp=\"p2051541.m2734.l9\">\n\t\t\t<ximg src=\"http://i.ebayimg.com/00/s/NDQwWDk4MA==/z/-PgAAOSw~gRVu94D/$_57.PNG?set_id=2\" alt=\"Back to School Guides\" usemap=\"#image-map-2745\">\n\t\t\t<map name=\"image-map-2745\">\n\t\t\t\t<area shape=\"rect\" coords=\"0,50,228,440\" href=\"http://www.ebay.com/gds/Back-To-School-Essentials-High-School-Edition-/10000000205541556/g.html\" alt=\"Back-To-School Essentials: High School Edition | Read More\" title=\"Back-To-School Essentials: High School Edition | Read More\">\n\t\t\t\t<area shape=\"rect\" coords=\"250,50,478,440\" href=\"http://stylestories.ebay.com/the-top-tech-sessories-on-ebay-right-now/\" alt=\"Top 16 Tech-Sessories on eBay Right Now | Read More\" title=\"Top 16 Tech-Sessories on eBay Right Now | Read More\">\n\t\t\t\t<area shape=\"rect\" coords=\"500,50,730,440\" href=\"http://www.ebay.com/gds/Sell-on-eBay-to-Fund-Back-to-School-Shopping-/10000000205402716/g.html\" alt=\"Sell on eBay to Fund Back to School Shopping | Read More\" title=\"Sell on eBay to Fund Back to School Shopping | Read More\">\n\t\t\t\t<area shape=\"rect\" coords=\"750,50,980,440\" href=\"http://www.ebay.com/gds/6-High-Tech-Lunchboxes-That-Will-Transform-Lunch-Time-/10000000205560454/g.html\" alt=\"6 High Tech Lunchboxes That Will Transform Lunch Time | Read More\" title=\"6 High Tech Lunchboxes That Will Transform Lunch Time | Read More\">\n\t\t\t</map>\n\t\t</div>\n\t\t<div class=\"widget rpp-banner rpp-banner-last\" data-banner-id=\"2746\" _sp=\"p2051541.m2734.l10\">\n\t\t\t<ximg src=\"http://i.ebayimg.com/00/s/NTYwWDk4MA==/z/qmAAAOSwgQ9Vu94q/$_57.PNG?set_id=2\" alt=\"Get Inspired with Back to School Collections\" usemap=\"#image-map-2746\">\n\t\t\t<map name=\"image-map-2746\">\n\t\t\t\t<area shape=\"rect\" coords=\"0,47,312,560\" href=\"http://www.ebay.com/cln/ebaycollectionseditor/-/220852069015\" alt=\"Unique Dorm Room Decor\" title=\"Unique Dorm Room Decor\">\n\t\t\t\t<area shape=\"rect\" coords=\"333,47,646,560\" href=\"http://www.ebay.com/cln/ebaycollectionseditor/-/220856092015\" alt=\"Cool First Cars Under $15,000\" title=\"Cool First Cars Under $15,000\">\n\t\t\t\t<area shape=\"rect\" coords=\"667,47,980,560\" href=\"http://www.ebay.com/cln/ebaycollectionseditor/fill-your-backpack/217869036015\" alt=\"Fill Your Backpack\" title=\"Fill Your Backpack\">\n\t\t\t</map>\n\t\t</div>\n\t\t<div class=\"text-module\">\n\t\t\t<div class=\"mixed-content\">\n\t\t\t\t<p class=\"p1\"><b>What should you look for in an elementary school backpack?</b></p>\n\t\t\t\t<p class=\"p2\">\n\t\t\t\t\t<br>\n\t\t\t\t</p>\n\t\t\t\t<p class=\"p1\">Kids heading back to school need backpacks that are supportive, comfortable, and promote healthy posture. Backpacks with two straps distribute weight evenly, which is better for a youngster's neck, shoulders, and spine. Kids who walk home from school\n\t\t\t\t\tor wait outdoors for transportation should have reflectors on their backpacks for visibility. A backpack should also fit properly, which means it should rest on the lower back no more than 4 inches below the waist. The seam where the straps meet\n\t\t\t\t\tthe top of the bag should rest roughly 1 or 2 inches below the top of the shoulders.</p>\n\t\t\t\t<p class=\"p2\">\n\t\t\t\t\t<br>\n\t\t\t\t</p>\n\t\t\t\t<p class=\"p1\"><b>What is the best way to keep a school lunch fresh and safe?</b></p>\n\t\t\t\t<p class=\"p2\">\n\t\t\t\t\t<br>\n\t\t\t\t</p>\n\t\t\t\t<p class=\"p1\">An insulated bag with a reusable, food-safe ice pack is a great way to keep sandwiches, fruits, and veggies at a safe temperature over hours of storage in a school locker or cubby. Wrapping sensitive foods in two layers of protection, such as a layer\n\t\t\t\t\tof foil as well as a layer of plastic wrap, is another worthwhile precaution. Small, colorful, airtight plastic containers are also both fun and effective for keeping foods fresh, plus there are plastic food containers available with their own dedicated\n\t\t\t\t\tice packs that snap into the lids for safe and convenient freshness.</p>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"widget footnotes\">\n\t\t\t<p class=\"bottom-disclaimer-text\"></p>\n\t\t</div>\n\t\t<div class=\"clearFloat\"></div>\n\t</div>\n\t<div class=\"clearFloat\"></div>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/large/to.html",
    "content": "<div class=\"main\" style=\"display: none;\">\n\t<div class=\"breadcrumbs\" _sp=\"p2051541.m2158.l1\">\n\t\t<nav role=\"navigation\">\n\t\t\t<p id=\"breadcrumblabel\" class=\"g-hdn\">You are here</p>\n\t\t\t<ol id=\"bc\" aria-labelledby=\"breadcrumblabel\">\n\t\t\t\t<li><a class=\"thrd\" href=\"http://www.ebay.com\" title=\"eBay\">eBay</a></li>\n\t\t\t\t<li class=\"gspr right\">&gt;</li>\n\t\t\t\t<li>\n\t\t\t\t\t<span tabindex=\"0\" aria-label=\"Back to School\">Back to School</span>\n\t\t\t\t</li>\n\t\t\t</ol>\n\t\t</nav>\n\t</div>\n\t<div class=\"clearFloat\"></div>\n\t<div class=\"nav\">\n\t\t<a href=\"http://www.ebay.com/rpp/back-to-school\">\n\t\t\t<a tabindex=\"-1\" id=\"mainContent\"></a>\n\t\t\t<h1 class=\"title FOO\">Back to School</h1>\n\t\t</a>\n\t\t<ul class=\"widget navigation-list main-navigation\" _sp=\"p2051541.m2733.l1\">\n\t\t\t<li data-node-id=\"FOO\">\n\t\t\t\t<a href=\"\" class=\"title-block default-cursor\">\n\t\t\t\t\t<span class=\"arrow-square\"></span>\n\t\t\t\t\t<span class=\"title\">Shop Electronics</span>\n\t\t\t\t\t<span class=\"title\">Shop Electronics</span>\n\t\t\t\t\t<span class=\"rarrow\"></span>\n\t\t\t\t</a>\n\t\t\t\t<ul class=\"navigation-list\">\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/rpp/back-to-school-events/dell-laptops-lte-8-3-8-10\">Up to 60% off Dell Laptops</a></li>\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/rpp/back-to-school-events/refurb-tech-lte-7-27-8-10\">Up to 60% off Refurbished Tech</a></li>\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/rpp/back-to-school-events/deals-on-laptops-and-accessories\">Up to 40% off Laptops and Accessories</a></li>\n\t\t\t\t</ul>\n\t\t\t</li>\n\t\t\t<li data-node-id=\"0\">\n\t\t\t\t<a href=\"\" class=\"title-block default-cursor\">\n\t\t\t\t\t<span class=\"arrow-square\"></span>\n\t\t\t\t\t<span class=\"title\">Shop Electronics</span>\n\t\t\t\t\t<span class=\"rarrow\"></span>\n\t\t\t\t</a>\n\t\t\t\t<ul class=\"navigation-list\">\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/rpp/back-to-school-events/dell-laptops-lte-8-3-8-10\">Up to 60% off Dell Laptops</a></li>\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/rpp/back-to-school-events/refurb-tech-lte-7-27-8-10\">Up to 60% off Refurbished Tech</a></li>\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/rpp/back-to-school-events/deals-on-laptops-and-accessories\">Up to 40% off Laptops and Accessories</a></li>\n\t\t\t\t</ul>\n\t\t\t</li>\n\t\t\t<li data-node-id=\"1\">\n\t\t\t\t<a href=\"\" class=\"title-block default-cursor\">\n\t\t\t\t\t<span class=\"arrow-square\"></span>\n\t\t\t\t\t<span class=\"title\">Shop Home and Garden</span>\n\t\t\t\t\t<span class=\"rarrow\"></span>\n\t\t\t\t</a>\n\t\t\t\t<ul class=\"navigation-list\">\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/rpp/back-to-school-events/lte-clean-up-your-study-space-8-3-8-17\">Up to 30% off Cleaning Supplies</a></li>\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/rpp/back-to-school-events/lte-up-to-50-off-dorm-furniture-8-3-8-11\">Up to 50% off Dorm Furniture</a></li>\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/rpp/back-to-school-events/lte-bts-furniture-bedding-0720\">Up to 60% off Dorm Essentials</a></li>\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/rpp/back-to-school-events/study-in-style-up-to-60-off\">Study in Style Up to 60% off</a></li>\n\t\t\t\t</ul>\n\t\t\t</li>\n\t\t\t<li data-node-id=\"2\">\n\t\t\t\t<a href=\"\" class=\"title-block default-cursor\">\n\t\t\t\t\t<span class=\"arrow-square\"></span>\n\t\t\t\t\t<span class=\"title\">Shop Fashion</span>\n\t\t\t\t\t<span class=\"rarrow\"></span>\n\t\t\t\t</a>\n\t\t\t\t<ul class=\"navigation-list\">\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/rpp/back-to-school-events/fse-072015-p-bs-handbags-and-accessories/shop-all\">Starting at $4.99 Handbags and Accessories</a></li>\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/rpp/back-to-school-events/fse-070615-p-bs-watches/shop-all\">Under $150 Watches</a></li>\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/rpp/back-to-school-events/fse-070615-p-bs-apparel/shop-all\">Apparel Starting at $4.99</a></li>\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/rpp/back-to-school-events/fse-070615-p-bs-athletic-shoes-and-apparel/shop-all\">Up to 50% off Nike, adidas, and more</a></li>\n\t\t\t\t</ul>\n\t\t\t</li>\n\t\t\t<li data-node-id=\"3\">\n\t\t\t\t<a href=\"\" class=\"title-block default-cursor\">\n\t\t\t\t\t<span class=\"arrow-square\"></span>\n\t\t\t\t\t<span class=\"title\">Shop More</span>\n\t\t\t\t\t<span class=\"rarrow\"></span>\n\t\t\t\t</a>\n\t\t\t\t<ul class=\"navigation-list\">\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/rpp/back-to-school-events/under-50-student-deals-7-20-8-31\">Under $50 Student Must-Haves</a></li>\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/sch/Textbooks-Education-/2228/i.html?_since=15&amp;_from=R40&amp;_sofindtype=0&amp;_fcm=1&amp;_nkw=&amp;_udlo=&amp;_udhi=&amp;_ftrt=901&amp;_ftrv=1&amp;_sabdlo=&amp;_sabdhi=&amp;_samilow=&amp;_samihi=&amp;_sadis=15&amp;_stpos=94587&amp;_fss=1&amp;_fsradio=%26LH_SpecificSeller%3D1&amp;_saslop=1&amp;_sasl=betterworldbooks%2Cbarnesandnobleinc%2Cbuy%2Ctelewhiz%2Csaveout%2Cnationalbookseller%2Chapptimesforever%2Ctextbooks-now&amp;_sop=12&amp;_ipg=50&amp;_dmd=2&amp;LH_AllListings=1&amp;LH_SpecificSeller=1&amp;LH_ItemCondition=1000%7C2750%7C4000%7C5000\">Up to 20% off Textbooks and Books</a></li>\n\t\t\t\t\t<li\n\t\t\t\t\tdata-node-id=\"\"><a href=\"http://www.ebay.com/rpp/back-to-school-events/deals-on-wheels-7-20-8-24\">Up to 60% off Deals on Wheels</a></li>\n\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/rpp/gift-cards\">Gift Cards</a></li>\n\t\t\t</ul>\n\t\t\t</li>\n\t\t\t<li data-node-id=\"4\">\n\t\t\t\t<a href=\"\" class=\"title-block default-cursor\">\n\t\t\t\t\t<span class=\"arrow-square\"></span>\n\t\t\t\t\t<span class=\"title\">Inspiration</span>\n\t\t\t\t\t<span class=\"rarrow\"></span>\n\t\t\t\t</a>\n\t\t\t\t<ul class=\"navigation-list\">\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/gds/Back-To-School-Essentials-High-School-Edition-/10000000205541556/g.html\">Back-To-School Essentials: High School Edition</a></li>\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://stylestories.ebay.com/the-top-tech-sessories-on-ebay-right-now/\">Top 16 Tech-Sessories on eBay Right Now</a></li>\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/gds/Sell-on-eBay-to-Fund-Back-to-School-Shopping-/10000000205402716/g.html\">Sell on eBay to Fund Back to School Shopping</a></li>\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/gds/6-High-Tech-Lunchboxes-That-Will-Transform-Lunch-Time-/10000000205560454/g.html\">6 High Tech Lunchboxes That Will Transform Lunch Time</a></li>\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/cln/ebaycollectionseditor/-/220852069015\">Unique Dorm Room Decor</a></li>\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/cln/ebaycollectionseditor/-/220856092015\">Cool First Cars Under $15,000</a></li>\n\t\t\t\t\t<li data-node-id=\"\"><a href=\"http://www.ebay.com/cln/ebaycollectionseditor/fill-your-backpack/217869036015\">Fill Your Backpack</a></li>\n\t\t\t\t</ul>\n\t\t\t</li>\n\t\t</ul>\n\t</div>\n\t<div class=\"content \">\n\t\t<div class=\"content-events-capture-mask off\"></div>\n\t\t<div class=\"widget header-banner img-banner\">\n\t\t\t<ximg src=\"http://rtm.ebaystatic.com/0/RTMS/Image/DealEvents_TopBanner_1200x70.png\" alt=\"Back to School\">\n\t\t</div>\n\t\t<div class=\"widget rpp-banner rpp-banner-first rpp-banner-last\" data-banner-id=\"2735\" _sp=\"p2051541.m2734.l2\">\n\t\t\t<a href=\"http://www.ebay.com/rpp/back-to-school-events/dell-laptops-lte-8-3-8-10\" title=\"Back to School | Up to 60% off Dell Laptops | Shop now\">\n\t\t\t\t<ximg src=\"http://i.ebayimg.com/00/s/NDE4WDk4MA==/z/cPQAAOSwMmBVupJx/$_57.PNG?set_id=2\" alt=\"Back to School | Up to 60% off Dell Laptops | Shop now\">\n\t\t\t</a>\n\t\t</div>\n\t\t<div class=\"widget top-category-deals\" data-widget-id=\"27350\" _sp=\"p2051541.m2735.l1\">\n\t\t\t<h2 class=\"title top-cat-with-link\">\n\t\t\t\tUnder $50 Student Must-Haves<a href=\"http://www.ebay.com/rpp/back-to-school-events/under-50-student-deals-7-20-8-31\">Shop All<i></i></a></h2>\n\t\t\t<div class=\"widget-wrapper\">\n\t\t\t\t<div class=\"widget item-widget\">\n\t\t\t\t\t<a href=\"http://www.ebay.com/itm/Logitech-Wireless-Wave-Keyboard-Mouse-Combo-/251957522514\">\n\t\t\t\t\t\t<div class=\"image\">\n\t\t\t\t\t\t\t<ximg class=\"absolute-center\" src=\"http://i.ebayimg.com/images/m/mwXY17VxUwEe_6_6sAu1ZJA/s-l225/p.jpg\" alt=\"Logitech Wireless Wave Keyboard &amp; Mouse Combo\">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"item-details\">\n\t\t\t\t\t\t\t<div class=\"title\">Logitech Wireless Wave Keyboard &amp; Mouse Combo</div>\n\t\t\t\t\t\t\t<div class=\"price-row\">\n\t\t\t\t\t\t\t\t<div class=\"discounted-price\">\n\t\t\t\t\t\t\t\t\t<span class=\"price\">\n\t\t\t\t\t\t\t\t\t\t$36.95</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"widget-wrapper\">\n\t\t\t\t<div class=\"widget item-widget\">\n\t\t\t\t\t<a href=\"http://www.ebay.com/itm/Automatic-Stainless-Steel-Hands-Free-IR-Sensor-Soap-Dispenser-w-Stand-Best-GIFT-/291227666715\">\n\t\t\t\t\t\t<div class=\"image\">\n\t\t\t\t\t\t\t<ximg class=\"absolute-center\" src=\"http://i.ebayimg.com/images/m/mOhiJ9yRnEUp7kQbbUu6UYA/s-l225/p.jpg\" alt=\"Automatic Stainless Steel Hands Free IR Sensor Soap Dispenser w/ Stand Best GIFT\">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"item-details\">\n\t\t\t\t\t\t\t<div class=\"title\">Automatic Stainless Steel Hands Free IR Sensor Soap Dispenser w/ Stand Best GIFT</div>\n\t\t\t\t\t\t\t<div class=\"price-row\">\n\t\t\t\t\t\t\t\t<div class=\"discounted-price\">\n\t\t\t\t\t\t\t\t\t<span class=\"price\">\n\t\t\t\t\t\t\t\t\t\t$8.88</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"original-price\">\n\t\t\t\t\t\t\t\t\t<del class=\"oprc price\">$56.99</del>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"discount green\"><b>(84% off)</b></div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"widget-wrapper\">\n\t\t\t\t<div class=\"widget item-widget\">\n\t\t\t\t\t<a href=\"http://www.ebay.com/itm/SwissGear-Travel-Gear-ScanSmart-Backpack-1900-4-Colors-Laptop-Backpack-NEW-/381037241412\">\n\t\t\t\t\t\t<div class=\"image\">\n\t\t\t\t\t\t\t<ximg class=\"absolute-center\" src=\"http://i.ebayimg.com/images/m/myH8DjZXkAdtT6DFFrIe08w/s-l225/p.jpg\" alt=\"SwissGear Travel Gear ScanSmart Backpack 1900 4 Colors Laptop Backpack NEW\">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"item-details\">\n\t\t\t\t\t\t\t<div class=\"title\">SwissGear Travel Gear ScanSmart Backpack 1900 4 Colors Laptop Backpack NEW</div>\n\t\t\t\t\t\t\t<div class=\"price-row\">\n\t\t\t\t\t\t\t\t<div class=\"discounted-price\">\n\t\t\t\t\t\t\t\t\t<span class=\"price\">\n\t\t\t\t\t\t\t\t\t\t$49.99</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"original-price\">\n\t\t\t\t\t\t\t\t\t<del class=\"oprc price\">$130.00</del>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"discount green\"><b>(61% off)</b></div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"widget-wrapper\">\n\t\t\t\t<div class=\"widget item-widget\">\n\t\t\t\t\t<a href=\"http://www.ebay.com/itm/2-Pack-100-Original-OEM-Apple-EarPods-White-In-Ear-Headset-for-iPhone-5-5S-6-6-/281756995268\">\n\t\t\t\t\t\t<div class=\"image\">\n\t\t\t\t\t\t\t<ximg class=\"absolute-center\" src=\"http://i.ebayimg.com/images/m/m2W2cYIqi2UY4LFnSfHeNdg/s-l225/p.jpg\" alt=\"2-Pack 100% Original OEM Apple EarPods White In-Ear Headset for iPhone 5,5S,6,6+\">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"item-details\">\n\t\t\t\t\t\t\t<div class=\"title\">2-Pack 100% Original OEM Apple EarPods White In-Ear Headset for iPhone 5,5S,6,6+</div>\n\t\t\t\t\t\t\t<div class=\"price-row\">\n\t\t\t\t\t\t\t\t<div class=\"discounted-price\">\n\t\t\t\t\t\t\t\t\t<span class=\"price\">\n\t\t\t\t\t\t\t\t\t\t$19.99</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"original-price\">\n\t\t\t\t\t\t\t\t\t<del class=\"oprc price\">$29.99</del>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"discount green\"><b>(33% off)</b></div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"clear-float-hack\"></div>\n\t\t</div>\n\t\t<div class=\"widget rpp-banner rpp-banner-first rpp-banner-last\" data-banner-id=\"2736\" _sp=\"p2051541.m2734.l3\">\n\t\t\t<ximg src=\"http://i.ebayimg.com/00/s/MzUwWDk4MA==/z/dFgAAOSwLVZVupOB/$_57.PNG?set_id=2\" alt=\"Up to 30% off Cleaning Supplies | Up to 60% off Refurbished Tech | Shop now\" usemap=\"#image-map-2736\">\n\t\t\t<map name=\"image-map-2736\">\n\t\t\t\t<area shape=\"rect\" coords=\"0,0,480,350\" href=\"http://www.ebay.com/rpp/back-to-school-events/lte-clean-up-your-study-space-8-3-8-17\" alt=\"Up to 30% off Cleaning Supplies | Shop now\" title=\"Up to 30% off Cleaning Supplies | Shop now\">\n\t\t\t\t<area shape=\"rect\" coords=\"500,0,980,350\" href=\"http://www.ebay.com/rpp/back-to-school-events/Refurb-Tech-LTE-7-27-8-10\" alt=\"Up to 60% off Refurbished Tech | Shop now\" title=\"Up to 60% off Refurbished Tech | Shop now\">\n\t\t\t</map>\n\t\t</div>\n\t\t<div class=\"widget top-category-deals\" data-widget-id=\"27351\" _sp=\"p2051541.m2735.l2\">\n\t\t\t<h2 class=\"title top-cat-with-link\">\n\t\t\t\tUp to 40% off Laptops and Accessories<a href=\"http://www.ebay.com/rpp/back-to-school-events/deals-on-laptops-and-accessories\">Shop All<i></i></a></h2>\n\t\t\t<div class=\"widget-wrapper\">\n\t\t\t\t<div class=\"widget item-widget\">\n\t\t\t\t\t<a href=\"http://www.ebay.com/itm/HP-250-G3-15-6-Notebook-Intel-i3-4GB-RAM-500GB-HDD-Win-8-1-Win-10-Upgrade-/121604368277\">\n\t\t\t\t\t\t<div class=\"image\">\n\t\t\t\t\t\t\t<ximg class=\"absolute-center\" src=\"http://i.ebayimg.com/images/m/mGh_fHGD3VFDen18PZrTVKg/s-l225/p.jpg\" alt=\"HP 250 G3 15.6  Notebook, Intel i3 , 4GB RAM, 500GB HDD, Win 8.1/Win 10 Upgrade\">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"item-details\">\n\t\t\t\t\t\t\t<div class=\"title\">HP 250 G3 15.6 Notebook, Intel i3 , 4GB RAM, 500GB HDD, Win 8.1/Win 10 Upgrade</div>\n\t\t\t\t\t\t\t<div class=\"price-row\">\n\t\t\t\t\t\t\t\t<div class=\"discounted-price\">\n\t\t\t\t\t\t\t\t\t<span class=\"price\">\n\t\t\t\t\t\t\t\t\t\t$289.99</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"widget-wrapper\">\n\t\t\t\t<div class=\"widget item-widget\">\n\t\t\t\t\t<a href=\"http://www.ebay.com/itm/Samsung-850-Pro-Series-256GB-2-5-SATA-III-Internal-Solid-State-Drive-/391213788921\">\n\t\t\t\t\t\t<div class=\"image\">\n\t\t\t\t\t\t\t<ximg class=\"absolute-center\" src=\"http://i.ebayimg.com/images/m/muoYJx3o-4_PhZJded_AGdQ/s-l225/p.jpg\" alt=\"Samsung 850 Pro-Series 256GB 2.5\" sata=\"\" iii=\"\" internal=\"\" solid=\"\" state=\"\" drive=\"\"></div><div class=\"item-details \"><div class=\"title\n\t\t\t\t\t\t\t\">Samsung 850 Pro-Series 256GB 2.5\" SATA III Internal Solid State Drive</div>\n\t\t\t\t\t\t\t<div class=\"price-row\">\n\t\t\t\t\t\t\t\t<div class=\"discounted-price\">\n\t\t\t\t\t\t\t\t\t<span class=\"price\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"gl-map-t\">See details...</span>\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"original-price\">\n\t\t\t\t\t\t\t\t\t<del class=\"oprc price\">$249.99</del>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"widget-wrapper\">\n\t\t\t\t<div class=\"widget item-widget\">\n\t\t\t\t\t<a href=\"http://www.ebay.com/itm/Kingston-DT100-G3-64GB-USB-3-0-Flash-Drive-/301703983653\">\n\t\t\t\t\t\t<div class=\"image\">\n\t\t\t\t\t\t\t<ximg class=\"absolute-center\" src=\"http://i.ebayimg.com/images/m/mGQ9swIsKmiMO0zAf8T5LTg/s-l225/p.jpg\" alt=\"Kingston DT100 G3 64GB USB 3.0 Flash Drive\">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"item-details\">\n\t\t\t\t\t\t\t<div class=\"title\">Kingston DT100 G3 64GB USB 3.0 Flash Drive</div>\n\t\t\t\t\t\t\t<div class=\"price-row\">\n\t\t\t\t\t\t\t\t<div class=\"discounted-price\">\n\t\t\t\t\t\t\t\t\t<span class=\"price\">\n\t\t\t\t\t\t\t\t\t\t$18.99</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"widget-wrapper\">\n\t\t\t\t<div class=\"widget item-widget\">\n\t\t\t\t\t<a href=\"http://www.ebay.com/itm/Toshiba-Satellite-S55-B5155-15-6-LED-Intel-Core-i7-5500U-2-40GHz-8GB-1TB-HDD-/161780686241\">\n\t\t\t\t\t\t<div class=\"image\">\n\t\t\t\t\t\t\t<ximg class=\"absolute-center\" src=\"http://i.ebayimg.com/images/m/mbbA68ZCxx5_FmlhHBOiueQ/s-l225/p.jpg\" alt=\"Toshiba Satellite S55-B5155 15.6\"></div><div class=\"item-details\n\t\t\t\t\t\t\t\"><div class=\"title \">Toshiba Satellite S55-B5155 15.6\" LED Intel Core i7-5500U 2.40GHz 8GB 1TB HDD</div>\n\t\t\t\t\t\t\t<div class=\"price-row\">\n\t\t\t\t\t\t\t\t<div class=\"discounted-price\">\n\t\t\t\t\t\t\t\t\t<span class=\"price\">\n\t\t\t\t\t\t\t\t\t\t$629.99</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"clear-float-hack\"></div>\n\t\t</div>\n\t\t<div class=\"widget rpp-banner rpp-banner-first rpp-banner-last\" data-banner-id=\"2738\" _sp=\"p2051541.m2734.l4\">\n\t\t\t<ximg src=\"http://i.ebayimg.com/00/s/MzUwWDk4MA==/z/vZUAAOSwyQtVw6LP/$_57.PNG?set_id=2\" alt=\"Up to 50% off Dorm Furniture | Shop now\" usemap=\"#image-map-2738\">\n\t\t\t<map name=\"image-map-2738\">\n\t\t\t\t<area shape=\"rect\" coords=\"500,0,980,350\" href=\"http://www.ebay.com/rpp/back-to-school-events/lte-up-to-50-off-dorm-furniture-8-3-8-11\" alt=\"Up to 50% off Dorm Furniture | Shop now\" title=\"Up to 50% off Dorm Furniture | Shop now\">\n\t\t\t</map>\n\t\t</div>\n\t\t<div class=\"widget top-category-deals\" data-widget-id=\"27352\" _sp=\"p2051541.m2735.l3\">\n\t\t\t<h2 class=\"title top-cat-with-link\">\n\t\t\t\tUp to 60% off Dorm Essentials<a href=\"http://www.ebay.com/rpp/back-to-school-events/lte-bts-furniture-bedding-0720\">Shop All<i></i></a></h2>\n\t\t\t<div class=\"widget-wrapper\">\n\t\t\t\t<div class=\"widget item-widget\">\n\t\t\t\t\t<a href=\"http://www.ebay.com/itm/Angle-Height-Adjustable-Rolling-Laptop-Desk-Cart-Over-Bed-Hospital-Table-Stand-/310980165348\">\n\t\t\t\t\t\t<div class=\"image\">\n\t\t\t\t\t\t\t<ximg class=\"absolute-center\" src=\"http://i.ebayimg.com/images/m/mLdiAAbBpJ2ETBAj27oanWQ/s-l225/p.jpg\" alt=\"Angle &amp; Height Adjustable Rolling Laptop Desk Cart Over Bed Hospital Table Stand\">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"item-details\">\n\t\t\t\t\t\t\t<div class=\"title\">Angle &amp; Height Adjustable Rolling Laptop Desk Cart Over Bed Hospital Table Stand</div>\n\t\t\t\t\t\t\t<div class=\"price-row\">\n\t\t\t\t\t\t\t\t<div class=\"discounted-price\">\n\t\t\t\t\t\t\t\t\t<span class=\"price\">\n\t\t\t\t\t\t\t\t\t\t$41.95</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"original-price\">\n\t\t\t\t\t\t\t\t\t<del class=\"oprc price\">$79.95</del>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"discount green\"><b>(47% off)</b></div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"widget-wrapper\">\n\t\t\t\t<div class=\"widget item-widget\">\n\t\t\t\t\t<a href=\"http://www.ebay.com/itm/Lavish-Home-LED-Energy-Effiecient-Desk-Lamp-with-Dimmer-Switch-/371182872837\">\n\t\t\t\t\t\t<div class=\"image\">\n\t\t\t\t\t\t\t<ximg class=\"absolute-center\" src=\"http://i.ebayimg.com/images/m/mkShlp9UxA6xe1K_qHirzwg/s-l225/p.jpg\" alt=\"Lavish Home LED Energy Effiecient Desk Lamp with Dimmer Switch\">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"item-details\">\n\t\t\t\t\t\t\t<div class=\"title\">Lavish Home LED Energy Effiecient Desk Lamp with Dimmer Switch</div>\n\t\t\t\t\t\t\t<div class=\"price-row\">\n\t\t\t\t\t\t\t\t<div class=\"discounted-price\">\n\t\t\t\t\t\t\t\t\t<span class=\"price\">\n\t\t\t\t\t\t\t\t\t\t$35.99</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"widget-wrapper\">\n\t\t\t\t<div class=\"widget item-widget\">\n\t\t\t\t\t<a href=\"http://www.ebay.com/itm/INTEX-Inflatable-Lounge-Beanless-Lounger-Bag-Chair-Grey-68579EP-/390611405782\">\n\t\t\t\t\t\t<div class=\"image\">\n\t\t\t\t\t\t\t<ximg class=\"absolute-center\" src=\"http://i.ebayimg.com/images/m/mVL3mVCxuSnzSbG3Uz7iDNg/s-l225/p.jpg\" alt=\"INTEX Inflatable Lounge Beanless Lounger Bag Chair - Grey | 68579EP   \">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"item-details\">\n\t\t\t\t\t\t\t<div class=\"title\">INTEX Inflatable Lounge Beanless Lounger Bag Chair - Grey | 68579EP </div>\n\t\t\t\t\t\t\t<div class=\"price-row\">\n\t\t\t\t\t\t\t\t<div class=\"discounted-price\">\n\t\t\t\t\t\t\t\t\t<span class=\"price\">\n\t\t\t\t\t\t\t\t\t\t$20.95</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"original-price\">\n\t\t\t\t\t\t\t\t\t<del class=\"oprc price\">$49.99</del>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"discount green\"><b>(58% off)</b></div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"widget-wrapper\">\n\t\t\t\t<div class=\"widget item-widget\">\n\t\t\t\t\t<a href=\"http://www.ebay.com/itm/Star-Wars-Classic-Comforter-Twin-/301348411357\">\n\t\t\t\t\t\t<div class=\"image\">\n\t\t\t\t\t\t\t<ximg class=\"absolute-center\" src=\"http://i.ebayimg.com/images/m/m8FxveyQGYlhwGkCWzPHp3A/s-l225/p.jpg\" alt=\"Star Wars Classic Comforter - Twin\">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"item-details\">\n\t\t\t\t\t\t\t<div class=\"title\">Star Wars Classic Comforter - Twin</div>\n\t\t\t\t\t\t\t<div class=\"price-row\">\n\t\t\t\t\t\t\t\t<div class=\"discounted-price\">\n\t\t\t\t\t\t\t\t\t<span class=\"price\">\n\t\t\t\t\t\t\t\t\t\t$32.99</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"clear-float-hack\"></div>\n\t\t</div>\n\t\t<div class=\"widget rpp-banner rpp-banner-first\" data-banner-id=\"2739\" _sp=\"p2051541.m2734.l5\">\n\t\t\t<ximg src=\"http://i.ebayimg.com/00/s/MzUwWDk4MA==/z/Tj4AAOSwd0BVsXJS/$_57.PNG?set_id=2\" alt=\"Starting at $4.99 Handbags and Accessories | Under $150 Watches | Shop now\" usemap=\"#image-map-2739\">\n\t\t\t<map name=\"image-map-2739\">\n\t\t\t\t<area shape=\"rect\" coords=\"0,0,480,350\" href=\"http://www.ebay.com/rpp/back-to-school-events/fse-072015-p-bs-handbags-and-accessories/shop-all\" alt=\"Starting at $4.99 Handbags and Accessories | Shop now\" title=\"Starting at $4.99 Handbags and Accessories | Shop now\">\n\t\t\t\t<area shape=\"rect\" coords=\"500,0,980,350\" href=\"http://www.ebay.com/rpp/back-to-school-events/fse-070615-p-bs-watches/shop-all\" alt=\"Under $150 Watches | Shop now\" title=\"Under $150 Watches | Shop now\">\n\t\t\t</map>\n\t\t</div>\n\t\t<div class=\"widget rpp-banner\" data-banner-id=\"2741\" _sp=\"p2051541.m2734.l6\">\n\t\t\t<a href=\"http://www.ebay.com/sch/Textbooks-Education-/2228/i.html?_since=15&amp;_from=R40&amp;_sofindtype=0&amp;_fcm=1&amp;_nkw=&amp;_udlo=&amp;_udhi=&amp;_ftrt=901&amp;_ftrv=1&amp;_sabdlo=&amp;_sabdhi=&amp;_samilow=&amp;_samihi=&amp;_sadis=15&amp;_stpos=94587&amp;_fss=1&amp;_fsradio=%26LH_SpecificSeller%3D1&amp;_saslop=1&amp;_sasl=betterworldbooks%2Cbarnesandnobleinc%2Cbuy%2Ctelewhiz%2Csaveout%2Cnationalbookseller%2Chapptimesforever%2Ctextbooks-now&amp;_sop=12&amp;_ipg=50&amp;_dmd=2&amp;LH_AllListings=1&amp;LH_SpecificSeller=1&amp;LH_ItemCondition=1000%7C2750%7C4000%7C5000\"\n\t\t\ttitle=\"Up to 20% off Textbooks and Books | Shop now\">\n\t\t\t\t<ximg src=\"http://i.ebayimg.com/00/s/MzUwWDk4MA==/z/Vs8AAOSwjVVVupps/$_57.PNG?set_id=2\" alt=\"Up to 20% off Textbooks and Books | Shop now\">\n\t\t\t</a>\n\t\t</div>\n\t\t<div class=\"widget rpp-banner\" data-banner-id=\"2742\" _sp=\"p2051541.m2734.l7\">\n\t\t\t<ximg src=\"http://i.ebayimg.com/00/s/MzUwWDk4MA==/z/nMwAAOSwPcVVsXTj/$_57.PNG?set_id=2\" alt=\"Starting at $4.99 Apparel | Up to 50% off Nike, adidas, and more | Shop now\" usemap=\"#image-map-2742\">\n\t\t\t<map name=\"image-map-2742\">\n\t\t\t\t<area shape=\"rect\" coords=\"0,0,480,350\" href=\"http://www.ebay.com/rpp/back-to-school-events/fse-070615-p-bs-apparel/shop-all\" alt=\"Starting at $4.99 Apparel | Shop now\" title=\"Starting at $4.99 Apparel | Shop now\">\n\t\t\t\t<area shape=\"rect\" coords=\"500,0,980,350\" href=\"http://www.ebay.com/rpp/back-to-school-events/fse-070615-p-bs-athletic-shoes-and-apparel/shop-all\" alt=\"Up to 50% off Nike, adidas, and more | Shop now\" title=\"Up to 50% off Nike, adidas, and more | Shop now\">\n\t\t\t</map>\n\t\t</div>\n\t\t<div class=\"widget rpp-banner\" data-banner-id=\"2744\" _sp=\"p2051541.m2734.l8\">\n\t\t\t<a href=\"http://www.ebay.com/rpp/back-to-school-events/deals-on-wheels-7-20-8-24\" title=\"Up to 60% off Deals on Wheels | Shop now\">\n\t\t\t\t<ximg src=\"http://i.ebayimg.com/00/s/MzUwWDk4MA==/z/2EQAAOSwyQtVupmz/$_57.PNG?set_id=2\" alt=\"Up to 60% off Deals on Wheels | Shop now\">\n\t\t\t</a>\n\t\t</div>\n\t\t<div class=\"widget rpp-banner\" data-banner-id=\"2745\" _sp=\"p2051541.m2734.l9\">\n\t\t\t<ximg src=\"http://i.ebayimg.com/00/s/NDQwWDk4MA==/z/-PgAAOSw~gRVu94D/$_57.PNG?set_id=2\" alt=\"Back to School Guides\" usemap=\"#image-map-2745\">\n\t\t\t<map name=\"image-map-2745\">\n\t\t\t\t<area shape=\"rect\" coords=\"0,50,228,440\" href=\"http://www.ebay.com/gds/Back-To-School-Essentials-High-School-Edition-/10000000205541556/g.html\" alt=\"Back-To-School Essentials: High School Edition | Read More\" title=\"Back-To-School Essentials: High School Edition | Read More\">\n\t\t\t\t<area shape=\"rect\" coords=\"250,50,478,440\" href=\"http://stylestories.ebay.com/the-top-tech-sessories-on-ebay-right-now/\" alt=\"Top 16 Tech-Sessories on eBay Right Now | Read More\" title=\"Top 16 Tech-Sessories on eBay Right Now | Read More\">\n\t\t\t\t<area shape=\"rect\" coords=\"500,50,730,440\" href=\"http://www.ebay.com/gds/Sell-on-eBay-to-Fund-Back-to-School-Shopping-/10000000205402716/g.html\" alt=\"Sell on eBay to Fund Back to School Shopping | Read More\" title=\"Sell on eBay to Fund Back to School Shopping | Read More\">\n\t\t\t\t<area shape=\"rect\" coords=\"750,50,980,440\" href=\"http://www.ebay.com/gds/6-High-Tech-Lunchboxes-That-Will-Transform-Lunch-Time-/10000000205560454/g.html\" alt=\"6 High Tech Lunchboxes That Will Transform Lunch Time | Read More\" title=\"6 High Tech Lunchboxes That Will Transform Lunch Time | Read More\">\n\t\t\t</map>\n\t\t</div>\n\t\t<div class=\"widget rpp-banner rpp-banner-last\" data-banner-id=\"2746\" _sp=\"p2051541.m2734.l10\">\n\t\t\t<ximg src=\"http://i.ebayimg.com/00/s/NTYwWDk4MA==/z/qmAAAOSwgQ9Vu94q/$_57.PNG?set_id=2\" alt=\"Get Inspired with Back to School Collections\" usemap=\"#image-map-2746\">\n\t\t\t<map name=\"image-map-2746\">\n\t\t\t\t<area shape=\"rect\" coords=\"0,47,312,560\" href=\"http://www.ebay.com/cln/ebaycollectionseditor/-/220852069015\" alt=\"Unique Dorm Room Decor\" title=\"Unique Dorm Room Decor\">\n\t\t\t\t<area shape=\"rect\" coords=\"333,47,646,560\" href=\"http://www.ebay.com/cln/ebaycollectionseditor/-/220856092015\" alt=\"Cool First Cars Under $15,000\" title=\"Cool First Cars Under $15,000\">\n\t\t\t\t<area shape=\"rect\" coords=\"667,47,980,560\" href=\"http://www.ebay.com/cln/ebaycollectionseditor/fill-your-backpack/217869036015\" alt=\"Fill Your Backpack\" title=\"Fill Your Backpack\">\n\t\t\t</map>\n\t\t</div>\n\t\t<div class=\"text-module\">\n\t\t\t<div class=\"mixed-content\">\n\t\t\t\t<p class=\"p1\"><b>What should you look for in an elementary school backpack?</b></p>\n\t\t\t\t<p class=\"p2\">\n\t\t\t\t\t<br>\n\t\t\t\t</p>\n\t\t\t\t<p class=\"p1\">Kids heading back to school need backpacks that are supportive, comfortable, and promote healthy posture. Backpacks with two straps distribute weight evenly, which is better for a youngster's neck, shoulders, and spine. Kids who walk home from school\n\t\t\t\t\tor wait outdoors for transportation should have reflectors on their backpacks for visibility. A backpack should also fit properly, which means it should rest on the lower back no more than 4 inches below the waist. The seam where the straps meet\n\t\t\t\t\tthe top of the bag should rest roughly 1 or 2 inches below the top of the shoulders.</p>\n\t\t\t\t<p class=\"p2\">\n\t\t\t\t\t<br>\n\t\t\t\t</p>\n\t\t\t\t<p class=\"p1\"><b>What is the best way to keep a school lunch fresh and safe?</b></p>\n\t\t\t\t<p class=\"p2\">\n\t\t\t\t\t<br>\n\t\t\t\t</p>\n\t\t\t\t<p class=\"p1\">An insulated bag with a reusable, food-safe ice pack is a great way to keep sandwiches, fruits, and veggies at a safe temperature over hours of storage in a school locker or cubby. Wrapping sensitive foods in two layers of protection, such as a layer\n\t\t\t\t\tof foil as well as a layer of plastic wrap, is another worthwhile precaution. Small, colorful, airtight plastic containers are also both fun and effective for keeping foods fresh, plus there are plastic food containers available with their own dedicated\n\t\t\t\t\tice packs that snap into the lids for safe and convenient freshness.</p>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"widget footnotes\">\n\t\t\t<p class=\"bottom-disclaimer-text\"></p>\n\t\t</div>\n\t\t<div class=\"clearFloat\"></div>\n\t</div>\n\t<div class=\"clearFloat\"></div>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/lengthen/expected.html",
    "content": "<DIV id=\"w0\">\n  \"\\n    \"\n  <DIV id=\"w0-0\">\n    \"\\n        0\\n    \"\n  \"\\n    \"\n  <DIV id=\"w0-1\">\n    \"\\n        1\\n    \"\n  \"\\n    \"\n  <SPAN class=\"after\">\n    \"After Bar\"\n  \"\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/lengthen/from.html",
    "content": "<div id=\"w0\">\n    <div id=\"w0-0\">\n        0\n    </div>\n    <div id=\"w0-1\">\n        1\n    </div>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/lengthen/to.html",
    "content": "<div id=\"w0\">\n    <div id=\"w0-0\">\n        0\n    </div>\n    <div id=\"w0-1\">\n        1\n    </div>\n    <span class=\"after\">After Bar</span>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/one/expected.html",
    "content": "<DIV class=\"bar\">\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/one/from.html",
    "content": "<div class=\"foo\"></div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/one/to.html",
    "content": "<div class=\"bar\"></div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/reverse/expected.html",
    "content": "<DIV>\n  \"\\n    0\\n    \"\n  <I>\n    \"italics\"\n  \"\\n    1\\n    \"\n  <SPAN>\n    \"span\"\n  \"\\n    2\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/reverse/from.html",
    "content": "<div>\n    0\n    <b>bold</b>\n    1\n</div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/reverse/to.html",
    "content": "<div>\n    0\n    <i>italics</i>\n    1\n    <span>span</span>\n    2\n</div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/reverse-ids/expected.html",
    "content": "<DIV id=\"w0\">\n  <DIV class=\"w2-to\" id=\"w2\">\n    \"w2\"\n  <DIV class=\"w1-to\" id=\"w1\">\n    \"w1\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/reverse-ids/from.html",
    "content": "<div id=\"w0\"><div id=\"w1\" class=\"w1-from\">w1</div><div id=\"w2\" class=\"w2-from\">w2</div></div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/reverse-ids/to.html",
    "content": "<div id=\"w0\"><div id=\"w2\" class=\"w2-to\">w2</div><div id=\"w1\" class=\"w1-to\">w1</div></div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/select-element/expected.html",
    "content": "<DIV>\n  \"\\n    \"\n  <SELECT name=\"select\">\n    \"\\n        \"\n    <OPTION value=\"value1\">\n      \"Value 1\"\n    \"\\n        \"\n    <OPTION value=\"value2\">\n      \"Value 2\"\n    \"\\n        \"\n    <OPTION selected=\"\" value=\"value3\">\n      \"Value 3\"\n    \"\\n        \"\n    <OPTION value=\"value4\">\n      \"Value 4\"\n    \"\\n    \"\n  \"\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/select-element/from.html",
    "content": "<div>\n    <select name=\"select\">\n        <option value=\"value1\">Value 1</option>\n        <option value=\"value2\" selected>Value 2</option>\n        <option value=\"value3\">Value 3</option>\n    </select>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/select-element/index.js",
    "content": "exports.verify = function (context, expect) {\n  var rootNode = context.rootNode;\n  var selectNode = rootNode.querySelector(\"select\");\n  expect(selectNode.selectedIndex).to.equal(2);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/select-element/to.html",
    "content": "<div>\n    <select name=\"select\">\n        <option value=\"value1\">Value 1</option>\n        <option value=\"value2\">Value 2</option>\n        <option value=\"value3\" selected>Value 3</option>\n        <option value=\"value4\">Value 4</option>\n    </select>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/select-element-optgroup/expected.html",
    "content": "<DIV>\n  \"\\n    \"\n  <SELECT id=\"dino-select\">\n    \"\\n        \"\n    <OPTGROUP label=\"Theropods\">\n      \"\\n            \"\n      <OPTION>\n        \"Tyrannosaurus\"\n      \"\\n            \"\n      <OPTION selected=\"\">\n        \"Velociraptor\"\n      \"\\n            \"\n      <OPTION>\n        \"Deinonychus\"\n      \"\\n        \"\n    \"\\n        \"\n    <OPTGROUP label=\"Sauropods\">\n      \"\\n            \"\n      <OPTION>\n        \"Diplodocus\"\n      \"\\n            \"\n      <OPTION>\n        \"Saltasaurus\"\n      \"\\n            \"\n      <OPTION>\n        \"Apatosaurus\"\n      \"\\n        \"\n    \"\\n    \"\n  \"\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/select-element-optgroup/from.html",
    "content": "<div>\n    <select id=\"dino-select\">\n        <optgroup label=\"Theropods\">\n            <option>Tyrannosaurus</option>\n            <option>Velociraptor</option>\n            <option>Deinonychus</option>\n        </optgroup>\n        <optgroup label=\"Sauropods\">\n            <option>Diplodocus</option>\n            <option selected>Saltasaurus</option>\n            <option>Apatosaurus</option>\n        </optgroup>\n    </select>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/select-element-optgroup/index.js",
    "content": "exports.verify = function (context, expect) {\n  var rootNode = context.rootNode;\n  var selectNode = rootNode.querySelector(\"select\");\n  expect(selectNode.selectedIndex).to.equal(1);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/select-element-optgroup/to.html",
    "content": "<div>\n    <select id=\"dino-select\">\n        <optgroup label=\"Theropods\">\n            <option>Tyrannosaurus</option>\n            <option selected>Velociraptor</option>\n            <option>Deinonychus</option>\n        </optgroup>\n        <optgroup label=\"Sauropods\">\n            <option>Diplodocus</option>\n            <option>Saltasaurus</option>\n            <option>Apatosaurus</option>\n        </optgroup>\n    </select>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/shorten/expected.html",
    "content": "<DIV id=\"w0\">\n  \"\\n    \"\n  <DIV id=\"w0-0\">\n    \"\\n        0\\n    \"\n  \"\\n    \"\n  <DIV id=\"w0-1\">\n    \"\\n        1\\n    \"\n  \"\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/shorten/from.html",
    "content": "<div id=\"w0\">\n    <div id=\"w0-0\">\n        0\n    </div>\n    <div id=\"w0-1\">\n        1\n    </div>\n    <span class=\"after\">After Bar</span>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/shorten/to.html",
    "content": "<div id=\"w0\">\n    <div id=\"w0-0\">\n        0\n    </div>\n    <div id=\"w0-1\">\n        1\n    </div>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/simple/expected.html",
    "content": "<DIV>\n  <I>\n    \"italics\"\n  <B>\n    \"bold\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/simple/from.html",
    "content": "<div><b>bold</b></div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/simple/to.html",
    "content": "<div><i>italics</i><b>bold</b></div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/simple-div-one-to-one/expected.html",
    "content": "<DIV class=\"b\">\n  \"B\"\n\"\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/simple-div-one-to-one/from.html",
    "content": "<div class=\"a\">A</div>\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/simple-div-one-to-one/to.html",
    "content": "<div class=\"b\">B</div>\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/simple-ids/expected.html",
    "content": "<DIV class=\"foo\" id=\"w0\">\n  \"\\n    \"\n  <SPAN>\n    \"\\n        before\\n    \"\n  \"\\n    1\\n    \"\n  <DIV class=\"bar\" id=\"w1\">\n    \"\\n        2\\n    \"\n  \"\\n    3\\n    \"\n  <SPAN class=\"after-prime\">\n    \"\\n        4\\n    \"\n  \"\\n    5\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/simple-ids/from.html",
    "content": "<div id=\"w0\" class=\"foo\">\n    1\n    <div id=\"w1\" class=\"bar\">\n        2\n    </div>\n    3\n    <span class=\"after\">\n        4\n    </span>\n    5\n</div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/simple-ids/to.html",
    "content": "<div id=\"w0\" class=\"foo\">\n    <span>\n        before\n    </span>\n    1\n    <div id=\"w1\" class=\"bar\">\n        2\n    </div>\n    3\n    <span class=\"after-prime\">\n        4\n    </span>\n    5\n</div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/simple-text-el/expected.html",
    "content": "<DIV>\n  \"\\n    \"\n  <I>\n    \"italics\"\n  \"\\n    \"\n  <B>\n    \"bold\"\n  \"\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/simple-text-el/from.html",
    "content": "<div>\n    0\n    <b>bold</b>\n    1\n</div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/simple-text-el/to.html",
    "content": "<div>\n    <i>italics</i>\n    <b>bold</b>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/single-el-removal-first-keyed/expected.html",
    "content": "<DIV>\n  <DIV id=\"b\">\n  <DIV id=\"c\">\n\"\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/single-el-removal-first-keyed/from.html",
    "content": "<div><div id=\"a\"></div><div id=\"b\"></div><div id=\"c\"></div></div>\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/single-el-removal-first-keyed/to.html",
    "content": "<div><div id=\"b\"></div><div id=\"c\"></div></div>\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/single-el-removal-last-keyed/expected.html",
    "content": "<DIV>\n  <DIV id=\"a\">\n  <DIV id=\"b\">\n\"\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/single-el-removal-last-keyed/from.html",
    "content": "<div><div id=\"a\"></div><div id=\"b\"></div><div id=\"c\"></div></div>\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/single-el-removal-last-keyed/to.html",
    "content": "<div><div id=\"a\"></div><div id=\"b\"></div></div>\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/single-el-removal-middle-keyed/expected.html",
    "content": "<DIV>\n  <DIV id=\"a\">\n  <DIV id=\"c\">\n\"\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/single-el-removal-middle-keyed/from.html",
    "content": "<div><div id=\"a\"></div><div id=\"b\"></div><div id=\"c\"></div></div>\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/single-el-removal-middle-keyed/to.html",
    "content": "<div><div id=\"a\"></div><div id=\"c\"></div></div>\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/svg/expected.html",
    "content": "<svg:svg height=\"100\" version=\"1.1\" viewBox=\"0 0 120 120\" width=\"100\">\n  \"\\n  \"\n  <svg:circle cx=\"60\" cy=\"60\" r=\"10\">\n  \"\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/svg/from.html",
    "content": "<svg height=\"100\" width=\"100\" viewBox=\"0 0 120 120\" version=\"1.1\"\n  xmlns=\"http://www.w3.org/2000/svg\">\n  <circle cx=\"60\" cy=\"60\" r=\"50\"/>\n</svg>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/svg/to.html",
    "content": "<svg height=\"100\" width=\"100\" viewBox=\"0 0 120 120\" version=\"1.1\"\n  xmlns=\"http://www.w3.org/2000/svg\">\n  <circle cx=\"60\" cy=\"60\" r=\"10\"/>\n</svg>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/svg-append/expected.html",
    "content": "<svg:svg height=\"100\" version=\"1.1\" viewBox=\"0 0 120 120\" width=\"100\">\n  \"\\n  \"\n  <svg:circle cx=\"60\" cy=\"60\" r=\"10\">\n  \"\\n  \"\n  <svg:rect height=\"100\" width=\"100\">\n  \"\\n  \"\n  <svg:a http://www.w3.org/1999/xlink:href=\"/svg/index.html\">\n    \"\\n    \"\n    <svg:text x=\"10\" y=\"20\">\n      \"/svg/index.html\"\n    \"\\n  \"\n  \"\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/svg-append/from.html",
    "content": "<svg height=\"100\" width=\"100\" viewBox=\"0 0 120 120\" version=\"1.1\"\n  xmlns=\"http://www.w3.org/2000/svg\">\n  <circle cx=\"60\" cy=\"60\" r=\"50\"/>\n</svg>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/svg-append/to.html",
    "content": "<svg height=\"100\" width=\"100\" viewBox=\"0 0 120 120\" version=\"1.1\"\n  xmlns=\"http://www.w3.org/2000/svg\">\n  <circle cx=\"60\" cy=\"60\" r=\"10\"/>\n  <rect width=\"100\" height=\"100\" />\n  <a xlink:href=\"/svg/index.html\">\n    <text x=\"10\" y=\"20\">/svg/index.html</text>\n  </a>\n</svg>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/svg-append-new/expected.html",
    "content": "<DIV>\n  \"\\n    \"\n  <svg:svg height=\"100\" version=\"1.1\" viewBox=\"0 0 120 120\" width=\"100\">\n    \"\\n        \"\n    <svg:a http://www.w3.org/1999/xlink:href=\"/svg/index.html\">\n      \"\\n            \"\n      <svg:text x=\"10\" y=\"20\">\n        \"/svg/index.html\"\n      \"\\n        \"\n    \"\\n    \"\n  \"\\n\"\n\"\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/svg-append-new/from.html",
    "content": "<div>\n\n</div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/svg-append-new/to.html",
    "content": "<div>\n    <svg height=\"100\" width=\"100\" viewBox=\"0 0 120 120\" version=\"1.1\">\n        <a xlink:href=\"/svg/index.html\">\n            <text x=\"10\" y=\"20\">/svg/index.html</text>\n        </a>\n    </svg>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/svg-no-default-namespace/expected.html",
    "content": "<DIV>\n  \"\\n    \"\n  <H1>\n    \"SVG embedded inline in XHTML\"\n  \"\\n    \"\n  <SVG:SVG height=\"200px\" width=\"300px\">\n    \"\\n        \"\n    <SVG:CIRCLE cx=\"150\" cy=\"100\" fill=\"#ff0000\" r=\"50\">\n      \"\\n        \"\n      <SVG:RECT height=\"100\" width=\"100\">\n        \"\\n    \"\n  \"\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/svg-no-default-namespace/from.html",
    "content": "<div xmlns:svg=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n    <h1>SVG embedded inline in XHTML</h1>\n    <svg:svg width=\"300px\" height=\"200px\">\n        <svg:circle cx=\"150\" cy=\"100\" r=\"50\" fill=\"#ff0000\" />\n    </svg:svg>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/svg-no-default-namespace/to.html",
    "content": "<div xmlns:svg=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n    <h1>SVG embedded inline in XHTML</h1>\n    <svg:svg width=\"300px\" height=\"200px\">\n        <svg:circle cx=\"150\" cy=\"100\" r=\"50\" fill=\"#ff0000\" />\n        <svg:rect width=\"100\" height=\"100\" />\n    </svg:svg>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/svg-xlink/expected.html",
    "content": "<svg:svg>\n  <svg:use http://www.w3.org/1999/xlink:href=\"#icon-search\">\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/svg-xlink/from.html",
    "content": "<svg xmlns=\"http://www.w3.org/2000/svg\"><use xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#icon-search\"></use></svg>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/svg-xlink/to.html",
    "content": "<svg xmlns=\"http://www.w3.org/2000/svg\"><use xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#icon-search\"></use></svg>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/swap-keyed/expected.html",
    "content": "<DIV>\n  <DIV id=\"b\">\n  <DIV id=\"a\">\n\"\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/swap-keyed/from.html",
    "content": "<div><div id=\"a\"></div><div id=\"b\"></div></div>\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/swap-keyed/to.html",
    "content": "<div><div id=\"b\"></div><div id=\"a\"></div></div>\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/tag-to-text/expected.html",
    "content": "\"world\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/tag-to-text/from.html",
    "content": "<div>hello</div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/tag-to-text/to.html",
    "content": "world"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/tag-with-children-to-text/expected.html",
    "content": "\"world\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/tag-with-children-to-text/from.html",
    "content": "<div><span>hello</span></div>\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/tag-with-children-to-text/to.html",
    "content": "world"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/text-to-tag/expected.html",
    "content": "<DIV>\n  \"world\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/text-to-tag/from.html",
    "content": "hello"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/text-to-tag/to.html",
    "content": "<div>world</div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/text-to-text/expected.html",
    "content": "\"world\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/text-to-text/from.html",
    "content": "hello"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/text-to-text/to.html",
    "content": "world"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/textarea/expected.html",
    "content": "<TEXTAREA>\n  \"bar\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/textarea/from.html",
    "content": "<textarea>foo</textarea>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/textarea/to.html",
    "content": "<textarea>bar</textarea>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/todomvc/expected.html",
    "content": "<SECTION id=\"todoapp\">\n  \"\\n    \"\n  <DIV id=\"w0\">\n    \"\\n        \"\n    <HEADER id=\"header\">\n      \"\\n            \"\n      <H1>\n        \"todos\"\n      \"\\n            \"\n      <FORM data-w-onsubmit=\"handleFormSubmit|header\">\n        \"\\n                \"\n        <INPUT id=\"new-todo\" placeholder=\"What needs to be done?\">\n        \"\\n            \"\n      \"\\n        \"\n    \"\\n        \"\n    <SECTION id=\"main\">\n      \"\\n            \"\n      <INPUT data-w-onchange=\"handleToggleAllOnChange|main\" id=\"toggle-all\" type=\"checkbox\">\n      \"\\n            \"\n      <LABEL for=\"toggle-all\">\n        \"Mark all as complete\"\n      \"\\n            \"\n      <UL id=\"todo-list\">\n        \"\\n                \"\n        <LI class=\"completed\" id=\"main-todo-0\">\n          \"\\n                    \"\n          <DIV class=\"view\">\n            \"\\n                        \"\n            <INPUT aria-label=\"Toggle todo completed\" checked=\"\" class=\"toggle\" data-w-onchange=\"handleCheckboxChange|main-todo-0\" type=\"checkbox\">\n            \"\\n                        \"\n            <LABEL data-w-ondblclick=\"handleLabelDblClick|main-todo-0\">\n              \"Go to the grocery store FOO\"\n            \"\\n                        \"\n            <BUTTON aria-label=\"Delete todo\" class=\"destroy\" data-w-onclick=\"handleDestroyClick|main-todo-0\">\n            \"\\n                    \"\n          \"\\n                    \"\n          <INPUT class=\"edit\" data-w-onchange=\"handleInputChange|main-todo-0\" data-w-onkeydown=\"handleInputKeyDown|main-todo-0\" id=\"main-todo-0-titleInput\" title=\"Enter the new todo title\" type=\"text\">\n          \"\\n                \"\n        \"\\n                \"\n        <LI id=\"main-todo-1\">\n          \"\\n                    \"\n          <DIV class=\"view\">\n            \"\\n                        \"\n            <INPUT aria-label=\"Toggle todo completed\" class=\"toggle\" data-w-onchange=\"handleCheckboxChange|main-todo-1\" type=\"checkbox\">\n            \"\\n                        \"\n            <LABEL data-w-ondblclick=\"handleLabelDblClick|main-todo-1\">\n              \"Ship item\"\n            \"\\n                        \"\n            <BUTTON aria-label=\"Delete todo\" class=\"destroy\" data-w-onclick=\"handleDestroyClick|main-todo-1\">\n            \"\\n                    \"\n          \"\\n                    \"\n          <INPUT class=\"edit\" data-w-onchange=\"handleInputChange|main-todo-1\" data-w-onkeydown=\"handleInputKeyDown|main-todo-1\" id=\"main-todo-1-titleInput\" title=\"Enter the new todo title\" type=\"text\">\n          \"\\n                \"\n        \"\\n                \"\n        <LI id=\"main-todo-2\">\n          \"\\n                    \"\n          <DIV class=\"view\">\n            \"\\n                        \"\n            <INPUT aria-label=\"Toggle todo completed\" class=\"toggle\" data-w-onchange=\"handleCheckboxChange|main-todo-2\" type=\"checkbox\">\n            \"\\n                        \"\n            <LABEL data-w-ondblclick=\"handleLabelDblClick|main-todo-2\">\n              \"Respond to email\"\n            \"\\n                        \"\n            <BUTTON aria-label=\"Delete todo\" class=\"destroy\" data-w-onclick=\"handleDestroyClick|main-todo-2\">\n            \"\\n                    \"\n          \"\\n                    \"\n          <INPUT class=\"edit\" data-w-onchange=\"handleInputChange|main-todo-2\" data-w-onkeydown=\"handleInputKeyDown|main-todo-2\" id=\"main-todo-2-titleInput\" title=\"Enter the new todo title\" type=\"text\">\n          \"\\n                \"\n        \"\\n                \"\n        <LI id=\"main-todo-3\">\n          \"\\n                    \"\n          <DIV class=\"view\">\n            \"\\n                        \"\n            <INPUT aria-label=\"Toggle todo completed\" class=\"toggle\" data-w-onchange=\"handleCheckboxChange|main-todo-3\" type=\"checkbox\">\n            \"\\n                        \"\n            <LABEL data-w-ondblclick=\"handleLabelDblClick|main-todo-3\">\n              \"Foo\"\n            \"\\n                        \"\n            <BUTTON aria-label=\"Delete todo\" class=\"destroy\" data-w-onclick=\"handleDestroyClick|main-todo-3\">\n            \"\\n                    \"\n          \"\\n                    \"\n          <INPUT class=\"edit\" data-w-onchange=\"handleInputChange|main-todo-3\" data-w-onkeydown=\"handleInputKeyDown|main-todo-3\" id=\"main-todo-3-titleInput\" title=\"Enter the new todo title\" type=\"text\">\n          \"\\n                \"\n        \"\\n                \"\n        <LI class=\"completed\" id=\"main-todo-4\">\n          \"\\n                    \"\n          <DIV class=\"view\">\n            \"\\n                        \"\n            <INPUT aria-label=\"Toggle todo completed\" checked=\"\" class=\"toggle\" data-w-onchange=\"handleCheckboxChange|main-todo-4\" type=\"checkbox\">\n            \"\\n                        \"\n            <LABEL data-w-ondblclick=\"handleLabelDblClick|main-todo-4\">\n              \"Bar\"\n            \"\\n                        \"\n            <BUTTON aria-label=\"Delete todo\" class=\"destroy\" data-w-onclick=\"handleDestroyClick|main-todo-4\">\n            \"\\n                    \"\n          \"\\n                    \"\n          <INPUT class=\"edit\" data-w-onchange=\"handleInputChange|main-todo-4\" data-w-onkeydown=\"handleInputKeyDown|main-todo-4\" id=\"main-todo-4-titleInput\" title=\"Enter the new todo title\" type=\"text\">\n          \"\\n                \"\n        \"\\n                \"\n        <LI id=\"main-todo-5\">\n          \"\\n                    \"\n          <DIV class=\"view\">\n            \"\\n                        \"\n            <INPUT aria-label=\"Toggle todo completed\" class=\"toggle\" data-w-onchange=\"handleCheckboxChange|main-todo-5\" type=\"checkbox\">\n            \"\\n                        \"\n            <LABEL data-w-ondblclick=\"handleLabelDblClick|main-todo-5\">\n              \"Baz\"\n            \"\\n                        \"\n            <BUTTON aria-label=\"Delete todo\" class=\"destroy\" data-w-onclick=\"handleDestroyClick|main-todo-5\">\n            \"\\n                    \"\n          \"\\n                    \"\n          <INPUT class=\"edit\" data-w-onchange=\"handleInputChange|main-todo-5\" data-w-onkeydown=\"handleInputKeyDown|main-todo-5\" id=\"main-todo-5-titleInput\" title=\"Enter the new todo title\" type=\"text\">\n          \"\\n                \"\n        \"\\n                \"\n        <LI id=\"main-todo-6\">\n          \"\\n                    \"\n          <DIV class=\"view\">\n            \"\\n                        \"\n            <INPUT aria-label=\"Toggle todo completed\" class=\"toggle\" data-w-onchange=\"handleCheckboxChange|main-todo-6\" type=\"checkbox\">\n            \"\\n                        \"\n            <LABEL data-w-ondblclick=\"handleLabelDblClick|main-todo-6\">\n              \"Test\"\n            \"\\n                        \"\n            <BUTTON aria-label=\"Delete todo\" class=\"destroy\" data-w-onclick=\"handleDestroyClick|main-todo-6\">\n            \"\\n                    \"\n          \"\\n                    \"\n          <INPUT class=\"edit\" data-w-onchange=\"handleInputChange|main-todo-6\" data-w-onkeydown=\"handleInputKeyDown|main-todo-6\" id=\"main-todo-6-titleInput\" title=\"Enter the new todo title\" type=\"text\">\n          \"\\n                \"\n        \"\\n            \"\n      \"\\n        \"\n    \"\\n        \"\n    <FOOTER id=\"footer\">\n      \"\\n            \"\n      <SPAN id=\"todo-count\">\n        \"\\n                \"\n        <STRONG>\n          \"5\"\n        \" items left\"\n      \"\\n            \"\n      <UL id=\"filters\">\n        \"\\n                \"\n        <LI>\n          <A class=\"selected\" data-w-onclick=\"handleAllFilterClick|footer\" href=\"#/\">\n            \"All\"\n        \"\\n                \"\n        <LI>\n          <A data-w-onclick=\"handleActiveFilterClick|footer\" href=\"#/active\">\n            \"Active\"\n        \"\\n                \"\n        <LI>\n          <A data-w-onclick=\"handleCompletedFilterClick|footer\" href=\"#/completed\">\n            \"Completed\"\n        \"\\n            \"\n      \"\\n            \"\n      <BUTTON data-w-onclick=\"handleClearCompletedClick|footer\" id=\"clear-completed\">\n        \"Clear completed (2)\"\n      \"\\n        \"\n    \"\\n    \"\n  \"\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/todomvc/from.html",
    "content": "<section id=\"todoapp\">\n    <div id=\"w0\">\n        <header id=\"header\">\n            <h1>todos</h1>\n            <form data-w-onsubmit=\"handleFormSubmit|header\">\n                <input id=\"new-todo\" placeholder=\"What needs to be done?\">\n            </form>\n        </header>\n        <section id=\"main\">\n            <input id=\"toggle-all\" type=\"checkbox\" data-w-onchange=\"handleToggleAllOnChange|main\">\n            <label for=\"toggle-all\">Mark all as complete</label>\n            <ul id=\"todo-list\">\n                <li id=\"main-todo-0\">\n                    <div class=\"view\">\n                        <input class=\"toggle\" type=\"checkbox\" aria-label=\"Toggle todo completed\" data-w-onchange=\"handleCheckboxChange|main-todo-0\">\n                        <label data-w-ondblclick=\"handleLabelDblClick|main-todo-0\">Go to the grocery store</label>\n                        <button class=\"destroy\" aria-label=\"Delete todo\" data-w-onclick=\"handleDestroyClick|main-todo-0\"></button>\n                    </div>\n                    <input title=\"Enter the new todo title\" type=\"text\" class=\"edit\" id=\"main-todo-0-titleInput\" data-w-onchange=\"handleInputChange|main-todo-0\" data-w-onkeydown=\"handleInputKeyDown|main-todo-0\">\n                </li>\n                <li class=\"completed\" id=\"main-todo-1\">\n                    <div class=\"view\">\n                        <input class=\"toggle\" type=\"checkbox\" checked=\"\" aria-label=\"Toggle todo completed\" data-w-onchange=\"handleCheckboxChange|main-todo-1\">\n                        <label data-w-ondblclick=\"handleLabelDblClick|main-todo-1\">Ship item</label>\n                        <button class=\"destroy\" aria-label=\"Delete todo\" data-w-onclick=\"handleDestroyClick|main-todo-1\"></button>\n                    </div>\n                    <input title=\"Enter the new todo title\" type=\"text\" class=\"edit\" id=\"main-todo-1-titleInput\" data-w-onchange=\"handleInputChange|main-todo-1\" data-w-onkeydown=\"handleInputKeyDown|main-todo-1\">\n                </li>\n                <li id=\"main-todo-2\">\n                    <div class=\"view\">\n                        <input class=\"toggle\" type=\"checkbox\" aria-label=\"Toggle todo completed\" data-w-onchange=\"handleCheckboxChange|main-todo-2\">\n                        <label data-w-ondblclick=\"handleLabelDblClick|main-todo-2\">Respond to email</label>\n                        <button class=\"destroy\" aria-label=\"Delete todo\" data-w-onclick=\"handleDestroyClick|main-todo-2\"></button>\n                    </div>\n                    <input title=\"Enter the new todo title\" type=\"text\" class=\"edit\" id=\"main-todo-2-titleInput\" data-w-onchange=\"handleInputChange|main-todo-2\" data-w-onkeydown=\"handleInputKeyDown|main-todo-2\">\n                </li>\n                <li id=\"main-todo-3\">\n                    <div class=\"view\">\n                        <input class=\"toggle\" type=\"checkbox\" aria-label=\"Toggle todo completed\" data-w-onchange=\"handleCheckboxChange|main-todo-3\">\n                        <label data-w-ondblclick=\"handleLabelDblClick|main-todo-3\">Foo</label>\n                        <button class=\"destroy\" aria-label=\"Delete todo\" data-w-onclick=\"handleDestroyClick|main-todo-3\"></button>\n                    </div>\n                    <input title=\"Enter the new todo title\" type=\"text\" class=\"edit\" id=\"main-todo-3-titleInput\" data-w-onchange=\"handleInputChange|main-todo-3\" data-w-onkeydown=\"handleInputKeyDown|main-todo-3\">\n                </li>\n                <li id=\"main-todo-4\">\n                    <div class=\"view\">\n                        <input class=\"toggle\" type=\"checkbox\" aria-label=\"Toggle todo completed\" data-w-onchange=\"handleCheckboxChange|main-todo-4\">\n                        <label data-w-ondblclick=\"handleLabelDblClick|main-todo-4\">Bar</label>\n                        <button class=\"destroy\" aria-label=\"Delete todo\" data-w-onclick=\"handleDestroyClick|main-todo-4\"></button>\n                    </div>\n                    <input title=\"Enter the new todo title\" type=\"text\" class=\"edit\" id=\"main-todo-4-titleInput\" data-w-onchange=\"handleInputChange|main-todo-4\" data-w-onkeydown=\"handleInputKeyDown|main-todo-4\">\n                </li>\n                <li id=\"main-todo-5\">\n                    <div class=\"view\">\n                        <input class=\"toggle\" type=\"checkbox\" aria-label=\"Toggle todo completed\" data-w-onchange=\"handleCheckboxChange|main-todo-5\">\n                        <label data-w-ondblclick=\"handleLabelDblClick|main-todo-5\">Baz</label>\n                        <button class=\"destroy\" aria-label=\"Delete todo\" data-w-onclick=\"handleDestroyClick|main-todo-5\"></button>\n                    </div>\n                    <input title=\"Enter the new todo title\" type=\"text\" class=\"edit\" id=\"main-todo-5-titleInput\" data-w-onchange=\"handleInputChange|main-todo-5\" data-w-onkeydown=\"handleInputKeyDown|main-todo-5\">\n                </li>\n            </ul>\n        </section>\n        <footer id=\"footer\">\n            <span id=\"todo-count\">\n                <strong>5</strong> items left</span>\n            <ul id=\"filters\">\n                <li><a href=\"#/\" class=\"selected\" data-w-onclick=\"handleAllFilterClick|footer\">All</a></li>\n                <li><a href=\"#/active\" data-w-onclick=\"handleActiveFilterClick|footer\">Active</a></li>\n                <li><a href=\"#/completed\" data-w-onclick=\"handleCompletedFilterClick|footer\">Completed</a></li>\n            </ul>\n            <button id=\"clear-completed\" data-w-onclick=\"handleClearCompletedClick|footer\">Clear completed (1)</button>\n        </footer>\n    </div>\n</section>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/todomvc/to.html",
    "content": "<section id=\"todoapp\">\n    <div id=\"w0\">\n        <header id=\"header\">\n            <h1>todos</h1>\n            <form data-w-onsubmit=\"handleFormSubmit|header\">\n                <input id=\"new-todo\" placeholder=\"What needs to be done?\">\n            </form>\n        </header>\n        <section id=\"main\">\n            <input id=\"toggle-all\" type=\"checkbox\" data-w-onchange=\"handleToggleAllOnChange|main\">\n            <label for=\"toggle-all\">Mark all as complete</label>\n            <ul id=\"todo-list\">\n                <li id=\"main-todo-0\" class=\"completed\">\n                    <div class=\"view\">\n                        <input class=\"toggle\" type=\"checkbox\" aria-label=\"Toggle todo completed\" data-w-onchange=\"handleCheckboxChange|main-todo-0\" checked=\"\">\n                        <label data-w-ondblclick=\"handleLabelDblClick|main-todo-0\">Go to the grocery store FOO</label>\n                        <button class=\"destroy\" aria-label=\"Delete todo\" data-w-onclick=\"handleDestroyClick|main-todo-0\"></button>\n                    </div>\n                    <input title=\"Enter the new todo title\" type=\"text\" class=\"edit\" id=\"main-todo-0-titleInput\" data-w-onchange=\"handleInputChange|main-todo-0\" data-w-onkeydown=\"handleInputKeyDown|main-todo-0\">\n                </li>\n                <li id=\"main-todo-1\">\n                    <div class=\"view\">\n                        <input class=\"toggle\" type=\"checkbox\" aria-label=\"Toggle todo completed\" data-w-onchange=\"handleCheckboxChange|main-todo-1\">\n                        <label data-w-ondblclick=\"handleLabelDblClick|main-todo-1\">Ship item</label>\n                        <button class=\"destroy\" aria-label=\"Delete todo\" data-w-onclick=\"handleDestroyClick|main-todo-1\"></button>\n                    </div>\n                    <input title=\"Enter the new todo title\" type=\"text\" class=\"edit\" id=\"main-todo-1-titleInput\" data-w-onchange=\"handleInputChange|main-todo-1\" data-w-onkeydown=\"handleInputKeyDown|main-todo-1\">\n                </li>\n                <li id=\"main-todo-2\">\n                    <div class=\"view\">\n                        <input class=\"toggle\" type=\"checkbox\" aria-label=\"Toggle todo completed\" data-w-onchange=\"handleCheckboxChange|main-todo-2\">\n                        <label data-w-ondblclick=\"handleLabelDblClick|main-todo-2\">Respond to email</label>\n                        <button class=\"destroy\" aria-label=\"Delete todo\" data-w-onclick=\"handleDestroyClick|main-todo-2\"></button>\n                    </div>\n                    <input title=\"Enter the new todo title\" type=\"text\" class=\"edit\" id=\"main-todo-2-titleInput\" data-w-onchange=\"handleInputChange|main-todo-2\" data-w-onkeydown=\"handleInputKeyDown|main-todo-2\">\n                </li>\n                <li id=\"main-todo-3\">\n                    <div class=\"view\">\n                        <input class=\"toggle\" type=\"checkbox\" aria-label=\"Toggle todo completed\" data-w-onchange=\"handleCheckboxChange|main-todo-3\">\n                        <label data-w-ondblclick=\"handleLabelDblClick|main-todo-3\">Foo</label>\n                        <button class=\"destroy\" aria-label=\"Delete todo\" data-w-onclick=\"handleDestroyClick|main-todo-3\"></button>\n                    </div>\n                    <input title=\"Enter the new todo title\" type=\"text\" class=\"edit\" id=\"main-todo-3-titleInput\" data-w-onchange=\"handleInputChange|main-todo-3\" data-w-onkeydown=\"handleInputKeyDown|main-todo-3\">\n                </li>\n                <li id=\"main-todo-4\" class=\"completed\">\n                    <div class=\"view\">\n                        <input class=\"toggle\" type=\"checkbox\" aria-label=\"Toggle todo completed\" data-w-onchange=\"handleCheckboxChange|main-todo-4\" checked=\"\">\n                        <label data-w-ondblclick=\"handleLabelDblClick|main-todo-4\">Bar</label>\n                        <button class=\"destroy\" aria-label=\"Delete todo\" data-w-onclick=\"handleDestroyClick|main-todo-4\"></button>\n                    </div>\n                    <input title=\"Enter the new todo title\" type=\"text\" class=\"edit\" id=\"main-todo-4-titleInput\" data-w-onchange=\"handleInputChange|main-todo-4\" data-w-onkeydown=\"handleInputKeyDown|main-todo-4\">\n                </li>\n                <li id=\"main-todo-5\">\n                    <div class=\"view\">\n                        <input class=\"toggle\" type=\"checkbox\" aria-label=\"Toggle todo completed\" data-w-onchange=\"handleCheckboxChange|main-todo-5\">\n                        <label data-w-ondblclick=\"handleLabelDblClick|main-todo-5\">Baz</label>\n                        <button class=\"destroy\" aria-label=\"Delete todo\" data-w-onclick=\"handleDestroyClick|main-todo-5\"></button>\n                    </div>\n                    <input title=\"Enter the new todo title\" type=\"text\" class=\"edit\" id=\"main-todo-5-titleInput\" data-w-onchange=\"handleInputChange|main-todo-5\" data-w-onkeydown=\"handleInputKeyDown|main-todo-5\">\n                </li>\n                <li id=\"main-todo-6\">\n                    <div class=\"view\">\n                        <input class=\"toggle\" type=\"checkbox\" aria-label=\"Toggle todo completed\" data-w-onchange=\"handleCheckboxChange|main-todo-6\">\n                        <label data-w-ondblclick=\"handleLabelDblClick|main-todo-6\">Test</label>\n                        <button class=\"destroy\" aria-label=\"Delete todo\" data-w-onclick=\"handleDestroyClick|main-todo-6\"></button>\n                    </div>\n                    <input title=\"Enter the new todo title\" type=\"text\" class=\"edit\" id=\"main-todo-6-titleInput\" data-w-onchange=\"handleInputChange|main-todo-6\" data-w-onkeydown=\"handleInputKeyDown|main-todo-6\">\n                </li>\n            </ul>\n        </section>\n        <footer id=\"footer\">\n            <span id=\"todo-count\">\n                <strong>5</strong> items left</span>\n            <ul id=\"filters\">\n                <li><a href=\"#/\" class=\"selected\" data-w-onclick=\"handleAllFilterClick|footer\">All</a></li>\n                <li><a href=\"#/active\" data-w-onclick=\"handleActiveFilterClick|footer\">Active</a></li>\n                <li><a href=\"#/completed\" data-w-onclick=\"handleCompletedFilterClick|footer\">Completed</a></li>\n            </ul>\n            <button id=\"clear-completed\" data-w-onclick=\"handleClearCompletedClick|footer\">Clear completed (2)</button>\n        </footer>\n    </div>\n</section>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/todomvc2/expected.html",
    "content": "<UL>\n  \"\\n    \"\n  <LI id=\"main-todo-5\">\n    \"\\n        \"\n    <INPUT id=\"main-todo-5-titleInput\">\n    \"\\n    \"\n  \"\\n    \"\n  <LI id=\"main-todo-6\">\n    \"\\n        \"\n    <INPUT id=\"main-todo-6-titleInput\">\n    \"\\n    \"\n  \"\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/todomvc2/from.html",
    "content": "<ul>\n    <li id=\"main-todo-5\">\n        <input id=\"main-todo-5-titleInput\">\n    </li>\n</ul>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/todomvc2/to.html",
    "content": "<ul>\n    <li id=\"main-todo-5\">\n        <input id=\"main-todo-5-titleInput\">\n    </li>\n    <li id=\"main-todo-6\">\n        <input id=\"main-todo-6-titleInput\">\n    </li>\n</ul>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/two/expected.html",
    "content": "<DIV class=\"bar\">\n  <SPAN class=\"world\">\n"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/two/from.html",
    "content": "<div class=\"foo\"><span class=\"hello\"></span></div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/fixtures/two/to.html",
    "content": "<div class=\"bar\"><span class=\"world\"></span></div>"
  },
  {
    "path": "packages/runtime-class/test/morphdom/index.test.js",
    "content": "\"use strict\";\n\nrequire(\"../__util__/test-init\");\n\nconst fs = require(\"fs\");\nconst path = require(\"path\");\nvar chai = require(\"chai\");\nconst { JSDOM } = require(\"jsdom\");\nconst morphdom = require(\"marko/runtime/vdom/morphdom\");\nvar autotest = require(\"mocha-autotest\").default;\nchai.config.includeStack = true;\n\nlet doc;\nbefore(() => (doc = new JSDOM(\"\").window.document));\nafter(() => (doc = undefined));\n\nautotest(\"fixtures\", (fixture) => {\n  let dir = fixture.dir;\n  let test = fixture.test;\n  let resolve = fixture.resolve;\n  let snapshot = fixture.snapshot;\n  test(() => {\n    var fromHTML = fs.readFileSync(resolve(\"from.html\"), {\n      encoding: \"utf8\",\n    });\n    var toHTML = fs.readFileSync(resolve(\"to.html\"), {\n      encoding: \"utf8\",\n    });\n\n    let fromNode = JSDOM.fragment(fromHTML);\n    let realToNode = JSDOM.fragment(toHTML);\n    var targetVEl = require(\"marko/runtime/vdom/vdom\").___virtualize(\n      realToNode,\n    );\n    var expectedHTML = serializeNode(realToNode);\n    fs.writeFileSync(resolve(\"expected.html\"), expectedHTML, {\n      encoding: \"utf8\",\n    });\n\n    var toNode = targetVEl;\n    var componentsContext = {\n      ___preserved: {},\n      ___preservedBodies: {},\n      ___globalContext: {\n        ___isHydrate: true,\n      },\n    };\n\n    morphdom(fromNode, toNode, doc, componentsContext);\n\n    var actualHTML = serializeNode(fromNode);\n    snapshot(actualHTML, \".html\");\n\n    if (fs.existsSync(path.join(dir, \"index.js\"))) {\n      require(dir).verify({ rootNode: fromNode }, chai.expect);\n    }\n  });\n});\n\nfunction serializeNode(node) {\n  // NOTE: We don't use XMLSerializer because we need to sort the attributes to correctly compare output HTML strings\n  // BAD: return (new XMLSerializer()).serializeToString(node);\n  var html = \"\";\n  function serializeHelper(node, indent) {\n    if (node.nodeType === 1) {\n      serializeElHelper(node, indent);\n    } else if (node.nodeType === 3) {\n      serializeTextHelper(node, indent);\n    } else if (node.nodeType === 11) {\n      var curChild = node.firstChild;\n      while (curChild) {\n        serializeHelper(curChild, indent);\n        curChild = curChild.nextSibling;\n      }\n    } else {\n      throw new Error(\"Unexpected node type: \" + node.nodeType);\n    }\n  }\n\n  function serializeElHelper(el, indent) {\n    var nodeName = el.tagName;\n\n    var namespaceURI = el.namespaceURI;\n\n    if (namespaceURI === \"http://www.w3.org/2000/svg\") {\n      nodeName = \"svg:\" + nodeName;\n    } else if (namespaceURI === \"http://www.w3.org/1998/Math/MathML\") {\n      nodeName = \"math:\" + nodeName;\n    } else if (namespaceURI !== \"http://www.w3.org/1999/xhtml\") {\n      nodeName = namespaceURI + \":\" + nodeName;\n    }\n\n    html += indent + \"<\" + nodeName;\n\n    var attributes = el.attributes;\n    var attributesArray = [];\n\n    for (var i = 0; i < attributes.length; i++) {\n      var attr = attributes[i];\n      if (attr.specified !== false) {\n        var qualifiedName = attr.localName;\n\n        if (/^xmlns(:|$)/.test(attr.name)) {\n          continue;\n        }\n\n        if (nodeName === \"INPUT\") {\n          if (qualifiedName === \"checked\" || qualifiedName === \"value\") {\n            continue;\n          }\n        } else if (nodeName === \"OPTION\") {\n          if (qualifiedName === \"selected\") {\n            continue;\n          }\n        }\n\n        if (attr.namespaceURI) {\n          qualifiedName = attr.namespaceURI + \":\" + qualifiedName;\n        }\n        attributesArray.push(\" \" + qualifiedName + '=\"' + attr.value + '\"');\n      }\n    }\n\n    if (nodeName === \"INPUT\") {\n      if (el.checked) {\n        attributesArray.push(' checked=\"\"');\n      }\n\n      if (el.value) {\n        if (\n          el.value !== \"on\" ||\n          (el.type !== \"radio\" && el.type !== \"checkbox\")\n        ) {\n          attributesArray.push(' value=\"' + el.value + '\"');\n        }\n      }\n    } else if (nodeName === \"OPTION\") {\n      if (el.selected) {\n        attributesArray.push(' selected=\"\"');\n      }\n    }\n\n    attributesArray.sort();\n\n    html += attributesArray.join(\"\");\n\n    html += \">\\n\";\n\n    if (nodeName === \"TEXTAREA\" && el.value) {\n      html += indent + \"  \" + JSON.stringify(el.value) + \"\\n\";\n    } else {\n      var childNodes = el.childNodes;\n\n      if (childNodes && childNodes.length) {\n        for (i = 0; i < childNodes.length; i++) {\n          serializeHelper(childNodes[i], indent + \"  \");\n        }\n      }\n    }\n  }\n\n  function serializeTextHelper(node, indent) {\n    html += indent + JSON.stringify(node.nodeValue) + \"\\n\";\n  }\n\n  serializeHelper(node, \"\");\n\n  return html;\n}\n"
  },
  {
    "path": "packages/runtime-class/test/node-require/index.test.js",
    "content": "\"use strict\";\n\nrequire(\"../__util__/test-init\");\n\nconst chai = require(\"chai\");\nchai.config.includeStack = true;\nrequire(\"chai\").should();\nconst expect = require(\"chai\").expect;\n\nvar nodeRequire = require(\"../../node-require\");\n\nfunction testNodeRequireInstall(options, expected) {\n  let requireObj = {\n    extensions: {},\n  };\n\n  options.require = requireObj;\n\n  nodeRequire.install(options);\n\n  for (let i = 0; i < expected.length; i++) {\n    let ext = expected[i];\n    expect(requireObj.extensions[ext]).to.be.a(\"function\");\n  }\n\n  expected.sort();\n\n  var actualKeys = Object.keys(requireObj.extensions).sort();\n  expect(expected).to.deep.equal(actualKeys);\n}\n\ndescribe(\"node-require\", function () {\n  it(\"should consolidate using both extension and extensions\", function () {\n    testNodeRequireInstall(\n      {\n        extension: \".marko.xml\",\n        extensions: [\".marko\", \".html\"],\n      },\n      [\".marko.xml\", \".marko\", \".html\"],\n    );\n  });\n\n  it(\"should consolidate using only extensions\", function () {\n    testNodeRequireInstall(\n      {\n        extensions: [\".marko\", \".html\"],\n      },\n      [\".marko\", \".html\"],\n    );\n  });\n\n  it(\"should consolidate using only extension\", function () {\n    testNodeRequireInstall(\n      {\n        extension: \".marko.xml\",\n      },\n      [\".marko.xml\"],\n    );\n  });\n\n  it(\"should consolidate using extension and empty array of extensions\", function () {\n    testNodeRequireInstall(\n      {\n        extension: \".marko.xml\",\n        extensions: [],\n      },\n      [\".marko.xml\"],\n    );\n  });\n\n  it(\"should consolidate with .marko when neither extension or extensions provided\", function () {\n    testNodeRequireInstall({}, [\".marko\"]);\n  });\n\n  it(\"should insert missing period into extensions\", function () {\n    testNodeRequireInstall(\n      {\n        extension: \"marko.xml\",\n        extensions: [\"html\"],\n      },\n      [\".marko.xml\", \".html\"],\n    );\n  });\n});\n"
  },
  {
    "path": "packages/runtime-class/test/package.json",
    "content": "{\n  \"name\": \"marko-test\",\n  \"version\": \"1.0.0\",\n  \"type\": \"commonjs\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-boolean-dynamic/expected.html",
    "content": "<select multiple><option value=red>Red</option><option value=green selected>Green</option><option value=blue>Blue</option></select>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-boolean-dynamic/template.marko",
    "content": "<select multiple>\n    <option value=\"red\">Red</option>\n    <option value=\"green\" selected=(input.isGreenSelected)>Green</option>\n    <option value=\"blue\" selected=(input.isBlueSelected)>Blue</option>\n</select>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-boolean-dynamic/test.js",
    "content": "exports.templateData = {\n  isGreenSelected: true,\n  isBlueSelected: false,\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-boolean-dynamic/vdom-expected.html",
    "content": "<SELECT multiple=\"\">\n  <OPTION value=\"red\">\n    \"Red\"\n  <OPTION selected=\"\" value=\"green\">\n    \"Green\"\n  <OPTION value=\"blue\">\n    \"Blue\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-boolean-placeholder/expected.html",
    "content": "<input type=checkbox checked><button disabled>Button</button><select><option value=\"red\">red</option><option value=\"green\" selected>green</option><option value=\"blue\">blue</option></select>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-boolean-placeholder/template.marko",
    "content": "<input type=\"checkbox\" checked=input.checked/>\n<button disabled>Button</button>\n<select>\n    <for|option| of=input.options>\n        <option value=`${option.value}` selected=option.selected>\n            ${option.value}\n        </option>\n    </for>\n</select>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-boolean-placeholder/test.js",
    "content": "exports.templateData = {\n  options: [\n    {\n      value: \"red\",\n      selected: false,\n    },\n    {\n      value: \"green\",\n      selected: true,\n    },\n    {\n      value: \"blue\",\n      selected: false,\n    },\n  ],\n  disabled: false,\n  checked: true,\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-boolean-placeholder/vdom-expected.html",
    "content": "<INPUT checked=\"\" type=\"checkbox\">\n<BUTTON disabled=\"\">\n  \"Button\"\n<SELECT>\n  <OPTION value=\"red\">\n    \"red\"\n  <OPTION selected=\"\" value=\"green\">\n    \"green\"\n  <OPTION value=\"blue\">\n    \"blue\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-boolean-static/expected.html",
    "content": "<select multiple><option value=red>Red</option><option value=green selected>Green</option><option value=blue>Blue</option></select>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-boolean-static/template.marko",
    "content": "<select multiple>\n    <option value=\"red\">Red</option>\n    <option value=\"green\" selected=true>Green</option>\n    <option value=\"blue\">Blue</option>\n</select>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-boolean-static/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-boolean-static/vdom-expected.html",
    "content": "<SELECT multiple=\"\">\n  <OPTION value=\"red\">\n    \"Red\"\n  <OPTION selected=\"\" value=\"green\">\n    \"Green\"\n  <OPTION value=\"blue\">\n    \"Blue\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-empty/expected.html",
    "content": "<img alt><img alt>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-empty/template.marko",
    "content": "$ var empty=\"\";\n\n<img alt=\"\">\n<img alt=empty>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-empty/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-empty/vdom-expected.html",
    "content": "<IMG alt=\"\">\n<IMG alt=\"\">\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-empty-dynamic/expected.html",
    "content": "<img alt>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-empty-dynamic/template.marko",
    "content": "<img alt=(input.myAlt || true)>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-empty-dynamic/test.js",
    "content": "exports.templateData = {\n  myAlt: null,\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-empty-dynamic/vdom-expected.html",
    "content": "<IMG alt=\"\">\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-escape-xml/expected.html",
    "content": "<div foo='\"hello\"' json='{\"a\":1}'>Hello World!</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-escape-xml/template.marko",
    "content": "<div foo='\"hello\"' json=JSON.stringify({ a: 1 })>\n    Hello World!\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-escape-xml/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-escape-xml/vdom-expected.html",
    "content": "<DIV foo=\"\"hello\"\" json=\"{\"a\":1}\">\n  \"Hello World!\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-newline-escaped/expected.html",
    "content": "<div class=\"foo bar\"></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-newline-escaped/template.marko",
    "content": "<div class=\"foo\\nbar\"/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-newline-escaped/test.js",
    "content": "exports.templateData = {\n  isGreenSelected: true,\n  isBlueSelected: false,\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-newline-escaped/vdom-expected.html",
    "content": "<DIV class=\"foo bar\">\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-number/expected.html",
    "content": "<div data-foo=1></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-number/template.marko",
    "content": "<div data-foo=1>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-number/test.js",
    "content": "exports.templateData = {\n  message: {\n    safeHTML: \"<span>Hello World</span>\",\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-number/vdom-expected.html",
    "content": "<DIV data-foo=\"1\">\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-placeholder-escaped-undefined/expected.html",
    "content": "<div foo=\"Hello \">Hello World!</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-placeholder-escaped-undefined/template.marko",
    "content": "<div foo=`Hello ${input.foo || \"\"}`>Hello World!</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-placeholder-escaped-undefined/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-placeholder-escaped-undefined/vdom-expected.html",
    "content": "<DIV foo=\"Hello \">\n  \"Hello World!\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-placeholder-unescaped-undefined/expected.html",
    "content": "<div foo=\"Hello \">Hello World!</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-placeholder-unescaped-undefined/template.marko",
    "content": "<div foo=`Hello ${input.foo || \"\"}`>Hello World!</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-placeholder-unescaped-undefined/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-placeholder-unescaped-undefined/vdom-expected.html",
    "content": "<DIV foo=\"Hello \">\n  \"Hello World!\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-unquoted/expected.html",
    "content": "<div a=abc b=\"abc \" c=\"abc'\" d='abc\"' e=\"abc'&#34;\" f='abc\"&#39;' g=\"abc\t\" h=\"abc\n\" i=\"abc\r\" j=\"abc\f\" l=/abc k=\"abc/\"></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-unquoted/template.marko",
    "content": "<div\n  a=\"abc\"\n  b=\"abc \"\n  c=\"abc'\"\n  d='abc\"'\n  e=\"abc'\\\"\"\n  f=\"abc\\\"'\"\n  g=\"abc\\t\"\n  h=\"abc\\n\"\n  i=\"abc\\r\"\n  j=\"abc\\f\"\n  l=\"/abc\"\n  k=\"abc/\"\n/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-unquoted/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-unquoted/vdom-expected.html",
    "content": "<DIV a=\"abc\" b=\"abc \" c=\"abc'\" d=\"abc\"\" e=\"abc'\"\" f=\"abc\"'\" g=\"abc\t\" h=\"abc\n\" i=\"abc\r\" j=\"abc\f\" k=\"abc/\" l=\"/abc\">\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-value-number/expected.html",
    "content": "<div data-foo=5></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-value-number/template.marko",
    "content": "<div data-foo=5/>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-value-number/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-value-number/vdom-expected.html",
    "content": "<DIV data-foo=\"5\">\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-value-obj/expected.html",
    "content": "<div data-foo=\"Frank\"></div><div data-foo=Frank></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-value-obj/template.marko",
    "content": "$ var foo = {\n    name: \"Frank\",\n    toString: function() {\n        return this.name;\n    }\n};\n<div data-foo=`${foo}`/>\n<div data-foo=foo/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-value-obj/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-value-obj/vdom-expected.html",
    "content": "<DIV data-foo=\"Frank\">\n<DIV data-foo=\"Frank\">\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-value-obj-custom-tag/components/tag.marko",
    "content": "<div data-foo=input.foo/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-value-obj-custom-tag/expected.html",
    "content": "<div data-foo=Frank></div><div data-foo=Frank></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-value-obj-custom-tag/template.marko",
    "content": "$ var foo = {\n    name: \"Frank\",\n    toString: function() {\n        return this.name;\n    }\n};\n<tag foo=foo/>\n<tag foo=foo/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-value-obj-custom-tag/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-value-obj-custom-tag/vdom-expected.html",
    "content": "<DIV data-foo=\"Frank\">\n<DIV data-foo=\"Frank\">\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-value-partial-string/expected.html",
    "content": "<div data-foo=anull></div><div data-foo=\"bnull\"></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-value-partial-string/template.marko",
    "content": "<div data-foo=\"a\"+input.text/>\n<div data-foo=`b${input.text}`/>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-value-partial-string/test.js",
    "content": "exports.templateData = { text: null };\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attr-value-partial-string/vdom-expected.html",
    "content": "<DIV data-foo=\"anull\">\n<DIV data-foo=\"bnull\">\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attributes-dynamic-custom-tag/components/test-hello/marko-tag.json",
    "content": "{\n  \"renderer\": \"./renderer.js\",\n  \"@name\": \"string\",\n  \"@adult\": \"boolean\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attributes-dynamic-custom-tag/components/test-hello/renderer.js",
    "content": "exports.render = function (input, out) {\n  out.write(\"Hello \" + input.name + \"!\");\n  if (input.adult === true) {\n    out.write(\" (adult)\");\n  } else if (input.adult === false) {\n    out.write(\" (child)\");\n  }\n\n  if (input.renderBody) {\n    out.write(\" BODY: \");\n    input.renderBody(out);\n  }\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attributes-dynamic-custom-tag/expected.html",
    "content": "Hello Frank! (adult)"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attributes-dynamic-custom-tag/template.marko",
    "content": "$ var attrs = { name: \"Frank\", adult: true };\n<test-hello ...attrs/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attributes-dynamic-custom-tag/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attributes-dynamic-custom-tag/vdom-expected.html",
    "content": "\"Hello Frank! (adult)\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attributes-dynamic-custom-tag-mixed/components/test-hello/marko-tag.json",
    "content": "{\n  \"renderer\": \"./renderer.js\",\n  \"@name\": \"string\",\n  \"@adult\": \"boolean\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attributes-dynamic-custom-tag-mixed/components/test-hello/renderer.js",
    "content": "exports.render = function (input, out) {\n  out.write(\"Hello \" + input.name + \"!\");\n  if (input.adult === true) {\n    out.write(\" (adult)\");\n  } else if (input.adult === false) {\n    out.write(\" (child)\");\n  }\n\n  if (input.renderBody) {\n    out.write(\" BODY: \");\n    input.renderBody(out);\n  }\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attributes-dynamic-custom-tag-mixed/expected.html",
    "content": "Hello Frank! (adult)"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attributes-dynamic-custom-tag-mixed/template.marko",
    "content": "$ var attrs = { name: \"Frank\" };\n<test-hello ...attrs adult=true/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attributes-dynamic-custom-tag-mixed/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attributes-dynamic-custom-tag-mixed/vdom-expected.html",
    "content": "\"Hello Frank! (adult)\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attributes-dynamic-xss/components/test-hello/marko-tag.json",
    "content": "{\n  \"renderer\": \"./renderer.js\",\n  \"@name\": \"string\",\n  \"@adult\": \"boolean\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attributes-dynamic-xss/components/test-hello/renderer.js",
    "content": "exports.render = function (input, out) {\n  out.write(\"Hello \" + input.name + \"!\");\n  if (input.adult === true) {\n    out.write(\" (adult)\");\n  } else if (input.adult === false) {\n    out.write(\" (child)\");\n  }\n\n  if (input.renderBody) {\n    out.write(\" BODY: \");\n    input.renderBody(out);\n  }\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attributes-dynamic-xss/expected.html",
    "content": "<div></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attributes-dynamic-xss/template.marko",
    "content": "$ var attrs = { '></div><script>alert(\"hi\")</script>':true };\n\n<div ...attrs/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attributes-dynamic-xss/test.js",
    "content": "exports.templateData = {};\nexports.skip_vdom = \"DOM api protects against this vulnerability client-side\";\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attrs/expected.html",
    "content": "<div data-encoding='\"hello\"' style=\"background-color: #FF0000; <test>\" class=my-div checked>Hello World!</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attrs/template.marko",
    "content": "<div ...input.myAttrs data-encoding='\"hello\"'>Hello World!</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attrs/test.js",
    "content": "exports.templateData = {\n  myAttrs: {\n    style: \"background-color: #FF0000; <test>\",\n    class: \"my-div\",\n    checked: true,\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attrs/vdom-expected.html",
    "content": "<DIV checked=\"\" class=\"my-div\" data-encoding=\"\"hello\"\" style=\"background-color: #FF0000; <test>\">\n  \"Hello World!\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attrs-normalize-for-native-tag/components/custom-tag/index.marko",
    "content": "<div.custom ...input>\n  <${input.renderBody}/>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attrs-normalize-for-native-tag/expected.html",
    "content": "<svg data-dash=case viewBox=\"0 0 0 100\" class=a style=color:green />"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attrs-normalize-for-native-tag/template.marko",
    "content": "static var attrs = {\n  \"data-dash\": \"case\",\n  viewBox: \"0 0 0 100\",\n  class: [\"a\"],\n  style: { color: \"green\" },\n  skipped: false\n}\n\n<svg ...attrs/>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attrs-normalize-for-native-tag/test.js",
    "content": "exports.templateData = {\n  myAttrs: {\n    style: \"background-color: #FF0000; <test>\",\n    class: \"my-div\",\n    checked: true,\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attrs-normalize-for-native-tag/vdom-expected.html",
    "content": "<svg:svg class=\"a\" data-dash=\"case\" style=\"color:green\" viewBox=\"0 0 0 100\">\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attrs-with-render-body/components/custom-tag/index.marko",
    "content": "<div.custom ...input>\n  <${input.renderBody}/>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attrs-with-render-body/expected.html",
    "content": "<div class=native>Inline native element renderBody</div><div class=custom>Inline custom tag renderBody</div><div class=native></div><div class=custom>RenderBody from input.</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attrs-with-render-body/template.marko",
    "content": "<macro|input| name=\"test\">\n  <div.native ...input>Inline native element renderBody</div>\n  <custom-tag ...input>Inline custom tag renderBody</custom-tag>\n\n  <div.native ...input/>\n  <custom-tag ...input/>\n</macro>\n\n<test>\n  RenderBody from input.\n</test>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attrs-with-render-body/test.js",
    "content": "exports.templateData = {\n  myAttrs: {\n    style: \"background-color: #FF0000; <test>\",\n    class: \"my-div\",\n    checked: true,\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/attrs-with-render-body/vdom-expected.html",
    "content": "<DIV class=\"native\">\n  \"Inline native element renderBody\"\n<DIV class=\"custom\">\n  \"Inline custom tag renderBody\"\n<DIV class=\"native\">\n<DIV class=\"custom\">\n  \"RenderBody from input.\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/autocomplete/expected.html",
    "content": "Hello Frank!"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/autocomplete/marko.json",
    "content": "{\n  \"tags-dir\": \"./tags\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/autocomplete/tags/test-hello/marko-tag.json",
    "content": "{\n  \"renderer\": \"./renderer.js\",\n  \"@name\": \"string\",\n  \"@foo\": {\n    \"type\": \"number\",\n    \"autocomplete\": [\n      {\n        \"snippet\": \"foo=abc\"\n      },\n      {\n        \"snippet\": \"foo=def\"\n      }\n    ]\n  },\n  \"autocomplete\": [\n    {\n      \"displayText\": \"test-hello foo=${1:bar}\",\n      \"snippet\": \"test-hello foo=$1\"\n    }\n  ]\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/autocomplete/tags/test-hello/renderer.js",
    "content": "exports.render = function (input, out) {\n  out.write(\"Hello \" + input.name + \"!\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/autocomplete/template.marko",
    "content": "<test-hello name=\"Frank\"></test-hello>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/autocomplete/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/autocomplete/vdom-expected.html",
    "content": "\"Hello Frank!\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-client-reorder/expected-events-vdom.json",
    "content": "[\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"data.outer\",\n            \"clientReorder\": false\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"data.outer\",\n            \"clientReorder\": false\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"data.outer\",\n            \"clientReorder\": false,\n            \"finished\": true\n        }\n    }\n]\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-client-reorder/expected-events.json",
    "content": "[\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"input.outer\",\n            \"clientReorder\": true,\n            \"dataProvider\": {},\n            \"id\": 0\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"input.outer\",\n            \"clientReorder\": true,\n            \"dataProvider\": {},\n            \"id\": 0\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"input.outer\",\n            \"clientReorder\": true,\n            \"dataProvider\": {},\n            \"id\": 0,\n            \"finished\": true\n        }\n    }\n]"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-client-reorder/expected.html",
    "content": "<noscript id=afph0></noscript><div id=af0 style=display:none><div class=foo><h1>Foo</h1> Hello World</div></div><script>function $af(d,a,e,l,g,h,k,b,f,c){c=$af;if(a&&!c[a])(c[a+=\"$\"]||(c[a]=[])).push(d);else{e=document;l=e.getElementById(\"af\"+d);g=e.getElementById(\"afph\"+d);h=e.createDocumentFragment();k=l.childNodes;b=0;for(f=k.length;b<f;b++)h.appendChild(k.item(0));g&&g.parentNode.replaceChild(h,g);c[d]=1;if(a=c[d+\"$\"])for(b=0,f=a.length;b<f;b++)c(a[b])}};$af(0)</script>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-client-reorder/template.marko",
    "content": "<await(data.outer) client-reorder>\n    <@then|outer|>\n        <div class=\"foo\">\n            <h1>Foo</h1> Hello World\n        </div>\n    </@then>\n</await>\n<await-reorderer/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-client-reorder/test.js",
    "content": "var expect = require(\"chai\").expect;\nvar extend = require(\"raptor-util/extend\");\n\nexports.templateData = {\n  outer: Promise.resolve(),\n  inner1: Promise.resolve(),\n  inner2: Promise.resolve(),\n};\n\nexports.checkEvents = function (events, snapshot, out) {\n  events = events.map(function (eventInfo) {\n    var arg = extend({}, eventInfo.arg);\n    expect(arg.out != null).to.equal(true);\n\n    delete arg.out; // Not serializable\n    delete arg.parent; // Not serializable\n    delete arg.asyncValue; // Not serializable\n\n    return {\n      event: eventInfo.event,\n      arg: arg,\n    };\n  });\n\n  snapshot(events, out.isVDOM ? \"-events-vdom.json\" : \"-events.json\");\n};\n\nexports.skip_vdom = \"client-reorder/placeholders are not supported in vdom\";\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-client-reorder-cspnonce/expected-events-vdom.json",
    "content": "[\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"data.outer\",\n            \"clientReorder\": false\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"data.outer\",\n            \"clientReorder\": false\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"data.outer\",\n            \"clientReorder\": false,\n            \"finished\": true\n        }\n    }\n]\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-client-reorder-cspnonce/expected-events.json",
    "content": "[\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"input.outer\",\n            \"clientReorder\": true,\n            \"dataProvider\": {},\n            \"id\": 0\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"input.outer\",\n            \"clientReorder\": true,\n            \"dataProvider\": {},\n            \"id\": 0\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"input.outer\",\n            \"clientReorder\": true,\n            \"dataProvider\": {},\n            \"id\": 0,\n            \"finished\": true\n        }\n    }\n]"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-client-reorder-cspnonce/expected.html",
    "content": "<noscript id=afph0></noscript><style nonce=xyz>#af0{display:none}</style><div id=af0><div class=foo><h1>Foo</h1> Hello World</div></div><script nonce=xyz>function $af(d,a,e,l,g,h,k,b,f,c){c=$af;if(a&&!c[a])(c[a+=\"$\"]||(c[a]=[])).push(d);else{e=document;l=e.getElementById(\"af\"+d);g=e.getElementById(\"afph\"+d);h=e.createDocumentFragment();k=l.childNodes;b=0;for(f=k.length;b<f;b++)h.appendChild(k.item(0));g&&g.parentNode.replaceChild(h,g);c[d]=1;if(a=c[d+\"$\"])for(b=0,f=a.length;b<f;b++)c(a[b])}};$af(0)</script>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-client-reorder-cspnonce/template.marko",
    "content": "<await(data.outer) client-reorder>\n    <@then|outer|>\n        <div class=\"foo\">\n            <h1>Foo</h1> Hello World\n        </div>\n    </@then>\n</await>\n<await-reorderer/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-client-reorder-cspnonce/test.js",
    "content": "var expect = require(\"chai\").expect;\nvar extend = require(\"raptor-util/extend\");\n\nexports.templateData = {\n  outer: Promise.resolve(),\n  $global: {\n    cspNonce: \"xyz\",\n  },\n};\n\nexports.checkEvents = function (events, snapshot, out) {\n  events = events.map(function (eventInfo) {\n    var arg = extend({}, eventInfo.arg);\n    expect(arg.out != null).to.equal(true);\n\n    delete arg.out; // Not serializable\n    delete arg.parent; // Not serializable\n    delete arg.asyncValue; // Not serializable\n\n    return {\n      event: eventInfo.event,\n      arg: arg,\n    };\n  });\n\n  snapshot(events, out.isVDOM ? \"-events-vdom.json\" : \"-events.json\");\n};\n\nexports.skip_vdom = \"client-reorder/placeholders are not supported in vdom\";\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-client-reorder-invoked-once/expected-events-vdom.json",
    "content": "[\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"data.outer\",\n            \"clientReorder\": false\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"data.outer\",\n            \"clientReorder\": false\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"data.outer\",\n            \"clientReorder\": false,\n            \"finished\": true\n        }\n    }\n]\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-client-reorder-invoked-once/expected-events.json",
    "content": "[\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"input.outer\",\n            \"clientReorder\": true,\n            \"dataProvider\": {},\n            \"id\": 0\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"input.outer\",\n            \"clientReorder\": true,\n            \"dataProvider\": {},\n            \"id\": 0\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"input.outer\",\n            \"clientReorder\": true,\n            \"dataProvider\": {},\n            \"id\": 0,\n            \"finished\": true\n        }\n    }\n]"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-client-reorder-invoked-once/expected.html",
    "content": "<body><noscript id=afph0></noscript><div id=af0 style=display:none><div class=foo><h1>Foo</h1> Hello World</div></div><script>function $af(d,a,e,l,g,h,k,b,f,c){c=$af;if(a&&!c[a])(c[a+=\"$\"]||(c[a]=[])).push(d);else{e=document;l=e.getElementById(\"af\"+d);g=e.getElementById(\"afph\"+d);h=e.createDocumentFragment();k=l.childNodes;b=0;for(f=k.length;b<f;b++)h.appendChild(k.item(0));g&&g.parentNode.replaceChild(h,g);c[d]=1;if(a=c[d+\"$\"])for(b=0,f=a.length;b<f;b++)c(a[b])}};$af(0)</script></body>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-client-reorder-invoked-once/template.marko",
    "content": "<body>\n    <await(data.outer) client-reorder>\n        <@then|outer|>\n            <div class=\"foo\">\n                <h1>Foo</h1> Hello World\n            </div>\n        </@then>\n    </await>\n    <await-reorderer/>\n</body>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-client-reorder-invoked-once/test.js",
    "content": "const expect = require(\"chai\").expect;\nconst extend = require(\"raptor-util/extend\");\n\nexports.templateData = {\n  outer: Promise.resolve(),\n  inner1: Promise.resolve(),\n  inner2: Promise.resolve(),\n};\n\nexports.checkEvents = function (events, snapshot, out) {\n  // Expect that we invoked the await reorderer. If true, it was only able to\n  // be invoked once.\n  expect(out.global.__awaitReordererInvoked).to.equal(true);\n\n  events = events.map(function (eventInfo) {\n    var arg = extend({}, eventInfo.arg);\n    expect(arg.out != null).to.equal(true);\n\n    delete arg.out; // Not serializable\n    delete arg.parent; // Not serializable\n    delete arg.asyncValue; // Not serializable\n\n    return {\n      event: eventInfo.event,\n      arg: arg,\n    };\n  });\n\n  snapshot(events, out.isVDOM ? \"-events-vdom.json\" : \"-events.json\");\n};\n\nexports.skip_vdom = \"client-reorder/placeholders are not supported in vdom\";\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-client-reorder-mixed/expected-events-vdom.json",
    "content": "[\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"data.outer\",\n            \"clientReorder\": false\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"data.outer\",\n            \"clientReorder\": false\n        }\n    },\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"data.inner1\",\n            \"clientReorder\": false\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"data.inner1\",\n            \"clientReorder\": false\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"data.inner1\",\n            \"clientReorder\": false,\n            \"finished\": true\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"data.outer\",\n            \"clientReorder\": false,\n            \"finished\": true\n        }\n    }\n]\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-client-reorder-mixed/expected-events.json",
    "content": "[\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"input.outer\",\n            \"clientReorder\": true,\n            \"dataProvider\": {},\n            \"id\": 0\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"input.outer\",\n            \"clientReorder\": true,\n            \"dataProvider\": {},\n            \"id\": 0\n        }\n    },\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"input.inner1\",\n            \"clientReorder\": false,\n            \"dataProvider\": {}\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"input.inner1\",\n            \"clientReorder\": false,\n            \"dataProvider\": {}\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"input.inner1\",\n            \"clientReorder\": false,\n            \"dataProvider\": {},\n            \"finished\": true\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"input.outer\",\n            \"clientReorder\": true,\n            \"dataProvider\": {},\n            \"id\": 0,\n            \"finished\": true\n        }\n    }\n]"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-client-reorder-mixed/expected.html",
    "content": "<body><noscript id=afph0></noscript><div id=af0 style=display:none><div class=outer><h1>Outer</h1><div class=inner><h2>Inner 1</h2></div></div></div><script>function $af(d,a,e,l,g,h,k,b,f,c){c=$af;if(a&&!c[a])(c[a+=\"$\"]||(c[a]=[])).push(d);else{e=document;l=e.getElementById(\"af\"+d);g=e.getElementById(\"afph\"+d);h=e.createDocumentFragment();k=l.childNodes;b=0;for(f=k.length;b<f;b++)h.appendChild(k.item(0));g&&g.parentNode.replaceChild(h,g);c[d]=1;if(a=c[d+\"$\"])for(b=0,f=a.length;b<f;b++)c(a[b])}};$af(0)</script></body>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-client-reorder-mixed/template.marko",
    "content": "<body>\n    <await(data.outer) client-reorder>\n        <@then|outer|>\n            <div class=\"outer\">\n                <h1>Outer</h1>\n                <await(data.inner1)>\n                    <@then|inner1|>\n                        <div class=\"inner\">\n                            <h2>Inner 1</h2>\n                        </div>\n                    </@then>\n                </await>\n            </div>\n        </@then>\n    </await>\n    <await-reorderer/>\n</body>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-client-reorder-mixed/test.js",
    "content": "var expect = require(\"chai\").expect;\nvar extend = require(\"raptor-util/extend\");\n\nexports.templateData = {\n  outer: Promise.resolve(),\n  inner1: Promise.resolve(),\n};\n\nexports.checkEvents = function (events, snapshot, out) {\n  events = events.map(function (eventInfo) {\n    var arg = extend({}, eventInfo.arg);\n    expect(arg.out != null).to.equal(true);\n\n    delete arg.out; // Not serializable\n    delete arg.parent; // Not serializable\n    delete arg.asyncValue; // Not serializable\n\n    return {\n      event: eventInfo.event,\n      arg: arg,\n    };\n  });\n\n  snapshot(events, out.isVDOM ? \"-events-vdom.json\" : \"-events.json\");\n};\n\nexports.skip_vdom = \"client-reorder/placeholders are not supported in vdom\";\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-client-reorder-nested/expected-events-vdom.json",
    "content": "[\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"data.outer\",\n            \"clientReorder\": false\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"data.outer\",\n            \"clientReorder\": false\n        }\n    },\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"data.inner1\",\n            \"clientReorder\": false\n        }\n    },\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"data.inner2\",\n            \"clientReorder\": false\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"data.inner1\",\n            \"clientReorder\": false\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"data.inner1\",\n            \"clientReorder\": false,\n            \"finished\": true\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"data.inner2\",\n            \"clientReorder\": false\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"data.inner2\",\n            \"clientReorder\": false,\n            \"finished\": true\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"data.outer\",\n            \"clientReorder\": false,\n            \"finished\": true\n        }\n    }\n]\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-client-reorder-nested/expected-events.json",
    "content": "[\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"input.outer\",\n            \"clientReorder\": true,\n            \"dataProvider\": {},\n            \"id\": 0\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"input.outer\",\n            \"clientReorder\": true,\n            \"dataProvider\": {},\n            \"id\": 0\n        }\n    },\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"input.inner1\",\n            \"clientReorder\": true,\n            \"dataProvider\": {},\n            \"id\": 1\n        }\n    },\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"input.inner2\",\n            \"clientReorder\": true,\n            \"dataProvider\": {},\n            \"id\": 2\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"input.outer\",\n            \"clientReorder\": true,\n            \"dataProvider\": {},\n            \"id\": 0,\n            \"finished\": true\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"input.inner1\",\n            \"clientReorder\": true,\n            \"dataProvider\": {},\n            \"id\": 1\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"input.inner1\",\n            \"clientReorder\": true,\n            \"dataProvider\": {},\n            \"id\": 1,\n            \"finished\": true\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"input.inner2\",\n            \"clientReorder\": true,\n            \"dataProvider\": {},\n            \"id\": 2\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"input.inner2\",\n            \"clientReorder\": true,\n            \"dataProvider\": {},\n            \"id\": 2,\n            \"finished\": true\n        }\n    }\n]"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-client-reorder-nested/expected.html",
    "content": "<noscript id=afph0></noscript><div id=af0 style=display:none><div class=outer><h1>Outer</h1><noscript id=afph1></noscript><noscript id=afph2></noscript></div></div><div id=af1 style=display:none><div class=inner1><h2>Inner 1</h2></div></div><div id=af2 style=display:none><div class=inner2><h2>Inner 2</h2></div></div><script>function $af(d,a,e,l,g,h,k,b,f,c){c=$af;if(a&&!c[a])(c[a+=\"$\"]||(c[a]=[])).push(d);else{e=document;l=e.getElementById(\"af\"+d);g=e.getElementById(\"afph\"+d);h=e.createDocumentFragment();k=l.childNodes;b=0;for(f=k.length;b<f;b++)h.appendChild(k.item(0));g&&g.parentNode.replaceChild(h,g);c[d]=1;if(a=c[d+\"$\"])for(b=0,f=a.length;b<f;b++)c(a[b])}};$af(0);$af(1);$af(2)</script>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-client-reorder-nested/template.marko",
    "content": "<await(data.outer) client-reorder>\n    <@then|outer|>\n        <div class=\"outer\">\n            <h1>Outer</h1>\n            <await(data.inner1) client-reorder>\n                <@then|inner1|>\n                    <div class=\"inner1\">\n                        <h2>Inner 1</h2>\n                    </div>\n                </@then>\n            </await>\n            <await(data.inner2) client-reorder>\n                <@then|inner2|>\n                    <div class=\"inner2\">\n                        <h2>Inner 2</h2>\n                    </div>\n                </@then>\n            </await>\n        </div>\n    </@then>\n</await>\n<await-reorderer/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-client-reorder-nested/test.js",
    "content": "var expect = require(\"chai\").expect;\nvar extend = require(\"raptor-util/extend\");\n\nexports.templateData = {\n  outer: Promise.resolve(),\n  inner1: Promise.resolve(),\n  inner2: Promise.resolve(),\n};\n\nexports.checkEvents = function (events, snapshot, out) {\n  events = events.map(function (eventInfo) {\n    var arg = extend({}, eventInfo.arg);\n    expect(arg.out != null).to.equal(true);\n\n    delete arg.out; // Not serializable\n    delete arg.parent; // Not serializable\n    delete arg.asyncValue; // Not serializable\n\n    return {\n      event: eventInfo.event,\n      arg: arg,\n    };\n  });\n\n  snapshot(events, out.isVDOM ? \"-events-vdom.json\" : \"-events.json\");\n};\n\nexports.skip_vdom = \"client-reorder/placeholders are not supported in vdom\";\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-client-reorder-sync/expected-events.json",
    "content": "[]"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-client-reorder-sync/expected.html",
    "content": "<div>Hello Frank!</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-client-reorder-sync/template.marko",
    "content": "<await(data.userDataProvider) client-reorder>\n    <@then|user|>\n        <div>Hello ${user.name}!</div>\n    </@then>\n</await>\n<await-reorderer/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-client-reorder-sync/test.js",
    "content": "var expect = require(\"chai\").expect;\nvar extend = require(\"raptor-util/extend\");\n\nexports.templateData = {\n  userDataProvider: { name: \"Frank\" },\n};\n\nexports.checkEvents = function (events, snapshot) {\n  events = events.map(function (eventInfo) {\n    var arg = extend({}, eventInfo.arg);\n    expect(arg.out != null).to.equal(true);\n\n    delete arg.out; // Not serializable\n    delete arg.parent; // Not serializable\n    delete arg.asyncValue; // Not serializable\n\n    return {\n      event: eventInfo.event,\n      arg: arg,\n    };\n  });\n\n  snapshot(events, \"-events.json\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-client-reorder-sync/vdom-expected.html",
    "content": "<DIV>\n  \"Hello Frank!\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-client-reorder-with-runtimeId/expected-events-vdom.json",
    "content": "[\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"data.outer\",\n            \"clientReorder\": false\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"data.outer\",\n            \"clientReorder\": false\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"data.outer\",\n            \"clientReorder\": false,\n            \"finished\": true\n        }\n    }\n]\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-client-reorder-with-runtimeId/expected-events.json",
    "content": "[\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"input.outer\",\n            \"clientReorder\": true,\n            \"dataProvider\": {},\n            \"id\": \"testComponentIdPrefix0\"\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"input.outer\",\n            \"clientReorder\": true,\n            \"dataProvider\": {},\n            \"id\": \"testComponentIdPrefix0\"\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"input.outer\",\n            \"clientReorder\": true,\n            \"dataProvider\": {},\n            \"id\": \"testComponentIdPrefix0\",\n            \"finished\": true\n        }\n    }\n]"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-client-reorder-with-runtimeId/expected.html",
    "content": "<noscript id=aftestRuntimeIdphtestComponentIdPrefix0></noscript><div id=aftestRuntimeIdtestComponentIdPrefix0 style=display:none><div class=foo><h1>Foo</h1> Hello World</div></div><script>function $aftestRuntimeId(d,a,e,l,g,h,k,b,f,c){c=$aftestRuntimeId;if(a&&!c[a])(c[a+=\"$\"]||(c[a]=[])).push(d);else{e=document;l=e.getElementById(\"aftestRuntimeId\"+d);g=e.getElementById(\"aftestRuntimeIdph\"+d);h=e.createDocumentFragment();k=l.childNodes;b=0;for(f=k.length;b<f;b++)h.appendChild(k.item(0));g&&g.parentNode.replaceChild(h,g);c[d]=1;if(a=c[d+\"$\"])for(b=0,f=a.length;b<f;b++)c(a[b])}};$aftestRuntimeId(\"testComponentIdPrefix0\")</script>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-client-reorder-with-runtimeId/template.marko",
    "content": "<await(data.outer) client-reorder>\n    <@then|outer|>\n        <div class=\"foo\">\n            <h1>Foo</h1> Hello World\n        </div>\n    </@then>\n</await>\n<await-reorderer/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-client-reorder-with-runtimeId/test.js",
    "content": "var expect = require(\"chai\").expect;\nvar extend = require(\"raptor-util/extend\");\n\nexports.templateData = {\n  outer: Promise.resolve(),\n  inner1: Promise.resolve(),\n  inner2: Promise.resolve(),\n  $global: {\n    runtimeId: \"testRuntimeId\",\n    componentIdPrefix: \"testComponentIdPrefix\",\n  },\n};\n\nexports.checkEvents = function (events, snapshot, out) {\n  events = events.map(function (eventInfo) {\n    var arg = extend({}, eventInfo.arg);\n    expect(arg.out != null).to.equal(true);\n\n    delete arg.out; // Not serializable\n    delete arg.parent; // Not serializable\n    delete arg.asyncValue; // Not serializable\n\n    return {\n      event: eventInfo.event,\n      arg: arg,\n    };\n  });\n\n  snapshot(events, out.isVDOM ? \"-events-vdom.json\" : \"-events.json\");\n};\n\nexports.skip_vdom = \"client-reorder/placeholders are not supported in vdom\";\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-error/expected.html",
    "content": "BEFORE something went wrong! AFTER"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-error/template.marko",
    "content": "---\nBEFORE\n<await(Promise.reject(new Error(\"Something went wrong!\")))>\n    <@then|testData|>Success!</@then>\n    <@catch>something went wrong!</@catch>\n</await>\nAFTER\n---"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-error/vdom-expected.html",
    "content": "\"BEFORE something went wrong! AFTER\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-error-empty-catch/expected.html",
    "content": "BEFORE  AFTER"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-error-empty-catch/template.marko",
    "content": "---\nBEFORE\n<await(Promise.reject(new Error(\"Something went wrong!\")))>\n    <@then|testData|>Success!</@then>\n    <@catch/>\n</await>\nAFTER\n---"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-error-empty-catch/vdom-expected.html",
    "content": "\"BEFORE  AFTER\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-error-no-catch/template.marko",
    "content": "---\nBEFORE\n<await(Promise.reject(new Error(\"Something went wrong!\")))>\n    <@then|testData|>Success!</@then>\n</await>\nAFTER\n---"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-error-no-catch/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nexports.templateData = {};\n\nexports.checkError = function (e) {\n  var message = e.toString();\n  expect(message).to.contain(\"Something went wrong\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-error-rethrow-catch/template.marko",
    "content": "---\nBEFORE\n<await(Promise.reject(new Error(\"Something went wrong!\")))>\n    <@then|testData|>Success!</@then>\n    <@catch|err|>\n        $ throw err\n    </@catch>\n</await>\nAFTER\n---"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-error-rethrow-catch/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nexports.templateData = {};\n\nexports.skip_vdom = \"VDOM does not support async components\";\n\nexports.checkError = function (e) {\n  var message = e.toString();\n  expect(message).to.contain(\"Something went wrong\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-macros/expected.html",
    "content": "1 2 3"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-macros/template.marko",
    "content": "---\n<macro|macroInput| name=\"asyncMacro\">\n    $ var num = macroInput.num;\n    ${num}\n</macro>1\n<await(data.D1)>\n    <@then|D1|>\n        <asyncMacro num=2/>\n    </@then>\n</await>\n3\n---"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-macros/test.js",
    "content": "exports.tests = [\n  {\n    templateData: {\n      D1: Promise.resolve(),\n    },\n    expectedFile: require.resolve(\"./expected.html\"),\n  },\n];\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-macros/vdom-expected.html",
    "content": "\"1 2 3\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-no-update-content/component-browser.js",
    "content": "module.exports = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-no-update-content/expected.html",
    "content": "<!--M#s0--><button data-marko='{\"onclick\":\"handleClick s0 false\"}' data-marko-key=\"@abc s0\">Click Me</button><!--M/-->"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-no-update-content/template.marko",
    "content": "<await(data.promiseData)>\n    <@then>\n        <button key=\"abc\" no-update on-click(\"handleClick\")>\n            Click Me\n        </button>\n    </@then>\n</await>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-no-update-content/test.js",
    "content": "exports.templateData = {\n  promiseData: Promise.resolve(\"Test promise\"),\n};\n\nexports.skip_vdom = \"This test is only used to test the hydrate boundaries.\";\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-order-random/expected.html",
    "content": "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-order-random/template.marko",
    "content": "---\n1\n<await(data.getD1())>\n    <@then|d1|>\n        2\n        <await(data.getD2())>\n            <@then|d2|>3</@then>\n        </await>\n        4\n        <await(data.getD3())>\n            <@then|d3|>\n                5\n                <await(data.getD4())>\n                    <@then|d4|>6</@then>\n                </await>\n                7\n            </@then>\n        </await>\n        8\n    </@then>\n</await>\n9\n<await(data.getD5())>\n    <@then|d5|>\n        10\n        <await(data.getD6())>\n            <@then|d6|>11</@then>\n        </await>\n        12\n        <await(data.getD7())>\n            <@then|d7|>13</@then>\n        </await>\n        14\n        <await(data.getD8())>\n            <@then|d8|>15</@then>\n        </await>\n        16\n    </@then>\n</await>\n17\n---"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-order-random/test.js",
    "content": "const { promiseProvider } = require(\"../../../__util__/async-helpers\");\n\nexports.templateData = {\n  getD1: () => promiseProvider(Math.ceil(Math.random() * 10)),\n  getD2: () => promiseProvider(Math.ceil(Math.random() * 10)),\n  getD3: () => promiseProvider(Math.ceil(Math.random() * 10)),\n  getD4: () => promiseProvider(Math.ceil(Math.random() * 10)),\n  getD5: () => promiseProvider(Math.ceil(Math.random() * 10)),\n  getD6: () => promiseProvider(Math.ceil(Math.random() * 10)),\n  getD7: () => promiseProvider(Math.ceil(Math.random() * 10)),\n  getD8: () => promiseProvider(Math.ceil(Math.random() * 10)),\n};\n\nexports.noFlushComment = true;\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-order-random/vdom-expected.html",
    "content": "\"1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-ordering/expected.html",
    "content": "1 <!--FLUSH-->2 <!--FLUSH-->3 4 5 6 7 8 9"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-ordering/template.marko",
    "content": "---\n1\n<await(data.getD1())>\n    <@then|d1|>\n        2\n        <await(data.getD2())>\n            <@then|d2|>3</@then>\n        </await>\n        4\n        <await(data.getD3())>\n            <@then|d3|>5</@then>\n        </await>\n        6\n    </@then>\n</await>\n7\n<await(data.getD4())>\n    <@then|d4|>8</@then>\n</await>\n9\n---"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-ordering/test.js",
    "content": "const { promiseProvider } = require(\"../../../__util__/async-helpers\");\n\nexports.templateData = {\n  getD1: () => promiseProvider(1),\n  getD2: () => promiseProvider(3),\n  getD3: () => promiseProvider(2),\n  getD4: () => promiseProvider(4),\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-ordering/vdom-expected.html",
    "content": "\"1 2 3 4 5 6 7 8 9\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-placeholder/template.marko",
    "content": "---\nBEFORE\n<await(data.testDataProvider) client-reorder>\n    <@then|testData|>Hello ${testData.name}!</@then>\n    <@placeholder>Loading main...</@placeholder>\n</await>\nAFTER <await-reorderer/>\n---"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-placeholder/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nexports.templateData = {\n  testDataProvider: Promise.resolve({ name: \"Frank\" }),\n};\n\nexports.checkHtml = function (html) {\n  expect(html).to.contain(\"Loading main...\");\n  expect(html).to.contain(\"Hello Frank\");\n};\n\nexports.skip_vdom = \"client-reorder/placeholders are not supported in vdom\";\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-promise/expected.html",
    "content": "Test promise"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-promise/template.marko",
    "content": "<await(data.promiseData)>\n    <@then|promiseData|>${promiseData}</@then>\n</await>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-promise/test.js",
    "content": "exports.templateData = {\n  promiseData: Promise.resolve(\"Test promise\"),\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-promise/vdom-expected.html",
    "content": "\"Test promise\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-render-error/expected.html",
    "content": "BEFORE something went wrong!"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-render-error/template.marko",
    "content": "<await(Promise.resolve())>\n    <@then|promiseData|>\n        BEFORE <if(true)>${promiseData.noprop.value}</if> AFTER\n    </@then>\n    <@catch>something went wrong!</@catch>\n</await>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-render-error/test.js",
    "content": "exports.skip_vdom = true;\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-render-error-bluebird/expected.html",
    "content": "BEFORE something went wrong!"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-render-error-bluebird/template.marko",
    "content": "<await(data.promiseData)>\n    <@then|promiseData|>\n        BEFORE <if(true)>${promiseData.noprop.value}</if> AFTER\n    </@then>\n    <@catch>something went wrong!</@catch>\n</await>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-render-error-bluebird/test.js",
    "content": "var deferred = require(\"bluebird\").defer();\nconst { promiseProvider } = require(\"../../../__util__/async-helpers\");\n\npromiseProvider(1).then(() => deferred.resolve({}));\n\nexports.templateData = {\n  promiseData: deferred.promise,\n};\n\nexports.skip_vdom = true;\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-sync/expected.html",
    "content": "Hello John"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-sync/template.marko",
    "content": "<await(data.userInfo)>\n    <@then|userInfo|>Hello ${userInfo.name}</@then>\n</await>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-sync/test.js",
    "content": "exports.templateData = {\n  userInfo: {\n    name: \"John\",\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-sync/vdom-expected.html",
    "content": "\"Hello John\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-timeout/expected-events.json",
    "content": "[\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"userInfo1\",\n            \"clientReorder\": false,\n            \"dataProvider\": {}\n        }\n    },\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"userInfo2\",\n            \"clientReorder\": false,\n            \"dataProvider\": {}\n        }\n    },\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"userInfo3\",\n            \"clientReorder\": false,\n            \"dataProvider\": {}\n        }\n    },\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"userInfo4\",\n            \"clientReorder\": false,\n            \"dataProvider\": {}\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"userInfo1\",\n            \"clientReorder\": false,\n            \"dataProvider\": {},\n            \"error\": {\n                \"code\": \"ERR_AWAIT_TIMEDOUT\",\n                \"name\": \"TimeoutError\"\n            }\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"userInfo1\",\n            \"clientReorder\": false,\n            \"dataProvider\": {},\n            \"error\": {\n                \"code\": \"ERR_AWAIT_TIMEDOUT\",\n                \"name\": \"TimeoutError\"\n            },\n            \"finished\": true\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"userInfo2\",\n            \"clientReorder\": false,\n            \"dataProvider\": {},\n            \"error\": {\n                \"code\": \"ERR_AWAIT_TIMEDOUT\",\n                \"name\": \"TimeoutError\"\n            }\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"userInfo2\",\n            \"clientReorder\": false,\n            \"dataProvider\": {},\n            \"error\": {\n                \"code\": \"ERR_AWAIT_TIMEDOUT\",\n                \"name\": \"TimeoutError\"\n            },\n            \"finished\": true\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"userInfo3\",\n            \"clientReorder\": false,\n            \"dataProvider\": {},\n            \"error\": {\n                \"code\": \"ERR_AWAIT_TIMEDOUT\",\n                \"name\": \"TimeoutError\"\n            }\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"userInfo3\",\n            \"clientReorder\": false,\n            \"dataProvider\": {},\n            \"error\": {\n                \"code\": \"ERR_AWAIT_TIMEDOUT\",\n                \"name\": \"TimeoutError\"\n            },\n            \"finished\": true\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"userInfo4\",\n            \"clientReorder\": false,\n            \"dataProvider\": {},\n            \"error\": {\n                \"code\": \"ERR_AWAIT_TIMEDOUT\",\n                \"name\": \"TimeoutError\"\n            }\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"userInfo4\",\n            \"clientReorder\": false,\n            \"dataProvider\": {},\n            \"error\": {\n                \"code\": \"ERR_AWAIT_TIMEDOUT\",\n                \"name\": \"TimeoutError\"\n            },\n            \"finished\": true\n        }\n    }\n]"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-timeout/expected.html",
    "content": "BEFORE1-A timeout has occurred!2-A timeout has occurred!3-A timeout has occurred!4-A timeout has occurred! AFTER"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-timeout/template.marko",
    "content": "---\nBEFORE<await(data.getUserInfoShort()) timeout=10 name=\"userInfo1\">\n    <@then|user|>1</@then>\n    <@catch|err|>\n        <if(err.name === \"TimeoutError\")>1-A timeout has occurred!</if>\n    </@catch>\n</await>\n<await(data.getUserInfoShort()) timeout=10 name=\"userInfo2\">\n    <@then|user|>2</@then>\n    <@catch|err|>\n        <if(err.name === \"TimeoutError\")>2-A timeout has occurred!</if>\n    </@catch>\n</await>\n<await(data.getUserInfoLong()) timeout=100 name=\"userInfo3\">\n    <@then|user|>3</@then>\n    <@catch|err|>\n        <if(err.name === \"TimeoutError\")>3-A timeout has occurred!</if>\n    </@catch>\n</await>\n<await(data.getUserInfoLong()) timeout=100 name=\"userInfo4\">\n    <@then|user|>4</@then>\n    <@catch|err|>\n        <if(err.name === \"TimeoutError\")>4-A timeout has occurred!</if>\n    </@catch>\n</await>\nAFTER\n---"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-timeout/test.js",
    "content": "var expect = require(\"chai\").expect;\nvar extend = require(\"raptor-util/extend\");\n\nexports.templateData = {\n  getUserInfoShort: () =>\n    new Promise((resolve) => setTimeout(() => resolve({}), 50)),\n  getUserInfoLong: () =>\n    new Promise((resolve) => setTimeout(() => resolve({}), 200)),\n};\n\nexports.checkEvents = function (events, snapshot) {\n  events = events.map(function (eventInfo) {\n    var arg = extend({}, eventInfo.arg);\n    expect(arg.out != null).to.equal(true);\n\n    delete arg.out; // Not serializable\n    delete arg.parent; // Not serializable\n    delete arg.asyncValue; // Not serializable\n\n    return {\n      event: eventInfo.event,\n      arg: arg,\n    };\n  });\n\n  snapshot(events, \"-events.json\");\n};\n\nexports.noFlushComment = true;\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/await-timeout/vdom-expected.html",
    "content": "\"BEFORE1-A timeout has occurred!2-A timeout has occurred!3-A timeout has occurred!4-A timeout has occurred! AFTER\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/beginAsync/expected.html",
    "content": "ABC"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/beginAsync/template.marko",
    "content": "---\nA<${data.beginAsync}/>C\n---"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/beginAsync/test.js",
    "content": "const { promiseProvider } = require(\"../../../__util__/async-helpers\");\n\nexports.templateData = {\n  beginAsync: function (out) {\n    var asyncOut = out.beginAsync();\n    promiseProvider(1).then(function () {\n      asyncOut.write(\"B\");\n      asyncOut.end();\n    });\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/beginAsync/vdom-expected.html",
    "content": "\"ABC\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/body-placeholder-literal/expected.html",
    "content": "A B C"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/body-placeholder-literal/template.marko",
    "content": "-- A ${'B'} C"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/body-placeholder-literal/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/body-placeholder-literal/vdom-expected.html",
    "content": "\"A B C\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/body-placeholder-literal-escaped/expected.html",
    "content": "&lt;div>&lt;/div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/body-placeholder-literal-escaped/template.marko",
    "content": "-- ${\"<div></div>\"}"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/body-placeholder-literal-escaped/test.js",
    "content": "exports.templateData = {\n  myAttrs: {\n    style: \"background-color: #FF0000; <test>\",\n    class: \"my-div\",\n    checked: true,\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/body-placeholder-literal-escaped/vdom-expected.html",
    "content": "\"<div></div>\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/body-placeholder-literal-unescaped/expected.html",
    "content": "<div></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/body-placeholder-literal-unescaped/template.marko",
    "content": "-- $!{\"<div></div>\"}"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/body-placeholder-literal-unescaped/test.js",
    "content": "exports.templateData = {\n  myAttrs: {\n    style: \"background-color: #FF0000; <test>\",\n    class: \"my-div\",\n    checked: true,\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/body-placeholder-literal-unescaped/vdom-expected.html",
    "content": "<DIV>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/body-placeholder-literal-unescaped-escaped/expected.html",
    "content": "&lt;div>&lt;/div> <div></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/body-placeholder-literal-unescaped-escaped/template.marko",
    "content": "-- ${\"<div></div>\"} $!{\"<div></div>\"}"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/body-placeholder-literal-unescaped-escaped/test.js",
    "content": "exports.templateData = {\n  myAttrs: {\n    style: \"background-color: #FF0000; <test>\",\n    class: \"my-div\",\n    checked: true,\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/body-placeholder-literal-unescaped-escaped/vdom-expected.html",
    "content": "\"<div></div> \"\n<DIV>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/body-placeholder-literal2/expected.html",
    "content": "A B C "
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/body-placeholder-literal2/template.marko",
    "content": "---\n  A ${'B'} C  \n---"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/body-placeholder-literal2/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/body-placeholder-literal2/vdom-expected.html",
    "content": "\" A B C \"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/circular-renderer/expected.html",
    "content": "test-circular-renderer-atest-circular-renderer-b"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/circular-renderer/marko.json",
    "content": "{\n  \"tags-dir\": \"./tags\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/circular-renderer/tags/test-circular-renderer-a/renderer.js",
    "content": "var template = require(\"./template.marko\").default;\n\nexports.renderer = function (input, out) {\n  template.render({}, out);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/circular-renderer/tags/test-circular-renderer-a/template.marko",
    "content": "-- test-circular-renderer-a\n<test-circular-renderer-b/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/circular-renderer/tags/test-circular-renderer-b/renderer.js",
    "content": "exports.renderer = function (input, out) {\n  out.write(\"test-circular-renderer-b\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/circular-renderer/tags/test-circular-renderer-b/template.marko",
    "content": "<test-circular-renderer-a/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/circular-renderer/template.marko",
    "content": "<test-circular-renderer-a/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/circular-renderer/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/circular-renderer/vdom-expected.html",
    "content": "\"test-circular-renderer-atest-circular-renderer-b\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/circular-tags-no-write-to-disk/expected.html",
    "content": "<ul><li><b>a</b></li><li><b>b</b><ul><li><b>b1</b></li><li><b>b2</b></li></ul></li></ul>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/circular-tags-no-write-to-disk/marko.json",
    "content": "{ \"tags-dir\": \"./tags/\" }\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/circular-tags-no-write-to-disk/tags/navigation-item/template.marko",
    "content": "<ul>\n    <for|item| of=input.items>\n        <li>\n            <b>${item.label}</b>\n            <if(item.children)>\n                <navigation-item items=item.children/>\n            </if>\n        </li>\n    </for>\n</ul>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/circular-tags-no-write-to-disk/template.marko",
    "content": "<navigation-item items=input.items/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/circular-tags-no-write-to-disk/test.js",
    "content": "exports.templateData = {\n  items: [\n    {\n      label: \"a\",\n    },\n    {\n      label: \"b\",\n      children: [\n        {\n          label: \"b1\",\n        },\n        {\n          label: \"b2\",\n        },\n      ],\n    },\n  ],\n};\n\nexports.writeToDisk = false;\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/circular-tags-no-write-to-disk/vdom-expected.html",
    "content": "<UL>\n  <LI>\n    <B>\n      \"a\"\n  <LI>\n    <B>\n      \"b\"\n    <UL>\n      <LI>\n        <B>\n          \"b1\"\n      <LI>\n        <B>\n          \"b2\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/circular-template/expected.html",
    "content": "test-circular-template-atest-circular-template-b"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/circular-template/marko.json",
    "content": "{\n  \"tags-dir\": \"./tags\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/circular-template/tags/test-circular-template-a/template.marko",
    "content": "-- test-circular-template-a\n<test-circular-template-b/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/circular-template/tags/test-circular-template-b/template.marko",
    "content": "---\ntest-circular-template-b<if(false)>\n    <test-circular-template-a/>\n</if>\n---"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/circular-template/template.marko",
    "content": "<test-circular-template-a/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/circular-template/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/circular-template/vdom-expected.html",
    "content": "\"test-circular-template-atest-circular-template-b\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/class-attr-array/expected.html",
    "content": "<div class=\"a c\"></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/class-attr-array/template.marko",
    "content": "div class=['a', null, 'c']"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/class-attr-array/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/class-attr-array/vdom-expected.html",
    "content": "<DIV class=\"a c\">\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/class-attr-object/expected.html",
    "content": "<div class=\"a c\"></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/class-attr-object/template.marko",
    "content": "div class={a: true, b: false, c: true}"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/class-attr-object/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/class-attr-object/vdom-expected.html",
    "content": "<DIV class=\"a c\">\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/class-attr-shorthand-plus-expression/expected.html",
    "content": "<div class=\"foo baz\"></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/class-attr-shorthand-plus-expression/template.marko",
    "content": "<div.foo class={ bar: false, baz: true }>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/class-attr-shorthand-plus-expression/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/class-attr-shorthand-plus-expression/vdom-expected.html",
    "content": "<DIV class=\"foo baz\">\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/class-attr-string/expected.html",
    "content": "<div class=\"a c\"></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/class-attr-string/template.marko",
    "content": "div class='a c'"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/class-attr-string/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/class-attr-string/vdom-expected.html",
    "content": "<DIV class=\"a c\">\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/comments-preserve-ie-conditional/expected.html",
    "content": "<!--[if lt IE 9]><div></div><![endif]--><!--[if !mso]><!-- --><span></span><!--<![endif]-->"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/comments-preserve-ie-conditional/template.marko",
    "content": "<!--[if lt IE 9]><div></div><![endif]-->\n<!--[if !mso]><!-- -->\n<span></span>\n<!--<![endif]-->"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/comments-preserve-ie-conditional/test.js",
    "content": "exports.templateData = {\n  name: \"World\",\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/comments-preserve-ie-conditional/vdom-expected.html",
    "content": "<SPAN>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/comments-remove/expected.html",
    "content": "Hello World!"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/comments-remove/template.marko",
    "content": "<!--This comment should not be preserved-->\n-- Hello World!\n<!--This comment should not be preserved-->"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/comments-remove/test.js",
    "content": "exports.templateData = {\n  name: \"World\",\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/comments-remove/vdom-expected.html",
    "content": "\"Hello World!\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/component-aria-key/expected.html",
    "content": "<!--M#s0--><div id=s0-buttonDescription>Submit the form thing</div><button aria-described-by=s0-buttonDescription>Submit</button><!--M/-->"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/component-aria-key/template.marko",
    "content": "class {}\n<div id:scoped=\"buttonDescription\">Submit the form thing</div>\n<button aria-described-by:scoped=\"buttonDescription\">Submit</button>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/component-aria-key/test.js",
    "content": "exports.skip_vdom = \"keyed elements are not supported in server-rendered vdom\";\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/component-file-export-class/components/hello/component.js",
    "content": "\"use strict\";\n\nmodule.exports = class {\n  onCreate() {\n    this.state = {\n      name: \"Frank\",\n    };\n  }\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/component-file-export-class/components/hello/index.marko",
    "content": "<div.hello>\n    Hello ${state.name}!\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/component-file-export-class/expected.html",
    "content": "<div><!--M#s0-1--><div class=hello>Hello Frank!</div><!--M/--></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/component-file-export-class/template.marko",
    "content": "<div>\n    <hello/>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/component-file-export-class/test.js",
    "content": "exports.skip_vdom = \"server-rendered vdom comment boundaries are not a concern\";\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/component-inline-style-important/expected.html",
    "content": "<div class=foo-class></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/component-inline-style-important/template.marko",
    "content": "style {\n    .foo-class {\n        height: 50px !important;\n    }\n}\n<div.foo-class/>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/component-inline-style-important/test.js",
    "content": "exports.templateData = {\n  name: \"World\",\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/component-inline-style-important/vdom-expected.html",
    "content": "<DIV class=\"foo-class\">\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/component-label-for/expected.html",
    "content": "<!--M#s0--><label for=s0-submitButton>Submit</label><button id=s0-submitButton>Submit</button><!--M/-->"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/component-label-for/template.marko",
    "content": "class {}\n<label for:scoped=\"submitButton\">Submit</label>\n<button id:scoped=\"submitButton\">Submit</button>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/component-label-for/test.js",
    "content": "exports.skip_vdom = \"keyed elements are not supported in server-rendered vdom\";\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/component-safe-json/expected.html",
    "content": "<!--M#s0--><!DOCTYPE html><html lang=en><body>Hello<script>$MC=(window.$MC||[]).concat({\"l\":1,\"w\":[[\"s0\",0,{\"foo-0\":\"bar\\u2028\",\"foo-1\":\"bar\\u2029\",\"foo-2\":\"\\u2028bar\\u2029\",\"foo-3\":\"Hello \\u003C/script> \\u2028bar\\u2029\"},{\"f\":1}]],\"t\":[\"packages/runtime-class/test/render/fixtures/component-safe-json/template.marko\"]})</script></body></html><!--M/-->"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/component-safe-json/template.marko",
    "content": "class {}\n\n<!DOCTYPE html>\n<html lang=\"en\">\n    <body>\n        Hello\n    </body>\n</html>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/component-safe-json/test.js",
    "content": "exports.templateData = {\n  \"foo-0\": \"bar\\u2028\",\n  \"foo-1\": \"bar\\u2029\",\n  \"foo-2\": \"\\u2028bar\\u2029\",\n  \"foo-3\": \"Hello </script> \\u2028bar\\u2029\",\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/component-safe-json/vdom-expected.html",
    "content": "<HTML lang=\"en\">\n  <BODY>\n    \"Hello\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/components/components/foo/components/bar/index.marko",
    "content": "class {}\n<div>\n  <h1>${input.name}</h1>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/components/components/foo/index.marko",
    "content": "class {}\n\n<div>\n  <h1>${input.name}</h1>\n  <bar key=\"bar1\" name=\"bar1\"/>\n  <bar key=\"bar2\" name=\"bar2\"/>\n\n  <split name=\"foo-split1\"/>\n  <split name=\"foo-split2\"/>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/components/components/split/component-browser.js",
    "content": "module.exports = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/components/components/split/components/split-child/component-browser.js",
    "content": "module.exports = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/components/components/split/components/split-child/index.marko",
    "content": "<div>\n  <h1>${input.name}</h1>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/components/components/split/index.marko",
    "content": "<div>\n  <h1>${input.name}</h1>\n  <split-child key=\"split-child1\" name=\"split-child1\"/>\n  <split-child key=\"split-child2\" name=\"split-child2\"/>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/components/expected.html",
    "content": "<html><head>Components</head><body><!--M#s0-3--><div><h1>foo1</h1><div><h1>bar1</h1></div><div><h1>bar2</h1></div><div><h1>foo-split1</h1><div><h1>split-child1</h1></div><div><h1>split-child2</h1></div></div><div><h1>foo-split2</h1><div><h1>split-child1</h1></div><div><h1>split-child2</h1></div></div></div><!--M/--><!--M#s0-4--><div><h1>foo2</h1><div><h1>bar1</h1></div><div><h1>bar2</h1></div><div><h1>foo-split1</h1><div><h1>split-child1</h1></div><div><h1>split-child2</h1></div></div><div><h1>foo-split2</h1><div><h1>split-child1</h1></div><div><h1>split-child2</h1></div></div></div><!--M/--><!--M#s0-5--><div><h1>split1</h1><!--M^s0-5-@split-child1 s0-5 @split-child1--><div><h1>split-child1</h1></div><!--M/--><!--M^s0-5-@split-child2 s0-5 @split-child2--><div><h1>split-child2</h1></div><!--M/--></div><!--M/--><!--M#s0-6--><div><h1>split2</h1><!--M^s0-6-@split-child1 s0-6 @split-child1--><div><h1>split-child1</h1></div><!--M/--><!--M^s0-6-@split-child2 s0-6 @split-child2--><div><h1>split-child2</h1></div><!--M/--></div><!--M/--><script>$MC=(window.$MC||[]).concat({\"l\":1,\"w\":[[\"s0-3\",0,{\"name\":\"foo1\"},{\"f\":1}],[\"s0-4\",0,{\"name\":\"foo2\"},{\"f\":1}],[\"s0-5\",1,{\"name\":\"split1\"}],[\"s0-5-@split-child1\",2,{\"name\":\"split-child1\"}],[\"s0-5-@split-child2\",2,{\"name\":\"split-child2\"}],[\"s0-6\",1,{\"name\":\"split2\"}],[\"s0-6-@split-child1\",2,{\"name\":\"split-child1\"}],[\"s0-6-@split-child2\",2,{\"name\":\"split-child2\"}]],\"t\":[\"packages/runtime-class/test/render/fixtures/components/components/foo/index.marko\",\"packages/runtime-class/test/render/fixtures/components/components/split/index.marko\",\"packages/runtime-class/test/render/fixtures/components/components/split/components/split-child/index.marko\"]})</script></body></html>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/components/template.marko",
    "content": "<html>\n    <head>Components</head>\n    <body>\n        <foo name=\"foo1\"/>\n        <foo name=\"foo2\"/>\n        <split name=\"split1\"/>\n        <split name=\"split2\"/>\n    </body>\n</html>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/components/test.js",
    "content": "exports.templateData = {\n  name: \"World\",\n};\n\nexports.skip_vdom =\n  \"tests writing out component initialization script - irrelevant for vdom\";\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/components-await/components/hello/index.marko",
    "content": "class {}\n\n<div>Hello ${input.name}</div>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/components-await/expected.html",
    "content": "<html><body><!--FLUSH--><div class=inner><!--FLUSH--><div class=inner-inner><!--M#s0-6--><div>Hello inner-inner</div><!--M/--></div><!--M#s0-7--><div>Hello inner</div><!--M/--></div><!--M#s0-8--><div>Hello outer</div><!--M/--><script>$MC=(window.$MC||[]).concat({\"l\":1,\"w\":[[\"s0-6\",0,{\"name\":\"inner-inner\"},{\"f\":1}],[\"s0-7\",0,{\"name\":\"inner\"},{\"f\":1}],[\"s0-8\",0,{\"name\":\"outer\"},{\"f\":1}]],\"t\":[\"packages/runtime-class/test/render/fixtures/components-await/components/hello/index.marko\"]})</script></body></html>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/components-await/template.marko",
    "content": "import { promiseProvider } from \"../../../__util__/async-helpers\";\n\n<html>\n    <body>\n        <await(promiseProvider(1)) name=\"inner\">\n            <@then|user|>\n                <div.inner>\n                    <await(promiseProvider(1)) name=\"inner-inner\">\n                        <@then|user|>\n                            <div.inner-inner>\n                                <hello name=\"inner-inner\"/>\n                            </div>\n                        </@then>\n                    </await>\n                    <hello name=\"inner\"/>\n                </div>\n            </@then>\n        </await>\n        <hello name=\"outer\"/>\n    </body>\n</html>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/components-await/test.js",
    "content": "exports.skip_vdom =\n  \"the render test runner doesn't handle component initialization\";\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/components-await-beginAsync/components/beginAsync/renderer.js",
    "content": "const { promiseProvider } = require(\"../../../../../__util__/async-helpers\");\n\nmodule.exports = function (input, out) {\n  var asyncOut = out.beginAsync();\n  promiseProvider(1).then(function () {\n    input.renderBody(asyncOut);\n    asyncOut.end();\n  }, 10);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/components-await-beginAsync/components/hello/index.marko",
    "content": "class {}\n\n<div>Hello ${input.name}</div>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/components-await-beginAsync/expected.html",
    "content": "<html><body><!--FLUSH--><div class=inner><div class=inner-inner><!--M#s0-6--><div>Hello inner-inner</div><!--M/--></div><!--M#s0-7--><div>Hello inner</div><!--M/--></div><!--M#s0-8--><div>Hello outer</div><!--M/--><script>$MC=(window.$MC||[]).concat({\"l\":1,\"w\":[[\"s0-7\",0,{\"name\":\"inner\"},{\"f\":1}],[\"s0-6\",0,{\"name\":\"inner-inner\"},{\"f\":1}],[\"s0-8\",0,{\"name\":\"outer\"},{\"f\":1}]],\"t\":[\"packages/runtime-class/test/render/fixtures/components-await-beginAsync/components/hello/index.marko\"]})</script></body></html>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/components-await-beginAsync/template.marko",
    "content": "import { promiseProvider } from \"../../../__util__/async-helpers\";\n\n<html>\n    <body>\n        <await(promiseProvider(1)) name=\"inner\">\n            <@then|user|>\n                <div.inner>\n                    <beginAsync>\n                        <div.inner-inner>\n                            <hello name=\"inner-inner\"/>\n                        </div>\n                    </beginAsync>\n                    <hello name=\"inner\"/>\n                </div>\n            </@then>\n        </await>\n        <hello name=\"outer\"/>\n    </body>\n</html>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/components-await-beginAsync/test.js",
    "content": "exports.skip_vdom =\n  \"tests writing out component initialization script - irrelevant for vdom\";\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/components-await-title/components/hello/index.marko",
    "content": "class {\n\n}\n\n<div>Hello</div>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/components-await-title/expected.html",
    "content": "<html><head><title><!--FLUSH-->Welcome Frank</title></head><body><!--M#s0-0-5-2--><div>Hello</div><!--M/--><script>$MC=(window.$MC||[]).concat({\"l\":1,\"w\":[[\"s0-0-5-2\",0,{},{\"f\":1}]],\"t\":[\"packages/runtime-class/test/render/fixtures/components-await-title/components/hello/index.marko\"]})</script></body></html>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/components-await-title/layout.marko",
    "content": "<html>\n    <head>\n        <title>\n            <if(typeof input.title === \"string\")>${input.title}</if>\n            <else>\n                <${input.title}/>\n            </else>\n        </title>\n    </head>\n    <body>\n        <if(typeof input.body === \"string\")>${input.body}</if>\n        <else>\n            <${input.body}/>\n        </else>\n    </body>\n</html>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/components-await-title/template.marko",
    "content": "import Layout from \"./layout.marko\"\nimport { promiseProvider } from \"../../../__util__/async-helpers\";\n\n$ var userPromise = promiseProvider(1, { name: \"Frank\" });\n\n<${Layout}>\n    <@title>\n        <await(userPromise)>\n            <@then|user|>Welcome ${user.name}</@then>\n        </await>\n    </@title>\n    <@body>\n        <hello/>\n    </@body>\n</>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/components-await-title/test.js",
    "content": "exports.skip_vdom = \"server-rendered vdom comment boundaries are not a concern\";\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/concise/expected.html",
    "content": "<div>Hello Marko<span>Marko</span></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/concise/template.marko",
    "content": "<div>\n    Hello ${input.name}<if(input.name)>\n        <span>${input.name}</span>\n    </if>\n    <else>\n        <p>No name!</p>\n    </else>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/concise/test.js",
    "content": "exports.templateData = {\n  name: \"Marko\",\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/concise/vdom-expected.html",
    "content": "<DIV>\n  \"Hello Marko\"\n  <SPAN>\n    \"Marko\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/concise-verbose/expected.html",
    "content": "<div>Hello Marko<span>Marko</span></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/concise-verbose/template.marko",
    "content": "<div>\n    Hello ${input.name}<if(input.name)>\n        <span>${input.name}</span>\n    </if>\n    <else>\n        <p>No name!</p>\n    </else>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/concise-verbose/test.js",
    "content": "exports.templateData = {\n  name: \"Marko\",\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/concise-verbose/vdom-expected.html",
    "content": "<DIV>\n  \"Hello Marko\"\n  <SPAN>\n    \"Marko\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/conditional-attributes/expected.html",
    "content": "<div></div><div class=some-class></div><div></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/conditional-attributes/template.marko",
    "content": "<div class=( false ? 'some-class' : undefined )></div>\n<div class=( true ? 'some-class' : false )></div>\n<div class=input.name></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/conditional-attributes/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/conditional-attributes/vdom-expected.html",
    "content": "<DIV>\n<DIV class=\"some-class\">\n<DIV>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag/expected.html",
    "content": "Hello World!"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag/marko.json",
    "content": "{\n  \"tags-dir\": \"./tags\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag/tags/test-hello/marko-tag.json",
    "content": "{\n  \"renderer\": \"./renderer.js\",\n  \"@name\": \"string\",\n  \"@adult\": \"boolean\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag/tags/test-hello/renderer.js",
    "content": "exports.render = function (input, out) {\n  out.write(\"Hello \" + input.name + \"!\");\n  if (input.adult === true) {\n    out.write(\" (adult)\");\n  } else if (input.adult === false) {\n    out.write(\" (child)\");\n  }\n\n  if (input.renderBody) {\n    out.write(\" BODY: \");\n    input.renderBody(out);\n  }\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag/template.marko",
    "content": "<test-hello name=\"World\"/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag/vdom-expected.html",
    "content": "\"Hello World!\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-as-template/expected.html",
    "content": "Hello Frank!"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-as-template/marko.json",
    "content": "{\n  \"tags-dir\": \"./tags\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-as-template/tags/test-template-as-tag/marko-tag.json",
    "content": "{\n  \"template\": \"./template.marko\",\n  \"@name\": \"string\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-as-template/tags/test-template-as-tag/template.marko",
    "content": "---\nHello ${input.name}!\n---"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-as-template/template.marko",
    "content": "<test-template-as-tag name=\"Frank\"/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-as-template/test.js",
    "content": "exports.templateData = {\n  title: \"My Page Title\",\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-as-template/vdom-expected.html",
    "content": "\"Hello Frank!\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-autodiscover/components/test-hello/template.marko",
    "content": "<div>test-hello</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-autodiscover/expected.html",
    "content": "<div>test-hello</div>test-home-renderer<div>HOME</div><div>test-home</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-autodiscover/marko.json",
    "content": "{\n  \"<test-home>\": {\n    \"renderer\": \"./test-home-renderer\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-autodiscover/pages/home/components/test-home/template.marko",
    "content": "<div>test-home</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-autodiscover/pages/home/template.marko",
    "content": "<div>HOME</div>\n<test-home/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-autodiscover/template.marko",
    "content": "import Template from \"./pages/home/template.marko\"\n\n<test-hello/>\n<test-home/>\n<${Template}/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-autodiscover/test-home-renderer.js",
    "content": "module.exports = (input, out) => {\n  out.write(\"test-home-renderer\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-autodiscover/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-autodiscover/vdom-expected.html",
    "content": "<DIV>\n  \"test-hello\"\n\"test-home-renderer\"\n<DIV>\n  \"HOME\"\n<DIV>\n  \"test-home\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-autodiscover-repeated-names/components/test-hello/test-hello.marko",
    "content": "<div>test-hello</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-autodiscover-repeated-names/expected.html",
    "content": "<div>test-hello</div>test-home-renderer<div>HOME</div><div>test-home</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-autodiscover-repeated-names/marko.json",
    "content": "{\n  \"<test-home>\": {\n    \"renderer\": \"./test-home-renderer\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-autodiscover-repeated-names/pages/home/components/test-home/test-home.marko",
    "content": "<div>test-home</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-autodiscover-repeated-names/pages/home/home.marko",
    "content": "<div>HOME</div>\n<test-home/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-autodiscover-repeated-names/template.marko",
    "content": "import Home from \"./pages/home/home.marko\"\n\n<test-hello/>\n<test-home/>\n<${Home}/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-autodiscover-repeated-names/test-home-renderer.js",
    "content": "module.exports = (input, out) => {\n  out.write(\"test-home-renderer\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-autodiscover-repeated-names/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-autodiscover-repeated-names/vdom-expected.html",
    "content": "<DIV>\n  \"test-hello\"\n\"test-home-renderer\"\n<DIV>\n  \"HOME\"\n<DIV>\n  \"test-home\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-body/expected.html",
    "content": "Hello World! BODY: Body content"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-body/marko.json",
    "content": "{\n  \"tags-dir\": \"./tags\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-body/tags/test-hello/marko-tag.json",
    "content": "{\n  \"renderer\": \"./renderer.js\",\n  \"@name\": \"string\",\n  \"@adult\": \"boolean\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-body/tags/test-hello/renderer.js",
    "content": "exports.render = function (input, out) {\n  out.write(\"Hello \" + input.name + \"!\");\n  if (input.adult === true) {\n    out.write(\" (adult)\");\n  } else if (input.adult === false) {\n    out.write(\" (child)\");\n  }\n\n  if (input.renderBody) {\n    out.write(\" BODY: \");\n    input.renderBody(out);\n  }\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-body/template.marko",
    "content": "<test-hello name=\"World\">\n    Body content\n</test-hello>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-body/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-body/vdom-expected.html",
    "content": "\"Hello World! BODY: Body content\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-components-file/components/bye.marko",
    "content": "<div>Bye ${input.name}!</div>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-components-file/components/hello.marko",
    "content": "<div>Hello ${input.name}!</div>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-components-file/expected.html",
    "content": "<div>Hello Frank!</div><div>Bye Frank!</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-components-file/template.marko",
    "content": "<hello name=\"Frank\"/>\n<bye name=\"Frank\"/>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-components-file/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-components-file/vdom-expected.html",
    "content": "<DIV>\n  \"Hello Frank!\"\n<DIV>\n  \"Bye Frank!\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-data-placeholders/expected.html",
    "content": "<ul><li>Hello <World>!</li><li>Hello <Frank>! (adult)</li><li>Hello Foo <Frank>! (child)</li></ul>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-data-placeholders/marko.json",
    "content": "{\n  \"tags-dir\": \"./tags\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-data-placeholders/tags/test-hello/marko-tag.json",
    "content": "{\n  \"renderer\": \"./renderer.js\",\n  \"@name\": \"string\",\n  \"@adult\": \"boolean\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-data-placeholders/tags/test-hello/renderer.js",
    "content": "exports.render = function (input, out) {\n  var text = \"Hello \" + input.name + \"!\";\n\n  if (input.adult === true) {\n    text += \" (adult)\";\n  } else if (input.adult === false) {\n    text += \" (child)\";\n  }\n\n  if (input.renderBody) {\n    text += \" BODY: \";\n  }\n\n  if (out.write) {\n    out.write(text);\n  } else {\n    out.text(text);\n  }\n\n  if (input.renderBody) {\n    input.renderBody(out);\n  }\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-data-placeholders/template.marko",
    "content": "$ var dynamic = \"<Frank>\";\n<ul>\n    <li>\n        <test-hello name=\"<World>\"/>\n    </li>\n    <li>\n        <test-hello name=dynamic adult=true/>\n    </li>\n    <li>\n        <test-hello name=`Foo ${dynamic}` adult=false/>\n    </li>\n</ul>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-data-placeholders/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-data-placeholders/vdom-expected.html",
    "content": "<UL>\n  <LI>\n    \"Hello \"\n    <WORLD>\n      \"!\"\n  <LI>\n    \"Hello \"\n    <FRANK>\n      \"! (adult)\"\n  <LI>\n    \"Hello Foo \"\n    <FRANK>\n      \"! (child)\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-hyphen-attrs/custom-tag.js",
    "content": "module.exports = function renderer(input, out) {\n  out.write(\"Hello \" + input.firstName);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-hyphen-attrs/expected.html",
    "content": "Hello Frank"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-hyphen-attrs/marko.json",
    "content": "{\n  \"<custom-tag>\": {\n    \"renderer\": \"./custom-tag.js\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-hyphen-attrs/template.marko",
    "content": "<custom-tag first-name=\"Frank\"/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-hyphen-attrs/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-hyphen-attrs/vdom-expected.html",
    "content": "\"Hello Frank\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-open-tag-only/expected.html",
    "content": "Hello Frank!\nHello John!\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-open-tag-only/marko.json",
    "content": "{\n  \"<open-tag-only>\": {\n    \"renderer\": \"./open-tag-only-tag.js\",\n    \"parse-options\": {\n      \"openTagOnly\": true\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-open-tag-only/open-tag-only-tag.js",
    "content": "module.exports = function (input, out) {\n  out.write(\"Hello \" + input.name + \"!\\n\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-open-tag-only/template.marko",
    "content": "<open-tag-only name=\"Frank\">\n<open-tag-only name=\"John\" />"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-open-tag-only/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-open-tag-only/vdom-expected.html",
    "content": "\"Hello Frank!\\nHello John!\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-target-property/expected.html",
    "content": "Hello World!"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-target-property/marko.json",
    "content": "{\n  \"tags-dir\": \"./tags\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-target-property/tags/test-target-property/marko-tag.json",
    "content": "{\n  \"renderer\": \"./renderer\",\n  \"@name-foo\": {\n    \"target-property\": \"name\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-target-property/tags/test-target-property/renderer.js",
    "content": "module.exports = function simple(input, out) {\n  out.write(\"Hello \" + input.name + \"!\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-target-property/template.marko",
    "content": "<test-target-property name-foo=\"World\"/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-target-property/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-target-property/vdom-expected.html",
    "content": "\"Hello World!\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-template-index/expected.html",
    "content": "Hello Frank!"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-template-index/marko.json",
    "content": "{\n  \"tags-dir\": \"./tags\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-template-index/tags/test-tag/index.marko",
    "content": "---\nHello ${input.name}!\n---"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-template-index/template.marko",
    "content": "<test-tag name=\"Frank\"/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-template-index/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-template-index/vdom-expected.html",
    "content": "\"Hello Frank!\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-with-directives/expected.html",
    "content": "Hello red!Hello green!Hello blue!"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-with-directives/marko.json",
    "content": "{\n  \"tags-dir\": \"./tags\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-with-directives/tags/test-hello/marko-tag.json",
    "content": "{\n  \"renderer\": \"./renderer.js\",\n  \"@name\": \"string\",\n  \"@adult\": \"boolean\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-with-directives/tags/test-hello/renderer.js",
    "content": "exports.render = function (input, out) {\n  out.write(\"Hello \" + input.name + \"!\");\n  if (input.adult === true) {\n    out.write(\" (adult)\");\n  } else if (input.adult === false) {\n    out.write(\" (child)\");\n  }\n\n  if (input.renderBody) {\n    out.write(\" BODY: \");\n    input.renderBody(out);\n  }\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-with-directives/template.marko",
    "content": "<if(true)>\n    <for|color| of=[\"red\", \"green\", \"blue\"]>\n        <test-hello name=color/>\n    </for>\n</if>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-with-directives/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/custom-tag-with-directives/vdom-expected.html",
    "content": "\"Hello red!Hello green!Hello blue!\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/data/expected.html",
    "content": "Hello Frank! data===input ? true"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/data/template.marko",
    "content": "-- Hello ${data.name}! data===input ? ${data === input}"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/data/test.js",
    "content": "exports.templateData = {\n  name: \"Frank\",\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/data/vdom-expected.html",
    "content": "\"Hello Frank! data===input ? true\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/declaration/expected.html",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\" ?>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/declaration/template.marko",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\" ?>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/declaration/test.js",
    "content": "exports.templateData = {};\nexports.skip_vdom = \"declarations are not supported in vdom\";\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/default-attributes/expected.html",
    "content": "[foo,50,Default1,100][foo,50,bar,100]"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/default-attributes/marko.json",
    "content": "{\n  \"tags-dir\": \"./tags\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/default-attributes/tags/test-default-attributes/marko-tag.json",
    "content": "{\n  \"renderer\": \"./renderer.js\",\n  \"@prop1\": \"string\",\n  \"@prop2\": \"integer\",\n  \"@default1\": {\n    \"type\": \"string\",\n    \"default-value\": \"Default1\"\n  },\n  \"@default2\": {\n    \"type\": \"integer\",\n    \"default-value\": 100\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/default-attributes/tags/test-default-attributes/renderer.js",
    "content": "exports.render = function (input, out) {\n  out.write(\n    \"[\" +\n      [input.prop1, input.prop2, input.default1, input.default2].join(\",\") +\n      \"]\",\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/default-attributes/template.marko",
    "content": "<test-default-attributes prop1=\"foo\" prop2=\"50\"/>\n<test-default-attributes prop1=\"foo\" prop2=\"50\" default1=\"bar\"/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/default-attributes/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/default-attributes/vdom-expected.html",
    "content": "\"[foo,50,Default1,100][foo,50,bar,100]\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/div-self-closed/expected.html",
    "content": "<div class=foo></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/div-self-closed/template.marko",
    "content": "<div class=\"foo\"/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/div-self-closed/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/div-self-closed/vdom-expected.html",
    "content": "<DIV class=\"foo\">\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/doctype/expected.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\"><!DOCTYPE html><html lang=en-us><head><title>DOCTYPE Test</title></head><body></body></html>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/doctype/template.marko",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<!DOCTYPE html>\n<html lang=\"en-us\">\n\n<head>\n    <title>DOCTYPE Test</title>\n</head>\n\n<body></body>\n\n</html>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/doctype/vdom-expected.html",
    "content": "<HTML lang=\"en-us\">\n  <HEAD>\n    <TITLE>\n      \"DOCTYPE Test\"\n  <BODY>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dtd/expected.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0//EN\">"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dtd/template.marko",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0//EN\">"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dtd/vdom-expected.html",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-attributes/expected.html",
    "content": "test: Hello|dynamic attributes: [class=my-class, id=myId]"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-attributes/marko.json",
    "content": "{\n  \"tags-dir\": \"./tags\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-attributes/tags/test-dynamic-attributes/marko-tag.json",
    "content": "{\n  \"renderer\": \"./renderer.js\",\n  \"@test\": \"string\",\n  \"@*\": {\n    \"type\": \"string\",\n    \"target-property\": \"dynamicAttributes\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-attributes/tags/test-dynamic-attributes/renderer.js",
    "content": "exports.render = function (input, out) {\n  out.write(\"test: \" + input.test + \"|\");\n  var dynamicAttributes = input.dynamicAttributes;\n\n  if (dynamicAttributes) {\n    var keys = Object.keys(dynamicAttributes).sort();\n    var entries = keys.map(function (key) {\n      return key + \"=\" + dynamicAttributes[key];\n    });\n    out.write(\"dynamic attributes: [\" + entries.join(\", \") + \"]\");\n  } else {\n    out.write(\"dynamic attributes: []\");\n  }\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-attributes/template.marko",
    "content": "<test-dynamic-attributes test=\"Hello\" class=\"my-class\" id=\"myId\"/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-attributes/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-attributes/vdom-expected.html",
    "content": "\"test: Hello|dynamic attributes: [class=my-class, id=myId]\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-attributes3/expected.html",
    "content": "test: World|all attributes: [class=my-class, id=myId, test=World]"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-attributes3/marko.json",
    "content": "{\n  \"tags-dir\": \"./tags\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-attributes3/tags/test-dynamic-attributes3/marko-tag.json",
    "content": "{\n  \"renderer\": \"./renderer.js\",\n  \"@test\": \"string\",\n  \"@*\": {\n    \"type\": \"string\",\n    \"target-property\": null\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-attributes3/tags/test-dynamic-attributes3/renderer.js",
    "content": "exports.render = function (input, out) {\n  out.write(\"test: \" + input.test + \"|\");\n\n  var keys = Object.keys(input).sort();\n  var entries = keys.map(function (key) {\n    return key + \"=\" + input[key];\n  });\n  out.write(\"all attributes: [\" + entries.join(\", \") + \"]\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-attributes3/template.marko",
    "content": "<test-dynamic-attributes3 test=\"World\" class=\"my-class\" id=\"myId\"/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-attributes3/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-attributes3/vdom-expected.html",
    "content": "\"test: World|all attributes: [class=my-class, id=myId, test=World]\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-split-component/components/dynamic-non-split/index.marko",
    "content": "class {\n    onMount() {\n        window.cls = this;\n    }\n}\n\n<${true ? \"div\": null} key=\"test\">\n    Body data\n</>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-split-component/components/dynamic-non-split-no-body/index.marko",
    "content": "class {\n    onMount() {\n        window.cls = this;\n    }\n}\n\n<${true ? \"div\": null} key=\"test\">\n</>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-split-component/components/dynamic-split/component-browser.js",
    "content": "module.exports = class {\n  onMount() {\n    window.cls = this;\n  }\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-split-component/components/dynamic-split/index.marko",
    "content": "<${true ? \"div\": null} key=\"test\">\n    Body data\n</>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-split-component/components/dynamic-split-no-body/component-browser.js",
    "content": "module.exports = class {\n  onMount() {\n    window.cls = this;\n  }\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-split-component/components/dynamic-split-no-body/index.marko",
    "content": "<${true ? \"div\": null} key=\"test\">\n</>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-split-component/expected.html",
    "content": "<!--M#s0-0--><div data-marko-key=\"@test s0-0\">Body data</div><!--M/--><!--M#s0-1--><div>Body data</div><!--M/--><!--M#s0-2--><div data-marko-key=\"@test s0-2\"></div><!--M/--><!--M#s0-3--><div></div><!--M/-->"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-split-component/template.marko",
    "content": "<dynamic-split/>\n<dynamic-non-split/>\n<dynamic-split-no-body/>\n<dynamic-non-split-no-body/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-split-component/test.js",
    "content": "exports.skip_vdom =\n  \"data-marko-key is not rendered in the vdom only runtime render\";\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-tag-arguments/components/layout.marko",
    "content": "<${input.renderBody}(\"testPage\", \"http://ebay.com\") style=\"color:green\"/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-tag-arguments/expected.html",
    "content": "testPage http://ebay.com<div style=color:green></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-tag-arguments/template.marko",
    "content": "<layout|pageName, href, attrs|>\n    ${pageName} ${href}\n    <div ...attrs/>\n</layout>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-tag-arguments/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-tag-arguments/vdom-expected.html",
    "content": "\"testPage http://ebay.com\"\n<DIV style=\"color:green\">\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-tag-dashed-attributes/dynamic.marko",
    "content": "-- ${input.myMessage}"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-tag-dashed-attributes/expected.html",
    "content": "<tag my-message=\"hello world\"></tag>hello world"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-tag-dashed-attributes/template.marko",
    "content": "import template from \"./dynamic.marko\";\n$ const tagName = \"tag\";\n<${tagName} my-message=\"hello world\"/>\n<${template} my-message=\"hello world\"/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-tag-dashed-attributes/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-tag-dashed-attributes/vdom-expected.html",
    "content": "<TAG my-message=\"hello world\">\n\"hello world\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-tag-layout/components/layout.marko",
    "content": "<if(input.showHeader !== false)>\n    <h1>\n        <if(input.header)>\n            <${input.header}/>\n        </if>\n        <else>DEFAULT TITLE</else>\n    </h1>\n</if>\n<div>\n    <${input.body}/>\n</div>\n<${input.footer}/>\n<${input.empty}/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-tag-layout/expected.html",
    "content": "<div>BODY CONTENT</div>FOOTER CONTENT<h1>HEADER CONTENT</h1><div>BODY CONTENT</div>FOOTER CONTENT<h1>VALUE HEADER</h1><div>BODY CONTENT</div>FOOTER CONTENT<h1>DEFAULT TITLE</h1><div>BODY CONTENT</div>FOOTER CONTENT"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-tag-layout/template.marko",
    "content": "<layout show-header=false>\n    <@body>BODY CONTENT</@body>\n    <@footer>FOOTER CONTENT</@footer>\n</layout>\n<layout show-header=true>\n    <@header>HEADER CONTENT</@header>\n    <@body>BODY CONTENT</@body>\n    <@footer>FOOTER CONTENT</@footer>\n</layout>\n<layout show-header=true>\n    <@header>VALUE HEADER</@header>\n    <@body>BODY CONTENT</@body>\n    <@footer>FOOTER CONTENT</@footer>\n</layout>\n<${input.layoutDynamic} show-header=true>\n    <@body>BODY CONTENT</@body>\n    <@footer>FOOTER CONTENT</@footer>\n</>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-tag-layout/test.js",
    "content": "exports.templateData = {\n  get layoutDynamic() { return require(\"./components/layout.marko\") },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-tag-layout/vdom-expected.html",
    "content": "<DIV>\n  \"BODY CONTENT\"\n\"FOOTER CONTENT\"\n<H1>\n  \"HEADER CONTENT\"\n<DIV>\n  \"BODY CONTENT\"\n\"FOOTER CONTENT\"\n<H1>\n  \"VALUE HEADER\"\n<DIV>\n  \"BODY CONTENT\"\n\"FOOTER CONTENT\"\n<H1>\n  \"DEFAULT TITLE\"\n<DIV>\n  \"BODY CONTENT\"\n\"FOOTER CONTENT\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-tag-lazy-attributes/expected.html",
    "content": "My nested content<a data-index=0></a><a data-index=1></a><div>2</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-tag-lazy-attributes/template.marko",
    "content": "$ var i = 0;\n$ var tag = null;\n<${tag} data-index=i++/>\n<${tag} data-index=i++>My nested content</>\n<${!tag && \"a\"} data-index=i++/>\n<${!tag && \"a\"} data-index=i++/>\n\n<div>${i}</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-tag-lazy-attributes/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-tag-lazy-attributes/vdom-expected.html",
    "content": "\"My nested content\"\n<A data-index=\"0\">\n<A data-index=\"1\">\n<DIV>\n  \"2\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-tag-name/expected.html",
    "content": "<foo class=my-class foo=bar>My nested content</foo><world class=my-class foo=bar></world>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-tag-name/template.marko",
    "content": "<${input.foo ? 'foo' : 'bar'} class=\"my-class\" foo=\"bar\">\n    My nested content\n</>\n\n<${input.myTagName} class=\"my-class\" foo=\"bar\"/>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-tag-name/test.js",
    "content": "exports.templateData = {\n  myTagName: \"world\",\n  foo: true,\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-tag-name/vdom-expected.html",
    "content": "<FOO class=\"my-class\" foo=\"bar\">\n  \"My nested content\"\n<WORLD class=\"my-class\" foo=\"bar\">\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-tag-name-concise/expected.html",
    "content": "<foo class=my-class foo=bar>My nested content</foo>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-tag-name-concise/template.marko",
    "content": "${input.foo ? 'foo' : 'bar'} class=\"my-class\" foo=\"bar\"\n    -- My nested content"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-tag-name-concise/test.js",
    "content": "exports.templateData = {\n  myTagName: \"world\",\n  foo: true,\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-tag-name-concise/vdom-expected.html",
    "content": "<FOO class=\"my-class\" foo=\"bar\">\n  \"My nested content\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-tag-object-class-style/expected.html",
    "content": "<hello-world class=\"foo bar\" style=color:blue>My nested content</hello-world>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-tag-object-class-style/template.marko",
    "content": "<${input.myTagName} class=[\"foo\", { bar:true, baz:false }] style={ color:\"blue\" }>\n    My nested content\n</>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-tag-object-class-style/test.js",
    "content": "exports.templateData = {\n  myTagName: \"hello-world\",\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-tag-object-class-style/vdom-expected.html",
    "content": "<HELLO-WORLD class=\"foo bar\" style=\"color:blue\">\n  \"My nested content\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-tag-template/dynamic-target.marko",
    "content": "-- Hello ${input.name}! You have ${input.count} new messages."
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-tag-template/expected.html",
    "content": "Hello Frank! You have 20 new messages."
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-tag-template/template.marko",
    "content": "import target from \"./dynamic-target.marko\";\n\n<${target} name='Frank' count=20/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-tag-template/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/dynamic-tag-template/vdom-expected.html",
    "content": "\"Hello Frank! You have 20 new messages.\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/empty-close-tag/expected.html",
    "content": "<p><span><a>Hello Frank!</a></span></p>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/empty-close-tag/template.marko",
    "content": "p\n    <span>\n        <a>\n            Hello ${input.name}!\n        </>\n    </>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/empty-close-tag/test.js",
    "content": "exports.templateData = {\n  name: \"Frank\",\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/empty-close-tag/vdom-expected.html",
    "content": "<P>\n  <SPAN>\n    <A>\n      \"Hello Frank!\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/entities/expected.html",
    "content": "<div data-attr=\"Hello &#34;John&#34; <foo>\">Hello &lt;John&gt;©</div>&copy;"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/entities/template.marko",
    "content": "<div data-attr=\"Hello \\\"John\\\" <foo>\">\n    Hello &lt;John&gt;©\n</div>\n-- &copy;"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/entities/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/entities/vdom-expected.html",
    "content": "<DIV data-attr=\"Hello \"John\" <foo>\">\n  \"Hello <John>©\"\n\"©\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/escape-at-tag/components/child/index.marko",
    "content": "<div class=\"child\">\n  <${input.content}/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/escape-at-tag/expected.html",
    "content": "<div class=child>Child Content</div><missing><at_content>Child Content</at_content></missing>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/escape-at-tag/template.marko",
    "content": "<child>\n  <@content>Child Content</@content>\n</child>\n\n<missing>\n  <@content>Child Content</@content>\n</missing>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/escape-at-tag/test.js",
    "content": "exports.templateData = {};\nexports.ignoreUnrecognizedTags = true;\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/escape-at-tag/vdom-expected.html",
    "content": "<DIV class=\"child\">\n  \"Child Content\"\n<MISSING>\n  <AT_CONTENT>\n    \"Child Content\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/escape-script/expected.html",
    "content": "<script>\n    var foo = {\"name\":\"Evil \\x3C/script>\"};\n</script><pre>{\"name\":\"Evil &lt;/script>\"}</pre>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/escape-script/template.marko",
    "content": "<script>\n    var foo = ${JSON.stringify(input.foo)};\n</script>\n<pre>${JSON.stringify(input.foo)}</pre>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/escape-script/test.js",
    "content": "exports.templateData = {\n  foo: {\n    name: \"Evil </script>\",\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/escape-script/vdom-expected.html",
    "content": "<SCRIPT>\n  \"\\n    var foo = {\\\"name\\\":\\\"Evil </script>\\\"};\\n\"\n<PRE>\n  \"{\\\"name\\\":\\\"Evil </script>\\\"}\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/escape-style/expected.html",
    "content": "<style>\n    #foo {\n        background-color:\\3C/style><script>alert(\"evil\");</script>;\n    }\n</style>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/escape-style/template.marko",
    "content": "<style>\n    #foo {\n        background-color:${input.color};\n    }\n</style>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/escape-style/test.js",
    "content": "exports.templateData = {\n  color: '</style><script>alert(\"evil\");</script>',\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/escape-style/vdom-expected.html",
    "content": "<STYLE>\n  \"\\n    #foo {\\n        background-color:</style><script>alert(\\\"evil\\\");</script>;\\n    }\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/escaped-dollar/expected.html",
    "content": "VV {1} XX \\{1} YY ${1} ZZ \\1"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/escaped-dollar/template.marko",
    "content": "---\nVV {1} <!-- {1} -->\nXX \\{1}\nYY \\${1}  <!-- ${1} -->\nZZ \\\\${1}\n---"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/escaped-dollar/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/escaped-dollar/vdom-expected.html",
    "content": "\"VV {1} XX \\\\{1} YY ${1} ZZ \\\\1\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/flush-here-and-after-async-after/expected.html",
    "content": "<h1>Before</h1>Flush 1<h1>After 1</h1><!--FLUSH-->Flush 2<h1>After 2</h1><h1>After 3</h1><!--FLUSH-->Flush 3<h1>After 4</h1>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/flush-here-and-after-async-after/template.marko",
    "content": "<h1>Before</h1>\n$ let count = 0;\n<__flush_here_and_after__>\n    Flush ${++count}\n</__flush_here_and_after__>\n<h1>After 1</h1>\n<await(input.wait(20))>\n    <@then>\n        <h1>After 2</h1>\n    </@then>\n</await>\n<h1>After 3</h1>\n<await(input.wait(40))>\n    <@then>\n        <h1>After 4</h1>\n    </@then>\n</await>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/flush-here-and-after-async-after/test.js",
    "content": "exports.templateData = {\n  wait: (timeout) => new Promise((resolve) => setTimeout(resolve, timeout)),\n};\n\nexports.skip_vdom = true;\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/flush-here-and-after-async-after/vdom-expected.html",
    "content": "<H1>\n  \"Before\"\n<H1>\n  \"After 1\"\n<H1>\n  \"After 2\"\n<H1>\n  \"After 3\"\n<H1>\n  \"After 4\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/flush-here-and-after-async-before/expected.html",
    "content": "<h1>Before 1</h1><h1>Before 2</h1><!--FLUSH--><h1>Before 3</h1><h1>Before 4</h1>Flush 1<h1>After</h1>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/flush-here-and-after-async-before/template.marko",
    "content": "<await(input.wait(10))>\n    <@then>\n        <h1>Before 1</h1>\n    </@then>\n</await>\n<h1>Before 2</h1>\n<await(input.wait(20))>\n    <@then>\n        <h1>Before 3</h1>\n    </@then>\n</await>\n<h1>Before 4</h1>\n$ let count = 0;\n<__flush_here_and_after__>\n    Flush ${++count}\n</__flush_here_and_after__>\n<h1>After</h1>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/flush-here-and-after-async-before/test.js",
    "content": "exports.templateData = {\n  wait: (timeout) => new Promise((resolve) => setTimeout(resolve, timeout)),\n};\n\nexports.skip_vdom = true;\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/flush-here-and-after-async-before/vdom-expected.html",
    "content": "<H1>\n  \"Before 1\"\n<H1>\n  \"Before 2\"\n<H1>\n  \"Before 3\"\n<H1>\n  \"Before 4\"\n<H1>\n  \"After\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/flush-here-and-after-async-reverse/expected.html",
    "content": "<h1>Before 1</h1><h1>Before 2</h1><h1>Before 3</h1><h1>Before 4</h1>Flush 1<h1>After 1</h1><h1>After 2</h1><h1>After 3</h1><h1>After 4</h1>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/flush-here-and-after-async-reverse/template.marko",
    "content": "<await(input.wait(40))>\n    <@then>\n        <h1>Before 1</h1>\n    </@then>\n</await>\n<h1>Before 2</h1>\n<await(input.wait(30))>\n    <@then>\n        <h1>Before 3</h1>\n    </@then>\n</await>\n<h1>Before 4</h1>\n$ let count = 0;\n<__flush_here_and_after__>\n    Flush ${++count}\n</__flush_here_and_after__>\n<h1>After 1</h1>\n<await(input.wait(20))>\n    <@then>\n        <h1>After 2</h1>\n    </@then>\n</await>\n<h1>After 3</h1>\n<await(input.wait(10))>\n    <@then>\n        <h1>After 4</h1>\n    </@then>\n</await>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/flush-here-and-after-async-reverse/test.js",
    "content": "exports.templateData = {\n  wait: (timeout) => new Promise((resolve) => setTimeout(resolve, timeout)),\n};\n\nexports.skip_vdom = true;\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/flush-here-and-after-async-reverse/vdom-expected.html",
    "content": "<H1>\n  \"Before 1\"\n<H1>\n  \"Before 2\"\n<H1>\n  \"Before 3\"\n<H1>\n  \"Before 4\"\n<H1>\n  \"After 1\"\n<H1>\n  \"After 2\"\n<H1>\n  \"After 3\"\n<H1>\n  \"After 4\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/flush-here-and-after-sync/expected.html",
    "content": "<h1>Before</h1>Flush 1<h1>After</h1>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/flush-here-and-after-sync/template.marko",
    "content": "<h1>Before</h1>\n$ let count = 0;\n<__flush_here_and_after__>\n    Flush ${++count}\n</__flush_here_and_after__>\n<h1>After</h1>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/flush-here-and-after-sync/test.js",
    "content": "exports.templateData = {};\nexports.sync = true;\nexports.skip_vdom = true;\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/flush-here-and-after-sync/vdom-expected.html",
    "content": "<H1>\n  \"Before\"\n<H1>\n  \"After\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/flush-here-and-after-with-body/components/child.marko",
    "content": "class {\n\n}\n\n<div>Child ${input.x}</div>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/flush-here-and-after-with-body/expected.html",
    "content": "<!DOCTYPE html><html lang=en><head><title>Test</title></head><body><h1>Before</h1>Flush 1<h1>After 1</h1><!--FLUSH-->Flush 2<!--M#s0-8--><div>Child 1</div><!--M/--><h1>After 3</h1><script>$MC=(window.$MC||[]).concat({\"w\":[[\"s0-8\",0,{\"x\":1},{\"f\":1}]],\"t\":[\"packages/runtime-class/test/render/fixtures/flush-here-and-after-with-body/components/child.marko\"]})</script><!--FLUSH-->Flush 4Flush 3<!--M#s0-11--><div>Child 2</div><!--M/--> <script>$MC=(window.$MC||[]).concat({\"l\":1,\"w\":[[\"s0-11\",0,{\"x\":2},{\"f\":1}]]})</script></body></html>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/flush-here-and-after-with-body/template.marko",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <title>Test</title>\n</head>\n<body>\n    <h1>Before</h1>\n    $ let count = 0;\n    <__flush_here_and_after__>\n        Flush ${++count}\n    </__flush_here_and_after__>\n    <h1>After 1</h1>\n    <await(input.wait(20))>\n        <@then>\n            <child x=1/>\n        </@then>\n    </await>\n    <h1>After 3</h1>\n    <await(input.wait(40))>\n        <@then>\n            <child x=2/>\n        </@then>\n    </await>  \n</body>\n</html>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/flush-here-and-after-with-body/test.js",
    "content": "exports.templateData = {\n  wait: (timeout) => new Promise((resolve) => setTimeout(resolve, timeout)),\n};\n\nexports.skip_vdom = true;\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/flush-here-and-after-with-body/vdom-expected.html",
    "content": "<HTML lang=\"en\">\n  <HEAD>\n    <TITLE>\n      \"Test\"\n  <BODY>\n    <H1>\n      \"Before\"\n    <H1>\n      \"After 1\"\n    <DIV>\n      \"Child 1\"\n    <H1>\n      \"After 3\"\n    <DIV>\n      \"Child 2\"\n    \" \"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-array-index/expected.html",
    "content": "0) red1) green2) blue"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-array-index/template.marko",
    "content": "<for|i, color| in=[\"red\", \"green\", \"blue\"]>${i}) ${color}</for>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-array-index/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-array-index/vdom-expected.html",
    "content": "\"0) red1) green2) blue\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-attr/expected.html",
    "content": "<div>red</div><div>green</div><div>blue</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-attr/template.marko",
    "content": "<for|item| of=[\"red\", \"green\", \"blue\"]>\n    <div>${item}</div>\n</for>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-attr/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-attr/vdom-expected.html",
    "content": "<DIV>\n  \"red\"\n<DIV>\n  \"green\"\n<DIV>\n  \"blue\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-attr-separator/expected.html",
    "content": "<b>red</b>, <b>green</b>, <b>blue</b>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-attr-separator/template.marko",
    "content": "<for|item, loopIndex, loopAll| of=[\"red\", \"green\", \"blue\"]>\n    <b>${item}</b>\n    <if(loopIndex !== loopAll.length - 1)>$!{\", \"}</if>\n</for>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-attr-separator/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-attr-separator/vdom-expected.html",
    "content": "<B>\n  \"red\"\n\", \"\n<B>\n  \"green\"\n\", \"\n<B>\n  \"blue\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-attr-separator-html/expected.html",
    "content": "<b>red</b> &nbsp; <b>green</b> &nbsp; <b>blue</b>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-attr-separator-html/template.marko",
    "content": "<for|item, loopIndex, loopAll| of=[\"red\", \"green\", \"blue\"]>\n    <b>${item}</b>\n    <if(loopIndex !== loopAll.length - 1)>$!{\" &nbsp; \"}</if>\n</for>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-attr-separator-html/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-attr-separator-html/vdom-expected.html",
    "content": "<B>\n  \"red\"\n\"   \"\n<B>\n  \"green\"\n\"   \"\n<B>\n  \"blue\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-attr-separator-status-var/expected.html",
    "content": "<div>red - true - false - 0 - 3</div>, <div>green - false - false - 1 - 3</div>, <div>blue - false - true - 2 - 3</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-attr-separator-status-var/template.marko",
    "content": "<for|item, loopIndex, loopAll| of=[\"red\", \"green\", \"blue\"]>\n    <div>\n        ${item} - ${loopIndex === 0} - ${loopIndex === loopAll.length - 1} - ${loopIndex}\n        - ${loopAll.length}\n    </div>\n    <if(loopIndex !== loopAll.length - 1)>$!{\", \"}</if>\n</for>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-attr-separator-status-var/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-attr-separator-status-var/vdom-expected.html",
    "content": "<DIV>\n  \"red - true - false - 0 - 3\"\n\", \"\n<DIV>\n  \"green - false - false - 1 - 3\"\n\", \"\n<DIV>\n  \"blue - false - true - 2 - 3\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-attr-status-var-string/expected.html",
    "content": "<div>red - true - false - 0 - 3</div>, <div>green - false - false - 1 - 3</div>, <div>blue - false - true - 2 - 3</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-attr-status-var-string/template.marko",
    "content": "<for|item, loopIndex, loopAll| of=[\"red\", \"green\", \"blue\"]>\n    <div>\n        ${item} - ${loopIndex === 0} - ${loopIndex === loopAll.length - 1} - ${loopIndex}\n        - ${loopAll.length}\n    </div>\n    <if(loopIndex !== loopAll.length - 1)>$!{\", \"}</if>\n</for>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-attr-status-var-string/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-attr-status-var-string/vdom-expected.html",
    "content": "<DIV>\n  \"red - true - false - 0 - 3\"\n\", \"\n<DIV>\n  \"green - false - false - 1 - 3\"\n\", \"\n<DIV>\n  \"blue - false - true - 2 - 3\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-if-attr/expected.html",
    "content": "<div>red</div><div>blue</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-if-attr/template.marko",
    "content": "<for|item| of=[\"red\", null, \"blue\"]>\n    <if(item)>\n        <div>${item}</div>\n    </if>\n</for>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-if-attr/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-if-attr/vdom-expected.html",
    "content": "<DIV>\n  \"red\"\n<DIV>\n  \"blue\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-iterator/expected.html",
    "content": "cba"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-iterator/template.marko",
    "content": "$ var iteratorList = [];\n$ input.reverseIterator([\"a\", \"b\", \"c\"], function(item) {\n    iteratorList.push(item);\n});\n<for|item| of=iteratorList>${item}</for>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-iterator/test.js",
    "content": "exports.templateData = {\n  reverseIterator: function (arrayList, callback) {\n    var statusVar = { first: 0, last: arrayList.length - 1 };\n    for (var i = arrayList.length - 1; i >= 0; i--) {\n      statusVar.index = i;\n      callback(arrayList[i], statusVar);\n    }\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-iterator/vdom-expected.html",
    "content": "\"cba\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-iterator-attr/expected.html",
    "content": "<div>c</div><div>b</div><div>a</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-iterator-attr/template.marko",
    "content": "$ var iteratorList = [];\n$ input.reverseIterator([\"a\", \"b\", \"c\"], function(item) {\n    iteratorList.push(item);\n});\n<for|item| of=iteratorList>\n    <div>${item}</div>\n</for>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-iterator-attr/test.js",
    "content": "exports.templateData = {\n  reverseIterator: function (arrayList, callback) {\n    var statusVar = { first: 0, last: arrayList.length - 1 };\n    for (var i = arrayList.length - 1; i >= 0; i--) {\n      statusVar.index = i;\n      callback(arrayList[i], statusVar);\n    }\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-iterator-attr/vdom-expected.html",
    "content": "<DIV>\n  \"c\"\n<DIV>\n  \"b\"\n<DIV>\n  \"a\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-native/expected.html",
    "content": "abc<div>red</div><div>green</div><div>blue</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-native/template.marko",
    "content": "static {\n    var array1 = [\"a\", \"b\", \"c\"];\n    var array2 = [\"red\", \"green\", \"blue\"];\n}\n\n$ var i;\n$ var item;\n$ i = 0;\n<while(i < array1.length)>\n    $ item = array1[i];\n    ${item}\n    $ i++;\n</while>\n$ var i;\n$ var item;\n$ i = 0;\n<while(i < array2.length)>\n    <div>\n        $ item = array2[i];\n        ${item}\n    </div>\n    $ i++;\n</while>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-native/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-native/vdom-expected.html",
    "content": "\"abc\"\n<DIV>\n  \"red\"\n<DIV>\n  \"green\"\n<DIV>\n  \"blue\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-props/expected.html",
    "content": "[foo=low][bar=high]"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-props/template.marko",
    "content": "<for|name, value| in={\n    foo: \"low\",\n    bar: \"high\"\n}>\n    [${name}=${value}]\n</for>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-props/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-props/vdom-expected.html",
    "content": "\"[foo=low][bar=high]\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-props-attr/expected.html",
    "content": "<ul><li>[foo=low]</li><li>[bar=high]</li></ul>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-props-attr/template.marko",
    "content": "<ul>\n    <for|name, value| in={\n        foo: \"low\",\n        bar: \"high\"\n    }>\n        <li>[${name}=${value}]</li>\n    </for>\n</ul>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-props-attr/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-props-attr/vdom-expected.html",
    "content": "<UL>\n  <LI>\n    \"[foo=low]\"\n  <LI>\n    \"[bar=high]\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-props-status-var/expected.html",
    "content": "0) [foo=low]1) [bar=high]"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-props-status-var/template.marko",
    "content": "<for|name, loopIndex, loopAll| of=Object.keys({\n    foo: \"low\",\n    bar: \"high\"\n})>\n    $ var value = {\n        foo: \"low\",\n        bar: \"high\"\n    }[name];\n    ${loopIndex}) [${name}=${value}]\n</for>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-props-status-var/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-props-status-var/vdom-expected.html",
    "content": "\"0) [foo=low]1) [bar=high]\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-range/expected.html",
    "content": "0123456789"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-range/template.marko",
    "content": "<for|i| from=0 to=9>${i}</for>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-range/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-range/vdom-expected.html",
    "content": "\"0123456789\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-range-descending-step/expected.html",
    "content": "9876543210"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-range-descending-step/template.marko",
    "content": "<for|i| from=9 to=0 step=-1>${i}</for>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-range-descending-step/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-range-descending-step/vdom-expected.html",
    "content": "\"9876543210\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-range-from-to-expr/expected.html",
    "content": "0123"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-range-from-to-expr/template.marko",
    "content": "<for|i| from=\"\".length to=\"abc\".length>${i}</for>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-range-from-to-expr/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-range-from-to-expr/vdom-expected.html",
    "content": "\"0123\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-range-step-2/expected.html",
    "content": "02468"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-range-step-2/template.marko",
    "content": "<for|i| from=0 to=9 step=2>${i}</for>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-range-step-2/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-range-step-2/vdom-expected.html",
    "content": "\"02468\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-range-step-neg2/expected.html",
    "content": "97531"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-range-step-neg2/template.marko",
    "content": "<for|i| from=9 to=0 step=-2>${i}</for>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-range-step-neg2/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-range-step-neg2/vdom-expected.html",
    "content": "\"97531\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-range-to-expr/expected.html",
    "content": "0123"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-range-to-expr/template.marko",
    "content": "<for|i| from=0 to=\"abc\".length>${i}</for>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-range-to-expr/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-range-to-expr/vdom-expected.html",
    "content": "\"0123\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-tag/expected.html",
    "content": "<div>red</div><div>green</div><div>blue</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-tag/template.marko",
    "content": "<for|item| of=[\"red\", \"green\", \"blue\"]>\n    <div>${item}</div>\n</for>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-tag/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-tag/vdom-expected.html",
    "content": "<DIV>\n  \"red\"\n<DIV>\n  \"green\"\n<DIV>\n  \"blue\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-tag-array-expression/expected.html",
    "content": "<div>red</div><div>green</div><div>blue</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-tag-array-expression/template.marko",
    "content": "<for|color| of=input.colors>\n    <div>${color}</div>\n</for>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-tag-array-expression/test.js",
    "content": "exports.templateData = {\n  colors: [\"red\", \"green\", \"blue\"],\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-tag-array-expression/vdom-expected.html",
    "content": "<DIV>\n  \"red\"\n<DIV>\n  \"green\"\n<DIV>\n  \"blue\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-tag-block-scoped-key/expected.html",
    "content": "<div><div>red</div><div>green</div><div>blue</div></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-tag-block-scoped-key/template.marko",
    "content": "<div>\n    <for|item| of=[\"red\", \"green\", \"blue\"]>\n        $ const id = item.length;\n        <div key=id>\n            ${item}\n        </div>\n    </for>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-tag-block-scoped-key/test.js",
    "content": "exports.templateData = {};\nexports.skip_vdom = \"keyed elements are not supported in server-rendered vdom\";\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-tag-native/expected.html",
    "content": "<div>0</div><div>1</div><div>2</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-tag-native/template.marko",
    "content": "<for|i| from=0 to=2>\n    <div>${i}</div>\n</for>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-tag-native/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-tag-native/vdom-expected.html",
    "content": "<DIV>\n  \"0\"\n<DIV>\n  \"1\"\n<DIV>\n  \"2\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-tag-separator/expected.html",
    "content": "<b>red</b>, <b>green</b>, <b>blue</b>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-tag-separator/template.marko",
    "content": "<for|item, loopIndex, loopAll| of=[\"red\", \"green\", \"blue\"]>\n    <b>${item}</b>\n    <if(loopIndex !== loopAll.length - 1)>$!{\", \"}</if>\n</for>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-tag-separator/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-tag-separator/vdom-expected.html",
    "content": "<B>\n  \"red\"\n\", \"\n<B>\n  \"green\"\n\", \"\n<B>\n  \"blue\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-tag-separator-status-var/expected.html",
    "content": "<div>red - true - false - 0 - 3</div>, <div>green - false - false - 1 - 3</div>, <div>blue - false - true - 2 - 3</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-tag-separator-status-var/template.marko",
    "content": "<for|item, loopIndex, loopAll| of=[\"red\", \"green\", \"blue\"]>\n    <div>\n        ${item} - ${loopIndex === 0} - ${loopIndex === loopAll.length - 1} - ${loopIndex}\n        - ${loopAll.length}\n    </div>\n    <if(loopIndex !== loopAll.length - 1)>$!{\", \"}</if>\n</for>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-tag-separator-status-var/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-tag-separator-status-var/vdom-expected.html",
    "content": "<DIV>\n  \"red - true - false - 0 - 3\"\n\", \"\n<DIV>\n  \"green - false - false - 1 - 3\"\n\", \"\n<DIV>\n  \"blue - false - true - 2 - 3\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-tag-status-var/expected.html",
    "content": "<div>red - true - false - 0 - 3</div><div>green - false - false - 1 - 3</div><div>blue - false - true - 2 - 3</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-tag-status-var/template.marko",
    "content": "<for|item, loopIndex, loopAll| of=[\"red\", \"green\", \"blue\"]>\n    <div>\n        ${item} - ${loopIndex === 0} - ${loopIndex === loopAll.length - 1} - ${loopIndex}\n        - ${loopAll.length}\n    </div>\n</for>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-tag-status-var/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/for-tag-status-var/vdom-expected.html",
    "content": "<DIV>\n  \"red - true - false - 0 - 3\"\n<DIV>\n  \"green - false - false - 1 - 3\"\n<DIV>\n  \"blue - false - true - 2 - 3\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/global-data/expected.html",
    "content": "Global: bar"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/global-data/template.marko",
    "content": "-- Global: ${out.global.foo}"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/global-data/test.js",
    "content": "exports.templateData = {\n  $global: {\n    foo: \"bar\",\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/global-data/vdom-expected.html",
    "content": "\"Global: bar\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/global-runtime-id/expected.html",
    "content": "<!--FOO#s0--><div></div><!--FOO/-->"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/global-runtime-id/template.marko",
    "content": "class {}\n<div/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/global-runtime-id/test.js",
    "content": "exports.templateData = {\n  $global: {\n    runtimeId: \"FOO\",\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/global-runtime-id/vdom-expected.html",
    "content": "<DIV>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/hello-dynamic/expected.html",
    "content": "Hello John! Hello John! Hello !"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/hello-dynamic/hello-dynamic.marko.expected.js",
    "content": "exports.create = function (__helpers) {\n  var str = __helpers.s,\n      empty = __helpers.e,\n      notEmpty = __helpers.ne,\n      escapeXml = __helpers.x;\n\n  return function render(data, out) {\n    out.w('Hello ' + escapeXml(data.name) + '! Hello ' + str(data.name) + '! Hello ' + str(data.missing) + '!');\n  };\n};"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/hello-dynamic/template.marko",
    "content": "-- Hello ${input.name}! Hello $!{input.name}! Hello $!{input.missing}!"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/hello-dynamic/test.js",
    "content": "exports.templateData = {\n  name: \"John\",\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/hello-dynamic/vdom-expected.html",
    "content": "\"Hello John! Hello John! Hello !\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/hello-static/expected.html",
    "content": "Hello John"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/hello-static/template.marko",
    "content": "-- Hello John"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/hello-static/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/hello-static/vdom-expected.html",
    "content": "\"Hello John\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/html/expected.html",
    "content": "<img src=test.jpg><div class=self-closing-not-allowed></div><script src=test.js></script><br>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/html/template.marko",
    "content": "<img src=\"test.jpg\"/>\n<div class=\"self-closing-not-allowed\" />\n<script src=\"test.js\"></script>\n<br/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/html/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/html/vdom-expected.html",
    "content": "<IMG src=\"test.jpg\">\n<DIV class=\"self-closing-not-allowed\">\n<SCRIPT src=\"test.js\">\n<BR>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/html-comment-tag/expected.html",
    "content": "<!--This is a comment-->"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/html-comment-tag/template.marko",
    "content": "<html-comment>This is a comment</html-comment>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/html-comment-tag/vdom-expected.html",
    "content": "<!--\"This is a comment\"-->\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/html-comment-tag-dynamic/expected.html",
    "content": "<!--This is a <custom-tag>test</custom-tag>-->"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/html-comment-tag-dynamic/template.marko",
    "content": "<html-comment>This is a <custom-tag>${input.name}</custom-tag></html-comment>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/html-comment-tag-dynamic/test.js",
    "content": "exports.templateData = {\n  name: \"test\",\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/html-comment-tag-dynamic/vdom-expected.html",
    "content": "<!--\"This is a <custom-tag>test</custom-tag>\"-->\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/html-entities-body/expected.html",
    "content": "<div>&lt;div&gt;</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/html-entities-body/template.marko",
    "content": "<div>\n    &lt;div&gt;\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/html-entities-body/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/html-entities-body/vdom-expected.html",
    "content": "<DIV>\n  \"<div>\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/if/expected.html",
    "content": "A"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/if/template.marko",
    "content": "<if(true)>\n    A\n</if>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/if/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/if/vdom-expected.html",
    "content": "\"A\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/if-attr/expected.html",
    "content": "<div>A</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/if-attr/template.marko",
    "content": "<if(true)>\n    <div>A</div>\n</if>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/if-attr/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/if-attr/vdom-expected.html",
    "content": "<DIV>\n  \"A\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/if-concise/expected.html",
    "content": "A"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/if-concise/template.marko",
    "content": "if(true)\n    -- A\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/if-concise/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/if-concise/vdom-expected.html",
    "content": "\"A\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/if-else/expected.html",
    "content": "A"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/if-else/template.marko",
    "content": "<if(true)>\n    A\n</if>\n<else>\n    B\n</else>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/if-else/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/if-else/vdom-expected.html",
    "content": "\"A\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/if-else-attr/expected.html",
    "content": "<div>B</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/if-else-attr/template.marko",
    "content": "<if(input.foo === 0)>\n    <div>A</div>\n</if>\n<else>\n    <div>B</div>\n</else>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/if-else-attr/test.js",
    "content": "exports.templateData = {\n  accounts: [\n    {\n      balance: 0,\n      balanceFormatted: \"$0.00\",\n      status: \"open\",\n    },\n    {\n      balance: 10,\n      balanceFormatted: \"$10.00\",\n      status: \"closed\",\n    },\n    {\n      balance: -100,\n      balanceFormatted: \"$-100.00\",\n      status: \"suspended\",\n    },\n    {\n      balance: 999,\n      balanceFormatted: \"$999.00\",\n      status: \"open\",\n    },\n  ],\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/if-else-attr/vdom-expected.html",
    "content": "<DIV>\n  \"B\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/if-else-concise/expected.html",
    "content": "B"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/if-else-concise/template.marko",
    "content": "if(false)\n    -- A\nelse\n    -- B\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/if-else-concise/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/if-else-concise/vdom-expected.html",
    "content": "\"B\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/if-else-if/expected.html",
    "content": "B"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/if-else-if/template.marko",
    "content": "<if(false)>\n    A\n</if>\n<else-if(true)>\n    B\n</else-if>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/if-else-if/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/if-else-if/vdom-expected.html",
    "content": "\"B\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/if-else-if-attr/expected.html",
    "content": "<div>B</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/if-else-if-attr/template.marko",
    "content": "<if(input.foo === 0)>\n    <div>A</div>\n</if>\n<else-if(true)>\n    <div>B</div>\n</else-if>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/if-else-if-attr/test.js",
    "content": "exports.templateData = {\n  accounts: [\n    {\n      balance: 0,\n      balanceFormatted: \"$0.00\",\n      status: \"open\",\n    },\n    {\n      balance: 10,\n      balanceFormatted: \"$10.00\",\n      status: \"closed\",\n    },\n    {\n      balance: -100,\n      balanceFormatted: \"$-100.00\",\n      status: \"suspended\",\n    },\n    {\n      balance: 999,\n      balanceFormatted: \"$999.00\",\n      status: \"open\",\n    },\n  ],\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/if-else-if-attr/vdom-expected.html",
    "content": "<DIV>\n  \"B\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/if-else-if-else/expected.html",
    "content": "C"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/if-else-if-else/template.marko",
    "content": "<if(false)>\n    A\n</if>\n<else-if(false)>\n    B\n</else-if>\n<else>\n    C\n</else>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/if-else-if-else/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/if-else-if-else/vdom-expected.html",
    "content": "\"C\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/if-else-if-else-attr/expected.html",
    "content": "<div>C</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/if-else-if-else-attr/template.marko",
    "content": "<if(input.foo === 0)>\n    <div>A</div>\n</if>\n<else-if(input.foo === 1)>\n    <div>B</div>\n</else-if>\n<else>\n    <div>C</div>\n</else>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/if-else-if-else-attr/test.js",
    "content": "exports.templateData = {\n  accounts: [\n    {\n      balance: 0,\n      balanceFormatted: \"$0.00\",\n      status: \"open\",\n    },\n    {\n      balance: 10,\n      balanceFormatted: \"$10.00\",\n      status: \"closed\",\n    },\n    {\n      balance: -100,\n      balanceFormatted: \"$-100.00\",\n      status: \"suspended\",\n    },\n    {\n      balance: 999,\n      balanceFormatted: \"$999.00\",\n      status: \"open\",\n    },\n  ],\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/if-else-if-else-attr/vdom-expected.html",
    "content": "<DIV>\n  \"C\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/ignore-unrecognized-tag/expected.html",
    "content": "<unrecognized></unrecognized>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/ignore-unrecognized-tag/template.marko",
    "content": "<unrecognized></unrecognized>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/ignore-unrecognized-tag/test.js",
    "content": "exports.templateData = {};\nexports.ignoreUnrecognizedTags = true;\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/ignore-unrecognized-tag/vdom-expected.html",
    "content": "<UNRECOGNIZED>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/img/expected.html",
    "content": "<img src=foo.jpg>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/img/template.marko",
    "content": "<img src=\"foo.jpg\">"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/img/test.js",
    "content": "exports.templateData = {\n  options: [\n    {\n      value: \"red\",\n      selected: false,\n    },\n    {\n      value: \"green\",\n      selected: true,\n    },\n    {\n      value: \"blue\",\n      selected: false,\n    },\n  ],\n  disabled: false,\n  checked: true,\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/img/vdom-expected.html",
    "content": "<IMG src=\"foo.jpg\">\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/import/bar.js",
    "content": "module.exports = {\n  foo: \"Foo\",\n  b: \"Bar\",\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/import/expected.html",
    "content": "Foo Bar Foo"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/import/template.marko",
    "content": "import mod, { b as bar } from \"./bar\"\nimport test from './bar'\n-- ${mod.foo} ${bar} ${test.foo}"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/import/vdom-expected.html",
    "content": "\"Foo Bar Foo\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include/expected.html",
    "content": "Hello Frank! You have 20 new messages."
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include/include-target.marko",
    "content": "-- Hello ${input.name}! You have ${input.count} new messages."
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include/template.marko",
    "content": "import IncludeTarget from \"./include-target.marko\"\n\n<${IncludeTarget} name=\"Frank\" count=20/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include/vdom-expected.html",
    "content": "\"Hello Frank! You have 20 new messages.\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-attr/expected.html",
    "content": "<div><h1>foo</h1><div class=body>Hello Frank! You have 10 new messages.</div></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-attr/include-target.marko",
    "content": "-- Hello ${input.name}! You have ${input.count} new messages."
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-attr/template.marko",
    "content": "import IncludeTarget from \"./include-target.marko\"\n\n<div>\n    <h1>foo</h1>\n    <div.body>\n        <${IncludeTarget} ...{\n            name: \"Frank\",\n            count: 10\n        }/>\n    </div>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-attr/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-attr/vdom-expected.html",
    "content": "<DIV>\n  <H1>\n    \"foo\"\n  <DIV class=\"body\">\n    \"Hello Frank! You have 10 new messages.\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-body/expected.html",
    "content": "<div><h1>Hello Frank! You have 20 new messages.</h1><p>Have a <b>wonderful</b> day!</p></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-body/include-target.marko",
    "content": "<div>\n    <h1>Hello ${input.name}! You have ${input.count} new messages.</h1>\n    <p>\n        <${input}/>\n    </p>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-body/template.marko",
    "content": "import IncludeTarget from \"./include-target.marko\"\n\n<${IncludeTarget} name=\"Frank\" count=20>\n    Have a <b>wonderful</b> day!\n</>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-body/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-body/vdom-expected.html",
    "content": "<DIV>\n  <H1>\n    \"Hello Frank! You have 20 new messages.\"\n  <P>\n    \"Have a \"\n    <B>\n      \"wonderful\"\n    \" day!\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-body-empty/expected.html",
    "content": "<div><h1>Hello Frank! You have 20 new messages.</h1><p>No body!</p></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-body-empty/include-target.marko",
    "content": "<div>\n    <h1>Hello ${input.name}! You have ${input.count} new messages.</h1>\n    <if(input.renderBody)>\n        <p>\n            <${input}/>\n        </p>\n    </if>\n    <else>\n        <p>No body!</p>\n    </else>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-body-empty/template.marko",
    "content": "import IncludeTarget from \"./include-target.marko\"\n\n<${IncludeTarget} name=\"Frank\" count=20/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-body-empty/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-body-empty/vdom-expected.html",
    "content": "<DIV>\n  <H1>\n    \"Hello Frank! You have 20 new messages.\"\n  <P>\n    \"No body!\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-component/components/my-component/index.js",
    "content": "module.exports = {\n  renderer: function (input, out) {\n    out.beginElement(\"div\");\n    out.text(input.name.toUpperCase());\n    out.endElement();\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-component/expected.html",
    "content": "<div>FRANK</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-component/include-html-target.html",
    "content": "<div>\n    <h1>\n        Hello World!\n    </h1>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-component/template.marko",
    "content": "<if(typeof input.component === \"string\")>${input.component}</if>\n<else>\n    <${input.component} ...{\n        name: \"Frank\"\n    }/>\n</else>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-component/test.js",
    "content": "var myComponent = require(\"./components/my-component\");\n\nexports.templateData = {\n  component: myComponent,\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-component/vdom-expected.html",
    "content": "<DIV>\n  \"FRANK\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-data/expected.html",
    "content": "Hello Frank! You have 20 new messages.Hello Frank! You have 20 new messages.Hello Frank! You have 20 new messages."
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-data/include-target.marko",
    "content": "-- Hello ${input.name}! You have ${input.count} new messages."
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-data/template.marko",
    "content": "import IncludeTarget from \"./include-target.marko\"\n\n<${IncludeTarget}\n    ...{\n        name: \"Frank\"\n    }\n    count=20/>\n<${IncludeTarget} ...{\n    name: \"Frank\",\n    count: 20\n}/>\n<${IncludeTarget}\n    ...{\n        name: \"Frank\",\n        count: 10\n    }\n    count=20/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-data/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-data/vdom-expected.html",
    "content": "\"Hello Frank! You have 20 new messages.Hello Frank! You have 20 new messages.Hello Frank! You have 20 new messages.\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-data-body/expected.html",
    "content": "<div><h1>Hello Frank! You have 20 new messages.</h1><p>Have a <b>wonderful</b> day!</p></div><div><h1>Hello Frank! You have 20 new messages.</h1><p>Have a <b>wonderful</b> day!</p></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-data-body/include-target.marko",
    "content": "<div>\n    <h1>Hello ${input.name}! You have ${input.count} new messages.</h1>\n    <p>\n        <${input}/>\n    </p>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-data-body/template.marko",
    "content": "import IncludeTarget from \"./include-target.marko\"\n\n<${IncludeTarget}\n    ...{\n        name: \"Frank\"\n    }\n    count=20>\n    Have a <b>wonderful</b> day!\n</>\n<${IncludeTarget} ...{\n    name: \"Frank\",\n    count: 20\n}>\n    Have a <b>wonderful</b> day!\n</>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-data-body/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-data-body/vdom-expected.html",
    "content": "<DIV>\n  <H1>\n    \"Hello Frank! You have 20 new messages.\"\n  <P>\n    \"Have a \"\n    <B>\n      \"wonderful\"\n    \" day!\"\n<DIV>\n  <H1>\n    \"Hello Frank! You have 20 new messages.\"\n  <P>\n    \"Have a \"\n    <B>\n      \"wonderful\"\n    \" day!\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-dynamic/expected.html",
    "content": "Hello Frank! You have 20 new messages."
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-dynamic/include-target.marko",
    "content": "-- Hello ${input.name}! You have ${input.count} new messages.\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-dynamic/template.marko",
    "content": "<if(typeof input.includeTarget === \"string\")>${input.includeTarget}</if>\n<else>\n    <${input.includeTarget} name=\"Frank\" count=20/>\n</else>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-dynamic/test.js",
    "content": "exports.templateData = {\n  get includeTarget() { return require(\"./include-target.marko\") },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-dynamic/vdom-expected.html",
    "content": "\"Hello Frank! You have 20 new messages.\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-html/expected.html",
    "content": "BEGIN <div>\n    <h1>\n        Hello World!\n    </h1>\n</div> END"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-html/include-html-target.html",
    "content": "<div>\n    <h1>\n        Hello World!\n    </h1>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-html/template.marko",
    "content": "---\nBEGIN\n<include-html('./include-html-target.html')/>\nEND\n---"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-html/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-html/vdom-expected.html",
    "content": "\"BEGIN \"\n<DIV>\n  \"\\n    \"\n  <H1>\n    \"\\n        Hello World!\\n    \"\n  \"\\n\"\n\" END\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-hyphen-attrs/expected.html",
    "content": "Hello Frank! You have 20 new messages.Hello Jane! You have 30 new messages."
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-hyphen-attrs/include-target.marko",
    "content": "-- Hello ${input.firstName}! You have ${input.count} new messages."
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-hyphen-attrs/template.marko",
    "content": "import IncludeTarget from \"./include-target.marko\"\n\n<${IncludeTarget} first-name=\"Frank\" count=20/>\n<${IncludeTarget} firstName=\"Jane\" count=30/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-hyphen-attrs/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-hyphen-attrs/vdom-expected.html",
    "content": "\"Hello Frank! You have 20 new messages.Hello Jane! You have 30 new messages.\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-hyphen-attrs-multiple/expected.html",
    "content": "Hello Frank Smith!Hello Jane Doe!"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-hyphen-attrs-multiple/include-target.marko",
    "content": "-- Hello ${input.firstName} ${input.lastName}!"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-hyphen-attrs-multiple/template.marko",
    "content": "import IncludeTarget from \"./include-target.marko\"\n\n<${IncludeTarget} first-name=\"Frank\" last-name=\"Smith\"/>\n<${IncludeTarget} firstName=\"Jane\" lastName=\"Doe\"/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-hyphen-attrs-multiple/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-hyphen-attrs-multiple/vdom-expected.html",
    "content": "\"Hello Frank Smith!Hello Jane Doe!\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-layout/expected.html",
    "content": "<div>BODY CONTENT</div>FOOTER CONTENT<h1>HEADER CONTENT</h1><div>BODY CONTENT</div>FOOTER CONTENT<h1>VALUE HEADER</h1><div>BODY CONTENT</div>FOOTER CONTENT<h1>DEFAULT TITLE</h1><div>BODY CONTENT</div>FOOTER CONTENT"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-layout/layout-default.marko",
    "content": "<if(input.showHeader !== false)>\n    <h1>\n        <if(input.header)>\n            <if(typeof input.header === \"string\")>${input.header}</if>\n            <else>\n                <${input.header}/>\n            </else>\n        </if>\n        <else>DEFAULT TITLE</else>\n    </h1>\n</if>\n<div>\n    <if(typeof input.body === \"string\")>${input.body}</if>\n    <else>\n        <${input.body}/>\n    </else>\n</div>\n<if(typeof input.footer === \"string\")>${input.footer}</if>\n<else>\n    <${input.footer}/>\n</else>\n<if(typeof input.empty === \"string\")>${input.empty}</if>\n<else>\n    <${input.empty}/>\n</else>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-layout/template.marko",
    "content": "import LayoutDefault from \"./layout-default.marko\"\n\n<${LayoutDefault} show-header=false>\n    <@body>BODY CONTENT</@body>\n    <@footer>FOOTER CONTENT</@footer>\n</>\n<${LayoutDefault} show-header=true>\n    <@header>HEADER CONTENT</@header>\n    <@body>BODY CONTENT</@body>\n    <@footer>FOOTER CONTENT</@footer>\n</>\n<${LayoutDefault} show-header=true>\n    <@header>VALUE HEADER</@header>\n    <@body>BODY CONTENT</@body>\n    <@footer>FOOTER CONTENT</@footer>\n</>\n<if(typeof input.layoutDynamic === \"string\")>${input.layoutDynamic}</if>\n<else>\n    <${input.layoutDynamic} show-header=true>\n        <@body>BODY CONTENT</@body>\n        <@footer>FOOTER CONTENT</@footer>\n    </>\n</else>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-layout/test.js",
    "content": "exports.templateData = {\n  get layoutDynamic() { return require(\"./layout-default.marko\").default },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-layout/vdom-expected.html",
    "content": "<DIV>\n  \"BODY CONTENT\"\n\"FOOTER CONTENT\"\n<H1>\n  \"HEADER CONTENT\"\n<DIV>\n  \"BODY CONTENT\"\n\"FOOTER CONTENT\"\n<H1>\n  \"VALUE HEADER\"\n<DIV>\n  \"BODY CONTENT\"\n\"FOOTER CONTENT\"\n<H1>\n  \"DEFAULT TITLE\"\n<DIV>\n  \"BODY CONTENT\"\n\"FOOTER CONTENT\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-layout-data/expected.html",
    "content": "<div>BODY CONTENT</div>FOOTER CONTENT ---- <h1>DEFAULT TITLE</h1><div>BODY CONTENT2</div>FOOTER CONTENT2 ---- <h1>My Title</h1><div>BODY CONTENT2</div>FOOTER CONTENT2"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-layout-data/layout-default.marko",
    "content": "<if(input.showHeader !== false)>\n    <h1>\n        <if(input.header)>\n            <if(typeof input.header === \"string\")>${input.header}</if>\n            <else>\n                <${input.header}/>\n            </else>\n        </if>\n        <else>DEFAULT TITLE</else>\n    </h1>\n</if>\n<div>\n    <if(typeof input.body === \"string\")>${input.body}</if>\n    <else>\n        <${input.body}/>\n    </else>\n</div>\n<if(typeof input.footer === \"string\")>${input.footer}</if>\n<else>\n    <${input.footer}/>\n</else>\n<if(typeof input.empty === \"string\")>${input.empty}</if>\n<else>\n    <${input.empty}/>\n</else>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-layout-data/template.marko",
    "content": "import LayoutDefault from \"./layout-default.marko\"\n\n--------\n<${LayoutDefault} ...{\n    showHeader: false\n}>\n    <@body>BODY CONTENT</@body>\n    <@footer>FOOTER CONTENT</@footer>\n</>\n----\n<${LayoutDefault} ...{\n    showHeader: true\n}>\n    <@body>BODY CONTENT2</@body>\n    <@footer>FOOTER CONTENT2</@footer>\n</>\n----\n<${LayoutDefault} ...{\n    showHeader: true\n}>\n    <@header>My Title</@header>\n    <@body>BODY CONTENT2</@body>\n    <@footer>FOOTER CONTENT2</@footer>\n</>\n--------"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-layout-data/test.js",
    "content": "exports.templateData = {\n  get layoutDynamic() { return require(\"./layout-default.marko\") },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-layout-data/vdom-expected.html",
    "content": "<DIV>\n  \"BODY CONTENT\"\n\"FOOTER CONTENT ---- \"\n<H1>\n  \"DEFAULT TITLE\"\n<DIV>\n  \"BODY CONTENT2\"\n\"FOOTER CONTENT2 ---- \"\n<H1>\n  \"My Title\"\n<DIV>\n  \"BODY CONTENT2\"\n\"FOOTER CONTENT2\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-layout-data-attrs/expected.html",
    "content": "<div>BODY CONTENT</div> ---- <h1>DEFAULT TITLE</h1><div>BODY CONTENT</div><h1>FOOTER CONTENT</h1>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-layout-data-attrs/layout-default.marko",
    "content": "<if(input.showHeader !== false)>\n    <h1>\n        <if(input.header)>\n            <if(typeof input.header === \"string\")>${input.header}</if>\n            <else>\n                <${input.header}/>\n            </else>\n        </if>\n        <else>DEFAULT TITLE</else>\n    </h1>\n</if>\n<div>\n    <if(typeof input.body === \"string\")>${input.body}</if>\n    <else>\n        <${input.body}/>\n    </else>\n</div>\n<if(input.showFooter !== false)>\n    <h1>\n        <if(input.footer)>\n            <if(typeof input.footer === \"string\")>${input.footer}</if>\n            <else>\n                <${input.footer}/>\n            </else>\n        </if>\n        <else>DEFAULT FOOTER</else>\n    </h1>\n</if>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-layout-data-attrs/template.marko",
    "content": "import LayoutDefault from \"./layout-default.marko\"\n\n--------\n<${LayoutDefault}\n    ...{\n        showHeader: false\n    }\n    show-footer=false>\n    <@body>BODY CONTENT</@body>\n    <@footer>FOOTER CONTENT</@footer>\n</>\n----\n<${LayoutDefault}\n    ...{\n        showHeader: false\n    }\n    show-header=true>\n    <@body>BODY CONTENT</@body>\n    <@footer>FOOTER CONTENT</@footer>\n</>\n--------"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-layout-data-attrs/test.js",
    "content": "exports.templateData = {\n  get layoutDynamic() { return require(\"./layout-default.marko\") },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-layout-data-attrs/vdom-expected.html",
    "content": "<DIV>\n  \"BODY CONTENT\"\n\" ---- \"\n<H1>\n  \"DEFAULT TITLE\"\n<DIV>\n  \"BODY CONTENT\"\n<H1>\n  \"FOOTER CONTENT\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-layout-v3-compat/expected.html",
    "content": "<div>BODY CONTENT</div>FOOTER CONTENT<h1>HEADER CONTENT</h1><div>BODY CONTENT</div>FOOTER CONTENT<h1>VALUE HEADER</h1><div>BODY CONTENT</div>FOOTER CONTENT<h1>DEFAULT TITLE</h1><div>BODY CONTENT</div>FOOTER CONTENT"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-layout-v3-compat/layout-default.marko",
    "content": "<if(input.showHeader !== false)>\n    <h1>\n        <if(input.header)>\n            <${input.header}/>\n        </if>\n        <else>DEFAULT TITLE</else>\n    </h1>\n</if>\n<div>\n    <${input.body}/>\n</div>\n<${input.footer}/>\n<${input.empty}/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-layout-v3-compat/template.marko",
    "content": "import LayoutDefault from \"./layout-default.marko\"\n\n<${LayoutDefault} show-header=false>\n    <@body>BODY CONTENT</@body>\n    <@footer>FOOTER CONTENT</@footer>\n</>\n<${LayoutDefault} show-header=true>\n    <@header>HEADER CONTENT</@header>\n    <@body>BODY CONTENT</@body>\n    <@footer>FOOTER CONTENT</@footer>\n</>\n<${LayoutDefault} show-header=true>\n    <@header>VALUE HEADER</@header>\n    <@body>BODY CONTENT</@body>\n    <@footer>FOOTER CONTENT</@footer>\n</>\n<if(typeof input.layoutDynamic === \"string\")>${input.layoutDynamic}</if>\n<else>\n    <${input.layoutDynamic} show-header=true>\n        <@body>BODY CONTENT</@body>\n        <@footer>FOOTER CONTENT</@footer>\n    </>\n</else>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-layout-v3-compat/test.js",
    "content": "exports.templateData = {\n  get layoutDynamic() { return require(\"./layout-default.marko\").default },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-layout-v3-compat/vdom-expected.html",
    "content": "<DIV>\n  \"BODY CONTENT\"\n\"FOOTER CONTENT\"\n<H1>\n  \"HEADER CONTENT\"\n<DIV>\n  \"BODY CONTENT\"\n\"FOOTER CONTENT\"\n<H1>\n  \"VALUE HEADER\"\n<DIV>\n  \"BODY CONTENT\"\n\"FOOTER CONTENT\"\n<H1>\n  \"DEFAULT TITLE\"\n<DIV>\n  \"BODY CONTENT\"\n\"FOOTER CONTENT\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-renderBody/expected.html",
    "content": "<div>Frank</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-renderBody/template.marko",
    "content": "<if(typeof input.renderBody === \"string\")>${input.renderBody}</if>\n<else>\n    <${input.renderBody} ...{\n        name: \"Frank\"\n    }/>\n</else>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-renderBody/test.js",
    "content": "exports.templateData = {\n  renderBody(out, data) {\n    out.beginElement(\"div\");\n    out.text(data.name);\n    out.endElement();\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-renderBody/vdom-expected.html",
    "content": "<DIV>\n  \"Frank\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-renderBody-data-and-attrs/expected.html",
    "content": "<div>Frank:10</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-renderBody-data-and-attrs/template.marko",
    "content": "<if(typeof input.renderBody === \"string\")>${input.renderBody}</if>\n<else>\n    <${input.renderBody}\n        ...{\n            name: \"Frank\"\n        }\n        age=10/>\n</else>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-renderBody-data-and-attrs/test.js",
    "content": "exports.templateData = {\n  renderBody(out, data) {\n    out.beginElement(\"div\");\n    out.text(data.name + \":\" + data.age);\n    out.endElement();\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-renderBody-data-and-attrs/vdom-expected.html",
    "content": "<DIV>\n  \"Frank:10\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-renderBody-no-data/expected.html",
    "content": "<div>foo</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-renderBody-no-data/include-html-target.html",
    "content": "<div>\n    <h1>\n        Hello World!\n    </h1>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-renderBody-no-data/template.marko",
    "content": "<if(typeof input.renderBody === \"string\")>${input.renderBody}</if>\n<else>\n    <${input.renderBody}/>\n</else>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-renderBody-no-data/test.js",
    "content": "exports.templateData = {\n  renderBody(out) {\n    out.beginElement(\"div\");\n    out.text(\"foo\");\n    out.endElement();\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-renderBody-no-data/vdom-expected.html",
    "content": "<DIV>\n  \"foo\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-renderBody-string-arg/expected.html",
    "content": "<div>Frank</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-renderBody-string-arg/include-html-target.html",
    "content": "<div>\n    <h1>\n        Hello World!\n    </h1>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-renderBody-string-arg/template.marko",
    "content": "<if(typeof input.renderBody === \"string\")>${input.renderBody}</if>\n<else>\n    <${input.renderBody} ...\"Frank\"/>\n</else>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-renderBody-string-arg/test.js",
    "content": "exports.templateData = {\n  renderBody(out, name) {\n    out.beginElement(\"div\");\n    out.text(name);\n    out.endElement();\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-renderBody-string-arg/vdom-expected.html",
    "content": "<DIV>\n  \"Frank\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-string/expected.html",
    "content": "&lt;script>Hello&lt;/script>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-string/template.marko",
    "content": "$ var text = \"<script>Hello</script>\";\n<if(typeof text === \"string\")>${text}</if>\n<else>\n    <${text}/>\n</else>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-string/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-string/vdom-expected.html",
    "content": "\"<script>Hello</script>\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-text/expected.html",
    "content": "BEGIN Hello World! END"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-text/include-resource-target.txt",
    "content": "Hello World!"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-text/template.marko",
    "content": "---\nBEGIN\n<include-text('./include-resource-target.txt')/>\nEND\n---"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-text/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-text/vdom-expected.html",
    "content": "\"BEGIN Hello World! END\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-whitespace/expected.html",
    "content": "<div><h1>Hello Frank! You have 20 new messages.</h1><p>Have a wonderful day!</p></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-whitespace/include-target.marko",
    "content": "<div>\n    <h1>Hello ${input.name}! You have ${input.count} new messages.</h1>\n    <p>\n        <${input}/>\n    </p>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-whitespace/template.marko",
    "content": "import IncludeTarget from \"./include-target.marko\"\n\n<${IncludeTarget}\n    ...{\n        name: \"Frank\"\n    }\n    count=20>\n    Have a wonderful day!\n</>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-whitespace/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/include-whitespace/vdom-expected.html",
    "content": "<DIV>\n  <H1>\n    \"Hello Frank! You have 20 new messages.\"\n  <P>\n    \"Have a wonderful day!\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/inline-script/expected.html",
    "content": "<html><head><title>Inline Script</title></head><body>Hello name! <script type=n/a>\n        <div if(foo)></div>\n        $(function() {\n            alert('World');\n        })\n        </script></body></html>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/inline-script/template.marko",
    "content": "$ var name = \"name\";\n$ var value = \"input.name\";\n<html>\n    <head>\n        <title>Inline Script</title>\n    </head>\n    <body>\n        Hello ${name}!\n        <script type=\"n/a\">\n        <div if(foo)></div>\n        $(function() {\n            alert('${input.name}');\n        })\n        </script>\n    </body>\n</html>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/inline-script/test.js",
    "content": "exports.templateData = {\n  name: \"World\",\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/inline-script/vdom-expected.html",
    "content": "<HTML>\n  <HEAD>\n    <TITLE>\n      \"Inline Script\"\n  <BODY>\n    \"Hello name! \"\n    <SCRIPT type=\"n/a\">\n      \"\\n        <div if(foo)></div>\\n        $(function() {\\n            alert('World');\\n        })\\n        \"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/invoke/expected.html",
    "content": "Hello Frank!Hello John!"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/invoke/template.marko",
    "content": "static function greeting(name, out) {\n    out.write(\"Hello \" + name + \"!\");\n}\n\n<${{\n    render: greeting\n}} ...\"Frank\"/>\n<${{\n    render: greeting\n}} ...\"John\"/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/invoke/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/invoke/vdom-expected.html",
    "content": "\"Hello Frank!Hello John!\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/label-for/expected.html",
    "content": "<label for=hello>Hello</label>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/label-for/template.marko",
    "content": "<label for=\"hello\">Hello</label>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/label-for/test.js",
    "content": "exports.templateData = {\n  name: '<label for=\"hello\">Hello</label>',\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/label-for/vdom-expected.html",
    "content": "<LABEL for=\"hello\">\n  \"Hello\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/macro/expected.html",
    "content": "Hello Frank! You are 30 years old.Hello John! You are 10 years old."
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/macro/template.marko",
    "content": "<macro|{ name, age }| name=\"greeting\">\n    Hello ${name}! You are ${age} years old.\n</macro>\n\n<greeting name=\"Frank\" age=30/>\n<greeting name=\"John\" age=10/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/macro/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/macro/vdom-expected.html",
    "content": "\"Hello Frank! You are 30 years old.Hello John! You are 10 years old.\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/macro-body/expected.html",
    "content": "<div><h1>My Alert</h1><p>Something went wrong!</p></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/macro-body/template.marko",
    "content": "<macro|{ title, renderBody }| name=\"alert\">\n    <div>\n        <h1>\n            ${title}\n        </h1>\n        <p>\n            <${renderBody}/>\n        </p>\n    </div>\n</macro>\n\n<alert title=\"My Alert\">\n    Something went wrong!\n</alert>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/macro-body/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/macro-body/vdom-expected.html",
    "content": "<DIV>\n  <H1>\n    \"My Alert\"\n  <P>\n    \"Something went wrong!\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/macro-boolean/expected.html",
    "content": "<div>Hello Frank! You are 30 years old.</div><div class=hidden>Hello John! You are 10 years old.</div><div class=hidden>Hello John! You are 10 years old.</div><div>Hello John! You are 10 years old.</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/macro-boolean/template.marko",
    "content": "<macro|{ name, age, hidden }| name=\"greeting\">\n    <div class=(hidden === true ? 'hidden' : null)>\n        Hello ${name}! You are ${age} years old.\n    </div>\n</macro>\n\n<greeting name=\"Frank\" age=30/>\n<greeting name=\"John\" age=10 hidden/>\n<greeting name=\"John\" age=10 hidden=true />\n<greeting name=\"John\" age=10 hidden=false />"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/macro-boolean/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/macro-boolean/vdom-expected.html",
    "content": "<DIV>\n  \"Hello Frank! You are 30 years old.\"\n<DIV class=\"hidden\">\n  \"Hello John! You are 10 years old.\"\n<DIV class=\"hidden\">\n  \"Hello John! You are 10 years old.\"\n<DIV>\n  \"Hello John! You are 10 years old.\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/macro-no-args/expected.html",
    "content": "Marko is awesomeMarko is awesomeMarko is really awesomeMarko is really awesome"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/macro-no-args/template.marko",
    "content": "<macro name=\"greeting\">\n    Marko is awesome\n</macro>\n\n<macro name=\"greeting2\">\n    Marko is really awesome\n</macro>\n\n<greeting/>\n<greeting()/>\n<greeting2/>\n<greeting2()/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/macro-no-args/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/macro-no-args/vdom-expected.html",
    "content": "\"Marko is awesomeMarko is awesomeMarko is really awesomeMarko is really awesome\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-complex-logic/components/test-message/template.marko",
    "content": "<div class=\"message\">\n    <h1>\n        <${input.title}/>\n    </h1>\n    <div>\n        <${input.body}/>\n    </div>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-complex-logic/expected.html",
    "content": "<div class=message><h1>My title</h1><div></div></div><div class=message><h1>My title 2</h1><div>My body 2</div></div><div class=message><h1>My title 3</h1><div></div></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-complex-logic/template.marko",
    "content": "<test-message>\n    <@title>My title</@title>\n    <@body>\n        <if(false)>\n            <if(false)>\n                My body\n            </if>\n        </if>\n    </@body>\n</test-message>\n<test-message>\n    <@title>My title 2</@title>\n    <@body>\n        <if(true)>\n            <if(true)>\n                My body 2\n            </if>\n        </if>\n    </@body>\n</test-message>\n<test-message>\n    <@title>My title 3</@title>\n    <@body>\n        <if(true)>\n            <if(false)>\n                My body 3\n            </if>\n        </if>\n    </@body>\n</test-message>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-complex-logic/test.js",
    "content": "exports.templateData = {\n  header: {\n    renderBody: function (out) {\n      out.write(\"Header content!\");\n    },\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-complex-logic/vdom-expected.html",
    "content": "<DIV class=\"message\">\n  <H1>\n    \"My title\"\n  <DIV>\n<DIV class=\"message\">\n  <H1>\n    \"My title 2\"\n  <DIV>\n    \"My body 2\"\n<DIV class=\"message\">\n  <H1>\n    \"My title 3\"\n  <DIV>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-complex-logic-repeated/components/test-message/marko-tag.json",
    "content": "{\n  \"@items <item>[]\": {\n    \"@title\": \"string\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-complex-logic-repeated/components/test-message/template.marko",
    "content": "<ul>\n    <for|item| of=input.items>\n        <li>\n            <h1>${item.title}</h1>\n            <${item.renderBody}/>\n        </li>\n    </for>\n</ul>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-complex-logic-repeated/expected.html",
    "content": "<ul><li><h1>Item 1 title</h1>Item 1 body</li><li><h1>Item 3 title</h1>Item 3 body</li><li><h1>Item 4 title</h1>Item 4 body</li><li><h1>Item 5 title</h1>Item 5 body</li><li><h1>Item 6 title</h1>Item 6 body</li></ul>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-complex-logic-repeated/template.marko",
    "content": "<test-message>\n    <@item title=\"Item 1 title\">Item 1 body</@item>\n    <if(false)>\n        <@item title=\"Item 2 title\">SHOULD NOT RENDER</@item>\n    </if>\n    <for|i| from=3 to=5>\n        <@item title=`Item ${i} title`>Item ${i} body</@item>\n    </for>\n    <if(true)>\n        <@item title=\"Item 6 title\">Item 6 body</@item>\n    </if>\n</test-message>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-complex-logic-repeated/test.js",
    "content": "exports.templateData = {\n  header: {\n    renderBody: function (out) {\n      out.write(\"Header content!\");\n    },\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-complex-logic-repeated/vdom-expected.html",
    "content": "<UL>\n  <LI>\n    <H1>\n      \"Item 1 title\"\n    \"Item 1 body\"\n  <LI>\n    <H1>\n      \"Item 3 title\"\n    \"Item 3 body\"\n  <LI>\n    <H1>\n      \"Item 4 title\"\n    \"Item 4 body\"\n  <LI>\n    <H1>\n      \"Item 5 title\"\n    \"Item 5 body\"\n  <LI>\n    <H1>\n      \"Item 6 title\"\n    \"Item 6 body\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-hyphens/components/test-message/template.marko",
    "content": "<div class=\"message\">\n    <h1>\n        <${input.myTitle}/>\n    </h1>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-hyphens/expected.html",
    "content": "<div class=message><h1>My title</h1></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-hyphens/template.marko",
    "content": "<test-message>\n    <@my-title>My title</@my-title>\n</test-message>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-hyphens/test.js",
    "content": "exports.templateData = {\n  header: {\n    renderBody: function (out) {\n      out.write(\"Header content!\");\n    },\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-hyphens/vdom-expected.html",
    "content": "<DIV class=\"message\">\n  <H1>\n    \"My title\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-hyphens-repeated/components/test-message/marko-tag.json",
    "content": "{\n  \"@test-items <test-item>[]\": {\n    \"@title\": \"string\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-hyphens-repeated/components/test-message/template.marko",
    "content": "<ul>\n    <for|item| of=input.testItems>\n        <li>\n            <h1>${item.title}</h1>\n            <${item.renderBody}/>\n        </li>\n    </for>\n</ul>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-hyphens-repeated/expected.html",
    "content": "<ul><li><h1>Item 1 title</h1>Item 1 body</li><li><h1>Item 2 title</h1>Item 2 body</li></ul>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-hyphens-repeated/template.marko",
    "content": "<test-message>\n    <@test-item title=\"Item 1 title\">Item 1 body</@test-item>\n    <@test-item title=\"Item 2 title\">Item 2 body</@test-item>\n</test-message>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-hyphens-repeated/test.js",
    "content": "exports.templateData = {\n  header: {\n    renderBody: function (out) {\n      out.write(\"Header content!\");\n    },\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-hyphens-repeated/vdom-expected.html",
    "content": "<UL>\n  <LI>\n    <H1>\n      \"Item 1 title\"\n    \"Item 1 body\"\n  <LI>\n    <H1>\n      \"Item 2 title\"\n    \"Item 2 body\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-simple/components/test-message/template.marko",
    "content": "<div class=\"message\">\n    <h1>\n        ${input.title.label}: <${input.title}/>\n    </h1>\n    <div>\n        ${input.body.label}: <${input.body}/>\n    </div>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-simple/expected.html",
    "content": "<div class=message><h1>title: My title</h1><div>body: My body</div></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-simple/template.marko",
    "content": "<test-message>\n    <@body label=\"body\">My body</@body>\n    <@title label=\"title\">My title</@title>\n</test-message>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-simple/test.js",
    "content": "exports.templateData = {\n  header: {\n    renderBody: function (out) {\n      out.write(\"Header content!\");\n    },\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-simple/vdom-expected.html",
    "content": "<DIV class=\"message\">\n  <H1>\n    \"title: My title\"\n  <DIV>\n    \"body: My body\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-simple-conditional/components/test-message/template.marko",
    "content": "<div class=\"message\">\n    <h1>\n        <${input.title}/>\n    </h1>\n    <div>\n        <${input.body}/>\n    </div>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-simple-conditional/expected.html",
    "content": "<div class=message><h1>My title</h1><div></div></div><div class=message><h1>My title 2</h1><div>My body 2</div></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-simple-conditional/template.marko",
    "content": "<test-message>\n    <@title>My title</@title>\n    <if(false)>\n        <@body>My body</@body>\n    </if>\n</test-message>\n<test-message>\n    <@title>My title 2</@title>\n    <if(true)>\n        <@body>My body 2</@body>\n    </if>\n</test-message>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-simple-conditional/test.js",
    "content": "exports.templateData = {\n  header: {\n    renderBody: function (out) {\n      out.write(\"Header content!\");\n    },\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-simple-conditional/vdom-expected.html",
    "content": "<DIV class=\"message\">\n  <H1>\n    \"My title\"\n  <DIV>\n<DIV class=\"message\">\n  <H1>\n    \"My title 2\"\n  <DIV>\n    \"My body 2\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-simple-declared/components/test-message/marko-tag.json",
    "content": "{\n  \"<header>\": {\n    \"@label\": \"string\"\n  },\n  \"<body>\": {\n    \"@label\": \"string\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-simple-declared/components/test-message/template.marko",
    "content": "<div class=\"message\">\n    <h1>\n        <b>${input.header.label}:</b> <${input.header}/>\n    </h1>\n    <div>\n        <b>${input.body.label}:</b> <${input.body}/>\n    </div>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-simple-declared/expected.html",
    "content": "<div class=message><h1><b>header:</b> My header</h1><div><b>body:</b> My body</div></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-simple-declared/template.marko",
    "content": "<test-message>\n    <@header label=\"header\">My header</@header>\n    <@body label=\"body\">My body</@body>\n</test-message>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-simple-declared/test.js",
    "content": "exports.templateData = {\n  header: {\n    renderBody: function (out) {\n      out.write(\"Header content!\");\n    },\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-simple-declared/vdom-expected.html",
    "content": "<DIV class=\"message\">\n  <H1>\n    <B>\n      \"header:\"\n    \" My header\"\n  <DIV>\n    <B>\n      \"body:\"\n    \" My body\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-simple-repeated/components/test-message/marko-tag.json",
    "content": "{\n  \"@items <item>[]\": {\n    \"@title\": \"string\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-simple-repeated/components/test-message/template.marko",
    "content": "<ul>\n    <for|item| of=input.items>\n        <li>\n            <h1>${item.title}</h1>\n            <${item.renderBody}/>\n        </li>\n    </for>\n</ul>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-simple-repeated/expected.html",
    "content": "<ul><li><h1>Item 1 title</h1>Item 1 body</li><li><h1>Item 2 title</h1>Item 2 body</li></ul>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-simple-repeated/template.marko",
    "content": "<test-message>\n    <@item title=\"Item 1 title\">Item 1 body</@item>\n    <@item title=\"Item 2 title\">Item 2 body</@item>\n</test-message>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-simple-repeated/test.js",
    "content": "exports.templateData = {\n  header: {\n    renderBody: function (out) {\n      out.write(\"Header content!\");\n    },\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-simple-repeated/vdom-expected.html",
    "content": "<UL>\n  <LI>\n    <H1>\n      \"Item 1 title\"\n    \"Item 1 body\"\n  <LI>\n    <H1>\n      \"Item 2 title\"\n    \"Item 2 body\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-simple-repeated-conditional/components/test-message/marko-tag.json",
    "content": "{\n  \"@items <item>[]\": {\n    \"@title\": \"string\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-simple-repeated-conditional/components/test-message/template.marko",
    "content": "<ul>\n    <for|item| of=input.items>\n        <li>\n            <h1>${item.title}</h1>\n            <${item.renderBody}/>\n        </li>\n    </for>\n</ul>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-simple-repeated-conditional/expected.html",
    "content": "<div class=a><ul><li><h1>Item 1 title</h1>Item 1 body</li><li><h1>Item 2 title</h1>Item 2 body</li></ul></div><div class=b><ul><li><h1>Item 1 title</h1>Item 1 body</li></ul></div><div class=c><ul><li><h1>Item 1 title</h1>Item 1 body</li><li><h1>Item 2 title</h1>Item 2 body</li></ul></div><div class=d><ul><li><h1>Item 2 title</h1>Item 2 body</li></ul></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-simple-repeated-conditional/template.marko",
    "content": "<div.a>\n    <test-message>\n        <@item title=\"Item 1 title\">Item 1 body</@item>\n        <if(true)>\n            <@item title=\"Item 2 title\">Item 2 body</@item>\n        </if>\n    </test-message>\n</div>\n<div.b>\n    <test-message>\n        <@item title=\"Item 1 title\">Item 1 body</@item>\n        <if(false)>\n            <@item title=\"Item 2 title\">Item 2 body</@item>\n        </if>\n    </test-message>\n</div>\n<div.c>\n    <test-message>\n        <if(true)>\n            <@item title=\"Item 1 title\">Item 1 body</@item>\n        </if>\n        <@item title=\"Item 2 title\">Item 2 body</@item>\n    </test-message>\n</div>\n<div.d>\n    <test-message>\n        <if(false)>\n            <@item title=\"Item 1 title\">Item 1 body</@item>\n        </if>\n        <@item title=\"Item 2 title\">Item 2 body</@item>\n    </test-message>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-simple-repeated-conditional/test.js",
    "content": "exports.templateData = {\n  header: {\n    renderBody: function (out) {\n      out.write(\"Header content!\");\n    },\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-shorthand-simple-repeated-conditional/vdom-expected.html",
    "content": "<DIV class=\"a\">\n  <UL>\n    <LI>\n      <H1>\n        \"Item 1 title\"\n      \"Item 1 body\"\n    <LI>\n      <H1>\n        \"Item 2 title\"\n      \"Item 2 body\"\n<DIV class=\"b\">\n  <UL>\n    <LI>\n      <H1>\n        \"Item 1 title\"\n      \"Item 1 body\"\n<DIV class=\"c\">\n  <UL>\n    <LI>\n      <H1>\n        \"Item 1 title\"\n      \"Item 1 body\"\n    <LI>\n      <H1>\n        \"Item 2 title\"\n      \"Item 2 body\"\n<DIV class=\"d\">\n  <UL>\n    <LI>\n      <H1>\n        \"Item 2 title\"\n      \"Item 2 body\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-with-existing-input/components/test/template.marko",
    "content": "-- item: ${JSON.stringify(input.item)}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-with-existing-input/expected.html",
    "content": "item: {\"value\":1}item: [{\"value\":1},{\"value\":2}]item: {\"value\":1}item: [{\"value\":1},{\"value\":2}]"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-with-existing-input/template.marko",
    "content": "<test item={ value: \"BAD\" }>\n    <@item value=1/>\n</>\n\n<test item={ value: \"BAD\" }>\n    <@item value=1/>\n    <@item value=2/>\n</>\n\n$ const stuff = { item: { value: \"BAD\" } };\n<test ...stuff>\n    <@item value=1/>\n</>\n\n<test ...stuff>\n    <@item value=1/>\n    <@item value=2/>\n</>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-with-existing-input/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-with-existing-input/vdom-expected.html",
    "content": "\"item: {\\\"value\\\":1}item: [{\\\"value\\\":1},{\\\"value\\\":2}]item: {\\\"value\\\":1}item: [{\\\"value\\\":1},{\\\"value\\\":2}]\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-with-render-body-params/components/test/template.marko",
    "content": "-- item: ${input.item.value}\n<${input.renderBody}(2)/>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-with-render-body-params/expected.html",
    "content": "item: 1param: 2"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-with-render-body-params/template.marko",
    "content": "<test|x|>\n    <@item value=1/>\n    param: ${x}\n</>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-with-render-body-params/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-with-render-body-params/vdom-expected.html",
    "content": "\"item: 1param: 2\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-with-scriptlet/components/test/template.marko",
    "content": "<for|item| of=input.item>\n    ${item.value}\n</for>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-with-scriptlet/expected.html",
    "content": "12"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-with-scriptlet/template.marko",
    "content": "<test>\n    $ let x = 1;\n    <@item value=x/>\n    $ x = 2;\n    <@item value=x/>\n</>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-with-scriptlet/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tag-with-scriptlet/vdom-expected.html",
    "content": "\"12\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags/expected.html",
    "content": "<div class=overlay><div class=overlay-header>Header content!</div><div class=\"overlay-body my-body\">Body content</div><div class=\"overlay-footer my-footer\">Footer content</div></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags/marko.json",
    "content": "{\n  \"tags-dir\": \"./tags\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags/tags/test-nested-tags-overlay/marko-tag.json",
    "content": "{\n  \"renderer\": \"./renderer\",\n  \"@header <header>\": {\n    \"@class\": {\n      \"type\": \"string\",\n      \"target-property\": \"className\"\n    }\n  },\n  \"@body <body>\": {\n    \"@class\": {\n      \"type\": \"string\",\n      \"target-property\": \"className\"\n    }\n  },\n  \"nested-tags\": {\n    \"footer\": {\n      \"@class\": {\n        \"type\": \"string\",\n        \"target-property\": \"className\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags/tags/test-nested-tags-overlay/renderer.js",
    "content": "var template = require(\"./template.marko\").default;\n\nexports.renderer = function (input, out) {\n  var header = input.header;\n  var body = input.body;\n  var footer = input.footer;\n\n  template.render(\n    {\n      header: header,\n      body: body,\n      footer: footer,\n    },\n    out,\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags/tags/test-nested-tags-overlay/template.marko",
    "content": "<div class=\"overlay\">\n    <if(input.header)>\n        <div class=\"overlay-header\">\n            <${input.header}/>\n        </div>\n    </if>\n    <if(input.body)>\n        <div class=`overlay-body ${input.body.className}`>\n            <${input.body}/>\n        </div>\n    </if>\n    <if(input.footer)>\n        <div class=`overlay-footer ${input.footer.className}`>\n            <${input.footer}/>\n        </div>\n    </if>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags/template.marko",
    "content": "<test-nested-tags-overlay header=input.header>\n    <@body class=\"my-body\">Body content</@body>\n    <@footer class=\"my-footer\">Footer content</@footer>\n</test-nested-tags-overlay>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags/test.js",
    "content": "exports.templateData = {\n  header: {\n    renderBody: function (out) {\n      out.write(\"Header content!\");\n    },\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags/vdom-expected.html",
    "content": "<DIV class=\"overlay\">\n  <DIV class=\"overlay-header\">\n    \"Header content!\"\n  <DIV class=\"overlay-body my-body\">\n    \"Body content\"\n  <DIV class=\"overlay-footer my-footer\">\n    \"Footer content\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-concise/expected.html",
    "content": "<div class=tabs><ul><li>Tab 1</li><li>Tab 2</li><li>Tab 3</li></ul><div class=tab-content><div class=tab>Tab 1 content</div><div class=tab></div><div class=tab>Tab 3 content</div></div></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-concise/marko.json",
    "content": "{\n  \"tags-dir\": \"./tags\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-concise/tags/test-nested-tags-tabs/marko-tag.json",
    "content": "{\n  \"renderer\": \"./renderer\",\n  \"@orientation\": \"string\",\n  \"@tabs <tab>[]\": {\n    \"@title\": \"string\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-concise/tags/test-nested-tags-tabs/renderer.js",
    "content": "var template = require(\"./template.marko\").default;\n\nexports.renderer = function (input, out) {\n  var tabs = input.tabs;\n\n  template.render(\n    {\n      tabs: tabs,\n    },\n    out,\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-concise/tags/test-nested-tags-tabs/template.marko",
    "content": "$ var tabs = input.tabs;\n<div class=\"tabs\">\n    <ul>\n        <for|tab| of=tabs>\n            <li>${tab.title}</li>\n        </for>\n    </ul>\n    <div class=\"tab-content\">\n        <for|tab| of=tabs>\n            <div class=\"tab\">\n                <if(tab.renderBody)>\n                    <${tab}/>\n                </if>\n            </div>\n        </for>\n    </div>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-concise/template.marko",
    "content": "<test-nested-tags-tabs>\n    <@tab title=\"Tab 1\">Tab 1 content</@tab>\n    <@tab title=\"Tab 2\"/>\n    <@tab title=\"Tab 3\">Tab 3 content</@tab>\n</test-nested-tags-tabs>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-concise/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-concise/vdom-expected.html",
    "content": "<DIV class=\"tabs\">\n  <UL>\n    <LI>\n      \"Tab 1\"\n    <LI>\n      \"Tab 2\"\n    <LI>\n      \"Tab 3\"\n  <DIV class=\"tab-content\">\n    <DIV class=\"tab\">\n      \"Tab 1 content\"\n    <DIV class=\"tab\">\n    <DIV class=\"tab\">\n      \"Tab 3 content\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-deep/expected.html",
    "content": "<div>Foo: bar Body: <b>Deeply nested!</b></div><div>Foo: baz Body: <b>Another deeply nested!</b></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-deep/marko.json",
    "content": "{\n  \"tags-dir\": \"./tags\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-deep/tags/test-nested-tags-deep/marko-tag.json",
    "content": "{\n  \"renderer\": \"./renderer\",\n  \"@class\": \"string\",\n  \"@items <item>[]\": {\n    \"@foo\": \"string\",\n    \"@body <body>\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-deep/tags/test-nested-tags-deep/renderer.js",
    "content": "var template = require(\"./template.marko\").default;\n\nmodule.exports = function (input, out) {\n  template.render(input, out);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-deep/tags/test-nested-tags-deep/template.marko",
    "content": "<for|item| of=input.items>\n    <div>\n        Foo: ${item.foo} Body:\n        <if(item.body)>\n            <${item.body}/>\n        </if>\n    </div>\n</for>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-deep/template.marko",
    "content": "<test-nested-tags-deep class=\"nested-tags-deep\">\n    <@item foo=\"bar\">\n        <@body>\n            <b>Deeply nested!</b>\n        </@body>\n    </@item>\n    <@item foo=\"baz\">\n        <@body>\n            <b>Another deeply nested!</b>\n        </@body>\n    </@item>\n</test-nested-tags-deep>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-deep/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-deep/vdom-expected.html",
    "content": "<DIV>\n  \"Foo: bar Body: \"\n  <B>\n    \"Deeply nested!\"\n<DIV>\n  \"Foo: baz Body: \"\n  <B>\n    \"Another deeply nested!\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-empty-body/expected.html",
    "content": "<div class=tabs><ul><li>Tab 1</li><li>Tab 2</li><li>Tab 3</li></ul><div class=tab-content><div class=tab>Tab 1 content</div><div class=tab></div><div class=tab>Tab 3 content</div></div></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-empty-body/marko.json",
    "content": "{\n  \"tags-dir\": \"./tags\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-empty-body/tags/test-nested-tags-tabs/marko-tag.json",
    "content": "{\n  \"renderer\": \"./renderer\",\n  \"@orientation\": \"string\",\n  \"@tabs <tab>[]\": {\n    \"@title\": \"string\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-empty-body/tags/test-nested-tags-tabs/renderer.js",
    "content": "var template = require(\"./template.marko\").default;\n\nexports.renderer = function (input, out) {\n  var tabs = input.tabs;\n\n  template.render(\n    {\n      tabs: tabs,\n    },\n    out,\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-empty-body/tags/test-nested-tags-tabs/template.marko",
    "content": "$ var tabs = input.tabs;\n<div class=\"tabs\">\n    <ul>\n        <for|tab| of=tabs>\n            <li>${tab.title}</li>\n        </for>\n    </ul>\n    <div class=\"tab-content\">\n        <for|tab| of=tabs>\n            <div class=\"tab\">\n                <if(tab.renderBody)>\n                    <${tab}/>\n                </if>\n            </div>\n        </for>\n    </div>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-empty-body/template.marko",
    "content": "<test-nested-tags-tabs>\n    <@tab title=\"Tab 1\">Tab 1 content</@tab>\n    <@tab title=\"Tab 2\"/>\n    <@tab title=\"Tab 3\">Tab 3 content</@tab>\n</test-nested-tags-tabs>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-empty-body/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-empty-body/vdom-expected.html",
    "content": "<DIV class=\"tabs\">\n  <UL>\n    <LI>\n      \"Tab 1\"\n    <LI>\n      \"Tab 2\"\n    <LI>\n      \"Tab 3\"\n  <DIV class=\"tab-content\">\n    <DIV class=\"tab\">\n      \"Tab 1 content\"\n    <DIV class=\"tab\">\n    <DIV class=\"tab\">\n      \"Tab 3 content\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-repeatable/components/fancy-table.marko",
    "content": "// @ts-check\n/**\n * @template T\n * @typedef {{\n *  data: T[],\n *  column: Marko.AttrTag<{ renderBody: Marko.Body<[T]> }>\n * }} Input\n */\n<table class=\"fancy\">\n    <for|row| of=input.data>\n        <tr>\n            <for|column| of=input.column>\n                <td>\n                    <${column.renderBody}(row)/>\n                </td>\n            </for>\n        </tr>\n    </for>\n</table>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-repeatable/expected.html",
    "content": "<table class=fancy><tr><td>A 1</td></tr><tr><td>A 2</td></tr></table><table class=fancy><tr><td>A 1</td><td>B 1</td></tr><tr><td>A 2</td><td>B 2</td></tr></table><table class=fancy><tr><td>0 1</td><td>1 1</td><td>2 1</td></tr><tr><td>0 2</td><td>1 2</td><td>2 2</td></tr></table><table class=fancy><tr><td>A 1</td><td>B 1</td></tr><tr><td>A 2</td><td>B 2</td></tr></table><table class=fancy><tr><td>B 1</td></tr><tr><td>B 2</td></tr></table>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-repeatable/template.marko",
    "content": "$ const data = [1, 2]\n\n<fancy-table data=data>\n    <@column|i|>\n      A ${i}\n    </>\n</fancy-table>\n\n<fancy-table data=data>\n    <@column|i|>\n      A ${i}\n    </>\n\n    <@column|i|>\n      B ${i}\n    </>\n</fancy-table>\n\n<fancy-table data=data>\n    <for|i| from=0 to=2>\n        <@column|j|>\n            ${i} ${j}\n        </>\n    </>\n</fancy-table>\n\n<fancy-table data=data>\n    <if(true)>\n      <@column|i|>\n        A ${i}\n      </>\n    </if>\n\n    <@column|i|>\n      B ${i}\n    </>\n</fancy-table>\n\n<fancy-table data=data>\n    <if(false)>\n      <@column|i|>\n        A ${i}\n      </>\n    </if>\n\n    <@column|i|>\n      B ${i}\n    </>\n</fancy-table>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-repeatable/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-repeatable/vdom-expected.html",
    "content": "<TABLE class=\"fancy\">\n  <TR>\n    <TD>\n      \"A 1\"\n  <TR>\n    <TD>\n      \"A 2\"\n<TABLE class=\"fancy\">\n  <TR>\n    <TD>\n      \"A 1\"\n    <TD>\n      \"B 1\"\n  <TR>\n    <TD>\n      \"A 2\"\n    <TD>\n      \"B 2\"\n<TABLE class=\"fancy\">\n  <TR>\n    <TD>\n      \"0 1\"\n    <TD>\n      \"1 1\"\n    <TD>\n      \"2 1\"\n  <TR>\n    <TD>\n      \"0 2\"\n    <TD>\n      \"1 2\"\n    <TD>\n      \"2 2\"\n<TABLE class=\"fancy\">\n  <TR>\n    <TD>\n      \"A 1\"\n    <TD>\n      \"B 1\"\n  <TR>\n    <TD>\n      \"A 2\"\n    <TD>\n      \"B 2\"\n<TABLE class=\"fancy\">\n  <TR>\n    <TD>\n      \"B 1\"\n  <TR>\n    <TD>\n      \"B 2\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-repeated/expected.html",
    "content": "<div class=tabs><ul><li>Tab 1</li><li>Tab 3</li></ul><div class=tab-content><div class=tab>Tab 1 content</div><div class=tab>Tab 3 content</div></div></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-repeated/marko.json",
    "content": "{\n  \"tags-dir\": \"./tags\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-repeated/tags/test-nested-tags-tabs/marko-tag.json",
    "content": "{\n  \"renderer\": \"./renderer\",\n  \"@orientation\": \"string\",\n  \"@tabs <tab>[]\": {\n    \"@title\": \"string\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-repeated/tags/test-nested-tags-tabs/renderer.js",
    "content": "var template = require(\"./template.marko\").default;\n\nexports.renderer = function (input, out) {\n  var tabs = input.tabs;\n\n  template.render(\n    {\n      tabs: tabs,\n    },\n    out,\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-repeated/tags/test-nested-tags-tabs/template.marko",
    "content": "$ var tabs = input.tabs;\n<div class=\"tabs\">\n    <ul>\n        <for|tab| of=tabs>\n            <li>${tab.title}</li>\n        </for>\n    </ul>\n    <div class=\"tab-content\">\n        <for|tab| of=tabs>\n            <div class=\"tab\">\n                <if(tab.renderBody)>\n                    <${tab}/>\n                </if>\n            </div>\n        </for>\n    </div>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-repeated/template.marko",
    "content": "<test-nested-tags-tabs>\n    <@tab title=\"Tab 1\">Tab 1 content</@tab>\n    <if(false)>\n        <@tab title=\"Tab 2\">Tab 2 content</@tab>\n    </if>\n    <@tab title=\"Tab 3\">Tab 3 content</@tab>\n</test-nested-tags-tabs>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-repeated/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-repeated/vdom-expected.html",
    "content": "<DIV class=\"tabs\">\n  <UL>\n    <LI>\n      \"Tab 1\"\n    <LI>\n      \"Tab 3\"\n  <DIV class=\"tab-content\">\n    <DIV class=\"tab\">\n      \"Tab 1 content\"\n    <DIV class=\"tab\">\n      \"Tab 3 content\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-repeated-parent/expected.html",
    "content": "<div class=overlay><div class=\"overlay-header \">Header content!</div><div class=\"overlay-body my-body\">Body content</div><div class=\"overlay-footer my-footer\">Footer content</div></div><div class=overlay><div class=\"overlay-body my-body\">Body content 2</div><div class=\"overlay-footer my-footer\">Footer content 2</div></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-repeated-parent/marko.json",
    "content": "{\n  \"tags-dir\": \"./tags\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-repeated-parent/tags/test-nested-tags-overlay/marko-tag.json",
    "content": "{\n  \"renderer\": \"./renderer\",\n  \"@header <header>\": {\n    \"@class\": {\n      \"type\": \"string\",\n      \"target-property\": \"className\"\n    }\n  },\n  \"@body <body>\": {\n    \"@class\": {\n      \"type\": \"string\",\n      \"target-property\": \"className\"\n    }\n  },\n  \"nested-tags\": {\n    \"footer\": {\n      \"@class\": {\n        \"type\": \"string\",\n        \"target-property\": \"className\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-repeated-parent/tags/test-nested-tags-overlay/renderer.js",
    "content": "var template = require(\"./template.marko\").default;\n\nexports.renderer = function (input, out) {\n  var header = input.header;\n  var body = input.body;\n  var footer = input.footer;\n\n  template.render(\n    {\n      header: header,\n      body: body,\n      footer: footer,\n    },\n    out,\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-repeated-parent/tags/test-nested-tags-overlay/template.marko",
    "content": "<div class=\"overlay\">\n    <if(input.header)>\n        <div class=`overlay-header ${input.header.className || \"\"}`>\n            <${input.header}/>\n        </div>\n    </if>\n    <if(input.body)>\n        <div class=`overlay-body ${input.body.className}`>\n            <${input.body}/>\n        </div>\n    </if>\n    <if(input.footer)>\n        <div class=`overlay-footer ${input.footer.className}`>\n            <${input.footer}/>\n        </div>\n    </if>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-repeated-parent/template.marko",
    "content": "<test-nested-tags-overlay header=input.header>\n    <@body class=\"my-body\">Body content</@body>\n    <@footer class=\"my-footer\">Footer content</@footer>\n</test-nested-tags-overlay>\n<test-nested-tags-overlay>\n    <@body class=\"my-body\">Body content 2</@body>\n    <@footer class=\"my-footer\">Footer content 2</@footer>\n</test-nested-tags-overlay>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-repeated-parent/test.js",
    "content": "exports.templateData = {\n  header: {\n    renderBody: function (out) {\n      out.write(\"Header content!\");\n    },\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-repeated-parent/vdom-expected.html",
    "content": "<DIV class=\"overlay\">\n  <DIV class=\"overlay-header \">\n    \"Header content!\"\n  <DIV class=\"overlay-body my-body\">\n    \"Body content\"\n  <DIV class=\"overlay-footer my-footer\">\n    \"Footer content\"\n<DIV class=\"overlay\">\n  <DIV class=\"overlay-body my-body\">\n    \"Body content 2\"\n  <DIV class=\"overlay-footer my-footer\">\n    \"Footer content 2\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-repeated-with-default-render-body/components/test-nested-tags-tabs/index.marko",
    "content": "<div class=\"tabs\">\n    <ul>\n        <for|tab| of=input.tabs>\n            <li>${tab.title}</li>\n        </for>\n    </ul>\n    <div class=\"tab-content\">\n        <${input}/>\n    </div>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-repeated-with-default-render-body/components/test-nested-tags-tabs/marko-tag.json",
    "content": "{\n  \"@orientation\": \"string\",\n  \"@tabs <tab>[]\": {\n    \"@title\": \"string\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-repeated-with-default-render-body/expected.html",
    "content": "<div class=tabs><ul><li>A</li><li>B</li></ul><div class=tab-content>Content</div></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-repeated-with-default-render-body/template.marko",
    "content": "static const tabs = [{\n    title: \"A\",\n    content: \"1\"\n}, {\n    title: \"B\",\n    content: \"2\"\n}]\n\n<test-nested-tags-tabs>\n    <for|tab| of=tabs>\n        <@tab title=tab.title/>\n    </for>\n\n    Content\n</test-nested-tags-tabs>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-repeated-with-default-render-body/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-repeated-with-default-render-body/vdom-expected.html",
    "content": "<DIV class=\"tabs\">\n  <UL>\n    <LI>\n      \"A\"\n    <LI>\n      \"B\"\n  <DIV class=\"tab-content\">\n    \"Content\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-self-closing/expected.html",
    "content": "<div class=tabs><ul><li>Tab 1</li><li>Tab 2</li><li>Tab 3</li></ul><div class=tab-content><div class=tab>Tab 1 content</div><div class=tab></div><div class=tab>Tab 3 content</div></div></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-self-closing/marko.json",
    "content": "{\n  \"tags-dir\": \"./tags\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-self-closing/tags/test-nested-tags-tabs/marko-tag.json",
    "content": "{\n  \"renderer\": \"./renderer\",\n  \"@orientation\": \"string\",\n  \"@tabs <tab>[]\": {\n    \"@title\": \"string\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-self-closing/tags/test-nested-tags-tabs/renderer.js",
    "content": "var template = require(\"./template.marko\").default;\n\nexports.renderer = function (input, out) {\n  var tabs = input.tabs;\n\n  template.render(\n    {\n      tabs: tabs,\n    },\n    out,\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-self-closing/tags/test-nested-tags-tabs/template.marko",
    "content": "$ var tabs = input.tabs;\n<div class=\"tabs\">\n    <ul>\n        <for|tab| of=tabs>\n            <li>${tab.title}</li>\n        </for>\n    </ul>\n    <div class=\"tab-content\">\n        <for|tab| of=tabs>\n            <div class=\"tab\">\n                <if(tab.renderBody)>\n                    <${tab}/>\n                </if>\n            </div>\n        </for>\n    </div>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-self-closing/template.marko",
    "content": "<test-nested-tags-tabs>\n    <@tab title=\"Tab 1\">Tab 1 content</@tab>\n    <@tab title=\"Tab 2\"/>\n    <@tab title=\"Tab 3\">Tab 3 content</@tab>\n</test-nested-tags-tabs>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-self-closing/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/nested-tags-self-closing/vdom-expected.html",
    "content": "<DIV class=\"tabs\">\n  <UL>\n    <LI>\n      \"Tab 1\"\n    <LI>\n      \"Tab 2\"\n    <LI>\n      \"Tab 3\"\n  <DIV class=\"tab-content\">\n    <DIV class=\"tab\">\n      \"Tab 1 content\"\n    <DIV class=\"tab\">\n    <DIV class=\"tab\">\n      \"Tab 3 content\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/open-tag-only/expected.html",
    "content": "<test-open-tag-only></test-open-tag-only>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/open-tag-only/marko.json",
    "content": "{\n  \"<test-open-tag-only>\": {\n    \"html\": true,\n    \"parse-options\": {\n      \"openTagOnly\": true\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/open-tag-only/template.marko",
    "content": "<test-open-tag-only>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/open-tag-only/test.js",
    "content": "exports.templateData = {};\nexports.loadOptions = {\n  preserveWhitespace: true,\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/open-tag-only/vdom-expected.html",
    "content": "<TEST-OPEN-TAG-ONLY>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/open-tag-only-renderer/expected.html",
    "content": "<span>Hello World</span>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/open-tag-only-renderer/marko.json",
    "content": "{\n  \"<test-open-tag-only>\": {\n    \"renderer\": \"./renderer.js\",\n    \"parse-options\": {\n      \"openTagOnly\": true\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/open-tag-only-renderer/renderer.js",
    "content": "module.exports = function (input, out) {\n  out.write(\"<span>Hello World</span>\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/open-tag-only-renderer/template.marko",
    "content": "<test-open-tag-only>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/open-tag-only-renderer/test.js",
    "content": "exports.templateData = {};\nexports.loadOptions = {\n  preserveWhitespace: true,\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/open-tag-only-renderer/vdom-expected.html",
    "content": "<SPAN>\n  \"Hello World\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/paren-grouping/expected.html",
    "content": "<p>B</p>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/paren-grouping/template.marko",
    "content": "static var state = \"a\";\nstatic {\n    var states = {\n        foo: \"b\"\n    };\n}\n\n<p>${(states[\"foo\"] || state)[0].toUpperCase()}</p>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/paren-grouping/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/paren-grouping/vdom-expected.html",
    "content": "<P>\n  \"B\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/pattern-attr/expected.html",
    "content": "<input type=text pattern=\\w{2,20}>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/pattern-attr/template.marko",
    "content": "<input type=\"text\" pattern=/\\w{2,20}/ />"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/pattern-attr/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/pattern-attr/vdom-expected.html",
    "content": "<INPUT pattern=\"\\w{2,20}\" type=\"text\">\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/pattern-attr-runtime/expected.html",
    "content": "<input type=text pattern=\\w{2,20}>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/pattern-attr-runtime/template.marko",
    "content": "<input type=\"text\" pattern=(true && /\\w{2,20}/) />"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/pattern-attr-runtime/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/pattern-attr-runtime/vdom-expected.html",
    "content": "<INPUT pattern=\"\\w{2,20}\" type=\"text\">\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/placeholders-body-expressions/expected.html",
    "content": "Hello World!"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/placeholders-body-expressions/template.marko",
    "content": "---\nHello ${({name: \"World\"}).name}!\n---"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/placeholders-body-expressions/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/placeholders-body-expressions/vdom-expected.html",
    "content": "\"Hello World!\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/preserveWhitespace-global/expected.html",
    "content": "<div>This Whitespace Should Be Preserved</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/preserveWhitespace-global/template.marko",
    "content": "\n\n<div>\n    This\n    Whitespace\n    Should\n    Be\n    Preserved\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/preserveWhitespace-global/test.js",
    "content": "exports.templateData = {};\nexports.preserveWhitespaceGlobal = true;\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/preserveWhitespace-global/vdom-expected.html",
    "content": "<DIV>\n  \"This Whitespace Should Be Preserved\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/preserveWhitespace-load-option/expected.html",
    "content": "<div>This whitespace should be preserved. preserveWhitespace is set to true See: test.js</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/preserveWhitespace-load-option/template.marko",
    "content": "<div>\n    This whitespace\n    should be\n    preserved.\n\n    preserveWhitespace is set to true\n    See: test.js\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/preserveWhitespace-load-option/test.js",
    "content": "exports.templateData = {};\nexports.loadOptions = {\n  preserveWhitespace: true,\n};\nexports.skip_vdom = \"load options not supported - use compiler options\";\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/regexp-attr/expected.html",
    "content": "<div class=\"hello bar\"></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/regexp-attr/template.marko",
    "content": "<div class='hello FOO'.replace(/foo/gi, 'bar')></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/regexp-attr/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/regexp-attr/vdom-expected.html",
    "content": "<DIV class=\"hello bar\">\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/renderer-dir-main.js/expected.html",
    "content": "Hello Frank!"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/renderer-dir-main.js/index.js",
    "content": "module.exports = function (input, out) {\n  out.write(\"Hello \" + input.name + \"!\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/renderer-dir-main.js/marko.json",
    "content": "{\n  \"<test-root-renderer>\": {\n    \"renderer\": \"./\",\n    \"@name\": \"string\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/renderer-dir-main.js/template.marko",
    "content": "<test-root-renderer name=\"Frank\"/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/renderer-dir-main.js/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/renderer-dir-main.js/vdom-expected.html",
    "content": "\"Hello Frank!\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/renderer-index.js/expected.html",
    "content": "Hello Frank!"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/renderer-index.js/marko.json",
    "content": "{\n  \"<test-root-renderer>\": {\n    \"renderer\": \"./renderer\",\n    \"@name\": \"string\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/renderer-index.js/renderer/index.js",
    "content": "module.exports = function (input, out) {\n  out.write(\"Hello \" + input.name + \"!\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/renderer-index.js/template.marko",
    "content": "<test-root-renderer name=\"Frank\"/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/renderer-index.js/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/renderer-index.js/vdom-expected.html",
    "content": "\"Hello Frank!\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/require/expected.html",
    "content": "Hello WORLD! Hello World!"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/require/template.marko",
    "content": "static {\n    var testHelpers = require('./test-helpers')\n}\n---\nHello ${testHelpers.upperCase(\"world\")}!\nHello ${testHelpers.trim(\"   World   \")}!\n---"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/require/test-helpers.js",
    "content": "module.exports = {\n  trim: function (str) {\n    return str ? str.trim() : str;\n  },\n  upperCase: function (str) {\n    return str ? str.toUpperCase(str) : str;\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/require/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/require/vdom-expected.html",
    "content": "\"Hello WORLD! Hello World!\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/reserved-words/expected.html",
    "content": "[my-custom-tag] WorldHello short"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/reserved-words/marko.json",
    "content": "{\n  \"<my-custom-tag>\": {\n    \"renderer\": \"./my-custom-tag.js\",\n    \"@short\": \"string\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/reserved-words/my-custom-tag.js",
    "content": "module.exports = function (input, out) {\n  out.write(\"[my-custom-tag] \" + input.short);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/reserved-words/template.marko",
    "content": "<my-custom-tag short=\"World\"/>\n\n-- Hello ${input.short}"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/reserved-words/test.js",
    "content": "exports.templateData = {\n  short: \"short\",\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/reserved-words/vdom-expected.html",
    "content": "\"[my-custom-tag] WorldHello short\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/scanned-tags/expected.html",
    "content": "scanned-a: Hello Frankscanned-b: Hello Frankscanned-c: Hello Frankscanned-d: Hello Frankscanned-e: Hello Frankscanned-f: Hello Frankscanned-g: Hello Frankscanned-h: Hello Frank"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/scanned-tags/marko.json",
    "content": "{\n  \"tags-dir\": \"./tags\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/scanned-tags/tags/scanned-a/renderer.js",
    "content": "module.exports = function render(input, out) {\n  out.write(\"scanned-a: Hello \" + input.name);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/scanned-tags/tags/scanned-b/template.marko",
    "content": "---\nscanned-b: Hello ${input.name}\n---"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/scanned-tags/tags/scanned-c/marko-tag.json",
    "content": "{\n  \"attributes\": {\n    \"name\": {\n      \"type\": \"string\",\n      \"target-property\": \"NAME\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/scanned-tags/tags/scanned-c/renderer.js",
    "content": "module.exports = function render(input, out) {\n  out.write(\"scanned-c: Hello \" + input.NAME);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/scanned-tags/tags/scanned-d/marko-tag.json",
    "content": "{\n  \"attributes\": {\n    \"name\": {\n      \"type\": \"string\",\n      \"target-property\": \"NAME\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/scanned-tags/tags/scanned-d/template.marko",
    "content": "---\nscanned-d: Hello ${input.NAME}\n---"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/scanned-tags/tags/scanned-e/marko-tag.json",
    "content": "{\n  \"attributes\": {\n    \"name\": {\n      \"type\": \"string\",\n      \"target-property\": \"NAME\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/scanned-tags/tags/scanned-e/renderer.js",
    "content": "module.exports = function render(input, out) {\n  out.write(\"scanned-e: Hello \" + input.NAME);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/scanned-tags/tags/scanned-f/marko-tag.json",
    "content": "{\n  \"attributes\": {\n    \"name\": {\n      \"type\": \"string\",\n      \"target-property\": \"NAME\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/scanned-tags/tags/scanned-f/renderer.js",
    "content": "module.exports = function render(input, out) {\n  out.write(\"scanned-f: Hello \" + input.NAME);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/scanned-tags/tags/scanned-g/index.js",
    "content": "exports.renderer = function (input, out) {\n  out.write(\"scanned-g: Hello \" + input.name);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/scanned-tags/tags/scanned-h/index.js",
    "content": "exports.renderer = function (input, out) {\n  out.write(\"scanned-h: Hello \" + input.firstName);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/scanned-tags/template.marko",
    "content": "<scanned-a name=\"Frank\"/>\n<scanned-b name=\"Frank\"/>\n<scanned-c name=\"Frank\"/>\n<scanned-d name=\"Frank\"/>\n<scanned-e name=\"Frank\"/>\n<scanned-f name=\"Frank\"/>\n<scanned-g name=\"Frank\"/>\n<scanned-h first-name=\"Frank\"/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/scanned-tags/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/scanned-tags/vdom-expected.html",
    "content": "\"scanned-a: Hello Frankscanned-b: Hello Frankscanned-c: Hello Frankscanned-d: Hello Frankscanned-e: Hello Frankscanned-f: Hello Frankscanned-g: Hello Frankscanned-h: Hello Frank\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/script/expected.html",
    "content": "<script type=text/javascript>\n    console.log('hello world');\n</script>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/script/template.marko",
    "content": "<script type=\"text/javascript\">\n    console.log('hello world');\n</script>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/script/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/script/vdom-expected.html",
    "content": "<SCRIPT type=\"text/javascript\">\n  \"\\n    console.log('hello world');\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/script-escaped-placeholder/expected.html",
    "content": "<script type=application/json>\n    {\n        \"event\": \"${base}=${track}\"\n    }\n</script>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/script-escaped-placeholder/template.marko",
    "content": "<script type=\"application/json\">\n    {\n        \"event\": \"\\${base}=\\${track}\"\n    }\n</script>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/script-escaped-placeholder/vdom-expected.html",
    "content": "<SCRIPT type=\"application/json\">\n  \"\\n    {\\n        \\\"event\\\": \\\"${base}=${track}\\\"\\n    }\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/script-json-stringify/expected.html",
    "content": "<script type=application/json>\n{\"requests\":{\"base\":\"/abc\",\"pageview\":\"${base}=${ping}\",\"event\":\"${base}=${track}\"}}\n</script>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/script-json-stringify/template.marko",
    "content": "$ var basePath='/abc';\n\n<script type=\"application/json\">\n${JSON.stringify({\n        \"requests\": {\n            \"base\": basePath,\n            \"pageview\": \"\\${base}=\\${ping}\",\n            \"event\": \"\\${base}=\\${track}\"\n        }\n})}\n</script>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/script-json-stringify/vdom-expected.html",
    "content": "<SCRIPT type=\"application/json\">\n  \"\\n{\\\"requests\\\":{\\\"base\\\":\\\"/abc\\\",\\\"pageview\\\":\\\"${base}=${ping}\\\",\\\"event\\\":\\\"${base}=${track}\\\"}}\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/script-string-literal-placeholder/expected.html",
    "content": "<script>\nvar content = 'abc';\nvar foo = `Text 1: ${content}`;\n</script>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/script-string-literal-placeholder/template.marko",
    "content": "<script>\nvar content = 'abc';\nvar foo = `Text 1: ${content}`;\n</script>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/script-string-literal-placeholder/test.js",
    "content": "exports.templateData = {\n  name: \"World\",\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/script-string-literal-placeholder/vdom-expected.html",
    "content": "<SCRIPT>\n  \"\\nvar content = 'abc';\\nvar foo = `Text 1: ${content}`;\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/script-tag-entities/expected.html",
    "content": "<script>console.log('<div>Hello <script>evil\\x3C/script></div>');</script>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/script-tag-entities/template.marko",
    "content": "<script>console.log('<div>Hello ${input.name}</div>');</script>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/script-tag-entities/test.js",
    "content": "exports.templateData = {\n  name: \"<script>evil</script>\",\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/script-tag-entities/vdom-expected.html",
    "content": "<SCRIPT>\n  \"console.log('<div>Hello <script>evil</script></div>');\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/self-closing-dynamic/expected.html",
    "content": "<input></input>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/self-closing-dynamic/template.marko",
    "content": "$ const tag = 'input';\n\n<${tag} />\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/self-closing-dynamic/vdom-expected.html",
    "content": "<INPUT>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/shorthand-class-merge/expected.html",
    "content": "<div class=\"foo bar\"></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/shorthand-class-merge/template.marko",
    "content": "div.foo class=\"bar\""
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/shorthand-class-merge/test.js",
    "content": "exports.templateData = {\n  name: \"Frank\",\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/shorthand-class-merge/vdom-expected.html",
    "content": "<DIV class=\"foo bar\">\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/shorthand-class-merge2/expected.html",
    "content": "<div class=\"foo baz\"></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/shorthand-class-merge2/template.marko",
    "content": "div.foo.${input.missing} class=\"baz\""
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/shorthand-class-merge2/test.js",
    "content": "exports.templateData = {\n  name: \"Frank\",\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/shorthand-class-merge2/vdom-expected.html",
    "content": "<DIV class=\"foo baz\">\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/shorthand-class-plus-class-obj/expected.html",
    "content": "<div class=\"foo bar\"></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/shorthand-class-plus-class-obj/template.marko",
    "content": "div.foo class={bar: true, baz: false}"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/shorthand-class-plus-class-obj/test.js",
    "content": "exports.templateData = {\n  name: \"Marko\",\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/shorthand-class-plus-class-obj/vdom-expected.html",
    "content": "<DIV class=\"foo bar\">\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/shorthand-classes-many-classes/expected.html",
    "content": "<div class=\"foo bar baz bat\"></div><div class=\"foo bar test123 baz\"></div><div class=\"foo bar baz test\"></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/shorthand-classes-many-classes/template.marko",
    "content": ".foo.bar.baz.bat\n.foo.bar.${input.cls}.baz\n.foo.bar.baz class=\"test\""
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/shorthand-classes-many-classes/test.js",
    "content": "exports.templateData = {\n  cls: \"test123\",\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/shorthand-classes-many-classes/vdom-expected.html",
    "content": "<DIV class=\"foo bar baz bat\">\n<DIV class=\"foo bar test123 baz\">\n<DIV class=\"foo bar baz test\">\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/shorthand-div-id/expected.html",
    "content": "<div style=\"color: red\" id=foo>Hello Frank!</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/shorthand-div-id/template.marko",
    "content": "div#foo style=\"color: red;\"\n    -- Hello ${input.name}!"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/shorthand-div-id/test.js",
    "content": "exports.templateData = {\n  name: \"Frank\",\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/shorthand-div-id/vdom-expected.html",
    "content": "<DIV id=\"foo\" style=\"color: red\">\n  \"Hello Frank!\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/shorthand-div-id-dynamic/expected.html",
    "content": "<div style=\"color: red\" id=\"foo-Frank\">Hello Frank!</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/shorthand-div-id-dynamic/template.marko",
    "content": "div#foo-${input.name} style=\"color: red;\"\n    -- Hello ${input.name}!"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/shorthand-div-id-dynamic/test.js",
    "content": "exports.templateData = {\n  name: \"Frank\",\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/shorthand-div-id-dynamic/vdom-expected.html",
    "content": "<DIV id=\"foo-Frank\" style=\"color: red\">\n  \"Hello Frank!\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/shorthand-div.foo/expected.html",
    "content": "<div style=\"color: red\" class=foo>Hello Frank!</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/shorthand-div.foo/template.marko",
    "content": "div.foo style=\"color: red;\"\n    -- Hello ${input.name}!"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/shorthand-div.foo/test.js",
    "content": "exports.templateData = {\n  name: \"Frank\",\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/shorthand-div.foo/vdom-expected.html",
    "content": "<DIV class=\"foo\" style=\"color: red\">\n  \"Hello Frank!\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/shorthand-id-and-classes/expected.html",
    "content": "<div class=\"bar baz\" id=foo></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/shorthand-id-and-classes/template.marko",
    "content": "#foo.bar.baz"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/shorthand-id-and-classes/test.js",
    "content": "exports.templateData = {\n  name: \"Frank\",\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/shorthand-id-and-classes/vdom-expected.html",
    "content": "<DIV class=\"bar baz\" id=\"foo\">\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/shorthand-verbose/expected.html",
    "content": "<div class=\"bar baz\" id=foo>Hello Frank!</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/shorthand-verbose/template.marko",
    "content": "<#foo.bar.baz>\n    Hello ${input.name}!\n</>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/shorthand-verbose/test.js",
    "content": "exports.templateData = {\n  name: \"Frank\",\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/shorthand-verbose/vdom-expected.html",
    "content": "<DIV class=\"bar baz\" id=\"foo\">\n  \"Hello Frank!\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/simple/expected.html",
    "content": "<div class=\"hello-world title\">Hello World!</div><ul><li class=color>red</li><li class=color>green</li><li class=color>blue</li></ul>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/simple/template.marko",
    "content": "$ {\n    var rootClass = input.rootClass,\n        colors = input.colors,\n        message = input.message;\n}\n<div class=`hello-world ${rootClass}`>${message}</div>\n<if(colors && colors.length)>\n    <ul>\n        <for|color| of=colors>\n            <li class=\"color\">${color}</li>\n        </for>\n    </ul>\n</if>\n<else>\n    <div>No colors!</div>\n</else>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/simple/test.js",
    "content": "exports.templateData = {\n  message: \"Hello World!\",\n  rootClass: \"title\",\n  colors: [\"red\", \"green\", \"blue\"],\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/simple/vdom-expected.html",
    "content": "<DIV class=\"hello-world title\">\n  \"Hello World!\"\n<UL>\n  <LI class=\"color\">\n    \"red\"\n  <LI class=\"color\">\n    \"green\"\n  <LI class=\"color\">\n    \"blue\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/simple-conditionals/expected.html",
    "content": "<div class=over-50></div><div></div><div class=over-50></div><div class=#></div><span class=under;-50\\></span><input type=checked checked>Hello ${name}! Over 50"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/simple-conditionals/template.marko",
    "content": "---\n$ var name = input.name;\n$ var count = input.count;\n<div class=(count > 50 ? \"over-50\" : null)/>\n<div class=(count < 50 ? \"under-50\" : null)/>\n<div class=(count < 50 ? \"under-50\" : \"over-50\")/>\n<div class=(count < 50 ? \"under-50\" : \"#\")/>\n<span class=(count ? \"under;-50\\\\\" : \"over-50\")/>\n<input type=\"checked\" checked=(true ? true : false)/>${count > 50\n    ? (name ? \"Hello ${name}! \" : \"\") + \"Over 50\"\n    : (name ? \"Hello ${name}! \" : \"\") + \"50 or less\"}\n---"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/simple-conditionals/test.js",
    "content": "exports.templateData = {\n  name: \"John\",\n  count: 51,\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/simple-conditionals/vdom-expected.html",
    "content": "<DIV class=\"over-50\">\n<DIV>\n<DIV class=\"over-50\">\n<DIV class=\"#\">\n<SPAN class=\"under;-50\\\">\n<INPUT checked=\"\" type=\"checked\">\n\"Hello ${name}! Over 50\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/space-around-equal-sign-for-attr/expected.html",
    "content": "<div class=foo></div><span class=bar></span>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/space-around-equal-sign-for-attr/template.marko",
    "content": "<div class = \"foo\" />\nspan class = \"bar\""
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/space-around-equal-sign-for-attr/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/space-around-equal-sign-for-attr/vdom-expected.html",
    "content": "<DIV class=\"foo\">\n<SPAN class=\"bar\">\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/space-in-complex-attr-value/expected.html",
    "content": "<div>1,2,3,false,29,true</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/space-in-complex-attr-value/template.marko",
    "content": "$ var a = 1;\n$ var b = 2;\n$ var c = 3;\n$ var d = \"a\" instanceof Boolean;\n$ var e = 29;\n$ var f = typeof \"foo\" === \"string\";\n<div>${a},${b},${c},${d},${e},${f}</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/space-in-complex-attr-value/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/space-in-complex-attr-value/vdom-expected.html",
    "content": "<DIV>\n  \"1,2,3,false,29,true\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/spread-attribute-class-style-html-tag/expected.html",
    "content": "<div class=\"foo bar\" style=color:blue>Hello spread</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/spread-attribute-class-style-html-tag/template.marko",
    "content": "$ var attrs = {\n    class: ['foo', { bar:true, baz:false }],\n    style: { color:'blue' }\n};\n\n<div ...attrs>\n    Hello spread\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/spread-attribute-class-style-html-tag/vdom-expected.html",
    "content": "<DIV class=\"foo bar\" style=\"color:blue\">\n  \"Hello spread\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/spread-attribute-custom-tag/components/test-tag/index.marko",
    "content": "<pre>${JSON.stringify(input, null, 2)}</pre>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/spread-attribute-custom-tag/expected.html",
    "content": "<pre>{\n  \"class\": \"test\",\n  \"id\": \"spread\"\n}</pre>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/spread-attribute-custom-tag/template.marko",
    "content": "$ var attrs = {\n    class: 'test',\n    id: 'spread'\n};\n\n<test-tag ...attrs/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/spread-attribute-custom-tag/vdom-expected.html",
    "content": "<PRE>\n  \"{\\n  \\\"class\\\": \\\"test\\\",\\n  \\\"id\\\": \\\"spread\\\"\\n}\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/spread-attribute-function-object/expected.html",
    "content": "<link href=foo/bar.css>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/spread-attribute-function-object/template.marko",
    "content": "static function attrsFunc(){\n    return {href: 'foo/bar.css'};\n}\n\n<link ...attrsFunc() />\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/spread-attribute-function-object/vdom-expected.html",
    "content": "<LINK href=\"foo/bar.css\">\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/spread-attribute-html-tag/expected.html",
    "content": "<div class=test id=spread>Hello spread</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/spread-attribute-html-tag/template.marko",
    "content": "$ var attrs = {\n    class: 'test',\n    id: 'spread'\n};\n\n<div ...attrs>\n    Hello spread\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/spread-attribute-html-tag/vdom-expected.html",
    "content": "<DIV class=\"test\" id=\"spread\">\n  \"Hello spread\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/spread-attribute-literal/expected.html",
    "content": "test"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/spread-attribute-literal/template.marko",
    "content": "static function renderBody(out, input) {\n    out.write(input);\n}\n\n<${renderBody} ...\"test\" />\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/spread-attribute-literal/vdom-expected.html",
    "content": "\"test\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/spread-attribute-no-mutate/components/test.marko",
    "content": "-- ${JSON.stringify(input)}"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/spread-attribute-no-mutate/expected.html",
    "content": "<div class=test id=dom></div>{\"hidden\":false,\"id\":\"custom\",\"class\":\"test\"}<div class=test id=dom></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/spread-attribute-no-mutate/template.marko",
    "content": "import assert from \"assert\";\n\n$ var before = {\n    hidden: false\n};\n\n$ var after = {\n    class: 'test'\n};\n\n<div ...before id=\"dom\" ...after/>\n<test ...before id=\"custom\" ...after/>\n<div ...before id=\"dom\" ...after/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/spread-attribute-no-mutate/vdom-expected.html",
    "content": "<DIV class=\"test\" id=\"dom\">\n\"{\\\"hidden\\\":false,\\\"id\\\":\\\"custom\\\",\\\"class\\\":\\\"test\\\"}\"\n<DIV class=\"test\" id=\"dom\">\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/spread-attribute-order-custom-tag/components/test-tag/index.marko",
    "content": "<pre>${JSON.stringify(input, null, 2)}</pre>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/spread-attribute-order-custom-tag/expected.html",
    "content": "<pre>{\n  \"class\": \"test\",\n  \"id\": \"override\"\n}</pre>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/spread-attribute-order-custom-tag/template.marko",
    "content": "$ var attrs = {\n    class: 'test',\n    id: 'spread'\n};\n\n<test-tag class=\"default\" ...attrs id=\"override\"/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/spread-attribute-order-custom-tag/vdom-expected.html",
    "content": "<PRE>\n  \"{\\n  \\\"class\\\": \\\"test\\\",\\n  \\\"id\\\": \\\"override\\\"\\n}\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/spread-attribute-order-html-tag/expected.html",
    "content": "<div id=override class=test>Hello spread</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/spread-attribute-order-html-tag/template.marko",
    "content": "$ var attrs = {\n    class: 'test',\n    id: 'spread'\n};\n\n<div class=\"default\" ...attrs id=\"override\">\n    Hello spread\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/spread-attribute-order-html-tag/vdom-expected.html",
    "content": "<DIV class=\"test\" id=\"override\">\n  \"Hello spread\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/spread-attribute-undefined/expected.html",
    "content": "<div>Hello spread</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/spread-attribute-undefined/template.marko",
    "content": "$ var attrs = undefined;\n\n<div ...attrs>\n    Hello spread\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/spread-attribute-undefined/vdom-expected.html",
    "content": "<DIV>\n  \"Hello spread\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/static-trees/expected.html",
    "content": "<div id=prodHolder><div class=A><div class=B>yes</div><div class=C></div><div class=C></div></div><div class=D><div class=E><div class=F><div class=G>yes</div><div class=H>H-yes</div></div><div class=I><div class=J>yes</div></div></div><div class=K><div class=L><div class=M><div class=N>yes</div></div></div><div class=O>yes</div><div class=P>P-yes</div></div><div class=Q>Q-body: This div should have a class of Q</div></div></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/static-trees/template.marko",
    "content": "<div id=\"prodHolder\">\n    <div class=\"A\">\n        <div class=\"B\">${true ? \"yes\" : \"no\"}</div>\n        <for|i| from=0 to=1>\n            <div class=\"C\"/>\n        </for>\n    </div>\n    <div class=\"D\">\n        <div class=\"E\">\n            <div class=\"F\">\n                <div class=\"G\">${true ? \"yes\" : \"no\"}</div>\n                <div class=\"H\">${true ? \"H-yes\" : \"H-no\"}</div>\n            </div>\n            <div class=\"I\">\n                <if(1 > 0)>\n                    <div class=\"J\">${true ? \"yes\" : \"no\"}</div>\n                </if>\n            </div>\n        </div>\n        <div class=\"K\">\n            <div class=\"L\">\n                <div class=\"M\">\n                    <div class=\"N\">$!{true ? \"yes\" : \"no\"}</div>\n                </div>\n            </div>\n            <div class=\"O\">${true ? \"yes\" : \"no\"}</div>\n            <div class=\"P\">${true ? \"P-yes\" : \"P-no\"}</div>\n        </div>\n        <div class=\"Q\">\n            Q-body: ${true ? \"This div should have a class of Q\" : \"no\"}\n        </div>\n    </div>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/static-trees/vdom-expected.html",
    "content": "<DIV id=\"prodHolder\">\n  <DIV class=\"A\">\n    <DIV class=\"B\">\n      \"yes\"\n    <DIV class=\"C\">\n    <DIV class=\"C\">\n  <DIV class=\"D\">\n    <DIV class=\"E\">\n      <DIV class=\"F\">\n        <DIV class=\"G\">\n          \"yes\"\n        <DIV class=\"H\">\n          \"H-yes\"\n      <DIV class=\"I\">\n        <DIV class=\"J\">\n          \"yes\"\n    <DIV class=\"K\">\n      <DIV class=\"L\">\n        <DIV class=\"M\">\n          <DIV class=\"N\">\n            \"yes\"\n      <DIV class=\"O\">\n        \"yes\"\n      <DIV class=\"P\">\n        \"P-yes\"\n    <DIV class=\"Q\">\n      \"Q-body: This div should have a class of Q\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/static-var-complex/expected.html",
    "content": "<div>true</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/static-var-complex/template.marko",
    "content": "static var startDate = new Date();\n\n<div>${startDate instanceof Date}</div>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/static-var-complex/vdom-expected.html",
    "content": "<DIV>\n  \"true\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/string-expressions/expected.html",
    "content": "Hello ${name.toUpperCase()}! You have ${count} new messages."
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/string-expressions/template.marko",
    "content": "$ var name=input.name, count=input.count;\n\n-- ${name != null ? \"Hello ${name.toUpperCase()}! You have ${count} new messages.\" : null}"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/string-expressions/test.js",
    "content": "exports.templateData = {\n  name: \"John\",\n  count: 10,\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/string-expressions/vdom-expected.html",
    "content": "\"Hello ${name.toUpperCase()}! You have ${count} new messages.\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/style-attr-array-mixed/expected.html",
    "content": "<div style=color:red;font-weight:bold;background-color:blue></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/style-attr-array-mixed/template.marko",
    "content": "div style=['color:red', {fontWeight: 'bold', 'background-color':'blue'}]"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/style-attr-array-mixed/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/style-attr-array-mixed/vdom-expected.html",
    "content": "<DIV style=\"color:red;font-weight:bold;background-color:blue\">\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/style-attr-object/expected.html",
    "content": "<div style=color:red;font-weight:bold;background-color:blue></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/style-attr-object/template.marko",
    "content": "div style={color: 'red', margin: false, fontWeight: 'bold', 'background-color':'blue'}"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/style-attr-object/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/style-attr-object/vdom-expected.html",
    "content": "<DIV style=\"color:red;font-weight:bold;background-color:blue\">\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/style-attr-object-units/expected.html",
    "content": "<div style=left:0;margin-right:10px></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/style-attr-object-units/template.marko",
    "content": "div style={left: 0, marginRight: 10}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/style-attr-object-units/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/style-attr-object-units/vdom-expected.html",
    "content": "<DIV style=\"left:0;margin-right:10px\">\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/style-attr-string/expected.html",
    "content": "<div style=\"font-weight: bold\"></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/style-attr-string/template.marko",
    "content": "div style=\"font-weight: bold;\""
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/style-attr-string/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/style-attr-string/vdom-expected.html",
    "content": "<DIV style=\"font-weight: bold\">\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/style-attr-string-dynamic/expected.html",
    "content": "<div style=\"color: red\"></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/style-attr-string-dynamic/template.marko",
    "content": "div style=input.style"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/style-attr-string-dynamic/test.js",
    "content": "exports.templateData = {\n  style: \"color: red\",\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/style-attr-string-dynamic/vdom-expected.html",
    "content": "<DIV style=\"color: red\">\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/style-tag-dynamic-text/expected.html",
    "content": "<style>\n    button {\n        color: green;\n    }\n</style>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/style-tag-dynamic-text/template.marko",
    "content": "<style>\n    ${input.selector} {\n        color: green;\n    }\n</style>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/style-tag-dynamic-text/test.js",
    "content": "exports.templateData = {\n  selector: \"button\",\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/style-tag-dynamic-text/vdom-expected.html",
    "content": "<STYLE>\n  \"\\n    button {\\n        color: green;\\n    }\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/svg/expected.html",
    "content": "<svg viewBox=\"0 0 200 200\"><circle cx=100 cy=100 r=100 /></svg>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/svg/template.marko",
    "content": "<svg viewBox=\"0 0 200 200\">\n  <circle cx=\"100\" cy=\"100\" r=\"100\"/>\n</svg>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/svg/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/svg/vdom-expected.html",
    "content": "<svg:svg viewBox=\"0 0 200 200\">\n  <svg:circle cx=\"100\" cy=\"100\" r=\"100\">\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/syntax-concise/expected.html",
    "content": "<!DOCTYPE html><html lang=en><head><title>Marko Templating Engine</title></head><body><h1>Marko Templating Engine</h1><p>Marko is a <i>fast</i> and lightweight templating engine that compiles templates to CommonJS modules and supports streaming, async rendering and custom tags. It supports both a familiar HTML syntax and a concise, indentation-based syntax.</p><ul class=features><li>async</li><li>streaming</li><li>custom-tags</li><li>readable</li><li>modules</li></ul><div>No colors!</div><div class=tabs><ul><li>Tab 1</li><li>Tab 2</li></ul><div class=tab-content><div class=tab>Body content for Tab 1</div><div class=tab>Body content for Tab 2</div></div></div><script type=text/javascript>if (foo) {\n    alert('Marko is awesome!');\n}</script><ul><li><a class=\"nav-link active\" href=\"/\">Home</a></li><li><a class=nav-link href=/docs>Docs</a></li><li><a class=nav-link href=/blog>Blog</a></li></ul></body></html>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/syntax-concise/marko.json",
    "content": "{\n  \"<tabs>\": \"./tabs/marko-tag.json\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/syntax-concise/tabs/marko-tag.json",
    "content": "{\n  \"renderer\": \"./renderer\",\n  \"@orientation\": \"string\",\n  \"@tabs <tab>[]\": {\n    \"@title\": \"string\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/syntax-concise/tabs/renderer.js",
    "content": "var template = require(\"./template.marko\").default;\n\nexports.renderer = function (input, out) {\n  var tabs = input.tabs;\n\n  template.render(\n    {\n      tabs: tabs,\n    },\n    out,\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/syntax-concise/tabs/template.marko",
    "content": "$ var tabs = input.tabs;\n<div class=\"tabs\">\n    <ul>\n        <for|tab| of=tabs>\n            <li>${tab.title}</li>\n        </for>\n    </ul>\n    <div class=\"tab-content\">\n        <for|tab| of=tabs>\n            <div class=\"tab\">\n                <if(tab.renderBody)>\n                    <${tab}/>\n                </if>\n            </div>\n        </for>\n    </div>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/syntax-concise/template.marko",
    "content": "$ var pageTitle = \"Marko Templating Engine\";\n$ var currentPage = \"home\";\n<!DOCTYPE html>\n<html lang=\"en\">\n    <head>\n        <title>${pageTitle}</title>\n    </head>\n    <body>\n        <h1>${pageTitle}</h1>\n        <p>\n            Marko is a <i>fast</i> and lightweight templating engine that\n            compiles templates to CommonJS modules and supports streaming, async\n            rendering and custom tags. It supports both a familiar HTML syntax\n            and a concise, indentation-based syntax.\n        </p>\n        <ul.features>\n            <for|feature| of=[\"async\", \"streaming\", \"custom-tags\", \"readable\", \"modules\"]>\n                <li>${feature}</li>\n            </for>\n        </ul>\n        <if(input.colors && input.colors.length)>\n            <ul>\n                <for|color| of=input.colors>\n                    <li>${color}</li>\n                </for>\n            </ul>\n        </if>\n        <else>\n            <div>No colors!</div>\n        </else>\n        <tabs>\n            <@tab title=\"Tab 1\">Body content for Tab 1</@tab>\n            <@tab title=\"Tab 2\">Body content for Tab 2</@tab>\n        </tabs>\n        <script type=\"text/javascript\">if (foo) {\n    alert('Marko is awesome!');\n}</script>\n        <macro|macroInput| name=\"navLink\">\n            $ var id = macroInput.id;\n            $ var href = macroInput.href;\n            $ var title = macroInput.title;\n            <li>\n                <a.nav-link class=(id === currentPage && \"active\") href=href>\n                    ${title}\n                </a>\n            </li>\n        </macro>\n        <ul>\n            <navLink id=\"home\" href=\"/\" title=\"Home\"/>\n            <navLink id=\"docs\" href=\"/docs\" title=\"Docs\"/>\n            <navLink id=\"blog\" href=\"/blog\" title=\"Blog\"/>\n        </ul>\n    </body>\n</html>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/syntax-concise/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/syntax-concise/vdom-expected.html",
    "content": "<HTML lang=\"en\">\n  <HEAD>\n    <TITLE>\n      \"Marko Templating Engine\"\n  <BODY>\n    <H1>\n      \"Marko Templating Engine\"\n    <P>\n      \"Marko is a \"\n      <I>\n        \"fast\"\n      \" and lightweight templating engine that compiles templates to CommonJS modules and supports streaming, async rendering and custom tags. It supports both a familiar HTML syntax and a concise, indentation-based syntax.\"\n    <UL class=\"features\">\n      <LI>\n        \"async\"\n      <LI>\n        \"streaming\"\n      <LI>\n        \"custom-tags\"\n      <LI>\n        \"readable\"\n      <LI>\n        \"modules\"\n    <DIV>\n      \"No colors!\"\n    <DIV class=\"tabs\">\n      <UL>\n        <LI>\n          \"Tab 1\"\n        <LI>\n          \"Tab 2\"\n      <DIV class=\"tab-content\">\n        <DIV class=\"tab\">\n          \"Body content for Tab 1\"\n        <DIV class=\"tab\">\n          \"Body content for Tab 2\"\n    <SCRIPT type=\"text/javascript\">\n      \"if (foo) {\\n    alert('Marko is awesome!');\\n}\"\n    <UL>\n      <LI>\n        <A class=\"nav-link active\" href=\"/\">\n          \"Home\"\n      <LI>\n        <A class=\"nav-link\" href=\"/docs\">\n          \"Docs\"\n      <LI>\n        <A class=\"nav-link\" href=\"/blog\">\n          \"Blog\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/syntax-mixed/expected.html",
    "content": "<!DOCTYPE html><html lang=en><head><title>Marko Templating Engine</title></head><body><h1>Marko Templating Engine</h1><p>Marko is a <i>fast</i> and lightweight templating engine that compiles templates to CommonJS modules and supports streaming, async rendering and custom tags. It supports both a familiar HTML syntax and a concise, indentation-based syntax.</p><ul class=features><li>async</li><li>streaming</li><li>custom-tags</li><li>readable</li><li>modules</li></ul><div>No colors!</div><div class=tabs><ul><li>Tab 1</li><li>Tab 2</li></ul><div class=tab-content><div class=tab>Body content for Tab 1</div><div class=tab>Body content for Tab 2</div></div></div><script type=text/javascript>\n        if (foo) {\n            alert('Marko is awesome!');\n        }\n        </script><ul><li><a class=\"nav-link active\" href=\"/\">Home</a></li><li><a class=nav-link href=/docs>Docs</a></li><li><a class=nav-link href=/blog>Blog</a></li></ul></body></html>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/syntax-mixed/marko.json",
    "content": "{\n  \"<tabs>\": \"./tabs/marko-tag.json\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/syntax-mixed/tabs/marko-tag.json",
    "content": "{\n  \"renderer\": \"./renderer\",\n  \"@orientation\": \"string\",\n  \"@tabs <tab>[]\": {\n    \"@title\": \"string\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/syntax-mixed/tabs/renderer.js",
    "content": "var template = require(\"./template.marko\").default;\n\nexports.renderer = function (input, out) {\n  var tabs = input.tabs;\n\n  template.render(\n    {\n      tabs: tabs,\n    },\n    out,\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/syntax-mixed/tabs/template.marko",
    "content": "$ var tabs = input.tabs;\n<div class=\"tabs\">\n    <ul>\n        <for|tab| of=tabs>\n            <li>${tab.title}</li>\n        </for>\n    </ul>\n    <div class=\"tab-content\">\n        <for|tab| of=tabs>\n            <div class=\"tab\">\n                <if(tab.renderBody)>\n                    <${tab}/>\n                </if>\n            </div>\n        </for>\n    </div>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/syntax-mixed/template.marko",
    "content": "$ var pageTitle = \"Marko Templating Engine\";\n$ var currentPage = \"home\";\n<!DOCTYPE html>\n<html lang=\"en\">\n    <head>\n        <title>${pageTitle}</title>\n    </head>\n    <body>\n        <h1>${pageTitle}</h1>\n        <p>\n            Marko is a <i>fast</i> and lightweight templating engine that\n            compiles templates to CommonJS modules and supports streaming, async\n            rendering and custom tags. It supports both a familiar HTML syntax\n            and a concise, indentation-based syntax.\n        </p>\n        <ul.features>\n            <for|feature| of=[\"async\", \"streaming\", \"custom-tags\", \"readable\", \"modules\"]>\n                <li>${feature}</li>\n            </for>\n        </ul>\n        <if(input.colors && input.colors.length)>\n            <ul>\n                <for|color| of=input.colors>\n                    <li>${color}</li>\n                </for>\n            </ul>\n        </if>\n        <else>\n            <div>No colors!</div>\n        </else>\n        <tabs>\n            <@tab title=\"Tab 1\">Body content for Tab 1</@tab>\n            <@tab title=\"Tab 2\">Body content for Tab 2</@tab>\n        </tabs>\n        <script type=\"text/javascript\">\n        if (foo) {\n            alert('Marko is awesome!');\n        }\n        </script>\n        <macro|macroInput| name=\"navLink\">\n            $ var id = macroInput.id;\n            $ var href = macroInput.href;\n            $ var title = macroInput.title;\n            <li>\n                <a.nav-link class=(id === currentPage && \"active\") href=href>\n                    ${title}\n                </a>\n            </li>\n        </macro>\n        <ul>\n            <navLink id=\"home\" href=\"/\" title=\"Home\"/>\n            <navLink id=\"docs\" href=\"/docs\" title=\"Docs\"/>\n            <navLink id=\"blog\" href=\"/blog\" title=\"Blog\"/>\n        </ul>\n    </body>\n</html>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/syntax-mixed/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/syntax-mixed/vdom-expected.html",
    "content": "<HTML lang=\"en\">\n  <HEAD>\n    <TITLE>\n      \"Marko Templating Engine\"\n  <BODY>\n    <H1>\n      \"Marko Templating Engine\"\n    <P>\n      \"Marko is a \"\n      <I>\n        \"fast\"\n      \" and lightweight templating engine that compiles templates to CommonJS modules and supports streaming, async rendering and custom tags. It supports both a familiar HTML syntax and a concise, indentation-based syntax.\"\n    <UL class=\"features\">\n      <LI>\n        \"async\"\n      <LI>\n        \"streaming\"\n      <LI>\n        \"custom-tags\"\n      <LI>\n        \"readable\"\n      <LI>\n        \"modules\"\n    <DIV>\n      \"No colors!\"\n    <DIV class=\"tabs\">\n      <UL>\n        <LI>\n          \"Tab 1\"\n        <LI>\n          \"Tab 2\"\n      <DIV class=\"tab-content\">\n        <DIV class=\"tab\">\n          \"Body content for Tab 1\"\n        <DIV class=\"tab\">\n          \"Body content for Tab 2\"\n    <SCRIPT type=\"text/javascript\">\n      \"\\n        if (foo) {\\n            alert('Marko is awesome!');\\n        }\\n        \"\n    <UL>\n      <LI>\n        <A class=\"nav-link active\" href=\"/\">\n          \"Home\"\n      <LI>\n        <A class=\"nav-link\" href=\"/docs\">\n          \"Docs\"\n      <LI>\n        <A class=\"nav-link\" href=\"/blog\">\n          \"Blog\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/syntax-simple-concise/expected.html",
    "content": "<!DOCTYPE html><html lang=en><head><title>Marko Templating Engine</title></head><body><h1>Hello !</h1><ul><li>red</li><li>green</li><li>blue</li></ul></body></html>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/syntax-simple-concise/template.marko",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n    <head>\n        <title>Marko Templating Engine</title>\n    </head>\n    <body>\n        <h1>Hello ${input.name}!</h1>\n        <if(input.colors.length)>\n            <ul>\n                <for|color| of=input.colors>\n                    <li>${color}</li>\n                </for>\n            </ul>\n        </if>\n        <else>\n            <div>No colors!</div>\n        </else>\n    </body>\n</html>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/syntax-simple-concise/test.js",
    "content": "exports.templateData = {\n  colors: [\"red\", \"green\", \"blue\"],\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/syntax-simple-concise/vdom-expected.html",
    "content": "<HTML lang=\"en\">\n  <HEAD>\n    <TITLE>\n      \"Marko Templating Engine\"\n  <BODY>\n    <H1>\n      \"Hello !\"\n    <UL>\n      <LI>\n        \"red\"\n      <LI>\n        \"green\"\n      <LI>\n        \"blue\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/syntax-simple-mixed/expected.html",
    "content": "<!DOCTYPE html><html lang=en><head><title>Marko Templating Engine</title></head><body><h1>Hello !</h1><ul><li>red</li><li>green</li><li>blue</li></ul></body></html>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/syntax-simple-mixed/template.marko",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n    <head>\n        <title>Marko Templating Engine</title>\n    </head>\n    <body>\n        <h1>Hello ${input.name}!</h1>\n        <if(input.colors.length)>\n            <ul>\n                <for|color| of=input.colors>\n                    <li>${color}</li>\n                </for>\n            </ul>\n        </if>\n        <else>\n            <div>No colors!</div>\n        </else>\n    </body>\n</html>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/syntax-simple-mixed/test.js",
    "content": "exports.templateData = {\n  colors: [\"red\", \"green\", \"blue\"],\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/syntax-simple-mixed/vdom-expected.html",
    "content": "<HTML lang=\"en\">\n  <HEAD>\n    <TITLE>\n      \"Marko Templating Engine\"\n  <BODY>\n    <H1>\n      \"Hello !\"\n    <UL>\n      <LI>\n        \"red\"\n      <LI>\n        \"green\"\n      <LI>\n        \"blue\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/syntax-simple-verbose/expected.html",
    "content": "<!DOCTYPE html><html lang=en><head><title>Marko Templating Engine</title></head><body><h1>Hello !</h1><ul><li>red</li><li>green</li><li>blue</li></ul></body></html>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/syntax-simple-verbose/template.marko",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n    <head>\n        <title>Marko Templating Engine</title>\n    </head>\n    <body>\n        <h1>Hello ${input.name}!</h1>\n        <if(input.colors.length)>\n            <ul>\n                <for|color| of=input.colors>\n                    <li>${color}</li>\n                </for>\n            </ul>\n        </if>\n        <else>\n            <div>No colors!</div>\n        </else>\n    </body>\n</html>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/syntax-simple-verbose/test.js",
    "content": "exports.templateData = {\n  colors: [\"red\", \"green\", \"blue\"],\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/syntax-simple-verbose/vdom-expected.html",
    "content": "<HTML lang=\"en\">\n  <HEAD>\n    <TITLE>\n      \"Marko Templating Engine\"\n  <BODY>\n    <H1>\n      \"Hello !\"\n    <UL>\n      <LI>\n        \"red\"\n      <LI>\n        \"green\"\n      <LI>\n        \"blue\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/syntax-verbose/expected.html",
    "content": "<!DOCTYPE html><html lang=en><head><title>Marko Templating Engine</title></head><body><h1>Marko Templating Engine</h1><p>Marko is a <i>fast</i> and lightweight templating engine that compiles templates to CommonJS modules and supports streaming, async rendering and custom tags. It supports both a familiar HTML syntax and a concise, indentation-based syntax.</p><ul class=features><li>async</li><li>streaming</li><li>custom-tags</li><li>readable</li><li>modules</li></ul><div>No colors!</div><div class=tabs><ul><li>Tab 1</li><li>Tab 2</li></ul><div class=tab-content><div class=tab>Body content for Tab 1</div><div class=tab>Body content for Tab 2</div></div></div><script type=text/javascript>\n        if (foo) {\n            alert('Marko is awesome!');\n        }\n        </script><ul><li><a class=\"nav-link active\" href=\"/\">Home</a></li><li><a class=nav-link href=/docs>Docs</a></li><li><a class=nav-link href=/blog>Blog</a></li></ul></body></html>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/syntax-verbose/marko.json",
    "content": "{\n  \"<tabs>\": \"./tabs/marko-tag.json\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/syntax-verbose/tabs/marko-tag.json",
    "content": "{\n  \"renderer\": \"./renderer\",\n  \"@orientation\": \"string\",\n  \"@tabs <tab>[]\": {\n    \"@title\": \"string\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/syntax-verbose/tabs/renderer.js",
    "content": "var template = require(\"./template.marko\").default;\n\nexports.renderer = function (input, out) {\n  var tabs = input.tabs;\n\n  template.render(\n    {\n      tabs: tabs,\n    },\n    out,\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/syntax-verbose/tabs/template.marko",
    "content": "$ var tabs = input.tabs;\n<div class=\"tabs\">\n    <ul>\n        <for|tab| of=tabs>\n            <li>${tab.title}</li>\n        </for>\n    </ul>\n    <div class=\"tab-content\">\n        <for|tab| of=tabs>\n            <div class=\"tab\">\n                <if(tab.renderBody)>\n                    <${tab}/>\n                </if>\n            </div>\n        </for>\n    </div>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/syntax-verbose/template.marko",
    "content": "$ var pageTitle = \"Marko Templating Engine\";\n$ var currentPage = \"home\";\n<!DOCTYPE html>\n<html lang=\"en\">\n    <head>\n        <title>${pageTitle}</title>\n    </head>\n    <body>\n        <h1>${pageTitle}</h1>\n        <p>\n            Marko is a <i>fast</i> and lightweight templating engine that\n            compiles templates to CommonJS modules and supports streaming, async\n            rendering and custom tags. It supports both a familiar HTML syntax\n            and a concise, indentation-based syntax.\n        </p>\n        <ul.features>\n            <for|feature| of=[\"async\", \"streaming\", \"custom-tags\", \"readable\", \"modules\"]>\n                <li>${feature}</li>\n            </for>\n        </ul>\n        <if(input.colors && input.colors.length)>\n            <ul>\n                <for|color| of=input.colors>\n                    <li>${color}</li>\n                </for>\n            </ul>\n        </if>\n        <else>\n            <div>No colors!</div>\n        </else>\n        <tabs>\n            <@tab title=\"Tab 1\">Body content for Tab 1</@tab>\n            <@tab title=\"Tab 2\">Body content for Tab 2</@tab>\n        </tabs>\n        <script type=\"text/javascript\">\n        if (foo) {\n            alert('Marko is awesome!');\n        }\n        </script>\n        <macro|macroInput| name=\"navLink\">\n            $ var id = macroInput.id;\n            $ var href = macroInput.href;\n            $ var title = macroInput.title;\n            <li>\n                <a.nav-link class=(id === currentPage && \"active\") href=href>\n                    ${title}\n                </a>\n            </li>\n        </macro>\n        <ul>\n            <navLink id=\"home\" href=\"/\" title=\"Home\"/>\n            <navLink id=\"docs\" href=\"/docs\" title=\"Docs\"/>\n            <navLink id=\"blog\" href=\"/blog\" title=\"Blog\"/>\n        </ul>\n    </body>\n</html>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/syntax-verbose/vdom-expected.html",
    "content": "<HTML lang=\"en\">\n  <HEAD>\n    <TITLE>\n      \"Marko Templating Engine\"\n  <BODY>\n    <H1>\n      \"Marko Templating Engine\"\n    <P>\n      \"Marko is a \"\n      <I>\n        \"fast\"\n      \" and lightweight templating engine that compiles templates to CommonJS modules and supports streaming, async rendering and custom tags. It supports both a familiar HTML syntax and a concise, indentation-based syntax.\"\n    <UL class=\"features\">\n      <LI>\n        \"async\"\n      <LI>\n        \"streaming\"\n      <LI>\n        \"custom-tags\"\n      <LI>\n        \"readable\"\n      <LI>\n        \"modules\"\n    <DIV>\n      \"No colors!\"\n    <DIV class=\"tabs\">\n      <UL>\n        <LI>\n          \"Tab 1\"\n        <LI>\n          \"Tab 2\"\n      <DIV class=\"tab-content\">\n        <DIV class=\"tab\">\n          \"Body content for Tab 1\"\n        <DIV class=\"tab\">\n          \"Body content for Tab 2\"\n    <SCRIPT type=\"text/javascript\">\n      \"\\n        if (foo) {\\n            alert('Marko is awesome!');\\n        }\\n        \"\n    <UL>\n      <LI>\n        <A class=\"nav-link active\" href=\"/\">\n          \"Home\"\n      <LI>\n        <A class=\"nav-link\" href=\"/docs\">\n          \"Docs\"\n      <LI>\n        <A class=\"nav-link\" href=\"/blog\">\n          \"Blog\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/tag-empty/expected.html",
    "content": "<div>Body</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/tag-empty/template.marko",
    "content": "$ var empty=null;\n\n<div>\n    <${empty}>\n        Body\n    </>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/tag-empty/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/tag-empty/vdom-expected.html",
    "content": "<DIV>\n  \"Body\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/taglib-imports-nested/expected.html",
    "content": "[icon-list]"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/taglib-imports-nested/marko.json",
    "content": "{\n  \"taglib-imports\": [\"./nested-import/marko.json\"]\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/taglib-imports-nested/nested-import/components/list/icon-list/marko-tag.json",
    "content": "{\n  \"@list\": \"array\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/taglib-imports-nested/nested-import/components/list/icon-list/renderer.js",
    "content": "var template = require(\"./template.marko\").default;\n\nexports.renderer = function (input, out) {\n  template.render(input, out);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/taglib-imports-nested/nested-import/components/list/icon-list/template.marko",
    "content": "-- [icon-list]"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/taglib-imports-nested/nested-import/components/list/marko.json",
    "content": "{\n  \"tags-dir\": \".\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/taglib-imports-nested/nested-import/components/marko.json",
    "content": "{\n  \"taglib-imports\": [\"./list/marko.json\", \"../marko.json\"]\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/taglib-imports-nested/nested-import/marko.json",
    "content": "{\n  \"taglib-imports\": [\"./components/marko.json\"]\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/taglib-imports-nested/template.marko",
    "content": "<icon-list/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/taglib-imports-nested/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/taglib-imports-nested/vdom-expected.html",
    "content": "\"[icon-list]\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/taglib-imports-package-json/expected.html",
    "content": "[imported-foo] Name: John[imported-bar] Name: Jane"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/taglib-imports-package-json/marko.json",
    "content": "{\n  \"taglib-imports\": [\"./package.json\"]\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/taglib-imports-package-json/package.json",
    "content": "{\n    \"dependencies\": {\n        \"imported-foo\": \"^1.0.0\",\n        \"imported-bar\": \"^1.0.0\"\n    }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/taglib-imports-package-json/template.marko",
    "content": "<imported-foo name=\"John\"/>\n<imported-bar name=\"Jane\"/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/taglib-imports-package-json/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/taglib-imports-package-json/vdom-expected.html",
    "content": "\"[imported-foo] Name: John[imported-bar] Name: Jane\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/tags-dir-null/components/test-hello/template.marko",
    "content": "<div>test-hello</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/tags-dir-null/marko.json",
    "content": "{\n  \"tags-dir\": null\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/tags-dir-null/template.marko",
    "content": "<test-hello/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/tags-dir-null/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nexports.templateData = {};\n\nexports.checkError = function (e) {\n  var message = e.message.replace(\n    // eslint-disable-next-line no-control-regex\n    /([\\u001b\\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><])/g,\n    \"\",\n  );\n  //includes the tag it broke on\n  expect(message).to.contain(\"test-hello\");\n\n  //includes the line number of the template\n  expect(message).to.contain(\"template.marko:1:2\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/template-tag-dynamic-attributes/expected.html",
    "content": "Hello Frank!"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/template-tag-dynamic-attributes/marko.json",
    "content": "{\n  \"tags-dir\": \"./tags\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/template-tag-dynamic-attributes/tags/test-template-tag-dynamic-attributes/template.marko",
    "content": "---\nHello ${input.name}!\n---"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/template-tag-dynamic-attributes/template.marko",
    "content": "<test-template-tag-dynamic-attributes name=\"Frank\"/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/template-tag-dynamic-attributes/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/template-tag-dynamic-attributes/vdom-expected.html",
    "content": "\"Hello Frank!\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/text-replacement/expected.html",
    "content": "Hello John. You are from San Jose, CA Zero: 0"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/text-replacement/template.marko",
    "content": "$ var person=input.person;\n---\nHello ${person.name}. You are from ${person.address.city}, ${person.address.state} Zero: ${input.zero}\n---"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/text-replacement/test.js",
    "content": "exports.templateData = {\n  zero: 0,\n  person: {\n    name: \"John\",\n    address: {\n      city: \"San Jose\",\n      state: \"CA\",\n      line1: \"2065 E. Hamilton Ave.\",\n      zip: \"95125\",\n    },\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/text-replacement/vdom-expected.html",
    "content": "\"Hello John. You are from San Jose, CA Zero: 0\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/toHTML/expected.html",
    "content": "<div><span>Hello World</span></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/toHTML/template.marko",
    "content": "<div>\n    ${input.message}\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/toHTML/test.js",
    "content": "exports.templateData = {\n  message: {\n    toHTML: function () {\n      return \"<span>Hello World</span>\";\n    },\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/toHTML/vdom-expected.html",
    "content": "<DIV>\n  <SPAN>\n    \"Hello World\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/toString-object/expected.html",
    "content": "<div>bar</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/toString-object/template.marko",
    "content": "$ var foo = {\n    toString: function() {\n        return 'bar';\n    }\n};\n\n<div>${foo}</div>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/toString-object/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/toString-object/vdom-expected.html",
    "content": "<DIV>\n  \"bar\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/unary-expression/expected.html",
    "content": "<div aria-hidden=true></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/unary-expression/template.marko",
    "content": "<div aria-hidden=(!!input.hidden).toString()/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/unary-expression/test.js",
    "content": "exports.templateData = {\n  hidden: true,\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/unary-expression/vdom-expected.html",
    "content": "<DIV aria-hidden=\"true\">\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/unless-else/expected.html",
    "content": "B , A , A , <div>A</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/unless-else/template.marko",
    "content": "---\n<if(!true)>A</if>\n<else>B</else> , <if(!false)>A</if>\n<else>B</else> , <if(!false)>A</if>\n<else-if(false)>B</else-if>\n<else>C</else> ,\n<if(!false)>\n    <div>A</div>\n</if>\n<else-if(false)>\n    <div>B</div>\n</else-if>\n<else>\n    <div>C</div>\n</else>\n---"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/unless-else/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/unless-else/vdom-expected.html",
    "content": "\"B , A , A , \"\n<DIV>\n  \"A\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/var/expected.html",
    "content": "FRANK 3650 []"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/var/template.marko",
    "content": "$ var name='Frank', age=10, foo;\n\n-- ${name.toUpperCase()} ${age*365} [${foo}]"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/var/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/var/vdom-expected.html",
    "content": "\"FRANK 3650 []\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/var-assign/expected.html",
    "content": "<div>red</div><div>green</div><div>blue</div><div>orange</div><div>purple</div><div>yellow</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/var-assign/template.marko",
    "content": "$ var colors = [\"red\", \"green\", \"blue\"];\n<for|color| of=colors>\n    <div>${color}</div>\n</for>\n$ colors = [\"orange\", \"purple\", \"yellow\"];\n<for|color| of=colors>\n    <div>${color}</div>\n</for>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/var-assign/test.js",
    "content": "exports.templateData = {\n  active: true,\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/var-assign/vdom-expected.html",
    "content": "<DIV>\n  \"red\"\n<DIV>\n  \"green\"\n<DIV>\n  \"blue\"\n<DIV>\n  \"orange\"\n<DIV>\n  \"purple\"\n<DIV>\n  \"yellow\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/var-new-Date/expected.html",
    "content": "<div>2000-01-01T00:00:00.000Z</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/var-new-Date/template.marko",
    "content": "$ var date = new Date('Sat Jan 01 2000 00:00:00 GMT+0000 (UTC)');\n\n<div>${date.toISOString()}</div>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/var-new-Date/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/var-new-Date/vdom-expected.html",
    "content": "<DIV>\n  \"2000-01-01T00:00:00.000Z\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/var-tag-commas/expected.html",
    "content": "<div>1,2</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/var-tag-commas/template.marko",
    "content": "$ var a = 1, b = 2;\n<div>${a},${b}</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/var-tag-commas/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/var-tag-commas/vdom-expected.html",
    "content": "<DIV>\n  \"1,2\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/variable-id-root-node/expected.html",
    "content": "<div id=abc123></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/variable-id-root-node/template.marko",
    "content": "$ var id = 'abc123';\n\n<div id=id/>\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/variable-id-root-node/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/variable-id-root-node/vdom-expected.html",
    "content": "<DIV id=\"abc123\">\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/while-attr/expected.html",
    "content": "<ul><li>0</li><li>1</li><li>2</li><li>3</li></ul>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/while-attr/template.marko",
    "content": "$ var n = 0;\n<ul>\n    <while(n < 4)>\n        <li>${n++}</li>\n    </while>\n</ul>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/while-attr/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/while-attr/vdom-expected.html",
    "content": "<UL>\n  <LI>\n    \"0\"\n  <LI>\n    \"1\"\n  <LI>\n    \"2\"\n  <LI>\n    \"3\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/while-tag/expected.html",
    "content": "<ul><li>0</li><li>1</li><li>2</li><li>3</li></ul>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/while-tag/template.marko",
    "content": "$ var n=0\nul\n  while(n < 4)\n    li -- ${n++}"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/while-tag/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/while-tag/vdom-expected.html",
    "content": "<UL>\n  <LI>\n    \"0\"\n  <LI>\n    \"1\"\n  <LI>\n    \"2\"\n  <LI>\n    \"3\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace/expected.html",
    "content": "BEGIN  this whitespace   should be retained   END test hello Long paragraph of text should retain spacing between lines. <ul><li>One</li><li>Two</li></ul><a href=Test>Hello World!</a><pre>\n   begin      end\n</pre><div marko-preserve-whitespace>begin end</div><div marko-preserve-whitespace>begin end</div>begin end"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace/template.marko",
    "content": "---\n${\"BEGIN  this whitespace   should be retained   END\"}\n\ntest <!-- text should be normalized to one space -->\n${\"hello\"}\n\nLong paragraph of text\n\nshould   <!-- This whitespace should be normalized -->  retain spacing between lines.\n\n<ul>\n    <!-- whitespace between elements should be removed -->\n    <li>One</li>\n    <!-- whitespace between elements should be removed -->\n    <li>Two</li>\n    <!-- whitespace between elements should be removed -->\n</ul>\n<a href=\"Test\">\n    Hello World!\n</a>\n\n<pre>\n   begin <!-- this whitespace should not be normalized -->     end\n</pre>\n\n<div marko-preserve-whitespace>\n   begin <!-- this whitespace should not be normalized -->     end\n</div>\n\n<div marko-preserve-whitespace>\n   begin <!-- this whitespace should not be normalized -->     end\n</div>\n<if(true)>begin <!-- this whitespace should be preserved -->end</if>\n---\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace/vdom-expected.html",
    "content": "\"BEGIN  this whitespace   should be retained   END test hello Long paragraph of text should retain spacing between lines. \"\n<UL>\n  <LI>\n    \"One\"\n  <LI>\n    \"Two\"\n<A href=\"Test\">\n  \"Hello World!\"\n<PRE>\n  \"\\n   begin      end\\n\"\n<DIV marko-preserve-whitespace=\"\">\n  \"begin end\"\n<DIV marko-preserve-whitespace=\"\">\n  \"begin end\"\n\"begin end\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-contentplaceholder-literal-string/expected.html",
    "content": "WHITE    SPACE"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-contentplaceholder-literal-string/template.marko",
    "content": "-- ${\"WHITE    SPACE\"}"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-contentplaceholder-literal-string/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-contentplaceholder-literal-string/vdom-expected.html",
    "content": "\"WHITE    SPACE\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-div/expected.html",
    "content": "<div>Hello</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-div/template.marko",
    "content": "<div>\n    Hello\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-div/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-div/vdom-expected.html",
    "content": "<DIV>\n  \"Hello\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-inline-elements/expected.html",
    "content": "<p>A <i>B</i> C</p> --- <p>D <i>E</i> F</p> --- <p>G <i>H</i> I</p> --- <p>J <strong>K</strong> L <strong>M</strong> N</p> --- <p><strong>O</strong><strong>P</strong><span>Q</span> <span>R</span></p>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-inline-elements/template.marko",
    "content": "------\n<p>A <i>B</i> C</p>\n---\n<p>\n    D <i>E</i>\n    F\n</p>\n---\n<p>\n    G\n    <i>H</i>\n    I\n</p>\n---\n<p>\n    J\n    <strong>K</strong>\n    L\n    <strong>M</strong>\n    N\n</p>\n---\n<p>\n    <strong>O</strong>\n\n    <strong>P</strong>\n\n    <span>Q</span> <span>R</span>\n</p>\n------"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-inline-elements/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-inline-elements/vdom-expected.html",
    "content": "<P>\n  \"A \"\n  <I>\n    \"B\"\n  \" C\"\n\" --- \"\n<P>\n  \"D \"\n  <I>\n    \"E\"\n  \" F\"\n\" --- \"\n<P>\n  \"G \"\n  <I>\n    \"H\"\n  \" I\"\n\" --- \"\n<P>\n  \"J \"\n  <STRONG>\n    \"K\"\n  \" L \"\n  <STRONG>\n    \"M\"\n  \" N\"\n\" --- \"\n<P>\n  <STRONG>\n    \"O\"\n  <STRONG>\n    \"P\"\n  <SPAN>\n    \"Q\"\n  \" \"\n  <SPAN>\n    \"R\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-marko-preserve-whitespace-attr/expected.html",
    "content": "<div marko-preserve-whitespace>This whitespace should be preserved <div>This whitespace should also be preserved</div></div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-marko-preserve-whitespace-attr/template.marko",
    "content": "<div marko-preserve-whitespace>\n    This\n    whitespace\n    should be\n    preserved\n    <div>\n        This\n        whitespace\n        should also be\n        preserved\n    </div>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-marko-preserve-whitespace-attr/test.js",
    "content": "exports.templateData = {\n  name: \"World\",\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-marko-preserve-whitespace-attr/vdom-expected.html",
    "content": "<DIV marko-preserve-whitespace=\"\">\n  \"This whitespace should be preserved \"\n  <DIV>\n    \"This whitespace should also be preserved\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-normalize-inner-whitespace/expected.html",
    "content": "<div>This has extra whitespace</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-normalize-inner-whitespace/template.marko",
    "content": "<div>\n    This    has    extra whitespace\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-normalize-inner-whitespace/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-normalize-inner-whitespace/vdom-expected.html",
    "content": "<DIV>\n  \"This has extra whitespace\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-normalize-inner-whitespace-concise/expected.html",
    "content": "<div>This has extra whitespace</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-normalize-inner-whitespace-concise/template.marko",
    "content": "div\n    ---\n    This    has    extra whitespace\n    ---"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-normalize-inner-whitespace-concise/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-normalize-inner-whitespace-concise/vdom-expected.html",
    "content": "<DIV>\n  \"This has extra whitespace\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-normalize-inner-whitespace2/expected.html",
    "content": "<div>This has extra whitespace</div><div marko-preserve-whitespace>This has extra whitespace</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-normalize-inner-whitespace2/template.marko",
    "content": "<div>\n    This    has    extra whitespace\n</div>\n<div marko-preserve-whitespace>\n    This    has    extra whitespace\n</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-normalize-inner-whitespace2/test.js",
    "content": "exports.templateData = {};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-normalize-inner-whitespace2/vdom-expected.html",
    "content": "<DIV>\n  \"This has extra whitespace\"\n<DIV marko-preserve-whitespace=\"\">\n  \"This has extra whitespace\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-pre/expected.html",
    "content": "<pre>\nHello\n  World\n</pre>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-pre/template.marko",
    "content": "<pre>\nHello\n  World\n</pre>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-pre/test.js",
    "content": "exports.templateData = {\n  name: \"World\",\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-pre/vdom-expected.html",
    "content": "<PRE>\n  \"\\nHello\\n  World\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-pre-code/expected.html",
    "content": "<pre><code>const x = 1;\n\nconsole.log('Hello World!');</code></pre>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-pre-code/template.marko",
    "content": "<pre><code>const x = 1;\n\nconsole.log('Hello World!');</code></pre>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-pre-code/test.js",
    "content": "exports.templateData = {\n  name: \"World\",\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-pre-code/vdom-expected.html",
    "content": "<PRE>\n  <CODE>\n    \"const x = 1;\\n\\nconsole.log('Hello World!');\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-script/expected.html",
    "content": "<script>\n(function() {\n    alert('test');\n})();\n</script>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-script/template.marko",
    "content": "<script>\n(function() {\n    alert('test');\n})();\n</script>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-script/test.js",
    "content": "exports.templateData = {\n  name: \"World\",\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-script/vdom-expected.html",
    "content": "<SCRIPT>\n  \"\\n(function() {\\n    alert('test');\\n})();\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-textarea/expected.html",
    "content": "<textarea>\nHello\n  World\n</textarea>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-textarea/template.marko",
    "content": "<textarea>\nHello\n  World\n</textarea>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-textarea/test.js",
    "content": "exports.templateData = {\n  name: \"World\",\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/whitespace-textarea/vdom-expected.html",
    "content": "<TEXTAREA>\n  VALUE: \"Hello\\n  World\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/xml-escaping/expected.html",
    "content": "<span>Welcome</span>&lt;Patrick>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/xml-escaping/template.marko",
    "content": "-- $!{input.welcome}\n-- ${input.name}"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/xml-escaping/test.js",
    "content": "exports.templateData = {\n  name: \"<Patrick>\",\n  welcome: \"<span>Welcome</span>\",\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures/xml-escaping/vdom-expected.html",
    "content": "<SPAN>\n  \"Welcome\"\n\"<Patrick>\"\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-arg/expected.html",
    "content": "<ul><li><!--FLUSH--><ul><li><b>Name:</b> John B. Flowers</li><li><b>Gender:</b> Male</li><li><b>Occupation:</b> Clock repairer</li></ul></li><li><ul><li><b>Name:</b> Pamela R. Rice</li><li><b>Gender:</b> Female</li><li><b>Occupation:</b> Cartographer</li></ul></li><li><ul><li><b>Name:</b> Barbara C. Rigsby</li><li><b>Gender:</b> Female</li><li><b>Occupation:</b> Enrollment specialist</li></ul></li><li><ul><li><b>Name:</b> Anthony J. Ward</li><li><b>Gender:</b> Male</li><li><b>Occupation:</b> Clinical laboratory technologist</li></ul></li></ul>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-arg/template.marko",
    "content": "import { callbackProviderWithArgs } from \"../../../__util__/async-helpers\";\n\nstatic var users = {\n    \"0\": {\n        name: \"John B. Flowers\",\n        occupation: \"Clock repairer\",\n        gender: \"Male\"\n    },\n    \"1\": {\n        name: \"Pamela R. Rice\",\n        occupation: \"Cartographer\",\n        gender: \"Female\"\n    },\n    \"2\": {\n        name: \"Barbara C. Rigsby\",\n        occupation: \"Enrollment specialist\",\n        gender: \"Female\"\n    },\n    \"3\": {\n        name: \"Anthony J. Ward\",\n        occupation: \"Clinical laboratory technologist\",\n        gender: \"Male\"\n    }\n};\nstatic var userInfo = callbackProviderWithArgs(1, arg => users[arg.userId]);\n\n<ul>\n    <for|userId| of=[0, 1, 2, 3]>\n        <li>\n            <await(\n                userInfo.bind(null, {\n                    userId: userId\n                })\n            ) name=(\"user\" + userId)>\n                <@then|userInfo|>\n                    <ul>\n                        <li>\n                            <b>Name:</b> ${userInfo.name}\n                        </li>\n                        <li>\n                            <b>Gender:</b> ${userInfo.gender}\n                        </li>\n                        <li>\n                            <b>Occupation:</b> ${userInfo.occupation}\n                        </li>\n                    </ul>\n                </@then>\n            </await>\n        </li>\n    </for>\n</ul>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-arg/test.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-args/expected.html",
    "content": "<ul><li><!--FLUSH--><ul><li><b>Name:</b> John B. Flowers</li><li><b>Gender:</b> Male</li><li><b>Occupation:</b> Clock repairer</li></ul></li><li><ul><li><b>Name:</b> Pamela R. Rice</li><li><b>Gender:</b> Female</li><li><b>Occupation:</b> Cartographer</li></ul></li><li><ul><li><b>Name:</b> Barbara C. Rigsby</li><li><b>Gender:</b> Female</li><li><b>Occupation:</b> Enrollment specialist</li></ul></li><li><ul><li><b>Name:</b> Anthony J. Ward</li><li><b>Gender:</b> Male</li><li><b>Occupation:</b> Clinical laboratory technologist</li></ul></li></ul>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-args/template.marko",
    "content": "<ul>\n    <for|userId| of=[0, 1, 2, 3]>\n        <li>\n            <await(\n                data.userInfo.bind(null, {\n                    userId: userId\n                })\n            ) name=(\"user\" + userId)>\n                <@then|userInfo|>\n                    <ul>\n                        <li>\n                            <b>Name:</b> ${userInfo.name}\n                        </li>\n                        <li>\n                            <b>Gender:</b> ${userInfo.gender}\n                        </li>\n                        <li>\n                            <b>Occupation:</b> ${userInfo.occupation}\n                        </li>\n                    </ul>\n                </@then>\n            </await>\n        </li>\n    </for>\n</ul>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-args/test.js",
    "content": "var callbackProviderWithArgs =\n  require(\"../../../__util__/async-helpers\").callbackProviderWithArgs;\nvar users = {\n  0: {\n    name: \"John B. Flowers\",\n    occupation: \"Clock repairer\",\n    gender: \"Male\",\n  },\n  1: {\n    name: \"Pamela R. Rice\",\n    occupation: \"Cartographer\",\n    gender: \"Female\",\n  },\n  2: {\n    name: \"Barbara C. Rigsby\",\n    occupation: \"Enrollment specialist\",\n    gender: \"Female\",\n  },\n  3: {\n    name: \"Anthony J. Ward\",\n    occupation: \"Clinical laboratory technologist\",\n    gender: \"Male\",\n  },\n};\n\nexports.templateData = {\n  userInfo: callbackProviderWithArgs(1, (arg) => users[arg.userId]),\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-args-merge/expected.html",
    "content": "<ul><li><!--FLUSH--><ul><li><b>Name:</b> John B. Flowers</li></ul></li><li><ul><li><b>Name:</b> Pamela R. Rice</li></ul></li><li><ul><li><b>Name:</b> Barbara C. Rigsby</li></ul></li><li><ul><li><b>Name:</b> Anthony J. Ward</li></ul></li></ul>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-args-merge/template.marko",
    "content": "<ul>\n    <for|userId| of=[0, 1, 2, 3]>\n        <li>\n            $ var arg = {\n                property: \"name\"\n            };\n            $ arg[\"userId\"] = userId;\n            <await(data.userInfo.bind(null, arg)) name=(\"user\" + userId)>\n                <@then|name|>\n                    <ul>\n                        <li>\n                            <b>Name:</b> ${name}\n                        </li>\n                    </ul>\n                </@then>\n            </await>\n        </li>\n    </for>\n</ul>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-args-merge/test.js",
    "content": "var { callbackProviderWithArgs } = require(\"../../../__util__/async-helpers\");\n\nvar users = {\n  0: {\n    name: \"John B. Flowers\",\n    occupation: \"Clock repairer\",\n    gender: \"Male\",\n  },\n  1: {\n    name: \"Pamela R. Rice\",\n    occupation: \"Cartographer\",\n    gender: \"Female\",\n  },\n  2: {\n    name: \"Barbara C. Rigsby\",\n    occupation: \"Enrollment specialist\",\n    gender: \"Female\",\n  },\n  3: {\n    name: \"Anthony J. Ward\",\n    occupation: \"Clinical laboratory technologist\",\n    gender: \"Male\",\n  },\n};\n\nexports.templateData = {\n  userInfo: callbackProviderWithArgs(\n    1,\n    (arg) => users[arg.userId][arg.property],\n  ),\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-client-reorder/expected-events-vdom.json",
    "content": "[\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"data.outer\",\n            \"clientReorder\": false\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"data.outer\",\n            \"clientReorder\": false\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"data.outer\",\n            \"clientReorder\": false,\n            \"finished\": true\n        }\n    }\n]\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-client-reorder/expected-events.json",
    "content": "[\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"input.outer\",\n            \"clientReorder\": true,\n            \"id\": 0\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"input.outer\",\n            \"clientReorder\": true,\n            \"id\": 0\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"input.outer\",\n            \"clientReorder\": true,\n            \"id\": 0,\n            \"finished\": true\n        }\n    }\n]"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-client-reorder/expected.html",
    "content": "<noscript id=afph0></noscript><!--FLUSH--><div id=af0 style=display:none><div class=foo><h1>Foo</h1> Hello World</div></div><script>function $af(d,a,e,l,g,h,k,b,f,c){c=$af;if(a&&!c[a])(c[a+=\"$\"]||(c[a]=[])).push(d);else{e=document;l=e.getElementById(\"af\"+d);g=e.getElementById(\"afph\"+d);h=e.createDocumentFragment();k=l.childNodes;b=0;for(f=k.length;b<f;b++)h.appendChild(k.item(0));g&&g.parentNode.replaceChild(h,g);c[d]=1;if(a=c[d+\"$\"])for(b=0,f=a.length;b<f;b++)c(a[b])}};$af(0)</script>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-client-reorder/template.marko",
    "content": "<await(data.outer) client-reorder>\n    <@then|outer|>\n        <div class=\"foo\">\n            <h1>Foo</h1> Hello World\n        </div>\n    </@then>\n</await>\n<await-reorderer/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-client-reorder/test.js",
    "content": "var expect = require(\"chai\").expect;\nvar extend = require(\"raptor-util/extend\");\nconst { callbackProvider } = require(\"../../../__util__/async-helpers\");\n\nexports.templateData = {\n  outer: callbackProvider(1, {}),\n  inner1: callbackProvider(2, {}),\n  inner2: callbackProvider(3, {}),\n};\n\nexports.checkEvents = function (events, snapshot, out) {\n  events = events.map(function (eventInfo) {\n    var arg = extend({}, eventInfo.arg);\n    expect(arg.out != null).to.equal(true);\n\n    delete arg.out; // Not serializable\n    delete arg.parent; // Not serializable\n    delete arg.asyncValue; // Not serializable\n\n    return {\n      event: eventInfo.event,\n      arg: arg,\n    };\n  });\n\n  snapshot(events, out.isVDOM ? \"-events-vdom.json\" : \"-events.json\");\n};\n\nexports.skip_vdom = \"client-reorder/placeholders are not supported in vdom\";\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-client-reorder-cspnonce/expected-events-vdom.json",
    "content": "[\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"data.outer\",\n            \"clientReorder\": false\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"data.outer\",\n            \"clientReorder\": false\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"data.outer\",\n            \"clientReorder\": false,\n            \"finished\": true\n        }\n    }\n]\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-client-reorder-cspnonce/expected-events.json",
    "content": "[\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"input.outer\",\n            \"clientReorder\": true,\n            \"id\": 0\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"input.outer\",\n            \"clientReorder\": true,\n            \"id\": 0\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"input.outer\",\n            \"clientReorder\": true,\n            \"id\": 0,\n            \"finished\": true\n        }\n    }\n]"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-client-reorder-cspnonce/expected.html",
    "content": "<noscript id=afph0></noscript><!--FLUSH--><style nonce=xyz>#af0{display:none}</style><div id=af0><div class=foo><h1>Foo</h1> Hello World</div></div><script nonce=xyz>function $af(d,a,e,l,g,h,k,b,f,c){c=$af;if(a&&!c[a])(c[a+=\"$\"]||(c[a]=[])).push(d);else{e=document;l=e.getElementById(\"af\"+d);g=e.getElementById(\"afph\"+d);h=e.createDocumentFragment();k=l.childNodes;b=0;for(f=k.length;b<f;b++)h.appendChild(k.item(0));g&&g.parentNode.replaceChild(h,g);c[d]=1;if(a=c[d+\"$\"])for(b=0,f=a.length;b<f;b++)c(a[b])}};$af(0)</script>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-client-reorder-cspnonce/template.marko",
    "content": "<await(data.outer) client-reorder>\n    <@then|outer|>\n        <div class=\"foo\">\n            <h1>Foo</h1> Hello World\n        </div>\n    </@then>\n</await>\n<await-reorderer/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-client-reorder-cspnonce/test.js",
    "content": "var expect = require(\"chai\").expect;\nvar extend = require(\"raptor-util/extend\");\nconst { callbackProvider } = require(\"../../../__util__/async-helpers\");\n\nexports.templateData = {\n  outer: callbackProvider(1, {}),\n  $global: {\n    cspNonce: \"xyz\",\n  },\n};\n\nexports.checkEvents = function (events, snapshot, out) {\n  events = events.map(function (eventInfo) {\n    var arg = extend({}, eventInfo.arg);\n    expect(arg.out != null).to.equal(true);\n\n    delete arg.out; // Not serializable\n    delete arg.parent; // Not serializable\n    delete arg.asyncValue; // Not serializable\n\n    return {\n      event: eventInfo.event,\n      arg: arg,\n    };\n  });\n\n  snapshot(events, out.isVDOM ? \"-events-vdom.json\" : \"-events.json\");\n};\n\nexports.skip_vdom = \"client-reorder/placeholders are not supported in vdom\";\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-client-reorder-invoked-once/expected-events-vdom.json",
    "content": "[\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"data.outer\",\n            \"clientReorder\": false\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"data.outer\",\n            \"clientReorder\": false\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"data.outer\",\n            \"clientReorder\": false,\n            \"finished\": true\n        }\n    }\n]\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-client-reorder-invoked-once/expected-events.json",
    "content": "[\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"input.outer\",\n            \"clientReorder\": true,\n            \"id\": 0\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"input.outer\",\n            \"clientReorder\": true,\n            \"id\": 0\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"input.outer\",\n            \"clientReorder\": true,\n            \"id\": 0,\n            \"finished\": true\n        }\n    }\n]"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-client-reorder-invoked-once/expected.html",
    "content": "<body><noscript id=afph0></noscript><!--FLUSH--><div id=af0 style=display:none><div class=foo><h1>Foo</h1> Hello World</div></div><script>function $af(d,a,e,l,g,h,k,b,f,c){c=$af;if(a&&!c[a])(c[a+=\"$\"]||(c[a]=[])).push(d);else{e=document;l=e.getElementById(\"af\"+d);g=e.getElementById(\"afph\"+d);h=e.createDocumentFragment();k=l.childNodes;b=0;for(f=k.length;b<f;b++)h.appendChild(k.item(0));g&&g.parentNode.replaceChild(h,g);c[d]=1;if(a=c[d+\"$\"])for(b=0,f=a.length;b<f;b++)c(a[b])}};$af(0)</script></body>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-client-reorder-invoked-once/template.marko",
    "content": "<body>\n    <await(data.outer) client-reorder>\n        <@then|outer|>\n            <div class=\"foo\">\n                <h1>Foo</h1> Hello World\n            </div>\n        </@then>\n    </await>\n    <await-reorderer/>\n</body>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-client-reorder-invoked-once/test.js",
    "content": "const expect = require(\"chai\").expect;\nconst extend = require(\"raptor-util/extend\");\nconst { callbackProvider } = require(\"../../../__util__/async-helpers\");\n\nexports.templateData = {\n  outer: callbackProvider(1, {}),\n  inner1: callbackProvider(2, {}),\n  inner2: callbackProvider(3, {}),\n};\n\nexports.checkEvents = function (events, snapshot, out) {\n  // Expect that we invoked the await reorderer. If true, it was only able to\n  // be invoked once.\n  expect(out.global.__awaitReordererInvoked).to.equal(true);\n\n  events = events.map(function (eventInfo) {\n    var arg = extend({}, eventInfo.arg);\n    expect(arg.out != null).to.equal(true);\n\n    delete arg.out; // Not serializable\n    delete arg.parent; // Not serializable\n    delete arg.asyncValue; // Not serializable\n\n    return {\n      event: eventInfo.event,\n      arg: arg,\n    };\n  });\n\n  snapshot(events, out.isVDOM ? \"-events-vdom.json\" : \"-events.json\");\n};\n\nexports.skip_vdom = \"client-reorder/placeholders are not supported in vdom\";\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-client-reorder-mixed/expected-events-vdom.json",
    "content": "[\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"data.outer\",\n            \"clientReorder\": false\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"data.outer\",\n            \"clientReorder\": false\n        }\n    },\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"data.inner1\",\n            \"clientReorder\": false\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"data.inner1\",\n            \"clientReorder\": false\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"data.inner1\",\n            \"clientReorder\": false,\n            \"finished\": true\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"data.outer\",\n            \"clientReorder\": false,\n            \"finished\": true\n        }\n    }\n]\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-client-reorder-mixed/expected-events.json",
    "content": "[\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"input.outer\",\n            \"clientReorder\": true,\n            \"id\": 0\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"input.outer\",\n            \"clientReorder\": true,\n            \"id\": 0\n        }\n    },\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"input.inner1\",\n            \"clientReorder\": false\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"input.inner1\",\n            \"clientReorder\": false\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"input.inner1\",\n            \"clientReorder\": false,\n            \"finished\": true\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"input.outer\",\n            \"clientReorder\": true,\n            \"id\": 0,\n            \"finished\": true\n        }\n    }\n]"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-client-reorder-mixed/expected.html",
    "content": "<body><noscript id=afph0></noscript><!--FLUSH--><div id=af0 style=display:none><div class=outer><h1>Outer</h1><div class=inner><h2>Inner 1</h2></div></div></div><script>function $af(d,a,e,l,g,h,k,b,f,c){c=$af;if(a&&!c[a])(c[a+=\"$\"]||(c[a]=[])).push(d);else{e=document;l=e.getElementById(\"af\"+d);g=e.getElementById(\"afph\"+d);h=e.createDocumentFragment();k=l.childNodes;b=0;for(f=k.length;b<f;b++)h.appendChild(k.item(0));g&&g.parentNode.replaceChild(h,g);c[d]=1;if(a=c[d+\"$\"])for(b=0,f=a.length;b<f;b++)c(a[b])}};$af(0)</script></body>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-client-reorder-mixed/template.marko",
    "content": "<body>\n    <await(data.outer) client-reorder>\n        <@then|outer|>\n            <div class=\"outer\">\n                <h1>Outer</h1>\n                <await(data.inner1)>\n                    <@then|inner1|>\n                        <div class=\"inner\">\n                            <h2>Inner 1</h2>\n                        </div>\n                    </@then>\n                </await>\n            </div>\n        </@then>\n    </await>\n    <await-reorderer/>\n</body>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-client-reorder-mixed/test.js",
    "content": "var expect = require(\"chai\").expect;\nvar extend = require(\"raptor-util/extend\");\nconst { callbackProvider } = require(\"../../../__util__/async-helpers\");\n\nexports.templateData = {\n  outer: callbackProvider(1, {}),\n  inner1: callbackProvider(2, {}),\n};\n\nexports.checkEvents = function (events, snapshot, out) {\n  events = events.map(function (eventInfo) {\n    var arg = extend({}, eventInfo.arg);\n    expect(arg.out != null).to.equal(true);\n\n    delete arg.out; // Not serializable\n    delete arg.parent; // Not serializable\n    delete arg.asyncValue; // Not serializable\n\n    return {\n      event: eventInfo.event,\n      arg: arg,\n    };\n  });\n\n  snapshot(events, out.isVDOM ? \"-events-vdom.json\" : \"-events.json\");\n};\n\nexports.skip_vdom = \"client-reorder/placeholders are not supported in vdom\";\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-client-reorder-nested/expected-events-vdom.json",
    "content": "[\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"data.outer\",\n            \"clientReorder\": false\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"data.outer\",\n            \"clientReorder\": false\n        }\n    },\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"data.inner1\",\n            \"clientReorder\": false\n        }\n    },\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"data.inner2\",\n            \"clientReorder\": false\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"data.inner1\",\n            \"clientReorder\": false\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"data.inner1\",\n            \"clientReorder\": false,\n            \"finished\": true\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"data.inner2\",\n            \"clientReorder\": false\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"data.inner2\",\n            \"clientReorder\": false,\n            \"finished\": true\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"data.outer\",\n            \"clientReorder\": false,\n            \"finished\": true\n        }\n    }\n]\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-client-reorder-nested/expected-events.json",
    "content": "[\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"input.outer\",\n            \"clientReorder\": true,\n            \"id\": 0\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"input.outer\",\n            \"clientReorder\": true,\n            \"id\": 0\n        }\n    },\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"input.inner1\",\n            \"clientReorder\": true,\n            \"id\": 1\n        }\n    },\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"input.inner2\",\n            \"clientReorder\": true,\n            \"id\": 2\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"input.outer\",\n            \"clientReorder\": true,\n            \"id\": 0,\n            \"finished\": true\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"input.inner1\",\n            \"clientReorder\": true,\n            \"id\": 1\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"input.inner1\",\n            \"clientReorder\": true,\n            \"id\": 1,\n            \"finished\": true\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"input.inner2\",\n            \"clientReorder\": true,\n            \"id\": 2\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"input.inner2\",\n            \"clientReorder\": true,\n            \"id\": 2,\n            \"finished\": true\n        }\n    }\n]"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-client-reorder-nested/expected.html",
    "content": "<noscript id=afph0></noscript><!--FLUSH--><div id=af0 style=display:none><div class=outer><h1>Outer</h1><noscript id=afph1></noscript><noscript id=afph2></noscript></div></div><script>function $af(d,a,e,l,g,h,k,b,f,c){c=$af;if(a&&!c[a])(c[a+=\"$\"]||(c[a]=[])).push(d);else{e=document;l=e.getElementById(\"af\"+d);g=e.getElementById(\"afph\"+d);h=e.createDocumentFragment();k=l.childNodes;b=0;for(f=k.length;b<f;b++)h.appendChild(k.item(0));g&&g.parentNode.replaceChild(h,g);c[d]=1;if(a=c[d+\"$\"])for(b=0,f=a.length;b<f;b++)c(a[b])}};$af(0)</script><!--FLUSH--><div id=af1 style=display:none><div class=inner1><h2>Inner 1</h2></div></div><script>$af(1)</script><!--FLUSH--><div id=af2 style=display:none><div class=inner2><h2>Inner 2</h2></div></div><script>$af(2)</script>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-client-reorder-nested/template.marko",
    "content": "<await(data.outer) client-reorder>\n    <@then|outer|>\n        <div class=\"outer\">\n            <h1>Outer</h1>\n            <await(data.inner1) client-reorder>\n                <@then|inner1|>\n                    <div class=\"inner1\">\n                        <h2>Inner 1</h2>\n                    </div>\n                </@then>\n            </await>\n            <await(data.inner2) client-reorder>\n                <@then|inner2|>\n                    <div class=\"inner2\">\n                        <h2>Inner 2</h2>\n                    </div>\n                </@then>\n            </await>\n        </div>\n    </@then>\n</await>\n<await-reorderer/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-client-reorder-nested/test.js",
    "content": "var expect = require(\"chai\").expect;\nvar extend = require(\"raptor-util/extend\");\nconst { callbackProvider } = require(\"../../../__util__/async-helpers\");\n\nexports.templateData = {\n  outer: callbackProvider(1, {}),\n  inner1: callbackProvider(2, {}),\n  inner2: callbackProvider(3, {}),\n};\n\nexports.checkEvents = function (events, snapshot, out) {\n  events = events.map(function (eventInfo) {\n    var arg = extend({}, eventInfo.arg);\n    expect(arg.out != null).to.equal(true);\n\n    delete arg.out; // Not serializable\n    delete arg.parent; // Not serializable\n    delete arg.asyncValue; // Not serializable\n\n    return {\n      event: eventInfo.event,\n      arg: arg,\n    };\n  });\n\n  snapshot(events, out.isVDOM ? \"-events-vdom.json\" : \"-events.json\");\n};\n\nexports.skip_vdom = \"client-reorder/placeholders are not supported in vdom\";\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-client-reorder-sync/expected-events.json",
    "content": "[]"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-client-reorder-sync/expected.html",
    "content": "<div>Hello Frank!</div>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-client-reorder-sync/template.marko",
    "content": "<await(data.userDataProvider) client-reorder>\n    <@then|user|>\n        <div>Hello ${user.name}!</div>\n    </@then>\n</await>\n<await-reorderer/>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-client-reorder-sync/test.js",
    "content": "var expect = require(\"chai\").expect;\nvar extend = require(\"raptor-util/extend\");\n\nexports.templateData = {\n  userDataProvider: function (callback) {\n    callback(null, { name: \"Frank\" });\n  },\n};\n\nexports.checkEvents = function (events, snapshot) {\n  events = events.map(function (eventInfo) {\n    var arg = extend({}, eventInfo.arg);\n    expect(arg.out != null).to.equal(true);\n\n    delete arg.out; // Not serializable\n    delete arg.parent; // Not serializable\n    delete arg.asyncValue; // Not serializable\n\n    return {\n      event: eventInfo.event,\n      arg: arg,\n    };\n  });\n\n  snapshot(events, \"-events.json\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-data-provider-method/expected.html",
    "content": "Hello Frank!"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-data-provider-method/template.marko",
    "content": "import { promiseProvider } from \"../../../__util__/async-helpers\";\n\nstatic var dataProvider = {\n    user: {\n        name: \"Frank\"\n    },\n\n    getUserInfo() {\n        return promiseProvider(1, this.user);\n    }\n};\n\n<await(dataProvider[\"getUserInfo\"].bind(dataProvider))>\n    <@then|user|>Hello ${user.name}!</@then>\n</await>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-data-provider-method/test.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-data-providers/expected.html",
    "content": "testContextDatatestSharedData"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-data-providers/template.marko",
    "content": "<await(data.contextData)>\n    <@then|d1|>${d1.name}</@then>\n</await>\n<await(data.sharedData)>\n    <@then|d2|>${d2.name}</@then>\n</await>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-data-providers/test.js",
    "content": "const {\n  promiseProvider,\n  callbackProvider,\n} = require(\"../../../__util__/async-helpers\");\n\nexports.templateData = {\n  sharedData: function () {\n    return promiseProvider(1, {\n      name: \"testSharedData\",\n    });\n  },\n  contextData: callbackProvider(1, {\n    name: \"testContextData\",\n  }),\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-error/expected.html",
    "content": "BEFORE <!--FLUSH-->something went wrong! AFTER"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-error/template.marko",
    "content": "---\nBEFORE\n<await(data.testDataProvider)>\n    <@then|testData|>Success!</@then>\n    <@catch>something went wrong!</@catch>\n</await>\nAFTER\n---"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-error/test.js",
    "content": "const { callbackProvider } = require(\"../../../__util__/async-helpers\");\n\nexports.templateData = {\n  testDataProvider: callbackProvider(1, new Error(\"Something went wrong!\")),\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-error-message-attr/expected.html",
    "content": "BEFORE <!--FLUSH-->something went wrong! AFTER"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-error-message-attr/template.marko",
    "content": "---\nBEFORE\n<await(data.testDataProvider)>\n    <@then|testData|>Success!</@then>\n    <@catch>something went wrong!</@catch>\n</await>\nAFTER\n---"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-error-message-attr/test.js",
    "content": "const { callbackProvider } = require(\"../../../__util__/async-helpers\");\n\nexports.templateData = {\n  testDataProvider: callbackProvider(1, new Error(\"Something went wrong!\")),\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-function-data-provider-callback/expected.html",
    "content": "Hello John"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-function-data-provider-callback/template.marko",
    "content": "<await(data.userInfo)>\n    <@then|userInfo|>Hello ${userInfo.name}</@then>\n</await>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-function-data-provider-callback/test.js",
    "content": "exports.templateData = {\n  userInfo: function (arg, done) {\n    done(null, {\n      name: \"John\",\n    });\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-function-data-provider-return-promise/expected.html",
    "content": "Hello John"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-function-data-provider-return-promise/template.marko",
    "content": "<await(data.userInfo)>\n    <@then|userInfo|>Hello ${userInfo.name}</@then>\n</await>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-function-data-provider-return-promise/test.js",
    "content": "const { promiseProvider } = require(\"../../../__util__/async-helpers\");\n\nexports.templateData = {\n  userInfo: function () {\n    return promiseProvider(1, {\n      name: \"John\",\n    });\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-function-data-provider-sync/expected.html",
    "content": "Hello John"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-function-data-provider-sync/template.marko",
    "content": "<await(data.userInfo)>\n    <@then|userInfo|>Hello ${userInfo.name}</@then>\n</await>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-function-data-provider-sync/test.js",
    "content": "exports.templateData = {\n  userInfo: function () {\n    return {\n      name: \"John\",\n    };\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-out-of-order-with-in-order/expected.html",
    "content": "BEFORE-OUT-OF-ORDER <noscript id=afpha></noscript> AFTER-OUT-OF-ORDER <!--FLUSH--><div id=afc style=display:none>NESTED-OUT-OF-ORDER</div><script>function $af(d,a,e,l,g,h,k,b,f,c){c=$af;if(a&&!c[a])(c[a+=\"$\"]||(c[a]=[])).push(d);else{e=document;l=e.getElementById(\"af\"+d);g=e.getElementById(\"afph\"+d);h=e.createDocumentFragment();k=l.childNodes;b=0;for(f=k.length;b<f;b++)h.appendChild(k.item(0));g&&g.parentNode.replaceChild(h,g);c[d]=1;if(a=c[d+\"$\"])for(b=0,f=a.length;b<f;b++)c(a[b])}}</script><!--FLUSH--><div id=afa style=display:none>BEFORE-IN-ORDER INSIDE-IN-ORDER<noscript id=afphc></noscript> AFTER-IN-ORDER</div><script>$af(\"a\");$af(\"c\")</script>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-out-of-order-with-in-order/template.marko",
    "content": "---\nBEFORE-OUT-OF-ORDER\n<await(new Promise(r => setTimeout(r, 20))) name=\"a\" client-reorder>\n    <@then>\n        BEFORE-IN-ORDER\n        <await(new Promise(r => setTimeout(r, 20))) name=\"b\">\n            <@then>INSIDE-IN-ORDER</>\n        </>\n        <await(Promise.resolve()) name=\"c\" client-reorder>\n            <@then>NESTED-OUT-OF-ORDER</>\n        </>\n        AFTER-IN-ORDER\n    </>\n</>\nAFTER-OUT-OF-ORDER\n<await-reorderer/>\n---"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-out-of-order-with-in-order/test.js",
    "content": "const { callbackProvider } = require(\"../../../__util__/async-helpers\");\n\nexports.templateData = {\n  testDataProvider: callbackProvider(1, { name: \"Frank\" }),\n};\n\nexports.skip_vdom = \"client-reorder/placeholders are not supported in vdom\";\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-out-of-order-with-in-order-after/expected.html",
    "content": "BEFORE-OUT-OF-ORDER <noscript id=afpha></noscript><!--FLUSH-->BEFORE-AFTER-OUT-OF-ORDER AFTER-OUT-OF-ORDER <div id=afa style=display:none>BEFORE-IN-ORDER INSIDE-IN-ORDER<noscript id=afphc></noscript> AFTER-IN-ORDER</div><div id=afc style=display:none>NESTED-OUT-OF-ORDER</div><script>function $af(d,a,e,l,g,h,k,b,f,c){c=$af;if(a&&!c[a])(c[a+=\"$\"]||(c[a]=[])).push(d);else{e=document;l=e.getElementById(\"af\"+d);g=e.getElementById(\"afph\"+d);h=e.createDocumentFragment();k=l.childNodes;b=0;for(f=k.length;b<f;b++)h.appendChild(k.item(0));g&&g.parentNode.replaceChild(h,g);c[d]=1;if(a=c[d+\"$\"])for(b=0,f=a.length;b<f;b++)c(a[b])}};$af(\"a\");$af(\"c\")</script>"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-out-of-order-with-in-order-after/template.marko",
    "content": "---\nBEFORE-OUT-OF-ORDER\n<await(new Promise(r => setTimeout(r, 20))) name=\"a\" client-reorder>\n    <@then>\n        BEFORE-IN-ORDER\n        <await(new Promise(r => setTimeout(r, 20))) name=\"b\">\n            <@then>INSIDE-IN-ORDER</>\n        </>\n        <await(Promise.resolve()) name=\"c\" client-reorder>\n            <@then>NESTED-OUT-OF-ORDER</>\n        </>\n        AFTER-IN-ORDER\n    </>\n</>\n<await(new Promise(r => setTimeout(r, 60))) name=\"d\">\n    <@then>BEFORE-AFTER-OUT-OF-ORDER</>\n</>\nAFTER-OUT-OF-ORDER\n<await-reorderer/>\n---\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-out-of-order-with-in-order-after/test.js",
    "content": "const { callbackProvider } = require(\"../../../__util__/async-helpers\");\n\nexports.templateData = {\n  testDataProvider: callbackProvider(1, { name: \"Frank\" }),\n};\n\nexports.skip_vdom = \"client-reorder/placeholders are not supported in vdom\";\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-placeholder/template.marko",
    "content": "---\nBEFORE\n<await(data.testDataProvider) client-reorder>\n    <@then|testData|>Hello ${testData.name}!</@then>\n    <@placeholder>Loading main...</@placeholder>\n</await>\nAFTER <await-reorderer/>\n---"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-placeholder/test.js",
    "content": "var expect = require(\"chai\").expect;\nconst { callbackProvider } = require(\"../../../__util__/async-helpers\");\n\nexports.templateData = {\n  testDataProvider: callbackProvider(1, { name: \"Frank\" }),\n};\n\nexports.checkHtml = function (html) {\n  expect(html).to.contain(\"Loading main...\");\n  expect(html).to.contain(\"Hello Frank\");\n};\n\nexports.skip_vdom = \"client-reorder/placeholders are not supported in vdom\";\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-placeholder-message-attr/template.marko",
    "content": "---\nBEFORE\n<await(data.testDataProvider) client-reorder>\n    <@then|testData|>Hello ${testData.name}!</@then>\n    <@placeholder>Loading main...</@placeholder>\n</await>\nAFTER <await-reorderer/>\n---"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-placeholder-message-attr/test.js",
    "content": "var expect = require(\"chai\").expect;\nconst { callbackProvider } = require(\"../../../__util__/async-helpers\");\n\nexports.templateData = {\n  testDataProvider: callbackProvider(1, { name: \"Frank\" }),\n};\n\nexports.checkHtml = function (html) {\n  expect(html).to.contain(\"Loading main...\");\n  expect(html).to.contain(\"Hello Frank\");\n};\n\nexports.skip_vdom = \"client-reorder/placeholders are not supported in vdom\";\n"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-timeout/expected-events.json",
    "content": "[\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"userInfo1\",\n            \"clientReorder\": false\n        }\n    },\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"userInfo2\",\n            \"clientReorder\": false\n        }\n    },\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"userInfo3\",\n            \"clientReorder\": false\n        }\n    },\n    {\n        \"event\": \"await:begin\",\n        \"arg\": {\n            \"name\": \"userInfo4\",\n            \"clientReorder\": false\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"userInfo1\",\n            \"clientReorder\": false,\n            \"error\": {\n                \"code\": \"ERR_AWAIT_TIMEDOUT\",\n                \"name\": \"TimeoutError\"\n            }\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"userInfo1\",\n            \"clientReorder\": false,\n            \"error\": {\n                \"code\": \"ERR_AWAIT_TIMEDOUT\",\n                \"name\": \"TimeoutError\"\n            },\n            \"finished\": true\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"userInfo2\",\n            \"clientReorder\": false,\n            \"error\": {\n                \"code\": \"ERR_AWAIT_TIMEDOUT\",\n                \"name\": \"TimeoutError\"\n            }\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"userInfo2\",\n            \"clientReorder\": false,\n            \"error\": {\n                \"code\": \"ERR_AWAIT_TIMEDOUT\",\n                \"name\": \"TimeoutError\"\n            },\n            \"finished\": true\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"userInfo3\",\n            \"clientReorder\": false,\n            \"error\": {\n                \"code\": \"ERR_AWAIT_TIMEDOUT\",\n                \"name\": \"TimeoutError\"\n            }\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"userInfo3\",\n            \"clientReorder\": false,\n            \"error\": {\n                \"code\": \"ERR_AWAIT_TIMEDOUT\",\n                \"name\": \"TimeoutError\"\n            },\n            \"finished\": true\n        }\n    },\n    {\n        \"event\": \"await:beforeRender\",\n        \"arg\": {\n            \"name\": \"userInfo4\",\n            \"clientReorder\": false,\n            \"error\": {\n                \"code\": \"ERR_AWAIT_TIMEDOUT\",\n                \"name\": \"TimeoutError\"\n            }\n        }\n    },\n    {\n        \"event\": \"await:finish\",\n        \"arg\": {\n            \"name\": \"userInfo4\",\n            \"clientReorder\": false,\n            \"error\": {\n                \"code\": \"ERR_AWAIT_TIMEDOUT\",\n                \"name\": \"TimeoutError\"\n            },\n            \"finished\": true\n        }\n    }\n]"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-timeout/expected.html",
    "content": "BEFORE1-A timeout has occurred!2-A timeout has occurred!3-A timeout has occurred!4-A timeout has occurred! AFTER"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-timeout/template.marko",
    "content": "---\nBEFORE<await(data.userInfoShort) timeout=10 name=\"userInfo1\">\n    <@then|user|>1</@then>\n    <@catch|err|>\n        <if(err.name === \"TimeoutError\")>1-A timeout has occurred!</if>\n    </@catch>\n</await>\n<await(data.userInfoShort) timeout=10 name=\"userInfo2\">\n    <@then|user|>2</@then>\n    <@catch|err|>\n        <if(err.name === \"TimeoutError\")>2-A timeout has occurred!</if>\n    </@catch>\n</await>\n<await(data.userInfoLong) timeout=100 name=\"userInfo3\">\n    <@then|user|>3</@then>\n    <@catch|err|>\n        <if(err.name === \"TimeoutError\")>3-A timeout has occurred!</if>\n    </@catch>\n</await>\n<await(data.userInfoLong) timeout=100 name=\"userInfo4\">\n    <@then|user|>4</@then>\n    <@catch|err|>\n        <if(err.name === \"TimeoutError\")>4-A timeout has occurred!</if>\n    </@catch>\n</await>\nAFTER\n---"
  },
  {
    "path": "packages/runtime-class/test/render/fixtures-async-callback/await-timeout/test.js",
    "content": "var expect = require(\"chai\").expect;\nvar extend = require(\"raptor-util/extend\");\n\nexports.templateData = {\n  userInfoShort: function (done) {\n    setTimeout(function () {\n      done(null, {});\n    }, 50);\n  },\n  userInfoLong: function (done) {\n    setTimeout(function () {\n      done(null, {});\n    }, 200);\n  },\n};\n\nexports.checkEvents = function (events, snapshot) {\n  events = events.map(function (eventInfo) {\n    var arg = extend({}, eventInfo.arg);\n    expect(arg.out != null).to.equal(true);\n\n    delete arg.out; // Not serializable\n    delete arg.parent; // Not serializable\n    delete arg.parent; // Not serializable\n\n    delete arg.asyncValue; // Not serializable\n\n    return {\n      event: eventInfo.event,\n      arg: arg,\n    };\n  });\n\n  snapshot(events, \"-events.json\");\n};\n\nexports.noFlushComment = true;\n"
  },
  {
    "path": "packages/runtime-class/test/render/index.test.js",
    "content": "\"use strict\";\n\nrequire(\"../__util__/test-init\");\n\nconst fs = require(\"fs\");\nconst path = require(\"path\");\nconst expect = require(\"chai\").expect;\nconst toDiffableHtml = require(\"diffable-html\");\nconst marko = require(\"marko\");\nconst autotest = require(\"mocha-autotest\").default;\nconst createBrowserWithMarko = require(\"../__util__/create-marko-jsdom-module\");\nconst domToString = require(\"../__util__/domToString\");\nconst browser = createBrowserWithMarko(__dirname, \"<html><body></body></html>\");\n\nautotest(\"fixtures\", {\n  html: testRunner,\n  vdom: testRunner,\n  \"html ≅ vdom\": compareNormalized,\n});\n\nautotest(\"fixtures-async-callback\", {\n  html: testRunner,\n});\n\nfunction testRunner(fixture) {\n  fixture.test(() => runRenderTest(fixture));\n}\n\nfunction compareNormalized({ test, context }) {\n  test(function () {\n    if (!(\"html\" in context) || !(\"vdom\" in context)) {\n      this.skip();\n    } else {\n      expect(context.html).to.equal(context.vdom);\n    }\n  });\n}\n\nasync function runRenderTest(fixture) {\n  let dir = fixture.dir;\n  let output = fixture.mode || \"html\";\n  let snapshot = fixture.snapshot;\n  let isVDOM = output === \"vdom\";\n\n  browser.error = undefined;\n\n  let templatePath = path.join(dir, \"template.marko\");\n  let mainPath = path.join(dir, \"test.js\");\n  let main = !fs.existsSync(mainPath)\n    ? {}\n    : isVDOM\n      ? browser.require(mainPath)\n      : require(mainPath);\n  let loadOptions = main && main.loadOptions;\n\n  try {\n    var compilerOptions = {\n      output: output,\n      writeToDisk: main.writeToDisk !== false,\n      preserveWhitespace: main.preserveWhitespaceGlobal === true,\n      ignoreUnrecognizedTags: main.ignoreUnrecognizedTags === true,\n    };\n\n    require(\"marko/compiler\").configure(compilerOptions);\n\n    if (main.checkError) {\n      let e;\n\n      try {\n        let template = isVDOM\n          ? browser.require(templatePath)\n          : marko.load(templatePath, loadOptions);\n        let templateData = Object.assign({}, main.templateData || {});\n\n        if (template.default) {\n          template = template.default;\n        }\n\n        await template.render(templateData);\n      } catch (_e) {\n        e = _e;\n        let errorFile = path.join(dir, \"error.txt\");\n        fs.writeFileSync(errorFile, e.stack.toString(), {\n          encoding: \"utf8\",\n        });\n      }\n\n      if (!e) {\n        throw new Error(\"Error expected\");\n      }\n\n      main.checkError(e);\n      return;\n    } else {\n      let template = isVDOM\n        ? browser.require(templatePath)\n        : marko.load(templatePath, loadOptions);\n      let templateData = Object.assign({}, main.templateData || {});\n\n      if (template.default) {\n        template = template.default;\n      }\n\n      let html = \"\";\n      let out = isVDOM\n        ? template.createOut()\n        : template.createOut(\n            {},\n            {\n              write: (data) => (html += data),\n              flush: () => {\n                if (!main.noFlushComment) {\n                  html += \"<!--FLUSH-->\";\n                }\n              },\n              end: () => {\n                html = html.replace(/<!--FLUSH-->$/, \"\");\n                out.emit(\"finish\");\n              },\n            },\n          );\n      let asyncEventsVerifier = createAsyncVerifier(\n        main,\n        snapshot,\n        out,\n        isVDOM,\n      );\n\n      if (main.sync) {\n        out.sync();\n      }\n\n      await template.render(templateData, out).end();\n\n      if (isVDOM) {\n        let document = browser.window.document;\n        let actualNode = document.createDocumentFragment();\n        out.___getResult().replaceChildrenOf(actualNode);\n\n        actualNode.normalize();\n        let vdomString = domToString(actualNode, {\n          childrenOnly: true,\n        });\n\n        snapshot(vdomString, {\n          name: \"vdom\",\n          ext: \".html\",\n        });\n\n        (fixture.context || (fixture.context = {})).vdom =\n          normalizeHtml(actualNode);\n\n        if (browser.error) {\n          const err = browser.error;\n          browser.error = undefined;\n          throw err;\n        }\n      } else {\n        if (main.checkHtml) {\n          fs.writeFileSync(path.join(dir, \"actual.html\"), html, {\n            encoding: \"utf8\",\n          });\n          main.checkHtml(html);\n        } else {\n          snapshot(html, {\n            ext: \".html\",\n            format: toDiffableHtml,\n          });\n        }\n\n        (fixture.context || (fixture.context = {})).html = normalizeHtml(html);\n      }\n\n      asyncEventsVerifier.verify();\n    }\n  } finally {\n    require(\"marko/compiler\").configure();\n  }\n}\n\nfunction normalizeHtml(htmlOrNode) {\n  let document = browser.window.document;\n\n  if (typeof htmlOrNode === \"string\") {\n    document.open();\n    document.write(htmlOrNode);\n    document.close();\n  } else {\n    document.documentElement.innerHTML = \"\";\n    document.body.appendChild(htmlOrNode);\n  }\n\n  const treeWalker = document.createTreeWalker(document.body);\n  const nodesToRemove = [];\n\n  while (treeWalker.nextNode()) {\n    const node = treeWalker.currentNode;\n    if (\n      node.nodeType === 8 ||\n      isIgnoredTag(node) ||\n      isClientReorderFragment(node)\n    ) {\n      nodesToRemove.push(node);\n    }\n    if (node.nodeType === 1) {\n      if (node.tagName === \"TEXTAREA\") {\n        node.textContent = node.value;\n      }\n\n      // sort attrs by name.\n      Array.from(node.attributes)\n        .sort((a, b) => a.name.localeCompare(b.name))\n        .forEach((attr) => {\n          node.removeAttributeNode(attr);\n          node.setAttributeNode(attr);\n        });\n    }\n  }\n\n  nodesToRemove.forEach((n) => n.remove());\n  document.body.innerHTML += \"\";\n  document.body.normalize();\n\n  return document.body.innerHTML.trim();\n}\n\nfunction isIgnoredTag(node) {\n  switch (node.tagName) {\n    case \"LINK\":\n    case \"TITLE\":\n    case \"STYLE\":\n    case \"SCRIPT\":\n      return true;\n    default:\n      return false;\n  }\n}\n\nfunction isClientReorderFragment(node) {\n  return /^af\\d+$/.test(node.id);\n}\n\nfunction createAsyncVerifier(main, snapshot, out, isVDOM) {\n  var events = [];\n  var eventsByAwaitInstance = {};\n\n  var addEventListener = function (event) {\n    out.on(event, function (arg) {\n      var name = arg.name;\n\n      if (!eventsByAwaitInstance[name]) {\n        eventsByAwaitInstance[name] = [];\n      }\n\n      eventsByAwaitInstance[name].push(event);\n\n      events.push({\n        event: event,\n        arg: Object.assign({}, arg),\n      });\n    });\n  };\n\n  addEventListener(\"await:begin\");\n  addEventListener(\"await:beforeRender\");\n  addEventListener(\"await:finish\");\n\n  return {\n    verify() {\n      if (main.checkEvents && !isVDOM) {\n        main.checkEvents(events, snapshot, out);\n      }\n\n      // Make sure all of the await instances were correctly ended\n      Object.keys(eventsByAwaitInstance).forEach(function (name) {\n        var events = eventsByAwaitInstance[name];\n        expect(events).to.deep.equal([\n          \"await:begin\",\n          \"await:beforeRender\",\n          \"await:finish\",\n        ]);\n      });\n    },\n  };\n}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/deeply-nested/a/b/c/marko.json",
    "content": "{}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/deeply-nested/a/b/marko.json",
    "content": "{}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/deeply-nested/a/marko.json",
    "content": "{}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/deeply-nested/expected.json",
    "content": "[\n  \"/a/b/c/marko.json\",\n  \"/a/b/marko.json\",\n  \"/a/marko.json\"\n]"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/deeply-nested/package.json",
    "content": "{\n    \"name\": \"taglib-finder-test\",\n    \"version\": \"0.0.0\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/deeply-nested/test.js",
    "content": "exports.dir = \"a/b/c\";\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/deeply-nested-gaps/a/b/c/marko.json",
    "content": "{}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/deeply-nested-gaps/a/marko.json",
    "content": "{}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/deeply-nested-gaps/expected.json",
    "content": "[\n  \"/a/b/c/marko.json\",\n  \"/a/marko.json\"\n]"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/deeply-nested-gaps/package.json",
    "content": "{\n    \"name\": \"taglib-finder-test\",\n    \"version\": \"0.0.0\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/deeply-nested-gaps/test.js",
    "content": "exports.dir = \"a/b/c\";\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/deeply-nested-plus-installed/a/b/c/marko.json",
    "content": "{}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/deeply-nested-plus-installed/a/b/marko.json",
    "content": "{}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/deeply-nested-plus-installed/a/marko.json",
    "content": "{}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/deeply-nested-plus-installed/expected.json",
    "content": "[\n  \"/a/b/c/marko.json\",\n  \"/a/b/marko.json\",\n  \"/a/marko.json\",\n  \"/node_modules/dependency-with-taglib/marko.json\",\n  \"/node_modules/peer-dependency-with-taglib/marko.json\",\n  \"/node_modules/dev-dependency-with-taglib/marko.json\"\n]"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/deeply-nested-plus-installed/package.json",
    "content": "{\n    \"name\": \"taglib-finder-test\",\n    \"version\": \"0.0.0\",\n    \"dependencies\": {\n        \"dependency-with-taglib\": \"0.0.1\",\n        \"dependency-without-taglib\": \"0.0.1\"\n    },\n    \"devDependencies\": {\n        \"dev-dependency-with-taglib\": \"0.0.1\",\n        \"dev-dependency-without-taglib\": \"0.0.1\"\n    },\n    \"peerDependencies\": {\n        \"peer-dependency-with-taglib\": \"0.0.1\",\n        \"peer-dependency-without-taglib\": \"0.0.1\"\n    }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/deeply-nested-plus-installed/test.js",
    "content": "exports.dir = \"a/b/c\";\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/excluded-dir/a/b-excluded/marko.json",
    "content": "{}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/excluded-dir/a/marko.json",
    "content": "{}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/excluded-dir/expected.json",
    "content": "[\n  \"/a/marko.json\"\n]\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/excluded-dir/package.json",
    "content": "{\n    \"name\": \"taglib-finder-test\",\n    \"version\": \"0.0.0\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/excluded-dir/test.js",
    "content": "var nodePath = require(\"path\");\n\nexports.dir = \"a/b-excluded\";\n\nexports.before = function (taglibFinder) {\n  taglibFinder.excludeDir(nodePath.join(__dirname, \"a/b-excluded\"));\n};\n\nexports.after = function (taglibFinder) {\n  taglibFinder.reset();\n};\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/excluded-dir-autodiscover/a/b/marko.json",
    "content": "{\n  \"tags-dir\": \"./components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/excluded-dir-autodiscover/expected.json",
    "content": "[]\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/excluded-dir-autodiscover/package.json",
    "content": "{\n    \"name\": \"taglib-finder-test\",\n    \"version\": \"0.0.0\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/excluded-dir-autodiscover/test.js",
    "content": "var nodePath = require(\"path\");\n\nexports.dir = \"a/b\";\n\nexports.before = function (taglibFinder) {\n  taglibFinder.excludeDir(nodePath.join(__dirname, \"a/b\"));\n  taglibFinder.excludeDir(nodePath.join(__dirname, \"a/components\"));\n};\n\nexports.after = function (taglibFinder) {\n  taglibFinder.reset();\n};\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/excluded-package/a/b/c/marko.json",
    "content": "{}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/excluded-package/a/b/marko.json",
    "content": "{}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/excluded-package/a/marko.json",
    "content": "{}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/excluded-package/expected.json",
    "content": "[\n  \"/a/b/c/marko.json\",\n  \"/a/b/marko.json\",\n  \"/a/marko.json\",\n  \"/node_modules/included-dependency/marko.json\"\n]\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/excluded-package/package.json",
    "content": "{\n    \"name\": \"taglib-finder-test\",\n    \"version\": \"0.0.0\",\n    \"dependencies\": {\n        \"included-dependency\": \"0.0.1\",\n        \"excluded-dependency\": \"0.0.1\"\n    }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/excluded-package/test.js",
    "content": "exports.dir = \"a/b/c\";\n\nexports.before = function (taglibFinder) {\n  taglibFinder.excludePackage(\"excluded-dependency\");\n};\n\nexports.after = function (taglibFinder) {\n  taglibFinder.reset();\n};\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/exports/_dist/components/dist-tag.marko",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/exports/components/dev-tag.marko",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/exports/marko.json",
    "content": "{\n  \"exports\": \"_dist/components\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/exports/package.json",
    "content": "{\n    \"name\": \"taglib-finder-test\",\n    \"version\": \"0.0.0\",\n    \"dependencies\": {\n        \"included-dependency\": \"0.0.1\"\n    }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/exports/test.js",
    "content": "var expect = require(\"chai\").expect;\n\nexports.check = function (taglibFinder) {\n  const discoveredTags = taglibFinder\n    .find(__dirname, [], [\"components\"])\n    .flatMap((taglib) => Object.keys(taglib.tags));\n\n  expect(discoveredTags).to.include(\"included-tag\");\n  expect(discoveredTags).to.include(\"dev-tag\");\n  expect(discoveredTags).to.not.include(\"dist-tag\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/reset/a/b/c/marko.json",
    "content": "{}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/reset/a/b/marko.json",
    "content": "{}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/reset/a/marko.json",
    "content": "{}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/reset/expected.json",
    "content": "[\n  \"/a/b/c/marko.json\",\n  \"/a/b/marko.json\",\n  \"/a/marko.json\",\n  \"/node_modules/included-dependency/marko.json\"\n]\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/reset/package.json",
    "content": "{\n    \"name\": \"taglib-finder-test\",\n    \"version\": \"0.0.0\",\n    \"dependencies\": {\n        \"included-dependency\": \"0.0.1\",\n        \"excluded-dependency\": \"0.0.1\"\n    }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/fixtures/reset/test.js",
    "content": "var nodePath = require(\"path\");\nvar expect = require(\"chai\").expect;\n\nexports.check = function (taglibFinder) {\n  var finderDir = nodePath.join(__dirname, \"a/b/c\");\n\n  function getPaths() {\n    return taglibFinder.find(finderDir, [], [\"components\"]).map((taglib) => {\n      return taglib.path;\n    });\n  }\n\n  var pathsBeforeExclude = getPaths();\n\n  taglibFinder.excludePackage(\"excluded-dependency\");\n\n  taglibFinder.clearCache();\n\n  var pathsAfterExclude = getPaths();\n\n  taglibFinder.reset();\n\n  var pathsAfterReset = getPaths();\n\n  expect(pathsBeforeExclude).to.not.deep.equal(pathsAfterExclude);\n  expect(pathsBeforeExclude).to.deep.equal(pathsAfterReset);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-finder/index.test.js",
    "content": "\"use strict\";\n\nrequire(\"../__util__/test-init\");\n\nvar chai = require(\"chai\");\nchai.config.includeStack = true;\nrequire(\"chai\").should();\nrequire(\"marko/compiler\");\nvar taglibFinder = require(\"marko/taglib\").finder;\nvar autotest = require(\"mocha-autotest\").default;\n\nautotest(\"fixtures\", (fixture) => {\n  let test = fixture.test;\n  let dir = fixture.dir;\n  let resolve = fixture.resolve;\n  let snapshot = fixture.snapshot;\n  test(() => {\n    var test = require(resolve(\"test.js\"));\n\n    if (test.check) {\n      test.check(taglibFinder, snapshot);\n    } else {\n      if (test.before) {\n        test.before(taglibFinder);\n      }\n\n      var finderDir = resolve(test.dir);\n      var found = taglibFinder\n        .find(finderDir, [], [\"components\"])\n        .map((taglib) => {\n          if (taglib.path.startsWith(dir)) {\n            return taglib.path.substring(dir.length).replace(/[\\\\]/g, \"/\");\n          } else {\n            return \"BAD:\" + taglib.path;\n          }\n        });\n\n      snapshot(found, \".json\");\n\n      if (test.after) {\n        test.after(taglibFinder);\n      }\n    }\n  });\n});\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-loader/fixtures/custom-extensions/marko.json",
    "content": "{\n  \"tags-dir\": \"./tags\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-loader/fixtures/custom-extensions/tags/test-declared-attributes/renderer.js",
    "content": "module.exports = function simple(input, out) {\n  var daysOld = input.age * 365;\n  out.write(\"Hello \" + input.name + \"! You are \" + daysOld + \" days old.\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-loader/fixtures/custom-extensions/test.js",
    "content": "var nodePath = require(\"path\");\n\nexports.check = function (taglibLoader, expect) {\n  var taglib = taglibLoader.loadTaglibFromFile(\n    nodePath.join(__dirname, \"marko.json\"),\n  );\n\n  expect(taglib != null).to.equal(true);\n  expect(taglib)\n    .to.have.property(\"tags\")\n    .with.property(\"test-declared-attributes\")\n    .with.property(\"renderer\")\n    .to.contain(\"renderer.js\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-loader/fixtures/invalid-marko-tag-file/marko.json",
    "content": "{\n  \"tags-dir\": \"./missing\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-loader/fixtures/invalid-marko-tag-file/test.js",
    "content": "var nodePath = require(\"path\");\n\nexports.check = function (taglibLoader, expect) {\n  expect(function () {\n    taglibLoader.loadTaglibFromFile(nodePath.join(__dirname, \"marko.json\"));\n  }).to.throw('Error while applying option of \"tags-dir\"');\n};\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-loader/fixtures/invalid-taglib-tag/marko.json",
    "content": "{\n  \"<test-hello>\": {\n    \"INVALID\": \"PROPERTY\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-loader/fixtures/invalid-taglib-tag/test.js",
    "content": "var nodePath = require(\"path\");\n\nexports.check = function (taglibLoader, expect) {\n  var taglibPath = nodePath.join(__dirname, \"marko.json\");\n\n  expect(function () {\n    taglibLoader.loadTaglibFromFile(taglibPath);\n  }).to.throw(`Invalid option: INVALID ([${taglibPath} → <test-hello>])`);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-loader/fixtures/invalid-tags-dir/marko.json",
    "content": "{\n  \"<foo>\": \"./tags/foo/marko-tag.json\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-loader/fixtures/invalid-tags-dir/tags/foo/marko-tag.json",
    "content": "{\n  \"INVALID\": \"BAD\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-loader/fixtures/invalid-tags-dir/test.js",
    "content": "var nodePath = require(\"path\");\n\nexports.check = function (taglibLoader, expect) {\n  var taglibPath = nodePath.join(__dirname, \"marko.json\");\n  var tagPath = nodePath.join(__dirname, \"tags/foo/marko-tag.json\");\n\n  expect(function () {\n    taglibLoader.loadTaglibFromFile(taglibPath);\n  }).to.throw(`Invalid option: INVALID ([${taglibPath} → <foo> → ${tagPath}]`);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-loader/fixtures/paths/marko.json",
    "content": "{\n  \"tags-dir\": \"./tags\",\n  \"<test-hello>\": {\n    \"@name\": \"string\",\n    \"@age\": \"integer\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-loader/fixtures/paths/tags/test-hello-scanned/marko-tag.json",
    "content": "{\n  \"@name\": \"string\",\n  \"@age\": \"integer\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-loader/fixtures/paths/tags/test-hello-scanned/renderer.js",
    "content": "module.exports = function simple(input, out) {\n  var daysOld = input.age * 365;\n  out.write(\"Hello \" + input.name + \"! You are \" + daysOld + \" days old.\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-loader/fixtures/paths/test.js",
    "content": "var nodePath = require(\"path\");\n\nexports.check = function (taglibLoader, expect) {\n  var taglib = taglibLoader.loadTaglibFromFile(\n    nodePath.join(__dirname, \"marko.json\"),\n  );\n\n  expect(taglib != null).to.equal(true);\n\n  expect(taglib.filePath).to.equal(nodePath.join(__dirname, \"marko.json\"));\n\n  var helloTagScanned = taglib.tags[\"test-hello-scanned\"];\n  expect(helloTagScanned.filePath).to.equal(\n    nodePath.join(__dirname, \"tags/test-hello-scanned/marko-tag.json\"),\n  );\n  expect(helloTagScanned.dir).to.equal(\n    nodePath.join(__dirname, \"tags/test-hello-scanned\"),\n  );\n  expect(helloTagScanned.attributes.name.filePath).to.equal(\n    nodePath.join(__dirname, \"tags/test-hello-scanned/marko-tag.json\"),\n  );\n\n  var helloTag = taglib.tags[\"test-hello\"];\n  expect(helloTag.filePath).to.equal(nodePath.join(__dirname, \"marko.json\"));\n  expect(helloTag.dir).to.equal(__dirname);\n  expect(helloTag.attributes.name.filePath).to.equal(\n    nodePath.join(__dirname, \"marko.json\"),\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-loader/fixtures/repeated-nested-tag/marko.json",
    "content": "{\n  \"tags\": {\n    \"longhand-tabs\": {\n      \"nested-tags\": {\n        \"tab\": {\n          \"target-property\": \"tabs\",\n          \"is-repeated\": true,\n          \"attributes\": {\n            \"label\": {\n              \"type\": \"string\"\n            }\n          }\n        }\n      },\n      \"attributes\": {\n        \"orientation\": {\n          \"type\": \"string\"\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-loader/fixtures/repeated-nested-tag/test.js",
    "content": "var nodePath = require(\"path\");\n\nexports.check = function (taglibLoader, expect) {\n  var taglib = taglibLoader.loadTaglibFromFile(\n    nodePath.join(__dirname, \"marko.json\"),\n  );\n  expect(taglib != null).to.equal(true);\n\n  expect(taglib.tags)\n    .has.property(\"longhand-tabs\")\n    .with.property(\"nestedTags\")\n    .with.property(\"tab\");\n\n  const tab = taglib.tags[\"longhand-tabs\"].nestedTags.tab;\n  expect(tab).has.property(\"isRepeated\", true);\n  expect(tab).has.property(\"targetProperty\", \"tabs\");\n  expect(tab).has.property(\"attributes\").with.property(\"label\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-loader/fixtures/shorthand-attrs-and-tags/marko.json",
    "content": "{\n  \"<shorthand-checkbox>\": {\n    \"@label <label>\": \"object\",\n    \"@checked\": \"boolean\",\n    \"<foo>\": {\n      \"@bar\": \"string\"\n    }\n  },\n  \"<shorthand-overlay>\": {\n    \"nested-tags\": {\n      \"body\": {\n        \"@condensed\": \"boolean\"\n      }\n    }\n  },\n  \"tags\": {\n    \"shorthand-button\": {\n      \"@label\": \"string\"\n    },\n    \"shorthand-tabs\": {\n      \"@tabs <tab>[]\": {\n        \"@label\": \"string\"\n      },\n      \"@orientation\": \"string\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-loader/fixtures/shorthand-attrs-and-tags/test.js",
    "content": "var nodePath = require(\"path\");\n\nexports.check = function (taglibLoader, expect) {\n  var taglib = taglibLoader.loadTaglibFromFile(\n    nodePath.join(__dirname, \"marko.json\"),\n  );\n  expect(taglib != null).to.equal(true);\n\n  var shorthandCheckbox = taglib.tags[\"shorthand-checkbox\"];\n  expect(shorthandCheckbox.attributes.checked.type).to.equal(\"boolean\");\n  expect(shorthandCheckbox.attributes.label.type).to.equal(\"object\");\n  expect(shorthandCheckbox.nestedTags.label.type).to.equal(\"object\");\n  expect(shorthandCheckbox.nestedTags.foo.attributes.bar.type).to.equal(\n    \"string\",\n  );\n\n  var shorthandTabsTag = taglib.tags[\"shorthand-tabs\"];\n  expect(shorthandTabsTag.attributes.orientation != null).to.equal(true);\n  expect(shorthandTabsTag.attributes.orientation.type).to.equal(\"string\");\n  expect(shorthandTabsTag.attributes.tabs.type).to.equal(\"expression\");\n\n  var nestedTabTag = shorthandTabsTag.nestedTags.tab;\n  expect(nestedTabTag.attributes.label != null).to.equal(true);\n  expect(nestedTabTag.isRepeated).to.equal(true);\n  expect(nestedTabTag.targetProperty).to.equal(\"tabs\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-loader/index.test.js",
    "content": "\"use strict\";\n\nrequire(\"../__util__/test-init\");\n\nvar chai = require(\"chai\");\nchai.config.includeStack = true;\n\nvar expect = require(\"chai\").expect;\nrequire(\"../../compiler\");\nvar autotest = require(\"mocha-autotest\").default;\nvar taglibLoader = require(\"../../compiler\").taglibLoader;\n\nautotest(\"fixtures\", (fixture) => {\n  let test = fixture.test;\n  let resolve = fixture.resolve;\n  test(() => {\n    var test = require(resolve(\"test.js\"));\n    test.check(taglibLoader, expect);\n  });\n});\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/attribute-groups/marko.json",
    "content": "{\n  \"<foo>\": {\n    \"@cat\": \"boolean\",\n    \"attribute-groups\": [\"my-attribute-group\"]\n  },\n  \"<bar>\": {\n    \"@dog\": \"boolean\",\n    \"attribute-groups\": [\"my-attribute-group\"]\n  },\n\n  \"attribute-groups\": {\n    \"my-attribute-group\": {\n      \"age\": \"integer\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/attribute-groups/test.js",
    "content": "exports.check = function (markoCompiler, expect) {\n  var taglibLookup = markoCompiler.taglibLookup;\n  var lookup = taglibLookup.buildLookup(__dirname);\n\n  expect(lookup.getAttribute(\"foo\", \"cat\").type).to.equal(\"boolean\");\n  expect(lookup.getAttribute(\"foo\", \"age\").type).to.equal(\"integer\");\n  expect(lookup.getAttribute(\"bar\", \"dog\").type).to.equal(\"boolean\");\n  expect(lookup.getAttribute(\"bar\", \"age\").type).to.equal(\"integer\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/attribute-ref/marko.json",
    "content": "{\n  \"<foo>\": {\n    \"@hello\": \"#shared-hello\"\n  },\n  \"<bar>\": {\n    \"@hello\": \"#shared-hello\"\n  },\n  \"@shared-hello\": {\n    \"type\": \"shared\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/attribute-ref/test.js",
    "content": "exports.check = function (markoCompiler, expect) {\n  var taglibLookup = markoCompiler.taglibLookup;\n  var lookup = taglibLookup.buildLookup(__dirname);\n\n  var sharedAttrDef = lookup.getAttribute(\"foo\", \"hello\");\n  expect(sharedAttrDef.type).equal(\"shared\");\n\n  sharedAttrDef = lookup.getAttribute(\"bar\", \"hello\");\n  expect(sharedAttrDef.type).equal(\"shared\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/cache-lookup/baz/baz-tag.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/cache-lookup/baz/marko.json",
    "content": "{\n  \"<baz>\": {\n    \"renderer\": \"./baz-tag.js\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/cache-lookup/foo/foo-tag.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/cache-lookup/foo/marko.json",
    "content": "{\n  \"<foo>\": {\n    \"renderer\": \"./foo-tag.js\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/cache-lookup/test.js",
    "content": "var nodePath = require(\"path\");\n\nexports.check = function (markoCompiler, expect) {\n  var taglibLookup = markoCompiler.taglibLookup;\n  var lookup1 = taglibLookup.buildLookup(nodePath.join(__dirname, \"foo\"));\n  var lookup2 = taglibLookup.buildLookup(nodePath.join(__dirname, \"foo\"));\n  var lookup3 = taglibLookup.buildLookup(nodePath.join(__dirname, \"foo/empty\"));\n  var lookup4 = taglibLookup.buildLookup(nodePath.join(__dirname, \"baz\"));\n  expect(lookup1).to.equal(lookup2);\n  expect(lookup2).to.equal(lookup3);\n  expect(lookup1).to.not.equal(lookup4);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/core-attributes/expected.js",
    "content": "TBD"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/core-attributes/test.js",
    "content": "exports.check = function (markoCompiler, expect) {\n  var lookup = markoCompiler.buildTaglibLookup(__dirname);\n  // console.log('LOOKUP: ', Object.keys(lookup.attributes));\n  var noupdateAttr = lookup.getAttribute(\"div\", \"no-update\");\n  expect(noupdateAttr != null).to.equal(true);\n  expect(noupdateAttr.type).to.equal(\"flag\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/core-tag/expected.js",
    "content": "TBD"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/core-tag/test.js",
    "content": "exports.check = function (markoCompiler, expect) {\n  var lookup = markoCompiler.buildTaglibLookup(__dirname);\n  var ifTag = lookup.getTag(\"if\");\n  expect(ifTag != null).to.equal(true);\n  expect(ifTag.name).to.equal(\"if\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/custom-tag/marko.json",
    "content": "{\n  \"<test-hello>\": \"taglib/test-hello/marko-tag.json\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/custom-tag/taglib/test-hello/marko-tag.json",
    "content": "{\n  \"renderer\": \"./renderer.js\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/custom-tag/taglib/test-hello/renderer.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/custom-tag/test.js",
    "content": "exports.check = function (markoCompiler, expect) {\n  var taglibLookup = markoCompiler.taglibLookup;\n  var lookup = taglibLookup.buildLookup(__dirname);\n  var tag = lookup.getTag(\"test-hello\");\n  // console.log(Object.keys(lookup.tags));\n  expect(tag != null).to.equal(true);\n  expect(tag.name).to.equal(\"test-hello\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/de-dupe/expected.js",
    "content": "TBD"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/de-dupe/foo-renderer.js",
    "content": "exports.render = function () {};\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/de-dupe/marko.json",
    "content": "{\n  \"taglib-id\": \"taglib-duplicate\",\n  \"<duplicate-foo>\": {\n    \"renderer\": \"./foo-renderer.js\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/de-dupe/taglib-duplicate/bar-renderer.js",
    "content": "exports.render = function () {};\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/de-dupe/taglib-duplicate/marko.json",
    "content": "{\n  \"taglib-id\": \"taglib-duplicate\",\n  \"<duplicate-bar>\": {\n    \"renderer\": \"./bar-renderer.js\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/de-dupe/test.js",
    "content": "var nodePath = require(\"path\");\n\nexports.check = function (markoCompiler, expect) {\n  var taglibLookup = markoCompiler.taglibLookup;\n  var lookup = taglibLookup.buildLookup(\n    nodePath.join(__dirname, \"taglib-duplicate\"),\n  );\n\n  // The \"duplicate-bar\" tag was declared in the lower\n  // taglib so it should have been found since the taglib\n  // should not have been de-duped.\n  var barTag = lookup.getTag(\"duplicate-bar\");\n  expect(barTag != null).to.equal(true);\n\n  // The \"duplicate-foo\" tag was declared in the higher\n  // up taglib so it should have been discarded\n  var fooTag = lookup.getTag(\"duplicate-foo\");\n  expect(fooTag == null).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/declared-and-dynamic-attrs/expected.js",
    "content": "TBD"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/declared-and-dynamic-attrs/marko.json",
    "content": "{\n  \"<test-dynamic-attribute>\": {\n    \"renderer\": \"./renderer.js\",\n    \"@foo\": \"string\",\n    \"@*\": {\n      \"type\": \"boolean\",\n      \"target-property\": null\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/declared-and-dynamic-attrs/renderer.js",
    "content": "module.exports = function () {};\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/declared-and-dynamic-attrs/test.js",
    "content": "exports.check = function (markoCompiler, expect) {\n  var taglibLookup = markoCompiler.taglibLookup;\n  var lookup = taglibLookup.buildLookup(__dirname);\n  // console.log(Object.keys(lookup.attributes));\n  var attr = lookup.getAttribute(\"test-dynamic-attribute\", \"DYNAMIC\");\n  expect(attr != null).to.equal(true);\n  expect(attr.type).to.equal(\"boolean\");\n  expect(attr.name).to.equal(\"*\");\n\n  attr = lookup.getAttribute(\"test-dynamic-attribute\", \"foo\");\n  expect(attr != null).to.equal(true);\n  expect(attr.type).to.equal(\"string\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/forEachAttribute/expected.json",
    "content": "[\n    \"name\",\n    \"age\",\n    \"foo-on-*\",\n    \"key\",\n    \"no-update\",\n    \"no-update-body\",\n    \"no-update-if\",\n    \"no-update-body-if\",\n    \"on*\",\n    \"once*\"\n]"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/forEachAttribute/marko.json",
    "content": "{\n  \"<foo>\": {\n    \"@name\": \"string\",\n    \"@age\": \"integer\",\n    \"@foo-on-*\": {\n      \"pattern\": true\n    }\n  },\n  \"<bar>\": {\n    \"@baz\": \"string\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/forEachAttribute/test.js",
    "content": "exports.check = function (markoCompiler, expect, snapshot) {\n  var lookup = markoCompiler.buildTaglibLookup(__dirname);\n\n  var attrNames = [];\n\n  lookup.forEachAttribute(\"foo\", (attr) => {\n    attrNames.push(attr.name);\n  });\n\n  snapshot(attrNames, \".json\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/forEachAttribute-html-tag/expected.json",
    "content": "[\n    \"name\",\n    \"age\",\n    \"foo-on-*\",\n    \"lasso-nonce\",\n    \"body-only-if\",\n    \"if\",\n    \"else-if\",\n    \"else\",\n    \"for\",\n    \"include\",\n    \"while\",\n    \"$w\",\n    \"w-bind\",\n    \"w-config\",\n    \"for-key\",\n    \"key\",\n    \"for-ref\",\n    \"ref\",\n    \"w-for\",\n    \"w-id\",\n    \"w-body\",\n    \"w-preserve\",\n    \"w-preserve-body\",\n    \"w-preserve-if\",\n    \"w-preserve-body-if\",\n    \"no-update\",\n    \"no-update-body\",\n    \"no-update-if\",\n    \"no-update-body-if\",\n    \"w-preserve-attrs\",\n    \"on*\",\n    \"w-on*\"\n]\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/forEachAttribute-html-tag/test.js",
    "content": "exports.check = function (markoCompiler, expect) {\n  var lookup = markoCompiler.buildTaglibLookup(__dirname);\n\n  var hasHrefAttr = false;\n\n  lookup.forEachAttribute(\"a\", (attr) => {\n    if (attr.name === \"href\") {\n      hasHrefAttr = true;\n    }\n  });\n\n  expect(hasHrefAttr).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/getTagsSorted/expected.json",
    "content": "[\n    \"__flush_here_and_after__\",\n    \"_preferred-script-location\",\n    \"_preserve\",\n    \"*\",\n    \"a\",\n    \"abbr\",\n    \"address\",\n    \"animate\",\n    \"animateColor\",\n    \"animateMotion\",\n    \"animateTransform\",\n    \"area\",\n    \"article\",\n    \"aside\",\n    \"attrs\",\n    \"audio\",\n    \"await\",\n    \"await-reorderer\",\n    \"await:catch\",\n    \"await:placeholder\",\n    \"await:then\",\n    \"b\",\n    \"bar\",\n    \"base\",\n    \"bdi\",\n    \"bdo\",\n    \"blockquote\",\n    \"body\",\n    \"br\",\n    \"button\",\n    \"canvas\",\n    \"caption\",\n    \"circle\",\n    \"cite\",\n    \"class\",\n    \"client\",\n    \"clipPath\",\n    \"code\",\n    \"col\",\n    \"colgroup\",\n    \"const\",\n    \"data\",\n    \"datalist\",\n    \"dd\",\n    \"debug\",\n    \"define\",\n    \"defs\",\n    \"del\",\n    \"desc\",\n    \"details\",\n    \"dfn\",\n    \"dialog\",\n    \"div\",\n    \"dl\",\n    \"dt\",\n    \"effect\",\n    \"ellipse\",\n    \"else\",\n    \"else-if\",\n    \"em\",\n    \"embed\",\n    \"export\",\n    \"feBlend\",\n    \"feColorMatrix\",\n    \"feComponentTransfer\",\n    \"feComposite\",\n    \"feConvolveMatrix\",\n    \"feDiffuseLighting\",\n    \"feDisplacementMap\",\n    \"feDistantLight\",\n    \"feFlood\",\n    \"feFuncA\",\n    \"feFuncB\",\n    \"feFuncG\",\n    \"feFuncR\",\n    \"feGaussianBlur\",\n    \"feImage\",\n    \"feMerge\",\n    \"feMergeNode\",\n    \"feMorphology\",\n    \"feOffset\",\n    \"fePointLight\",\n    \"feSpecularLighting\",\n    \"feSpotLight\",\n    \"feTile\",\n    \"feTurbulence\",\n    \"fieldset\",\n    \"figcaption\",\n    \"figure\",\n    \"filter\",\n    \"foo\",\n    \"footer\",\n    \"for\",\n    \"foreignObject\",\n    \"form\",\n    \"g\",\n    \"h1\",\n    \"h2\",\n    \"h3\",\n    \"h4\",\n    \"h5\",\n    \"h6\",\n    \"head\",\n    \"header\",\n    \"hgroup\",\n    \"hr\",\n    \"html\",\n    \"html-comment\",\n    \"html-script\",\n    \"html-style\",\n    \"i\",\n    \"id\",\n    \"if\",\n    \"iframe\",\n    \"image\",\n    \"img\",\n    \"import\",\n    \"include-html\",\n    \"include-text\",\n    \"init-components\",\n    \"input\",\n    \"ins\",\n    \"kbd\",\n    \"label\",\n    \"legend\",\n    \"let\",\n    \"li\",\n    \"lifecycle\",\n    \"line\",\n    \"linearGradient\",\n    \"link\",\n    \"log\",\n    \"macro\",\n    \"maction\",\n    \"main\",\n    \"maligngroup\",\n    \"malignmark\",\n    \"map\",\n    \"mark\",\n    \"marker\",\n    \"mask\",\n    \"math\",\n    \"menclose\",\n    \"menu\",\n    \"merror\",\n    \"meta\",\n    \"metadata\",\n    \"meter\",\n    \"mfenced\",\n    \"mfrac\",\n    \"mglyph\",\n    \"mi\",\n    \"mlabeledtr\",\n    \"mlongdiv\",\n    \"mmultiscripts\",\n    \"mn\",\n    \"mo\",\n    \"module-code\",\n    \"mover\",\n    \"mpadded\",\n    \"mpath\",\n    \"mphantom\",\n    \"mprescripts\",\n    \"mroot\",\n    \"mrow\",\n    \"ms\",\n    \"mscarries\",\n    \"mscarry\",\n    \"msgroup\",\n    \"msline\",\n    \"mspace\",\n    \"msqrt\",\n    \"msrow\",\n    \"mstack\",\n    \"mstyle\",\n    \"msub\",\n    \"msubsup\",\n    \"msup\",\n    \"mtable\",\n    \"mtd\",\n    \"mtext\",\n    \"mtr\",\n    \"munder\",\n    \"munderover\",\n    \"nav\",\n    \"none\",\n    \"noscript\",\n    \"object\",\n    \"ol\",\n    \"optgroup\",\n    \"option\",\n    \"output\",\n    \"p\",\n    \"param\",\n    \"path\",\n    \"pattern\",\n    \"picture\",\n    \"polygon\",\n    \"polyline\",\n    \"pre\",\n    \"progress\",\n    \"q\",\n    \"radialGradient\",\n    \"rect\",\n    \"return\",\n    \"rp\",\n    \"rt\",\n    \"ruby\",\n    \"s\",\n    \"samp\",\n    \"script\",\n    \"section\",\n    \"select\",\n    \"semantics\",\n    \"server\",\n    \"set\",\n    \"small\",\n    \"source\",\n    \"span\",\n    \"static\",\n    \"stop\",\n    \"strong\",\n    \"style\",\n    \"sub\",\n    \"summary\",\n    \"sup\",\n    \"svg\",\n    \"switch\",\n    \"symbol\",\n    \"table\",\n    \"tbody\",\n    \"td\",\n    \"template\",\n    \"text\",\n    \"textarea\",\n    \"textPath\",\n    \"tfoot\",\n    \"th\",\n    \"thead\",\n    \"time\",\n    \"title\",\n    \"tr\",\n    \"track\",\n    \"try\",\n    \"tspan\",\n    \"u\",\n    \"ul\",\n    \"use\",\n    \"var\",\n    \"video\",\n    \"view\",\n    \"wbr\",\n    \"while\"\n]"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/getTagsSorted/marko.json",
    "content": "{\n  \"<foo>\": {\n    \"@name\": \"string\"\n  },\n  \"<bar>\": {\n    \"@name\": \"string\"\n  },\n  \"<a>\": {\n    \"@name\": \"string\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/getTagsSorted/test.js",
    "content": "exports.check = function (markoCompiler, expect, snapshot) {\n  var lookup = markoCompiler.buildTaglibLookup(__dirname);\n\n  var tagNames = [];\n\n  var tags = lookup.getTagsSorted();\n  tags.forEach((tag) => {\n    tagNames.push(tag.name);\n  });\n\n  snapshot(tagNames, \".json\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/global-attrs/expected.js",
    "content": "TBD"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/global-attrs/marko.json",
    "content": "{\n  \"<*>\": {\n    \"@global-attribute\": \"boolean\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/global-attrs/test.js",
    "content": "exports.check = function (markoCompiler, expect) {\n  var taglibLookup = markoCompiler.taglibLookup;\n  var lookup = taglibLookup.buildLookup(__dirname);\n  // console.log('LOOKUP: ', Object.keys(lookup.attributes));\n  var attrDef = lookup.getAttribute(\n    \"test-dynamic-attributes\",\n    \"global-attribute\",\n  );\n  expect(attrDef != null).to.equal(true);\n  expect(attrDef.type).to.equal(\"boolean\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/html-any-attr/marko.json",
    "content": "{\n  \"<foo>\": {\n    \"@hello\": \"#shared-hello\"\n  },\n  \"<bar>\": {\n    \"@hello\": \"#shared-hello\"\n  },\n  \"@shared-hello\": {\n    \"type\": \"shared\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/html-any-attr/test.js",
    "content": "exports.check = function (markoCompiler, expect) {\n  var lookup = markoCompiler.buildTaglibLookup(__dirname);\n\n  var attrDef = lookup.getAttribute(\"div\", \"blah\");\n  expect(attrDef).to.be.an(\"object\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/html-tag/marko.json",
    "content": "{\n  \"<foo>\": {\n    \"@cat\": \"boolean\",\n    \"attribute-groups\": [\"my-attribute-group\"]\n  },\n  \"<bar>\": {\n    \"@dog\": \"boolean\",\n    \"attribute-groups\": [\"my-attribute-group\"]\n  },\n\n  \"attribute-groups\": {\n    \"my-attribute-group\": {\n      \"age\": \"integer\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/html-tag/test.js",
    "content": "exports.check = function (markoCompiler, expect) {\n  var lookup = markoCompiler.buildTaglibLookup(__dirname);\n\n  expect(lookup.getTag(\"div\").html).to.equal(true);\n  expect(lookup.getAttribute(\"div\", \"id\").html).to.equal(true);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/nested-tags/expected.js",
    "content": "TBD"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/nested-tags/foo-renderer.js",
    "content": "exports.render = function (input, out) {\n  out.write(\"nested/a\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/nested-tags/marko.json",
    "content": "{\n  \"tags\": {\n    \"nested-foo\": {\n      \"renderer\": \"./foo-renderer.js\",\n      \"attributes\": {\n        \"attr1\": \"string\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/nested-tags/test.js",
    "content": "exports.check = function (markoCompiler, expect) {\n  var taglibLookup = markoCompiler.taglibLookup;\n  var lookup = taglibLookup.buildLookup(__dirname);\n  var tag = lookup.getTag(\"nested-foo\");\n\n  expect(tag != null).to.equal(true);\n  expect(tag.name).to.equal(\"nested-foo\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/nested-tags-attrs/expected.js",
    "content": "TBD"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/nested-tags-attrs/foo-renderer.js",
    "content": "exports.render = function (input, out) {\n  out.write(\"nested/a\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/nested-tags-attrs/marko.json",
    "content": "{\n  \"tags\": {\n    \"nested-foo\": {\n      \"renderer\": \"./foo-renderer.js\",\n      \"attributes\": {\n        \"attr1\": \"string\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/fixtures/nested-tags-attrs/test.js",
    "content": "exports.check = function (markoCompiler, expect) {\n  var taglibLookup = markoCompiler.taglibLookup;\n  var lookup = taglibLookup.buildLookup(__dirname);\n  // console.log(Object.keys(lookup.attributes));\n  var attr = lookup.getAttribute(\"nested-foo\", \"attr1\");\n  expect(attr != null).to.equal(true);\n  expect(attr.type).to.equal(\"string\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/taglib-lookup/index.test.js",
    "content": "\"use strict\";\n\nrequire(\"../__util__/test-init\");\n\nvar chai = require(\"chai\");\nchai.config.includeStack = true;\n\nvar expect = require(\"chai\").expect;\nvar autotest = require(\"mocha-autotest\").default;\nvar markoCompiler = require(\"../../compiler\");\n\nautotest(\"fixtures\", (fixture) => {\n  let test = fixture.test;\n  let resolve = fixture.resolve;\n  let snapshot = fixture.snapshot;\n  test(() => {\n    var test = require(resolve(\"test.js\"));\n    test.check(markoCompiler, expect, snapshot);\n  });\n});\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tag-inside-if-tag/components/custom-tag/index.marko",
    "content": "<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tag-inside-if-tag/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _attrTag = require(\"marko/src/runtime/helpers/attr-tag.js\");\nvar _index2 = _interopRequireDefault(require(\"./components/custom-tag/index.marko\"));\nvar _renderTag = _interopRequireDefault(require(\"marko/src/runtime/helpers/render-tag.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  (0, _renderTag.default)(_index2.default, (0, _attrTag.i)(() => {\n    if (x) {\n      (0, _attrTag.a)(\"thing\", {\n        \"x\": 1,\n        \"renderBody\": out => {\n          out.w(\"Hello\");\n        }\n      });\n    }\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tag-inside-if-tag/snapshots/generated-expected.marko",
    "content": "<custom-tag>\n  <if(x)>\n    <!-- this should not error -->\n    <@thing x=1>\n      Hello\n    </@thing>\n  </if>\n</custom-tag>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tag-inside-if-tag/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/src/runtime/helpers/attr-tag.js\";\nimport _customTag from \"./components/custom-tag/index.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_customTag, _marko_render_input(() => {\n    if (x) {\n      _marko_repeatable_attr_tag(\"thing\", {\n        \"x\": 1,\n        \"renderBody\": out => {\n          out.w(\"Hello\");\n        }\n      });\n    }\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tag-inside-if-tag/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"vFPOYDW\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/dist/runtime/helpers/attr-tag.js\";\nimport _customTag from \"./components/custom-tag/index.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_customTag, _marko_render_input(() => {\n    if (x) {\n      _marko_repeatable_attr_tag(\"thing\", {\n        \"x\": 1,\n        \"renderBody\": out => {\n          out.w(\"Hello\");\n        }\n      });\n    }\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tag-inside-if-tag/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tag-inside-if-tag/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/src/runtime/helpers/attr-tag.js\";\nimport _customTag from \"./components/custom-tag/index.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_customTag, _marko_render_input(() => {\n    if (x) {\n      _marko_repeatable_attr_tag(\"thing\", {\n        \"x\": 1,\n        \"renderBody\": out => {\n          out.t(\"Hello\", _component);\n        }\n      });\n    }\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tag-inside-if-tag/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"vFPOYDW\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/dist/runtime/helpers/attr-tag.js\";\nimport _customTag from \"./components/custom-tag/index.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_customTag, _marko_render_input(() => {\n    if (x) {\n      _marko_repeatable_attr_tag(\"thing\", {\n        \"x\": 1,\n        \"renderBody\": out => {\n          out.t(\"Hello\", _component);\n        }\n      });\n    }\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tag-inside-if-tag/template.marko",
    "content": "<custom-tag>\n  <if(x)>\n    <!-- this should not error -->\n    <@thing x=1>Hello</@thing>\n  </if>\n</custom-tag>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tag-spread-undefined/components/hello/index.marko",
    "content": "<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tag-spread-undefined/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _attrTag = require(\"marko/src/runtime/helpers/attr-tag.js\");\nvar _index2 = _interopRequireDefault(require(\"./components/hello/index.marko\"));\nvar _renderTag = _interopRequireDefault(require(\"marko/src/runtime/helpers/render-tag.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  (0, _renderTag.default)(_index2.default, (0, _attrTag.i)(() => {\n    (0, _attrTag.a)(\"thing\", {\n      ...input.missing\n    });\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tag-spread-undefined/snapshots/generated-expected.marko",
    "content": "<hello>\n  <@thing ...input.missing/>\n</hello>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tag-spread-undefined/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/src/runtime/helpers/attr-tag.js\";\nimport _hello from \"./components/hello/index.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_hello, _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"thing\", {\n      ...input.missing\n    });\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tag-spread-undefined/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"$CMMTUl\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/dist/runtime/helpers/attr-tag.js\";\nimport _hello from \"./components/hello/index.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_hello, _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"thing\", {\n      ...input.missing\n    });\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tag-spread-undefined/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tag-spread-undefined/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/src/runtime/helpers/attr-tag.js\";\nimport _hello from \"./components/hello/index.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_hello, _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"thing\", {\n      ...input.missing\n    });\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tag-spread-undefined/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"$CMMTUl\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/dist/runtime/helpers/attr-tag.js\";\nimport _hello from \"./components/hello/index.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_hello, _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"thing\", {\n      ...input.missing\n    });\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tag-spread-undefined/template.marko",
    "content": "<hello>\n    <@thing ...input.missing/>\n</hello>\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags/components/hello/index.marko",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _attrTag = require(\"marko/src/runtime/helpers/attr-tag.js\");\nvar _index2 = _interopRequireDefault(require(\"./components/hello/index.marko\"));\nvar _renderTag = _interopRequireDefault(require(\"marko/src/runtime/helpers/render-tag.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  (0, _renderTag.default)(_index2.default, (0, _attrTag.i)(() => {\n    (0, _attrTag.a)(\"foo\", {\n      \"renderBody\": out => {\n        out.w(\"Foo!\");\n      }\n    });\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags/snapshots/generated-expected.marko",
    "content": "<hello>\n  <@foo>\n    Foo!\n  </@foo>\n</hello>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/src/runtime/helpers/attr-tag.js\";\nimport _hello from \"./components/hello/index.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_hello, _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"foo\", {\n      \"renderBody\": out => {\n        out.w(\"Foo!\");\n      }\n    });\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"DvYiU_$\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/dist/runtime/helpers/attr-tag.js\";\nimport _hello from \"./components/hello/index.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_hello, _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"foo\", {\n      \"renderBody\": out => {\n        out.w(\"Foo!\");\n      }\n    });\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/src/runtime/helpers/attr-tag.js\";\nimport _hello from \"./components/hello/index.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_hello, _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"foo\", {\n      \"renderBody\": out => {\n        out.t(\"Foo!\", _component);\n      }\n    });\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"DvYiU_$\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/dist/runtime/helpers/attr-tag.js\";\nimport _hello from \"./components/hello/index.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_hello, _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"foo\", {\n      \"renderBody\": out => {\n        out.t(\"Foo!\", _component);\n      }\n    });\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags/template.marko",
    "content": "<hello>\n    <@foo>Foo!</@foo>\n</hello>\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-dynamic/components/hello/index.marko",
    "content": "<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-dynamic/components/hello/marko-tag.json",
    "content": "{\n  \"@list <list>\": {\n    \"@items <item>[]\": {\n      \"@*\": \"expression\"\n    }\n  },\n  \"@cols <col>[]\": {\n    \"@*\": \"expression\",\n    \"@rows <row>[]\": {\n      \"@*\": \"expression\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-dynamic/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _attrTag = require(\"marko/src/runtime/helpers/attr-tag.js\");\nvar _ofFallback = _interopRequireDefault(require(\"marko/src/runtime/helpers/of-fallback.js\"));\nvar _escapeXml = require(\"marko/src/runtime/html/helpers/escape-xml.js\");\nvar _index2 = _interopRequireDefault(require(\"./components/hello/index.marko\"));\nvar _renderTag = _interopRequireDefault(require(\"marko/src/runtime/helpers/render-tag.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  (0, _renderTag.default)(_index2.default, (0, _attrTag.i)(() => {\n    (0, _attrTag.a)(\"list\", (0, _attrTag.i)(() => {\n      for (const color of (0, _ofFallback.default)(input.colors)) {\n        if (x) {\n          (0, _attrTag.r)(\"items\", {\n            \"style\": {\n              color\n            },\n            \"renderBody\": out => {\n              out.w(\"foo\");\n            }\n          });\n        } else if (y) {\n          (0, _attrTag.r)(\"items\", {\n            \"style\": {\n              color\n            },\n            \"renderBody\": out => {\n              out.w(\"bar\");\n            }\n          });\n        } else {\n          (0, _attrTag.r)(\"items\", {\n            \"style\": {\n              color\n            },\n            \"renderBody\": out => {\n              out.w(\"baz\");\n            }\n          });\n        }\n      }\n      let i = 10;\n      while (i--) {\n        (0, _attrTag.r)(\"items\", {\n          \"renderBody\": out => {\n            out.w((0, _escapeXml.x)(i));\n          }\n        });\n      }\n    }));\n    for (const col of (0, _ofFallback.default)(input.table)) {\n      (0, _attrTag.r)(\"cols\", (0, _attrTag.i)(() => {\n        for (const row of (0, _ofFallback.default)(col)) {\n          (0, _attrTag.r)(\"rows\", {\n            \"row\": row,\n            \"renderBody\": out => {\n              out.w((0, _escapeXml.x)(row));\n            }\n          });\n        }\n      }, {\n        \"x\": y\n      }));\n    }\n    (0, _attrTag.r)(\"cols\", (0, _attrTag.i)(() => {\n      (0, _attrTag.r)(\"rows\", {\n        \"row\": -1,\n        \"renderBody\": out => {\n          out.w(\"Outside\");\n        }\n      });\n    }, {\n      \"outside\": true\n    }));\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-dynamic/snapshots/generated-expected.marko",
    "content": "<hello>\n  <@list>\n    <for|color| of=input.colors>\n      <if(x)>\n        <@item style={\n          color\n        }>\n          foo\n        </@item>\n      </if>\n      <else-if(y)>\n        <@item style={\n          color\n        }>\n          bar\n        </@item>\n      </else-if>\n      <else>\n        <@item style={\n          color\n        }>\n          baz\n        </@item>\n      </else>\n    </for>\n    $ let i = 10;\n    <while(i--)>\n      <@item>\n        ${i}\n      </@item>\n    </while>\n  </@list>\n  <for|col| of=input.table>\n    <@col x=y>\n      <for|row| of=col>\n        <@row row=row>\n          ${row}\n        </@row>\n      </for>\n    </@col>\n  </for>\n  <@col outside>\n    <@row row=-1>\n      Outside\n    </@row>\n  </@col>\n</hello>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-dynamic/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { r as _marko_repeated_attr_tag, a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/src/runtime/helpers/attr-tag.js\";\nimport _of_fallback from \"marko/src/runtime/helpers/of-fallback.js\";\nimport { x as _marko_escapeXml } from \"marko/src/runtime/html/helpers/escape-xml.js\";\nimport _hello from \"./components/hello/index.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_hello, _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"list\", _marko_render_input(() => {\n      for (const color of _of_fallback(input.colors)) {\n        if (x) {\n          _marko_repeated_attr_tag(\"items\", {\n            \"style\": {\n              color\n            },\n            \"renderBody\": out => {\n              out.w(\"foo\");\n            }\n          });\n        } else if (y) {\n          _marko_repeated_attr_tag(\"items\", {\n            \"style\": {\n              color\n            },\n            \"renderBody\": out => {\n              out.w(\"bar\");\n            }\n          });\n        } else {\n          _marko_repeated_attr_tag(\"items\", {\n            \"style\": {\n              color\n            },\n            \"renderBody\": out => {\n              out.w(\"baz\");\n            }\n          });\n        }\n      }\n      let i = 10;\n      while (i--) {\n        _marko_repeated_attr_tag(\"items\", {\n          \"renderBody\": out => {\n            out.w(_marko_escapeXml(i));\n          }\n        });\n      }\n    }));\n    for (const col of _of_fallback(input.table)) {\n      _marko_repeated_attr_tag(\"cols\", _marko_render_input(() => {\n        for (const row of _of_fallback(col)) {\n          _marko_repeated_attr_tag(\"rows\", {\n            \"row\": row,\n            \"renderBody\": out => {\n              out.w(_marko_escapeXml(row));\n            }\n          });\n        }\n      }, {\n        \"x\": y\n      }));\n    }\n    _marko_repeated_attr_tag(\"cols\", _marko_render_input(() => {\n      _marko_repeated_attr_tag(\"rows\", {\n        \"row\": -1,\n        \"renderBody\": out => {\n          out.w(\"Outside\");\n        }\n      });\n    }, {\n      \"outside\": true\n    }));\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-dynamic/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"xhhdTxq\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { r as _marko_repeated_attr_tag, a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/dist/runtime/helpers/attr-tag.js\";\nimport _of_fallback from \"marko/dist/runtime/helpers/of-fallback.js\";\nimport { x as _marko_escapeXml } from \"marko/dist/runtime/html/helpers/escape-xml.js\";\nimport _hello from \"./components/hello/index.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_hello, _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"list\", _marko_render_input(() => {\n      for (const color of _of_fallback(input.colors)) {\n        if (x) {\n          _marko_repeated_attr_tag(\"items\", {\n            \"style\": {\n              color\n            },\n            \"renderBody\": out => {\n              out.w(\"foo\");\n            }\n          });\n        } else if (y) {\n          _marko_repeated_attr_tag(\"items\", {\n            \"style\": {\n              color\n            },\n            \"renderBody\": out => {\n              out.w(\"bar\");\n            }\n          });\n        } else {\n          _marko_repeated_attr_tag(\"items\", {\n            \"style\": {\n              color\n            },\n            \"renderBody\": out => {\n              out.w(\"baz\");\n            }\n          });\n        }\n      }\n      let i = 10;\n      while (i--) {\n        _marko_repeated_attr_tag(\"items\", {\n          \"renderBody\": out => {\n            out.w(_marko_escapeXml(i));\n          }\n        });\n      }\n    }));\n    for (const col of _of_fallback(input.table)) {\n      _marko_repeated_attr_tag(\"cols\", _marko_render_input(() => {\n        for (const row of _of_fallback(col)) {\n          _marko_repeated_attr_tag(\"rows\", {\n            \"row\": row,\n            \"renderBody\": out => {\n              out.w(_marko_escapeXml(row));\n            }\n          });\n        }\n      }, {\n        \"x\": y\n      }));\n    }\n    _marko_repeated_attr_tag(\"cols\", _marko_render_input(() => {\n      _marko_repeated_attr_tag(\"rows\", {\n        \"row\": -1,\n        \"renderBody\": out => {\n          out.w(\"Outside\");\n        }\n      });\n    }, {\n      \"outside\": true\n    }));\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-dynamic/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-dynamic/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { r as _marko_repeated_attr_tag, a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/src/runtime/helpers/attr-tag.js\";\nimport _of_fallback from \"marko/src/runtime/helpers/of-fallback.js\";\nimport _hello from \"./components/hello/index.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_hello, _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"list\", _marko_render_input(() => {\n      for (const color of _of_fallback(input.colors)) {\n        if (x) {\n          _marko_repeated_attr_tag(\"items\", {\n            \"style\": {\n              color\n            },\n            \"renderBody\": out => {\n              out.t(\"foo\", _component);\n            }\n          });\n        } else if (y) {\n          _marko_repeated_attr_tag(\"items\", {\n            \"style\": {\n              color\n            },\n            \"renderBody\": out => {\n              out.t(\"bar\", _component);\n            }\n          });\n        } else {\n          _marko_repeated_attr_tag(\"items\", {\n            \"style\": {\n              color\n            },\n            \"renderBody\": out => {\n              out.t(\"baz\", _component);\n            }\n          });\n        }\n      }\n      let i = 10;\n      while (i--) {\n        _marko_repeated_attr_tag(\"items\", {\n          \"renderBody\": out => {\n            out.t(i, _component);\n          }\n        });\n      }\n    }));\n    for (const col of _of_fallback(input.table)) {\n      _marko_repeated_attr_tag(\"cols\", _marko_render_input(() => {\n        for (const row of _of_fallback(col)) {\n          _marko_repeated_attr_tag(\"rows\", {\n            \"row\": row,\n            \"renderBody\": out => {\n              out.t(row, _component);\n            }\n          });\n        }\n      }, {\n        \"x\": y\n      }));\n    }\n    _marko_repeated_attr_tag(\"cols\", _marko_render_input(() => {\n      _marko_repeated_attr_tag(\"rows\", {\n        \"row\": -1,\n        \"renderBody\": out => {\n          out.t(\"Outside\", _component);\n        }\n      });\n    }, {\n      \"outside\": true\n    }));\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-dynamic/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"xhhdTxq\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { r as _marko_repeated_attr_tag, a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/dist/runtime/helpers/attr-tag.js\";\nimport _of_fallback from \"marko/dist/runtime/helpers/of-fallback.js\";\nimport _hello from \"./components/hello/index.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_hello, _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"list\", _marko_render_input(() => {\n      for (const color of _of_fallback(input.colors)) {\n        if (x) {\n          _marko_repeated_attr_tag(\"items\", {\n            \"style\": {\n              color\n            },\n            \"renderBody\": out => {\n              out.t(\"foo\", _component);\n            }\n          });\n        } else if (y) {\n          _marko_repeated_attr_tag(\"items\", {\n            \"style\": {\n              color\n            },\n            \"renderBody\": out => {\n              out.t(\"bar\", _component);\n            }\n          });\n        } else {\n          _marko_repeated_attr_tag(\"items\", {\n            \"style\": {\n              color\n            },\n            \"renderBody\": out => {\n              out.t(\"baz\", _component);\n            }\n          });\n        }\n      }\n      let i = 10;\n      while (i--) {\n        _marko_repeated_attr_tag(\"items\", {\n          \"renderBody\": out => {\n            out.t(i, _component);\n          }\n        });\n      }\n    }));\n    for (const col of _of_fallback(input.table)) {\n      _marko_repeated_attr_tag(\"cols\", _marko_render_input(() => {\n        for (const row of _of_fallback(col)) {\n          _marko_repeated_attr_tag(\"rows\", {\n            \"row\": row,\n            \"renderBody\": out => {\n              out.t(row, _component);\n            }\n          });\n        }\n      }, {\n        \"x\": y\n      }));\n    }\n    _marko_repeated_attr_tag(\"cols\", _marko_render_input(() => {\n      _marko_repeated_attr_tag(\"rows\", {\n        \"row\": -1,\n        \"renderBody\": out => {\n          out.t(\"Outside\", _component);\n        }\n      });\n    }, {\n      \"outside\": true\n    }));\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-dynamic/template.marko",
    "content": "<hello>\n    <@list>\n        <for|color| of=input.colors>\n            <if(x)>\n                <@item style={ color }>foo</@item>\n            </if>\n            <else-if(y)>\n                <@item style={ color }>bar</@item>\n            </else-if>\n            <else>\n                <@item style={ color }>baz</@item>\n            </else>\n        </for>\n\n        $ let i = 10;\n        <while(i--)>\n            <@item>${i}</@item>\n        </while>\n    </@list>\n\n    <for|col| of=input.table>\n        <@col x=y>\n            <for|row| of=col>\n                <@row row=row>${row}</@row>\n            </for>\n        </@col>\n    </for>\n\n    <@col outside>\n        <@row row=-1>Outside</@row>\n    </@col>\n</hello>\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-dynamic-and-static/components/hello/index.marko",
    "content": "<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-dynamic-and-static/components/hello/marko-tag.json",
    "content": "{\n  \"@items <item>[]\": {},\n  \"@other\": {}\n}\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-dynamic-and-static/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _attrTag = require(\"marko/src/runtime/helpers/attr-tag.js\");\nvar _index2 = _interopRequireDefault(require(\"./components/hello/index.marko\"));\nvar _renderTag = _interopRequireDefault(require(\"marko/src/runtime/helpers/render-tag.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  (0, _renderTag.default)(_index2.default, (0, _attrTag.i)(() => {\n    for (const a in b) {\n      (0, _attrTag.r)(\"items\", {});\n    }\n    (0, _attrTag.a)(\"other\", {});\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-dynamic-and-static/snapshots/generated-expected.marko",
    "content": "<hello>\n  <for|a| in=b>\n    <@item/>\n  </for>\n  <@other/>\n</hello>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-dynamic-and-static/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { r as _marko_repeated_attr_tag, a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/src/runtime/helpers/attr-tag.js\";\nimport _hello from \"./components/hello/index.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_hello, _marko_render_input(() => {\n    for (const a in b) {\n      _marko_repeated_attr_tag(\"items\", {});\n    }\n    _marko_repeatable_attr_tag(\"other\", {});\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-dynamic-and-static/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"gsa2ZOR\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { r as _marko_repeated_attr_tag, a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/dist/runtime/helpers/attr-tag.js\";\nimport _hello from \"./components/hello/index.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_hello, _marko_render_input(() => {\n    for (const a in b) {\n      _marko_repeated_attr_tag(\"items\", {});\n    }\n    _marko_repeatable_attr_tag(\"other\", {});\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-dynamic-and-static/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-dynamic-and-static/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { r as _marko_repeated_attr_tag, a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/src/runtime/helpers/attr-tag.js\";\nimport _hello from \"./components/hello/index.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_hello, _marko_render_input(() => {\n    for (const a in b) {\n      _marko_repeated_attr_tag(\"items\", {});\n    }\n    _marko_repeatable_attr_tag(\"other\", {});\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-dynamic-and-static/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"gsa2ZOR\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { r as _marko_repeated_attr_tag, a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/dist/runtime/helpers/attr-tag.js\";\nimport _hello from \"./components/hello/index.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_hello, _marko_render_input(() => {\n    for (const a in b) {\n      _marko_repeated_attr_tag(\"items\", {});\n    }\n    _marko_repeatable_attr_tag(\"other\", {});\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-dynamic-and-static/template.marko",
    "content": "<hello>\n    <for|a| in=b>\n      <@item/>\n    </for>\n    <@other/>\n</hello>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-dynamic-tag-parent/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _attrTag = require(\"marko/src/runtime/helpers/attr-tag.js\");\nvar _dynamicTag = _interopRequireDefault(require(\"marko/src/runtime/helpers/dynamic-tag.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  (0, _dynamicTag.default)(out, input.x, () => (0, _attrTag.i)(() => {\n    (0, _attrTag.a)(\"header\", {\n      \"class\": \"my-header\",\n      \"renderBody\": out => {\n        out.w(\"Header content\");\n      }\n    });\n    (0, _attrTag.a)(\"footer\", {\n      \"class\": \"my-footer\",\n      \"renderBody\": out => {\n        out.w(\"Footer content\");\n      }\n    });\n    return out => {\n      out.w(\"Body content\");\n    };\n  }), null, null, null, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-dynamic-tag-parent/snapshots/generated-expected.marko",
    "content": "<${input.x}>\n  <@header class=\"my-header\">\n    Header content\n  </@header>\n  Body content\n  <@footer class=\"my-footer\">\n    Footer content\n  </@footer>\n</>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-dynamic-tag-parent/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/src/runtime/helpers/attr-tag.js\";\nimport _marko_dynamic_tag from \"marko/src/runtime/helpers/dynamic-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_dynamic_tag(out, input.x, () => _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"header\", {\n      \"class\": \"my-header\",\n      \"renderBody\": out => {\n        out.w(\"Header content\");\n      }\n    });\n    _marko_repeatable_attr_tag(\"footer\", {\n      \"class\": \"my-footer\",\n      \"renderBody\": out => {\n        out.w(\"Footer content\");\n      }\n    });\n    return out => {\n      out.w(\"Body content\");\n    };\n  }), null, null, null, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-dynamic-tag-parent/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"NExspcS\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/dist/runtime/helpers/attr-tag.js\";\nimport _marko_dynamic_tag from \"marko/dist/runtime/helpers/dynamic-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_dynamic_tag(out, input.x, () => _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"header\", {\n      \"class\": \"my-header\",\n      \"renderBody\": out => {\n        out.w(\"Header content\");\n      }\n    });\n    _marko_repeatable_attr_tag(\"footer\", {\n      \"class\": \"my-footer\",\n      \"renderBody\": out => {\n        out.w(\"Footer content\");\n      }\n    });\n    return out => {\n      out.w(\"Body content\");\n    };\n  }), null, null, null, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-dynamic-tag-parent/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-dynamic-tag-parent/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/src/runtime/helpers/attr-tag.js\";\nimport _marko_dynamic_tag from \"marko/src/runtime/helpers/dynamic-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_dynamic_tag(out, input.x, () => _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"header\", {\n      \"class\": \"my-header\",\n      \"renderBody\": out => {\n        out.t(\"Header content\", _component);\n      }\n    });\n    _marko_repeatable_attr_tag(\"footer\", {\n      \"class\": \"my-footer\",\n      \"renderBody\": out => {\n        out.t(\"Footer content\", _component);\n      }\n    });\n    return out => {\n      out.t(\"Body content\", _component);\n    };\n  }), null, null, null, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-dynamic-tag-parent/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"NExspcS\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/dist/runtime/helpers/attr-tag.js\";\nimport _marko_dynamic_tag from \"marko/dist/runtime/helpers/dynamic-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_dynamic_tag(out, input.x, () => _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"header\", {\n      \"class\": \"my-header\",\n      \"renderBody\": out => {\n        out.t(\"Header content\", _component);\n      }\n    });\n    _marko_repeatable_attr_tag(\"footer\", {\n      \"class\": \"my-footer\",\n      \"renderBody\": out => {\n        out.t(\"Footer content\", _component);\n      }\n    });\n    return out => {\n      out.t(\"Body content\", _component);\n    };\n  }), null, null, null, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-dynamic-tag-parent/template.marko",
    "content": "<${input.x}>\n\n    <@header class=\"my-header\">\n        Header content\n    </@header>\n\n    Body content\n\n    <@footer class=\"my-footer\">\n        Footer content\n    </@footer>\n</>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-dynamic-with-params/components/hello/index.marko",
    "content": "<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-dynamic-with-params/components/hello/marko-tag.json",
    "content": "{\n  \"@item <item>\": {\n    \"@*\": \"expression\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-dynamic-with-params/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _escapeXml = require(\"marko/src/runtime/html/helpers/escape-xml.js\");\nvar _attrTag = require(\"marko/src/runtime/helpers/attr-tag.js\");\nvar _index2 = _interopRequireDefault(require(\"./components/hello/index.marko\"));\nvar _renderTag = _interopRequireDefault(require(\"marko/src/runtime/helpers/render-tag.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  (0, _renderTag.default)(_index2.default, (0, _attrTag.i)(() => {\n    if (input.x) {\n      (0, _attrTag.a)(\"item\", {\n        \"renderBody\": (out, y) => {\n          out.w((0, _escapeXml.x)(y));\n        }\n      });\n    }\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-dynamic-with-params/snapshots/generated-expected.marko",
    "content": "<hello>\n  <if(input.x)>\n    <@item|y|>\n      ${y}\n    </@item>\n  </if>\n</hello>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-dynamic-with-params/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { x as _marko_escapeXml } from \"marko/src/runtime/html/helpers/escape-xml.js\";\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/src/runtime/helpers/attr-tag.js\";\nimport _hello from \"./components/hello/index.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_hello, _marko_render_input(() => {\n    if (input.x) {\n      _marko_repeatable_attr_tag(\"item\", {\n        \"renderBody\": (out, y) => {\n          out.w(_marko_escapeXml(y));\n        }\n      });\n    }\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-dynamic-with-params/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"qZGQzLB\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { x as _marko_escapeXml } from \"marko/dist/runtime/html/helpers/escape-xml.js\";\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/dist/runtime/helpers/attr-tag.js\";\nimport _hello from \"./components/hello/index.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_hello, _marko_render_input(() => {\n    if (input.x) {\n      _marko_repeatable_attr_tag(\"item\", {\n        \"renderBody\": (out, y) => {\n          out.w(_marko_escapeXml(y));\n        }\n      });\n    }\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-dynamic-with-params/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-dynamic-with-params/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/src/runtime/helpers/attr-tag.js\";\nimport _hello from \"./components/hello/index.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_hello, _marko_render_input(() => {\n    if (input.x) {\n      _marko_repeatable_attr_tag(\"item\", {\n        \"renderBody\": (out, y) => {\n          out.t(y, _component);\n        }\n      });\n    }\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-dynamic-with-params/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"qZGQzLB\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/dist/runtime/helpers/attr-tag.js\";\nimport _hello from \"./components/hello/index.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_hello, _marko_render_input(() => {\n    if (input.x) {\n      _marko_repeatable_attr_tag(\"item\", {\n        \"renderBody\": (out, y) => {\n          out.t(y, _component);\n        }\n      });\n    }\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-dynamic-with-params/template.marko",
    "content": "<hello>\n    <if(input.x)>\n        <@item|y|>\n            ${y}\n        </@item>\n    </if>\n</hello>\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-repeated-longhand/components/hello/index.marko",
    "content": "<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-repeated-longhand/components/hello/marko-tag.json",
    "content": "{\n  \"attributes\": {},\n  \"nested-tags\": {\n    \"list\": {\n      \"attributes\": {},\n      \"nested-tags\": {\n        \"item\": {\n          \"is-repeated\": true,\n          \"target-property\": \"items\",\n          \"attributes\": {}\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-repeated-longhand/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _attrTag = require(\"marko/src/runtime/helpers/attr-tag.js\");\nvar _ofFallback = _interopRequireDefault(require(\"marko/src/runtime/helpers/of-fallback.js\"));\nvar _escapeXml = require(\"marko/src/runtime/html/helpers/escape-xml.js\");\nvar _index2 = _interopRequireDefault(require(\"./components/hello/index.marko\"));\nvar _renderTag = _interopRequireDefault(require(\"marko/src/runtime/helpers/render-tag.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  (0, _renderTag.default)(_index2.default, (0, _attrTag.i)(() => {\n    (0, _attrTag.a)(\"list\", (0, _attrTag.i)(() => {\n      for (const color of (0, _ofFallback.default)(input.colors)) {\n        if (x) {\n          (0, _attrTag.r)(\"items\", {\n            \"renderBody\": out => {\n              out.w(\"foo\");\n            }\n          });\n        } else if (y) {\n          (0, _attrTag.r)(\"items\", {\n            \"renderBody\": out => {\n              out.w(\"bar\");\n            }\n          });\n        } else {\n          (0, _attrTag.r)(\"items\", {\n            \"renderBody\": out => {\n              out.w(\"baz\");\n            }\n          });\n        }\n      }\n      let i = 10;\n      while (i--) {\n        (0, _attrTag.r)(\"items\", {\n          \"renderBody\": out => {\n            out.w((0, _escapeXml.x)(i));\n          }\n        });\n      }\n    }));\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-repeated-longhand/snapshots/generated-expected.marko",
    "content": "<hello>\n  <@list>\n    <for|color| of=input.colors>\n      <if(x)>\n        <@item>\n          foo\n        </@item>\n      </if>\n      <else-if(y)>\n        <@item>\n          bar\n        </@item>\n      </else-if>\n      <else>\n        <@item>\n          baz\n        </@item>\n      </else>\n    </for>\n    $ let i = 10;\n    <while(i--)>\n      <@item>\n        ${i}\n      </@item>\n    </while>\n  </@list>\n</hello>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-repeated-longhand/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { r as _marko_repeated_attr_tag, a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/src/runtime/helpers/attr-tag.js\";\nimport _of_fallback from \"marko/src/runtime/helpers/of-fallback.js\";\nimport { x as _marko_escapeXml } from \"marko/src/runtime/html/helpers/escape-xml.js\";\nimport _hello from \"./components/hello/index.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_hello, _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"list\", _marko_render_input(() => {\n      for (const color of _of_fallback(input.colors)) {\n        if (x) {\n          _marko_repeated_attr_tag(\"items\", {\n            \"renderBody\": out => {\n              out.w(\"foo\");\n            }\n          });\n        } else if (y) {\n          _marko_repeated_attr_tag(\"items\", {\n            \"renderBody\": out => {\n              out.w(\"bar\");\n            }\n          });\n        } else {\n          _marko_repeated_attr_tag(\"items\", {\n            \"renderBody\": out => {\n              out.w(\"baz\");\n            }\n          });\n        }\n      }\n      let i = 10;\n      while (i--) {\n        _marko_repeated_attr_tag(\"items\", {\n          \"renderBody\": out => {\n            out.w(_marko_escapeXml(i));\n          }\n        });\n      }\n    }));\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-repeated-longhand/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"ne9BIsk\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { r as _marko_repeated_attr_tag, a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/dist/runtime/helpers/attr-tag.js\";\nimport _of_fallback from \"marko/dist/runtime/helpers/of-fallback.js\";\nimport { x as _marko_escapeXml } from \"marko/dist/runtime/html/helpers/escape-xml.js\";\nimport _hello from \"./components/hello/index.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_hello, _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"list\", _marko_render_input(() => {\n      for (const color of _of_fallback(input.colors)) {\n        if (x) {\n          _marko_repeated_attr_tag(\"items\", {\n            \"renderBody\": out => {\n              out.w(\"foo\");\n            }\n          });\n        } else if (y) {\n          _marko_repeated_attr_tag(\"items\", {\n            \"renderBody\": out => {\n              out.w(\"bar\");\n            }\n          });\n        } else {\n          _marko_repeated_attr_tag(\"items\", {\n            \"renderBody\": out => {\n              out.w(\"baz\");\n            }\n          });\n        }\n      }\n      let i = 10;\n      while (i--) {\n        _marko_repeated_attr_tag(\"items\", {\n          \"renderBody\": out => {\n            out.w(_marko_escapeXml(i));\n          }\n        });\n      }\n    }));\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-repeated-longhand/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-repeated-longhand/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { r as _marko_repeated_attr_tag, a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/src/runtime/helpers/attr-tag.js\";\nimport _of_fallback from \"marko/src/runtime/helpers/of-fallback.js\";\nimport _hello from \"./components/hello/index.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_hello, _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"list\", _marko_render_input(() => {\n      for (const color of _of_fallback(input.colors)) {\n        if (x) {\n          _marko_repeated_attr_tag(\"items\", {\n            \"renderBody\": out => {\n              out.t(\"foo\", _component);\n            }\n          });\n        } else if (y) {\n          _marko_repeated_attr_tag(\"items\", {\n            \"renderBody\": out => {\n              out.t(\"bar\", _component);\n            }\n          });\n        } else {\n          _marko_repeated_attr_tag(\"items\", {\n            \"renderBody\": out => {\n              out.t(\"baz\", _component);\n            }\n          });\n        }\n      }\n      let i = 10;\n      while (i--) {\n        _marko_repeated_attr_tag(\"items\", {\n          \"renderBody\": out => {\n            out.t(i, _component);\n          }\n        });\n      }\n    }));\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-repeated-longhand/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"ne9BIsk\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { r as _marko_repeated_attr_tag, a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/dist/runtime/helpers/attr-tag.js\";\nimport _of_fallback from \"marko/dist/runtime/helpers/of-fallback.js\";\nimport _hello from \"./components/hello/index.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_hello, _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"list\", _marko_render_input(() => {\n      for (const color of _of_fallback(input.colors)) {\n        if (x) {\n          _marko_repeated_attr_tag(\"items\", {\n            \"renderBody\": out => {\n              out.t(\"foo\", _component);\n            }\n          });\n        } else if (y) {\n          _marko_repeated_attr_tag(\"items\", {\n            \"renderBody\": out => {\n              out.t(\"bar\", _component);\n            }\n          });\n        } else {\n          _marko_repeated_attr_tag(\"items\", {\n            \"renderBody\": out => {\n              out.t(\"baz\", _component);\n            }\n          });\n        }\n      }\n      let i = 10;\n      while (i--) {\n        _marko_repeated_attr_tag(\"items\", {\n          \"renderBody\": out => {\n            out.t(i, _component);\n          }\n        });\n      }\n    }));\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-repeated-longhand/template.marko",
    "content": "<hello>\n    <@list>\n        <for|color| of=input.colors>\n            <if(x)>\n                <@item>foo</@item>\n            </if>\n            <else-if(y)>\n                <@item>bar</@item>\n            </else-if>\n            <else>\n                <@item>baz</@item>\n            </else>\n        </for>\n\n        $ let i = 10;\n        <while(i--)>\n            <@item>${i}</@item>\n        </while>\n    </@list>\n</hello>\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-with-key/components/hello/index.marko",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-with-key/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _attrTag = require(\"marko/src/runtime/helpers/attr-tag.js\");\nvar _index2 = _interopRequireDefault(require(\"./components/hello/index.marko\"));\nvar _renderTag = _interopRequireDefault(require(\"marko/src/runtime/helpers/render-tag.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  (0, _renderTag.default)(_index2.default, (0, _attrTag.i)(() => {\n    (0, _attrTag.a)(\"foo\", {\n      \"key\": \"foo\",\n      \"renderBody\": out => {\n        out.w(\"Foo!\");\n      }\n    });\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-with-key/snapshots/generated-expected.marko",
    "content": "<hello>\n  <@foo key=\"foo\">\n    Foo!\n  </@foo>\n</hello>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-with-key/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/src/runtime/helpers/attr-tag.js\";\nimport _hello from \"./components/hello/index.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_hello, _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"foo\", {\n      \"key\": \"foo\",\n      \"renderBody\": out => {\n        out.w(\"Foo!\");\n      }\n    });\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-with-key/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"Jgbreso\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/dist/runtime/helpers/attr-tag.js\";\nimport _hello from \"./components/hello/index.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_hello, _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"foo\", {\n      \"key\": \"foo\",\n      \"renderBody\": out => {\n        out.w(\"Foo!\");\n      }\n    });\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-with-key/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-with-key/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/src/runtime/helpers/attr-tag.js\";\nimport _hello from \"./components/hello/index.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_hello, _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"foo\", {\n      \"key\": \"foo\",\n      \"renderBody\": out => {\n        out.t(\"Foo!\", _component);\n      }\n    });\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-with-key/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"Jgbreso\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/dist/runtime/helpers/attr-tag.js\";\nimport _hello from \"./components/hello/index.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_hello, _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"foo\", {\n      \"key\": \"foo\",\n      \"renderBody\": out => {\n        out.t(\"Foo!\", _component);\n      }\n    });\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/at-tags-with-key/template.marko",
    "content": "<hello>\n    <@foo key=\"foo\">Foo!</@foo>\n</hello>\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-boolean/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<input checked>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-boolean/snapshots/generated-expected.marko",
    "content": "<input checked>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-boolean/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<input checked>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-boolean/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"xJA2Wxq\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<input checked>\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-boolean/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-boolean/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.e(\"input\", {\n    \"checked\": \"\"\n  }, \"0\", _component, 0, 0);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-boolean/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"xJA2Wxq\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_constElement from \"marko/dist/runtime/vdom/helpers/const-element.js\";\nconst _marko_node = _marko_constElement(\"input\", {\n  \"checked\": \"\"\n}, 0);\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.n(_marko_node, _component);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-boolean/template.marko",
    "content": "<input checked/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-class/components/custom-tag.marko",
    "content": "<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-class/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _classValue = _interopRequireDefault(require(\"marko/src/runtime/helpers/class-value.js\"));\nvar _attr = _interopRequireDefault(require(\"marko/src/runtime/html/helpers/attr.js\"));\nvar _customTag2 = _interopRequireDefault(require(\"./components/custom-tag.marko\"));\nvar _renderTag = _interopRequireDefault(require(\"marko/src/runtime/helpers/render-tag.js\"));\nvar _attrTag = require(\"marko/src/runtime/helpers/attr-tag.js\");\nvar _dynamicTag = _interopRequireDefault(require(\"marko/src/runtime/helpers/dynamic-tag.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`<div${(0, _attr.default)(\"class\", (0, _classValue.default)([\"a\", {\n    b: c,\n    d\n  }]))}></div>`);\n  out.w(\"<div class=\\\"a b\\\"></div>\");\n  out.w(\"<div class=\\\"a b c\\\"></div>\");\n  (0, _renderTag.default)(_customTag2.default, {\n    \"class\": [\"a\", {\n      b: c,\n      d\n    }]\n  }, out, _componentDef, \"3\");\n  (0, _renderTag.default)(_customTag2.default, {\n    \"class\": [\"a\", false, \"b\"]\n  }, out, _componentDef, \"4\");\n  (0, _dynamicTag.default)(out, input.test, () => (0, _attrTag.i)(() => {\n    (0, _attrTag.a)(\"test\", {\n      \"class\": [\"a\", {\n        b: c,\n        d\n      }],\n      \"renderBody\": out => {\n        out.w(\"Hello\");\n      }\n    });\n  }, {\n    \"class\": [\"a\", {\n      b: c,\n      d\n    }]\n  }), null, null, null, _componentDef, \"5\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-class/snapshots/generated-expected.marko",
    "content": "<div class=[\"a\", {\n  b: c,\n  d\n}]/>\n<div class=[\"a\", false, \"b\"]/>\n<div class=\"a b c\"/>\n<custom-tag class=[\"a\", {\n  b: c,\n  d\n}]/>\n<custom-tag class=[\"a\", false, \"b\"]/>\n<${input.test} class=[\"a\", {\n  b: c,\n  d\n}]>\n  <@test class=[\"a\", {\n    b: c,\n    d\n  }]>\n    Hello\n  </@test>\n</>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-class/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_class_merge from \"marko/src/runtime/helpers/class-value.js\";\nimport _marko_attr from \"marko/src/runtime/html/helpers/attr.js\";\nimport _customTag from \"./components/custom-tag.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/src/runtime/helpers/attr-tag.js\";\nimport _marko_dynamic_tag from \"marko/src/runtime/helpers/dynamic-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`<div${_marko_attr(\"class\", _marko_class_merge([\"a\", {\n    b: c,\n    d\n  }]))}></div>`);\n  out.w(\"<div class=\\\"a b\\\"></div>\");\n  out.w(\"<div class=\\\"a b c\\\"></div>\");\n  _marko_tag(_customTag, {\n    \"class\": [\"a\", {\n      b: c,\n      d\n    }]\n  }, out, _componentDef, \"3\");\n  _marko_tag(_customTag, {\n    \"class\": [\"a\", false, \"b\"]\n  }, out, _componentDef, \"4\");\n  _marko_dynamic_tag(out, input.test, () => _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"test\", {\n      \"class\": [\"a\", {\n        b: c,\n        d\n      }],\n      \"renderBody\": out => {\n        out.w(\"Hello\");\n      }\n    });\n  }, {\n    \"class\": [\"a\", {\n      b: c,\n      d\n    }]\n  }), null, null, null, _componentDef, \"5\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-class/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"l$bM_Jg\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_class_merge from \"marko/dist/runtime/helpers/class-value.js\";\nimport _marko_attr from \"marko/dist/runtime/html/helpers/attr.js\";\nimport _customTag from \"./components/custom-tag.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/dist/runtime/helpers/attr-tag.js\";\nimport _marko_dynamic_tag from \"marko/dist/runtime/helpers/dynamic-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`<div${_marko_attr(\"class\", _marko_class_merge([\"a\", {\n    b: c,\n    d\n  }]))}></div><div class=\"a b\"></div><div class=\"a b c\"></div>`);\n  _marko_tag(_customTag, {\n    \"class\": [\"a\", {\n      b: c,\n      d\n    }]\n  }, out, _componentDef, \"3\");\n  _marko_tag(_customTag, {\n    \"class\": [\"a\", false, \"b\"]\n  }, out, _componentDef, \"4\");\n  _marko_dynamic_tag(out, input.test, () => _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"test\", {\n      \"class\": [\"a\", {\n        b: c,\n        d\n      }],\n      \"renderBody\": out => {\n        out.w(\"Hello\");\n      }\n    });\n  }, {\n    \"class\": [\"a\", {\n      b: c,\n      d\n    }]\n  }), null, null, null, _componentDef, \"5\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-class/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-class/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_class_merge from \"marko/src/runtime/helpers/class-value.js\";\nimport _customTag from \"./components/custom-tag.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/src/runtime/helpers/attr-tag.js\";\nimport _marko_dynamic_tag from \"marko/src/runtime/helpers/dynamic-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.e(\"div\", {\n    \"class\": _marko_class_merge([\"a\", {\n      b: c,\n      d\n    }])\n  }, \"0\", _component, 0, 1);\n  out.e(\"div\", {\n    \"class\": \"a b\"\n  }, \"1\", _component, 0, 1);\n  out.e(\"div\", {\n    \"class\": \"a b c\"\n  }, \"2\", _component, 0, 1);\n  _marko_tag(_customTag, {\n    \"class\": [\"a\", {\n      b: c,\n      d\n    }]\n  }, out, _componentDef, \"3\");\n  _marko_tag(_customTag, {\n    \"class\": [\"a\", false, \"b\"]\n  }, out, _componentDef, \"4\");\n  _marko_dynamic_tag(out, input.test, () => _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"test\", {\n      \"class\": [\"a\", {\n        b: c,\n        d\n      }],\n      \"renderBody\": out => {\n        out.t(\"Hello\", _component);\n      }\n    });\n  }, {\n    \"class\": [\"a\", {\n      b: c,\n      d\n    }]\n  }), null, null, null, _componentDef, \"5\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-class/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"l$bM_Jg\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_class_merge from \"marko/dist/runtime/helpers/class-value.js\";\nimport _marko_constElement from \"marko/dist/runtime/vdom/helpers/const-element.js\";\nconst _marko_node = _marko_constElement(\"div\", {\n  \"class\": \"a b\"\n}, 0);\nconst _marko_node2 = _marko_constElement(\"div\", {\n  \"class\": \"a b c\"\n}, 0);\nimport _customTag from \"./components/custom-tag.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/dist/runtime/helpers/attr-tag.js\";\nimport _marko_dynamic_tag from \"marko/dist/runtime/helpers/dynamic-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.e(\"div\", {\n    \"class\": _marko_class_merge([\"a\", {\n      b: c,\n      d\n    }])\n  }, \"0\", _component, 0, 1);\n  out.n(_marko_node, _component);\n  out.n(_marko_node2, _component);\n  _marko_tag(_customTag, {\n    \"class\": [\"a\", {\n      b: c,\n      d\n    }]\n  }, out, _componentDef, \"3\");\n  _marko_tag(_customTag, {\n    \"class\": [\"a\", false, \"b\"]\n  }, out, _componentDef, \"4\");\n  _marko_dynamic_tag(out, input.test, () => _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"test\", {\n      \"class\": [\"a\", {\n        b: c,\n        d\n      }],\n      \"renderBody\": out => {\n        out.t(\"Hello\", _component);\n      }\n    });\n  }, {\n    \"class\": [\"a\", {\n      b: c,\n      d\n    }]\n  }), null, null, null, _componentDef, \"5\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-class/template.marko",
    "content": "<div class=[\"a\", { b: c, d }]/>\n<div class=[\"a\", false, \"b\"]/>\n<div class=\"a b c\"/>\n\n<custom-tag class=[\"a\", { b: c, d }]/>\n<custom-tag class=[\"a\", false, \"b\"]/>\n\n<${input.test} class=[\"a\", { b: c, d }]>\n  <@test class=[\"a\", { b: c, d }]>Hello</@test>\n</>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-escape/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _classValue = _interopRequireDefault(require(\"marko/src/runtime/helpers/class-value.js\"));\nvar _attr = _interopRequireDefault(require(\"marko/src/runtime/html/helpers/attr.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`<div${(0, _attr.default)(\"class\", (0, _classValue.default)(input.className))}${(0, _attr.default)(\"foo\", 'a' + input.foo + 'b')} bar=\"a ${_attr.default.d(input.foo)} b\"></div>`);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-escape/snapshots/generated-expected.marko",
    "content": "<div class=input.className foo=('a' + input.foo + 'b') bar=`a ${input.foo} b`>\n  <!-- TODO: nested=`a ${input.foo + `nested ${input.bar}`} b` -->\n</div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-escape/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_class_merge from \"marko/src/runtime/helpers/class-value.js\";\nimport _marko_attr from \"marko/src/runtime/html/helpers/attr.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`<div${_marko_attr(\"class\", _marko_class_merge(input.className))}${_marko_attr(\"foo\", 'a' + input.foo + 'b')} bar=\"a ${_marko_attr.d(input.foo)} b\"></div>`);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-escape/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"oRxrrpB\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_class_merge from \"marko/dist/runtime/helpers/class-value.js\";\nimport _marko_attr from \"marko/dist/runtime/html/helpers/attr.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`<div${_marko_attr(\"class\", _marko_class_merge(input.className))}${_marko_attr(\"foo\", 'a' + input.foo + 'b')} bar=\"a ${_marko_attr.d(input.foo)} b\"></div>`);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-escape/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-escape/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_class_merge from \"marko/src/runtime/helpers/class-value.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.e(\"div\", {\n    \"class\": _marko_class_merge(input.className),\n    \"foo\": 'a' + input.foo + 'b',\n    \"bar\": `a ${input.foo} b`\n  }, \"0\", _component, 0, 0);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-escape/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"oRxrrpB\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_class_merge from \"marko/dist/runtime/helpers/class-value.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.e(\"div\", {\n    \"class\": _marko_class_merge(input.className),\n    \"foo\": 'a' + input.foo + 'b',\n    \"bar\": `a ${input.foo} b`\n  }, \"0\", _component, 0, 0);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-escape/template.marko",
    "content": "<div class=input.className\n    foo=('a' + input.foo + 'b')\n    bar=`a ${input.foo} b`>\n    <!-- TODO: nested=`a ${input.foo + `nested ${input.bar}`} b` -->\n</div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-falsey/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div d=0 y=1></div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-falsey/snapshots/generated-expected.marko",
    "content": "<div a=null b=undefined c=false d=0 y=1/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-falsey/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div d=0 y=1></div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-falsey/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"pvFVc8T\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div d=0 y=1></div>\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-falsey/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-falsey/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.e(\"div\", {\n    \"d\": \"0\",\n    \"y\": \"1\"\n  }, \"0\", _component, 0, 0);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-falsey/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"pvFVc8T\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_constElement from \"marko/dist/runtime/vdom/helpers/const-element.js\";\nconst _marko_node = _marko_constElement(\"div\", {\n  \"d\": \"0\",\n  \"y\": \"1\"\n}, 0);\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.n(_marko_node, _component);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-falsey/template.marko",
    "content": "<div a=null b=undefined c=false d=0 y=1/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-method-shorthand/components/custom-tag.marko",
    "content": "<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-method-shorthand/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _customTag2 = _interopRequireDefault(require(\"./components/custom-tag.marko\"));\nvar _renderTag = _interopRequireDefault(require(\"marko/src/runtime/helpers/render-tag.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  (0, _renderTag.default)(_customTag2.default, {\n    \"someMethod\": function () {\n      console.log(\"hello\");\n    }\n  }, out, _componentDef, \"0\");\n  (0, _renderTag.default)(_customTag2.default, {\n    \"value\": function () {\n      console.log(\"again\");\n    }\n  }, out, _componentDef, \"1\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-method-shorthand/snapshots/generated-expected.marko",
    "content": "<custom-tag someMethod() {\n  console.log(\"hello\");\n}/>\n<custom-tag() {\n  console.log(\"again\");\n}/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-method-shorthand/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _customTag from \"./components/custom-tag.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_customTag, {\n    \"someMethod\": function () {\n      console.log(\"hello\");\n    }\n  }, out, _componentDef, \"0\");\n  _marko_tag(_customTag, {\n    \"value\": function () {\n      console.log(\"again\");\n    }\n  }, out, _componentDef, \"1\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-method-shorthand/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"YEnu3Nl\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _customTag from \"./components/custom-tag.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_customTag, {\n    \"someMethod\": function () {\n      console.log(\"hello\");\n    }\n  }, out, _componentDef, \"0\");\n  _marko_tag(_customTag, {\n    \"value\": function () {\n      console.log(\"again\");\n    }\n  }, out, _componentDef, \"1\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-method-shorthand/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-method-shorthand/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _customTag from \"./components/custom-tag.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_customTag, {\n    \"someMethod\": function () {\n      console.log(\"hello\");\n    }\n  }, out, _componentDef, \"0\");\n  _marko_tag(_customTag, {\n    \"value\": function () {\n      console.log(\"again\");\n    }\n  }, out, _componentDef, \"1\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-method-shorthand/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"YEnu3Nl\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _customTag from \"./components/custom-tag.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_customTag, {\n    \"someMethod\": function () {\n      console.log(\"hello\");\n    }\n  }, out, _componentDef, \"0\");\n  _marko_tag(_customTag, {\n    \"value\": function () {\n      console.log(\"again\");\n    }\n  }, out, _componentDef, \"1\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-method-shorthand/template.marko",
    "content": "<custom-tag someMethod() {\n  console.log(\"hello\");\n}/>\n\n<custom-tag() {\n  console.log(\"again\");\n}/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-method-with-return/components/test.marko",
    "content": "<div>\n  ${input.doThing()}\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-method-with-return/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _test2 = _interopRequireDefault(require(\"./components/test.marko\"));\nvar _renderTag = _interopRequireDefault(require(\"marko/src/runtime/helpers/render-tag.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  (0, _renderTag.default)(_test2.default, {\n    \"doThing\": function () {\n      return 1;\n    }\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-method-with-return/snapshots/generated-expected.marko",
    "content": "<test doThing() {\n  return 1;\n}/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-method-with-return/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _test from \"./components/test.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_test, {\n    \"doThing\": function () {\n      return 1;\n    }\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-method-with-return/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"jTrQHua\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _test from \"./components/test.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_test, {\n    \"doThing\": function () {\n      return 1;\n    }\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-method-with-return/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-method-with-return/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _test from \"./components/test.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_test, {\n    \"doThing\": function () {\n      return 1;\n    }\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-method-with-return/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"jTrQHua\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _test from \"./components/test.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_test, {\n    \"doThing\": function () {\n      return 1;\n    }\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-method-with-return/template.marko",
    "content": "<test doThing() {\n  return 1;\n}/>\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-no-update-scoped/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _dataMarko = _interopRequireDefault(require(\"marko/src/runtime/html/helpers/data-marko.js\"));\nvar _attr = _interopRequireDefault(require(\"marko/src/runtime/html/helpers/attr.js\"));\nvar _preserveTag = _interopRequireDefault(require(\"marko/src/core-tags/components/preserve-tag.js\"));\nvar _renderTag = _interopRequireDefault(require(\"marko/src/runtime/helpers/render-tag.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  (0, _renderTag.default)(_preserveTag.default, {\n    \"n\": true,\n    \"renderBody\": out => {\n      out.w(`<input${(0, _dataMarko.default)(out, _componentDef, 0, \"0\")}${(0, _attr.default)(\"id\", _componentDef.elId(\"input1\"))}>`);\n    }\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-no-update-scoped/snapshots/generated-expected.marko",
    "content": "<input id:scoped=\"input1\" no-update>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-no-update-scoped/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_props from \"marko/src/runtime/html/helpers/data-marko.js\";\nimport _marko_attr from \"marko/src/runtime/html/helpers/attr.js\";\nimport _preserve from \"marko/src/core-tags/components/preserve-tag.js\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_preserve, {\n    \"n\": true,\n    \"renderBody\": out => {\n      out.w(`<input${_marko_props(out, _componentDef, 0, \"0\")}${_marko_attr(\"id\", _componentDef.elId(\"input1\"))}>`);\n    }\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-no-update-scoped/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"AqQHLBR\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_props from \"marko/dist/runtime/html/helpers/data-marko.js\";\nimport _marko_attr from \"marko/dist/runtime/html/helpers/attr.js\";\nimport _preserve from \"marko/dist/core-tags/components/preserve-tag.js\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_preserve, {\n    \"n\": true,\n    \"renderBody\": out => {\n      out.w(`<input${_marko_props(out, _componentDef, 0, \"0\")}${_marko_attr(\"id\", _componentDef.elId(\"input1\"))}>`);\n    }\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-no-update-scoped/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-no-update-scoped/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _preserve from \"marko/src/core-tags/components/preserve-tag.js\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_preserve, {\n    \"n\": true,\n    \"renderBody\": out => {\n      out.e(\"input\", {\n        \"id\": _componentDef.elId(\"input1\")\n      }, \"0\", _component, 0, 1);\n    }\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-no-update-scoped/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"AqQHLBR\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _preserve from \"marko/dist/core-tags/components/preserve-tag.js\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_preserve, {\n    \"n\": true,\n    \"renderBody\": out => {\n      out.e(\"input\", {\n        \"id\": _componentDef.elId(\"input1\")\n      }, \"0\", _component, 0, 1);\n    }\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-no-update-scoped/template.marko",
    "content": "<input id:scoped=\"input1\" no-update>\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-scoped/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _attr = _interopRequireDefault(require(\"marko/src/runtime/html/helpers/attr.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`<div${(0, _attr.default)(\"id\", _componentDef.elId(\"1\"))}${(0, _attr.default)(\"aria-described-by\", _componentDef.elId(\"b\"))}></div>`);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-scoped/snapshots/generated-expected.marko",
    "content": "<div id:scoped=\"1\" aria-described-by:scoped=\"b\"/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-scoped/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_attr from \"marko/src/runtime/html/helpers/attr.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`<div${_marko_attr(\"id\", _componentDef.elId(\"1\"))}${_marko_attr(\"aria-described-by\", _componentDef.elId(\"b\"))}></div>`);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-scoped/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"DQnZQcn\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_attr from \"marko/dist/runtime/html/helpers/attr.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`<div${_marko_attr(\"id\", _componentDef.elId(\"1\"))}${_marko_attr(\"aria-described-by\", _componentDef.elId(\"b\"))}></div>`);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-scoped/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-scoped/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.e(\"div\", {\n    \"id\": _componentDef.elId(\"1\"),\n    \"aria-described-by\": _componentDef.elId(\"b\")\n  }, \"0\", _component, 0, 0);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-scoped/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"DQnZQcn\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.e(\"div\", {\n    \"id\": _componentDef.elId(\"1\"),\n    \"aria-described-by\": _componentDef.elId(\"b\")\n  }, \"0\", _component, 0, 0);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-scoped/template.marko",
    "content": "<div id:scoped=\"1\" aria-described-by:scoped=\"b\"/>\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-style/components/custom-tag.marko",
    "content": "<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-style/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _styleValue = _interopRequireDefault(require(\"marko/src/runtime/helpers/style-value.js\"));\nvar _attr = _interopRequireDefault(require(\"marko/src/runtime/html/helpers/attr.js\"));\nvar _customTag2 = _interopRequireDefault(require(\"./components/custom-tag.marko\"));\nvar _renderTag = _interopRequireDefault(require(\"marko/src/runtime/helpers/render-tag.js\"));\nvar _attrTag = require(\"marko/src/runtime/helpers/attr-tag.js\");\nvar _dynamicTag = _interopRequireDefault(require(\"marko/src/runtime/helpers/dynamic-tag.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`<div${(0, _attr.default)(\"style\", (0, _styleValue.default)({\n    color: input.color\n  }))}></div>`);\n  out.w(\"<div style=width:100px></div>\");\n  out.w(\"<div style=\\\"color: green\\\"></div>\");\n  (0, _renderTag.default)(_customTag2.default, {\n    \"style\": {\n      color: input.color\n    }\n  }, out, _componentDef, \"3\");\n  (0, _renderTag.default)(_customTag2.default, {\n    \"style\": {\n      width: 100\n    }\n  }, out, _componentDef, \"4\");\n  (0, _renderTag.default)(_customTag2.default, {\n    \"style\": \"color: green\"\n  }, out, _componentDef, \"5\");\n  (0, _dynamicTag.default)(out, input.test, () => (0, _attrTag.i)(() => {\n    (0, _attrTag.a)(\"test\", {\n      \"style\": {\n        color: \"green\"\n      },\n      \"renderBody\": out => {\n        out.w(\"Hello\");\n      }\n    });\n  }, {\n    \"style\": {\n      color: \"green\"\n    }\n  }), null, null, null, _componentDef, \"6\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-style/snapshots/generated-expected.marko",
    "content": "<div style={\n  color: input.color\n}/>\n<div style={\n  width: 100\n}/>\n<div style=\"color: green\"/>\n<custom-tag style={\n  color: input.color\n}/>\n<custom-tag style={\n  width: 100\n}/>\n<custom-tag style=\"color: green\"/>\n<${input.test} style={\n  color: \"green\"\n}>\n  <@test style={\n    color: \"green\"\n  }>\n    Hello\n  </@test>\n</>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-style/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_style_merge from \"marko/src/runtime/helpers/style-value.js\";\nimport _marko_attr from \"marko/src/runtime/html/helpers/attr.js\";\nimport _customTag from \"./components/custom-tag.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/src/runtime/helpers/attr-tag.js\";\nimport _marko_dynamic_tag from \"marko/src/runtime/helpers/dynamic-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`<div${_marko_attr(\"style\", _marko_style_merge({\n    color: input.color\n  }))}></div>`);\n  out.w(\"<div style=width:100px></div>\");\n  out.w(\"<div style=\\\"color: green\\\"></div>\");\n  _marko_tag(_customTag, {\n    \"style\": {\n      color: input.color\n    }\n  }, out, _componentDef, \"3\");\n  _marko_tag(_customTag, {\n    \"style\": {\n      width: 100\n    }\n  }, out, _componentDef, \"4\");\n  _marko_tag(_customTag, {\n    \"style\": \"color: green\"\n  }, out, _componentDef, \"5\");\n  _marko_dynamic_tag(out, input.test, () => _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"test\", {\n      \"style\": {\n        color: \"green\"\n      },\n      \"renderBody\": out => {\n        out.w(\"Hello\");\n      }\n    });\n  }, {\n    \"style\": {\n      color: \"green\"\n    }\n  }), null, null, null, _componentDef, \"6\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-style/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"N8PCn3s\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_style_merge from \"marko/dist/runtime/helpers/style-value.js\";\nimport _marko_attr from \"marko/dist/runtime/html/helpers/attr.js\";\nimport _customTag from \"./components/custom-tag.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/dist/runtime/helpers/attr-tag.js\";\nimport _marko_dynamic_tag from \"marko/dist/runtime/helpers/dynamic-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`<div${_marko_attr(\"style\", _marko_style_merge({\n    color: input.color\n  }))}></div><div style=width:100px></div><div style=\"color: green\"></div>`);\n  _marko_tag(_customTag, {\n    \"style\": {\n      color: input.color\n    }\n  }, out, _componentDef, \"3\");\n  _marko_tag(_customTag, {\n    \"style\": {\n      width: 100\n    }\n  }, out, _componentDef, \"4\");\n  _marko_tag(_customTag, {\n    \"style\": \"color: green\"\n  }, out, _componentDef, \"5\");\n  _marko_dynamic_tag(out, input.test, () => _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"test\", {\n      \"style\": {\n        color: \"green\"\n      },\n      \"renderBody\": out => {\n        out.w(\"Hello\");\n      }\n    });\n  }, {\n    \"style\": {\n      color: \"green\"\n    }\n  }), null, null, null, _componentDef, \"6\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-style/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-style/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_style_merge from \"marko/src/runtime/helpers/style-value.js\";\nimport _customTag from \"./components/custom-tag.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/src/runtime/helpers/attr-tag.js\";\nimport _marko_dynamic_tag from \"marko/src/runtime/helpers/dynamic-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.e(\"div\", {\n    \"style\": _marko_style_merge({\n      color: input.color\n    })\n  }, \"0\", _component, 0, 1);\n  out.e(\"div\", {\n    \"style\": \"width:100px\"\n  }, \"1\", _component, 0, 1);\n  out.e(\"div\", {\n    \"style\": \"color: green\"\n  }, \"2\", _component, 0, 1);\n  _marko_tag(_customTag, {\n    \"style\": {\n      color: input.color\n    }\n  }, out, _componentDef, \"3\");\n  _marko_tag(_customTag, {\n    \"style\": {\n      width: 100\n    }\n  }, out, _componentDef, \"4\");\n  _marko_tag(_customTag, {\n    \"style\": \"color: green\"\n  }, out, _componentDef, \"5\");\n  _marko_dynamic_tag(out, input.test, () => _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"test\", {\n      \"style\": {\n        color: \"green\"\n      },\n      \"renderBody\": out => {\n        out.t(\"Hello\", _component);\n      }\n    });\n  }, {\n    \"style\": {\n      color: \"green\"\n    }\n  }), null, null, null, _componentDef, \"6\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-style/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"N8PCn3s\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_style_merge from \"marko/dist/runtime/helpers/style-value.js\";\nimport _marko_constElement from \"marko/dist/runtime/vdom/helpers/const-element.js\";\nconst _marko_node = _marko_constElement(\"div\", {\n  \"style\": \"width:100px\"\n}, 0);\nconst _marko_node2 = _marko_constElement(\"div\", {\n  \"style\": \"color: green\"\n}, 0);\nimport _customTag from \"./components/custom-tag.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/dist/runtime/helpers/attr-tag.js\";\nimport _marko_dynamic_tag from \"marko/dist/runtime/helpers/dynamic-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.e(\"div\", {\n    \"style\": _marko_style_merge({\n      color: input.color\n    })\n  }, \"0\", _component, 0, 1);\n  out.n(_marko_node, _component);\n  out.n(_marko_node2, _component);\n  _marko_tag(_customTag, {\n    \"style\": {\n      color: input.color\n    }\n  }, out, _componentDef, \"3\");\n  _marko_tag(_customTag, {\n    \"style\": {\n      width: 100\n    }\n  }, out, _componentDef, \"4\");\n  _marko_tag(_customTag, {\n    \"style\": \"color: green\"\n  }, out, _componentDef, \"5\");\n  _marko_dynamic_tag(out, input.test, () => _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"test\", {\n      \"style\": {\n        color: \"green\"\n      },\n      \"renderBody\": out => {\n        out.t(\"Hello\", _component);\n      }\n    });\n  }, {\n    \"style\": {\n      color: \"green\"\n    }\n  }), null, null, null, _componentDef, \"6\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-style/template.marko",
    "content": "<div style={ color: input.color }/>\n<div style={ width: 100 }/>\n<div style=\"color: green\"/>\n\n<custom-tag style={ color: input.color }/>\n<custom-tag style={ width: 100 }/>\n<custom-tag style=\"color: green\"/>\n\n<${input.test} style={ color: \"green\" }>\n  <@test style={ color: \"green\" }>Hello</@test>\n</>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-template-literal-escape/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _attr = _interopRequireDefault(require(\"marko/src/runtime/html/helpers/attr.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`<div foo=\"Hello ${_attr.default.d(input.name)}\"></div>`);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-template-literal-escape/snapshots/generated-expected.marko",
    "content": "<div foo=`Hello ${input.name}`/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-template-literal-escape/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_attr from \"marko/src/runtime/html/helpers/attr.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`<div foo=\"Hello ${_marko_attr.d(input.name)}\"></div>`);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-template-literal-escape/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"XiRKUDe\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_attr from \"marko/dist/runtime/html/helpers/attr.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`<div foo=\"Hello ${_marko_attr.d(input.name)}\"></div>`);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-template-literal-escape/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-template-literal-escape/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.e(\"div\", {\n    \"foo\": `Hello ${input.name}`\n  }, \"0\", _component, 0, 0);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-template-literal-escape/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"XiRKUDe\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.e(\"div\", {\n    \"foo\": `Hello ${input.name}`\n  }, \"0\", _component, 0, 0);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/attr-template-literal-escape/template.marko",
    "content": "<div foo=`Hello ${input.name}`></div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/await-tag/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _escapeXml = require(\"marko/src/runtime/html/helpers/escape-xml.js\");\nvar _attrTag = require(\"marko/src/runtime/helpers/attr-tag.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/core-tags/core/await/renderer.js\"));\nvar _renderTag = _interopRequireDefault(require(\"marko/src/runtime/helpers/render-tag.js\"));\nvar _renderer2 = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer2.default)(function (input, out, _componentDef, _component, state, $global) {\n  (0, _renderTag.default)(_renderer.default, (0, _attrTag.i)(() => {\n    (0, _attrTag.a)(\"then\", {\n      \"renderBody\": (out, result) => {\n        out.w((0, _escapeXml.x)(result));\n      }\n    });\n  }, {\n    \"_provider\": promise,\n    \"_name\": \"promise\"\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/await-tag/snapshots/generated-expected.marko",
    "content": "<await(promise)>\n  <@then|result|>\n    ${result}\n  </@then>\n</await>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/await-tag/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { x as _marko_escapeXml } from \"marko/src/runtime/html/helpers/escape-xml.js\";\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/src/runtime/helpers/attr-tag.js\";\nimport _await from \"marko/src/core-tags/core/await/renderer.js\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_await, _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"then\", {\n      \"renderBody\": (out, result) => {\n        out.w(_marko_escapeXml(result));\n      }\n    });\n  }, {\n    \"_provider\": promise,\n    \"_name\": \"promise\"\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/await-tag/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"b39Q24e\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { x as _marko_escapeXml } from \"marko/dist/runtime/html/helpers/escape-xml.js\";\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/dist/runtime/helpers/attr-tag.js\";\nimport _await from \"marko/dist/core-tags/core/await/renderer.js\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_await, _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"then\", {\n      \"renderBody\": (out, result) => {\n        out.w(_marko_escapeXml(result));\n      }\n    });\n  }, {\n    \"_provider\": promise,\n    \"_name\": \"promise\"\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/await-tag/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/await-tag/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/src/runtime/helpers/attr-tag.js\";\nimport _await from \"marko/src/core-tags/core/await/renderer.js\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_await, _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"then\", {\n      \"renderBody\": (out, result) => {\n        out.t(result, _component);\n      }\n    });\n  }, {\n    \"_provider\": promise,\n    \"_name\": \"promise\"\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/await-tag/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"b39Q24e\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/dist/runtime/helpers/attr-tag.js\";\nimport _await from \"marko/dist/core-tags/core/await/renderer.js\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_await, _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"then\", {\n      \"renderBody\": (out, result) => {\n        out.t(result, _component);\n      }\n    });\n  }, {\n    \"_provider\": promise,\n    \"_name\": \"promise\"\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/await-tag/template.marko",
    "content": "<await(promise)>\n  <@then|result|>\n    ${result}\n  </@then>\n</await>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/camel-case-attr-name-override/components/custom-tag/index.marko",
    "content": "<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/camel-case-attr-name-override/components/custom-tag/marko-tag.json",
    "content": "{\n  \"@data-attr-a\": \"string\",\n  \"@data-attr-b\": {\n    \"preserve-name\": true\n  },\n  \"@data-attr-c\": {\n    \"preserve-name\": false\n  },\n  \"@data-attr-d\": {\n    \"remove-dashes\": false\n  },\n  \"@data-attr-e\": {\n    \"remove-dashes\": true\n  },\n  \"@preserve-*\": {\n    \"preserve-name\": true,\n    \"pattern\": true\n  },\n  \"@not-preserve-*\": {\n    \"preserve-name\": false,\n    \"pattern\": true\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/camel-case-attr-name-override/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _index2 = _interopRequireDefault(require(\"./components/custom-tag/index.marko\"));\nvar _renderTag = _interopRequireDefault(require(\"marko/src/runtime/helpers/render-tag.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  (0, _renderTag.default)(_index2.default, {\n    \"dataAttrA\": true,\n    \"data-attr-b\": true,\n    \"dataAttrC\": true,\n    \"data-attr-d\": true,\n    \"dataAttrE\": true,\n    \"preserve-attr-a\": true,\n    \"notPreserveAttrA\": true\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/camel-case-attr-name-override/snapshots/generated-expected.marko",
    "content": "<custom-tag data-attr-a data-attr-b data-attr-c data-attr-d data-attr-e preserve-attr-a not-preserve-attr-a/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/camel-case-attr-name-override/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _customTag from \"./components/custom-tag/index.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_customTag, {\n    \"dataAttrA\": true,\n    \"data-attr-b\": true,\n    \"dataAttrC\": true,\n    \"data-attr-d\": true,\n    \"dataAttrE\": true,\n    \"preserve-attr-a\": true,\n    \"notPreserveAttrA\": true\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/camel-case-attr-name-override/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"nUewsSH\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _customTag from \"./components/custom-tag/index.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_customTag, {\n    \"dataAttrA\": true,\n    \"data-attr-b\": true,\n    \"dataAttrC\": true,\n    \"data-attr-d\": true,\n    \"dataAttrE\": true,\n    \"preserve-attr-a\": true,\n    \"notPreserveAttrA\": true\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/camel-case-attr-name-override/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/camel-case-attr-name-override/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _customTag from \"./components/custom-tag/index.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_customTag, {\n    \"dataAttrA\": true,\n    \"data-attr-b\": true,\n    \"dataAttrC\": true,\n    \"data-attr-d\": true,\n    \"dataAttrE\": true,\n    \"preserve-attr-a\": true,\n    \"notPreserveAttrA\": true\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/camel-case-attr-name-override/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"nUewsSH\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _customTag from \"./components/custom-tag/index.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_customTag, {\n    \"dataAttrA\": true,\n    \"data-attr-b\": true,\n    \"dataAttrC\": true,\n    \"data-attr-d\": true,\n    \"dataAttrE\": true,\n    \"preserve-attr-a\": true,\n    \"notPreserveAttrA\": true\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/camel-case-attr-name-override/template.marko",
    "content": "<custom-tag\n  data-attr-a\n  data-attr-b\n  data-attr-c\n  data-attr-d\n  data-attr-e\n  preserve-attr-a\n  not-preserve-attr-a\n/>\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/cdata/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div>\");\n  out.w(\"Here is a CDATA section: \");\n  out.w(\"<![CDATA[ < > & ]]>\");\n  out.w(\" with all kinds of unescaped text.\");\n  out.w(\"</div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/cdata/snapshots/generated-expected.marko",
    "content": "<div>\n  Here is a CDATA section: \n  <![CDATA[ < > & ]]>\n   with all kinds of unescaped text.\n</div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/cdata/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div>\");\n  out.w(\"Here is a CDATA section: \");\n  out.w(\"<![CDATA[ < > & ]]>\");\n  out.w(\" with all kinds of unescaped text.\");\n  out.w(\"</div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/cdata/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"AIc0I$k\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div>Here is a CDATA section: <![CDATA[ < > & ]]> with all kinds of unescaped text.</div>\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/cdata/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/cdata/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.be(\"div\", null, \"0\", _component, null, 0);\n  out.t(\"Here is a CDATA section: \", _component);\n  out.t(\" < > & \");\n  out.t(\" with all kinds of unescaped text.\", _component);\n  out.ee();\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/cdata/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"AIc0I$k\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.be(\"div\", null, \"0\", _component, null, 0);\n  out.t(\"Here is a CDATA section: \", _component);\n  out.t(\" < > & \");\n  out.t(\" with all kinds of unescaped text.\", _component);\n  out.ee();\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/cdata/template.marko",
    "content": "<div>Here is a CDATA section: <![CDATA[ < > & ]]> with all kinds of unescaped text.</div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/class-external-component/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _templateComponent = _interopRequireDefault(require(\"./template.component.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component2 = _templateComponent.default;\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div></div>\");\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component2);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/class-external-component/snapshots/generated-expected.marko",
    "content": "<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/class-external-component/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_component from \"./template.component.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component2 = _marko_component;\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div></div>\");\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component2);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/class-external-component/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"YYUWtNt\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_component from \"./template.component.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component2 = _marko_component;\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div></div>\");\n}, {\n  t: _marko_componentType\n}, _marko_component2);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/class-external-component/snapshots/hydrate-expected.js",
    "content": "import { init } from \"marko/src/runtime/components/index.js\";\nimport \"./template.marko\";\ninit();"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/class-external-component/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_component from \"./template.component.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component2 = _marko_component;\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.e(\"div\", null, \"0\", _component, 0, 0);\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component2);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component2, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/class-external-component/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"YYUWtNt\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_constElement from \"marko/dist/runtime/vdom/helpers/const-element.js\";\nconst _marko_node = _marko_constElement(\"div\", null, 0);\nimport _marko_component from \"./template.component.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component2 = _marko_component;\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.n(_marko_node, _component);\n}, {\n  t: _marko_componentType\n}, _marko_component2);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component2, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/class-external-component/template.component.js",
    "content": "module.exports = {\n  onCreate() {\n    this.state = { count: 0 };\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/class-external-component/template.marko",
    "content": "<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/class-external-component-index/component.js",
    "content": "module.exports = {\n  onCreate() {\n    this.state = { count: 0 };\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/class-external-component-index/index.marko",
    "content": "<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/class-external-component-index/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _component2 = _interopRequireDefault(require(\"./component.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/index.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component2 = _component2.default;\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div></div>\");\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component2);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/class-external-component-index/snapshots/generated-expected.marko",
    "content": "<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/class-external-component-index/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/index.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_component from \"./component.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component2 = _marko_component;\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div></div>\");\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component2);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/class-external-component-index/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"LUG0Acn\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_component from \"./component.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component2 = _marko_component;\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div></div>\");\n}, {\n  t: _marko_componentType\n}, _marko_component2);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/class-external-component-index/snapshots/hydrate-expected.js",
    "content": "import { init } from \"marko/src/runtime/components/index.js\";\nimport \"./index.marko\";\ninit();"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/class-external-component-index/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/index.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_component from \"./component.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component2 = _marko_component;\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.e(\"div\", null, \"0\", _component, 0, 0);\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component2);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component2, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/class-external-component-index/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"LUG0Acn\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_constElement from \"marko/dist/runtime/vdom/helpers/const-element.js\";\nconst _marko_node = _marko_constElement(\"div\", null, 0);\nimport _marko_component from \"./component.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component2 = _marko_component;\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.n(_marko_node, _component);\n}, {\n  t: _marko_componentType\n}, _marko_component2);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component2, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/class-external-component-index/test.js",
    "content": "module.exports = {\n  templateFile: \"index.marko\",\n};\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/class-inline/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {\n  onCreate() {\n    this.x = 1\n    this.y = 2\n    this.stuff();\n  }\n};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div></div>\");\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/class-inline/snapshots/generated-expected.marko",
    "content": "class {\n  x = 1;\n  y = 2;\n  onCreate() {\n    this.stuff();\n  }\n}\n<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/class-inline/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {\n  onCreate() {\n    this.x = 1\n    this.y = 2\n    this.stuff();\n  }\n};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div></div>\");\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/class-inline/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"zO0_Zge\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {\n  onCreate() {\n    this.x = 1\n    this.y = 2\n    this.stuff();\n  }\n};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div></div>\");\n}, {\n  t: _marko_componentType\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/class-inline/snapshots/hydrate-expected.js",
    "content": "import { init } from \"marko/src/runtime/components/index.js\";\nimport \"./template.marko\";\ninit();"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/class-inline/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {\n  onCreate() {\n    this.x = 1\n    this.y = 2\n    this.stuff();\n  }\n};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.e(\"div\", null, \"0\", _component, 0, 0);\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/class-inline/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"zO0_Zge\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_constElement from \"marko/dist/runtime/vdom/helpers/const-element.js\";\nconst _marko_node = _marko_constElement(\"div\", null, 0);\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {\n  onCreate() {\n    this.x = 1\n    this.y = 2\n    this.stuff();\n  }\n};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.n(_marko_node, _component);\n}, {\n  t: _marko_componentType\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/class-inline/template.marko",
    "content": "class {\n  x = 1;\n  y = 2;\n  onCreate() {\n    this.stuff();\n  }\n}\n\n<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/class-inline-class-props-without-on-create/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {\n  onCreate() {\n    this.x = 1\n    this.y = 2\n  }\n};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div></div>\");\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/class-inline-class-props-without-on-create/snapshots/generated-expected.marko",
    "content": "class {\n  x = 1;\n  y = 2;\n}\n<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/class-inline-class-props-without-on-create/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {\n  onCreate() {\n    this.x = 1\n    this.y = 2\n  }\n};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div></div>\");\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/class-inline-class-props-without-on-create/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"QtVfm54\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {\n  onCreate() {\n    this.x = 1\n    this.y = 2\n  }\n};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div></div>\");\n}, {\n  t: _marko_componentType\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/class-inline-class-props-without-on-create/snapshots/hydrate-expected.js",
    "content": "import { init } from \"marko/src/runtime/components/index.js\";\nimport \"./template.marko\";\ninit();"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/class-inline-class-props-without-on-create/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {\n  onCreate() {\n    this.x = 1\n    this.y = 2\n  }\n};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.e(\"div\", null, \"0\", _component, 0, 0);\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/class-inline-class-props-without-on-create/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"QtVfm54\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_constElement from \"marko/dist/runtime/vdom/helpers/const-element.js\";\nconst _marko_node = _marko_constElement(\"div\", null, 0);\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {\n  onCreate() {\n    this.x = 1\n    this.y = 2\n  }\n};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.n(_marko_node, _component);\n}, {\n  t: _marko_componentType\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/class-inline-class-props-without-on-create/template.marko",
    "content": "class {\n  x = 1;\n  y = 2;\n}\n\n<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/client-import-hydrate-include/bar.js",
    "content": "module.exports.f = \"bar\";\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/client-import-hydrate-include/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/client-import-hydrate-include/snapshots/generated-expected.marko",
    "content": "client import \"./bar\";"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/client-import-hydrate-include/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/client-import-hydrate-include/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"cCJS9Fd\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/client-import-hydrate-include/snapshots/hydrate-expected.js",
    "content": "import \"./bar\";"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/client-import-hydrate-include/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport \"./bar\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/client-import-hydrate-include/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"cCJS9Fd\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport \"./bar\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/client-import-hydrate-include/template.marko",
    "content": "client import \"./bar\";\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/comments/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div>\");\n  out.w(\"<!--\");\n  out.w(\"abc\");\n  out.w(\"-->\");\n  out.w(\"<!--[if lt IE 9]><script src=\\\"...\\\"></script><![endif]-->\");\n  out.w(\"<!--\");\n  out.w(\"[if lt IE 9]><script src=\\\"...\\\"></script><![endif]\");\n  out.w(\"-->\");\n  out.w(\"</div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/comments/snapshots/generated-expected.marko",
    "content": "<div>\n  <!--123-->\n  <html-comment>\n    abc\n  </html-comment>\n  <!--[if lt IE 9]><script src=\"...\"></script><![endif]-->\n  <html-comment>\n    [if lt IE 9]><script src=\"...\"></script><![endif]\n  </html-comment>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/comments/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div>\");\n  out.w(\"<!--\");\n  out.w(\"abc\");\n  out.w(\"-->\");\n  out.w(\"<!--[if lt IE 9]><script src=\\\"...\\\"></script><![endif]-->\");\n  out.w(\"<!--\");\n  out.w(\"[if lt IE 9]><script src=\\\"...\\\"></script><![endif]\");\n  out.w(\"-->\");\n  out.w(\"</div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/comments/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"hqdAT1v\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div><!--abc--><!--[if lt IE 9]><script src=\\\"...\\\"></script><![endif]--><!--[if lt IE 9]><script src=\\\"...\\\"></script><![endif]--></div>\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/comments/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/comments/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.be(\"div\", null, \"0\", _component, null, 0);\n  out.comment(\"abc\", _component);\n  out.comment(\"[if lt IE 9]><script src=\\\"...\\\"></script><![endif]\", _component);\n  out.ee();\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/comments/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"hqdAT1v\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.be(\"div\", null, \"0\", _component, null, 0);\n  out.comment(\"abc\", _component);\n  out.comment(\"[if lt IE 9]><script src=\\\"...\\\"></script><![endif]\", _component);\n  out.ee();\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/comments/template.marko",
    "content": "<div>\n  <!--123-->\n  <html-comment>abc</html-comment>\n  <!--[if lt IE 9]><script src=\"...\"></script><![endif]-->\n  <html-comment>[if lt IE 9]><script src=\"...\"></script><![endif]</html-comment>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-element-tag/components/hello/index.marko",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-element-tag/components/hello/init.js",
    "content": "console.log(\"loaded\");\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-element-tag/components/hello/marko-tag.json",
    "content": "{\n  \"html\": true,\n  \"htmlType\": \"custom-element\",\n  \"parseOptions\": {\n    \"import\": \"./init.js\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-element-tag/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<hello></hello>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-element-tag/snapshots/generated-expected.marko",
    "content": "<hello/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-element-tag/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<hello></hello>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-element-tag/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"B8uj1bO\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<hello></hello>\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-element-tag/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-element-tag/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.e(\"hello\", null, \"0\", _component, 0, 2);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-element-tag/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"B8uj1bO\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_constElement from \"marko/dist/runtime/vdom/helpers/const-element.js\";\nconst _marko_node = _marko_constElement(\"hello\", null, 0);\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.n(_marko_node, _component);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-element-tag/template.marko",
    "content": "<hello/>\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag/marko.json",
    "content": "{\n  \"tags-dir\": \"./tags\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _renderer = _interopRequireDefault(require(\"./tags/test-hello/renderer.js\"));\nvar _renderTag = _interopRequireDefault(require(\"marko/src/runtime/helpers/render-tag.js\"));\nvar _renderer2 = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer2.default)(function (input, out, _componentDef, _component, state, $global) {\n  (0, _renderTag.default)(_renderer.default, {\n    \"name\": \"World\"\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag/snapshots/generated-expected.marko",
    "content": "<test-hello name=\"World\"/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _testHello from \"./tags/test-hello/renderer.js\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_testHello, {\n    \"name\": \"World\"\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"ine_5Bi\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _testHello from \"./tags/test-hello/renderer.js\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_testHello, {\n    \"name\": \"World\"\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _testHello from \"./tags/test-hello/renderer.js\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_testHello, {\n    \"name\": \"World\"\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"ine_5Bi\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _testHello from \"./tags/test-hello/renderer.js\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_testHello, {\n    \"name\": \"World\"\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag/tags/test-hello/marko-tag.json",
    "content": "{\n  \"renderer\": \"./renderer.js\",\n  \"@name\": \"string\",\n  \"@adult\": \"boolean\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag/tags/test-hello/renderer.js",
    "content": "exports.render = function (input, out) {\n  out.write(\"Hello \" + input.name + \"!\");\n  if (input.adult === true) {\n    out.write(\" (adult)\");\n  } else if (input.adult === false) {\n    out.write(\" (child)\");\n  }\n\n  if (input.renderBody) {\n    out.write(\" BODY: \");\n    input.renderBody(out);\n  }\n};\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag/template.marko",
    "content": "<test-hello name=\"World\"/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-child-analyze/components/hello/index.marko",
    "content": "-- Hello\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-child-analyze/components/hello/marko-tag.json",
    "content": "{\n  \"template\": \"./index.marko\",\n  \"transformer\": \"./transformer.js\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-child-analyze/components/hello/transformer.js",
    "content": "const { loadFileForTag } = require(\"@marko/compiler/babel-utils\");\n\nmodule.exports = (helloTag, t) => {\n  const messageTag = helloTag.getNextSibling();\n  helloTag.insertAfter(\n    t.markoText(`${readFileText(helloTag)} ${readFileText(messageTag)}`),\n  );\n  helloTag.remove();\n  messageTag.remove();\n};\n\nfunction readFileText(tag) {\n  const file = loadFileForTag(tag);\n  return file.path.get(\"body.0.value\").node;\n}\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-child-analyze/components/message.marko",
    "content": "-- Frank\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-child-analyze/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"Hello Frank\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-child-analyze/snapshots/generated-expected.marko",
    "content": "<hello/>\n<message/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-child-analyze/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"Hello Frank\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-child-analyze/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"NHfoU3s\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"Hello Frank\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-child-analyze/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-child-analyze/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.t(\"Hello Frank\", _component);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-child-analyze/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"NHfoU3s\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.t(\"Hello Frank\", _component);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-child-analyze/template.marko",
    "content": "<hello/>\n<message/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-data/custom-tag-data-tag.js",
    "content": "module.exports = function () {};\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-data/marko.json",
    "content": "{\n  \"<custom-tag-data>\": {\n    \"renderer\": \"./custom-tag-data-tag.js\",\n    \"@name\": \"string\",\n    \"@age\": \"integer\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-data/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _customTagDataTag = _interopRequireDefault(require(\"./custom-tag-data-tag.js\"));\nvar _renderTag = _interopRequireDefault(require(\"marko/src/runtime/helpers/render-tag.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  (0, _renderTag.default)(_customTagDataTag.default, {\n    \"name\": \"Frank\".toUpperCase(),\n    \"age\": 32\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-data/snapshots/generated-expected.marko",
    "content": "<custom-tag-data name=\"Frank\".toUpperCase() age=32/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-data/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _customTagData from \"./custom-tag-data-tag.js\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_customTagData, {\n    \"name\": \"Frank\".toUpperCase(),\n    \"age\": 32\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-data/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"GJfYwt0\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _customTagData from \"./custom-tag-data-tag.js\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_customTagData, {\n    \"name\": \"Frank\".toUpperCase(),\n    \"age\": 32\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-data/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-data/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _customTagData from \"./custom-tag-data-tag.js\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_customTagData, {\n    \"name\": \"Frank\".toUpperCase(),\n    \"age\": 32\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-data/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"GJfYwt0\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _customTagData from \"./custom-tag-data-tag.js\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_customTagData, {\n    \"name\": \"Frank\".toUpperCase(),\n    \"age\": 32\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-data/template.marko",
    "content": "<custom-tag-data name=(\"Frank\".toUpperCase()) age=32/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-migration/marko.json",
    "content": "{\n  \"<new>\": {\n    \"template\": \"./new.marko\"\n  },\n  \"<old>\": {\n    \"migrator\": \"./old.migrator.js\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-migration/new.marko",
    "content": "-- Hello ${input.name}!"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-migration/old.migrator.js",
    "content": "import { types as t } from \"@marko/compiler\";\n\nexport function enter(path) {\n  const oldAttr = path\n    .get(\"attributes\")\n    .find((attrPath) => attrPath.get(\"name\").node === \"a\");\n\n  if (oldAttr) {\n    oldAttr.replaceWith(t.markoAttribute(\"b\", oldAttr.get(\"value\").node));\n  }\n}\n\nexport function exit(path) {\n  path.replaceWith(\n    t.markoTag(\n      t.stringLiteral(\"new\"),\n      path.get(\"attributes\").map((p) => p.node),\n      t.markoTagBody(\n        path.get(\"body.body\").map((p) => p.node),\n        toNodes(path.get(\"params\")),\n      ),\n      toNodes(path.get(\"arguments\")),\n    ),\n  );\n}\n\nfunction toNodes(nodePaths) {\n  return nodePaths.length ? nodePaths.map((p) => p.node) : undefined;\n}\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-migration/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _new2 = _interopRequireDefault(require(\"./new.marko\"));\nvar _renderTag = _interopRequireDefault(require(\"marko/src/runtime/helpers/render-tag.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  (0, _renderTag.default)(_new2.default, {\n    \"b\": \"1\"\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-migration/snapshots/generated-expected.marko",
    "content": "<new b=\"1\"/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-migration/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _new from \"./new.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_new, {\n    \"b\": \"1\"\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-migration/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"c09sKAi\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _new from \"./new.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_new, {\n    \"b\": \"1\"\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-migration/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-migration/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _new from \"./new.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_new, {\n    \"b\": \"1\"\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-migration/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"c09sKAi\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _new from \"./new.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_new, {\n    \"b\": \"1\"\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-migration/template.marko",
    "content": "<old a=\"1\"/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-parameters/components/custom-tag.marko",
    "content": "<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-parameters/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _escapeXml = require(\"marko/src/runtime/html/helpers/escape-xml.js\");\nvar _customTag2 = _interopRequireDefault(require(\"./components/custom-tag.marko\"));\nvar _renderTag = _interopRequireDefault(require(\"marko/src/runtime/helpers/render-tag.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  (0, _renderTag.default)(_customTag2.default, {\n    \"renderBody\": (out, a, b, {\n      c\n    }) => {\n      out.w(\"<div>\");\n      out.w((0, _escapeXml.x)(a));\n      out.w(\" \");\n      out.w((0, _escapeXml.x)(b));\n      out.w(\" \");\n      out.w((0, _escapeXml.x)(c));\n      out.w(\"</div>\");\n    }\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-parameters/snapshots/generated-expected.marko",
    "content": "<custom-tag|a, b, {\n  c\n}|>\n  <div>\n    ${a} ${b} ${c}\n  </div>\n</custom-tag>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-parameters/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { x as _marko_escapeXml } from \"marko/src/runtime/html/helpers/escape-xml.js\";\nimport _customTag from \"./components/custom-tag.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_customTag, {\n    \"renderBody\": (out, a, b, {\n      c\n    }) => {\n      out.w(\"<div>\");\n      out.w(_marko_escapeXml(a));\n      out.w(\" \");\n      out.w(_marko_escapeXml(b));\n      out.w(\" \");\n      out.w(_marko_escapeXml(c));\n      out.w(\"</div>\");\n    }\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-parameters/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"OIu1Dwv\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { x as _marko_escapeXml } from \"marko/dist/runtime/html/helpers/escape-xml.js\";\nimport _customTag from \"./components/custom-tag.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_customTag, {\n    \"renderBody\": (out, a, b, {\n      c\n    }) => {\n      out.w(`<div>${_marko_escapeXml(a)} ${_marko_escapeXml(b)} ${_marko_escapeXml(c)}</div>`);\n    }\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-parameters/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-parameters/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _customTag from \"./components/custom-tag.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_customTag, {\n    \"renderBody\": (out, a, b, {\n      c\n    }) => {\n      out.be(\"div\", null, \"1\", _component, null, 0);\n      out.t(a, _component);\n      out.t(\" \", _component);\n      out.t(b, _component);\n      out.t(\" \", _component);\n      out.t(c, _component);\n      out.ee();\n    }\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-parameters/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"OIu1Dwv\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _customTag from \"./components/custom-tag.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_customTag, {\n    \"renderBody\": (out, a, b, {\n      c\n    }) => {\n      out.be(\"div\", null, \"1\", _component, null, 0);\n      out.t(a, _component);\n      out.t(\" \", _component);\n      out.t(b, _component);\n      out.t(\" \", _component);\n      out.t(c, _component);\n      out.ee();\n    }\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-parameters/template.marko",
    "content": "<custom-tag|a, b, { c }|>\n  <div>${a} ${b} ${c}</div>\n</custom-tag>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-render-body/marko.json",
    "content": "{\n  \"tags-dir\": \"./tags\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-render-body/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _renderer = _interopRequireDefault(require(\"./tags/test-body-function/renderer.js\"));\nvar _renderTag = _interopRequireDefault(require(\"marko/src/runtime/helpers/render-tag.js\"));\nvar _renderer2 = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer2.default)(function (input, out, _componentDef, _component, state, $global) {\n  (0, _renderTag.default)(_renderer.default, {\n    \"name\": \"World\",\n    \"renderBody\": out => {\n      out.w(\"This is the body content\");\n    }\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-render-body/snapshots/generated-expected.marko",
    "content": "<test-body-function name=\"World\">\n  This is the body content\n</test-body-function>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-render-body/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _testBodyFunction from \"./tags/test-body-function/renderer.js\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_testBodyFunction, {\n    \"name\": \"World\",\n    \"renderBody\": out => {\n      out.w(\"This is the body content\");\n    }\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-render-body/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"jdN51oR\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _testBodyFunction from \"./tags/test-body-function/renderer.js\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_testBodyFunction, {\n    \"name\": \"World\",\n    \"renderBody\": out => {\n      out.w(\"This is the body content\");\n    }\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-render-body/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-render-body/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _testBodyFunction from \"./tags/test-body-function/renderer.js\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_testBodyFunction, {\n    \"name\": \"World\",\n    \"renderBody\": out => {\n      out.t(\"This is the body content\", _component);\n    }\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-render-body/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"jdN51oR\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _testBodyFunction from \"./tags/test-body-function/renderer.js\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_testBodyFunction, {\n    \"name\": \"World\",\n    \"renderBody\": out => {\n      out.t(\"This is the body content\", _component);\n    }\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-render-body/tags/test-body-function/marko-tag.json",
    "content": "{\n  \"renderer\": \"./renderer\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-render-body/tags/test-body-function/renderer.js",
    "content": "module.exports = function () {};\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-render-body/template.marko",
    "content": "<test-body-function name=\"World\">\n    This is the body content\n</test-body-function>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-separate-assets/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _templateComponent = _interopRequireDefault(require(\"./template.component.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component2 = _templateComponent.default;\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div></div>\");\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component2);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-separate-assets/snapshots/generated-expected.marko",
    "content": "<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-separate-assets/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_component from \"./template.component.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component2 = _marko_component;\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div></div>\");\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component2);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-separate-assets/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"qSkLj9X\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_component from \"./template.component.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component2 = _marko_component;\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div></div>\");\n}, {\n  t: _marko_componentType\n}, _marko_component2);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-separate-assets/snapshots/hydrate-expected.js",
    "content": "import { init } from \"marko/src/runtime/components/index.js\";\nimport \"./template.marko\";\ninit();"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-separate-assets/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_component from \"./template.component.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component2 = _marko_component;\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.e(\"div\", null, \"0\", _component, 0, 0);\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component2);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component2, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-separate-assets/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"qSkLj9X\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_constElement from \"marko/dist/runtime/vdom/helpers/const-element.js\";\nconst _marko_node = _marko_constElement(\"div\", null, 0);\nimport _marko_component from \"./template.component.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component2 = _marko_component;\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.n(_marko_node, _component);\n}, {\n  t: _marko_componentType\n}, _marko_component2);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component2, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-separate-assets/template.browser.json",
    "content": "{\n  \"dependencies\": [\"jakeweary\"]\n}\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-separate-assets/template.component.js",
    "content": "module.exports = {\n  onCreate() {},\n};\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-separate-assets/template.marko",
    "content": "<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-separate-assets/template.style.css",
    "content": "div {\n  color: green;\n}\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-template/hello.marko",
    "content": "-- Hello ${input.name}!"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-template/marko.json",
    "content": "{\n  \"<hello>\": {\n    \"template\": \"./hello.marko\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-template/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _hello2 = _interopRequireDefault(require(\"./hello.marko\"));\nvar _renderTag = _interopRequireDefault(require(\"marko/src/runtime/helpers/render-tag.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  (0, _renderTag.default)(_hello2.default, {\n    \"name\": \"Frank\"\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-template/snapshots/generated-expected.marko",
    "content": "<hello name=\"Frank\"/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-template/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _hello from \"./hello.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_hello, {\n    \"name\": \"Frank\"\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-template/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"DC5Aezb\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _hello from \"./hello.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_hello, {\n    \"name\": \"Frank\"\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-template/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-template/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _hello from \"./hello.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_hello, {\n    \"name\": \"Frank\"\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-template/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"DC5Aezb\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _hello from \"./hello.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_hello, {\n    \"name\": \"Frank\"\n  }, out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-template/template.marko",
    "content": "<hello name=\"Frank\"/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-transform/div.transformer.js",
    "content": "import { types as t } from \"@marko/compiler\";\n\nexport function enter(path) {\n  path.pushContainer(\n    \"attributes\",\n    t.markoAttribute(\"style\", t.stringLiteral(\"display:block\")),\n  );\n}\n\nexport function exit(path) {\n  path.replaceWith(\n    t.markoTag(\n      t.stringLiteral(\"span\"),\n      path.get(\"attributes\").map((p) => p.node),\n      t.markoTagBody(\n        path.get(\"body.body\").map((p) => p.node),\n        toNodes(path.get(\"params\")),\n      ),\n      toNodes(path.get(\"arguments\")),\n    ),\n  );\n}\n\nfunction toNodes(nodePaths) {\n  return nodePaths.length ? nodePaths.map((p) => p.node) : undefined;\n}\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-transform/marko.json",
    "content": "{\n  \"<div>\": {\n    \"transformer\": \"./div.transformer.js\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-transform/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<span style=display:block></span>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-transform/snapshots/generated-expected.marko",
    "content": "<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-transform/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<span style=display:block></span>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-transform/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"Ew_gTpU\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<span style=display:block></span>\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-transform/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-transform/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.e(\"span\", {\n    \"style\": \"display:block\"\n  }, \"0\", _component, 0, 1);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-transform/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"Ew_gTpU\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_constElement from \"marko/dist/runtime/vdom/helpers/const-element.js\";\nconst _marko_node = _marko_constElement(\"span\", {\n  \"style\": \"display:block\"\n}, 0);\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.n(_marko_node, _component);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/custom-tag-transform/template.marko",
    "content": "<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/data-marko-implicit-component/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _escapeXml = require(\"marko/src/runtime/html/helpers/escape-xml.js\");\nvar _dataMarko = _interopRequireDefault(require(\"marko/src/runtime/html/helpers/data-marko.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`<div${(0, _dataMarko.default)(out, _componentDef, {\n    pa: {\n      \"class\": 1\n    }\n  })} class=test>`);\n  out.w(\"Hello \");\n  out.w((0, _escapeXml.x)(input.name));\n  out.w(\"</div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/data-marko-implicit-component/snapshots/generated-expected.marko",
    "content": "<div class:no-update=\"test\">\n  Hello ${input.name}\n</div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/data-marko-implicit-component/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { x as _marko_escapeXml } from \"marko/src/runtime/html/helpers/escape-xml.js\";\nimport _marko_props from \"marko/src/runtime/html/helpers/data-marko.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`<div${_marko_props(out, _componentDef, {\n    pa: {\n      \"class\": 1\n    }\n  })} class=test>`);\n  out.w(\"Hello \");\n  out.w(_marko_escapeXml(input.name));\n  out.w(\"</div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/data-marko-implicit-component/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"KfZtauV\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { x as _marko_escapeXml } from \"marko/dist/runtime/html/helpers/escape-xml.js\";\nimport _marko_props from \"marko/dist/runtime/html/helpers/data-marko.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`<div${_marko_props(out, _componentDef, {\n    pa: {\n      \"class\": 1\n    }\n  })} class=test>Hello ${_marko_escapeXml(input.name)}</div>`);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/data-marko-implicit-component/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/data-marko-implicit-component/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.be(\"div\", {\n    \"class\": \"test\"\n  }, \"0\", _component, null, 0, {\n    pa: {\n      \"class\": 1\n    }\n  });\n  out.t(\"Hello \", _component);\n  out.t(input.name, _component);\n  out.ee();\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/data-marko-implicit-component/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"KfZtauV\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.be(\"div\", {\n    \"class\": \"test\"\n  }, \"0\", _component, null, 0, {\n    pa: {\n      \"class\": 1\n    }\n  });\n  out.t(\"Hello \", _component);\n  out.t(input.name, _component);\n  out.ee();\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/data-marko-implicit-component/template.marko",
    "content": "<div class:no-update=\"test\">\n  Hello ${input.name}\n</div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/data-migration/foo.marko",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/data-migration/marko.json",
    "content": "{\n  \"<foo>\": {\n    \"template\": \"./foo.marko\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/data-migration/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _escapeXml = require(\"marko/src/runtime/html/helpers/escape-xml.js\");\nvar _foo2 = _interopRequireDefault(require(\"./foo.marko\"));\nvar _renderTag = _interopRequireDefault(require(\"marko/src/runtime/helpers/render-tag.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  (0, _renderTag.default)(_foo2.default, {\n    \"class\": input.class,\n    \"renderBody\": (out, data) => {\n      out.w(\"Hello \");\n      out.w((0, _escapeXml.x)(data.name));\n    }\n  }, out, _componentDef, \"0\");\n  out.w(\"<div>\");\n  out.w(\"Hello \");\n  out.w((0, _escapeXml.x)(input.name));\n  out.w(\"<span>\");\n  () => {\n    data;\n    const data = \"foo\";\n    console.log(data);\n  };\n  out.w(\"Hello \");\n  out.w((0, _escapeXml.x)(input));\n  out.w(\"</span>\");\n  if (true) {\n    const data = \"bar\";\n    out.w(\"Hello \");\n    out.w((0, _escapeXml.x)(data));\n  }\n  out.w(\"</div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/data-migration/snapshots/generated-expected.diagnostics.txt",
    "content": "deprecation[fixable](1:18-1:22): The 'data' variable is deprecated. Use 'input' instead.\ndeprecation[fixable](5:11-5:15): The 'data' variable is deprecated. Use 'input' instead.\ndeprecation[fixable](8:13-8:17): The 'data' variable is deprecated. Use 'input' instead.\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/data-migration/snapshots/generated-expected.marko",
    "content": "<foo|data| class=input.class>\n  Hello ${data.name}\n</foo>\n<div>\n  Hello ${input.name}\n  <span>\n    $ () => {\n      data;\n      const data = \"foo\";\n      console.log(data);\n    };\n    Hello ${input}\n  </span>\n  <if(true)>\n    $ const data = \"bar\";\n    Hello ${data}\n  </if>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/data-migration/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { x as _marko_escapeXml } from \"marko/src/runtime/html/helpers/escape-xml.js\";\nimport _foo from \"./foo.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_foo, {\n    \"class\": input.class,\n    \"renderBody\": (out, data) => {\n      out.w(\"Hello \");\n      out.w(_marko_escapeXml(data.name));\n    }\n  }, out, _componentDef, \"0\");\n  out.w(\"<div>\");\n  out.w(\"Hello \");\n  out.w(_marko_escapeXml(input.name));\n  out.w(\"<span>\");\n  () => {\n    data;\n    const data = \"foo\";\n    console.log(data);\n  };\n  out.w(\"Hello \");\n  out.w(_marko_escapeXml(input));\n  out.w(\"</span>\");\n  if (true) {\n    const data = \"bar\";\n    out.w(\"Hello \");\n    out.w(_marko_escapeXml(data));\n  }\n  out.w(\"</div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/data-migration/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"LiNlLXh\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { x as _marko_escapeXml } from \"marko/dist/runtime/html/helpers/escape-xml.js\";\nimport _foo from \"./foo.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_foo, {\n    \"class\": input.class,\n    \"renderBody\": (out, data) => {\n      out.w(`Hello ${_marko_escapeXml(data.name)}`);\n    }\n  }, out, _componentDef, \"0\");\n  out.w(`<div>Hello ${_marko_escapeXml(input.name)}<span>`);\n  () => {\n    data;\n    const data = \"foo\";\n    console.log(data);\n  };\n  out.w(`Hello ${_marko_escapeXml(input)}</span>`);\n  if (true) {\n    const data = \"bar\";\n    out.w(`Hello ${_marko_escapeXml(data)}`);\n  }\n  out.w(\"</div>\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/data-migration/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/data-migration/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _foo from \"./foo.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_foo, {\n    \"class\": input.class,\n    \"renderBody\": (out, data) => {\n      out.t(\"Hello \", _component);\n      out.t(data.name, _component);\n    }\n  }, out, _componentDef, \"0\");\n  out.be(\"div\", null, \"1\", _component, null, 0);\n  out.t(\"Hello \", _component);\n  out.t(input.name, _component);\n  out.be(\"span\", null, \"2\", _component, null, 0);\n  () => {\n    data;\n    const data = \"foo\";\n    console.log(data);\n  };\n  out.t(\"Hello \", _component);\n  out.t(input, _component);\n  out.ee();\n  if (true) {\n    const data = \"bar\";\n    out.t(\"Hello \", _component);\n    out.t(data, _component);\n  }\n  out.ee();\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/data-migration/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"LiNlLXh\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _foo from \"./foo.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_foo, {\n    \"class\": input.class,\n    \"renderBody\": (out, data) => {\n      out.t(\"Hello \", _component);\n      out.t(data.name, _component);\n    }\n  }, out, _componentDef, \"0\");\n  out.be(\"div\", null, \"1\", _component, null, 0);\n  out.t(\"Hello \", _component);\n  out.t(input.name, _component);\n  out.be(\"span\", null, \"2\", _component, null, 0);\n  () => {\n    data;\n    const data = \"foo\";\n    console.log(data);\n  };\n  out.t(\"Hello \", _component);\n  out.t(input, _component);\n  out.ee();\n  if (true) {\n    const data = \"bar\";\n    out.t(\"Hello \", _component);\n    out.t(data, _component);\n  }\n  out.ee();\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/data-migration/template.marko",
    "content": "<foo|data| class=data.class>\n  Hello ${data.name}\n</foo>\n<div>\n  Hello ${data.name}\n  <span>\n    $ () => { data; const data = \"foo\"; console.log(data); }\n    Hello ${data}\n  </span>\n  <if(true)>\n    $ const data = \"bar\";\n    Hello ${data}\n  </if>\n</div>\n\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/data-reassigned/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _escapeXml = require(\"marko/src/runtime/html/helpers/escape-xml.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  var data;\n  data = {\n    name: \"foo\"\n  };\n  out.w(\"<div>\");\n  out.w(\"Hello \");\n  out.w((0, _escapeXml.x)(data.name));\n  out.w(\"<span>\");\n  out.w(\"Hello \");\n  out.w((0, _escapeXml.x)(data));\n  out.w(\"</span>\");\n  out.w(\"</div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/data-reassigned/snapshots/generated-expected.marko",
    "content": "$ var data;\n$ data = {\n  name: \"foo\"\n};\n<div>\n  Hello ${data.name}\n  <span>\n    Hello ${data}\n  </span>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/data-reassigned/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { x as _marko_escapeXml } from \"marko/src/runtime/html/helpers/escape-xml.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  var data;\n  data = {\n    name: \"foo\"\n  };\n  out.w(\"<div>\");\n  out.w(\"Hello \");\n  out.w(_marko_escapeXml(data.name));\n  out.w(\"<span>\");\n  out.w(\"Hello \");\n  out.w(_marko_escapeXml(data));\n  out.w(\"</span>\");\n  out.w(\"</div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/data-reassigned/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"fj8sVqR\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { x as _marko_escapeXml } from \"marko/dist/runtime/html/helpers/escape-xml.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  var data;\n  data = {\n    name: \"foo\"\n  };\n  out.w(`<div>Hello ${_marko_escapeXml(data.name)}<span>Hello ${_marko_escapeXml(data)}</span></div>`);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/data-reassigned/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/data-reassigned/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  var data;\n  data = {\n    name: \"foo\"\n  };\n  out.be(\"div\", null, \"0\", _component, null, 0);\n  out.t(\"Hello \", _component);\n  out.t(data.name, _component);\n  out.be(\"span\", null, \"1\", _component, null, 0);\n  out.t(\"Hello \", _component);\n  out.t(data, _component);\n  out.ee();\n  out.ee();\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/data-reassigned/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"fj8sVqR\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  var data;\n  data = {\n    name: \"foo\"\n  };\n  out.be(\"div\", null, \"0\", _component, null, 0);\n  out.t(\"Hello \", _component);\n  out.t(data.name, _component);\n  out.be(\"span\", null, \"1\", _component, null, 0);\n  out.t(\"Hello \", _component);\n  out.t(data, _component);\n  out.ee();\n  out.ee();\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/data-reassigned/template.marko",
    "content": "$ data = { name: \"foo\" };\n<div>\n  Hello ${data.name}\n  <span>\n    Hello ${data}\n  </span>\n</div>\n\n\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/data-structure/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _attrTag = require(\"marko/src/runtime/helpers/attr-tag.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/core-tags/core/await/renderer.js\"));\nvar _renderTag = _interopRequireDefault(require(\"marko/src/runtime/helpers/render-tag.js\"));\nvar _renderer2 = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer2.default)(function (input, out, _componentDef, _component, state, $global) {\n  (0, _renderTag.default)(_renderer.default, (0, _attrTag.i)(() => {\n    (0, _attrTag.a)(\"then\", {\n      \"renderBody\": (out, {\n        data\n      }) => {\n        console.log(data);\n      }\n    });\n  }, {\n    \"_provider\": Promise.resolve({\n      data: true\n    }),\n    \"_name\": \"Promise.resolve({\\n  data: true\\n})\"\n  }), out, _componentDef, \"0\");\n  console.log(input);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/data-structure/snapshots/generated-expected.diagnostics.txt",
    "content": "deprecation[fixable](7:15-7:19): The 'data' variable is deprecated. Use 'input' instead.\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/data-structure/snapshots/generated-expected.marko",
    "content": "<await(Promise.resolve({\n  data: true\n}))>\n  <@then|{\n    data\n  }|>\n    $ console.log(data);\n  </@then>\n</await>\n$ console.log(input);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/data-structure/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/src/runtime/helpers/attr-tag.js\";\nimport _await from \"marko/src/core-tags/core/await/renderer.js\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_await, _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"then\", {\n      \"renderBody\": (out, {\n        data\n      }) => {\n        console.log(data);\n      }\n    });\n  }, {\n    \"_provider\": Promise.resolve({\n      data: true\n    }),\n    \"_name\": \"Promise.resolve({\\n  data: true\\n})\"\n  }), out, _componentDef, \"0\");\n  console.log(input);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/data-structure/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"RR8pDdJ\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/dist/runtime/helpers/attr-tag.js\";\nimport _await from \"marko/dist/core-tags/core/await/renderer.js\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_await, _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"then\", {\n      \"renderBody\": (out, {\n        data\n      }) => {\n        console.log(data);\n      }\n    });\n  }, {\n    \"_provider\": Promise.resolve({\n      data: true\n    }),\n    \"_name\": \"Promise.resolve({\\n  data: true\\n})\"\n  }), out, _componentDef, \"0\");\n  console.log(input);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/data-structure/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/data-structure/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/src/runtime/helpers/attr-tag.js\";\nimport _await from \"marko/src/core-tags/core/await/renderer.js\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_await, _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"then\", {\n      \"renderBody\": (out, {\n        data\n      }) => {\n        console.log(data);\n      }\n    });\n  }, {\n    \"_provider\": Promise.resolve({\n      data: true\n    }),\n    \"_name\": \"Promise.resolve({\\n  data: true\\n})\"\n  }), out, _componentDef, \"0\");\n  console.log(input);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/data-structure/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"RR8pDdJ\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/dist/runtime/helpers/attr-tag.js\";\nimport _await from \"marko/dist/core-tags/core/await/renderer.js\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_await, _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"then\", {\n      \"renderBody\": (out, {\n        data\n      }) => {\n        console.log(data);\n      }\n    });\n  }, {\n    \"_provider\": Promise.resolve({\n      data: true\n    }),\n    \"_name\": \"Promise.resolve({\\n  data: true\\n})\"\n  }), out, _componentDef, \"0\");\n  console.log(input);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/data-structure/template.marko",
    "content": "<await(Promise.resolve({data: true}))>\n <@then|{data}|>\n  $ console.log(data)\n </@then>\n</await>\n\n$ console.log(data);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/declaration/marko.json",
    "content": "{\n  \"<contact-info>\": { \"html\": true },\n  \"<name>\": { \"html\": true }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/declaration/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?>\");\n  out.w(\"<contact-info>\");\n  out.w(\"<name>\");\n  out.w(\"Hello World\");\n  out.w(\"</name>\");\n  out.w(\"</contact-info>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/declaration/snapshots/generated-expected.marko",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<contact-info>\n  <name>\n    Hello World\n  </name>\n</contact-info>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/declaration/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?>\");\n  out.w(\"<contact-info>\");\n  out.w(\"<name>\");\n  out.w(\"Hello World\");\n  out.w(\"</name>\");\n  out.w(\"</contact-info>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/declaration/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"Q6l6TAR\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?><contact-info><name>Hello World</name></contact-info>\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/declaration/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/declaration/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.be(\"contact-info\", null, \"0\", _component, null, 0);\n  out.be(\"name\", null, \"1\", _component, null, 0);\n  out.t(\"Hello World\", _component);\n  out.ee();\n  out.ee();\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/declaration/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"Q6l6TAR\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_constElement from \"marko/dist/runtime/vdom/helpers/const-element.js\";\nconst _marko_node = _marko_constElement(\"contact-info\", null, 1).e(\"name\", null, 1).t(\"Hello World\");\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.n(_marko_node, _component);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/declaration/template.marko",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<contact-info>\n   <name>Hello World</name>\n</contact-info>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/declared-class-member/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nclass MyClass {\n  y = 2;\n}\nconst _marko_component = {\n  onCreate() {\n    this.y = 2\n  }\n};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/declared-class-member/snapshots/generated-expected.marko",
    "content": "class {\n  declare x: string;\n  y = 2;\n}\nstatic class MyClass {\n  declare x: string;\n  y = 2;\n}"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/declared-class-member/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nclass MyClass {\n  y = 2;\n}\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {\n  onCreate() {\n    this.y = 2\n  }\n};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/declared-class-member/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"R7scF4W\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nclass MyClass {\n  y = 2;\n}\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {\n  onCreate() {\n    this.y = 2\n  }\n};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/declared-class-member/snapshots/hydrate-expected.js",
    "content": "import { init } from \"marko/src/runtime/components/index.js\";\nimport \"./template.marko\";\ninit();"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/declared-class-member/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nclass MyClass {\n  y = 2;\n}\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {\n  onCreate() {\n    this.y = 2\n  }\n};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/declared-class-member/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"R7scF4W\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nclass MyClass {\n  y = 2;\n}\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {\n  onCreate() {\n    this.y = 2\n  }\n};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/declared-class-member/template.marko",
    "content": "class {\n  declare x: string;\n  y = 2;\n}\n\nstatic class MyClass {\n  declare x: string;\n  y = 2;\n}\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/doctype/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _initComponentsTag = _interopRequireDefault(require(\"marko/src/core-tags/components/init-components-tag.js\"));\nvar _renderTag = _interopRequireDefault(require(\"marko/src/runtime/helpers/render-tag.js\"));\nvar _reordererRenderer = _interopRequireDefault(require(\"marko/src/core-tags/core/await/reorderer-renderer.js\"));\nvar _preferredScriptLocationTag = _interopRequireDefault(require(\"marko/src/core-tags/components/preferred-script-location-tag.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<!DOCTYPE html>\");\n  out.w(\"<html>\");\n  out.w(\"<head>\");\n  out.w(\"<title>\");\n  out.w(\"Title of the document\");\n  out.w(\"</title>\");\n  out.w(\"</head>\");\n  out.w(\"<body>\");\n  out.w(\"The content of the document......\");\n  (0, _renderTag.default)(_initComponentsTag.default, {}, out, _componentDef, \"4\");\n  (0, _renderTag.default)(_reordererRenderer.default, {}, out, _componentDef, \"5\");\n  (0, _renderTag.default)(_preferredScriptLocationTag.default, {}, out, _componentDef, \"6\");\n  out.w(\"</body>\");\n  out.w(\"</html>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/doctype/snapshots/generated-expected.marko",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>\n      Title of the document\n    </title>\n  </head>\n  <body>\n    The content of the document......\n  </body>\n</html>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/doctype/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _initComponents from \"marko/src/core-tags/components/init-components-tag.js\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _awaitReorderer from \"marko/src/core-tags/core/await/reorderer-renderer.js\";\nimport _preferredScriptLocation from \"marko/src/core-tags/components/preferred-script-location-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<!DOCTYPE html>\");\n  out.w(\"<html>\");\n  out.w(\"<head>\");\n  out.w(\"<title>\");\n  out.w(\"Title of the document\");\n  out.w(\"</title>\");\n  out.w(\"</head>\");\n  out.w(\"<body>\");\n  out.w(\"The content of the document......\");\n  _marko_tag(_initComponents, {}, out, _componentDef, \"4\");\n  _marko_tag(_awaitReorderer, {}, out, _componentDef, \"5\");\n  _marko_tag(_preferredScriptLocation, {}, out, _componentDef, \"6\");\n  out.w(\"</body>\");\n  out.w(\"</html>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/doctype/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"M__dLOJ\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _initComponents from \"marko/dist/core-tags/components/init-components-tag.js\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _awaitReorderer from \"marko/dist/core-tags/core/await/reorderer-renderer.js\";\nimport _preferredScriptLocation from \"marko/dist/core-tags/components/preferred-script-location-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<!DOCTYPE html><html><head><title>Title of the document</title></head><body>The content of the document......\");\n  _marko_tag(_initComponents, {}, out, _componentDef, \"4\");\n  _marko_tag(_awaitReorderer, {}, out, _componentDef, \"5\");\n  _marko_tag(_preferredScriptLocation, {}, out, _componentDef, \"6\");\n  out.w(\"</body></html>\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/doctype/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/doctype/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.be(\"html\", null, \"0\", _component, null, 0);\n  out.be(\"head\", null, \"1\", _component, null, 0);\n  out.be(\"title\", null, \"2\", _component, null, 0);\n  out.t(\"Title of the document\", _component);\n  out.ee();\n  out.ee();\n  out.be(\"body\", null, \"3\", _component, null, 0);\n  out.t(\"The content of the document......\", _component);\n  out.ee();\n  out.ee();\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/doctype/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"M__dLOJ\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_constElement from \"marko/dist/runtime/vdom/helpers/const-element.js\";\nconst _marko_node = _marko_constElement(\"html\", null, 2).e(\"head\", null, 1).e(\"title\", null, 1).t(\"Title of the document\").e(\"body\", null, 1).t(\"The content of the document......\");\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.n(_marko_node, _component);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/doctype/template.marko",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n  <title>Title of the document</title>\n</head>\n\n<body>\n  The content of the document......\n</body>\n\n</html>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/dynamic-tag-name/components/tag-a/index.marko",
    "content": "<div/>\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/dynamic-tag-name/components/tag-b/index.marko",
    "content": "<div/>\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/dynamic-tag-name/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _index2 = _interopRequireDefault(require(\"./components/tag-a/index.marko\"));\nvar _index3 = _interopRequireDefault(require(\"./components/tag-b/index.marko\"));\nvar _dynamicTag = _interopRequireDefault(require(\"marko/src/runtime/helpers/dynamic-tag.js\"));\nvar _attr = _interopRequireDefault(require(\"marko/src/runtime/html/helpers/attr.js\"));\nvar _renderTag = _interopRequireDefault(require(\"marko/src/runtime/helpers/render-tag.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  (0, _dynamicTag.default)(out, input, () => ({\n    \"class\": [\"a\", \"b\"],\n    \"other\": input.other\n  }), null, null, null, _componentDef, \"0\");\n  (0, _dynamicTag.default)(out, input.x, () => ({\n    \"class\": [\"a\", \"b\"],\n    \"other\": input.other\n  }), null, null, null, _componentDef, \"1\");\n  const _tagName = input.show ? \"div\" : null;\n  if (_tagName) out.w(`<${_tagName} class=\"a b\"${(0, _attr.default)(\"other\", input.other)}></${_tagName}>`);\n  const _tagName2 = input.show ? \"div\" : null;\n  if (_tagName2) out.w(`<${_tagName2} class=\"a b\"${(0, _attr.default)(\"other\", input.other)}>`);else out.bf(\"f_3\", _component, 1);\n  out.w(\"Body Content\");\n  if (_tagName2) out.w(`</${_tagName2}>`);else out.ef();\n  const _tagName3 = input.show && \"div\";\n  if (_tagName3) out.w(`<${_tagName3} class=\"a b\"${(0, _attr.default)(\"other\", input.other)}></${_tagName3}>`);\n  const _tagName4 = input.large ? \"h1\" : \"h2\";\n  out.w(`<${_tagName4} class=\"a b\"${(0, _attr.default)(\"other\", input.other)}></${_tagName4}>`);\n  const _tagName5 = input.showTagA ? _index2.default : _index3.default;\n  (0, _renderTag.default)(_tagName5, {\n    \"class\": [\"a\", \"b\"],\n    \"other\": input.other,\n    \"class\": [\"a\", \"b\"],\n    \"other\": input.other\n  }, out, _componentDef, \"6\");\n  const _tagName6 = input.showTagA && _index2.default;\n  if (_tagName6) (0, _renderTag.default)(_tagName6, {\n    \"class\": [\"a\", \"b\"],\n    \"other\": input.other\n  }, out, _componentDef, \"7\");\n  const _tagName7 = input.showTagA && _index2.default;\n  const _renderBody = out => {\n    out.w(\"Body content\");\n  };\n  if (_tagName7) (0, _renderTag.default)(_tagName7, {\n    \"class\": [\"a\", \"b\"],\n    \"other\": input.other,\n    \"renderBody\": _renderBody\n  }, out, _componentDef, \"8\");else _renderBody(out);\n  (0, _dynamicTag.default)(out, input.tag || _index2.default, () => ({\n    \"class\": [\"a\", \"b\"],\n    \"other\": input.other\n  }), null, null, null, _componentDef, \"9\");\n  const largeHeading = input.isLarge && \"h1\";\n  const _tagName8 = largeHeading || \"h2\";\n  if (_tagName8) out.w(`<${_tagName8} class=\"a b\"${(0, _attr.default)(\"other\", input.other)}></${_tagName8}>`);\n  const _tagName9 = global.x = \"a\" + \"b\";\n  out.w(`<${_tagName9} class=\"a b\"${(0, _attr.default)(\"other\", input.other)}></${_tagName9}>`);\n  const _tagName0 = \"h\" + input.level;\n  out.w(`<${_tagName0} class=\"a b\"${(0, _attr.default)(\"other\", input.other)}></${_tagName0}>`);\n  const _tagName1 = `h${input.level}`;\n  out.w(`<${_tagName1} class=\"a b\"${(0, _attr.default)(\"other\", input.other)}></${_tagName1}>`);\n  const tagConstA = \"a\";\n  out.w(`<${tagConstA} class=\"a b\"${(0, _attr.default)(\"other\", input.other)}></${tagConstA}>`);\n  const tagConstB = input.show ? \"div\" : null;\n  if (tagConstB) out.w(`<${tagConstB} class=\"a b\"${(0, _attr.default)(\"other\", input.other)}></${tagConstB}>`);\n  let tagLazyAssign;\n  tagLazyAssign = \"a\";\n  if (tagLazyAssign) out.w(`<${tagLazyAssign} class=\"a b\"${(0, _attr.default)(\"other\", input.other)}></${tagLazyAssign}>`);\n  tagLazyAssign = input.show ? \"div\" : null;\n  if (tagLazyAssign) out.w(`<${tagLazyAssign} class=\"a b\"${(0, _attr.default)(\"other\", input.other)}></${tagLazyAssign}>`);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/dynamic-tag-name/snapshots/generated-expected.marko",
    "content": "import tagA from \"./components/tag-a/index.marko\";\nimport tagB from \"./components/tag-b/index.marko\";\n<${input} class=[\"a\", \"b\"] other=input.other/>\n<${input.x} class=[\"a\", \"b\"] other=input.other/>\n<${input.show ? \"div\" : null} class=[\"a\", \"b\"] other=input.other/>\n<${input.show ? \"div\" : null} class=[\"a\", \"b\"] other=input.other>\n  Body Content\n</>\n<${input.show && \"div\"} class=[\"a\", \"b\"] other=input.other/>\n<${input.large ? \"h1\" : \"h2\"} class=[\"a\", \"b\"] other=input.other/>\n<${input.showTagA ? tagA : tagB} class=[\"a\", \"b\"] other=input.other class=[\"a\", \"b\"] other=input.other/>\n<${input.showTagA && tagA} class=[\"a\", \"b\"] other=input.other/>\n<${input.showTagA && tagA} class=[\"a\", \"b\"] other=input.other>\n  Body content\n</>\n<${input.tag || tagA} class=[\"a\", \"b\"] other=input.other/>\n$ const largeHeading = input.isLarge && \"h1\";\n<${largeHeading || \"h2\"} class=[\"a\", \"b\"] other=input.other/>\n<${global.x = \"a\" + \"b\"} class=[\"a\", \"b\"] other=input.other/>\n<${\"h\" + input.level} class=[\"a\", \"b\"] other=input.other/>\n<${`h${input.level}`} class=[\"a\", \"b\"] other=input.other/>\n$ const tagConstA = \"a\";\n<${tagConstA} class=[\"a\", \"b\"] other=input.other/>\n$ const tagConstB = input.show ? \"div\" : null;\n<${tagConstB} class=[\"a\", \"b\"] other=input.other/>\n$ let tagLazyAssign;\n$ tagLazyAssign = \"a\";\n<${tagLazyAssign} class=[\"a\", \"b\"] other=input.other/>\n$ tagLazyAssign = input.show ? \"div\" : null;\n<${tagLazyAssign} class=[\"a\", \"b\"] other=input.other/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/dynamic-tag-name/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport tagA from \"./components/tag-a/index.marko\";\nimport tagB from \"./components/tag-b/index.marko\";\nimport _marko_dynamic_tag from \"marko/src/runtime/helpers/dynamic-tag.js\";\nimport _marko_attr from \"marko/src/runtime/html/helpers/attr.js\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_dynamic_tag(out, input, () => ({\n    \"class\": [\"a\", \"b\"],\n    \"other\": input.other\n  }), null, null, null, _componentDef, \"0\");\n  _marko_dynamic_tag(out, input.x, () => ({\n    \"class\": [\"a\", \"b\"],\n    \"other\": input.other\n  }), null, null, null, _componentDef, \"1\");\n  const _tagName = input.show ? \"div\" : null;\n  if (_tagName) out.w(`<${_tagName} class=\"a b\"${_marko_attr(\"other\", input.other)}></${_tagName}>`);\n  const _tagName2 = input.show ? \"div\" : null;\n  if (_tagName2) out.w(`<${_tagName2} class=\"a b\"${_marko_attr(\"other\", input.other)}>`);else out.bf(\"f_3\", _component, 1);\n  out.w(\"Body Content\");\n  if (_tagName2) out.w(`</${_tagName2}>`);else out.ef();\n  const _tagName3 = input.show && \"div\";\n  if (_tagName3) out.w(`<${_tagName3} class=\"a b\"${_marko_attr(\"other\", input.other)}></${_tagName3}>`);\n  const _tagName4 = input.large ? \"h1\" : \"h2\";\n  out.w(`<${_tagName4} class=\"a b\"${_marko_attr(\"other\", input.other)}></${_tagName4}>`);\n  const _tagName5 = input.showTagA ? tagA : tagB;\n  _marko_tag(_tagName5, {\n    \"class\": [\"a\", \"b\"],\n    \"other\": input.other,\n    \"class\": [\"a\", \"b\"],\n    \"other\": input.other\n  }, out, _componentDef, \"6\");\n  const _tagName6 = input.showTagA && tagA;\n  if (_tagName6) _marko_tag(_tagName6, {\n    \"class\": [\"a\", \"b\"],\n    \"other\": input.other\n  }, out, _componentDef, \"7\");\n  const _tagName7 = input.showTagA && tagA;\n  const _renderBody = out => {\n    out.w(\"Body content\");\n  };\n  if (_tagName7) _marko_tag(_tagName7, {\n    \"class\": [\"a\", \"b\"],\n    \"other\": input.other,\n    \"renderBody\": _renderBody\n  }, out, _componentDef, \"8\");else _renderBody(out);\n  _marko_dynamic_tag(out, input.tag || tagA, () => ({\n    \"class\": [\"a\", \"b\"],\n    \"other\": input.other\n  }), null, null, null, _componentDef, \"9\");\n  const largeHeading = input.isLarge && \"h1\";\n  const _tagName8 = largeHeading || \"h2\";\n  if (_tagName8) out.w(`<${_tagName8} class=\"a b\"${_marko_attr(\"other\", input.other)}></${_tagName8}>`);\n  const _tagName9 = global.x = \"a\" + \"b\";\n  out.w(`<${_tagName9} class=\"a b\"${_marko_attr(\"other\", input.other)}></${_tagName9}>`);\n  const _tagName0 = \"h\" + input.level;\n  out.w(`<${_tagName0} class=\"a b\"${_marko_attr(\"other\", input.other)}></${_tagName0}>`);\n  const _tagName1 = `h${input.level}`;\n  out.w(`<${_tagName1} class=\"a b\"${_marko_attr(\"other\", input.other)}></${_tagName1}>`);\n  const tagConstA = \"a\";\n  out.w(`<${tagConstA} class=\"a b\"${_marko_attr(\"other\", input.other)}></${tagConstA}>`);\n  const tagConstB = input.show ? \"div\" : null;\n  if (tagConstB) out.w(`<${tagConstB} class=\"a b\"${_marko_attr(\"other\", input.other)}></${tagConstB}>`);\n  let tagLazyAssign;\n  tagLazyAssign = \"a\";\n  if (tagLazyAssign) out.w(`<${tagLazyAssign} class=\"a b\"${_marko_attr(\"other\", input.other)}></${tagLazyAssign}>`);\n  tagLazyAssign = input.show ? \"div\" : null;\n  if (tagLazyAssign) out.w(`<${tagLazyAssign} class=\"a b\"${_marko_attr(\"other\", input.other)}></${tagLazyAssign}>`);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/dynamic-tag-name/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"$1o42tP\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport tagA from \"./components/tag-a/index.marko\";\nimport tagB from \"./components/tag-b/index.marko\";\nimport _marko_dynamic_tag from \"marko/dist/runtime/helpers/dynamic-tag.js\";\nimport _marko_attr from \"marko/dist/runtime/html/helpers/attr.js\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_dynamic_tag(out, input, () => ({\n    \"class\": [\"a\", \"b\"],\n    \"other\": input.other\n  }), null, null, null, _componentDef, \"0\");\n  _marko_dynamic_tag(out, input.x, () => ({\n    \"class\": [\"a\", \"b\"],\n    \"other\": input.other\n  }), null, null, null, _componentDef, \"1\");\n  const _tagName = input.show ? \"div\" : null;\n  if (_tagName) out.w(`<${_tagName} class=\"a b\"${_marko_attr(\"other\", input.other)}></${_tagName}>`);\n  const _tagName2 = input.show ? \"div\" : null;\n  if (_tagName2) out.w(`<${_tagName2} class=\"a b\"${_marko_attr(\"other\", input.other)}>`);else out.bf(\"f_3\", _component, 1);\n  out.w(\"Body Content\");\n  if (_tagName2) out.w(`</${_tagName2}>`);else out.ef();\n  const _tagName3 = input.show && \"div\";\n  if (_tagName3) out.w(`<${_tagName3} class=\"a b\"${_marko_attr(\"other\", input.other)}></${_tagName3}>`);\n  const _tagName4 = input.large ? \"h1\" : \"h2\";\n  out.w(`<${_tagName4} class=\"a b\"${_marko_attr(\"other\", input.other)}></${_tagName4}>`);\n  const _tagName5 = input.showTagA ? tagA : tagB;\n  _marko_tag(_tagName5, {\n    \"class\": [\"a\", \"b\"],\n    \"other\": input.other,\n    \"class\": [\"a\", \"b\"],\n    \"other\": input.other\n  }, out, _componentDef, \"6\");\n  const _tagName6 = input.showTagA && tagA;\n  if (_tagName6) _marko_tag(_tagName6, {\n    \"class\": [\"a\", \"b\"],\n    \"other\": input.other\n  }, out, _componentDef, \"7\");\n  const _tagName7 = input.showTagA && tagA;\n  const _renderBody = out => {\n    out.w(\"Body content\");\n  };\n  if (_tagName7) _marko_tag(_tagName7, {\n    \"class\": [\"a\", \"b\"],\n    \"other\": input.other,\n    \"renderBody\": _renderBody\n  }, out, _componentDef, \"8\");else _renderBody(out);\n  _marko_dynamic_tag(out, input.tag || tagA, () => ({\n    \"class\": [\"a\", \"b\"],\n    \"other\": input.other\n  }), null, null, null, _componentDef, \"9\");\n  const largeHeading = input.isLarge && \"h1\";\n  const _tagName8 = largeHeading || \"h2\";\n  if (_tagName8) out.w(`<${_tagName8} class=\"a b\"${_marko_attr(\"other\", input.other)}></${_tagName8}>`);\n  const _tagName9 = global.x = \"a\" + \"b\";\n  out.w(`<${_tagName9} class=\"a b\"${_marko_attr(\"other\", input.other)}></${_tagName9}>`);\n  const _tagName0 = \"h\" + input.level;\n  out.w(`<${_tagName0} class=\"a b\"${_marko_attr(\"other\", input.other)}></${_tagName0}>`);\n  const _tagName1 = `h${input.level}`;\n  out.w(`<${_tagName1} class=\"a b\"${_marko_attr(\"other\", input.other)}></${_tagName1}>`);\n  const tagConstA = \"a\";\n  out.w(`<${tagConstA} class=\"a b\"${_marko_attr(\"other\", input.other)}></${tagConstA}>`);\n  const tagConstB = input.show ? \"div\" : null;\n  if (tagConstB) out.w(`<${tagConstB} class=\"a b\"${_marko_attr(\"other\", input.other)}></${tagConstB}>`);\n  let tagLazyAssign;\n  tagLazyAssign = \"a\";\n  if (tagLazyAssign) out.w(`<${tagLazyAssign} class=\"a b\"${_marko_attr(\"other\", input.other)}></${tagLazyAssign}>`);\n  tagLazyAssign = input.show ? \"div\" : null;\n  if (tagLazyAssign) out.w(`<${tagLazyAssign} class=\"a b\"${_marko_attr(\"other\", input.other)}></${tagLazyAssign}>`);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/dynamic-tag-name/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/dynamic-tag-name/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport tagA from \"./components/tag-a/index.marko\";\nimport tagB from \"./components/tag-b/index.marko\";\nimport _marko_dynamic_tag from \"marko/src/runtime/helpers/dynamic-tag.js\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_dynamic_tag(out, input, () => ({\n    \"class\": [\"a\", \"b\"],\n    \"other\": input.other\n  }), null, null, null, _componentDef, \"0\");\n  _marko_dynamic_tag(out, input.x, () => ({\n    \"class\": [\"a\", \"b\"],\n    \"other\": input.other\n  }), null, null, null, _componentDef, \"1\");\n  const _tagName = input.show ? \"div\" : null;\n  if (_tagName) out.e(_tagName, {\n    \"class\": \"a b\",\n    \"other\": input.other\n  }, \"2\", _component, 0, 0);\n  const _tagName2 = input.show ? \"div\" : null;\n  if (_tagName2) out.be(_tagName2, {\n    \"class\": \"a b\",\n    \"other\": input.other\n  }, \"3\", _component, null, 0);else out.bf(\"f_3\", _component);\n  out.t(\"Body Content\", _component);\n  if (_tagName2) out.ee();else out.ef();\n  const _tagName3 = input.show && \"div\";\n  if (_tagName3) out.e(_tagName3, {\n    \"class\": \"a b\",\n    \"other\": input.other\n  }, \"4\", _component, 0, 0);\n  const _tagName4 = input.large ? \"h1\" : \"h2\";\n  out.e(_tagName4, {\n    \"class\": \"a b\",\n    \"other\": input.other\n  }, \"5\", _component, 0, 0);\n  const _tagName5 = input.showTagA ? tagA : tagB;\n  _marko_tag(_tagName5, {\n    \"class\": [\"a\", \"b\"],\n    \"other\": input.other,\n    \"class\": [\"a\", \"b\"],\n    \"other\": input.other\n  }, out, _componentDef, \"6\");\n  const _tagName6 = input.showTagA && tagA;\n  if (_tagName6) _marko_tag(_tagName6, {\n    \"class\": [\"a\", \"b\"],\n    \"other\": input.other\n  }, out, _componentDef, \"7\");\n  const _tagName7 = input.showTagA && tagA;\n  const _renderBody = out => {\n    out.t(\"Body content\", _component);\n  };\n  if (_tagName7) _marko_tag(_tagName7, {\n    \"class\": [\"a\", \"b\"],\n    \"other\": input.other,\n    \"renderBody\": _renderBody\n  }, out, _componentDef, \"8\");else _renderBody(out);\n  _marko_dynamic_tag(out, input.tag || tagA, () => ({\n    \"class\": [\"a\", \"b\"],\n    \"other\": input.other\n  }), null, null, null, _componentDef, \"9\");\n  const largeHeading = input.isLarge && \"h1\";\n  const _tagName8 = largeHeading || \"h2\";\n  if (_tagName8) out.e(_tagName8, {\n    \"class\": \"a b\",\n    \"other\": input.other\n  }, \"10\", _component, 0, 0);\n  const _tagName9 = global.x = \"a\" + \"b\";\n  out.e(_tagName9, {\n    \"class\": \"a b\",\n    \"other\": input.other\n  }, \"11\", _component, 0, 0);\n  const _tagName0 = \"h\" + input.level;\n  out.e(_tagName0, {\n    \"class\": \"a b\",\n    \"other\": input.other\n  }, \"12\", _component, 0, 0);\n  const _tagName1 = `h${input.level}`;\n  out.e(_tagName1, {\n    \"class\": \"a b\",\n    \"other\": input.other\n  }, \"13\", _component, 0, 0);\n  const tagConstA = \"a\";\n  out.e(tagConstA, {\n    \"class\": \"a b\",\n    \"other\": input.other\n  }, \"14\", _component, 0, 0);\n  const tagConstB = input.show ? \"div\" : null;\n  if (tagConstB) out.e(tagConstB, {\n    \"class\": \"a b\",\n    \"other\": input.other\n  }, \"15\", _component, 0, 0);\n  let tagLazyAssign;\n  tagLazyAssign = \"a\";\n  if (tagLazyAssign) out.e(tagLazyAssign, {\n    \"class\": \"a b\",\n    \"other\": input.other\n  }, \"16\", _component, 0, 0);\n  tagLazyAssign = input.show ? \"div\" : null;\n  if (tagLazyAssign) out.e(tagLazyAssign, {\n    \"class\": \"a b\",\n    \"other\": input.other\n  }, \"17\", _component, 0, 0);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/dynamic-tag-name/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"$1o42tP\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport tagA from \"./components/tag-a/index.marko\";\nimport tagB from \"./components/tag-b/index.marko\";\nimport _marko_dynamic_tag from \"marko/dist/runtime/helpers/dynamic-tag.js\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_dynamic_tag(out, input, () => ({\n    \"class\": [\"a\", \"b\"],\n    \"other\": input.other\n  }), null, null, null, _componentDef, \"0\");\n  _marko_dynamic_tag(out, input.x, () => ({\n    \"class\": [\"a\", \"b\"],\n    \"other\": input.other\n  }), null, null, null, _componentDef, \"1\");\n  const _tagName = input.show ? \"div\" : null;\n  if (_tagName) out.e(_tagName, {\n    \"class\": \"a b\",\n    \"other\": input.other\n  }, \"2\", _component, 0, 0);\n  const _tagName2 = input.show ? \"div\" : null;\n  if (_tagName2) out.be(_tagName2, {\n    \"class\": \"a b\",\n    \"other\": input.other\n  }, \"3\", _component, null, 0);else out.bf(\"f_3\", _component);\n  out.t(\"Body Content\", _component);\n  if (_tagName2) out.ee();else out.ef();\n  const _tagName3 = input.show && \"div\";\n  if (_tagName3) out.e(_tagName3, {\n    \"class\": \"a b\",\n    \"other\": input.other\n  }, \"4\", _component, 0, 0);\n  const _tagName4 = input.large ? \"h1\" : \"h2\";\n  out.e(_tagName4, {\n    \"class\": \"a b\",\n    \"other\": input.other\n  }, \"5\", _component, 0, 0);\n  const _tagName5 = input.showTagA ? tagA : tagB;\n  _marko_tag(_tagName5, {\n    \"class\": [\"a\", \"b\"],\n    \"other\": input.other,\n    \"class\": [\"a\", \"b\"],\n    \"other\": input.other\n  }, out, _componentDef, \"6\");\n  const _tagName6 = input.showTagA && tagA;\n  if (_tagName6) _marko_tag(_tagName6, {\n    \"class\": [\"a\", \"b\"],\n    \"other\": input.other\n  }, out, _componentDef, \"7\");\n  const _tagName7 = input.showTagA && tagA;\n  const _renderBody = out => {\n    out.t(\"Body content\", _component);\n  };\n  if (_tagName7) _marko_tag(_tagName7, {\n    \"class\": [\"a\", \"b\"],\n    \"other\": input.other,\n    \"renderBody\": _renderBody\n  }, out, _componentDef, \"8\");else _renderBody(out);\n  _marko_dynamic_tag(out, input.tag || tagA, () => ({\n    \"class\": [\"a\", \"b\"],\n    \"other\": input.other\n  }), null, null, null, _componentDef, \"9\");\n  const largeHeading = input.isLarge && \"h1\";\n  const _tagName8 = largeHeading || \"h2\";\n  if (_tagName8) out.e(_tagName8, {\n    \"class\": \"a b\",\n    \"other\": input.other\n  }, \"10\", _component, 0, 0);\n  const _tagName9 = global.x = \"a\" + \"b\";\n  out.e(_tagName9, {\n    \"class\": \"a b\",\n    \"other\": input.other\n  }, \"11\", _component, 0, 0);\n  const _tagName0 = \"h\" + input.level;\n  out.e(_tagName0, {\n    \"class\": \"a b\",\n    \"other\": input.other\n  }, \"12\", _component, 0, 0);\n  const _tagName1 = `h${input.level}`;\n  out.e(_tagName1, {\n    \"class\": \"a b\",\n    \"other\": input.other\n  }, \"13\", _component, 0, 0);\n  const tagConstA = \"a\";\n  out.e(tagConstA, {\n    \"class\": \"a b\",\n    \"other\": input.other\n  }, \"14\", _component, 0, 0);\n  const tagConstB = input.show ? \"div\" : null;\n  if (tagConstB) out.e(tagConstB, {\n    \"class\": \"a b\",\n    \"other\": input.other\n  }, \"15\", _component, 0, 0);\n  let tagLazyAssign;\n  tagLazyAssign = \"a\";\n  if (tagLazyAssign) out.e(tagLazyAssign, {\n    \"class\": \"a b\",\n    \"other\": input.other\n  }, \"16\", _component, 0, 0);\n  tagLazyAssign = input.show ? \"div\" : null;\n  if (tagLazyAssign) out.e(tagLazyAssign, {\n    \"class\": \"a b\",\n    \"other\": input.other\n  }, \"17\", _component, 0, 0);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/dynamic-tag-name/template.marko",
    "content": "import tagA from \"./components/tag-a/index.marko\";\nimport tagB from \"./components/tag-b/index.marko\";\n\n<${input} class=[\"a\", \"b\"] other=input.other/>\n<${input.x} class=[\"a\", \"b\"] other=input.other/>\n\n<${input.show ? \"div\" : null} class=[\"a\", \"b\"] other=input.other/>\n<${input.show ? \"div\" : null} class=[\"a\", \"b\"] other=input.other>Body Content</>\n<${input.show && \"div\"} class=[\"a\", \"b\"] other=input.other/>\n\n<${input.large ? \"h1\" : \"h2\"} class=[\"a\", \"b\"] other=input.other/>\n\n<${input.showTagA ? tagA : tagB} class=[\"a\", \"b\"] other=input.other class=[\"a\", \"b\"] other=input.other/>\n<${input.showTagA && tagA} class=[\"a\", \"b\"] other=input.other/>\n<${input.showTagA && tagA} class=[\"a\", \"b\"] other=input.other>\n  Body content\n</>\n\n<${input.tag || tagA} class=[\"a\", \"b\"] other=input.other/>\n\n$ const largeHeading = input.isLarge && \"h1\";\n<${largeHeading || \"h2\"} class=[\"a\", \"b\"] other=input.other/>\n\n<${global.x = \"a\" + \"b\"} class=[\"a\", \"b\"] other=input.other/>\n<${\"h\" + input.level} class=[\"a\", \"b\"] other=input.other/>\n<${`h${input.level}`} class=[\"a\", \"b\"] other=input.other/>\n\n$ const tagConstA = \"a\";\n<${tagConstA} class=[\"a\", \"b\"] other=input.other/>\n\n$ const tagConstB = input.show ? \"div\" : null;\n<${tagConstB} class=[\"a\", \"b\"] other=input.other/>\n\n$ let tagLazyAssign;\n\n$ tagLazyAssign = \"a\";\n<${tagLazyAssign} class=[\"a\", \"b\"] other=input.other/>\n\n$ tagLazyAssign = input.show ? \"div\" : null;\n<${tagLazyAssign} class=[\"a\", \"b\"] other=input.other/>\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/dynamic-tag-string-literal/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  const _tagName = `some-wacky-tag-name`;\n  out.w(`<${_tagName}></${_tagName}>`);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/dynamic-tag-string-literal/snapshots/generated-expected.marko",
    "content": "<${`some-wacky-tag-name`}/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/dynamic-tag-string-literal/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  const _tagName = `some-wacky-tag-name`;\n  out.w(`<${_tagName}></${_tagName}>`);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/dynamic-tag-string-literal/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"ABEKBKe\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  const _tagName = `some-wacky-tag-name`;\n  out.w(`<${_tagName}></${_tagName}>`);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/dynamic-tag-string-literal/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/dynamic-tag-string-literal/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  const _tagName = `some-wacky-tag-name`;\n  out.e(_tagName, null, \"0\", _component, 0, 0);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/dynamic-tag-string-literal/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"ABEKBKe\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  const _tagName = `some-wacky-tag-name`;\n  out.e(_tagName, null, \"0\", _component, 0, 0);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/dynamic-tag-string-literal/template.marko",
    "content": "<${\"some-wacky-tag-name\"}/>\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/else-tag-with-whitespace-and-comments/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  if (x) {} else if (y) {} else {}\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/else-tag-with-whitespace-and-comments/snapshots/generated-expected.marko",
    "content": "<if(x)/>\n<else-if(y)/>\n<!-- Comments are okay also! -->\n<!-- Comments are okay also!-->\n<else/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/else-tag-with-whitespace-and-comments/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  if (x) {} else if (y) {} else {}\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/else-tag-with-whitespace-and-comments/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"$jq_kQm\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  if (x) {} else if (y) {} else {}\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/else-tag-with-whitespace-and-comments/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/else-tag-with-whitespace-and-comments/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  if (x) {} else if (y) {} else {}\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/else-tag-with-whitespace-and-comments/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"$jq_kQm\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  if (x) {} else if (y) {} else {}\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/else-tag-with-whitespace-and-comments/template.marko",
    "content": "<if(x)>\n</if>\n   \n<else-if(y)>\n</else-if>\n<!-- Comments are okay also! -->\n// Comments are okay also!\n<else>\n</else>\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/entities/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"Hello John &amp; Suzy Invalid Entity: &b ; Valid Numeric Entity: &#34; Valid Hexadecimal Entity: &#x00A2;\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/entities/snapshots/generated-expected.marko",
    "content": "-- Hello John &amp; Suzy Invalid Entity: &b ; Valid Numeric Entity: &#34; Valid Hexadecimal Entity: &#x00A2;"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/entities/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"Hello John &amp; Suzy Invalid Entity: &b ; Valid Numeric Entity: &#34; Valid Hexadecimal Entity: &#x00A2;\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/entities/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"UL0qZRM\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"Hello John &amp; Suzy Invalid Entity: &b ; Valid Numeric Entity: &#34; Valid Hexadecimal Entity: &#x00A2;\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/entities/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/entities/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.t(\"Hello John & Suzy Invalid Entity: &b ; Valid Numeric Entity: \\\" Valid Hexadecimal Entity: \\xA2\", _component);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/entities/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"UL0qZRM\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.t(\"Hello John & Suzy Invalid Entity: &b ; Valid Numeric Entity: \\\" Valid Hexadecimal Entity: \\xA2\", _component);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/entities/template.marko",
    "content": "---\nHello John &amp; Suzy\nInvalid Entity: &b ;\nValid Numeric Entity: &#34;\nValid Hexadecimal Entity: &#x00A2;\n---"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-arguments-on-non-event-attribute/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:6\n    > 1 | <div hello('a')/>\n        |      ^^^^^^^^^^ Unsupported arguments on the \"hello\" attribute."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-arguments-on-non-event-attribute/snapshots/generated-expected.marko",
    "content": "<div hello('a')/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-arguments-on-non-event-attribute/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:6\n    > 1 | <div hello('a')/>\n        |      ^^^^^^^^^^ Unsupported arguments on the \"hello\" attribute."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-arguments-on-non-event-attribute/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:6\n    > 1 | <div hello('a')/>\n        |      ^^^^^^^^^^ Unsupported arguments on the \"hello\" attribute."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-arguments-on-non-event-attribute/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-arguments-on-non-event-attribute/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:6\n    > 1 | <div hello('a')/>\n        |      ^^^^^^^^^^ Unsupported arguments on the \"hello\" attribute."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-arguments-on-non-event-attribute/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:6\n    > 1 | <div hello('a')/>\n        |      ^^^^^^^^^^ Unsupported arguments on the \"hello\" attribute."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-arguments-on-non-event-attribute/template.marko",
    "content": "<div hello('a')/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-at-tags-control-flow-mixed/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:7:9\n       5 |         </@header>\n       6 |\n    >  7 |         Body content\n         |         ^ Cannot have attribute tags and body content under a control flow tag.\n       8 |     </>\n       9 | </>\n      10 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-at-tags-control-flow-mixed/snapshots/generated-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:7:9\n       5 |         </@header>\n       6 |\n    >  7 |         Body content\n         |         ^ Cannot have attribute tags and body content under a control flow tag.\n       8 |     </>\n       9 | </>\n      10 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-at-tags-control-flow-mixed/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:7:9\n       5 |         </@header>\n       6 |\n    >  7 |         Body content\n         |         ^ Cannot have attribute tags and body content under a control flow tag.\n       8 |     </>\n       9 | </>\n      10 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-at-tags-control-flow-mixed/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:7:9\n       5 |         </@header>\n       6 |\n    >  7 |         Body content\n         |         ^ Cannot have attribute tags and body content under a control flow tag.\n       8 |     </>\n       9 | </>\n      10 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-at-tags-control-flow-mixed/snapshots/hydrate-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:7:9\n       5 |         </@header>\n       6 |\n    >  7 |         Body content\n         |         ^ Cannot have attribute tags and body content under a control flow tag.\n       8 |     </>\n       9 | </>\n      10 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-at-tags-control-flow-mixed/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:7:9\n       5 |         </@header>\n       6 |\n    >  7 |         Body content\n         |         ^ Cannot have attribute tags and body content under a control flow tag.\n       8 |     </>\n       9 | </>\n      10 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-at-tags-control-flow-mixed/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:7:9\n       5 |         </@header>\n       6 |\n    >  7 |         Body content\n         |         ^ Cannot have attribute tags and body content under a control flow tag.\n       8 |     </>\n       9 | </>\n      10 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-at-tags-control-flow-mixed/template.marko",
    "content": "<${stuff}>\n    <if(x)>\n        <@header class=\"my-header\">\n            Header content\n        </@header>\n\n        Body content\n    </>\n</>\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-at-tags-native-tag-parent/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:3:6\n      1 | <div>\n      2 |\n    > 3 |     <@header class=\"my-header\">\n        |      ^^^^^^^ @tags must be nested within another element.\n      4 |         Header content\n      5 |     </@header>\n      6 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-at-tags-native-tag-parent/snapshots/generated-expected.marko",
    "content": "<div>\n  <@header class=\"my-header\">\n    Header content\n  </@header>\n  Body content\n  <@footer class=\"my-footer\">\n    Footer content\n  </@footer>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-at-tags-native-tag-parent/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:3:6\n      1 | <div>\n      2 |\n    > 3 |     <@header class=\"my-header\">\n        |      ^^^^^^^ @tags must be nested within another element.\n      4 |         Header content\n      5 |     </@header>\n      6 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-at-tags-native-tag-parent/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:3:6\n      1 | <div>\n      2 |\n    > 3 |     <@header class=\"my-header\">\n        |      ^^^^^^^ @tags must be nested within another element.\n      4 |         Header content\n      5 |     </@header>\n      6 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-at-tags-native-tag-parent/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-at-tags-native-tag-parent/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:3:6\n      1 | <div>\n      2 |\n    > 3 |     <@header class=\"my-header\">\n        |      ^^^^^^^ @tags must be nested within another element.\n      4 |         Header content\n      5 |     </@header>\n      6 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-at-tags-native-tag-parent/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:3:6\n      1 | <div>\n      2 |\n    > 3 |     <@header class=\"my-header\">\n        |      ^^^^^^^ @tags must be nested within another element.\n      4 |         Header content\n      5 |     </@header>\n      6 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-at-tags-native-tag-parent/template.marko",
    "content": "<div>\n\n    <@header class=\"my-header\">\n        Header content\n    </@header>\n\n    Body content\n\n    <@footer class=\"my-footer\">\n        Footer content\n    </@footer>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-at-tags-repeated-not-allowed/components/some-tag/index.marko",
    "content": "<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-at-tags-repeated-not-allowed/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _attrTag = require(\"marko/src/runtime/helpers/attr-tag.js\");\nvar _index2 = _interopRequireDefault(require(\"./components/some-tag/index.marko\"));\nvar _renderTag = _interopRequireDefault(require(\"marko/src/runtime/helpers/render-tag.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  (0, _renderTag.default)(_index2.default, (0, _attrTag.i)(() => {\n    (0, _attrTag.a)(\"header\", {\n      \"class\": \"my-header\",\n      \"renderBody\": out => {\n        out.w(\"Header content\");\n      }\n    });\n    (0, _attrTag.a)(\"header\", {\n      \"class\": \"my-header\",\n      \"renderBody\": out => {\n        out.w(\"Header content\");\n      }\n    });\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-at-tags-repeated-not-allowed/snapshots/generated-expected.marko",
    "content": "<some-tag>\n  <@header class=\"my-header\">\n    Header content\n  </@header>\n  <@header class=\"my-header\">\n    Header content\n  </@header>\n</some-tag>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-at-tags-repeated-not-allowed/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/src/runtime/helpers/attr-tag.js\";\nimport _someTag from \"./components/some-tag/index.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_someTag, _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"header\", {\n      \"class\": \"my-header\",\n      \"renderBody\": out => {\n        out.w(\"Header content\");\n      }\n    });\n    _marko_repeatable_attr_tag(\"header\", {\n      \"class\": \"my-header\",\n      \"renderBody\": out => {\n        out.w(\"Header content\");\n      }\n    });\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-at-tags-repeated-not-allowed/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"iGF9hcC\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/dist/runtime/helpers/attr-tag.js\";\nimport _someTag from \"./components/some-tag/index.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_someTag, _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"header\", {\n      \"class\": \"my-header\",\n      \"renderBody\": out => {\n        out.w(\"Header content\");\n      }\n    });\n    _marko_repeatable_attr_tag(\"header\", {\n      \"class\": \"my-header\",\n      \"renderBody\": out => {\n        out.w(\"Header content\");\n      }\n    });\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-at-tags-repeated-not-allowed/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-at-tags-repeated-not-allowed/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/src/runtime/helpers/attr-tag.js\";\nimport _someTag from \"./components/some-tag/index.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_someTag, _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"header\", {\n      \"class\": \"my-header\",\n      \"renderBody\": out => {\n        out.t(\"Header content\", _component);\n      }\n    });\n    _marko_repeatable_attr_tag(\"header\", {\n      \"class\": \"my-header\",\n      \"renderBody\": out => {\n        out.t(\"Header content\", _component);\n      }\n    });\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-at-tags-repeated-not-allowed/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"iGF9hcC\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/dist/runtime/helpers/attr-tag.js\";\nimport _someTag from \"./components/some-tag/index.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_someTag, _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"header\", {\n      \"class\": \"my-header\",\n      \"renderBody\": out => {\n        out.t(\"Header content\", _component);\n      }\n    });\n    _marko_repeatable_attr_tag(\"header\", {\n      \"class\": \"my-header\",\n      \"renderBody\": out => {\n        out.t(\"Header content\", _component);\n      }\n    });\n  }), out, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-at-tags-repeated-not-allowed/template.marko",
    "content": "<some-tag>\n    <@header class=\"my-header\">\n        Header content\n    </@header>\n    <@header class=\"my-header\">\n        Header content\n    </@header>\n</some-tag>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-at-tags-top-level/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <@header class=\"my-header\">\n        |  ^^^^^^^ @tags must be nested within another element.\n      2 |     Header content\n      3 | </@header>\n      4 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-at-tags-top-level/snapshots/generated-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <@header class=\"my-header\">\n        |  ^^^^^^^ @tags must be nested within another element.\n      2 |     Header content\n      3 | </@header>\n      4 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-at-tags-top-level/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <@header class=\"my-header\">\n        |  ^^^^^^^ @tags must be nested within another element.\n      2 |     Header content\n      3 | </@header>\n      4 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-at-tags-top-level/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <@header class=\"my-header\">\n        |  ^^^^^^^ @tags must be nested within another element.\n      2 |     Header content\n      3 | </@header>\n      4 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-at-tags-top-level/snapshots/hydrate-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <@header class=\"my-header\">\n        |  ^^^^^^^ @tags must be nested within another element.\n      2 |     Header content\n      3 | </@header>\n      4 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-at-tags-top-level/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <@header class=\"my-header\">\n        |  ^^^^^^^ @tags must be nested within another element.\n      2 |     Header content\n      3 | </@header>\n      4 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-at-tags-top-level/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <@header class=\"my-header\">\n        |  ^^^^^^^ @tags must be nested within another element.\n      2 |     Header content\n      3 | </@header>\n      4 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-at-tags-top-level/template.marko",
    "content": "<@header class=\"my-header\">\n    Header content\n</@header>\n\n<@footer class=\"my-footer\">\n    Footer content\n</@footer>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-await-tag-missing-provider/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <await>\n        |  ^^^^^ You must provide a promise argument to the \"<await>\" tag, eg: \"<await(promise)>\".\n      2 |   <@then|result|>\n      3 |     ${result}\n      4 |   </@then>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-await-tag-missing-provider/snapshots/generated-expected.marko",
    "content": "<await>\n  <@then|result|>\n    ${result}\n  </@then>\n</await>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-await-tag-missing-provider/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <await>\n        |  ^^^^^ You must provide a promise argument to the \"<await>\" tag, eg: \"<await(promise)>\".\n      2 |   <@then|result|>\n      3 |     ${result}\n      4 |   </@then>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-await-tag-missing-provider/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <await>\n        |  ^^^^^ You must provide a promise argument to the \"<await>\" tag, eg: \"<await(promise)>\".\n      2 |   <@then|result|>\n      3 |     ${result}\n      4 |   </@then>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-await-tag-missing-provider/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-await-tag-missing-provider/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <await>\n        |  ^^^^^ You must provide a promise argument to the \"<await>\" tag, eg: \"<await(promise)>\".\n      2 |   <@then|result|>\n      3 |     ${result}\n      4 |   </@then>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-await-tag-missing-provider/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <await>\n        |  ^^^^^ You must provide a promise argument to the \"<await>\" tag, eg: \"<await(promise)>\".\n      2 |   <@then|result|>\n      3 |     ${result}\n      4 |   </@then>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-await-tag-missing-provider/template.marko",
    "content": "<await>\n  <@then|result|>\n    ${result}\n  </@then>\n</await>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-await-tag-multiple-arguments/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:11\n    > 1 | <await(a, b)>\n        |           ^ You can only pass one argument to the \"<await>\" tag.\n      2 |   <@then|result|>\n      3 |     ${result}\n      4 |   </@then>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-await-tag-multiple-arguments/snapshots/generated-expected.marko",
    "content": "<await(a, b)>\n  <@then|result|>\n    ${result}\n  </@then>\n</await>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-await-tag-multiple-arguments/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:11\n    > 1 | <await(a, b)>\n        |           ^ You can only pass one argument to the \"<await>\" tag.\n      2 |   <@then|result|>\n      3 |     ${result}\n      4 |   </@then>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-await-tag-multiple-arguments/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:11\n    > 1 | <await(a, b)>\n        |           ^ You can only pass one argument to the \"<await>\" tag.\n      2 |   <@then|result|>\n      3 |     ${result}\n      4 |   </@then>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-await-tag-multiple-arguments/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-await-tag-multiple-arguments/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:11\n    > 1 | <await(a, b)>\n        |           ^ You can only pass one argument to the \"<await>\" tag.\n      2 |   <@then|result|>\n      3 |     ${result}\n      4 |   </@then>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-await-tag-multiple-arguments/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:11\n    > 1 | <await(a, b)>\n        |           ^ You can only pass one argument to the \"<await>\" tag.\n      2 |   <@then|result|>\n      3 |     ${result}\n      4 |   </@then>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-await-tag-multiple-arguments/template.marko",
    "content": "<await(a, b)>\n  <@then|result|>\n    ${result}\n  </@then>\n</await>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-bad-expression/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:18\n    > 1 | <div class=(this is not valid)></div>\n        |                  ^ Unexpected token, expected \",\"\n      2 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-bad-expression/snapshots/generated-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:18\n    > 1 | <div class=(this is not valid)></div>\n        |                  ^ Unexpected token, expected \",\"\n      2 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-bad-expression/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:18\n    > 1 | <div class=(this is not valid)></div>\n        |                  ^ Unexpected token, expected \",\"\n      2 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-bad-expression/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:18\n    > 1 | <div class=(this is not valid)></div>\n        |                  ^ Unexpected token, expected \",\"\n      2 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-bad-expression/snapshots/hydrate-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:18\n    > 1 | <div class=(this is not valid)></div>\n        |                  ^ Unexpected token, expected \",\"\n      2 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-bad-expression/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:18\n    > 1 | <div class=(this is not valid)></div>\n        |                  ^ Unexpected token, expected \",\"\n      2 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-bad-expression/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:18\n    > 1 | <div class=(this is not valid)></div>\n        |                  ^ Unexpected token, expected \",\"\n      2 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-bad-expression/template.marko",
    "content": "<div class=(this is not valid)></div>\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-body-only-if-no-condition/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div body-only-if></div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-body-only-if-no-condition/snapshots/generated-expected.marko",
    "content": "<div body-only-if/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-body-only-if-no-condition/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div body-only-if></div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-body-only-if-no-condition/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"R9S38zW\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div body-only-if></div>\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-body-only-if-no-condition/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-body-only-if-no-condition/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.e(\"div\", {\n    \"body-only-if\": \"\"\n  }, \"0\", _component, 0, 0);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-body-only-if-no-condition/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"R9S38zW\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_constElement from \"marko/dist/runtime/vdom/helpers/const-element.js\";\nconst _marko_node = _marko_constElement(\"div\", {\n  \"body-only-if\": \"\"\n}, 0);\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.n(_marko_node, _component);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-body-only-if-no-condition/template.marko",
    "content": "<div body-only-if/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-constructor/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:3\n      1 | class {\n    > 2 |   constructor() {\n        |   ^^^^^^^^^^^ The constructor method should not be used for a component, use onCreate instead.\n      3 |     \n      4 |   }\n      5 | }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-constructor/snapshots/generated-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:3\n      1 | class {\n    > 2 |   constructor() {\n        |   ^^^^^^^^^^^ The constructor method should not be used for a component, use onCreate instead.\n      3 |     \n      4 |   }\n      5 | }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-constructor/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:3\n      1 | class {\n    > 2 |   constructor() {\n        |   ^^^^^^^^^^^ The constructor method should not be used for a component, use onCreate instead.\n      3 |     \n      4 |   }\n      5 | }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-constructor/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:3\n      1 | class {\n    > 2 |   constructor() {\n        |   ^^^^^^^^^^^ The constructor method should not be used for a component, use onCreate instead.\n      3 |     \n      4 |   }\n      5 | }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-constructor/snapshots/hydrate-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:3\n      1 | class {\n    > 2 |   constructor() {\n        |   ^^^^^^^^^^^ The constructor method should not be used for a component, use onCreate instead.\n      3 |     \n      4 |   }\n      5 | }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-constructor/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:3\n      1 | class {\n    > 2 |   constructor() {\n        |   ^^^^^^^^^^^ The constructor method should not be used for a component, use onCreate instead.\n      3 |     \n      4 |   }\n      5 | }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-constructor/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:3\n      1 | class {\n    > 2 |   constructor() {\n        |   ^^^^^^^^^^^ The constructor method should not be used for a component, use onCreate instead.\n      3 |     \n      4 |   }\n      5 | }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-constructor/template.marko",
    "content": "class {\n  constructor() {\n    \n  }\n}\n<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-file-and-inline/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:1\n    > 1 | class {\n        | ^^^^^ A Marko file can either have an inline class, or an external \"component.js\", but not both.\n      2 |   onCreate() {\n      3 |\n      4 |   }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-file-and-inline/snapshots/generated-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:1\n    > 1 | class {\n        | ^^^^^ A Marko file can either have an inline class, or an external \"component.js\", but not both.\n      2 |   onCreate() {\n      3 |\n      4 |   }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-file-and-inline/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:1\n    > 1 | class {\n        | ^^^^^ A Marko file can either have an inline class, or an external \"component.js\", but not both.\n      2 |   onCreate() {\n      3 |\n      4 |   }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-file-and-inline/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:1\n    > 1 | class {\n        | ^^^^^ A Marko file can either have an inline class, or an external \"component.js\", but not both.\n      2 |   onCreate() {\n      3 |\n      4 |   }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-file-and-inline/snapshots/hydrate-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:1\n    > 1 | class {\n        | ^^^^^ A Marko file can either have an inline class, or an external \"component.js\", but not both.\n      2 |   onCreate() {\n      3 |\n      4 |   }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-file-and-inline/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:1\n    > 1 | class {\n        | ^^^^^ A Marko file can either have an inline class, or an external \"component.js\", but not both.\n      2 |   onCreate() {\n      3 |\n      4 |   }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-file-and-inline/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:1\n    > 1 | class {\n        | ^^^^^ A Marko file can either have an inline class, or an external \"component.js\", but not both.\n      2 |   onCreate() {\n      3 |\n      4 |   }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-file-and-inline/template.component.js",
    "content": "module.exports = {};\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-file-and-inline/template.marko",
    "content": "class {\n  onCreate() {\n\n  }\n}\n\n<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-not-root/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:3\n      1 | div\n    > 2 |   class extends Test {\n        |   ^^^^^ \"class\" can only be used at the root of the template.\n      3 |     onCreate() {\n      4 |\n      5 |     }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-not-root/snapshots/generated-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:3\n      1 | div\n    > 2 |   class extends Test {\n        |   ^^^^^ \"class\" can only be used at the root of the template.\n      3 |     onCreate() {\n      4 |\n      5 |     }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-not-root/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:3\n      1 | div\n    > 2 |   class extends Test {\n        |   ^^^^^ \"class\" can only be used at the root of the template.\n      3 |     onCreate() {\n      4 |\n      5 |     }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-not-root/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:3\n      1 | div\n    > 2 |   class extends Test {\n        |   ^^^^^ \"class\" can only be used at the root of the template.\n      3 |     onCreate() {\n      4 |\n      5 |     }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-not-root/snapshots/hydrate-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:3\n      1 | div\n    > 2 |   class extends Test {\n        |   ^^^^^ \"class\" can only be used at the root of the template.\n      3 |     onCreate() {\n      4 |\n      5 |     }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-not-root/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:3\n      1 | div\n    > 2 |   class extends Test {\n        |   ^^^^^ \"class\" can only be used at the root of the template.\n      3 |     onCreate() {\n      4 |\n      5 |     }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-not-root/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:3\n      1 | div\n    > 2 |   class extends Test {\n        |   ^^^^^ \"class\" can only be used at the root of the template.\n      3 |     onCreate() {\n      4 |\n      5 |     }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-not-root/template.marko",
    "content": "div\n  class extends Test {\n    onCreate() {\n\n    }\n  }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-private-properties/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:3\n      1 | class {\n    > 2 |   #x = 1;\n        |   ^^^^^^^ Unsupported class property on component.\n      3 | }\n      4 | <div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-private-properties/snapshots/generated-expected.marko",
    "content": "class {\n  #x = 1;\n}\n<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-private-properties/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:3\n      1 | class {\n    > 2 |   #x = 1;\n        |   ^^^^^^^ Unsupported class property on component.\n      3 | }\n      4 | <div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-private-properties/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:3\n      1 | class {\n    > 2 |   #x = 1;\n        |   ^^^^^^^ Unsupported class property on component.\n      3 | }\n      4 | <div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-private-properties/snapshots/hydrate-expected.js",
    "content": "import { init } from \"marko/src/runtime/components/index.js\";\nimport \"./template.marko\";\ninit();"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-private-properties/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:3\n      1 | class {\n    > 2 |   #x = 1;\n        |   ^^^^^^^ Unsupported class property on component.\n      3 | }\n      4 | <div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-private-properties/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:3\n      1 | class {\n    > 2 |   #x = 1;\n        |   ^^^^^^^ Unsupported class property on component.\n      3 | }\n      4 | <div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-private-properties/template.marko",
    "content": "class {\n  #x = 1;\n}\n<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-static-properties/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:3\n      1 | class {\n    > 2 |   static x = 1;\n        |   ^^^^^^^^^^^^^ Unsupported class property on component.\n      3 | }\n      4 | <div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-static-properties/snapshots/generated-expected.marko",
    "content": "class {\n  static x = 1;\n}\n<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-static-properties/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:3\n      1 | class {\n    > 2 |   static x = 1;\n        |   ^^^^^^^^^^^^^ Unsupported class property on component.\n      3 | }\n      4 | <div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-static-properties/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:3\n      1 | class {\n    > 2 |   static x = 1;\n        |   ^^^^^^^^^^^^^ Unsupported class property on component.\n      3 | }\n      4 | <div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-static-properties/snapshots/hydrate-expected.js",
    "content": "import { init } from \"marko/src/runtime/components/index.js\";\nimport \"./template.marko\";\ninit();"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-static-properties/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:3\n      1 | class {\n    > 2 |   static x = 1;\n        |   ^^^^^^^^^^^^^ Unsupported class property on component.\n      3 | }\n      4 | <div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-static-properties/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:3\n      1 | class {\n    > 2 |   static x = 1;\n        |   ^^^^^^^^^^^^^ Unsupported class property on component.\n      3 | }\n      4 | <div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-static-properties/template.marko",
    "content": "class {\n  static x = 1;\n}\n<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-syntax/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:7:9\n       5 |     }};\n       6 |     \n    >  7 |     this.hello = {\n         |         ^ Unexpected token\n       8 |     \tworld: true\n       9 |     };\n      10 |   }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-syntax/snapshots/generated-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:7:9\n       5 |     }};\n       6 |     \n    >  7 |     this.hello = {\n         |         ^ Unexpected token\n       8 |     \tworld: true\n       9 |     };\n      10 |   }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-syntax/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:7:9\n       5 |     }};\n       6 |     \n    >  7 |     this.hello = {\n         |         ^ Unexpected token\n       8 |     \tworld: true\n       9 |     };\n      10 |   }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-syntax/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:7:9\n       5 |     }};\n       6 |     \n    >  7 |     this.hello = {\n         |         ^ Unexpected token\n       8 |     \tworld: true\n       9 |     };\n      10 |   }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-syntax/snapshots/hydrate-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:7:9\n       5 |     }};\n       6 |     \n    >  7 |     this.hello = {\n         |         ^ Unexpected token\n       8 |     \tworld: true\n       9 |     };\n      10 |   }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-syntax/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:7:9\n       5 |     }};\n       6 |     \n    >  7 |     this.hello = {\n         |         ^ Unexpected token\n       8 |     \tworld: true\n       9 |     };\n      10 |   }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-syntax/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:7:9\n       5 |     }};\n       6 |     \n    >  7 |     this.hello = {\n         |         ^ Unexpected token\n       8 |     \tworld: true\n       9 |     };\n      10 |   }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-syntax/template.marko",
    "content": "class {\n  onCreate() {\n  \tthis.state = {\n    \tv : null\n    }};\n    \n    this.hello = {\n    \tworld: true\n    };\n  }\n  onFoo() {\n    console.log(\"bar\")\n  }\n}\n\n<div/>\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-tag-nested-content/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:7\n      1 | class {}\n    > 2 |  <div/>\n        |       ^ Unexpected token\n      3 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-tag-nested-content/snapshots/generated-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:7\n      1 | class {}\n    > 2 |  <div/>\n        |       ^ Unexpected token\n      3 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-tag-nested-content/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:7\n      1 | class {}\n    > 2 |  <div/>\n        |       ^ Unexpected token\n      3 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-tag-nested-content/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:7\n      1 | class {}\n    > 2 |  <div/>\n        |       ^ Unexpected token\n      3 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-tag-nested-content/snapshots/hydrate-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:7\n      1 | class {}\n    > 2 |  <div/>\n        |       ^ Unexpected token\n      3 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-tag-nested-content/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:7\n      1 | class {}\n    > 2 |  <div/>\n        |       ^ Unexpected token\n      3 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-tag-nested-content/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:7\n      1 | class {}\n    > 2 |  <div/>\n        |       ^ Unexpected token\n      3 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-tag-nested-content/template.marko",
    "content": "class {}\n <div/>\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-with-name/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {\n  onCreate() {}\n};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div></div>\");\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-with-name/snapshots/generated-expected.diagnostics.txt",
    "content": "deprecation[fixable](1:7-1:11): Component class should not have a name.\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-with-name/snapshots/generated-expected.marko",
    "content": "class {\n  onCreate() {}\n}\n<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-with-name/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {\n  onCreate() {}\n};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div></div>\");\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-with-name/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"Vm2860I\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {\n  onCreate() {}\n};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div></div>\");\n}, {\n  t: _marko_componentType\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-with-name/snapshots/hydrate-expected.js",
    "content": "import { init } from \"marko/src/runtime/components/index.js\";\nimport \"./template.marko\";\ninit();"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-with-name/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {\n  onCreate() {}\n};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.e(\"div\", null, \"0\", _component, 0, 0);\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-with-name/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"Vm2860I\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_constElement from \"marko/dist/runtime/vdom/helpers/const-element.js\";\nconst _marko_node = _marko_constElement(\"div\", null, 0);\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {\n  onCreate() {}\n};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.n(_marko_node, _component);\n}, {\n  t: _marko_componentType\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-with-name/template.marko",
    "content": "class Test {\n  onCreate() {\n\n  }\n}\n<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-with-super-class/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:15\n    > 1 | class extends Test {\n        |               ^^^^ Component class cannot have a super class.\n      2 |   onCreate() {\n      3 |\n      4 |   }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-with-super-class/snapshots/generated-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:15\n    > 1 | class extends Test {\n        |               ^^^^ Component class cannot have a super class.\n      2 |   onCreate() {\n      3 |\n      4 |   }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-with-super-class/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:15\n    > 1 | class extends Test {\n        |               ^^^^ Component class cannot have a super class.\n      2 |   onCreate() {\n      3 |\n      4 |   }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-with-super-class/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:15\n    > 1 | class extends Test {\n        |               ^^^^ Component class cannot have a super class.\n      2 |   onCreate() {\n      3 |\n      4 |   }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-with-super-class/snapshots/hydrate-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:15\n    > 1 | class extends Test {\n        |               ^^^^ Component class cannot have a super class.\n      2 |   onCreate() {\n      3 |\n      4 |   }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-with-super-class/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:15\n    > 1 | class extends Test {\n        |               ^^^^ Component class cannot have a super class.\n      2 |   onCreate() {\n      3 |\n      4 |   }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-with-super-class/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:15\n    > 1 | class extends Test {\n        |               ^^^^ Component class cannot have a super class.\n      2 |   onCreate() {\n      3 |\n      4 |   }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-class-with-super-class/template.marko",
    "content": "class extends Test {\n  onCreate() {\n\n  }\n}\n<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-custom-tag-arguments/components/custom-tag.marko",
    "content": "<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-custom-tag-arguments/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:13\n    > 1 | <custom-tag(a, b, { c })/>\n        |             ^^^^^^^^^^^ Tag does not support arguments."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-custom-tag-arguments/snapshots/generated-expected.marko",
    "content": "<custom-tag(a, b, {\n  c\n})/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-custom-tag-arguments/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:13\n    > 1 | <custom-tag(a, b, { c })/>\n        |             ^^^^^^^^^^^ Tag does not support arguments."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-custom-tag-arguments/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:13\n    > 1 | <custom-tag(a, b, { c })/>\n        |             ^^^^^^^^^^^ Tag does not support arguments."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-custom-tag-arguments/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-custom-tag-arguments/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:13\n    > 1 | <custom-tag(a, b, { c })/>\n        |             ^^^^^^^^^^^ Tag does not support arguments."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-custom-tag-arguments/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:13\n    > 1 | <custom-tag(a, b, { c })/>\n        |             ^^^^^^^^^^^ Tag does not support arguments."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-custom-tag-arguments/template.marko",
    "content": "<custom-tag(a, b, { c })/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-duplicate-event-handlers/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:19\n    > 1 | <div onClick('a') onClick('b')/>\n        |                   ^^^^^^^^^^^^ Duplicate event handlers are not supported."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-duplicate-event-handlers/snapshots/generated-expected.marko",
    "content": "<div onClick('a') onClick('b')/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-duplicate-event-handlers/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:19\n    > 1 | <div onClick('a') onClick('b')/>\n        |                   ^^^^^^^^^^^^ Duplicate event handlers are not supported."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-duplicate-event-handlers/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:19\n    > 1 | <div onClick('a') onClick('b')/>\n        |                   ^^^^^^^^^^^^ Duplicate event handlers are not supported."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-duplicate-event-handlers/snapshots/hydrate-expected.js",
    "content": "import { register, init } from \"marko/src/runtime/components/index.js\";\nimport component_0 from \"marko/src/runtime/helpers/empty-component.js\";\nregister(\"__tests__/template.marko\", component_0);\ninit();"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-duplicate-event-handlers/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:19\n    > 1 | <div onClick('a') onClick('b')/>\n        |                   ^^^^^^^^^^^^ Duplicate event handlers are not supported."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-duplicate-event-handlers/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:19\n    > 1 | <div onClick('a') onClick('b')/>\n        |                   ^^^^^^^^^^^^ Duplicate event handlers are not supported."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-duplicate-event-handlers/template.marko",
    "content": "<div onClick('a') onClick('b')/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-dynamic-tag-no-value/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:4\n    > 1 | <${}/>\n        |    ^ Invalid placeholder, the expression cannot be missing\n      2 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-dynamic-tag-no-value/snapshots/generated-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:4\n    > 1 | <${}/>\n        |    ^ Invalid placeholder, the expression cannot be missing\n      2 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-dynamic-tag-no-value/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:4\n    > 1 | <${}/>\n        |    ^ Invalid placeholder, the expression cannot be missing\n      2 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-dynamic-tag-no-value/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:4\n    > 1 | <${}/>\n        |    ^ Invalid placeholder, the expression cannot be missing\n      2 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-dynamic-tag-no-value/snapshots/hydrate-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:4\n    > 1 | <${}/>\n        |    ^ Invalid placeholder, the expression cannot be missing\n      2 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-dynamic-tag-no-value/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:4\n    > 1 | <${}/>\n        |    ^ Invalid placeholder, the expression cannot be missing\n      2 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-dynamic-tag-no-value/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:4\n    > 1 | <${}/>\n        |    ^ Invalid placeholder, the expression cannot be missing\n      2 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-dynamic-tag-no-value/template.marko",
    "content": "<${}/>\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-else-if-tag-missing-if/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:4:2\n      2 | </if>\n      3 | <div/>\n    > 4 | <else>\n        |  ^^^^ Invalid 'else' tag, expected preceding 'if' or 'else-if' tag.\n      5 | </else>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-else-if-tag-missing-if/snapshots/generated-expected.marko",
    "content": "<if(x)/>\n<div/>\n<else/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-else-if-tag-missing-if/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:4:2\n      2 | </if>\n      3 | <div/>\n    > 4 | <else>\n        |  ^^^^ Invalid 'else' tag, expected preceding 'if' or 'else-if' tag.\n      5 | </else>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-else-if-tag-missing-if/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:4:2\n      2 | </if>\n      3 | <div/>\n    > 4 | <else>\n        |  ^^^^ Invalid 'else' tag, expected preceding 'if' or 'else-if' tag.\n      5 | </else>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-else-if-tag-missing-if/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-else-if-tag-missing-if/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:4:2\n      2 | </if>\n      3 | <div/>\n    > 4 | <else>\n        |  ^^^^ Invalid 'else' tag, expected preceding 'if' or 'else-if' tag.\n      5 | </else>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-else-if-tag-missing-if/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:4:2\n      2 | </if>\n      3 | <div/>\n    > 4 | <else>\n        |  ^^^^ Invalid 'else' tag, expected preceding 'if' or 'else-if' tag.\n      5 | </else>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-else-if-tag-missing-if/template.marko",
    "content": "<if(x)>\n</if>\n<div/>\n<else>\n</else>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-else-tag-missing-if/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <else>\n        |  ^^^^ Invalid 'else' tag, expected preceding 'if' or 'else-if' tag.\n      2 |   Hello\n      3 | </else>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-else-tag-missing-if/snapshots/generated-expected.marko",
    "content": "<else>\n  Hello\n</else>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-else-tag-missing-if/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <else>\n        |  ^^^^ Invalid 'else' tag, expected preceding 'if' or 'else-if' tag.\n      2 |   Hello\n      3 | </else>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-else-tag-missing-if/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <else>\n        |  ^^^^ Invalid 'else' tag, expected preceding 'if' or 'else-if' tag.\n      2 |   Hello\n      3 | </else>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-else-tag-missing-if/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-else-tag-missing-if/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <else>\n        |  ^^^^ Invalid 'else' tag, expected preceding 'if' or 'else-if' tag.\n      2 |   Hello\n      3 | </else>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-else-tag-missing-if/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <else>\n        |  ^^^^ Invalid 'else' tag, expected preceding 'if' or 'else-if' tag.\n      2 |   Hello\n      3 | </else>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-else-tag-missing-if/template.marko",
    "content": "<else>\n  Hello\n</else>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-eof/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:7\n    > 1 | style {\n        |       ^ EOF reached while parsing attribute name for the \"style\" tag\n      2 |   div {\n      3 |     color: green;\n      4 | }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-eof/snapshots/generated-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:7\n    > 1 | style {\n        |       ^ EOF reached while parsing attribute name for the \"style\" tag\n      2 |   div {\n      3 |     color: green;\n      4 | }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-eof/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:7\n    > 1 | style {\n        |       ^ EOF reached while parsing attribute name for the \"style\" tag\n      2 |   div {\n      3 |     color: green;\n      4 | }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-eof/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:7\n    > 1 | style {\n        |       ^ EOF reached while parsing attribute name for the \"style\" tag\n      2 |   div {\n      3 |     color: green;\n      4 | }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-eof/snapshots/hydrate-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:7\n    > 1 | style {\n        |       ^ EOF reached while parsing attribute name for the \"style\" tag\n      2 |   div {\n      3 |     color: green;\n      4 | }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-eof/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:7\n    > 1 | style {\n        |       ^ EOF reached while parsing attribute name for the \"style\" tag\n      2 |   div {\n      3 |     color: green;\n      4 | }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-eof/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:7\n    > 1 | style {\n        |       ^ EOF reached while parsing attribute name for the \"style\" tag\n      2 |   div {\n      3 |     color: green;\n      4 | }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-eof/template.marko",
    "content": "style {\n  div {\n    color: green;\n}\n\n<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-event-handler-missing-args/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:6\n    > 1 | <div onClick()/>\n        |      ^^^^^^^^^ Event handler is missing arguments."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-event-handler-missing-args/snapshots/generated-expected.marko",
    "content": "<div onClick/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-event-handler-missing-args/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:6\n    > 1 | <div onClick()/>\n        |      ^^^^^^^^^ Event handler is missing arguments."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-event-handler-missing-args/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:6\n    > 1 | <div onClick()/>\n        |      ^^^^^^^^^ Event handler is missing arguments."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-event-handler-missing-args/snapshots/hydrate-expected.js",
    "content": "import { init } from \"marko/src/runtime/components/index.js\";\nimport \"./template.marko\";\ninit();"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-event-handler-missing-args/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:6\n    > 1 | <div onClick()/>\n        |      ^^^^^^^^^ Event handler is missing arguments."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-event-handler-missing-args/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:6\n    > 1 | <div onClick()/>\n        |      ^^^^^^^^^ Event handler is missing arguments."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-event-handler-missing-args/template.marko",
    "content": "<div onClick()/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-event-handler-value/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:19\n    > 1 | <div onClick('a')=b/>\n        |                   ^ \"onClick(handler, ...args)\" does not accept a value."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-event-handler-value/snapshots/generated-expected.marko",
    "content": "<div onClick('a')=b/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-event-handler-value/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:19\n    > 1 | <div onClick('a')=b/>\n        |                   ^ \"onClick(handler, ...args)\" does not accept a value."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-event-handler-value/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:19\n    > 1 | <div onClick('a')=b/>\n        |                   ^ \"onClick(handler, ...args)\" does not accept a value."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-event-handler-value/snapshots/hydrate-expected.js",
    "content": "import { register, init } from \"marko/src/runtime/components/index.js\";\nimport component_0 from \"marko/src/runtime/helpers/empty-component.js\";\nregister(\"__tests__/template.marko\", component_0);\ninit();"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-event-handler-value/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:19\n    > 1 | <div onClick('a')=b/>\n        |                   ^ \"onClick(handler, ...args)\" does not accept a value."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-event-handler-value/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:19\n    > 1 | <div onClick('a')=b/>\n        |                   ^ \"onClick(handler, ...args)\" does not accept a value."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-event-handler-value/template.marko",
    "content": "<div onClick('a')=b/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-export-tag-nested-content/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:6\n      1 | export { a } from \"b\";\n    > 2 |  <div/>\n        |      ^ Unexpected token, expected \",\"\n      3 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-export-tag-nested-content/snapshots/generated-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:6\n      1 | export { a } from \"b\";\n    > 2 |  <div/>\n        |      ^ Unexpected token, expected \",\"\n      3 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-export-tag-nested-content/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:6\n      1 | export { a } from \"b\";\n    > 2 |  <div/>\n        |      ^ Unexpected token, expected \",\"\n      3 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-export-tag-nested-content/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:6\n      1 | export { a } from \"b\";\n    > 2 |  <div/>\n        |      ^ Unexpected token, expected \",\"\n      3 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-export-tag-nested-content/snapshots/hydrate-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:6\n      1 | export { a } from \"b\";\n    > 2 |  <div/>\n        |      ^ Unexpected token, expected \",\"\n      3 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-export-tag-nested-content/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:6\n      1 | export { a } from \"b\";\n    > 2 |  <div/>\n        |      ^ Unexpected token, expected \",\"\n      3 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-export-tag-nested-content/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:6\n      1 | export { a } from \"b\";\n    > 2 |  <div/>\n        |      ^ Unexpected token, expected \",\"\n      3 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-export-tag-nested-content/template.marko",
    "content": "export { a } from \"b\";\n <div/>\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-export-tag-root-only/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:4\n      1 | <div>\n    > 2 |   <export x from \"y\"/>\n        |    ^^^^^^ The \"export\" tag is reserved and cannot be used as an HTML tag.\n      3 | </div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-export-tag-root-only/snapshots/generated-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:4\n      1 | <div>\n    > 2 |   <export x from \"y\"/>\n        |    ^^^^^^ The \"export\" tag is reserved and cannot be used as an HTML tag.\n      3 | </div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-export-tag-root-only/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:4\n      1 | <div>\n    > 2 |   <export x from \"y\"/>\n        |    ^^^^^^ The \"export\" tag is reserved and cannot be used as an HTML tag.\n      3 | </div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-export-tag-root-only/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:4\n      1 | <div>\n    > 2 |   <export x from \"y\"/>\n        |    ^^^^^^ The \"export\" tag is reserved and cannot be used as an HTML tag.\n      3 | </div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-export-tag-root-only/snapshots/hydrate-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:4\n      1 | <div>\n    > 2 |   <export x from \"y\"/>\n        |    ^^^^^^ The \"export\" tag is reserved and cannot be used as an HTML tag.\n      3 | </div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-export-tag-root-only/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:4\n      1 | <div>\n    > 2 |   <export x from \"y\"/>\n        |    ^^^^^^ The \"export\" tag is reserved and cannot be used as an HTML tag.\n      3 | </div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-export-tag-root-only/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:4\n      1 | <div>\n    > 2 |   <export x from \"y\"/>\n        |    ^^^^^^ The \"export\" tag is reserved and cannot be used as an HTML tag.\n      3 | </div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-export-tag-root-only/template.marko",
    "content": "<div>\n  <export x from \"y\"/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-for-in-missing-params/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <for|| in=x>\n        |  ^^^ Invalid 'for in' tag, missing |key, value| params.\n      2 |   <div/>\n      3 | </for>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-for-in-missing-params/snapshots/generated-expected.marko",
    "content": "<for in=x>\n  <div/>\n</for>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-for-in-missing-params/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <for|| in=x>\n        |  ^^^ Invalid 'for in' tag, missing |key, value| params.\n      2 |   <div/>\n      3 | </for>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-for-in-missing-params/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <for|| in=x>\n        |  ^^^ Invalid 'for in' tag, missing |key, value| params.\n      2 |   <div/>\n      3 | </for>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-for-in-missing-params/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-for-in-missing-params/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <for|| in=x>\n        |  ^^^ Invalid 'for in' tag, missing |key, value| params.\n      2 |   <div/>\n      3 | </for>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-for-in-missing-params/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <for|| in=x>\n        |  ^^^ Invalid 'for in' tag, missing |key, value| params.\n      2 |   <div/>\n      3 | </for>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-for-in-missing-params/template.marko",
    "content": "<for|| in=x>\n  <div/>\n</for>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-for-invalid-attribute/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:25\n    > 1 | <for|key, value| in=obj x=1>\n        |                         ^^^ <for> does not support the \"x\" attribute.\n      2 |   <div/>\n      3 | </for>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-for-invalid-attribute/snapshots/generated-expected.marko",
    "content": "<for|key, value| in=obj x=1>\n  <div/>\n</for>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-for-invalid-attribute/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:25\n    > 1 | <for|key, value| in=obj x=1>\n        |                         ^^^ <for> does not support the \"x\" attribute.\n      2 |   <div/>\n      3 | </for>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-for-invalid-attribute/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:25\n    > 1 | <for|key, value| in=obj x=1>\n        |                         ^^^ <for> does not support the \"x\" attribute.\n      2 |   <div/>\n      3 | </for>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-for-invalid-attribute/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-for-invalid-attribute/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:25\n    > 1 | <for|key, value| in=obj x=1>\n        |                         ^^^ <for> does not support the \"x\" attribute.\n      2 |   <div/>\n      3 | </for>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-for-invalid-attribute/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:25\n    > 1 | <for|key, value| in=obj x=1>\n        |                         ^^^ <for> does not support the \"x\" attribute.\n      2 |   <div/>\n      3 | </for>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-for-invalid-attribute/template.marko",
    "content": "<for|key, value| in=obj x=1>\n  <div/>\n</for>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-for-missing-attr/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <for|x|>\n        |  ^^^ Invalid 'for' tag, missing an 'of', 'in' or 'to' attribute.\n      2 |   <div/>\n      3 | </for>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-for-missing-attr/snapshots/generated-expected.marko",
    "content": "<for|x|>\n  <div/>\n</for>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-for-missing-attr/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <for|x|>\n        |  ^^^ Invalid 'for' tag, missing an 'of', 'in' or 'to' attribute.\n      2 |   <div/>\n      3 | </for>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-for-missing-attr/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <for|x|>\n        |  ^^^ Invalid 'for' tag, missing an 'of', 'in' or 'to' attribute.\n      2 |   <div/>\n      3 | </for>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-for-missing-attr/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-for-missing-attr/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <for|x|>\n        |  ^^^ Invalid 'for' tag, missing an 'of', 'in' or 'to' attribute.\n      2 |   <div/>\n      3 | </for>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-for-missing-attr/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <for|x|>\n        |  ^^^ Invalid 'for' tag, missing an 'of', 'in' or 'to' attribute.\n      2 |   <div/>\n      3 | </for>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-for-missing-attr/template.marko",
    "content": "<for|x|>\n  <div/>\n</for>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-for-of-missing-params/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <for|| of=x>\n        |  ^^^ Invalid 'for of' tag, missing |value, index| params.\n      2 |   <div/>\n      3 | </for>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-for-of-missing-params/snapshots/generated-expected.marko",
    "content": "<for of=x>\n  <div/>\n</for>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-for-of-missing-params/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <for|| of=x>\n        |  ^^^ Invalid 'for of' tag, missing |value, index| params.\n      2 |   <div/>\n      3 | </for>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-for-of-missing-params/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <for|| of=x>\n        |  ^^^ Invalid 'for of' tag, missing |value, index| params.\n      2 |   <div/>\n      3 | </for>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-for-of-missing-params/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-for-of-missing-params/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <for|| of=x>\n        |  ^^^ Invalid 'for of' tag, missing |value, index| params.\n      2 |   <div/>\n      3 | </for>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-for-of-missing-params/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <for|| of=x>\n        |  ^^^ Invalid 'for of' tag, missing |value, index| params.\n      2 |   <div/>\n      3 | </for>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-for-of-missing-params/template.marko",
    "content": "<for|| of=x>\n  <div/>\n</for>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-html-element-arguments/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:6\n    > 1 | <div(a, b, { c })/>\n        |      ^^^^^^^^^^^ Tag does not support arguments."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-html-element-arguments/snapshots/generated-expected.marko",
    "content": "<div(a, b, {\n  c\n})/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-html-element-arguments/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:6\n    > 1 | <div(a, b, { c })/>\n        |      ^^^^^^^^^^^ Tag does not support arguments."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-html-element-arguments/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:6\n    > 1 | <div(a, b, { c })/>\n        |      ^^^^^^^^^^^ Tag does not support arguments."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-html-element-arguments/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-html-element-arguments/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:6\n    > 1 | <div(a, b, { c })/>\n        |      ^^^^^^^^^^^ Tag does not support arguments."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-html-element-arguments/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:6\n    > 1 | <div(a, b, { c })/>\n        |      ^^^^^^^^^^^ Tag does not support arguments."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-html-element-arguments/template.marko",
    "content": "<div(a, b, { c })/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-id-shorthand-and-attribute/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:8\n    > 1 | <div#x id=\"y\"/>\n        |        ^^^^^^ Cannot have shorthand id and id attribute."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-id-shorthand-and-attribute/snapshots/generated-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:8\n    > 1 | <div#x id=\"y\"/>\n        |        ^^^^^^ Cannot have shorthand id and id attribute."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-id-shorthand-and-attribute/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:8\n    > 1 | <div#x id=\"y\"/>\n        |        ^^^^^^ Cannot have shorthand id and id attribute."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-id-shorthand-and-attribute/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:8\n    > 1 | <div#x id=\"y\"/>\n        |        ^^^^^^ Cannot have shorthand id and id attribute."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-id-shorthand-and-attribute/snapshots/hydrate-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:8\n    > 1 | <div#x id=\"y\"/>\n        |        ^^^^^^ Cannot have shorthand id and id attribute."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-id-shorthand-and-attribute/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:8\n    > 1 | <div#x id=\"y\"/>\n        |        ^^^^^^ Cannot have shorthand id and id attribute."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-id-shorthand-and-attribute/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:8\n    > 1 | <div#x id=\"y\"/>\n        |        ^^^^^^ Cannot have shorthand id and id attribute."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-id-shorthand-and-attribute/template.marko",
    "content": "<div#x id=\"y\"/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-if-missing-condition/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <if>\n        |  ^^ Invalid '<if>' tag, expected arguments like '<if(test)>'.\n      2 |   Test\n      3 | </if>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-if-missing-condition/snapshots/generated-expected.marko",
    "content": "<if>\n  Test\n</if>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-if-missing-condition/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <if>\n        |  ^^ Invalid '<if>' tag, expected arguments like '<if(test)>'.\n      2 |   Test\n      3 | </if>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-if-missing-condition/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <if>\n        |  ^^ Invalid '<if>' tag, expected arguments like '<if(test)>'.\n      2 |   Test\n      3 | </if>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-if-missing-condition/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-if-missing-condition/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <if>\n        |  ^^ Invalid '<if>' tag, expected arguments like '<if(test)>'.\n      2 |   Test\n      3 | </if>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-if-missing-condition/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <if>\n        |  ^^ Invalid '<if>' tag, expected arguments like '<if(test)>'.\n      2 |   Test\n      3 | </if>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-if-missing-condition/template.marko",
    "content": "<if>\n  Test\n</if>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-import-tag-component-missing/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:30\n    > 1 | import MissingComponent from \"<missing-component>\"\n        |                              ^^^^^^^^^^^^^^^^^^^^^ Unable to find entry point for custom tag <missing-component>."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-import-tag-component-missing/snapshots/generated-expected.marko",
    "content": "import MissingComponent from \"<missing-component>\";"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-import-tag-component-missing/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:30\n    > 1 | import MissingComponent from \"<missing-component>\"\n        |                              ^^^^^^^^^^^^^^^^^^^^^ Unable to find entry point for custom tag <missing-component>."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-import-tag-component-missing/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:30\n    > 1 | import MissingComponent from \"<missing-component>\"\n        |                              ^^^^^^^^^^^^^^^^^^^^^ Unable to find entry point for custom tag <missing-component>."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-import-tag-component-missing/snapshots/hydrate-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:30\n    > 1 | import MissingComponent from \"<missing-component>\"\n        |                              ^^^^^^^^^^^^^^^^^^^^^ Unable to find entry point for custom tag <missing-component>."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-import-tag-component-missing/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:30\n    > 1 | import MissingComponent from \"<missing-component>\"\n        |                              ^^^^^^^^^^^^^^^^^^^^^ Unable to find entry point for custom tag <missing-component>."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-import-tag-component-missing/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:30\n    > 1 | import MissingComponent from \"<missing-component>\"\n        |                              ^^^^^^^^^^^^^^^^^^^^^ Unable to find entry point for custom tag <missing-component>."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-import-tag-component-missing/template.marko",
    "content": "import MissingComponent from \"<missing-component>\""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-import-tag-nested-content/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:6\n      1 | import a from \"b\";\n    > 2 |  <div/>\n        |      ^ Unexpected token, expected \",\"\n      3 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-import-tag-nested-content/snapshots/generated-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:6\n      1 | import a from \"b\";\n    > 2 |  <div/>\n        |      ^ Unexpected token, expected \",\"\n      3 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-import-tag-nested-content/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:6\n      1 | import a from \"b\";\n    > 2 |  <div/>\n        |      ^ Unexpected token, expected \",\"\n      3 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-import-tag-nested-content/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:6\n      1 | import a from \"b\";\n    > 2 |  <div/>\n        |      ^ Unexpected token, expected \",\"\n      3 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-import-tag-nested-content/snapshots/hydrate-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:6\n      1 | import a from \"b\";\n    > 2 |  <div/>\n        |      ^ Unexpected token, expected \",\"\n      3 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-import-tag-nested-content/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:6\n      1 | import a from \"b\";\n    > 2 |  <div/>\n        |      ^ Unexpected token, expected \",\"\n      3 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-import-tag-nested-content/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:6\n      1 | import a from \"b\";\n    > 2 |  <div/>\n        |      ^ Unexpected token, expected \",\"\n      3 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-import-tag-nested-content/template.marko",
    "content": "import a from \"b\";\n <div/>\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-import-tag-root-only/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:4\n      1 | <div>\n    > 2 |   <import x from \"y\"/>\n        |    ^^^^^^ The \"import\" tag is reserved and cannot be used as an HTML tag.\n      3 | </div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-import-tag-root-only/snapshots/generated-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:4\n      1 | <div>\n    > 2 |   <import x from \"y\"/>\n        |    ^^^^^^ The \"import\" tag is reserved and cannot be used as an HTML tag.\n      3 | </div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-import-tag-root-only/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:4\n      1 | <div>\n    > 2 |   <import x from \"y\"/>\n        |    ^^^^^^ The \"import\" tag is reserved and cannot be used as an HTML tag.\n      3 | </div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-import-tag-root-only/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:4\n      1 | <div>\n    > 2 |   <import x from \"y\"/>\n        |    ^^^^^^ The \"import\" tag is reserved and cannot be used as an HTML tag.\n      3 | </div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-import-tag-root-only/snapshots/hydrate-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:4\n      1 | <div>\n    > 2 |   <import x from \"y\"/>\n        |    ^^^^^^ The \"import\" tag is reserved and cannot be used as an HTML tag.\n      3 | </div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-import-tag-root-only/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:4\n      1 | <div>\n    > 2 |   <import x from \"y\"/>\n        |    ^^^^^^ The \"import\" tag is reserved and cannot be used as an HTML tag.\n      3 | </div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-import-tag-root-only/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:4\n      1 | <div>\n    > 2 |   <import x from \"y\"/>\n        |    ^^^^^^ The \"import\" tag is reserved and cannot be used as an HTML tag.\n      3 | </div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-import-tag-root-only/template.marko",
    "content": "<div>\n  <import x from \"y\"/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-invalid-js/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:5\n    > 1 | $ x..y();\n        |     ^ Unexpected token\n      2 | <div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-invalid-js/snapshots/generated-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:5\n    > 1 | $ x..y();\n        |     ^ Unexpected token\n      2 | <div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-invalid-js/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:5\n    > 1 | $ x..y();\n        |     ^ Unexpected token\n      2 | <div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-invalid-js/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:5\n    > 1 | $ x..y();\n        |     ^ Unexpected token\n      2 | <div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-invalid-js/snapshots/hydrate-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:5\n    > 1 | $ x..y();\n        |     ^ Unexpected token\n      2 | <div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-invalid-js/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:5\n    > 1 | $ x..y();\n        |     ^ Unexpected token\n      2 | <div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-invalid-js/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:5\n    > 1 | $ x..y();\n        |     ^ Unexpected token\n      2 | <div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-invalid-js/template.marko",
    "content": "$ x..y();\n<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-macro-invalid-attributes/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:28\n    > 1 | <macro|stuff| name=\"thing\" x=1>\n        |                            ^^^ <macro> does not support the \"x\" attribute.\n      2 |   <div/>\n      3 | </macro>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-macro-invalid-attributes/snapshots/generated-expected.marko",
    "content": "<macro|stuff| name=\"thing\" x=1>\n  <div/>\n</macro>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-macro-invalid-attributes/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:28\n    > 1 | <macro|stuff| name=\"thing\" x=1>\n        |                            ^^^ <macro> does not support the \"x\" attribute.\n      2 |   <div/>\n      3 | </macro>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-macro-invalid-attributes/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:28\n    > 1 | <macro|stuff| name=\"thing\" x=1>\n        |                            ^^^ <macro> does not support the \"x\" attribute.\n      2 |   <div/>\n      3 | </macro>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-macro-invalid-attributes/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-macro-invalid-attributes/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:28\n    > 1 | <macro|stuff| name=\"thing\" x=1>\n        |                            ^^^ <macro> does not support the \"x\" attribute.\n      2 |   <div/>\n      3 | </macro>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-macro-invalid-attributes/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:28\n    > 1 | <macro|stuff| name=\"thing\" x=1>\n        |                            ^^^ <macro> does not support the \"x\" attribute.\n      2 |   <div/>\n      3 | </macro>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-macro-invalid-attributes/template.marko",
    "content": "<macro|stuff| name=\"thing\" x=1>\n  <div/>\n</macro>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-macro-invalid-name-attribute/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:15\n    > 1 | <macro|stuff| name=1>\n        |               ^^^^^^ The 'name' attribute for 'macro' tags must be a string literal.\n      2 |   <div/>\n      3 | </macro>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-macro-invalid-name-attribute/snapshots/generated-expected.marko",
    "content": "<macro|stuff| name=1>\n  <div/>\n</macro>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-macro-invalid-name-attribute/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:15\n    > 1 | <macro|stuff| name=1>\n        |               ^^^^^^ The 'name' attribute for 'macro' tags must be a string literal.\n      2 |   <div/>\n      3 | </macro>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-macro-invalid-name-attribute/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:15\n    > 1 | <macro|stuff| name=1>\n        |               ^^^^^^ The 'name' attribute for 'macro' tags must be a string literal.\n      2 |   <div/>\n      3 | </macro>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-macro-invalid-name-attribute/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-macro-invalid-name-attribute/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:15\n    > 1 | <macro|stuff| name=1>\n        |               ^^^^^^ The 'name' attribute for 'macro' tags must be a string literal.\n      2 |   <div/>\n      3 | </macro>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-macro-invalid-name-attribute/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:15\n    > 1 | <macro|stuff| name=1>\n        |               ^^^^^^ The 'name' attribute for 'macro' tags must be a string literal.\n      2 |   <div/>\n      3 | </macro>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-macro-invalid-name-attribute/template.marko",
    "content": "<macro|stuff| name=1>\n  <div/>\n</macro>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-macro-missing-name/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:1\n    > 1 | <macro|stuff|>\n        | ^ The 'macro' tag must have a 'name' attribute.\n      2 |   <div/>\n      3 | </macro>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-macro-missing-name/snapshots/generated-expected.marko",
    "content": "<macro|stuff|>\n  <div/>\n</macro>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-macro-missing-name/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:1\n    > 1 | <macro|stuff|>\n        | ^ The 'macro' tag must have a 'name' attribute.\n      2 |   <div/>\n      3 | </macro>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-macro-missing-name/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:1\n    > 1 | <macro|stuff|>\n        | ^ The 'macro' tag must have a 'name' attribute.\n      2 |   <div/>\n      3 | </macro>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-macro-missing-name/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-macro-missing-name/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:1\n    > 1 | <macro|stuff|>\n        | ^ The 'macro' tag must have a 'name' attribute.\n      2 |   <div/>\n      3 | </macro>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-macro-missing-name/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:1\n    > 1 | <macro|stuff|>\n        | ^ The 'macro' tag must have a 'name' attribute.\n      2 |   <div/>\n      3 | </macro>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-macro-missing-name/template.marko",
    "content": "<macro|stuff|>\n  <div/>\n</macro>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-mismatched-closing-tag/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:4:1\n      2 |   <span>\n      3 |   <span>\n    > 4 | </div>\n        | ^^^^^^ The closing \"div\" tag does not match the corresponding opening \"span\" tag"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-mismatched-closing-tag/snapshots/generated-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:4:1\n      2 |   <span>\n      3 |   <span>\n    > 4 | </div>\n        | ^^^^^^ The closing \"div\" tag does not match the corresponding opening \"span\" tag"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-mismatched-closing-tag/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:4:1\n      2 |   <span>\n      3 |   <span>\n    > 4 | </div>\n        | ^^^^^^ The closing \"div\" tag does not match the corresponding opening \"span\" tag"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-mismatched-closing-tag/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:4:1\n      2 |   <span>\n      3 |   <span>\n    > 4 | </div>\n        | ^^^^^^ The closing \"div\" tag does not match the corresponding opening \"span\" tag"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-mismatched-closing-tag/snapshots/hydrate-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:4:1\n      2 |   <span>\n      3 |   <span>\n    > 4 | </div>\n        | ^^^^^^ The closing \"div\" tag does not match the corresponding opening \"span\" tag"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-mismatched-closing-tag/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:4:1\n      2 |   <span>\n      3 |   <span>\n    > 4 | </div>\n        | ^^^^^^ The closing \"div\" tag does not match the corresponding opening \"span\" tag"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-mismatched-closing-tag/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:4:1\n      2 |   <span>\n      3 |   <span>\n    > 4 | </div>\n        | ^^^^^^ The closing \"div\" tag does not match the corresponding opening \"span\" tag"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-mismatched-closing-tag/template.marko",
    "content": "<div>\n  <span>\n  <span>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-attribute-from-tag-def/components/custom-tag/index.marko",
    "content": "<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-attribute-from-tag-def/components/custom-tag/marko-tag.json",
    "content": "{\n  \"@name\": \"string\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-attribute-from-tag-def/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:23\n    > 1 | <custom-tag name=\"hi\" x=1/>\n        |                       ^^^ <custom-tag> does not support the \"x\" attribute.\n      2 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-attribute-from-tag-def/snapshots/generated-expected.marko",
    "content": "<custom-tag name=\"hi\" x=1/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-attribute-from-tag-def/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:23\n    > 1 | <custom-tag name=\"hi\" x=1/>\n        |                       ^^^ <custom-tag> does not support the \"x\" attribute.\n      2 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-attribute-from-tag-def/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:23\n    > 1 | <custom-tag name=\"hi\" x=1/>\n        |                       ^^^ <custom-tag> does not support the \"x\" attribute.\n      2 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-attribute-from-tag-def/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-attribute-from-tag-def/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:23\n    > 1 | <custom-tag name=\"hi\" x=1/>\n        |                       ^^^ <custom-tag> does not support the \"x\" attribute.\n      2 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-attribute-from-tag-def/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:23\n    > 1 | <custom-tag name=\"hi\" x=1/>\n        |                       ^^^ <custom-tag> does not support the \"x\" attribute.\n      2 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-attribute-from-tag-def/template.marko",
    "content": "<custom-tag name=\"hi\" x=1/>\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-component-missing-file/marko.json",
    "content": "{\n  \"<thing>\": {}\n}\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-component-missing-file/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <thing/>\n        |  ^^^^^ Unable to find entry point for custom tag <thing>."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-component-missing-file/snapshots/generated-expected.marko",
    "content": "<thing/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-component-missing-file/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <thing/>\n        |  ^^^^^ Unable to find entry point for custom tag <thing>."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-component-missing-file/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <thing/>\n        |  ^^^^^ Unable to find entry point for custom tag <thing>."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-component-missing-file/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-component-missing-file/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <thing/>\n        |  ^^^^^ Unable to find entry point for custom tag <thing>."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-component-missing-file/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <thing/>\n        |  ^^^^^ Unable to find entry point for custom tag <thing>."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-component-missing-file/template.marko",
    "content": "<thing/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-entry-marko-json/marko.json",
    "content": "{\n  \"<some-tag\": {}\n}\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-entry-marko-json/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <some-tag/>\n        |  ^^^^^^^^ Unable to find entry point for custom tag <some-tag>."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-entry-marko-json/snapshots/generated-expected.marko",
    "content": "<some-tag/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-entry-marko-json/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <some-tag/>\n        |  ^^^^^^^^ Unable to find entry point for custom tag <some-tag>."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-entry-marko-json/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <some-tag/>\n        |  ^^^^^^^^ Unable to find entry point for custom tag <some-tag>."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-entry-marko-json/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-entry-marko-json/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <some-tag/>\n        |  ^^^^^^^^ Unable to find entry point for custom tag <some-tag>."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-entry-marko-json/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <some-tag/>\n        |  ^^^^^^^^ Unable to find entry point for custom tag <some-tag>."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-entry-marko-json/template.marko",
    "content": "<some-tag/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-entry-marko-tag-json/components/some-tag/marko-tag.json",
    "content": "{\n  \"@a\": \"string\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-entry-marko-tag-json/snapshots/cjs-error-expected.txt",
    "content": "Error: Invalid tag file: __tests__/components/some-tag/marko-tag.json. Neither a renderer or a template was found for tag. {\n  \"@a\": \"string\"\n}"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-entry-marko-tag-json/snapshots/generated-error-expected.txt",
    "content": "Error: Invalid tag file: __tests__/components/some-tag/marko-tag.json. Neither a renderer or a template was found for tag. {\n  \"@a\": \"string\"\n}"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-entry-marko-tag-json/snapshots/generated-expected.marko",
    "content": "<some-tag/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-entry-marko-tag-json/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <some-tag/>\n        |  ^^^^^^^^ Unable to find entry point for custom tag <some-tag>."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-entry-marko-tag-json/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <some-tag/>\n        |  ^^^^^^^^ Unable to find entry point for custom tag <some-tag>."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-entry-marko-tag-json/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-entry-marko-tag-json/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <some-tag/>\n        |  ^^^^^^^^ Unable to find entry point for custom tag <some-tag>."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-entry-marko-tag-json/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <some-tag/>\n        |  ^^^^^^^^ Unable to find entry point for custom tag <some-tag>."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-entry-marko-tag-json/template.marko",
    "content": "<some-tag/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-required-attr/components/custom-tag/index.marko",
    "content": "<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-required-attr/components/custom-tag/marko-tag.json",
    "content": "{\n  \"@name\": {\n    \"type\": \"string\",\n    \"required\": true\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-required-attr/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <custom-tag/>\n        |  ^^^^^^^^^^ The \"name\" attribute is required.\n      2 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-required-attr/snapshots/generated-expected.marko",
    "content": "<custom-tag/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-required-attr/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <custom-tag/>\n        |  ^^^^^^^^^^ The \"name\" attribute is required.\n      2 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-required-attr/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <custom-tag/>\n        |  ^^^^^^^^^^ The \"name\" attribute is required.\n      2 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-required-attr/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-required-attr/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <custom-tag/>\n        |  ^^^^^^^^^^ The \"name\" attribute is required.\n      2 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-required-attr/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <custom-tag/>\n        |  ^^^^^^^^^^ The \"name\" attribute is required.\n      2 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-missing-required-attr/template.marko",
    "content": "<custom-tag/>\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-multiple-inline-class/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:7:1\n       5 | }\n       6 |\n    >  7 | class {\n         | ^^^^^ A Marko component can only have one top level class.\n       8 |   onMount() {\n       9 |\n      10 |   }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-multiple-inline-class/snapshots/generated-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:7:1\n       5 | }\n       6 |\n    >  7 | class {\n         | ^^^^^ A Marko component can only have one top level class.\n       8 |   onMount() {\n       9 |\n      10 |   }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-multiple-inline-class/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:7:1\n       5 | }\n       6 |\n    >  7 | class {\n         | ^^^^^ A Marko component can only have one top level class.\n       8 |   onMount() {\n       9 |\n      10 |   }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-multiple-inline-class/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:7:1\n       5 | }\n       6 |\n    >  7 | class {\n         | ^^^^^ A Marko component can only have one top level class.\n       8 |   onMount() {\n       9 |\n      10 |   }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-multiple-inline-class/snapshots/hydrate-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:7:1\n       5 | }\n       6 |\n    >  7 | class {\n         | ^^^^^ A Marko component can only have one top level class.\n       8 |   onMount() {\n       9 |\n      10 |   }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-multiple-inline-class/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:7:1\n       5 | }\n       6 |\n    >  7 | class {\n         | ^^^^^ A Marko component can only have one top level class.\n       8 |   onMount() {\n       9 |\n      10 |   }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-multiple-inline-class/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:7:1\n       5 | }\n       6 |\n    >  7 | class {\n         | ^^^^^ A Marko component can only have one top level class.\n       8 |   onMount() {\n       9 |\n      10 |   }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-multiple-inline-class/template.marko",
    "content": "class {\n  onCreate() {\n\n  }\n}\n\nclass {\n  onMount() {\n\n  }\n}\n\n<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-multiple-syntax-errors/snapshots/cjs-error-expected.txt",
    "content": "CompileErrors: \n    at __tests__/template.marko:3:11\n      1 | $ const a = 1;\n      2 | $ const b = 2;\n    > 3 | <div a=(a b) b=(a b)/>\n        |           ^ Unexpected token, expected \",\"\n      4 |\n\n    at __tests__/template.marko:3:19\n      1 | $ const a = 1;\n      2 | $ const b = 2;\n    > 3 | <div a=(a b) b=(a b)/>\n        |                   ^ Unexpected token, expected \",\"\n      4 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-multiple-syntax-errors/snapshots/generated-error-expected.txt",
    "content": "CompileErrors: \n    at __tests__/template.marko:3:11\n      1 | $ const a = 1;\n      2 | $ const b = 2;\n    > 3 | <div a=(a b) b=(a b)/>\n        |           ^ Unexpected token, expected \",\"\n      4 |\n\n    at __tests__/template.marko:3:19\n      1 | $ const a = 1;\n      2 | $ const b = 2;\n    > 3 | <div a=(a b) b=(a b)/>\n        |                   ^ Unexpected token, expected \",\"\n      4 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-multiple-syntax-errors/snapshots/html-error-expected.txt",
    "content": "CompileErrors: \n    at __tests__/template.marko:3:11\n      1 | $ const a = 1;\n      2 | $ const b = 2;\n    > 3 | <div a=(a b) b=(a b)/>\n        |           ^ Unexpected token, expected \",\"\n      4 |\n\n    at __tests__/template.marko:3:19\n      1 | $ const a = 1;\n      2 | $ const b = 2;\n    > 3 | <div a=(a b) b=(a b)/>\n        |                   ^ Unexpected token, expected \",\"\n      4 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-multiple-syntax-errors/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileErrors: \n    at __tests__/template.marko:3:11\n      1 | $ const a = 1;\n      2 | $ const b = 2;\n    > 3 | <div a=(a b) b=(a b)/>\n        |           ^ Unexpected token, expected \",\"\n      4 |\n\n    at __tests__/template.marko:3:19\n      1 | $ const a = 1;\n      2 | $ const b = 2;\n    > 3 | <div a=(a b) b=(a b)/>\n        |                   ^ Unexpected token, expected \",\"\n      4 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-multiple-syntax-errors/snapshots/hydrate-error-expected.txt",
    "content": "CompileErrors: \n    at __tests__/template.marko:3:11\n      1 | $ const a = 1;\n      2 | $ const b = 2;\n    > 3 | <div a=(a b) b=(a b)/>\n        |           ^ Unexpected token, expected \",\"\n      4 |\n\n    at __tests__/template.marko:3:19\n      1 | $ const a = 1;\n      2 | $ const b = 2;\n    > 3 | <div a=(a b) b=(a b)/>\n        |                   ^ Unexpected token, expected \",\"\n      4 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-multiple-syntax-errors/snapshots/vdom-error-expected.txt",
    "content": "CompileErrors: \n    at __tests__/template.marko:3:11\n      1 | $ const a = 1;\n      2 | $ const b = 2;\n    > 3 | <div a=(a b) b=(a b)/>\n        |           ^ Unexpected token, expected \",\"\n      4 |\n\n    at __tests__/template.marko:3:19\n      1 | $ const a = 1;\n      2 | $ const b = 2;\n    > 3 | <div a=(a b) b=(a b)/>\n        |                   ^ Unexpected token, expected \",\"\n      4 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-multiple-syntax-errors/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileErrors: \n    at __tests__/template.marko:3:11\n      1 | $ const a = 1;\n      2 | $ const b = 2;\n    > 3 | <div a=(a b) b=(a b)/>\n        |           ^ Unexpected token, expected \",\"\n      4 |\n\n    at __tests__/template.marko:3:19\n      1 | $ const a = 1;\n      2 | $ const b = 2;\n    > 3 | <div a=(a b) b=(a b)/>\n        |                   ^ Unexpected token, expected \",\"\n      4 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-multiple-syntax-errors/template.marko",
    "content": "$ const a = 1;\n$ const b = 2;\n<div a=(a b) b=(a b)/>\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-native-tag-params/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:6\n    > 1 | <div|x|>\n        |      ^ Tag does not support parameters.\n      2 |   <div/>\n      3 | </div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-native-tag-params/snapshots/generated-expected.marko",
    "content": "<div|x|>\n  <div/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-native-tag-params/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:6\n    > 1 | <div|x|>\n        |      ^ Tag does not support parameters.\n      2 |   <div/>\n      3 | </div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-native-tag-params/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:6\n    > 1 | <div|x|>\n        |      ^ Tag does not support parameters.\n      2 |   <div/>\n      3 | </div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-native-tag-params/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-native-tag-params/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:6\n    > 1 | <div|x|>\n        |      ^ Tag does not support parameters.\n      2 |   <div/>\n      3 | </div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-native-tag-params/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:6\n    > 1 | <div|x|>\n        |      ^ Tag does not support parameters.\n      2 |   <div/>\n      3 | </div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-native-tag-params/template.marko",
    "content": "<div|x|>\n  <div/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-nested-tag-arguments/components/custom-tag.marko",
    "content": "<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-nested-tag-arguments/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:10\n      1 | <custom-tag>\n    > 2 |   <@test(a, b, { c })>\n        |          ^^^^^^^^^^^ Tag does not support arguments.\n      3 |     Hi\n      4 |   </@test>\n      5 | </custom-tag>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-nested-tag-arguments/snapshots/generated-expected.marko",
    "content": "<custom-tag>\n  <@test(a, b, {\n    c\n  })>\n    Hi\n  </@test>\n</custom-tag>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-nested-tag-arguments/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:10\n      1 | <custom-tag>\n    > 2 |   <@test(a, b, { c })>\n        |          ^^^^^^^^^^^ Tag does not support arguments.\n      3 |     Hi\n      4 |   </@test>\n      5 | </custom-tag>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-nested-tag-arguments/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:10\n      1 | <custom-tag>\n    > 2 |   <@test(a, b, { c })>\n        |          ^^^^^^^^^^^ Tag does not support arguments.\n      3 |     Hi\n      4 |   </@test>\n      5 | </custom-tag>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-nested-tag-arguments/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-nested-tag-arguments/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:10\n      1 | <custom-tag>\n    > 2 |   <@test(a, b, { c })>\n        |          ^^^^^^^^^^^ Tag does not support arguments.\n      3 |     Hi\n      4 |   </@test>\n      5 | </custom-tag>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-nested-tag-arguments/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:10\n      1 | <custom-tag>\n    > 2 |   <@test(a, b, { c })>\n        |          ^^^^^^^^^^^ Tag does not support arguments.\n      3 |     Hi\n      4 |   </@test>\n      5 | </custom-tag>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-nested-tag-arguments/template.marko",
    "content": "<custom-tag>\n  <@test(a, b, { c })>\n    Hi\n  </@test>\n</custom-tag>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-open-tag-only-concise/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:5\n      1 | input\n    > 2 |     -- This should not be allowed!\n        |     ^ Line has extra indentation at the beginning"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-open-tag-only-concise/snapshots/generated-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:5\n      1 | input\n    > 2 |     -- This should not be allowed!\n        |     ^ Line has extra indentation at the beginning"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-open-tag-only-concise/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:5\n      1 | input\n    > 2 |     -- This should not be allowed!\n        |     ^ Line has extra indentation at the beginning"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-open-tag-only-concise/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:5\n      1 | input\n    > 2 |     -- This should not be allowed!\n        |     ^ Line has extra indentation at the beginning"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-open-tag-only-concise/snapshots/hydrate-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:5\n      1 | input\n    > 2 |     -- This should not be allowed!\n        |     ^ Line has extra indentation at the beginning"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-open-tag-only-concise/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:5\n      1 | input\n    > 2 |     -- This should not be allowed!\n        |     ^ Line has extra indentation at the beginning"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-open-tag-only-concise/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:5\n      1 | input\n    > 2 |     -- This should not be allowed!\n        |     ^ Line has extra indentation at the beginning"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-open-tag-only-concise/template.marko",
    "content": "input\n    -- This should not be allowed!"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-repeated-closing-dynamic-tag/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _dynamicTag = _interopRequireDefault(require(\"marko/src/runtime/helpers/dynamic-tag.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  (0, _dynamicTag.default)(out, input.x, null, out => {\n    out.w(\"Hello\");\n  }, null, null, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-repeated-closing-dynamic-tag/snapshots/generated-expected.marko",
    "content": "<${input.x}>\n  Hello\n</>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-repeated-closing-dynamic-tag/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_dynamic_tag from \"marko/src/runtime/helpers/dynamic-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_dynamic_tag(out, input.x, null, out => {\n    out.w(\"Hello\");\n  }, null, null, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-repeated-closing-dynamic-tag/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"c_cOlMB\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_dynamic_tag from \"marko/dist/runtime/helpers/dynamic-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_dynamic_tag(out, input.x, null, out => {\n    out.w(\"Hello\");\n  }, null, null, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-repeated-closing-dynamic-tag/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-repeated-closing-dynamic-tag/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_dynamic_tag from \"marko/src/runtime/helpers/dynamic-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_dynamic_tag(out, input.x, null, out => {\n    out.t(\"Hello\", _component);\n  }, null, null, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-repeated-closing-dynamic-tag/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"c_cOlMB\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_dynamic_tag from \"marko/dist/runtime/helpers/dynamic-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_dynamic_tag(out, input.x, null, out => {\n    out.t(\"Hello\", _component);\n  }, null, null, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-repeated-closing-dynamic-tag/template.marko",
    "content": "<${input.x}>\n  Hello\n</${input.x}>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-scriptlets-not-supported/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <% console.log(x) %>\n        |  ^ <% scriptlets %> are no longer supported.\n      2 | <div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-scriptlets-not-supported/snapshots/generated-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <% console.log(x) %>\n        |  ^ <% scriptlets %> are no longer supported.\n      2 | <div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-scriptlets-not-supported/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <% console.log(x) %>\n        |  ^ <% scriptlets %> are no longer supported.\n      2 | <div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-scriptlets-not-supported/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <% console.log(x) %>\n        |  ^ <% scriptlets %> are no longer supported.\n      2 | <div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-scriptlets-not-supported/snapshots/hydrate-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <% console.log(x) %>\n        |  ^ <% scriptlets %> are no longer supported.\n      2 | <div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-scriptlets-not-supported/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <% console.log(x) %>\n        |  ^ <% scriptlets %> are no longer supported.\n      2 | <div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-scriptlets-not-supported/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <% console.log(x) %>\n        |  ^ <% scriptlets %> are no longer supported.\n      2 | <div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-scriptlets-not-supported/template.marko",
    "content": "<% console.log(x) %>\n<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-static-tag-nested-content/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:6\n      1 | static { console.log(x); }\n    > 2 |  <div/>\n        |      ^ Unexpected token, expected \",\"\n      3 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-static-tag-nested-content/snapshots/generated-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:6\n      1 | static { console.log(x); }\n    > 2 |  <div/>\n        |      ^ Unexpected token, expected \",\"\n      3 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-static-tag-nested-content/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:6\n      1 | static { console.log(x); }\n    > 2 |  <div/>\n        |      ^ Unexpected token, expected \",\"\n      3 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-static-tag-nested-content/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:6\n      1 | static { console.log(x); }\n    > 2 |  <div/>\n        |      ^ Unexpected token, expected \",\"\n      3 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-static-tag-nested-content/snapshots/hydrate-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:6\n      1 | static { console.log(x); }\n    > 2 |  <div/>\n        |      ^ Unexpected token, expected \",\"\n      3 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-static-tag-nested-content/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:6\n      1 | static { console.log(x); }\n    > 2 |  <div/>\n        |      ^ Unexpected token, expected \",\"\n      3 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-static-tag-nested-content/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:6\n      1 | static { console.log(x); }\n    > 2 |  <div/>\n        |      ^ Unexpected token, expected \",\"\n      3 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-static-tag-nested-content/template.marko",
    "content": "static { console.log(x); }\n <div/>\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-static-tag-root-only/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:4\n      1 | <div>\n    > 2 |   <static { console.log(x) }/>\n        |    ^^^^^^ The \"static\" tag is reserved and cannot be used as an HTML tag.\n      3 | </div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-static-tag-root-only/snapshots/generated-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:4\n      1 | <div>\n    > 2 |   <static { console.log(x) }/>\n        |    ^^^^^^ The \"static\" tag is reserved and cannot be used as an HTML tag.\n      3 | </div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-static-tag-root-only/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:4\n      1 | <div>\n    > 2 |   <static { console.log(x) }/>\n        |    ^^^^^^ The \"static\" tag is reserved and cannot be used as an HTML tag.\n      3 | </div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-static-tag-root-only/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:4\n      1 | <div>\n    > 2 |   <static { console.log(x) }/>\n        |    ^^^^^^ The \"static\" tag is reserved and cannot be used as an HTML tag.\n      3 | </div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-static-tag-root-only/snapshots/hydrate-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:4\n      1 | <div>\n    > 2 |   <static { console.log(x) }/>\n        |    ^^^^^^ The \"static\" tag is reserved and cannot be used as an HTML tag.\n      3 | </div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-static-tag-root-only/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:4\n      1 | <div>\n    > 2 |   <static { console.log(x) }/>\n        |    ^^^^^^ The \"static\" tag is reserved and cannot be used as an HTML tag.\n      3 | </div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-static-tag-root-only/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:4\n      1 | <div>\n    > 2 |   <static { console.log(x) }/>\n        |    ^^^^^^ The \"static\" tag is reserved and cannot be used as an HTML tag.\n      3 | </div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-static-tag-root-only/template.marko",
    "content": "<div>\n  <static { console.log(x) }/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-style-block-multiple/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:5:1\n      3 | }\n      4 |\n    > 5 | style {\n        | ^^^^^ A Marko file can only contain a single inline style block.\n      6 |   span { color: green }\n      7 | }\n      8 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-style-block-multiple/snapshots/generated-expected.marko",
    "content": "style {\n  div { color: green }\n}\nstyle {\n  span { color: green }\n}\n<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-style-block-multiple/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:5:1\n      3 | }\n      4 |\n    > 5 | style {\n        | ^^^^^ A Marko file can only contain a single inline style block.\n      6 |   span { color: green }\n      7 | }\n      8 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-style-block-multiple/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:5:1\n      3 | }\n      4 |\n    > 5 | style {\n        | ^^^^^ A Marko file can only contain a single inline style block.\n      6 |   span { color: green }\n      7 | }\n      8 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-style-block-multiple/snapshots/hydrate-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:5:1\n      3 | }\n      4 |\n    > 5 | style {\n        | ^^^^^ A Marko file can only contain a single inline style block.\n      6 |   span { color: green }\n      7 | }\n      8 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-style-block-multiple/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:5:1\n      3 | }\n      4 |\n    > 5 | style {\n        | ^^^^^ A Marko file can only contain a single inline style block.\n      6 |   span { color: green }\n      7 | }\n      8 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-style-block-multiple/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:5:1\n      3 | }\n      4 |\n    > 5 | style {\n        | ^^^^^ A Marko file can only contain a single inline style block.\n      6 |   span { color: green }\n      7 | }\n      8 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-style-block-multiple/template.marko",
    "content": "style {\n  div { color: green }\n}\n\nstyle {\n  span { color: green }\n}\n\n<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-style-block-root-only/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:4\n      1 | <div>\n    > 2 |   <style { div { color: green; } }/>\n        |    ^^^^^ Style blocks must be at the root of your Marko template.\n      3 | </div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-style-block-root-only/snapshots/generated-expected.marko",
    "content": "<div>\n  style { div { color: green; } }\n</div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-style-block-root-only/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:4\n      1 | <div>\n    > 2 |   <style { div { color: green; } }/>\n        |    ^^^^^ Style blocks must be at the root of your Marko template.\n      3 | </div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-style-block-root-only/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:4\n      1 | <div>\n    > 2 |   <style { div { color: green; } }/>\n        |    ^^^^^ Style blocks must be at the root of your Marko template.\n      3 | </div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-style-block-root-only/snapshots/hydrate-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:4\n      1 | <div>\n    > 2 |   <style { div { color: green; } }/>\n        |    ^^^^^ Style blocks must be at the root of your Marko template.\n      3 | </div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-style-block-root-only/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:4\n      1 | <div>\n    > 2 |   <style { div { color: green; } }/>\n        |    ^^^^^ Style blocks must be at the root of your Marko template.\n      3 | </div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-style-block-root-only/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:2:4\n      1 | <div>\n    > 2 |   <style { div { color: green; } }/>\n        |    ^^^^^ Style blocks must be at the root of your Marko template.\n      3 | </div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-style-block-root-only/template.marko",
    "content": "<div>\n  <style { div { color: green; } }/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-style-file-and-inline/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:1\n    > 1 | style {\n        | ^^^^^ A Marko file can either have an inline style block, or an external \"style.ext\" file, but not both.\n      2 |   body {\n      3 |     color: green;\n      4 |   }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-style-file-and-inline/snapshots/generated-expected.marko",
    "content": "style {\n  body {\n    color: green;\n  }\n}\n<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-style-file-and-inline/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:1\n    > 1 | style {\n        | ^^^^^ A Marko file can either have an inline style block, or an external \"style.ext\" file, but not both.\n      2 |   body {\n      3 |     color: green;\n      4 |   }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-style-file-and-inline/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:1\n    > 1 | style {\n        | ^^^^^ A Marko file can either have an inline style block, or an external \"style.ext\" file, but not both.\n      2 |   body {\n      3 |     color: green;\n      4 |   }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-style-file-and-inline/snapshots/hydrate-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:1\n    > 1 | style {\n        | ^^^^^ A Marko file can either have an inline style block, or an external \"style.ext\" file, but not both.\n      2 |   body {\n      3 |     color: green;\n      4 |   }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-style-file-and-inline/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:1\n    > 1 | style {\n        | ^^^^^ A Marko file can either have an inline style block, or an external \"style.ext\" file, but not both.\n      2 |   body {\n      3 |     color: green;\n      4 |   }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-style-file-and-inline/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:1\n    > 1 | style {\n        | ^^^^^ A Marko file can either have an inline style block, or an external \"style.ext\" file, but not both.\n      2 |   body {\n      3 |     color: green;\n      4 |   }"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-style-file-and-inline/template.marko",
    "content": "style {\n  body {\n    color: green;\n  }\n}\n\n<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-style-file-and-inline/template.style.marko",
    "content": "body {\n  color: blue;\n}"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-unclosed-tag/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:1\n    > 1 | <div>\n        | ^^^^^ Missing ending \"div\" tag\n      2 |   <span/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-unclosed-tag/snapshots/generated-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:1\n    > 1 | <div>\n        | ^^^^^ Missing ending \"div\" tag\n      2 |   <span/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-unclosed-tag/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:1\n    > 1 | <div>\n        | ^^^^^ Missing ending \"div\" tag\n      2 |   <span/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-unclosed-tag/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:1\n    > 1 | <div>\n        | ^^^^^ Missing ending \"div\" tag\n      2 |   <span/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-unclosed-tag/snapshots/hydrate-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:1\n    > 1 | <div>\n        | ^^^^^ Missing ending \"div\" tag\n      2 |   <span/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-unclosed-tag/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:1\n    > 1 | <div>\n        | ^^^^^ Missing ending \"div\" tag\n      2 |   <span/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-unclosed-tag/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:1\n    > 1 | <div>\n        | ^^^^^ Missing ending \"div\" tag\n      2 |   <span/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-unclosed-tag/template.marko",
    "content": "<div>\n  <span/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-unknown-modifier/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:6\n    > 1 | <div value:n-update=1/>\n        |      ^^^^^^^^^^^^^^^^ Unsupported modifier \"n-update\"."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-unknown-modifier/snapshots/generated-expected.marko",
    "content": "<div value:n-update=1/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-unknown-modifier/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:6\n    > 1 | <div value:n-update=1/>\n        |      ^^^^^^^^^^^^^^^^ Unsupported modifier \"n-update\"."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-unknown-modifier/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:6\n    > 1 | <div value:n-update=1/>\n        |      ^^^^^^^^^^^^^^^^ Unsupported modifier \"n-update\"."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-unknown-modifier/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-unknown-modifier/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:6\n    > 1 | <div value:n-update=1/>\n        |      ^^^^^^^^^^^^^^^^ Unsupported modifier \"n-update\"."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-unknown-modifier/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:6\n    > 1 | <div value:n-update=1/>\n        |      ^^^^^^^^^^^^^^^^ Unsupported modifier \"n-update\"."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-unknown-modifier/template.marko",
    "content": "<div value:n-update=1/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-unknown-tag/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <some-tag/>\n        |  ^^^^^^^^ Unable to find entry point for custom tag <some-tag>."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-unknown-tag/snapshots/generated-expected.marko",
    "content": "<some-tag/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-unknown-tag/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <some-tag/>\n        |  ^^^^^^^^ Unable to find entry point for custom tag <some-tag>."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-unknown-tag/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <some-tag/>\n        |  ^^^^^^^^ Unable to find entry point for custom tag <some-tag>."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-unknown-tag/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-unknown-tag/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <some-tag/>\n        |  ^^^^^^^^ Unable to find entry point for custom tag <some-tag>."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-unknown-tag/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:1:2\n    > 1 | <some-tag/>\n        |  ^^^^^^^^ Unable to find entry point for custom tag <some-tag>."
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-unknown-tag/template.marko",
    "content": "<some-tag/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-wrong-closing-tag/snapshots/cjs-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:3:1\n      1 | <a>\n      2 |   <div/>\n    > 3 | </b>\n        | ^^^^ The closing \"b\" tag does not match the corresponding opening \"a\" tag"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-wrong-closing-tag/snapshots/generated-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:3:1\n      1 | <a>\n      2 |   <div/>\n    > 3 | </b>\n        | ^^^^ The closing \"b\" tag does not match the corresponding opening \"a\" tag"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-wrong-closing-tag/snapshots/html-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:3:1\n      1 | <a>\n      2 |   <div/>\n    > 3 | </b>\n        | ^^^^ The closing \"b\" tag does not match the corresponding opening \"a\" tag"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-wrong-closing-tag/snapshots/htmlProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:3:1\n      1 | <a>\n      2 |   <div/>\n    > 3 | </b>\n        | ^^^^ The closing \"b\" tag does not match the corresponding opening \"a\" tag"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-wrong-closing-tag/snapshots/hydrate-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:3:1\n      1 | <a>\n      2 |   <div/>\n    > 3 | </b>\n        | ^^^^ The closing \"b\" tag does not match the corresponding opening \"a\" tag"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-wrong-closing-tag/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:3:1\n      1 | <a>\n      2 |   <div/>\n    > 3 | </b>\n        | ^^^^ The closing \"b\" tag does not match the corresponding opening \"a\" tag"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-wrong-closing-tag/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:3:1\n      1 | <a>\n      2 |   <div/>\n    > 3 | </b>\n        | ^^^^ The closing \"b\" tag does not match the corresponding opening \"a\" tag"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/error-wrong-closing-tag/template.marko",
    "content": "<a>\n  <div/>\n</b>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/event-handlers/components/custom-tag.marko",
    "content": "<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/event-handlers/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _dataMarko = _interopRequireDefault(require(\"marko/src/runtime/html/helpers/data-marko.js\"));\nvar _customTag2 = _interopRequireDefault(require(\"./components/custom-tag.marko\"));\nvar _renderTag = _interopRequireDefault(require(\"marko/src/runtime/helpers/render-tag.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nvar _skipSerialize = _interopRequireDefault(require(\"marko/src/runtime/helpers/skip-serialize.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (_input, out, _componentDef, _component, state, $global) {\n  const input = (0, _skipSerialize.default)(_input);\n  out.w(`<div${(0, _dataMarko.default)(out, _componentDef, {\n    \"onclick\": _componentDef.d(\"click\", \"handleClick\", false, [a, b, ...d])\n  })}></div>`);\n  out.w(`<div${(0, _dataMarko.default)(out, _componentDef, {\n    \"onDashed-cased-Event\": _componentDef.d(\"Dashed-cased-Event\", \"handle\", false)\n  })}></div>`);\n  out.w(`<div${(0, _dataMarko.default)(out, _componentDef, {\n    \"oncamelcasedevent\": _componentDef.d(\"camelcasedevent\", \"handle\", false)\n  })} onmouseout=someStringHandler></div>`);\n  (0, _renderTag.default)(_customTag2.default, {}, out, _componentDef, \"3\", [[\"thing\", \"handleThing\", false, [a, b, ...d]]]);\n  (0, _renderTag.default)(_customTag2.default, {}, out, _componentDef, \"4\", [[\"Dashed-cased-Event\", \"handle\", false]]);\n  (0, _renderTag.default)(_customTag2.default, {}, out, _componentDef, \"5\", [[\"camelcasedEvent\", \"handle\", false]]);\n}, {\n  t: _marko_componentType,\n  s: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/event-handlers/snapshots/generated-expected.marko",
    "content": "<div on-click(\"handleClick\", a, b, ...d)/>\n<div on-Dashed-cased-Event(\"handle\")/>\n<div onCamelcasedEvent(\"handle\") onmouseout=\"someStringHandler\"/>\n<custom-tag on-thing(\"handleThing\", a, b, ...d)/>\n<custom-tag on-Dashed-cased-Event(\"handle\")/>\n<custom-tag onCamelcasedEvent(\"handle\")/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/event-handlers/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_props from \"marko/src/runtime/html/helpers/data-marko.js\";\nimport _customTag from \"./components/custom-tag.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\nimport _marko_skip_serialize from \"marko/src/runtime/helpers/skip-serialize.js\";\n_marko_template._ = _marko_renderer(function (_input, out, _componentDef, _component, state, $global) {\n  const input = _marko_skip_serialize(_input);\n  out.w(`<div${_marko_props(out, _componentDef, {\n    \"onclick\": _componentDef.d(\"click\", \"handleClick\", false, [a, b, ...d])\n  })}></div>`);\n  out.w(`<div${_marko_props(out, _componentDef, {\n    \"onDashed-cased-Event\": _componentDef.d(\"Dashed-cased-Event\", \"handle\", false)\n  })}></div>`);\n  out.w(`<div${_marko_props(out, _componentDef, {\n    \"oncamelcasedevent\": _componentDef.d(\"camelcasedevent\", \"handle\", false)\n  })} onmouseout=someStringHandler></div>`);\n  _marko_tag(_customTag, {}, out, _componentDef, \"3\", [[\"thing\", \"handleThing\", false, [a, b, ...d]]]);\n  _marko_tag(_customTag, {}, out, _componentDef, \"4\", [[\"Dashed-cased-Event\", \"handle\", false]]);\n  _marko_tag(_customTag, {}, out, _componentDef, \"5\", [[\"camelcasedEvent\", \"handle\", false]]);\n}, {\n  t: _marko_componentType,\n  s: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/event-handlers/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"CiMh9hs\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_props from \"marko/dist/runtime/html/helpers/data-marko.js\";\nimport _customTag from \"./components/custom-tag.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\nimport _marko_skip_serialize from \"marko/dist/runtime/helpers/skip-serialize.js\";\n_marko_template._ = _marko_renderer(function (_input, out, _componentDef, _component, state, $global) {\n  const input = _marko_skip_serialize(_input);\n  out.w(`<div${_marko_props(out, _componentDef, {\n    \"onclick\": _componentDef.d(\"click\", \"handleClick\", false, [a, b, ...d])\n  })}></div><div${_marko_props(out, _componentDef, {\n    \"onDashed-cased-Event\": _componentDef.d(\"Dashed-cased-Event\", \"handle\", false)\n  })}></div><div${_marko_props(out, _componentDef, {\n    \"oncamelcasedevent\": _componentDef.d(\"camelcasedevent\", \"handle\", false)\n  })} onmouseout=someStringHandler></div>`);\n  _marko_tag(_customTag, {}, out, _componentDef, \"3\", [[\"thing\", \"handleThing\", false, [a, b, ...d]]]);\n  _marko_tag(_customTag, {}, out, _componentDef, \"4\", [[\"Dashed-cased-Event\", \"handle\", false]]);\n  _marko_tag(_customTag, {}, out, _componentDef, \"5\", [[\"camelcasedEvent\", \"handle\", false]]);\n}, {\n  t: _marko_componentType,\n  s: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/event-handlers/snapshots/hydrate-expected.js",
    "content": "import { register, init } from \"marko/src/runtime/components/index.js\";\nimport component_0 from \"marko/src/runtime/helpers/empty-component.js\";\nregister(\"__tests__/template.marko\", component_0);\ninit();"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/event-handlers/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _customTag from \"./components/custom-tag.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.e(\"div\", null, \"0\", _component, 0, 0, {\n    \"onclick\": _componentDef.d(\"click\", \"handleClick\", false, [a, b, ...d])\n  });\n  out.e(\"div\", null, \"1\", _component, 0, 0, {\n    \"onDashed-cased-Event\": _componentDef.d(\"Dashed-cased-Event\", \"handle\", false)\n  });\n  out.e(\"div\", {\n    \"onmouseout\": \"someStringHandler\"\n  }, \"2\", _component, 0, 0, {\n    \"oncamelcasedevent\": _componentDef.d(\"camelcasedevent\", \"handle\", false)\n  });\n  _marko_tag(_customTag, {}, out, _componentDef, \"3\", [[\"thing\", \"handleThing\", false, [a, b, ...d]]]);\n  _marko_tag(_customTag, {}, out, _componentDef, \"4\", [[\"Dashed-cased-Event\", \"handle\", false]]);\n  _marko_tag(_customTag, {}, out, _componentDef, \"5\", [[\"camelcasedEvent\", \"handle\", false]]);\n}, {\n  t: _marko_componentType,\n  s: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/event-handlers/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"CiMh9hs\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _customTag from \"./components/custom-tag.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.e(\"div\", null, \"0\", _component, 0, 0, {\n    \"onclick\": _componentDef.d(\"click\", \"handleClick\", false, [a, b, ...d])\n  });\n  out.e(\"div\", null, \"1\", _component, 0, 0, {\n    \"onDashed-cased-Event\": _componentDef.d(\"Dashed-cased-Event\", \"handle\", false)\n  });\n  out.e(\"div\", {\n    \"onmouseout\": \"someStringHandler\"\n  }, \"2\", _component, 0, 0, {\n    \"oncamelcasedevent\": _componentDef.d(\"camelcasedevent\", \"handle\", false)\n  });\n  _marko_tag(_customTag, {}, out, _componentDef, \"3\", [[\"thing\", \"handleThing\", false, [a, b, ...d]]]);\n  _marko_tag(_customTag, {}, out, _componentDef, \"4\", [[\"Dashed-cased-Event\", \"handle\", false]]);\n  _marko_tag(_customTag, {}, out, _componentDef, \"5\", [[\"camelcasedEvent\", \"handle\", false]]);\n}, {\n  t: _marko_componentType,\n  s: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/event-handlers/template.marko",
    "content": "<div on-click(\"handleClick\", a, b, ...d)/>\n<div on-Dashed-cased-Event(\"handle\")/>\n<div onCamelcasedEvent(\"handle\") onmouseout=\"someStringHandler\"/>\n\n<custom-tag on-thing(\"handleThing\", a, b, ...d)/>\n<custom-tag on-Dashed-cased-Event(\"handle\")/>\n<custom-tag onCamelcasedEvent(\"handle\")/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/exports/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.y = exports.x = exports.default = void 0;\nexports.z = z;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst x = exports.x = 1;\nconst y = exports.y = 2;\nfunction z() {}\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/exports/snapshots/generated-expected.marko",
    "content": "export const x = 1;\nstatic const y = 2;\nexport { y };\nexport function z() {}"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/exports/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nexport const x = 1;\nconst y = 2;\nexport { y };\nexport function z() {}\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/exports/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"StQhZ7O\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nexport const x = 1;\nconst y = 2;\nexport { y };\nexport function z() {}\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/exports/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/exports/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nexport const x = 1;\nconst y = 2;\nexport { y };\nexport function z() {}\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/exports/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"StQhZ7O\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nexport const x = 1;\nconst y = 2;\nexport { y };\nexport function z() {}\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/exports/template.marko",
    "content": "export const x = 1;\n\nstatic const y = 2;\nexport { y };\n\nexport function z() {\n\n}\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/for-tag/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _escapeXml = require(\"marko/src/runtime/html/helpers/escape-xml.js\");\nvar _ofFallback = _interopRequireDefault(require(\"marko/src/runtime/helpers/of-fallback.js\"));\nvar _dataMarko = _interopRequireDefault(require(\"marko/src/runtime/html/helpers/data-marko.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  let _i = 0;\n  for (const val of (0, _ofFallback.default)(arr)) {\n    let i = _i++;\n    const _keyScope = `[${i}]`;\n    out.w(\"<div>\");\n    out.w((0, _escapeXml.x)(i));\n    out.w(\": \");\n    out.w((0, _escapeXml.x)(val));\n    out.w(\"</div>\");\n    out.w(\"<div></div>\");\n    out.w(\"<div></div>\");\n  }\n  for (const key in obj) {\n    const val = obj[key];\n    const _keyScope2 = `[${key}]`;\n    out.w(\"<div>\");\n    out.w((0, _escapeXml.x)(key));\n    out.w(\": \");\n    out.w((0, _escapeXml.x)(val));\n    out.w(\"</div>\");\n    out.w(\"<div></div>\");\n    out.w(\"<div></div>\");\n  }\n  for (let _steps = (10 - 0) / 2, _step = 0; _step <= _steps; _step++) {\n    const i = 0 + _step * 2;\n    const _keyScope3 = `[${i}]`;\n    out.w(\"<div>\");\n    out.w((0, _escapeXml.x)(i));\n    out.w(\"</div>\");\n    out.w(\"<div></div>\");\n    out.w(\"<div></div>\");\n  }\n  let _i2 = 0;\n  for (const val of (0, _ofFallback.default)(arr)) {\n    let i = _i2++;\n    const _keyValue = `@${i}`,\n      _keyScope4 = `[${_keyValue}]`;\n    out.w(`<div${(0, _dataMarko.default)(out, _componentDef, 0, _keyValue)}>`);\n    out.w((0, _escapeXml.x)(i));\n    out.w(\": \");\n    out.w((0, _escapeXml.x)(val));\n    out.w(\"</div>\");\n    out.w(\"<div></div>\");\n    out.w(`<div${(0, _dataMarko.default)(out, _componentDef, 0, `@other-${i}`)}></div>`);\n  }\n  let _i3 = 0;\n  const list = arr;\n  for (const val of list) {\n    let i = _i3++;\n    const _keyValue2 = `@${i}`;\n    out.w(`<div${(0, _dataMarko.default)(out, _componentDef, 0, _keyValue2)}>`);\n    out.w((0, _escapeXml.x)(list.length));\n    out.w(\": \");\n    out.w((0, _escapeXml.x)(val));\n    out.w(\"</div>\");\n  }\n  for (const key in obj) {\n    const val = obj[key];\n    const _keyValue3 = `@${key}`,\n      _keyScope5 = `[${_keyValue3}]`;\n    out.w(`<div${(0, _dataMarko.default)(out, _componentDef, 0, _keyValue3)}>`);\n    out.w((0, _escapeXml.x)(key));\n    out.w(\": \");\n    out.w((0, _escapeXml.x)(val));\n    out.w(\"</div>\");\n    out.w(\"<div></div>\");\n    out.w(`<div${(0, _dataMarko.default)(out, _componentDef, 0, `@other-${key}`)}></div>`);\n  }\n  for (let _steps3 = (10 - 0) / 2, _step3 = 0; _step3 <= _steps3; _step3++) {\n    const i = 0 + _step3 * 2;\n    const _keyValue4 = `@${i}`,\n      _keyScope6 = `[${_keyValue4}]`;\n    out.w(`<div${(0, _dataMarko.default)(out, _componentDef, 0, _keyValue4)}>`);\n    out.w((0, _escapeXml.x)(i));\n    out.w(\"</div>\");\n    out.w(\"<div></div>\");\n    out.w(`<div${(0, _dataMarko.default)(out, _componentDef, 0, `@other-${i}`)}></div>`);\n    for (let _steps2 = (10 - 0) / 2, _step2 = 0; _step2 <= _steps2; _step2++) {\n      const i = 0 + _step2 * 2;\n      const _keyValue5 = `@${i}`,\n        _keyScope7 = `[${_keyValue5}]`;\n      out.w(`<div${(0, _dataMarko.default)(out, _componentDef, 0, _keyValue5)}>`);\n      out.w((0, _escapeXml.x)(i));\n      out.w(\"</div>\");\n      out.w(\"<div></div>\");\n      out.w(`<div${(0, _dataMarko.default)(out, _componentDef, 0, `@other-${i}`)}></div>`);\n    }\n  }\n  for (let _steps4 = (0 - 10) / -2, _step4 = 0; _step4 <= _steps4; _step4++) {\n    const i = 10 + _step4 * -2;\n    const _keyValue6 = `@${i}`,\n      _keyScope8 = `[${_keyValue6}]`;\n    out.w(`<div${(0, _dataMarko.default)(out, _componentDef, 0, _keyValue6)}>`);\n    out.w((0, _escapeXml.x)(i));\n    out.w(\"</div>\");\n    out.w(\"<div></div>\");\n    out.w(`<div${(0, _dataMarko.default)(out, _componentDef, 0, `@other-${i}`)}></div>`);\n  }\n  for (let _steps5 = (10 - 0) / 1, _step5 = 0; _step5 <= _steps5; _step5++) {\n    out.w(\"Hello\");\n  }\n  for (let _steps6 = (10 - 0) / 1, _step6 = 0; _step6 <= _steps6; _step6++) {\n    out.w(\"Hello\");\n  }\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/for-tag/snapshots/generated-expected.marko",
    "content": "<!-- without keys -->\n<for|val, i| of=arr>\n  <div>\n    ${i}: ${val}\n  </div>\n  <div/>\n  <div/>\n</for>\n<for|key, val| in=obj>\n  <div>\n    ${key}: ${val}\n  </div>\n  <div/>\n  <div/>\n</for>\n<for|i| from=0 to=10 step=2>\n  <div>\n    ${i}\n  </div>\n  <div/>\n  <div/>\n</for>\n<!-- with keys -->\n<for|val, i| of=arr>\n  <div key=i>\n    ${i}: ${val}\n  </div>\n  <div/>\n  <div key=`other-${i}`/>\n</for>\n<for|val, i, list| of=arr>\n  <div key=i>\n    ${list.length}: ${val}\n  </div>\n</for>\n<for|key, val| in=obj>\n  <div key=key>\n    ${key}: ${val}\n  </div>\n  <div/>\n  <div key=`other-${key}`/>\n</for>\n<for|i| from=0 to=10 step=2>\n  <div key=i>\n    ${i}\n  </div>\n  <div/>\n  <div key=`other-${i}`/>\n  <for|i| from=0 to=10 step=2>\n    <div key=i>\n      ${i}\n    </div>\n    <div/>\n    <div key=`other-${i}`/>\n  </for>\n</for>\n<for|i| from=10 to=0 step=-2>\n  <div key=i>\n    ${i}\n  </div>\n  <div/>\n  <div key=`other-${i}`/>\n</for>\n<for from=0 to=10>\n  Hello\n</for>\n<for from=0 to=10>\n  Hello\n</for>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/for-tag/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { x as _marko_escapeXml } from \"marko/src/runtime/html/helpers/escape-xml.js\";\nimport _of_fallback from \"marko/src/runtime/helpers/of-fallback.js\";\nimport _marko_props from \"marko/src/runtime/html/helpers/data-marko.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  let _i = 0;\n  for (const val of _of_fallback(arr)) {\n    let i = _i++;\n    const _keyScope = `[${i}]`;\n    out.w(\"<div>\");\n    out.w(_marko_escapeXml(i));\n    out.w(\": \");\n    out.w(_marko_escapeXml(val));\n    out.w(\"</div>\");\n    out.w(\"<div></div>\");\n    out.w(\"<div></div>\");\n  }\n  for (const key in obj) {\n    const val = obj[key];\n    const _keyScope2 = `[${key}]`;\n    out.w(\"<div>\");\n    out.w(_marko_escapeXml(key));\n    out.w(\": \");\n    out.w(_marko_escapeXml(val));\n    out.w(\"</div>\");\n    out.w(\"<div></div>\");\n    out.w(\"<div></div>\");\n  }\n  for (let _steps = (10 - 0) / 2, _step = 0; _step <= _steps; _step++) {\n    const i = 0 + _step * 2;\n    const _keyScope3 = `[${i}]`;\n    out.w(\"<div>\");\n    out.w(_marko_escapeXml(i));\n    out.w(\"</div>\");\n    out.w(\"<div></div>\");\n    out.w(\"<div></div>\");\n  }\n  let _i2 = 0;\n  for (const val of _of_fallback(arr)) {\n    let i = _i2++;\n    const _keyValue = `@${i}`,\n      _keyScope4 = `[${_keyValue}]`;\n    out.w(`<div${_marko_props(out, _componentDef, 0, _keyValue)}>`);\n    out.w(_marko_escapeXml(i));\n    out.w(\": \");\n    out.w(_marko_escapeXml(val));\n    out.w(\"</div>\");\n    out.w(\"<div></div>\");\n    out.w(`<div${_marko_props(out, _componentDef, 0, `@other-${i}`)}></div>`);\n  }\n  let _i3 = 0;\n  const list = arr;\n  for (const val of list) {\n    let i = _i3++;\n    const _keyValue2 = `@${i}`;\n    out.w(`<div${_marko_props(out, _componentDef, 0, _keyValue2)}>`);\n    out.w(_marko_escapeXml(list.length));\n    out.w(\": \");\n    out.w(_marko_escapeXml(val));\n    out.w(\"</div>\");\n  }\n  for (const key in obj) {\n    const val = obj[key];\n    const _keyValue3 = `@${key}`,\n      _keyScope5 = `[${_keyValue3}]`;\n    out.w(`<div${_marko_props(out, _componentDef, 0, _keyValue3)}>`);\n    out.w(_marko_escapeXml(key));\n    out.w(\": \");\n    out.w(_marko_escapeXml(val));\n    out.w(\"</div>\");\n    out.w(\"<div></div>\");\n    out.w(`<div${_marko_props(out, _componentDef, 0, `@other-${key}`)}></div>`);\n  }\n  for (let _steps3 = (10 - 0) / 2, _step3 = 0; _step3 <= _steps3; _step3++) {\n    const i = 0 + _step3 * 2;\n    const _keyValue4 = `@${i}`,\n      _keyScope6 = `[${_keyValue4}]`;\n    out.w(`<div${_marko_props(out, _componentDef, 0, _keyValue4)}>`);\n    out.w(_marko_escapeXml(i));\n    out.w(\"</div>\");\n    out.w(\"<div></div>\");\n    out.w(`<div${_marko_props(out, _componentDef, 0, `@other-${i}`)}></div>`);\n    for (let _steps2 = (10 - 0) / 2, _step2 = 0; _step2 <= _steps2; _step2++) {\n      const i = 0 + _step2 * 2;\n      const _keyValue5 = `@${i}`,\n        _keyScope7 = `[${_keyValue5}]`;\n      out.w(`<div${_marko_props(out, _componentDef, 0, _keyValue5)}>`);\n      out.w(_marko_escapeXml(i));\n      out.w(\"</div>\");\n      out.w(\"<div></div>\");\n      out.w(`<div${_marko_props(out, _componentDef, 0, `@other-${i}`)}></div>`);\n    }\n  }\n  for (let _steps4 = (0 - 10) / -2, _step4 = 0; _step4 <= _steps4; _step4++) {\n    const i = 10 + _step4 * -2;\n    const _keyValue6 = `@${i}`,\n      _keyScope8 = `[${_keyValue6}]`;\n    out.w(`<div${_marko_props(out, _componentDef, 0, _keyValue6)}>`);\n    out.w(_marko_escapeXml(i));\n    out.w(\"</div>\");\n    out.w(\"<div></div>\");\n    out.w(`<div${_marko_props(out, _componentDef, 0, `@other-${i}`)}></div>`);\n  }\n  for (let _steps5 = (10 - 0) / 1, _step5 = 0; _step5 <= _steps5; _step5++) {\n    out.w(\"Hello\");\n  }\n  for (let _steps6 = (10 - 0) / 1, _step6 = 0; _step6 <= _steps6; _step6++) {\n    out.w(\"Hello\");\n  }\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/for-tag/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"zcGBrAr\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { x as _marko_escapeXml } from \"marko/dist/runtime/html/helpers/escape-xml.js\";\nimport _of_fallback from \"marko/dist/runtime/helpers/of-fallback.js\";\nimport _marko_props from \"marko/dist/runtime/html/helpers/data-marko.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  let _i = 0;\n  for (const val of _of_fallback(arr)) {\n    let i = _i++;\n    const _keyScope = `[${i}]`;\n    out.w(`<div>${_marko_escapeXml(i)}: ${_marko_escapeXml(val)}</div><div></div><div></div>`);\n  }\n  for (const key in obj) {\n    const val = obj[key];\n    const _keyScope2 = `[${key}]`;\n    out.w(`<div>${_marko_escapeXml(key)}: ${_marko_escapeXml(val)}</div><div></div><div></div>`);\n  }\n  for (let _steps = (10 - 0) / 2, _step = 0; _step <= _steps; _step++) {\n    const i = 0 + _step * 2;\n    const _keyScope3 = `[${i}]`;\n    out.w(`<div>${_marko_escapeXml(i)}</div><div></div><div></div>`);\n  }\n  let _i2 = 0;\n  for (const val of _of_fallback(arr)) {\n    let i = _i2++;\n    const _keyValue = `@${i}`,\n      _keyScope4 = `[${_keyValue}]`;\n    out.w(`<div${_marko_props(out, _componentDef, 0, _keyValue)}>${_marko_escapeXml(i)}: ${_marko_escapeXml(val)}</div><div></div><div${_marko_props(out, _componentDef, 0, `@other-${i}`)}></div>`);\n  }\n  let _i3 = 0;\n  const list = arr;\n  for (const val of list) {\n    let i = _i3++;\n    const _keyValue2 = `@${i}`;\n    out.w(`<div${_marko_props(out, _componentDef, 0, _keyValue2)}>${_marko_escapeXml(list.length)}: ${_marko_escapeXml(val)}</div>`);\n  }\n  for (const key in obj) {\n    const val = obj[key];\n    const _keyValue3 = `@${key}`,\n      _keyScope5 = `[${_keyValue3}]`;\n    out.w(`<div${_marko_props(out, _componentDef, 0, _keyValue3)}>${_marko_escapeXml(key)}: ${_marko_escapeXml(val)}</div><div></div><div${_marko_props(out, _componentDef, 0, `@other-${key}`)}></div>`);\n  }\n  for (let _steps3 = (10 - 0) / 2, _step3 = 0; _step3 <= _steps3; _step3++) {\n    const i = 0 + _step3 * 2;\n    const _keyValue4 = `@${i}`,\n      _keyScope6 = `[${_keyValue4}]`;\n    out.w(`<div${_marko_props(out, _componentDef, 0, _keyValue4)}>${_marko_escapeXml(i)}</div><div></div><div${_marko_props(out, _componentDef, 0, `@other-${i}`)}></div>`);\n    for (let _steps2 = (10 - 0) / 2, _step2 = 0; _step2 <= _steps2; _step2++) {\n      const i = 0 + _step2 * 2;\n      const _keyValue5 = `@${i}`,\n        _keyScope7 = `[${_keyValue5}]`;\n      out.w(`<div${_marko_props(out, _componentDef, 0, _keyValue5)}>${_marko_escapeXml(i)}</div><div></div><div${_marko_props(out, _componentDef, 0, `@other-${i}`)}></div>`);\n    }\n  }\n  for (let _steps4 = (0 - 10) / -2, _step4 = 0; _step4 <= _steps4; _step4++) {\n    const i = 10 + _step4 * -2;\n    const _keyValue6 = `@${i}`,\n      _keyScope8 = `[${_keyValue6}]`;\n    out.w(`<div${_marko_props(out, _componentDef, 0, _keyValue6)}>${_marko_escapeXml(i)}</div><div></div><div${_marko_props(out, _componentDef, 0, `@other-${i}`)}></div>`);\n  }\n  for (let _steps5 = (10 - 0) / 1, _step5 = 0; _step5 <= _steps5; _step5++) {\n    out.w(\"Hello\");\n  }\n  for (let _steps6 = (10 - 0) / 1, _step6 = 0; _step6 <= _steps6; _step6++) {\n    out.w(\"Hello\");\n  }\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/for-tag/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/for-tag/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _of_fallback from \"marko/src/runtime/helpers/of-fallback.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  let _i = 0;\n  for (const val of _of_fallback(arr)) {\n    let i = _i++;\n    const _keyScope = `[${i}]`;\n    out.be(\"div\", null, \"0\" + _keyScope, _component, null, 0);\n    out.t(i, _component);\n    out.t(\": \", _component);\n    out.t(val, _component);\n    out.ee();\n    out.e(\"div\", null, \"1\" + _keyScope, _component, 0, 0);\n    out.e(\"div\", null, \"2\" + _keyScope, _component, 0, 0);\n  }\n  for (const key in obj) {\n    const val = obj[key];\n    const _keyScope2 = `[${key}]`;\n    out.be(\"div\", null, \"3\" + _keyScope2, _component, null, 0);\n    out.t(key, _component);\n    out.t(\": \", _component);\n    out.t(val, _component);\n    out.ee();\n    out.e(\"div\", null, \"4\" + _keyScope2, _component, 0, 0);\n    out.e(\"div\", null, \"5\" + _keyScope2, _component, 0, 0);\n  }\n  for (let _steps = (10 - 0) / 2, _step = 0; _step <= _steps; _step++) {\n    const i = 0 + _step * 2;\n    const _keyScope3 = `[${i}]`;\n    out.be(\"div\", null, \"6\" + _keyScope3, _component, null, 0);\n    out.t(i, _component);\n    out.ee();\n    out.e(\"div\", null, \"7\" + _keyScope3, _component, 0, 0);\n    out.e(\"div\", null, \"8\" + _keyScope3, _component, 0, 0);\n  }\n  let _i2 = 0;\n  for (const val of _of_fallback(arr)) {\n    let i = _i2++;\n    const _keyValue = `@${i}`,\n      _keyScope4 = `[${_keyValue}]`;\n    out.be(\"div\", null, _keyValue, _component, null, 0);\n    out.t(i, _component);\n    out.t(\": \", _component);\n    out.t(val, _component);\n    out.ee();\n    out.e(\"div\", null, \"9\" + _keyScope4, _component, 0, 0);\n    out.e(\"div\", null, `@other-${i}`, _component, 0, 0);\n  }\n  let _i3 = 0;\n  const list = arr;\n  for (const val of list) {\n    let i = _i3++;\n    const _keyValue2 = `@${i}`;\n    out.be(\"div\", null, _keyValue2, _component, null, 0);\n    out.t(list.length, _component);\n    out.t(\": \", _component);\n    out.t(val, _component);\n    out.ee();\n  }\n  for (const key in obj) {\n    const val = obj[key];\n    const _keyValue3 = `@${key}`,\n      _keyScope5 = `[${_keyValue3}]`;\n    out.be(\"div\", null, _keyValue3, _component, null, 0);\n    out.t(key, _component);\n    out.t(\": \", _component);\n    out.t(val, _component);\n    out.ee();\n    out.e(\"div\", null, \"10\" + _keyScope5, _component, 0, 0);\n    out.e(\"div\", null, `@other-${key}`, _component, 0, 0);\n  }\n  for (let _steps3 = (10 - 0) / 2, _step3 = 0; _step3 <= _steps3; _step3++) {\n    const i = 0 + _step3 * 2;\n    const _keyValue4 = `@${i}`,\n      _keyScope6 = `[${_keyValue4}]`;\n    out.be(\"div\", null, _keyValue4, _component, null, 0);\n    out.t(i, _component);\n    out.ee();\n    out.e(\"div\", null, \"11\" + _keyScope6, _component, 0, 0);\n    out.e(\"div\", null, `@other-${i}`, _component, 0, 0);\n    for (let _steps2 = (10 - 0) / 2, _step2 = 0; _step2 <= _steps2; _step2++) {\n      const i = 0 + _step2 * 2;\n      const _keyValue5 = `@${i}`,\n        _keyScope7 = `[${_keyValue5}]`;\n      out.be(\"div\", null, _keyValue5, _component, null, 0);\n      out.t(i, _component);\n      out.ee();\n      out.e(\"div\", null, \"12\" + _keyScope7, _component, 0, 0);\n      out.e(\"div\", null, `@other-${i}`, _component, 0, 0);\n    }\n  }\n  for (let _steps4 = (0 - 10) / -2, _step4 = 0; _step4 <= _steps4; _step4++) {\n    const i = 10 + _step4 * -2;\n    const _keyValue6 = `@${i}`,\n      _keyScope8 = `[${_keyValue6}]`;\n    out.be(\"div\", null, _keyValue6, _component, null, 0);\n    out.t(i, _component);\n    out.ee();\n    out.e(\"div\", null, \"13\" + _keyScope8, _component, 0, 0);\n    out.e(\"div\", null, `@other-${i}`, _component, 0, 0);\n  }\n  for (let _steps5 = (10 - 0) / 1, _step5 = 0; _step5 <= _steps5; _step5++) {\n    out.t(\"Hello\", _component);\n  }\n  for (let _steps6 = (10 - 0) / 1, _step6 = 0; _step6 <= _steps6; _step6++) {\n    out.t(\"Hello\", _component);\n  }\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/for-tag/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"zcGBrAr\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _of_fallback from \"marko/dist/runtime/helpers/of-fallback.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  let _i = 0;\n  for (const val of _of_fallback(arr)) {\n    let i = _i++;\n    const _keyScope = `[${i}]`;\n    out.be(\"div\", null, \"0\" + _keyScope, _component, null, 0);\n    out.t(i, _component);\n    out.t(\": \", _component);\n    out.t(val, _component);\n    out.ee();\n    out.e(\"div\", null, \"1\" + _keyScope, _component, 0, 0);\n    out.e(\"div\", null, \"2\" + _keyScope, _component, 0, 0);\n  }\n  for (const key in obj) {\n    const val = obj[key];\n    const _keyScope2 = `[${key}]`;\n    out.be(\"div\", null, \"3\" + _keyScope2, _component, null, 0);\n    out.t(key, _component);\n    out.t(\": \", _component);\n    out.t(val, _component);\n    out.ee();\n    out.e(\"div\", null, \"4\" + _keyScope2, _component, 0, 0);\n    out.e(\"div\", null, \"5\" + _keyScope2, _component, 0, 0);\n  }\n  for (let _steps = (10 - 0) / 2, _step = 0; _step <= _steps; _step++) {\n    const i = 0 + _step * 2;\n    const _keyScope3 = `[${i}]`;\n    out.be(\"div\", null, \"6\" + _keyScope3, _component, null, 0);\n    out.t(i, _component);\n    out.ee();\n    out.e(\"div\", null, \"7\" + _keyScope3, _component, 0, 0);\n    out.e(\"div\", null, \"8\" + _keyScope3, _component, 0, 0);\n  }\n  let _i2 = 0;\n  for (const val of _of_fallback(arr)) {\n    let i = _i2++;\n    const _keyValue = `@${i}`,\n      _keyScope4 = `[${_keyValue}]`;\n    out.be(\"div\", null, _keyValue, _component, null, 0);\n    out.t(i, _component);\n    out.t(\": \", _component);\n    out.t(val, _component);\n    out.ee();\n    out.e(\"div\", null, \"9\" + _keyScope4, _component, 0, 0);\n    out.e(\"div\", null, `@other-${i}`, _component, 0, 0);\n  }\n  let _i3 = 0;\n  const list = arr;\n  for (const val of list) {\n    let i = _i3++;\n    const _keyValue2 = `@${i}`;\n    out.be(\"div\", null, _keyValue2, _component, null, 0);\n    out.t(list.length, _component);\n    out.t(\": \", _component);\n    out.t(val, _component);\n    out.ee();\n  }\n  for (const key in obj) {\n    const val = obj[key];\n    const _keyValue3 = `@${key}`,\n      _keyScope5 = `[${_keyValue3}]`;\n    out.be(\"div\", null, _keyValue3, _component, null, 0);\n    out.t(key, _component);\n    out.t(\": \", _component);\n    out.t(val, _component);\n    out.ee();\n    out.e(\"div\", null, \"10\" + _keyScope5, _component, 0, 0);\n    out.e(\"div\", null, `@other-${key}`, _component, 0, 0);\n  }\n  for (let _steps3 = (10 - 0) / 2, _step3 = 0; _step3 <= _steps3; _step3++) {\n    const i = 0 + _step3 * 2;\n    const _keyValue4 = `@${i}`,\n      _keyScope6 = `[${_keyValue4}]`;\n    out.be(\"div\", null, _keyValue4, _component, null, 0);\n    out.t(i, _component);\n    out.ee();\n    out.e(\"div\", null, \"11\" + _keyScope6, _component, 0, 0);\n    out.e(\"div\", null, `@other-${i}`, _component, 0, 0);\n    for (let _steps2 = (10 - 0) / 2, _step2 = 0; _step2 <= _steps2; _step2++) {\n      const i = 0 + _step2 * 2;\n      const _keyValue5 = `@${i}`,\n        _keyScope7 = `[${_keyValue5}]`;\n      out.be(\"div\", null, _keyValue5, _component, null, 0);\n      out.t(i, _component);\n      out.ee();\n      out.e(\"div\", null, \"12\" + _keyScope7, _component, 0, 0);\n      out.e(\"div\", null, `@other-${i}`, _component, 0, 0);\n    }\n  }\n  for (let _steps4 = (0 - 10) / -2, _step4 = 0; _step4 <= _steps4; _step4++) {\n    const i = 10 + _step4 * -2;\n    const _keyValue6 = `@${i}`,\n      _keyScope8 = `[${_keyValue6}]`;\n    out.be(\"div\", null, _keyValue6, _component, null, 0);\n    out.t(i, _component);\n    out.ee();\n    out.e(\"div\", null, \"13\" + _keyScope8, _component, 0, 0);\n    out.e(\"div\", null, `@other-${i}`, _component, 0, 0);\n  }\n  for (let _steps5 = (10 - 0) / 1, _step5 = 0; _step5 <= _steps5; _step5++) {\n    out.t(\"Hello\", _component);\n  }\n  for (let _steps6 = (10 - 0) / 1, _step6 = 0; _step6 <= _steps6; _step6++) {\n    out.t(\"Hello\", _component);\n  }\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/for-tag/template.marko",
    "content": "<!-- without keys -->\n<for|val, i| of=arr>\n  <div>${i}: ${val}</div>\n  <div/>\n  <div/>\n</for>\n\n<for|key, val| in=obj>\n  <div>${key}: ${val}</div>\n  <div/>\n  <div/>\n</for>\n\n<for|i| from=0 to=10 step=2>\n  <div>${i}</div>\n  <div/>\n  <div/>\n</for>\n\n<!-- with keys -->\n<for|val, i| of=arr>\n  <div key=i>${i}: ${val}</div>\n  <div/>\n  <div key=`other-${i}`/>\n</for>\n\n<for|val, i, list| of=arr>\n  <div key=i>${list.length}: ${val}</div>\n</for>\n\n<for|key, val| in=obj>\n  <div key=key>${key}: ${val}</div>\n  <div/>\n  <div key=`other-${key}`/>\n</for>\n\n<for|i| from=0 to=10 step=2>\n  <div key=i>${i}</div>\n  <div/>\n  <div key=`other-${i}`/>\n\n  <for|i| from=0 to=10 step=2>\n    <div key=i>${i}</div>\n    <div/>\n    <div key=`other-${i}`/>\n  </for>\n</for>\n\n<for|i| from=10 to=0 step=-2>\n  <div key=i>${i}</div>\n  <div/>\n  <div key=`other-${i}`/>\n</for>\n\n<for from=0 to=10>\n  Hello\n</for>\n\n<for|| from=0 to=10>\n  Hello\n</for>\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/hello-dynamic/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _escapeXml = require(\"marko/src/runtime/html/helpers/escape-xml.js\");\nvar _toString = _interopRequireDefault(require(\"marko/src/runtime/helpers/to-string.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"Hello \");\n  out.w((0, _escapeXml.x)(input.name));\n  out.w(\"! Hello \");\n  out.w((0, _toString.default)(input.name));\n  out.w(\"! Hello \");\n  out.w((0, _toString.default)(input.missing));\n  out.w(\"!\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/hello-dynamic/snapshots/generated-expected.marko",
    "content": "-- Hello \n-- ${input.name}\n-- ! Hello \n-- $!{input.name}\n-- ! Hello \n-- $!{input.missing}\n-- !"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/hello-dynamic/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { x as _marko_escapeXml } from \"marko/src/runtime/html/helpers/escape-xml.js\";\nimport _marko_to_string from \"marko/src/runtime/helpers/to-string.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"Hello \");\n  out.w(_marko_escapeXml(input.name));\n  out.w(\"! Hello \");\n  out.w(_marko_to_string(input.name));\n  out.w(\"! Hello \");\n  out.w(_marko_to_string(input.missing));\n  out.w(\"!\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/hello-dynamic/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"GNEgGR1\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { x as _marko_escapeXml } from \"marko/dist/runtime/html/helpers/escape-xml.js\";\nimport _marko_to_string from \"marko/dist/runtime/helpers/to-string.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`Hello ${_marko_escapeXml(input.name)}! Hello ${_marko_to_string(input.name)}! Hello ${_marko_to_string(input.missing)}!`);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/hello-dynamic/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/hello-dynamic/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.t(\"Hello \", _component);\n  out.t(input.name, _component);\n  out.t(\"! Hello \", _component);\n  out.h(input.name, _component);\n  out.t(\"! Hello \", _component);\n  out.h(input.missing, _component);\n  out.t(\"!\", _component);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/hello-dynamic/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"GNEgGR1\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.t(\"Hello \", _component);\n  out.t(input.name, _component);\n  out.t(\"! Hello \", _component);\n  out.h(input.name, _component);\n  out.t(\"! Hello \", _component);\n  out.h(input.missing, _component);\n  out.t(\"!\", _component);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/hello-dynamic/template.marko",
    "content": "-- Hello ${input.name}! Hello $!{input.name}! Hello $!{input.missing}!"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/html-comment/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<!--\");\n  out.w(\"test\");\n  out.w(\"-->\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/html-comment/snapshots/generated-expected.marko",
    "content": "<html-comment>\n  test\n</html-comment>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/html-comment/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<!--\");\n  out.w(\"test\");\n  out.w(\"-->\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/html-comment/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"EmdOX$K\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<!--test-->\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/html-comment/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/html-comment/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.comment(\"test\", _component);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/html-comment/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"EmdOX$K\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.comment(\"test\", _component);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/html-comment/template.marko",
    "content": "<html-comment>test</html-comment>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/html-entity/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div>\");\n  out.w(\"&lt;div&gt;\");\n  out.w(\"</div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/html-entity/snapshots/generated-expected.marko",
    "content": "<div>\n  &lt;div&gt;\n</div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/html-entity/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div>\");\n  out.w(\"&lt;div&gt;\");\n  out.w(\"</div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/html-entity/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"As8WTaO\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div>&lt;div&gt;</div>\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/html-entity/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/html-entity/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.be(\"div\", null, \"0\", _component, null, 0);\n  out.t(\"<div>\", _component);\n  out.ee();\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/html-entity/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"As8WTaO\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_constElement from \"marko/dist/runtime/vdom/helpers/const-element.js\";\nconst _marko_node = _marko_constElement(\"div\", null, 1).t(\"<div>\");\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.n(_marko_node, _component);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/html-entity/template.marko",
    "content": "<div>&lt;div&gt;</div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/if-tag/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  if (a + b) {\n    out.w(\"Hello\");\n  }\n  if (a, b) {\n    out.w(\"World\");\n  }\n  out.w(\"<div>\");\n  if (x) {\n    out.w(\"A\");\n  } else if (y) {\n    out.w(\"B\");\n  } else {\n    out.w(\"C\");\n  }\n  out.w(\"</div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/if-tag/snapshots/generated-expected.marko",
    "content": "<if(a + b)>\n  Hello\n</if>\n<if(a, b)>\n  World\n</if>\n<div>\n  <if(x)>\n    A\n  </if>\n  <else-if(y)>\n    B\n  </else-if>\n  <else>\n    C\n  </else>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/if-tag/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  if (a + b) {\n    out.w(\"Hello\");\n  }\n  if (a, b) {\n    out.w(\"World\");\n  }\n  out.w(\"<div>\");\n  if (x) {\n    out.w(\"A\");\n  } else if (y) {\n    out.w(\"B\");\n  } else {\n    out.w(\"C\");\n  }\n  out.w(\"</div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/if-tag/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"oGbVp2X\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  if (a + b) {\n    out.w(\"Hello\");\n  }\n  if (a, b) {\n    out.w(\"World\");\n  }\n  out.w(\"<div>\");\n  if (x) {\n    out.w(\"A\");\n  } else if (y) {\n    out.w(\"B\");\n  } else {\n    out.w(\"C\");\n  }\n  out.w(\"</div>\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/if-tag/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/if-tag/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  if (a + b) {\n    out.t(\"Hello\", _component);\n  }\n  if (a, b) {\n    out.t(\"World\", _component);\n  }\n  out.be(\"div\", null, \"0\", _component, null, 0);\n  if (x) {\n    out.t(\"A\", _component);\n  } else if (y) {\n    out.t(\"B\", _component);\n  } else {\n    out.t(\"C\", _component);\n  }\n  out.ee();\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/if-tag/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"oGbVp2X\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  if (a + b) {\n    out.t(\"Hello\", _component);\n  }\n  if (a, b) {\n    out.t(\"World\", _component);\n  }\n  out.be(\"div\", null, \"0\", _component, null, 0);\n  if (x) {\n    out.t(\"A\", _component);\n  } else if (y) {\n    out.t(\"B\", _component);\n  } else {\n    out.t(\"C\", _component);\n  }\n  out.ee();\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/if-tag/template.marko",
    "content": "<if(a + b)>\n  Hello\n</if>\n\n<if(a, b)>\n  World\n</if>\n\n<div>\n  <if(x)>\n    A\n  </if>\n  <else-if(y)>\n    B\n  </else-if>\n  <else>\n    C\n  </else>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/import-hydrate-include/bar.js",
    "content": "module.exports.f = \"bar\";\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/import-hydrate-include/components/baz.marko",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/import-hydrate-include/foo.css",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/import-hydrate-include/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _bar = _interopRequireWildcard(require(\"./bar\"));\nrequire(\"./foo.css\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction _interopRequireWildcard(e, t) { if (\"function\" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || \"object\" != typeof e && \"function\" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) \"default\" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/import-hydrate-include/snapshots/generated-expected.marko",
    "content": "import bar, { f as foo } from \"./bar\";\nimport \"./foo.css\";"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/import-hydrate-include/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport bar, { f as foo } from \"./bar\";\nimport \"./foo.css\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/import-hydrate-include/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"kbakR6h\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport bar, { f as foo } from \"./bar\";\nimport \"./foo.css\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/import-hydrate-include/snapshots/hydrate-expected.js",
    "content": "import \"./foo.css\";"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/import-hydrate-include/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport bar, { f as foo } from \"./bar\";\nimport \"./foo.css\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/import-hydrate-include/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"kbakR6h\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport bar, { f as foo } from \"./bar\";\nimport \"./foo.css\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/import-hydrate-include/template.marko",
    "content": "import bar, { f as foo } from \"./bar\";\nimport \"./foo.css\";\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/import-tag/bar.js",
    "content": "module.exports.f = \"bar\";\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/import-tag/components/baz.marko",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/import-tag/foo.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/import-tag/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _bar = _interopRequireWildcard(require(\"./bar\"));\nrequire(\"./foo\");\nvar _baz = _interopRequireDefault(require(\"./components/baz.marko\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction _interopRequireWildcard(e, t) { if (\"function\" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || \"object\" != typeof e && \"function\" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) \"default\" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/import-tag/snapshots/generated-expected.marko",
    "content": "import bar, { f as foo } from \"./bar\";\nimport \"./foo\";\nimport baz from \"<baz>\";"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/import-tag/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport bar, { f as foo } from \"./bar\";\nimport \"./foo\";\nimport baz from \"./components/baz.marko\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/import-tag/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"BzufaCE\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport bar, { f as foo } from \"./bar\";\nimport \"./foo\";\nimport baz from \"./components/baz.marko\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/import-tag/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/import-tag/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport bar, { f as foo } from \"./bar\";\nimport \"./foo\";\nimport baz from \"./components/baz.marko\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/import-tag/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"BzufaCE\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport bar, { f as foo } from \"./bar\";\nimport \"./foo\";\nimport baz from \"./components/baz.marko\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/import-tag/template.marko",
    "content": "import bar, { f as foo } from \"./bar\";\nimport \"./foo\";\nimport baz from \"<baz>\""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/import-tag-conflict/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _asset = require(\"./test1/asset\");\nvar _asset2 = require(\"./test2/asset\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/import-tag-conflict/snapshots/generated-expected.marko",
    "content": "import { asset as test } from \"./test1/asset\";\nimport { asset } from \"./test2/asset\";"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/import-tag-conflict/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { asset as test } from \"./test1/asset\";\nimport { asset } from \"./test2/asset\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/import-tag-conflict/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"UzlbUvc\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { asset as test } from \"./test1/asset\";\nimport { asset } from \"./test2/asset\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/import-tag-conflict/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/import-tag-conflict/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { asset as test } from \"./test1/asset\";\nimport { asset } from \"./test2/asset\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/import-tag-conflict/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"UzlbUvc\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { asset as test } from \"./test1/asset\";\nimport { asset } from \"./test2/asset\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/import-tag-conflict/template.marko",
    "content": "import { asset as test } from \"./test1/asset\"\nimport { asset } from \"./test2/asset\""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/macro-non-root/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div>\");\n  function _stuff(out, x) {\n    out.w(\"<div></div>\");\n  }\n  out.w(\"</div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/macro-non-root/snapshots/generated-expected.marko",
    "content": "<div>\n  <macro|x| name=\"stuff\">\n    <div/>\n  </macro>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/macro-non-root/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div>\");\n  function _stuff(out, x) {\n    out.w(\"<div></div>\");\n  }\n  out.w(\"</div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/macro-non-root/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"EbYze3y\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div>\");\n  function _stuff(out, x) {\n    out.w(\"<div></div>\");\n  }\n  out.w(\"</div>\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/macro-non-root/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/macro-non-root/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.be(\"div\", null, \"0\", _component, null, 0);\n  function _stuff(out, x) {\n    out.e(\"div\", null, \"2\", _component, 0, 0);\n  }\n  out.ee();\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/macro-non-root/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"EbYze3y\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_constElement from \"marko/dist/runtime/vdom/helpers/const-element.js\";\nconst _marko_node = _marko_constElement(\"div\", null, 0);\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.be(\"div\", null, \"0\", _component, null, 0);\n  function _stuff(out, x) {\n    out.n(_marko_node, _component);\n  }\n  out.ee();\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/macro-non-root/template.marko",
    "content": "<div>\n  <macro|x| name=\"stuff\">\n    <div/>\n  </macro>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/macros/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _escapeXml = require(\"marko/src/runtime/html/helpers/escape-xml.js\");\nvar _dynamicTag = _interopRequireDefault(require(\"marko/src/runtime/helpers/dynamic-tag.js\"));\nvar _ofFallback = _interopRequireDefault(require(\"marko/src/runtime/helpers/of-fallback.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  function _renderTree(out, node) {\n    out.w(\"Name: \");\n    out.w((0, _escapeXml.x)(node.name));\n    out.w(\" Children: \");\n    if (node.children) {\n      out.w(\"<ul>\");\n      {\n        let _keyValue = 0;\n        for (const child of (0, _ofFallback.default)(node.children)) {\n          const _keyScope = `[${_keyValue++}]`;\n          out.w(\"<li>\");\n          (0, _dynamicTag.default)(out, _renderTree, () => child, null, null, null, _componentDef, \"3\" + _keyScope);\n          out.w(\"</li>\");\n        }\n      }\n      out.w(\"</ul>\");\n    }\n  }\n  (0, _dynamicTag.default)(out, _renderTree, () => input.node, null, null, null, _componentDef, \"4\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/macros/snapshots/generated-expected.marko",
    "content": "<macro|node| name=\"renderTree\">\n  Name: ${node.name} Children: \n  <if(node.children)>\n    <ul>\n      <for|child| of=node.children>\n        <li>\n          <renderTree ...child/>\n        </li>\n      </for>\n    </ul>\n  </if>\n</macro>\n<renderTree ...input.node/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/macros/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { x as _marko_escapeXml } from \"marko/src/runtime/html/helpers/escape-xml.js\";\nimport _marko_dynamic_tag from \"marko/src/runtime/helpers/dynamic-tag.js\";\nimport _of_fallback from \"marko/src/runtime/helpers/of-fallback.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  function _renderTree(out, node) {\n    out.w(\"Name: \");\n    out.w(_marko_escapeXml(node.name));\n    out.w(\" Children: \");\n    if (node.children) {\n      out.w(\"<ul>\");\n      {\n        let _keyValue = 0;\n        for (const child of _of_fallback(node.children)) {\n          const _keyScope = `[${_keyValue++}]`;\n          out.w(\"<li>\");\n          _marko_dynamic_tag(out, _renderTree, () => child, null, null, null, _componentDef, \"3\" + _keyScope);\n          out.w(\"</li>\");\n        }\n      }\n      out.w(\"</ul>\");\n    }\n  }\n  _marko_dynamic_tag(out, _renderTree, () => input.node, null, null, null, _componentDef, \"4\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/macros/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"cYfVTYn\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { x as _marko_escapeXml } from \"marko/dist/runtime/html/helpers/escape-xml.js\";\nimport _marko_dynamic_tag from \"marko/dist/runtime/helpers/dynamic-tag.js\";\nimport _of_fallback from \"marko/dist/runtime/helpers/of-fallback.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  function _renderTree(out, node) {\n    out.w(`Name: ${_marko_escapeXml(node.name)} Children: `);\n    if (node.children) {\n      out.w(\"<ul>\");\n      {\n        let _keyValue = 0;\n        for (const child of _of_fallback(node.children)) {\n          const _keyScope = `[${_keyValue++}]`;\n          out.w(\"<li>\");\n          _marko_dynamic_tag(out, _renderTree, () => child, null, null, null, _componentDef, \"3\" + _keyScope);\n          out.w(\"</li>\");\n        }\n      }\n      out.w(\"</ul>\");\n    }\n  }\n  _marko_dynamic_tag(out, _renderTree, () => input.node, null, null, null, _componentDef, \"4\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/macros/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/macros/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_dynamic_tag from \"marko/src/runtime/helpers/dynamic-tag.js\";\nimport _of_fallback from \"marko/src/runtime/helpers/of-fallback.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  function _renderTree(out, node) {\n    out.t(\"Name: \", _component);\n    out.t(node.name, _component);\n    out.t(\" Children: \", _component);\n    if (node.children) {\n      out.be(\"ul\", null, \"1\", _component, null, 0);\n      {\n        let _keyValue = 0;\n        for (const child of _of_fallback(node.children)) {\n          const _keyScope = `[${_keyValue++}]`;\n          out.be(\"li\", null, \"2\" + _keyScope, _component, null, 0);\n          _marko_dynamic_tag(out, _renderTree, () => child, null, null, null, _componentDef, \"3\" + _keyScope);\n          out.ee();\n        }\n      }\n      out.ee();\n    }\n  }\n  _marko_dynamic_tag(out, _renderTree, () => input.node, null, null, null, _componentDef, \"4\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/macros/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"cYfVTYn\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_dynamic_tag from \"marko/dist/runtime/helpers/dynamic-tag.js\";\nimport _of_fallback from \"marko/dist/runtime/helpers/of-fallback.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  function _renderTree(out, node) {\n    out.t(\"Name: \", _component);\n    out.t(node.name, _component);\n    out.t(\" Children: \", _component);\n    if (node.children) {\n      out.be(\"ul\", null, \"1\", _component, null, 0);\n      {\n        let _keyValue = 0;\n        for (const child of _of_fallback(node.children)) {\n          const _keyScope = `[${_keyValue++}]`;\n          out.be(\"li\", null, \"2\" + _keyScope, _component, null, 0);\n          _marko_dynamic_tag(out, _renderTree, () => child, null, null, null, _componentDef, \"3\" + _keyScope);\n          out.ee();\n        }\n      }\n      out.ee();\n    }\n  }\n  _marko_dynamic_tag(out, _renderTree, () => input.node, null, null, null, _componentDef, \"4\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/macros/template.marko",
    "content": "<macro|node| name=\"renderTree\">\n    Name: ${node.name}\n\n    Children:\n    <if(node.children)>\n        <ul>\n            <for|child| of=node.children>\n                <li>\n                    <renderTree ...child/>\n                </li>\n            </for>\n        </ul>\n    </if>\n</macro>\n\n<renderTree ...input.node/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/module-code/env.js",
    "content": "exports.isDebug = true;\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/module-code/snapshots/cjs-expected.js",
    "content": "module.exports = require(\"./src/index\");"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/module-code/snapshots/generated-expected.marko",
    "content": "<module-code(function(require) {\n    var isDebug = require('./env').isDebug;\n    return `module.exports = require(\"./${isDebug ? 'src' : 'dist'}/index\");\\n`;\n})/>\n<!-- Test comment-->"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/module-code/snapshots/html-expected.js",
    "content": "module.exports = require(\"./src/index\");"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/module-code/snapshots/htmlProduction-expected.js",
    "content": "module.exports = require(\"./src/index\");"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/module-code/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/module-code/snapshots/vdom-expected.js",
    "content": "module.exports = require(\"./src/index\");"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/module-code/snapshots/vdomProduction-expected.js",
    "content": "module.exports = require(\"./src/index\");"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/module-code/template.marko",
    "content": "<module-code(function(require) {\n    var isDebug = require('./env').isDebug;\n    return `module.exports = require(\"./${isDebug ? 'src' : 'dist'}/index\");\\n`;\n})/>\n\n// Test comment"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/native-tag-spread-attrs/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _mergeAttrs = _interopRequireDefault(require(\"marko/src/runtime/html/helpers/merge-attrs.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`<div${(0, _mergeAttrs.default)({\n    a: 1,\n    b: 2\n  }, {\n    \"b\": undefined\n  })}></div>`);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/native-tag-spread-attrs/snapshots/generated-expected.marko",
    "content": "<div ...{\n  a: 1,\n  b: 2\n} b=undefined/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/native-tag-spread-attrs/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_merge_attrs from \"marko/src/runtime/html/helpers/merge-attrs.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`<div${_marko_merge_attrs({\n    a: 1,\n    b: 2\n  }, {\n    \"b\": undefined\n  })}></div>`);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/native-tag-spread-attrs/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"EMjiCJY\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_merge_attrs from \"marko/dist/runtime/html/helpers/merge-attrs.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`<div${_marko_merge_attrs({\n    a: 1,\n    b: 2\n  }, {\n    \"b\": undefined\n  })}></div>`);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/native-tag-spread-attrs/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/native-tag-spread-attrs/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_merge_attrs from \"marko/src/runtime/vdom/helpers/merge-attrs.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.e(\"div\", _marko_merge_attrs({\n    a: 1,\n    b: 2\n  }, {\n    \"b\": undefined\n  }), \"0\", _component, 0, 4);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/native-tag-spread-attrs/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"EMjiCJY\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_merge_attrs from \"marko/dist/runtime/vdom/helpers/merge-attrs.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.e(\"div\", _marko_merge_attrs({\n    a: 1,\n    b: 2\n  }, {\n    \"b\": undefined\n  }), \"0\", _component, 0, 4);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/native-tag-spread-attrs/template.marko",
    "content": "<div ...{ a: 1, b: 2 } b=undefined/>\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/no-update-directives/components/hello/index.marko",
    "content": "<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/no-update-directives/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _index2 = _interopRequireDefault(require(\"./components/hello/index.marko\"));\nvar _renderTag = _interopRequireDefault(require(\"marko/src/runtime/helpers/render-tag.js\"));\nvar _preserveTag = _interopRequireDefault(require(\"marko/src/core-tags/components/preserve-tag.js\"));\nvar _dataMarko = _interopRequireDefault(require(\"marko/src/runtime/html/helpers/data-marko.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  (0, _renderTag.default)(_preserveTag.default, {\n    \"renderBody\": out => {\n      (0, _renderTag.default)(_index2.default, {\n        \"renderBody\": out => {\n          (0, _renderTag.default)(_index2.default, {}, out, _componentDef, \"1\");\n          out.w(\"<div></div>\");\n        }\n      }, out, _componentDef, \"0\");\n    }\n  }, out, _componentDef, \"p_0\");\n  (0, _renderTag.default)(_preserveTag.default, {\n    \"i\": x,\n    \"renderBody\": out => {\n      (0, _renderTag.default)(_index2.default, {\n        \"renderBody\": out => {\n          (0, _renderTag.default)(_preserveTag.default, {\n            \"i\": (a, b),\n            \"renderBody\": out => {\n              (0, _renderTag.default)(_index2.default, {}, out, _componentDef, \"4\");\n            }\n          }, out, _componentDef, \"p_4\");\n          out.w(\"<div></div>\");\n        }\n      }, out, _componentDef, \"3\");\n    }\n  }, out, _componentDef, \"p_3\");\n  (0, _renderTag.default)(_index2.default, {\n    \"renderBody\": out => {\n      (0, _renderTag.default)(_preserveTag.default, {\n        \"renderBody\": out => {\n          (0, _renderTag.default)(_index2.default, {}, out, _componentDef, \"7\");\n          out.w(\"<div></div>\");\n        }\n      }, out, _componentDef, \"p_6\");\n    }\n  }, out, _componentDef, \"6\");\n  (0, _renderTag.default)(_index2.default, {\n    \"renderBody\": out => {\n      (0, _renderTag.default)(_preserveTag.default, {\n        \"i\": x,\n        \"renderBody\": out => {\n          (0, _renderTag.default)(_index2.default, {\n            \"renderBody\": out => {\n              (0, _renderTag.default)(_preserveTag.default, {\n                \"i\": (a, b),\n                \"renderBody\": out => {\n                  out.w(\"Again\");\n                }\n              }, out, _componentDef, \"p_10\");\n            }\n          }, out, _componentDef, \"10\");\n          out.w(\"<div></div>\");\n        }\n      }, out, _componentDef, \"p_9\");\n    }\n  }, out, _componentDef, \"9\");\n  (0, _renderTag.default)(_preserveTag.default, {\n    \"renderBody\": out => {\n      (0, _renderTag.default)(_index2.default, {\n        \"renderBody\": out => {\n          (0, _renderTag.default)(_index2.default, {}, out, _componentDef, \"12\");\n          out.w(\"<div></div>\");\n        }\n      }, out, _componentDef, \"@a\");\n    }\n  }, out, _componentDef, \"p_@a\");\n  (0, _renderTag.default)(_preserveTag.default, {\n    \"i\": x,\n    \"renderBody\": out => {\n      (0, _renderTag.default)(_index2.default, {\n        \"renderBody\": out => {\n          (0, _renderTag.default)(_preserveTag.default, {\n            \"i\": (a, b),\n            \"renderBody\": out => {\n              (0, _renderTag.default)(_index2.default, {}, out, _componentDef, \"@c\");\n            }\n          }, out, _componentDef, \"p_@c\");\n          out.w(\"<div></div>\");\n        }\n      }, out, _componentDef, \"@b\");\n    }\n  }, out, _componentDef, \"p_@b\");\n  (0, _renderTag.default)(_index2.default, {\n    \"renderBody\": out => {\n      (0, _renderTag.default)(_preserveTag.default, {\n        \"renderBody\": out => {\n          (0, _renderTag.default)(_index2.default, {}, out, _componentDef, \"15\");\n          out.w(\"<div></div>\");\n        }\n      }, out, _componentDef, \"p_@d\");\n    }\n  }, out, _componentDef, \"@d\");\n  (0, _renderTag.default)(_index2.default, {\n    \"renderBody\": out => {\n      (0, _renderTag.default)(_preserveTag.default, {\n        \"i\": x,\n        \"renderBody\": out => {\n          (0, _renderTag.default)(_index2.default, {\n            \"renderBody\": out => {\n              (0, _renderTag.default)(_preserveTag.default, {\n                \"i\": (a, b),\n                \"renderBody\": out => {\n                  out.w(\"Again\");\n                }\n              }, out, _componentDef, \"p_@f\");\n            }\n          }, out, _componentDef, \"@f\");\n          out.w(\"<div></div>\");\n        }\n      }, out, _componentDef, \"p_@e\");\n    }\n  }, out, _componentDef, \"@e\");\n  (0, _renderTag.default)(_preserveTag.default, {\n    \"n\": true,\n    \"renderBody\": out => {\n      out.w(`<div${(0, _dataMarko.default)(out, _componentDef, 0, \"18\")} class=test></div>`);\n    }\n  }, out, _componentDef, \"18\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/no-update-directives/snapshots/generated-expected.marko",
    "content": "<hello no-update>\n  <hello/>\n  <div/>\n</hello>\n<hello no-update-if(x)>\n  <hello no-update-if(a, b)/>\n  <div/>\n</hello>\n<hello no-update-body>\n  <hello/>\n  <div/>\n</hello>\n<hello no-update-body-if(x)>\n  <hello no-update-body-if(a, b)>\n    Again\n  </hello>\n  <div/>\n</hello>\n<hello key=\"a\" no-update>\n  <hello/>\n  <div/>\n</hello>\n<hello key=\"b\" no-update-if(x)>\n  <hello key=\"c\" no-update-if(a, b)/>\n  <div/>\n</hello>\n<hello key=\"d\" no-update-body>\n  <hello/>\n  <div/>\n</hello>\n<hello key=\"e\" no-update-body-if(x)>\n  <hello key=\"f\" no-update-body-if(a, b)>\n    Again\n  </hello>\n  <div/>\n</hello>\n<div class=\"test\" no-update/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/no-update-directives/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _hello from \"./components/hello/index.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _preserve from \"marko/src/core-tags/components/preserve-tag.js\";\nimport _marko_props from \"marko/src/runtime/html/helpers/data-marko.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_preserve, {\n    \"renderBody\": out => {\n      _marko_tag(_hello, {\n        \"renderBody\": out => {\n          _marko_tag(_hello, {}, out, _componentDef, \"1\");\n          out.w(\"<div></div>\");\n        }\n      }, out, _componentDef, \"0\");\n    }\n  }, out, _componentDef, \"p_0\");\n  _marko_tag(_preserve, {\n    \"i\": x,\n    \"renderBody\": out => {\n      _marko_tag(_hello, {\n        \"renderBody\": out => {\n          _marko_tag(_preserve, {\n            \"i\": (a, b),\n            \"renderBody\": out => {\n              _marko_tag(_hello, {}, out, _componentDef, \"4\");\n            }\n          }, out, _componentDef, \"p_4\");\n          out.w(\"<div></div>\");\n        }\n      }, out, _componentDef, \"3\");\n    }\n  }, out, _componentDef, \"p_3\");\n  _marko_tag(_hello, {\n    \"renderBody\": out => {\n      _marko_tag(_preserve, {\n        \"renderBody\": out => {\n          _marko_tag(_hello, {}, out, _componentDef, \"7\");\n          out.w(\"<div></div>\");\n        }\n      }, out, _componentDef, \"p_6\");\n    }\n  }, out, _componentDef, \"6\");\n  _marko_tag(_hello, {\n    \"renderBody\": out => {\n      _marko_tag(_preserve, {\n        \"i\": x,\n        \"renderBody\": out => {\n          _marko_tag(_hello, {\n            \"renderBody\": out => {\n              _marko_tag(_preserve, {\n                \"i\": (a, b),\n                \"renderBody\": out => {\n                  out.w(\"Again\");\n                }\n              }, out, _componentDef, \"p_10\");\n            }\n          }, out, _componentDef, \"10\");\n          out.w(\"<div></div>\");\n        }\n      }, out, _componentDef, \"p_9\");\n    }\n  }, out, _componentDef, \"9\");\n  _marko_tag(_preserve, {\n    \"renderBody\": out => {\n      _marko_tag(_hello, {\n        \"renderBody\": out => {\n          _marko_tag(_hello, {}, out, _componentDef, \"12\");\n          out.w(\"<div></div>\");\n        }\n      }, out, _componentDef, \"@a\");\n    }\n  }, out, _componentDef, \"p_@a\");\n  _marko_tag(_preserve, {\n    \"i\": x,\n    \"renderBody\": out => {\n      _marko_tag(_hello, {\n        \"renderBody\": out => {\n          _marko_tag(_preserve, {\n            \"i\": (a, b),\n            \"renderBody\": out => {\n              _marko_tag(_hello, {}, out, _componentDef, \"@c\");\n            }\n          }, out, _componentDef, \"p_@c\");\n          out.w(\"<div></div>\");\n        }\n      }, out, _componentDef, \"@b\");\n    }\n  }, out, _componentDef, \"p_@b\");\n  _marko_tag(_hello, {\n    \"renderBody\": out => {\n      _marko_tag(_preserve, {\n        \"renderBody\": out => {\n          _marko_tag(_hello, {}, out, _componentDef, \"15\");\n          out.w(\"<div></div>\");\n        }\n      }, out, _componentDef, \"p_@d\");\n    }\n  }, out, _componentDef, \"@d\");\n  _marko_tag(_hello, {\n    \"renderBody\": out => {\n      _marko_tag(_preserve, {\n        \"i\": x,\n        \"renderBody\": out => {\n          _marko_tag(_hello, {\n            \"renderBody\": out => {\n              _marko_tag(_preserve, {\n                \"i\": (a, b),\n                \"renderBody\": out => {\n                  out.w(\"Again\");\n                }\n              }, out, _componentDef, \"p_@f\");\n            }\n          }, out, _componentDef, \"@f\");\n          out.w(\"<div></div>\");\n        }\n      }, out, _componentDef, \"p_@e\");\n    }\n  }, out, _componentDef, \"@e\");\n  _marko_tag(_preserve, {\n    \"n\": true,\n    \"renderBody\": out => {\n      out.w(`<div${_marko_props(out, _componentDef, 0, \"18\")} class=test></div>`);\n    }\n  }, out, _componentDef, \"18\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/no-update-directives/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"wiXiwm5\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _hello from \"./components/hello/index.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _preserve from \"marko/dist/core-tags/components/preserve-tag.js\";\nimport _marko_props from \"marko/dist/runtime/html/helpers/data-marko.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_preserve, {\n    \"renderBody\": out => {\n      _marko_tag(_hello, {\n        \"renderBody\": out => {\n          _marko_tag(_hello, {}, out, _componentDef, \"1\");\n          out.w(\"<div></div>\");\n        }\n      }, out, _componentDef, \"0\");\n    }\n  }, out, _componentDef, \"p_0\");\n  _marko_tag(_preserve, {\n    \"i\": x,\n    \"renderBody\": out => {\n      _marko_tag(_hello, {\n        \"renderBody\": out => {\n          _marko_tag(_preserve, {\n            \"i\": (a, b),\n            \"renderBody\": out => {\n              _marko_tag(_hello, {}, out, _componentDef, \"4\");\n            }\n          }, out, _componentDef, \"p_4\");\n          out.w(\"<div></div>\");\n        }\n      }, out, _componentDef, \"3\");\n    }\n  }, out, _componentDef, \"p_3\");\n  _marko_tag(_hello, {\n    \"renderBody\": out => {\n      _marko_tag(_preserve, {\n        \"renderBody\": out => {\n          _marko_tag(_hello, {}, out, _componentDef, \"7\");\n          out.w(\"<div></div>\");\n        }\n      }, out, _componentDef, \"p_6\");\n    }\n  }, out, _componentDef, \"6\");\n  _marko_tag(_hello, {\n    \"renderBody\": out => {\n      _marko_tag(_preserve, {\n        \"i\": x,\n        \"renderBody\": out => {\n          _marko_tag(_hello, {\n            \"renderBody\": out => {\n              _marko_tag(_preserve, {\n                \"i\": (a, b),\n                \"renderBody\": out => {\n                  out.w(\"Again\");\n                }\n              }, out, _componentDef, \"p_10\");\n            }\n          }, out, _componentDef, \"10\");\n          out.w(\"<div></div>\");\n        }\n      }, out, _componentDef, \"p_9\");\n    }\n  }, out, _componentDef, \"9\");\n  _marko_tag(_preserve, {\n    \"renderBody\": out => {\n      _marko_tag(_hello, {\n        \"renderBody\": out => {\n          _marko_tag(_hello, {}, out, _componentDef, \"12\");\n          out.w(\"<div></div>\");\n        }\n      }, out, _componentDef, \"@a\");\n    }\n  }, out, _componentDef, \"p_@a\");\n  _marko_tag(_preserve, {\n    \"i\": x,\n    \"renderBody\": out => {\n      _marko_tag(_hello, {\n        \"renderBody\": out => {\n          _marko_tag(_preserve, {\n            \"i\": (a, b),\n            \"renderBody\": out => {\n              _marko_tag(_hello, {}, out, _componentDef, \"@c\");\n            }\n          }, out, _componentDef, \"p_@c\");\n          out.w(\"<div></div>\");\n        }\n      }, out, _componentDef, \"@b\");\n    }\n  }, out, _componentDef, \"p_@b\");\n  _marko_tag(_hello, {\n    \"renderBody\": out => {\n      _marko_tag(_preserve, {\n        \"renderBody\": out => {\n          _marko_tag(_hello, {}, out, _componentDef, \"15\");\n          out.w(\"<div></div>\");\n        }\n      }, out, _componentDef, \"p_@d\");\n    }\n  }, out, _componentDef, \"@d\");\n  _marko_tag(_hello, {\n    \"renderBody\": out => {\n      _marko_tag(_preserve, {\n        \"i\": x,\n        \"renderBody\": out => {\n          _marko_tag(_hello, {\n            \"renderBody\": out => {\n              _marko_tag(_preserve, {\n                \"i\": (a, b),\n                \"renderBody\": out => {\n                  out.w(\"Again\");\n                }\n              }, out, _componentDef, \"p_@f\");\n            }\n          }, out, _componentDef, \"@f\");\n          out.w(\"<div></div>\");\n        }\n      }, out, _componentDef, \"p_@e\");\n    }\n  }, out, _componentDef, \"@e\");\n  _marko_tag(_preserve, {\n    \"n\": true,\n    \"renderBody\": out => {\n      out.w(`<div${_marko_props(out, _componentDef, 0, \"18\")} class=test></div>`);\n    }\n  }, out, _componentDef, \"18\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/no-update-directives/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/no-update-directives/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _hello from \"./components/hello/index.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _preserve from \"marko/src/core-tags/components/preserve-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_preserve, {\n    \"renderBody\": out => {\n      _marko_tag(_hello, {\n        \"renderBody\": out => {\n          _marko_tag(_hello, {}, out, _componentDef, \"1\");\n          out.e(\"div\", null, \"2\", _component, 0, 0);\n        }\n      }, out, _componentDef, \"0\");\n    }\n  }, out, _componentDef, \"p_0\");\n  _marko_tag(_preserve, {\n    \"i\": x,\n    \"renderBody\": out => {\n      _marko_tag(_hello, {\n        \"renderBody\": out => {\n          _marko_tag(_preserve, {\n            \"i\": (a, b),\n            \"renderBody\": out => {\n              _marko_tag(_hello, {}, out, _componentDef, \"4\");\n            }\n          }, out, _componentDef, \"p_4\");\n          out.e(\"div\", null, \"5\", _component, 0, 0);\n        }\n      }, out, _componentDef, \"3\");\n    }\n  }, out, _componentDef, \"p_3\");\n  _marko_tag(_hello, {\n    \"renderBody\": out => {\n      _marko_tag(_preserve, {\n        \"renderBody\": out => {\n          _marko_tag(_hello, {}, out, _componentDef, \"7\");\n          out.e(\"div\", null, \"8\", _component, 0, 0);\n        }\n      }, out, _componentDef, \"p_6\");\n    }\n  }, out, _componentDef, \"6\");\n  _marko_tag(_hello, {\n    \"renderBody\": out => {\n      _marko_tag(_preserve, {\n        \"i\": x,\n        \"renderBody\": out => {\n          _marko_tag(_hello, {\n            \"renderBody\": out => {\n              _marko_tag(_preserve, {\n                \"i\": (a, b),\n                \"renderBody\": out => {\n                  out.t(\"Again\", _component);\n                }\n              }, out, _componentDef, \"p_10\");\n            }\n          }, out, _componentDef, \"10\");\n          out.e(\"div\", null, \"11\", _component, 0, 0);\n        }\n      }, out, _componentDef, \"p_9\");\n    }\n  }, out, _componentDef, \"9\");\n  _marko_tag(_preserve, {\n    \"renderBody\": out => {\n      _marko_tag(_hello, {\n        \"renderBody\": out => {\n          _marko_tag(_hello, {}, out, _componentDef, \"12\");\n          out.e(\"div\", null, \"13\", _component, 0, 0);\n        }\n      }, out, _componentDef, \"@a\");\n    }\n  }, out, _componentDef, \"p_@a\");\n  _marko_tag(_preserve, {\n    \"i\": x,\n    \"renderBody\": out => {\n      _marko_tag(_hello, {\n        \"renderBody\": out => {\n          _marko_tag(_preserve, {\n            \"i\": (a, b),\n            \"renderBody\": out => {\n              _marko_tag(_hello, {}, out, _componentDef, \"@c\");\n            }\n          }, out, _componentDef, \"p_@c\");\n          out.e(\"div\", null, \"14\", _component, 0, 0);\n        }\n      }, out, _componentDef, \"@b\");\n    }\n  }, out, _componentDef, \"p_@b\");\n  _marko_tag(_hello, {\n    \"renderBody\": out => {\n      _marko_tag(_preserve, {\n        \"renderBody\": out => {\n          _marko_tag(_hello, {}, out, _componentDef, \"15\");\n          out.e(\"div\", null, \"16\", _component, 0, 0);\n        }\n      }, out, _componentDef, \"p_@d\");\n    }\n  }, out, _componentDef, \"@d\");\n  _marko_tag(_hello, {\n    \"renderBody\": out => {\n      _marko_tag(_preserve, {\n        \"i\": x,\n        \"renderBody\": out => {\n          _marko_tag(_hello, {\n            \"renderBody\": out => {\n              _marko_tag(_preserve, {\n                \"i\": (a, b),\n                \"renderBody\": out => {\n                  out.t(\"Again\", _component);\n                }\n              }, out, _componentDef, \"p_@f\");\n            }\n          }, out, _componentDef, \"@f\");\n          out.e(\"div\", null, \"17\", _component, 0, 0);\n        }\n      }, out, _componentDef, \"p_@e\");\n    }\n  }, out, _componentDef, \"@e\");\n  _marko_tag(_preserve, {\n    \"n\": true,\n    \"renderBody\": out => {\n      out.e(\"div\", {\n        \"class\": \"test\"\n      }, \"18\", _component, 0, 1);\n    }\n  }, out, _componentDef, \"18\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/no-update-directives/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"wiXiwm5\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _hello from \"./components/hello/index.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _marko_constElement from \"marko/dist/runtime/vdom/helpers/const-element.js\";\nconst _marko_node = _marko_constElement(\"div\", null, 0);\nimport _preserve from \"marko/dist/core-tags/components/preserve-tag.js\";\nconst _marko_node2 = _marko_constElement(\"div\", null, 0);\nconst _marko_node3 = _marko_constElement(\"div\", null, 0);\nconst _marko_node4 = _marko_constElement(\"div\", null, 0);\nconst _marko_node5 = _marko_constElement(\"div\", null, 0);\nconst _marko_node6 = _marko_constElement(\"div\", null, 0);\nconst _marko_node7 = _marko_constElement(\"div\", null, 0);\nconst _marko_node8 = _marko_constElement(\"div\", null, 0);\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_preserve, {\n    \"renderBody\": out => {\n      _marko_tag(_hello, {\n        \"renderBody\": out => {\n          _marko_tag(_hello, {}, out, _componentDef, \"1\");\n          out.n(_marko_node, _component);\n        }\n      }, out, _componentDef, \"0\");\n    }\n  }, out, _componentDef, \"p_0\");\n  _marko_tag(_preserve, {\n    \"i\": x,\n    \"renderBody\": out => {\n      _marko_tag(_hello, {\n        \"renderBody\": out => {\n          _marko_tag(_preserve, {\n            \"i\": (a, b),\n            \"renderBody\": out => {\n              _marko_tag(_hello, {}, out, _componentDef, \"4\");\n            }\n          }, out, _componentDef, \"p_4\");\n          out.n(_marko_node2, _component);\n        }\n      }, out, _componentDef, \"3\");\n    }\n  }, out, _componentDef, \"p_3\");\n  _marko_tag(_hello, {\n    \"renderBody\": out => {\n      _marko_tag(_preserve, {\n        \"renderBody\": out => {\n          _marko_tag(_hello, {}, out, _componentDef, \"7\");\n          out.n(_marko_node3, _component);\n        }\n      }, out, _componentDef, \"p_6\");\n    }\n  }, out, _componentDef, \"6\");\n  _marko_tag(_hello, {\n    \"renderBody\": out => {\n      _marko_tag(_preserve, {\n        \"i\": x,\n        \"renderBody\": out => {\n          _marko_tag(_hello, {\n            \"renderBody\": out => {\n              _marko_tag(_preserve, {\n                \"i\": (a, b),\n                \"renderBody\": out => {\n                  out.t(\"Again\", _component);\n                }\n              }, out, _componentDef, \"p_10\");\n            }\n          }, out, _componentDef, \"10\");\n          out.n(_marko_node4, _component);\n        }\n      }, out, _componentDef, \"p_9\");\n    }\n  }, out, _componentDef, \"9\");\n  _marko_tag(_preserve, {\n    \"renderBody\": out => {\n      _marko_tag(_hello, {\n        \"renderBody\": out => {\n          _marko_tag(_hello, {}, out, _componentDef, \"12\");\n          out.n(_marko_node5, _component);\n        }\n      }, out, _componentDef, \"@a\");\n    }\n  }, out, _componentDef, \"p_@a\");\n  _marko_tag(_preserve, {\n    \"i\": x,\n    \"renderBody\": out => {\n      _marko_tag(_hello, {\n        \"renderBody\": out => {\n          _marko_tag(_preserve, {\n            \"i\": (a, b),\n            \"renderBody\": out => {\n              _marko_tag(_hello, {}, out, _componentDef, \"@c\");\n            }\n          }, out, _componentDef, \"p_@c\");\n          out.n(_marko_node6, _component);\n        }\n      }, out, _componentDef, \"@b\");\n    }\n  }, out, _componentDef, \"p_@b\");\n  _marko_tag(_hello, {\n    \"renderBody\": out => {\n      _marko_tag(_preserve, {\n        \"renderBody\": out => {\n          _marko_tag(_hello, {}, out, _componentDef, \"15\");\n          out.n(_marko_node7, _component);\n        }\n      }, out, _componentDef, \"p_@d\");\n    }\n  }, out, _componentDef, \"@d\");\n  _marko_tag(_hello, {\n    \"renderBody\": out => {\n      _marko_tag(_preserve, {\n        \"i\": x,\n        \"renderBody\": out => {\n          _marko_tag(_hello, {\n            \"renderBody\": out => {\n              _marko_tag(_preserve, {\n                \"i\": (a, b),\n                \"renderBody\": out => {\n                  out.t(\"Again\", _component);\n                }\n              }, out, _componentDef, \"p_@f\");\n            }\n          }, out, _componentDef, \"@f\");\n          out.n(_marko_node8, _component);\n        }\n      }, out, _componentDef, \"p_@e\");\n    }\n  }, out, _componentDef, \"@e\");\n  _marko_tag(_preserve, {\n    \"n\": true,\n    \"renderBody\": out => {\n      out.e(\"div\", {\n        \"class\": \"test\"\n      }, \"18\", _component, 0, 1);\n    }\n  }, out, _componentDef, \"18\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/no-update-directives/template.marko",
    "content": "<hello no-update>\n  <hello/>\n  <div/>\n</hello>\n\n<hello no-update-if(x)>\n  <hello no-update-if(a, b)/>\n  <div/>\n</hello>\n\n<hello no-update-body>\n  <hello/>\n  <div/>\n</hello>\n\n<hello no-update-body-if(x)>\n  <hello no-update-body-if(a, b)>Again</hello>\n  <div/>\n</hello>\n\n<hello key=\"a\" no-update>\n  <hello/>\n  <div/>\n</hello>\n\n<hello key=\"b\" no-update-if(x)>\n  <hello key=\"c\" no-update-if(a, b)/>\n  <div/>\n</hello>\n\n<hello key=\"d\" no-update-body>\n  <hello/>\n  <div/>\n</hello>\n\n<hello key=\"e\" no-update-body-if(x)>\n  <hello key=\"f\" no-update-body-if(a, b)>Again</hello>\n  <div/>\n</hello>\n\n<div class=\"test\" no-update/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/no-update-modifier/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _dataMarko = _interopRequireDefault(require(\"marko/src/runtime/html/helpers/data-marko.js\"));\nvar _attr = _interopRequireDefault(require(\"marko/src/runtime/html/helpers/attr.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`<input${(0, _dataMarko.default)(out, _componentDef, {\n    pa: {\n      value: 1\n    }\n  })}${(0, _attr.default)(\"value\", input.defaultValue)}>`);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/no-update-modifier/snapshots/generated-expected.marko",
    "content": "<input value:no-update=input.defaultValue>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/no-update-modifier/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_props from \"marko/src/runtime/html/helpers/data-marko.js\";\nimport _marko_attr from \"marko/src/runtime/html/helpers/attr.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`<input${_marko_props(out, _componentDef, {\n    pa: {\n      value: 1\n    }\n  })}${_marko_attr(\"value\", input.defaultValue)}>`);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/no-update-modifier/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"Bm8iH5x\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_props from \"marko/dist/runtime/html/helpers/data-marko.js\";\nimport _marko_attr from \"marko/dist/runtime/html/helpers/attr.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`<input${_marko_props(out, _componentDef, {\n    pa: {\n      value: 1\n    }\n  })}${_marko_attr(\"value\", input.defaultValue)}>`);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/no-update-modifier/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/no-update-modifier/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.e(\"input\", {\n    \"value\": input.defaultValue\n  }, \"0\", _component, 0, 0, {\n    pa: {\n      value: 1\n    }\n  });\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/no-update-modifier/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"Bm8iH5x\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.e(\"input\", {\n    \"value\": input.defaultValue\n  }, \"0\", _component, 0, 0, {\n    pa: {\n      value: 1\n    }\n  });\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/no-update-modifier/template.marko",
    "content": "<input value:no-update=input.defaultValue/>\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/no-update-modifier-multiple/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _dataMarko = _interopRequireDefault(require(\"marko/src/runtime/html/helpers/data-marko.js\"));\nvar _attr = _interopRequireDefault(require(\"marko/src/runtime/html/helpers/attr.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div>\");\n  out.w(`<input${(0, _dataMarko.default)(out, _componentDef, {\n    pa: {\n      value: 1\n    }\n  })}${(0, _attr.default)(\"value\", input.defaultValue)}>`);\n  out.w(`<input${(0, _dataMarko.default)(out, _componentDef, {\n    pa: {\n      value: 1,\n      checked: 1\n    }\n  })} type=checkbox${(0, _attr.default)(\"value\", input.defaultValue)}${(0, _attr.default)(\"checked\", input.checked)}>`);\n  out.w(\"</div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/no-update-modifier-multiple/snapshots/generated-expected.marko",
    "content": "<div>\n  <input value:no-update=input.defaultValue>\n  <input type=\"checkbox\" value:no-update=input.defaultValue checked:no-update=input.checked>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/no-update-modifier-multiple/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_props from \"marko/src/runtime/html/helpers/data-marko.js\";\nimport _marko_attr from \"marko/src/runtime/html/helpers/attr.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div>\");\n  out.w(`<input${_marko_props(out, _componentDef, {\n    pa: {\n      value: 1\n    }\n  })}${_marko_attr(\"value\", input.defaultValue)}>`);\n  out.w(`<input${_marko_props(out, _componentDef, {\n    pa: {\n      value: 1,\n      checked: 1\n    }\n  })} type=checkbox${_marko_attr(\"value\", input.defaultValue)}${_marko_attr(\"checked\", input.checked)}>`);\n  out.w(\"</div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/no-update-modifier-multiple/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"t$4Mzzb\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_props from \"marko/dist/runtime/html/helpers/data-marko.js\";\nimport _marko_attr from \"marko/dist/runtime/html/helpers/attr.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`<div><input${_marko_props(out, _componentDef, {\n    pa: {\n      value: 1\n    }\n  })}${_marko_attr(\"value\", input.defaultValue)}><input${_marko_props(out, _componentDef, {\n    pa: {\n      value: 1,\n      checked: 1\n    }\n  })} type=checkbox${_marko_attr(\"value\", input.defaultValue)}${_marko_attr(\"checked\", input.checked)}></div>`);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/no-update-modifier-multiple/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/no-update-modifier-multiple/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.be(\"div\", null, \"0\", _component, null, 0);\n  out.e(\"input\", {\n    \"value\": input.defaultValue\n  }, \"1\", _component, 0, 0, {\n    pa: {\n      value: 1\n    }\n  });\n  out.e(\"input\", {\n    \"type\": \"checkbox\",\n    \"value\": input.defaultValue,\n    \"checked\": input.checked\n  }, \"2\", _component, 0, 0, {\n    pa: {\n      value: 1,\n      checked: 1\n    }\n  });\n  out.ee();\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/no-update-modifier-multiple/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"t$4Mzzb\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.be(\"div\", null, \"0\", _component, null, 0);\n  out.e(\"input\", {\n    \"value\": input.defaultValue\n  }, \"1\", _component, 0, 0, {\n    pa: {\n      value: 1\n    }\n  });\n  out.e(\"input\", {\n    \"type\": \"checkbox\",\n    \"value\": input.defaultValue,\n    \"checked\": input.checked\n  }, \"2\", _component, 0, 0, {\n    pa: {\n      value: 1,\n      checked: 1\n    }\n  });\n  out.ee();\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/no-update-modifier-multiple/template.marko",
    "content": "<div>\n    <input value:no-update=input.defaultValue/>\n    <input type=\"checkbox\" value:no-update=input.defaultValue checked:no-update=input.checked/>\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/placeholders/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _escapeXml = require(\"marko/src/runtime/html/helpers/escape-xml.js\");\nvar _toString = _interopRequireDefault(require(\"marko/src/runtime/helpers/to-string.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div>\");\n  out.w((0, _escapeXml.x)(input.x));\n  out.w(\"Hello world &lt;a/>\");\n  out.w((0, _toString.default)(input.x));\n  out.w(\"Hello world <a/>\");\n  out.w(\"<script>\");\n  out.w(\"\\n    \");\n  out.w(\"Hello <b> \\\\x3C/script>\");\n  out.w(\"\\n  \");\n  out.w(\"</script>\");\n  out.w(\"<style>\");\n  out.w(\"\\n    \");\n  out.w(\"Hello <b> \\\\3C/style>\");\n  out.w(\"\\n  \");\n  out.w(\"</style>\");\n  out.w(\"</div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/placeholders/snapshots/generated-expected.marko",
    "content": "<div>\n  ${input.x}${\"Hello world <a/>\"}$!{input.x}$!{null}$!{\"Hello world <a/>\"}\n  <script>\n    \n    ${\"Hello <b> </script>\"}\n  \n  </script>\n  <style>\n    \n    ${\"Hello <b> </style>\"}\n  \n  </style>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/placeholders/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { x as _marko_escapeXml } from \"marko/src/runtime/html/helpers/escape-xml.js\";\nimport _marko_to_string from \"marko/src/runtime/helpers/to-string.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div>\");\n  out.w(_marko_escapeXml(input.x));\n  out.w(\"Hello world &lt;a/>\");\n  out.w(_marko_to_string(input.x));\n  out.w(\"Hello world <a/>\");\n  out.w(\"<script>\");\n  out.w(\"\\n    \");\n  out.w(\"Hello <b> \\\\x3C/script>\");\n  out.w(\"\\n  \");\n  out.w(\"</script>\");\n  out.w(\"<style>\");\n  out.w(\"\\n    \");\n  out.w(\"Hello <b> \\\\3C/style>\");\n  out.w(\"\\n  \");\n  out.w(\"</style>\");\n  out.w(\"</div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/placeholders/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"E3jeGP3\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { x as _marko_escapeXml } from \"marko/dist/runtime/html/helpers/escape-xml.js\";\nimport _marko_to_string from \"marko/dist/runtime/helpers/to-string.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`<div>${_marko_escapeXml(input.x)}Hello world &lt;a/>${_marko_to_string(input.x)}Hello world <a/><script>\\n    Hello <b> \\\\x3C/script>\\n  </script><style>\\n    Hello <b> \\\\3C/style>\\n  </style></div>`);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/placeholders/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/placeholders/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.be(\"div\", null, \"0\", _component, null, 0);\n  out.t(input.x, _component);\n  out.t(\"Hello world <a/>\", _component);\n  out.h(input.x, _component);\n  out.h(\"Hello world <a/>\", _component);\n  out.be(\"script\", null, \"1\", _component, null, 0);\n  out.t(\"\\n    \", _component);\n  out.t(\"Hello <b> </script>\", _component);\n  out.t(\"\\n  \", _component);\n  out.ee();\n  out.be(\"style\", null, \"2\", _component, null, 0);\n  out.t(\"\\n    \", _component);\n  out.t(\"Hello <b> </style>\", _component);\n  out.t(\"\\n  \", _component);\n  out.ee();\n  out.ee();\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/placeholders/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"E3jeGP3\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_constElement from \"marko/dist/runtime/vdom/helpers/const-element.js\";\nconst _marko_node = _marko_constElement(\"script\", null, 3).t(\"\\n    \").t(\"Hello <b> </script>\").t(\"\\n  \");\nconst _marko_node2 = _marko_constElement(\"style\", null, 3).t(\"\\n    \").t(\"Hello <b> </style>\").t(\"\\n  \");\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.be(\"div\", null, \"0\", _component, null, 0);\n  out.t(input.x, _component);\n  out.t(\"Hello world <a/>\", _component);\n  out.h(input.x, _component);\n  out.h(\"Hello world <a/>\", _component);\n  out.n(_marko_node, _component);\n  out.n(_marko_node2, _component);\n  out.ee();\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/placeholders/template.marko",
    "content": "<div>\n  ${input.x}\n  ${\"Hello world <a/>\"}\n  $!{input.x}\n  $!{null}\n  $!{\"Hello world <a/>\"}\n\n  <script>\n    ${\"Hello <b> </script>\"}\n  </script>\n\n  <style>\n    ${\"Hello <b> </style>\"}\n  </style>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/prevent-override-component-def/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component2, state, $global) {\n  const _component = \"test\";\n  out.w(\"<div></div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/prevent-override-component-def/snapshots/generated-expected.marko",
    "content": "$ const _component = \"test\";\n<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/prevent-override-component-def/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component2, state, $global) {\n  const _component = \"test\";\n  out.w(\"<div></div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/prevent-override-component-def/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"nLDn9De\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component2, state, $global) {\n  const _component = \"test\";\n  out.w(\"<div></div>\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/prevent-override-component-def/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/prevent-override-component-def/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component2, state, $global) {\n  const _component = \"test\";\n  out.e(\"div\", null, \"0\", _component2, 0, 0);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/prevent-override-component-def/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"nLDn9De\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_constElement from \"marko/dist/runtime/vdom/helpers/const-element.js\";\nconst _marko_node = _marko_constElement(\"div\", null, 0);\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component2, state, $global) {\n  const _component = \"test\";\n  out.n(_marko_node, _component2);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/prevent-override-component-def/template.marko",
    "content": "$ const _component = \"test\";\n<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/root-migration/marko.json",
    "content": "{\n  \"migrator\": \"./migrator.js\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/root-migration/migrator.js",
    "content": "import { types as t } from \"@marko/compiler\";\n\nexport default {\n  Identifier(path) {\n    if (path.node.name === \"old\") {\n      path.replaceWith(t.identifier(\"new\"));\n    }\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/root-migration/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _attr = _interopRequireDefault(require(\"marko/src/runtime/html/helpers/attr.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`<div${(0, _attr.default)(\"a\", new)}></div>`);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/root-migration/snapshots/generated-expected.marko",
    "content": "<div a=new/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/root-migration/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_attr from \"marko/src/runtime/html/helpers/attr.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`<div${_marko_attr(\"a\", new)}></div>`);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/root-migration/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"bZu6oCR\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_attr from \"marko/dist/runtime/html/helpers/attr.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`<div${_marko_attr(\"a\", new)}></div>`);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/root-migration/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/root-migration/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.e(\"div\", {\n    \"a\": new\n  }, \"0\", _component, 0, 0);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/root-migration/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"bZu6oCR\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.e(\"div\", {\n    \"a\": new\n  }, \"0\", _component, 0, 0);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/root-migration/template.marko",
    "content": "<div a=old/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/root-transform/marko.json",
    "content": "{\n  \"transformer\": \"./transformer.js\"\n}\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/root-transform/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _attr = _interopRequireDefault(require(\"marko/src/runtime/html/helpers/attr.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`<div${(0, _attr.default)(\"a\", after)}></div>`);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/root-transform/snapshots/generated-expected.marko",
    "content": "<div a=before/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/root-transform/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_attr from \"marko/src/runtime/html/helpers/attr.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`<div${_marko_attr(\"a\", after)}></div>`);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/root-transform/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"xgfscMK\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_attr from \"marko/dist/runtime/html/helpers/attr.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`<div${_marko_attr(\"a\", after)}></div>`);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/root-transform/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/root-transform/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.e(\"div\", {\n    \"a\": after\n  }, \"0\", _component, 0, 0);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/root-transform/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"xgfscMK\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.e(\"div\", {\n    \"a\": after\n  }, \"0\", _component, 0, 0);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/root-transform/template.marko",
    "content": "<div a=before/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/root-transform/transformer.js",
    "content": "import { types as t } from \"@marko/compiler\";\n\nexport default {\n  Identifier(path) {\n    if (path.node.name === \"before\") {\n      path.replaceWith(t.identifier(\"after\"));\n    }\n  },\n};\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/sanity-check/components/other/index.marko",
    "content": "class {\n  onCreate() {\n\n  }\n}\n\n<div>hi</div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/sanity-check/components/other/marko-tag.json",
    "content": "{\n  \"@*\": \"expression\",\n  \"@a <item>[]\": {\n    \"@b <thing>[]\": {\n      \"@*\": \"expression\"\n    }\n  },\n  \"@c\": {\n    \"@d\": {\n      \"@*\": \"expression\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/sanity-check/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _b = _interopRequireDefault(require(\"b\"));\nvar _escapeStylePlaceholder = _interopRequireDefault(require(\"marko/src/runtime/html/helpers/escape-style-placeholder.js\"));\nvar _escapeScriptPlaceholder = _interopRequireDefault(require(\"marko/src/runtime/html/helpers/escape-script-placeholder.js\"));\nvar _attr = _interopRequireDefault(require(\"marko/src/runtime/html/helpers/attr.js\"));\nvar _classValue = _interopRequireDefault(require(\"marko/src/runtime/helpers/class-value.js\"));\nvar _dynamicTag = _interopRequireDefault(require(\"marko/src/runtime/helpers/dynamic-tag.js\"));\nvar _index2 = _interopRequireDefault(require(\"./components/other/index.marko\"));\nvar _renderTag = _interopRequireDefault(require(\"marko/src/runtime/helpers/render-tag.js\"));\nvar _attrTag = require(\"marko/src/runtime/helpers/attr-tag.js\");\nvar _escapeXml = require(\"marko/src/runtime/html/helpers/escape-xml.js\");\nvar _mergeAttrs = _interopRequireDefault(require(\"marko/src/runtime/html/helpers/merge-attrs.js\"));\nvar _attrs = _interopRequireDefault(require(\"marko/src/runtime/html/helpers/attrs.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\ndoThings();\nandStuff();\nfunction more() {\n  abc();\n}\nconst _marko_component = {\n  onCreate() {\n    this.stuff();\n  }\n};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<style id=css>\");\n  out.w(\"\\n  div {\\n    color: \");\n  out.w((0, _escapeStylePlaceholder.default)(x));\n  out.w(\";\\n  }\\n\");\n  out.w(\"</style>\");\n  out.w(\"<script>\");\n  out.w(\"\\n  var y = \");\n  out.w((0, _escapeScriptPlaceholder.default)(x));\n  out.w(\";\\n\");\n  out.w(\"</script>\");\n  function _thing(out, stuff) {\n    out.w(`<div${(0, _attr.default)(\"x\", stuff.x)}></div>`);\n  }\n  var b = thing;\n  let c = thing;\n  out.w(`<div${(0, _attr.default)(\"b\", b)}${(0, _attr.default)(\"c\", c)}>`);\n  (() => {\n    var d = thing;\n    let e = thing;\n    out.w(`<div${(0, _attr.default)(\"d\", d)}${(0, _attr.default)(\"e\", e)}></div>`);\n  })();\n  out.w(\"</div>\");\n  out.w(\"<div></div>\");\n  out.w(`<div${(0, _attr.default)(\"id\", _componentDef.elId(\"1\"))}></div>`);\n  out.w(`<div${(0, _attr.default)(\"class\", (0, _classValue.default)([\"a\", {\n    b: c,\n    d\n  }]))} style=a:b></div>`);\n  out.w(\"<input type=text>\");\n  (0, _dynamicTag.default)(out, _b.default, null, out => {\n    out.w(\"<div></div>\");\n  }, null, null, _componentDef, \"@x\");\n  (0, _dynamicTag.default)(out, _thing, () => ({\n    \"x\": 1\n  }), null, null, null, _componentDef, \"11\");\n  (0, _renderTag.default)(_index2.default, {\n    \"renderBody\": (out, a) => {\n      out.w(\"<div></div>\");\n    }\n  }, out, _componentDef, \"12\", [[\"click\", \"handleClick\", false, [_b.default, b, ...d]]]);\n  (0, _renderTag.default)(_index2.default, (0, _attrTag.i)(() => {\n    (0, _attrTag.a)(\"c\", (0, _attrTag.i)(() => {\n      (0, _attrTag.a)(\"d\", {\n        \"d\": 1,\n        \"renderBody\": out => {\n          out.w(\"<div></div>\");\n        }\n      });\n      return out => {\n        out.w(\"<div></div>\");\n      };\n    }, {\n      \"c\": 1\n    }));\n    return out => {\n      out.w(\"<div></div>\");\n    };\n  }, {\n    \"x\": 1,\n    ...thing,\n    \"b\": {\n      a: 1\n    },\n    ...c,\n    \"c\": void 0\n  }), out, _componentDef, \"14\");\n  out.w(`<div${(0, _mergeAttrs.default)({\n    \"class\": \"b c\",\n    \"a\": \"{\\\"a\\\":1}\",\n    \"c\": \"${d}\"\n  }, e, f(), {\n    \"id\": \"a\"\n  })}>`);\n  out.w((0, _escapeXml.x)(_b.default));\n  out.w(\"<!--\");\n  out.w(\"abc\");\n  out.w(\"-->\");\n  out.w(\"<div c=1></div>\");\n  out.w(\"<div d=1></div>\");\n  if (x === _b.default) {\n    out.w(\"a \");\n    out.w((0, _escapeXml.x)(b));\n  } else if (x === 2) {\n    out.w(\"b\");\n  } else {\n    out.w(\"c\");\n  }\n  out.w(\"</div>\");\n  out.w(\"<div b=1></div>\");\n  out.w(\"<div>\");\n  out.w(\"123 abc 123\");\n  out.w(\"</div>\");\n  out.w(`<span${(0, _attrs.default)(abc)}></span>`);\n  if (cond) {\n    out.w(\"Hello \");\n    out.w((0, _escapeXml.x)(planet));\n  }\n  for (let _steps = (10 - 0) / 2, _step = 0; _step <= _steps; _step++) {\n    const i = 0 + _step * 2;\n    const _keyScope = `[${i}]`;\n    out.w(\"<div c=1></div>\");\n  }\n  for (const key in obj) {\n    const val = obj[key];\n    const _keyScope2 = `[${key}]`;\n    out.w(\"<div c=1></div>\");\n  }\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/sanity-check/snapshots/generated-expected.marko",
    "content": "import a from \"b\";\n<!-- export { a }; -->\nstyle {\n  div {\n    color: green;\n  }\n}\n<style id=\"css\">\n  \n  div {\n    color: ${x};\n  }\n\n</style>\n<script>\n  \n  var y = ${x};\n\n</script>\nstatic {\n  doThings();\n  andStuff();\n  function more() {\n    abc();\n  }\n}\nclass {\n  onCreate() {\n    this.stuff();\n  }\n}\n<macro|stuff| name=\"thing\">\n  <div x=stuff.x/>\n</macro>\n$ var b = thing;\n$ let c = thing;\n<div b=b c=c>\n  $ var d = thing;\n  $ let e = thing;\n  <div d=d e=e/>\n</div>\n<div on-click(\"handleClick\", a, b, ...d)/>\n<div id:scoped=\"1\"/>\n<div class=[\"a\", {\n  b: c,\n  d\n}] style={\n  a: \"b\"\n}/>\n<input type=\"text\">\n<${a} key=\"x\">\n  <div/>\n</>\n<thing x=1/>\n<other|a| on-click(\"handleClick\", a, b, ...d)>\n  <div/>\n</other>\n<other x=1 ...thing b={\n  a: 1\n} ...c>\n  <div/>\n  <@c c=1>\n    <div/>\n    <@d d=1>\n      <div/>\n    </@d>\n  </@c>\n</other>\n<div class=`${\"b\"} ${\"c\"}` a={\n  a: 1\n} c=\"${d}\" ...e ...f() id=\"a\">\n  ${a}\n  <!--123-->\n  <html-comment>\n    abc\n  </html-comment>\n  <div c=1/>\n  <div d=1/>\n  <if(x === a)>\n    a ${b}\n  </if>\n  <else-if(x === 2)>\n    b\n  </else-if>\n  <else>\n    c\n  </else>\n</div>\n<div b=1/>\n<div>\n  123 abc 123\n</div>\n<span ...abc/>\n<if(cond)>\n  Hello ${planet}\n</if>\n<for|i| from=0 to=10 step=2>\n  <div c=1/>\n</for>\n<for|key, val| in=obj>\n  <div c=1/>\n</for>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/sanity-check/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport a from \"b\";\ndoThings();\nandStuff();\nfunction more() {\n  abc();\n}\nimport _marko_escapeStyle from \"marko/src/runtime/html/helpers/escape-style-placeholder.js\";\nimport _marko_escapeScript from \"marko/src/runtime/html/helpers/escape-script-placeholder.js\";\nimport _marko_attr from \"marko/src/runtime/html/helpers/attr.js\";\nimport _marko_class_merge from \"marko/src/runtime/helpers/class-value.js\";\nimport _marko_dynamic_tag from \"marko/src/runtime/helpers/dynamic-tag.js\";\nimport _other from \"./components/other/index.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/src/runtime/helpers/attr-tag.js\";\nimport { x as _marko_escapeXml } from \"marko/src/runtime/html/helpers/escape-xml.js\";\nimport _marko_merge_attrs from \"marko/src/runtime/html/helpers/merge-attrs.js\";\nimport _marko_attrs from \"marko/src/runtime/html/helpers/attrs.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {\n  onCreate() {\n    this.stuff();\n  }\n};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<style id=css>\");\n  out.w(\"\\n  div {\\n    color: \");\n  out.w(_marko_escapeStyle(x));\n  out.w(\";\\n  }\\n\");\n  out.w(\"</style>\");\n  out.w(\"<script>\");\n  out.w(\"\\n  var y = \");\n  out.w(_marko_escapeScript(x));\n  out.w(\";\\n\");\n  out.w(\"</script>\");\n  function _thing(out, stuff) {\n    out.w(`<div${_marko_attr(\"x\", stuff.x)}></div>`);\n  }\n  var b = thing;\n  let c = thing;\n  out.w(`<div${_marko_attr(\"b\", b)}${_marko_attr(\"c\", c)}>`);\n  (() => {\n    var d = thing;\n    let e = thing;\n    out.w(`<div${_marko_attr(\"d\", d)}${_marko_attr(\"e\", e)}></div>`);\n  })();\n  out.w(\"</div>\");\n  out.w(\"<div></div>\");\n  out.w(`<div${_marko_attr(\"id\", _componentDef.elId(\"1\"))}></div>`);\n  out.w(`<div${_marko_attr(\"class\", _marko_class_merge([\"a\", {\n    b: c,\n    d\n  }]))} style=a:b></div>`);\n  out.w(\"<input type=text>\");\n  _marko_dynamic_tag(out, a, null, out => {\n    out.w(\"<div></div>\");\n  }, null, null, _componentDef, \"@x\");\n  _marko_dynamic_tag(out, _thing, () => ({\n    \"x\": 1\n  }), null, null, null, _componentDef, \"11\");\n  _marko_tag(_other, {\n    \"renderBody\": (out, a) => {\n      out.w(\"<div></div>\");\n    }\n  }, out, _componentDef, \"12\", [[\"click\", \"handleClick\", false, [a, b, ...d]]]);\n  _marko_tag(_other, _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"c\", _marko_render_input(() => {\n      _marko_repeatable_attr_tag(\"d\", {\n        \"d\": 1,\n        \"renderBody\": out => {\n          out.w(\"<div></div>\");\n        }\n      });\n      return out => {\n        out.w(\"<div></div>\");\n      };\n    }, {\n      \"c\": 1\n    }));\n    return out => {\n      out.w(\"<div></div>\");\n    };\n  }, {\n    \"x\": 1,\n    ...thing,\n    \"b\": {\n      a: 1\n    },\n    ...c,\n    \"c\": void 0\n  }), out, _componentDef, \"14\");\n  out.w(`<div${_marko_merge_attrs({\n    \"class\": \"b c\",\n    \"a\": \"{\\\"a\\\":1}\",\n    \"c\": \"${d}\"\n  }, e, f(), {\n    \"id\": \"a\"\n  })}>`);\n  out.w(_marko_escapeXml(a));\n  out.w(\"<!--\");\n  out.w(\"abc\");\n  out.w(\"-->\");\n  out.w(\"<div c=1></div>\");\n  out.w(\"<div d=1></div>\");\n  if (x === a) {\n    out.w(\"a \");\n    out.w(_marko_escapeXml(b));\n  } else if (x === 2) {\n    out.w(\"b\");\n  } else {\n    out.w(\"c\");\n  }\n  out.w(\"</div>\");\n  out.w(\"<div b=1></div>\");\n  out.w(\"<div>\");\n  out.w(\"123 abc 123\");\n  out.w(\"</div>\");\n  out.w(`<span${_marko_attrs(abc)}></span>`);\n  if (cond) {\n    out.w(\"Hello \");\n    out.w(_marko_escapeXml(planet));\n  }\n  for (let _steps = (10 - 0) / 2, _step = 0; _step <= _steps; _step++) {\n    const i = 0 + _step * 2;\n    const _keyScope = `[${i}]`;\n    out.w(\"<div c=1></div>\");\n  }\n  for (const key in obj) {\n    const val = obj[key];\n    const _keyScope2 = `[${key}]`;\n    out.w(\"<div c=1></div>\");\n  }\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/sanity-check/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"Zyx4Ei4\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport a from \"b\";\ndoThings();\nandStuff();\nfunction more() {\n  abc();\n}\nimport _marko_escapeStyle from \"marko/dist/runtime/html/helpers/escape-style-placeholder.js\";\nimport _marko_escapeScript from \"marko/dist/runtime/html/helpers/escape-script-placeholder.js\";\nimport _marko_attr from \"marko/dist/runtime/html/helpers/attr.js\";\nimport _marko_class_merge from \"marko/dist/runtime/helpers/class-value.js\";\nimport _marko_dynamic_tag from \"marko/dist/runtime/helpers/dynamic-tag.js\";\nimport _other from \"./components/other/index.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/dist/runtime/helpers/attr-tag.js\";\nimport { x as _marko_escapeXml } from \"marko/dist/runtime/html/helpers/escape-xml.js\";\nimport _marko_merge_attrs from \"marko/dist/runtime/html/helpers/merge-attrs.js\";\nimport _marko_attrs from \"marko/dist/runtime/html/helpers/attrs.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {\n  onCreate() {\n    this.stuff();\n  }\n};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`<style id=css>\\n  div {\\n    color: ${_marko_escapeStyle(x)};\\n  }\\n</style><script>\\n  var y = ${_marko_escapeScript(x)};\\n</script>`);\n  function _thing(out, stuff) {\n    out.w(`<div${_marko_attr(\"x\", stuff.x)}></div>`);\n  }\n  var b = thing;\n  let c = thing;\n  out.w(`<div${_marko_attr(\"b\", b)}${_marko_attr(\"c\", c)}>`);\n  (() => {\n    var d = thing;\n    let e = thing;\n    out.w(`<div${_marko_attr(\"d\", d)}${_marko_attr(\"e\", e)}></div>`);\n  })();\n  out.w(`</div><div></div><div${_marko_attr(\"id\", _componentDef.elId(\"1\"))}></div><div${_marko_attr(\"class\", _marko_class_merge([\"a\", {\n    b: c,\n    d\n  }]))} style=a:b></div><input type=text>`);\n  _marko_dynamic_tag(out, a, null, out => {\n    out.w(\"<div></div>\");\n  }, null, null, _componentDef, \"@x\");\n  _marko_dynamic_tag(out, _thing, () => ({\n    \"x\": 1\n  }), null, null, null, _componentDef, \"11\");\n  _marko_tag(_other, {\n    \"renderBody\": (out, a) => {\n      out.w(\"<div></div>\");\n    }\n  }, out, _componentDef, \"12\", [[\"click\", \"handleClick\", false, [a, b, ...d]]]);\n  _marko_tag(_other, _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"c\", _marko_render_input(() => {\n      _marko_repeatable_attr_tag(\"d\", {\n        \"d\": 1,\n        \"renderBody\": out => {\n          out.w(\"<div></div>\");\n        }\n      });\n      return out => {\n        out.w(\"<div></div>\");\n      };\n    }, {\n      \"c\": 1\n    }));\n    return out => {\n      out.w(\"<div></div>\");\n    };\n  }, {\n    \"x\": 1,\n    ...thing,\n    \"b\": {\n      a: 1\n    },\n    ...c,\n    \"c\": void 0\n  }), out, _componentDef, \"14\");\n  out.w(`<div${_marko_merge_attrs({\n    \"class\": \"b c\",\n    \"a\": \"{\\\"a\\\":1}\",\n    \"c\": \"${d}\"\n  }, e, f(), {\n    \"id\": \"a\"\n  })}>${_marko_escapeXml(a)}<!--abc--><div c=1></div><div d=1></div>`);\n  if (x === a) {\n    out.w(`a ${_marko_escapeXml(b)}`);\n  } else if (x === 2) {\n    out.w(\"b\");\n  } else {\n    out.w(\"c\");\n  }\n  out.w(`</div><div b=1></div><div>123 abc 123</div><span${_marko_attrs(abc)}></span>`);\n  if (cond) {\n    out.w(`Hello ${_marko_escapeXml(planet)}`);\n  }\n  for (let _steps = (10 - 0) / 2, _step = 0; _step <= _steps; _step++) {\n    const i = 0 + _step * 2;\n    const _keyScope = `[${i}]`;\n    out.w(\"<div c=1></div>\");\n  }\n  for (const key in obj) {\n    const val = obj[key];\n    const _keyScope2 = `[${key}]`;\n    out.w(\"<div c=1></div>\");\n  }\n}, {\n  t: _marko_componentType\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/sanity-check/snapshots/hydrate-expected.js",
    "content": "import { init } from \"marko/src/runtime/components/index.js\";\nimport \"./template.marko\";\ninit();"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/sanity-check/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport a from \"b\";\ndoThings();\nandStuff();\nfunction more() {\n  abc();\n}\nimport _marko_class_merge from \"marko/src/runtime/helpers/class-value.js\";\nimport _marko_dynamic_tag from \"marko/src/runtime/helpers/dynamic-tag.js\";\nimport _other from \"./components/other/index.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/src/runtime/helpers/attr-tag.js\";\nimport _marko_merge_attrs from \"marko/src/runtime/vdom/helpers/merge-attrs.js\";\nimport _marko_attrs from \"marko/src/runtime/vdom/helpers/attrs.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {\n  onCreate() {\n    this.stuff();\n  }\n};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.be(\"style\", {\n    \"id\": \"css\"\n  }, \"0\", _component, null, 1);\n  out.t(\"\\n  div {\\n    color: \", _component);\n  out.t(x, _component);\n  out.t(\";\\n  }\\n\", _component);\n  out.ee();\n  out.be(\"script\", null, \"1\", _component, null, 0);\n  out.t(\"\\n  var y = \", _component);\n  out.t(x, _component);\n  out.t(\";\\n\", _component);\n  out.ee();\n  function _thing(out, stuff) {\n    out.e(\"div\", {\n      \"x\": stuff.x\n    }, \"3\", _component, 0, 0);\n  }\n  var b = thing;\n  let c = thing;\n  out.be(\"div\", {\n    \"b\": b,\n    \"c\": c\n  }, \"4\", _component, null, 0);\n  (() => {\n    var d = thing;\n    let e = thing;\n    out.e(\"div\", {\n      \"d\": d,\n      \"e\": e\n    }, \"5\", _component, 0, 0);\n  })();\n  out.ee();\n  out.e(\"div\", null, \"6\", _component, 0, 0, {\n    \"onclick\": _componentDef.d(\"click\", \"handleClick\", false, [a, b, ...d])\n  });\n  out.e(\"div\", {\n    \"id\": _componentDef.elId(\"1\")\n  }, \"7\", _component, 0, 1);\n  out.e(\"div\", {\n    \"class\": _marko_class_merge([\"a\", {\n      b: c,\n      d\n    }]),\n    \"style\": \"a:b\"\n  }, \"8\", _component, 0, 1);\n  out.e(\"input\", {\n    \"type\": \"text\"\n  }, \"9\", _component, 0, 0);\n  _marko_dynamic_tag(out, a, null, out => {\n    out.e(\"div\", null, \"10\", _component, 0, 0);\n  }, null, null, _componentDef, \"@x\");\n  _marko_dynamic_tag(out, _thing, () => ({\n    \"x\": 1\n  }), null, null, null, _componentDef, \"11\");\n  _marko_tag(_other, {\n    \"renderBody\": (out, a) => {\n      out.e(\"div\", null, \"13\", _component, 0, 0);\n    }\n  }, out, _componentDef, \"12\", [[\"click\", \"handleClick\", false, [a, b, ...d]]]);\n  _marko_tag(_other, _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"c\", _marko_render_input(() => {\n      _marko_repeatable_attr_tag(\"d\", {\n        \"d\": 1,\n        \"renderBody\": out => {\n          out.e(\"div\", null, \"15\", _component, 0, 0);\n        }\n      });\n      return out => {\n        out.e(\"div\", null, \"16\", _component, 0, 0);\n      };\n    }, {\n      \"c\": 1\n    }));\n    return out => {\n      out.e(\"div\", null, \"17\", _component, 0, 0);\n    };\n  }, {\n    \"x\": 1,\n    ...thing,\n    \"b\": {\n      a: 1\n    },\n    ...c,\n    \"c\": void 0\n  }), out, _componentDef, \"14\");\n  out.be(\"div\", _marko_merge_attrs({\n    \"class\": \"b c\",\n    \"a\": \"{\\\"a\\\":1}\",\n    \"c\": \"${d}\"\n  }, e, f(), {\n    \"id\": \"a\"\n  }), \"18\", _component, null, 4);\n  out.t(a, _component);\n  out.comment(\"abc\", _component);\n  out.e(\"div\", {\n    \"c\": \"1\"\n  }, \"19\", _component, 0, 0);\n  out.e(\"div\", {\n    \"d\": \"1\"\n  }, \"20\", _component, 0, 0);\n  if (x === a) {\n    out.t(\"a \", _component);\n    out.t(b, _component);\n  } else if (x === 2) {\n    out.t(\"b\", _component);\n  } else {\n    out.t(\"c\", _component);\n  }\n  out.ee();\n  out.e(\"div\", {\n    \"b\": \"1\"\n  }, \"21\", _component, 0, 0);\n  out.be(\"div\", null, \"22\", _component, null, 0);\n  out.t(\"123 abc 123\", _component);\n  out.ee();\n  out.e(\"span\", _marko_attrs(abc), \"23\", _component, 0, 4);\n  if (cond) {\n    out.t(\"Hello \", _component);\n    out.t(planet, _component);\n  }\n  for (let _steps = (10 - 0) / 2, _step = 0; _step <= _steps; _step++) {\n    const i = 0 + _step * 2;\n    const _keyScope = `[${i}]`;\n    out.e(\"div\", {\n      \"c\": \"1\"\n    }, \"24\" + _keyScope, _component, 0, 0);\n  }\n  for (const key in obj) {\n    const val = obj[key];\n    const _keyScope2 = `[${key}]`;\n    out.e(\"div\", {\n      \"c\": \"1\"\n    }, \"25\" + _keyScope2, _component, 0, 0);\n  }\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/sanity-check/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"Zyx4Ei4\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport a from \"b\";\ndoThings();\nandStuff();\nfunction more() {\n  abc();\n}\nimport _marko_class_merge from \"marko/dist/runtime/helpers/class-value.js\";\nimport _marko_constElement from \"marko/dist/runtime/vdom/helpers/const-element.js\";\nconst _marko_node = _marko_constElement(\"input\", {\n  \"type\": \"text\"\n}, 0);\nconst _marko_node2 = _marko_constElement(\"div\", null, 0);\nimport _marko_dynamic_tag from \"marko/dist/runtime/helpers/dynamic-tag.js\";\nconst _marko_node3 = _marko_constElement(\"div\", null, 0);\nimport _other from \"./components/other/index.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nconst _marko_node4 = _marko_constElement(\"div\", null, 0);\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/dist/runtime/helpers/attr-tag.js\";\nconst _marko_node5 = _marko_constElement(\"div\", null, 0);\nconst _marko_node6 = _marko_constElement(\"div\", null, 0);\nconst _marko_node7 = _marko_constElement(\"div\", {\n  \"c\": \"1\"\n}, 0);\nconst _marko_node8 = _marko_constElement(\"div\", {\n  \"d\": \"1\"\n}, 0);\nimport _marko_merge_attrs from \"marko/dist/runtime/vdom/helpers/merge-attrs.js\";\nconst _marko_node9 = _marko_constElement(\"div\", {\n  \"b\": \"1\"\n}, 0);\nconst _marko_node0 = _marko_constElement(\"div\", null, 1).t(\"123 abc 123\");\nimport _marko_attrs from \"marko/dist/runtime/vdom/helpers/attrs.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {\n  onCreate() {\n    this.stuff();\n  }\n};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.be(\"style\", {\n    \"id\": \"css\"\n  }, \"0\", _component, null, 1);\n  out.t(\"\\n  div {\\n    color: \", _component);\n  out.t(x, _component);\n  out.t(\";\\n  }\\n\", _component);\n  out.ee();\n  out.be(\"script\", null, \"1\", _component, null, 0);\n  out.t(\"\\n  var y = \", _component);\n  out.t(x, _component);\n  out.t(\";\\n\", _component);\n  out.ee();\n  function _thing(out, stuff) {\n    out.e(\"div\", {\n      \"x\": stuff.x\n    }, \"3\", _component, 0, 0);\n  }\n  var b = thing;\n  let c = thing;\n  out.be(\"div\", {\n    \"b\": b,\n    \"c\": c\n  }, \"4\", _component, null, 0);\n  (() => {\n    var d = thing;\n    let e = thing;\n    out.e(\"div\", {\n      \"d\": d,\n      \"e\": e\n    }, \"5\", _component, 0, 0);\n  })();\n  out.ee();\n  out.e(\"div\", null, \"6\", _component, 0, 0, {\n    \"onclick\": _componentDef.d(\"click\", \"handleClick\", false, [a, b, ...d])\n  });\n  out.e(\"div\", {\n    \"id\": _componentDef.elId(\"1\")\n  }, \"7\", _component, 0, 1);\n  out.e(\"div\", {\n    \"class\": _marko_class_merge([\"a\", {\n      b: c,\n      d\n    }]),\n    \"style\": \"a:b\"\n  }, \"8\", _component, 0, 1);\n  out.n(_marko_node, _component);\n  _marko_dynamic_tag(out, a, null, out => {\n    out.n(_marko_node2, _component);\n  }, null, null, _componentDef, \"@x\");\n  _marko_dynamic_tag(out, _thing, () => ({\n    \"x\": 1\n  }), null, null, null, _componentDef, \"11\");\n  _marko_tag(_other, {\n    \"renderBody\": (out, a) => {\n      out.n(_marko_node3, _component);\n    }\n  }, out, _componentDef, \"12\", [[\"click\", \"handleClick\", false, [a, b, ...d]]]);\n  _marko_tag(_other, _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"c\", _marko_render_input(() => {\n      _marko_repeatable_attr_tag(\"d\", {\n        \"d\": 1,\n        \"renderBody\": out => {\n          out.n(_marko_node4, _component);\n        }\n      });\n      return out => {\n        out.n(_marko_node5, _component);\n      };\n    }, {\n      \"c\": 1\n    }));\n    return out => {\n      out.n(_marko_node6, _component);\n    };\n  }, {\n    \"x\": 1,\n    ...thing,\n    \"b\": {\n      a: 1\n    },\n    ...c,\n    \"c\": void 0\n  }), out, _componentDef, \"14\");\n  out.be(\"div\", _marko_merge_attrs({\n    \"class\": \"b c\",\n    \"a\": \"{\\\"a\\\":1}\",\n    \"c\": \"${d}\"\n  }, e, f(), {\n    \"id\": \"a\"\n  }), \"18\", _component, null, 4);\n  out.t(a, _component);\n  out.comment(\"abc\", _component);\n  out.n(_marko_node7, _component);\n  out.n(_marko_node8, _component);\n  if (x === a) {\n    out.t(\"a \", _component);\n    out.t(b, _component);\n  } else if (x === 2) {\n    out.t(\"b\", _component);\n  } else {\n    out.t(\"c\", _component);\n  }\n  out.ee();\n  out.n(_marko_node9, _component);\n  out.n(_marko_node0, _component);\n  out.e(\"span\", _marko_attrs(abc), \"23\", _component, 0, 4);\n  if (cond) {\n    out.t(\"Hello \", _component);\n    out.t(planet, _component);\n  }\n  for (let _steps = (10 - 0) / 2, _step = 0; _step <= _steps; _step++) {\n    const i = 0 + _step * 2;\n    const _keyScope = `[${i}]`;\n    out.e(\"div\", {\n      \"c\": \"1\"\n    }, \"24\" + _keyScope, _component, 0, 0);\n  }\n  for (const key in obj) {\n    const val = obj[key];\n    const _keyScope2 = `[${key}]`;\n    out.e(\"div\", {\n      \"c\": \"1\"\n    }, \"25\" + _keyScope2, _component, 0, 0);\n  }\n}, {\n  t: _marko_componentType\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/sanity-check/template.marko",
    "content": "import a from \"b\";\n<!-- export { a }; -->\n\nstyle {\n  div {\n    color: green;\n  }\n}\n\n<style id=\"css\">\n  div {\n    color: ${x};\n  }\n</style>\n\n<script>\n  var y = ${x};\n</script>\n\nstatic {\n  doThings();\n  andStuff();\n  function more() {\n    abc();\n  }\n}\n\nclass {\n  onCreate() {\n    this.stuff();\n  }\n}\n\n<macro|stuff| name=\"thing\">\n  <div x=stuff.x/>\n</macro>\n\n$ var b = thing;\n$ let c = thing;\n<div b=b c=c>\n  $ var d = thing;\n  $ let e = thing;\n  <div d=d e=e/>\n</div>\n\n<div on-click(\"handleClick\", a, b, ...d)/>\n\n<div id:scoped=\"1\"/>\n\n<div class=[\"a\", { b: c, d }] style={ a: \"b\" }/>\n\n<input type=\"text\">\n\n<${a} key=\"x\">\n  <div/>\n</>\n\n<thing x=1/>\n\n<other|a| on-click(\"handleClick\", a, b, ...d)>\n  <div/>\n</other>\n\n<other x=1 ...thing b={ a: 1 } ...c>\n  <div/>\n  <@c c=1>\n    <div/>\n    <@d d=1>\n      <div/>\n    </@d>\n  </@c>\n</other>\n\n<div#a.b class=\"c\" a={a: 1} c  =  \"${d}\" ...e ...f()>\n  ${a}\n  <!--123-->\n  <html-comment>abc</html-comment>\n  <div c=1/>\n  <div d=1/>\n  <if(x === a)>a ${b}</>\n  <else-if(x === 2)>\n    b\n  </else-if>\n  <else>c</else>\n</div>\n<div b=1/>\n\n<div>\n\n 123\n\n abc\n\n 123\n\n</div>\n\n<span ...abc/>\n\n<if(cond)>\n  Hello ${planet}\n</if>\n\n<for|i| from=0 to=10 step=2>\n  <div c=1/>\n</for>\n\n<for|key, val| in=obj>\n  <div c=1/>\n</for>\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/scriptlet-comments/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconsole.log(\"hello\");\nconsole.log(\"world\"); // after\n\n/** before */console.log(\"again\");\n// We\n// Got\n// COMMENTS\nif (typeof window === \"object\") {\n  console.log(window);\n}\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  console.log(\"hello\");\n  console.log(\"world\"); // after\n\n  /** before */console.log(\"again\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/scriptlet-comments/snapshots/generated-expected.marko",
    "content": "static console.log(\"hello\");\nstatic {\n  console.log(\"world\"); // after\n}\nstatic {\n  /** before */console.log(\"again\");\n}\n$ console.log(\"hello\");\n$ {\n  console.log(\"world\"); // after\n}\n$ {\n  /** before */console.log(\"again\");\n}\nstatic {\n  // We\n  // Got\n  // COMMENTS\n  if (typeof window === \"object\") {\n    console.log(window);\n  }\n}"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/scriptlet-comments/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nconsole.log(\"hello\");\nconsole.log(\"world\"); // after\n\n/** before */console.log(\"again\");\n// We\n// Got\n// COMMENTS\nif (typeof window === \"object\") {\n  console.log(window);\n}\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  console.log(\"hello\");\n  console.log(\"world\"); // after\n\n  /** before */console.log(\"again\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/scriptlet-comments/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"oc9q5vt\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nconsole.log(\"hello\");\nconsole.log(\"world\"); // after\n\n/** before */console.log(\"again\");\n// We\n// Got\n// COMMENTS\nif (typeof window === \"object\") {\n  console.log(window);\n}\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  console.log(\"hello\");\n  console.log(\"world\"); // after\n\n  /** before */console.log(\"again\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/scriptlet-comments/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/scriptlet-comments/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nconsole.log(\"hello\");\nconsole.log(\"world\"); // after\n\n/** before */console.log(\"again\");\n// We\n// Got\n// COMMENTS\nif (typeof window === \"object\") {\n  console.log(window);\n}\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  console.log(\"hello\");\n  console.log(\"world\"); // after\n\n  /** before */console.log(\"again\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/scriptlet-comments/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"oc9q5vt\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nconsole.log(\"hello\");\nconsole.log(\"world\"); // after\n\n/** before */console.log(\"again\");\n// We\n// Got\n// COMMENTS\nif (typeof window === \"object\") {\n  console.log(window);\n}\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  console.log(\"hello\");\n  console.log(\"world\"); // after\n\n  /** before */console.log(\"again\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/scriptlet-comments/template.marko",
    "content": "static console.log(\"hello\");\n\nstatic console.log(\"world\"); // after\n\nstatic /** before */ console.log(\"again\");\n\n$ console.log(\"hello\");\n\n$ console.log(\"world\"); // after\n\n$ /** before */ console.log(\"again\");\n\nstatic {\n  // We\n  // Got\n  // COMMENTS\n  if (typeof window === \"object\") {\n    console.log(window);\n  }\n}\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/scriptlet-line-block/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _escapeXml = require(\"marko/src/runtime/html/helpers/escape-xml.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  var foo = 123;\n  function bar() {}\n  var baz = 456;\n  out.w(\"<div>\");\n  console.log('foo');\n  out.w(\"Hello there \");\n  out.w((0, _escapeXml.x)(name));\n  out.w(\"</div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/scriptlet-line-block/snapshots/generated-expected.marko",
    "content": "$ var foo = 123;\n$ {\n  function bar() {}\n  var baz = 456;\n}\n<div>\n  $ console.log('foo');\n  Hello there ${name}\n</div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/scriptlet-line-block/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { x as _marko_escapeXml } from \"marko/src/runtime/html/helpers/escape-xml.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  var foo = 123;\n  function bar() {}\n  var baz = 456;\n  out.w(\"<div>\");\n  console.log('foo');\n  out.w(\"Hello there \");\n  out.w(_marko_escapeXml(name));\n  out.w(\"</div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/scriptlet-line-block/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"gwUAmwG\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { x as _marko_escapeXml } from \"marko/dist/runtime/html/helpers/escape-xml.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  var foo = 123;\n  function bar() {}\n  var baz = 456;\n  out.w(\"<div>\");\n  console.log('foo');\n  out.w(`Hello there ${_marko_escapeXml(name)}</div>`);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/scriptlet-line-block/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/scriptlet-line-block/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  var foo = 123;\n  function bar() {}\n  var baz = 456;\n  out.be(\"div\", null, \"0\", _component, null, 0);\n  console.log('foo');\n  out.t(\"Hello there \", _component);\n  out.t(name, _component);\n  out.ee();\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/scriptlet-line-block/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"gwUAmwG\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  var foo = 123;\n  function bar() {}\n  var baz = 456;\n  out.be(\"div\", null, \"0\", _component, null, 0);\n  console.log('foo');\n  out.t(\"Hello there \", _component);\n  out.t(name, _component);\n  out.ee();\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/scriptlet-line-block/template.marko",
    "content": "$ var foo = 123;\n\n$ {\n    function bar() {\n\n    }\n    var baz = 456;\n}\n\n<div>\n    $ console.log('foo');\n    Hello there ${name}\n</div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/scriptlet-var-collision/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _escapeXml = require(\"marko/src/runtime/html/helpers/escape-xml.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  const x = 1;\n  out.w(\"<div>\");\n  (() => {\n    var x = 2;\n    out.w((0, _escapeXml.x)(x));\n  })();\n  out.w(\"</div>\");\n  out.w(\"<div>\");\n  out.w((0, _escapeXml.x)(x));\n  out.w(\"</div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/scriptlet-var-collision/snapshots/generated-expected.marko",
    "content": "$ const x = 1;\n<div>\n  $ var x = 2;\n  ${x}\n</div>\n<div>\n  ${x}\n</div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/scriptlet-var-collision/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { x as _marko_escapeXml } from \"marko/src/runtime/html/helpers/escape-xml.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  const x = 1;\n  out.w(\"<div>\");\n  (() => {\n    var x = 2;\n    out.w(_marko_escapeXml(x));\n  })();\n  out.w(\"</div>\");\n  out.w(\"<div>\");\n  out.w(_marko_escapeXml(x));\n  out.w(\"</div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/scriptlet-var-collision/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"WPxc0HF\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { x as _marko_escapeXml } from \"marko/dist/runtime/html/helpers/escape-xml.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  const x = 1;\n  out.w(\"<div>\");\n  (() => {\n    var x = 2;\n    out.w(_marko_escapeXml(x));\n  })();\n  out.w(`</div><div>${_marko_escapeXml(x)}</div>`);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/scriptlet-var-collision/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/scriptlet-var-collision/snapshots/vdom-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:3:9\n      1 | $ const x = 1;\n      2 | <div>\n    > 3 |   $ var x = 2;\n        |         ^ Duplicate declaration \"x\"\n      4 |   ${x}\n      5 | </div>\n      6 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/scriptlet-var-collision/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  const x = 1;\n  out.be(\"div\", null, \"0\", _component, null, 0);\n  (() => {\n    var x = 2;\n    out.t(x, _component);\n  })();\n  out.ee();\n  out.be(\"div\", null, \"1\", _component, null, 0);\n  out.t(x, _component);\n  out.ee();\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/scriptlet-var-collision/snapshots/vdomProduction-error-expected.txt",
    "content": "CompileError: \n    at __tests__/template.marko:3:9\n      1 | $ const x = 1;\n      2 | <div>\n    > 3 |   $ var x = 2;\n        |         ^ Duplicate declaration \"x\"\n      4 |   ${x}\n      5 | </div>\n      6 |"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/scriptlet-var-collision/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"WPxc0HF\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  const x = 1;\n  out.be(\"div\", null, \"0\", _component, null, 0);\n  (() => {\n    var x = 2;\n    out.t(x, _component);\n  })();\n  out.ee();\n  out.be(\"div\", null, \"1\", _component, null, 0);\n  out.t(x, _component);\n  out.ee();\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/scriptlet-var-collision/template.marko",
    "content": "$ const x = 1;\n<div>\n  $ var x = 2;\n  ${x}\n</div>\n\n<div>\n  ${x}\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/server-import-only/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _escapeXml = require(\"marko/src/runtime/html/helpers/escape-xml.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst bar = \"server\";\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div>\");\n  out.w((0, _escapeXml.x)(bar));\n  out.w(\"</div>\");\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/server-import-only/snapshots/generated-expected.marko",
    "content": "server const bar = \"server\";\nclass {}\n<div>\n  ${bar}\n</div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/server-import-only/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nconst bar = \"server\";\nimport { x as _marko_escapeXml } from \"marko/src/runtime/html/helpers/escape-xml.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div>\");\n  out.w(_marko_escapeXml(bar));\n  out.w(\"</div>\");\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/server-import-only/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"IuaitBH\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nconst bar = \"server\";\nimport { x as _marko_escapeXml } from \"marko/dist/runtime/html/helpers/escape-xml.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`<div>${_marko_escapeXml(bar)}</div>`);\n}, {\n  t: _marko_componentType\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/server-import-only/snapshots/hydrate-expected.js",
    "content": "import { init } from \"marko/src/runtime/components/index.js\";\nimport \"./template.marko\";\ninit();"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/server-import-only/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nvar bar;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.be(\"div\", null, \"0\", _component, null, 0);\n  out.t(bar, _component);\n  out.ee();\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/server-import-only/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"IuaitBH\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nvar bar;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.be(\"div\", null, \"0\", _component, null, 0);\n  out.t(bar, _component);\n  out.ee();\n}, {\n  t: _marko_componentType\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/server-import-only/template.marko",
    "content": "server const bar = \"server\";\n\nclass {}\n\n<div>\n  ${bar}\n</div>\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/shorthand-classname/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _classValue = _interopRequireDefault(require(\"marko/src/runtime/helpers/class-value.js\"));\nvar _attr = _interopRequireDefault(require(\"marko/src/runtime/html/helpers/attr.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div class=shorthand></div>\");\n  out.w(\"<div class=\\\"shorthand1 shorthand2\\\"></div>\");\n  out.w(\"<div class=\\\"shorthand1 shorthand2 inline\\\"></div>\");\n  out.w(`<div${(0, _attr.default)(\"class\", (0, _classValue.default)([\"shorthand1 shorthand2\", dynamic1]))}></div>`);\n  out.w(`<div${(0, _attr.default)(\"class\", (0, _classValue.default)([dynamic1, \"inline\"]))}></div>`);\n  out.w(`<div${(0, _attr.default)(\"class\", (0, _classValue.default)([dynamic1, \"shorthand2\", \"inline\"]))}></div>`);\n  out.w(`<div${(0, _attr.default)(\"class\", (0, _classValue.default)([dynamic1, \"shorthand2\", dynamic2]))}></div>`);\n  out.w(`<div${(0, _attr.default)(\"class\", (0, _classValue.default)([dynamic1, \"shorthand2\", dynamic2, dynamic3]))}></div>`);\n  out.w(`<div${(0, _attr.default)(\"class\", (0, _classValue.default)([\"shorthand\", dynamic1, dynamic2]))}></div>`);\n  out.w(`<div${(0, _attr.default)(\"class\", (0, _classValue.default)([`partially-${dynamic1}`, \"shorthand2\", dynamic2]))}></div>`);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/shorthand-classname/snapshots/generated-expected.marko",
    "content": "<div class=\"shorthand\"/>\n<div class=\"shorthand1 shorthand2\"/>\n<div class=`${\"shorthand1 shorthand2\"} ${\"inline\"}`/>\n<div class=[\"shorthand1 shorthand2\", dynamic1]/>\n<div class=[dynamic1, \"inline\"]/>\n<div class=[dynamic1, \"shorthand2\", \"inline\"]/>\n<div class=[dynamic1, \"shorthand2\", dynamic2]/>\n<div class=[dynamic1, \"shorthand2\", dynamic2, dynamic3]/>\n<div class=[\"shorthand\", dynamic1, dynamic2]/>\n<div class=[`partially-${dynamic1}`, \"shorthand2\", dynamic2]/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/shorthand-classname/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_class_merge from \"marko/src/runtime/helpers/class-value.js\";\nimport _marko_attr from \"marko/src/runtime/html/helpers/attr.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div class=shorthand></div>\");\n  out.w(\"<div class=\\\"shorthand1 shorthand2\\\"></div>\");\n  out.w(\"<div class=\\\"shorthand1 shorthand2 inline\\\"></div>\");\n  out.w(`<div${_marko_attr(\"class\", _marko_class_merge([\"shorthand1 shorthand2\", dynamic1]))}></div>`);\n  out.w(`<div${_marko_attr(\"class\", _marko_class_merge([dynamic1, \"inline\"]))}></div>`);\n  out.w(`<div${_marko_attr(\"class\", _marko_class_merge([dynamic1, \"shorthand2\", \"inline\"]))}></div>`);\n  out.w(`<div${_marko_attr(\"class\", _marko_class_merge([dynamic1, \"shorthand2\", dynamic2]))}></div>`);\n  out.w(`<div${_marko_attr(\"class\", _marko_class_merge([dynamic1, \"shorthand2\", dynamic2, dynamic3]))}></div>`);\n  out.w(`<div${_marko_attr(\"class\", _marko_class_merge([\"shorthand\", dynamic1, dynamic2]))}></div>`);\n  out.w(`<div${_marko_attr(\"class\", _marko_class_merge([`partially-${dynamic1}`, \"shorthand2\", dynamic2]))}></div>`);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/shorthand-classname/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"fNOmaCr\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_class_merge from \"marko/dist/runtime/helpers/class-value.js\";\nimport _marko_attr from \"marko/dist/runtime/html/helpers/attr.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`<div class=shorthand></div><div class=\"shorthand1 shorthand2\"></div><div class=\"shorthand1 shorthand2 inline\"></div><div${_marko_attr(\"class\", _marko_class_merge([\"shorthand1 shorthand2\", dynamic1]))}></div><div${_marko_attr(\"class\", _marko_class_merge([dynamic1, \"inline\"]))}></div><div${_marko_attr(\"class\", _marko_class_merge([dynamic1, \"shorthand2\", \"inline\"]))}></div><div${_marko_attr(\"class\", _marko_class_merge([dynamic1, \"shorthand2\", dynamic2]))}></div><div${_marko_attr(\"class\", _marko_class_merge([dynamic1, \"shorthand2\", dynamic2, dynamic3]))}></div><div${_marko_attr(\"class\", _marko_class_merge([\"shorthand\", dynamic1, dynamic2]))}></div><div${_marko_attr(\"class\", _marko_class_merge([`partially-${dynamic1}`, \"shorthand2\", dynamic2]))}></div>`);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/shorthand-classname/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/shorthand-classname/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_class_merge from \"marko/src/runtime/helpers/class-value.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.e(\"div\", {\n    \"class\": \"shorthand\"\n  }, \"0\", _component, 0, 1);\n  out.e(\"div\", {\n    \"class\": \"shorthand1 shorthand2\"\n  }, \"1\", _component, 0, 1);\n  out.e(\"div\", {\n    \"class\": \"shorthand1 shorthand2 inline\"\n  }, \"2\", _component, 0, 1);\n  out.e(\"div\", {\n    \"class\": _marko_class_merge([\"shorthand1 shorthand2\", dynamic1])\n  }, \"3\", _component, 0, 1);\n  out.e(\"div\", {\n    \"class\": _marko_class_merge([dynamic1, \"inline\"])\n  }, \"4\", _component, 0, 1);\n  out.e(\"div\", {\n    \"class\": _marko_class_merge([dynamic1, \"shorthand2\", \"inline\"])\n  }, \"5\", _component, 0, 1);\n  out.e(\"div\", {\n    \"class\": _marko_class_merge([dynamic1, \"shorthand2\", dynamic2])\n  }, \"6\", _component, 0, 1);\n  out.e(\"div\", {\n    \"class\": _marko_class_merge([dynamic1, \"shorthand2\", dynamic2, dynamic3])\n  }, \"7\", _component, 0, 1);\n  out.e(\"div\", {\n    \"class\": _marko_class_merge([\"shorthand\", dynamic1, dynamic2])\n  }, \"8\", _component, 0, 1);\n  out.e(\"div\", {\n    \"class\": _marko_class_merge([`partially-${dynamic1}`, \"shorthand2\", dynamic2])\n  }, \"9\", _component, 0, 1);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/shorthand-classname/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"fNOmaCr\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_constElement from \"marko/dist/runtime/vdom/helpers/const-element.js\";\nconst _marko_node = _marko_constElement(\"div\", {\n  \"class\": \"shorthand\"\n}, 0);\nconst _marko_node2 = _marko_constElement(\"div\", {\n  \"class\": \"shorthand1 shorthand2\"\n}, 0);\nconst _marko_node3 = _marko_constElement(\"div\", {\n  \"class\": \"shorthand1 shorthand2 inline\"\n}, 0);\nimport _marko_class_merge from \"marko/dist/runtime/helpers/class-value.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.n(_marko_node, _component);\n  out.n(_marko_node2, _component);\n  out.n(_marko_node3, _component);\n  out.e(\"div\", {\n    \"class\": _marko_class_merge([\"shorthand1 shorthand2\", dynamic1])\n  }, \"3\", _component, 0, 1);\n  out.e(\"div\", {\n    \"class\": _marko_class_merge([dynamic1, \"inline\"])\n  }, \"4\", _component, 0, 1);\n  out.e(\"div\", {\n    \"class\": _marko_class_merge([dynamic1, \"shorthand2\", \"inline\"])\n  }, \"5\", _component, 0, 1);\n  out.e(\"div\", {\n    \"class\": _marko_class_merge([dynamic1, \"shorthand2\", dynamic2])\n  }, \"6\", _component, 0, 1);\n  out.e(\"div\", {\n    \"class\": _marko_class_merge([dynamic1, \"shorthand2\", dynamic2, dynamic3])\n  }, \"7\", _component, 0, 1);\n  out.e(\"div\", {\n    \"class\": _marko_class_merge([\"shorthand\", dynamic1, dynamic2])\n  }, \"8\", _component, 0, 1);\n  out.e(\"div\", {\n    \"class\": _marko_class_merge([`partially-${dynamic1}`, \"shorthand2\", dynamic2])\n  }, \"9\", _component, 0, 1);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/shorthand-classname/template.marko",
    "content": "<div.shorthand/>\n<div.shorthand1.shorthand2/>\n<div.shorthand1.shorthand2 class=\"inline\"/>\n<div.shorthand1.shorthand2 class=dynamic1/>\n<div.${dynamic1} class=\"inline\"/>\n<div.${dynamic1}.shorthand2 class=\"inline\"/>\n<div.${dynamic1}.shorthand2 class=dynamic2/>\n<div.${dynamic1}.shorthand2 class=[dynamic2, dynamic3]/>\n<div.shorthand class=[dynamic1, dynamic2]/>\n<div.partially-${dynamic1}.shorthand2 class=dynamic2/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/shorthand-id/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _attr = _interopRequireDefault(require(\"marko/src/runtime/html/helpers/attr.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div id=shorthand></div>\");\n  out.w(`<div${(0, _attr.default)(\"id\", dynamic)}></div>`);\n  out.w(`<div id=\"partial-${_attr.default.d(dynamic)}\"></div>`);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/shorthand-id/snapshots/generated-expected.marko",
    "content": "<div id=\"shorthand\"/>\n<div id=dynamic/>\n<div id=`partial-${dynamic}`/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/shorthand-id/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_attr from \"marko/src/runtime/html/helpers/attr.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div id=shorthand></div>\");\n  out.w(`<div${_marko_attr(\"id\", dynamic)}></div>`);\n  out.w(`<div id=\"partial-${_marko_attr.d(dynamic)}\"></div>`);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/shorthand-id/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"ClZMdsT\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_attr from \"marko/dist/runtime/html/helpers/attr.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`<div id=shorthand></div><div${_marko_attr(\"id\", dynamic)}></div><div id=\"partial-${_marko_attr.d(dynamic)}\"></div>`);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/shorthand-id/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/shorthand-id/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.e(\"div\", {\n    \"id\": \"shorthand\"\n  }, \"0\", _component, 0, 1);\n  out.e(\"div\", {\n    \"id\": dynamic\n  }, \"1\", _component, 0, 1);\n  out.e(\"div\", {\n    \"id\": `partial-${dynamic}`\n  }, \"2\", _component, 0, 1);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/shorthand-id/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"ClZMdsT\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_constElement from \"marko/dist/runtime/vdom/helpers/const-element.js\";\nconst _marko_node = _marko_constElement(\"div\", {\n  \"id\": \"shorthand\"\n}, 0);\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.n(_marko_node, _component);\n  out.e(\"div\", {\n    \"id\": dynamic\n  }, \"1\", _component, 0, 1);\n  out.e(\"div\", {\n    \"id\": `partial-${dynamic}`\n  }, \"2\", _component, 0, 1);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/shorthand-id/template.marko",
    "content": "<div#shorthand/>\n<div#${dynamic}/>\n<div#partial-${dynamic}/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/simple/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _escapeXml = require(\"marko/src/runtime/html/helpers/escape-xml.js\");\nvar _ofFallback = _interopRequireDefault(require(\"marko/src/runtime/helpers/of-fallback.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"Hello \");\n  out.w((0, _escapeXml.x)(input.name));\n  out.w(\"! \");\n  if (input.colors.length) {\n    out.w(\"<ul>\");\n    {\n      let _keyValue = 0;\n      for (const color of (0, _ofFallback.default)(input.colors)) {\n        const _keyScope = `[${_keyValue++}]`;\n        out.w(\"<li>\");\n        out.w((0, _escapeXml.x)(color));\n        out.w(\"</li>\");\n      }\n    }\n    out.w(\"</ul>\");\n  } else {\n    out.w(\"<div>\");\n    out.w(\"No colors!\");\n    out.w(\"</div>\");\n  }\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/simple/snapshots/generated-expected.marko",
    "content": "-- Hello \n-- ${input.name}\n-- ! \n<if(input.colors.length)>\n  <ul>\n    <for|color| of=input.colors>\n      <li>\n        ${color}\n      </li>\n    </for>\n  </ul>\n</if>\n<else>\n  <div>\n    No colors!\n  </div>\n</else>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/simple/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { x as _marko_escapeXml } from \"marko/src/runtime/html/helpers/escape-xml.js\";\nimport _of_fallback from \"marko/src/runtime/helpers/of-fallback.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"Hello \");\n  out.w(_marko_escapeXml(input.name));\n  out.w(\"! \");\n  if (input.colors.length) {\n    out.w(\"<ul>\");\n    {\n      let _keyValue = 0;\n      for (const color of _of_fallback(input.colors)) {\n        const _keyScope = `[${_keyValue++}]`;\n        out.w(\"<li>\");\n        out.w(_marko_escapeXml(color));\n        out.w(\"</li>\");\n      }\n    }\n    out.w(\"</ul>\");\n  } else {\n    out.w(\"<div>\");\n    out.w(\"No colors!\");\n    out.w(\"</div>\");\n  }\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/simple/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"z1NvL97\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { x as _marko_escapeXml } from \"marko/dist/runtime/html/helpers/escape-xml.js\";\nimport _of_fallback from \"marko/dist/runtime/helpers/of-fallback.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`Hello ${_marko_escapeXml(input.name)}! `);\n  if (input.colors.length) {\n    out.w(\"<ul>\");\n    {\n      let _keyValue = 0;\n      for (const color of _of_fallback(input.colors)) {\n        const _keyScope = `[${_keyValue++}]`;\n        out.w(`<li>${_marko_escapeXml(color)}</li>`);\n      }\n    }\n    out.w(\"</ul>\");\n  } else {\n    out.w(\"<div>No colors!</div>\");\n  }\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/simple/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/simple/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _of_fallback from \"marko/src/runtime/helpers/of-fallback.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.t(\"Hello \", _component);\n  out.t(input.name, _component);\n  out.t(\"! \", _component);\n  if (input.colors.length) {\n    out.be(\"ul\", null, \"0\", _component, null, 0);\n    {\n      let _keyValue = 0;\n      for (const color of _of_fallback(input.colors)) {\n        const _keyScope = `[${_keyValue++}]`;\n        out.be(\"li\", null, \"1\" + _keyScope, _component, null, 0);\n        out.t(color, _component);\n        out.ee();\n      }\n    }\n    out.ee();\n  } else {\n    out.be(\"div\", null, \"2\", _component, null, 0);\n    out.t(\"No colors!\", _component);\n    out.ee();\n  }\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/simple/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"z1NvL97\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _of_fallback from \"marko/dist/runtime/helpers/of-fallback.js\";\nimport _marko_constElement from \"marko/dist/runtime/vdom/helpers/const-element.js\";\nconst _marko_node = _marko_constElement(\"div\", null, 1).t(\"No colors!\");\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.t(\"Hello \", _component);\n  out.t(input.name, _component);\n  out.t(\"! \", _component);\n  if (input.colors.length) {\n    out.be(\"ul\", null, \"0\", _component, null, 0);\n    {\n      let _keyValue = 0;\n      for (const color of _of_fallback(input.colors)) {\n        const _keyScope = `[${_keyValue++}]`;\n        out.be(\"li\", null, \"1\" + _keyScope, _component, null, 0);\n        out.t(color, _component);\n        out.ee();\n      }\n    }\n    out.ee();\n  } else {\n    out.n(_marko_node, _component);\n  }\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/simple/template.marko",
    "content": "---\nHello ${input.name}!\n\n<if(input.colors.length)>\n    <ul>\n        <for|color| of=input.colors>\n            <li>\n                ${color}\n            </li>\n        </for>\n    </ul>\n</if>\n<else>\n    <div>\n        No colors!\n    </div>\n</else>\n---"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/simple-attrs-tag/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _dataMarko = _interopRequireDefault(require(\"marko/src/runtime/html/helpers/data-marko.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div style=c:1px class=b id=a></div>\");\n  out.w(\"<div style=c:1px id=a></div>\");\n  out.w(\"<div style=c:1px></div>\");\n  out.w(`<div${(0, _dataMarko.default)(out, _componentDef, {\n    pa: {\n      style: 1\n    }\n  })} style=c:1px></div>`);\n  out.w(\"<div a=1 style=c:1px></div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/simple-attrs-tag/snapshots/generated-expected.marko",
    "content": "<div style={\n  c: 1\n} class=\"b\" id=\"a\"/>\n<div style={\n  c: 1\n} id=\"a\"/>\n<div style={\n  c: 1\n}/>\n<!-- bail -->\n<div style:no-update={\n  c: 1\n}/>\n<div a=1 style={\n  c: 1\n}/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/simple-attrs-tag/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_props from \"marko/src/runtime/html/helpers/data-marko.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div style=c:1px class=b id=a></div>\");\n  out.w(\"<div style=c:1px id=a></div>\");\n  out.w(\"<div style=c:1px></div>\");\n  out.w(`<div${_marko_props(out, _componentDef, {\n    pa: {\n      style: 1\n    }\n  })} style=c:1px></div>`);\n  out.w(\"<div a=1 style=c:1px></div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/simple-attrs-tag/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"O7QRGsE\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_props from \"marko/dist/runtime/html/helpers/data-marko.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`<div style=c:1px class=b id=a></div><div style=c:1px id=a></div><div style=c:1px></div><div${_marko_props(out, _componentDef, {\n    pa: {\n      style: 1\n    }\n  })} style=c:1px></div><div a=1 style=c:1px></div>`);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/simple-attrs-tag/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/simple-attrs-tag/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.e(\"div\", {\n    \"style\": \"c:1px\",\n    \"class\": \"b\",\n    \"id\": \"a\"\n  }, \"0\", _component, 0, 1);\n  out.e(\"div\", {\n    \"style\": \"c:1px\",\n    \"id\": \"a\"\n  }, \"1\", _component, 0, 1);\n  out.e(\"div\", {\n    \"style\": \"c:1px\"\n  }, \"2\", _component, 0, 1);\n  out.e(\"div\", {\n    \"style\": \"c:1px\"\n  }, \"3\", _component, 0, 0, {\n    pa: {\n      style: 1\n    }\n  });\n  out.e(\"div\", {\n    \"a\": \"1\",\n    \"style\": \"c:1px\"\n  }, \"4\", _component, 0, 0);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/simple-attrs-tag/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"O7QRGsE\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_constElement from \"marko/dist/runtime/vdom/helpers/const-element.js\";\nconst _marko_node = _marko_constElement(\"div\", {\n  \"style\": \"c:1px\",\n  \"class\": \"b\",\n  \"id\": \"a\"\n}, 0);\nconst _marko_node2 = _marko_constElement(\"div\", {\n  \"style\": \"c:1px\",\n  \"id\": \"a\"\n}, 0);\nconst _marko_node3 = _marko_constElement(\"div\", {\n  \"style\": \"c:1px\"\n}, 0);\nconst _marko_node4 = _marko_constElement(\"div\", {\n  \"a\": \"1\",\n  \"style\": \"c:1px\"\n}, 0);\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.n(_marko_node, _component);\n  out.n(_marko_node2, _component);\n  out.n(_marko_node3, _component);\n  out.e(\"div\", {\n    \"style\": \"c:1px\"\n  }, \"3\", _component, 0, 0, {\n    pa: {\n      style: 1\n    }\n  });\n  out.n(_marko_node4, _component);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/simple-attrs-tag/template.marko",
    "content": "<div#a.b style={ c: 1 }/>\n<div#a style={ c: 1 }/>\n<div style={ c: 1 }/>\n\n<!-- bail -->\n<div style:no-update={ c: 1 }/>\n<div a=1 style={ c: 1 }/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/split-component/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div></div>\");\n}, {\n  t: _marko_componentType,\n  s: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/split-component/snapshots/generated-expected.marko",
    "content": "<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/split-component/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div></div>\");\n}, {\n  t: _marko_componentType,\n  s: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/split-component/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"lVufswK\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div></div>\");\n}, {\n  t: _marko_componentType,\n  s: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/split-component/snapshots/hydrate-expected.js",
    "content": "import { register, init } from \"marko/src/runtime/components/index.js\";\nimport component_0 from \"./template.component-browser.js\";\nregister(\"__tests__/template.marko\", component_0);\ninit();"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/split-component/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\nimport _marko_split_component from \"./template.component-browser.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_split_component);\nconst _marko_component = {};\n_marko_split_component.renderer = _marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.e(\"div\", null, \"0\", _component, 0, 0);\n}, {\n  t: _marko_componentType,\n  s: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/split-component/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"lVufswK\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_constElement from \"marko/dist/runtime/vdom/helpers/const-element.js\";\nconst _marko_node = _marko_constElement(\"div\", null, 0);\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\nimport _marko_split_component from \"./template.component-browser.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_split_component);\nconst _marko_component = {};\n_marko_split_component.renderer = _marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.n(_marko_node, _component);\n}, {\n  t: _marko_componentType,\n  s: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/split-component/template.component-browser.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/split-component/template.marko",
    "content": "<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/split-component-with-component/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _templateComponent = _interopRequireDefault(require(\"./template.component.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component2 = _templateComponent.default;\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div></div>\");\n}, {\n  t: _marko_componentType,\n  s: true,\n  d: true\n}, _marko_component2);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/split-component-with-component/snapshots/generated-expected.marko",
    "content": "<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/split-component-with-component/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_component from \"./template.component.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component2 = _marko_component;\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div></div>\");\n}, {\n  t: _marko_componentType,\n  s: true,\n  d: true\n}, _marko_component2);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/split-component-with-component/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"o_pZ1tZ\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_component from \"./template.component.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component2 = _marko_component;\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div></div>\");\n}, {\n  t: _marko_componentType,\n  s: true\n}, _marko_component2);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/split-component-with-component/snapshots/hydrate-expected.js",
    "content": "import { register, init } from \"marko/src/runtime/components/index.js\";\nimport component_0 from \"./template.component-browser.js\";\nregister(\"__tests__/template.marko\", component_0);\ninit();"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/split-component-with-component/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_component from \"./template.component.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\nimport _marko_split_component from \"./template.component-browser.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_split_component);\nconst _marko_component2 = _marko_component;\n_marko_split_component.renderer = _marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.e(\"div\", null, \"0\", _component, 0, 0);\n}, {\n  t: _marko_componentType,\n  s: true,\n  d: true\n}, _marko_component2);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component2, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/split-component-with-component/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"o_pZ1tZ\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_constElement from \"marko/dist/runtime/vdom/helpers/const-element.js\";\nconst _marko_node = _marko_constElement(\"div\", null, 0);\nimport _marko_component from \"./template.component.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\nimport _marko_split_component from \"./template.component-browser.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_split_component);\nconst _marko_component2 = _marko_component;\n_marko_split_component.renderer = _marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.n(_marko_node, _component);\n}, {\n  t: _marko_componentType,\n  s: true\n}, _marko_component2);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component2, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/split-component-with-component/template.component-browser.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/split-component-with-component/template.component.js",
    "content": "module.exports = {};\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/split-component-with-component/template.marko",
    "content": "<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/statement-comment-only/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\n;\n/* only a comment */\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/statement-comment-only/snapshots/generated-expected.marko",
    "content": "static {\n  ;\n  /* only a comment */\n}"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/statement-comment-only/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\n;\n/* only a comment */\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/statement-comment-only/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"daEYByF\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\n;\n/* only a comment */\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/statement-comment-only/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/statement-comment-only/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\n;\n/* only a comment */\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/statement-comment-only/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"daEYByF\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\n;\n/* only a comment */\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/statement-comment-only/template.marko",
    "content": "static /* only a comment */\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/static-tag/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nvar foo = 123;\nfunction bar() {}\nvar baz = 456;\nlet x = 1,\n  y = 2;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/static-tag/snapshots/generated-expected.marko",
    "content": "static var foo = 123;\nstatic {\n  function bar() {}\n  var baz = 456;\n}\nstatic {\n  let x = 1,\n    y = 2;\n}"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/static-tag/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nvar foo = 123;\nfunction bar() {}\nvar baz = 456;\nlet x = 1,\n  y = 2;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/static-tag/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"SikcPpY\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nvar foo = 123;\nfunction bar() {}\nvar baz = 456;\nlet x = 1,\n  y = 2;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/static-tag/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/static-tag/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nvar foo = 123;\nfunction bar() {}\nvar baz = 456;\nlet x = 1,\n  y = 2;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/static-tag/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"SikcPpY\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nvar foo = 123;\nfunction bar() {}\nvar baz = 456;\nlet x = 1,\n  y = 2;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/static-tag/template.marko",
    "content": "static var foo = 123;\n\nstatic {\n    function bar() {\n\n    }\n    var baz = 456;\n}\n\nstatic let x = 1, y = 2;\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/style-block-empty/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div class=test></div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/style-block-empty/snapshots/generated-expected.marko",
    "content": "style.less {\n}\n<div class=\"test\"/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/style-block-empty/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div class=test></div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/style-block-empty/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"GkBE5$f\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div class=test></div>\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/style-block-empty/snapshots/hydrate-expected.js",
    "content": "import \"./template.marko.less\";"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/style-block-empty/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.e(\"div\", {\n    \"class\": \"test\"\n  }, \"0\", _component, 0, 1);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/style-block-empty/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"GkBE5$f\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_constElement from \"marko/dist/runtime/vdom/helpers/const-element.js\";\nconst _marko_node = _marko_constElement(\"div\", {\n  \"class\": \"test\"\n}, 0);\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.n(_marko_node, _component);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/style-block-empty/template.marko",
    "content": "style.less {\n}\n\n<div class=\"test\"/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/style-block-with-styles/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div class=test></div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/style-block-with-styles/snapshots/generated-expected.marko",
    "content": "style {\n  .test {\n    color: green;\n  }\n}\n<div class=\"test\"/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/style-block-with-styles/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div class=test></div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/style-block-with-styles/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"n8xg8Ni\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div class=test></div>\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/style-block-with-styles/snapshots/hydrate-expected.js",
    "content": "import \"./template.marko.css\";"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/style-block-with-styles/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.e(\"div\", {\n    \"class\": \"test\"\n  }, \"0\", _component, 0, 1);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/style-block-with-styles/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"n8xg8Ni\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_constElement from \"marko/dist/runtime/vdom/helpers/const-element.js\";\nconst _marko_node = _marko_constElement(\"div\", {\n  \"class\": \"test\"\n}, 0);\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.n(_marko_node, _component);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/style-block-with-styles/template.marko",
    "content": "style {\n  .test {\n    color: green;\n  }\n}\n\n<div class=\"test\"/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/svg-tag/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<svg height=100 width=100>\");\n  out.w(\"<circle cx=50 cy=50 r=40 stroke=black stroke-width=3 fill=red />\");\n  out.w(\"<a></a>\");\n  out.w(\"<style>\");\n  out.w(\"div { color: green }\");\n  out.w(\"</style>\");\n  out.w(\"<script>\");\n  out.w(\"alert(\\\"Hello\\\");\");\n  out.w(\"</script>\");\n  out.w(\"<title>\");\n  out.w(\"Test\");\n  out.w(\"</title>\");\n  out.w(\"<a xlink:href=\\\"https://developer.mozilla.org/\\\">\");\n  out.w(\"<text x=10 y=25>\");\n  out.w(\"MDN Web Docs\");\n  out.w(\"</text>\");\n  out.w(\"</a>\");\n  out.w(\"</svg>\");\n  out.w(\"<a></a>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/svg-tag/snapshots/generated-expected.marko",
    "content": "<svg height=\"100\" width=\"100\">\n  <circle cx=\"50\" cy=\"50\" r=\"40\" stroke=\"black\" stroke-width=\"3\" fill=\"red\"/>\n  <!-- Maybe SVG's-->\n  <a/>\n  <style>\n    div { color: green }\n  </style>\n  <script>\n    alert(\"Hello\");\n  </script>\n  <title>\n    Test\n  </title>\n  <a xlink:href=\"https://developer.mozilla.org/\">\n    <text x=\"10\" y=\"25\">\n      MDN Web Docs\n    </text>\n  </a>\n</svg>\n<a/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/svg-tag/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<svg height=100 width=100>\");\n  out.w(\"<circle cx=50 cy=50 r=40 stroke=black stroke-width=3 fill=red />\");\n  out.w(\"<a></a>\");\n  out.w(\"<style>\");\n  out.w(\"div { color: green }\");\n  out.w(\"</style>\");\n  out.w(\"<script>\");\n  out.w(\"alert(\\\"Hello\\\");\");\n  out.w(\"</script>\");\n  out.w(\"<title>\");\n  out.w(\"Test\");\n  out.w(\"</title>\");\n  out.w(\"<a xlink:href=\\\"https://developer.mozilla.org/\\\">\");\n  out.w(\"<text x=10 y=25>\");\n  out.w(\"MDN Web Docs\");\n  out.w(\"</text>\");\n  out.w(\"</a>\");\n  out.w(\"</svg>\");\n  out.w(\"<a></a>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/svg-tag/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"XrquASE\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<svg height=100 width=100><circle cx=50 cy=50 r=40 stroke=black stroke-width=3 fill=red /><a></a><style>div { color: green }</style><script>alert(\\\"Hello\\\");</script><title>Test</title><a xlink:href=\\\"https://developer.mozilla.org/\\\"><text x=10 y=25>MDN Web Docs</text></a></svg><a></a>\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/svg-tag/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/svg-tag/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.be(\"svg\", {\n    \"height\": \"100\",\n    \"width\": \"100\"\n  }, \"0\", _component, null, 0);\n  out.e(\"circle\", {\n    \"cx\": \"50\",\n    \"cy\": \"50\",\n    \"r\": \"40\",\n    \"stroke\": \"black\",\n    \"stroke-width\": \"3\",\n    \"fill\": \"red\"\n  }, \"1\", _component, 0, 0);\n  out.e(\"a\", null, \"2\", _component, 0, 0);\n  out.be(\"style\", null, \"3\", _component, null, 0);\n  out.t(\"div { color: green }\", _component);\n  out.ee();\n  out.be(\"script\", null, \"4\", _component, null, 0);\n  out.t(\"alert(\\\"Hello\\\");\", _component);\n  out.ee();\n  out.be(\"title\", null, \"5\", _component, null, 0);\n  out.t(\"Test\", _component);\n  out.ee();\n  out.be(\"a\", {\n    \"xlink:href\": \"https://developer.mozilla.org/\"\n  }, \"6\", _component, null, 0);\n  out.be(\"text\", {\n    \"x\": \"10\",\n    \"y\": \"25\"\n  }, \"7\", _component, null, 0);\n  out.t(\"MDN Web Docs\", _component);\n  out.ee();\n  out.ee();\n  out.ee();\n  out.e(\"a\", null, \"8\", _component, 0, 0);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/svg-tag/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"XrquASE\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_constElement from \"marko/dist/runtime/vdom/helpers/const-element.js\";\nconst _marko_node = _marko_constElement(\"circle\", {\n  \"cx\": \"50\",\n  \"cy\": \"50\",\n  \"r\": \"40\",\n  \"stroke\": \"black\",\n  \"stroke-width\": \"3\",\n  \"fill\": \"red\"\n}, 0);\nconst _marko_node2 = _marko_constElement(\"a\", null, 0);\nconst _marko_node3 = _marko_constElement(\"style\", null, 1).t(\"div { color: green }\");\nconst _marko_node4 = _marko_constElement(\"script\", null, 1).t(\"alert(\\\"Hello\\\");\");\nconst _marko_node5 = _marko_constElement(\"title\", null, 1).t(\"Test\");\nconst _marko_node6 = _marko_constElement(\"text\", {\n  \"x\": \"10\",\n  \"y\": \"25\"\n}, 1).t(\"MDN Web Docs\");\nconst _marko_node7 = _marko_constElement(\"a\", null, 0);\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.be(\"svg\", {\n    \"height\": \"100\",\n    \"width\": \"100\"\n  }, \"0\", _component, null, 0);\n  out.n(_marko_node, _component);\n  out.n(_marko_node2, _component);\n  out.n(_marko_node3, _component);\n  out.n(_marko_node4, _component);\n  out.n(_marko_node5, _component);\n  out.be(\"a\", {\n    \"xlink:href\": \"https://developer.mozilla.org/\"\n  }, \"6\", _component, null, 0);\n  out.n(_marko_node6, _component);\n  out.ee();\n  out.ee();\n  out.n(_marko_node7, _component);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/svg-tag/template.marko",
    "content": "<svg height=\"100\" width=\"100\">\n  <circle cx=\"50\" cy=\"50\" r=\"40\" stroke=\"black\" stroke-width=\"3\" fill=\"red\" />\n  <!-- Maybe SVG's-->\n  <a/>\n  <style>div { color: green }</style>\n  <script>alert(\"Hello\");</script>\n  <title>Test</title>\n  <a xlink:href=\"https://developer.mozilla.org/\"><text x=\"10\" y=\"25\">MDN Web Docs</text></a>\n</svg>\n\n<a/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/tag-block-scoping/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _attr = _interopRequireDefault(require(\"marko/src/runtime/html/helpers/attr.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  var b = thing;\n  let c = thing;\n  out.w(`<div${(0, _attr.default)(\"b\", b)}${(0, _attr.default)(\"c\", c)}>`);\n  (() => {\n    var d = thing;\n    let e = thing;\n    out.w(`<div${(0, _attr.default)(\"d\", d)}${(0, _attr.default)(\"e\", e)}></div>`);\n  })();\n  out.w(\"</div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/tag-block-scoping/snapshots/generated-expected.marko",
    "content": "$ var b = thing;\n$ let c = thing;\n<div b=b c=c>\n  $ var d = thing;\n  $ let e = thing;\n  <div d=d e=e/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/tag-block-scoping/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_attr from \"marko/src/runtime/html/helpers/attr.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  var b = thing;\n  let c = thing;\n  out.w(`<div${_marko_attr(\"b\", b)}${_marko_attr(\"c\", c)}>`);\n  (() => {\n    var d = thing;\n    let e = thing;\n    out.w(`<div${_marko_attr(\"d\", d)}${_marko_attr(\"e\", e)}></div>`);\n  })();\n  out.w(\"</div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/tag-block-scoping/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"A0yn8si\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_attr from \"marko/dist/runtime/html/helpers/attr.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  var b = thing;\n  let c = thing;\n  out.w(`<div${_marko_attr(\"b\", b)}${_marko_attr(\"c\", c)}>`);\n  (() => {\n    var d = thing;\n    let e = thing;\n    out.w(`<div${_marko_attr(\"d\", d)}${_marko_attr(\"e\", e)}></div>`);\n  })();\n  out.w(\"</div>\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/tag-block-scoping/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/tag-block-scoping/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  var b = thing;\n  let c = thing;\n  out.be(\"div\", {\n    \"b\": b,\n    \"c\": c\n  }, \"0\", _component, null, 0);\n  (() => {\n    var d = thing;\n    let e = thing;\n    out.e(\"div\", {\n      \"d\": d,\n      \"e\": e\n    }, \"1\", _component, 0, 0);\n  })();\n  out.ee();\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/tag-block-scoping/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"A0yn8si\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  var b = thing;\n  let c = thing;\n  out.be(\"div\", {\n    \"b\": b,\n    \"c\": c\n  }, \"0\", _component, null, 0);\n  (() => {\n    var d = thing;\n    let e = thing;\n    out.e(\"div\", {\n      \"d\": d,\n      \"e\": e\n    }, \"1\", _component, 0, 0);\n  })();\n  out.ee();\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/tag-block-scoping/template.marko",
    "content": "$ var b = thing;\n$ let c = thing;\n<div b=b c=c>\n  $ var d = thing;\n  $ let e = thing;\n  <div d=d e=e/>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/tag-with-default-attr/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _attr = _interopRequireDefault(require(\"marko/src/runtime/html/helpers/attr.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div value></div>\");\n  out.w(\"<div></div>\");\n  out.w(`<div${(0, _attr.default)(\"value\", abc)}></div>`);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/tag-with-default-attr/snapshots/generated-expected.marko",
    "content": "<div=true/>\n<div=false/>\n<div=abc/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/tag-with-default-attr/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_attr from \"marko/src/runtime/html/helpers/attr.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div value></div>\");\n  out.w(\"<div></div>\");\n  out.w(`<div${_marko_attr(\"value\", abc)}></div>`);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/tag-with-default-attr/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"efjtpa4\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_attr from \"marko/dist/runtime/html/helpers/attr.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`<div value></div><div></div><div${_marko_attr(\"value\", abc)}></div>`);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/tag-with-default-attr/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/tag-with-default-attr/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.e(\"div\", {\n    \"value\": \"\"\n  }, \"0\", _component, 0, 0);\n  out.e(\"div\", null, \"1\", _component, 0, 0);\n  out.e(\"div\", {\n    \"value\": abc\n  }, \"2\", _component, 0, 0);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/tag-with-default-attr/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"efjtpa4\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_constElement from \"marko/dist/runtime/vdom/helpers/const-element.js\";\nconst _marko_node = _marko_constElement(\"div\", {\n  \"value\": \"\"\n}, 0);\nconst _marko_node2 = _marko_constElement(\"div\", null, 0);\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.n(_marko_node, _component);\n  out.n(_marko_node2, _component);\n  out.e(\"div\", {\n    \"value\": abc\n  }, \"2\", _component, 0, 0);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/tag-with-default-attr/template.marko",
    "content": "<div=true/>\n<div=false/>\n<div=abc/>\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/textarea-tag/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<textarea>\");\n  out.w(\"\\n  hello world\\n\");\n  out.w(\"</textarea>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/textarea-tag/snapshots/generated-expected.marko",
    "content": "<textarea>\n  \n  hello world\n\n</textarea>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/textarea-tag/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<textarea>\");\n  out.w(\"\\n  hello world\\n\");\n  out.w(\"</textarea>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/textarea-tag/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"ADOzxGt\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<textarea>\\n  hello world\\n</textarea>\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/textarea-tag/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/textarea-tag/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.be(\"textarea\", null, \"0\", _component, null, 0);\n  out.t(\"\\n  hello world\\n\", _component);\n  out.ee();\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/textarea-tag/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"ADOzxGt\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_constElement from \"marko/dist/runtime/vdom/helpers/const-element.js\";\nconst _marko_node = _marko_constElement(\"textarea\", null, 1).t(\"\\n  hello world\\n\");\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.n(_marko_node, _component);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/textarea-tag/template.marko",
    "content": "<textarea>\n  hello world\n</textarea>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/top-level-text/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"Hello John\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/top-level-text/snapshots/generated-expected.marko",
    "content": "-- Hello John"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/top-level-text/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"Hello John\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/top-level-text/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"WzG9t$4\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"Hello John\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/top-level-text/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/top-level-text/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.t(\"Hello John\", _component);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/top-level-text/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"WzG9t$4\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.t(\"Hello John\", _component);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/top-level-text/template.marko",
    "content": "-- Hello John"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/typescript-basic/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _classValue = _interopRequireDefault(require(\"marko/src/runtime/helpers/class-value.js\"));\nvar _attr = _interopRequireDefault(require(\"marko/src/runtime/html/helpers/attr.js\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  const x = \"hello!\";\n  out.w(`<div${(0, _attr.default)(\"class\", (0, _classValue.default)(window.x))}>`);\n  out.w(\"Hello\");\n  out.w(\"</div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/typescript-basic/snapshots/generated-expected.marko",
    "content": "import type test from \"./test\";\nstatic type alias = test;\n$ const x: alias = \"hello!\";\n<div class=(window as any).x as string>\n  Hello\n</div>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/typescript-basic/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_class_merge from \"marko/src/runtime/helpers/class-value.js\";\nimport _marko_attr from \"marko/src/runtime/html/helpers/attr.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  const x = \"hello!\";\n  out.w(`<div${_marko_attr(\"class\", _marko_class_merge(window.x))}>`);\n  out.w(\"Hello\");\n  out.w(\"</div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/typescript-basic/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"R9EGP2T\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_class_merge from \"marko/dist/runtime/helpers/class-value.js\";\nimport _marko_attr from \"marko/dist/runtime/html/helpers/attr.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  const x = \"hello!\";\n  out.w(`<div${_marko_attr(\"class\", _marko_class_merge(window.x))}>Hello</div>`);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/typescript-basic/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/typescript-basic/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_class_merge from \"marko/src/runtime/helpers/class-value.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  const x = \"hello!\";\n  out.be(\"div\", {\n    \"class\": _marko_class_merge(window.x)\n  }, \"0\", _component, null, 1);\n  out.t(\"Hello\", _component);\n  out.ee();\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/typescript-basic/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"R9EGP2T\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_class_merge from \"marko/dist/runtime/helpers/class-value.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  const x = \"hello!\";\n  out.be(\"div\", {\n    \"class\": _marko_class_merge(window.x)\n  }, \"0\", _component, null, 1);\n  out.t(\"Hello\", _component);\n  out.ee();\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/typescript-basic/template.marko",
    "content": "import type test from \"./test\";\nstatic type alias = test;\n\n$ const x: alias = \"hello!\";\n<div class=(window as any).x as string>Hello</div>\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/typescript-generic-tag/components/type-arg-and-param.marko",
    "content": "export interface Input<T> {\n    arg: T;\n    renderBody: Marko.Body<[T]>;\n}\n\n${input.renderBody}=[input.arg];"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/typescript-generic-tag/components/type-arg.marko",
    "content": "export interface Input<T, K> {\n  arg1?: T;\n  arg2?: K;\n}\n\n-- ${input.arg1} ${input.arg2}"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/typescript-generic-tag/components/type-param.marko",
    "content": "export interface Input<T> {\n  renderBody: Marko.Body<[T]>;\n}\n\n${input.renderBody}=[3 as any];"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/typescript-generic-tag/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _typeArg2 = _interopRequireDefault(require(\"./components/type-arg.marko\"));\nvar _renderTag = _interopRequireDefault(require(\"marko/src/runtime/helpers/render-tag.js\"));\nvar _escapeXml = require(\"marko/src/runtime/html/helpers/escape-xml.js\");\nvar _typeParam2 = _interopRequireDefault(require(\"./components/type-param.marko\"));\nvar _typeArgAndParam2 = _interopRequireDefault(require(\"./components/type-arg-and-param.marko\"));\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  (0, _renderTag.default)(_typeArg2.default, {}, out, _componentDef, \"0\");\n  (0, _renderTag.default)(_typeParam2.default, {\n    \"renderBody\": (out, x) => {\n      out.w((0, _escapeXml.x)(x));\n    }\n  }, out, _componentDef, \"1\");\n  (0, _renderTag.default)(_typeArgAndParam2.default, {\n    \"arg\": \"hello\",\n    \"renderBody\": (out, x) => {\n      out.w((0, _escapeXml.x)(x));\n    }\n  }, out, _componentDef, \"2\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/typescript-generic-tag/snapshots/generated-expected.marko",
    "content": "<type-arg<string, number>/>\n<type-param <T, U>|x|>\n  ${x}\n</type-param>\n<type-arg-and-param<string><T>|x| arg=\"hello\">\n  ${x}\n</type-arg-and-param>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/typescript-generic-tag/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _typeArg from \"./components/type-arg.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport { x as _marko_escapeXml } from \"marko/src/runtime/html/helpers/escape-xml.js\";\nimport _typeParam from \"./components/type-param.marko\";\nimport _typeArgAndParam from \"./components/type-arg-and-param.marko\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_typeArg, {}, out, _componentDef, \"0\");\n  _marko_tag(_typeParam, {\n    \"renderBody\": (out, x) => {\n      out.w(_marko_escapeXml(x));\n    }\n  }, out, _componentDef, \"1\");\n  _marko_tag(_typeArgAndParam, {\n    \"arg\": \"hello\",\n    \"renderBody\": (out, x) => {\n      out.w(_marko_escapeXml(x));\n    }\n  }, out, _componentDef, \"2\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/typescript-generic-tag/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"qeif2Vi\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _typeArg from \"./components/type-arg.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport { x as _marko_escapeXml } from \"marko/dist/runtime/html/helpers/escape-xml.js\";\nimport _typeParam from \"./components/type-param.marko\";\nimport _typeArgAndParam from \"./components/type-arg-and-param.marko\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_typeArg, {}, out, _componentDef, \"0\");\n  _marko_tag(_typeParam, {\n    \"renderBody\": (out, x) => {\n      out.w(_marko_escapeXml(x));\n    }\n  }, out, _componentDef, \"1\");\n  _marko_tag(_typeArgAndParam, {\n    \"arg\": \"hello\",\n    \"renderBody\": (out, x) => {\n      out.w(_marko_escapeXml(x));\n    }\n  }, out, _componentDef, \"2\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/typescript-generic-tag/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/typescript-generic-tag/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _typeArg from \"./components/type-arg.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _typeParam from \"./components/type-param.marko\";\nimport _typeArgAndParam from \"./components/type-arg-and-param.marko\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_typeArg, {}, out, _componentDef, \"0\");\n  _marko_tag(_typeParam, {\n    \"renderBody\": (out, x) => {\n      out.t(x, _component);\n    }\n  }, out, _componentDef, \"1\");\n  _marko_tag(_typeArgAndParam, {\n    \"arg\": \"hello\",\n    \"renderBody\": (out, x) => {\n      out.t(x, _component);\n    }\n  }, out, _componentDef, \"2\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/typescript-generic-tag/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"qeif2Vi\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _typeArg from \"./components/type-arg.marko\";\nimport _marko_tag from \"marko/dist/runtime/helpers/render-tag.js\";\nimport _typeParam from \"./components/type-param.marko\";\nimport _typeArgAndParam from \"./components/type-arg-and-param.marko\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_tag(_typeArg, {}, out, _componentDef, \"0\");\n  _marko_tag(_typeParam, {\n    \"renderBody\": (out, x) => {\n      out.t(x, _component);\n    }\n  }, out, _componentDef, \"1\");\n  _marko_tag(_typeArgAndParam, {\n    \"arg\": \"hello\",\n    \"renderBody\": (out, x) => {\n      out.t(x, _component);\n    }\n  }, out, _componentDef, \"2\");\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/typescript-generic-tag/template.marko",
    "content": "<type-arg<string, number> />\n<type-param <T, U>|x: T & U|>${x}</>\n<type-arg-and-param<string><T>|x: T|  arg=\"hello\">${x}</>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/warn-macro-duplicate/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  function _thing(out, stuff) {\n    out.w(\"<div>\");\n    out.w(\"a\");\n    out.w(\"</div>\");\n  }\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/warn-macro-duplicate/snapshots/generated-expected.diagnostics.txt",
    "content": "warning[fixable](5:15-5:27): A macro with the name \"thing\" already exists.\n"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/warn-macro-duplicate/snapshots/generated-expected.marko",
    "content": "<macro|stuff| name=\"thing\">\n  <div>\n    a\n  </div>\n</macro>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/warn-macro-duplicate/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  function _thing(out, stuff) {\n    out.w(\"<div>\");\n    out.w(\"a\");\n    out.w(\"</div>\");\n  }\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/warn-macro-duplicate/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"R7EE4Wu\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  function _thing(out, stuff) {\n    out.w(\"<div>a</div>\");\n  }\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/warn-macro-duplicate/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/warn-macro-duplicate/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  function _thing(out, stuff) {\n    out.be(\"div\", null, \"1\", _component, null, 0);\n    out.t(\"a\", _component);\n    out.ee();\n  }\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/warn-macro-duplicate/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"R7EE4Wu\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_constElement from \"marko/dist/runtime/vdom/helpers/const-element.js\";\nconst _marko_node = _marko_constElement(\"div\", null, 1).t(\"a\");\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  function _thing(out, stuff) {\n    out.n(_marko_node, _component);\n  }\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/warn-macro-duplicate/template.marko",
    "content": "<macro|stuff| name=\"thing\">\n  <div>a</div>\n</macro>\n\n<macro|stuff| name=\"thing\">\n  <div>b</div>\n</macro>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/while-tag/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  let i = 0;\n  let _keyValue = 0;\n  while (i < 10) {\n    const _keyScope = `[${_keyValue++}]`;\n    i++;\n    out.w(\"<div></div>\");\n  }\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/while-tag/snapshots/generated-expected.marko",
    "content": "$ let i = 0;\n<while(i < 10)>\n  $ i++;\n  <div/>\n</while>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/while-tag/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  let i = 0;\n  let _keyValue = 0;\n  while (i < 10) {\n    const _keyScope = `[${_keyValue++}]`;\n    i++;\n    out.w(\"<div></div>\");\n  }\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/while-tag/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"Xj6_6aK\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  let i = 0;\n  let _keyValue = 0;\n  while (i < 10) {\n    const _keyScope = `[${_keyValue++}]`;\n    i++;\n    out.w(\"<div></div>\");\n  }\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/while-tag/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/while-tag/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  let i = 0;\n  let _keyValue = 0;\n  while (i < 10) {\n    const _keyScope = `[${_keyValue++}]`;\n    i++;\n    out.e(\"div\", null, \"0\" + _keyScope, _component, 0, 0);\n  }\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/while-tag/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"Xj6_6aK\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  let i = 0;\n  let _keyValue = 0;\n  while (i < 10) {\n    const _keyScope = `[${_keyValue++}]`;\n    i++;\n    out.e(\"div\", null, \"0\" + _keyScope, _component, 0, 0);\n  }\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/while-tag/template.marko",
    "content": "$ let i = 0;\n<while(i < 10)>\n  $ i++;\n  <div/>\n</while>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/white-space-test/snapshots/cjs-expected.js",
    "content": "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _index = require(\"marko/src/runtime/html/index.js\");\nvar _escapeXml = require(\"marko/src/runtime/html/helpers/escape-xml.js\");\nvar _renderer = _interopRequireDefault(require(\"marko/src/runtime/components/renderer.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = (0, _index.t)(_marko_componentType);\nvar _default = exports.default = _marko_template;\nconst _marko_component = {};\n_marko_template._ = (0, _renderer.default)(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div>\");\n  out.w(\"<div>\");\n  out.w(\"Hello \");\n  out.w(\"<div>\");\n  out.w(\" \");\n  out.w(\"</div>\");\n  out.w(\" World\");\n  out.w(\"</div>\");\n  out.w(\"<div>\");\n  out.w(\" Hello\");\n  out.w(\"</div>\");\n  out.w(\"<pre>\");\n  out.w(\"\\n    This should  \\n      be preserved\\n  \");\n  out.w(\"</pre>\");\n  out.w(\"<div>\");\n  out.w(\"<div>\");\n  out.w(\"Hello \");\n  out.w(\"</div>\");\n  out.w(\"</div>\");\n  out.w(\"</div>\");\n  out.w(\"<div>\");\n  scriptletA();\n  scriptletB();\n  out.w(\"Hello \");\n  scriptletC();\n  out.w(\"World\");\n  scriptletD();\n  out.w(\"</div>\");\n  out.w(\" Hello World! \");\n  out.w((0, _escapeXml.x)(a));\n  out.w((0, _escapeXml.x)(b));\n  out.w(\"<div></div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/white-space-test/snapshots/generated-expected.marko",
    "content": "<div>\n  <div>\n    Hello \n    <div>\n       \n    </div>\n     World\n  </div>\n  <div>\n     Hello\n  </div>\n  <pre>\n    \n    This should  \n      be preserved\n  \n  </pre>\n  <div>\n    <div>\n      Hello \n    </div>\n  </div>\n</div>\n<div>\n  $ scriptletA();\n  $ scriptletB();\n  Hello \n  $ scriptletC();\n  World\n  $ scriptletD();\n</div>\n<!-- Test -->\n--  Hello World! \n-- ${a}\n-- ${b}\n<div/>"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/white-space-test/snapshots/html-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { x as _marko_escapeXml } from \"marko/src/runtime/html/helpers/escape-xml.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div>\");\n  out.w(\"<div>\");\n  out.w(\"Hello \");\n  out.w(\"<div>\");\n  out.w(\" \");\n  out.w(\"</div>\");\n  out.w(\" World\");\n  out.w(\"</div>\");\n  out.w(\"<div>\");\n  out.w(\" Hello\");\n  out.w(\"</div>\");\n  out.w(\"<pre>\");\n  out.w(\"\\n    This should  \\n      be preserved\\n  \");\n  out.w(\"</pre>\");\n  out.w(\"<div>\");\n  out.w(\"<div>\");\n  out.w(\"Hello \");\n  out.w(\"</div>\");\n  out.w(\"</div>\");\n  out.w(\"</div>\");\n  out.w(\"<div>\");\n  scriptletA();\n  scriptletB();\n  out.w(\"Hello \");\n  scriptletC();\n  out.w(\"World\");\n  scriptletD();\n  out.w(\"</div>\");\n  out.w(\" Hello World! \");\n  out.w(_marko_escapeXml(a));\n  out.w(_marko_escapeXml(b));\n  out.w(\"<div></div>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/white-space-test/snapshots/htmlProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/html/index.js\";\nconst _marko_componentType = \"QRka8CG\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { x as _marko_escapeXml } from \"marko/dist/runtime/html/helpers/escape-xml.js\";\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<div><div>Hello <div> </div> World</div><div> Hello</div><pre>\\n    This should  \\n      be preserved\\n  </pre><div><div>Hello </div></div></div><div>\");\n  scriptletA();\n  scriptletB();\n  out.w(\"Hello \");\n  scriptletC();\n  out.w(\"World\");\n  scriptletD();\n  out.w(`</div> Hello World! ${_marko_escapeXml(a)}${_marko_escapeXml(b)}<div></div>`);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/white-space-test/snapshots/hydrate-expected.js",
    "content": ""
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/white-space-test/snapshots/vdom-expected.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.be(\"div\", null, \"0\", _component, null, 0);\n  out.be(\"div\", null, \"1\", _component, null, 0);\n  out.t(\"Hello \", _component);\n  out.be(\"div\", null, \"2\", _component, null, 0);\n  out.t(\" \", _component);\n  out.ee();\n  out.t(\" World\", _component);\n  out.ee();\n  out.be(\"div\", null, \"3\", _component, null, 0);\n  out.t(\" Hello\", _component);\n  out.ee();\n  out.be(\"pre\", null, \"4\", _component, null, 0);\n  out.t(\"\\n    This should  \\n      be preserved\\n  \", _component);\n  out.ee();\n  out.be(\"div\", null, \"5\", _component, null, 0);\n  out.be(\"div\", null, \"6\", _component, null, 0);\n  out.t(\"Hello \", _component);\n  out.ee();\n  out.ee();\n  out.ee();\n  out.be(\"div\", null, \"7\", _component, null, 0);\n  scriptletA();\n  scriptletB();\n  out.t(\"Hello \", _component);\n  scriptletC();\n  out.t(\"World\", _component);\n  scriptletD();\n  out.ee();\n  out.t(\" Hello World! \", _component);\n  out.t(a, _component);\n  out.t(b, _component);\n  out.e(\"div\", null, \"8\", _component, 0, 0);\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/white-space-test/snapshots/vdomProduction-expected.js",
    "content": "import { t as _t } from \"marko/dist/runtime/vdom/index.js\";\nconst _marko_componentType = \"QRka8CG\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_constElement from \"marko/dist/runtime/vdom/helpers/const-element.js\";\nconst _marko_node = _marko_constElement(\"div\", null, 4).e(\"div\", null, 3).t(\"Hello \").e(\"div\", null, 1).t(\" \").t(\" World\").e(\"div\", null, 1).t(\" Hello\").e(\"pre\", null, 1).t(\"\\n    This should  \\n      be preserved\\n  \").e(\"div\", null, 1).e(\"div\", null, 1).t(\"Hello \");\nconst _marko_node2 = _marko_constElement(\"div\", null, 0);\nimport _marko_renderer from \"marko/dist/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/dist/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.n(_marko_node, _component);\n  out.be(\"div\", null, \"7\", _component, null, 0);\n  scriptletA();\n  scriptletB();\n  out.t(\"Hello \", _component);\n  scriptletC();\n  out.t(\"World\", _component);\n  scriptletD();\n  out.ee();\n  out.t(\" Hello World! \", _component);\n  out.t(a, _component);\n  out.t(b, _component);\n  out.n(_marko_node2, _component);\n}, {\n  t: _marko_componentType,\n  i: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/dist/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-class/test/translator/fixtures/white-space-test/template.marko",
    "content": "<div>\n  <div>\n    Hello\n    <div> </div>\n    World\n  </div>\n\n  <div> \n    Hello\n  </div>\n\n  <pre>\n    This should  \n      be preserved\n  </pre>\n\n  <div>\n    <div>\n      Hello \n    </div>\n  </div>\n</div>\n\n<div>\n  $ scriptletA();\n  $ scriptletB();\n  Hello\n  $ scriptletC();\n  World\n  $ scriptletD();\n</div>\n\n---\n<!-- Test -->\nHello\n  World!\n${a}${b}\n<div/>\n---\n"
  },
  {
    "path": "packages/runtime-class/test/translator/index.test.js",
    "content": "import { compileFileSync } from \"@marko/compiler\";\nimport fs from \"fs\";\nimport autotest from \"mocha-autotest\";\nimport path from \"path\";\n\nconst ansiReg =\n  // eslint-disable-next-line no-control-regex\n  /([\\u001b\\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><])/g;\nconst regexpCharsReg = /[\\\\^$.*+?()[\\]{}|]/g;\nconst cwdRegExp = new RegExp(\n  process.cwd().replace(regexpCharsReg, \"\\\\$&\") + \"/\",\n  \"g\",\n);\n\ndescribe(\"runtime-class/translator\", () => {\n  autotest(\"fixtures\", {\n    cjs: runTest({ output: \"html\", modules: \"cjs\" }),\n    html: runTest({ output: \"html\" }),\n    htmlProduction: runTest({\n      output: \"html\",\n      optimize: true,\n    }),\n    vdom: runTest({ output: \"dom\" }),\n    vdomProduction: runTest({\n      output: \"dom\",\n      optimize: true,\n    }),\n    generated: runTest({ output: \"migrate\" }),\n    hydrate: runTest({\n      output: \"hydrate\",\n      resolveVirtualDependency(from, { virtualPath }) {\n        return virtualPath;\n      },\n    }),\n  });\n});\n\nfunction runTest(config) {\n  return ({ mode, test, resolve, snapshot }) => {\n    const relativeFixtureDir = path.relative(process.cwd(), resolve(\".\"));\n    const testConfigFile = resolve(\"test.js\");\n    const testConfig = fs.existsSync(testConfigFile)\n      ? require(testConfigFile)\n      : {};\n    const templateFile = resolve(testConfig.templateFile || \"template.marko\");\n\n    const compilerConfig = {\n      ...config,\n      babelConfig: {\n        ...config.babelConfig,\n        babelrc: false,\n        configFile: false,\n      },\n      writeVersionComment: false,\n    };\n\n    const snapshotsDir = resolve(\"snapshots\");\n    const name = `snapshots${path.sep + mode}`;\n    const stripFixtureDir = (str) =>\n      str.replaceAll(relativeFixtureDir, \"__tests__\");\n\n    if (!fs.existsSync(snapshotsDir)) {\n      fs.mkdirSync(snapshotsDir);\n    }\n\n    test(() => {\n      let output;\n      let diags;\n      try {\n        const result = compileFileSync(templateFile, compilerConfig);\n        output = stripFixtureDir(result.code);\n        diags = result.meta.diagnostics;\n      } catch (err) {\n        try {\n          snapshot(\n            stripFixtureDir(\n              stripCwd(\n                stripModuleStackTrace(String(err.stack).replace(ansiReg, \"\")),\n              ),\n            ),\n            {\n              name: `${name}-error`,\n              ext: \".txt\",\n            },\n          );\n          return;\n        } catch {\n          throw err;\n        }\n      }\n\n      snapshot(output, {\n        name,\n        ext: mode === \"generated\" ? \".marko\" : \".js\",\n      });\n\n      if (mode === \"generated\") {\n        snapshot(output, {\n          name,\n          ext: \".marko\",\n        });\n\n        if (diags && diags.length) {\n          snapshot(stripFixtureDir(printDiags(diags)), {\n            name,\n            ext: \".diagnostics.txt\",\n          });\n        }\n      } else {\n        snapshot(output, {\n          name,\n          ext: \".js\",\n        });\n      }\n    });\n  };\n}\n\nfunction stripCwd(message) {\n  return message.replace(cwdRegExp, \"\");\n}\n\nfunction stripModuleStackTrace(message) {\n  return message.replace(/\\r?\\n +at (?!packages[/\\\\])[^\\n]+$/gm, \"\");\n}\n\nfunction printDiags(diags) {\n  let result = \"\";\n\n  for (const diag of diags) {\n    result += `${diag.type}${diag.fix ? `[fixable]` : \"\"}${printLoc(\n      diag.loc,\n    )}: ${diag.label}\\n`;\n  }\n\n  return result;\n}\n\nfunction printLoc(loc) {\n  if (loc) {\n    return `(${loc.start.line}:${loc.start.column + 1}-${loc.end.line}:${\n      loc.end.column + 1\n    })`;\n  }\n\n  return \"\";\n}\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/appendDocumentFragment-children/expected.html",
    "content": "<div class=\"root\">\n  <div class=\"first-child\">\n  <div class=\"middle-child\">\n  <div class=\"last-child\">\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/appendDocumentFragment-children/index.js",
    "content": "module.exports = function (helpers) {\n  var root = helpers.vdom.createElement(\"div\", { class: \"root\" });\n\n  root.e(\"div\", { class: \"first-child\" });\n\n  var docFragment = root.___appendDocumentFragment();\n  docFragment.___appendChild(\n    helpers.vdom.createElement(\"div\", { class: \"middle-child\" }),\n  );\n\n  root.e(\"div\", { class: \"last-child\" });\n\n  return root;\n};\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/appendDocumentFragment-no-children/expected.html",
    "content": "<div class=\"root\">\n  <div class=\"first-child\">\n  <div class=\"last-child\">\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/appendDocumentFragment-no-children/index.js",
    "content": "module.exports = function (helpers) {\n  var root = helpers.vdom.createElement(\"div\", { class: \"root\" });\n\n  root.e(\"div\", { class: \"first-child\" });\n\n  root.___appendDocumentFragment();\n\n  root.e(\"div\", { class: \"last-child\" });\n\n  return root;\n};\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/assignAttributes/expected.html",
    "content": "<DIV class=\"foo\" http://www.w3.org/1999/xlink:href=\"bar.com\">\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/assignAttributes/index.js",
    "content": "module.exports = function (helpers) {\n  var morphAttrs = helpers.vdom.VElement.___morphAttrs;\n\n  var fromEl = helpers.document.createElement(\"div\");\n  var vFromEl = helpers.vdom.virtualizeElement(fromEl);\n  var toEl = helpers.vdom.createElement(\"div\", {\n    class: \"foo\",\n    \"xlink:href\": \"bar.com\",\n  });\n  morphAttrs(fromEl, vFromEl, toEl);\n  return fromEl;\n};\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/attributes-attr-collection/expected.html",
    "content": "<a>\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/attributes-attr-collection/index.js",
    "content": "module.exports = function (helpers) {\n  var attributes = { class: \"foo\", id: \"bar\" };\n\n  return helpers.vdom\n    .createElement(\"div\", null, 2 /* childCount */)\n    .e(\"span\", null, 1)\n    .e(\"p\", attributes, 0)\n    .e(\"a\", null, 0);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/attributes-attr-collection-child/expected.html",
    "content": "<a>\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/attributes-attr-collection-child/index.js",
    "content": "module.exports = function (helpers) {\n  var attributes = { class: \"foo\", id: \"bar\" };\n\n  return helpers.vdom\n    .createElement(\"div\", null, 2 /* childCount */)\n    .e(\"span\", null, 1)\n    .e(\"p\", attributes, 1)\n    .e(\"span\", { class: \"leaf\" }, 0)\n    .e(\"a\", null, 0);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/attributes-null-false/expected.html",
    "content": "<a>\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/attributes-null-false/index.js",
    "content": "module.exports = function (helpers) {\n  return helpers.vdom\n    .createElement(\"div\", null, 2 /* childCount */)\n    .e(\"span\", null, 1)\n    .e(\n      \"p\",\n      {\n        class: \"foo\",\n        id: \"bar\",\n        title: null,\n        \"data-bar\": false,\n        checked: true,\n      },\n      0,\n    )\n    .e(\"a\", null, 0);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/attributes-object/expected.html",
    "content": "<a>\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/attributes-object/index.js",
    "content": "module.exports = function (helpers) {\n  return helpers.vdom\n    .createElement(\"div\", null, 2 /* childCount */)\n    .e(\"span\", null, 1)\n    .e(\"p\", { class: \"foo\", id: \"bar\" }, 0)\n    .e(\"a\", null, 0);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/attributes-true/expected.html",
    "content": "<select>\n  <option selected=\"\">\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/attributes-true/index.js",
    "content": "module.exports = function (helpers) {\n  var virtualEl = helpers.vdom\n    .createElement(\"select\", null, null, null, 1 /* childCount */)\n    .e(\"option\", { selected: true }, null, null, 0);\n\n  return virtualEl;\n};\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/cloneNode/expected.html",
    "content": "<div class=\"root\">\n  <div class=\"foo\" onclick=\"doSomething()\">\n    <svg height=\"100\" width=\"100\">\n      <circle cx=\"50\" cy=\"50\" fill=\"yellow\" http://www.w3.org/1999/xlink:href=\"http://ebay.com/\" r=\"40\" stroke-width=\"4\" stroke=\"green\">\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/cloneNode/index.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var el = helpers.vdom\n    .createElement(\n      \"div\",\n      {\n        class: \"foo\",\n        onclick: \"doSomething()\",\n      },\n      null,\n      null,\n      1 /* childCount */,\n    )\n    .e(\n      \"svg\",\n      {\n        width: \"100\",\n        height: \"100\",\n      },\n      null,\n      null,\n      1,\n    )\n    .e(\n      \"circle\",\n      {\n        cx: \"50\",\n        cy: \"50\",\n        r: \"40\",\n        stroke: \"green\",\n        \"stroke-width\": \"4\",\n        fill: \"yellow\",\n        \"xlink:href\": \"http://ebay.com/\",\n      },\n      null,\n      null,\n      0,\n    );\n\n  var clone = el.___cloneNode();\n  expect(clone).to.not.equal(el);\n  expect(clone.___nodeName).to.equal(\"div\");\n  expect(clone.___attributes.class === \"foo\").to.equal(true);\n  expect(clone.firstChild).to.equal(el.firstChild);\n\n  var root = helpers.vdom.createElement(\"div\", { class: \"root\" });\n\n  root.___appendChild(clone);\n\n  expect(el.___parentNode).to.equal(null);\n  expect(clone.___parentNode).to.equal(root);\n\n  return root;\n};\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/cloneNode-documentFragment/expected.html",
    "content": "<svg>\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/cloneNode-documentFragment/index.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var svg = helpers.vdom.createElement(\n    \"svg\",\n    null /* attrs */,\n    null /* key */,\n    null /* component */,\n    null /* child count */,\n  );\n\n  var docFragment = helpers.vdom.createDocumentFragment();\n  svg.___appendChild(docFragment);\n\n  var docFragmentClone = docFragment.___cloneNode();\n  expect(docFragmentClone.___nextSibling).to.equal(null);\n  expect(docFragmentClone.___parentNode == null).to.equal(true);\n\n  return svg;\n};\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/cloneNode-text/expected.html",
    "content": "\"Hello World\"\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/cloneNode-text/index.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var text = helpers.vdom.createText(\"Hello World\");\n  var textClone = text.___cloneNode();\n  expect(textClone).to.not.equal(text);\n  expect(text.___nodeValue).to.equal(\"Hello World\");\n  expect(textClone.___nodeValue).to.equal(\"Hello World\");\n  return text;\n};\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/createAttributes/expected.html",
    "content": "<div>\n  <span>\n    <a href=\"http://ebay.com\" id=\"link\">\n      \"eBay\"\n  <footer>\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/createAttributes/index.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var attributes = {\n    id: \"link\",\n    href: \"http://ebay.com\",\n  };\n\n  var el = helpers.vdom\n    .createElement(\n      \"div\",\n      null,\n      null /* key */,\n      null /* component */,\n      2 /* childCount */,\n    )\n    .e(\"span\", null, null /* key */, null /* component */, 1)\n    .e(\"a\", attributes, null /* key */, null /* component */, 1)\n    .t(\"eBay\")\n    .e(\"footer\", null, null /* key */, null /* component */, 0);\n\n  expect(el.___firstChild.___firstChild.___attributes.id).to.equal(\"link\");\n\n  return el;\n};\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/deeply-nested-element/expected.html",
    "content": "<a>\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/deeply-nested-element/index.js",
    "content": "module.exports = function (helpers) {\n  return helpers.vdom\n    .createElement(\"div\", 0 /* attrCount */, 2 /* childCount */)\n    .e(\"span\", null, 1)\n    .e(\"p\", null, 0)\n    .e(\"a\", null, 0);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/deeply-nested-element-2/expected.html",
    "content": "<a>\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/deeply-nested-element-2/index.js",
    "content": "module.exports = function (helpers) {\n  return helpers.vdom\n    .createElement(\"div\", 0 /* attrCount */, 2 /* childCount */)\n    .e(\"span\", null, 1)\n    .e(\"p\", null, 1)\n    .e(\"a\", null, 0);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/doc-fragment-child/expected.html",
    "content": "<div class=\"root\">\n  <div class=\"foo1\" onclick=\"doSomething()\">\n  <div class=\"foo2\">\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/doc-fragment-child/index.js",
    "content": "module.exports = function (helpers) {\n  var root = helpers.vdom.createElement(\"div\", { class: \"root\" });\n\n  var docFragment = helpers.vdom.createDocumentFragment();\n\n  var div1 = helpers.vdom.createElement(\"div\", {\n    class: \"foo1\",\n    onclick: \"doSomething()\",\n  });\n\n  var div2 = helpers.vdom.createElement(\"div\", {\n    class: \"foo2\",\n  });\n\n  docFragment.___appendChild(div1);\n  docFragment.___appendChild(div2);\n\n  root.___appendChild(docFragment);\n\n  return root;\n};\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/doc-fragment-child-with-sibling/expected.html",
    "content": "<div class=\"root\">\n  <div class=\"foo1\" onclick=\"doSomething()\">\n  <div class=\"foo2\">\n  <div class=\"sibling\">\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/doc-fragment-child-with-sibling/index.js",
    "content": "module.exports = function (helpers) {\n  var root = helpers.vdom.createElement(\"div\", { class: \"root\" });\n\n  var docFragment = helpers.vdom.createDocumentFragment();\n\n  var div1 = helpers.vdom.createElement(\"div\", {\n    class: \"foo1\",\n    onclick: \"doSomething()\",\n  });\n\n  var div2 = helpers.vdom.createElement(\"div\", { class: \"foo2\" });\n\n  docFragment.___appendChild(div1);\n  docFragment.___appendChild(div2);\n\n  root.___appendChild(docFragment);\n  root.___appendChild(helpers.vdom.createElement(\"div\", { class: \"sibling\" }));\n\n  return root;\n};\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/doc-fragment-deeply-nested/expected.html",
    "content": "<div class=\"aa1\">\n<div class=\"aa2\">\n<div class=\"b1\">\n<div class=\"b2\">\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/doc-fragment-deeply-nested/index.js",
    "content": "module.exports = function (helpers) {\n  var root = helpers.vdom.createDocumentFragment();\n\n  var docFragmentA = helpers.vdom.createDocumentFragment();\n\n  var docFragmentAA = helpers.vdom.createDocumentFragment();\n  docFragmentA.___appendChild(docFragmentAA);\n\n  docFragmentAA.___appendChild(\n    helpers.vdom.createElement(\"div\", { class: \"aa1\" }),\n  );\n  docFragmentAA.___appendChild(\n    helpers.vdom.createElement(\"div\", { class: \"aa2\" }),\n  );\n\n  var docFragmentB = helpers.vdom.createDocumentFragment();\n  docFragmentB.___appendChild(\n    helpers.vdom.createElement(\"div\", { class: \"b1\" }),\n  );\n  docFragmentB.___appendChild(\n    helpers.vdom.createElement(\"div\", { class: \"b2\" }),\n  );\n\n  root.___appendChild(docFragmentA);\n  root.___appendChild(docFragmentB);\n\n  return root;\n};\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/doc-fragment-deeply-nested-empty/expected.html",
    "content": "\"bb1\"\n\"bb2\"\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/doc-fragment-deeply-nested-empty/index.js",
    "content": "module.exports = function (helpers) {\n  var root = helpers.vdom.createDocumentFragment();\n\n  var docFragmentA = helpers.vdom.createDocumentFragment();\n\n  var docFragmentAA = helpers.vdom.createDocumentFragment();\n  docFragmentA.___appendChild(docFragmentAA);\n\n  var docFragmentB = helpers.vdom.createDocumentFragment();\n\n  var docFragmentBB = helpers.vdom.createDocumentFragment();\n  docFragmentB.___appendChild(docFragmentBB);\n\n  docFragmentBB.___appendChild(helpers.vdom.createText(\"bb1\"));\n  docFragmentBB.___appendChild(helpers.vdom.createText(\"bb2\"));\n\n  root.___appendChild(docFragmentA);\n  root.___appendChild(docFragmentB);\n\n  return root;\n};\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/doc-fragment-deeply-nested-text/expected.html",
    "content": "\"aa1\"\n\"aa2\"\n\"bb1\"\n\"bb2\"\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/doc-fragment-deeply-nested-text/index.js",
    "content": "module.exports = function (helpers) {\n  var root = helpers.vdom.createDocumentFragment();\n\n  var docFragmentA = helpers.vdom.createDocumentFragment();\n\n  var docFragmentAA = helpers.vdom.createDocumentFragment();\n  docFragmentA.___appendChild(docFragmentAA);\n\n  docFragmentAA.___appendChild(helpers.vdom.createText(\"aa1\"));\n  docFragmentAA.___appendChild(helpers.vdom.createText(\"aa2\"));\n\n  var docFragmentB = helpers.vdom.createDocumentFragment();\n\n  var docFragmentBB = helpers.vdom.createDocumentFragment();\n  docFragmentB.___appendChild(docFragmentBB);\n\n  docFragmentBB.___appendChild(helpers.vdom.createText(\"bb1\"));\n  docFragmentBB.___appendChild(helpers.vdom.createText(\"bb2\"));\n\n  root.___appendChild(docFragmentA);\n  root.___appendChild(docFragmentB);\n\n  return root;\n};\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/id/expected.html",
    "content": "<input id=\"foo\">\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/id/index.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var el = helpers.vdom.createElement(\n    \"input\",\n    { id: \"foo\" },\n    null /* key */,\n    null /* component */,\n    0 /* childCount */,\n  );\n  expect(el.___attributes.id).to.equal(\"foo\");\n  return el;\n};\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/input-checked/expected.html",
    "content": "<input checked=\"\" type=\"checkbox\">\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/input-checked/index.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var el = helpers.vdom.createElement(\n    \"input\",\n    { type: \"checkbox\", checked: true },\n    0 /* childCount */,\n  );\n\n  expect(el.___attributes.checked).to.equal(true);\n  return el;\n};\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/input-disabled/expected.html",
    "content": "<input disabled=\"disabled\">\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/input-disabled/index.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var el = helpers.vdom.createElement(\n    \"input\",\n    { disabled: \"disabled\" },\n    0 /* childCount */,\n  );\n\n  expect(el.___attributes.disabled).to.equal(\"disabled\");\n  return el;\n};\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/input-value/expected.html",
    "content": "<input value=\"foo\">\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/input-value/index.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var el = helpers.vdom.createElement(\n    \"input\",\n    { value: \"foo\" },\n    null /* key */,\n    null /* component */,\n    0 /* childCount */,\n  );\n\n  expect(el.___attributes.value).to.equal(\"foo\");\n  return el;\n};\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/isSameNode-createElement/expected.html",
    "content": "<div>\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/isSameNode-createElement/index.js",
    "content": "var expect = require(\"chai\").expect;\nvar domData = require(\"../../../../src/runtime/components/dom-data\");\nvar vElementByDOMNode = domData.___vElementByDOMNode;\n\nfunction isSameNode(virtualEl, realEl) {\n  var vFromEl = vElementByDOMNode.get(realEl);\n  var constId = virtualEl.___constId;\n  if (constId !== undefined && vFromEl.___constId === constId) {\n    return true;\n  }\n\n  return false;\n}\n\nmodule.exports = function (helpers) {\n  var div = helpers.vdom.createElement(\n    \"div\",\n    null,\n    null /* key */,\n    null /* component */,\n    0 /* childCount */,\n    null,\n    { i: \"abc123\" /* key */ },\n  );\n  var span = helpers.vdom.createElement(\n    \"span\",\n    null,\n    null /* key */,\n    null /* component */,\n    0 /* childCount */,\n  );\n\n  var divClone = div.___cloneNode();\n  // expect(div.___isSameNode(divClone)).to.equal(true);\n  // expect(divClone.___isSameNode(div)).to.equal(true);\n  //\n  // expect(div.___isSameNode(span)).to.equal(false);\n  // expect(span.___isSameNode(div)).to.equal(false);\n\n  var realDiv = divClone.___actualize(helpers.document);\n\n  expect(isSameNode(div, realDiv)).to.equal(true);\n  expect(isSameNode(divClone, realDiv)).to.equal(true);\n\n  var realSpan = span.___actualize(helpers.document);\n  expect(isSameNode(div, realSpan)).to.equal(false);\n\n  return div;\n};\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/no-children/expected.html",
    "content": "<div class=\"foo\" onclick=\"doSomething()\">\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/no-children/index.js",
    "content": "module.exports = function (helpers) {\n  return helpers.vdom.createElement(\n    \"div\",\n    { class: \"foo\", onclick: \"doSomething()\" },\n    0 /* childCount */,\n  );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/one-child-element/expected.html",
    "content": "<span class=\"bar\">\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/one-child-element/index.js",
    "content": "module.exports = function (helpers) {\n  return helpers.vdom\n    .createElement(\"div\", { class: \"foo\" }, 1 /* childCount */)\n    .e(\"span\", { class: \"bar\" }, 0);\n};\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/one-child-text/expected.html",
    "content": "<div class=\"foo\">\n  \"Hello World!\"\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/one-child-text/index.js",
    "content": "module.exports = function (helpers) {\n  return helpers.vdom\n    .createElement(\"div\", { class: \"foo\" }, 1 /* childCount */)\n    .t(\"Hello World!\");\n};\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/option-selected/expected.html",
    "content": "<option selected=\"\">\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/option-selected/index.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var el = helpers.vdom.createElement(\n    \"option\",\n    { selected: \"\" },\n    0 /* childCount */,\n  );\n  expect(el.___attributes.selected).to.equal(\"\");\n  return el;\n};\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/static-tree/expected.html",
    "content": "<div class=\"foo\" onclick=\"doSomething()\">\n  <a href=\"http://ebay.com\">\n    \"eBay\"\n  <span>\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/static-tree/index.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var link = helpers.vdom\n    .createElement(\n      \"a\",\n      { href: \"http://ebay.com\" },\n      null /* key */,\n      null /* component */,\n      1 /* childCount */,\n    )\n    .t(\"eBay\");\n\n  var el = helpers.vdom\n    .createElement(\n      \"div\",\n      { class: \"foo\", onclick: \"doSomething()\" },\n      null /* key */,\n      null /* component */,\n      2 /* childCount */,\n    )\n    .n(link)\n    .e(\"span\", null, null /* key */, null /* component */, 0);\n\n  var linkClone = el.___firstChild;\n\n  expect(linkClone).to.not.equal(link);\n  expect(link.___parentNode).to.equal(null);\n  expect(link.___nextSibling).to.equal(null);\n\n  expect(linkClone.___nextSibling.___nodeName).to.equal(\"span\");\n  expect(linkClone.___parentNode.___nodeName).to.equal(\"div\");\n\n  return el;\n};\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/static-tree-svg/expected.html",
    "content": "<svg height=\"150\" width=\"400\">\n  <linearGradient x1=\"0%\" x2=\"100%\" y1=\"0%\" y2=\"0%\">\n    <stop offset=\"0%\" style=\"stop-color:rgb(255,255,0);stop-opacity:1\">\n    <stop offset=\"100%\" style=\"stop-color:rgb(255,0,0);stop-opacity:1\">\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/static-tree-svg/index.js",
    "content": "module.exports = function (helpers) {\n  var svg = helpers.vdom.createElement(\n    \"svg\",\n    { height: \"150\", width: \"400\" },\n    null,\n  );\n\n  var linearGradient = helpers.vdom.createElement(\n    \"linearGradient\",\n    { x1: \"0%\", y1: \"0%\", x2: \"100%\", y2: \"0%\" },\n    null,\n  );\n\n  svg.___appendChild(linearGradient);\n\n  linearGradient.___appendChild(\n    helpers.vdom.createElement(\n      \"stop\",\n      { offset: \"0%\", style: \"stop-color:rgb(255,255,0);stop-opacity:1\" },\n      null,\n    ),\n  );\n\n  linearGradient.___appendChild(\n    helpers.vdom.createElement(\n      \"stop\",\n      { offset: \"100%\", style: \"stop-color:rgb(255,0,0);stop-opacity:1\" },\n      null,\n    ),\n  );\n\n  return svg;\n};\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/svg/expected.html",
    "content": "<circle cx=\"50\" cy=\"50\" fill=\"yellow\" http://www.w3.org/1999/xlink:href=\"http://ebay.com/\" r=\"40\" stroke-width=\"4\" stroke=\"green\">\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/svg/index.js",
    "content": "module.exports = function (helpers) {\n  return helpers.vdom\n    .createElement(\n      \"div\",\n      { class: \"foo\", onclick: \"doSomething()\" },\n      1 /* childCount */,\n    )\n    .e(\"svg\", { width: \"100\", height: \"100\" }, 1)\n    .e(\n      \"circle\",\n      {\n        cx: \"50\",\n        cy: \"50\",\n        r: \"40\",\n        stroke: \"green\",\n        \"stroke-width\": \"4\",\n        fill: \"yellow\",\n        \"xlink:href\": \"http://ebay.com/\",\n      },\n      0,\n    );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/svg-dynamic/expected.html",
    "content": "<circle cx=\"50\" cy=\"50\" fill=\"yellow\" http://www.w3.org/1999/xlink:href=\"http://ebay.com/\" r=\"40\" stroke-width=\"4\" stroke=\"green\">\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/svg-dynamic/index.js",
    "content": "module.exports = function (helpers) {\n  var FLAGS = 1;\n\n  return helpers.vdom\n    .createElement(\n      \"div\",\n      { class: \"foo\", onclick: \"doSomething()\" },\n      1 /* childCount */,\n    )\n    .e(\n      \"svg\",\n      {\n        width: \"100\",\n        height: \"100\",\n        xmlns: \"http://www.w3.org/2000/svg\",\n      },\n      1,\n    )\n    .e(\n      \"circle\",\n      {\n        cx: \"50\",\n        cy: \"50\",\n        r: \"40\",\n        stroke: \"green\",\n        \"stroke-width\": \"4\",\n        fill: \"yellow\",\n        \"xlink:href\": \"http://ebay.com/\",\n      },\n      0,\n      FLAGS,\n    );\n};\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/textarea/expected.html",
    "content": "<textarea>\n  VALUE: \"foobar\"\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/textarea/index.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  var FLAGS = 2; // TEXTAREA\n\n  var textarea = helpers.vdom\n    .createElement(\n      \"textarea\",\n      null,\n      null /* key */,\n      null /* component */,\n      2 /* childCount */,\n      FLAGS,\n    )\n    .t(\"foo\")\n    .t(\"bar\");\n\n  expect(textarea.___textContent).to.equal(\"foobar\");\n\n  return textarea;\n};\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/textarea-invalid-child/expected.html",
    "content": "(null)"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/fixtures/textarea-invalid-child/index.js",
    "content": "var expect = require(\"chai\").expect;\n\nmodule.exports = function (helpers) {\n  expect(function () {\n    helpers.vdom\n      .createElement(\n        \"textarea\",\n        {},\n        null /* key */,\n        null /* component */,\n        2 /* childCount */,\n      )\n      .e(\"div\", {}, null /* key */, null /* component */, 0)\n      .t(\"bar\");\n  }).to.throw(\"\");\n\n  return null;\n};\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-create/index.test.js",
    "content": "\"use strict\";\n\nrequire(\"../__util__/test-init\");\n\nvar fs = require(\"fs\");\nvar { JSDOM } = require(\"jsdom\");\nvar vdom = require(\"marko/runtime/vdom/vdom\");\nvar autotest = require(\"mocha-autotest\").default;\nvar domToString = require(\"../__util__/domToString\");\n\nvar document = new JSDOM().window.document;\nvar VElement = vdom.___VElement;\nvar VText = vdom.___VText;\nvar VDocumentFragment = vdom.___VDocumentFragment;\n\nvar vdomHelpers = {\n  createElement: function (\n    tagName,\n    attrs,\n    key,\n    component,\n    childCount,\n    flags,\n    props,\n  ) {\n    return new VElement(\n      tagName,\n      attrs,\n      key,\n      component,\n      childCount,\n      flags,\n      props,\n    );\n  },\n  createText: function (value) {\n    return new VText(value);\n  },\n  createDocumentFragment: function () {\n    return new VDocumentFragment();\n  },\n  VElement: VElement,\n  virtualizeElement: VElement.___virtualize,\n};\n\nautotest(\"fixtures\", (fixture) => {\n  let test = fixture.test;\n  let resolve = fixture.resolve;\n  let snapshot = fixture.snapshot;\n  test(() => {\n    var helpers = {};\n    helpers.vdom = vdomHelpers;\n    helpers.document = document;\n\n    var mainPath = resolve(\"index.js\");\n    if (fs.existsSync(mainPath)) {\n      var main = require(mainPath);\n      var rootNode = main(helpers);\n\n      var rootNodeHTML = rootNode != null ? domToString(rootNode) : \"(null)\";\n      snapshot(rootNodeHTML, \".html\");\n    }\n  });\n});\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-virtualize/fixtures/attr-value-empty-string/input.html",
    "content": "<input class=\"toggle\" type=\"checkbox\" checked=\"\" aria-label=\"Toggle todo completed\" data-w-onchange=\"handleCheckboxChange|main-todo-1\">"
  },
  {
    "path": "packages/runtime-class/test/vdom-virtualize/fixtures/attr-value-empty-string/virtualized-expected.html",
    "content": "<input aria-label=\"Toggle todo completed\" checked=\"\" class=\"toggle\" data-w-onchange=\"handleCheckboxChange|main-todo-1\" type=\"checkbox\">\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-virtualize/fixtures/math/input.html",
    "content": "<math>\n<matrix>\n  <matrixrow>\n    <cn> 0 </cn> <cn> 1 </cn> <cn> 0 </cn>\n  </matrixrow>\n  <matrixrow>\n    <cn> 0 </cn> <cn> 0 </cn> <cn> 1 </cn>\n  </matrixrow>\n  <matrixrow>\n    <cn> 1 </cn> <cn> 0 </cn> <cn> 0 </cn>\n  </matrixrow>\n</matrix>\n</math>\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-virtualize/fixtures/math/virtualized-expected.html",
    "content": "<math>\n  \"\\n\"\n  <matrix>\n    \"\\n  \"\n    <matrixrow>\n      \"\\n    \"\n      <cn>\n        \" 0 \"\n      \" \"\n      <cn>\n        \" 1 \"\n      \" \"\n      <cn>\n        \" 0 \"\n      \"\\n  \"\n    \"\\n  \"\n    <matrixrow>\n      \"\\n    \"\n      <cn>\n        \" 0 \"\n      \" \"\n      <cn>\n        \" 0 \"\n      \" \"\n      <cn>\n        \" 1 \"\n      \"\\n  \"\n    \"\\n  \"\n    <matrixrow>\n      \"\\n    \"\n      <cn>\n        \" 1 \"\n      \" \"\n      <cn>\n        \" 0 \"\n      \" \"\n      <cn>\n        \" 0 \"\n      \"\\n  \"\n    \"\\n\"\n  \"\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-virtualize/fixtures/one-empty-element/input.html",
    "content": "<div></div>"
  },
  {
    "path": "packages/runtime-class/test/vdom-virtualize/fixtures/one-empty-element/virtualized-expected.html",
    "content": "<div>\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-virtualize/fixtures/svg/input.html",
    "content": "<div>\n    <svg width=\"100\" height=\"100\">\n        <circle cx=\"50\" cy=\"50\" r=\"40\" stroke=\"green\" stroke-width=\"4\" fill=\"yellow\" />\n    </svg>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/vdom-virtualize/fixtures/svg/virtualized-expected.html",
    "content": "<div>\n  \"\\n    \"\n  <svg height=\"100\" width=\"100\">\n    \"\\n        \"\n    <circle cx=\"50\" cy=\"50\" fill=\"yellow\" r=\"40\" stroke-width=\"4\" stroke=\"green\">\n    \"\\n    \"\n  \"\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-virtualize/fixtures/svg-xlink/input.html",
    "content": "<div>\n    <svg width=\"100\" height=\"100\">\n        <circle cx=\"50\" cy=\"50\" r=\"40\" stroke=\"green\" stroke-width=\"4\" fill=\"yellow\" xlink:href=\"http:/ebay.com/\" />\n    </svg>\n</div>"
  },
  {
    "path": "packages/runtime-class/test/vdom-virtualize/fixtures/svg-xlink/virtualized-expected.html",
    "content": "<div>\n  \"\\n    \"\n  <svg height=\"100\" width=\"100\">\n    \"\\n        \"\n    <circle cx=\"50\" cy=\"50\" fill=\"yellow\" http://www.w3.org/1999/xlink:href=\"http:/ebay.com/\" r=\"40\" stroke-width=\"4\" stroke=\"green\">\n    \"\\n    \"\n  \"\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-virtualize/fixtures/textarea/input.html",
    "content": "<textarea class=\"foo\">\n    Hello World!\n</textarea>"
  },
  {
    "path": "packages/runtime-class/test/vdom-virtualize/fixtures/textarea/virtualized-expected.html",
    "content": "<textarea class=\"foo\">\n  VALUE: \"    Hello World!\\n\"\n"
  },
  {
    "path": "packages/runtime-class/test/vdom-virtualize/index.test.js",
    "content": "\"use strict\";\n\nrequire(\"../__util__/test-init\");\nvar fs = require(\"fs\");\nvar { JSDOM } = require(\"jsdom\");\nvar virtualize = require(\"marko/runtime/vdom/vdom\").___virtualize;\nvar autotest = require(\"mocha-autotest\").default;\nvar toHTML = require(\"../__util__/toHTML\");\n\nautotest(\"fixtures\", (fixture) => {\n  let test = fixture.test;\n  let resolve = fixture.resolve;\n  let snapshot = fixture.snapshot;\n  test(() => {\n    var inputPath = resolve(\"input.html\");\n    if (fs.existsSync(inputPath)) {\n      var inputHtml = fs.readFileSync(inputPath, { encoding: \"utf8\" });\n      var domNode = JSDOM.fragment(inputHtml).firstChild;\n      var vdomNode = virtualize(domNode);\n      var vdomHTML = toHTML(vdomNode);\n      snapshot(vdomHTML, {\n        ext: \".html\",\n        name: \"virtualized\",\n      });\n    }\n  });\n});\n"
  },
  {
    "path": "packages/runtime-class/translator/index.d.ts",
    "content": "export const taglibs: any;\nexport const optionalTaglibs: any;\nexport const analyze: any;\nexport const transform: any;\nexport const translate: any;\nexport const getRuntimeEntryFiles: any;\nexport const internalEntryBuilder: any;\n"
  },
  {
    "path": "packages/runtime-class/translator/package.json",
    "content": "{\n  \"main\": \"../src/translator.js\",\n  \"types\": \"index.d.ts\",\n  \"main:override\": \"../dist/translator.js\"\n}\n"
  },
  {
    "path": "packages/runtime-tags/CHANGELOG.md",
    "content": "# @marko/runtime-tags\n\n## 6.0.159\n\n### Patch Changes\n\n- [#3135](https://github.com/marko-js/marko/pull/3135) [`ae034a5`](https://github.com/marko-js/marko/commit/ae034a5e45843cadb4dded01d8322cff14b5887e) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issues with incorrect intersection offset encoding in production builds.\n\n- [#3135](https://github.com/marko-js/marko/pull/3135) [`ae034a5`](https://github.com/marko-js/marko/commit/ae034a5e45843cadb4dded01d8322cff14b5887e) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with return tag type analysis when using known define tags.\n\n## 6.0.158\n\n### Patch Changes\n\n- [#3133](https://github.com/marko-js/marko/pull/3133) [`1ca1a71`](https://github.com/marko-js/marko/commit/1ca1a71d0f07c2e9e233899c4677005026873942) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add validations around tags api attribute names.\n\n- Updated dependencies [[`1ca1a71`](https://github.com/marko-js/marko/commit/1ca1a71d0f07c2e9e233899c4677005026873942)]:\n  - @marko/compiler@5.39.62\n\n## 6.0.157\n\n### Patch Changes\n\n- [#3125](https://github.com/marko-js/marko/pull/3125) [`1ee9ec8`](https://github.com/marko-js/marko/commit/1ee9ec8163a5e5e97ce6f64134c43450495bd14d) Thanks [@rturnq](https://github.com/rturnq)! - Add runtime guard in debug when reading tag variable in own body\n\n- [#3130](https://github.com/marko-js/marko/pull/3130) [`2dc2152`](https://github.com/marko-js/marko/commit/2dc21520fbd1029c55c7e6c8c4f1a641d5cb8b90) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Support bound attribute modifiers as a way to cast change handler values.\n\n- Updated dependencies [[`2dc2152`](https://github.com/marko-js/marko/commit/2dc21520fbd1029c55c7e6c8c4f1a641d5cb8b90)]:\n  - @marko/compiler@5.39.61\n\n## 6.0.156\n\n### Patch Changes\n\n- [#3121](https://github.com/marko-js/marko/pull/3121) [`22b2ecc`](https://github.com/marko-js/marko/commit/22b2ecce8e76e781485304d936d8aaf051f18fa0) Thanks [@copilot-swe-agent](https://github.com/apps/copilot-swe-agent)! - Add `webkitdirectory` boolean attribute to the `HTML.Input` type definitions\n\n- [#3124](https://github.com/marko-js/marko/pull/3124) [`bc2e7f2`](https://github.com/marko-js/marko/commit/bc2e7f2bfb2c165b108f70153169601996663532) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve support for embedded copies of Marko (tags api). Now automatically generates a render ID, and cleans up upon removal.\n\n## 6.0.155\n\n### Patch Changes\n\n- [#3119](https://github.com/marko-js/marko/pull/3119) [`1b0d6d4`](https://github.com/marko-js/marko/commit/1b0d6d457ab68ee1756a942305f6eea309020bca) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Expose top level cjs translator facade from @marko/runtime-tags to support older versions of jest.\n\n- [#3119](https://github.com/marko-js/marko/pull/3119) [`109e423`](https://github.com/marko-js/marko/commit/109e4237b2ba12cc1db11f345614e62ab5d675e0) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where babel internal api was not correctly using package overrides when publishing.\n\n- Updated dependencies [[`109e423`](https://github.com/marko-js/marko/commit/109e4237b2ba12cc1db11f345614e62ab5d675e0)]:\n  - @marko/compiler@5.39.60\n\n## 6.0.154\n\n### Patch Changes\n\n- [#3117](https://github.com/marko-js/marko/pull/3117) [`e0419aa`](https://github.com/marko-js/marko/commit/e0419aaea01c9125fc5b67cfb51ed5fabb674dbb) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrades eslint which captured some unecessary variable initializations and assignments.\n\n- [#3114](https://github.com/marko-js/marko/pull/3114) [`cdd9c14`](https://github.com/marko-js/marko/commit/cdd9c1404e3795d67844e9ccccfe070ff8bde646) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Add \"did you mean?\" when the tag is not found\n\n- [#3118](https://github.com/marko-js/marko/pull/3118) [`1961089`](https://github.com/marko-js/marko/commit/1961089c02743978cc4887346ff293a160d5139a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid loading babel configs when babel is not installed locally.\n\n- Updated dependencies [[`e0419aa`](https://github.com/marko-js/marko/commit/e0419aaea01c9125fc5b67cfb51ed5fabb674dbb), [`1961089`](https://github.com/marko-js/marko/commit/1961089c02743978cc4887346ff293a160d5139a)]:\n  - @marko/compiler@5.39.59\n\n## 6.0.153\n\n### Patch Changes\n\n- [#3112](https://github.com/marko-js/marko/pull/3112) [`319294c`](https://github.com/marko-js/marko/commit/319294cbaafccbae6dfa1d9b018ae5210b876123) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Refactor loop reconciler to be more efficient and smaller bundled size.\n\n## 6.0.152\n\n### Patch Changes\n\n- [#3110](https://github.com/marko-js/marko/pull/3110) [`900a3d5`](https://github.com/marko-js/marko/commit/900a3d54a97606fb8be1a4b7d90d03313d5d7643) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure types stripped before transform phase in compiler.\n\n- Updated dependencies [[`900a3d5`](https://github.com/marko-js/marko/commit/900a3d54a97606fb8be1a4b7d90d03313d5d7643)]:\n  - @marko/compiler@5.39.58\n\n## 6.0.151\n\n### Patch Changes\n\n- [#3108](https://github.com/marko-js/marko/pull/3108) [`97cf126`](https://github.com/marko-js/marko/commit/97cf126772fa4521f171d3d968b18a11c6e0028f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with translating concise mode tags api style tag.\n\n- [#3108](https://github.com/marko-js/marko/pull/3108) [`f1a93a7`](https://github.com/marko-js/marko/commit/f1a93a7f4a0230aa57cf62aea094db370e0a0fad) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrade htmljs-parser to fix a concise mode whitespace normalization issue.\n\n- Updated dependencies [[`97cf126`](https://github.com/marko-js/marko/commit/97cf126772fa4521f171d3d968b18a11c6e0028f), [`f1a93a7`](https://github.com/marko-js/marko/commit/f1a93a7f4a0230aa57cf62aea094db370e0a0fad)]:\n  - @marko/compiler@5.39.57\n\n## 6.0.150\n\n### Patch Changes\n\n- [#3105](https://github.com/marko-js/marko/pull/3105) [`39ffc6a`](https://github.com/marko-js/marko/commit/39ffc6abe837ec7ec948d8cf041d7e10e8a7f589) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Dedupe long strings when serialized.\n\n## 6.0.149\n\n### Patch Changes\n\n- [#3103](https://github.com/marko-js/marko/pull/3103) [`aa7f4d6`](https://github.com/marko-js/marko/commit/aa7f4d6385d1587db0f64c9102353d05958407cd) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with local closures within attribute tags being rendered by a native tags content attribute.\n\n## 6.0.148\n\n### Patch Changes\n\n- [#3100](https://github.com/marko-js/marko/pull/3100) [`c1abbbd`](https://github.com/marko-js/marko/commit/c1abbbd76d7f65c947c748ea6f2cd40467db3660) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with pending await closures.\n\n## 6.0.147\n\n### Patch Changes\n\n- [#3098](https://github.com/marko-js/marko/pull/3098) [`49ff6ac`](https://github.com/marko-js/marko/commit/49ff6ac664825f04a20ebfd1fb73c39eab4b44af) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure uncontrolled native elements never update their underlying state.\n\n- [#3098](https://github.com/marko-js/marko/pull/3098) [`a212235`](https://github.com/marko-js/marko/commit/a2122357400211eea952586b6a2b6701ee84f7bc) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure default values are set for form elements when controlled handler present.\n\n- [#3098](https://github.com/marko-js/marko/pull/3098) [`a212235`](https://github.com/marko-js/marko/commit/a2122357400211eea952586b6a2b6701ee84f7bc) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure updating an uncontrolled form element does not impact it's live value when controllable.\n\n- [#3098](https://github.com/marko-js/marko/pull/3098) [`83e13e9`](https://github.com/marko-js/marko/commit/83e13e93bd8efd477042211962856b8f96cb9011) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve tracking of details/dialog open/close state when controllable.\n\n## 6.0.146\n\n### Patch Changes\n\n- [#3096](https://github.com/marko-js/marko/pull/3096) [`3efe00f`](https://github.com/marko-js/marko/commit/3efe00f53244a3d9c2558e6926dcea601b9ff838) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Support `number` and `number[]` types for `select` and `checkedValue`.\n\n- [#3096](https://github.com/marko-js/marko/pull/3096) [`3efe00f`](https://github.com/marko-js/marko/commit/3efe00f53244a3d9c2558e6926dcea601b9ff838) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Serialize controlled values in less cases.\n\n- [#3087](https://github.com/marko-js/marko/pull/3087) [`7bbb9cf`](https://github.com/marko-js/marko/commit/7bbb9cf2c8ad591bffebec41536779fe71d68d14) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Types for <id> tag\n\n- [#3094](https://github.com/marko-js/marko/pull/3094) [`10613af`](https://github.com/marko-js/marko/commit/10613af90c4c5762ff3dca7f73b92849c480da9c) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue when multiple classes used in an inline optimized native tag class attribute.\n\n- [#3090](https://github.com/marko-js/marko/pull/3090) [`09a4092`](https://github.com/marko-js/marko/commit/09a4092bd6b0575debf34be21f6fdd5a5a37e213) Thanks [@LuLaValva](https://github.com/LuLaValva)! - improve autocomplete for string attributes\n\n- [#3096](https://github.com/marko-js/marko/pull/3096) [`3efe00f`](https://github.com/marko-js/marko/commit/3efe00f53244a3d9c2558e6926dcea601b9ff838) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid serializing due to native tag change handlers.\n\n- [#3097](https://github.com/marko-js/marko/pull/3097) [`f774948`](https://github.com/marko-js/marko/commit/f774948773e89c4f7e4564fa2eb1c0cc7569bbfa) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Revert a recent change to preserve parenthesized expressions in the compiler.\n  This caused a regression through some analysis which did not account for parenthesized expressions.\n\n- [#3096](https://github.com/marko-js/marko/pull/3096) [`3efe00f`](https://github.com/marko-js/marko/commit/3efe00f53244a3d9c2558e6926dcea601b9ff838) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Normalize controllable values following the same rules as DOM normalization before triggering change handlers.\n\n- Updated dependencies [[`f774948`](https://github.com/marko-js/marko/commit/f774948773e89c4f7e4564fa2eb1c0cc7569bbfa), [`3efe00f`](https://github.com/marko-js/marko/commit/3efe00f53244a3d9c2558e6926dcea601b9ff838)]:\n  - @marko/compiler@5.39.56\n\n## 6.0.145\n\n### Patch Changes\n\n- [#3085](https://github.com/marko-js/marko/pull/3085) [`69db62e`](https://github.com/marko-js/marko/commit/69db62ebf32038b2979d7dc629b7fc0b513fc97c) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Add dialog closedby type\n\n## 6.0.144\n\n### Patch Changes\n\n- [#3077](https://github.com/marko-js/marko/pull/3077) [`020dfd4`](https://github.com/marko-js/marko/commit/020dfd4bbb780aa83f2233097217d0cb27b3e26a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure browserslist is an optional dependency with bundled babel.\n\n- Updated dependencies [[`020dfd4`](https://github.com/marko-js/marko/commit/020dfd4bbb780aa83f2233097217d0cb27b3e26a)]:\n  - @marko/compiler@5.39.53\n\n## 6.0.143\n\n### Patch Changes\n\n- [#3073](https://github.com/marko-js/marko/pull/3073) [`1aabdc3`](https://github.com/marko-js/marko/commit/1aabdc30bb7fa3b82e76a5b4724f469133f14c85) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Remove direct dependency on babel, refactor to use internal copy.\n\n- Updated dependencies [[`1aabdc3`](https://github.com/marko-js/marko/commit/1aabdc30bb7fa3b82e76a5b4724f469133f14c85)]:\n  - @marko/compiler@5.39.51\n\n## 6.0.142\n\n### Patch Changes\n\n- [#3071](https://github.com/marko-js/marko/pull/3071) [`c5d31de`](https://github.com/marko-js/marko/commit/c5d31de1b55b26ffb746b7a03b01f2ce26ba0981) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix babel ast patching logic to work with latest babel.\n\n- Updated dependencies [[`c5d31de`](https://github.com/marko-js/marko/commit/c5d31de1b55b26ffb746b7a03b01f2ce26ba0981)]:\n  - @marko/compiler@5.39.50\n\n## 6.0.141\n\n### Patch Changes\n\n- [#3070](https://github.com/marko-js/marko/pull/3070) [`f0b39d0`](https://github.com/marko-js/marko/commit/f0b39d008c48ef2fa2862076143b1154af2f95b7) Thanks [@rturnq](https://github.com/rturnq)! - Add debug runtime error when closure value is not yet defined\n\n- [#3067](https://github.com/marko-js/marko/pull/3067) [`772c84d`](https://github.com/marko-js/marko/commit/772c84dc7562933536bab80d0e285866ccf72444) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with multiple native tag event handler aliases being passed to an element via a spread. Eg `<button ...input onClick() {...}>` where `input` contains `on-click` as a attribute.\n\n- [#3068](https://github.com/marko-js/marko/pull/3068) [`51c2a72`](https://github.com/marko-js/marko/commit/51c2a72ba63c4795299a1d737a9f56b4ad7c9ebb) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with known define tags with closures and no other interactivity in the define tag setup.\n\n- [#3070](https://github.com/marko-js/marko/pull/3070) [`12b1b33`](https://github.com/marko-js/marko/commit/12b1b336ff512c22697133ae744ef92283bbb240) Thanks [@rturnq](https://github.com/rturnq)! - Avoid referencing unwritten child section setup functions\n\n- [#3070](https://github.com/marko-js/marko/pull/3070) [`620e483`](https://github.com/marko-js/marko/commit/620e483cdddab0bd69f2fc55bdf8eba9459b29e4) Thanks [@rturnq](https://github.com/rturnq)! - Prevent treating serialized value signals as pure\n\n## 6.0.140\n\n### Patch Changes\n\n- [#3064](https://github.com/marko-js/marko/pull/3064) [`f55f571`](https://github.com/marko-js/marko/commit/f55f571a30bf70c358efcb7fad5e9c9bdc5ed686) Thanks [@rturnq](https://github.com/rturnq)! - Unify hoisted custom tag vars with native tag refs\n\n- [#3064](https://github.com/marko-js/marko/pull/3064) [`15efc9e`](https://github.com/marko-js/marko/commit/15efc9eab869b6e5140bd951324004c781843d38) Thanks [@rturnq](https://github.com/rturnq)! - Fix loop key serializing when used in a function\n\n- [#3064](https://github.com/marko-js/marko/pull/3064) [`aeec614`](https://github.com/marko-js/marko/commit/aeec614c5b3c3fc3ab34ccbdc7f1fcc3a47b7198) Thanks [@rturnq](https://github.com/rturnq)! - Exclude change handlers from rest bindings\n\n## 6.0.139\n\n### Patch Changes\n\n- [#3059](https://github.com/marko-js/marko/pull/3059) [`40d0b52`](https://github.com/marko-js/marko/commit/40d0b528a616fae251a99d70cb2df54aee08d94b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where serialize reason was not cleared across renders leading to over serialization.\n\n- [#3059](https://github.com/marko-js/marko/pull/3059) [`40d0b52`](https://github.com/marko-js/marko/commit/40d0b528a616fae251a99d70cb2df54aee08d94b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid giving dynamic native tag content a params serialize reason.\n\n## 6.0.138\n\n### Patch Changes\n\n- [#3057](https://github.com/marko-js/marko/pull/3057) [`8d77da5`](https://github.com/marko-js/marko/commit/8d77da552454518a69aa2f5720fe179883571b99) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Dynamic native tag compat fixes.\n\n## 6.0.137\n\n### Patch Changes\n\n- [#3055](https://github.com/marko-js/marko/pull/3055) [`f86e980`](https://github.com/marko-js/marko/commit/f86e980c6941a4e06136aa20d8bd2fe7a632611a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve await tag types.\n\n## 6.0.136\n\n### Patch Changes\n\n- [#3053](https://github.com/marko-js/marko/pull/3053) [`6df8ff8`](https://github.com/marko-js/marko/commit/6df8ff8d2f01f97cf5131a3c5a53d558ee325111) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix serializing nested destructures of a rest binding.\n\n- [#3052](https://github.com/marko-js/marko/pull/3052) [`f47a62e`](https://github.com/marko-js/marko/commit/f47a62e824edc683c0788fb3f24fcda4d569a5f5) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where assignments to tag variables which did not otherwise get a section were being incorrectly removed.\n\n## 6.0.135\n\n### Patch Changes\n\n- [#3051](https://github.com/marko-js/marko/pull/3051) [`e31adc0`](https://github.com/marko-js/marko/commit/e31adc0511d856bf9bf506acf0d489767be29cbe) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix aliases in another section incorrectly causing a binding to be seen as declared / non nullable.\n\n- [#3049](https://github.com/marko-js/marko/pull/3049) [`255769d`](https://github.com/marko-js/marko/commit/255769d1023d3c468947228fc690fde82feb650e) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue assigning to unused binding.\n\n## 6.0.134\n\n### Patch Changes\n\n- [#3046](https://github.com/marko-js/marko/pull/3046) [`22724da`](https://github.com/marko-js/marko/commit/22724da052a7ab921ca1995c3347adc48184e23e) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Optimize input references for known define tag usage.\n\n- [#3048](https://github.com/marko-js/marko/pull/3048) [`e0acbe3`](https://github.com/marko-js/marko/commit/e0acbe36ee4e0c885077a837e58a69b855cd3a5e) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure canonical signal used for closure references.\n\n## 6.0.133\n\n### Patch Changes\n\n- [#3044](https://github.com/marko-js/marko/pull/3044) [`d581cd9`](https://github.com/marko-js/marko/commit/d581cd9ebb2705c62a658dfcb677fca5fffd3d1b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with local attribute tag params overwriting parent section params binding.\n\n- [#3044](https://github.com/marko-js/marko/pull/3044) [`2a43f7e`](https://github.com/marko-js/marko/commit/2a43f7e4147553779133a94c88f8c965fc8dd19f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve logic around building up analyzed watch files.\n\n- [#3042](https://github.com/marko-js/marko/pull/3042) [`22326da`](https://github.com/marko-js/marko/commit/22326da0a2ef04199143b828272d677036aea74c) Thanks [@rturnq](https://github.com/rturnq)! - Fix controllable text inputs when spreading value and valueChange\n\n- Updated dependencies [[`2a43f7e`](https://github.com/marko-js/marko/commit/2a43f7e4147553779133a94c88f8c965fc8dd19f)]:\n  - @marko/compiler@5.39.48\n\n## 6.0.132\n\n### Patch Changes\n\n- [#3040](https://github.com/marko-js/marko/pull/3040) [`8b1ca06`](https://github.com/marko-js/marko/commit/8b1ca06c60e56e0b8cb8c5695b0bde1058880694) Thanks [@rturnq](https://github.com/rturnq)! - Fix for index when using by\n\n- [#3040](https://github.com/marko-js/marko/pull/3040) [`21e5182`](https://github.com/marko-js/marko/commit/21e51825cb5a92ac4d30dfc6495145f9774c5f2f) Thanks [@rturnq](https://github.com/rturnq)! - Fix know property spreads and rest\n\n## 6.0.131\n\n### Patch Changes\n\n- [#3036](https://github.com/marko-js/marko/pull/3036) [`68738ea`](https://github.com/marko-js/marko/commit/68738ea8959f09eebeaa856165ffc5beeccb452b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with registering default event handlers before a spread on a native tag.\n\n## 6.0.130\n\n### Patch Changes\n\n- [#3035](https://github.com/marko-js/marko/pull/3035) [`35e25b0`](https://github.com/marko-js/marko/commit/35e25b04faab0c6782b12f037450eec95270e189) Thanks [@rturnq](https://github.com/rturnq)! - Fix known rest attribute tag duplication\n\n- [#3032](https://github.com/marko-js/marko/pull/3032) [`f424e4e`](https://github.com/marko-js/marko/commit/f424e4e8a86b57eb83f03160f2bc39cd2aed6a5b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix cases where compiler was not storing section information with scope reads.\n\n- [#3035](https://github.com/marko-js/marko/pull/3035) [`291dea8`](https://github.com/marko-js/marko/commit/291dea8d085c3c04127d42df3d786be878c7e29e) Thanks [@rturnq](https://github.com/rturnq)! - Fix known spreads with rest dropping source reference\n\n- [#3034](https://github.com/marko-js/marko/pull/3034) [`1ed1b4b`](https://github.com/marko-js/marko/commit/1ed1b4bc7c3da6774f901dd55149d1f30cc333f7) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix circular downstream reference issue when spreading to a dynamic tag.\n\n- [#3034](https://github.com/marko-js/marko/pull/3034) [`ec12e53`](https://github.com/marko-js/marko/commit/ec12e53bd583cbf468eb6ed9bae1d83375ddd8c6) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue when rendering a define tag with no body content.\n\n## 6.0.129\n\n### Patch Changes\n\n- [#3024](https://github.com/marko-js/marko/pull/3024) [`f634f38`](https://github.com/marko-js/marko/commit/f634f38d6dfffd72c23b4ec7e7bf5596ebd0b5de) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Use compiler modules api to read CWD in interop code.\n\n- Updated dependencies [[`f634f38`](https://github.com/marko-js/marko/commit/f634f38d6dfffd72c23b4ec7e7bf5596ebd0b5de)]:\n  - @marko/compiler@5.39.46\n\n## 6.0.128\n\n### Patch Changes\n\n- [#3022](https://github.com/marko-js/marko/pull/3022) [`907c87c`](https://github.com/marko-js/marko/commit/907c87ca06c8657007c12cfc8ed752142a216443) Thanks [@rturnq](https://github.com/rturnq)! - Fix multiple dynamic closures losing scope in server render\n\n## 6.0.127\n\n### Patch Changes\n\n- [#3021](https://github.com/marko-js/marko/pull/3021) [`b2eb4e9`](https://github.com/marko-js/marko/commit/b2eb4e9925d890c721b5065659babd54dec02dbe) Thanks [@rturnq](https://github.com/rturnq)! - Optimize pure const signals which cache downstream as plain functions\n\n- [#2993](https://github.com/marko-js/marko/pull/2993) [`897a00d`](https://github.com/marko-js/marko/commit/897a00dcfe1fe1532a84aab0eff6ebd41e293ec0) Thanks [@rturnq](https://github.com/rturnq)! - Optimize spreads through a wrapper tag to a known tag into direct calls\n\n- [#3019](https://github.com/marko-js/marko/pull/3019) [`d694b03`](https://github.com/marko-js/marko/commit/d694b03c936f6d8b102e469b5bf9f56e54ad23fd) Thanks [@rturnq](https://github.com/rturnq)! - Optimize serialization to only send non-empty or referenced scopes\n\n- [#3019](https://github.com/marko-js/marko/pull/3019) [`e153684`](https://github.com/marko-js/marko/commit/e1536842785d989f69007c20c0e73474d6a8b9f5) Thanks [@rturnq](https://github.com/rturnq)! - Fix branch scope serialization for only child if and for tags\n\n- [#3019](https://github.com/marko-js/marko/pull/3019) [`299a0e1`](https://github.com/marko-js/marko/commit/299a0e120d1f1363173e19a48e448157fe77172e) Thanks [@rturnq](https://github.com/rturnq)! - Optimize loop key references as constants\n\n## 6.0.126\n\n### Patch Changes\n\n- [#3015](https://github.com/marko-js/marko/pull/3015) [`c1f5de7`](https://github.com/marko-js/marko/commit/c1f5de7c0739b5d96a068e5ecc21a7f5140c2f35) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Support \"renderer\" templates in class/tags interop.\n\n## 6.0.125\n\n### Patch Changes\n\n- [#3012](https://github.com/marko-js/marko/pull/3012) [`7ec9683`](https://github.com/marko-js/marko/commit/7ec9683b16a5206bfb8218e9512c5db1487bfb6f) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Ignore comments for only child conditional optimization\n\n- [#3004](https://github.com/marko-js/marko/pull/3004) [`19815e9`](https://github.com/marko-js/marko/commit/19815e95bc716cbf03e594f764efbe53221e3bdd) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Fix object destructures with spreads and change handlers\n\n- [#3014](https://github.com/marko-js/marko/pull/3014) [`560d6a0`](https://github.com/marko-js/marko/commit/560d6a0bc9c78b3d584cc7199f5ab45ff679ff56) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix tags api runtime import from interop translator.\n\n## 6.0.124\n\n### Patch Changes\n\n- [#3010](https://github.com/marko-js/marko/pull/3010) [`d293abe`](https://github.com/marko-js/marko/commit/d293abe8bff16440c624f955beb93f7398601be7) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure tags api runtime loaded when going through tags api compat layer.\n\n## 6.0.123\n\n### Patch Changes\n\n- [#3007](https://github.com/marko-js/marko/pull/3007) [`3769e43`](https://github.com/marko-js/marko/commit/3769e43c4317c7a832f8f74a55f740b30f1005f1) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid interop feature checking attributes for \"rawOpenTag\" tags (style, import, etc).\n\n- [#3009](https://github.com/marko-js/marko/pull/3009) [`e7a0b33`](https://github.com/marko-js/marko/commit/e7a0b337adf505f8467ab302c0c9bf75e0f168f4) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Serialize input passed from tags api to class api component via the Marko 6 serializer.\n\n## 6.0.122\n\n### Patch Changes\n\n- [#3001](https://github.com/marko-js/marko/pull/3001) [`792dd1d`](https://github.com/marko-js/marko/commit/792dd1d5d193554889f7ba6e734c1730b947cf2d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Expose Marko target api on compiled meta data.\n\n- [#2999](https://github.com/marko-js/marko/pull/2999) [`d2f437b`](https://github.com/marko-js/marko/commit/d2f437bf7118c3160a4f4c9cf977b8396d9fc8db) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add style block as tag api interop heuristic.\n\n- [#2999](https://github.com/marko-js/marko/pull/2999) [`d2f437b`](https://github.com/marko-js/marko/commit/d2f437bf7118c3160a4f4c9cf977b8396d9fc8db) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add support for \"use class\" comment to opt into to class api when exclusive `tags` folders prefer tags api.\n\n- [#2999](https://github.com/marko-js/marko/pull/2999) [`d2f437b`](https://github.com/marko-js/marko/commit/d2f437bf7118c3160a4f4c9cf977b8396d9fc8db) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add exclusive `tags` folder discovery as a \"prefer tags api\" heuristic in interop mode.\n\n- Updated dependencies [[`792dd1d`](https://github.com/marko-js/marko/commit/792dd1d5d193554889f7ba6e734c1730b947cf2d), [`d2f437b`](https://github.com/marko-js/marko/commit/d2f437bf7118c3160a4f4c9cf977b8396d9fc8db), [`d2f437b`](https://github.com/marko-js/marko/commit/d2f437bf7118c3160a4f4c9cf977b8396d9fc8db)]:\n  - @marko/compiler@5.39.45\n\n## 6.0.121\n\n### Patch Changes\n\n- [#2996](https://github.com/marko-js/marko/pull/2996) [`1a65ff3`](https://github.com/marko-js/marko/commit/1a65ff3f4ed31b1e3fab37328962950db28a68e6) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Move strip types logic to be after transform phase.\n\n- [#2994](https://github.com/marko-js/marko/pull/2994) [`1bf2788`](https://github.com/marko-js/marko/commit/1bf2788042fd3e6928303c5782909612a59c5206) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where variables from pruned server/client statements were becoming implicit globals (now injects local undefined variables).\n\n- [#2996](https://github.com/marko-js/marko/pull/2996) [`2a23dec`](https://github.com/marko-js/marko/commit/2a23decc64b3dbfea024241b1301dba7f6d69679) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Run parse hooks after the main parse phase is complete.\n\n- Updated dependencies [[`1a65ff3`](https://github.com/marko-js/marko/commit/1a65ff3f4ed31b1e3fab37328962950db28a68e6), [`1bf2788`](https://github.com/marko-js/marko/commit/1bf2788042fd3e6928303c5782909612a59c5206), [`2a23dec`](https://github.com/marko-js/marko/commit/2a23decc64b3dbfea024241b1301dba7f6d69679)]:\n  - @marko/compiler@5.39.44\n\n## 6.0.120\n\n### Patch Changes\n\n- [#2982](https://github.com/marko-js/marko/pull/2982) [`40413b7`](https://github.com/marko-js/marko/commit/40413b7da9d7920abda8e51f8b73fd2417b8e123) Thanks [@rturnq](https://github.com/rturnq)! - Handle updating closures in a pending await and delay running renders in pending scopes\n\n- [#2991](https://github.com/marko-js/marko/pull/2991) [`1085a19`](https://github.com/marko-js/marko/commit/1085a19fd26eeb7aac8ee209d852c8d536a2387d) Thanks [@rturnq](https://github.com/rturnq)! - Ensure parent branch is set on async branches\n\n## 6.0.119\n\n### Patch Changes\n\n- [#2987](https://github.com/marko-js/marko/pull/2987) [`8cdeb6b`](https://github.com/marko-js/marko/commit/8cdeb6bb1d948ba2fb52299d9c543a59f29dc482) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix regression with text only tags (textarea/title) with a spread and no body content.\n\n## 6.0.118\n\n### Patch Changes\n\n- [#2980](https://github.com/marko-js/marko/pull/2980) [`f9cf89f`](https://github.com/marko-js/marko/commit/f9cf89f37d16b1182d609e52be2519cd452cae5f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix types for html-\\* tags.\n\n- [#2983](https://github.com/marko-js/marko/pull/2983) [`66ccfd8`](https://github.com/marko-js/marko/commit/66ccfd8e8f4ea277fb504464afca79b7ee6245d4) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Rename \\_to_text helper to \\_escape_text on the server.\n\n- [#2983](https://github.com/marko-js/marko/pull/2983) [`3de60b9`](https://github.com/marko-js/marko/commit/3de60b9c82f4c31109ab6e1e9c6cfad23ca22e7e) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Remove unused nullable tag name optimization.\n\n- [#2983](https://github.com/marko-js/marko/pull/2983) [`fdc46fb`](https://github.com/marko-js/marko/commit/fdc46fb3e762595a43fd1fa2f714af7f8819d341) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Move title tag logic into native tag translator.\n\n- [#2978](https://github.com/marko-js/marko/pull/2978) [`55fd324`](https://github.com/marko-js/marko/commit/55fd324c3f4ea00535856c7719f8b4c46f55de40) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Update compiler to avoid mutating translator visitors.\n\n- [#2985](https://github.com/marko-js/marko/pull/2985) [`762377b`](https://github.com/marko-js/marko/commit/762377bacd5a237807d23f69f88ab51f5234a93e) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Refactor html-script and html-style to share logic with native tag translation.\n\n- [#2983](https://github.com/marko-js/marko/pull/2983) [`fdc46fb`](https://github.com/marko-js/marko/commit/fdc46fb3e762595a43fd1fa2f714af7f8819d341) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Normalize taglib ids to be consistent with register ids and across Marko 5/6.\n\n- [#2984](https://github.com/marko-js/marko/pull/2984) [`17c4ba7`](https://github.com/marko-js/marko/commit/17c4ba7edfa3f38b9fc653aafc4b244258299519) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Support default nonce attribute on html-script and html-style when rendered client side if cspNonce is available/serialized to the client $global.\n\n- [#2981](https://github.com/marko-js/marko/pull/2981) [`6709f4c`](https://github.com/marko-js/marko/commit/6709f4cdbe9c49cf1d9dfa77813c5949f8400bba) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Move textarea normalization to be pre-analyze.\n\n- Updated dependencies [[`fdc46fb`](https://github.com/marko-js/marko/commit/fdc46fb3e762595a43fd1fa2f714af7f8819d341), [`55fd324`](https://github.com/marko-js/marko/commit/55fd324c3f4ea00535856c7719f8b4c46f55de40), [`fdc46fb`](https://github.com/marko-js/marko/commit/fdc46fb3e762595a43fd1fa2f714af7f8819d341)]:\n  - @marko/compiler@5.39.43\n\n## 6.0.117\n\n### Patch Changes\n\n- [#2976](https://github.com/marko-js/marko/pull/2976) [`36aa6fb`](https://github.com/marko-js/marko/commit/36aa6fbf9d7b052fc8acffa841cbae27f81783c0) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where the ...rest alias optimization was applied incorrectly when there exists unrelated property aliases.\n\n## 6.0.116\n\n### Patch Changes\n\n- [#2973](https://github.com/marko-js/marko/pull/2973) [`abcd809`](https://github.com/marko-js/marko/commit/abcd80909115c19303513607740101380ccd1b7f) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Fix dynamic interpolations in `<title>` tag\n\n- [#2969](https://github.com/marko-js/marko/pull/2969) [`41753e6`](https://github.com/marko-js/marko/commit/41753e60393f77bc6ac4392319297c4670ae9da6) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Add `xmlns=` attribute to `<svg>` types\n\n- [#2974](https://github.com/marko-js/marko/pull/2974) [`bf3dc6b`](https://github.com/marko-js/marko/commit/bf3dc6b1aa8ee8f5543d33b60fd64d1d6f5521d9) Thanks [@rturnq](https://github.com/rturnq)! - Improve excluded property aliases\n\n## 6.0.115\n\n### Patch Changes\n\n- [#2967](https://github.com/marko-js/marko/pull/2967) [`d3d25c8`](https://github.com/marko-js/marko/commit/d3d25c8ba3e5ac8d1aa35c8e6d3b87784c50cd92) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with duplicate attributes on native tags.\n\n## 6.0.114\n\n### Patch Changes\n\n- [#2964](https://github.com/marko-js/marko/pull/2964) [`412e371`](https://github.com/marko-js/marko/commit/412e371cf24e23f992c19aee8c9706e2085f4f47) Thanks [@rturnq](https://github.com/rturnq)! - Unify inline placeholder and await placeholders\n\n- [#2966](https://github.com/marko-js/marko/pull/2966) [`8e1a65e`](https://github.com/marko-js/marko/commit/8e1a65efcc586226424ad05973516f88f2501c98) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Allow await tag params to be bundled separately from the await tag content.\n\n- [#2963](https://github.com/marko-js/marko/pull/2963) [`0c4154c`](https://github.com/marko-js/marko/commit/0c4154c93bd75f71b059a75f353052f79a7b6055) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Encode resume effects as a string to reduce HTML bytes and fix browser compatibility issue with large effect lists.\n\n## 6.0.113\n\n### Patch Changes\n\n- [#2961](https://github.com/marko-js/marko/pull/2961) [`a6ff06d`](https://github.com/marko-js/marko/commit/a6ff06da037b839758e445ebbc9294cd839c9c3f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid walking for comment markers when runtime is loaded, it should always be done by the inline script and was causing a race condition where a scope could be incorrectly duplicated.\n\n## 6.0.112\n\n### Patch Changes\n\n- [#2955](https://github.com/marko-js/marko/pull/2955) [`2cb7418`](https://github.com/marko-js/marko/commit/2cb7418850b5eb792b115710564d2cd4272f6856) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add cspNonce by default to html-script and html-style.\n\n## 6.0.111\n\n### Patch Changes\n\n- [#2953](https://github.com/marko-js/marko/pull/2953) [`f79163d`](https://github.com/marko-js/marko/commit/f79163dc0e54e3295c0f7e7efddca2eda226328f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Optimize resume visitor code for bundle size.\n\n- [#2953](https://github.com/marko-js/marko/pull/2953) [`3fbead1`](https://github.com/marko-js/marko/commit/3fbead1b58933f968a3aa6e821cf054095fd94eb) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Refactor resume runtime to avoid executing other render and effect code in the queue when resuming.\n\n## 6.0.110\n\n### Patch Changes\n\n- [#2951](https://github.com/marko-js/marko/pull/2951) [`1a2208e`](https://github.com/marko-js/marko/commit/1a2208e86aa8d67fd8d18b7ad3af9df95e833d87) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add compile error for hoisted define tag references.\n\n- [#2951](https://github.com/marko-js/marko/pull/2951) [`64d77e7`](https://github.com/marko-js/marko/commit/64d77e7668a25595286a8164eb1083edbdd17227) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid enabling the catch runtime multiple times.\n\n- [#2951](https://github.com/marko-js/marko/pull/2951) [`1a2208e`](https://github.com/marko-js/marko/commit/1a2208e86aa8d67fd8d18b7ad3af9df95e833d87) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with circular define tag references.\n\n## 6.0.109\n\n### Patch Changes\n\n- [#2948](https://github.com/marko-js/marko/pull/2948) [`4a9d9dd`](https://github.com/marko-js/marko/commit/4a9d9dd563293c0856482f8465a92bf9b5645d87) Thanks [@rturnq](https://github.com/rturnq)! - perf: inline content branch calls\n\n- [#2949](https://github.com/marko-js/marko/pull/2949) [`6648a22`](https://github.com/marko-js/marko/commit/6648a2229084e3ae431c175fb283e41b9bb1dab5) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Allow compiler import helper to be used outside of translate.\n\n- Updated dependencies [[`6648a22`](https://github.com/marko-js/marko/commit/6648a2229084e3ae431c175fb283e41b9bb1dab5)]:\n  - @marko/compiler@5.39.42\n\n## 6.0.108\n\n### Patch Changes\n\n- [#2946](https://github.com/marko-js/marko/pull/2946) [`956b82d`](https://github.com/marko-js/marko/commit/956b82d4bd053c8b0f7c8ee51e35bd467d97fe96) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix regression when a for loop closure removes all items.\n\n## 6.0.107\n\n### Patch Changes\n\n- [#2943](https://github.com/marko-js/marko/pull/2943) [`f832f91`](https://github.com/marko-js/marko/commit/f832f91d7cc3afec2b054882b472d1b5eb11f1e6) Thanks [@rturnq](https://github.com/rturnq)! - Fix incorrect loop scope accessor in production builds\n\n## 6.0.106\n\n### Patch Changes\n\n- [#2941](https://github.com/marko-js/marko/pull/2941) [`31a199e`](https://github.com/marko-js/marko/commit/31a199e974a9a7986f1534c8b37b0d2bdae791ff) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix referencing $global in production client side renders.\n\n## 6.0.105\n\n### Patch Changes\n\n- [#2937](https://github.com/marko-js/marko/pull/2937) [`498dd11`](https://github.com/marko-js/marko/commit/498dd11f4cf46ee3848a1915307888c2cad4811d) Thanks [@rturnq](https://github.com/rturnq)! - Unify loop/conditonal scopes and prevent serializing them if the associated markers are written\n\n- [#2940](https://github.com/marko-js/marko/pull/2940) [`cfbf7ed`](https://github.com/marko-js/marko/commit/cfbf7ed008ad4a195971faa5a016388fe6048d55) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix state execution order regression in dev mode.\n\n## 6.0.104\n\n### Patch Changes\n\n- [#2935](https://github.com/marko-js/marko/pull/2935) [`28df752`](https://github.com/marko-js/marko/commit/28df752dd94494225d0b172e49d5b7bb0f1ace80) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where content could be flushed after the serializer caused the stream to abort with an error.\n\n## 6.0.103\n\n### Patch Changes\n\n- [#2932](https://github.com/marko-js/marko/pull/2932) [`c285cd1`](https://github.com/marko-js/marko/commit/c285cd123d98766fb11a225f845f73a82807d9f6) Thanks [@rturnq](https://github.com/rturnq)! - Use identifiers for scope accessors and encode them as integers in client templates\n\n- [#2933](https://github.com/marko-js/marko/pull/2933) [`0247892`](https://github.com/marko-js/marko/commit/0247892da85d73c671850e58d00ee3f8fc45b344) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve error messaging when exclusive change handlers are specified on native elements.\n\n- [#2933](https://github.com/marko-js/marko/pull/2933) [`d25a5a5`](https://github.com/marko-js/marko/commit/d25a5a57c53149b6dd17d8ebffed2461d7c282bf) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add dev mode validation for dynamic tag names.\n\n- [#2933](https://github.com/marko-js/marko/pull/2933) [`ac1c8dc`](https://github.com/marko-js/marko/commit/ac1c8dc67d152eb93d3e968731437381572a267e) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve errors for duplicate declarations for tag variables.\n\n## 6.0.102\n\n### Patch Changes\n\n- [#2931](https://github.com/marko-js/marko/pull/2931) [`258306f`](https://github.com/marko-js/marko/commit/258306f6fd5b3cf1e3d0c06f99c61a3c473dc632) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue assigning to aliased tag variables.\n\n- [#2926](https://github.com/marko-js/marko/pull/2926) [`ca2d1dc`](https://github.com/marko-js/marko/commit/ca2d1dc1ca0c0d3320f73ad1ccf910483b72841b) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Update error cases for if tag\n\n- [#2930](https://github.com/marko-js/marko/pull/2930) [`f5f34c6`](https://github.com/marko-js/marko/commit/f5f34c63e7c14a182fb79be0e370fca7b8c36825) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add support for resuming dynamic tag native events.\n\n## 6.0.101\n\n### Patch Changes\n\n- [#2927](https://github.com/marko-js/marko/pull/2927) [`7598ad3`](https://github.com/marko-js/marko/commit/7598ad320a4c24256c46ae399040eb836ad4af01) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix analysis of exported functions.\n\n## 6.0.100\n\n### Patch Changes\n\n- [#2923](https://github.com/marko-js/marko/pull/2923) [`5ce5231`](https://github.com/marko-js/marko/commit/5ce523177bf9c4ff01f47fd726a163f19ba2dec7) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with source tracking being broken with destructured aliases.\n\n- [#2923](https://github.com/marko-js/marko/pull/2923) [`852974b`](https://github.com/marko-js/marko/commit/852974ba7b3db7da93e06db79e452a8282c92b7c) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure let tag with change handler properly tracks reactive sources.\n\n## 6.0.99\n\n### Patch Changes\n\n- [#2921](https://github.com/marko-js/marko/pull/2921) [`279eaad`](https://github.com/marko-js/marko/commit/279eaad827775332b150ccd6d5aa40e987f2c3e8) Thanks [@rturnq](https://github.com/rturnq)! - Loosen assignment check to allow any function parent\n\n- [#2920](https://github.com/marko-js/marko/pull/2920) [`2bed9ef`](https://github.com/marko-js/marko/commit/2bed9ef7d7ba59ac65773be2424cef33ea4623f9) Thanks [@rturnq](https://github.com/rturnq)! - Consistently read latest value from let tags\n\n## 6.0.98\n\n### Patch Changes\n\n- [#2918](https://github.com/marko-js/marko/pull/2918) [`baf830b`](https://github.com/marko-js/marko/commit/baf830b6b76cc5dc5f104280185952830b881f71) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue removing if statements which rendered no content.\n\n## 6.0.97\n\n### Patch Changes\n\n- [#2917](https://github.com/marko-js/marko/pull/2917) [`8f82e28`](https://github.com/marko-js/marko/commit/8f82e2855fe322fcfa206cbea4dcae3230d5b6ef) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix circular issue when serializing functions.\n\n- [#2912](https://github.com/marko-js/marko/pull/2912) [`917c88e`](https://github.com/marko-js/marko/commit/917c88ed23955bbf68cf9e19382315345974e79d) Thanks [@rturnq](https://github.com/rturnq)! - Avoid calling script functions with scope argument unnecessarily\n\n- [#2913](https://github.com/marko-js/marko/pull/2913) [`280f4d3`](https://github.com/marko-js/marko/commit/280f4d3141a3fcbd1ec2c6e95c8db6613f9eff1b) Thanks [@rturnq](https://github.com/rturnq)! - Ensure increment and decrement assignments don't prune change handler bindings\n\n- [#2916](https://github.com/marko-js/marko/pull/2916) [`5963a78`](https://github.com/marko-js/marko/commit/5963a7894425d4993de2104e5bcbf6d3ffda6651) Thanks [@rturnq](https://github.com/rturnq)! - Fix duplicate setup identifier when hoisting\n\n## 6.0.96\n\n### Patch Changes\n\n- [#2909](https://github.com/marko-js/marko/pull/2909) [`43a88eb`](https://github.com/marko-js/marko/commit/43a88ebab65f8e1d781e15f7cfb9a215e52ed75f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issues printing optional member expressions.\n\n- [#2908](https://github.com/marko-js/marko/pull/2908) [`e77008a`](https://github.com/marko-js/marko/commit/e77008a63431539e04cc1abc28fe2920728e68b5) Thanks [@rturnq](https://github.com/rturnq)! - Add compile error when referencing tag variable in providing tag's attributes\n\n## 6.0.95\n\n### Patch Changes\n\n- [#2906](https://github.com/marko-js/marko/pull/2906) [`af067b7`](https://github.com/marko-js/marko/commit/af067b737c4b8684b8d56b14d3d96266b7e61d9d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add compile error when assigning to tag var/param outside a function.\n\n- [#2906](https://github.com/marko-js/marko/pull/2906) [`c6a9c12`](https://github.com/marko-js/marko/commit/c6a9c125e82d9a1fbb158677cc8c26a94d80e2ec) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with incorrect babel scopes after stripping types.\n\n- [#2906](https://github.com/marko-js/marko/pull/2906) [`355d5fd`](https://github.com/marko-js/marko/commit/355d5fd3c2284b8c149047002b95f16157573334) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure function references are a subset of the expression references.\n\n- Updated dependencies [[`c6a9c12`](https://github.com/marko-js/marko/commit/c6a9c125e82d9a1fbb158677cc8c26a94d80e2ec)]:\n  - @marko/compiler@5.39.41\n\n## 6.0.94\n\n### Patch Changes\n\n- [#2904](https://github.com/marko-js/marko/pull/2904) [`006d1a5`](https://github.com/marko-js/marko/commit/006d1a55cf42179fdc48974e409d1dc7c4564fcb) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where value serialized because of function closure was not serializing owner scopes.\n\n## 6.0.93\n\n### Patch Changes\n\n- [#2900](https://github.com/marko-js/marko/pull/2900) [`d81c1ed`](https://github.com/marko-js/marko/commit/d81c1edb2ba2423c33e9a28d1e5f16e6ea973e8c) Thanks [@rturnq](https://github.com/rturnq)! - Fix native tag var when used before defined in same scope\n  Fix custom tag hoists\n  Error when reading hoisted values during render phase\n  Assert hoisted values are functions in dev mode\n\n- [#2902](https://github.com/marko-js/marko/pull/2902) [`4aa8120`](https://github.com/marko-js/marko/commit/4aa8120f1ed33fbf44639bf6b84239ba576db8ac) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid storing client scope id counter on $global.\n\n- [#2902](https://github.com/marko-js/marko/pull/2902) [`0807d31`](https://github.com/marko-js/marko/commit/0807d31b1b01bed64c96d2ad465bd612f1dfe9cc) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where a let tag that depends on other values was incorrectly re-running when resumed from the server even without a change handler.\n\n## 6.0.92\n\n### Patch Changes\n\n- [#2898](https://github.com/marko-js/marko/pull/2898) [`08c0604`](https://github.com/marko-js/marko/commit/08c060470f56d261ae5f7cee5dc0effc1194c31a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with text normalization helper that was breaking textareas (and similar text content tags) with leading dynamic placeholder content.\n\n## 6.0.91\n\n### Patch Changes\n\n- [#2897](https://github.com/marko-js/marko/pull/2897) [`5161e7a`](https://github.com/marko-js/marko/commit/5161e7a9c919b9f3ee74239fb64280c4d1dd9f74) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Show debug warnings when duplicate for loop keys are used.\n\n- [#2892](https://github.com/marko-js/marko/pull/2892) [`06c1707`](https://github.com/marko-js/marko/commit/06c1707469cac8da51e2f22f300efeda83878fbd) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Error message when using Event.currentTarget api in a delegated event.\n\n## 6.0.90\n\n### Patch Changes\n\n- [#2889](https://github.com/marko-js/marko/pull/2889) [`f0e0eb5`](https://github.com/marko-js/marko/commit/f0e0eb5885e3adda1765cc7ed1cfa2b3581591f2) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where multiple serialize mutation assignments were not correctly being wrapped with parens.\n\n- [#2889](https://github.com/marko-js/marko/pull/2889) [`f0e0eb5`](https://github.com/marko-js/marko/commit/f0e0eb5885e3adda1765cc7ed1cfa2b3581591f2) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure that await tag client runtime enables branch walking.\n\n## 6.0.89\n\n### Patch Changes\n\n- [#2887](https://github.com/marko-js/marko/pull/2887) [`38aa757`](https://github.com/marko-js/marko/commit/38aa75777f08005e53cfcae0b7ac3cbfac16c4c0) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where the resume walker was incorrectly stopping when an incomplete placeholder was ended.\n\n## 6.0.88\n\n### Patch Changes\n\n- [#2886](https://github.com/marko-js/marko/pull/2886) [`d6e7a1d`](https://github.com/marko-js/marko/commit/d6e7a1d10ea2ec70e7cb81cb55fd5f241bd1051d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix attribute tags not being included in pre analyze transforms.\n\n- [#2884](https://github.com/marko-js/marko/pull/2884) [`c1d752c`](https://github.com/marko-js/marko/commit/c1d752cf9c14f066a390eb7d6b7e50c6eeedbd65) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where client side placeholders were not clearing batched effects, causing extra execution.\n\n- [#2884](https://github.com/marko-js/marko/pull/2884) [`c1d752c`](https://github.com/marko-js/marko/commit/c1d752cf9c14f066a390eb7d6b7e50c6eeedbd65) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue moving @placeholder/@catch content when the replacement range was not yet flushed.\n\n## 6.0.87\n\n### Patch Changes\n\n- [#2882](https://github.com/marko-js/marko/pull/2882) [`90f9738`](https://github.com/marko-js/marko/commit/90f9738c7b557fb797afeb40a597bb0b3e0760df) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix support for assignment patterns.\n\n- [`eb77489`](https://github.com/marko-js/marko/commit/eb77489b58eb880ce8ca43cc4e7a858a5515a438) Thanks [@rturnq](https://github.com/rturnq)! - Fix regression with bundle load before inline runtime\n\n## 6.0.86\n\n### Patch Changes\n\n- [#2876](https://github.com/marko-js/marko/pull/2876) [`a774ed6`](https://github.com/marko-js/marko/commit/a774ed6a8d5fdc0b54ff31f373803ea7dc0cdd0b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with invalid serialize guard references.\n\n## 6.0.85\n\n### Patch Changes\n\n- [#2875](https://github.com/marko-js/marko/pull/2875) [`8f66850`](https://github.com/marko-js/marko/commit/8f66850f57767a77815a9da6141a385f6aa89829) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid writing unnecessary param signals.\n\n- [#2873](https://github.com/marko-js/marko/pull/2873) [`0b9d0a8`](https://github.com/marko-js/marko/commit/0b9d0a8f0c676f07e8fd5a564f879850dd6cab52) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid writing signals with no statements.\n\n## 6.0.84\n\n### Patch Changes\n\n- [#2871](https://github.com/marko-js/marko/pull/2871) [`826a1a9`](https://github.com/marko-js/marko/commit/826a1a95ea44159156720fc125eb9e270c7d1245) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix invalid renderer id check in prod builds.\n\n## 6.0.83\n\n### Patch Changes\n\n- [#2867](https://github.com/marko-js/marko/pull/2867) [`3cb6721`](https://github.com/marko-js/marko/commit/3cb6721830831cdfda891bb38e636da70c17b5c4) Thanks [@rturnq](https://github.com/rturnq)! - Escape grave (`) characters in template literals\n\n- [#2864](https://github.com/marko-js/marko/pull/2864) [`1e75400`](https://github.com/marko-js/marko/commit/1e7540087720e748d0f7889f10ace4ddf93a4f80) Thanks [@rturnq](https://github.com/rturnq)! - Ensure serialize reason is set before child call in server compilation\n\n- [#2870](https://github.com/marko-js/marko/pull/2870) [`c7fe62e`](https://github.com/marko-js/marko/commit/c7fe62e66b1d06f2163004a929380d3e7b0aedd9) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Improve types for CSS properties\n\n- [#2869](https://github.com/marko-js/marko/pull/2869) [`cc266e8`](https://github.com/marko-js/marko/commit/cc266e8dee398095d456fbaff8b9c493a91c6c28) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix some edge cases around serialize reason generation.\n\n- [#2868](https://github.com/marko-js/marko/pull/2868) [`3e55ba6`](https://github.com/marko-js/marko/commit/3e55ba6aa16977fe5244fb5561391769084365e2) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Increase specificity of dynamic tag normalization\n\n- [#2869](https://github.com/marko-js/marko/pull/2869) [`df93413`](https://github.com/marko-js/marko/commit/df93413c5785d4f12fe4c0899de69a167b77bc44) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - A \"let\" tag without assignments should not be seen as a stateful source.\n\n## 6.0.82\n\n### Patch Changes\n\n- [#2863](https://github.com/marko-js/marko/pull/2863) [`1d898d0`](https://github.com/marko-js/marko/commit/1d898d08b19ceeb7f078a23c1924db641eba161f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with multiple renders into the same runtime.\n\n- [#2861](https://github.com/marko-js/marko/pull/2861) [`97e9ae8`](https://github.com/marko-js/marko/commit/97e9ae894abd8ce420d4c8eff04bbec75b60a8ae) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with invalid html compilation output when having param only serialize reasons.\n\n## 6.0.81\n\n### Patch Changes\n\n- [#2859](https://github.com/marko-js/marko/pull/2859) [`22112e5`](https://github.com/marko-js/marko/commit/22112e524cf12baf0b119a5ad3417145459a159c) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure markoOpts is always accurate when running child template analysis.\n\n- [#2857](https://github.com/marko-js/marko/pull/2857) [`13e5007`](https://github.com/marko-js/marko/commit/13e50070594b75a0fc03233b4b93ea0a6af390ca) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Update type definitions for `<log>` and `<debug>` tags\n\n- [#2859](https://github.com/marko-js/marko/pull/2859) [`e12aa2e`](https://github.com/marko-js/marko/commit/e12aa2e79dfa2e38d721d64857c0496b0bfcc84f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Track reasons for function closure serialization and add appropriate guards.\n\n- [#2859](https://github.com/marko-js/marko/pull/2859) [`e12aa2e`](https://github.com/marko-js/marko/commit/e12aa2e79dfa2e38d721d64857c0496b0bfcc84f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Track downstream serialize reasons for attribute tags.\n\n- Updated dependencies [[`22112e5`](https://github.com/marko-js/marko/commit/22112e524cf12baf0b119a5ad3417145459a159c)]:\n  - @marko/compiler@5.39.40\n\n## 6.0.80\n\n### Patch Changes\n\n- [#2850](https://github.com/marko-js/marko/pull/2850) [`d5224b0`](https://github.com/marko-js/marko/commit/d5224b01512827784949a7816d5b6cf3d2a81826) Thanks [@rturnq](https://github.com/rturnq)! - Guard param serialize reasons and avoid registering body content for stateless attribute tags\n\n## 6.0.79\n\n### Patch Changes\n\n- [#2855](https://github.com/marko-js/marko/pull/2855) [`29173ce`](https://github.com/marko-js/marko/commit/29173ced3806d932eb05dc14002fc4969ef4ac6b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure scopes are crawled before stripping types.\n\n- Updated dependencies [[`29173ce`](https://github.com/marko-js/marko/commit/29173ced3806d932eb05dc14002fc4969ef4ac6b)]:\n  - @marko/compiler@5.39.39\n\n## 6.0.78\n\n### Patch Changes\n\n- [#2853](https://github.com/marko-js/marko/pull/2853) [`b52a62f`](https://github.com/marko-js/marko/commit/b52a62f3ae5d07bee23685289aec169476820f69) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure stripTypes compiler option is applied when targeting source output.\n\n- Updated dependencies [[`b52a62f`](https://github.com/marko-js/marko/commit/b52a62f3ae5d07bee23685289aec169476820f69)]:\n  - @marko/compiler@5.39.38\n\n## 6.0.77\n\n### Patch Changes\n\n- [#2851](https://github.com/marko-js/marko/pull/2851) [`44fbf8d`](https://github.com/marko-js/marko/commit/44fbf8dd2672d3a39e511ee4f647b9e591943616) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix hoisted element reference variable name in production builds.\n\n## 6.0.76\n\n### Patch Changes\n\n- [#2848](https://github.com/marko-js/marko/pull/2848) [`cab5759`](https://github.com/marko-js/marko/commit/cab575925dcc08ca079999cceed3a3dac23a0173) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Prevent compile-time infinite loop\n\n## 6.0.75\n\n### Patch Changes\n\n- [#2847](https://github.com/marko-js/marko/pull/2847) [`a19530c`](https://github.com/marko-js/marko/commit/a19530c833a992b19cea27afb2a3c27395276c60) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix uncontrolled textarea and select values.\n\n- [#2845](https://github.com/marko-js/marko/pull/2845) [`75fd29f`](https://github.com/marko-js/marko/commit/75fd29f469d015f1402a6c5a5e038d7c2db8bfca) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix deleting unserializable references in serializer.\n\n## 6.0.74\n\n### Patch Changes\n\n- [#2843](https://github.com/marko-js/marko/pull/2843) [`4319ad0`](https://github.com/marko-js/marko/commit/4319ad08b2b2ebc36eb2e491e96da99e9b2d79de) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Serialize branch index for inert if tags to ensure closures update properly.\n\n## 6.0.73\n\n### Patch Changes\n\n- [#2836](https://github.com/marko-js/marko/pull/2836) [`c4081bd`](https://github.com/marko-js/marko/commit/c4081bd96c627a09ca00b2b89dc4c9f3d77187a6) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid unhandled promise rejections when serializing promises.\n\n- [#2839](https://github.com/marko-js/marko/pull/2839) [`f8b5c2a`](https://github.com/marko-js/marko/commit/f8b5c2af29a72592c98dbeb3e409efaab2b6e319) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with closures within a try being over serialized.\n\n## 6.0.72\n\n### Patch Changes\n\n- [#2837](https://github.com/marko-js/marko/pull/2837) [`ddac960`](https://github.com/marko-js/marko/commit/ddac960439f6e5f0d3f6c780b00bcbce11eb55d7) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue updating closures to a stateless if.\n\n## 6.0.71\n\n### Patch Changes\n\n- [#2834](https://github.com/marko-js/marko/pull/2834) [`5c9a37f`](https://github.com/marko-js/marko/commit/5c9a37fa17c6a2f5f771c919b8415e4dfb25fca4) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue striping type specifiers in imports.\n\n- Updated dependencies [[`5c9a37f`](https://github.com/marko-js/marko/commit/5c9a37fa17c6a2f5f771c919b8415e4dfb25fca4)]:\n  - @marko/compiler@5.39.37\n\n## 6.0.70\n\n### Patch Changes\n\n- [#2830](https://github.com/marko-js/marko/pull/2830) [`9a688af`](https://github.com/marko-js/marko/commit/9a688af3c92a73ae7492cdaa4b9ff1e0b2f9127e) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with static/server/client statements with type imports not properly being stripped.\n\n- [#2832](https://github.com/marko-js/marko/pull/2832) [`80bf906`](https://github.com/marko-js/marko/commit/80bf906e9903f8bf6c94935acad7c2a29df7844e) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with having multiple binds.\n\n- Updated dependencies [[`9a688af`](https://github.com/marko-js/marko/commit/9a688af3c92a73ae7492cdaa4b9ff1e0b2f9127e)]:\n  - @marko/compiler@5.39.36\n\n## 6.0.69\n\n### Patch Changes\n\n- [#2827](https://github.com/marko-js/marko/pull/2827) [`f3daa1d`](https://github.com/marko-js/marko/commit/f3daa1da10036c1e76456a5498266be65328444b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix style tag var hoisting in ssr\n\n## 6.0.68\n\n### Patch Changes\n\n- [#2825](https://github.com/marko-js/marko/pull/2825) [`553acf0`](https://github.com/marko-js/marko/commit/553acf08ed85ae01625d04b6d52efd2a7eea0bf7) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with single inert control flow nested under an element that needs to be visited.\n\n- [#2825](https://github.com/marko-js/marko/pull/2825) [`b828f48`](https://github.com/marko-js/marko/commit/b828f4889b3b30f864c452789e06741392ddc535) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with tag variable assignments in expression statements sometimes outputting invalid code.\n\n## 6.0.67\n\n### Patch Changes\n\n- [#2822](https://github.com/marko-js/marko/pull/2822) [`8449deb`](https://github.com/marko-js/marko/commit/8449debbef1c32fd1ffbb2dfe15929f0a1868652) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Add for until tag\n\n- [#2823](https://github.com/marko-js/marko/pull/2823) [`58c2165`](https://github.com/marko-js/marko/commit/58c21653aa0a1d6e1db208c36a1a584b44ba2ff0) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure type stripping runs before transform phase in compiler.\n\n- Updated dependencies [[`58c2165`](https://github.com/marko-js/marko/commit/58c21653aa0a1d6e1db208c36a1a584b44ba2ff0)]:\n  - @marko/compiler@5.39.35\n\n## 6.0.66\n\n### Patch Changes\n\n- [#2820](https://github.com/marko-js/marko/pull/2820) [`f39c6da`](https://github.com/marko-js/marko/commit/f39c6da21ff8476130890e5482242acd2096e54a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve tags/class interop across async.\n\n## 6.0.65\n\n### Patch Changes\n\n- [#2818](https://github.com/marko-js/marko/pull/2818) [`41c58d2`](https://github.com/marko-js/marko/commit/41c58d24bbbde24d0392ad315c6008193e8fd9d3) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Update <id> and <let> tag types\n\n- [#2817](https://github.com/marko-js/marko/pull/2817) [`e70f0c6`](https://github.com/marko-js/marko/commit/e70f0c69e5e42e5b29a61cbce2134ee27ca16b35) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Update error messages to markojs.com\n\n## 6.0.64\n\n### Patch Changes\n\n- [#2813](https://github.com/marko-js/marko/pull/2813) [`65b6dde`](https://github.com/marko-js/marko/commit/65b6dde559f50afac6e285bd598ed49b015485f4) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve class/tags api interop.\n\n## 6.0.63\n\n### Patch Changes\n\n- [#2810](https://github.com/marko-js/marko/pull/2810) [`2e24f2d`](https://github.com/marko-js/marko/commit/2e24f2d938e27c6bf11856b90a4016ac68ef89b0) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid compile error with empty script tag.\n\n## 6.0.62\n\n### Patch Changes\n\n- [#2808](https://github.com/marko-js/marko/pull/2808) [`a12d927`](https://github.com/marko-js/marko/commit/a12d927058067aab3bc7917010956293e2862e44) Thanks [@rturnq](https://github.com/rturnq)! - Improve resume walks to be easier to follow and more correct\n\n## 6.0.61\n\n### Patch Changes\n\n- [#2807](https://github.com/marko-js/marko/pull/2807) [`7ddccab`](https://github.com/marko-js/marko/commit/7ddccabf97951c68d5d836414384a9571374f6ef) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Fix text placeholders\n\n- [#2803](https://github.com/marko-js/marko/pull/2803) [`81ec94e`](https://github.com/marko-js/marko/commit/81ec94eea973abc93584534f253b9fbd43df14f6) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure binding resolution does not leak across files.\n\n- [#2806](https://github.com/marko-js/marko/pull/2806) [`61ffaf5`](https://github.com/marko-js/marko/commit/61ffaf55d7ac056e9c263a14ceb62f3530d87ce7) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Rename all exposed runtime apis to be snake case for easier reading.\n\n## 6.0.60\n\n### Patch Changes\n\n- [#2801](https://github.com/marko-js/marko/pull/2801) [`eef940f`](https://github.com/marko-js/marko/commit/eef940f805548b3f1f96d544e0905638ac02af31) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with closure signals not being written due to incorrect binding sort order.\n\n## 6.0.59\n\n### Patch Changes\n\n- [#2795](https://github.com/marko-js/marko/pull/2795) [`22028ab`](https://github.com/marko-js/marko/commit/22028ab95f4aa24a668a3021e4647c8524e2a97a) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Allow override value for <id> tag\n\n## 6.0.58\n\n### Patch Changes\n\n- [#2797](https://github.com/marko-js/marko/pull/2797) [`803b187`](https://github.com/marko-js/marko/commit/803b187049fdb3e001f6ab0f2ffac26fb56c5428) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with injected change handlers from object patterns.\n\n- [#2797](https://github.com/marko-js/marko/pull/2797) [`803b187`](https://github.com/marko-js/marko/commit/803b187049fdb3e001f6ab0f2ffac26fb56c5428) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with implicit change handlers on input being treated as a derived instead of input.\n\n- [#2796](https://github.com/marko-js/marko/pull/2796) [`9e5a532`](https://github.com/marko-js/marko/commit/9e5a53259eec7bfd5139a0ac4fb8587be08c4470) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Add links to the docs in error messages\n\n## 6.0.57\n\n### Patch Changes\n\n- [#2793](https://github.com/marko-js/marko/pull/2793) [`663c3b1`](https://github.com/marko-js/marko/commit/663c3b14c7f8be6d8805adf3cd90fdd6511fab20) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with mutating tag variables within an intersection.\n\n- [#2793](https://github.com/marko-js/marko/pull/2793) [`d7271e7`](https://github.com/marko-js/marko/commit/d7271e7198008f3181c971e5f99c927e1296ef8d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Refactor function registration, ensure functions passed as return value are registered.\n\n## 6.0.56\n\n### Patch Changes\n\n- [#2789](https://github.com/marko-js/marko/pull/2789) [`5446f78`](https://github.com/marko-js/marko/commit/5446f784c6f40dc128427933ee011aea2778dace) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Reduce function registrations.\n\n## 6.0.55\n\n### Patch Changes\n\n- [#2786](https://github.com/marko-js/marko/pull/2786) [`df07bb6`](https://github.com/marko-js/marko/commit/df07bb6ec8928bec35de4711cd57ed4cfd038581) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure tags api runtime compat always walks after running class api init code.\n\n## 6.0.54\n\n### Patch Changes\n\n- [#2784](https://github.com/marko-js/marko/pull/2784) [`bbde0e8`](https://github.com/marko-js/marko/commit/bbde0e8415931c3fbb5432007dda196dfd5a9e3d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with compat layer scope serialized async.\n\n- [#2784](https://github.com/marko-js/marko/pull/2784) [`bbde0e8`](https://github.com/marko-js/marko/commit/bbde0e8415931c3fbb5432007dda196dfd5a9e3d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure interop class/tags init happens after all modules load.\n\n## 6.0.53\n\n### Patch Changes\n\n- [#2781](https://github.com/marko-js/marko/pull/2781) [`0265d6b`](https://github.com/marko-js/marko/commit/0265d6b67e7020447dc236f8aa682a39ae450914) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Fix walk strings when interopolating child walks, and optimized for simple dynamic tags\n\n- [#2783](https://github.com/marko-js/marko/pull/2783) [`506539c`](https://github.com/marko-js/marko/commit/506539cbb17ca1cc01fb52f387a5f572c6daf0da) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve class/tags interop serialization orchestration and flushing.\n\n## 6.0.52\n\n### Patch Changes\n\n- [#2779](https://github.com/marko-js/marko/pull/2779) [`157fbf5`](https://github.com/marko-js/marko/commit/157fbf58a1587dbd6ae02913a1212647dae3c78b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid serializing closures when it is known the section will not serialize.\n\n- [#2779](https://github.com/marko-js/marko/pull/2779) [`f388228`](https://github.com/marko-js/marko/commit/f388228adea301e8d115d862a889de2492fba4ea) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Misc tags api compat improvements.\n\n## 6.0.51\n\n### Patch Changes\n\n- [#2777](https://github.com/marko-js/marko/pull/2777) [`e8856c8`](https://github.com/marko-js/marko/commit/e8856c820990c0d441279503fdf4b709e3894f1a) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Improve dynamic tag content\n\n## 6.0.50\n\n### Patch Changes\n\n- [#2771](https://github.com/marko-js/marko/pull/2771) [`ff7a879`](https://github.com/marko-js/marko/commit/ff7a87935eef0f7f2bc52c8c483c049a2f38f144) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure deserialized functions always called after normal assignments in the serializer.\n\n## 6.0.49\n\n### Patch Changes\n\n- [#2769](https://github.com/marko-js/marko/pull/2769) [`7680160`](https://github.com/marko-js/marko/commit/76801609170a92baca0fe800ba273238abd3893e) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Runtime types improvements. Add CI validation to runtime types files.\n\n- [#2769](https://github.com/marko-js/marko/pull/2769) [`f139907`](https://github.com/marko-js/marko/commit/f1399079f977742ecf438ecef1a3227f6900d6bb) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Special case meta tags content attribute to not be processed as body content.\n\n## 6.0.48\n\n### Patch Changes\n\n- [#2766](https://github.com/marko-js/marko/pull/2766) [`9c66e30`](https://github.com/marko-js/marko/commit/9c66e30094c2628503c302b4e5e54c98f04818df) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix invalid compat import for prod builds.\n\n- [#2766](https://github.com/marko-js/marko/pull/2766) [`6027c1e`](https://github.com/marko-js/marko/commit/6027c1e9817879b7d08931f7cefa45d10719df39) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Tags api compat runtime fixes.\n\n- [#2766](https://github.com/marko-js/marko/pull/2766) [`0dd9c7c`](https://github.com/marko-js/marko/commit/0dd9c7c50ae7f1a2a6b6b1802abdd46297264a89) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add error messages when providing an invalid renderId or runtimeId.\n\n## 6.0.47\n\n### Patch Changes\n\n- [#2763](https://github.com/marko-js/marko/pull/2763) [`b7776cf`](https://github.com/marko-js/marko/commit/b7776cf76231a5cb1110ae779f91a75b0b9a9be7) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure runtime id is provided through init.\n\n## 6.0.46\n\n### Patch Changes\n\n- [#2760](https://github.com/marko-js/marko/pull/2760) [`6777f59`](https://github.com/marko-js/marko/commit/6777f59b3babe84bea5b3f157f6ccd04853b511f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix tags api types.\n\n## 6.0.45\n\n### Patch Changes\n\n- [#2758](https://github.com/marko-js/marko/pull/2758) [`5abf496`](https://github.com/marko-js/marko/commit/5abf496c6ce9cc5d2d0ade3e92015a14c51ba9b9) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix tags api types folder regression.\n\n## 6.0.44\n\n### Patch Changes\n\n- [#2756](https://github.com/marko-js/marko/pull/2756) [`46f1f90`](https://github.com/marko-js/marko/commit/46f1f9075043754aadec1175db5885f72c84e016) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve tags api compat.\n\n- Updated dependencies [[`46f1f90`](https://github.com/marko-js/marko/commit/46f1f9075043754aadec1175db5885f72c84e016)]:\n  - @marko/compiler@5.39.33\n\n## 6.0.43\n\n### Patch Changes\n\n- [#2753](https://github.com/marko-js/marko/pull/2753) [`9ba0cab`](https://github.com/marko-js/marko/commit/9ba0cab6474e7cd483b93992be5b8b5e7c8df0aa) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Update package dependencies.\n\n- [#2753](https://github.com/marko-js/marko/pull/2753) [`9ba0cab`](https://github.com/marko-js/marko/commit/9ba0cab6474e7cd483b93992be5b8b5e7c8df0aa) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve source location information for static statements.\n\n- Updated dependencies [[`9ba0cab`](https://github.com/marko-js/marko/commit/9ba0cab6474e7cd483b93992be5b8b5e7c8df0aa)]:\n  - @marko/compiler@5.39.32\n\n## 6.0.42\n\n### Patch Changes\n\n- [#2752](https://github.com/marko-js/marko/pull/2752) [`6a75d80`](https://github.com/marko-js/marko/commit/6a75d80655601e5dadfa4972455bea7d3b4aa28b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Treat optional call expressions as call expressions during analysis.\n\n- [#2752](https://github.com/marko-js/marko/pull/2752) [`cc069bc`](https://github.com/marko-js/marko/commit/cc069bcbd169b8d0a7dc9a81f559db1c2536cbf5) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with \"0\" being stripped from function calls by normalizer in cases with a literal 0.\n\n- Updated dependencies [[`9e0684f`](https://github.com/marko-js/marko/commit/9e0684f1171d7ab8364be719c4cf5b62df78126c)]:\n  - @marko/compiler@5.39.31\n\n## 6.0.41\n\n### Patch Changes\n\n- [#2745](https://github.com/marko-js/marko/pull/2745) [`742fca5`](https://github.com/marko-js/marko/commit/742fca55e359d3635d87d7b7d61aab4c83673f12) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Allow reading proposed tag variable value after writing.\n\n- [#2746](https://github.com/marko-js/marko/pull/2746) [`064f068`](https://github.com/marko-js/marko/commit/064f068fdb0e16f5dc2534dce5f5edb706a71df5) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Allow `content` attribute in native tags\n\n## 6.0.40\n\n### Patch Changes\n\n- [#2741](https://github.com/marko-js/marko/pull/2741) [`023768a`](https://github.com/marko-js/marko/commit/023768a87452b9983de92d29576a7372febb8585) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix incorrect walks string generated when static placeholder text used with adjacent text node.\n\n## 6.0.39\n\n### Patch Changes\n\n- [#2739](https://github.com/marko-js/marko/pull/2739) [`ecfafff`](https://github.com/marko-js/marko/commit/ecfafff13b73062afb056798ba61605ef52d410c) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Loosen return tag types.\n\n## 6.0.38\n\n### Patch Changes\n\n- [#2737](https://github.com/marko-js/marko/pull/2737) [`234d6f4`](https://github.com/marko-js/marko/commit/234d6f41be611f11a03a4e6361f7878408168868) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix types for return of mounted templates.\n\n## 6.0.37\n\n### Patch Changes\n\n- [#2734](https://github.com/marko-js/marko/pull/2734) [`b6ba333`](https://github.com/marko-js/marko/commit/b6ba333ee289ff27a549d1a2ea60b06338cb7ef5) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrade all deps. Fix support for [discard binding proposal](https://github.com/tc39/proposal-discard-binding).\n\n- Updated dependencies [[`b6ba333`](https://github.com/marko-js/marko/commit/b6ba333ee289ff27a549d1a2ea60b06338cb7ef5)]:\n  - @marko/compiler@5.39.29\n\n## 6.0.36\n\n### Patch Changes\n\n- [#2732](https://github.com/marko-js/marko/pull/2732) [`74332ef`](https://github.com/marko-js/marko/commit/74332ef7fedb1f49a39ef884f7421c45749330c9) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue reading trying to get the root function from a exported function.\n\n## 6.0.35\n\n### Patch Changes\n\n- [#2730](https://github.com/marko-js/marko/pull/2730) [`7c00601`](https://github.com/marko-js/marko/commit/7c00601356d3b41d0aa083688f90484c7e692a4d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with multi level rest destructuring tag vars.\n\n## 6.0.34\n\n### Patch Changes\n\n- [#2728](https://github.com/marko-js/marko/pull/2728) [`7dd3fda`](https://github.com/marko-js/marko/commit/7dd3fda1349d2e557997f060b85738f8670d760f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix support for rest patterns in tag variables not creating a new object.\n\n## 6.0.33\n\n### Patch Changes\n\n- [#2726](https://github.com/marko-js/marko/pull/2726) [`79cfb0f`](https://github.com/marko-js/marko/commit/79cfb0fbd1e093434cc1d74493a8cb755f5eef83) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix support for assigning to tag variables from a destructure.\n\n## 6.0.32\n\n### Patch Changes\n\n- [#2724](https://github.com/marko-js/marko/pull/2724) [`54c8d2b`](https://github.com/marko-js/marko/commit/54c8d2bb5613e6496372e8be1842f8ffad0b9acf) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where intersections were being added to an alias rather than the source binding.\n\n- [#2723](https://github.com/marko-js/marko/pull/2723) [`67562dc`](https://github.com/marko-js/marko/commit/67562dc3e63491d90f9168550f33a441e8ddafd0) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Expose programatic api for reading and writing to a manually mounted template (eg for use in testing).\n\n## 6.0.31\n\n### Patch Changes\n\n- [#2719](https://github.com/marko-js/marko/pull/2719) [`0c65dc4`](https://github.com/marko-js/marko/commit/0c65dc40f85757c40de0a68977c64c6cfc339b2e) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where custom tags were incorrectly outputting tag variables as a const in ssr.\n\n## 6.0.30\n\n### Patch Changes\n\n- [#2717](https://github.com/marko-js/marko/pull/2717) [`3519383`](https://github.com/marko-js/marko/commit/3519383a66d2459154e36b9f9abca4d7333d2145) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where lifecycle tag binding was pruned due to having no tracked references.\n\n## 6.0.29\n\n### Patch Changes\n\n- [#2715](https://github.com/marko-js/marko/pull/2715) [`e60a20f`](https://github.com/marko-js/marko/commit/e60a20f7e2dcbdb2dcfa45bc15f2901ffd0443c7) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Remove script tag definition that caused a conflict when in interop mode.\n\n- [#2715](https://github.com/marko-js/marko/pull/2715) [`dc178ce`](https://github.com/marko-js/marko/commit/dc178ced9f75aac923f3c5b043aa40d62e8d0f4d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Move translator loading logic back into shared utility. Moving this out caused a regression for tools that call `getRuntimeEntryFiles` or `taglib.buildLookup` directly.\n\n- Updated dependencies [[`e60a20f`](https://github.com/marko-js/marko/commit/e60a20f7e2dcbdb2dcfa45bc15f2901ffd0443c7), [`dc178ce`](https://github.com/marko-js/marko/commit/dc178ced9f75aac923f3c5b043aa40d62e8d0f4d)]:\n  - @marko/compiler@5.39.28\n\n## 6.0.28\n\n### Patch Changes\n\n- [#2713](https://github.com/marko-js/marko/pull/2713) [`2d11230`](https://github.com/marko-js/marko/commit/2d11230f012397681f63071ea9b33b246b45f9ad) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid using \"util\" module to improve browser compat of compiler.\n\n- Updated dependencies [[`2d11230`](https://github.com/marko-js/marko/commit/2d11230f012397681f63071ea9b33b246b45f9ad)]:\n  - @marko/compiler@5.39.27\n\n## 6.0.27\n\n### Patch Changes\n\n- [#2711](https://github.com/marko-js/marko/pull/2711) [`791cbb8`](https://github.com/marko-js/marko/commit/791cbb80dfc329610fc42b26bdf3649087f445b2) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix rendering the body tag in the interop translator with the tags api.\n\n## 6.0.26\n\n### Patch Changes\n\n- [#2707](https://github.com/marko-js/marko/pull/2707) [`89d0196`](https://github.com/marko-js/marko/commit/89d019678ecfb004af9b5892482d6af9d6178c4d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix false positive interop checks.\n\n- Updated dependencies [[`89d0196`](https://github.com/marko-js/marko/commit/89d019678ecfb004af9b5892482d6af9d6178c4d)]:\n  - @marko/compiler@5.39.26\n\n## 6.0.25\n\n### Patch Changes\n\n- [#2705](https://github.com/marko-js/marko/pull/2705) [`75eaa9d`](https://github.com/marko-js/marko/commit/75eaa9d833f6711b5b60757ef02ca987fc310b01) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid using process api in compiler to make it easier to load in environments without it.\n\n- Updated dependencies [[`75eaa9d`](https://github.com/marko-js/marko/commit/75eaa9d833f6711b5b60757ef02ca987fc310b01)]:\n  - @marko/compiler@5.39.25\n\n## 6.0.24\n\n### Patch Changes\n\n- [#2703](https://github.com/marko-js/marko/pull/2703) [`f67361b`](https://github.com/marko-js/marko/commit/f67361bc52191c9092833438868f09bb583252e1) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Load interop translator by default if installed.\n\n- Updated dependencies [[`f67361b`](https://github.com/marko-js/marko/commit/f67361bc52191c9092833438868f09bb583252e1)]:\n  - @marko/compiler@5.39.24\n\n## 6.0.23\n\n### Patch Changes\n\n- [#2701](https://github.com/marko-js/marko/pull/2701) [`8f68b6e`](https://github.com/marko-js/marko/commit/8f68b6efc960a3e59f59cbb49c549a248a03a79f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix regression where explicitly passing in `undefined` for translator was not loading the default translator.\n\n- Updated dependencies [[`8f68b6e`](https://github.com/marko-js/marko/commit/8f68b6efc960a3e59f59cbb49c549a248a03a79f)]:\n  - @marko/compiler@5.39.23\n\n## 6.0.22\n\n### Patch Changes\n\n- [#2699](https://github.com/marko-js/marko/pull/2699) [`dc3ee34`](https://github.com/marko-js/marko/commit/dc3ee348e9b95c12bf74d4212a82756d7ad90a18) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid node:crypto - use custom hash algo for component ids.\n\n- Updated dependencies [[`dc3ee34`](https://github.com/marko-js/marko/commit/dc3ee348e9b95c12bf74d4212a82756d7ad90a18)]:\n  - @marko/compiler@5.39.22\n\n## 6.0.21\n\n### Patch Changes\n\n- [#2693](https://github.com/marko-js/marko/pull/2693) [`9f99426`](https://github.com/marko-js/marko/commit/9f99426bf6389d7eebe28a70dcc81405772fda5a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Prefer namespace imports for inline css modules.\n\n- [#2696](https://github.com/marko-js/marko/pull/2696) [`eefa829`](https://github.com/marko-js/marko/commit/eefa829038b5bdd6edbbf95cef61e152e91ca9ec) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve internal module loading api. Ensure all taglib requires happen relative to project dir.\n\n- [#2692](https://github.com/marko-js/marko/pull/2692) [`c97be4e`](https://github.com/marko-js/marko/commit/c97be4e1476266ee4f4b43533e2a39f47b8ed710) Thanks [@paperclover](https://github.com/paperclover)! - Ensure errors are rethrown when rendering sync in SSR via `.toString`\n\n- Updated dependencies [[`eefa829`](https://github.com/marko-js/marko/commit/eefa829038b5bdd6edbbf95cef61e152e91ca9ec)]:\n  - @marko/compiler@5.39.21\n\n## 6.0.20\n\n### Patch Changes\n\n- [#2691](https://github.com/marko-js/marko/pull/2691) [`0758ae7`](https://github.com/marko-js/marko/commit/0758ae72e3a3da9fdf1dca37001aa6e8479655f9) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where scriptlets with comments were being printed without brackets when printing the marko ast.\n\n- [#2689](https://github.com/marko-js/marko/pull/2689) [`7185a53`](https://github.com/marko-js/marko/commit/7185a537b45c848706f091c3301f831e9da16589) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Lazily create scopes for effects that run without referencing anything from scope (scope not serialized).\n\n- Updated dependencies [[`0758ae7`](https://github.com/marko-js/marko/commit/0758ae72e3a3da9fdf1dca37001aa6e8479655f9)]:\n  - @marko/compiler@5.39.20\n\n## 6.0.19\n\n### Patch Changes\n\n- [#2687](https://github.com/marko-js/marko/pull/2687) [`219eae8`](https://github.com/marko-js/marko/commit/219eae83665709ae756304adedeed31d2d241c89) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Correct SVG types\n\n## 6.0.18\n\n### Patch Changes\n\n- [#2684](https://github.com/marko-js/marko/pull/2684) [`ef5960b`](https://github.com/marko-js/marko/commit/ef5960bbcca467627eaaaa501e0ce0b23211e590) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Add types for SVG tags\n\n- [#2685](https://github.com/marko-js/marko/pull/2685) [`00828b0`](https://github.com/marko-js/marko/commit/00828b092e2279f0bc48183b4b6eb8c8bda81890) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with html-style and html-script not being resumed when they only contain stateful placeholder content.\n\n## 6.0.17\n\n### Patch Changes\n\n- [#2681](https://github.com/marko-js/marko/pull/2681) [`dffd5ee`](https://github.com/marko-js/marko/commit/dffd5ee981e67a564568852305e41769b8c5e57b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with local binding reference in same scope\n\n## 6.0.16\n\n### Patch Changes\n\n- [#2680](https://github.com/marko-js/marko/pull/2680) [`692c9a2`](https://github.com/marko-js/marko/commit/692c9a25ac73011c7d2b440f2688bb2d24b7d566) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with closures over a for tag param inside attribute tags.\n\n- [#2678](https://github.com/marko-js/marko/pull/2678) [`ddf2b54`](https://github.com/marko-js/marko/commit/ddf2b54ed093eb47f2135cd780a57397f5f477e8) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Merge closure setup calls into setup functions.\n\n## 6.0.15\n\n### Patch Changes\n\n- [#2676](https://github.com/marko-js/marko/pull/2676) [`e906fa0`](https://github.com/marko-js/marko/commit/e906fa0945c125519cf4cd1e3d0c27a6c775f27c) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where section was missing in translate for a node that was already removed.\n\n## 6.0.14\n\n### Patch Changes\n\n- [#2674](https://github.com/marko-js/marko/pull/2674) [`8c0f463`](https://github.com/marko-js/marko/commit/8c0f46353f8555283e966ce683fe1f07df0d7ef8) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with hydrating a closure within a non stateful for loop.\n\n- [#2672](https://github.com/marko-js/marko/pull/2672) [`2da2ca0`](https://github.com/marko-js/marko/commit/2da2ca00770125725e257c667ed4c2a5f379f8d0) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Inline closures functions when single closure for section.\n\n## 6.0.13\n\n### Patch Changes\n\n- [#2670](https://github.com/marko-js/marko/pull/2670) [`42fff26`](https://github.com/marko-js/marko/commit/42fff26f85d311339835a05233ebf4767f2cd262) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Sort signals by their downstream values and intersections.\n\n## 6.0.12\n\n### Patch Changes\n\n- [#2668](https://github.com/marko-js/marko/pull/2668) [`2bd16d4`](https://github.com/marko-js/marko/commit/2bd16d4fd15092af9ae3e2742444166ca19a2842) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix misc issues with aliases and especially aliases which are within a closure.\n\n## 6.0.11\n\n### Patch Changes\n\n- [#2666](https://github.com/marko-js/marko/pull/2666) [`c5369b2`](https://github.com/marko-js/marko/commit/c5369b24dc2850fe6e4f4bdc7c5dcdccd169c886) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Refactor resume branch logic to be better treeshaken with esbuild.\n\n## 6.0.10\n\n### Patch Changes\n\n- [#2664](https://github.com/marko-js/marko/pull/2664) [`5f6d9b4`](https://github.com/marko-js/marko/commit/5f6d9b481d80218bdc143e2b2905b0391ec7da9f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Prefer node markers for stateless control flow.\n\n## 6.0.9\n\n### Patch Changes\n\n- [#2663](https://github.com/marko-js/marko/pull/2663) [`b56bb18`](https://github.com/marko-js/marko/commit/b56bb18c3aaee1951f83658773354c584593d72a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Allow branch resume logic to be better treeshaken.\n\n- [#2661](https://github.com/marko-js/marko/pull/2661) [`d4969a2`](https://github.com/marko-js/marko/commit/d4969a29b9fffcd73b2e1a159ac8b9a7a1557558) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Refactor serialize reasons to keep track of all source states.\n\n- [#2663](https://github.com/marko-js/marko/pull/2663) [`3e74c2f`](https://github.com/marko-js/marko/commit/3e74c2fec0a6a3ac6a2225ce54f40f288bbb96af) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add debug comments to serialize reasons.\n\n## 6.0.8\n\n### Patch Changes\n\n- [#2660](https://github.com/marko-js/marko/pull/2660) [`033ca6c`](https://github.com/marko-js/marko/commit/033ca6cb05b3c8d692dc507626d9ca54fabce64b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with class/style attributes that have a mix of dynamic and static properties/items.\n\n- [#2660](https://github.com/marko-js/marko/pull/2660) [`bf6a0a2`](https://github.com/marko-js/marko/commit/bf6a0a2dc8fcbd2befe067f47a57c8a9978d6d7d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Remove automatic appending of `px` to (some) style properties when an number was passed as the value.\n\n- [#2658](https://github.com/marko-js/marko/pull/2658) [`21049fa`](https://github.com/marko-js/marko/commit/21049fa6107de68a636e4d6567167e7c22cc0247) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with static html-script and html-style.\n\n## 6.0.7\n\n### Patch Changes\n\n- [#2656](https://github.com/marko-js/marko/pull/2656) [`9fd1eb4`](https://github.com/marko-js/marko/commit/9fd1eb4840d757e883b761d478f743499368fa7b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where lastEffect was not being cleared.\n\n- [#2656](https://github.com/marko-js/marko/pull/2656) [`cc140c2`](https://github.com/marko-js/marko/commit/cc140c21611b7fa006cc2ffa8b6d01d6aacfd3e1) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid serialize markers for await tags when static.\n\n## 6.0.6\n\n### Patch Changes\n\n- [#2654](https://github.com/marko-js/marko/pull/2654) [`42b380f`](https://github.com/marko-js/marko/commit/42b380f6bdcf6eab8deb22f254772ee43e3c91ea) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid using \"this\" in inline resume code to reduce inline code and bundle size.\n\n## 6.0.5\n\n### Patch Changes\n\n- [#2653](https://github.com/marko-js/marko/pull/2653) [`ad4998b`](https://github.com/marko-js/marko/commit/ad4998b1e62c5ae328ddb0d65f835ff02bee3864) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Optimize bundled size of resume runtime.\n\n- [#2652](https://github.com/marko-js/marko/pull/2652) [`83c44e4`](https://github.com/marko-js/marko/commit/83c44e4220c3490ef4b8a62e2feb84fdb4d0ba01) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Micro optimize scheduler bundle size.\n\n- [#2650](https://github.com/marko-js/marko/pull/2650) [`b8ddadb`](https://github.com/marko-js/marko/commit/b8ddadbe411209e972cc4ef61dd45391f309bb17) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Optimize statically known values for delimited attr helpers (class/style) for client side rendering.\n\n## 6.0.4\n\n### Patch Changes\n\n- [#2648](https://github.com/marko-js/marko/pull/2648) [`73399fe`](https://github.com/marko-js/marko/commit/73399fefe3478140b7a4feec437ed739ae306201) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Optimize to avoid for/if branch markers in some cases.\n\n- [#2648](https://github.com/marko-js/marko/pull/2648) [`cdf24a3`](https://github.com/marko-js/marko/commit/cdf24a3d0eee7718be0b176dea1c1434f3bd49ac) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Isolate branch serialization reasons from the branch itself.\n\n- [#2648](https://github.com/marko-js/marko/pull/2648) [`4cfdcb5`](https://github.com/marko-js/marko/commit/4cfdcb5ccaab5a15117cfff4c4d1ba09aecd7cc0) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix marker serialization for if and dynamic tag in some optimized cases.\n\n- [#2648](https://github.com/marko-js/marko/pull/2648) [`3b883d4`](https://github.com/marko-js/marko/commit/3b883d4d9729e5b13bb0e8d19850c087d0e8245f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where tags added from the translator were given lower priority than tags added by the core compiler.\n\n- Updated dependencies [[`3b883d4`](https://github.com/marko-js/marko/commit/3b883d4d9729e5b13bb0e8d19850c087d0e8245f)]:\n  - @marko/compiler@5.39.19\n\n## 6.0.3\n\n### Patch Changes\n\n- [#2647](https://github.com/marko-js/marko/pull/2647) [`b355d52`](https://github.com/marko-js/marko/commit/b355d52f26869b13faec1fa266240234ce5cd101) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix for loop marker serialization when marker has more serialize reasons than the branch.\n\n- [#2645](https://github.com/marko-js/marko/pull/2645) [`eec34f2`](https://github.com/marko-js/marko/commit/eec34f2d889ff540718660c1daa7e93dbf321659) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Optimize duplicate adjacent effect calls to reuse the effect id.\n\n## 6.0.2\n\n### Patch Changes\n\n- [#2643](https://github.com/marko-js/marko/pull/2643) [`2872b44`](https://github.com/marko-js/marko/commit/2872b44bf5fdd39ec70dc65c9e29abddbaefd63b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Move owner and closure serialization tracking to analyze phase.\n\n## 6.0.1\n\n### Patch Changes\n\n- [#2641](https://github.com/marko-js/marko/pull/2641) [`55f0e5b`](https://github.com/marko-js/marko/commit/55f0e5b3f1cc414626dbf4947956b14b8aae34ae) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid serializing markers for stateless define tag instances.\n\n- [#2641](https://github.com/marko-js/marko/pull/2641) [`6a09e6e`](https://github.com/marko-js/marko/commit/6a09e6ee4a32b56131843fad7a28442e7fc25aff) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix race condition when runtime loads before initial flush.\n  Refactor inline runtime to be slightly smaller.\n\n## 6.0.0\n\n### Major Changes\n\n- [#2640](https://github.com/marko-js/marko/pull/2640) [`5346eb9`](https://github.com/marko-js/marko/commit/5346eb92884e91a410de8e77f557c33861da89b0) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Release Tags API as 6.0.0.\n\n### Patch Changes\n\n- [#2638](https://github.com/marko-js/marko/pull/2638) [`8386d6e`](https://github.com/marko-js/marko/commit/8386d6edfb63c0b33ab1a44e00049a7b0ae57f15) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid id tag variable seen as stateful.\n\n## 0.3.86\n\n### Patch Changes\n\n- [#2636](https://github.com/marko-js/marko/pull/2636) [`ff1776f`](https://github.com/marko-js/marko/commit/ff1776f4ac97771da6a254620a0f95d6b2c8d3e9) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add better nullable check to node evaluation.\n\n- [#2636](https://github.com/marko-js/marko/pull/2636) [`04a9267`](https://github.com/marko-js/marko/commit/04a9267a6fc865da0f083e19116198e4a675b2b9) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Reduce serialized data and markers by providing input based serialize reasons from parent to child and guarding in the child.\n\n- [#2636](https://github.com/marko-js/marko/pull/2636) [`04a9267`](https://github.com/marko-js/marko/commit/04a9267a6fc865da0f083e19116198e4a675b2b9) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Analyze return tag values from child templates to determine if they are stateful.\n\n- Updated dependencies [[`dc748b4`](https://github.com/marko-js/marko/commit/dc748b4932c1db3f556d4fc898ab47911828b6b6)]:\n  - @marko/compiler@5.39.18\n\n## 0.3.85\n\n### Patch Changes\n\n- [#2634](https://github.com/marko-js/marko/pull/2634) [`fa702ed`](https://github.com/marko-js/marko/commit/fa702ed89878bcb96add7011f98e972130fa9292) Thanks [@rturnq](https://github.com/rturnq)! - Prevents error when readable stream is cancelled externally\n\n## 0.3.84\n\n### Patch Changes\n\n- [#2632](https://github.com/marko-js/marko/pull/2632) [`e722c2b`](https://github.com/marko-js/marko/commit/e722c2bde4c6ab5c75cb25cf0240b2420832af12) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve capturing of serialize reasons.\n\n## 0.3.83\n\n### Patch Changes\n\n- [#2631](https://github.com/marko-js/marko/pull/2631) [`588a8a6`](https://github.com/marko-js/marko/commit/588a8a6e0a9ebcf9f20791e54cf386974e30c78d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Switch generated UIDs to start with `# @marko/runtime-tags to avoid conflicts with babels generated UIDs.\n\n- [#2629](https://github.com/marko-js/marko/pull/2629) [`a0ff17e`](https://github.com/marko-js/marko/commit/a0ff17e3776a0da5fb6b325c7a0e56b89db7f04b) Thanks [@rturnq](https://github.com/rturnq)! - Fix dynamic tag end marker writen to wrong chunk\n\n## 0.3.82\n\n### Patch Changes\n\n- [#2627](https://github.com/marko-js/marko/pull/2627) [`9cba851`](https://github.com/marko-js/marko/commit/9cba851a4b58704a10fdfcad749d79e85be833db) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure when tag arguments are used for a dynamic tag with a single argument that it does not become treated the same as normal input. The normal input runtime will add the `content` as well as default to an empty object which was breaking some usages of tag arguments.\n\n- [#2627](https://github.com/marko-js/marko/pull/2627) [`540bbf6`](https://github.com/marko-js/marko/commit/540bbf648415bedbcf046467964dbe95cbb6a5c5) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where a single dynamic child was being marked as a single node.\n\n## 0.3.81\n\n### Patch Changes\n\n- [#2625](https://github.com/marko-js/marko/pull/2625) [`88a05bc`](https://github.com/marko-js/marko/commit/88a05bc093f5491a77b9d08950ed5ff2f0390df3) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix race condition with client side await tag.\n\n- [#2625](https://github.com/marko-js/marko/pull/2625) [`88a05bc`](https://github.com/marko-js/marko/commit/88a05bc093f5491a77b9d08950ed5ff2f0390df3) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where branches created in a detached await tag would be given the incorrect namespace.\n\n## 0.3.80\n\n### Patch Changes\n\n- [#2623](https://github.com/marko-js/marko/pull/2623) [`525345f`](https://github.com/marko-js/marko/commit/525345f4f71c53c00d7779a4c5d95fceaec3d33b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Refactor getFile and getProgram handling to avoid circular references between babel-utils and babel-plugin code.\n\n- Updated dependencies [[`525345f`](https://github.com/marko-js/marko/commit/525345f4f71c53c00d7779a4c5d95fceaec3d33b)]:\n  - @marko/compiler@5.39.17\n\n## 0.3.79\n\n### Patch Changes\n\n- [#2621](https://github.com/marko-js/marko/pull/2621) [`aad5a8d`](https://github.com/marko-js/marko/commit/aad5a8d9473d0add9093f84bd570af8d47e0a4db) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Expose getProgram and getFile apis from @marko/compiler/babel-utils. Exposing it directly from the compiler was causing an issue with the website.\n\n- Updated dependencies [[`aad5a8d`](https://github.com/marko-js/marko/commit/aad5a8d9473d0add9093f84bd570af8d47e0a4db)]:\n  - @marko/compiler@5.39.16\n\n## 0.3.78\n\n### Patch Changes\n\n- [#2619](https://github.com/marko-js/marko/pull/2619) [`4524bc4`](https://github.com/marko-js/marko/commit/4524bc459817d7d57530f2e900be80c460c98c2c) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with controlled input selection ranges.\n\n## 0.3.77\n\n### Patch Changes\n\n- [#2617](https://github.com/marko-js/marko/pull/2617) [`0d3bfeb`](https://github.com/marko-js/marko/commit/0d3bfeb3e3ac9a787fef639d41ed2100833e1791) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Inline callees directly into signal functions when possible.\n\n- [#2617](https://github.com/marko-js/marko/pull/2617) [`e6e6331`](https://github.com/marko-js/marko/commit/e6e633123af679775cc2463cdc936b7524f1a2fc) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Switch to custom UID helper.\n\n## 0.3.76\n\n### Patch Changes\n\n- [#2613](https://github.com/marko-js/marko/pull/2613) [`ac64e18`](https://github.com/marko-js/marko/commit/ac64e18ef6093a57ecd4ae26492c4ac28b2a80b7) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with parentNode reference when placeholder is displayed.\n\n## 0.3.75\n\n### Patch Changes\n\n- [#2611](https://github.com/marko-js/marko/pull/2611) [`a8e1392`](https://github.com/marko-js/marko/commit/a8e13925f55d29bdfdf1be7c4802dec3dc829613) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with some visitors not being called for html-\\* tags.\n\n## 0.3.74\n\n### Patch Changes\n\n- [#2609](https://github.com/marko-js/marko/pull/2609) [`edbbadd`](https://github.com/marko-js/marko/commit/edbbadde15bd4764a0ada7a80f3446c7fa2e5b1f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with ssr apis being incorrectly marked as pure.\n\n- [#2609](https://github.com/marko-js/marko/pull/2609) [`96b33d9`](https://github.com/marko-js/marko/commit/96b33d97dd2299b61a782bdbd543287f543feabd) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix support for `for await` statements within script tag.\n\n- [#2609](https://github.com/marko-js/marko/pull/2609) [`9fd96ac`](https://github.com/marko-js/marko/commit/9fd96acc81f06c3b4d14daa39406b2ae335b7ff5) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure walk/deserialized always called when serializer was flushed.\n\n- [#2609](https://github.com/marko-js/marko/pull/2609) [`9fd96ac`](https://github.com/marko-js/marko/commit/9fd96acc81f06c3b4d14daa39406b2ae335b7ff5) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid serializing already consumed iterators.\n\n## 0.3.73\n\n### Patch Changes\n\n- [#2607](https://github.com/marko-js/marko/pull/2607) [`7110193`](https://github.com/marko-js/marko/commit/7110193bffa170a662549265c33996691f17453e) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Refactor to use getProgram/getFile api from compiler.\n\n- Updated dependencies [[`7110193`](https://github.com/marko-js/marko/commit/7110193bffa170a662549265c33996691f17453e)]:\n  - @marko/compiler@5.39.15\n\n## 0.3.72\n\n### Patch Changes\n\n- [#2604](https://github.com/marko-js/marko/pull/2604) [`3e2ea77`](https://github.com/marko-js/marko/commit/3e2ea77799dc6a7ab37dc0dc503960f48ae2f689) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid using push/unshift container which causes unecessary revisits.\n\n- [#2604](https://github.com/marko-js/marko/pull/2604) [`e3d4485`](https://github.com/marko-js/marko/commit/e3d4485ab6eacf1ceb1234a4a2c81aa115ccc3a1) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid priting identifiers for value and closure parameters when the value is not referenced.\n\n- [#2606](https://github.com/marko-js/marko/pull/2606) [`bfa2bc1`](https://github.com/marko-js/marko/commit/bfa2bc1dbabd7a3e0e40557d1de64c202b47745e) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where placeholder was being re-created across await tag runs.\n\n- [#2604](https://github.com/marko-js/marko/pull/2604) [`70cb96e`](https://github.com/marko-js/marko/commit/70cb96eb8790434014eef368cea62a060522f231) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Expose better types for working with ssr and csr rendered template results.\n\n- [#2604](https://github.com/marko-js/marko/pull/2604) [`70cb96e`](https://github.com/marko-js/marko/commit/70cb96eb8790434014eef368cea62a060522f231) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure `toReadable` api on rendered ssr templates are text encoded.\n\n## 0.3.71\n\n### Patch Changes\n\n- [#2602](https://github.com/marko-js/marko/pull/2602) [`6a2560a`](https://github.com/marko-js/marko/commit/6a2560a3d921b379f27745f0e1feb0ebb5b3c981) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with render queue not consumed when replacing placeholder/catch.\n\n## 0.3.70\n\n### Patch Changes\n\n- [#2599](https://github.com/marko-js/marko/pull/2599) [`34006df`](https://github.com/marko-js/marko/commit/34006dfc502c30848c2de0aaa3b1276d153612c5) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Refactor serializer flushing to be decoupled from writing the rest of the script code.\n\n## 0.3.69\n\n### Patch Changes\n\n- [#2596](https://github.com/marko-js/marko/pull/2596) [`ff59411`](https://github.com/marko-js/marko/commit/ff59411349f03a4a0b7838848eafa2631c8058f2) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Refactor to move more logic (especially around serialization) into the html runtime.\n\n## 0.3.68\n\n### Patch Changes\n\n- [#2594](https://github.com/marko-js/marko/pull/2594) [`f55c857`](https://github.com/marko-js/marko/commit/f55c857ca8a077e99bee9f659a518b8f82df89ff) Thanks [@mlrawlings](https://github.com/mlrawlings)! - fix batched resolved async/try for ssr and resuming placeholders where the comment markers have different parents (due to implicit nodes added by the parser)\n\n## 0.3.67\n\n### Patch Changes\n\n- [#2591](https://github.com/marko-js/marko/pull/2591) [`67103c0`](https://github.com/marko-js/marko/commit/67103c084b98a6ba91de07f24fbe4b765a80e546) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Serialize scopes as arrays and use delta offsets for scope ids.\n\n## 0.3.66\n\n### Patch Changes\n\n- [#2589](https://github.com/marko-js/marko/pull/2589) [`5aad665`](https://github.com/marko-js/marko/commit/5aad6653a3f14d8d15a9ff103e9a38b25a3bd1ee) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid outputting some unnecessary scope destructures.\n\n- [#2589](https://github.com/marko-js/marko/pull/2589) [`765915a`](https://github.com/marko-js/marko/commit/765915ad423827bcdec6281413c59ecda173a80d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue when using with latest version of babel.\n\n- Updated dependencies [[`765915a`](https://github.com/marko-js/marko/commit/765915ad423827bcdec6281413c59ecda173a80d)]:\n  - @marko/compiler@5.39.14\n\n## 0.3.65\n\n### Patch Changes\n\n- [#2587](https://github.com/marko-js/marko/pull/2587) [`c217dd2`](https://github.com/marko-js/marko/commit/c217dd2d28a731f2243a4f5715ef1eef16067da9) Thanks [@mlrawlings](https://github.com/mlrawlings)! - resume fixes & perf\n\n## 0.3.64\n\n### Patch Changes\n\n- [#2583](https://github.com/marko-js/marko/pull/2583) [`4c9919f`](https://github.com/marko-js/marko/commit/4c9919f978e7fdd9c2d0d830c5ad3be4ae1e7cb5) Thanks [@mlrawlings](https://github.com/mlrawlings)! - Try effect batching\n\n## 0.3.63\n\n### Patch Changes\n\n- [#2581](https://github.com/marko-js/marko/pull/2581) [`4ea18b8`](https://github.com/marko-js/marko/commit/4ea18b8d4c831cf84cd2c1a458305fbf81085e9b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Optimize serializing FormData objects.\n\n- [#2581](https://github.com/marko-js/marko/pull/2581) [`ec3e55c`](https://github.com/marko-js/marko/commit/ec3e55ca89fb152af0bad6e02943a7eac582f2c8) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid serializing sparse arrays.\n\n- [#2581](https://github.com/marko-js/marko/pull/2581) [`0101b39`](https://github.com/marko-js/marko/commit/0101b39a6839b36e8cfc919baa9d139054634831) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Optimize serializing large maps.\n\n## 0.3.62\n\n### Patch Changes\n\n- [#2579](https://github.com/marko-js/marko/pull/2579) [`544ec95`](https://github.com/marko-js/marko/commit/544ec95dac5fa8ccddb8e2e81bfc28ac3756d949) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Optimize AccessorProp ids.\n\n## 0.3.61\n\n### Patch Changes\n\n- [#2577](https://github.com/marko-js/marko/pull/2577) [`33c3979`](https://github.com/marko-js/marko/commit/33c3979dcbdde3b849a4e8af186f52aaaac55e69) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve debug and production Accessor Chars output.\n\n## 0.3.60\n\n### Patch Changes\n\n- [#2573](https://github.com/marko-js/marko/pull/2573) [`1995c96`](https://github.com/marko-js/marko/commit/1995c96c9431339832b0980bfa091abf31b7f650) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Implement client side await tag.\n  (NOTE: there are still issues around effect ordering and cleanup)\n\n## 0.3.59\n\n### Patch Changes\n\n- [#2571](https://github.com/marko-js/marko/pull/2571) [`03339a3`](https://github.com/marko-js/marko/commit/03339a350e10428ea311d24310336d6436a86bc8) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Refactor resume api to avoid class.\n\n## 0.3.58\n\n### Patch Changes\n\n- [#2569](https://github.com/marko-js/marko/pull/2569) [`dcff748`](https://github.com/marko-js/marko/commit/dcff7484e99791b921a5f4b5ee7064f5404a027a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Refactor and optimize owner serialization in the compiler.\n\n- [#2569](https://github.com/marko-js/marko/pull/2569) [`0e93548`](https://github.com/marko-js/marko/commit/0e93548f67c29007f80a4b946c8a1cbbdfe3893b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Use invoked function helper in more places to avoid unnecessary deopts.\n\n## 0.3.57\n\n### Patch Changes\n\n- [#2566](https://github.com/marko-js/marko/pull/2566) [`4a2e2e3`](https://github.com/marko-js/marko/commit/4a2e2e3e997b4b35b813969924ffc65f6e6399b4) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where selection range was being applied to incompatible input nodes.\n\n- [#2568](https://github.com/marko-js/marko/pull/2568) [`7ebd673`](https://github.com/marko-js/marko/commit/7ebd673c969b83f24f378dca182b218e8230cfb8) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with html-script, html-style and html-comment causing extra placeholder bindings to be registered.\n\n## 0.3.56\n\n### Patch Changes\n\n- [#2564](https://github.com/marko-js/marko/pull/2564) [`cdb925b`](https://github.com/marko-js/marko/commit/cdb925b4dfe637391c219ae26a5ef5e64261ba3c) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where ssr compiled let tags were becoming consts and causing syntax errors.\n\n- [#2564](https://github.com/marko-js/marko/pull/2564) [`da0da1a`](https://github.com/marko-js/marko/commit/da0da1a4aa651aeb31f40a038ab4462c2c85f85e) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Optimize html-script and html-style to avoid creating body sections.\n\n## 0.3.55\n\n### Patch Changes\n\n- [#2562](https://github.com/marko-js/marko/pull/2562) [`d747ef7`](https://github.com/marko-js/marko/commit/d747ef7397d25b9f55e24e3b0f989460a4a7fb8b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue referencing unbound walker code.\n\n## 0.3.54\n\n### Patch Changes\n\n- [#2560](https://github.com/marko-js/marko/pull/2560) [`d0fda30`](https://github.com/marko-js/marko/commit/d0fda30c6b1819e360b92c3c852dea7ce52a6a1d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where serialized render data was not being properly synchronized with runtime render data.\n\n## 0.3.53\n\n### Patch Changes\n\n- [#2557](https://github.com/marko-js/marko/pull/2557) [`7d6ea47`](https://github.com/marko-js/marko/commit/7d6ea472de8ff14cd88be3c632b55e49d3b65dfb) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Dynamic attrs on trailing tags\n\n## 0.3.52\n\n### Patch Changes\n\n- [#2554](https://github.com/marko-js/marko/pull/2554) [`89e310e`](https://github.com/marko-js/marko/commit/89e310e9a2355e38fc9779ec2006dadbb553c672) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid getters for renderer args and rename to params.\n\n- [#2554](https://github.com/marko-js/marko/pull/2554) [`f352b09`](https://github.com/marko-js/marko/commit/f352b0994629cf67918bb18929202edbe0b708f6) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Refactor dynamic closures to avoid registration.\n\n- [#2554](https://github.com/marko-js/marko/pull/2554) [`e19cfdd`](https://github.com/marko-js/marko/commit/e19cfddd48178fc601d67f718072d2dcb1d8c736) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure closures always called after setup.\n\n## 0.3.51\n\n### Patch Changes\n\n- [#2551](https://github.com/marko-js/marko/pull/2551) [`2b1ff5e`](https://github.com/marko-js/marko/commit/2b1ff5ea338a3a76dac821a30aa8f5bcfd291e92) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with args not being queued with setup.\n\n## 0.3.50\n\n### Patch Changes\n\n- [#2549](https://github.com/marko-js/marko/pull/2549) [`7629cba`](https://github.com/marko-js/marko/commit/7629cbae66145873960082ff1e4dcab39ac9163d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix type for script tag.\n\n- [#2549](https://github.com/marko-js/marko/pull/2549) [`7629cba`](https://github.com/marko-js/marko/commit/7629cbae66145873960082ff1e4dcab39ac9163d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Reduce bundle size by inlining (shorter) walks string trimming logic.\n\n- [#2549](https://github.com/marko-js/marko/pull/2549) [`7629cba`](https://github.com/marko-js/marko/commit/7629cbae66145873960082ff1e4dcab39ac9163d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Remove unecessary tracking of branch depth.\n\n## 0.3.49\n\n### Patch Changes\n\n- [#2547](https://github.com/marko-js/marko/pull/2547) [`1fb32b8`](https://github.com/marko-js/marko/commit/1fb32b89d1b06a97c2b247a0f186f700942c47c3) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with for/if telling the parent to avoid serializing a marker when it was necessary.\n\n- [#2547](https://github.com/marko-js/marko/pull/2547) [`ce86dec`](https://github.com/marko-js/marko/commit/ce86dec45c2f3ee2ab8701eec7df6fcd58f559d3) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where branches with no render content were not having child scopes initialized properly.\n\n## 0.3.48\n\n### Patch Changes\n\n- [#2545](https://github.com/marko-js/marko/pull/2545) [`be54ab2`](https://github.com/marko-js/marko/commit/be54ab200f664efd7e9351f845d477c6b77e90f5) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Deoptimize serializer assignments after 100 assignments to the same reference. This avoids an issue where 1192 assignments in a chain caused a Maximum callstack error in chrome.\n\n## 0.3.47\n\n### Patch Changes\n\n- [#2544](https://github.com/marko-js/marko/pull/2544) [`ff2f413`](https://github.com/marko-js/marko/commit/ff2f413422f297fa4bdbfe32984e28883958db0e) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Use unique scope id counter per $global instance.\n\n- [#2540](https://github.com/marko-js/marko/pull/2540) [`b05c1f7`](https://github.com/marko-js/marko/commit/b05c1f7f3a1e97f964c7ebff051b7b06e12d02c3) Thanks [@mlrawlings](https://github.com/mlrawlings)! - refactor signals to no longer mark but rely soley on queueing for proper execution order\n\n- [#2544](https://github.com/marko-js/marko/pull/2544) [`08e0d24`](https://github.com/marko-js/marko/commit/08e0d245a604380120de16db9e7806a1ccaf459d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid registering body content when known downstream usage is not serialized.\n\n- [#2534](https://github.com/marko-js/marko/pull/2534) [`cfca41a`](https://github.com/marko-js/marko/commit/cfca41ac8c571d1fecb3b889df5eead1dfe06130) Thanks [@rturnq](https://github.com/rturnq)! - Add support for tag varaible hoisting\n\n- [#2544](https://github.com/marko-js/marko/pull/2544) [`4c87458`](https://github.com/marko-js/marko/commit/4c87458d88bcf80b194234eaed593375f97cd5bf) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Minor queue perf improvements.\n\n- [#2544](https://github.com/marko-js/marko/pull/2544) [`53de7a0`](https://github.com/marko-js/marko/commit/53de7a0b1e80a804e4a4348e8bc5fc0bb0c0c02a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid \"params\" on templates, go straight to providing \"input\".\n\n- Updated dependencies [[`cfca41a`](https://github.com/marko-js/marko/commit/cfca41ac8c571d1fecb3b889df5eead1dfe06130)]:\n  - @marko/compiler@5.39.13\n\n## 0.3.46\n\n### Patch Changes\n\n- [#2537](https://github.com/marko-js/marko/pull/2537) [`c4fd6e7`](https://github.com/marko-js/marko/commit/c4fd6e767036bad962f0471a6460d31bcff44a37) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Rename renderer apis to content and create shorthand api for creating registered contents.\n\n- [#2537](https://github.com/marko-js/marko/pull/2537) [`ae24290`](https://github.com/marko-js/marko/commit/ae24290c4c9f9807d70d398e661bb510fb905e09) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Consolidate create branch logic, optimizing code size and creating branches with only side effects and no template code.\n\n## 0.3.45\n\n### Patch Changes\n\n- [#2535](https://github.com/marko-js/marko/pull/2535) [`43522b7`](https://github.com/marko-js/marko/commit/43522b78c3a84090f5f039a7ef2d0935541f81ee) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid creating intersections for closures which are now handled via the queue.\n\n## 0.3.44\n\n### Patch Changes\n\n- [#2532](https://github.com/marko-js/marko/pull/2532) [`5c8c549`](https://github.com/marko-js/marko/commit/5c8c549a324eedfed800a70b44de35bde3de7899) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Unify CSR dynamic tag runtime to avoid separate calls for attrs vs tagName.\n\n- [#2531](https://github.com/marko-js/marko/pull/2531) [`6065ff2`](https://github.com/marko-js/marko/commit/6065ff2563335f622376bca1dafc94ed6e0b2aa6) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure & is escaped for server side attributes to improve consistency with csr.\n\n## 0.3.43\n\n### Patch Changes\n\n- [#2523](https://github.com/marko-js/marko/pull/2523) [`69581ba`](https://github.com/marko-js/marko/commit/69581baff368d6a17a980a1b746d8a96a6a9afbc) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve serialization errors.\n\n- [#2523](https://github.com/marko-js/marko/pull/2523) [`69581ba`](https://github.com/marko-js/marko/commit/69581baff368d6a17a980a1b746d8a96a6a9afbc) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Refactor scope serialization compiler apis.\n\n## 0.3.42\n\n### Patch Changes\n\n- [#2520](https://github.com/marko-js/marko/pull/2520) [`bc3189e`](https://github.com/marko-js/marko/commit/bc3189e97ecf9a3fc9d4933428d21edae68a86e6) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Restore original native tag internal state before calling change handlers.\n\n- [#2522](https://github.com/marko-js/marko/pull/2522) [`2687edc`](https://github.com/marko-js/marko/commit/2687edc5a285bc32f1c2e55d290fa888c3c2b906) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue serializing attribute tag iterables.\n\n- [#2522](https://github.com/marko-js/marko/pull/2522) [`2687edc`](https://github.com/marko-js/marko/commit/2687edc5a285bc32f1c2e55d290fa888c3c2b906) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve non dimensional css property regexp (minor improvement to bundle size).\n\n## 0.3.41\n\n### Patch Changes\n\n- [#2518](https://github.com/marko-js/marko/pull/2518) [`ad31acf`](https://github.com/marko-js/marko/commit/ad31acf7ec4743d09248c31fbeaf1134da006d26) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issues related to controlled checkedValue input radios.\n\n## 0.3.40\n\n### Patch Changes\n\n- [#2515](https://github.com/marko-js/marko/pull/2515) [`baedba4`](https://github.com/marko-js/marko/commit/baedba443938085da5945ae88882715dd986f13d) Thanks [@rturnq](https://github.com/rturnq)! - De-opt to dynamic tag for all tag names which are not string literals or custom tag identifiers to fix DOM compilation of complex expressions.\n\n## 0.3.39\n\n### Patch Changes\n\n- [#2511](https://github.com/marko-js/marko/pull/2511) [`993e6e0`](https://github.com/marko-js/marko/commit/993e6e08eeb13ff455bca98aabb61c5fec161b04) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure upstream aliases included in stateful ref checks.\n\n## 0.3.38\n\n### Patch Changes\n\n- [#2508](https://github.com/marko-js/marko/pull/2508) [`bd59c96`](https://github.com/marko-js/marko/commit/bd59c96a0d8d96d4e98d55ba33a0def98f7bc507) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Refactor if client side runtime to avoid registraion and employ the same optimizations as `for`.\n\n## 0.3.37\n\n### Patch Changes\n\n- [#2504](https://github.com/marko-js/marko/pull/2504) [`edcb4e9`](https://github.com/marko-js/marko/commit/edcb4e9d0ecbf9d25ab214d1732c5dcf26be21d0) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with a for loop with a single text node inside, and before.\n\n- [#2507](https://github.com/marko-js/marko/pull/2507) [`9d1ea70`](https://github.com/marko-js/marko/commit/9d1ea70068b502a88db31f39c531cef285aa3b59) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with for/if html scope information being output to the wrong block.\n\n- [#2506](https://github.com/marko-js/marko/pull/2506) [`e69c13e`](https://github.com/marko-js/marko/commit/e69c13eabffded618787df93e678d7724ff56bc8) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - When using the bound attribute syntax, prefer to create a simple shared function that assigns to the bound variable.\n\n- [#2507](https://github.com/marko-js/marko/pull/2507) [`9d1ea70`](https://github.com/marko-js/marko/commit/9d1ea70068b502a88db31f39c531cef285aa3b59) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Handle mutations to select options when in controlled mode.\n\n- [#2506](https://github.com/marko-js/marko/pull/2506) [`14ffe18`](https://github.com/marko-js/marko/commit/14ffe18ddf76e4d6108e4eb8218b26f552ee3866) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where function registry ids were not unique.\n\n## 0.3.36\n\n### Patch Changes\n\n- [#2502](https://github.com/marko-js/marko/pull/2502) [`a072aba`](https://github.com/marko-js/marko/commit/a072abac6d21d70f6dde0e23fd00681736fb9134) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Update list of pure functions.\n\n## 0.3.35\n\n### Patch Changes\n\n- [#2500](https://github.com/marko-js/marko/pull/2500) [`e8f7931`](https://github.com/marko-js/marko/commit/e8f793150a922ef78b39aa5a087e6d3f34670965) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid serializing child scope references unless using a tag var or providing stateful attrs.\n\n- [#2500](https://github.com/marko-js/marko/pull/2500) [`e8f7931`](https://github.com/marko-js/marko/commit/e8f793150a922ef78b39aa5a087e6d3f34670965) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix compilation error when passing input to a template which doesn't use input at all.\n\n## 0.3.34\n\n### Patch Changes\n\n- [#2498](https://github.com/marko-js/marko/pull/2498) [`48a9cfb`](https://github.com/marko-js/marko/commit/48a9cfba5021e72ee54270731359e1bc9c9b1121) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure function analysis is applied to the root function only and not closures.\n\n- [#2498](https://github.com/marko-js/marko/pull/2498) [`48a9cfb`](https://github.com/marko-js/marko/commit/48a9cfba5021e72ee54270731359e1bc9c9b1121) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid hoisting functions under a call/new expression.\n\n## 0.3.33\n\n### Patch Changes\n\n- [#2496](https://github.com/marko-js/marko/pull/2496) [`536081d`](https://github.com/marko-js/marko/commit/536081d43069e78ecf198af93f66fa000218e13e) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix resuming tag vars.\n\n## 0.3.32\n\n### Patch Changes\n\n- [#2494](https://github.com/marko-js/marko/pull/2494) [`7101f5b`](https://github.com/marko-js/marko/commit/7101f5ba83d2ca097187c3a381959f42a885cdf7) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with owner scope for assignments to closures not being serialized.\n\n## 0.3.31\n\n### Patch Changes\n\n- [#2492](https://github.com/marko-js/marko/pull/2492) [`64e53bb`](https://github.com/marko-js/marko/commit/64e53bb979c133a03999ceb18e6f277a0f6549d4) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with generating code for static repeated attribute tags.\n\n## 0.3.30\n\n### Patch Changes\n\n- [#2490](https://github.com/marko-js/marko/pull/2490) [`07f97f1`](https://github.com/marko-js/marko/commit/07f97f187a320d6476fb77eef520a2d2f6ca2a73) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where details and dialog elements were incorrectly running change handlers when the value had not changed.\n\n## 0.3.29\n\n### Patch Changes\n\n- [#2488](https://github.com/marko-js/marko/pull/2488) [`c6f9927`](https://github.com/marko-js/marko/commit/c6f99275327489709b4934326075586baee5ad39) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Support namespaced tags (svg/math).\n\n## 0.3.28\n\n### Patch Changes\n\n- [#2485](https://github.com/marko-js/marko/pull/2485) [`09c0558`](https://github.com/marko-js/marko/commit/09c0558a1b26df2d828d56bd853f885a17683e38) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where streams that had aborted but then finished were swallowing the abort error.\n\n- [#2485](https://github.com/marko-js/marko/pull/2485) [`09c0558`](https://github.com/marko-js/marko/commit/09c0558a1b26df2d828d56bd853f885a17683e38) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add errors with debug info when attempting to serialize a non serializable value.\n\n- [#2485](https://github.com/marko-js/marko/pull/2485) [`09c0558`](https://github.com/marko-js/marko/commit/09c0558a1b26df2d828d56bd853f885a17683e38) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure Marko 5 renderBodies are serialized properly across the compat layer.\n\n- Updated dependencies [[`09c0558`](https://github.com/marko-js/marko/commit/09c0558a1b26df2d828d56bd853f885a17683e38)]:\n  - @marko/compiler@5.39.12\n\n## 0.3.27\n\n### Patch Changes\n\n- [#2483](https://github.com/marko-js/marko/pull/2483) [`0135f5b`](https://github.com/marko-js/marko/commit/0135f5b55495aef81f081db1a909d4be153bf3e4) Thanks [@rturnq](https://github.com/rturnq)! - Branch end nodes could end up being shared in resume, insert new branch after previous end node\n\n- [#2480](https://github.com/marko-js/marko/pull/2480) [`622d328`](https://github.com/marko-js/marko/commit/622d328858bc857e8622d0b14105726641ab66d5) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Minor refactoring and cleanup.\n\n- [#2482](https://github.com/marko-js/marko/pull/2482) [`99c7428`](https://github.com/marko-js/marko/commit/99c7428302af89fd7b440ab41856d67311fc045e) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Ignore events during the render phase\n\n## 0.3.26\n\n### Patch Changes\n\n- [#2479](https://github.com/marko-js/marko/pull/2479) [`87fdb82`](https://github.com/marko-js/marko/commit/87fdb82645ddefe9953c467d476fc6344ccd4d1d) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Fix nested branch scope signals\n\n- [#2476](https://github.com/marko-js/marko/pull/2476) [`36eab94`](https://github.com/marko-js/marko/commit/36eab947c870b98135a1e391acd56b6687def4f2) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Start tag/scope/reorder ids at 1.\n\n- [#2476](https://github.com/marko-js/marko/pull/2476) [`f481b92`](https://github.com/marko-js/marko/commit/f481b92002f8faa44537a5e8ce45667f488e06e2) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Refactor render queue sorting.\n\n- [#2478](https://github.com/marko-js/marko/pull/2478) [`033332e`](https://github.com/marko-js/marko/commit/033332ed5fd7afbe2709cc2be91367c06dc4e531) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Minor refactoring.\n\n## 0.3.25\n\n### Patch Changes\n\n- [#2474](https://github.com/marko-js/marko/pull/2474) [`52d26c3`](https://github.com/marko-js/marko/commit/52d26c36c8cb8340c36a4ea42f816084ecb47a74) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with incorrect render sorting for newly created scopes.\n\n## 0.3.24\n\n### Patch Changes\n\n- [#2472](https://github.com/marko-js/marko/pull/2472) [`4608c46`](https://github.com/marko-js/marko/commit/4608c4689cad67a55719f5a5e57fd1845c69d68c) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Switch back to HTMLTemplateElement for parsing client side html content to avoid automatic tag insertions from the document range api.\n\n## 0.3.23\n\n### Patch Changes\n\n- [#2470](https://github.com/marko-js/marko/pull/2470) [`218c436`](https://github.com/marko-js/marko/commit/218c43674e478062cdbc0fcbaef0dc13cd79107f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where code within a control flow could execute after the control flow was removed.\n\n- [#2469](https://github.com/marko-js/marko/pull/2469) [`f99d363`](https://github.com/marko-js/marko/commit/f99d363cd0597be495d486f48395192842da7262) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Edit TypeScript names for event handlers\n\n- [#2468](https://github.com/marko-js/marko/pull/2468) [`2762924`](https://github.com/marko-js/marko/commit/276292455b16bbbd2869f465b7af5f891f88fa6d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue concatinating effects in html writer.\n\n- [#2470](https://github.com/marko-js/marko/pull/2470) [`218c436`](https://github.com/marko-js/marko/commit/218c43674e478062cdbc0fcbaef0dc13cd79107f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve tags / class api interop layer for destroyed tags.\n\n- Updated dependencies [[`218c436`](https://github.com/marko-js/marko/commit/218c43674e478062cdbc0fcbaef0dc13cd79107f)]:\n  - @marko/compiler@5.39.11\n\n## 0.3.22\n\n### Patch Changes\n\n- [#2466](https://github.com/marko-js/marko/pull/2466) [`34e85cc`](https://github.com/marko-js/marko/commit/34e85ccd4f1944372ac6ed0a0911fdd9be2eac6c) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure external style files are imported for tags api component.\n\n## 0.3.21\n\n### Patch Changes\n\n- [#2464](https://github.com/marko-js/marko/pull/2464) [`68b904f`](https://github.com/marko-js/marko/commit/68b904f6a1751b1648421447abb8b438af3c22b3) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue reading custom tag var closures.\n\n## 0.3.20\n\n### Patch Changes\n\n- [#2460](https://github.com/marko-js/marko/pull/2460) [`d9cc4e7`](https://github.com/marko-js/marko/commit/d9cc4e723abb53a5d5a6c090935facd7745146c2) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with attempting to hoist a member expression that was a computed identifier.\n\n- [#2461](https://github.com/marko-js/marko/pull/2461) [`e6ffdbe`](https://github.com/marko-js/marko/commit/e6ffdbe6781385bd3ae7cfab9e16d349eda7cb0c) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Fix adjacent bound values\n\n- [#2459](https://github.com/marko-js/marko/pull/2459) [`1722472`](https://github.com/marko-js/marko/commit/172247289a195c1e3fd43ff1bbcb548ed53ff3cf) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix element references when used as the argument of a call expression.\n\n## 0.3.19\n\n### Patch Changes\n\n- [#2458](https://github.com/marko-js/marko/pull/2458) [`76b3083`](https://github.com/marko-js/marko/commit/76b3083a06741f2a636cf3c21fb53fd7c22290eb) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add basic ssr try tag.\n\n- [#2456](https://github.com/marko-js/marko/pull/2456) [`5cc3648`](https://github.com/marko-js/marko/commit/5cc3648eb5cc20df621c3a89e31ae84014d0a078) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix async runtime placeholder duplication and race condition.\n\n- [#2458](https://github.com/marko-js/marko/pull/2458) [`491413d`](https://github.com/marko-js/marko/commit/491413d2ec93ae136c6417dd19b339f7f1cd2afd) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add await tag ssr.\n\n## 0.3.18\n\n### Patch Changes\n\n- [#2451](https://github.com/marko-js/marko/pull/2451) [`602eaad`](https://github.com/marko-js/marko/commit/602eaad0a48047b2fb678b8e77d6b345a0930b8d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid swallowing errors when resolved paths in marko.json files could not be resolve (now leaves the value as is, previously would ignore the path).\n\n- [#2449](https://github.com/marko-js/marko/pull/2449) [`6cf4978`](https://github.com/marko-js/marko/commit/6cf4978d765914e1d1c3ee62a3c691ce20c4903b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Support aggregate errors when final error is a HTMLJS parser error.\n\n- Updated dependencies [[`602eaad`](https://github.com/marko-js/marko/commit/602eaad0a48047b2fb678b8e77d6b345a0930b8d), [`6cf4978`](https://github.com/marko-js/marko/commit/6cf4978d765914e1d1c3ee62a3c691ce20c4903b)]:\n  - @marko/compiler@5.39.9\n\n## 0.3.17\n\n### Patch Changes\n\n- [#2445](https://github.com/marko-js/marko/pull/2445) [`b12d7a9`](https://github.com/marko-js/marko/commit/b12d7a9b76dd9fca89ed717b8491b08d5e927fe0) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add engines field to package.json\n\n- Updated dependencies [[`b12d7a9`](https://github.com/marko-js/marko/commit/b12d7a9b76dd9fca89ed717b8491b08d5e927fe0)]:\n  - @marko/compiler@5.39.8\n\n## 0.3.16\n\n### Patch Changes\n\n- [#2443](https://github.com/marko-js/marko/pull/2443) [`c0232bc`](https://github.com/marko-js/marko/commit/c0232bc85edd86fa7ad68dede34af3fbfe892052) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add missing PURE comment to dom runtime.\n\n## 0.3.15\n\n### Patch Changes\n\n- [#2441](https://github.com/marko-js/marko/pull/2441) [`cfd6906`](https://github.com/marko-js/marko/commit/cfd6906752eea9ea1b8f274668baf324ee186890) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Release Marko 6 beta with `next` prefix for easier semver targeting.\n\n## 0.3.14\n\n### Patch Changes\n\n- [#2438](https://github.com/marko-js/marko/pull/2438) [`4b6c613`](https://github.com/marko-js/marko/commit/4b6c6135badad6db7e4a8f0f59fb005ed66b04fa) Thanks [@mlrawlings](https://github.com/mlrawlings)! - use tags/ instead of components/ for runtime-tags\n\n- [#2439](https://github.com/marko-js/marko/pull/2439) [`8ebe566`](https://github.com/marko-js/marko/commit/8ebe566854179ad8cf8cfca7858d607ab208c01e) Thanks [@mlrawlings](https://github.com/mlrawlings)! - fix: remove duplicate imports of compat runtime\n\n- [#2436](https://github.com/marko-js/marko/pull/2436) [`a364d1e`](https://github.com/marko-js/marko/commit/a364d1ebd85d0a71c49018c614ca9424fc7e5976) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Rename renderBody to content for tags api.\n\n- Updated dependencies [[`4b6c613`](https://github.com/marko-js/marko/commit/4b6c6135badad6db7e4a8f0f59fb005ed66b04fa), [`8ebe566`](https://github.com/marko-js/marko/commit/8ebe566854179ad8cf8cfca7858d607ab208c01e)]:\n  - @marko/compiler@5.39.7\n\n## 0.3.13\n\n### Patch Changes\n\n- [#2434](https://github.com/marko-js/marko/pull/2434) [`6a235a8`](https://github.com/marko-js/marko/commit/6a235a88813cd45a8704060e4fac3ed82c2f3437) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve registry id normalization.\n\n- Updated dependencies [[`6a235a8`](https://github.com/marko-js/marko/commit/6a235a88813cd45a8704060e4fac3ed82c2f3437)]:\n  - @marko/compiler@5.39.6\n\n## 0.3.12\n\n### Patch Changes\n\n- [#2432](https://github.com/marko-js/marko/pull/2432) [`6078d47`](https://github.com/marko-js/marko/commit/6078d474c2285df8a22705d0d4edeccb7a4bd204) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix exported types.\n\n## 0.3.11\n\n### Patch Changes\n\n- [#2429](https://github.com/marko-js/marko/pull/2429) [`f3416e1`](https://github.com/marko-js/marko/commit/f3416e1d9352892e8a603d7196cc685c2f88fe26) Thanks [@mlrawlings](https://github.com/mlrawlings)! - fix controllable details toggle loop\n\n## 0.3.10\n\n### Patch Changes\n\n- [#2428](https://github.com/marko-js/marko/pull/2428) [`22cc604`](https://github.com/marko-js/marko/commit/22cc604e38ffc957195349c710cae340dd1a7825) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add tags api runtime types.\n\n- [#2428](https://github.com/marko-js/marko/pull/2428) [`e72fa84`](https://github.com/marko-js/marko/commit/e72fa84a7293bd348a39e20b011228dfd937322f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrade dependencies.\n\n## 0.3.9\n\n### Patch Changes\n\n- [#2426](https://github.com/marko-js/marko/pull/2426) [`2142dfd`](https://github.com/marko-js/marko/commit/2142dfd05d6b6ebc5f55883ca13a15847cdb07fa) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Use statement parsing for script tag to improve sourcemap accuracy.\n\n- [#2426](https://github.com/marko-js/marko/pull/2426) [`2142dfd`](https://github.com/marko-js/marko/commit/2142dfd05d6b6ebc5f55883ca13a15847cdb07fa) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where negative sourcemap offets leaning to the previous line were outputting incorrect values.\n\n## 0.3.8\n\n### Patch Changes\n\n- [#2424](https://github.com/marko-js/marko/pull/2424) [`0c6fea2`](https://github.com/marko-js/marko/commit/0c6fea2f0f8ae8024a3dd8dff46d08805b779a08) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix tag-types not being exposed.\n\n## 0.3.7\n\n### Patch Changes\n\n- [`e60bd4f`](https://github.com/marko-js/marko/commit/e60bd4fd25ccee475dad49195fca64024a6164bf) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix incorrect filepath for marko babel transform.\n\n## 0.3.6\n\n### Patch Changes\n\n- [#2420](https://github.com/marko-js/marko/pull/2420) [`4a980fe`](https://github.com/marko-js/marko/commit/4a980fe444299f095f0f423767d5340e15c33682) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix publish alias issue.\n\n## 0.3.5\n\n### Patch Changes\n\n- [#2418](https://github.com/marko-js/marko/pull/2418) [`00e7392`](https://github.com/marko-js/marko/commit/00e7392361a17f49345400d53644bcee13e9b375) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue when parsing embedded script code with negative offset locations.\n\n## 0.3.4\n\n### Patch Changes\n\n- [#2416](https://github.com/marko-js/marko/pull/2416) [`619c87f`](https://github.com/marko-js/marko/commit/619c87faeebc31f6885bbb868fc89bab8a90ebea) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix package json repository config.\n\n## 0.3.3\n\n### Patch Changes\n\n- [#2414](https://github.com/marko-js/marko/pull/2414) [`58c8886`](https://github.com/marko-js/marko/commit/58c8886cb99bfbaa763f4eecfe636b4d374f6a68) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Attempt 2 at release alias via github action.\n\n## 0.3.2\n\n### Patch Changes\n\n- [#2412](https://github.com/marko-js/marko/pull/2412) [`3e660d8`](https://github.com/marko-js/marko/commit/3e660d8602b77d4c657558e913a19f4f7b43e65b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Attempt 1 to alias tags api to marko@6\n\n## 0.3.1\n\n### Patch Changes\n\n- [#2410](https://github.com/marko-js/marko/pull/2410) [`2f68463`](https://github.com/marko-js/marko/commit/2f6846382a7f6ad5de10a0978a69a16fa37c6dc0) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Create marko@6 publish alias scripts.\n\n- [#2410](https://github.com/marko-js/marko/pull/2410) [`2f68463`](https://github.com/marko-js/marko/commit/2f6846382a7f6ad5de10a0978a69a16fa37c6dc0) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Use relative paths for tags translator to tags runtime.\n\n## 0.3.0\n\n### Minor Changes\n\n- [#2408](https://github.com/marko-js/marko/pull/2408) [`2be37f7`](https://github.com/marko-js/marko/commit/2be37f72d3030621e2f85b6615731a5af24e0211) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Merge translator packages into their respective runtime packages.\n\n## 0.2.5\n\n### Patch Changes\n\n- [#2404](https://github.com/marko-js/marko/pull/2404) [`fbc0cef`](https://github.com/marko-js/marko/commit/fbc0cefb860cd91142231df04c05b7e4c0d1b1ee) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrade all dependencies. Fix support for latest babel version.\n\n## 0.2.4\n\n### Patch Changes\n\n- [#2399](https://github.com/marko-js/marko/pull/2399) [`032afa1`](https://github.com/marko-js/marko/commit/032afa125b19969346639ac99ae9740521d0c3a2) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Refactor and improve logic around functon registration, binding renaming, and binding assignments.\n\n- [#2401](https://github.com/marko-js/marko/pull/2401) [`46f8d7c`](https://github.com/marko-js/marko/commit/46f8d7cfba231d1ab724fec83f07d1192d5d4d7f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add support for tags API script tag.\n\n## 0.2.3\n\n### Patch Changes\n\n- [#2382](https://github.com/marko-js/marko/pull/2382) [`fefe9ae`](https://github.com/marko-js/marko/commit/fefe9ae6681beaf15728afb48ce64e86030853b9) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure native tag controlled elements and event handler scopes are serialized.\n\n- [#2392](https://github.com/marko-js/marko/pull/2392) [`c7bcf4b`](https://github.com/marko-js/marko/commit/c7bcf4b363a5b7824fa8222b6a01dbf139a25528) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issues with dynamic for by attribute.\n\n## 0.2.2\n\n### Patch Changes\n\n- [#2378](https://github.com/marko-js/marko/pull/2378) [`ecfba07`](https://github.com/marko-js/marko/commit/ecfba07954ecfd80c1f2eecfe7791529278e801b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add trailing HTML api and ensure that closing `</body>` and `</html>` are always appended to the end of the stream if they are rendered.\n\n## 0.2.1\n\n### Patch Changes\n\n- [#2376](https://github.com/marko-js/marko/pull/2376) [`07de4fc`](https://github.com/marko-js/marko/commit/07de4fc6fb3a17d2c059292bfade4ef0e22d9cec) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Expose psuedo internal `$global.__flush__` api to be used by bundler integrations.\n\n## 0.2.0\n\n### Minor Changes\n\n- [#2374](https://github.com/marko-js/marko/pull/2374) [`d8a9ee5`](https://github.com/marko-js/marko/commit/d8a9ee58a0ce0428c858886a3493aca0b9e91084) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Support valueChange attribute on `<return>` tag.\n\n## 0.1.25\n\n### Patch Changes\n\n- [#2370](https://github.com/marko-js/marko/pull/2370) [`263e548`](https://github.com/marko-js/marko/commit/263e548ed8d00d6743ac3cb102730e2190866a0f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix race condition with debug mode scheduler.\n\n## 0.1.24\n\n### Patch Changes\n\n- [#2364](https://github.com/marko-js/marko/pull/2364) [`cbcd7ec`](https://github.com/marko-js/marko/commit/cbcd7ecd3bb6a670c0cbd90f02b3a16332a71282) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add `return` method to asyncIterator on render method to better support apis that expect it to be there.\n\n## 0.1.23\n\n### Patch Changes\n\n- [#2360](https://github.com/marko-js/marko/pull/2360) [`c94a263`](https://github.com/marko-js/marko/commit/c94a2633899ac71f56b7c0dda2b0f7fb04253e27) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with referencing $global in tags api SSR.\n\n- [#2363](https://github.com/marko-js/marko/pull/2363) [`e4f385f`](https://github.com/marko-js/marko/commit/e4f385f7b0071b55675492ff9aa983fa1fc59ba1) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Use same event handler name normalization and check between translator and runtime.\n\n## 0.1.22\n\n### Patch Changes\n\n- [#2358](https://github.com/marko-js/marko/pull/2358) [`76951d8`](https://github.com/marko-js/marko/commit/76951d887d02e6f0dd3f0fe1345721d4a94a0069) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Always use MarkoTagBody AST nodes for control flow (even with attribute tags). This fixes a regression with the @marko/tags-api-preview and is more accurate to what is actually happening, especially from a variable scoping perspective.\n\n## 0.1.21\n\n### Patch Changes\n\n- [#2356](https://github.com/marko-js/marko/pull/2356) [`7492eb8`](https://github.com/marko-js/marko/commit/7492eb819faf164fcbde34648dcfe72c406665f2) Thanks [@mlrawlings](https://github.com/mlrawlings)! - compiled output cleanup\n\n## 0.1.20\n\n### Patch Changes\n\n- [#2354](https://github.com/marko-js/marko/pull/2354) [`a4069c2`](https://github.com/marko-js/marko/commit/a4069c2054f3168dd8f88a2be92faa510388e80c) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add \"value\" attribute support to textarea and support controllable textarea's.\n\n## 0.1.19\n\n### Patch Changes\n\n- [#2352](https://github.com/marko-js/marko/pull/2352) [`b32b01f`](https://github.com/marko-js/marko/commit/b32b01f66170ad551a25ac43567237a5f40faafb) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with controllable elements inside a shadowroot.\n\n## 0.1.18\n\n### Patch Changes\n\n- [#2350](https://github.com/marko-js/marko/pull/2350) [`6501821`](https://github.com/marko-js/marko/commit/6501821981f2c01008403dac4bb6f02a76e6ff51) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Misc improvements and refactoring to controllable inputs.\n\n## 0.1.17\n\n### Patch Changes\n\n- [#2344](https://github.com/marko-js/marko/pull/2344) [`bafeac1`](https://github.com/marko-js/marko/commit/bafeac1db6acc73e5c38ade2a078485df28670b8) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Refactor attribute tag analysis and attribute translation to improve dead code removal.\n\n## 0.1.16\n\n### Patch Changes\n\n- [#2340](https://github.com/marko-js/marko/pull/2340) [`33a1ba6`](https://github.com/marko-js/marko/commit/33a1ba61cdc47e56441ba3c9e9173372c4b8b6fa) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Switch <for> tag output to use a shared runtime.\n\n## 0.1.15\n\n### Patch Changes\n\n- [#2330](https://github.com/marko-js/marko/pull/2330) [`76b7a00`](https://github.com/marko-js/marko/commit/76b7a00163a8054bf659a473b85486ceed657b61) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Refactor and simplify template parsing to use the Range api.\n\n- [#2330](https://github.com/marko-js/marko/pull/2330) [`def0e6c`](https://github.com/marko-js/marko/commit/def0e6c308dd44d2cdc9f7a4340e29f8e26272fb) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Preffer `||=` over `??=` in the runtime since it downtranspiles to less code.\n\n- [#2330](https://github.com/marko-js/marko/pull/2330) [`b582929`](https://github.com/marko-js/marko/commit/b582929fbd5ab52c42208dd8e8d20663b8ab35b1) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure change handler error message are behind a debug guard\n\n- [#2331](https://github.com/marko-js/marko/pull/2331) [`e4a6d8b`](https://github.com/marko-js/marko/commit/e4a6d8b46cfd852b2b45437dc2094f5065b6f6f5) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Make Template instances renderers (no longer access template renderer from \"\\_\" property). Improve dynamic tag value normalization.\n\n- [#2331](https://github.com/marko-js/marko/pull/2331) [`bdbe303`](https://github.com/marko-js/marko/commit/bdbe3037246d22776b45cae282a9571b263a15c5) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Remove \"bindFunction\" internal api, add support for serializing element references.\n\n- [#2330](https://github.com/marko-js/marko/pull/2330) [`7199f87`](https://github.com/marko-js/marko/commit/7199f879a6e5cad26ba33ee486690d8a5bdb902e) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Remove \"Before\" and \"After\" walk codes since they are not used by the compiler and are not necessary.\n\n- [#2331](https://github.com/marko-js/marko/pull/2331) [`8fe4e50`](https://github.com/marko-js/marko/commit/8fe4e502259a53719963087547c2ca1511106425) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Share html parsing logic between dynamic html runtime and template parsing.\n\n## 0.1.14\n\n### Patch Changes\n\n- [#2309](https://github.com/marko-js/marko/pull/2309) [`2a971ce`](https://github.com/marko-js/marko/commit/2a971ce6617bf98f79c0b0840467c15ce413b0c9) Thanks [@rturnq](https://github.com/rturnq)! - Fix scope cleanup, make signals order independant and various fixes\n\n## 0.1.13\n\n### Patch Changes\n\n- [#2296](https://github.com/marko-js/marko/pull/2296) [`81c5c0e`](https://github.com/marko-js/marko/commit/81c5c0e0436dc694f09c722f2103bfdc9cb3844f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve support for @marko/compat.\n\n## 0.1.12\n\n### Patch Changes\n\n- [#2293](https://github.com/marko-js/marko/pull/2293) [`3464f38`](https://github.com/marko-js/marko/commit/3464f389036047a19845ab1a74e11d82ff9ca946) Thanks [@rturnq](https://github.com/rturnq)! - Fix walker incorrectly getting next node when using OVER with a single node\n\n## 0.1.11\n\n### Patch Changes\n\n- [#2284](https://github.com/marko-js/marko/pull/2284) [`d0723d3`](https://github.com/marko-js/marko/commit/d0723d398338d86b48524e230fe24d93d62ee19a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix off by one issue for static statement sourcemaps (eg import) and for concise mode tags.\n\n## 0.1.10\n\n### Patch Changes\n\n- [#2282](https://github.com/marko-js/marko/pull/2282) [`32e2eff`](https://github.com/marko-js/marko/commit/32e2eff5c3ecdcb36f7b6ed98ea2a1e705538a29) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve handling of sourcemaps for inline style blocks and tags.\n\n- [#2281](https://github.com/marko-js/marko/pull/2281) [`10f61e2`](https://github.com/marko-js/marko/commit/10f61e206b81977de71a4054cf10d7ee497e3df3) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Minor improvement to inlined hydration output for tags api runtime\n\n## 0.1.9\n\n### Patch Changes\n\n- [#2277](https://github.com/marko-js/marko/pull/2277) [`ce88d81`](https://github.com/marko-js/marko/commit/ce88d8194f98b4010032634f5427021810f6acdb) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix \"off by one\" issue with source location information when the index was at the start of the line.\n\n## 0.1.8\n\n### Patch Changes\n\n- [#2274](https://github.com/marko-js/marko/pull/2274) [`5cea7d6`](https://github.com/marko-js/marko/commit/5cea7d65ead9b58d7d7d244078d279d561fd3ea7) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Optimize javascript parsing helpers to pass in start line / column information to babel rather than faking it with whitespace.\n\n  For large templates this can have a significant impact on parsing performance.\n\n## 0.1.7\n\n### Patch Changes\n\n- [#2252](https://github.com/marko-js/marko/pull/2252) [`339c28d`](https://github.com/marko-js/marko/commit/339c28dd590dc15b6a1011f38411809060f1a4ba) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Allow diagnostic fixes in parse stage.\n\n## 0.1.6\n\n### Patch Changes\n\n- [#2240](https://github.com/marko-js/marko/pull/2240) [`a6bac65`](https://github.com/marko-js/marko/commit/a6bac65c114a22ac705490f9fbf2a81463762cd1) Thanks [@mlrawlings](https://github.com/mlrawlings)! - Stale closure bug\n\n## 0.1.5\n\n### Patch Changes\n\n- [#2171](https://github.com/marko-js/marko/pull/2171) [`a2ce696`](https://github.com/marko-js/marko/commit/a2ce6968c4ef227dcc0f1d45d74305eb85b688e6) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Use console.createTask to preserve stack trace when queing.\n\n- [#2171](https://github.com/marko-js/marko/pull/2171) [`608b57a`](https://github.com/marko-js/marko/commit/608b57ae44a14a77cceace880e180d28a0c5f305) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Optimize empty marker code not being stripped if unused\n\n## 0.1.4\n\n### Patch Changes\n\n- [#2161](https://github.com/marko-js/marko/pull/2161) [`8ff7488`](https://github.com/marko-js/marko/commit/8ff74884311982b3f8895f47f9cbf8b31c6557b9) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid using mutable exported bindings for stream data access in tags api. (It did not work in Vite/Rollup)\n\n- [#2159](https://github.com/marko-js/marko/pull/2159) [`f9cf946`](https://github.com/marko-js/marko/commit/f9cf9467cd7e0cb59dd3254f9695a56434e97743) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with interop translator incorrectly caching feature detection in parse stage with incomplete program.\n\n- [#2159](https://github.com/marko-js/marko/pull/2159) [`f9cf946`](https://github.com/marko-js/marko/commit/f9cf9467cd7e0cb59dd3254f9695a56434e97743) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Expose runtime entry file information for tags api.\n\n## 0.1.3\n\n### Patch Changes\n\n- [#2156](https://github.com/marko-js/marko/pull/2156) [`cbb9f95`](https://github.com/marko-js/marko/commit/cbb9f95cb09d27e739d017cf7734d9f7b6149adf) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid using internal mangled props from tags api in the interop runtime.\n\n## 0.1.2\n\n### Patch Changes\n\n- [#2138](https://github.com/marko-js/marko/pull/2138) [`105c26b`](https://github.com/marko-js/marko/commit/105c26bd4f7f37bd6073e4795b01b83d31ecda06) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with package json src/dist override script.\n\n## 0.1.1\n\n### Patch Changes\n\n- [#2136](https://github.com/marko-js/marko/pull/2136) [`6546c68`](https://github.com/marko-js/marko/commit/6546c68346f6935c98419626662088571549852a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Remove private field from package.json\n\n## 0.1.0\n\n### Minor Changes\n\n- [#2004](https://github.com/marko-js/marko/pull/2004) [`2704819`](https://github.com/marko-js/marko/commit/27048199d6a0ee48ed8118e9f7017a94c7dc4f3d) Thanks [@mlrawlings](https://github.com/mlrawlings)! - Release alpha of tags api translator/runtime.\n\n- [#2004](https://github.com/marko-js/marko/pull/2004) [`2704819`](https://github.com/marko-js/marko/commit/27048199d6a0ee48ed8118e9f7017a94c7dc4f3d) Thanks [@mlrawlings](https://github.com/mlrawlings)! - Add `mount` api for client rendered components and expose `Symbol.asyncIterator` for server rendered components.\n"
  },
  {
    "path": "packages/runtime-tags/README.md",
    "content": "<div align=\"center\">\n\n# [<img alt=\"Marko\" src=\"https://raw.githubusercontent.com/marko-js/website/refs/heads/main/public/assets/logo.svg\" width=\"250\">](https://markojs.com/)\n\n**A declarative, HTML-based language that makes building web apps fun 🔥**\n\n[![NPM](https://img.shields.io/npm/v/marko.svg)](https://www.npmjs.com/package/marko)\n[![Discord Chat](https://img.shields.io/badge/discord-chat-7188da.svg)](https://discord.gg/RFGxYGs)\n[![Continuous Integration status](https://github.com/marko-js/marko/actions/workflows/ci.yml/badge.svg)](https://github.com/marko-js/marko/actions/workflows/ci.yml)\n[![Code coverage %](https://codecov.io/gh/marko-js/marko/branch/master/graph/badge.svg)](https://codecov.io/gh/marko-js/marko)\n[![# of monthly downloads](https://img.shields.io/npm/dm/marko.svg)](https://npm-stat.com/charts.html?package=marko)\n[![OpenSSF Best Practices](https://bestpractices.coreinfrastructure.org/projects/7029/badge)](https://bestpractices.coreinfrastructure.org/projects/7029)\n\n[Docs](https://markojs.com/docs/introduction/getting-started) ∙ [Try Online](https://markojs.com/playground) ∙ [Contribute](#contributors) ∙ [Get Support](#community--support)\n\n</div>\n\n## Intro\n\nMarko is HTML _reimagined_ as a language for building dynamic and reactive user interfaces. Almost any valid HTML is valid Marko, and Marko extends HTML for building modern applications more declaratively. Among these extensions are [components](https://markojs.com/docs/reference/custom-tag), [conditionals](https://markojs.com/docs/reference/core-tag#if--else) and [loops](https://markojs.com/docs/reference/core-tag#for), and a full [reactivity system](https://markojs.com/docs/reference/reactivity).\n\n### Example Component\n\nThe following renders a button and a counter of how many times the button has been pressed:\n\n**click-count.marko**\n\n```marko\n// HTML + JavaScript = 💜\n<let/count=0>\n<button onClick() { count++ }>\n  Clicked ${count} times\n</button>\n```\n\n## Getting Started\n\n1. `npm init marko`\n2. Read the [docs](https://markojs.com/docs/introduction/getting-started)\n\n## Community & Support\n\n<table>\n<thead><tr>\n  <th><svg viewBox=\"0 0 576 512\"><path d=\"M492.5 69.8c-.2-.3-.4-.6-.8-.7-38.1-17.5-78.4-30-119.7-37.1-.4-.1-.8 0-1.1 .1s-.6 .4-.8 .8c-5.5 9.9-10.5 20.2-14.9 30.6-44.6-6.8-89.9-6.8-134.4 0-4.5-10.5-9.5-20.7-15.1-30.6-.2-.3-.5-.6-.8-.8s-.7-.2-1.1-.2c-41.3 7.1-81.6 19.6-119.7 37.1-.3 .1-.6 .4-.8 .7-76.2 113.8-97.1 224.9-86.9 334.5 0 .3 .1 .5 .2 .8s.3 .4 .5 .6c44.4 32.9 94 58 146.8 74.2 .4 .1 .8 .1 1.1 0s.7-.4 .9-.7c11.3-15.4 21.4-31.8 30-48.8 .1-.2 .2-.5 .2-.8s0-.5-.1-.8-.2-.5-.4-.6-.4-.3-.7-.4c-15.8-6.1-31.2-13.4-45.9-21.9-.3-.2-.5-.4-.7-.6s-.3-.6-.3-.9 0-.6 .2-.9 .3-.5 .6-.7c3.1-2.3 6.2-4.7 9.1-7.1 .3-.2 .6-.4 .9-.4s.7 0 1 .1c96.2 43.9 200.4 43.9 295.5 0 .3-.1 .7-.2 1-.2s.7 .2 .9 .4c2.9 2.4 6 4.9 9.1 7.2 .2 .2 .4 .4 .6 .7s.2 .6 .2 .9-.1 .6-.3 .9-.4 .5-.6 .6c-14.7 8.6-30 15.9-45.9 21.8-.2 .1-.5 .2-.7 .4s-.3 .4-.4 .7-.1 .5-.1 .8 .1 .5 .2 .8c8.8 17 18.8 33.3 30 48.8 .2 .3 .6 .6 .9 .7s.8 .1 1.1 0c52.9-16.2 102.6-41.3 147.1-74.2 .2-.2 .4-.4 .5-.6s.2-.5 .2-.8c12.3-126.8-20.5-236.9-86.9-334.5zm-302 267.7c-29 0-52.8-26.6-52.8-59.2s23.4-59.2 52.8-59.2c29.7 0 53.3 26.8 52.8 59.2 0 32.7-23.4 59.2-52.8 59.2zm195.4 0c-29 0-52.8-26.6-52.8-59.2s23.4-59.2 52.8-59.2c29.7 0 53.3 26.8 52.8 59.2 0 32.7-23.2 59.2-52.8 59.2z\"></path></svg>\n  <th><svg viewBox=\"0 0 576 512\"><path d=\"M407.8 294.7c-3.3-.4-6.7-.8-10-1.3 3.4 .4 6.7 .9 10 1.3zM288 227.1C261.9 176.4 190.9 81.9 124.9 35.3 61.6-9.4 37.5-1.7 21.6 5.5 3.3 13.8 0 41.9 0 58.4S9.1 194 15 213.9c19.5 65.7 89.1 87.9 153.2 80.7 3.3-.5 6.6-.9 10-1.4-3.3 .5-6.6 1-10 1.4-93.9 14-177.3 48.2-67.9 169.9 120.3 124.6 164.8-26.7 187.7-103.4 22.9 76.7 49.2 222.5 185.6 103.4 102.4-103.4 28.1-156-65.8-169.9-3.3-.4-6.7-.8-10-1.3 3.4 .4 6.7 .9 10 1.3 64.1 7.1 133.6-15.1 153.2-80.7 5.9-19.9 15-138.9 15-155.5s-3.3-44.7-21.6-52.9c-15.8-7.1-40-14.9-103.2 29.8-66.1 46.6-137.1 141.1-163.2 191.8z\"></path></svg>\n  <th><svg viewBox=\"0 0 448 512\"><path d=\"M357.2 48L427.8 48 273.6 224.2 455 464 313 464 201.7 318.6 74.5 464 3.8 464 168.7 275.5-5.2 48 140.4 48 240.9 180.9 357.2 48zM332.4 421.8l39.1 0-252.4-333.8-42 0 255.3 333.8z\"></path></svg>\n  <th><svg viewBox=\"0 0 512 512\"><path d=\"M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3 .3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5 .3-6.2 2.3zm44.2-1.7c-2.9 .7-4.9 2.6-4.6 4.9 .3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM252.8 8c-138.7 0-244.8 105.3-244.8 244 0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1 100-33.2 167.8-128.1 167.8-239 0-138.7-112.5-244-251.2-244zM105.2 352.9c-1.3 1-1 3.3 .7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3 .3 2.9 2.3 3.9 1.6 1 3.6 .7 4.3-.7 .7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3 .7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3 .7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z\"></path></svg>\n<tbody><tr><td>\n  \nHang out in our [Discord server](https://discord.gg/marko) to ask questions & discuss marko<td>\n\nKeep up with the community on Bluesky at [@markojs.com](https://bsky.app/profile/markojs.com)<td>\n\nTweet to [@MarkoDevTeam](https://twitter.com/MarkoDevTeam) or use the [#markojs](https://twitter.com/search?q=%23markojs%20OR%20%40markodevteam&f=live) hashtag<td>\n\nBrowse the code, open issues, & make pull requests on [GitHub](https://github.com/marko-js/marko)\n\n</table>\n\n### Contributors\n\nMarko would not be what it is without all those who have contributed ✨\n\n[![All marko-js/marko GitHub contributors](https://opencollective.com/marko-js/contributors.svg?width=890&button=false)](https://github.com/marko-js/marko/graphs/contributors)\n\n### Get Involved!\n\n- Pull requests are welcome!\n- Submit [GitHub issues](https://github.com/marko-js/marko/issues) for any feature enhancements, bugs, or documentation problems\n- [Read the Contribution Tips and Guidelines](.github/CONTRIBUTING.md)\n- Participants in this project agree to abide by [its Code of Conduct](https://github.com/eBay/.github/blob/main/CODE_OF_CONDUCT.md)\n"
  },
  {
    "path": "packages/runtime-tags/index.d.ts",
    "content": "import \"./tags-html\";\n\ndeclare module \"*.marko\" {\n  const template: Marko.Template;\n  export default template;\n}\n\ndeclare global {\n  namespace NodeJS {\n    interface ReadableStream {}\n  }\n\n  namespace Marko {\n    /** A mutable global object for the current render. */\n    export interface Global {\n      [x: PropertyKey]: unknown;\n      /** An AbortSignal instance that, when aborted, stops further streamed content. */\n      signal?: AbortSignal;\n      /** A CSP Nonce to add to each script output from Marko. */\n      cspNonce?: string;\n      /** Used for rendering multiple Marko templates in a single hydrated page. */\n      renderId?: string;\n      /** Used to uniquely identify a instance of a Marko runtime. */\n      runtimeId?: string;\n      /** A list of globals that should be serialized to the browser. */\n      serializedGlobals?: string[] | Record<string, boolean>;\n    }\n\n    export type TemplateInput<Input> = Input & {\n      /**  Data available within all rendered templates as `$global`. */\n      $global?: Global;\n    };\n\n    /** The result of calling `template.render`. */\n    export type RenderedTemplate = Promise<string> &\n      AsyncIterable<string> & {\n        toReadable(): ReadableStream<Uint8Array<ArrayBufferLike>>;\n        pipe(stream: {\n          write(chunk: string): unknown;\n          end(): unknown;\n          flush?(): void;\n        }): void;\n        toString(): string;\n      };\n\n    /** The result of calling `template.mount`. */\n    export type MountedTemplate<Input = unknown, Return = unknown> = {\n      get value(): Return extends { value: infer Value } ? Value : void;\n      set value(\n        next: Return extends { valueChange?(next: infer Next): any }\n          ? Next\n          : never,\n      );\n      update(input: Marko.TemplateInput<Input>): void;\n      destroy(): void;\n    };\n\n    /** Body content created by a template. */\n    export interface Body<\n      in Params extends readonly any[] = [],\n      out Return = void,\n    > {}\n\n    /** Valid data types which can be passed in as a <${dynamic}/> tag name. */\n    export type Renderable =\n      | { content: Body<any, any> | Template | string }\n      | Body<any, any>\n      | Template\n      | string;\n\n    /** Extract the return tag type from body content. */\n    export type BodyReturnType<B> =\n      B extends Body<any, infer Return> ? Return : never;\n\n    /** Extract the tag parameter types received by body content. */\n    export type BodyParameters<B> =\n      B extends Body<infer Params, any> ? Params : never;\n\n    /** The top level api for a Marko Template. */\n    export abstract class Template<Input = unknown, Return = unknown> {\n      /**\n       * The following types are processed up by the @marko/language-tools\n       * and inlined into the compiled template.\n       *\n       * This is done to support generics on each of these methods\n       * until TypeScript supports higher kinded types.\n       *\n       * https://github.com/microsoft/TypeScript/issues/1213\n       */\n\n      /** @marko-overload-start */\n      /** Render the template to a string. */\n      abstract render(\n        input: Marko.TemplateInput<Input>,\n      ): Marko.RenderedTemplate;\n\n      /** Render and attach the template to a DOM node. */\n      abstract mount(\n        input: Marko.TemplateInput<Input>,\n        reference: Node,\n        position?: \"afterbegin\" | \"afterend\" | \"beforebegin\" | \"beforeend\",\n      ): Marko.MountedTemplate<typeof input, Return>;\n      /** @marko-overload-end */\n    }\n\n    export type AttrTag<T> = T & {\n      [Symbol.iterator](): Iterator<T>;\n    };\n\n    export interface NativeTag<\n      Input extends Record<string, any>,\n      Return extends Element,\n    > {\n      input: Input;\n      return: { value: () => Return };\n    }\n    export interface NativeTags {\n      [name: string]: NativeTag<Record<string, any>, Element>;\n    }\n\n    export type Input<Name> = 0 extends 1 & Name\n      ? any\n      : Name extends string\n        ? Name extends keyof NativeTags\n          ? NativeTags[Name][\"input\"]\n          : Record<string, unknown>\n        : Name extends\n              | Template<infer Input, any>\n              | { _(): () => (input: infer Input) => any }\n          ? Input\n          : Name extends Body<infer Args, any>\n            ? Args extends {\n                length: infer Length;\n              }\n              ? number extends Length\n                ? Args[0] | undefined\n                : 0 extends Length\n                  ? undefined\n                  : Args[0]\n              : never\n            : never;\n\n    export type Return<Name> = 0 extends 1 & Name\n      ? any\n      : Name extends string\n        ? Name extends keyof NativeTags\n          ? NativeTags[Name][\"return\"]\n          : () => Element\n        : Name extends\n              | { _(): () => (input: any) => { return: infer Return } }\n              | Template<any, infer Return>\n              | Body<any, infer Return>\n          ? Return\n          : never;\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/package.json",
    "content": "{\n  \"name\": \"@marko/runtime-tags\",\n  \"version\": \"6.0.159\",\n  \"description\": \"Optimized runtime for Marko templates.\",\n  \"keywords\": [\n    \"api\",\n    \"marko\",\n    \"runtime\",\n    \"tags\"\n  ],\n  \"homepage\": \"https://github.com/marko-js/marko\",\n  \"bugs\": \"https://github.com/marko-js/marko/issues\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/marko-js/marko.git\",\n    \"directory\": \"packages/runtime-tags\"\n  },\n  \"license\": \"MIT\",\n  \"exports\": {\n    \".\": {\n      \"types\": \"./index.d.ts\"\n    },\n    \"./translator\": \"./src/translator/index.ts\",\n    \"./tags/*\": \"./tags/*\",\n    \"./debug/*\": \"./src/*.ts\",\n    \"./*\": \"./src/*.ts\"\n  },\n  \"types\": \"index.d.ts\",\n  \"files\": [\n    \"dist\",\n    \"tags\",\n    \"index.d.ts\",\n    \"translator.js\",\n    \"tags-html.d.ts\",\n    \"!**/meta.*.json\",\n    \"!**/__tests__\",\n    \"!**/*.tsbuildinfo\"\n  ],\n  \"scripts\": {\n    \"build\": \"node -r ~ts ./scripts/bundle.ts\"\n  },\n  \"dependencies\": {\n    \"@marko/compiler\": \"^5.39.62\",\n    \"csstype\": \"^3.2.3\",\n    \"fastest-levenshtein\": \"^1.0.16\",\n    \"magic-string\": \"^0.30.21\"\n  },\n  \"engines\": {\n    \"node\": \"18 || 20 || >=22\"\n  },\n  \"exports:override\": {\n    \".\": {\n      \"types\": \"./index.d.ts\"\n    },\n    \"./package.json\": \"./package.json\",\n    \"./translator\": \"./dist/translator/index.js\",\n    \"./tags/*\": \"./tags/*\",\n    \"./debug/*\": {\n      \"types\": \"./dist/*.d.ts\",\n      \"import\": \"./dist/debug/*.mjs\",\n      \"default\": \"./dist/debug/*.js\"\n    },\n    \"./*\": {\n      \"types\": \"./dist/*.d.ts\",\n      \"import\": \"./dist/*.mjs\",\n      \"default\": \"./dist/*.js\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/scripts/bundle.mts",
    "content": "/**\n * TODO:\n * This file should replace ./build.ts once rolldown adds the following optimizations.\n *\n * https://github.com/oxc-project/oxc/issues/6073\n * https://github.com/oxc-project/oxc/issues/15375\n */\n\nimport path from \"node:path\";\n\nimport { build } from \"rolldown\";\n\nconst cwd = path.join(import.meta.dirname, \"..\");\n\nawait Promise.all(\n  [\n    // Build translator\n    build({\n      cwd,\n      input: \"src/translator/index.ts\",\n      platform: \"node\",\n      external: [/^[^./]/, path.join(cwd, \"package.json\")],\n      transform: {\n        define: {\n          MARKO_DEBUG: \"false\",\n        },\n      },\n      output: {\n        format: \"cjs\",\n        sourcemap: false,\n        minify: \"dce-only\",\n        dir: \"dist/translator\",\n        intro: \"'use strict';\",\n      },\n    }),\n    // Build runtime\n    [\"dist/debug\", \"dist\"].map((env) =>\n      [\"dom\", \"html\"].map((name) =>\n        ([\"esm\", \"cjs\"] as const).map(async (format) => {\n          const isProd = env === \"dist\";\n          await build({\n            cwd,\n            input: `src/${name}.ts`,\n            platform: name === \"dom\" ? \"browser\" : \"node\",\n            // mangleProps: isProd ? /^___/ : undefined,\n            transform: {\n              define: { MARKO_DEBUG: String(!isProd) },\n            },\n            plugins: isProd\n              ? [\n                  {\n                    name: \"debug\",\n                    resolveId: {\n                      filter: { id: { include: /^\\..*\\.debug$/ } },\n                      handler(id, importer, opts) {\n                        return this.resolve(\n                          id.replace(/\\.debug$/, \"\"),\n                          importer,\n                          opts,\n                        );\n                      },\n                    },\n                  },\n                ]\n              : undefined,\n            output: {\n              format,\n              sourcemap: false,\n              minify: \"dce-only\",\n              file: `${env}/${name}.${format === \"esm\" ? \"mjs\" : \"js\"}`,\n              intro: format === \"cjs\" ? \"'use strict';\" : undefined,\n            },\n          });\n        }),\n      ),\n    ),\n  ].flat(),\n);\n"
  },
  {
    "path": "packages/runtime-tags/scripts/bundle.ts",
    "content": "import { build } from \"esbuild\";\nimport fs from \"fs\";\nimport path from \"path\";\n\nconst absWorkingDir = path.join(__dirname, \"..\");\n\nPromise.all([\n  // Build translator\n  build({\n    format: \"cjs\",\n    bundle: true,\n    absWorkingDir,\n    outdir: \"dist/translator\",\n    sourcemap: false,\n    platform: \"node\",\n    packages: \"external\",\n    external: [path.join(absWorkingDir, \"package.json\")],\n    entryPoints: [\"src/translator/index.ts\"],\n    define: {\n      MARKO_DEBUG: \"false\",\n    },\n  }),\n  // Build runtime\n  ...[\"dist/debug\", \"dist\"].flatMap((env) =>\n    [\"dom\", \"html\"].flatMap((name) => {\n      ([\"esm\", \"cjs\"] as const).map(async (format) => {\n        const isProd = env === \"dist\";\n        const outdir = path.join(absWorkingDir, env);\n        const { metafile } = await build({\n          format,\n          outdir,\n          absWorkingDir,\n          bundle: true,\n          metafile: true,\n          sourcemap: false,\n          minifySyntax: isProd,\n          entryPoints: [`src/${name}.ts`],\n          define: { MARKO_DEBUG: String(!isProd) },\n          mangleProps: isProd ? /^___/ : undefined,\n          platform: name === \"dom\" ? \"browser\" : \"node\",\n          outExtension: { \".js\": format === \"esm\" ? \".mjs\" : \".js\" },\n          plugins: isProd\n            ? [\n                {\n                  name: \"remap-debug\",\n                  setup(build) {\n                    build.onResolve(\n                      { filter: /^\\..*\\.debug$/ },\n                      ({ path, ...args }) =>\n                        build.resolve(path.replace(/\\.debug$/, \"\"), args),\n                    );\n                  },\n                },\n              ]\n            : undefined,\n        });\n\n        await Promise.all([\n          fs.promises.writeFile(\n            `${outdir}/meta.${format}.json`,\n            JSON.stringify(metafile),\n          ),\n        ]);\n      });\n    }),\n  ),\n]).catch((err) => {\n  console.error(err);\n  process.exit(1);\n});\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/common-helpers.test.ts",
    "content": "import * as assert from \"assert/strict\";\n\nimport * as helpers from \"../common/helpers\";\n\nconst emptyValues = [undefined, null, false, \"\"];\n\ndescribe(\"runtime-tags/common/helpers\", () => {\n  describe(\"classValue\", () => {\n    it(\"should return empty string for empty values\", () => {\n      for (const value of emptyValues) {\n        assert.equal(helpers.classValue(value), \"\");\n        assert.equal(helpers.classValue([value]), \"\");\n        assert.equal(helpers.classValue({ value }), \"\");\n      }\n    });\n\n    it(\"should return the class name for non-empty values\", () => {\n      assert.equal(helpers.classValue(\"foo\"), \"foo\");\n      assert.equal(helpers.classValue([\"foo\"]), \"foo\");\n      assert.equal(helpers.classValue({ foo: true }), \"foo\");\n    });\n\n    it(\"should return multiple class names for non-empty values\", () => {\n      assert.equal(helpers.classValue([\"foo\", \"bar\"]), \"foo bar\");\n      assert.equal(helpers.classValue({ foo: true, bar: true }), \"foo bar\");\n    });\n\n    it(\"should return multiple class names and ignore empty values\", () => {\n      for (const value of emptyValues) {\n        assert.equal(helpers.classValue([\"foo\", value, \"bar\"]), \"foo bar\");\n        assert.equal(\n          helpers.classValue([\"foo\", value, { bar: true, baz: value }]),\n          \"foo bar\",\n        );\n        assert.equal(\n          helpers.classValue({ foo: true, bar: true, baz: value }),\n          \"foo bar\",\n        );\n      }\n    });\n  });\n\n  describe(\"styleValue\", () => {\n    it(\"should return empty string for empty values\", () => {\n      for (const value of emptyValues) {\n        assert.equal(helpers.styleValue(value), \"\");\n        assert.equal(helpers.styleValue([value]), \"\");\n        assert.equal(helpers.styleValue({ value }), \"\");\n      }\n    });\n\n    it(\"should return the style for non-empty values\", () => {\n      assert.equal(helpers.styleValue(\"color:red\"), \"color:red\");\n      assert.equal(helpers.styleValue([\"color:red\"]), \"color:red\");\n      assert.equal(helpers.styleValue({ color: \"red\" }), \"color:red\");\n      assert.equal(helpers.styleValue([{ color: \"red\" }]), \"color:red\");\n    });\n\n    it(\"should return multiple styles for non-empty values\", () => {\n      assert.equal(\n        helpers.styleValue([\"color:red\", \"background:blue\"]),\n        \"color:red;background:blue\",\n      );\n      assert.equal(\n        helpers.styleValue({ color: \"red\", background: \"blue\" }),\n        \"color:red;background:blue\",\n      );\n    });\n\n    it(\"should return multiple styles and ignore empty values\", () => {\n      for (const value of emptyValues) {\n        assert.equal(\n          helpers.styleValue([\"color:red\", value, \"background:blue\"]),\n          \"color:red;background:blue\",\n        );\n        assert.equal(\n          helpers.styleValue({\n            color: \"red\",\n            background: \"blue\",\n            border: value,\n          }),\n          \"color:red;background:blue\",\n        );\n        assert.equal(\n          helpers.styleValue([\n            { color: \"red\", border: value },\n            { background: \"blue\" },\n          ]),\n          \"color:red;background:blue\",\n        );\n      }\n    });\n  });\n});\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/abort-signal-render-phase-error/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div>${_._escape((() => {\n    throw new Error(\"Cannot use $signal in a server render.\");\n  })().onabort = () => {})}</div>`);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/abort-signal-render-phase-error/__snapshots__/ssr-sanitized.expected.md",
    "content": "Cannot use $signal in a server render."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/abort-signal-render-phase-error/__snapshots__/ssr.expected.md",
    "content": "Cannot use $signal in a server render."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/abort-signal-render-phase-error/template.marko",
    "content": "<div>${$signal.onabort = () => {}}</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/abort-signal-render-phase-error/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  skip_dom: true,\n  error_runtime: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-destructured/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$bar__OR__fooChange__script\": \"r\",\n      \"$$bar__OR__fooChange\": \"m\",\n      \"$$bar\": \"n\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-destructured/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  1:0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1:1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1:2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1:3\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-destructured/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  1:0\n</button>\n```\n\n# Mutations\n```\nINSERT button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1:1\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text2 \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1:2\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text2 \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1:3\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text2 \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-destructured/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 181 (min) 140 (brotli)\nconst $bar__OR__fooChange__script = _._script(\"a1\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $scope.g($scope.d + 1);\n    }),\n  ),\n  $bar__OR__fooChange = _._or(7, $bar__OR__fooChange__script),\n  $bar = _._let(3, ($scope) => {\n    (_._text($scope.c, $scope.d), $bar__OR__fooChange($scope));\n  });\n(_._resume(\"a0\", function ($scope) {\n  return function (v) {\n    $bar($scope, v);\n  };\n}),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-destructured/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button><!>:<!></button>\";\nexport const $walks = /* get, next(1), replace, over(2), replace, out(1) */\" D%c%l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $bar__OR__fooChange__script = _._script(\"__tests__/template.marko_0_bar_$fooChange\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $scope.$fooChange($scope.bar + 1);\n}));\nconst $bar__OR__fooChange = /* @__PURE__ */_._or(7, $bar__OR__fooChange__script);\nconst $bar = /* @__PURE__ */_._let(\"bar/3\", $scope => {\n  _._text($scope[\"#text/2\"], $scope.bar);\n  $bar__OR__fooChange($scope);\n});\nconst $pattern2 = ($scope, $pattern) => {\n  $foo2($scope, $pattern.foo);\n  $fooChange2($scope, $pattern.fooChange);\n};\nexport function $setup($scope) {\n  $bar($scope, 0);\n  $pattern2($scope, {\n    foo: 1,\n    fooChange: $foo($scope)\n  });\n}\nconst $foo2 = ($scope, foo) => _._text($scope[\"#text/1\"], foo);\nconst $fooChange2 = /* @__PURE__ */_._const(\"$fooChange\", $bar__OR__fooChange);\nfunction $foo($scope) {\n  return function (v) {\n    $bar($scope, v);\n  };\n}\n_._resume(\"__tests__/template.marko_0/foo\", $foo);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-destructured/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let bar = 0;\n  const {\n    fooChange: $fooChange,\n    foo\n  } = {\n    foo: 1,\n    fooChange: _._resume(function (v) {\n      bar = v;\n    }, \"__tests__/template.marko_0/foo\", $scope0_id)\n  };\n  _._html(`<button>${_._escape(foo)}:<!>${_._escape(bar)}${_._el_resume($scope0_id, \"#text/2\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_bar_$fooChange\");\n  _._scope($scope0_id, {\n    bar,\n    $fooChange\n  }, \"__tests__/template.marko\", 0, {\n    bar: \"1:5\",\n    $fooChange: \"9:20\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-destructured/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  1:0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1:1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1:2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1:3\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-destructured/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1:\n      <!---->\n      0\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          bar: 0\n        }], _.a.$fooChange = _._[\n          \"__tests__/template.marko_0/foo\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_bar_$fooChange 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1:\n      <!---->\n      1\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          bar: 0\n        }], _.a.$fooChange = _._[\n          \"__tests__/template.marko_0/foo\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_bar_$fooChange 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text1 \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1:\n      <!---->\n      2\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          bar: 0\n        }], _.a.$fooChange = _._[\n          \"__tests__/template.marko_0/foo\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_bar_$fooChange 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text1 \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1:\n      <!---->\n      3\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          bar: 0\n        }], _.a.$fooChange = _._[\n          \"__tests__/template.marko_0/foo\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_bar_$fooChange 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text1 \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-destructured/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  1:0\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-destructured/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>1:<!>0<!--M_*1 #text/2--></button><!--M_*1 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={bar:0}],_.a.$fooChange=_._[\"__tests__/template.marko_0/foo\"](_.a),_.b),\"__tests__/template.marko_0_bar_$fooChange 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1:\n      <!---->\n      0\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          bar: 0\n        }], _.a.$fooChange = _._[\n          \"__tests__/template.marko_0/foo\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_bar_$fooChange 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text0\nINSERT html/body/button/#comment0\nINSERT html/body/button/#text1\nINSERT html/body/button/#comment1\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-destructured/template.marko",
    "content": "let/bar=0\nconst/{ foo }={\n  foo: 1,\n  fooChange(v) {\n    bar = v;\n  }\n}\n\nbutton onClick() { foo = bar + 1 }\n  -- ${foo}:${bar}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-destructured/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-destructured-increment/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"o\",\n      \"$init\": \"t\",\n      \"$$bar\": \"n\",\n      \"$$foo__OR__fooChange__script\": \"r\",\n      \"$$foo__OR__fooChange\": \"f\",\n      \"$$foo2\": \"m\",\n      \"$$fooChange2\": \"a\",\n      \"$$foo\": \"c\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-destructured-increment/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0:0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1:1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2:2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3:3\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-destructured-increment/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  0:0\n</button>\n```\n\n# Mutations\n```\nINSERT button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1:1\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text2 \"0\" => \"1\"\nUPDATE button/#text0 \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2:2\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text2 \"1\" => \"2\"\nUPDATE button/#text0 \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3:3\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text2 \"2\" => \"3\"\nUPDATE button/#text0 \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-destructured-increment/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 303 (min) 188 (brotli)\nconst $bar = _._let(3, ($scope) => {\n    (_._text($scope.c, $scope.d),\n      (($scope, $pattern) => {\n        ($foo2($scope, $pattern.foo), $fooChange2($scope, $pattern.fooChange));\n      })($scope, { foo: $scope.d, fooChange: $foo($scope) }));\n  }),\n  $foo__OR__fooChange__script = _._script(\"a1\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $scope.g($scope.f + 1);\n    }),\n  ),\n  $foo__OR__fooChange = _._or(7, $foo__OR__fooChange__script),\n  $foo2 = _._const(5, ($scope) => {\n    (_._text($scope.b, $scope.f), $foo__OR__fooChange($scope));\n  }),\n  $fooChange2 = _._const(6, $foo__OR__fooChange);\nfunction $foo($scope) {\n  return function (v) {\n    $bar($scope, v);\n  };\n}\n(_._resume(\"a0\", $foo), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-destructured-increment/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button><!>:<!></button>\";\nexport const $walks = /* get, next(1), replace, over(2), replace, out(1) */\" D%c%l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $pattern2 = ($scope, $pattern) => {\n  $foo2($scope, $pattern.foo);\n  $fooChange2($scope, $pattern.fooChange);\n};\nconst $bar = /* @__PURE__ */_._let(\"bar/3\", $scope => {\n  _._text($scope[\"#text/2\"], $scope.bar);\n  $pattern2($scope, {\n    foo: $scope.bar,\n    fooChange: $foo($scope)\n  });\n});\nexport function $setup($scope) {\n  $bar($scope, 0);\n}\nconst $foo__OR__fooChange__script = _._script(\"__tests__/template.marko_0_foo_$fooChange\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $scope.$fooChange($scope.foo + 1);\n}));\nconst $foo__OR__fooChange = /* @__PURE__ */_._or(7, $foo__OR__fooChange__script);\nconst $foo2 = /* @__PURE__ */_._const(\"foo\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.foo);\n  $foo__OR__fooChange($scope);\n});\nconst $fooChange2 = /* @__PURE__ */_._const(\"$fooChange\", $foo__OR__fooChange);\nfunction $foo($scope) {\n  return function (v) {\n    $bar($scope, v);\n  };\n}\n_._resume(\"__tests__/template.marko_0/foo\", $foo);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-destructured-increment/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let bar = 0;\n  const {\n    fooChange: $fooChange,\n    foo\n  } = {\n    foo: bar,\n    fooChange: _._resume(function (v) {\n      bar = v;\n    }, \"__tests__/template.marko_0/foo\", $scope0_id)\n  };\n  _._html(`<button>${_._escape(foo)}${_._el_resume($scope0_id, \"#text/1\")}:<!>${_._escape(bar)}${_._el_resume($scope0_id, \"#text/2\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_foo_$fooChange\");\n  _._scope($scope0_id, {\n    foo,\n    $fooChange\n  }, \"__tests__/template.marko\", 0, {\n    foo: \"2:9\",\n    $fooChange: \"9:20\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-destructured-increment/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0:0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1:1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2:2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3:3\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-destructured-increment/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*1 #text/1-->\n      :\n      <!---->\n      0\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          foo: 0\n        }], _.a.$fooChange = _._[\n          \"__tests__/template.marko_0/foo\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_foo_$fooChange 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*1 #text/1-->\n      :\n      <!---->\n      1\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          foo: 0\n        }], _.a.$fooChange = _._[\n          \"__tests__/template.marko_0/foo\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_foo_$fooChange 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text2 \"0\" => \"1\"\nUPDATE html/body/button/#text0 \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      2\n      <!--M_*1 #text/1-->\n      :\n      <!---->\n      2\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          foo: 0\n        }], _.a.$fooChange = _._[\n          \"__tests__/template.marko_0/foo\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_foo_$fooChange 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text2 \"1\" => \"2\"\nUPDATE html/body/button/#text0 \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      3\n      <!--M_*1 #text/1-->\n      :\n      <!---->\n      3\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          foo: 0\n        }], _.a.$fooChange = _._[\n          \"__tests__/template.marko_0/foo\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_foo_$fooChange 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text2 \"2\" => \"3\"\nUPDATE html/body/button/#text0 \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-destructured-increment/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  0:0\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-destructured-increment/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>0<!--M_*1 #text/1-->:<!>0<!--M_*1 #text/2--></button><!--M_*1 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={foo:0}],_.a.$fooChange=_._[\"__tests__/template.marko_0/foo\"](_.a),_.b),\"__tests__/template.marko_0_foo_$fooChange 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*1 #text/1-->\n      :\n      <!---->\n      0\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          foo: 0\n        }], _.a.$fooChange = _._[\n          \"__tests__/template.marko_0/foo\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_foo_$fooChange 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text0\nINSERT html/body/button/#comment0\nINSERT html/body/button/#text1\nINSERT html/body/button/#comment1\nINSERT html/body/button/#text2\nINSERT html/body/button/#comment2\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-destructured-increment/template.marko",
    "content": "let/bar=0\nconst/{ foo }={\n  foo: bar,\n  fooChange(v) {\n    bar = v;\n  }\n}\n\nbutton onClick() { foo++ }\n  -- ${foo}:${bar}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-destructured-increment/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"r\",\n      \"$init\": \"e\",\n      \"$$input__OR__valueChange__script\": \"o\",\n      \"$$input__OR__valueChange\": \"t\",\n      \"$$input\": \"a\",\n      \"$$valueChange2\": \"m\",\n      \"$$count\": \"n\",\n      \"$$valueChange\": \"u\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/__snapshots__/csr.expected.md",
    "content": "# Render\n# Mutations\n```\nINSERT #text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"\";\nexport const $walks = \"\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $input__OR__valueChange__script = _._script(\"__tests__/tags/child.marko_0_input_$valueChange\", $scope => {\n  $scope.input;\n  if (_._call($scope.$valueChange, 2) !== 2) {\n    // Assignments always return their value.\n    throw new Error(`Expected value to be 2`);\n  }\n});\nconst $input__OR__valueChange = /* @__PURE__ */_._or(3, $input__OR__valueChange__script);\nexport const $input = /* @__PURE__ */_._const(\"input\", $scope => {\n  $valueChange2($scope, $scope.input.valueChange);\n  $input__OR__valueChange($scope);\n});\nconst $valueChange2 = /* @__PURE__ */_._const(\"$valueChange\", $input__OR__valueChange);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 277 (min) 180 (brotli)\nconst $input__OR__valueChange__script = _._script(\"a0\", ($scope) => {\n    if (($scope.b, 2 !== _._call($scope.c, 2)))\n      throw new Error(\"Expected value to be 2\");\n  }),\n  $input__OR__valueChange = _._or(3, $input__OR__valueChange__script),\n  $input = _._const(1, ($scope) => {\n    ($valueChange2($scope, $scope.b.valueChange),\n      $input__OR__valueChange($scope));\n  }),\n  $valueChange2 = _._const(2, $input__OR__valueChange),\n  $count = _._let(1, ($scope) =>\n    $input($scope.a, { value: $scope.b, valueChange: $valueChange($scope) }),\n  );\nfunction $valueChange($scope) {\n  return (_new_count) => {\n    $count($scope, _new_count);\n  };\n}\n(_._resume(\"b0\", $valueChange), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/__snapshots__/dom.expected/template.js",
    "content": "export const $template = _child_template;\nexport const $walks = /* <child> */`/${_child_walks}&`;\nimport { $setup as _child, $input as _child_input, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $count = /* @__PURE__ */_._let(\"count/1\", $scope => _child_input($scope[\"#childScope/0\"], {\n  value: $scope.count,\n  valueChange: $valueChange($scope)\n}));\nexport function $setup($scope) {\n  _child($scope[\"#childScope/0\"]);\n  $count($scope, 0);\n}\nfunction $valueChange($scope) {\n  return _new_count => {\n    $count($scope, _new_count);\n  };\n}\n_._resume(\"__tests__/template.marko_0/valueChange\", $valueChange);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    valueChange: $valueChange,\n    value\n  } = input;\n  _._script($scope0_id, \"__tests__/tags/child.marko_0_input_$valueChange\");\n  _._scope($scope0_id, {\n    input,\n    $valueChange\n  }, \"__tests__/tags/child.marko\", 0, {\n    input: 0,\n    $valueChange: \"4:8\"\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/__snapshots__/html.expected/template.js",
    "content": "import _child from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let count = 0;\n  const $childScope = _._peek_scope_id();\n  _child({\n    value: count,\n    valueChange: _._resume(_new_count => {\n      count = _new_count;\n    }, \"__tests__/template.marko_0/valueChange\", $scope0_id)\n  });\n  _._scope($scope0_id, {\n    \"#childScope/0\": _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.d = {\n          \"#childScope/0\": _.b = {\n            input: _.a = {\n              value: 0\n            }\n          }\n        }, _.b], _.a.valueChange = _.b.$valueChange = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.d), _.c),\n        \"__tests__/tags/child.marko_0_input_$valueChange 2\"\n      ];\n      M._.w()\n    </script>\n  </head>\n  <body />\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.d={\"#childScope/0\":_.b={input:_.a={value:0}}},_.b],_.a.valueChange=_.b.$valueChange=_._[\"__tests__/template.marko_0/valueChange\"](_.d),_.c),\"__tests__/tags/child.marko_0_input_$valueChange 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.d = {\n          \"#childScope/0\": _.b = {\n            input: _.a = {\n              value: 0\n            }\n          }\n        }, _.b], _.a.valueChange = _.b.$valueChange = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.d), _.c),\n        \"__tests__/tags/child.marko_0_input_$valueChange 2\"\n      ];\n      M._.w()\n    </script>\n  </head>\n  <body />\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/head/script\nINSERT html/head/script/#text\nINSERT html/body\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/tags/child.marko",
    "content": "<const/{value}=input>\n<script>\n  input;\n  if ((value = 2) !== 2) {\n    // Assignments always return their value.\n    throw new Error(`Expected value to be 2`);\n  }\n</script>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/template.marko",
    "content": "<let/count=0>\n<child:=count/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{}, wait],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-in-wrapped-function/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"m\",\n      \"$$count__script\": \"o\",\n      \"$$count\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-in-wrapped-function/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-in-wrapped-function/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n# Mutations\n```\nINSERT button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-in-wrapped-function/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 106 (min) 104 (brotli)\nconst $count__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", () => {\n      $count($scope, $scope.c + 1);\n    }),\n  ),\n  $count = _._let(2, ($scope) => {\n    (_._text($scope.b, $scope.c), $count__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-in-wrapped-function/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button> </button>\";\nexport const $walks = /* get, next(1), get, out(1) */\" D l\";\nfunction identity(fn) {\n  return fn;\n}\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $count__script = _._script(\"__tests__/template.marko_0_count\", $scope => _._on($scope[\"#button/0\"], \"click\", identity(() => {\n  $count($scope, $scope.count + 1);\n})));\nconst $count = /* @__PURE__ */_._let(\"count/2\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.count);\n  $count__script($scope);\n});\nexport function $setup($scope) {\n  $count($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-in-wrapped-function/__snapshots__/html.expected/template.js",
    "content": "function identity(fn) {\n  return fn;\n}\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let count = 0;\n  _._html(`<button>${_._escape(count)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_count\");\n  _._scope($scope0_id, {\n    count\n  }, \"__tests__/template.marko\", 0, {\n    count: \"5:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-in-wrapped-function/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-in-wrapped-function/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      2\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      3\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-in-wrapped-function/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  0\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-in-wrapped-function/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>0<!--M_*1 #text/1--></button><!--M_*1 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{count:0}]),\"__tests__/template.marko_0_count 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-in-wrapped-function/template.marko",
    "content": "static function identity(fn) {\n  return fn;\n}\n\n<let/count=0>\n<button onClick=identity(() => {\n  count++\n})>${count}</button>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-in-wrapped-function/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-live-read/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$resetCount2__script\": \"n\",\n      \"$$resetCount2\": \"r\",\n      \"$$count__script\": \"c\",\n      \"$$count\": \"i\",\n      \"$$resetCount\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-live-read/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n<button />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n<button />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  4\n</button>\n<button />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  6\n</button>\n<button />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-live-read/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n<button />\n```\n\n# Mutations\n```\nINSERT button0, button1\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n<button />\n```\n\n# Mutations\n```\nUPDATE button0/#text \"0\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  4\n</button>\n<button />\n```\n\n# Mutations\n```\nUPDATE button0/#text \"2\" => \"4\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  6\n</button>\n<button />\n```\n\n# Mutations\n```\nUPDATE button0/#text \"4\" => \"6\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-live-read/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 264 (min) 162 (brotli)\nconst $resetCount2__script = _._script(\"a1\", ($scope) =>\n    _._on($scope.c, \"click\", $scope.e),\n  ),\n  $resetCount2 = _._const(4, $resetCount2__script),\n  $count__script = _._script(\"a2\", ($scope) => {\n    (_._on($scope.a, \"click\", function () {\n      ($count($scope, $scope.d + 1), $count($scope, $scope.d + 1));\n    }),\n      $scope.d);\n  }),\n  $count = _._let(3, ($scope) => {\n    (_._text($scope.b, $scope.d),\n      $resetCount2($scope, $resetCount($scope)),\n      $count__script($scope));\n  });\nfunction $resetCount($scope) {\n  return function () {\n    $scope.d > 0 && $count($scope, 0);\n  };\n}\n(_._resume(\"a0\", $resetCount), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-live-read/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button> </button><button></button>\";\nexport const $walks = /* get, next(1), get, out(1), get, over(1) */\" D l b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $resetCount2__script = _._script(\"__tests__/template.marko_0_resetCount\", $scope => _._on($scope[\"#button/2\"], \"click\", $scope.resetCount));\nconst $resetCount2 = /* @__PURE__ */_._const(\"resetCount\", $resetCount2__script);\nconst $count__script = _._script(\"__tests__/template.marko_0_count\", $scope => {\n  _._on($scope[\"#button/0\"], \"click\", function () {\n    $count($scope, $scope.count + 1);\n    $count($scope, $scope.count + 1);\n  });\n  $scope.count;\n});\nconst $count = /* @__PURE__ */_._let(\"count/3\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.count);\n  $resetCount2($scope, $resetCount($scope));\n  $count__script($scope);\n});\nexport function $setup($scope) {\n  $count($scope, 0);\n}\nfunction $resetCount($scope) {\n  return function () {\n    if ($scope.count > 0) {\n      $count($scope, 0);\n    }\n  };\n}\n_._resume(\"__tests__/template.marko_0/resetCount\", $resetCount);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-live-read/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let count = 0;\n  const resetCount = _._resume(function () {\n    if (count > 0) {\n      count = 0;\n    }\n  }, \"__tests__/template.marko_0/resetCount\", $scope0_id);\n  _._html(`<button>${_._escape(count)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}<button></button>${_._el_resume($scope0_id, \"#button/2\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_resetCount\");\n  _._script($scope0_id, \"__tests__/template.marko_0_count\");\n  _._scope($scope0_id, {\n    count,\n    resetCount\n  }, \"__tests__/template.marko\", 0, {\n    count: \"1:6\",\n    resetCount: \"2:8\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-live-read/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n<button />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n<button />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  4\n</button>\n<button />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  6\n</button>\n<button />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-live-read/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <button />\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          count: 0\n        }], _.a.resetCount = _._[\n          \"__tests__/template.marko_0/resetCount\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_resetCount 1 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      2\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <button />\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          count: 0\n        }], _.a.resetCount = _._[\n          \"__tests__/template.marko_0/resetCount\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_resetCount 1 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button0/#text \"0\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      4\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <button />\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          count: 0\n        }], _.a.resetCount = _._[\n          \"__tests__/template.marko_0/resetCount\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_resetCount 1 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button0/#text \"2\" => \"4\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      6\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <button />\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          count: 0\n        }], _.a.resetCount = _._[\n          \"__tests__/template.marko_0/resetCount\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_resetCount 1 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button0/#text \"4\" => \"6\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-live-read/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  0\n</button>\n<button />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-live-read/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>0<!--M_*1 #text/1--></button><!--M_*1 #button/0--><button></button><!--M_*1 #button/2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={count:0}],_.a.resetCount=_._[\"__tests__/template.marko_0/resetCount\"](_.a),_.b),\"__tests__/template.marko_0_resetCount 1 __tests__/template.marko_0_count 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <button />\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          count: 0\n        }], _.a.resetCount = _._[\n          \"__tests__/template.marko_0/resetCount\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_resetCount 1 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button0\nINSERT html/body/button0/#text\nINSERT html/body/button0/#comment\nINSERT html/body/#comment0\nINSERT html/body/button1\nINSERT html/body/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-live-read/template.marko",
    "content": "<let/count=0>\n<const/resetCount() { if (count > 0) { count = 0 }}>\n<button onClick() { count++; count++ }>${count}</button>\n<button onClick=resetCount/>\n\n<script>count;</script>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-live-read/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-to-owner-closure/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$if_content__setup\": \"m\",\n      \"$$if\": \"r\",\n      \"$$hide\": \"i\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-to-owner-closure/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-to-owner-closure/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<button />\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, button, #comment1\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE button after #text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-to-owner-closure/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 138 (min) 110 (brotli)\nconst $if_content__setup = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $hide($scope._, !0);\n    }),\n  ),\n  $if = _._if(0, \"<button></button>\", \" b\", $if_content__setup),\n  $hide = _._let(1, ($scope) => $if($scope, $scope.b ? 1 : 0));\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-to-owner-closure/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content__setup__script = _._script(\"__tests__/template.marko_1\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $hide($scope._, true);\n}));\nconst $if_content__setup = $if_content__setup__script;\nconst $if = /* @__PURE__ */_._if(\"#text/0\", \"<button></button>\", /* get, over(1) */\" b\", $if_content__setup);\nconst $hide = /* @__PURE__ */_._let(\"hide/1\", $scope => $if($scope, !$scope.hide ? 0 : 1));\nexport function $setup($scope) {\n  $hide($scope, undefined);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-to-owner-closure/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let hide = undefined;\n  _._if(() => {\n    if (!hide) {\n      const $scope1_id = _._scope_id();\n      _._html(`<button></button>${_._el_resume($scope1_id, \"#button/0\")}`);\n      _._script($scope1_id, \"__tests__/template.marko_1\");\n      _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"2:2\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/0\", 1, /* hide */1, /* hide */1, 0, 1);\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-to-owner-closure/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-to-owner-closure/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*2 #button/0-->\n    <!--M_|1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {},\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <!--M_|1 #text/0 2-->\n    <!--M_*2 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {},\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/#comment0 after html/body/#comment1\nINSERT html/body/#comment0\nREMOVE button after html/body/#comment0\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-to-owner-closure/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-to-owner-closure/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button></button><!--M_*2 #button/0--><!--M_|1 #text/0 2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={},{_:_.a}]),\"__tests__/template.marko_1 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*2 #button/0-->\n    <!--M_|1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {},\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-to-owner-closure/template.marko",
    "content": "<let/hide/>\n<if=!hide>\n  <button onClick() { hide = true }/>\n</>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-to-owner-closure/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nconst click = (container: Element) => {\n  container.querySelector<HTMLButtonElement>(\"button\")!.click();\n};\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-to-pruned-let/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_2\": \"t\",\n      \"$init\": \"o\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-to-pruned-let/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Before\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  0\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-to-pruned-let/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  Before\n</button>\n```\n\n# Mutations\n```\nINSERT button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  0\n</button>\n```\n\n# Mutations\n```\nREMOVE #text in button\nINSERT button/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-to-pruned-let/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 75 (min) 74 (brotli)\n(_2._script(\"a0\", ($scope) =>\n  _2._on($scope.a, \"click\", function (_, el) {\n    el.textContent = \"0\";\n  }),\n),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-to-pruned-let/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button>Before</button>\";\nexport const $walks = /* get, over(1) */\" b\";\nimport * as _2 from \"@marko/runtime-tags/debug/dom\";\nconst $setup__script = _2._script(\"__tests__/template.marko_0\", $scope => _2._on($scope[\"#button/0\"], \"click\", function (_, el) {\n  el.textContent = \"\" + /* count */0;\n}));\nexport function $setup($scope) {\n  /* count */0;\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_2._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-to-pruned-let/__snapshots__/html.expected/template.js",
    "content": "import * as _2 from \"@marko/runtime-tags/debug/html\";\nexport default _2._template(\"__tests__/template.marko\", input => {\n  _2._scope_reason();\n  const $scope0_id = _2._scope_id();\n  let count = 0;\n  _2._html(`<button>Before</button>${_2._el_resume($scope0_id, \"#button/0\")}`);\n  _2._script($scope0_id, \"__tests__/template.marko_0\");\n  _2._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-to-pruned-let/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Before\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  0\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-to-pruned-let/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Before\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #text in html/body/button\nINSERT html/body/button/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-to-pruned-let/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  Before\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-to-pruned-let/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>Before</button><!--M_*1 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0]),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Before\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-to-pruned-let/template.marko",
    "content": "<let/count=0>\n<button onClick(_, el) { el.textContent = \"\" + (count = 0); }>Before</>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-to-pruned-let/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-to-pruned-let-with-change-handler/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_2\": \"t\",\n      \"$init\": \"o\",\n      \"$$liveCount\": \"n\",\n      \"$$count\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-to-pruned-let-with-change-handler/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Before\n</button>\n<div>\n  0\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n<div>\n  1\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-to-pruned-let-with-change-handler/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  Before\n</button>\n<div>\n  0\n</div>\n```\n\n# Mutations\n```\nINSERT button, div\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n<div>\n  1\n</div>\n```\n\n# Mutations\n```\nREMOVE #text in button\nINSERT button/#text\nUPDATE div/#text \"0\" => \"1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-to-pruned-let-with-change-handler/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 187 (min) 127 (brotli)\nconst $liveCount = _2._let(2, ($scope) => _2._text($scope.b, $scope.c)),\n  $count = _2._let(3);\n(_2._script(\"a1\", ($scope) =>\n  _2._on($scope.a, \"click\", function (_, el) {\n    el.textContent = \"\" + $count($scope, 1);\n  }),\n),\n  _2._resume(\"a0\", function ($scope) {\n    return function (v) {\n      $liveCount($scope, v);\n    };\n  }),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-to-pruned-let-with-change-handler/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button>Before</button><div> </div>\";\nexport const $walks = /* get, over(1), next(1), get, out(1) */\" bD l\";\nimport * as _2 from \"@marko/runtime-tags/debug/dom\";\nconst $liveCount = /* @__PURE__ */_2._let(\"liveCount/2\", $scope => _2._text($scope[\"#text/1\"], $scope.liveCount));\nconst $count = /* @__PURE__ */_2._let(\"count/3\");\nconst $setup__script = _2._script(\"__tests__/template.marko_0\", $scope => _2._on($scope[\"#button/0\"], \"click\", function (_, el) {\n  el.textContent = \"\" + $count($scope, 1);\n}));\nexport function $setup($scope) {\n  $liveCount($scope, 0);\n  $count($scope, 0, $valueChange($scope));\n  $setup__script($scope);\n}\nfunction $valueChange($scope) {\n  return function (v) {\n    $liveCount($scope, v);\n  };\n}\n_2._resume(\"__tests__/template.marko_0/valueChange\", $valueChange);\nexport default /* @__PURE__ */_2._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-to-pruned-let-with-change-handler/__snapshots__/html.expected/template.js",
    "content": "import * as _2 from \"@marko/runtime-tags/debug/html\";\nexport default _2._template(\"__tests__/template.marko\", input => {\n  _2._scope_reason();\n  const $scope0_id = _2._scope_id();\n  let liveCount = 0;\n  let count = 0;\n  _2._html(`<button>Before</button>${_2._el_resume($scope0_id, \"#button/0\")}<div>${_2._escape(liveCount)}${_2._el_resume($scope0_id, \"#text/1\")}</div>`);\n  _2._script($scope0_id, \"__tests__/template.marko_0\");\n  _2._scope($scope0_id, {\n    \"TagVariableChange:count\": _2._resume(function (v) {\n      liveCount = v;\n    }, \"__tests__/template.marko_0/valueChange\", $scope0_id) || void 0\n  }, \"__tests__/template.marko\", 0);\n  _2._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-to-pruned-let-with-change-handler/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Before\n</button>\n<div>\n  0\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n<div>\n  1\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-to-pruned-let-with-change-handler/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Before\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      0\n      <!--M_*1 #text/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {}], _.a[\"TagVariableChange:count\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      1\n      <!--M_*1 #text/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {}], _.a[\"TagVariableChange:count\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #text in html/body/button\nINSERT html/body/button/#text\nUPDATE html/body/div/#text \"0\" => \"1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-to-pruned-let-with-change-handler/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  Before\n</button>\n<div>\n  0\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-to-pruned-let-with-change-handler/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>Before</button><!--M_*1 #button/0--><div>0<!--M_*1 #text/1--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={}],_.a[\"TagVariableChange:count\"]=_._[\"__tests__/template.marko_0/valueChange\"](_.a),_.b),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Before\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      0\n      <!--M_*1 #text/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {}], _.a[\"TagVariableChange:count\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/div/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-to-pruned-let-with-change-handler/template.marko",
    "content": "<let/liveCount=0>\n<let/count=0 valueChange(v) {\n  liveCount = v;\n}>\n<button onClick(_, el) { el.textContent = \"\" + (count = 1); }>Before</>\n<div>${liveCount}</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assign-to-pruned-let-with-change-handler/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assignment-before-tag-var/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/assignment-before-tag-var/template.marko:3:3\n      1 | <button onClick() {\n      2 |   lastClickCount = clickCount;\n    > 3 |   clickCount++;\n        |   ^^^^^^^^^^^^ Cannot assign to hoisted tag variable.\n      4 | }>+</button>\n      5 |\n      6 | <let/clickCount = 0/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assignment-before-tag-var/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/assignment-before-tag-var/template.marko:3:3\n      1 | <button onClick() {\n      2 |   lastClickCount = clickCount;\n    > 3 |   clickCount++;\n        |   ^^^^^^^^^^^^ Cannot assign to hoisted tag variable.\n      4 | }>+</button>\n      5 |\n      6 | <let/clickCount = 0/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assignment-before-tag-var/template.marko",
    "content": "<button onClick() {\n  lastClickCount = clickCount;\n  clickCount++;\n}>+</button>\n\n<let/clickCount = 0/>\n<let/lastClickCount/>\n<span>${clickCount} was ${lastClickCount}</span>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/assignment-before-tag-var/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"a\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  data-level=\"4\"\n/>\n```\n\n\n# Render ASYNC\n```html\n<div\n  data-level=\"4\"\n>\n  LOADING...\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div\n  data-level=\"4\"\n>\n  <div\n    data-level=\"3\"\n  />\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div\n  data-level=\"4\"\n>\n  <div\n    data-level=\"3\"\n  >\n    LOADING...\n  </div>\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div\n  data-level=\"4\"\n>\n  <div\n    data-level=\"3\"\n  >\n    <div\n      data-level=\"2\"\n    />\n  </div>\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div\n  data-level=\"4\"\n>\n  <div\n    data-level=\"3\"\n  >\n    <div\n      data-level=\"2\"\n    >\n      LOADING...\n    </div>\n  </div>\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div\n  data-level=\"4\"\n>\n  <div\n    data-level=\"3\"\n  >\n    <div\n      data-level=\"2\"\n    >\n      <div\n        data-level=\"1\"\n      />\n    </div>\n  </div>\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div\n  data-level=\"4\"\n>\n  <div\n    data-level=\"3\"\n  >\n    <div\n      data-level=\"2\"\n    >\n      <div\n        data-level=\"1\"\n      >\n        LOADING...\n      </div>\n    </div>\n  </div>\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div\n  data-level=\"4\"\n>\n  <div\n    data-level=\"3\"\n  >\n    <div\n      data-level=\"2\"\n    >\n      <div\n        data-level=\"1\"\n      />\n    </div>\n  </div>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<!---->\n<div\n  data-level=\"4\"\n>\n  <!---->\n  <!---->\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, div, #comment2, #comment3\n```\n\n# Render ASYNC\n```html\n<!---->\n<!---->\n<div\n  data-level=\"4\"\n>\n  LOADING...\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT div/#text\nREMOVE #document-fragment/#comment0 after div/#text\nREMOVE #document-fragment/#text after div/#text\nREMOVE #document-fragment/#comment1 after div/#text\n```\n\n# Render ASYNC\n```html\n<!---->\n<!---->\n<div\n  data-level=\"4\"\n>\n  <!---->\n  <!---->\n  <!---->\n  <div\n    data-level=\"3\"\n  >\n    <!---->\n    <!---->\n  </div>\n  <!---->\n  <!---->\n  <!---->\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT div/#comment0, div/#comment1, div/#comment2, #text, div/#comment3, div/#comment4, div/#comment5\nREMOVE #text after div/#comment5\nINSERT div/div\nREMOVE #text after div/div\nUPDATE div/div[data-level] null => \"3\"\nINSERT div/div/#comment0, div/div/#text, div/div/#comment1\nREMOVE #text after div/div/#comment1\n```\n\n# Render ASYNC\n```html\n<!---->\n<!---->\n<div\n  data-level=\"4\"\n>\n  <!---->\n  <!---->\n  <!---->\n  <div\n    data-level=\"3\"\n  >\n    LOADING...\n  </div>\n  <!---->\n  <!---->\n  <!---->\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT div/div/#text\nREMOVE #document-fragment/#comment0 after div/div/#text\nREMOVE #document-fragment/#text after div/div/#text\nREMOVE #document-fragment/#comment1 after div/div/#text\n```\n\n# Render ASYNC\n```html\n<!---->\n<!---->\n<div\n  data-level=\"4\"\n>\n  <!---->\n  <!---->\n  <!---->\n  <div\n    data-level=\"3\"\n  >\n    <!---->\n    <!---->\n    <!---->\n    <div\n      data-level=\"2\"\n    >\n      <!---->\n      <!---->\n    </div>\n    <!---->\n    <!---->\n    <!---->\n  </div>\n  <!---->\n  <!---->\n  <!---->\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT div/div/#comment0, div/div/#comment1, div/div/#comment2, #text, div/div/#comment3, div/div/#comment4, div/div/#comment5\nREMOVE #text after div/div/#comment5\nINSERT div/div/div\nREMOVE #text after div/div/div\nUPDATE div/div/div[data-level] null => \"2\"\nINSERT div/div/div/#comment0, div/div/div/#text, div/div/div/#comment1\nREMOVE #text after div/div/div/#comment1\n```\n\n# Render ASYNC\n```html\n<!---->\n<!---->\n<div\n  data-level=\"4\"\n>\n  <!---->\n  <!---->\n  <!---->\n  <div\n    data-level=\"3\"\n  >\n    <!---->\n    <!---->\n    <!---->\n    <div\n      data-level=\"2\"\n    >\n      LOADING...\n    </div>\n    <!---->\n    <!---->\n    <!---->\n  </div>\n  <!---->\n  <!---->\n  <!---->\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT div/div/div/#text\nREMOVE #document-fragment/#comment0 after div/div/div/#text\nREMOVE #document-fragment/#text after div/div/div/#text\nREMOVE #document-fragment/#comment1 after div/div/div/#text\n```\n\n# Render ASYNC\n```html\n<!---->\n<!---->\n<div\n  data-level=\"4\"\n>\n  <!---->\n  <!---->\n  <!---->\n  <div\n    data-level=\"3\"\n  >\n    <!---->\n    <!---->\n    <!---->\n    <div\n      data-level=\"2\"\n    >\n      <!---->\n      <!---->\n      <!---->\n      <div\n        data-level=\"1\"\n      >\n        <!---->\n        <!---->\n      </div>\n      <!---->\n      <!---->\n      <!---->\n    </div>\n    <!---->\n    <!---->\n    <!---->\n  </div>\n  <!---->\n  <!---->\n  <!---->\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT div/div/div/#comment0, div/div/div/#comment1, div/div/div/#comment2, #text, div/div/div/#comment3, div/div/div/#comment4, div/div/div/#comment5\nREMOVE #text after div/div/div/#comment5\nINSERT div/div/div/div\nREMOVE #text after div/div/div/div\nUPDATE div/div/div/div[data-level] null => \"1\"\nINSERT div/div/div/div/#comment0, div/div/div/div/#text, div/div/div/div/#comment1\nREMOVE #text after div/div/div/div/#comment1\n```\n\n# Render ASYNC\n```html\n<!---->\n<!---->\n<div\n  data-level=\"4\"\n>\n  <!---->\n  <!---->\n  <!---->\n  <div\n    data-level=\"3\"\n  >\n    <!---->\n    <!---->\n    <!---->\n    <div\n      data-level=\"2\"\n    >\n      <!---->\n      <!---->\n      <!---->\n      <div\n        data-level=\"1\"\n      >\n        LOADING...\n      </div>\n      <!---->\n      <!---->\n      <!---->\n    </div>\n    <!---->\n    <!---->\n    <!---->\n  </div>\n  <!---->\n  <!---->\n  <!---->\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT div/div/div/div/#text\nREMOVE #document-fragment/#comment0 after div/div/div/div/#text\nREMOVE #document-fragment/#text after div/div/div/div/#text\nREMOVE #document-fragment/#comment1 after div/div/div/div/#text\n```\n\n# Render ASYNC\n```html\n<!---->\n<!---->\n<div\n  data-level=\"4\"\n>\n  <!---->\n  <!---->\n  <!---->\n  <div\n    data-level=\"3\"\n  >\n    <!---->\n    <!---->\n    <!---->\n    <div\n      data-level=\"2\"\n    >\n      <!---->\n      <!---->\n      <!---->\n      <div\n        data-level=\"1\"\n      >\n        <!---->\n        <!---->\n        <!---->\n        <!---->\n        <!---->\n        <!---->\n      </div>\n      <!---->\n      <!---->\n      <!---->\n    </div>\n    <!---->\n    <!---->\n    <!---->\n  </div>\n  <!---->\n  <!---->\n  <!---->\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT div/div/div/div/#comment0, div/div/div/div/#comment1, div/div/div/div/#comment2, div/div/div/div/#text, div/div/div/div/#comment3, div/div/div/div/#comment4, div/div/div/div/#comment5\nREMOVE #text after div/div/div/div/#comment5\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/dom.expected/tags/recurse.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nexport const $setup = () => {};\nimport { resolveAfter } from \"../../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\n_._enable_catch();\nconst $placeholder_content = _._content_resume(\"__tests__/tags/recurse.marko_4_content\", \"LOADING...\", /* over(1) */\"b\");\nconst $await_content__input_level = /* @__PURE__ */_._closure_get(\"input_level\", $scope => $input_level($scope[\"#childScope/0\"], $scope._._._.input_level - 1), $scope => $scope._._._, \"__tests__/tags/recurse.marko_3_input_level/pending\");\nconst $await_content__setup = $scope => {\n  $await_content__input_level($scope);\n  $setup($scope[\"#childScope/0\"]);\n};\nconst $await_content = /* @__PURE__ */_._await_content(\"#text/0\", `<!>${$template}<!>`, /* over(1), <recurse>, over(1) */`b/${$walks}&b`, $await_content__setup);\nconst $try_content__await_promise = /* @__PURE__ */_._await_promise(\"#text/0\");\nconst $try_content__setup = $scope => {\n  $await_content($scope);\n  $try_content__await_promise($scope, resolveAfter(0));\n};\nconst $if_content__input_level = /* @__PURE__ */_._if_closure(\"#text/0\", 0, $scope => _._attr($scope[\"#div/0\"], \"data-level\", $scope._.input_level));\nconst $if_content__try = /* @__PURE__ */_._try(\"#text/1\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", $try_content__setup);\nconst $if_content__setup = $scope => {\n  $if_content__input_level._($scope);\n  $if_content__try($scope, {\n    placeholder: _.attrTag({\n      content: $placeholder_content($scope)\n    })\n  });\n};\nconst $if = /* @__PURE__ */_._if(\"#text/0\", \"<div><!></div>\", /* get, next(1), replace, out(1) */\" D%l\", $if_content__setup);\nconst $input_level__closure = /* @__PURE__ */_._closure($await_content__input_level);\nexport const $input_level = /* @__PURE__ */_._const(\"input_level\", $scope => {\n  $if($scope, $scope.input_level ? 0 : 1);\n  $if_content__input_level($scope);\n  $input_level__closure($scope);\n});\nexport const $input = ($scope, input) => $input_level($scope, input.level);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/recurse.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 59 (min) 63 (brotli)\n(_._enable_catch(), _._content_resume(\"a0\", \"LOADING...\", \"b\"));\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<!>${_recurse_template}<!>`;\nexport const $walks = /* over(1), <recurse>, over(1) */`b/${_recurse_walks}&b`;\nimport { $setup as _recurse, $input_level as _recurse_input_level, $template as _recurse_template, $walks as _recurse_walks } from \"./tags/recurse.marko\";\nexport function $setup($scope) {\n  _recurse($scope[\"#childScope/0\"]);\n  _recurse_input_level($scope[\"#childScope/0\"], 4);\n}\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/html.expected/tags/recurse.js",
    "content": "import { resolveAfter } from \"../../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nconst $content = input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $input_level__closures = new Set();\n  _._if(() => {\n    if (input.level) {\n      const $scope1_id = _._scope_id();\n      _._html(`<div${_._attr(\"data-level\", input.level)}>`);\n      _._try($scope1_id, \"#text/1\", _._content_resume(\"__tests__/tags/recurse.marko_2_content\", () => {\n        const $scope2_id = _._scope_id();\n        const $scope2_reason = _._scope_reason();\n        _._await($scope2_id, \"#text/0\", resolveAfter(0), () => {\n          const $scope3_id = _._scope_id();\n          _._serialize_if($scope0_reason, /* input.level */0) && _._script($scope3_id, \"__tests__/tags/recurse.marko_3_input_level/pending\");\n          const $childScope = _._peek_scope_id();\n          _._set_serialize_reason(_._serialize_guard($scope0_reason, /* input.level */0));\n          $content({\n            level: input.level - 1\n          });\n          _._serialize_if($scope0_reason, /* input.level */0) && _._scope($scope3_id, {\n            _: _._scope_with_id($scope2_id),\n            \"#childScope/0\": _._serialize_if($scope0_reason, /* input.level */0) && _._existing_scope($childScope),\n            \"ClosureSignalIndex:input_level\": _._serialize_if($scope0_reason, /* input.level */0) && 0\n          }, \"__tests__/tags/recurse.marko\", \"7:7\");\n          _._resume_branch($scope3_id);\n        }, _._serialize_guard($scope0_reason, /* input.level */0));\n        _._serialize_if($scope0_reason, /* input.level */0) && _._scope($scope2_id, {\n          _: _._scope_with_id($scope1_id)\n        }, \"__tests__/tags/recurse.marko\", \"5:5\");\n      }, $scope1_id), {\n        placeholder: _.attrTag({\n          content: _._content_resume(\"__tests__/tags/recurse.marko_4_content\", () => {\n            _._scope_reason();\n            const $scope4_id = _._scope_id();\n            _._html(\"LOADING...\");\n          }, $scope1_id)\n        })\n      });\n      _._html(`</div>${_._el_resume($scope1_id, \"#div/0\", _._serialize_guard($scope0_reason, /* input.level */0))}`);\n      _._serialize_if($scope0_reason, /* input.level */0) && _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/tags/recurse.marko\", \"3:1\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.level */0), _._serialize_guard($scope0_reason, /* input.level */0), _._serialize_guard($scope0_reason, /* input.level */0), 0, 1);\n  _._serialize_if($scope0_reason, /* input.level */0) && _._scope($scope0_id, {\n    input_level: input.level,\n    \"ClosureScopes:input_level\": _._serialize_if($scope0_reason, /* input.level */0) && $input_level__closures\n  }, \"__tests__/tags/recurse.marko\", 0, {\n    input_level: [\"input.level\"]\n  });\n};\nexport default _._template(\"__tests__/tags/recurse.marko\", $content);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/html.expected/template.js",
    "content": "import _recurse from \"./tags/recurse.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _recurse({\n    level: 4\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  data-level=\"4\"\n>\n  LOADING...\n</div>\n```\n\n\n# Render FLUSH\n```html\n<div\n  data-level=\"4\"\n>\n  <div\n    data-level=\"3\"\n  >\n    LOADING...\n  </div>\n</div>\n```\n\n\n# Render FLUSH\n```html\n<div\n  data-level=\"4\"\n>\n  <div\n    data-level=\"3\"\n  >\n    <div\n      data-level=\"2\"\n    >\n      LOADING...\n    </div>\n  </div>\n</div>\n```\n\n\n# Render FLUSH\n```html\n<div\n  data-level=\"4\"\n>\n  <div\n    data-level=\"3\"\n  >\n    <div\n      data-level=\"2\"\n    >\n      <div\n        data-level=\"1\"\n      >\n        LOADING...\n      </div>\n    </div>\n  </div>\n</div>\n```\n\n\n# Render FLUSH\n```html\n<div\n  data-level=\"4\"\n>\n  <div\n    data-level=\"3\"\n  >\n    <div\n      data-level=\"2\"\n    >\n      <div\n        data-level=\"1\"\n      />\n    </div>\n  </div>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <div\n      data-level=\"4\"\n    >\n      <!--M_[-->\n      <!--M_!^4-->\n      LOADING...\n      <!--M_!4-->\n      <!--M_]3 #text/1 4-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 3, _.a = {\n        \"#BranchAccessor\": \"#text/1\",\n        \"#PlaceholderContent\": _.c = {}\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/tags/recurse.marko_4_content\"\n        ](_.c), _.b)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text1\n```\n\n# Render FLUSH\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <div\n      data-level=\"4\"\n    >\n      <!--M_[-->\n      <div\n        data-level=\"3\"\n      >\n        <!--M_[-->\n        <!--M_!^9-->\n        LOADING...\n        <!--M_!9-->\n        <!--M_]8 #text/1 9-->\n      </div>\n      <!--M_]3 #text/1 4-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 3, _.a = {\n        \"#BranchAccessor\": \"#text/1\",\n        \"#PlaceholderContent\": _.c = {}\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/tags/recurse.marko_4_content\"\n        ](_.c), _.b)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.e = [4, _.d = {\n        \"#BranchAccessor\": \"#text/1\",\n        \"#PlaceholderContent\": _.f = {}\n      }], _.d[\"#PlaceholderContent\"] = _._[\n        \"__tests__/tags/recurse.marko_4_content\"\n        ](_.f), _.e));\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT t\nINSERT html/body/div/div\nINSERT html/body/div/div/#comment0\nINSERT html/body/div/div/#comment1\nINSERT html/body/div/div/#text0\nINSERT html/body/div/div/#comment2\nINSERT html/body/div/div/#comment3\nINSERT t\nINSERT t/#comment\nREMOVE t after html/body/script0\nREMOVE #text after #comment\nREMOVE #comment after html/body/div/#comment0\nREMOVE #comment after html/body/div/#comment0\nINSERT html/body/div/div\nREMOVE t after html/body/script0\nINSERT html/body/div/div/#text1\nINSERT html/body/script1\n```\n\n# Render FLUSH\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <div\n      data-level=\"4\"\n    >\n      <!--M_[-->\n      <div\n        data-level=\"3\"\n      >\n        <!--M_[-->\n        <div\n          data-level=\"2\"\n        >\n          <!--M_[-->\n          <!--M_!^14-->\n          LOADING...\n          <!--M_!14-->\n          <!--M_]13 #text/1 14-->\n        </div>\n        <!--M_]8 #text/1 9-->\n      </div>\n      <!--M_]3 #text/1 4-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 3, _.a = {\n        \"#BranchAccessor\": \"#text/1\",\n        \"#PlaceholderContent\": _.c = {}\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/tags/recurse.marko_4_content\"\n        ](_.c), _.b)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.e = [4, _.d = {\n        \"#BranchAccessor\": \"#text/1\",\n        \"#PlaceholderContent\": _.f = {}\n      }], _.d[\"#PlaceholderContent\"] = _._[\n        \"__tests__/tags/recurse.marko_4_content\"\n        ](_.f), _.e));\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.h = [4, _.g = {\n        \"#BranchAccessor\": \"#text/1\",\n        \"#PlaceholderContent\": _.i = {}\n      }], _.g[\"#PlaceholderContent\"] = _._[\n        \"__tests__/tags/recurse.marko_4_content\"\n        ](_.i), _.h));\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT t\nINSERT html/body/div/div/div\nINSERT html/body/div/div/div/#comment0\nINSERT html/body/div/div/div/#comment1\nINSERT html/body/div/div/div/#text0\nINSERT html/body/div/div/div/#comment2\nINSERT html/body/div/div/div/#comment3\nINSERT t\nINSERT t/#comment\nREMOVE t after html/body/script1\nREMOVE #text after #comment\nREMOVE #comment after html/body/div/div/#comment0\nREMOVE #comment after html/body/div/div/#comment0\nINSERT html/body/div/div/div\nREMOVE t after html/body/script1\nINSERT html/body/div/div/div/#text1\nINSERT html/body/script2\n```\n\n# Render FLUSH\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <div\n      data-level=\"4\"\n    >\n      <!--M_[-->\n      <div\n        data-level=\"3\"\n      >\n        <!--M_[-->\n        <div\n          data-level=\"2\"\n        >\n          <!--M_[-->\n          <div\n            data-level=\"1\"\n          >\n            <!--M_[-->\n            <!--M_!^19-->\n            LOADING...\n            <!--M_!19-->\n            <!--M_]18 #text/1 19-->\n          </div>\n          <!--M_]13 #text/1 14-->\n        </div>\n        <!--M_]8 #text/1 9-->\n      </div>\n      <!--M_]3 #text/1 4-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 3, _.a = {\n        \"#BranchAccessor\": \"#text/1\",\n        \"#PlaceholderContent\": _.c = {}\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/tags/recurse.marko_4_content\"\n        ](_.c), _.b)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.e = [4, _.d = {\n        \"#BranchAccessor\": \"#text/1\",\n        \"#PlaceholderContent\": _.f = {}\n      }], _.d[\"#PlaceholderContent\"] = _._[\n        \"__tests__/tags/recurse.marko_4_content\"\n        ](_.f), _.e));\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.h = [4, _.g = {\n        \"#BranchAccessor\": \"#text/1\",\n        \"#PlaceholderContent\": _.i = {}\n      }], _.g[\"#PlaceholderContent\"] = _._[\n        \"__tests__/tags/recurse.marko_4_content\"\n        ](_.i), _.h));\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.k = [4, _.j = {\n        \"#BranchAccessor\": \"#text/1\",\n        \"#PlaceholderContent\": _.l = {}\n      }], _.j[\"#PlaceholderContent\"] = _._[\n        \"__tests__/tags/recurse.marko_4_content\"\n        ](_.l), _.k));\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT t\nINSERT html/body/div/div/div/div\nINSERT html/body/div/div/div/div/#comment0\nINSERT html/body/div/div/div/div/#comment1\nINSERT html/body/div/div/div/div/#text0\nINSERT html/body/div/div/div/div/#comment2\nINSERT html/body/div/div/div/div/#comment3\nINSERT t\nINSERT t/#comment\nREMOVE t after html/body/script2\nREMOVE #text after #comment\nREMOVE #comment after html/body/div/div/div/#comment0\nREMOVE #comment after html/body/div/div/div/#comment0\nINSERT html/body/div/div/div/div\nREMOVE t after html/body/script2\nINSERT html/body/div/div/div/div/#text1\nINSERT html/body/script3\n```\n\n# Render FLUSH\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <div\n      data-level=\"4\"\n    >\n      <!--M_[-->\n      <div\n        data-level=\"3\"\n      >\n        <!--M_[-->\n        <div\n          data-level=\"2\"\n        >\n          <!--M_[-->\n          <div\n            data-level=\"1\"\n          >\n            <!--M_[-->\n            <!--M_]18 #text/1 19-->\n          </div>\n          <!--M_]13 #text/1 14-->\n        </div>\n        <!--M_]8 #text/1 9-->\n      </div>\n      <!--M_]3 #text/1 4-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 3, _.a = {\n        \"#BranchAccessor\": \"#text/1\",\n        \"#PlaceholderContent\": _.c = {}\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/tags/recurse.marko_4_content\"\n        ](_.c), _.b)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.e = [4, _.d = {\n        \"#BranchAccessor\": \"#text/1\",\n        \"#PlaceholderContent\": _.f = {}\n      }], _.d[\"#PlaceholderContent\"] = _._[\n        \"__tests__/tags/recurse.marko_4_content\"\n        ](_.f), _.e));\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.h = [4, _.g = {\n        \"#BranchAccessor\": \"#text/1\",\n        \"#PlaceholderContent\": _.i = {}\n      }], _.g[\"#PlaceholderContent\"] = _._[\n        \"__tests__/tags/recurse.marko_4_content\"\n        ](_.i), _.h));\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.k = [4, _.j = {\n        \"#BranchAccessor\": \"#text/1\",\n        \"#PlaceholderContent\": _.l = {}\n      }], _.j[\"#PlaceholderContent\"] = _._[\n        \"__tests__/tags/recurse.marko_4_content\"\n        ](_.l), _.k));\n      M._.w()\n    </script>\n    <script>\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT t\nREMOVE t after html/body/script3\nREMOVE #text after #comment\nREMOVE #comment after html/body/div/div/div/div/#comment0\nREMOVE #comment after html/body/div/div/div/div/#comment0\nINSERT html/body/script4\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render ASYNC\n```html\n<div\n  data-level=\"4\"\n>\n  LOADING...\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div\n  data-level=\"4\"\n>\n  <div\n    data-level=\"3\"\n  >\n    LOADING...\n  </div>\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div\n  data-level=\"4\"\n>\n  <div\n    data-level=\"3\"\n  >\n    <div\n      data-level=\"2\"\n    >\n      LOADING...\n    </div>\n  </div>\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div\n  data-level=\"4\"\n>\n  <div\n    data-level=\"3\"\n  >\n    <div\n      data-level=\"2\"\n    >\n      <div\n        data-level=\"1\"\n      >\n        LOADING...\n      </div>\n    </div>\n  </div>\n</div>\n```\n\n\n# Render End\n```html\n<div\n  data-level=\"4\"\n>\n  <div\n    data-level=\"3\"\n  >\n    <div\n      data-level=\"2\"\n    >\n      <div\n        data-level=\"1\"\n      />\n    </div>\n  </div>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div data-level=4><!--M_[--><!--M_!^4-->LOADING...<!--M_!4--><!--M_]3 #text/1 4--></div><style M_>t{display:none}</style><t M_=4><!--M_#b--></t><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,3,_.a={\"#BranchAccessor\":\"#text/1\",\"#PlaceholderContent\":_.c={}}],_.a[\"#PlaceholderContent\"]=_._[\"__tests__/tags/recurse.marko_4_content\"](_.c),_.b)];REORDER_RUNTIME(M._);M._.w()</script>\n```\n\n# Write\n```html\n  <t M_=b><div data-level=3><!--M_[--><!--M_!^9-->LOADING...<!--M_!9--><!--M_]8 #text/1 9--></div></t><t M_=9><!--M_#c--></t><script>M._.r.push(_=>(_.e=[4,_.d={\"#BranchAccessor\":\"#text/1\",\"#PlaceholderContent\":_.f={}}],_.d[\"#PlaceholderContent\"]=_._[\"__tests__/tags/recurse.marko_4_content\"](_.f),_.e));M._.w()</script>\n```\n\n# Write\n```html\n  <t M_=c><div data-level=2><!--M_[--><!--M_!^14-->LOADING...<!--M_!14--><!--M_]13 #text/1 14--></div></t><t M_=14><!--M_#d--></t><script>M._.r.push(_=>(_.h=[4,_.g={\"#BranchAccessor\":\"#text/1\",\"#PlaceholderContent\":_.i={}}],_.g[\"#PlaceholderContent\"]=_._[\"__tests__/tags/recurse.marko_4_content\"](_.i),_.h));M._.w()</script>\n```\n\n# Write\n```html\n  <t M_=d><div data-level=1><!--M_[--><!--M_!^19-->LOADING...<!--M_!19--><!--M_]18 #text/1 19--></div></t><t M_=19><!--M_#e--></t><script>M._.r.push(_=>(_.k=[4,_.j={\"#BranchAccessor\":\"#text/1\",\"#PlaceholderContent\":_.l={}}],_.j[\"#PlaceholderContent\"]=_._[\"__tests__/tags/recurse.marko_4_content\"](_.l),_.k));M._.w()</script>\n```\n\n# Write\n```html\n  <t M_=e></t><script>M._.w()</script>\n```\n\n# Render ASYNC\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <div\n      data-level=\"4\"\n    >\n      <!--M_[-->\n      <!--M_!^4-->\n      LOADING...\n      <!--M_!4-->\n      <!--M_]3 #text/1 4-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 3, _.a = {\n        \"#BranchAccessor\": \"#text/1\",\n        \"#PlaceholderContent\": _.c = {}\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/tags/recurse.marko_4_content\"\n        ](_.c), _.b)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#comment0\nINSERT html/body/div/#comment1\nINSERT html/body/div/#text\nINSERT html/body/div/#comment2\nINSERT html/body/div/#comment3\nINSERT html/head/style\nINSERT html/head/style/#text\nINSERT t\nINSERT t/#comment\nREMOVE html/head/style after html/body/div\nINSERT html/head/style\nREMOVE t after html/body/div\nINSERT html/body/script\n```\n\n# Render ASYNC\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <div\n      data-level=\"4\"\n    >\n      <!--M_[-->\n      <div\n        data-level=\"3\"\n      >\n        <!--M_[-->\n        <!--M_!^9-->\n        LOADING...\n        <!--M_!9-->\n        <!--M_]8 #text/1 9-->\n      </div>\n      <!--M_]3 #text/1 4-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 3, _.a = {\n        \"#BranchAccessor\": \"#text/1\",\n        \"#PlaceholderContent\": _.c = {}\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/tags/recurse.marko_4_content\"\n        ](_.c), _.b)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.e = [4, _.d = {\n        \"#BranchAccessor\": \"#text/1\",\n        \"#PlaceholderContent\": _.f = {}\n      }], _.d[\"#PlaceholderContent\"] = _._[\n        \"__tests__/tags/recurse.marko_4_content\"\n        ](_.f), _.e));\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT t\nINSERT html/body/div/div\nINSERT html/body/div/div/#comment0\nINSERT html/body/div/div/#comment1\nINSERT html/body/div/div/#text\nINSERT html/body/div/div/#comment2\nINSERT html/body/div/div/#comment3\nINSERT t\nINSERT t/#comment\nREMOVE t after html/body/script0\nREMOVE #text after #comment\nREMOVE #comment after html/body/div/#comment0\nREMOVE #comment after html/body/div/#comment0\nINSERT html/body/div/div\nREMOVE t after html/body/script0\nINSERT html/body/script1\n```\n\n# Render ASYNC\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <div\n      data-level=\"4\"\n    >\n      <!--M_[-->\n      <div\n        data-level=\"3\"\n      >\n        <!--M_[-->\n        <div\n          data-level=\"2\"\n        >\n          <!--M_[-->\n          <!--M_!^14-->\n          LOADING...\n          <!--M_!14-->\n          <!--M_]13 #text/1 14-->\n        </div>\n        <!--M_]8 #text/1 9-->\n      </div>\n      <!--M_]3 #text/1 4-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 3, _.a = {\n        \"#BranchAccessor\": \"#text/1\",\n        \"#PlaceholderContent\": _.c = {}\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/tags/recurse.marko_4_content\"\n        ](_.c), _.b)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.e = [4, _.d = {\n        \"#BranchAccessor\": \"#text/1\",\n        \"#PlaceholderContent\": _.f = {}\n      }], _.d[\"#PlaceholderContent\"] = _._[\n        \"__tests__/tags/recurse.marko_4_content\"\n        ](_.f), _.e));\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.h = [4, _.g = {\n        \"#BranchAccessor\": \"#text/1\",\n        \"#PlaceholderContent\": _.i = {}\n      }], _.g[\"#PlaceholderContent\"] = _._[\n        \"__tests__/tags/recurse.marko_4_content\"\n        ](_.i), _.h));\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT t\nINSERT html/body/div/div/div\nINSERT html/body/div/div/div/#comment0\nINSERT html/body/div/div/div/#comment1\nINSERT html/body/div/div/div/#text\nINSERT html/body/div/div/div/#comment2\nINSERT html/body/div/div/div/#comment3\nINSERT t\nINSERT t/#comment\nREMOVE t after html/body/script1\nREMOVE #text after #comment\nREMOVE #comment after html/body/div/div/#comment0\nREMOVE #comment after html/body/div/div/#comment0\nINSERT html/body/div/div/div\nREMOVE t after html/body/script1\nINSERT html/body/script2\n```\n\n# Render ASYNC\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <div\n      data-level=\"4\"\n    >\n      <!--M_[-->\n      <div\n        data-level=\"3\"\n      >\n        <!--M_[-->\n        <div\n          data-level=\"2\"\n        >\n          <!--M_[-->\n          <div\n            data-level=\"1\"\n          >\n            <!--M_[-->\n            <!--M_!^19-->\n            LOADING...\n            <!--M_!19-->\n            <!--M_]18 #text/1 19-->\n          </div>\n          <!--M_]13 #text/1 14-->\n        </div>\n        <!--M_]8 #text/1 9-->\n      </div>\n      <!--M_]3 #text/1 4-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 3, _.a = {\n        \"#BranchAccessor\": \"#text/1\",\n        \"#PlaceholderContent\": _.c = {}\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/tags/recurse.marko_4_content\"\n        ](_.c), _.b)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.e = [4, _.d = {\n        \"#BranchAccessor\": \"#text/1\",\n        \"#PlaceholderContent\": _.f = {}\n      }], _.d[\"#PlaceholderContent\"] = _._[\n        \"__tests__/tags/recurse.marko_4_content\"\n        ](_.f), _.e));\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.h = [4, _.g = {\n        \"#BranchAccessor\": \"#text/1\",\n        \"#PlaceholderContent\": _.i = {}\n      }], _.g[\"#PlaceholderContent\"] = _._[\n        \"__tests__/tags/recurse.marko_4_content\"\n        ](_.i), _.h));\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.k = [4, _.j = {\n        \"#BranchAccessor\": \"#text/1\",\n        \"#PlaceholderContent\": _.l = {}\n      }], _.j[\"#PlaceholderContent\"] = _._[\n        \"__tests__/tags/recurse.marko_4_content\"\n        ](_.l), _.k));\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT t\nINSERT html/body/div/div/div/div\nINSERT html/body/div/div/div/div/#comment0\nINSERT html/body/div/div/div/div/#comment1\nINSERT html/body/div/div/div/div/#text\nINSERT html/body/div/div/div/div/#comment2\nINSERT html/body/div/div/div/div/#comment3\nINSERT t\nINSERT t/#comment\nREMOVE t after html/body/script2\nREMOVE #text after #comment\nREMOVE #comment after html/body/div/div/div/#comment0\nREMOVE #comment after html/body/div/div/div/#comment0\nINSERT html/body/div/div/div/div\nREMOVE t after html/body/script2\nINSERT html/body/script3\n```\n\n# Render End\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <div\n      data-level=\"4\"\n    >\n      <!--M_[-->\n      <div\n        data-level=\"3\"\n      >\n        <!--M_[-->\n        <div\n          data-level=\"2\"\n        >\n          <!--M_[-->\n          <div\n            data-level=\"1\"\n          >\n            <!--M_[-->\n            <!--M_]18 #text/1 19-->\n          </div>\n          <!--M_]13 #text/1 14-->\n        </div>\n        <!--M_]8 #text/1 9-->\n      </div>\n      <!--M_]3 #text/1 4-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 3, _.a = {\n        \"#BranchAccessor\": \"#text/1\",\n        \"#PlaceholderContent\": _.c = {}\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/tags/recurse.marko_4_content\"\n        ](_.c), _.b)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.e = [4, _.d = {\n        \"#BranchAccessor\": \"#text/1\",\n        \"#PlaceholderContent\": _.f = {}\n      }], _.d[\"#PlaceholderContent\"] = _._[\n        \"__tests__/tags/recurse.marko_4_content\"\n        ](_.f), _.e));\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.h = [4, _.g = {\n        \"#BranchAccessor\": \"#text/1\",\n        \"#PlaceholderContent\": _.i = {}\n      }], _.g[\"#PlaceholderContent\"] = _._[\n        \"__tests__/tags/recurse.marko_4_content\"\n        ](_.i), _.h));\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.k = [4, _.j = {\n        \"#BranchAccessor\": \"#text/1\",\n        \"#PlaceholderContent\": _.l = {}\n      }], _.j[\"#PlaceholderContent\"] = _._[\n        \"__tests__/tags/recurse.marko_4_content\"\n        ](_.l), _.k));\n      M._.w()\n    </script>\n    <script>\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT t\nREMOVE t after html/body/script3\nREMOVE #text after #comment\nREMOVE #comment after html/body/div/div/div/div/#comment0\nREMOVE #comment after html/body/div/div/div/div/#comment0\nINSERT html/body/script4\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/tags/recurse.marko",
    "content": "import { resolveAfter } from \"../../../utils/resolve\";\n\nif=input.level\n  div data-level=input.level\n    try\n      @placeholder -- LOADING...\n      await=resolveAfter(0)\n        recurse level=input.level - 1\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/template.marko",
    "content": "<recurse level=4/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { flush, wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{}, flush, flush, flush, flush, wait],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"_\",\n      \"$resolveAfter\": \"a\",\n      \"$multiply\": \"e\",\n      \"$$await_content5__$params\": \"i\",\n      \"$$await_content4__$params\": \"o\",\n      \"$$await_content3__$params\": \"m\",\n      \"$$await_content2__$params\": \"r\",\n      \"$$await_content__$params\": \"l\",\n      \"$$await_promise\": \"s\",\n      \"$$await_promise2\": \"x\",\n      \"$$await_promise3\": \"p\",\n      \"$$await_promise4\": \"n\",\n      \"$$await_promise5\": \"c\",\n      \"$$n__script\": \"f\",\n      \"$$n\": \"w\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  increment\n</button>\n<p>\n  1 * 2 = \n</p>\n<p>\n  2 * 2 = \n</p>\n<p>\n  3 * 2 = \n</p>\n<p>\n  4 * 2 = \n</p>\n<p>\n  5 * 2 = \n</p>\n```\n\n\n# Render ASYNC\n```html\n<button>\n  increment\n</button>\n<p>\n  1 * 2 = 2\n</p>\n<p>\n  2 * 2 = 4\n</p>\n<p>\n  3 * 2 = 6\n</p>\n<p>\n  4 * 2 = 8\n</p>\n<p>\n  5 * 2 = 10\n</p>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  increment\n</button>\n<p>\n  1 * 3 = 2\n</p>\n<p>\n  2 * 3 = 4\n</p>\n<p>\n  3 * 3 = 6\n</p>\n<p>\n  4 * 3 = 8\n</p>\n<p>\n  5 * 3 = 10\n</p>\n```\n\n\n# Render ASYNC\n```html\n<button>\n  increment\n</button>\n<p>\n  1 * 3 = \n</p>\n<p>\n  2 * 3 = \n</p>\n<p>\n  3 * 3 = \n</p>\n<p>\n  4 * 3 = \n</p>\n<p>\n  5 * 3 = \n</p>\n```\n\n\n# Render ASYNC\n```html\n<button>\n  increment\n</button>\n<p>\n  1 * 3 = 3\n</p>\n<p>\n  2 * 3 = 6\n</p>\n<p>\n  3 * 3 = 9\n</p>\n<p>\n  4 * 3 = 12\n</p>\n<p>\n  5 * 3 = 15\n</p>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  increment\n</button>\n<p>\n  1 * 2 = \n</p>\n<p>\n  2 * 2 = \n</p>\n<p>\n  3 * 2 = \n</p>\n<p>\n  4 * 2 = \n</p>\n<p>\n  5 * 2 = \n</p>\n```\n\n# Mutations\n```\nINSERT button, p0, p1, p2, p3, p4\n```\n\n# Render ASYNC\n```html\n<button>\n  increment\n</button>\n<p>\n  1 * 2 = 2\n</p>\n<p>\n  2 * 2 = 4\n</p>\n<p>\n  3 * 2 = 6\n</p>\n<p>\n  4 * 2 = 8\n</p>\n<p>\n  5 * 2 = 10\n</p>\n```\n\n# Mutations\n```\nINSERT p0/#text3\nREMOVE #text after p0/#text3\nUPDATE p0/#text3 \" \" => \"2\"\nINSERT p4/#text3\nREMOVE #text after p4/#text3\nUPDATE p4/#text3 \" \" => \"10\"\nINSERT p3/#text3\nREMOVE #text after p3/#text3\nUPDATE p3/#text3 \" \" => \"8\"\nINSERT p2/#text3\nREMOVE #text after p2/#text3\nUPDATE p2/#text3 \" \" => \"6\"\nINSERT p1/#text3\nREMOVE #text after p1/#text3\nUPDATE p1/#text3 \" \" => \"4\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  increment\n</button>\n<p>\n  1 * 3 = 2\n</p>\n<p>\n  2 * 3 = 4\n</p>\n<p>\n  3 * 3 = 6\n</p>\n<p>\n  4 * 3 = 8\n</p>\n<p>\n  5 * 3 = 10\n</p>\n```\n\n# Mutations\n```\nUPDATE p0/#text1 \"2\" => \"3\"\nUPDATE p1/#text1 \"2\" => \"3\"\nUPDATE p2/#text1 \"2\" => \"3\"\nUPDATE p3/#text1 \"2\" => \"3\"\nUPDATE p4/#text1 \"2\" => \"3\"\n```\n\n# Render ASYNC\n```html\n<button>\n  increment\n</button>\n<p>\n  1 * 3 = \n</p>\n<p>\n  2 * 3 = \n</p>\n<p>\n  3 * 3 = \n</p>\n<p>\n  4 * 3 = \n</p>\n<p>\n  5 * 3 = \n</p>\n```\n\n# Mutations\n```\nINSERT p0/#text3\nREMOVE #document-fragment/#text after p0/#text3\nINSERT p1/#text3\nREMOVE #document-fragment/#text after p1/#text3\nINSERT p2/#text3\nREMOVE #document-fragment/#text after p2/#text3\nINSERT p3/#text3\nREMOVE #document-fragment/#text after p3/#text3\nINSERT p4/#text3\nREMOVE #document-fragment/#text after p4/#text3\n```\n\n# Render ASYNC\n```html\n<button>\n  increment\n</button>\n<p>\n  1 * 3 = 3\n</p>\n<p>\n  2 * 3 = 6\n</p>\n<p>\n  3 * 3 = 9\n</p>\n<p>\n  4 * 3 = 12\n</p>\n<p>\n  5 * 3 = 15\n</p>\n```\n\n# Mutations\n```\nREMOVE #text after p0/#text2\nINSERT p0/#text3\nREMOVE #text after p4/#text2\nINSERT p4/#text3\nREMOVE #text after p3/#text2\nINSERT p3/#text3\nREMOVE #text after p2/#text2\nINSERT p2/#text3\nREMOVE #text after p1/#text2\nINSERT p1/#text3\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 593 (min) 203 (brotli)\nconst multiply = (multiplier, n) => resolveAfter(multiplier * n),\n  $await_content5__$params = ($scope, $params6) =>\n    (($scope, result) => _._text($scope.a, result))($scope, $params6[0]),\n  $await_content4__$params = ($scope, $params5) =>\n    (($scope, result) => _._text($scope.a, result))($scope, $params5[0]),\n  $await_content3__$params = ($scope, $params4) =>\n    (($scope, result) => _._text($scope.a, result))($scope, $params4[0]),\n  $await_content2__$params = ($scope, $params3) =>\n    (($scope, result) => _._text($scope.a, result))($scope, $params3[0]),\n  $await_content__$params = ($scope, $params2) =>\n    (($scope, result) => _._text($scope.a, result))($scope, $params2[0]),\n  $await_promise = _._await_promise(2, $await_content__$params),\n  $await_promise2 = _._await_promise(4, $await_content2__$params),\n  $await_promise3 = _._await_promise(6, $await_content3__$params),\n  $await_promise4 = _._await_promise(8, $await_content4__$params),\n  $await_promise5 = _._await_promise(10, $await_content5__$params),\n  $n__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $n($scope, $scope.l + 1);\n    }),\n  ),\n  $n = _._let(11, ($scope) => {\n    (_._text($scope.b, $scope.l),\n      _._text($scope.d, $scope.l),\n      _._text($scope.f, $scope.l),\n      _._text($scope.h, $scope.l),\n      _._text($scope.j, $scope.l),\n      $await_promise($scope, multiply(1, $scope.l)),\n      $await_promise2($scope, multiply(2, $scope.l)),\n      $await_promise3($scope, multiply(3, $scope.l)),\n      $await_promise4($scope, multiply(4, $scope.l)),\n      $await_promise5($scope, multiply(5, $scope.l)),\n      $n__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button>increment</button><p>1 * <!> = <!></p><p>2 * <!> = <!></p><p>3 * <!> = <!></p><p>4 * <!> = <!></p><p>5 * <!> = <!></p>\";\nexport const $walks = /* get, over(1), next(1), over(1), replace, over(2), replace, out(1), next(1), over(1), replace, over(2), replace, out(1), next(1), over(1), replace, over(2), replace, out(1), next(1), over(1), replace, over(2), replace, out(1), next(1), over(1), replace, over(2), replace, out(1) */\" bDb%c%lDb%c%lDb%c%lDb%c%lDb%c%l\";\nimport { resolveAfter } from \"../../utils/resolve\";\nconst multiply = (multiplier, n) => resolveAfter(multiplier * n);\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $await_content5__result = ($scope, result) => _._text($scope[\"#text/0\"], result);\nconst $await_content5__$params = ($scope, $params6) => $await_content5__result($scope, $params6[0]);\nconst $await_content4__result = ($scope, result) => _._text($scope[\"#text/0\"], result);\nconst $await_content4__$params = ($scope, $params5) => $await_content4__result($scope, $params5[0]);\nconst $await_content3__result = ($scope, result) => _._text($scope[\"#text/0\"], result);\nconst $await_content3__$params = ($scope, $params4) => $await_content3__result($scope, $params4[0]);\nconst $await_content2__result = ($scope, result) => _._text($scope[\"#text/0\"], result);\nconst $await_content2__$params = ($scope, $params3) => $await_content2__result($scope, $params3[0]);\nconst $await_content__result = ($scope, result) => _._text($scope[\"#text/0\"], result);\nconst $await_content__$params = ($scope, $params2) => $await_content__result($scope, $params2[0]);\nconst $await_content = /* @__PURE__ */_._await_content(\"#text/2\", \" \", /* get, over(1) */\" b\");\nconst $await_promise = /* @__PURE__ */_._await_promise(\"#text/2\", $await_content__$params);\nconst $await_content2 = /* @__PURE__ */_._await_content(\"#text/4\", \" \", /* get, over(1) */\" b\");\nconst $await_promise2 = /* @__PURE__ */_._await_promise(\"#text/4\", $await_content2__$params);\nconst $await_content3 = /* @__PURE__ */_._await_content(\"#text/6\", \" \", /* get, over(1) */\" b\");\nconst $await_promise3 = /* @__PURE__ */_._await_promise(\"#text/6\", $await_content3__$params);\nconst $await_content4 = /* @__PURE__ */_._await_content(\"#text/8\", \" \", /* get, over(1) */\" b\");\nconst $await_promise4 = /* @__PURE__ */_._await_promise(\"#text/8\", $await_content4__$params);\nconst $await_content5 = /* @__PURE__ */_._await_content(\"#text/10\", \" \", /* get, over(1) */\" b\");\nconst $await_promise5 = /* @__PURE__ */_._await_promise(\"#text/10\", $await_content5__$params);\nconst $n__script = _._script(\"__tests__/template.marko_0_n\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $n($scope, $scope.n + 1);\n}));\nconst $n = /* @__PURE__ */_._let(\"n/11\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.n);\n  _._text($scope[\"#text/3\"], $scope.n);\n  _._text($scope[\"#text/5\"], $scope.n);\n  _._text($scope[\"#text/7\"], $scope.n);\n  _._text($scope[\"#text/9\"], $scope.n);\n  $await_promise($scope, multiply(1, $scope.n));\n  $await_promise2($scope, multiply(2, $scope.n));\n  $await_promise3($scope, multiply(3, $scope.n));\n  $await_promise4($scope, multiply(4, $scope.n));\n  $await_promise5($scope, multiply(5, $scope.n));\n  $n__script($scope);\n});\nexport function $setup($scope) {\n  $await_content($scope);\n  $await_content2($scope);\n  $await_content3($scope);\n  $await_content4($scope);\n  $await_content5($scope);\n  $n($scope, 2);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/html.expected/template.js",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\nconst multiply = (multiplier, n) => resolveAfter(multiplier * n);\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let n = 2;\n  _._html(`<button>increment</button>${_._el_resume($scope0_id, \"#button/0\")}<p>1 * <!>${_._escape(n)}${_._el_resume($scope0_id, \"#text/1\")} = `);\n  _._await($scope0_id, \"#text/2\", multiply(1, n), result => {\n    const $scope1_id = _._scope_id();\n    _._html(`${_._escape(result)}${_._el_resume($scope1_id, \"#text/0\")}`);\n    _._scope($scope1_id, {}, \"__tests__/template.marko\", \"6:16\");\n  });\n  _._html(`</p><p>2 * <!>${_._escape(n)}${_._el_resume($scope0_id, \"#text/3\")} = `);\n  _._await($scope0_id, \"#text/4\", multiply(2, n), result => {\n    const $scope2_id = _._scope_id();\n    _._html(`${_._escape(result)}${_._el_resume($scope2_id, \"#text/0\")}`);\n    _._scope($scope2_id, {}, \"__tests__/template.marko\", \"7:16\");\n  });\n  _._html(`</p><p>3 * <!>${_._escape(n)}${_._el_resume($scope0_id, \"#text/5\")} = `);\n  _._await($scope0_id, \"#text/6\", multiply(3, n), result => {\n    const $scope3_id = _._scope_id();\n    _._html(`${_._escape(result)}${_._el_resume($scope3_id, \"#text/0\")}`);\n    _._scope($scope3_id, {}, \"__tests__/template.marko\", \"8:16\");\n  });\n  _._html(`</p><p>4 * <!>${_._escape(n)}${_._el_resume($scope0_id, \"#text/7\")} = `);\n  _._await($scope0_id, \"#text/8\", multiply(4, n), result => {\n    const $scope4_id = _._scope_id();\n    _._html(`${_._escape(result)}${_._el_resume($scope4_id, \"#text/0\")}`);\n    _._scope($scope4_id, {}, \"__tests__/template.marko\", \"9:16\");\n  });\n  _._html(`</p><p>5 * <!>${_._escape(n)}${_._el_resume($scope0_id, \"#text/9\")} = `);\n  _._await($scope0_id, \"#text/10\", multiply(5, n), result => {\n    const $scope5_id = _._scope_id();\n    _._html(`${_._escape(result)}${_._el_resume($scope5_id, \"#text/0\")}`);\n    _._scope($scope5_id, {}, \"__tests__/template.marko\", \"10:16\");\n  });\n  _._html(\"</p>\");\n  _._script($scope0_id, \"__tests__/template.marko_0_n\");\n  _._scope($scope0_id, {\n    n\n  }, \"__tests__/template.marko\", 0, {\n    n: \"4:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  increment\n</button>\n<p>\n  1 * 2 = \n</p>\n```\n\n\n# Render FLUSH\n```html\n<button>\n  increment\n</button>\n<p>\n  1 * 2 = 2\n</p>\n<p>\n  2 * 2 = 4\n</p>\n<p>\n  3 * 2 = 6\n</p>\n<p>\n  4 * 2 = 8\n</p>\n<p>\n  5 * 2 = 10\n</p>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  increment\n</button>\n<p>\n  1 * 3 = 2\n</p>\n<p>\n  2 * 3 = 4\n</p>\n<p>\n  3 * 3 = 6\n</p>\n<p>\n  4 * 3 = 8\n</p>\n<p>\n  5 * 3 = 10\n</p>\n```\n\n\n# Render ASYNC\n```html\n<button>\n  increment\n</button>\n<p>\n  1 * 3 = \n</p>\n<p>\n  2 * 3 = \n</p>\n<p>\n  3 * 3 = \n</p>\n<p>\n  4 * 3 = \n</p>\n<p>\n  5 * 3 = \n</p>\n```\n\n\n# Render ASYNC\n```html\n<button>\n  increment\n</button>\n<p>\n  1 * 3 = 3\n</p>\n<p>\n  2 * 3 = 6\n</p>\n<p>\n  3 * 3 = 9\n</p>\n<p>\n  4 * 3 = 12\n</p>\n<p>\n  5 * 3 = 15\n</p>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      increment\n    </button>\n    <!--M_*1 #button/0-->\n    <p>\n      1 * \n      <!---->\n      2\n      <!--M_*1 #text/1-->\n       = \n      <script>\n        WALKER_RUNTIME(\"M\")(\"_\");\n        M._.r = [_ =&gt; (_.a = [0,\n        {\n          n: 2\n        }])]\n      </script>\n    </p>\n  </body>\n</html>\n```\n\n\n# Render FLUSH\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      increment\n    </button>\n    <!--M_*1 #button/0-->\n    <p>\n      1 * \n      <!---->\n      2\n      <!--M_*1 #text/1-->\n       = \n      <script>\n        WALKER_RUNTIME(\"M\")(\"_\");\n        M._.r = [_ =&gt; (_.a = [0,\n        {\n          n: 2\n        }])]\n      </script>\n      <!--M_[-->\n      2\n      <!--M_*2 #text/0-->\n      <!--M_]1 #text/2 2-->\n    </p>\n    <p>\n      2 * \n      <!---->\n      2\n      <!--M_*1 #text/3-->\n       = \n      <!--M_[-->\n      4\n      <!--M_*3 #text/0-->\n      <!--M_]1 #text/4 3-->\n    </p>\n    <p>\n      3 * \n      <!---->\n      2\n      <!--M_*1 #text/5-->\n       = \n      <!--M_[-->\n      6\n      <!--M_*4 #text/0-->\n      <!--M_]1 #text/6 4-->\n    </p>\n    <p>\n      4 * \n      <!---->\n      2\n      <!--M_*1 #text/7-->\n       = \n      <!--M_[-->\n      8\n      <!--M_*5 #text/0-->\n      <!--M_]1 #text/8 5-->\n    </p>\n    <p>\n      5 * \n      <!---->\n      2\n      <!--M_*1 #text/9-->\n       = \n      <!--M_[-->\n      10\n      <!--M_*6 #text/0-->\n      <!--M_]1 #text/10 6-->\n    </p>\n    <script>\n      M._.r.push(\n        \"__tests__/template.marko_0_n 1\"\n        );\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/p0/#comment2\nINSERT html/body/p0/#text3\nINSERT html/body/p0/#comment3\nINSERT html/body/p0/#comment4\nINSERT html/body/p1\nINSERT html/body/p1/#text0\nINSERT html/body/p1/#comment0\nINSERT html/body/p1/#text1\nINSERT html/body/p1/#comment1\nINSERT html/body/p1/#text2\nINSERT html/body/p1/#comment2\nINSERT html/body/p1/#text3\nINSERT html/body/p1/#comment3\nINSERT html/body/p1/#comment4\nINSERT html/body/p2\nINSERT html/body/p2/#text0\nINSERT html/body/p2/#comment0\nINSERT html/body/p2/#text1\nINSERT html/body/p2/#comment1\nINSERT html/body/p2/#text2\nINSERT html/body/p2/#comment2\nINSERT html/body/p2/#text3\nINSERT html/body/p2/#comment3\nINSERT html/body/p2/#comment4\nINSERT html/body/p3\nINSERT html/body/p3/#text0\nINSERT html/body/p3/#comment0\nINSERT html/body/p3/#text1\nINSERT html/body/p3/#comment1\nINSERT html/body/p3/#text2\nINSERT html/body/p3/#comment2\nINSERT html/body/p3/#text3\nINSERT html/body/p3/#comment3\nINSERT html/body/p3/#comment4\nINSERT html/body/p4\nINSERT html/body/p4/#text0\nINSERT html/body/p4/#comment0\nINSERT html/body/p4/#text1\nINSERT html/body/p4/#comment1\nINSERT html/body/p4/#text2\nINSERT html/body/p4/#comment2\nINSERT html/body/p4/#text3\nINSERT html/body/p4/#comment3\nINSERT html/body/p4/#comment4\nINSERT html/body/p0/#text4\nINSERT html/body/p1/#text4\nINSERT html/body/p2/#text4\nINSERT html/body/p3/#text4\nINSERT html/body/p4/#text4\nINSERT html/body/script\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      increment\n    </button>\n    <!--M_*1 #button/0-->\n    <p>\n      1 * \n      <!---->\n      3\n      <!--M_*1 #text/1-->\n       = \n      <script>\n        WALKER_RUNTIME(\"M\")(\"_\");\n        M._.r = [_ =&gt; (_.a = [0,\n        {\n          n: 2\n        }])]\n      </script>\n      <!--M_[-->\n      2\n      <!--M_*2 #text/0-->\n      <!--M_]1 #text/2 2-->\n    </p>\n    <p>\n      2 * \n      <!---->\n      3\n      <!--M_*1 #text/3-->\n       = \n      <!--M_[-->\n      4\n      <!--M_*3 #text/0-->\n      <!--M_]1 #text/4 3-->\n    </p>\n    <p>\n      3 * \n      <!---->\n      3\n      <!--M_*1 #text/5-->\n       = \n      <!--M_[-->\n      6\n      <!--M_*4 #text/0-->\n      <!--M_]1 #text/6 4-->\n    </p>\n    <p>\n      4 * \n      <!---->\n      3\n      <!--M_*1 #text/7-->\n       = \n      <!--M_[-->\n      8\n      <!--M_*5 #text/0-->\n      <!--M_]1 #text/8 5-->\n    </p>\n    <p>\n      5 * \n      <!---->\n      3\n      <!--M_*1 #text/9-->\n       = \n      <!--M_[-->\n      10\n      <!--M_*6 #text/0-->\n      <!--M_]1 #text/10 6-->\n    </p>\n    <script>\n      M._.r.push(\n        \"__tests__/template.marko_0_n 1\"\n        );\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/p0/#text1 \"2\" => \"3\"\nUPDATE html/body/p1/#text1 \"2\" => \"3\"\nUPDATE html/body/p2/#text1 \"2\" => \"3\"\nUPDATE html/body/p3/#text1 \"2\" => \"3\"\nUPDATE html/body/p4/#text1 \"2\" => \"3\"\n```\n\n# Render ASYNC\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      increment\n    </button>\n    <!--M_*1 #button/0-->\n    <p>\n      1 * \n      <!---->\n      3\n      <!--M_*1 #text/1-->\n       = \n      <script>\n        WALKER_RUNTIME(\"M\")(\"_\");\n        M._.r = [_ =&gt; (_.a = [0,\n        {\n          n: 2\n        }])]\n      </script>\n      <!--M_]1 #text/2 2-->\n    </p>\n    <p>\n      2 * \n      <!---->\n      3\n      <!--M_*1 #text/3-->\n       = \n      <!--M_]1 #text/4 3-->\n    </p>\n    <p>\n      3 * \n      <!---->\n      3\n      <!--M_*1 #text/5-->\n       = \n      <!--M_]1 #text/6 4-->\n    </p>\n    <p>\n      4 * \n      <!---->\n      3\n      <!--M_*1 #text/7-->\n       = \n      <!--M_]1 #text/8 5-->\n    </p>\n    <p>\n      5 * \n      <!---->\n      3\n      <!--M_*1 #text/9-->\n       = \n      <!--M_]1 #text/10 6-->\n    </p>\n    <script>\n      M._.r.push(\n        \"__tests__/template.marko_0_n 1\"\n        );\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/p0/#comment2 after #document-fragment/#text1\nINSERT html/body/p0/#comment2\nREMOVE #document-fragment/#comment0 after html/body/p0/#comment2\nREMOVE #document-fragment/#text0 after html/body/p0/#comment2\nREMOVE #document-fragment/#comment1 after html/body/p0/#comment2\nREMOVE #document-fragment/#text1 after html/body/p0/#comment2\nREMOVE html/body/p1/#comment2 after #document-fragment/#text1\nINSERT html/body/p1/#comment2\nREMOVE #document-fragment/#comment0 after html/body/p1/#comment2\nREMOVE #document-fragment/#text0 after html/body/p1/#comment2\nREMOVE #document-fragment/#comment1 after html/body/p1/#comment2\nREMOVE #document-fragment/#text1 after html/body/p1/#comment2\nREMOVE html/body/p2/#comment2 after #document-fragment/#text1\nINSERT html/body/p2/#comment2\nREMOVE #document-fragment/#comment0 after html/body/p2/#comment2\nREMOVE #document-fragment/#text0 after html/body/p2/#comment2\nREMOVE #document-fragment/#comment1 after html/body/p2/#comment2\nREMOVE #document-fragment/#text1 after html/body/p2/#comment2\nREMOVE html/body/p3/#comment2 after #document-fragment/#text1\nINSERT html/body/p3/#comment2\nREMOVE #document-fragment/#comment0 after html/body/p3/#comment2\nREMOVE #document-fragment/#text0 after html/body/p3/#comment2\nREMOVE #document-fragment/#comment1 after html/body/p3/#comment2\nREMOVE #document-fragment/#text1 after html/body/p3/#comment2\nREMOVE html/body/p4/#comment2 after #document-fragment/#text1\nINSERT html/body/p4/#comment2\nREMOVE #document-fragment/#comment0 after html/body/p4/#comment2\nREMOVE #document-fragment/#text0 after html/body/p4/#comment2\nREMOVE #document-fragment/#comment1 after html/body/p4/#comment2\nREMOVE #document-fragment/#text1 after html/body/p4/#comment2\n```\n\n# Render ASYNC\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      increment\n    </button>\n    <!--M_*1 #button/0-->\n    <p>\n      1 * \n      <!---->\n      3\n      <!--M_*1 #text/1-->\n       = \n      <script>\n        WALKER_RUNTIME(\"M\")(\"_\");\n        M._.r = [_ =&gt; (_.a = [0,\n        {\n          n: 2\n        }])]\n      </script>\n      <!--M_[-->\n      3\n      <!--M_*2 #text/0-->\n    </p>\n    <p>\n      2 * \n      <!---->\n      3\n      <!--M_*1 #text/3-->\n       = \n      <!--M_[-->\n      6\n      <!--M_*3 #text/0-->\n    </p>\n    <p>\n      3 * \n      <!---->\n      3\n      <!--M_*1 #text/5-->\n       = \n      <!--M_[-->\n      9\n      <!--M_*4 #text/0-->\n    </p>\n    <p>\n      4 * \n      <!---->\n      3\n      <!--M_*1 #text/7-->\n       = \n      <!--M_[-->\n      12\n      <!--M_*5 #text/0-->\n    </p>\n    <p>\n      5 * \n      <!---->\n      3\n      <!--M_*1 #text/9-->\n       = \n      <!--M_[-->\n      15\n      <!--M_*6 #text/0-->\n    </p>\n    <script>\n      M._.r.push(\n        \"__tests__/template.marko_0_n 1\"\n        );\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #comment after html/body/p0/script\nINSERT html/body/p0/#comment2, html/body/p0/#text3, html/body/p0/#comment3, html/body/p0/#text4\nREMOVE #comment after html/body/p4/#text2\nINSERT html/body/p4/#comment2, html/body/p4/#text3, html/body/p4/#comment3, html/body/p4/#text4\nREMOVE #comment after html/body/p3/#text2\nINSERT html/body/p3/#comment2, html/body/p3/#text3, html/body/p3/#comment3, html/body/p3/#text4\nREMOVE #comment after html/body/p2/#text2\nINSERT html/body/p2/#comment2, html/body/p2/#text3, html/body/p2/#comment3, html/body/p2/#text4\nREMOVE #comment after html/body/p1/#text2\nINSERT html/body/p1/#comment2, html/body/p1/#text3, html/body/p1/#comment3, html/body/p1/#text4\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render ASYNC\n```html\n<button>\n  increment\n</button>\n<p>\n  1 * 2 = \n</p>\n```\n\n\n# Render End\n```html\n<button>\n  increment\n</button>\n<p>\n  1 * 2 = 2\n</p>\n<p>\n  2 * 2 = 4\n</p>\n<p>\n  3 * 2 = 6\n</p>\n<p>\n  4 * 2 = 8\n</p>\n<p>\n  5 * 2 = 10\n</p>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>increment</button><!--M_*1 #button/0--><p>1 * <!>2<!--M_*1 #text/1--> = <script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{n:2}])]</script>\n```\n\n# Write\n```html\n  <!--M_[-->2<!--M_*2 #text/0--><!--M_]1 #text/2 2--></p><p>2 * <!>2<!--M_*1 #text/3--> = <!--M_[-->4<!--M_*3 #text/0--><!--M_]1 #text/4 3--></p><p>3 * <!>2<!--M_*1 #text/5--> = <!--M_[-->6<!--M_*4 #text/0--><!--M_]1 #text/6 4--></p><p>4 * <!>2<!--M_*1 #text/7--> = <!--M_[-->8<!--M_*5 #text/0--><!--M_]1 #text/8 5--></p><p>5 * <!>2<!--M_*1 #text/9--> = <!--M_[-->10<!--M_*6 #text/0--><!--M_]1 #text/10 6--></p><script>M._.r.push(\"__tests__/template.marko_0_n 1\");M._.w()</script>\n```\n\n# Render ASYNC\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      increment\n    </button>\n    <!--M_*1 #button/0-->\n    <p>\n      1 * \n      <!---->\n      2\n      <!--M_*1 #text/1-->\n       = \n      <script>\n        WALKER_RUNTIME(\"M\")(\"_\");\n        M._.r = [_ =&gt; (_.a = [0,\n        {\n          n: 2\n        }])]\n      </script>\n    </p>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment\nINSERT html/body/p\nINSERT html/body/p/#text0\nINSERT html/body/p/#comment0\nINSERT html/body/p/#text1\nINSERT html/body/p/#comment1\nINSERT html/body/p/#text2\nINSERT html/body/p/script\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      increment\n    </button>\n    <!--M_*1 #button/0-->\n    <p>\n      1 * \n      <!---->\n      2\n      <!--M_*1 #text/1-->\n       = \n      <script>\n        WALKER_RUNTIME(\"M\")(\"_\");\n        M._.r = [_ =&gt; (_.a = [0,\n        {\n          n: 2\n        }])]\n      </script>\n      <!--M_[-->\n      2\n      <!--M_*2 #text/0-->\n      <!--M_]1 #text/2 2-->\n    </p>\n    <p>\n      2 * \n      <!---->\n      2\n      <!--M_*1 #text/3-->\n       = \n      <!--M_[-->\n      4\n      <!--M_*3 #text/0-->\n      <!--M_]1 #text/4 3-->\n    </p>\n    <p>\n      3 * \n      <!---->\n      2\n      <!--M_*1 #text/5-->\n       = \n      <!--M_[-->\n      6\n      <!--M_*4 #text/0-->\n      <!--M_]1 #text/6 4-->\n    </p>\n    <p>\n      4 * \n      <!---->\n      2\n      <!--M_*1 #text/7-->\n       = \n      <!--M_[-->\n      8\n      <!--M_*5 #text/0-->\n      <!--M_]1 #text/8 5-->\n    </p>\n    <p>\n      5 * \n      <!---->\n      2\n      <!--M_*1 #text/9-->\n       = \n      <!--M_[-->\n      10\n      <!--M_*6 #text/0-->\n      <!--M_]1 #text/10 6-->\n    </p>\n    <script>\n      M._.r.push(\n        \"__tests__/template.marko_0_n 1\"\n        );\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/p0/#comment2\nINSERT html/body/p0/#text3\nINSERT html/body/p0/#comment3\nINSERT html/body/p0/#comment4\nINSERT html/body/p1\nINSERT html/body/p1/#text0\nINSERT html/body/p1/#comment0\nINSERT html/body/p1/#text1\nINSERT html/body/p1/#comment1\nINSERT html/body/p1/#text2\nINSERT html/body/p1/#comment2\nINSERT html/body/p1/#text3\nINSERT html/body/p1/#comment3\nINSERT html/body/p1/#comment4\nINSERT html/body/p2\nINSERT html/body/p2/#text0\nINSERT html/body/p2/#comment0\nINSERT html/body/p2/#text1\nINSERT html/body/p2/#comment1\nINSERT html/body/p2/#text2\nINSERT html/body/p2/#comment2\nINSERT html/body/p2/#text3\nINSERT html/body/p2/#comment3\nINSERT html/body/p2/#comment4\nINSERT html/body/p3\nINSERT html/body/p3/#text0\nINSERT html/body/p3/#comment0\nINSERT html/body/p3/#text1\nINSERT html/body/p3/#comment1\nINSERT html/body/p3/#text2\nINSERT html/body/p3/#comment2\nINSERT html/body/p3/#text3\nINSERT html/body/p3/#comment3\nINSERT html/body/p3/#comment4\nINSERT html/body/p4\nINSERT html/body/p4/#text0\nINSERT html/body/p4/#comment0\nINSERT html/body/p4/#text1\nINSERT html/body/p4/#comment1\nINSERT html/body/p4/#text2\nINSERT html/body/p4/#comment2\nINSERT html/body/p4/#text3\nINSERT html/body/p4/#comment3\nINSERT html/body/p4/#comment4\nINSERT html/body/script\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/template.marko",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\nstatic const multiply = (multiplier, n) => resolveAfter(multiplier * n);\n\n<let/n=2>\n<button onClick() { n++ }>increment</button>\n<p>1 * ${n} = <await|result|=multiply(1, n)>${result}</await></p>\n<p>2 * ${n} = <await|result|=multiply(2, n)>${result}</await></p>\n<p>3 * ${n} = <await|result|=multiply(3, n)>${result}</await></p>\n<p>4 * ${n} = <await|result|=multiply(4, n)>${result}</await></p>\n<p>5 * ${n} = <await|result|=multiply(5, n)>${result}</await></p>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { flush, wait } from \"../../utils/resolve\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, flush, wait, click, wait],\n  skip_equivalent: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\nagm\n```\n\n\n# Render ASYNC\n```html\nabfghlm\n```\n\n\n# Render ASYNC\n```html\nabcefghiklm\n```\n\n\n# Render ASYNC\n```html\nabcdefghijklm\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\nagm\n```\n\n# Mutations\n```\nINSERT #text0, #text1, #text2, #text3, #text4\n```\n\n# Render ASYNC\n```html\nabfghlm\n```\n\n# Mutations\n```\nINSERT #text1, #text2, #text3\nREMOVE #text after #text3\nUPDATE #text1 \"\" => \"b\"\nINSERT #text5, #text6, #text7\nREMOVE #text after #text7\nUPDATE #text5 \"\" => \"h\"\n```\n\n# Render ASYNC\n```html\nabcefghiklm\n```\n\n# Mutations\n```\nINSERT #text2, #text3, #text4\nREMOVE #text after #text4\nUPDATE #text2 \"\" => \"c\"\nINSERT #text8, #text9, #text10\nREMOVE #text after #text10\nUPDATE #text8 \"\" => \"i\"\n```\n\n# Render ASYNC\n```html\nabcdefghijklm\n```\n\n# Mutations\n```\nINSERT #text3\nREMOVE #text after #text3\nUPDATE #text3 \" \" => \"d\"\nINSERT #text9\nREMOVE #text after #text9\nUPDATE #text9 \" \" => \"j\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"a<!>g<!>m\";\nexport const $walks = /* over(1), replace, over(2), replace, over(2) */\"b%c%c\";\nimport { resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $await_content6__result = ($scope, result6) => _._text($scope[\"#text/0\"], result6);\nconst $await_content6__$params = ($scope, $params7) => $await_content6__result($scope, $params7[0]);\nconst $await_content5__result = ($scope, result5) => _._text($scope[\"#text/0\"], result5);\nconst $await_content6 = /* @__PURE__ */_._await_content(\"#text/1\", \" \", /* get, over(1) */\" b\");\nconst $await_content5__await_promise = /* @__PURE__ */_._await_promise(\"#text/1\", $await_content6__$params);\nconst $await_content5__setup = $scope => {\n  $await_content6($scope);\n  $await_content5__await_promise($scope, resolveAfter(\"j\", 3));\n};\nconst $await_content5__$params = ($scope, $params6) => $await_content5__result($scope, $params6[0]);\nconst $await_content4__result = ($scope, result4) => _._text($scope[\"#text/0\"], result4);\nconst $await_content5 = /* @__PURE__ */_._await_content(\"#text/1\", \"<!><!>k\", /* replace, over(1), replace, over(2) */\"%b%c\", $await_content5__setup);\nconst $await_content4__await_promise = /* @__PURE__ */_._await_promise(\"#text/1\", $await_content5__$params);\nconst $await_content4__setup = $scope => {\n  $await_content5($scope);\n  $await_content4__await_promise($scope, resolveAfter(\"i\", 2));\n};\nconst $await_content4__$params = ($scope, $params5) => $await_content4__result($scope, $params5[0]);\nconst $await_content3__result = ($scope, result3) => _._text($scope[\"#text/0\"], result3);\nconst $await_content3__$params = ($scope, $params4) => $await_content3__result($scope, $params4[0]);\nconst $await_content2__result = ($scope, result2) => _._text($scope[\"#text/0\"], result2);\nconst $await_content3 = /* @__PURE__ */_._await_content(\"#text/1\", \" \", /* get, over(1) */\" b\");\nconst $await_content2__await_promise = /* @__PURE__ */_._await_promise(\"#text/1\", $await_content3__$params);\nconst $await_content2__setup = $scope => {\n  $await_content3($scope);\n  $await_content2__await_promise($scope, resolveAfter(\"d\", 3));\n};\nconst $await_content2__$params = ($scope, $params3) => $await_content2__result($scope, $params3[0]);\nconst $await_content__result = ($scope, result1) => _._text($scope[\"#text/0\"], result1);\nconst $await_content2 = /* @__PURE__ */_._await_content(\"#text/1\", \"<!><!>e\", /* replace, over(1), replace, over(2) */\"%b%c\", $await_content2__setup);\nconst $await_content__await_promise = /* @__PURE__ */_._await_promise(\"#text/1\", $await_content2__$params);\nconst $await_content__setup = $scope => {\n  $await_content2($scope);\n  $await_content__await_promise($scope, resolveAfter(\"c\", 2));\n};\nconst $await_content__$params = ($scope, $params2) => $await_content__result($scope, $params2[0]);\nconst $await_content = /* @__PURE__ */_._await_content(\"#text/0\", \"<!><!>f\", /* replace, over(1), replace, over(2) */\"%b%c\", $await_content__setup);\nconst $await_promise = /* @__PURE__ */_._await_promise(\"#text/0\", $await_content__$params);\nconst $await_content4 = /* @__PURE__ */_._await_content(\"#text/1\", \"<!><!>l\", /* replace, over(1), replace, over(2) */\"%b%c\", $await_content4__setup);\nconst $await_promise2 = /* @__PURE__ */_._await_promise(\"#text/1\", $await_content4__$params);\nexport function $setup($scope) {\n  $await_content($scope);\n  $await_content4($scope);\n  $await_promise($scope, resolveAfter(\"b\", 1));\n  $await_promise2($scope, resolveAfter(\"h\", 1));\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/html.expected/template.js",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"a\");\n  _._await($scope0_id, \"#text/0\", resolveAfter(\"b\", 1), result1 => {\n    const $scope1_id = _._scope_id();\n    _._html(_._escape(result1));\n    _._await($scope1_id, \"#text/1\", resolveAfter(\"c\", 2), result2 => {\n      const $scope2_id = _._scope_id();\n      _._html(_._escape(result2));\n      _._await($scope2_id, \"#text/1\", resolveAfter(\"d\", 3), result3 => {\n        const $scope3_id = _._scope_id();\n        _._html(_._escape(result3));\n      }, 0);\n      _._html(\"e\");\n    }, 0);\n    _._html(\"f\");\n  }, 0);\n  _._html(\"g\");\n  _._await($scope0_id, \"#text/1\", resolveAfter(\"h\", 1), result4 => {\n    const $scope4_id = _._scope_id();\n    _._html(_._escape(result4));\n    _._await($scope4_id, \"#text/1\", resolveAfter(\"i\", 2), result5 => {\n      const $scope5_id = _._scope_id();\n      _._html(_._escape(result5));\n      _._await($scope5_id, \"#text/1\", resolveAfter(\"j\", 3), result6 => {\n        const $scope6_id = _._scope_id();\n        _._html(_._escape(result6));\n      }, 0);\n      _._html(\"k\");\n    }, 0);\n    _._html(\"l\");\n  }, 0);\n  _._html(\"m\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\na\n```\n\n\n# Render FLUSH\n```html\nab\n```\n\n\n# Render FLUSH\n```html\nabc\n```\n\n\n# Render FLUSH\n```html\nabcdefghijklm\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    a\n  </body>\n</html>\n```\n\n\n# Render FLUSH\n```html\n<html>\n  <head />\n  <body>\n    ab\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text1\n```\n\n# Render FLUSH\n```html\n<html>\n  <head />\n  <body>\n    abc\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text2\n```\n\n# Render FLUSH\n```html\n<html>\n  <head />\n  <body>\n    abcdefghijklm\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text3\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render ASYNC\n```html\na\n```\n\n\n# Render ASYNC\n```html\nab\n```\n\n\n# Render ASYNC\n```html\nabc\n```\n\n\n# Render End\n```html\nabcdefghijklm\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  a\n```\n\n# Write\n```html\n  b\n```\n\n# Write\n```html\n  c\n```\n\n# Write\n```html\n  defghijklm\n```\n\n# Render ASYNC\n```html\n<html>\n  <head />\n  <body>\n    a\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text\n```\n\n# Render ASYNC\n```html\n<html>\n  <head />\n  <body>\n    ab\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text1\n```\n\n# Render ASYNC\n```html\n<html>\n  <head />\n  <body>\n    abc\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text2\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    abcdefghijklm\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text3\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/template.marko",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\n-- a\nawait|result1|=resolveAfter(\"b\", 1)\n  -- ${result1}\n  await|result2|=resolveAfter(\"c\", 2)\n    -- ${result2}\n    await|result3|=resolveAfter(\"d\", 3)\n      -- ${result3}\n    -- e\n  -- f\n-- g\nawait|result4|=resolveAfter(\"h\", 1)\n  -- ${result4}\n  await|result5|=resolveAfter(\"i\", 2)\n    -- ${result5}\n    await|result6|=resolveAfter(\"j\", 3)\n      -- ${result6}\n    -- k\n  -- l\n-- m\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { flush, wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{}, flush, flush, flush, wait],\n  skip_equivalent: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"e\",\n      \"$init\": \"t\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n\n\n# Render ASYNC\n```html\nRejected B\n```\n\n\n# Render ASYNC\n```html\n<div>\n  Resolved A: A Value\n</div>\nRejected B\n<div>\n  Resolved C: C Value\n</div>\n<button>\n  Before\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Resolved A: A Value\n</div>\nRejected B\n<div>\n  Resolved C: C Value\n</div>\n<button>\n  After\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<!---->\n<!---->\n<!---->\n<!---->\n<!---->\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, #text0, #comment2, #comment3, #text1, #comment4, #comment5, #text2, #comment6, #comment7\n```\n\n# Render ASYNC\n```html\n<!---->\n<!---->\n<!---->\nRejected B\n<!---->\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #text1\nREMOVE #comment after #text1\nREMOVE #text after #text1\nREMOVE #comment after #text1\n```\n\n# Render ASYNC\n```html\n<!---->\n<!---->\n<div>\n  Resolved A: A Value\n</div>\n<!---->\nRejected B\n<!---->\n<div>\n  Resolved C: C Value\n</div>\n<button>\n  Before\n</button>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT div0\nREMOVE #text after div0\nUPDATE div0/#text1 \"\" => \"A Value\"\nINSERT div1, button\nREMOVE #text after button\nUPDATE div1/#text1 \"\" => \"C Value\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<!---->\n<div>\n  Resolved A: A Value\n</div>\n<!---->\nRejected B\n<!---->\n<div>\n  Resolved C: C Value\n</div>\n<button>\n  After\n</button>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nREMOVE #text in button\nINSERT button/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 248 (min) 131 (brotli)\n(_._enable_catch(),\n  _._script(\"a0\", ($scope) =>\n    _._on($scope.b, \"click\", function () {\n      document.querySelector(\"button\").textContent = \"After\";\n    }),\n  ),\n  _._content_resume(\"a1\", \"Rejected C\", \"b\"),\n  _._content_resume(\"a2\", \"Rejected B\", \"b\"),\n  _._content_resume(\"a3\", \"Rejected A\", \"b\"),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><!><!><!>\";\nexport const $walks = /* over(1), replace, over(1), replace, over(1), replace, over(2) */\"b%b%b%c\";\nimport { resolveAfter, rejectAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\n_._enable_catch();\nconst $await_content3__v = ($scope, v) => _._text($scope[\"#text/0\"], v);\nconst $await_content3__setup__script = _._script(\"__tests__/template.marko_9\", $scope => _._on($scope[\"#button/1\"], \"click\", function () {\n  document.querySelector(\"button\").textContent = \"After\";\n}));\nconst $await_content3__setup = $await_content3__setup__script;\nconst $await_content3__$params = ($scope, $params4) => $await_content3__v($scope, $params4[0]);\nconst $catch_content3 = _._content_resume(\"__tests__/template.marko_8_content\", \"Rejected C\", /* over(1) */\"b\");\nconst $await_content3 = /* @__PURE__ */_._await_content(\"#text/0\", \"<div>Resolved C: <!></div><button>Before</button>\", /* next(1), over(1), replace, out(1), get, over(1) */\"Db%l b\", $await_content3__setup);\nconst $try_content3__await_promise = /* @__PURE__ */_._await_promise(\"#text/0\", $await_content3__$params);\nconst $try_content3__setup = $scope => {\n  $await_content3($scope);\n  $try_content3__await_promise($scope, resolveAfter(\"C Value\", 2));\n};\nconst $await_content2__v = ($scope, v) => _._text($scope[\"#text/0\"], v);\nconst $await_content2__$params = ($scope, $params3) => $await_content2__v($scope, $params3[0]);\nconst $catch_content2 = _._content_resume(\"__tests__/template.marko_5_content\", \"Rejected B\", /* over(1) */\"b\");\nconst $await_content2 = /* @__PURE__ */_._await_content(\"#text/0\", \"<div>Resolved B: <!></div>\", /* next(1), over(1), replace, out(1) */\"Db%l\");\nconst $try_content2__await_promise = /* @__PURE__ */_._await_promise(\"#text/0\", $await_content2__$params);\nconst $try_content2__setup = $scope => {\n  $await_content2($scope);\n  $try_content2__await_promise($scope, rejectAfter(new Error(\"rejected b\"), 1));\n};\nconst $await_content__v = ($scope, v) => _._text($scope[\"#text/0\"], v);\nconst $await_content__$params = ($scope, $params2) => $await_content__v($scope, $params2[0]);\nconst $catch_content = _._content_resume(\"__tests__/template.marko_2_content\", \"Rejected A\", /* over(1) */\"b\");\nconst $await_content = /* @__PURE__ */_._await_content(\"#text/0\", \"<div>Resolved A: <!></div>\", /* next(1), over(1), replace, out(1) */\"Db%l\");\nconst $try_content__await_promise = /* @__PURE__ */_._await_promise(\"#text/0\", $await_content__$params);\nconst $try_content__setup = $scope => {\n  $await_content($scope);\n  $try_content__await_promise($scope, resolveAfter(\"A Value\", 2));\n};\nconst $try = /* @__PURE__ */_._try(\"#text/0\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", $try_content__setup);\nconst $try2 = /* @__PURE__ */_._try(\"#text/1\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", $try_content2__setup);\nconst $try3 = /* @__PURE__ */_._try(\"#text/2\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", $try_content3__setup);\nexport function $setup($scope) {\n  $try($scope, {\n    catch: _.attrTag({\n      content: $catch_content($scope)\n    })\n  });\n  $try2($scope, {\n    catch: _.attrTag({\n      content: $catch_content2($scope)\n    })\n  });\n  $try3($scope, {\n    catch: _.attrTag({\n      content: $catch_content3($scope)\n    })\n  });\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/html.expected/template.js",
    "content": "import { resolveAfter, rejectAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._try($scope0_id, \"#text/0\", _._content_resume(\"__tests__/template.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    _._scope_reason();\n    _._await($scope1_id, \"#text/0\", resolveAfter(\"A Value\", 2), v => {\n      const $scope3_id = _._scope_id();\n      _._html(`<div>Resolved A: ${_._escape(v)}</div>`);\n    }, 0);\n  }, $scope0_id), {\n    catch: _.attrTag({\n      content: _._content_resume(\"__tests__/template.marko_2_content\", () => {\n        _._scope_reason();\n        const $scope2_id = _._scope_id();\n        _._html(\"Rejected A\");\n      }, $scope0_id)\n    })\n  });\n  _._try($scope0_id, \"#text/1\", _._content_resume(\"__tests__/template.marko_4_content\", () => {\n    const $scope4_id = _._scope_id();\n    _._scope_reason();\n    _._await($scope4_id, \"#text/0\", rejectAfter(new Error(\"rejected b\"), 1), v => {\n      const $scope6_id = _._scope_id();\n      _._html(`<div>Resolved B: ${_._escape(v)}</div>`);\n    }, 0);\n  }, $scope0_id), {\n    catch: _.attrTag({\n      content: _._content_resume(\"__tests__/template.marko_5_content\", () => {\n        _._scope_reason();\n        const $scope5_id = _._scope_id();\n        _._html(\"Rejected B\");\n      }, $scope0_id)\n    })\n  });\n  _._try($scope0_id, \"#text/2\", _._content_resume(\"__tests__/template.marko_7_content\", () => {\n    const $scope7_id = _._scope_id();\n    _._scope_reason();\n    _._await($scope7_id, \"#text/0\", resolveAfter(\"C Value\", 2), v => {\n      const $scope9_id = _._scope_id();\n      _._html(`<div>Resolved C: ${_._escape(v)}</div><button>Before</button>${_._el_resume($scope9_id, \"#button/1\")}`);\n      _._script($scope9_id, \"__tests__/template.marko_9\");\n      _._scope($scope9_id, {}, \"__tests__/template.marko\", \"24:4\");\n    });\n  }, $scope0_id), {\n    catch: _.attrTag({\n      content: _._content_resume(\"__tests__/template.marko_8_content\", () => {\n        _._scope_reason();\n        const $scope8_id = _._scope_id();\n        _._html(\"Rejected C\");\n      }, $scope0_id)\n    })\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n\n\n# Render FLUSH\n\n\n# Render FLUSH\n```html\n<div>\n  Resolved A: A Value\n</div>\nRejected B\n<div>\n  Resolved C: C Value\n</div>\n<button>\n  Before\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Resolved A: A Value\n</div>\nRejected B\n<div>\n  Resolved C: C Value\n</div>\n<button>\n  After\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <!--M_[-->\n    <!--M_!^b-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#CatchContent\": _.e = {}\n      }, _.b = {\n        \"#BranchAccessor\": \"#text/1\"\n      }, _.c = {\n        \"#BranchAccessor\": \"#text/2\"\n      }], _.a[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.e), _.b[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_5_content\"\n        ](_.e), _.c[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_8_content\"\n        ](_.e), _.d)]\n    </script>\n  </body>\n</html>\n```\n\n\n# Render FLUSH\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <!--M_[-->\n    <!--M_!^b-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#CatchContent\": _.e = {}\n      }, _.b = {\n        \"#BranchAccessor\": \"#text/1\"\n      }, _.c = {\n        \"#BranchAccessor\": \"#text/2\"\n      }], _.a[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.e), _.b[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_5_content\"\n        ](_.e), _.c[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_8_content\"\n        ](_.e), _.d)]\n    </script>\n    <script>\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/head/style\nINSERT html/head/style/#text\nINSERT t\nINSERT t/#text\nREMOVE html/head/style after html/body/script0\nINSERT html/head/style\nREMOVE t after html/body/script0\nINSERT html/body/script1\n```\n\n# Render FLUSH\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <!--M_[-->\n    <!--M_!^b-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#CatchContent\": _.e = {}\n      }, _.b = {\n        \"#BranchAccessor\": \"#text/1\"\n      }, _.c = {\n        \"#BranchAccessor\": \"#text/2\"\n      }], _.a[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.e), _.b[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_5_content\"\n        ](_.e), _.c[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_8_content\"\n        ](_.e), _.d)]\n    </script>\n    <script>\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <div>\n      Resolved A: A Value\n    </div>\n    <!--M_!b-->\n    <!--M_]1 #text/0 2-->\n    <!--M_[-->\n    Rejected B\n    <!--M_]1 #text/1 3-->\n    <!--M_[-->\n    <!--M_!^d-->\n    <!--M_[-->\n    <div>\n      Resolved C: C Value\n    </div>\n    <button>\n      Before\n    </button>\n    <!--M_*7 #button/1-->\n    <!--M_]4 #text/0 7-->\n    <!--M_!d-->\n    <!--M_]1 #text/2 4-->\n    <script>\n      M._.r.push(\n        \"__tests__/template.marko_9 7\"\n        );\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div0\nINSERT html/body/div0/#text\nINSERT html/body/#comment2\nINSERT html/body/#comment3\nINSERT html/body/#comment4\nINSERT #comment\nINSERT #comment\nINSERT html/body/#comment5\nINSERT html/body/#comment6\nINSERT html/body/#comment7\nINSERT html/body/#comment8\nINSERT html/body/div1\nINSERT html/body/div1/#text\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment9\nINSERT html/body/#comment10\nINSERT html/body/#comment11\nINSERT html/body/#comment12\nREMOVE #comment after html/body/#comment4\nREMOVE #comment after html/body/#comment4\nINSERT html/body/#text1\nINSERT html/body/#text0\nINSERT html/body/#text2\nINSERT html/body/#text3\nINSERT html/body/#text4\nINSERT html/body/script2\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <!--M_[-->\n    <!--M_!^b-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#CatchContent\": _.e = {}\n      }, _.b = {\n        \"#BranchAccessor\": \"#text/1\"\n      }, _.c = {\n        \"#BranchAccessor\": \"#text/2\"\n      }], _.a[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.e), _.b[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_5_content\"\n        ](_.e), _.c[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_8_content\"\n        ](_.e), _.d)]\n    </script>\n    <script>\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <div>\n      Resolved A: A Value\n    </div>\n    <!--M_!b-->\n    <!--M_]1 #text/0 2-->\n    <!--M_[-->\n    Rejected B\n    <!--M_]1 #text/1 3-->\n    <!--M_[-->\n    <!--M_!^d-->\n    <!--M_[-->\n    <div>\n      Resolved C: C Value\n    </div>\n    <button>\n      After\n    </button>\n    <!--M_*7 #button/1-->\n    <!--M_]4 #text/0 7-->\n    <!--M_!d-->\n    <!--M_]1 #text/2 4-->\n    <script>\n      M._.r.push(\n        \"__tests__/template.marko_9 7\"\n        );\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #text in html/body/button\nINSERT html/body/button/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render ASYNC\n\n\n# Render ASYNC\n\n\n# Render End\n```html\n<div>\n  Resolved A: A Value\n</div>\nRejected B\n<div>\n  Resolved C: C Value\n</div>\n<button>\n  Before\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <!--M_[--><!--M_!^b--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.d=[0,1,_.a={\"#BranchAccessor\":\"#text/0\",\"#CatchContent\":_.e={}},_.b={\"#BranchAccessor\":\"#text/1\"},_.c={\"#BranchAccessor\":\"#text/2\"}],_.a[\"#CatchContent\"]=_._[\"__tests__/template.marko_2_content\"](_.e),_.b[\"#CatchContent\"]=_._[\"__tests__/template.marko_5_content\"](_.e),_.c[\"#CatchContent\"]=_._[\"__tests__/template.marko_8_content\"](_.e),_.d)]</script>\n```\n\n# Write\n```html\n  <style M_>t{display:none}</style><t M_=c>Rejected B</t><script>REORDER_RUNTIME(M._);M._.w()</script>\n```\n\n# Write\n```html\n  <div>Resolved A: A Value</div><!--M_!b--><!--M_]1 #text/0 2--><!--M_[--><!--M_!^c--><!--M_!c--><!--M_]1 #text/1 3--><!--M_[--><!--M_!^d--><!--M_[--><div>Resolved C: C Value</div><button>Before</button><!--M_*7 #button/1--><!--M_]4 #text/0 7--><!--M_!d--><!--M_]1 #text/2 4--><script>M._.r.push(\"__tests__/template.marko_9 7\");M._.w()</script>\n```\n\n# Render ASYNC\n```html\n<html>\n  <head />\n  <body>\n    <!--M_[-->\n    <!--M_!^b-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#CatchContent\": _.e = {}\n      }, _.b = {\n        \"#BranchAccessor\": \"#text/1\"\n      }, _.c = {\n        \"#BranchAccessor\": \"#text/2\"\n      }], _.a[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.e), _.b[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_5_content\"\n        ](_.e), _.c[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_8_content\"\n        ](_.e), _.d)]\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/script\n```\n\n# Render ASYNC\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <!--M_[-->\n    <!--M_!^b-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#CatchContent\": _.e = {}\n      }, _.b = {\n        \"#BranchAccessor\": \"#text/1\"\n      }, _.c = {\n        \"#BranchAccessor\": \"#text/2\"\n      }], _.a[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.e), _.b[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_5_content\"\n        ](_.e), _.c[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_8_content\"\n        ](_.e), _.d)]\n    </script>\n    <script>\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/head/style\nINSERT html/head/style/#text\nINSERT t\nINSERT t/#text\nREMOVE html/head/style after html/body/script0\nINSERT html/head/style\nREMOVE t after html/body/script0\nINSERT html/body/script1\n```\n\n# Render End\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <!--M_[-->\n    <!--M_!^b-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#CatchContent\": _.e = {}\n      }, _.b = {\n        \"#BranchAccessor\": \"#text/1\"\n      }, _.c = {\n        \"#BranchAccessor\": \"#text/2\"\n      }], _.a[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.e), _.b[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_5_content\"\n        ](_.e), _.c[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_8_content\"\n        ](_.e), _.d)]\n    </script>\n    <script>\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <div>\n      Resolved A: A Value\n    </div>\n    <!--M_!b-->\n    <!--M_]1 #text/0 2-->\n    <!--M_[-->\n    Rejected B\n    <!--M_]1 #text/1 3-->\n    <!--M_[-->\n    <!--M_!^d-->\n    <!--M_[-->\n    <div>\n      Resolved C: C Value\n    </div>\n    <button>\n      Before\n    </button>\n    <!--M_*7 #button/1-->\n    <!--M_]4 #text/0 7-->\n    <!--M_!d-->\n    <!--M_]1 #text/2 4-->\n    <script>\n      M._.r.push(\n        \"__tests__/template.marko_9 7\"\n        );\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div0\nINSERT html/body/div0/#text\nINSERT html/body/#comment2\nINSERT html/body/#comment3\nINSERT html/body/#comment4\nINSERT #comment\nINSERT #comment\nINSERT html/body/#comment5\nINSERT html/body/#comment6\nINSERT html/body/#comment7\nINSERT html/body/#comment8\nINSERT html/body/div1\nINSERT html/body/div1/#text\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment9\nINSERT html/body/#comment10\nINSERT html/body/#comment11\nINSERT html/body/#comment12\nREMOVE #comment after html/body/#comment4\nREMOVE #comment after html/body/#comment4\nINSERT html/body/#text\nINSERT html/body/script2\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/template.marko",
    "content": "import { resolveAfter, rejectAfter } from \"../../utils/resolve\";\n<try>\n  <@catch>\n    Rejected A\n  </>\n  <await|v|=resolveAfter(\"A Value\", 2)>\n    <div>Resolved A: ${v}</div>\n  </await>\n</try>\n\n<try>\n  <@catch>\n    Rejected B\n  </>\n  <await|v|=rejectAfter(new Error(\"rejected b\"), 1)>\n    <div>Resolved B: ${v}</div>\n  </await>\n</try>\n\n<try>\n  <@catch>\n    Rejected C\n  </>\n  <await|v|=resolveAfter(\"C Value\", 2)>\n    <div>Resolved C: ${v}</div>\n    <button onClick() {\n      document.querySelector(\"button\")!.textContent = \"After\";\n    }>\n      Before\n    </button>\n  </await>\n</try>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { flush, wait } from \"../../utils/resolve\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, flush, flush, wait, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"e\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n\n\n# Render ASYNC\n```html\nRejected B\n```\n\n\n# Render ASYNC\n```html\n<div>\n  Resolved A: A Value\n</div>\nRejected B\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<!---->\n<!---->\n<!---->\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, #text0, #comment2, #comment3, #text1, #comment4, #comment5\n```\n\n# Render ASYNC\n```html\n<!---->\n<!---->\n<!---->\nRejected B\n<!---->\n```\n\n# Mutations\n```\nINSERT #text1\nREMOVE #comment after #text1\nREMOVE #text after #text1\nREMOVE #comment after #text1\n```\n\n# Render ASYNC\n```html\n<!---->\n<!---->\n<div>\n  Resolved A: A Value\n</div>\n<!---->\nRejected B\n<!---->\n```\n\n# Mutations\n```\nINSERT div\nREMOVE #text after div\nUPDATE div/#text1 \"\" => \"A Value\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 100 (min) 62 (brotli)\n(_._enable_catch(),\n  _._content_resume(\"a0\", \"Rejected B\", \"b\"),\n  _._content_resume(\"a1\", \"Rejected A\", \"b\"));\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><!><!>\";\nexport const $walks = /* over(1), replace, over(1), replace, over(2) */\"b%b%c\";\nimport { resolveAfter, rejectAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\n_._enable_catch();\nconst $await_content2__v = ($scope, v) => _._text($scope[\"#text/0\"], v);\nconst $await_content2__$params = ($scope, $params3) => $await_content2__v($scope, $params3[0]);\nconst $catch_content2 = _._content_resume(\"__tests__/template.marko_5_content\", \"Rejected B\", /* over(1) */\"b\");\nconst $await_content2 = /* @__PURE__ */_._await_content(\"#text/0\", \"<div>Resolved B: <!></div>\", /* next(1), over(1), replace, out(1) */\"Db%l\");\nconst $try_content2__await_promise = /* @__PURE__ */_._await_promise(\"#text/0\", $await_content2__$params);\nconst $try_content2__setup = $scope => {\n  $await_content2($scope);\n  $try_content2__await_promise($scope, rejectAfter(new Error(\"rejected b\"), 1));\n};\nconst $await_content__v = ($scope, v) => _._text($scope[\"#text/0\"], v);\nconst $await_content__$params = ($scope, $params2) => $await_content__v($scope, $params2[0]);\nconst $catch_content = _._content_resume(\"__tests__/template.marko_2_content\", \"Rejected A\", /* over(1) */\"b\");\nconst $await_content = /* @__PURE__ */_._await_content(\"#text/0\", \"<div>Resolved A: <!></div>\", /* next(1), over(1), replace, out(1) */\"Db%l\");\nconst $try_content__await_promise = /* @__PURE__ */_._await_promise(\"#text/0\", $await_content__$params);\nconst $try_content__setup = $scope => {\n  $await_content($scope);\n  $try_content__await_promise($scope, resolveAfter(\"A Value\", 2));\n};\nconst $try = /* @__PURE__ */_._try(\"#text/0\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", $try_content__setup);\nconst $try2 = /* @__PURE__ */_._try(\"#text/1\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", $try_content2__setup);\nexport function $setup($scope) {\n  $try($scope, {\n    catch: _.attrTag({\n      content: $catch_content($scope)\n    })\n  });\n  $try2($scope, {\n    catch: _.attrTag({\n      content: $catch_content2($scope)\n    })\n  });\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/html.expected/template.js",
    "content": "import { resolveAfter, rejectAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._try($scope0_id, \"#text/0\", _._content_resume(\"__tests__/template.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    _._scope_reason();\n    _._await($scope1_id, \"#text/0\", resolveAfter(\"A Value\", 2), v => {\n      const $scope3_id = _._scope_id();\n      _._html(`<div>Resolved A: ${_._escape(v)}</div>`);\n    }, 0);\n  }, $scope0_id), {\n    catch: _.attrTag({\n      content: _._content_resume(\"__tests__/template.marko_2_content\", () => {\n        _._scope_reason();\n        const $scope2_id = _._scope_id();\n        _._html(\"Rejected A\");\n      }, $scope0_id)\n    })\n  });\n  _._try($scope0_id, \"#text/1\", _._content_resume(\"__tests__/template.marko_4_content\", () => {\n    const $scope4_id = _._scope_id();\n    _._scope_reason();\n    _._await($scope4_id, \"#text/0\", rejectAfter(new Error(\"rejected b\"), 1), v => {\n      const $scope6_id = _._scope_id();\n      _._html(`<div>Resolved B: ${_._escape(v)}</div>`);\n    }, 0);\n  }, $scope0_id), {\n    catch: _.attrTag({\n      content: _._content_resume(\"__tests__/template.marko_5_content\", () => {\n        _._scope_reason();\n        const $scope5_id = _._scope_id();\n        _._html(\"Rejected B\");\n      }, $scope0_id)\n    })\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n\n\n# Render FLUSH\n\n\n# Render FLUSH\n```html\n<div>\n  Resolved A: A Value\n</div>\nRejected B\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <!--M_[-->\n    <!--M_!^b-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#CatchContent\": _.d = {}\n      }, _.b = {\n        \"#BranchAccessor\": \"#text/1\"\n      }], _.a[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.d), _.b[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_5_content\"\n        ](_.d), _.c)]\n    </script>\n  </body>\n</html>\n```\n\n\n# Render FLUSH\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <!--M_[-->\n    <!--M_!^b-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#CatchContent\": _.d = {}\n      }, _.b = {\n        \"#BranchAccessor\": \"#text/1\"\n      }], _.a[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.d), _.b[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_5_content\"\n        ](_.d), _.c)]\n    </script>\n    <script>\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/head/style\nINSERT html/head/style/#text\nINSERT t\nINSERT t/#text\nREMOVE html/head/style after html/body/script0\nINSERT html/head/style\nREMOVE t after html/body/script0\nINSERT html/body/script1\n```\n\n# Render FLUSH\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <!--M_[-->\n    <!--M_!^b-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#CatchContent\": _.d = {}\n      }, _.b = {\n        \"#BranchAccessor\": \"#text/1\"\n      }], _.a[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.d), _.b[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_5_content\"\n        ](_.d), _.c)]\n    </script>\n    <script>\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <div>\n      Resolved A: A Value\n    </div>\n    <!--M_!b-->\n    <!--M_]1 #text/0 2-->\n    <!--M_[-->\n    Rejected B\n    <!--M_]1 #text/1 3-->\n    <script>\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/#comment2\nINSERT html/body/#comment3\nINSERT html/body/#comment4\nINSERT #comment\nINSERT #comment\nINSERT html/body/#comment5\nREMOVE #comment after html/body/#comment4\nREMOVE #comment after html/body/#comment4\nINSERT html/body/#text1\nINSERT html/body/#text0\nINSERT html/body/#text2\nINSERT html/body/script2\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render ASYNC\n\n\n# Render ASYNC\n\n\n# Render End\n```html\n<div>\n  Resolved A: A Value\n</div>\nRejected B\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <!--M_[--><!--M_!^b--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,1,_.a={\"#BranchAccessor\":\"#text/0\",\"#CatchContent\":_.d={}},_.b={\"#BranchAccessor\":\"#text/1\"}],_.a[\"#CatchContent\"]=_._[\"__tests__/template.marko_2_content\"](_.d),_.b[\"#CatchContent\"]=_._[\"__tests__/template.marko_5_content\"](_.d),_.c)]</script>\n```\n\n# Write\n```html\n  <style M_>t{display:none}</style><t M_=c>Rejected B</t><script>REORDER_RUNTIME(M._);M._.w()</script>\n```\n\n# Write\n```html\n  <div>Resolved A: A Value</div><!--M_!b--><!--M_]1 #text/0 2--><!--M_[--><!--M_!^c--><!--M_!c--><!--M_]1 #text/1 3--><script>M._.w()</script>\n```\n\n# Render ASYNC\n```html\n<html>\n  <head />\n  <body>\n    <!--M_[-->\n    <!--M_!^b-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#CatchContent\": _.d = {}\n      }, _.b = {\n        \"#BranchAccessor\": \"#text/1\"\n      }], _.a[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.d), _.b[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_5_content\"\n        ](_.d), _.c)]\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/script\n```\n\n# Render ASYNC\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <!--M_[-->\n    <!--M_!^b-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#CatchContent\": _.d = {}\n      }, _.b = {\n        \"#BranchAccessor\": \"#text/1\"\n      }], _.a[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.d), _.b[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_5_content\"\n        ](_.d), _.c)]\n    </script>\n    <script>\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/head/style\nINSERT html/head/style/#text\nINSERT t\nINSERT t/#text\nREMOVE html/head/style after html/body/script0\nINSERT html/head/style\nREMOVE t after html/body/script0\nINSERT html/body/script1\n```\n\n# Render End\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <!--M_[-->\n    <!--M_!^b-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#CatchContent\": _.d = {}\n      }, _.b = {\n        \"#BranchAccessor\": \"#text/1\"\n      }], _.a[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.d), _.b[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_5_content\"\n        ](_.d), _.c)]\n    </script>\n    <script>\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <div>\n      Resolved A: A Value\n    </div>\n    <!--M_!b-->\n    <!--M_]1 #text/0 2-->\n    <!--M_[-->\n    Rejected B\n    <!--M_]1 #text/1 3-->\n    <script>\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/#comment2\nINSERT html/body/#comment3\nINSERT html/body/#comment4\nINSERT #comment\nINSERT #comment\nINSERT html/body/#comment5\nREMOVE #comment after html/body/#comment4\nREMOVE #comment after html/body/#comment4\nINSERT html/body/#text\nINSERT html/body/script2\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/template.marko",
    "content": "import { resolveAfter, rejectAfter } from \"../../utils/resolve\";\n<try>\n  <@catch>\n    Rejected A\n  </>\n  <await|v|=resolveAfter(\"A Value\", 2)>\n    <div>Resolved A: ${v}</div>\n  </await>\n</try>\n\n<try>\n  <@catch>\n    Rejected B\n  </>\n  <await|v|=rejectAfter(new Error(\"rejected b\"), 1)>\n    <div>Resolved B: ${v}</div>\n  </await>\n</try>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { flush, wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{}, flush, flush, wait],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"e\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n\n\n# Render ASYNC\n```html\nLOADING A1\n```\n\n\n# Render ASYNC\n```html\n<div\n  class=\"a\"\n  level=\"1\"\n/>\n```\n\n\n# Render ASYNC\n```html\n<div\n  class=\"a\"\n  level=\"1\"\n>\n  <div\n    class=\"a\"\n    level=\"2\"\n  />\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div\n  class=\"a\"\n  level=\"1\"\n>\n  <div\n    class=\"a\"\n    level=\"2\"\n  >\n    LOADING B1\n  </div>\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div\n  class=\"a\"\n  level=\"1\"\n>\n  <div\n    class=\"a\"\n    level=\"2\"\n  >\n    <div\n      class=\"b\"\n      level=\"3\"\n    />\n  </div>\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div\n  class=\"a\"\n  level=\"1\"\n>\n  <div\n    class=\"a\"\n    level=\"2\"\n  >\n    <div\n      class=\"b\"\n      level=\"3\"\n    >\n      <div\n        class=\"b\"\n        level=\"4\"\n      />\n    </div>\n  </div>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<!---->\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, #text, #comment2, #comment3\n```\n\n# Render ASYNC\n```html\n<!---->\nLOADING A1\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE #document-fragment/#comment0 after #text\nREMOVE #document-fragment/#text after #text\nREMOVE #document-fragment/#comment1 after #text\n```\n\n# Render ASYNC\n```html\n<!---->\n<!---->\n<div\n  class=\"a\"\n  level=\"1\"\n>\n  <!---->\n  <!---->\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment1, div, #comment2\nREMOVE #text after #comment2\nINSERT div/#comment0, div/#text, div/#comment1\nREMOVE #text after div/#comment1\n```\n\n# Render ASYNC\n```html\n<!---->\n<!---->\n<div\n  class=\"a\"\n  level=\"1\"\n>\n  <!---->\n  <div\n    class=\"a\"\n    level=\"2\"\n  >\n    <!---->\n    <!---->\n  </div>\n  <!---->\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT div/div\nREMOVE #text after div/div\nUPDATE div/div[class] null => \"a\"\nINSERT div/div/#comment0, div/div/#text, div/div/#comment1\nREMOVE #text after div/div/#comment1\n```\n\n# Render ASYNC\n```html\n<!---->\n<!---->\n<div\n  class=\"a\"\n  level=\"1\"\n>\n  <!---->\n  <div\n    class=\"a\"\n    level=\"2\"\n  >\n    LOADING B1\n  </div>\n  <!---->\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT div/div/#text\nREMOVE #document-fragment/#comment0 after div/div/#text\nREMOVE #document-fragment/#text after div/div/#text\nREMOVE #document-fragment/#comment1 after div/div/#text\n```\n\n# Render ASYNC\n```html\n<!---->\n<!---->\n<div\n  class=\"a\"\n  level=\"1\"\n>\n  <!---->\n  <div\n    class=\"a\"\n    level=\"2\"\n  >\n    <!---->\n    <div\n      class=\"b\"\n      level=\"3\"\n    >\n      <!---->\n      <!---->\n    </div>\n    <!---->\n  </div>\n  <!---->\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT div/div/#comment0, div/div/div, div/div/#comment1\nREMOVE #text after div/div/#comment1\nINSERT div/div/div/#comment0, div/div/div/#text, div/div/div/#comment1\nREMOVE #text after div/div/div/#comment1\n```\n\n# Render ASYNC\n```html\n<!---->\n<!---->\n<div\n  class=\"a\"\n  level=\"1\"\n>\n  <!---->\n  <div\n    class=\"a\"\n    level=\"2\"\n  >\n    <!---->\n    <div\n      class=\"b\"\n      level=\"3\"\n    >\n      <!---->\n      <div\n        class=\"b\"\n        level=\"4\"\n      />\n      <!---->\n    </div>\n    <!---->\n  </div>\n  <!---->\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT div/div/div/div\nREMOVE #text after div/div/div/div\nUPDATE div/div/div/div[class] null => \"b\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 182 (min) 83 (brotli)\n(_._enable_catch(),\n  _._content_resume(\"a0\", \"LOADING B2\", \"b\"),\n  _._content_resume(\"a1\", \"LOADING B1\", \"b\"),\n  _._content_resume(\"a4\", \"LOADING A2\", \"b\"),\n  _._content_resume(\"a5\", \"LOADING A1\", \"b\"));\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nimport { resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\n_._enable_catch();\nconst $await_content4__value = ($scope, value) => _._attr_class($scope[\"#div/0\"], value);\nconst $await_content4__$params = ($scope, $params5) => $await_content4__value($scope, $params5[0]);\nconst $placeholder_content4 = _._content_resume(\"__tests__/template.marko_11_content\", \"LOADING B2\", /* over(1) */\"b\");\nconst $placeholder_content3 = _._content_resume(\"__tests__/template.marko_10_content\", \"LOADING B1\", /* over(1) */\"b\");\nconst $await_content4 = /* @__PURE__ */_._await_content(\"#text/0\", \"<div level=4></div>\", /* get, over(1) */\" b\");\nconst $try_content4__await_promise = /* @__PURE__ */_._await_promise(\"#text/0\", $await_content4__$params);\nconst $try_content4__promiseB = /* @__PURE__ */_._closure_get(\"promiseB\", $scope => $try_content4__await_promise($scope, $scope._._._.promiseB), $scope => $scope._._._, \"__tests__/template.marko_9_promiseB/pending\");\nconst $try_content4__setup = $scope => {\n  $try_content4__promiseB($scope);\n  $await_content4($scope);\n};\nconst $await_content3__value = ($scope, value) => _._attr_class($scope[\"#div/0\"], value);\nconst $await_content3__try = /* @__PURE__ */_._try(\"#text/1\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", $try_content4__setup);\nconst $await_content3__setup = $scope => $await_content3__try($scope, {\n  placeholder: _.attrTag({\n    content: $placeholder_content4($scope)\n  })\n});\nconst $await_content3__$params = ($scope, $params4) => $await_content3__value($scope, $params4[0]);\nconst $await_content3 = /* @__PURE__ */_._await_content(\"#text/0\", \"<div level=3><!></div>\", /* get, next(1), replace, out(1) */\" D%l\", $await_content3__setup);\nconst $try_content3__await_promise = /* @__PURE__ */_._await_promise(\"#text/0\", $await_content3__$params);\nconst $try_content3__promiseB = /* @__PURE__ */_._closure_get(\"promiseB\", $scope => $try_content3__await_promise($scope, $scope._.promiseB), 0, \"__tests__/template.marko_7_promiseB/pending\");\nconst $try_content3__setup = $scope => {\n  $try_content3__promiseB($scope);\n  $await_content3($scope);\n};\nconst $await_content2__value = ($scope, value) => _._attr_class($scope[\"#div/0\"], value);\nconst $await_content2__promiseB = /* @__PURE__ */_._const(\"promiseB\");\nconst $await_content2__try = /* @__PURE__ */_._try(\"#text/1\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", $try_content3__setup);\nconst $await_content2__setup = $scope => {\n  $await_content2__promiseB($scope, resolveAfter(\"b\", 2));\n  $await_content2__try($scope, {\n    placeholder: _.attrTag({\n      content: $placeholder_content3($scope)\n    })\n  });\n};\nconst $await_content2__$params = ($scope, $params3) => $await_content2__value($scope, $params3[0]);\nconst $placeholder_content2 = _._content_resume(\"__tests__/template.marko_5_content\", \"LOADING A2\", /* over(1) */\"b\");\nconst $placeholder_content = _._content_resume(\"__tests__/template.marko_4_content\", \"LOADING A1\", /* over(1) */\"b\");\nconst $await_content2 = /* @__PURE__ */_._await_content(\"#text/0\", \"<div level=2><!></div>\", /* get, next(1), replace, out(1) */\" D%l\", $await_content2__setup);\nconst $try_content2__await_promise = /* @__PURE__ */_._await_promise(\"#text/0\", $await_content2__$params);\nconst $try_content2__promiseA = /* @__PURE__ */_._closure_get(\"promiseA\", $scope => $try_content2__await_promise($scope, $scope._._._.promiseA), $scope => $scope._._._, \"__tests__/template.marko_3_promiseA/pending\");\nconst $try_content2__setup = $scope => {\n  $try_content2__promiseA($scope);\n  $await_content2($scope);\n};\nconst $await_content__value = ($scope, value) => _._attr_class($scope[\"#div/0\"], value);\nconst $await_content__try = /* @__PURE__ */_._try(\"#text/1\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", $try_content2__setup);\nconst $await_content__setup = $scope => $await_content__try($scope, {\n  placeholder: _.attrTag({\n    content: $placeholder_content2($scope)\n  })\n});\nconst $await_content__$params = ($scope, $params2) => $await_content__value($scope, $params2[0]);\nconst $await_content = /* @__PURE__ */_._await_content(\"#text/0\", \"<div level=1><!></div>\", /* get, next(1), replace, out(1) */\" D%l\", $await_content__setup);\nconst $try_content__await_promise = /* @__PURE__ */_._await_promise(\"#text/0\", $await_content__$params);\nconst $try_content__promiseA = /* @__PURE__ */_._closure_get(\"promiseA\", $scope => $try_content__await_promise($scope, $scope._.promiseA), 0, \"__tests__/template.marko_1_promiseA/pending\");\nconst $try_content__setup = $scope => {\n  $try_content__promiseA($scope);\n  $await_content($scope);\n};\nconst $promiseA = /* @__PURE__ */_._const(\"promiseA\");\nconst $try = /* @__PURE__ */_._try(\"#text/0\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", $try_content__setup);\nexport function $setup($scope) {\n  $promiseA($scope, resolveAfter(\"a\", 1));\n  $try($scope, {\n    placeholder: _.attrTag({\n      content: $placeholder_content($scope)\n    })\n  });\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/html.expected/template.js",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const promiseA = resolveAfter(\"a\", 1);\n  _._try($scope0_id, \"#text/0\", _._content_resume(\"__tests__/template.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    _._scope_reason();\n    _._await($scope1_id, \"#text/0\", promiseA, value => {\n      const $scope2_id = _._scope_id();\n      _._html(`<div${_._attr_class(value)} level=1>`);\n      _._try($scope2_id, \"#text/1\", _._content_resume(\"__tests__/template.marko_3_content\", () => {\n        const $scope3_id = _._scope_id();\n        _._scope_reason();\n        _._await($scope3_id, \"#text/0\", promiseA, value => {\n          const $scope6_id = _._scope_id();\n          const promiseB = resolveAfter(\"b\", 2);\n          _._html(`<div${_._attr_class(value)} level=2>`);\n          _._try($scope6_id, \"#text/1\", _._content_resume(\"__tests__/template.marko_7_content\", () => {\n            const $scope7_id = _._scope_id();\n            _._scope_reason();\n            _._await($scope7_id, \"#text/0\", promiseB, value => {\n              const $scope8_id = _._scope_id();\n              _._html(`<div${_._attr_class(value)} level=3>`);\n              _._try($scope8_id, \"#text/1\", _._content_resume(\"__tests__/template.marko_9_content\", () => {\n                const $scope9_id = _._scope_id();\n                _._scope_reason();\n                _._await($scope9_id, \"#text/0\", promiseB, value => {\n                  const $scope12_id = _._scope_id();\n                  _._html(`<div${_._attr_class(value)} level=4></div>`);\n                }, 0);\n                _._resume_branch($scope9_id);\n              }, $scope8_id), {\n                placeholder: _.attrTag({\n                  content: _._content_resume(\"__tests__/template.marko_11_content\", () => {\n                    _._scope_reason();\n                    const $scope11_id = _._scope_id();\n                    _._html(\"LOADING B2\");\n                  }, $scope8_id)\n                })\n              });\n              _._html(\"</div>\");\n            }, 0);\n            _._resume_branch($scope7_id);\n          }, $scope6_id), {\n            placeholder: _.attrTag({\n              content: _._content_resume(\"__tests__/template.marko_10_content\", () => {\n                _._scope_reason();\n                const $scope10_id = _._scope_id();\n                _._html(\"LOADING B1\");\n              }, $scope6_id)\n            })\n          });\n          _._html(\"</div>\");\n        }, 0);\n        _._resume_branch($scope3_id);\n      }, $scope2_id), {\n        placeholder: _.attrTag({\n          content: _._content_resume(\"__tests__/template.marko_5_content\", () => {\n            _._scope_reason();\n            const $scope5_id = _._scope_id();\n            _._html(\"LOADING A2\");\n          }, $scope2_id)\n        })\n      });\n      _._html(\"</div>\");\n    }, 0);\n    _._resume_branch($scope1_id);\n  }, $scope0_id), {\n    placeholder: _.attrTag({\n      content: _._content_resume(\"__tests__/template.marko_4_content\", () => {\n        _._scope_reason();\n        const $scope4_id = _._scope_id();\n        _._html(\"LOADING A1\");\n      }, $scope0_id)\n    })\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\nLOADING A1\n```\n\n\n# Render FLUSH\n```html\n<div\n  class=\"a\"\n  level=\"1\"\n>\n  <div\n    class=\"a\"\n    level=\"2\"\n  >\n    LOADING B1\n  </div>\n</div>\n```\n\n\n# Render FLUSH\n```html\n<div\n  class=\"a\"\n  level=\"1\"\n>\n  <div\n    class=\"a\"\n    level=\"2\"\n  >\n    <div\n      class=\"b\"\n      level=\"3\"\n    >\n      <div\n        class=\"b\"\n        level=\"4\"\n      />\n    </div>\n  </div>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <!--M_[-->\n    <!--M_!^2-->\n    LOADING A1\n    <!--M_!2-->\n    <!--M_]1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#PlaceholderContent\": _.c = {}\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_4_content\"\n        ](_.c), _.b)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text1\n```\n\n# Render FLUSH\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <!--M_[-->\n    <div\n      class=\"a\"\n      level=\"1\"\n    >\n      <!--M_[-->\n      <div\n        class=\"a\"\n        level=\"2\"\n      >\n        <!--M_[-->\n        <!--M_!^7-->\n        LOADING B1\n        <!--M_!7-->\n        <!--M_]6 #text/1 7-->\n      </div>\n      <!--M_]4 #text/1 5-->\n    </div>\n    <!--M_]1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#PlaceholderContent\": _.c = {}\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_4_content\"\n        ](_.c), _.b)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.e = [2, _.d = {\n        \"#BranchAccessor\": \"#text/1\",\n        \"#PlaceholderContent\": _.f = {}\n      }], _.d[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_5_content\"\n        ](_.f), _.e), _ =&gt; (_.h = [1, _.g = {\n        \"#BranchAccessor\": \"#text/1\",\n        \"#PlaceholderContent\": _.i = {}\n      }], _.g[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_10_content\"\n        ](_.i), _.h));\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT t\nINSERT html/body/div\nINSERT html/body/div/#comment0\nINSERT html/body/div/div\nINSERT html/body/div/div/#comment0\nINSERT html/body/div/div/#comment1\nINSERT html/body/div/div/#text0\nINSERT html/body/div/div/#comment2\nINSERT html/body/div/div/#comment3\nINSERT html/body/div/#comment1\nINSERT t\nINSERT t/#comment\nREMOVE t after html/body/script0\nREMOVE #text after #comment\nREMOVE #comment after html/body/#comment0\nREMOVE #comment after html/body/#comment0\nINSERT html/body/div\nREMOVE t after html/body/script0\nINSERT html/body/div/div/#text1\nINSERT html/body/div/#text\nINSERT html/body/script1\n```\n\n# Render FLUSH\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <!--M_[-->\n    <div\n      class=\"a\"\n      level=\"1\"\n    >\n      <!--M_[-->\n      <div\n        class=\"a\"\n        level=\"2\"\n      >\n        <!--M_[-->\n        <div\n          class=\"b\"\n          level=\"3\"\n        >\n          <!--M_[-->\n          <div\n            class=\"b\"\n            level=\"4\"\n          />\n          <!--M_]9 #text/1 10-->\n        </div>\n        <!--M_]6 #text/1 7-->\n      </div>\n      <!--M_]4 #text/1 5-->\n    </div>\n    <!--M_]1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#PlaceholderContent\": _.c = {}\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_4_content\"\n        ](_.c), _.b)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.e = [2, _.d = {\n        \"#BranchAccessor\": \"#text/1\",\n        \"#PlaceholderContent\": _.f = {}\n      }], _.d[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_5_content\"\n        ](_.f), _.e), _ =&gt; (_.h = [1, _.g = {\n        \"#BranchAccessor\": \"#text/1\",\n        \"#PlaceholderContent\": _.i = {}\n      }], _.g[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_10_content\"\n        ](_.i), _.h));\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.k = [2, _.j = {\n        \"#BranchAccessor\": \"#text/1\",\n        \"#PlaceholderContent\": _.l = {}\n      }], _.j[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_11_content\"\n        ](_.l), _.k));\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT t\nINSERT html/body/div/div/div\nINSERT html/body/div/div/div/#comment0\nINSERT html/body/div/div/div/div\nINSERT html/body/div/div/div/#comment1\nREMOVE t after html/body/script1\nREMOVE #text after #comment\nREMOVE #comment after html/body/div/div/#comment0\nREMOVE #comment after html/body/div/div/#comment0\nINSERT html/body/div/div/div\nINSERT html/body/div/div/div/#text\nINSERT html/body/script2\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render ASYNC\n```html\nLOADING A1\n```\n\n\n# Render ASYNC\n```html\n<div\n  class=\"a\"\n  level=\"1\"\n>\n  <div\n    class=\"a\"\n    level=\"2\"\n  >\n    LOADING B1\n  </div>\n</div>\n```\n\n\n# Render End\n```html\n<div\n  class=\"a\"\n  level=\"1\"\n>\n  <div\n    class=\"a\"\n    level=\"2\"\n  >\n    <div\n      class=\"b\"\n      level=\"3\"\n    >\n      <div\n        class=\"b\"\n        level=\"4\"\n      />\n    </div>\n  </div>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <!--M_[--><!--M_!^2-->LOADING A1<!--M_!2--><!--M_]1 #text/0 2--><style M_>t{display:none}</style><t M_=2><!--M_#b--></t><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,1,_.a={\"#BranchAccessor\":\"#text/0\",\"#PlaceholderContent\":_.c={}}],_.a[\"#PlaceholderContent\"]=_._[\"__tests__/template.marko_4_content\"](_.c),_.b)];REORDER_RUNTIME(M._);M._.w()</script>\n```\n\n# Write\n```html\n  <t M_=b><div class=a level=1><!--M_[--><div class=a level=2><!--M_[--><!--M_!^7-->LOADING B1<!--M_!7--><!--M_]6 #text/1 7--></div><!--M_]4 #text/1 5--></div></t><t M_=7><!--M_#c--></t><script>M._.r.push(_=>(_.e=[2,_.d={\"#BranchAccessor\":\"#text/1\",\"#PlaceholderContent\":_.f={}}],_.d[\"#PlaceholderContent\"]=_._[\"__tests__/template.marko_5_content\"](_.f),_.e),_=>(_.h=[1,_.g={\"#BranchAccessor\":\"#text/1\",\"#PlaceholderContent\":_.i={}}],_.g[\"#PlaceholderContent\"]=_._[\"__tests__/template.marko_10_content\"](_.i),_.h));M._.w()</script>\n```\n\n# Write\n```html\n  <t M_=c><div class=b level=3><!--M_[--><div class=b level=4></div><!--M_]9 #text/1 10--></div></t><script>M._.r.push(_=>(_.k=[2,_.j={\"#BranchAccessor\":\"#text/1\",\"#PlaceholderContent\":_.l={}}],_.j[\"#PlaceholderContent\"]=_._[\"__tests__/template.marko_11_content\"](_.l),_.k));M._.w()</script>\n```\n\n# Render ASYNC\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <!--M_[-->\n    <!--M_!^2-->\n    LOADING A1\n    <!--M_!2-->\n    <!--M_]1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#PlaceholderContent\": _.c = {}\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_4_content\"\n        ](_.c), _.b)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/#text\nINSERT html/body/#comment2\nINSERT html/body/#comment3\nINSERT html/head/style\nINSERT html/head/style/#text\nINSERT t\nINSERT t/#comment\nREMOVE html/head/style after html/body/#comment3\nINSERT html/head/style\nREMOVE t after html/body/#comment3\nINSERT html/body/script\n```\n\n# Render ASYNC\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <!--M_[-->\n    <div\n      class=\"a\"\n      level=\"1\"\n    >\n      <!--M_[-->\n      <div\n        class=\"a\"\n        level=\"2\"\n      >\n        <!--M_[-->\n        <!--M_!^7-->\n        LOADING B1\n        <!--M_!7-->\n        <!--M_]6 #text/1 7-->\n      </div>\n      <!--M_]4 #text/1 5-->\n    </div>\n    <!--M_]1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#PlaceholderContent\": _.c = {}\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_4_content\"\n        ](_.c), _.b)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.e = [2, _.d = {\n        \"#BranchAccessor\": \"#text/1\",\n        \"#PlaceholderContent\": _.f = {}\n      }], _.d[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_5_content\"\n        ](_.f), _.e), _ =&gt; (_.h = [1, _.g = {\n        \"#BranchAccessor\": \"#text/1\",\n        \"#PlaceholderContent\": _.i = {}\n      }], _.g[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_10_content\"\n        ](_.i), _.h));\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT t\nINSERT html/body/div\nINSERT html/body/div/#comment0\nINSERT html/body/div/div\nINSERT html/body/div/div/#comment0\nINSERT html/body/div/div/#comment1\nINSERT html/body/div/div/#text\nINSERT html/body/div/div/#comment2\nINSERT html/body/div/div/#comment3\nINSERT html/body/div/#comment1\nINSERT t\nINSERT t/#comment\nREMOVE t after html/body/script0\nREMOVE #text after #comment\nREMOVE #comment after html/body/#comment0\nREMOVE #comment after html/body/#comment0\nINSERT html/body/div\nREMOVE t after html/body/script0\nINSERT html/body/script1\n```\n\n# Render End\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <!--M_[-->\n    <div\n      class=\"a\"\n      level=\"1\"\n    >\n      <!--M_[-->\n      <div\n        class=\"a\"\n        level=\"2\"\n      >\n        <!--M_[-->\n        <div\n          class=\"b\"\n          level=\"3\"\n        >\n          <!--M_[-->\n          <div\n            class=\"b\"\n            level=\"4\"\n          />\n          <!--M_]9 #text/1 10-->\n        </div>\n        <!--M_]6 #text/1 7-->\n      </div>\n      <!--M_]4 #text/1 5-->\n    </div>\n    <!--M_]1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#PlaceholderContent\": _.c = {}\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_4_content\"\n        ](_.c), _.b)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.e = [2, _.d = {\n        \"#BranchAccessor\": \"#text/1\",\n        \"#PlaceholderContent\": _.f = {}\n      }], _.d[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_5_content\"\n        ](_.f), _.e), _ =&gt; (_.h = [1, _.g = {\n        \"#BranchAccessor\": \"#text/1\",\n        \"#PlaceholderContent\": _.i = {}\n      }], _.g[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_10_content\"\n        ](_.i), _.h));\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.k = [2, _.j = {\n        \"#BranchAccessor\": \"#text/1\",\n        \"#PlaceholderContent\": _.l = {}\n      }], _.j[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_11_content\"\n        ](_.l), _.k));\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT t\nINSERT html/body/div/div/div\nINSERT html/body/div/div/div/#comment0\nINSERT html/body/div/div/div/div\nINSERT html/body/div/div/div/#comment1\nREMOVE t after html/body/script1\nREMOVE #text after #comment\nREMOVE #comment after html/body/div/div/#comment0\nREMOVE #comment after html/body/div/div/#comment0\nINSERT html/body/div/div/div\nINSERT html/body/script2\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/template.marko",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\n\nconst/promiseA = resolveAfter(\"a\", 1)\ntry\n  @placeholder\n    -- LOADING A1\n  await|value|=promiseA\n    div class=value level=1\n      try\n        @placeholder\n          -- LOADING A2\n        await|value|=promiseA\n          div class=value level=2\n            const/promiseB = resolveAfter(\"b\", 2)\n            try\n              @placeholder\n                -- LOADING B1\n              await|value|=promiseB\n                div class=value level=3\n                  try\n                    @placeholder\n                      -- LOADING B2\n                    await|value|=promiseB\n                      div class=value level=4"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { flush, wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{}, flush, flush, wait],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\nace\n```\n\n\n# Render ASYNC\n```html\nabce\n```\n\n\n# Render ASYNC\n```html\nabcde\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\nace\n```\n\n# Mutations\n```\nINSERT #text0, #text1, #text2, #text3, #text4\n```\n\n# Render ASYNC\n```html\nabce\n```\n\n# Mutations\n```\nINSERT #text1\nREMOVE #text after #text1\nUPDATE #text1 \" \" => \"b\"\n```\n\n# Render ASYNC\n```html\nabcde\n```\n\n# Mutations\n```\nINSERT #text3\nREMOVE #text after #text3\nUPDATE #text3 \" \" => \"d\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"a<!>c<!>e\";\nexport const $walks = /* over(1), replace, over(2), replace, over(2) */\"b%c%c\";\nimport { resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $await_content2__value = ($scope, value) => _._text($scope[\"#text/0\"], value);\nconst $await_content2__$params = ($scope, $params3) => $await_content2__value($scope, $params3[0]);\nconst $await_content__value = ($scope, value) => _._text($scope[\"#text/0\"], value);\nconst $await_content__$params = ($scope, $params2) => $await_content__value($scope, $params2[0]);\nconst $await_content = /* @__PURE__ */_._await_content(\"#text/0\", \" \", /* get, over(1) */\" b\");\nconst $await_promise = /* @__PURE__ */_._await_promise(\"#text/0\", $await_content__$params);\nconst $await_content2 = /* @__PURE__ */_._await_content(\"#text/1\", \" \", /* get, over(1) */\" b\");\nconst $await_promise2 = /* @__PURE__ */_._await_promise(\"#text/1\", $await_content2__$params);\nexport function $setup($scope) {\n  $await_content($scope);\n  $await_content2($scope);\n  $await_promise($scope, resolveAfter(\"b\", 1));\n  $await_promise2($scope, resolveAfter(\"d\", 2));\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/html.expected/template.js",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"a\");\n  _._await($scope0_id, \"#text/0\", resolveAfter(\"b\", 1), value => {\n    const $scope1_id = _._scope_id();\n    _._html(_._escape(value));\n  }, 0);\n  _._html(\"c\");\n  _._await($scope0_id, \"#text/1\", resolveAfter(\"d\", 2), value => {\n    const $scope2_id = _._scope_id();\n    _._html(_._escape(value));\n  }, 0);\n  _._html(\"e\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\na\n```\n\n\n# Render FLUSH\n```html\nabc\n```\n\n\n# Render FLUSH\n```html\nabcde\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    a\n  </body>\n</html>\n```\n\n\n# Render FLUSH\n```html\n<html>\n  <head />\n  <body>\n    abc\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text1\n```\n\n# Render FLUSH\n```html\n<html>\n  <head />\n  <body>\n    abcde\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text2\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render ASYNC\n```html\na\n```\n\n\n# Render ASYNC\n```html\nabc\n```\n\n\n# Render End\n```html\nabcde\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  a\n```\n\n# Write\n```html\n  bc\n```\n\n# Write\n```html\n  de\n```\n\n# Render ASYNC\n```html\n<html>\n  <head />\n  <body>\n    a\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text\n```\n\n# Render ASYNC\n```html\n<html>\n  <head />\n  <body>\n    abc\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text1\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    abcde\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text2\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/template.marko",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\n-- a\nawait|value|=resolveAfter(\"b\", 1) -- ${value}\n-- c\nawait|value|=resolveAfter(\"d\", 2) -- ${value}\n-- e\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { flush, wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{}, flush, flush, wait],\n  skip_equivalent: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\nace\n```\n\n\n# Render ASYNC\n```html\nacde\n```\n\n\n# Render ASYNC\n```html\nabcde\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\nace\n```\n\n# Mutations\n```\nINSERT #text0, #text1, #text2, #text3, #text4\n```\n\n# Render ASYNC\n```html\nacde\n```\n\n# Mutations\n```\nINSERT #text3\nREMOVE #text after #text3\nUPDATE #text3 \" \" => \"d\"\n```\n\n# Render ASYNC\n```html\nabcde\n```\n\n# Mutations\n```\nINSERT #text1\nREMOVE #text after #text1\nUPDATE #text1 \" \" => \"b\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"a<!>c<!>e\";\nexport const $walks = /* over(1), replace, over(2), replace, over(2) */\"b%c%c\";\nimport { resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $await_content2__value = ($scope, value) => _._text($scope[\"#text/0\"], value);\nconst $await_content2__$params = ($scope, $params3) => $await_content2__value($scope, $params3[0]);\nconst $await_content__value = ($scope, value) => _._text($scope[\"#text/0\"], value);\nconst $await_content__$params = ($scope, $params2) => $await_content__value($scope, $params2[0]);\nconst $await_content = /* @__PURE__ */_._await_content(\"#text/0\", \" \", /* get, over(1) */\" b\");\nconst $await_promise = /* @__PURE__ */_._await_promise(\"#text/0\", $await_content__$params);\nconst $await_content2 = /* @__PURE__ */_._await_content(\"#text/1\", \" \", /* get, over(1) */\" b\");\nconst $await_promise2 = /* @__PURE__ */_._await_promise(\"#text/1\", $await_content2__$params);\nexport function $setup($scope) {\n  $await_content($scope);\n  $await_content2($scope);\n  $await_promise($scope, resolveAfter(\"b\", 2));\n  $await_promise2($scope, resolveAfter(\"d\", 1));\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/html.expected/template.js",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"a\");\n  _._await($scope0_id, \"#text/0\", resolveAfter(\"b\", 2), value => {\n    const $scope1_id = _._scope_id();\n    _._html(_._escape(value));\n  }, 0);\n  _._html(\"c\");\n  _._await($scope0_id, \"#text/1\", resolveAfter(\"d\", 1), value => {\n    const $scope2_id = _._scope_id();\n    _._html(_._escape(value));\n  }, 0);\n  _._html(\"e\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\na\n```\n\n\n# Render FLUSH\n```html\nabcde\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    a\n  </body>\n</html>\n```\n\n\n# Render FLUSH\n```html\n<html>\n  <head />\n  <body>\n    abcde\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render ASYNC\n```html\na\n```\n\n\n# Render End\n```html\nabcde\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  a\n```\n\n# Write\n```html\n  bcde\n```\n\n# Render ASYNC\n```html\n<html>\n  <head />\n  <body>\n    a\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    abcde\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/template.marko",
    "content": "\nimport { resolveAfter } from \"../../utils/resolve\";\n-- a\nawait|value|=resolveAfter(\"b\", 2) -- ${value}\n-- c\nawait|value|=resolveAfter(\"d\", 1) -- ${value}\n-- e\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { flush, wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{}, flush, wait],\n  skip_equivalent: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$resolveAfter\": \"r\",\n      \"$$await_content__$params\": \"e\",\n      \"$$try_content__await_promise\": \"m\",\n      \"$$try_content__clickCount\": \"_\",\n      \"$$clickCount__closure\": \"a\",\n      \"$$clickCount__script\": \"c\",\n      \"$$clickCount\": \"s\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  inc\n</button>\n```\n\n\n# Render ASYNC\n```html\n<button>\n  inc\n</button>\nLOADING...\n```\n\n\n# Render ASYNC\n```html\n<button>\n  inc\n</button>\n0\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  inc\n</button>\n0\n```\n\n\n# Render ASYNC\n```html\n<button>\n  inc\n</button>\nLOADING...\n```\n\n\n# Render ASYNC\n```html\n<button>\n  inc\n</button>\n1\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  inc\n</button>\n1\n```\n\n\n# Render ASYNC\n```html\n<button>\n  inc\n</button>\nLOADING...\n```\n\n\n# Render ASYNC\n```html\n<button>\n  inc\n</button>\n2\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  inc\n</button>\n<!---->\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT button, #comment0, #text, #comment1, #comment2\n```\n\n# Render ASYNC\n```html\n<button>\n  inc\n</button>\nLOADING...\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE #document-fragment/#comment0 after #text\nREMOVE #document-fragment/#text after #text\nREMOVE #document-fragment/#comment1 after #text\n```\n\n# Render ASYNC\n```html\n<button>\n  inc\n</button>\n<!---->\n0\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #text, #comment1\nREMOVE #text after #comment1\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  inc\n</button>\n<!---->\n0\n<!---->\n<!---->\n```\n\n\n# Render ASYNC\n```html\n<button>\n  inc\n</button>\nLOADING...\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE #document-fragment/#comment0 after #text\nREMOVE #document-fragment/#text after #text\nREMOVE #document-fragment/#comment1 after #text\n```\n\n# Render ASYNC\n```html\n<button>\n  inc\n</button>\n<!---->\n1\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #text, #comment1\nREMOVE #text after #comment1\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  inc\n</button>\n<!---->\n1\n<!---->\n<!---->\n```\n\n\n# Render ASYNC\n```html\n<button>\n  inc\n</button>\nLOADING...\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE #document-fragment/#comment0 after #text\nREMOVE #document-fragment/#text after #text\nREMOVE #document-fragment/#comment1 after #text\n```\n\n# Render ASYNC\n```html\n<button>\n  inc\n</button>\n<!---->\n2\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #text, #comment1\nREMOVE #text after #comment1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 283 (min) 182 (brotli)\n_._enable_catch();\nconst $await_content__$params = ($scope, $params2) =>\n  (($scope, value) => _._text($scope.a, value))($scope, $params2[0]);\n_._content_resume(\"a0\", \"LOADING...\", \"b\");\nconst $try_content__await_promise = _._await_promise(\n    0,\n    $await_content__$params,\n  ),\n  $try_content__clickCount = _._closure_get(2, ($scope) =>\n    $try_content__await_promise($scope, resolveAfter($scope._.c)),\n  ),\n  $clickCount__closure = _._closure($try_content__clickCount),\n  $clickCount__script = _._script(\"a1\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $clickCount($scope, $scope.c + 1);\n    }),\n  ),\n  $clickCount = _._let(2, ($scope) => {\n    ($clickCount__closure($scope), $clickCount__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button>inc</button><!><!>\";\nexport const $walks = /* get, over(1), replace, over(2) */\" b%c\";\nimport { resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\n_._enable_catch();\nconst $await_content__value = ($scope, value) => _._text($scope[\"#text/0\"], value);\nconst $await_content__$params = ($scope, $params2) => $await_content__value($scope, $params2[0]);\nconst $placeholder_content = _._content_resume(\"__tests__/template.marko_2_content\", \"LOADING...\", /* over(1) */\"b\");\nconst $await_content = /* @__PURE__ */_._await_content(\"#text/0\", \" \", /* get, over(1) */\" b\");\nconst $try_content__await_promise = /* @__PURE__ */_._await_promise(\"#text/0\", $await_content__$params);\nconst $try_content__clickCount = /* @__PURE__ */_._closure_get(\"clickCount\", $scope => $try_content__await_promise($scope, resolveAfter($scope._.clickCount)));\nconst $try_content__setup = $scope => {\n  $try_content__clickCount($scope);\n  $await_content($scope);\n};\nconst $clickCount__closure = /* @__PURE__ */_._closure($try_content__clickCount);\nconst $clickCount__script = _._script(\"__tests__/template.marko_0_clickCount\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $clickCount($scope, $scope.clickCount + 1);\n}));\nconst $clickCount = /* @__PURE__ */_._let(\"clickCount/2\", $scope => {\n  $clickCount__closure($scope);\n  $clickCount__script($scope);\n});\nconst $try = /* @__PURE__ */_._try(\"#text/1\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", $try_content__setup);\nexport function $setup($scope) {\n  $clickCount($scope, 0);\n  $try($scope, {\n    placeholder: _.attrTag({\n      content: $placeholder_content($scope)\n    })\n  });\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/html.expected/template.js",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $clickCount__closures = new Set();\n  let clickCount = 0;\n  _._html(`<button>inc</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._try($scope0_id, \"#text/1\", _._content_resume(\"__tests__/template.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    _._scope_reason();\n    _._await($scope1_id, \"#text/0\", resolveAfter(clickCount), value => {\n      const $scope3_id = _._scope_id();\n      _._html(`${_._escape(value)}${_._el_resume($scope3_id, \"#text/0\")}`);\n      _._scope($scope3_id, {}, \"__tests__/template.marko\", \"7:4\");\n    });\n    _._subscribe($clickCount__closures, _._scope($scope1_id, {\n      _: _._scope_with_id($scope0_id),\n      \"ClosureSignalIndex:clickCount\": 0\n    }, \"__tests__/template.marko\", \"6:2\"));\n    _._resume_branch($scope1_id);\n  }, $scope0_id), {\n    placeholder: _.attrTag({\n      content: _._content_resume(\"__tests__/template.marko_2_content\", () => {\n        _._scope_reason();\n        const $scope2_id = _._scope_id();\n        _._html(\"LOADING...\");\n      }, $scope0_id)\n    })\n  });\n  _._script($scope0_id, \"__tests__/template.marko_0_clickCount\");\n  _._scope($scope0_id, {\n    clickCount,\n    \"ClosureScopes:clickCount\": $clickCount__closures\n  }, \"__tests__/template.marko\", 0, {\n    clickCount: \"2:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  inc\n</button>\nLOADING...\n```\n\n\n# Render FLUSH\n```html\n<button>\n  inc\n</button>\n0\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  inc\n</button>\n0\n```\n\n\n# Render ASYNC\n```html\n<button>\n  inc\n</button>\nLOADING...\n```\n\n\n# Render ASYNC\n```html\n<button>\n  inc\n</button>\n1\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  inc\n</button>\n1\n```\n\n\n# Render ASYNC\n```html\n<button>\n  inc\n</button>\nLOADING...\n```\n\n\n# Render ASYNC\n```html\n<button>\n  inc\n</button>\n2\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <button>\n      inc\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <!--M_!^2-->\n    LOADING...\n    <!--M_!2-->\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          clickCount: 0,\n          \"ClosureScopes:clickCount\": _.d = new Set\n        }, _.b = {\n          _: _.a,\n          \"ClosureSignalIndex:clickCount\": 0,\n          \"#BranchAccessor\": \"#text/1\"\n        }], _.b[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.a), (_.d).add(_.b), _.c),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text1\n```\n\n# Render FLUSH\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <button>\n      inc\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <!--M_[-->\n    0\n    <!--M_*4 #text/0-->\n    <!--M_]2 #text/0 4-->\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          clickCount: 0,\n          \"ClosureScopes:clickCount\": _.d = new Set\n        }, _.b = {\n          _: _.a,\n          \"ClosureSignalIndex:clickCount\": 0,\n          \"#BranchAccessor\": \"#text/1\"\n        }], _.b[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.a), (_.d).add(_.b), _.c),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT t\nINSERT html/body/#comment2\nINSERT html/body/#text0\nINSERT html/body/#comment3\nINSERT html/body/#comment4\nREMOVE t after html/body/script0\nREMOVE #text after #comment\nREMOVE #comment after html/body/#comment1\nREMOVE #comment after html/body/#comment1\nINSERT html/body/#comment2, html/body/#text0, html/body/#comment3, html/body/#comment4\nINSERT html/body/#text1\nINSERT html/body/script1\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <button>\n      inc\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <!--M_[-->\n    0\n    <!--M_*4 #text/0-->\n    <!--M_]2 #text/0 4-->\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          clickCount: 0,\n          \"ClosureScopes:clickCount\": _.d = new Set\n        }, _.b = {\n          _: _.a,\n          \"ClosureSignalIndex:clickCount\": 0,\n          \"#BranchAccessor\": \"#text/1\"\n        }], _.b[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.a), (_.d).add(_.b), _.c),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render ASYNC\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <button>\n      inc\n    </button>\n    <!--M_*1 #button/0-->\n    LOADING...\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          clickCount: 0,\n          \"ClosureScopes:clickCount\": _.d = new Set\n        }, _.b = {\n          _: _.a,\n          \"ClosureSignalIndex:clickCount\": 0,\n          \"#BranchAccessor\": \"#text/1\"\n        }], _.b[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.a), (_.d).add(_.b), _.c),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text\nREMOVE #document-fragment/#comment0 after html/body/#text\nREMOVE #document-fragment/#comment1 after html/body/#text\nREMOVE #document-fragment/#text0 after html/body/#text\nREMOVE #document-fragment/#comment2 after html/body/#text\nREMOVE #document-fragment/#text1 after html/body/#text\nREMOVE #document-fragment/#comment3 after html/body/#text\nREMOVE #document-fragment/#text2 after html/body/#text\n```\n\n# Render ASYNC\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <button>\n      inc\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <!--M_[-->\n    1\n    <!--M_*4 #text/0-->\n    <!--M_]2 #text/0 4-->\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          clickCount: 0,\n          \"ClosureScopes:clickCount\": _.d = new Set\n        }, _.b = {\n          _: _.a,\n          \"ClosureSignalIndex:clickCount\": 0,\n          \"#BranchAccessor\": \"#text/1\"\n        }], _.b[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.a), (_.d).add(_.b), _.c),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#comment1, html/body/#comment2, html/body/#text0, html/body/#comment3, html/body/#text1, html/body/#comment4, html/body/#text2\nREMOVE #text after html/body/#text2\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <button>\n      inc\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <!--M_[-->\n    1\n    <!--M_*4 #text/0-->\n    <!--M_]2 #text/0 4-->\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          clickCount: 0,\n          \"ClosureScopes:clickCount\": _.d = new Set\n        }, _.b = {\n          _: _.a,\n          \"ClosureSignalIndex:clickCount\": 0,\n          \"#BranchAccessor\": \"#text/1\"\n        }], _.b[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.a), (_.d).add(_.b), _.c),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render ASYNC\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <button>\n      inc\n    </button>\n    <!--M_*1 #button/0-->\n    LOADING...\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          clickCount: 0,\n          \"ClosureScopes:clickCount\": _.d = new Set\n        }, _.b = {\n          _: _.a,\n          \"ClosureSignalIndex:clickCount\": 0,\n          \"#BranchAccessor\": \"#text/1\"\n        }], _.b[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.a), (_.d).add(_.b), _.c),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text\nREMOVE #document-fragment/#comment0 after html/body/#text\nREMOVE #document-fragment/#comment1 after html/body/#text\nREMOVE #document-fragment/#text0 after html/body/#text\nREMOVE #document-fragment/#comment2 after html/body/#text\nREMOVE #document-fragment/#text1 after html/body/#text\nREMOVE #document-fragment/#comment3 after html/body/#text\nREMOVE #document-fragment/#text2 after html/body/#text\n```\n\n# Render ASYNC\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <button>\n      inc\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <!--M_[-->\n    2\n    <!--M_*4 #text/0-->\n    <!--M_]2 #text/0 4-->\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          clickCount: 0,\n          \"ClosureScopes:clickCount\": _.d = new Set\n        }, _.b = {\n          _: _.a,\n          \"ClosureSignalIndex:clickCount\": 0,\n          \"#BranchAccessor\": \"#text/1\"\n        }], _.b[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.a), (_.d).add(_.b), _.c),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#comment1, html/body/#comment2, html/body/#text0, html/body/#comment3, html/body/#text1, html/body/#comment4, html/body/#text2\nREMOVE #text after html/body/#text2\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render ASYNC\n```html\n<button>\n  inc\n</button>\nLOADING...\n```\n\n\n# Render End\n```html\n<button>\n  inc\n</button>\n0\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>inc</button><!--M_*1 #button/0--><!--M_[--><!--M_!^2-->LOADING...<!--M_!2--><!--M_]1 #text/1 2--><style M_>t{display:none}</style><t M_=2><!--M_#b--></t><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.a={clickCount:0,\"ClosureScopes:clickCount\":_.d=new Set},_.b={_:_.a,\"ClosureSignalIndex:clickCount\":0,\"#BranchAccessor\":\"#text/1\"}],_.b[\"#PlaceholderContent\"]=_._[\"__tests__/template.marko_2_content\"](_.a),(_.d).add(_.b),_.c),\"__tests__/template.marko_0_clickCount 1\"];REORDER_RUNTIME(M._);M._.w()</script>\n```\n\n# Write\n```html\n  <t M_=b><!--M_[-->0<!--M_*4 #text/0--><!--M_]2 #text/0 4--></t><script>M._.w()</script>\n```\n\n# Render ASYNC\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <button>\n      inc\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <!--M_!^2-->\n    LOADING...\n    <!--M_!2-->\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          clickCount: 0,\n          \"ClosureScopes:clickCount\": _.d = new Set\n        }, _.b = {\n          _: _.a,\n          \"ClosureSignalIndex:clickCount\": 0,\n          \"#BranchAccessor\": \"#text/1\"\n        }], _.b[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.a), (_.d).add(_.b), _.c),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/#comment2\nINSERT html/body/#text\nINSERT html/body/#comment3\nINSERT html/body/#comment4\nINSERT html/head/style\nINSERT html/head/style/#text\nINSERT t\nINSERT t/#comment\nREMOVE html/head/style after html/body/#comment4\nINSERT html/head/style\nREMOVE t after html/body/#comment4\nINSERT html/body/script\n```\n\n# Render End\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <button>\n      inc\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <!--M_[-->\n    0\n    <!--M_*4 #text/0-->\n    <!--M_]2 #text/0 4-->\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          clickCount: 0,\n          \"ClosureScopes:clickCount\": _.d = new Set\n        }, _.b = {\n          _: _.a,\n          \"ClosureSignalIndex:clickCount\": 0,\n          \"#BranchAccessor\": \"#text/1\"\n        }], _.b[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.a), (_.d).add(_.b), _.c),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT t\nINSERT html/body/#comment2\nINSERT html/body/#text\nINSERT html/body/#comment3\nINSERT html/body/#comment4\nREMOVE t after html/body/script0\nREMOVE #text after #comment\nREMOVE #comment after html/body/#comment1\nREMOVE #comment after html/body/#comment1\nINSERT html/body/#comment2, html/body/#text, html/body/#comment3, html/body/#comment4\nINSERT html/body/script1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-state/template.marko",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\n<let/clickCount = 0/>\n<button onClick() {\n  clickCount++\n}>inc</button>\n<try>\n  <await|value|=resolveAfter(clickCount)>\n    ${value}\n  </await>\n  <@placeholder>\n    LOADING...\n  </@placeholder>\n</try>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/async-state/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { flush, wait } from \"../../utils/resolve\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, flush, wait, click, wait, click, wait],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tag-inside-if-tag/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tag-inside-if-tag/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"x\":true}`\n\n```html\nHello\n<div>\n  1\n</div>\n```\n\n\n# Render `{\"x\":false}`\n\n```html\nGoodbye\n<div>\n  2\n</div>\n```\n\n\n# Render `{\"x\":true}`\n\n```html\nHello\n<div>\n  1\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tag-inside-if-tag/__snapshots__/csr.expected.md",
    "content": "# Render `{\"x\":true}`\n\n```html\n<!---->\n<!---->\nHello\n<div>\n  1\n</div>\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, #text, div\n```\n\n# Render `{\"x\":false}`\n\n```html\n<!---->\n<!---->\nGoodbye\n<div>\n  2\n</div>\n```\n\n# Mutations\n```\nUPDATE div/#text \"1\" => \"2\"\nINSERT #text\nREMOVE #text after #text\n```\n\n# Render `{\"x\":true}`\n\n```html\n<!---->\n<!---->\nHello\n<div>\n  1\n</div>\n```\n\n# Mutations\n```\nUPDATE div/#text \"2\" => \"1\"\nINSERT #text\nREMOVE #text after #text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tag-inside-if-tag/__snapshots__/dom.expected/tags/custom-tag/index.js",
    "content": "export const $template = \"<!><!><div> </div>\";\nexport const $walks = /* over(1), replace, over(1), next(1), get, out(1) */\"b%bD l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\");\nexport const $content = ($scope, content) => $dynamicTag($scope, content);\nexport const $x = ($scope, x) => _._text($scope[\"#text/1\"], x);\nexport const $input = ($scope, input) => $thing2($scope, input.thing);\nexport const $thing2 = ($scope, $thing) => {\n  $x($scope, $thing.x);\n  $content($scope, $thing.content);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/custom-tag/index.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tag-inside-if-tag/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tag-inside-if-tag/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<!>${_customTag_template}`;\nexport const $walks = /* over(1), <custom-tag> */`b/${_customTag_walks}&`;\nimport { $setup as _customTag, $thing2 as _customTag_input_thing, $template as _customTag_template, $walks as _customTag_walks } from \"./tags/custom-tag/index.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $thing_content2 = /* @__PURE__ */_._content(\"__tests__/template.marko_2_content\", \"Goodbye\", /* over(1) */\"b\");\nconst $thing_content = /* @__PURE__ */_._content(\"__tests__/template.marko_1_content\", \"Hello\", /* over(1) */\"b\");\nexport function $setup($scope) {\n  _customTag($scope[\"#childScope/0\"]);\n}\nexport const $x = /* @__PURE__ */_._const(\"x\", $scope => {\n  let $thing;\n  if ($scope.x) {\n    $thing = _.attrTag({\n      x: 1,\n      content: $thing_content($scope)\n    });\n  } else {\n    $thing = _.attrTag({\n      x: 2,\n      content: $thing_content2($scope)\n    });\n  }\n  _customTag_input_thing($scope[\"#childScope/0\"], $thing);\n});\nexport const $input = ($scope, input) => $x($scope, input.x);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tag-inside-if-tag/__snapshots__/html.expected/tags/custom-tag/index.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/custom-tag/index.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    thing: {\n      x,\n      content\n    }\n  } = input;\n  _._dynamic_tag($scope0_id, \"#text/0\", content, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.thing.content */2));\n  _._html(`<div>${_._escape(x)}${_._el_resume($scope0_id, \"#text/1\", _._serialize_guard($scope0_reason, /* input.thing.x */1))}</div>`);\n  _._serialize_if($scope0_reason, /* input.thing.x, input.thing.content */0) && _._scope($scope0_id, {}, \"__tests__/tags/custom-tag/index.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tag-inside-if-tag/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _customTag from \"./tags/custom-tag/index.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    x\n  } = input;\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason({\n    /* input.thing.x, input.thing.content */0: _._serialize_guard($scope0_reason, /* input.x */0),\n    /* input.thing.x */1: _._serialize_guard($scope0_reason, /* input.x */0),\n    /* input.thing.content */2: _._serialize_guard($scope0_reason, /* input.x */0)\n  });\n  let $thing;\n  if (x) {\n    $thing = _.attrTag({\n      x: 1,\n      content: _._content(\"__tests__/template.marko_1_content\", () => {\n        _._scope_reason();\n        const $scope1_id = _._scope_id();\n        _._html(\"Hello\");\n      })\n    });\n  } else {\n    $thing = _.attrTag({\n      x: 2,\n      content: _._content(\"__tests__/template.marko_2_content\", () => {\n        _._scope_reason();\n        const $scope2_id = _._scope_id();\n        _._html(\"Goodbye\");\n      })\n    });\n  }\n  _customTag({\n    thing: $thing\n  });\n  _._serialize_if($scope0_reason, /* input.x */0) && _._scope($scope0_id, {\n    \"#childScope/0\": _._serialize_if($scope0_reason, /* input.x */0) && _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tag-inside-if-tag/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"x\":true}`\n\n```html\nHello\n<div>\n  1\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tag-inside-if-tag/__snapshots__/resume.expected.md",
    "content": "# Render `{\"x\":true}`\n\n```html\n<html>\n  <head />\n  <body>\n    Hello\n    <div>\n      1\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tag-inside-if-tag/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\nHello\n<div>\n  1\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tag-inside-if-tag/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  Hello<div>1</div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    Hello\n    <div>\n      1\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text\nINSERT html/body/div\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tag-inside-if-tag/tags/custom-tag/index.marko",
    "content": "<const/{ thing: { x, content } }=input/>\n\n<${content}/>\n<div>${x}</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tag-inside-if-tag/template.marko",
    "content": "<const/{ x }=input/>\n<custom-tag>\n  <if=x>\n    <@thing x=1>Hello</@thing>\n  </if>\n  <else>\n    <@thing x=2>Goodbye</@thing>\n  </else>\n</custom-tag>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tag-inside-if-tag/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [{ x: true }, { x: false }, { x: true }],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\nFoo!\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<!---->\nFoo!\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, #text, #comment2, #comment3\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags/__snapshots__/dom.expected/tags/hello/index.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\");\nexport const $input_foo = ($scope, input_foo) => $dynamicTag($scope, input_foo);\nexport const $input = ($scope, input) => $input_foo($scope, input.foo);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/hello/index.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<!>${_hello_template}<!>`;\nexport const $walks = /* over(1), <hello>, over(1) */`b/${_hello_walks}&b`;\nimport { $setup as _hello, $input_foo as _hello_input_foo, $template as _hello_template, $walks as _hello_walks } from \"./tags/hello/index.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $foo_content = /* @__PURE__ */_._content(\"__tests__/template.marko_1_content\", \"Foo!\", /* over(1) */\"b\");\nexport function $setup($scope) {\n  _hello($scope[\"#childScope/0\"]);\n  _hello_input_foo($scope[\"#childScope/0\"], _.attrTag({\n    content: $foo_content($scope)\n  }));\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags/__snapshots__/html.expected/tags/hello/index.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/hello/index.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._dynamic_tag($scope0_id, \"#text/0\", input.foo, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.foo */0));\n  _._serialize_if($scope0_reason, /* input.foo */0) && _._scope($scope0_id, {}, \"__tests__/tags/hello/index.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _hello from \"./tags/hello/index.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _hello({\n    foo: _.attrTag({\n      content: _._content(\"__tests__/template.marko_1_content\", () => {\n        _._scope_reason();\n        const $scope1_id = _._scope_id();\n        _._html(\"Foo!\");\n      })\n    })\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\nFoo!\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    Foo!\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\nFoo!\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  Foo!\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    Foo!\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags/tags/hello/index.marko",
    "content": "<${input.foo}/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags/template.marko",
    "content": "<hello>\n    <@foo>Foo!</@foo>\n</hello>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  class=\"item\"\n  style=\"color:red\"\n>\n  foo\n</div>\n<div\n  class=\"item\"\n  style=\"color:blue\"\n>\n  bar\n</div>\n<div\n  class=\"item\"\n  style=\"color:green\"\n>\n  bar\n</div>\n<div\n  class=\"col\"\n  row=\"[object Object]\"\n  x=\"0\"\n/>\n<div\n  class=\"row\"\n  row=\"a\"\n>\n  a\n</div>\n<div\n  class=\"row\"\n  row=\"b\"\n>\n  b\n</div>\n<div\n  class=\"col\"\n  row=\"[object Object]\"\n  x=\"1\"\n/>\n<div\n  class=\"row\"\n  row=\"c\"\n>\n  c\n</div>\n<div\n  class=\"row\"\n  row=\"d\"\n>\n  d\n</div>\n<div\n  class=\"col\"\n  outside=\"\"\n  row=\"[object Object]\"\n/>\n<div\n  class=\"row\"\n  row=\"-1\"\n>\n  Outside\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<!---->\n<div\n  class=\"item\"\n  style=\"color:red\"\n>\n  foo\n</div>\n<div\n  class=\"item\"\n  style=\"color:blue\"\n>\n  bar\n</div>\n<div\n  class=\"item\"\n  style=\"color:green\"\n>\n  bar\n</div>\n<div\n  class=\"col\"\n  row=\"[object Object]\"\n  x=\"0\"\n/>\n<div\n  class=\"row\"\n  row=\"a\"\n>\n  a\n</div>\n<div\n  class=\"row\"\n  row=\"b\"\n>\n  b\n</div>\n<!---->\n<div\n  class=\"col\"\n  row=\"[object Object]\"\n  x=\"1\"\n/>\n<div\n  class=\"row\"\n  row=\"c\"\n>\n  c\n</div>\n<div\n  class=\"row\"\n  row=\"d\"\n>\n  d\n</div>\n<!---->\n<div\n  class=\"col\"\n  outside=\"\"\n  row=\"[object Object]\"\n/>\n<div\n  class=\"row\"\n  row=\"-1\"\n>\n  Outside\n</div>\n<!---->\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, div0, div1, div2, div3, div4, div5, #comment2, div6, div7, div8, #comment3, div9, div10, #comment4, #comment5, #comment6\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic/__snapshots__/dom.expected/tags/hello/index.js",
    "content": "export const $template = \"<!><!><!><!>\";\nexport const $walks = /* over(1), replace, over(1), replace, over(2) */\"b%b%c\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for_content3__row__script = _._script(\"__tests__/tags/hello/index.marko_3_row\", $scope => _._attrs_script($scope, \"#div/0\"));\nconst $for_content3__row = /* @__PURE__ */_._const(\"row\", $scope => {\n  _._attrs_partial($scope, \"#div/0\", $scope.row, {\n    class: 1\n  });\n  $for_content3__row_content($scope, $scope.row?.content);\n  $for_content3__row__script($scope);\n});\nconst $for_content3__dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/1\");\nconst $for_content3__row_content = ($scope, row_content) => $for_content3__dynamicTag($scope, row_content);\nconst $for_content3__$params = ($scope, $params4) => $for_content3__row($scope, $params4[0]);\nconst $for_content2__col__script = _._script(\"__tests__/tags/hello/index.marko_2_col\", $scope => _._attrs_script($scope, \"#div/0\"));\nconst $for_content2__col = /* @__PURE__ */_._const(\"col\", $scope => {\n  _._attrs_partial_content($scope, \"#div/0\", $scope.col, {\n    class: 1\n  });\n  $for_content2__col_row($scope, $scope.col?.row);\n  $for_content2__col__script($scope);\n});\nconst $for_content2__for = /* @__PURE__ */_._for_of(\"#text/1\", \"<div class=row><!></div>\", /* get, next(1), replace, out(1) */\" D%l\", 0, $for_content3__$params);\nconst $for_content2__col_row = ($scope, col_row) => $for_content2__for($scope, [col_row]);\nconst $for_content2__$params = ($scope, $params3) => $for_content2__col($scope, $params3[0]);\nconst $for_content__item__script = _._script(\"__tests__/tags/hello/index.marko_1_item\", $scope => _._attrs_script($scope, \"#div/0\"));\nconst $for_content__item = /* @__PURE__ */_._const(\"item\", $scope => {\n  _._attrs_partial($scope, \"#div/0\", $scope.item, {\n    class: 1\n  });\n  $for_content__item_content($scope, $scope.item?.content);\n  $for_content__item__script($scope);\n});\nconst $for_content__dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/1\");\nconst $for_content__item_content = ($scope, item_content) => $for_content__dynamicTag($scope, item_content);\nconst $for_content__$params = ($scope, $params2) => $for_content__item($scope, $params2[0]);\nconst $for = /* @__PURE__ */_._for_of(\"#text/0\", \"<div class=item><!></div>\", /* get, next(1), replace, out(1) */\" D%l\", 0, $for_content__$params);\nexport const $input_list_item = ($scope, input_list_item) => $for($scope, [input_list_item]);\nconst $for2 = /* @__PURE__ */_._for_of(\"#text/1\", \"<div class=col></div><!><!>\", /* get, over(1), replace, over(2) */\" b%c\", 0, $for_content2__$params);\nexport const $input_col = ($scope, input_col) => $for2($scope, [input_col]);\nexport const $input = ($scope, input) => {\n  $input_list($scope, input.list);\n  $input_col($scope, input.col);\n};\nexport const $input_list = ($scope, input_list) => $input_list_item($scope, input_list?.item);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/hello/index.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 269 (min) 100 (brotli)\n(_._script(\"a0\", ($scope) => _._attrs_script($scope, \"a\")),\n  _._script(\"a1\", ($scope) => _._attrs_script($scope, \"a\")),\n  _._script(\"a2\", ($scope) => _._attrs_script($scope, \"a\")),\n  _._content_resume(\"b0\", \"Outside\", \"b\"),\n  _._content_resume(\"b1\", \" \", \" b\"),\n  _._content_resume(\"b2\", \"bar\", \"b\"),\n  _._content_resume(\"b3\", \"foo\", \"b\"),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<!>${_hello_template}<!>`;\nexport const $walks = /* over(1), <hello>, over(1) */`b/${_hello_walks}&b`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _hello, $input_list_item as _hello_input_list_item, $input_col as _hello_input_col, $template as _hello_template, $walks as _hello_walks } from \"./tags/hello/index.marko\";\nconst $row_content2 = _._content_resume(\"__tests__/template.marko_4_content\", \"Outside\", /* over(1) */\"b\");\nconst $row_content = /* @__PURE__ */_._content_closures(_._content_resume(\"__tests__/template.marko_3_content\", \" \", /* get, over(1) */\" b\"), {\n  row($scope) {\n    _._text($scope[\"#text/0\"], $scope.row);\n  }\n});\nconst $item_content2 = _._content_resume(\"__tests__/template.marko_2_content\", \"bar\", /* over(1) */\"b\");\nconst $item_content = _._content_resume(\"__tests__/template.marko_1_content\", \"foo\", /* over(1) */\"b\");\nexport function $setup($scope) {\n  _hello($scope[\"#childScope/0\"]);\n  let $item;\n  _.forOf([\"red\", \"blue\", \"green\"], color => {\n    if (color === \"red\") {\n      $item = _.attrTags($item, {\n        style: {\n          color\n        },\n        content: $item_content($scope)\n      });\n    } else {\n      $item = _.attrTags($item, {\n        style: {\n          color\n        },\n        content: $item_content2($scope)\n      });\n    }\n  });\n  _hello_input_list_item($scope[\"#childScope/0\"], $item);\n  let $col;\n  _.forOf([[\"a\", \"b\"], [\"c\", \"d\"]], (col, i) => {\n    let $row;\n    _.forOf(col, row => {\n      $row = _.attrTags($row, {\n        row: row,\n        content: $row_content($scope, {\n          row\n        })\n      });\n    });\n    $col = _.attrTags($col, {\n      x: i,\n      row: $row\n    });\n  });\n  $col = _.attrTags($col, {\n    outside: true,\n    row: _.attrTag({\n      row: -1,\n      content: $row_content2($scope)\n    })\n  });\n  _hello_input_col($scope[\"#childScope/0\"], $col);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic/__snapshots__/html.expected/tags/hello/index.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/hello/index.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._for_of(input.list.item, item => {\n    const $scope1_id = _._scope_id();\n    _._html(`<div class=item${_._attrs_partial(item, {\n      class: 1\n    }, \"#div/0\", $scope1_id, \"div\")}>`);\n    _._dynamic_tag($scope1_id, \"#text/1\", item.content, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.list.item */1));\n    _._html(`</div>${_._el_resume($scope1_id, \"#div/0\")}`);\n    _._script($scope1_id, \"__tests__/tags/hello/index.marko_1_item\");\n    _._scope($scope1_id, {\n      item\n    }, \"__tests__/tags/hello/index.marko\", \"1:1\", {\n      item: \"1:5\"\n    });\n  }, 0, $scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.list.item */1), _._serialize_guard($scope0_reason, /* input.list.item */1), _._serialize_guard($scope0_reason, /* input.list.item, input.col */0), 0, 1);\n  _._for_of(input.col, col => {\n    const $scope2_id = _._scope_id();\n    _._html(\"<div class=col\");\n    _._attrs_partial_content(col, {\n      class: 1\n    }, \"#div/0\", $scope2_id, \"div\");\n    _._html(`</div>${_._el_resume($scope2_id, \"#div/0\")}`);\n    _._for_of(col.row, row => {\n      const $scope3_id = _._scope_id();\n      _._html(`<div class=row${_._attrs_partial(row, {\n        class: 1\n      }, \"#div/0\", $scope3_id, \"div\")}>`);\n      _._dynamic_tag($scope3_id, \"#text/1\", row.content, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.col */2));\n      _._html(`</div>${_._el_resume($scope3_id, \"#div/0\")}`);\n      _._script($scope3_id, \"__tests__/tags/hello/index.marko_3_row\");\n      _._scope($scope3_id, {\n        row\n      }, \"__tests__/tags/hello/index.marko\", \"7:3\", {\n        row: \"7:7\"\n      });\n    }, 0, $scope2_id, \"#text/1\", _._serialize_guard($scope0_reason, /* input.col */2), _._serialize_guard($scope0_reason, /* input.col */2), _._serialize_guard($scope0_reason, /* input.col */2), 0, 1);\n    _._script($scope2_id, \"__tests__/tags/hello/index.marko_2_col\");\n    _._scope($scope2_id, {\n      col\n    }, \"__tests__/tags/hello/index.marko\", \"5:1\", {\n      col: \"5:5\"\n    });\n  }, 0, $scope0_id, \"#text/1\", _._serialize_guard($scope0_reason, /* input.col */2), _._serialize_guard($scope0_reason, /* input.col */2), _._serialize_guard($scope0_reason, /* input.list.item, input.col */0));\n  _._serialize_if($scope0_reason, /* input.list.item, input.col */0) && _._scope($scope0_id, {}, \"__tests__/tags/hello/index.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _hello from \"./tags/hello/index.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let $col;\n  let $item;\n  _.forOf([\"red\", \"blue\", \"green\"], color => {\n    if (color === \"red\") {\n      $item = _.attrTags($item, {\n        style: {\n          color\n        },\n        content: _._content_resume(\"__tests__/template.marko_1_content\", () => {\n          _._scope_reason();\n          const $scope1_id = _._scope_id();\n          _._html(\"foo\");\n        }, $scope0_id)\n      });\n    } else {\n      $item = _.attrTags($item, {\n        style: {\n          color\n        },\n        content: _._content_resume(\"__tests__/template.marko_2_content\", () => {\n          _._scope_reason();\n          const $scope2_id = _._scope_id();\n          _._html(\"bar\");\n        }, $scope0_id)\n      });\n    }\n  });\n  _.forOf([[\"a\", \"b\"], [\"c\", \"d\"]], (col, i) => {\n    let $row;\n    _.forOf(col, row => {\n      $row = _.attrTags($row, {\n        row: row,\n        content: _._content_resume(\"__tests__/template.marko_3_content\", () => {\n          _._scope_reason();\n          const $scope3_id = _._scope_id();\n          _._html(`${_._escape(row)}${_._el_resume($scope3_id, \"#text/0\")}`);\n          _._scope($scope3_id, {}, \"__tests__/template.marko\", \"16:18\");\n        }, $scope0_id)\n      });\n    });\n    $col = _.attrTags($col, {\n      x: i,\n      row: $row\n    });\n  });\n  $col = _.attrTags($col, {\n    outside: true,\n    row: _.attrTag({\n      row: -1,\n      content: _._content_resume(\"__tests__/template.marko_4_content\", () => {\n        _._scope_reason();\n        const $scope4_id = _._scope_id();\n        _._html(\"Outside\");\n      }, $scope0_id)\n    })\n  });\n  _hello({\n    list: _.attrTag({\n      item: $item\n    }),\n    col: $col\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  class=\"item\"\n  style=\"color:red\"\n>\n  foo\n</div>\n<div\n  class=\"item\"\n  style=\"color:blue\"\n>\n  bar\n</div>\n<div\n  class=\"item\"\n  style=\"color:green\"\n>\n  bar\n</div>\n<div\n  class=\"col\"\n  row=\"[object Object]\"\n  x=\"0\"\n/>\n<div\n  class=\"row\"\n  row=\"a\"\n>\n  a\n</div>\n<div\n  class=\"row\"\n  row=\"b\"\n>\n  b\n</div>\n<div\n  class=\"col\"\n  row=\"[object Object]\"\n  x=\"1\"\n/>\n<div\n  class=\"row\"\n  row=\"c\"\n>\n  c\n</div>\n<div\n  class=\"row\"\n  row=\"d\"\n>\n  d\n</div>\n<div\n  class=\"col\"\n  outside=\"\"\n  row=\"[object Object]\"\n/>\n<div\n  class=\"row\"\n  row=\"-1\"\n>\n  Outside\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div\n      class=\"item\"\n      style=\"color:red\"\n    >\n      foo\n    </div>\n    <!--M_*3 #div/0-->\n    <div\n      class=\"item\"\n      style=\"color:blue\"\n    >\n      bar\n    </div>\n    <!--M_*5 #div/0-->\n    <div\n      class=\"item\"\n      style=\"color:green\"\n    >\n      bar\n    </div>\n    <!--M_*7 #div/0-->\n    <div\n      class=\"col\"\n      row=\"[object Object]\"\n      x=\"0\"\n    />\n    <!--M_*9 #div/0-->\n    <div\n      class=\"row\"\n      row=\"a\"\n    >\n      a\n      <!--M_*12 #text/0-->\n    </div>\n    <!--M_*11 #div/0-->\n    <div\n      class=\"row\"\n      row=\"b\"\n    >\n      b\n      <!--M_*14 #text/0-->\n    </div>\n    <!--M_*13 #div/0-->\n    <div\n      class=\"col\"\n      row=\"[object Object]\"\n      x=\"1\"\n    />\n    <!--M_*15 #div/0-->\n    <div\n      class=\"row\"\n      row=\"c\"\n    >\n      c\n      <!--M_*18 #text/0-->\n    </div>\n    <!--M_*17 #div/0-->\n    <div\n      class=\"row\"\n      row=\"d\"\n    >\n      d\n      <!--M_*20 #text/0-->\n    </div>\n    <!--M_*19 #div/0-->\n    <div\n      class=\"col\"\n      outside=\"\"\n      row=\"[object Object]\"\n    />\n    <!--M_*21 #div/0-->\n    <div\n      class=\"row\"\n      row=\"-1\"\n    >\n      Outside\n    </div>\n    <!--M_*23 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.r = [0, 2,\n          {\n            item: _.a = {\n              style:\n              {\n                color: \"red\"\n              },\n              content: _.s = {},\n              *[(_.b = [, _.c = {\n                style:\n                {\n                  color: \"blue\"\n                }\n              }, _.d = {\n                style:\n                {\n                  color: \"green\"\n                }\n              }], Symbol.iterator)]()\n              {\n                yield* _.b\n              }\n            }\n          }, 1,\n          {\n            item: _.c\n          }, 1,\n          {\n            item: _.d\n          }, 1,\n          {\n            col: _.i = {\n              x: 0,\n              row: _.e = {\n                row: \"a\",\n                *[(_.f = [, _.g = {\n                  row: \"b\"\n                }], Symbol.iterator)]()\n                {\n                  yield* _.f\n                }\n              },\n              *[(_.h = [, _.o = {\n                x: 1,\n                row: _.j = {\n                  row: \"c\",\n                  *[(_.k = [, _.l = {\n                    row: \"d\"\n                  }], Symbol.iterator)]()\n                  {\n                    yield* _.k\n                  }\n                }\n              }, _.q = {\n                outside: !0,\n                row: _.m = {\n                  row: -1,\n                  *[Symbol.iterator]()\n                  {\n                    yield this\n                  }\n                }\n              }], Symbol.iterator)]()\n              {\n                yield* _.h\n              }\n            }\n          }, 1, _.n = {}, 1,\n          {\n            row: _.g\n          }, 1,\n          {\n            col: _.o\n          }, 1, _.p = {}, 1,\n          {\n            row: _.l\n          }, 1,\n          {\n            col: _.q\n          }, 1,\n          {\n            row: _.m\n          }], _.b[0] = _.a, _.f[0] = _.n.row = _.e, _.h[0] = _.i, _.k[0] = _.p\n          .row = _.j, _.a.content = _._[\n            \"__tests__/template.marko_1_content\"\n            ](_.s), _.c.content = _._[\n            \"__tests__/template.marko_2_content\"\n            ](_.s), _.d.content = _._[\n            \"__tests__/template.marko_2_content\"\n            ](_.s), _.e.content = _._[\n            \"__tests__/template.marko_3_content\"\n            ](_.s), _.g.content = _._[\n            \"__tests__/template.marko_3_content\"\n            ](_.s), _.j.content = _._[\n            \"__tests__/template.marko_3_content\"\n            ](_.s), _.l.content = _._[\n            \"__tests__/template.marko_3_content\"\n            ](_.s), _.m.content = _._[\n            \"__tests__/template.marko_4_content\"\n            ](_.s), _.r),\n        \"__tests__/tags/hello/index.marko_1_item 3 5 7 __tests__/tags/hello/index.marko_3_row 11 13 __tests__/tags/hello/index.marko_2_col 9 __tests__/tags/hello/index.marko_3_row 17 19 __tests__/tags/hello/index.marko_2_col 15 __tests__/tags/hello/index.marko_3_row 23 __tests__/tags/hello/index.marko_2_col 21\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div\n  class=\"item\"\n  style=\"color:red\"\n>\n  foo\n</div>\n<div\n  class=\"item\"\n  style=\"color:blue\"\n>\n  bar\n</div>\n<div\n  class=\"item\"\n  style=\"color:green\"\n>\n  bar\n</div>\n<div\n  class=\"col\"\n  row=\"[object Object]\"\n  x=\"0\"\n/>\n<div\n  class=\"row\"\n  row=\"a\"\n>\n  a\n</div>\n<div\n  class=\"row\"\n  row=\"b\"\n>\n  b\n</div>\n<div\n  class=\"col\"\n  row=\"[object Object]\"\n  x=\"1\"\n/>\n<div\n  class=\"row\"\n  row=\"c\"\n>\n  c\n</div>\n<div\n  class=\"row\"\n  row=\"d\"\n>\n  d\n</div>\n<div\n  class=\"col\"\n  outside=\"\"\n  row=\"[object Object]\"\n/>\n<div\n  class=\"row\"\n  row=\"-1\"\n>\n  Outside\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div class=item style=color:red>foo</div><!--M_*3 #div/0--><div class=item style=color:blue>bar</div><!--M_*5 #div/0--><div class=item style=color:green>bar</div><!--M_*7 #div/0--><div class=col x=0 row=\"[object Object]\"></div><!--M_*9 #div/0--><div class=row row=a>a<!--M_*12 #text/0--></div><!--M_*11 #div/0--><div class=row row=b>b<!--M_*14 #text/0--></div><!--M_*13 #div/0--><div class=col x=1 row=\"[object Object]\"></div><!--M_*15 #div/0--><div class=row row=c>c<!--M_*18 #text/0--></div><!--M_*17 #div/0--><div class=row row=d>d<!--M_*20 #text/0--></div><!--M_*19 #div/0--><div class=col outside row=\"[object Object]\"></div><!--M_*21 #div/0--><div class=row row=-1>Outside</div><!--M_*23 #div/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.r=[0,2,{item:_.a={style:{color:\"red\"},content:_.s={},*[(_.b=[,_.c={style:{color:\"blue\"}},_.d={style:{color:\"green\"}}],Symbol.iterator)](){yield*_.b}}},1,{item:_.c},1,{item:_.d},1,{col:_.i={x:0,row:_.e={row:\"a\",*[(_.f=[,_.g={row:\"b\"}],Symbol.iterator)](){yield*_.f}},*[(_.h=[,_.o={x:1,row:_.j={row:\"c\",*[(_.k=[,_.l={row:\"d\"}],Symbol.iterator)](){yield*_.k}}},_.q={outside:!0,row:_.m={row:-1,*[Symbol.iterator](){yield this}}}],Symbol.iterator)](){yield*_.h}}},1,_.n={},1,{row:_.g},1,{col:_.o},1,_.p={},1,{row:_.l},1,{col:_.q},1,{row:_.m}],_.b[0]=_.a,_.f[0]=_.n.row=_.e,_.h[0]=_.i,_.k[0]=_.p.row=_.j,_.a.content=_._[\"__tests__/template.marko_1_content\"](_.s),_.c.content=_._[\"__tests__/template.marko_2_content\"](_.s),_.d.content=_._[\"__tests__/template.marko_2_content\"](_.s),_.e.content=_._[\"__tests__/template.marko_3_content\"](_.s),_.g.content=_._[\"__tests__/template.marko_3_content\"](_.s),_.j.content=_._[\"__tests__/template.marko_3_content\"](_.s),_.l.content=_._[\"__tests__/template.marko_3_content\"](_.s),_.m.content=_._[\"__tests__/template.marko_4_content\"](_.s),_.r),\"__tests__/tags/hello/index.marko_1_item 3 5 7 __tests__/tags/hello/index.marko_3_row 11 13 __tests__/tags/hello/index.marko_2_col 9 __tests__/tags/hello/index.marko_3_row 17 19 __tests__/tags/hello/index.marko_2_col 15 __tests__/tags/hello/index.marko_3_row 23 __tests__/tags/hello/index.marko_2_col 21\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div\n      class=\"item\"\n      style=\"color:red\"\n    >\n      foo\n    </div>\n    <!--M_*3 #div/0-->\n    <div\n      class=\"item\"\n      style=\"color:blue\"\n    >\n      bar\n    </div>\n    <!--M_*5 #div/0-->\n    <div\n      class=\"item\"\n      style=\"color:green\"\n    >\n      bar\n    </div>\n    <!--M_*7 #div/0-->\n    <div\n      class=\"col\"\n      row=\"[object Object]\"\n      x=\"0\"\n    />\n    <!--M_*9 #div/0-->\n    <div\n      class=\"row\"\n      row=\"a\"\n    >\n      a\n      <!--M_*12 #text/0-->\n    </div>\n    <!--M_*11 #div/0-->\n    <div\n      class=\"row\"\n      row=\"b\"\n    >\n      b\n      <!--M_*14 #text/0-->\n    </div>\n    <!--M_*13 #div/0-->\n    <div\n      class=\"col\"\n      row=\"[object Object]\"\n      x=\"1\"\n    />\n    <!--M_*15 #div/0-->\n    <div\n      class=\"row\"\n      row=\"c\"\n    >\n      c\n      <!--M_*18 #text/0-->\n    </div>\n    <!--M_*17 #div/0-->\n    <div\n      class=\"row\"\n      row=\"d\"\n    >\n      d\n      <!--M_*20 #text/0-->\n    </div>\n    <!--M_*19 #div/0-->\n    <div\n      class=\"col\"\n      outside=\"\"\n      row=\"[object Object]\"\n    />\n    <!--M_*21 #div/0-->\n    <div\n      class=\"row\"\n      row=\"-1\"\n    >\n      Outside\n    </div>\n    <!--M_*23 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.r = [0, 2,\n          {\n            item: _.a = {\n              style:\n              {\n                color: \"red\"\n              },\n              content: _.s = {},\n              *[(_.b = [, _.c = {\n                style:\n                {\n                  color: \"blue\"\n                }\n              }, _.d = {\n                style:\n                {\n                  color: \"green\"\n                }\n              }], Symbol.iterator)]()\n              {\n                yield* _.b\n              }\n            }\n          }, 1,\n          {\n            item: _.c\n          }, 1,\n          {\n            item: _.d\n          }, 1,\n          {\n            col: _.i = {\n              x: 0,\n              row: _.e = {\n                row: \"a\",\n                *[(_.f = [, _.g = {\n                  row: \"b\"\n                }], Symbol.iterator)]()\n                {\n                  yield* _.f\n                }\n              },\n              *[(_.h = [, _.o = {\n                x: 1,\n                row: _.j = {\n                  row: \"c\",\n                  *[(_.k = [, _.l = {\n                    row: \"d\"\n                  }], Symbol.iterator)]()\n                  {\n                    yield* _.k\n                  }\n                }\n              }, _.q = {\n                outside: !0,\n                row: _.m = {\n                  row: -1,\n                  *[Symbol.iterator]()\n                  {\n                    yield this\n                  }\n                }\n              }], Symbol.iterator)]()\n              {\n                yield* _.h\n              }\n            }\n          }, 1, _.n = {}, 1,\n          {\n            row: _.g\n          }, 1,\n          {\n            col: _.o\n          }, 1, _.p = {}, 1,\n          {\n            row: _.l\n          }, 1,\n          {\n            col: _.q\n          }, 1,\n          {\n            row: _.m\n          }], _.b[0] = _.a, _.f[0] = _.n.row = _.e, _.h[0] = _.i, _.k[0] = _.p\n          .row = _.j, _.a.content = _._[\n            \"__tests__/template.marko_1_content\"\n            ](_.s), _.c.content = _._[\n            \"__tests__/template.marko_2_content\"\n            ](_.s), _.d.content = _._[\n            \"__tests__/template.marko_2_content\"\n            ](_.s), _.e.content = _._[\n            \"__tests__/template.marko_3_content\"\n            ](_.s), _.g.content = _._[\n            \"__tests__/template.marko_3_content\"\n            ](_.s), _.j.content = _._[\n            \"__tests__/template.marko_3_content\"\n            ](_.s), _.l.content = _._[\n            \"__tests__/template.marko_3_content\"\n            ](_.s), _.m.content = _._[\n            \"__tests__/template.marko_4_content\"\n            ](_.s), _.r),\n        \"__tests__/tags/hello/index.marko_1_item 3 5 7 __tests__/tags/hello/index.marko_3_row 11 13 __tests__/tags/hello/index.marko_2_col 9 __tests__/tags/hello/index.marko_3_row 17 19 __tests__/tags/hello/index.marko_2_col 15 __tests__/tags/hello/index.marko_3_row 23 __tests__/tags/hello/index.marko_2_col 21\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/div0/#text\nINSERT html/body/#comment0\nINSERT html/body/div1\nINSERT html/body/div1/#text\nINSERT html/body/#comment1\nINSERT html/body/div2\nINSERT html/body/div2/#text\nINSERT html/body/#comment2\nINSERT html/body/div3\nINSERT html/body/#comment3\nINSERT html/body/div4\nINSERT html/body/div4/#text\nINSERT html/body/div4/#comment\nINSERT html/body/#comment4\nINSERT html/body/div5\nINSERT html/body/div5/#text\nINSERT html/body/div5/#comment\nINSERT html/body/#comment5\nINSERT html/body/div6\nINSERT html/body/#comment6\nINSERT html/body/div7\nINSERT html/body/div7/#text\nINSERT html/body/div7/#comment\nINSERT html/body/#comment7\nINSERT html/body/div8\nINSERT html/body/div8/#text\nINSERT html/body/div8/#comment\nINSERT html/body/#comment8\nINSERT html/body/div9\nINSERT html/body/#comment9\nINSERT html/body/div10\nINSERT html/body/div10/#text\nINSERT html/body/#comment10\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic/tags/hello/index.marko",
    "content": "for|item| of=input.list.item\n  div.item ...item\n    ${item.content}\n\nfor|col| of=input.col\n  div.col ...col\n  for|row| of=col.row\n    div.row ...row\n      ${row.content}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic/template.marko",
    "content": "<hello>\n    <@list>\n        <for|color| of=[\"red\", \"blue\", \"green\"]>\n            <if=color === \"red\">\n                <@item style={ color }>foo</@item>\n            </if>\n            <else>\n                <@item style={ color }>bar</@item>\n            </else>\n        </for>\n    </@list>\n\n    <for|col, i| of=[[\"a\", \"b\"], [\"c\", \"d\"]]>\n        <@col x=i>\n            <for|row| of=col>\n                <@row row=row>${row}</@row>\n            </for>\n        </@col>\n    </for>\n\n    <@col outside>\n        <@row row=-1>Outside</@row>\n    </@col>\n</hello>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-and-static/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-and-static/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\na:1b:2other\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-and-static/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<!---->\n<!---->\na:1\n<!---->\n<!---->\nb:2\n<!---->\nother\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, #comment2, #text0, #text1, #text2, #comment3, #comment4, #text3, #text4, #text5, #comment5, #text6, #comment6, #comment7\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-and-static/__snapshots__/dom.expected/tags/hello/index.js",
    "content": "export const $template = \"<!><!><!><!>\";\nexport const $walks = /* over(1), replace, over(1), replace, over(2) */\"b%b%c\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for_content__dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\");\nconst $for_content__item_content = ($scope, item_content) => $for_content__dynamicTag($scope, item_content);\nconst $for_content__$params = ($scope, $params2) => $for_content__item($scope, $params2[0]);\nconst $for_content__item = ($scope, item) => $for_content__item_content($scope, item?.content);\nconst $for = /* @__PURE__ */_._for_of(\"#text/0\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", 0, $for_content__$params);\nexport const $input_item = ($scope, input_item) => $for($scope, [input_item]);\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/1\");\nexport const $input_other = ($scope, input_other) => $dynamicTag($scope, input_other);\nexport const $input = ($scope, input) => {\n  $input_item($scope, input.item);\n  $input_other($scope, input.other);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/hello/index.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-and-static/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-and-static/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<!>${_hello_template}<!>`;\nexport const $walks = /* over(1), <hello>, over(1) */`b/${_hello_walks}&b`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _hello, $input_other as _hello_input_other, $input_item as _hello_input_item, $template as _hello_template, $walks as _hello_walks } from \"./tags/hello/index.marko\";\nconst $other_content = /* @__PURE__ */_._content(\"__tests__/template.marko_2_content\", \"other\", /* over(1) */\"b\");\nconst $item_content = /* @__PURE__ */_._content_closures(/* @__PURE__ */_._content(\"__tests__/template.marko_1_content\", \"<!>:<!>\", /* replace, over(2), replace, over(1) */\"%c%b\"), {\n  a($scope) {\n    _._text($scope[\"#text/0\"], $scope.a);\n  },\n  v($scope) {\n    _._text($scope[\"#text/1\"], $scope.v);\n  }\n});\nexport function $setup($scope) {\n  _hello($scope[\"#childScope/0\"]);\n  _hello_input_other($scope[\"#childScope/0\"], _.attrTag({\n    content: $other_content($scope)\n  }));\n  let $item;\n  _.forIn({\n    a: 1,\n    b: 2\n  }, (a, v) => {\n    $item = _.attrTags($item, {\n      content: $item_content($scope, {\n        a,\n        v\n      })\n    });\n  });\n  _hello_input_item($scope[\"#childScope/0\"], $item);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-and-static/__snapshots__/html.expected/tags/hello/index.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/hello/index.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._for_of(input.item, item => {\n    const $scope1_id = _._scope_id();\n    _._dynamic_tag($scope1_id, \"#text/0\", item.content, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.item */1));\n    _._serialize_if($scope0_reason, /* input.item */1) && _._scope($scope1_id, {}, \"__tests__/tags/hello/index.marko\", \"1:1\");\n  }, 0, $scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.item */1), _._serialize_guard($scope0_reason, /* input.item */1), _._serialize_guard($scope0_reason, /* input.item */1));\n  _._dynamic_tag($scope0_id, \"#text/1\", input.other, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.other */2));\n  _._serialize_if($scope0_reason, /* input.item, input.other */0) && _._scope($scope0_id, {}, \"__tests__/tags/hello/index.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-and-static/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _hello from \"./tags/hello/index.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let $item;\n  _.forIn({\n    a: 1,\n    b: 2\n  }, (a, v) => {\n    $item = _.attrTags($item, {\n      content: _._content(\"__tests__/template.marko_1_content\", () => {\n        _._scope_reason();\n        const $scope1_id = _._scope_id();\n        _._html(`${_._escape(a)}${_._el_resume($scope1_id, \"#text/0\")}:<!>${_._escape(v)}${_._el_resume($scope1_id, \"#text/1\")}`);\n        _._scope($scope1_id, {}, \"__tests__/template.marko\", \"3:8\");\n      })\n    });\n  });\n  _hello({\n    other: _.attrTag({\n      content: _._content(\"__tests__/template.marko_2_content\", () => {\n        _._scope_reason();\n        const $scope2_id = _._scope_id();\n        _._html(\"other\");\n      })\n    }),\n    item: $item\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-and-static/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\na:1b:2other\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-and-static/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    a\n    <!--M_*4 #text/0-->\n    :\n    <!---->\n    1\n    <!--M_*4 #text/1-->\n    b\n    <!--M_*6 #text/0-->\n    :\n    <!---->\n    2\n    <!--M_*6 #text/1-->\n    other\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0])]\n    </script>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-and-static/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\na:1b:2other\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-and-static/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  a<!--M_*4 #text/0-->:<!>1<!--M_*4 #text/1-->b<!--M_*6 #text/0-->:<!>2<!--M_*6 #text/1-->other<script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0])]</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    a\n    <!--M_*4 #text/0-->\n    :\n    <!---->\n    1\n    <!--M_*4 #text/1-->\n    b\n    <!--M_*6 #text/0-->\n    :\n    <!---->\n    2\n    <!--M_*6 #text/1-->\n    other\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0])]\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text0\nINSERT html/body/#comment0\nINSERT html/body/#text1\nINSERT html/body/#comment1\nINSERT html/body/#text2\nINSERT html/body/#comment2\nINSERT html/body/#text3\nINSERT html/body/#comment3\nINSERT html/body/#text4\nINSERT html/body/#comment4\nINSERT html/body/#text5\nINSERT html/body/#comment5\nINSERT html/body/#text6\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-and-static/tags/hello/index.marko",
    "content": "for|item| of=input.item\n  ${item.content}\n\n${input.other}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-and-static/template.marko",
    "content": "<hello>\n    <for|a, v| in={ a: 1, b: 2 }>\n      <@item>${a}:${v}</>\n    </for>\n    <@other>other</>\n</hello>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-tag-parent/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"e\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-tag-parent/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<header\n  class=\"my-header\"\n>\n  Header content\n</header>\n<main>\n  Body content\n</main>\n<footer\n  class=\"my-footer\"\n>\n  Footer content\n</footer>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-tag-parent/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<header\n  class=\"my-header\"\n>\n  Header content\n</header>\n<main>\n  Body content\n</main>\n<footer\n  class=\"my-footer\"\n>\n  Footer content\n</footer>\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, header, main, footer, #comment1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-tag-parent/__snapshots__/dom.expected/tags/hello/index.js",
    "content": "export const $template = \"<header><!></header><main><!></main><footer><!></footer>\";\nexport const $walks = /* get, next(1), replace, out(1), next(1), replace, out(1), get, next(1), replace, out(1) */\" D%lD%l D%l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $input_header_class = ($scope, input_header_class) => _._attr_class($scope[\"#header/0\"], input_header_class);\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/1\");\nexport const $input_header_content = ($scope, input_header_content) => $dynamicTag($scope, input_header_content);\nconst $dynamicTag2 = /* @__PURE__ */_._dynamic_tag(\"#text/2\");\nexport const $input_content = ($scope, input_content) => $dynamicTag2($scope, input_content);\nexport const $input_footer_class = ($scope, input_footer_class) => _._attr_class($scope[\"#footer/3\"], input_footer_class);\nconst $dynamicTag3 = /* @__PURE__ */_._dynamic_tag(\"#text/4\");\nexport const $input_footer_content = ($scope, input_footer_content) => $dynamicTag3($scope, input_footer_content);\nexport const $input = ($scope, input) => {\n  $input_header($scope, input.header);\n  $input_content($scope, input.content);\n  $input_footer($scope, input.footer);\n};\nexport const $input_header = ($scope, input_header) => {\n  $input_header_class($scope, input_header?.class);\n  $input_header_content($scope, input_header?.content);\n};\nexport const $input_footer = ($scope, input_footer) => {\n  $input_footer_class($scope, input_footer?.class);\n  $input_footer_content($scope, input_footer?.content);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/hello/index.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-tag-parent/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 133 (min) 66 (brotli)\n(_._content_resume(\"b0\", \"Footer content\", \"b\"),\n  _._content_resume(\"b1\", \"Header content\", \"b\"),\n  _._content_resume(\"b2\", \"Body content\", \"b\"));\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-tag-parent/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nimport Hello from \"./tags/hello/index.marko\";\nconst x = Hello;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $footer_content = _._content_resume(\"__tests__/template.marko_3_content\", \"Footer content\", /* over(1) */\"b\");\nconst $header_content = _._content_resume(\"__tests__/template.marko_2_content\", \"Header content\", /* over(1) */\"b\");\nconst $x_content = _._content_resume(\"__tests__/template.marko_1_content\", \"Body content\", /* over(1) */\"b\");\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\", $x_content);\nexport function $setup($scope) {\n  $dynamicTag($scope, x, () => ({\n    footer: _.attrTag({\n      class: \"my-footer\",\n      content: $footer_content($scope)\n    }),\n    header: _.attrTag({\n      class: \"my-header\",\n      content: $header_content($scope)\n    })\n  }));\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-tag-parent/__snapshots__/html.expected/tags/hello/index.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/hello/index.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<header${_._attr_class(input.header.class)}>`);\n  _._dynamic_tag($scope0_id, \"#text/1\", input.header.content, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.header.content */2));\n  _._html(`</header>${_._el_resume($scope0_id, \"#header/0\", _._serialize_guard($scope0_reason, /* input.header.class */1))}<main>`);\n  _._dynamic_tag($scope0_id, \"#text/2\", input.content, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.content */3));\n  _._html(`</main><footer${_._attr_class(input.footer.class)}>`);\n  _._dynamic_tag($scope0_id, \"#text/4\", input.footer.content, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.footer.content */5));\n  _._html(`</footer>${_._el_resume($scope0_id, \"#footer/3\", _._serialize_guard($scope0_reason, /* input.footer.class */4))}`);\n  _._serialize_if($scope0_reason, /* input.header.class, input.header.content, input.content, input.footer.class, input.footer.content */0) && _._scope($scope0_id, {}, \"__tests__/tags/hello/index.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-tag-parent/__snapshots__/html.expected/template.js",
    "content": "import Hello from \"./tags/hello/index.marko\";\nconst x = Hello;\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._dynamic_tag($scope0_id, \"#text/0\", x, {\n    footer: _.attrTag({\n      class: \"my-footer\",\n      content: _._content_resume(\"__tests__/template.marko_3_content\", () => {\n        _._scope_reason();\n        const $scope3_id = _._scope_id();\n        _._html(\"Footer content\");\n      }, $scope0_id)\n    }),\n    header: _.attrTag({\n      class: \"my-header\",\n      content: _._content_resume(\"__tests__/template.marko_2_content\", () => {\n        _._scope_reason();\n        const $scope2_id = _._scope_id();\n        _._html(\"Header content\");\n      }, $scope0_id)\n    })\n  }, _._content_resume(\"__tests__/template.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    _._scope_reason();\n    _._html(\"Body content\");\n  }, $scope0_id), 0, 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-tag-parent/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<header\n  class=\"my-header\"\n>\n  Header content\n</header>\n<main>\n  Body content\n</main>\n<footer\n  class=\"my-footer\"\n>\n  Footer content\n</footer>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-tag-parent/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <header\n      class=\"my-header\"\n    >\n      Header content\n    </header>\n    <main>\n      Body content\n    </main>\n    <footer\n      class=\"my-footer\"\n    >\n      Footer content\n    </footer>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-tag-parent/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<header\n  class=\"my-header\"\n>\n  Header content\n</header>\n<main>\n  Body content\n</main>\n<footer\n  class=\"my-footer\"\n>\n  Footer content\n</footer>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-tag-parent/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <header class=my-header>Header content</header><main>Body content</main><footer class=my-footer>Footer content</footer>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <header\n      class=\"my-header\"\n    >\n      Header content\n    </header>\n    <main>\n      Body content\n    </main>\n    <footer\n      class=\"my-footer\"\n    >\n      Footer content\n    </footer>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/header\nINSERT html/body/header/#text\nINSERT html/body/main\nINSERT html/body/main/#text\nINSERT html/body/footer\nINSERT html/body/footer/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-tag-parent/tags/hello/index.marko",
    "content": "header class=input.header.class\n  ${input.header.content}\nmain\n  ${input.content}\nfooter class=input.footer.class\n  ${input.footer.content}"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-tag-parent/template.marko",
    "content": "import Hello from \"<hello>\";\n\nstatic const x = Hello;\n<${x}>\n    <@header class=\"my-header\">\n        Header content\n    </@header>\n\n    <@footer class=\"my-footer\">\n        Footer content\n    </@footer>\n\n    Body content\n</>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-with-params/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$dynamicTag\": \"a\",\n      \"$$item_content__$params\": \"m\",\n      \"$$item_content\": \"n\",\n      \"$$x__script\": \"c\",\n      \"$$x\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-with-params/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\ny: 1\n<button>\n  Toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\ny: 1\n<button>\n  Toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-with-params/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<!---->\ny: 1\n<!---->\n<button>\n  Toggle\n</button>\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, #text0, #text1, #comment2, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<!---->\n<!---->\n<button>\n  Toggle\n</button>\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE #text after #text\nREMOVE #text after #text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<!---->\ny: 1\n<!---->\n<button>\n  Toggle\n</button>\n```\n\n# Mutations\n```\nINSERT #text0, #text1\nREMOVE #text after #text1\nUPDATE #text1 \"\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<!---->\n<!---->\n<button>\n  Toggle\n</button>\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE #text after #text\nREMOVE #text after #text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-with-params/__snapshots__/dom.expected/tags/hello/index.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\", 0, 0, 1);\nexport const $input_item = ($scope, input_item) => $dynamicTag($scope, input_item, () => [1]);\nexport const $input = ($scope, input) => $input_item($scope, input.item);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/hello/index.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-with-params/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 273 (min) 188 (brotli)\nconst $dynamicTag = _._dynamic_tag(0, 0, 0, 1),\n  $item_content__$params = ($scope, $params2) =>\n    (($scope, y) => _._text($scope.a, y))($scope, $params2[0]),\n  $item_content = _._content(\"b0\", \"y: <!>\", \"b%b\", 0, $item_content__$params),\n  $x__script = _._script(\"b1\", ($scope) =>\n    _._on($scope.b, \"click\", function () {\n      $x($scope, !$scope.c);\n    }),\n  ),\n  $x = _._let(2, ($scope) => {\n    let $item;\n    ($scope.c && ($item = _.attrTag({ content: $item_content($scope) })),\n      (($scope, input_item) => {\n        $dynamicTag($scope, input_item, () => [1]);\n      })($scope.a, $item),\n      $x__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-with-params/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<!>${_hello_template}<button>Toggle</button>`;\nexport const $walks = /* over(1), <hello>, get, over(1) */`b/${_hello_walks}& b`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _hello, $input_item as _hello_input_item, $template as _hello_template, $walks as _hello_walks } from \"./tags/hello/index.marko\";\nconst $item_content__y = ($scope, y) => _._text($scope[\"#text/0\"], y);\nconst $item_content__$params = ($scope, $params2) => $item_content__y($scope, $params2[0]);\nconst $item_content = /* @__PURE__ */_._content(\"__tests__/template.marko_1_content\", \"y: <!>\", /* over(1), replace, over(1) */\"b%b\", 0, $item_content__$params);\nconst $x__script = _._script(\"__tests__/template.marko_0_x\", $scope => _._on($scope[\"#button/1\"], \"click\", function () {\n  $x($scope, !$scope.x);\n}));\nconst $x = /* @__PURE__ */_._let(\"x/2\", $scope => {\n  let $item;\n  if ($scope.x) {\n    $item = _.attrTag({\n      content: $item_content($scope)\n    });\n  }\n  _hello_input_item($scope[\"#childScope/0\"], $item);\n  $x__script($scope);\n});\nexport function $setup($scope) {\n  _hello($scope[\"#childScope/0\"]);\n  $x($scope, true);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-with-params/__snapshots__/html.expected/tags/hello/index.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/hello/index.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._dynamic_tag($scope0_id, \"#text/0\", input.item, [1], 0, 1, _._serialize_guard($scope0_reason, /* input.item */0));\n  _._serialize_if($scope0_reason, /* input.item */0) && _._scope($scope0_id, {}, \"__tests__/tags/hello/index.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-with-params/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _hello from \"./tags/hello/index.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let x = true;\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason(/* x */1);\n  let $item;\n  if (x) {\n    $item = _.attrTag({\n      content: _._content(\"__tests__/template.marko_1_content\", y => {\n        const $scope1_reason = _._scope_reason();\n        const $scope1_id = _._scope_id();\n        _._html(`y: ${_._sep(_._serialize_guard($scope1_reason, /* y */0))}${_._escape(y)}${_._el_resume($scope1_id, \"#text/0\", _._serialize_guard($scope1_reason, /* y */0))}`);\n        _._serialize_if($scope1_reason, /* y */0) && _._scope($scope1_id, {}, \"__tests__/template.marko\", \"4:10\");\n      })\n    });\n  }\n  _hello({\n    item: $item\n  });\n  _._html(`<button>Toggle</button>${_._el_resume($scope0_id, \"#button/1\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_x\");\n  _._scope($scope0_id, {\n    x,\n    \"#childScope/0\": _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0, {\n    x: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-with-params/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\ny: 1\n<button>\n  Toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\ny: 1\n<button>\n  Toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-with-params/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <!--M_[-->\n    y: \n    <!---->\n    1\n    <!--M_*3 #text/0-->\n    <!--M_]2 #text/0 3-->\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0,\n        {\n          x: !0,\n          \"#childScope/0\": _.a = {\n            \"ConditionalRenderer:#text/0\": \"__tests__/template.marko_1_content\"\n          }\n        }, _.a]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/#comment0 before html\nINSERT html/body/#comment0\nINSERT html/body/#text2\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <!--M_]2 #text/0 3-->\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0,\n        {\n          x: !0,\n          \"#childScope/0\": _.a = {\n            \"ConditionalRenderer:#text/0\": \"__tests__/template.marko_1_content\"\n          }\n        }, _.a]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/#comment0 after #text\nINSERT html/body/#comment0\nREMOVE #comment after html/body/#comment0\nREMOVE #text after html/body/#comment0\nREMOVE #comment after html/body/#comment0\nREMOVE #text after html/body/#comment0\nREMOVE #comment after html/body/#comment0\nREMOVE #text after html/body/#comment0\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    y: 1\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0,\n        {\n          x: !0,\n          \"#childScope/0\": _.a = {\n            \"ConditionalRenderer:#text/0\": \"__tests__/template.marko_1_content\"\n          }\n        }, _.a]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text0, html/body/#text1\nREMOVE #comment after html/body/#text1\nUPDATE html/body/#text1 \"\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <!--M_]2 #text/0 3-->\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0,\n        {\n          x: !0,\n          \"#childScope/0\": _.a = {\n            \"ConditionalRenderer:#text/0\": \"__tests__/template.marko_1_content\"\n          }\n        }, _.a]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#comment0\nREMOVE #text after html/body/#comment0\nREMOVE #text after html/body/#comment0\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-with-params/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\ny: 1\n<button>\n  Toggle\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-with-params/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <!--M_[-->y: <!>1<!--M_*3 #text/0--><!--M_]2 #text/0 3--><button>Toggle</button><!--M_*1 #button/1--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,{x:!0,\"#childScope/0\":_.a={\"ConditionalRenderer:#text/0\":\"__tests__/template.marko_1_content\"}},_.a]),\"__tests__/template.marko_0_x 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<!--M_[-->\n<html>\n  <head />\n  <body>\n    y: \n    <!---->\n    1\n    <!--M_*3 #text/0-->\n    <!--M_]2 #text/0 3-->\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0,\n        {\n          x: !0,\n          \"#childScope/0\": _.a = {\n            \"ConditionalRenderer:#text/0\": \"__tests__/template.marko_1_content\"\n          }\n        }, _.a]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT #comment\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text0\nINSERT html/body/#comment0\nINSERT html/body/#text1\nINSERT html/body/#comment1\nINSERT html/body/#comment2\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment3\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-with-params/tags/hello/index.marko",
    "content": "${input.item}(1)\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-with-params/template.marko",
    "content": "<let/x=true>\n<hello>\n    <if=x>\n        <@item|y|>\n            y: ${y}\n        </@item>\n    </if>\n</hello>\n\n<button onClick() { x = !x }>Toggle</>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-with-params/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-for-loop-param-closure/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-for-loop-param-closure/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n123\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-for-loop-param-closure/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<!---->\n<!---->\n1\n<!---->\n<!---->\n2\n<!---->\n<!---->\n3\n<!---->\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, #comment2, #text0, #comment3, #comment4, #text1, #comment5, #comment6, #text2, #comment7, #comment8, #comment9\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-for-loop-param-closure/__snapshots__/dom.expected/tags/list/index.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for_content__dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\");\nconst $for_content__item_content = ($scope, item_content) => $for_content__dynamicTag($scope, item_content);\nconst $for_content__$params = ($scope, $params2) => $for_content__item($scope, $params2[0]);\nconst $for_content__item = ($scope, item) => $for_content__item_content($scope, item?.content);\nconst $for = /* @__PURE__ */_._for_of(\"#text/0\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", 0, $for_content__$params);\nexport const $input_item = ($scope, input_item) => $for($scope, [input_item]);\nexport const $input = ($scope, input) => $input_item($scope, input.item);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/list/index.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-for-loop-param-closure/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-for-loop-param-closure/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<!>${_list_template}<!>`;\nexport const $walks = /* over(1), <list>, over(1) */`b/${_list_walks}&b`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _list, $input_item as _list_input_item, $template as _list_template, $walks as _list_walks } from \"./tags/list/index.marko\";\nconst $item_content = /* @__PURE__ */_._content_closures(/* @__PURE__ */_._content(\"__tests__/template.marko_1_content\", \" \", /* get, over(1) */\" b\"), {\n  zzz($scope) {\n    _._text($scope[\"#text/0\"], $scope.zzz);\n  }\n});\nexport function $setup($scope) {\n  _list($scope[\"#childScope/0\"]);\n  let $item;\n  _.forOf([1, 2, 3], zzz => {\n    $item = _.attrTags($item, {\n      content: $item_content($scope, {\n        zzz\n      })\n    });\n  });\n  _list_input_item($scope[\"#childScope/0\"], $item);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-for-loop-param-closure/__snapshots__/html.expected/tags/list/index.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/list/index.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._for_of(input.item, item => {\n    const $scope1_id = _._scope_id();\n    _._dynamic_tag($scope1_id, \"#text/0\", item.content, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.item */0));\n    _._serialize_if($scope0_reason, /* input.item */0) && _._scope($scope1_id, {}, \"__tests__/tags/list/index.marko\", \"1:1\");\n  }, 0, $scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.item */0), _._serialize_guard($scope0_reason, /* input.item */0), _._serialize_guard($scope0_reason, /* input.item */0));\n  _._serialize_if($scope0_reason, /* input.item */0) && _._scope($scope0_id, {}, \"__tests__/tags/list/index.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-for-loop-param-closure/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _list from \"./tags/list/index.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let $item;\n  _.forOf([1, 2, 3], zzz => {\n    $item = _.attrTags($item, {\n      content: _._content(\"__tests__/template.marko_1_content\", () => {\n        _._scope_reason();\n        const $scope1_id = _._scope_id();\n        _._html(`${_._escape(zzz)}${_._el_resume($scope1_id, \"#text/0\")}`);\n        _._scope($scope1_id, {}, \"__tests__/template.marko\", \"3:5\");\n      })\n    });\n  });\n  _list({\n    item: $item\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-for-loop-param-closure/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n123\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-for-loop-param-closure/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    1\n    <!--M_*4 #text/0-->\n    2\n    <!--M_*6 #text/0-->\n    3\n    <!--M_*8 #text/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0])]\n    </script>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-for-loop-param-closure/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n123\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-for-loop-param-closure/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  1<!--M_*4 #text/0-->2<!--M_*6 #text/0-->3<!--M_*8 #text/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0])]</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    1\n    <!--M_*4 #text/0-->\n    2\n    <!--M_*6 #text/0-->\n    3\n    <!--M_*8 #text/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0])]\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text0\nINSERT html/body/#comment0\nINSERT html/body/#text1\nINSERT html/body/#comment1\nINSERT html/body/#text2\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-for-loop-param-closure/tags/list/index.marko",
    "content": "for|item| of=input.item\n  ${item.content}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-for-loop-param-closure/template.marko",
    "content": "list\n  for|zzz| of=[1, 2, 3]\n    @item -- ${zzz}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-for-loop-param-intersection-closure/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$item_content__mult__OR__item\": \"r\",\n      \"$$item_content__mult\": \"m\",\n      \"$$mult__closure\": \"_\",\n      \"$$mult__script\": \"c\",\n      \"$$mult\": \"e\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-for-loop-param-intersection-closure/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n246\n<button>\n  Multiplier: 2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n369\n<button>\n  Multiplier: 3\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n4812\n<button>\n  Multiplier: 4\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n51015\n<button>\n  Multiplier: 5\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-for-loop-param-intersection-closure/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<!---->\n<!---->\n2\n<!---->\n<!---->\n4\n<!---->\n<!---->\n6\n<!---->\n<!---->\n<button>\n  Multiplier: 2\n</button>\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, #comment2, #text0, #comment3, #comment4, #text1, #comment5, #comment6, #text2, #comment7, #comment8, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<!---->\n<!---->\n3\n<!---->\n<!---->\n6\n<!---->\n<!---->\n9\n<!---->\n<!---->\n<button>\n  Multiplier: 3\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text1 \"2\" => \"3\"\nUPDATE #text0 \"2\" => \"3\"\nUPDATE #text1 \"4\" => \"6\"\nUPDATE #text2 \"6\" => \"9\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<!---->\n<!---->\n4\n<!---->\n<!---->\n8\n<!---->\n<!---->\n12\n<!---->\n<!---->\n<button>\n  Multiplier: 4\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text1 \"3\" => \"4\"\nUPDATE #text0 \"3\" => \"4\"\nUPDATE #text1 \"6\" => \"8\"\nUPDATE #text2 \"9\" => \"12\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<!---->\n<!---->\n5\n<!---->\n<!---->\n10\n<!---->\n<!---->\n15\n<!---->\n<!---->\n<button>\n  Multiplier: 5\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text1 \"4\" => \"5\"\nUPDATE #text0 \"4\" => \"5\"\nUPDATE #text1 \"8\" => \"10\"\nUPDATE #text2 \"12\" => \"15\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-for-loop-param-intersection-closure/__snapshots__/dom.expected/tags/list/index.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for_content__dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\");\nconst $for_content__item_content = ($scope, item_content) => $for_content__dynamicTag($scope, item_content);\nconst $for_content__$params = ($scope, $params2) => $for_content__item($scope, $params2[0]);\nconst $for_content__item = ($scope, item) => $for_content__item_content($scope, item?.content);\nconst $for = /* @__PURE__ */_._for_of(\"#text/0\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", 0, $for_content__$params);\nexport const $input_item = ($scope, input_item) => $for($scope, [input_item]);\nexport const $input = ($scope, input) => $input_item($scope, input.item);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/list/index.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-for-loop-param-intersection-closure/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 192 (min) 137 (brotli)\nconst $item_content__mult__OR__item = _._or(1, ($scope) =>\n    _._text($scope.a, $scope.f * $scope._.d),\n  ),\n  $item_content__mult = _._closure_get(3, $item_content__mult__OR__item),\n  $mult__closure = _._closure($item_content__mult),\n  $mult__script = _._script(\"b1\", ($scope) =>\n    _._on($scope.b, \"click\", function () {\n      $mult($scope, $scope.d + 1);\n    }),\n  ),\n  $mult = _._let(3, ($scope) => {\n    (_._text($scope.c, $scope.d),\n      $mult__closure($scope),\n      $mult__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-for-loop-param-intersection-closure/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<!>${_list_template}<button>Multiplier: <!></button>`;\nexport const $walks = /* over(1), <list>, get, next(1), over(1), replace, out(1) */`b/${_list_walks}& Db%l`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _list, $input_item as _list_input_item, $template as _list_template, $walks as _list_walks } from \"./tags/list/index.marko\";\nconst $item_content__mult__OR__item = /* @__PURE__ */_._or(1, $scope => _._text($scope[\"#text/0\"], $scope.item * $scope._.mult));\nconst $item_content__mult = /* @__PURE__ */_._closure_get(\"mult\", $item_content__mult__OR__item);\nconst $item_content__setup = $item_content__mult;\nconst $item_content = /* @__PURE__ */_._content_closures(/* @__PURE__ */_._content(\"__tests__/template.marko_1_content\", \" \", /* get, over(1) */\" b\", $item_content__setup), {\n  item: $item_content__mult__OR__item\n});\nconst $mult__closure = /* @__PURE__ */_._closure($item_content__mult);\nconst $mult__script = _._script(\"__tests__/template.marko_0_mult\", $scope => _._on($scope[\"#button/1\"], \"click\", function () {\n  $mult($scope, $scope.mult + 1);\n}));\nconst $mult = /* @__PURE__ */_._let(\"mult/3\", $scope => {\n  _._text($scope[\"#text/2\"], $scope.mult);\n  $mult__closure($scope);\n  $mult__script($scope);\n});\nexport function $setup($scope) {\n  _list($scope[\"#childScope/0\"]);\n  let $item;\n  _.forOf([1, 2, 3], item => {\n    $item = _.attrTags($item, {\n      content: $item_content($scope, {\n        item\n      })\n    });\n  });\n  _list_input_item($scope[\"#childScope/0\"], $item);\n  $mult($scope, 2);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-for-loop-param-intersection-closure/__snapshots__/html.expected/tags/list/index.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/list/index.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._for_of(input.item, item => {\n    const $scope1_id = _._scope_id();\n    _._dynamic_tag($scope1_id, \"#text/0\", item.content, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.item */0));\n    _._serialize_if($scope0_reason, /* input.item */0) && _._scope($scope1_id, {}, \"__tests__/tags/list/index.marko\", \"1:1\");\n  }, 0, $scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.item */0), _._serialize_guard($scope0_reason, /* input.item */0), _._serialize_guard($scope0_reason, /* input.item */0));\n  _._serialize_if($scope0_reason, /* input.item */0) && _._scope($scope0_id, {}, \"__tests__/tags/list/index.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-for-loop-param-intersection-closure/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _list from \"./tags/list/index.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $mult__closures = new Set();\n  let mult = 2;\n  let $item;\n  _.forOf([1, 2, 3], item => {\n    $item = _.attrTags($item, {\n      content: _._content(\"__tests__/template.marko_1_content\", () => {\n        _._scope_reason();\n        const $scope1_id = _._scope_id();\n        _._html(`${_._escape(item * mult)}${_._el_resume($scope1_id, \"#text/0\")}`);\n        _._subscribe($mult__closures, _._scope($scope1_id, {\n          item,\n          _: _._scope_with_id($scope0_id),\n          \"ClosureSignalIndex:mult\": 0\n        }, \"__tests__/template.marko\", \"4:5\", {\n          item: \"3:7\"\n        }));\n        _._resume_branch($scope1_id);\n      })\n    });\n  });\n  _list({\n    item: $item\n  });\n  _._html(`<button>Multiplier: <!>${_._escape(mult)}${_._el_resume($scope0_id, \"#text/2\")}</button>${_._el_resume($scope0_id, \"#button/1\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_mult\");\n  _._scope($scope0_id, {\n    mult,\n    \"ClosureScopes:mult\": $mult__closures\n  }, \"__tests__/template.marko\", 0, {\n    mult: \"1:5\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-for-loop-param-intersection-closure/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n246\n<button>\n  Multiplier: 2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n369\n<button>\n  Multiplier: 3\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n4812\n<button>\n  Multiplier: 4\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n51015\n<button>\n  Multiplier: 5\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-for-loop-param-intersection-closure/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    2\n    <!--M_*4 #text/0-->\n    4\n    <!--M_*6 #text/0-->\n    6\n    <!--M_*8 #text/0-->\n    <button>\n      Multiplier: \n      <!---->\n      2\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          mult: 2,\n          \"ClosureScopes:mult\": _.c = new Set\n        }, 2, _.d = {\n          item: 1,\n          _: _.a,\n          \"ClosureSignalIndex:mult\": 0\n        }, 1, _.e = {\n          item: 2,\n          _: _.a,\n          \"ClosureSignalIndex:mult\": 0\n        }, 1, _.f = {\n          item: 3,\n          _: _.a,\n          \"ClosureSignalIndex:mult\": 0\n        }], (_.c).add(_.d), _.c.add(_.e), _.c.add(_.f), _.b),\n        \"__tests__/template.marko_0_mult 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    3\n    <!--M_*4 #text/0-->\n    6\n    <!--M_*6 #text/0-->\n    9\n    <!--M_*8 #text/0-->\n    <button>\n      Multiplier: \n      <!---->\n      3\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          mult: 2,\n          \"ClosureScopes:mult\": _.c = new Set\n        }, 2, _.d = {\n          item: 1,\n          _: _.a,\n          \"ClosureSignalIndex:mult\": 0\n        }, 1, _.e = {\n          item: 2,\n          _: _.a,\n          \"ClosureSignalIndex:mult\": 0\n        }, 1, _.f = {\n          item: 3,\n          _: _.a,\n          \"ClosureSignalIndex:mult\": 0\n        }], (_.c).add(_.d), _.c.add(_.e), _.c.add(_.f), _.b),\n        \"__tests__/template.marko_0_mult 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text1 \"2\" => \"3\"\nUPDATE html/body/#text0 \"2\" => \"3\"\nUPDATE html/body/#text1 \"4\" => \"6\"\nUPDATE html/body/#text2 \"6\" => \"9\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    4\n    <!--M_*4 #text/0-->\n    8\n    <!--M_*6 #text/0-->\n    12\n    <!--M_*8 #text/0-->\n    <button>\n      Multiplier: \n      <!---->\n      4\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          mult: 2,\n          \"ClosureScopes:mult\": _.c = new Set\n        }, 2, _.d = {\n          item: 1,\n          _: _.a,\n          \"ClosureSignalIndex:mult\": 0\n        }, 1, _.e = {\n          item: 2,\n          _: _.a,\n          \"ClosureSignalIndex:mult\": 0\n        }, 1, _.f = {\n          item: 3,\n          _: _.a,\n          \"ClosureSignalIndex:mult\": 0\n        }], (_.c).add(_.d), _.c.add(_.e), _.c.add(_.f), _.b),\n        \"__tests__/template.marko_0_mult 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text1 \"3\" => \"4\"\nUPDATE html/body/#text0 \"3\" => \"4\"\nUPDATE html/body/#text1 \"6\" => \"8\"\nUPDATE html/body/#text2 \"9\" => \"12\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    5\n    <!--M_*4 #text/0-->\n    10\n    <!--M_*6 #text/0-->\n    15\n    <!--M_*8 #text/0-->\n    <button>\n      Multiplier: \n      <!---->\n      5\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          mult: 2,\n          \"ClosureScopes:mult\": _.c = new Set\n        }, 2, _.d = {\n          item: 1,\n          _: _.a,\n          \"ClosureSignalIndex:mult\": 0\n        }, 1, _.e = {\n          item: 2,\n          _: _.a,\n          \"ClosureSignalIndex:mult\": 0\n        }, 1, _.f = {\n          item: 3,\n          _: _.a,\n          \"ClosureSignalIndex:mult\": 0\n        }], (_.c).add(_.d), _.c.add(_.e), _.c.add(_.f), _.b),\n        \"__tests__/template.marko_0_mult 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text1 \"4\" => \"5\"\nUPDATE html/body/#text0 \"4\" => \"5\"\nUPDATE html/body/#text1 \"8\" => \"10\"\nUPDATE html/body/#text2 \"12\" => \"15\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-for-loop-param-intersection-closure/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n246\n<button>\n  Multiplier: 2\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-for-loop-param-intersection-closure/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  2<!--M_*4 #text/0-->4<!--M_*6 #text/0-->6<!--M_*8 #text/0--><button>Multiplier: <!>2<!--M_*1 #text/2--></button><!--M_*1 #button/1--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={mult:2,\"ClosureScopes:mult\":_.c=new Set},2,_.d={item:1,_:_.a,\"ClosureSignalIndex:mult\":0},1,_.e={item:2,_:_.a,\"ClosureSignalIndex:mult\":0},1,_.f={item:3,_:_.a,\"ClosureSignalIndex:mult\":0}],(_.c).add(_.d),_.c.add(_.e),_.c.add(_.f),_.b),\"__tests__/template.marko_0_mult 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    2\n    <!--M_*4 #text/0-->\n    4\n    <!--M_*6 #text/0-->\n    6\n    <!--M_*8 #text/0-->\n    <button>\n      Multiplier: \n      <!---->\n      2\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          mult: 2,\n          \"ClosureScopes:mult\": _.c = new Set\n        }, 2, _.d = {\n          item: 1,\n          _: _.a,\n          \"ClosureSignalIndex:mult\": 0\n        }, 1, _.e = {\n          item: 2,\n          _: _.a,\n          \"ClosureSignalIndex:mult\": 0\n        }, 1, _.f = {\n          item: 3,\n          _: _.a,\n          \"ClosureSignalIndex:mult\": 0\n        }], (_.c).add(_.d), _.c.add(_.e), _.c.add(_.f), _.b),\n        \"__tests__/template.marko_0_mult 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text0\nINSERT html/body/#comment0\nINSERT html/body/#text1\nINSERT html/body/#comment1\nINSERT html/body/#text2\nINSERT html/body/#comment2\nINSERT html/body/button\nINSERT html/body/button/#text0\nINSERT html/body/button/#comment0\nINSERT html/body/button/#text1\nINSERT html/body/button/#comment1\nINSERT html/body/#comment3\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-for-loop-param-intersection-closure/tags/list/index.marko",
    "content": "for|item| of=input.item\n  ${item.content}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-for-loop-param-intersection-closure/template.marko",
    "content": "let/mult = 2\nlist\n  for|item| of=[1, 2, 3]\n    @item -- ${item * mult}\n\nbutton onClick() { mult++; } -- Multiplier: ${mult}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-for-loop-param-intersection-closure/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-static-repeated/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-static-repeated/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\nHelloAgain\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-static-repeated/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<!---->\n<!---->\nHello\n<!---->\n<!---->\nAgain\n<!---->\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, #comment2, #text0, #comment3, #comment4, #text1, #comment5, #comment6, #comment7\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-static-repeated/__snapshots__/dom.expected/tags/list/index.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for_content__dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\");\nconst $for_content__item_content = ($scope, item_content) => $for_content__dynamicTag($scope, item_content);\nconst $for_content__$params = ($scope, $params2) => $for_content__item($scope, $params2[0]);\nconst $for_content__item = ($scope, item) => $for_content__item_content($scope, item?.content);\nconst $for = /* @__PURE__ */_._for_of(\"#text/0\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", 0, $for_content__$params);\nexport const $input_item = ($scope, input_item) => $for($scope, [input_item]);\nexport const $input = ($scope, input) => $input_item($scope, input.item);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/list/index.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-static-repeated/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-static-repeated/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<!>${_list_template}<!>`;\nexport const $walks = /* over(1), <list>, over(1) */`b/${_list_walks}&b`;\nimport { $setup as _list, $input_item as _list_input_item, $template as _list_template, $walks as _list_walks } from \"./tags/list/index.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $item_content2 = /* @__PURE__ */_._content(\"__tests__/template.marko_2_content\", \"Again\", /* over(1) */\"b\");\nconst $item_content = /* @__PURE__ */_._content(\"__tests__/template.marko_1_content\", \"Hello\", /* over(1) */\"b\");\nexport function $setup($scope) {\n  _list($scope[\"#childScope/0\"]);\n  _list_input_item($scope[\"#childScope/0\"], (_.attrTags(_.attrTag({\n    content: $item_content($scope)\n  }), {\n    content: $item_content2($scope)\n  })));\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-static-repeated/__snapshots__/html.expected/tags/list/index.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/list/index.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._for_of(input.item, item => {\n    const $scope1_id = _._scope_id();\n    _._dynamic_tag($scope1_id, \"#text/0\", item.content, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.item */0));\n    _._serialize_if($scope0_reason, /* input.item */0) && _._scope($scope1_id, {}, \"__tests__/tags/list/index.marko\", \"1:1\");\n  }, 0, $scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.item */0), _._serialize_guard($scope0_reason, /* input.item */0), _._serialize_guard($scope0_reason, /* input.item */0));\n  _._serialize_if($scope0_reason, /* input.item */0) && _._scope($scope0_id, {}, \"__tests__/tags/list/index.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-static-repeated/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _list from \"./tags/list/index.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _list({\n    item: _.attrTags(_.attrTag({\n      content: _._content(\"__tests__/template.marko_1_content\", () => {\n        _._scope_reason();\n        const $scope1_id = _._scope_id();\n        _._html(\"Hello\");\n      })\n    }), {\n      content: _._content(\"__tests__/template.marko_2_content\", () => {\n        _._scope_reason();\n        const $scope2_id = _._scope_id();\n        _._html(\"Again\");\n      })\n    })\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-static-repeated/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\nHelloAgain\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-static-repeated/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    HelloAgain\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-static-repeated/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\nHelloAgain\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-static-repeated/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  HelloAgain\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    HelloAgain\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-static-repeated/tags/list/index.marko",
    "content": "for|item| of=input.item\n  ${item.content}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/at-tags-static-repeated/template.marko",
    "content": "list\n  @item\n    -- Hello\n  @item\n    -- Again\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-boolean/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-boolean/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  checked=\"\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-boolean/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<input\n  checked=\"\"\n/>\n```\n\n# Mutations\n```\nINSERT input\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-boolean/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-boolean/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<input checked>\";\nexport const $walks = /* over(1) */\"b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-boolean/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<input checked>\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-boolean/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  checked=\"\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-boolean/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <input\n      checked=\"\"\n    />\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-boolean/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<input\n  checked=\"\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-boolean/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <input checked>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <input\n      checked=\"\"\n    />\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/input\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-boolean/template.marko",
    "content": "<input checked/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-boolean-dynamic/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"a\",\n      \"$$disabled__script\": \"o\",\n      \"$$disabled\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-boolean-dynamic/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  disabled=\"\"\n/>\n<button>\n  enable\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<input />\n<button>\n  disable\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<input\n  disabled=\"\"\n/>\n<button>\n  enable\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<input />\n<button>\n  disable\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-boolean-dynamic/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<input\n  disabled=\"\"\n/>\n<button>\n  enable\n</button>\n```\n\n# Mutations\n```\nINSERT input, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<input />\n<button>\n  disable\n</button>\n```\n\n# Mutations\n```\nUPDATE input[disabled] \"\" => null\nUPDATE button/#text \"enable\" => \"disable\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<input\n  disabled=\"\"\n/>\n<button>\n  enable\n</button>\n```\n\n# Mutations\n```\nUPDATE input[disabled] null => \"\"\nUPDATE button/#text \"disable\" => \"enable\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<input />\n<button>\n  disable\n</button>\n```\n\n# Mutations\n```\nUPDATE input[disabled] \"\" => null\nUPDATE button/#text \"enable\" => \"disable\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-boolean-dynamic/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 158 (min) 118 (brotli)\nconst $disabled__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.b, \"click\", function () {\n      $disabled($scope, !$scope.d);\n    }),\n  ),\n  $disabled = _._let(3, ($scope) => {\n    (_._attr($scope.a, \"disabled\", $scope.d),\n      _._text($scope.c, $scope.d ? \"enable\" : \"disable\"),\n      $disabled__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-boolean-dynamic/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<input><button> </button>\";\nexport const $walks = /* get, over(1), get, next(1), get, out(1) */\" b D l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $disabled__script = _._script(\"__tests__/template.marko_0_disabled\", $scope => _._on($scope[\"#button/1\"], \"click\", function () {\n  $disabled($scope, !$scope.disabled);\n}));\nconst $disabled = /* @__PURE__ */_._let(\"disabled/3\", $scope => {\n  _._attr($scope[\"#input/0\"], \"disabled\", $scope.disabled);\n  _._text($scope[\"#text/2\"], $scope.disabled ? \"enable\" : \"disable\");\n  $disabled__script($scope);\n});\nexport function $setup($scope) {\n  $disabled($scope, true);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-boolean-dynamic/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let disabled = true;\n  _._html(`<input${_._attr(\"disabled\", disabled)}>${_._el_resume($scope0_id, \"#input/0\")}<button>${_._escape(disabled ? \"enable\" : \"disable\")}${_._el_resume($scope0_id, \"#text/2\")}</button>${_._el_resume($scope0_id, \"#button/1\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_disabled\");\n  _._scope($scope0_id, {\n    disabled\n  }, \"__tests__/template.marko\", 0, {\n    disabled: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-boolean-dynamic/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  disabled=\"\"\n/>\n<button>\n  enable\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<input />\n<button>\n  disable\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<input\n  disabled=\"\"\n/>\n<button>\n  enable\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<input />\n<button>\n  disable\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-boolean-dynamic/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <input\n      disabled=\"\"\n    />\n    <!--M_*1 #input/0-->\n    <button>\n      enable\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          disabled: !0\n        }]),\n        \"__tests__/template.marko_0_disabled 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <input />\n    <!--M_*1 #input/0-->\n    <button>\n      disable\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          disabled: !0\n        }]),\n        \"__tests__/template.marko_0_disabled 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/input[disabled] \"\" => null\nUPDATE html/body/button/#text \"enable\" => \"disable\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      disabled=\"\"\n    />\n    <!--M_*1 #input/0-->\n    <button>\n      enable\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          disabled: !0\n        }]),\n        \"__tests__/template.marko_0_disabled 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/input[disabled] null => \"\"\nUPDATE html/body/button/#text \"disable\" => \"enable\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <input />\n    <!--M_*1 #input/0-->\n    <button>\n      disable\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          disabled: !0\n        }]),\n        \"__tests__/template.marko_0_disabled 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/input[disabled] \"\" => null\nUPDATE html/body/button/#text \"enable\" => \"disable\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-boolean-dynamic/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<input\n  disabled=\"\"\n/>\n<button>\n  enable\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-boolean-dynamic/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <input disabled><!--M_*1 #input/0--><button>enable<!--M_*1 #text/2--></button><!--M_*1 #button/1--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{disabled:!0}]),\"__tests__/template.marko_0_disabled 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <input\n      disabled=\"\"\n    />\n    <!--M_*1 #input/0-->\n    <button>\n      enable\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          disabled: !0\n        }]),\n        \"__tests__/template.marko_0_disabled 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/input\nINSERT html/body/#comment0\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-boolean-dynamic/template.marko",
    "content": "<let/disabled = true/>\n\n<input disabled=disabled/>\n\n<button onClick() { disabled = !disabled }>\n  ${disabled ? \"enable\" : \"disable\"}\n</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-boolean-dynamic/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-class/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-class/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"c\":true,\"d\":true}`\n\n```html\n<div\n  class=\"a b d\"\n/>\n<div\n  class=\"a b\"\n/>\n<div\n  class=\"a b c\"\n/>\n<div\n  class=\"a b d\"\n/>\n<div\n  class=\"a b\"\n/>\n<div\n  class=\"a b d\"\n/>\n<div\n  class=\"a b d\"\n  id=\"test\"\n>\n  Hello\n</div>\n```\n\n\n# Render `{\"c\":false,\"d\":false}`\n\n```html\n<div\n  class=\"a\"\n/>\n<div\n  class=\"a b\"\n/>\n<div\n  class=\"a b c\"\n/>\n<div\n  class=\"a\"\n/>\n<div\n  class=\"a b\"\n/>\n<div\n  class=\"a\"\n/>\n<div\n  class=\"a\"\n  id=\"test\"\n>\n  Hello\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-class/__snapshots__/csr.expected.md",
    "content": "# Render `{\"c\":true,\"d\":true}`\n\n```html\n<div\n  class=\"a b d\"\n/>\n<div\n  class=\"a b\"\n/>\n<div\n  class=\"a b c\"\n/>\n<div\n  class=\"a b d\"\n/>\n<!---->\n<div\n  class=\"a b\"\n/>\n<!---->\n<div\n  class=\"a b d\"\n/>\n<div\n  class=\"a b d\"\n  id=\"test\"\n>\n  Hello\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT div0, div1, div2, div3, #text0, #comment0, div4, #text1, #comment1, div5, div6, #comment2, #comment3\n```\n\n# Render `{\"c\":false,\"d\":false}`\n\n```html\n<div\n  class=\"a\"\n/>\n<div\n  class=\"a b\"\n/>\n<div\n  class=\"a b c\"\n/>\n<div\n  class=\"a\"\n/>\n<!---->\n<div\n  class=\"a b\"\n/>\n<!---->\n<div\n  class=\"a\"\n/>\n<div\n  class=\"a\"\n  id=\"test\"\n>\n  Hello\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nUPDATE div0[class] \"a b d\" => \"a\"\nUPDATE div0[class] \"a d\" => \"a\"\nUPDATE div3[class] \"a b d\" => \"a\"\nUPDATE div5[class] \"a b d\" => \"a\"\nUPDATE div6[class] \"a b d\" => \"a\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-class/__snapshots__/dom.expected/tags/custom-tag.js",
    "content": "export const $template = \"<div></div><!><!>\";\nexport const $walks = /* get, over(1), replace, over(2) */\" b%c\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content__input_test_class = /* @__PURE__ */_._if_closure(\"#text/1\", 0, $scope => _._attr_class($scope[\"#div/0\"], $scope._.input_test_class));\nconst $if_content__setup = $scope => {\n  $if_content__input_test_class._($scope);\n  $if_content__input_test_content._($scope);\n};\nconst $if_content__dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/1\");\nconst $if_content__input_test_content = /* @__PURE__ */_._if_closure(\"#text/1\", 0, $scope => $if_content__dynamicTag($scope, $scope._.input_test_content));\nexport const $input_class = ($scope, input_class) => _._attr_class($scope[\"#div/0\"], input_class);\nconst $if = /* @__PURE__ */_._if(\"#text/1\", \"<div id=test><!></div>\", /* get, next(1), replace, out(1) */\" D%l\", $if_content__setup);\nexport const $input_test = ($scope, input_test) => {\n  $input_test_class($scope, input_test?.class);\n  $input_test_content($scope, input_test?.content);\n  $if($scope, input_test ? 0 : 1);\n};\nexport const $input = ($scope, input) => {\n  $input_class($scope, input.class);\n  $input_test($scope, input.test);\n};\nconst $input_test_class = /* @__PURE__ */_._const(\"input_test_class\", $if_content__input_test_class);\nconst $input_test_content = /* @__PURE__ */_._const(\"input_test_content\", $if_content__input_test_content);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/custom-tag.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-class/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 36 (min) 40 (brotli)\n_._content_resume(\"b0\", \"Hello\", \"b\");\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-class/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<div class=a></div><div class=\"a b\"></div><div class=\"a b c\"></div>${_customTag_template}${_customTag_template}<!><!>`;\nexport const $walks = /* get, over(3), <custom-tag>, <custom-tag>, replace, over(2) */` d/${_customTag_walks}&/${_customTag_walks}&%c`;\nimport CustomTag from \"./tags/custom-tag.marko\";\nconst TestTag = CustomTag;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _customTag, $input_class as _customTag_input_class, $input_test as _customTag_input_test, $template as _customTag_template, $walks as _customTag_walks } from \"./tags/custom-tag.marko\";\nconst $test_content = _._content_resume(\"__tests__/template.marko_1_content\", \"Hello\", /* over(1) */\"b\");\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/3\");\nconst $c__OR__d = /* @__PURE__ */_._or(8, $scope => {\n  _._attr_class_items($scope[\"#div/0\"], {\n    b: $scope.c,\n    d: $scope.d\n  });\n  _customTag_input_class($scope[\"#childScope/1\"], [\"a\", {\n    b: $scope.c,\n    d: $scope.d\n  }]);\n  $dynamicTag($scope, TestTag, () => ({\n    class: [\"a\", {\n      b: $scope.c,\n      d: $scope.d\n    }],\n    test: _.attrTag({\n      class: [\"a\", {\n        b: $scope.c,\n        d: $scope.d\n      }],\n      content: $test_content($scope)\n    })\n  }));\n});\nexport const $c = /* @__PURE__ */_._const(\"c\", $c__OR__d);\nexport const $d = /* @__PURE__ */_._const(\"d\", $c__OR__d);\nexport function $setup($scope) {\n  _customTag($scope[\"#childScope/1\"]);\n  _customTag_input_test($scope[\"#childScope/1\"]);\n  _customTag($scope[\"#childScope/2\"]);\n  _customTag_input_class($scope[\"#childScope/2\"], [\"a\", false, \"b\"]);\n  _customTag_input_test($scope[\"#childScope/2\"]);\n}\nexport const $input = ($scope, input) => {\n  $c($scope, input.c);\n  $d($scope, input.d);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-class/__snapshots__/html.expected/tags/custom-tag.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/custom-tag.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div${_._attr_class(input.class)}></div>${_._el_resume($scope0_id, \"#div/0\", _._serialize_guard($scope0_reason, /* input.class */2))}`);\n  _._if(() => {\n    if (input.test) {\n      const $scope1_id = _._scope_id();\n      _._html(`<div${_._attr_class(input.test.class)} id=test>`);\n      _._dynamic_tag($scope1_id, \"#text/1\", input.test.content, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.test.content */5));\n      _._html(`</div>${_._el_resume($scope1_id, \"#div/0\", _._serialize_guard($scope0_reason, /* input.test.class */4))}`);\n      _._serialize_if($scope0_reason, /* input.test */3) && _._scope($scope1_id, {\n        _: _._serialize_if($scope0_reason, /* input.test.class, input.test.content */1) && _._scope_with_id($scope0_id)\n      }, \"__tests__/tags/custom-tag.marko\", \"3:2\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/1\", _._serialize_guard($scope0_reason, /* input.test */3), _._serialize_guard($scope0_reason, /* input.test */3), _._serialize_guard($scope0_reason, /* input.test */3), 0, 1);\n  _._serialize_if($scope0_reason, /* input.class, input.test */0) && _._scope($scope0_id, {\n    input_test_class: _._serialize_if($scope0_reason, /* input.test */3) && input.test?.class,\n    input_test_content: _._serialize_if($scope0_reason, /* input.test */3) && input.test?.content\n  }, \"__tests__/tags/custom-tag.marko\", 0, {\n    input_test_class: [\"input.test.class\"],\n    input_test_content: [\"input.test.content\"]\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-class/__snapshots__/html.expected/template.js",
    "content": "import CustomTag from \"./tags/custom-tag.marko\";\nconst TestTag = CustomTag;\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nimport _customTag from \"./tags/custom-tag.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    c,\n    d\n  } = input;\n  _._html(`<div${_._attr_class([\"a\", {\n    b: c,\n    d\n  }])}></div>${_._el_resume($scope0_id, \"#div/0\", _._serialize_guard($scope0_reason, /* input.c, input.d */0))}<div class=\"a b\"></div><div class=\"a b c\"></div>`);\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason({\n    /* input.class, input.test */0: _._serialize_guard($scope0_reason, /* input.c, input.d */0),\n    /* input.class */2: _._serialize_guard($scope0_reason, /* input.c, input.d */0)\n  });\n  _customTag({\n    class: [\"a\", {\n      b: c,\n      d\n    }]\n  });\n  _customTag({\n    class: [\"a\", false, \"b\"]\n  });\n  _._dynamic_tag($scope0_id, \"#text/3\", TestTag, {\n    class: [\"a\", {\n      b: c,\n      d\n    }],\n    test: _.attrTag({\n      class: [\"a\", {\n        b: c,\n        d\n      }],\n      content: _._content_resume(\"__tests__/template.marko_1_content\", () => {\n        _._scope_reason();\n        const $scope1_id = _._scope_id();\n        _._html(\"Hello\");\n      }, $scope0_id)\n    })\n  }, 0, 0, _._serialize_guard($scope0_reason, /* input.c, input.d */0));\n  _._serialize_if($scope0_reason, /* input.c, input.d */0) && _._scope($scope0_id, {\n    c: _._serialize_if($scope0_reason, /* input.d */2) && c,\n    d: _._serialize_if($scope0_reason, /* input.c */1) && d,\n    \"#childScope/1\": _._serialize_if($scope0_reason, /* input.c, input.d */0) && _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0, {\n    c: \"4:10\",\n    d: \"4:13\"\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-class/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"c\":true,\"d\":true}`\n\n```html\n<div\n  class=\"a b d\"\n/>\n<div\n  class=\"a b\"\n/>\n<div\n  class=\"a b c\"\n/>\n<div\n  class=\"a b d\"\n/>\n<div\n  class=\"a b\"\n/>\n<div\n  class=\"a b d\"\n/>\n<div\n  class=\"a b d\"\n  id=\"test\"\n>\n  Hello\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-class/__snapshots__/resume.expected.md",
    "content": "# Render `{\"c\":true,\"d\":true}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div\n      class=\"a b d\"\n    />\n    <div\n      class=\"a b\"\n    />\n    <div\n      class=\"a b c\"\n    />\n    <div\n      class=\"a b d\"\n    />\n    <div\n      class=\"a b\"\n    />\n    <div\n      class=\"a b d\"\n    />\n    <div\n      class=\"a b d\"\n      id=\"test\"\n    >\n      Hello\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-class/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div\n  class=\"a b d\"\n/>\n<div\n  class=\"a b\"\n/>\n<div\n  class=\"a b c\"\n/>\n<div\n  class=\"a b d\"\n/>\n<div\n  class=\"a b\"\n/>\n<div\n  class=\"a b d\"\n/>\n<div\n  class=\"a b d\"\n  id=\"test\"\n>\n  Hello\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-class/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div class=\"a b d\"></div><div class=\"a b\"></div><div class=\"a b c\"></div><div class=\"a b d\"></div><div class=\"a b\"></div><div class=\"a b d\"></div><div class=\"a b d\" id=test>Hello</div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div\n      class=\"a b d\"\n    />\n    <div\n      class=\"a b\"\n    />\n    <div\n      class=\"a b c\"\n    />\n    <div\n      class=\"a b d\"\n    />\n    <div\n      class=\"a b\"\n    />\n    <div\n      class=\"a b d\"\n    />\n    <div\n      class=\"a b d\"\n      id=\"test\"\n    >\n      Hello\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/div1\nINSERT html/body/div2\nINSERT html/body/div3\nINSERT html/body/div4\nINSERT html/body/div5\nINSERT html/body/div6\nINSERT html/body/div6/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-class/tags/custom-tag.marko",
    "content": "<div class=input.class/>\n\n<if=input.test>\n  <div#test class=input.test.class>\n    <${input.test.content}/>\n  </div>\n</if>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-class/template.marko",
    "content": "import CustomTag from \"<custom-tag>\";\nstatic const TestTag = CustomTag;\n\n<const/{ c, d }=input/>\n\n<div class=[\"a\", { b: c, d }]/>\n<div class=[\"a\", false, \"b\"]/>\n<div class=\"a b c\"/>\n\n<custom-tag class=[\"a\", { b: c, d }]/>\n<custom-tag class=[\"a\", false, \"b\"]/>\n\n<${TestTag} class=[\"a\", { b: c, d }]>\n  <@test class=[\"a\", { b: c, d }]>Hello</@test>\n</>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-class/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [\n    { c: true, d: true },\n    { c: false, d: false },\n  ],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-escape/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-escape/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"foo\":\"c\",\"bar\":\"d\"}`\n\n```html\n<div\n  bar=\"a d b\"\n  class=\"c\"\n  foo=\"acb\"\n  nested=\"a c nested d b\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-escape/__snapshots__/csr.expected.md",
    "content": "# Render `{\"foo\":\"c\",\"bar\":\"d\"}`\n\n```html\n<div\n  bar=\"a d b\"\n  class=\"c\"\n  foo=\"acb\"\n  nested=\"a c nested d b\"\n/>\n```\n\n# Mutations\n```\nINSERT div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-escape/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-escape/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* get, over(1) */\" b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $input_foo__OR__input_bar = /* @__PURE__ */_._or(5, $scope => _._attr($scope[\"#div/0\"], \"nested\", `a ${$scope.input_foo + ` nested ${$scope.input_bar}`} b`));\nexport const $input_foo = /* @__PURE__ */_._const(\"input_foo\", $scope => {\n  _._attr_class($scope[\"#div/0\"], $scope.input_foo);\n  _._attr($scope[\"#div/0\"], \"foo\", 'a' + $scope.input_foo + 'b');\n  $input_foo__OR__input_bar($scope);\n});\nexport const $input_bar = /* @__PURE__ */_._const(\"input_bar\", $scope => {\n  _._attr($scope[\"#div/0\"], \"bar\", `a ${$scope.input_bar} b`);\n  $input_foo__OR__input_bar($scope);\n});\nexport const $input = ($scope, input) => {\n  $input_foo($scope, input.foo);\n  $input_bar($scope, input.bar);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-escape/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div${_._attr_class(input.foo)}${_._attr(\"foo\", 'a' + input.foo + 'b')}${_._attr(\"bar\", `a ${input.bar} b`)}${_._attr(\"nested\", `a ${input.foo + ` nested ${input.bar}`} b`)}></div>${_._el_resume($scope0_id, \"#div/0\", _._serialize_guard($scope0_reason, /* input.foo, input.bar */0))}`);\n  _._serialize_if($scope0_reason, /* input.foo, input.bar */0) && _._scope($scope0_id, {\n    input_foo: _._serialize_if($scope0_reason, /* input.bar */2) && input.foo,\n    input_bar: _._serialize_if($scope0_reason, /* input.foo */1) && input.bar\n  }, \"__tests__/template.marko\", 0, {\n    input_foo: [\"input.foo\"],\n    input_bar: [\"input.bar\"]\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-escape/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"foo\":\"c\",\"bar\":\"d\"}`\n\n```html\n<div\n  bar=\"a d b\"\n  class=\"c\"\n  foo=\"acb\"\n  nested=\"a c nested d b\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-escape/__snapshots__/resume.expected.md",
    "content": "# Render `{\"foo\":\"c\",\"bar\":\"d\"}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div\n      bar=\"a d b\"\n      class=\"c\"\n      foo=\"acb\"\n      nested=\"a c nested d b\"\n    />\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-escape/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div\n  bar=\"a d b\"\n  class=\"c\"\n  foo=\"acb\"\n  nested=\"a c nested d b\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-escape/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div class=c foo=acb bar=\"a d b\" nested=\"a c nested d b\"></div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div\n      bar=\"a d b\"\n      class=\"c\"\n      foo=\"acb\"\n      nested=\"a c nested d b\"\n    />\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-escape/template.marko",
    "content": "<div class=input.foo\n    foo=('a' + input.foo + 'b')\n    bar=`a ${input.bar} b`\n    nested=`a ${input.foo + ` nested ${input.bar}`} b`>\n</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-escape/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [{ foo: \"c\", bar: \"d\" }],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-falsey/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-falsey/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  d=\"0\"\n  y=\"1\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-falsey/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div\n  d=\"0\"\n  y=\"1\"\n/>\n```\n\n# Mutations\n```\nINSERT div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-falsey/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-falsey/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div d=0 y=1></div>\";\nexport const $walks = /* over(1) */\"b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-falsey/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div d=0 y=1></div>\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-falsey/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  d=\"0\"\n  y=\"1\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-falsey/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div\n      d=\"0\"\n      y=\"1\"\n    />\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-falsey/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div\n  d=\"0\"\n  y=\"1\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-falsey/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div d=0 y=1></div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div\n      d=\"0\"\n      y=\"1\"\n    />\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-falsey/template.marko",
    "content": "<div a=null b=undefined c=false d=0 y=1/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-style/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-style/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"color\":\"red\"}`\n\n```html\n<div\n  style=\"color:red\"\n/>\n<div\n  style=\"width:100px\"\n/>\n<div\n  style=\"color:green\"\n/>\n<div\n  style=\"color:red\"\n/>\n<div\n  style=\"width:100px\"\n/>\n<div\n  style=\"color:green\"\n/>\n<div\n  style=\"color:green\"\n/>\n<div\n  id=\"test\"\n  style=\"color:green\"\n>\n  Hello\n</div>\n```\n\n\n# Render `{\"color\":\"purple\"}`\n\n```html\n<div\n  style=\"color:purple\"\n/>\n<div\n  style=\"width:100px\"\n/>\n<div\n  style=\"color:green\"\n/>\n<div\n  style=\"color:purple\"\n/>\n<div\n  style=\"width:100px\"\n/>\n<div\n  style=\"color:green\"\n/>\n<div\n  style=\"color:green\"\n/>\n<div\n  id=\"test\"\n  style=\"color:green\"\n>\n  Hello\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-style/__snapshots__/csr.expected.md",
    "content": "# Render `{\"color\":\"red\"}`\n\n```html\n<div\n  style=\"color:red\"\n/>\n<div\n  style=\"width:100px\"\n/>\n<div\n  style=\"color:green\"\n/>\n<div\n  style=\"color:red\"\n/>\n<!---->\n<div\n  style=\"width:100px\"\n/>\n<!---->\n<div\n  style=\"color:green\"\n/>\n<!---->\n<div\n  style=\"color:green\"\n/>\n<div\n  id=\"test\"\n  style=\"color:green\"\n>\n  Hello\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT div0, div1, div2, div3, #text0, #comment0, div4, #text1, #comment1, div5, #text2, #comment2, div6, div7, #comment3, #comment4\n```\n\n# Render `{\"color\":\"purple\"}`\n\n```html\n<div\n  style=\"color:purple\"\n/>\n<div\n  style=\"width:100px\"\n/>\n<div\n  style=\"color:green\"\n/>\n<div\n  style=\"color:purple\"\n/>\n<!---->\n<div\n  style=\"width:100px\"\n/>\n<!---->\n<div\n  style=\"color:green\"\n/>\n<!---->\n<div\n  style=\"color:green\"\n/>\n<div\n  id=\"test\"\n  style=\"color:green\"\n>\n  Hello\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nUPDATE div0[style] \"color: red;\" => \"color: purple;\"\nUPDATE div3[style] \"color:red\" => \"color:purple\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-style/__snapshots__/dom.expected/tags/custom-tag.js",
    "content": "export const $template = \"<div></div><!><!>\";\nexport const $walks = /* get, over(1), replace, over(2) */\" b%c\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content__input_test_style = /* @__PURE__ */_._if_closure(\"#text/1\", 0, $scope => _._attr_style($scope[\"#div/0\"], $scope._.input_test_style));\nconst $if_content__setup = $scope => {\n  $if_content__input_test_style._($scope);\n  $if_content__input_test_content._($scope);\n};\nconst $if_content__dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/1\");\nconst $if_content__input_test_content = /* @__PURE__ */_._if_closure(\"#text/1\", 0, $scope => $if_content__dynamicTag($scope, $scope._.input_test_content));\nexport const $input_style = ($scope, input_style) => _._attr_style($scope[\"#div/0\"], input_style);\nconst $if = /* @__PURE__ */_._if(\"#text/1\", \"<div id=test><!></div>\", /* get, next(1), replace, out(1) */\" D%l\", $if_content__setup);\nexport const $input_test = ($scope, input_test) => {\n  $input_test_style($scope, input_test?.style);\n  $input_test_content($scope, input_test?.content);\n  $if($scope, input_test ? 0 : 1);\n};\nexport const $input = ($scope, input) => {\n  $input_style($scope, input.style);\n  $input_test($scope, input.test);\n};\nconst $input_test_style = /* @__PURE__ */_._const(\"input_test_style\", $if_content__input_test_style);\nconst $input_test_content = /* @__PURE__ */_._const(\"input_test_content\", $if_content__input_test_content);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/custom-tag.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-style/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 36 (min) 40 (brotli)\n_._content_resume(\"b0\", \"Hello\", \"b\");\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-style/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<div></div><div style=width:100px></div><div style=\"color: green\"></div>${_customTag_template}${_customTag_template}${_customTag_template}<!><!>`;\nexport const $walks = /* get, over(3), <custom-tag>, <custom-tag>, <custom-tag>, replace, over(2) */` d/${_customTag_walks}&/${_customTag_walks}&/${_customTag_walks}&%c`;\nimport CustomTag from \"./tags/custom-tag.marko\";\nconst TestTag = CustomTag;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _customTag, $input_style as _customTag_input_style, $input_test as _customTag_input_test, $template as _customTag_template, $walks as _customTag_walks } from \"./tags/custom-tag.marko\";\nconst $test_content = _._content_resume(\"__tests__/template.marko_1_content\", \"Hello\", /* over(1) */\"b\");\nexport const $input_color = /* @__PURE__ */_._const(\"input_color\", $scope => {\n  _._attr_style_item($scope[\"#div/0\"], \"color\", $scope.input_color);\n  _customTag_input_style($scope[\"#childScope/1\"], {\n    color: $scope.input_color\n  });\n});\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/4\");\nexport function $setup($scope) {\n  _customTag($scope[\"#childScope/1\"]);\n  _customTag_input_test($scope[\"#childScope/1\"]);\n  _customTag($scope[\"#childScope/2\"]);\n  _customTag_input_style($scope[\"#childScope/2\"], {\n    width: \"100px\"\n  });\n  _customTag_input_test($scope[\"#childScope/2\"]);\n  _customTag($scope[\"#childScope/3\"]);\n  _customTag_input_style($scope[\"#childScope/3\"], \"color: green\");\n  _customTag_input_test($scope[\"#childScope/3\"]);\n  $dynamicTag($scope, TestTag, () => ({\n    style: {\n      color: \"green\"\n    },\n    test: _.attrTag({\n      style: {\n        color: \"green\"\n      },\n      content: $test_content($scope)\n    })\n  }));\n}\nexport const $input = ($scope, input) => $input_color($scope, input.color);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-style/__snapshots__/html.expected/tags/custom-tag.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/custom-tag.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div${_._attr_style(input.style)}></div>${_._el_resume($scope0_id, \"#div/0\", _._serialize_guard($scope0_reason, /* input.style */2))}`);\n  _._if(() => {\n    if (input.test) {\n      const $scope1_id = _._scope_id();\n      _._html(`<div${_._attr_style(input.test.style)} id=test>`);\n      _._dynamic_tag($scope1_id, \"#text/1\", input.test.content, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.test.content */5));\n      _._html(`</div>${_._el_resume($scope1_id, \"#div/0\", _._serialize_guard($scope0_reason, /* input.test.style */4))}`);\n      _._serialize_if($scope0_reason, /* input.test */3) && _._scope($scope1_id, {\n        _: _._serialize_if($scope0_reason, /* input.test.style, input.test.content */1) && _._scope_with_id($scope0_id)\n      }, \"__tests__/tags/custom-tag.marko\", \"3:2\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/1\", _._serialize_guard($scope0_reason, /* input.test */3), _._serialize_guard($scope0_reason, /* input.test */3), _._serialize_guard($scope0_reason, /* input.test */3), 0, 1);\n  _._serialize_if($scope0_reason, /* input.style, input.test */0) && _._scope($scope0_id, {\n    input_test_style: _._serialize_if($scope0_reason, /* input.test */3) && input.test?.style,\n    input_test_content: _._serialize_if($scope0_reason, /* input.test */3) && input.test?.content\n  }, \"__tests__/tags/custom-tag.marko\", 0, {\n    input_test_style: [\"input.test.style\"],\n    input_test_content: [\"input.test.content\"]\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-style/__snapshots__/html.expected/template.js",
    "content": "import CustomTag from \"./tags/custom-tag.marko\";\nconst TestTag = CustomTag;\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nimport _customTag from \"./tags/custom-tag.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div${_._attr_style({\n    color: input.color\n  })}></div>${_._el_resume($scope0_id, \"#div/0\", _._serialize_guard($scope0_reason, /* input.color */0))}<div style=width:100px></div><div style=\"color: green\"></div>`);\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason({\n    /* input.style, input.test */0: _._serialize_guard($scope0_reason, /* input.color */0),\n    /* input.style */2: _._serialize_guard($scope0_reason, /* input.color */0)\n  });\n  _customTag({\n    style: {\n      color: input.color\n    }\n  });\n  _customTag({\n    style: {\n      width: \"100px\"\n    }\n  });\n  _customTag({\n    style: \"color: green\"\n  });\n  _._dynamic_tag($scope0_id, \"#text/4\", TestTag, {\n    style: {\n      color: \"green\"\n    },\n    test: _.attrTag({\n      style: {\n        color: \"green\"\n      },\n      content: _._content_resume(\"__tests__/template.marko_1_content\", () => {\n        _._scope_reason();\n        const $scope1_id = _._scope_id();\n        _._html(\"Hello\");\n      }, $scope0_id)\n    })\n  }, 0, 0, 0);\n  _._serialize_if($scope0_reason, /* input.color */0) && _._scope($scope0_id, {\n    \"#childScope/1\": _._serialize_if($scope0_reason, /* input.color */0) && _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-style/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"color\":\"red\"}`\n\n```html\n<div\n  style=\"color:red\"\n/>\n<div\n  style=\"width:100px\"\n/>\n<div\n  style=\"color:green\"\n/>\n<div\n  style=\"color:red\"\n/>\n<div\n  style=\"width:100px\"\n/>\n<div\n  style=\"color:green\"\n/>\n<div\n  style=\"color:green\"\n/>\n<div\n  id=\"test\"\n  style=\"color:green\"\n>\n  Hello\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-style/__snapshots__/resume.expected.md",
    "content": "# Render `{\"color\":\"red\"}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div\n      style=\"color:red\"\n    />\n    <div\n      style=\"width:100px\"\n    />\n    <div\n      style=\"color:green\"\n    />\n    <div\n      style=\"color:red\"\n    />\n    <div\n      style=\"width:100px\"\n    />\n    <div\n      style=\"color:green\"\n    />\n    <div\n      style=\"color:green\"\n    />\n    <div\n      id=\"test\"\n      style=\"color:green\"\n    >\n      Hello\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-style/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div\n  style=\"color:red\"\n/>\n<div\n  style=\"width:100px\"\n/>\n<div\n  style=\"color:green\"\n/>\n<div\n  style=\"color:red\"\n/>\n<div\n  style=\"width:100px\"\n/>\n<div\n  style=\"color:green\"\n/>\n<div\n  style=\"color:green\"\n/>\n<div\n  id=\"test\"\n  style=\"color:green\"\n>\n  Hello\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-style/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div style=color:red></div><div style=width:100px></div><div style=\"color: green\"></div><div style=color:red></div><div style=width:100px></div><div style=\"color: green\"></div><div style=color:green></div><div style=color:green id=test>Hello</div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div\n      style=\"color:red\"\n    />\n    <div\n      style=\"width:100px\"\n    />\n    <div\n      style=\"color:green\"\n    />\n    <div\n      style=\"color:red\"\n    />\n    <div\n      style=\"width:100px\"\n    />\n    <div\n      style=\"color:green\"\n    />\n    <div\n      style=\"color:green\"\n    />\n    <div\n      id=\"test\"\n      style=\"color:green\"\n    >\n      Hello\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/div1\nINSERT html/body/div2\nINSERT html/body/div3\nINSERT html/body/div4\nINSERT html/body/div5\nINSERT html/body/div6\nINSERT html/body/div7\nINSERT html/body/div7/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-style/tags/custom-tag.marko",
    "content": "<div style=input.style/>\n\n<if=input.test>\n  <div#test style=input.test.style>\n    <${input.test.content}/>\n  </div>\n</if>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-style/template.marko",
    "content": "import CustomTag from \"<custom-tag>\";\nstatic const TestTag = CustomTag;\n\n<div style={ color: input.color }/>\n<div style={ width: \"100px\" }/>\n<div style=\"color: green\"/>\n\n<custom-tag style={ color: input.color }/>\n<custom-tag style={ width: \"100px\" }/>\n<custom-tag style=\"color: green\"/>\n\n<${TestTag} style={ color: \"green\" }>\n  <@test style={ color: \"green\" }>Hello</@test>\n</>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-style/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [{ color: \"red\" }, { color: \"purple\" }],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-tag-params-spread-reference/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-tag-params-spread-reference/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n{\"item\":{\"value\":0}}\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-tag-params-spread-reference/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n{\"item\":{\"value\":0}}\n```\n\n# Mutations\n```\nINSERT #text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-tag-params-spread-reference/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<!>\";\nexport const $walks = /* replace, over(1) */\"%b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $input = ($scope, input) => _._text($scope[\"#text/0\"], JSON.stringify(input));\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-tag-params-spread-reference/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-tag-params-spread-reference/__snapshots__/dom.expected/template.js",
    "content": "export const $template = _child_template;\nexport const $walks = /* <child> */`/${_child_walks}&`;\nimport { $setup as _child, $input as _child_input, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport function $setup($scope) {\n  _child($scope[\"#childScope/0\"]);\n}\nexport const $input = /* @__PURE__ */_._const(\"input\", $scope => {\n  let $item;\n  _.forUntil(1, 0, 1, i => {\n    $item = _.attrTags($item, {\n      value: i\n    });\n  });\n  _child_input($scope[\"#childScope/0\"], {\n    ...$scope.input,\n    item: $item\n  });\n});\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-tag-params-spread-reference/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`${_._sep(_._serialize_guard($scope0_reason, /* input */0))}${_._escape(JSON.stringify(input))}${_._el_resume($scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input */0))}`);\n  _._serialize_if($scope0_reason, /* input */0) && _._scope($scope0_id, {}, \"__tests__/tags/child.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-tag-params-spread-reference/__snapshots__/html.expected/template.js",
    "content": "import _child from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason(_._serialize_guard($scope0_reason, /* input */0));\n  let $item;\n  _.forUntil(1, 0, 1, i => {\n    $item = _.attrTags($item, {\n      value: i\n    });\n  });\n  _child({\n    ...input,\n    item: $item\n  });\n  _._serialize_if($scope0_reason, /* input */0) && _._scope($scope0_id, {\n    \"#childScope/0\": _._serialize_if($scope0_reason, /* input */0) && _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-tag-params-spread-reference/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n{\"item\":{\"value\":0}}\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-tag-params-spread-reference/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    {\"item\":{\"value\":0}}\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-tag-params-spread-reference/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n{\"item\":{\"value\":0}}\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-tag-params-spread-reference/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  {\"item\":{\"value\":0}}\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    {\"item\":{\"value\":0}}\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-tag-params-spread-reference/tags/child.marko",
    "content": "-- ${JSON.stringify(input)}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-tag-params-spread-reference/template.marko",
    "content": "child ...input\n  for|i| until=1\n    @item=i\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-template-literal-escape/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-template-literal-escape/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"name\":\"Marko\"}`\n\n```html\n<div\n  foo=\"Hello Marko\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-template-literal-escape/__snapshots__/csr.expected.md",
    "content": "# Render `{\"name\":\"Marko\"}`\n\n```html\n<div\n  foo=\"Hello Marko\"\n/>\n```\n\n# Mutations\n```\nINSERT div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-template-literal-escape/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-template-literal-escape/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* get, over(1) */\" b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $input_name = ($scope, input_name) => _._attr($scope[\"#div/0\"], \"foo\", `Hello ${input_name}`);\nexport const $input = ($scope, input) => $input_name($scope, input.name);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-template-literal-escape/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div${_._attr(\"foo\", `Hello ${input.name}`)}></div>${_._el_resume($scope0_id, \"#div/0\", _._serialize_guard($scope0_reason, /* input.name */0))}`);\n  _._serialize_if($scope0_reason, /* input.name */0) && _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-template-literal-escape/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"name\":\"Marko\"}`\n\n```html\n<div\n  foo=\"Hello Marko\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-template-literal-escape/__snapshots__/resume.expected.md",
    "content": "# Render `{\"name\":\"Marko\"}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div\n      foo=\"Hello Marko\"\n    />\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-template-literal-escape/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div\n  foo=\"Hello Marko\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-template-literal-escape/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div foo=\"Hello Marko\"></div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div\n      foo=\"Hello Marko\"\n    />\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-template-literal-escape/template.marko",
    "content": "<div foo=`Hello ${input.name}`></div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/attr-template-literal-escape/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [{ name: \"Marko\" }],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-cleanup/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"e\",\n      \"$resolveAfter\": \"o\",\n      \"$$await_content2__setup__script\": \"a\",\n      \"$$await_content2__setup\": \"n\",\n      \"$$placeholder_content\": \"_\",\n      \"$$await_content__show\": \"r\",\n      \"$$await_content__setup__script\": \"c\",\n      \"$$await_content__setup\": \"s\",\n      \"$$await_content\": \"i\",\n      \"$$try_content__await_promise\": \"m\",\n      \"$$await_content2\": \"l\",\n      \"$$try_content__await_promise2\": \"u\",\n      \"$$try_content__setup\": \"g\",\n      \"$$if_content__try\": \"p\",\n      \"$$if_content__setup\": \"b\",\n      \"$$if\": \"d\",\n      \"$$show__closure\": \"f\",\n      \"$$show\": \"w\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-cleanup/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button />\n<div\n  id=\"one\"\n>\n  Fail\n</div>\n<div\n  id=\"two\"\n>\n  Fail\n</div>\n```\n\n\n# Render ASYNC\n```html\n<button />\n<div\n  id=\"one\"\n>\n  Fail\n</div>\n<div\n  id=\"two\"\n>\n  Fail\n</div>\nloading...\n```\n\n\n# Render ASYNC\n```html\n<button />\n<div\n  id=\"one\"\n>\n  Fail\n</div>\n<div\n  id=\"two\"\n>\n  Fail\n</div>\n1\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<div\n  id=\"one\"\n>\n  Pass\n</div>\n<div\n  id=\"two\"\n>\n  Pass\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-cleanup/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button />\n<div\n  id=\"one\"\n>\n  Fail\n</div>\n<div\n  id=\"two\"\n>\n  Fail\n</div>\n<!---->\n<!---->\n<!---->\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT button, div0, div1, #comment0, #comment1, #text0, #text1, #comment2, #comment3, #comment4\n```\n\n# Render ASYNC\n```html\n<button />\n<div\n  id=\"one\"\n>\n  Fail\n</div>\n<div\n  id=\"two\"\n>\n  Fail\n</div>\n<!---->\nloading...\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE #document-fragment/#comment0 after #text\nREMOVE #document-fragment/#text0 after #text\nREMOVE #document-fragment/#text1 after #text\nREMOVE #document-fragment/#comment1 after #text\n```\n\n# Render ASYNC\n```html\n<button />\n<div\n  id=\"one\"\n>\n  Fail\n</div>\n<div\n  id=\"two\"\n>\n  Fail\n</div>\n<!---->\n<!---->\n1\n<!---->\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment1, #text0, #text1, #comment2\nREMOVE #text after #comment2\nUPDATE #text0 \" \" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<div\n  id=\"one\"\n>\n  Pass\n</div>\n<div\n  id=\"two\"\n>\n  Pass\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE #comment after #text\nREMOVE #comment after #text\nREMOVE #text after #text\nREMOVE #text after #text\nREMOVE #comment after #text\nREMOVE #comment after #text\nREMOVE #text in div0\nINSERT div0/#text\nREMOVE #text in div1\nINSERT div1/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-cleanup/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 770 (min) 372 (brotli)\n_._enable_catch();\nconst $await_content2__setup__script = _._script(\n    \"a0\",\n    ($scope) =>\n      (_.$signal($scope, 0).onabort = () =>\n        (document.querySelector(\"#two\").textContent = \"Pass\")),\n  ),\n  $await_content2__setup = ($scope) => {\n    (_.$signalReset($scope, 0), $await_content2__setup__script($scope));\n  },\n  $placeholder_content = _._content_resume(\"a1\", \"loading...\", \"b\"),\n  $await_content__show = _._closure_get(\n    2,\n    ($scope) => _._text($scope.a, $scope._._._.c),\n    ($scope) => $scope._._._,\n    \"a2\",\n  ),\n  $await_content__setup__script = _._script(\n    \"a3\",\n    ($scope) =>\n      (_.$signal($scope, 0).onabort = () =>\n        (document.querySelector(\"#one\").textContent = \"Pass\")),\n  ),\n  $await_content__setup = ($scope) => {\n    ($await_content__show($scope),\n      _.$signalReset($scope, 0),\n      $await_content__setup__script($scope));\n  },\n  $await_content = _._await_content(0, \" \", \" b\", $await_content__setup),\n  $try_content__await_promise = _._await_promise(0),\n  $await_content2 = _._await_content(1, 0, 0, $await_content2__setup),\n  $try_content__await_promise2 = _._await_promise(1),\n  $try_content__setup = ($scope) => {\n    ($await_content($scope),\n      $await_content2($scope),\n      $try_content__await_promise($scope, resolveAfter(0, 1)),\n      $try_content__await_promise2($scope, resolveAfter(0, 1)));\n  },\n  $if_content__try = _._try(0, \"<!><!><!><!>\", \"b%b%c\", $try_content__setup),\n  $if_content__setup = ($scope) =>\n    $if_content__try($scope, {\n      placeholder: _.attrTag({ content: $placeholder_content($scope) }),\n    }),\n  $if = _._if(1, \"<!><!><!>\", \"b%c\", $if_content__setup),\n  $show__closure = _._closure($await_content__show),\n  $show = _._let(2, ($scope) => {\n    ($if($scope, $scope.c ? 0 : 1), $show__closure($scope));\n  });\n(_._script(\"a4\", ($scope) =>\n  _._on($scope.a, \"click\", function () {\n    $show($scope, 0);\n  }),\n),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-cleanup/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button></button><div id=one>Fail</div><div id=two>Fail</div><!><!>\";\nexport const $walks = /* get, over(3), replace, over(2) */\" d%c\";\nimport { resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\n_._enable_catch();\nconst $await_content2__setup__script = _._script(\"__tests__/template.marko_5\", $scope => (_.$signal($scope, 0).onabort = () => document.querySelector('#two').textContent = \"Pass\"));\nconst $await_content2__setup = $scope => {\n  _.$signalReset($scope, 0);\n  $await_content2__setup__script($scope);\n};\nconst $placeholder_content = _._content_resume(\"__tests__/template.marko_4_content\", \"loading...\", /* over(1) */\"b\");\nconst $await_content__show = /* @__PURE__ */_._closure_get(\"show\", $scope => _._text($scope[\"#text/0\"], $scope._._._.show), $scope => $scope._._._, \"__tests__/template.marko_3_show/pending\");\nconst $await_content__setup__script = _._script(\"__tests__/template.marko_3\", $scope => (_.$signal($scope, 0).onabort = () => document.querySelector('#one').textContent = \"Pass\"));\nconst $await_content__setup = $scope => {\n  $await_content__show($scope);\n  _.$signalReset($scope, 0);\n  $await_content__setup__script($scope);\n};\nconst $await_content = /* @__PURE__ */_._await_content(\"#text/0\", \" \", /* get, over(1) */\" b\", $await_content__setup);\nconst $try_content__await_promise = /* @__PURE__ */_._await_promise(\"#text/0\");\nconst $await_content2 = /* @__PURE__ */_._await_content(\"#text/1\", 0, 0, $await_content2__setup);\nconst $try_content__await_promise2 = /* @__PURE__ */_._await_promise(\"#text/1\");\nconst $try_content__setup = $scope => {\n  $await_content($scope);\n  $await_content2($scope);\n  $try_content__await_promise($scope, resolveAfter(0, 1));\n  $try_content__await_promise2($scope, resolveAfter(0, 1));\n};\nconst $if_content__try = /* @__PURE__ */_._try(\"#text/0\", \"<!><!><!><!>\", /* over(1), replace, over(1), replace, over(2) */\"b%b%c\", $try_content__setup);\nconst $if_content__setup = $scope => $if_content__try($scope, {\n  placeholder: _.attrTag({\n    content: $placeholder_content($scope)\n  })\n});\nconst $if = /* @__PURE__ */_._if(\"#text/1\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", $if_content__setup);\nconst $show__closure = /* @__PURE__ */_._closure($await_content__show);\nconst $show = /* @__PURE__ */_._let(\"show/2\", $scope => {\n  $if($scope, $scope.show ? 0 : 1);\n  $show__closure($scope);\n});\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $show($scope, 0);\n}));\nexport function $setup($scope) {\n  $show($scope, 1);\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-cleanup/__snapshots__/html.expected/template.js",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $show__closures = new Set();\n  let show = 1;\n  _._html(`<button></button>${_._el_resume($scope0_id, \"#button/0\")}<div id=one>Fail</div><div id=two>Fail</div>`);\n  _._if(() => {\n    if (show) {\n      const $scope1_id = _._scope_id();\n      _._try($scope1_id, \"#text/0\", _._content_resume(\"__tests__/template.marko_2_content\", () => {\n        const $scope2_id = _._scope_id();\n        _._scope_reason();\n        _._await($scope2_id, \"#text/0\", resolveAfter(0, 1), () => {\n          const $scope3_id = _._scope_id();\n          _._script($scope3_id, \"__tests__/template.marko_3_show/pending\");\n          _._html(`${_._escape(show)}${_._el_resume($scope3_id, \"#text/0\")}`);\n          _._script($scope3_id, \"__tests__/template.marko_3\");\n          _._scope($scope3_id, {\n            _: _._scope_with_id($scope2_id),\n            \"ClosureSignalIndex:show\": 0\n          }, \"__tests__/template.marko\", \"9:5\");\n          _._resume_branch($scope3_id);\n        });\n        _._await($scope2_id, \"#text/1\", resolveAfter(0, 1), () => {\n          const $scope5_id = _._scope_id();\n          _._script($scope5_id, \"__tests__/template.marko_5\");\n          _._resume_branch($scope5_id);\n        }, 0);\n        _._scope($scope2_id, {\n          _: _._scope_with_id($scope1_id)\n        }, \"__tests__/template.marko\", \"7:3\");\n      }, $scope1_id), {\n        placeholder: _.attrTag({\n          content: _._content_resume(\"__tests__/template.marko_4_content\", () => {\n            _._scope_reason();\n            const $scope4_id = _._scope_id();\n            _._html(\"loading...\");\n          }, $scope1_id)\n        })\n      });\n      _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"6:1\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/1\");\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {\n    show,\n    \"ClosureScopes:show\": $show__closures\n  }, \"__tests__/template.marko\", 0, {\n    show: \"2:5\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-cleanup/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button />\n<div\n  id=\"one\"\n>\n  Fail\n</div>\n<div\n  id=\"two\"\n>\n  Fail\n</div>\nloading...\n```\n\n\n# Render FLUSH\n```html\n<button />\n<div\n  id=\"one\"\n>\n  Fail\n</div>\n<div\n  id=\"two\"\n>\n  Fail\n</div>\n1\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<div\n  id=\"one\"\n>\n  Pass\n</div>\n<div\n  id=\"two\"\n>\n  Pass\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-cleanup/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <div\n      id=\"one\"\n    >\n      Fail\n    </div>\n    <div\n      id=\"two\"\n    >\n      Fail\n    </div>\n    <!--M_[-->\n    <!--M_[-->\n    <!--M_!^3-->\n    loading...\n    <!--M_!3-->\n    <!--M_]2 #text/0 3-->\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.a = {\n          show: 1,\n          \"ClosureScopes:show\": new Set\n        }, _.b = {\n          _: _.a\n        }, _.c = {\n          _: _.b,\n          \"#BranchAccessor\": \"#text/0\"\n        }], _.c[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_4_content\"\n          ](_.b), _.d),\n        \"__tests__/template.marko_0 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text1\nINSERT html/body/#text2\n```\n\n# Render FLUSH\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <div\n      id=\"one\"\n    >\n      Fail\n    </div>\n    <div\n      id=\"two\"\n    >\n      Fail\n    </div>\n    <!--M_[-->\n    <!--M_[-->\n    <!--M_[-->\n    1\n    <!--M_*5 #text/0-->\n    <!--M_]3 #text/0 5-->\n    <!--M_]2 #text/0 3-->\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.a = {\n          show: 1,\n          \"ClosureScopes:show\": new Set\n        }, _.b = {\n          _: _.a\n        }, _.c = {\n          _: _.b,\n          \"#BranchAccessor\": \"#text/0\"\n        }], _.c[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_4_content\"\n          ](_.b), _.d),\n        \"__tests__/template.marko_0 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.e = [1,\n      {\n        \"#ClosestBranchId\": 2,\n        _: _.c,\n        \"ClosureSignalIndex:show\": 0\n      }]), _ =&gt; (_.f = [\n      {\n        \"#ClosestBranchId\": 2\n      }]));\n      M._.j.b = _ =&gt;\n      {\n        _.push(\n          \"__tests__/template.marko_3_show/pending 5 __tests__/template.marko_3 5\"\n          )\n      };\n      M._.j.c = _ =&gt;\n      {\n        _.push(\n          \"__tests__/template.marko_5 6\"\n          )\n      };\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT t\nINSERT html/body/#comment3\nINSERT html/body/#text0\nINSERT html/body/#comment4\nINSERT html/body/#comment5\nINSERT t\nREMOVE t after html/body/script0\nREMOVE t after html/body/script0\nREMOVE #text after #comment\nREMOVE #comment after html/body/#comment2\nREMOVE #comment after html/body/#comment2\nINSERT html/body/#comment3, html/body/#text0, html/body/#comment4, html/body/#comment5\nINSERT html/body/#text1\nINSERT html/body/script1\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <div\n      id=\"one\"\n    >\n      Pass\n    </div>\n    <div\n      id=\"two\"\n    >\n      Pass\n    </div>\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.a = {\n          show: 1,\n          \"ClosureScopes:show\": new Set\n        }, _.b = {\n          _: _.a\n        }, _.c = {\n          _: _.b,\n          \"#BranchAccessor\": \"#text/0\"\n        }], _.c[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_4_content\"\n          ](_.b), _.d),\n        \"__tests__/template.marko_0 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.e = [1,\n      {\n        \"#ClosestBranchId\": 2,\n        _: _.c,\n        \"ClosureSignalIndex:show\": 0\n      }]), _ =&gt; (_.f = [\n      {\n        \"#ClosestBranchId\": 2\n      }]));\n      M._.j.b = _ =&gt;\n      {\n        _.push(\n          \"__tests__/template.marko_3_show/pending 5 __tests__/template.marko_3 5\"\n          )\n      };\n      M._.j.c = _ =&gt;\n      {\n        _.push(\n          \"__tests__/template.marko_5 6\"\n          )\n      };\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/#comment1 after #text\nINSERT html/body/#comment1\nREMOVE #comment after html/body/#comment1\nREMOVE #comment after html/body/#comment1\nREMOVE #comment after html/body/#comment1\nREMOVE #text after html/body/#comment1\nREMOVE #comment after html/body/#comment1\nREMOVE #text after html/body/#comment1\nREMOVE #comment after html/body/#comment1\nREMOVE #text after html/body/#comment1\nREMOVE #comment after html/body/#comment1\nREMOVE #text after html/body/#comment1\nREMOVE #text in html/body/div0\nINSERT html/body/div0/#text\nREMOVE #text in html/body/div1\nINSERT html/body/div1/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-cleanup/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render ASYNC\n```html\n<button />\n<div\n  id=\"one\"\n>\n  Fail\n</div>\n<div\n  id=\"two\"\n>\n  Fail\n</div>\nloading...\n```\n\n\n# Render End\n```html\n<button />\n<div\n  id=\"one\"\n>\n  Fail\n</div>\n<div\n  id=\"two\"\n>\n  Fail\n</div>\n1\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-cleanup/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button></button><!--M_*1 #button/0--><div id=one>Fail</div><div id=two>Fail</div><!--M_[--><!--M_[--><!--M_!^3-->loading...<!--M_!3--><!--M_]2 #text/0 3--><!--M_]1 #text/1 2--><style M_>t{display:none}</style><t M_=3><!--M_#b--><!--M_#c--></t><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.d=[0,_.a={show:1,\"ClosureScopes:show\":new Set},_.b={_:_.a},_.c={_:_.b,\"#BranchAccessor\":\"#text/0\"}],_.c[\"#PlaceholderContent\"]=_._[\"__tests__/template.marko_4_content\"](_.b),_.d),\"__tests__/template.marko_0 1\"];REORDER_RUNTIME(M._);M._.w()</script>\n```\n\n# Write\n```html\n  <t M_=b><!--M_[-->1<!--M_*5 #text/0--><!--M_]3 #text/0 5--></t><t M_=c></t><script>M._.r.push(_=>(_.e=[1,{\"#ClosestBranchId\":2,_:_.c,\"ClosureSignalIndex:show\":0}]),_=>(_.f=[{\"#ClosestBranchId\":2}]));M._.j.b=_=>{_.push(\"__tests__/template.marko_3_show/pending 5 __tests__/template.marko_3 5\")};M._.j.c=_=>{_.push(\"__tests__/template.marko_5 6\")};M._.w()</script>\n```\n\n# Render ASYNC\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <div\n      id=\"one\"\n    >\n      Fail\n    </div>\n    <div\n      id=\"two\"\n    >\n      Fail\n    </div>\n    <!--M_[-->\n    <!--M_[-->\n    <!--M_!^3-->\n    loading...\n    <!--M_!3-->\n    <!--M_]2 #text/0 3-->\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.a = {\n          show: 1,\n          \"ClosureScopes:show\": new Set\n        }, _.b = {\n          _: _.a\n        }, _.c = {\n          _: _.b,\n          \"#BranchAccessor\": \"#text/0\"\n        }], _.c[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_4_content\"\n          ](_.b), _.d),\n        \"__tests__/template.marko_0 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/#comment0\nINSERT html/body/div0\nINSERT html/body/div0/#text\nINSERT html/body/div1\nINSERT html/body/div1/#text\nINSERT html/body/#comment1\nINSERT html/body/#comment2\nINSERT html/body/#comment3\nINSERT html/body/#text\nINSERT html/body/#comment4\nINSERT html/body/#comment5\nINSERT html/body/#comment6\nINSERT html/head/style\nINSERT html/head/style/#text\nINSERT t\nINSERT t/#comment0\nINSERT t/#comment1\nREMOVE html/head/style after html/body/#comment6\nINSERT html/head/style\nREMOVE t after html/body/#comment6\nINSERT html/body/script\n```\n\n# Render End\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <div\n      id=\"one\"\n    >\n      Fail\n    </div>\n    <div\n      id=\"two\"\n    >\n      Fail\n    </div>\n    <!--M_[-->\n    <!--M_[-->\n    <!--M_[-->\n    1\n    <!--M_*5 #text/0-->\n    <!--M_]3 #text/0 5-->\n    <!--M_]2 #text/0 3-->\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.a = {\n          show: 1,\n          \"ClosureScopes:show\": new Set\n        }, _.b = {\n          _: _.a\n        }, _.c = {\n          _: _.b,\n          \"#BranchAccessor\": \"#text/0\"\n        }], _.c[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_4_content\"\n          ](_.b), _.d),\n        \"__tests__/template.marko_0 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.e = [1,\n      {\n        \"#ClosestBranchId\": 2,\n        _: _.c,\n        \"ClosureSignalIndex:show\": 0\n      }]), _ =&gt; (_.f = [\n      {\n        \"#ClosestBranchId\": 2\n      }]));\n      M._.j.b = _ =&gt;\n      {\n        _.push(\n          \"__tests__/template.marko_3_show/pending 5 __tests__/template.marko_3 5\"\n          )\n      };\n      M._.j.c = _ =&gt;\n      {\n        _.push(\n          \"__tests__/template.marko_5 6\"\n          )\n      };\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT t\nINSERT html/body/#comment3\nINSERT html/body/#text\nINSERT html/body/#comment4\nINSERT html/body/#comment5\nINSERT t\nREMOVE t after html/body/script0\nREMOVE t after html/body/script0\nREMOVE #text after #comment\nREMOVE #comment after html/body/#comment2\nREMOVE #comment after html/body/#comment2\nINSERT html/body/#comment3, html/body/#text, html/body/#comment4, html/body/#comment5\nINSERT html/body/script1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-cleanup/template.marko",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\nlet/show=1\nbutton onClick() { show = 0 }\ndiv#one -- Fail\ndiv#two -- Fail\nif=show\n  try\n    @placeholder -- loading...\n    await=resolveAfter(0, 1)\n      -- ${show}\n      script -- $signal.onabort = () => document.querySelector('#one')!.textContent = \"Pass\"\n    await=resolveAfter(0, 1)\n      script -- $signal.onabort = () => document.querySelector('#two')!.textContent = \"Pass\""
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-cleanup/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { flush, wait } from \"../../utils/resolve\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, flush, wait, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"_\",\n      \"$$await_content__value\": \"o\",\n      \"$$value__closure\": \"a\",\n      \"$$value__script\": \"e\",\n      \"$$value\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  1\n</button>\n```\n\n\n# Render ASYNC\n```html\n<button>\n  1\n</button>\nloading...\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\nloading...\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\nloading...\n```\n\n\n# Render ASYNC\n```html\n<button>\n  3\n</button>\n<span>\n  3\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  4\n</button>\n<span>\n  4\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  1\n</button>\n<!---->\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT button, #comment0, #text, #comment1, #comment2\n```\n\n# Render ASYNC\n```html\n<button>\n  1\n</button>\nloading...\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE #document-fragment/#comment0 after #text\nREMOVE #document-fragment/#text after #text\nREMOVE #document-fragment/#comment1 after #text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\nloading...\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\nloading...\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text \"2\" => \"3\"\n```\n\n# Render ASYNC\n```html\n<button>\n  3\n</button>\n<!---->\n<span>\n  3\n</span>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, span, #comment1\nREMOVE #text after #comment1\nUPDATE span/#text \" \" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  4\n</button>\n<!---->\n<span>\n  4\n</span>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text \"3\" => \"4\"\nUPDATE span/#text \"3\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 250 (min) 157 (brotli)\n(_._enable_catch(), _._content_resume(\"a0\", \"loading...\", \"b\"));\nconst $await_content__value = _._closure_get(\n    3,\n    ($scope) => _._text($scope.a, $scope._._.d),\n    ($scope) => $scope._._,\n    \"a1\",\n  ),\n  $value__closure = _._closure($await_content__value),\n  $value__script = _._script(\"a2\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $value($scope, $scope.d + 1);\n    }),\n  ),\n  $value = _._let(3, ($scope) => {\n    (_._text($scope.b, $scope.d),\n      $value__closure($scope),\n      $value__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button> </button><!><!>\";\nexport const $walks = /* get, next(1), get, out(1), replace, over(2) */\" D l%c\";\nimport { resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\n_._enable_catch();\nconst $placeholder_content = _._content_resume(\"__tests__/template.marko_3_content\", \"loading...\", /* over(1) */\"b\");\nconst $await_content__value = /* @__PURE__ */_._closure_get(\"value\", $scope => _._text($scope[\"#text/0\"], $scope._._.value), $scope => $scope._._, \"__tests__/template.marko_2_value/pending\");\nconst $await_content__setup = $await_content__value;\nconst $await_content = /* @__PURE__ */_._await_content(\"#text/0\", \"<span> </span>\", /* next(1), get, out(1) */\"D l\", $await_content__setup);\nconst $try_content__await_promise = /* @__PURE__ */_._await_promise(\"#text/0\");\nconst $try_content__setup = $scope => {\n  $await_content($scope);\n  $try_content__await_promise($scope, resolveAfter(0, 4));\n};\nconst $value__closure = /* @__PURE__ */_._closure($await_content__value);\nconst $value__script = _._script(\"__tests__/template.marko_0_value\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $value($scope, $scope.value + 1);\n}));\nconst $value = /* @__PURE__ */_._let(\"value/3\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.value);\n  $value__closure($scope);\n  $value__script($scope);\n});\nconst $try = /* @__PURE__ */_._try(\"#text/2\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", $try_content__setup);\nexport function $setup($scope) {\n  $value($scope, 1);\n  $try($scope, {\n    placeholder: _.attrTag({\n      content: $placeholder_content($scope)\n    })\n  });\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/html.expected/template.js",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $value__closures = new Set();\n  let value = 1;\n  _._html(`<button>${_._escape(value)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._try($scope0_id, \"#text/2\", _._content_resume(\"__tests__/template.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    _._scope_reason();\n    _._await($scope1_id, \"#text/0\", resolveAfter(0, 4), () => {\n      const $scope2_id = _._scope_id();\n      _._script($scope2_id, \"__tests__/template.marko_2_value/pending\");\n      _._html(`<span>${_._escape(value)}${_._el_resume($scope2_id, \"#text/0\")}</span>`);\n      _._scope($scope2_id, {\n        _: _._scope_with_id($scope1_id),\n        \"ClosureSignalIndex:value\": 0\n      }, \"__tests__/template.marko\", \"6:3\");\n      _._resume_branch($scope2_id);\n    });\n    _._scope($scope1_id, {\n      _: _._scope_with_id($scope0_id)\n    }, \"__tests__/template.marko\", \"4:1\");\n  }, $scope0_id), {\n    placeholder: _.attrTag({\n      content: _._content_resume(\"__tests__/template.marko_3_content\", () => {\n        _._scope_reason();\n        const $scope3_id = _._scope_id();\n        _._html(\"loading...\");\n      }, $scope0_id)\n    })\n  });\n  _._script($scope0_id, \"__tests__/template.marko_0_value\");\n  _._scope($scope0_id, {\n    value,\n    \"ClosureScopes:value\": $value__closures\n  }, \"__tests__/template.marko\", 0, {\n    value: \"2:5\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  1\n</button>\nloading...\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\nloading...\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\nloading...\n```\n\n\n# Render FLUSH\n```html\n<button>\n  3\n</button>\n<span>\n  3\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  4\n</button>\n<span>\n  4\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <button>\n      1\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <!--M_!^2-->\n    loading...\n    <!--M_!2-->\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          value: 1,\n          \"ClosureScopes:value\": new Set\n        }, _.b = {\n          _: _.a,\n          \"#BranchAccessor\": \"#text/2\"\n        }], _.b[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_3_content\"\n          ](_.a), _.c),\n        \"__tests__/template.marko_0_value 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text1\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <button>\n      2\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <!--M_!^2-->\n    loading...\n    <!--M_!2-->\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          value: 1,\n          \"ClosureScopes:value\": new Set\n        }, _.b = {\n          _: _.a,\n          \"#BranchAccessor\": \"#text/2\"\n        }], _.b[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_3_content\"\n          ](_.a), _.c),\n        \"__tests__/template.marko_0_value 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <button>\n      3\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <!--M_!^2-->\n    loading...\n    <!--M_!2-->\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          value: 1,\n          \"ClosureScopes:value\": new Set\n        }, _.b = {\n          _: _.a,\n          \"#BranchAccessor\": \"#text/2\"\n        }], _.b[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_3_content\"\n          ](_.a), _.c),\n        \"__tests__/template.marko_0_value 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"2\" => \"3\"\n```\n\n# Render FLUSH\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <button>\n      3\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <!--M_[-->\n    <span>\n      3\n      <!--M_*4 #text/0-->\n    </span>\n    <!--M_]2 #text/0 4-->\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          value: 1,\n          \"ClosureScopes:value\": new Set\n        }, _.b = {\n          _: _.a,\n          \"#BranchAccessor\": \"#text/2\"\n        }], _.b[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_3_content\"\n          ](_.a), _.c),\n        \"__tests__/template.marko_0_value 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.d = [1,\n      {\n        _: _.b,\n        \"ClosureSignalIndex:value\": 0\n      }]));\n      M._.j.b = _ =&gt;\n      {\n        _.push(\n          \"__tests__/template.marko_2_value/pending 4\"\n          )\n      };\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT t\nINSERT html/body/#comment2\nINSERT html/body/span\nINSERT html/body/span/#text\nINSERT html/body/span/#comment\nINSERT html/body/#comment3\nREMOVE t after html/body/script0\nREMOVE #text after #comment\nREMOVE #comment after html/body/#comment1\nREMOVE #comment after html/body/#comment1\nINSERT html/body/#comment2, html/body/span, html/body/#comment3\nINSERT html/body/#text0\nUPDATE html/body/span/#text \"1\" => \"3\"\nINSERT html/body/script1\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <button>\n      4\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <!--M_[-->\n    <span>\n      4\n      <!--M_*4 #text/0-->\n    </span>\n    <!--M_]2 #text/0 4-->\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          value: 1,\n          \"ClosureScopes:value\": new Set\n        }, _.b = {\n          _: _.a,\n          \"#BranchAccessor\": \"#text/2\"\n        }], _.b[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_3_content\"\n          ](_.a), _.c),\n        \"__tests__/template.marko_0_value 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.d = [1,\n      {\n        _: _.b,\n        \"ClosureSignalIndex:value\": 0\n      }]));\n      M._.j.b = _ =&gt;\n      {\n        _.push(\n          \"__tests__/template.marko_2_value/pending 4\"\n          )\n      };\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"3\" => \"4\"\nUPDATE html/body/span/#text \"3\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render ASYNC\n```html\n<button>\n  1\n</button>\nloading...\n```\n\n\n# Render End\n```html\n<button>\n  1\n</button>\n<span>\n  1\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>1<!--M_*1 #text/1--></button><!--M_*1 #button/0--><!--M_[--><!--M_!^2-->loading...<!--M_!2--><!--M_]1 #text/2 2--><style M_>t{display:none}</style><t M_=2><!--M_#b--></t><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.a={value:1,\"ClosureScopes:value\":new Set},_.b={_:_.a,\"#BranchAccessor\":\"#text/2\"}],_.b[\"#PlaceholderContent\"]=_._[\"__tests__/template.marko_3_content\"](_.a),_.c),\"__tests__/template.marko_0_value 1\"];REORDER_RUNTIME(M._);M._.w()</script>\n```\n\n# Write\n```html\n  <t M_=b><!--M_[--><span>1<!--M_*4 #text/0--></span><!--M_]2 #text/0 4--></t><script>M._.r.push(_=>(_.d=[1,{_:_.b,\"ClosureSignalIndex:value\":0}]));M._.j.b=_=>{_.push(\"__tests__/template.marko_2_value/pending 4\")};M._.w()</script>\n```\n\n# Render ASYNC\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <button>\n      1\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <!--M_!^2-->\n    loading...\n    <!--M_!2-->\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          value: 1,\n          \"ClosureScopes:value\": new Set\n        }, _.b = {\n          _: _.a,\n          \"#BranchAccessor\": \"#text/2\"\n        }], _.b[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_3_content\"\n          ](_.a), _.c),\n        \"__tests__/template.marko_0_value 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/#comment2\nINSERT html/body/#text\nINSERT html/body/#comment3\nINSERT html/body/#comment4\nINSERT html/head/style\nINSERT html/head/style/#text\nINSERT t\nINSERT t/#comment\nREMOVE html/head/style after html/body/#comment4\nINSERT html/head/style\nREMOVE t after html/body/#comment4\nINSERT html/body/script\n```\n\n# Render End\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <button>\n      1\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <!--M_[-->\n    <span>\n      1\n      <!--M_*4 #text/0-->\n    </span>\n    <!--M_]2 #text/0 4-->\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          value: 1,\n          \"ClosureScopes:value\": new Set\n        }, _.b = {\n          _: _.a,\n          \"#BranchAccessor\": \"#text/2\"\n        }], _.b[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_3_content\"\n          ](_.a), _.c),\n        \"__tests__/template.marko_0_value 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.d = [1,\n      {\n        _: _.b,\n        \"ClosureSignalIndex:value\": 0\n      }]));\n      M._.j.b = _ =&gt;\n      {\n        _.push(\n          \"__tests__/template.marko_2_value/pending 4\"\n          )\n      };\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT t\nINSERT html/body/#comment2\nINSERT html/body/span\nINSERT html/body/span/#text\nINSERT html/body/span/#comment\nINSERT html/body/#comment3\nREMOVE t after html/body/script0\nREMOVE #text after #comment\nREMOVE #comment after html/body/#comment1\nREMOVE #comment after html/body/#comment1\nINSERT html/body/#comment2, html/body/span, html/body/#comment3\nINSERT html/body/script1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure/template.marko",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\nlet/value=1\nbutton onClick() { value++ } -- ${value}\ntry\n  @placeholder -- loading...\n  await=resolveAfter(0, 4)\n    span -- ${value}"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { after, flush } from \"../../utils/resolve\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [\n    {},\n    after(1),\n    click,\n    after(2),\n    click,\n    after(3),\n    flush,\n    after(5),\n    click,\n  ],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-function/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"_\",\n      \"$init\": \"t\",\n      \"$$await_content__value__script\": \"o\",\n      \"$$await_content__value\": \"a\",\n      \"$$value__closure\": \"e\",\n      \"$$value\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-function/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n\n\n# Render ASYNC\n```html\nloading...\n```\n\n\n# Render ASYNC\n```html\n0\n```\n\n\n# Render ASYNC\n```html\n1\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-function/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<!---->\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, #text, #comment2, #comment3\n```\n\n# Render ASYNC\n```html\n<!---->\nloading...\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE #document-fragment/#comment0 after #text\nREMOVE #document-fragment/#text after #text\nREMOVE #document-fragment/#comment1 after #text\n```\n\n# Render ASYNC\n```html\n<!---->\n<!---->\n0\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment1, #text, #comment2\nREMOVE #text after #comment2\nUPDATE #text \" \" => \"0\"\n```\n\n# Render ASYNC\n```html\n<!---->\n<!---->\n1\n<!---->\n<!---->\n```\n\n# Mutations\n```\nUPDATE #text \"0\" => \"1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-function/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 216 (min) 147 (brotli)\n(_._enable_catch(), _._content_resume(\"a0\", \"loading...\", \"b\"));\nconst $await_content__value__script = _._script(\n    \"a1\",\n    ($scope) => !$scope._._.b && $value($scope._._, $scope._._.b + 1) - 1,\n  ),\n  $await_content__value = _._closure_get(\n    1,\n    ($scope) => {\n      (_._text($scope.a, $scope._._.b), $await_content__value__script($scope));\n    },\n    ($scope) => $scope._._,\n    \"a2\",\n  ),\n  $value__closure = _._closure($await_content__value),\n  $value = _._let(1, $value__closure);\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-function/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nimport { resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\n_._enable_catch();\nconst $placeholder_content = _._content_resume(\"__tests__/template.marko_3_content\", \"loading...\", /* over(1) */\"b\");\nconst $await_content__value__script = _._script(\"__tests__/template.marko_2_value\", $scope => !$scope._._.value && $value($scope._._, $scope._._.value + 1) - 1);\nconst $await_content__value = /* @__PURE__ */_._closure_get(\"value\", $scope => {\n  _._text($scope[\"#text/0\"], $scope._._.value);\n  $await_content__value__script($scope);\n}, $scope => $scope._._, \"__tests__/template.marko_2_value/pending\");\nconst $await_content__setup = $await_content__value;\nconst $await_content = /* @__PURE__ */_._await_content(\"#text/0\", \" \", /* get, over(1) */\" b\", $await_content__setup);\nconst $try_content__await_promise = /* @__PURE__ */_._await_promise(\"#text/0\");\nconst $try_content__setup = $scope => {\n  $await_content($scope);\n  $try_content__await_promise($scope, resolveAfter(0, 4));\n};\nconst $value__closure = /* @__PURE__ */_._closure($await_content__value);\nconst $value = /* @__PURE__ */_._let(\"value/1\", $value__closure);\nconst $try = /* @__PURE__ */_._try(\"#text/0\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", $try_content__setup);\nexport function $setup($scope) {\n  $value($scope, 0);\n  $try($scope, {\n    placeholder: _.attrTag({\n      content: $placeholder_content($scope)\n    })\n  });\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-function/__snapshots__/html.expected/template.js",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $value__closures = new Set();\n  let value = 0;\n  _._try($scope0_id, \"#text/0\", _._content_resume(\"__tests__/template.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    _._scope_reason();\n    _._await($scope1_id, \"#text/0\", resolveAfter(0, 4), () => {\n      const $scope2_id = _._scope_id();\n      _._script($scope2_id, \"__tests__/template.marko_2_value/pending\");\n      _._html(`${_._escape(value)}${_._el_resume($scope2_id, \"#text/0\")}`);\n      _._script($scope2_id, \"__tests__/template.marko_2_value\");\n      _._scope($scope2_id, {\n        _: _._scope_with_id($scope1_id),\n        \"ClosureSignalIndex:value\": 0\n      }, \"__tests__/template.marko\", \"6:3\");\n      _._resume_branch($scope2_id);\n    });\n    _._scope($scope1_id, {\n      _: _._scope_with_id($scope0_id)\n    }, \"__tests__/template.marko\", \"4:1\");\n  }, $scope0_id), {\n    placeholder: _.attrTag({\n      content: _._content_resume(\"__tests__/template.marko_3_content\", () => {\n        _._scope_reason();\n        const $scope3_id = _._scope_id();\n        _._html(\"loading...\");\n      }, $scope0_id)\n    })\n  });\n  _._scope($scope0_id, {\n    value,\n    \"ClosureScopes:value\": $value__closures\n  }, \"__tests__/template.marko\", 0, {\n    value: \"2:5\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-function/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\nloading...\n```\n\n\n# Render FLUSH\n```html\n1\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-function/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <!--M_[-->\n    <!--M_!^2-->\n    loading...\n    <!--M_!2-->\n    <!--M_]1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n        value: 0,\n        \"ClosureScopes:value\": new Set\n      }, _.b = {\n        _: _.a,\n        \"#BranchAccessor\": \"#text/0\"\n      }], _.b[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_3_content\"\n        ](_.a), _.c)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text1\n```\n\n# Render FLUSH\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <!--M_[-->\n    <!--M_[-->\n    1\n    <!--M_*4 #text/0-->\n    <!--M_]2 #text/0 4-->\n    <!--M_]1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n        value: 0,\n        \"ClosureScopes:value\": new Set\n      }, _.b = {\n        _: _.a,\n        \"#BranchAccessor\": \"#text/0\"\n      }], _.b[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_3_content\"\n        ](_.a), _.c)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.d = [1,\n      {\n        _: _.b,\n        \"ClosureSignalIndex:value\": 0\n      }]));\n      M._.j.b = _ =&gt;\n      {\n        _.push(\n          \"__tests__/template.marko_2_value/pending 4 __tests__/template.marko_2_value 4\"\n          )\n      };\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT t\nINSERT html/body/#comment1\nINSERT html/body/#text0\nINSERT html/body/#comment2\nINSERT html/body/#comment3\nREMOVE t after html/body/script0\nREMOVE #text after #comment\nREMOVE #comment after html/body/#comment0\nREMOVE #comment after html/body/#comment0\nINSERT html/body/#comment1, html/body/#text0, html/body/#comment2, html/body/#comment3\nINSERT html/body/#text1\nINSERT html/body/script1\nUPDATE html/body/#text0 \"0\" => \"1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-function/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render ASYNC\n```html\nloading...\n```\n\n\n# Render End\n```html\n0\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-function/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <!--M_[--><!--M_!^2-->loading...<!--M_!2--><!--M_]1 #text/0 2--><style M_>t{display:none}</style><t M_=2><!--M_#b--></t><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.a={value:0,\"ClosureScopes:value\":new Set},_.b={_:_.a,\"#BranchAccessor\":\"#text/0\"}],_.b[\"#PlaceholderContent\"]=_._[\"__tests__/template.marko_3_content\"](_.a),_.c)];REORDER_RUNTIME(M._);M._.w()</script>\n```\n\n# Write\n```html\n  <t M_=b><!--M_[-->0<!--M_*4 #text/0--><!--M_]2 #text/0 4--></t><script>M._.r.push(_=>(_.d=[1,{_:_.b,\"ClosureSignalIndex:value\":0}]));M._.j.b=_=>{_.push(\"__tests__/template.marko_2_value/pending 4 __tests__/template.marko_2_value 4\")};M._.w()</script>\n```\n\n# Render ASYNC\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <!--M_[-->\n    <!--M_!^2-->\n    loading...\n    <!--M_!2-->\n    <!--M_]1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n        value: 0,\n        \"ClosureScopes:value\": new Set\n      }, _.b = {\n        _: _.a,\n        \"#BranchAccessor\": \"#text/0\"\n      }], _.b[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_3_content\"\n        ](_.a), _.c)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/#text\nINSERT html/body/#comment2\nINSERT html/body/#comment3\nINSERT html/head/style\nINSERT html/head/style/#text\nINSERT t\nINSERT t/#comment\nREMOVE html/head/style after html/body/#comment3\nINSERT html/head/style\nREMOVE t after html/body/#comment3\nINSERT html/body/script\n```\n\n# Render End\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <!--M_[-->\n    <!--M_[-->\n    0\n    <!--M_*4 #text/0-->\n    <!--M_]2 #text/0 4-->\n    <!--M_]1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n        value: 0,\n        \"ClosureScopes:value\": new Set\n      }, _.b = {\n        _: _.a,\n        \"#BranchAccessor\": \"#text/0\"\n      }], _.b[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_3_content\"\n        ](_.a), _.c)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.d = [1,\n      {\n        _: _.b,\n        \"ClosureSignalIndex:value\": 0\n      }]));\n      M._.j.b = _ =&gt;\n      {\n        _.push(\n          \"__tests__/template.marko_2_value/pending 4 __tests__/template.marko_2_value 4\"\n          )\n      };\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT t\nINSERT html/body/#comment1\nINSERT html/body/#text\nINSERT html/body/#comment2\nINSERT html/body/#comment3\nREMOVE t after html/body/script0\nREMOVE #text after #comment\nREMOVE #comment after html/body/#comment0\nREMOVE #comment after html/body/#comment0\nINSERT html/body/#comment1, html/body/#text, html/body/#comment2, html/body/#comment3\nINSERT html/body/script1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-function/template.marko",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\nlet/value=0\n\ntry\n  @placeholder -- loading...\n  await=resolveAfter(0, 4)\n    -- ${value}\n    script -- !value && value++\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-function/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { flush, wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{}, flush, wait],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$if_content__value\": \"a\",\n      \"$$if_content__setup\": \"e\",\n      \"$$if\": \"m\",\n      \"$$value__script\": \"r\",\n      \"$$value\": \"i\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  1\n</button>\n<span>\n  1\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n<span>\n  2\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n<span>\n  3\n</span>\n```\n\n\n# Render ASYNC\n```html\n<button>\n  3\n</button>\n<span>\n  Hello\n</span>\n<span>\n  3\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  4\n</button>\n<span>\n  Hello\n</span>\n<span>\n  4\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  1\n</button>\n<span>\n  1\n</span>\n<!---->\n```\n\n# Mutations\n```\nINSERT button, #text, span, #comment\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n<span>\n  2\n</span>\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text \"1\" => \"2\"\nUPDATE span/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n<span>\n  3\n</span>\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text \"2\" => \"3\"\nUPDATE span/#text \"2\" => \"3\"\n```\n\n# Render ASYNC\n```html\n<button>\n  3\n</button>\n<span>\n  Hello\n</span>\n<span>\n  3\n</span>\n<!---->\n```\n\n# Mutations\n```\nINSERT span0\nREMOVE #text after span0\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  4\n</button>\n<span>\n  Hello\n</span>\n<span>\n  4\n</span>\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text \"3\" => \"4\"\nUPDATE span1/#text \"3\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 213 (min) 153 (brotli)\nconst $if_content__value = _._if_closure(3, 0, ($scope) =>\n    _._text($scope.a, $scope._.e),\n  ),\n  $if_content__setup = $if_content__value,\n  $if = _._if(3, \"<span> </span>\", \"D l\", $if_content__setup),\n  $value__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $value($scope, $scope.e + 1);\n    }),\n  ),\n  $value = _._let(4, ($scope) => {\n    (_._text($scope.b, $scope.e),\n      $if($scope, $scope.e ? 0 : 1),\n      $if_content__value($scope),\n      $value__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button> </button><!><!><!>\";\nexport const $walks = /* get, next(1), get, out(1), replace, over(1), replace, over(2) */\" D l%b%c\";\nimport { resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content__value = /* @__PURE__ */_._if_closure(\"#text/3\", 0, $scope => _._text($scope[\"#text/0\"], $scope._.value));\nconst $if_content__setup = $if_content__value;\nconst $if = /* @__PURE__ */_._if(\"#text/3\", \"<span> </span>\", /* next(1), get, out(1) */\"D l\", $if_content__setup);\nconst $value__script = _._script(\"__tests__/template.marko_0_value\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $value($scope, $scope.value + 1);\n}));\nconst $value = /* @__PURE__ */_._let(\"value/4\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.value);\n  $if($scope, $scope.value ? 0 : 1);\n  $if_content__value($scope);\n  $value__script($scope);\n});\nconst $await_content = /* @__PURE__ */_._await_content(\"#text/2\", \"<span>Hello</span>\", /* over(1) */\"b\");\nconst $await_promise = /* @__PURE__ */_._await_promise(\"#text/2\");\nexport function $setup($scope) {\n  $await_content($scope);\n  $value($scope, 1);\n  $await_promise($scope, resolveAfter(0, 4));\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/html.expected/template.js",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let value = 1;\n  _._html(`<button>${_._escape(value)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._await($scope0_id, \"#text/2\", resolveAfter(0, 4), () => {\n    const $scope2_id = _._scope_id();\n    _._html(\"<span>Hello</span>\");\n  }, 0);\n  _._if(() => {\n    if (value) {\n      const $scope1_id = _._scope_id();\n      _._html(`<span>${_._escape(value)}${_._el_resume($scope1_id, \"#text/0\")}</span>`);\n      _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"6:1\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/3\", 1, /* value */1, /* value */1, 0, 1);\n  _._script($scope0_id, \"__tests__/template.marko_0_value\");\n  _._scope($scope0_id, {\n    value\n  }, \"__tests__/template.marko\", 0, {\n    value: \"2:5\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n\n\n# Render FLUSH\n```html\n<button>\n  1\n</button>\n<span>\n  Hello\n</span>\n<span>\n  1\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n<span>\n  Hello\n</span>\n<span>\n  2\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n        value: 1\n      },\n      {\n        _: _.a\n      }])]\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n        value: 1\n      },\n      {\n        _: _.a\n      }])]\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n        value: 1\n      },\n      {\n        _: _.a\n      }])]\n    </script>\n  </body>\n</html>\n```\n\n\n# Render FLUSH\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n        value: 1\n      },\n      {\n        _: _.a\n      }])]\n    </script>\n    <span>\n      Hello\n    </span>\n    <span>\n      1\n      <!--M_*2 #text/0-->\n    </span>\n    <!--M_|1 #text/3 2-->\n    <script>\n      M._.r.push(\n        \"__tests__/template.marko_0_value 1\"\n        );\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/span0\nINSERT html/body/span0/#text\nINSERT html/body/span1\nINSERT html/body/span1/#text\nINSERT html/body/span1/#comment\nINSERT html/body/#comment1\nINSERT html/body/script1\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      2\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n        value: 1\n      },\n      {\n        _: _.a\n      }])]\n    </script>\n    <span>\n      Hello\n    </span>\n    <span>\n      2\n    </span>\n    <!--M_|1 #text/3 2-->\n    <script>\n      M._.r.push(\n        \"__tests__/template.marko_0_value 1\"\n        );\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"1\" => \"2\"\nINSERT html/body/span1\nREMOVE span after html/body/span1\nUPDATE html/body/span1/#text \" \" => \"2\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render ASYNC\n```html\n<button>\n  1\n</button>\n```\n\n\n# Render End\n```html\n<button>\n  1\n</button>\n<span>\n  Hello\n</span>\n<span>\n  1\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>1<!--M_*1 #text/1--></button><!--M_*1 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={value:1},{_:_.a}])]</script>\n```\n\n# Write\n```html\n  <span>Hello</span><span>1<!--M_*2 #text/0--></span><!--M_|1 #text/3 2--><script>M._.r.push(\"__tests__/template.marko_0_value 1\");M._.w()</script>\n```\n\n# Render ASYNC\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n        value: 1\n      },\n      {\n        _: _.a\n      }])]\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment\nINSERT html/body/script\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n        value: 1\n      },\n      {\n        _: _.a\n      }])]\n    </script>\n    <span>\n      Hello\n    </span>\n    <span>\n      1\n      <!--M_*2 #text/0-->\n    </span>\n    <!--M_|1 #text/3 2-->\n    <script>\n      M._.r.push(\n        \"__tests__/template.marko_0_value 1\"\n        );\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/span0\nINSERT html/body/span0/#text\nINSERT html/body/span1\nINSERT html/body/span1/#text\nINSERT html/body/span1/#comment\nINSERT html/body/#comment1\nINSERT html/body/script1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/template.marko",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\nlet/value=1\nbutton onClick() { value++ } -- ${value}\nawait=resolveAfter(0, 4)\n  span -- Hello\nif=value\n  span -- ${value}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { after, flush } from \"../../utils/resolve\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [\n    {},\n    after(1),\n    click,\n    after(2),\n    click,\n    after(3),\n    flush,\n    after(5),\n    click,\n  ],\n  skip_equivalent: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"a\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n\n\n# Render ASYNC\n```html\nloading...\n```\n\n\n# Render ASYNC\n```html\n<span>\n  1\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<!---->\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, #text, #comment2, #comment3\n```\n\n# Render ASYNC\n```html\n<!---->\nloading...\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE #document-fragment/#comment0 after #text\nREMOVE #document-fragment/#text after #text\nREMOVE #document-fragment/#comment1 after #text\n```\n\n# Render ASYNC\n```html\n<!---->\n<!---->\n<span>\n  1\n</span>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment1, span, #comment2\nREMOVE #text after #comment2\nUPDATE span/#text \" \" => \"1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 59 (min) 55 (brotli)\n(_._enable_catch(), _._content_resume(\"a0\", \"loading...\", \"b\"));\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nimport { resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\n_._enable_catch();\nconst $placeholder_content = _._content_resume(\"__tests__/template.marko_3_content\", \"loading...\", /* over(1) */\"b\");\nconst $await_content__value = /* @__PURE__ */_._closure_get(\"value\", $scope => _._text($scope[\"#text/0\"], $scope._._.value), $scope => $scope._._, \"__tests__/template.marko_2_value/pending\");\nconst $await_content__setup = $await_content__value;\nconst $await_content = /* @__PURE__ */_._await_content(\"#text/0\", \"<span> </span>\", /* next(1), get, out(1) */\"D l\", $await_content__setup);\nconst $try_content__await_promise = /* @__PURE__ */_._await_promise(\"#text/0\");\nconst $try_content__setup = $scope => {\n  $await_content($scope);\n  $try_content__await_promise($scope, resolveAfter(0, 1));\n};\nconst $value = /* @__PURE__ */_._let(\"value/1\");\nconst $try = /* @__PURE__ */_._try(\"#text/0\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", $try_content__setup);\nexport function $setup($scope) {\n  $value($scope, 1);\n  $try($scope, {\n    placeholder: _.attrTag({\n      content: $placeholder_content($scope)\n    })\n  });\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/html.expected/template.js",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let value = 1;\n  _._try($scope0_id, \"#text/0\", _._content_resume(\"__tests__/template.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    _._scope_reason();\n    _._await($scope1_id, \"#text/0\", resolveAfter(0, 1), () => {\n      const $scope2_id = _._scope_id();\n      _._html(`<span>${_._escape(value)}</span>`);\n      _._resume_branch($scope2_id);\n    }, 0);\n  }, $scope0_id), {\n    placeholder: _.attrTag({\n      content: _._content_resume(\"__tests__/template.marko_3_content\", () => {\n        _._scope_reason();\n        const $scope3_id = _._scope_id();\n        _._html(\"loading...\");\n      }, $scope0_id)\n    })\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\nloading...\n```\n\n\n# Render FLUSH\n```html\n<span>\n  1\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <!--M_[-->\n    <!--M_!^2-->\n    loading...\n    <!--M_!2-->\n    <!--M_]1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#PlaceholderContent\": _.c = {}\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_3_content\"\n        ](_.c), _.b)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text1\n```\n\n# Render FLUSH\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <!--M_[-->\n    <span>\n      1\n    </span>\n    <!--M_]1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#PlaceholderContent\": _.c = {}\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_3_content\"\n        ](_.c), _.b)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT t\nINSERT html/body/span\nINSERT html/body/span/#text\nREMOVE t after html/body/script0\nREMOVE #text after #comment\nREMOVE #comment after html/body/#comment0\nREMOVE #comment after html/body/#comment0\nINSERT html/body/span\nINSERT html/body/script1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render ASYNC\n```html\nloading...\n```\n\n\n# Render End\n```html\n<span>\n  1\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <!--M_[--><!--M_!^2-->loading...<!--M_!2--><!--M_]1 #text/0 2--><style M_>t{display:none}</style><t M_=2><!--M_#b--></t><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,1,_.a={\"#BranchAccessor\":\"#text/0\",\"#PlaceholderContent\":_.c={}}],_.a[\"#PlaceholderContent\"]=_._[\"__tests__/template.marko_3_content\"](_.c),_.b)];REORDER_RUNTIME(M._);M._.w()</script>\n```\n\n# Write\n```html\n  <t M_=b><span>1</span></t><script>M._.w()</script>\n```\n\n# Render ASYNC\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <!--M_[-->\n    <!--M_!^2-->\n    loading...\n    <!--M_!2-->\n    <!--M_]1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#PlaceholderContent\": _.c = {}\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_3_content\"\n        ](_.c), _.b)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/#text\nINSERT html/body/#comment2\nINSERT html/body/#comment3\nINSERT html/head/style\nINSERT html/head/style/#text\nINSERT t\nINSERT t/#comment\nREMOVE html/head/style after html/body/#comment3\nINSERT html/head/style\nREMOVE t after html/body/#comment3\nINSERT html/body/script\n```\n\n# Render End\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <!--M_[-->\n    <span>\n      1\n    </span>\n    <!--M_]1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#PlaceholderContent\": _.c = {}\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_3_content\"\n        ](_.c), _.b)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT t\nINSERT html/body/span\nINSERT html/body/span/#text\nREMOVE t after html/body/script0\nREMOVE #text after #comment\nREMOVE #comment after html/body/#comment0\nREMOVE #comment after html/body/#comment0\nINSERT html/body/span\nINSERT html/body/script1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/template.marko",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\nlet/value=1\ntry\n  @placeholder -- loading...\n  await=resolveAfter(0, 1)\n    span -- ${value}"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { flush, wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{}, flush, wait],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"a\",\n      \"$$if_content__value\": \"o\",\n      \"$$if_content__setup\": \"_\",\n      \"$$await_content__if\": \"n\",\n      \"$$await_content__value__script\": \"e\",\n      \"$$await_content__value\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n\n\n# Render ASYNC\n```html\nloading...\n```\n\n\n# Render ASYNC\n```html\n<button>\n  1\n</button>\n<span>\n  1\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n<span>\n  2\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n<span>\n  3\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<!---->\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, #text, #comment2, #comment3\n```\n\n# Render ASYNC\n```html\n<!---->\nloading...\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE #document-fragment/#comment0 after #text\nREMOVE #document-fragment/#text after #text\nREMOVE #document-fragment/#comment1 after #text\n```\n\n# Render ASYNC\n```html\n<!---->\n<!---->\n<button>\n  1\n</button>\n<span>\n  1\n</span>\n<!---->\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment1, button, #text, #comment2, #comment3\nREMOVE #text after #comment3\nUPDATE button/#text \" \" => \"1\"\nINSERT span\nREMOVE #text after span\nUPDATE span/#text \" \" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<!---->\n<button>\n  2\n</button>\n<span>\n  2\n</span>\n<!---->\n<!---->\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text \"1\" => \"2\"\nUPDATE span/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<!---->\n<button>\n  3\n</button>\n<span>\n  3\n</span>\n<!---->\n<!---->\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text \"2\" => \"3\"\nUPDATE span/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 274 (min) 180 (brotli)\n_._enable_catch();\nconst $if_content__value = _._if_closure(2, 0, ($scope) =>\n    _._text($scope.a, $scope._.d),\n  ),\n  $if_content__setup = $if_content__value,\n  $await_content__if = _._if(2, \"<span> </span>\", \"D l\", $if_content__setup),\n  $await_content__value__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $await_content__value($scope, $scope.d + 1);\n    }),\n  ),\n  $await_content__value = _._let(3, ($scope) => {\n    (_._text($scope.b, $scope.d),\n      $await_content__if($scope, $scope.d > 0 ? 0 : 1),\n      $if_content__value($scope),\n      $await_content__value__script($scope));\n  });\n(_._content_resume(\"a1\", \"loading...\", \"b\"), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nimport { resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\n_._enable_catch();\nconst $if_content__value = /* @__PURE__ */_._if_closure(\"#text/2\", 0, $scope => _._text($scope[\"#text/0\"], $scope._.value));\nconst $if_content__setup = $if_content__value;\nconst $await_content__if = /* @__PURE__ */_._if(\"#text/2\", \"<span> </span>\", /* next(1), get, out(1) */\"D l\", $if_content__setup);\nconst $await_content__value__script = _._script(\"__tests__/template.marko_3_value\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $await_content__value($scope, $scope.value + 1);\n}));\nconst $await_content__value = /* @__PURE__ */_._let(\"value/3\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.value);\n  $await_content__if($scope, $scope.value > 0 ? 0 : 1);\n  $if_content__value($scope);\n  $await_content__value__script($scope);\n});\nconst $await_content__setup = $scope => $await_content__value($scope, 1);\nconst $placeholder_content = _._content_resume(\"__tests__/template.marko_2_content\", \"loading...\", /* over(1) */\"b\");\nconst $await_content = /* @__PURE__ */_._await_content(\"#text/0\", \"<button> </button><!><!>\", /* get, next(1), get, out(1), replace, over(2) */\" D l%c\", $await_content__setup);\nconst $try_content__await_promise = /* @__PURE__ */_._await_promise(\"#text/0\");\nconst $try_content__setup = $scope => {\n  $await_content($scope);\n  $try_content__await_promise($scope, resolveAfter(0, 1));\n};\nconst $try = /* @__PURE__ */_._try(\"#text/0\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", $try_content__setup);\nexport function $setup($scope) {\n  $try($scope, {\n    placeholder: _.attrTag({\n      content: $placeholder_content($scope)\n    })\n  });\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/html.expected/template.js",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._try($scope0_id, \"#text/0\", _._content_resume(\"__tests__/template.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    _._scope_reason();\n    _._await($scope1_id, \"#text/0\", resolveAfter(0, 1), () => {\n      const $scope3_id = _._scope_id();\n      let value = 1;\n      _._html(`<button>${_._escape(value)}${_._el_resume($scope3_id, \"#text/1\")}</button>${_._el_resume($scope3_id, \"#button/0\")}`);\n      _._if(() => {\n        if (value > 0) {\n          const $scope4_id = _._scope_id();\n          _._html(`<span>${_._escape(value)}${_._el_resume($scope4_id, \"#text/0\")}</span>`);\n          _._scope($scope4_id, {\n            _: _._scope_with_id($scope3_id)\n          }, \"__tests__/template.marko\", \"7:5\");\n          return 0;\n        }\n      }, $scope3_id, \"#text/2\", 1, /* value */1, /* value */1, 0, 1);\n      _._script($scope3_id, \"__tests__/template.marko_3_value\");\n      _._scope($scope3_id, {\n        value\n      }, \"__tests__/template.marko\", \"4:3\", {\n        value: \"5:9\"\n      });\n      _._resume_branch($scope3_id);\n    });\n  }, $scope0_id), {\n    placeholder: _.attrTag({\n      content: _._content_resume(\"__tests__/template.marko_2_content\", () => {\n        _._scope_reason();\n        const $scope2_id = _._scope_id();\n        _._html(\"loading...\");\n      }, $scope0_id)\n    })\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\nloading...\n```\n\n\n# Render FLUSH\n```html\n<button>\n  1\n</button>\n<span>\n  1\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n<span>\n  2\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n<span>\n  3\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <!--M_[-->\n    <!--M_!^2-->\n    loading...\n    <!--M_!2-->\n    <!--M_]1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#PlaceholderContent\": _.c = {}\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.c), _.b)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text1\n```\n\n# Render FLUSH\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <!--M_[-->\n    <!--M_[-->\n    <button>\n      1\n      <!--M_*4 #text/1-->\n    </button>\n    <!--M_*4 #button/0-->\n    <span>\n      1\n      <!--M_*5 #text/0-->\n    </span>\n    <!--M_|4 #text/2 5-->\n    <!--M_]2 #text/0 4-->\n    <!--M_]1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#PlaceholderContent\": _.c = {}\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.c), _.b)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.e = [1, _.d = {\n        value: 1\n      },\n      {\n        _: _.d\n      }]));\n      M._.j.b = _ =&gt;\n      {\n        _.push(\n          \"__tests__/template.marko_3_value 4\"\n          )\n      };\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT t\nINSERT html/body/#comment1\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment2\nINSERT html/body/span\nINSERT html/body/span/#text\nINSERT html/body/span/#comment\nINSERT html/body/#comment3\nINSERT html/body/#comment4\nREMOVE t after html/body/script0\nREMOVE #text after #comment\nREMOVE #comment after html/body/#comment0\nREMOVE #comment after html/body/#comment0\nINSERT html/body/#comment1, html/body/button, html/body/#comment2, html/body/span, html/body/#comment3, html/body/#comment4\nINSERT html/body/#text0\nINSERT html/body/script1\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <!--M_[-->\n    <!--M_[-->\n    <button>\n      2\n      <!--M_*4 #text/1-->\n    </button>\n    <!--M_*4 #button/0-->\n    <span>\n      2\n    </span>\n    <!--M_|4 #text/2 5-->\n    <!--M_]2 #text/0 4-->\n    <!--M_]1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#PlaceholderContent\": _.c = {}\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.c), _.b)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.e = [1, _.d = {\n        value: 1\n      },\n      {\n        _: _.d\n      }]));\n      M._.j.b = _ =&gt;\n      {\n        _.push(\n          \"__tests__/template.marko_3_value 4\"\n          )\n      };\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"1\" => \"2\"\nINSERT html/body/span\nREMOVE span after html/body/span\nUPDATE html/body/span/#text \" \" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <!--M_[-->\n    <!--M_[-->\n    <button>\n      3\n      <!--M_*4 #text/1-->\n    </button>\n    <!--M_*4 #button/0-->\n    <span>\n      3\n    </span>\n    <!--M_|4 #text/2 5-->\n    <!--M_]2 #text/0 4-->\n    <!--M_]1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#PlaceholderContent\": _.c = {}\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.c), _.b)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.e = [1, _.d = {\n        value: 1\n      },\n      {\n        _: _.d\n      }]));\n      M._.j.b = _ =&gt;\n      {\n        _.push(\n          \"__tests__/template.marko_3_value 4\"\n          )\n      };\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"2\" => \"3\"\nUPDATE html/body/span/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render ASYNC\n```html\nloading...\n```\n\n\n# Render End\n```html\n<button>\n  1\n</button>\n<span>\n  1\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <!--M_[--><!--M_!^2-->loading...<!--M_!2--><!--M_]1 #text/0 2--><style M_>t{display:none}</style><t M_=2><!--M_#b--></t><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,1,_.a={\"#BranchAccessor\":\"#text/0\",\"#PlaceholderContent\":_.c={}}],_.a[\"#PlaceholderContent\"]=_._[\"__tests__/template.marko_2_content\"](_.c),_.b)];REORDER_RUNTIME(M._);M._.w()</script>\n```\n\n# Write\n```html\n  <t M_=b><!--M_[--><button>1<!--M_*4 #text/1--></button><!--M_*4 #button/0--><span>1<!--M_*5 #text/0--></span><!--M_|4 #text/2 5--><!--M_]2 #text/0 4--></t><script>M._.r.push(_=>(_.e=[1,_.d={value:1},{_:_.d}]));M._.j.b=_=>{_.push(\"__tests__/template.marko_3_value 4\")};M._.w()</script>\n```\n\n# Render ASYNC\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <!--M_[-->\n    <!--M_!^2-->\n    loading...\n    <!--M_!2-->\n    <!--M_]1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#PlaceholderContent\": _.c = {}\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.c), _.b)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/#text\nINSERT html/body/#comment2\nINSERT html/body/#comment3\nINSERT html/head/style\nINSERT html/head/style/#text\nINSERT t\nINSERT t/#comment\nREMOVE html/head/style after html/body/#comment3\nINSERT html/head/style\nREMOVE t after html/body/#comment3\nINSERT html/body/script\n```\n\n# Render End\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <!--M_[-->\n    <!--M_[-->\n    <button>\n      1\n      <!--M_*4 #text/1-->\n    </button>\n    <!--M_*4 #button/0-->\n    <span>\n      1\n      <!--M_*5 #text/0-->\n    </span>\n    <!--M_|4 #text/2 5-->\n    <!--M_]2 #text/0 4-->\n    <!--M_]1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#PlaceholderContent\": _.c = {}\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.c), _.b)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.e = [1, _.d = {\n        value: 1\n      },\n      {\n        _: _.d\n      }]));\n      M._.j.b = _ =&gt;\n      {\n        _.push(\n          \"__tests__/template.marko_3_value 4\"\n          )\n      };\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT t\nINSERT html/body/#comment1\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment2\nINSERT html/body/span\nINSERT html/body/span/#text\nINSERT html/body/span/#comment\nINSERT html/body/#comment3\nINSERT html/body/#comment4\nREMOVE t after html/body/script0\nREMOVE #text after #comment\nREMOVE #comment after html/body/#comment0\nREMOVE #comment after html/body/#comment0\nINSERT html/body/#comment1, html/body/button, html/body/#comment2, html/body/span, html/body/#comment3, html/body/#comment4\nINSERT html/body/script1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-within/template.marko",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\ntry\n  @placeholder -- loading...\n  await=resolveAfter(0, 1)\n    let/value=1\n    button onClick() { value++ } -- ${value}\n    if=(value > 0)\n      span -- ${value}"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-closure-within/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { flush, wait } from \"../../utils/resolve\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, flush, wait, click, wait, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"e\",\n      \"$resolveAfter\": \"o\",\n      \"$$await_content__setup\": \"r\",\n      \"$$placeholder_content\": \"a\",\n      \"$$await_content\": \"i\",\n      \"$$try_content__await_promise\": \"m\",\n      \"$$try_content__setup\": \"n\",\n      \"$$if_content__try\": \"c\",\n      \"$$if_content__setup\": \"_\",\n      \"$$if\": \"s\",\n      \"$$show\": \"l\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"outside\"\n>\n  Pass\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div\n  id=\"outside\"\n>\n  Pass\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"outside\"\n>\n  Pass\n</div>\n<!---->\n<!---->\n<!---->\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT div, #comment0, #comment1, #text, #comment2, #comment3, #comment4\n```\n\n# Render ASYNC\n```html\n<div\n  id=\"outside\"\n>\n  Pass\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE #comment after #text\nREMOVE #comment after #text\nREMOVE #text after #text\nREMOVE #comment after #text\nREMOVE #comment after #text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 387 (min) 237 (brotli)\n_._enable_catch();\nconst $await_content__setup = _._script(\n    \"a0\",\n    ($scope) => (document.querySelector(\"#outside\").textContent = \"Fail\"),\n  ),\n  $placeholder_content = _._content_resume(\"a1\", \"loading...\", \"b\"),\n  $await_content = _._await_content(0, 0, 0, $await_content__setup),\n  $try_content__await_promise = _._await_promise(0),\n  $try_content__setup = ($scope) => {\n    ($await_content($scope),\n      $try_content__await_promise($scope, resolveAfter(0, 1)));\n  },\n  $if_content__try = _._try(0, \"<!><!><!>\", \"b%c\", $try_content__setup),\n  $if_content__setup = ($scope) =>\n    $if_content__try($scope, {\n      placeholder: _.attrTag({ content: $placeholder_content($scope) }),\n    }),\n  $if = _._if(0, \"<!><!><!>\", \"b%c\", $if_content__setup),\n  $show = _._let(1, ($scope) => $if($scope, $scope.b ? 0 : 1));\n(_._script(\"a2\", ($scope) => $show($scope, 0)), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div id=outside>Pass</div><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nimport { resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\n_._enable_catch();\nconst $await_content__setup__script = _._script(\"__tests__/template.marko_4\", $scope => (document.querySelector('#outside').textContent = \"Fail\"));\nconst $await_content__setup = $await_content__setup__script;\nconst $placeholder_content = _._content_resume(\"__tests__/template.marko_3_content\", \"loading...\", /* over(1) */\"b\");\nconst $await_content = /* @__PURE__ */_._await_content(\"#text/0\", 0, 0, $await_content__setup);\nconst $try_content__await_promise = /* @__PURE__ */_._await_promise(\"#text/0\");\nconst $try_content__setup = $scope => {\n  $await_content($scope);\n  $try_content__await_promise($scope, resolveAfter(0, 1));\n};\nconst $if_content__try = /* @__PURE__ */_._try(\"#text/0\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", $try_content__setup);\nconst $if_content__setup = $scope => $if_content__try($scope, {\n  placeholder: _.attrTag({\n    content: $placeholder_content($scope)\n  })\n});\nconst $if = /* @__PURE__ */_._if(\"#text/0\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", $if_content__setup);\nconst $show = /* @__PURE__ */_._let(\"show/1\", $scope => $if($scope, $scope.show ? 0 : 1));\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => $show($scope, 0));\nexport function $setup($scope) {\n  $show($scope, 1);\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/html.expected/template.js",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let show = 1;\n  _._html(\"<div id=outside>Pass</div>\");\n  _._if(() => {\n    if (show) {\n      const $scope1_id = _._scope_id();\n      _._try($scope1_id, \"#text/0\", _._content_resume(\"__tests__/template.marko_2_content\", () => {\n        const $scope2_id = _._scope_id();\n        _._scope_reason();\n        _._await($scope2_id, \"#text/0\", resolveAfter(0, 1), () => {\n          const $scope4_id = _._scope_id();\n          _._script($scope4_id, \"__tests__/template.marko_4\");\n        }, 0);\n      }, $scope1_id), {\n        placeholder: _.attrTag({\n          content: _._content_resume(\"__tests__/template.marko_3_content\", () => {\n            _._scope_reason();\n            const $scope3_id = _._scope_id();\n            _._html(\"loading...\");\n          }, $scope1_id)\n        })\n      });\n      _._scope($scope1_id, {}, \"__tests__/template.marko\", \"5:1\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/0\");\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"outside\"\n>\n  Pass\n</div>\nloading...\n```\n\n\n# Render ASYNC\n```html\n<div\n  id=\"outside\"\n>\n  Pass\n</div>\n```\n\n\n# Render FLUSH\n```html\n<div\n  id=\"outside\"\n>\n  Pass\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <div\n      id=\"outside\"\n    >\n      Pass\n    </div>\n    <!--M_[-->\n    <!--M_[-->\n    <!--M_!^3-->\n    loading...\n    <!--M_!3-->\n    <!--M_]2 #text/0 3-->\n    <!--M_]1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.c = {}, _.a = {\n          \"#BranchAccessor\": \"#text/0\"\n        }], _.a[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_3_content\"\n          ](_.c), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text1\nINSERT html/body/#text2\n```\n\n# Render ASYNC\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <div\n      id=\"outside\"\n    >\n      Pass\n    </div>\n    <!--M_]1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.c = {}, _.a = {\n          \"#BranchAccessor\": \"#text/0\"\n        }], _.a[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_3_content\"\n          ](_.c), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/#comment after #text\nINSERT html/body/#comment\nREMOVE #comment after html/body/#comment\nREMOVE #comment after html/body/#comment\nREMOVE #comment after html/body/#comment\nREMOVE #text after html/body/#comment\nREMOVE #comment after html/body/#comment\nREMOVE #text after html/body/#comment\nREMOVE #comment after html/body/#comment\nREMOVE #text after html/body/#comment\n```\n\n# Render FLUSH\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <div\n      id=\"outside\"\n    >\n      Pass\n    </div>\n    <!--M_]1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.c = {}, _.a = {\n          \"#BranchAccessor\": \"#text/0\"\n        }], _.a[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_3_content\"\n          ](_.c), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.d = [1,\n      {\n        \"#ClosestBranchId\": 2\n      }]));\n      M._.j.b = _ =&gt;\n      {\n        _.push(\n          \"__tests__/template.marko_4 5\"\n          )\n      };\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT t\nREMOVE t after html/body/script0\nINSERT html/body/script1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render ASYNC\n```html\n<div\n  id=\"outside\"\n>\n  Pass\n</div>\nloading...\n```\n\n\n# Render End\n```html\n<div\n  id=\"outside\"\n>\n  Pass\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div id=outside>Pass</div><!--M_[--><!--M_[--><!--M_!^3-->loading...<!--M_!3--><!--M_]2 #text/0 3--><!--M_]1 #text/0 2--><style M_>t{display:none}</style><t M_=3><!--M_#b--></t><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,1,_.c={},_.a={\"#BranchAccessor\":\"#text/0\"}],_.a[\"#PlaceholderContent\"]=_._[\"__tests__/template.marko_3_content\"](_.c),_.b),\"__tests__/template.marko_0 1\"];REORDER_RUNTIME(M._);M._.w()</script>\n```\n\n# Write\n```html\n  <t M_=b></t><script>M._.r.push(_=>(_.d=[1,{\"#ClosestBranchId\":2}]));M._.j.b=_=>{_.push(\"__tests__/template.marko_4 5\")};M._.w()</script>\n```\n\n# Render ASYNC\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <div\n      id=\"outside\"\n    >\n      Pass\n    </div>\n    <!--M_[-->\n    <!--M_[-->\n    <!--M_!^3-->\n    loading...\n    <!--M_!3-->\n    <!--M_]2 #text/0 3-->\n    <!--M_]1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.c = {}, _.a = {\n          \"#BranchAccessor\": \"#text/0\"\n        }], _.a[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_3_content\"\n          ](_.c), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/#comment2\nINSERT html/body/#text\nINSERT html/body/#comment3\nINSERT html/body/#comment4\nINSERT html/body/#comment5\nINSERT html/head/style\nINSERT html/head/style/#text\nINSERT t\nINSERT t/#comment\nREMOVE html/head/style after html/body/#comment5\nINSERT html/head/style\nREMOVE t after html/body/#comment5\nINSERT html/body/script\n```\n\n# Render End\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <div\n      id=\"outside\"\n    >\n      Pass\n    </div>\n    <!--M_[-->\n    <!--M_[-->\n    <!--M_]2 #text/0 3-->\n    <!--M_]1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.c = {}, _.a = {\n          \"#BranchAccessor\": \"#text/0\"\n        }], _.a[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_3_content\"\n          ](_.c), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.d = [1,\n      {\n        \"#ClosestBranchId\": 2\n      }]));\n      M._.j.b = _ =&gt;\n      {\n        _.push(\n          \"__tests__/template.marko_4 5\"\n          )\n      };\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT t\nREMOVE t after html/body/script0\nREMOVE #text after #comment\nREMOVE #comment after html/body/#comment1\nREMOVE #comment after html/body/#comment1\nINSERT html/body/script1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/template.marko",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\nlet/show=1\nscript -- show = 0\ndiv#outside -- Pass\nif=show\n  try\n    @placeholder -- loading...\n    await=resolveAfter(0, 1)\n      script -- document.querySelector('#outside')!.textContent = \"Fail\""
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { flush, wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{}, wait, flush],\n  skip_equivalent: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"e\",\n      \"$$await_content3__count\": \"_\",\n      \"$$await_content2__count\": \"o\",\n      \"$$await_content__count\": \"r\",\n      \"$$count__closure\": \"m\",\n      \"$$count__script\": \"c\",\n      \"$$count\": \"s\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <button>\n    Inc\n  </button>\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div>\n  Got: a 0\n  <button>\n    Inc\n  </button>\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div>\n  Got: a 0Got: c 0\n  <button>\n    Inc\n  </button>\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div>\n  Got: a 0Got: b 0Got: c 0\n  <button>\n    Inc\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Got: a 1Got: b 1Got: c 1\n  <button>\n    Inc\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Got: a 2Got: b 2Got: c 2\n  <button>\n    Inc\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Got: a 3Got: b 3Got: c 3\n  <button>\n    Inc\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  <button>\n    Inc\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render ASYNC\n```html\n<div>\n  Got: a 0\n  <button>\n    Inc\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT div/#text0, div/#text1, div/#text2, div/#text3\nREMOVE #text after div/#text3\nUPDATE div/#text1 \"\" => \"a\"\nUPDATE div/#text3 \"\" => \"0\"\n```\n\n# Render ASYNC\n```html\n<div>\n  Got: a 0Got: c 0\n  <button>\n    Inc\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT div/#text5, div/#text6, div/#text7, div/#text8\nREMOVE #text after div/#text8\nUPDATE div/#text6 \"\" => \"c\"\nUPDATE div/#text8 \"\" => \"0\"\n```\n\n# Render ASYNC\n```html\n<div>\n  Got: a 0Got: b 0Got: c 0\n  <button>\n    Inc\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT div/#text4, div/#text5, div/#text6, div/#text7\nREMOVE #text after div/#text7\nUPDATE div/#text5 \"\" => \"b\"\nUPDATE div/#text7 \"\" => \"0\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Got: a 1Got: b 1Got: c 1\n  <button>\n    Inc\n  </button>\n</div>\n```\n\n# Mutations\n```\nUPDATE div/#text3 \"0\" => \"1\"\nUPDATE div/#text7 \"0\" => \"1\"\nUPDATE div/#text11 \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Got: a 2Got: b 2Got: c 2\n  <button>\n    Inc\n  </button>\n</div>\n```\n\n# Mutations\n```\nUPDATE div/#text3 \"1\" => \"2\"\nUPDATE div/#text7 \"1\" => \"2\"\nUPDATE div/#text11 \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Got: a 3Got: b 3Got: c 3\n  <button>\n    Inc\n  </button>\n</div>\n```\n\n# Mutations\n```\nUPDATE div/#text3 \"2\" => \"3\"\nUPDATE div/#text7 \"2\" => \"3\"\nUPDATE div/#text11 \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 246 (min) 127 (brotli)\nconst $await_content3__count = _._closure_get(4, ($scope) =>\n    _._text($scope.b, $scope._.e),\n  ),\n  $await_content2__count = _._closure_get(4, ($scope) =>\n    _._text($scope.b, $scope._.e),\n  ),\n  $await_content__count = _._closure_get(4, ($scope) =>\n    _._text($scope.b, $scope._.e),\n  ),\n  $count__closure = _._closure(\n    $await_content__count,\n    $await_content2__count,\n    $await_content3__count,\n  ),\n  $count__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.d, \"click\", function () {\n      $count($scope, $scope.e + 1);\n    }),\n  ),\n  $count = _._let(4, ($scope) => {\n    ($count__closure($scope), $count__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div><!><!><!><button>Inc</button></div>\";\nexport const $walks = /* next(1), replace, over(1), replace, over(1), replace, over(1), get, out(1) */\"D%b%b%b l\";\nimport { resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $await_content3__count = /* @__PURE__ */_._closure_get(\"count\", $scope => _._text($scope[\"#text/1\"], $scope._.count));\nconst $await_content3__setup = $await_content3__count;\nconst $await_content3__value = ($scope, value) => _._text($scope[\"#text/0\"], value);\nconst $await_content3__$params = ($scope, $params4) => $await_content3__value($scope, $params4[0]);\nconst $await_content2__count = /* @__PURE__ */_._closure_get(\"count\", $scope => _._text($scope[\"#text/1\"], $scope._.count));\nconst $await_content2__setup = $await_content2__count;\nconst $await_content2__value = ($scope, value) => _._text($scope[\"#text/0\"], value);\nconst $await_content2__$params = ($scope, $params3) => $await_content2__value($scope, $params3[0]);\nconst $await_content__count = /* @__PURE__ */_._closure_get(\"count\", $scope => _._text($scope[\"#text/1\"], $scope._.count));\nconst $await_content__setup = $await_content__count;\nconst $await_content__value = ($scope, value) => _._text($scope[\"#text/0\"], value);\nconst $await_content__$params = ($scope, $params2) => $await_content__value($scope, $params2[0]);\nconst $count__closure = /* @__PURE__ */_._closure($await_content__count, $await_content2__count, $await_content3__count);\nconst $count__script = _._script(\"__tests__/template.marko_0_count\", $scope => _._on($scope[\"#button/3\"], \"click\", function () {\n  $count($scope, $scope.count + 1);\n}));\nconst $count = /* @__PURE__ */_._let(\"count/4\", $scope => {\n  $count__closure($scope);\n  $count__script($scope);\n});\nconst $await_content = /* @__PURE__ */_._await_content(\"#text/0\", \"Got: <!> <!>\", /* over(1), replace, over(2), replace, over(1) */\"b%c%b\", $await_content__setup);\nconst $await_promise = /* @__PURE__ */_._await_promise(\"#text/0\", $await_content__$params);\nconst $await_content2 = /* @__PURE__ */_._await_content(\"#text/1\", \"Got: <!> <!>\", /* over(1), replace, over(2), replace, over(1) */\"b%c%b\", $await_content2__setup);\nconst $await_promise2 = /* @__PURE__ */_._await_promise(\"#text/1\", $await_content2__$params);\nconst $await_content3 = /* @__PURE__ */_._await_content(\"#text/2\", \"Got: <!> <!>\", /* over(1), replace, over(2), replace, over(1) */\"b%c%b\", $await_content3__setup);\nconst $await_promise3 = /* @__PURE__ */_._await_promise(\"#text/2\", $await_content3__$params);\nexport function $setup($scope) {\n  $await_content($scope);\n  $await_content2($scope);\n  $await_content3($scope);\n  $count($scope, 0);\n  $await_promise($scope, Promise.resolve(\"a\"));\n  $await_promise2($scope, resolveAfter(\"b\", 2));\n  $await_promise3($scope, resolveAfter(\"c\", 1));\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/html.expected/template.js",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $count__closures = new Set();\n  let count = 0;\n  _._html(\"<div>\");\n  _._await($scope0_id, \"#text/0\", Promise.resolve(\"a\"), value => {\n    const $scope1_id = _._scope_id();\n    _._html(`Got: ${_._escape(value)} <!>${_._escape(count)}${_._el_resume($scope1_id, \"#text/1\")}`);\n    _._subscribe($count__closures, _._scope($scope1_id, {\n      _: _._scope_with_id($scope0_id),\n      \"ClosureSignalIndex:count\": 0\n    }, \"__tests__/template.marko\", \"5:4\"));\n    _._resume_branch($scope1_id);\n  });\n  _._await($scope0_id, \"#text/1\", resolveAfter(\"b\", 2), value => {\n    const $scope2_id = _._scope_id();\n    _._html(`Got: ${_._escape(value)} <!>${_._escape(count)}${_._el_resume($scope2_id, \"#text/1\")}`);\n    _._subscribe($count__closures, _._scope($scope2_id, {\n      _: _._scope_with_id($scope0_id),\n      \"ClosureSignalIndex:count\": 1\n    }, \"__tests__/template.marko\", \"9:4\"));\n    _._resume_branch($scope2_id);\n  });\n  _._await($scope0_id, \"#text/2\", resolveAfter(\"c\", 1), value => {\n    const $scope3_id = _._scope_id();\n    _._html(`Got: ${_._escape(value)} <!>${_._escape(count)}${_._el_resume($scope3_id, \"#text/1\")}`);\n    _._subscribe($count__closures, _._scope($scope3_id, {\n      _: _._scope_with_id($scope0_id),\n      \"ClosureSignalIndex:count\": 2\n    }, \"__tests__/template.marko\", \"13:4\"));\n    _._resume_branch($scope3_id);\n  });\n  _._html(`<button>Inc</button>${_._el_resume($scope0_id, \"#button/3\")}</div>`);\n  _._script($scope0_id, \"__tests__/template.marko_0_count\");\n  _._scope($scope0_id, {\n    count,\n    \"ClosureScopes:count\": $count__closures\n  }, \"__tests__/template.marko\", 0, {\n    count: \"3:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  Got: a 0\n</div>\n```\n\n\n# Render FLUSH\n```html\n<div>\n  Got: a 0\n</div>\n```\n\n\n# Render FLUSH\n```html\n<div>\n  Got: a 0Got: b 0Got: c 0\n  <button>\n    Inc\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Got: a 1Got: b 1Got: c 1\n  <button>\n    Inc\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Got: a 2Got: b 2Got: c 2\n  <button>\n    Inc\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Got: a 3Got: b 3Got: c 3\n  <button>\n    Inc\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--M_[-->\n      Got: a \n      <!---->\n      0\n      <!--M_*2 #text/1-->\n      <!--M_]1 #text/0 2-->\n      <script>\n        WALKER_RUNTIME(\"M\")(\"_\");\n        M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0,\n          \"ClosureScopes:count\": new Set\n        }]), _ =&gt; (_.c = [_.e = {\n          _: _.b = _.a[1],\n          \"ClosureSignalIndex:count\": 0\n        }], (_.d = _.b[\"ClosureScopes:count\"]).add(_.e), _.c)];\n        M._.w()\n      </script>\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text2\n```\n\n# Render FLUSH\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--M_[-->\n      Got: a \n      <!---->\n      0\n      <!--M_*2 #text/1-->\n      <!--M_]1 #text/0 2-->\n      <script>\n        WALKER_RUNTIME(\"M\")(\"_\");\n        M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0,\n          \"ClosureScopes:count\": new Set\n        }]), _ =&gt; (_.c = [_.e = {\n          _: _.b = _.a[1],\n          \"ClosureSignalIndex:count\": 0\n        }], (_.d = _.b[\"ClosureScopes:count\"]).add(_.e), _.c)];\n        M._.w()\n      </script>\n      <script>\n        M._.r.push(_ =&gt; (_.f = [_.g = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 2\n        }], _.d.add(_.g), _.f));\n        M._.w()\n      </script>\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/script1\n```\n\n# Render FLUSH\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--M_[-->\n      Got: a \n      <!---->\n      0\n      <!--M_*2 #text/1-->\n      <!--M_]1 #text/0 2-->\n      <script>\n        WALKER_RUNTIME(\"M\")(\"_\");\n        M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0,\n          \"ClosureScopes:count\": new Set\n        }]), _ =&gt; (_.c = [_.e = {\n          _: _.b = _.a[1],\n          \"ClosureSignalIndex:count\": 0\n        }], (_.d = _.b[\"ClosureScopes:count\"]).add(_.e), _.c)];\n        M._.w()\n      </script>\n      <script>\n        M._.r.push(_ =&gt; (_.f = [_.g = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 2\n        }], _.d.add(_.g), _.f));\n        M._.w()\n      </script>\n      <!--M_[-->\n      Got: b \n      <!---->\n      0\n      <!--M_*4 #text/1-->\n      <!--M_]1 #text/1 4-->\n      <!--M_[-->\n      Got: c \n      <!---->\n      0\n      <!--M_*3 #text/1-->\n      <!--M_]1 #text/2 3-->\n      <button>\n        Inc\n      </button>\n      <!--M_*1 #button/3-->\n    </div>\n    <script>\n      M._.r.push(_ =&gt; (_.h = [_.i = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 1\n        }], _.d.add(_.i), _.h),\n        \"__tests__/template.marko_0_count 1\"\n        );\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#comment4\nINSERT html/body/div/#text3\nINSERT html/body/div/#comment5\nINSERT html/body/div/#text4\nINSERT html/body/div/#comment6\nINSERT html/body/div/#comment7\nINSERT html/body/div/#comment8\nINSERT html/body/div/#text6\nINSERT html/body/div/#comment9\nINSERT html/body/div/#text7\nINSERT html/body/div/#comment10\nINSERT html/body/div/#comment11\nINSERT html/body/div/button\nINSERT html/body/div/button/#text\nINSERT html/body/div/#comment12\nINSERT html/body/div/#text5\nINSERT html/body/div/#text8\nINSERT html/body/script\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--M_[-->\n      Got: a \n      <!---->\n      1\n      <!--M_*2 #text/1-->\n      <!--M_]1 #text/0 2-->\n      <script>\n        WALKER_RUNTIME(\"M\")(\"_\");\n        M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0,\n          \"ClosureScopes:count\": new Set\n        }]), _ =&gt; (_.c = [_.e = {\n          _: _.b = _.a[1],\n          \"ClosureSignalIndex:count\": 0\n        }], (_.d = _.b[\"ClosureScopes:count\"]).add(_.e), _.c)];\n        M._.w()\n      </script>\n      <script>\n        M._.r.push(_ =&gt; (_.f = [_.g = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 2\n        }], _.d.add(_.g), _.f));\n        M._.w()\n      </script>\n      <!--M_[-->\n      Got: b \n      <!---->\n      1\n      <!--M_*4 #text/1-->\n      <!--M_]1 #text/1 4-->\n      <!--M_[-->\n      Got: c \n      <!---->\n      1\n      <!--M_*3 #text/1-->\n      <!--M_]1 #text/2 3-->\n      <button>\n        Inc\n      </button>\n      <!--M_*1 #button/3-->\n    </div>\n    <script>\n      M._.r.push(_ =&gt; (_.h = [_.i = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 1\n        }], _.d.add(_.i), _.h),\n        \"__tests__/template.marko_0_count 1\"\n        );\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/#text1 \"0\" => \"1\"\nUPDATE html/body/div/#text7 \"0\" => \"1\"\nUPDATE html/body/div/#text4 \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--M_[-->\n      Got: a \n      <!---->\n      2\n      <!--M_*2 #text/1-->\n      <!--M_]1 #text/0 2-->\n      <script>\n        WALKER_RUNTIME(\"M\")(\"_\");\n        M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0,\n          \"ClosureScopes:count\": new Set\n        }]), _ =&gt; (_.c = [_.e = {\n          _: _.b = _.a[1],\n          \"ClosureSignalIndex:count\": 0\n        }], (_.d = _.b[\"ClosureScopes:count\"]).add(_.e), _.c)];\n        M._.w()\n      </script>\n      <script>\n        M._.r.push(_ =&gt; (_.f = [_.g = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 2\n        }], _.d.add(_.g), _.f));\n        M._.w()\n      </script>\n      <!--M_[-->\n      Got: b \n      <!---->\n      2\n      <!--M_*4 #text/1-->\n      <!--M_]1 #text/1 4-->\n      <!--M_[-->\n      Got: c \n      <!---->\n      2\n      <!--M_*3 #text/1-->\n      <!--M_]1 #text/2 3-->\n      <button>\n        Inc\n      </button>\n      <!--M_*1 #button/3-->\n    </div>\n    <script>\n      M._.r.push(_ =&gt; (_.h = [_.i = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 1\n        }], _.d.add(_.i), _.h),\n        \"__tests__/template.marko_0_count 1\"\n        );\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/#text1 \"1\" => \"2\"\nUPDATE html/body/div/#text7 \"1\" => \"2\"\nUPDATE html/body/div/#text4 \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--M_[-->\n      Got: a \n      <!---->\n      3\n      <!--M_*2 #text/1-->\n      <!--M_]1 #text/0 2-->\n      <script>\n        WALKER_RUNTIME(\"M\")(\"_\");\n        M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0,\n          \"ClosureScopes:count\": new Set\n        }]), _ =&gt; (_.c = [_.e = {\n          _: _.b = _.a[1],\n          \"ClosureSignalIndex:count\": 0\n        }], (_.d = _.b[\"ClosureScopes:count\"]).add(_.e), _.c)];\n        M._.w()\n      </script>\n      <script>\n        M._.r.push(_ =&gt; (_.f = [_.g = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 2\n        }], _.d.add(_.g), _.f));\n        M._.w()\n      </script>\n      <!--M_[-->\n      Got: b \n      <!---->\n      3\n      <!--M_*4 #text/1-->\n      <!--M_]1 #text/1 4-->\n      <!--M_[-->\n      Got: c \n      <!---->\n      3\n      <!--M_*3 #text/1-->\n      <!--M_]1 #text/2 3-->\n      <button>\n        Inc\n      </button>\n      <!--M_*1 #button/3-->\n    </div>\n    <script>\n      M._.r.push(_ =&gt; (_.h = [_.i = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 1\n        }], _.d.add(_.i), _.h),\n        \"__tests__/template.marko_0_count 1\"\n        );\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/#text1 \"2\" => \"3\"\nUPDATE html/body/div/#text7 \"2\" => \"3\"\nUPDATE html/body/div/#text4 \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render ASYNC\n```html\n<div>\n  Got: a 0\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div>\n  Got: a 0\n</div>\n```\n\n\n# Render End\n```html\n<div>\n  Got: a 0Got: b 0Got: c 0\n  <button>\n    Inc\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><!--M_[-->Got: a <!>0<!--M_*2 #text/1--><!--M_]1 #text/0 2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{count:0,\"ClosureScopes:count\":new Set}]),_=>(_.c=[_.e={_:_.b=_.a[1],\"ClosureSignalIndex:count\":0}],(_.d=_.b[\"ClosureScopes:count\"]).add(_.e),_.c)];M._.w()</script>\n```\n\n# Write\n```html\n  <script>M._.r.push(_=>(_.f=[_.g={_:_.b,\"ClosureSignalIndex:count\":2}],_.d.add(_.g),_.f));M._.w()</script>\n```\n\n# Write\n```html\n  <!--M_[-->Got: b <!>0<!--M_*4 #text/1--><!--M_]1 #text/1 4--><!--M_[-->Got: c <!>0<!--M_*3 #text/1--><!--M_]1 #text/2 3--><button>Inc</button><!--M_*1 #button/3--></div><script>M._.r.push(_=>(_.h=[_.i={_:_.b,\"ClosureSignalIndex:count\":1}],_.d.add(_.i),_.h),\"__tests__/template.marko_0_count 1\");M._.w()</script>\n```\n\n# Render ASYNC\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--M_[-->\n      Got: a \n      <!---->\n      0\n      <!--M_*2 #text/1-->\n      <!--M_]1 #text/0 2-->\n      <script>\n        WALKER_RUNTIME(\"M\")(\"_\");\n        M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0,\n          \"ClosureScopes:count\": new Set\n        }]), _ =&gt; (_.c = [_.e = {\n          _: _.b = _.a[1],\n          \"ClosureSignalIndex:count\": 0\n        }], (_.d = _.b[\"ClosureScopes:count\"]).add(_.e), _.c)];\n        M._.w()\n      </script>\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#comment0\nINSERT html/body/div/#text0\nINSERT html/body/div/#comment1\nINSERT html/body/div/#text1\nINSERT html/body/div/#comment2\nINSERT html/body/div/#comment3\nINSERT html/body/div/script\n```\n\n# Render ASYNC\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--M_[-->\n      Got: a \n      <!---->\n      0\n      <!--M_*2 #text/1-->\n      <!--M_]1 #text/0 2-->\n      <script>\n        WALKER_RUNTIME(\"M\")(\"_\");\n        M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0,\n          \"ClosureScopes:count\": new Set\n        }]), _ =&gt; (_.c = [_.e = {\n          _: _.b = _.a[1],\n          \"ClosureSignalIndex:count\": 0\n        }], (_.d = _.b[\"ClosureScopes:count\"]).add(_.e), _.c)];\n        M._.w()\n      </script>\n      <script>\n        M._.r.push(_ =&gt; (_.f = [_.g = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 2\n        }], _.d.add(_.g), _.f));\n        M._.w()\n      </script>\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/script1\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--M_[-->\n      Got: a \n      <!---->\n      0\n      <!--M_*2 #text/1-->\n      <!--M_]1 #text/0 2-->\n      <script>\n        WALKER_RUNTIME(\"M\")(\"_\");\n        M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0,\n          \"ClosureScopes:count\": new Set\n        }]), _ =&gt; (_.c = [_.e = {\n          _: _.b = _.a[1],\n          \"ClosureSignalIndex:count\": 0\n        }], (_.d = _.b[\"ClosureScopes:count\"]).add(_.e), _.c)];\n        M._.w()\n      </script>\n      <script>\n        M._.r.push(_ =&gt; (_.f = [_.g = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 2\n        }], _.d.add(_.g), _.f));\n        M._.w()\n      </script>\n      <!--M_[-->\n      Got: b \n      <!---->\n      0\n      <!--M_*4 #text/1-->\n      <!--M_]1 #text/1 4-->\n      <!--M_[-->\n      Got: c \n      <!---->\n      0\n      <!--M_*3 #text/1-->\n      <!--M_]1 #text/2 3-->\n      <button>\n        Inc\n      </button>\n      <!--M_*1 #button/3-->\n    </div>\n    <script>\n      M._.r.push(_ =&gt; (_.h = [_.i = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 1\n        }], _.d.add(_.i), _.h),\n        \"__tests__/template.marko_0_count 1\"\n        );\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#comment4\nINSERT html/body/div/#text2\nINSERT html/body/div/#comment5\nINSERT html/body/div/#text3\nINSERT html/body/div/#comment6\nINSERT html/body/div/#comment7\nINSERT html/body/div/#comment8\nINSERT html/body/div/#text4\nINSERT html/body/div/#comment9\nINSERT html/body/div/#text5\nINSERT html/body/div/#comment10\nINSERT html/body/div/#comment11\nINSERT html/body/div/button\nINSERT html/body/div/button/#text\nINSERT html/body/div/#comment12\nINSERT html/body/script\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-tag/template.marko",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\n\n<let/count = 0/>\n<div>\n  <await|value|=Promise.resolve(\"a\")>\n    Got: ${value} ${count}\n  </await>\n\n  <await|value|=resolveAfter(\"b\", 2)>\n    Got: ${value} ${count}\n  </await>\n\n  <await|value|=resolveAfter(\"c\", 1)>\n    Got: ${value} ${count}\n  </await>\n\n  <button onClick() {\n    count++\n  }>\n    Inc\n  </button>\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-tag/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { flush, wait } from \"../../utils/resolve\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, flush, flush, wait, click, click, click],\n  skip_equivalent: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$resolveAfter\": \"e\",\n      \"$$await_content__value__script\": \"a\",\n      \"$$await_content__value\": \"c\",\n      \"$$await_content__$params\": \"r\",\n      \"$$try_content__await_promise\": \"s\",\n      \"$$try_content__value\": \"_\",\n      \"$$value__closure\": \"n\",\n      \"$$value\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"outside\"\n>\n  0\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div\n  id=\"outside\"\n>\n  0\n</div>\nloading...\n```\n\n\n# Render ASYNC\n```html\n<div\n  id=\"outside\"\n>\n  0\n</div>\n<div\n  id=\"inside\"\n>\n  0\n</div>\n```\n# Console\n```\nLOG \"effect ran value=0\"\nLOG \"setup effect ran\"\n```\n\n# Render ASYNC\n```html\n<div\n  id=\"outside\"\n>\n  1\n</div>\n<div\n  id=\"inside\"\n>\n  0\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div\n  id=\"outside\"\n>\n  1\n</div>\nloading...\n```\n\n\n# Render ASYNC\n```html\n<div\n  id=\"outside\"\n>\n  1\n</div>\n<div\n  id=\"inside\"\n>\n  1\n</div>\n```\n# Console\n```\nLOG \"effect ran value=1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"outside\"\n>\n  0\n</div>\n<!---->\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT div, #comment0, #text, #comment1, #comment2\n```\n\n# Render ASYNC\n```html\n<div\n  id=\"outside\"\n>\n  0\n</div>\nloading...\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE #document-fragment/#comment0 after #text\nREMOVE #document-fragment/#text after #text\nREMOVE #document-fragment/#comment1 after #text\n```\n\n# Render ASYNC\n```html\n<div\n  id=\"outside\"\n>\n  0\n</div>\n<!---->\n<div\n  id=\"inside\"\n>\n  0\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, div1, #comment1\nREMOVE #text after #comment1\n```\n# Console\n```\nLOG \"effect ran value=0\"\nLOG \"setup effect ran\"\n```\n\n# Render ASYNC\n```html\n<div\n  id=\"outside\"\n>\n  1\n</div>\n<!---->\n<div\n  id=\"inside\"\n>\n  0\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nUPDATE div0/#text \"0\" => \"1\"\n```\n\n# Render ASYNC\n```html\n<div\n  id=\"outside\"\n>\n  1\n</div>\nloading...\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE #document-fragment/#comment0 after #text\nREMOVE #document-fragment/div after #text\nREMOVE #document-fragment/#comment1 after #text\n```\n\n# Render ASYNC\n```html\n<div\n  id=\"outside\"\n>\n  1\n</div>\n<!---->\n<div\n  id=\"inside\"\n>\n  1\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, div1, #comment1\nREMOVE #text after #comment1\n```\n# Console\n```\nLOG \"effect ran value=1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 422 (min) 225 (brotli)\n_._enable_catch();\nconst $await_content__value__script = _._script(\"a0\", ($scope) =>\n    console.log(`effect ran value=${$scope.c}`),\n  ),\n  $await_content__value = _._const(2, ($scope) => {\n    (_._text($scope.a, $scope.c), $await_content__value__script($scope));\n  });\n_._script(\"a1\", ($scope) => console.log(\"setup effect ran\"));\nconst $await_content__$params = ($scope, $params2) =>\n  $await_content__value($scope, $params2[0]);\n_._content_resume(\"a2\", \"loading...\", \"b\");\nconst $try_content__await_promise = _._await_promise(\n    0,\n    $await_content__$params,\n  ),\n  $try_content__value = _._closure_get(2, ($scope) =>\n    $try_content__await_promise($scope, resolveAfter($scope._.c)),\n  ),\n  $value__closure = _._closure($try_content__value),\n  $value = _._let(2, ($scope) => {\n    (_._text($scope.a, $scope.c), $value__closure($scope));\n  });\n(_._script(\"a3\", ($scope) =>\n  (async () => {\n    (await resolveAfter(0, 2), $value($scope, 1));\n  })(),\n),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div id=outside> </div><!><!>\";\nexport const $walks = /* next(1), get, out(1), replace, over(2) */\"D l%c\";\nimport { resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\n_._enable_catch();\nconst $await_content__value__script = _._script(\"__tests__/template.marko_3_value\", $scope => console.log(`effect ran value=${$scope.value}`));\nconst $await_content__value = /* @__PURE__ */_._const(\"value\", $scope => {\n  _._text($scope[\"#text/0\"], $scope.value);\n  $await_content__value__script($scope);\n});\nconst $await_content__setup__script = _._script(\"__tests__/template.marko_3\", $scope => console.log(`setup effect ran`));\nconst $await_content__setup = $await_content__setup__script;\nconst $await_content__$params = ($scope, $params2) => $await_content__value($scope, $params2[0]);\nconst $placeholder_content = _._content_resume(\"__tests__/template.marko_2_content\", \"loading...\", /* over(1) */\"b\");\nconst $await_content = /* @__PURE__ */_._await_content(\"#text/0\", \"<div id=inside> </div>\", /* next(1), get, out(1) */\"D l\", $await_content__setup);\nconst $try_content__await_promise = /* @__PURE__ */_._await_promise(\"#text/0\", $await_content__$params);\nconst $try_content__value = /* @__PURE__ */_._closure_get(\"value\", $scope => $try_content__await_promise($scope, resolveAfter($scope._.value)));\nconst $try_content__setup = $scope => {\n  $try_content__value($scope);\n  $await_content($scope);\n};\nconst $value__closure = /* @__PURE__ */_._closure($try_content__value);\nconst $value = /* @__PURE__ */_._let(\"value/2\", $scope => {\n  _._text($scope[\"#text/0\"], $scope.value);\n  $value__closure($scope);\n});\nconst $try = /* @__PURE__ */_._try(\"#text/1\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", $try_content__setup);\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => (async () => {\n  await resolveAfter(0, 2);\n  $value($scope, 1);\n})());\nexport function $setup($scope) {\n  $value($scope, 0);\n  $try($scope, {\n    placeholder: _.attrTag({\n      content: $placeholder_content($scope)\n    })\n  });\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/html.expected/template.js",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $value__closures = new Set();\n  let value = 0;\n  _._html(`<div id=outside>${_._escape(value)}${_._el_resume($scope0_id, \"#text/0\")}</div>`);\n  _._try($scope0_id, \"#text/1\", _._content_resume(\"__tests__/template.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    _._scope_reason();\n    _._await($scope1_id, \"#text/0\", resolveAfter(value), value => {\n      const $scope3_id = _._scope_id();\n      _._html(`<div id=inside>${_._escape(value)}${_._el_resume($scope3_id, \"#text/0\")}</div>`);\n      _._script($scope3_id, \"__tests__/template.marko_3_value\");\n      _._script($scope3_id, \"__tests__/template.marko_3\");\n      _._scope($scope3_id, {\n        value\n      }, \"__tests__/template.marko\", \"7:3\", {\n        value: \"7:9\"\n      });\n    });\n    _._subscribe($value__closures, _._scope($scope1_id, {\n      _: _._scope_with_id($scope0_id),\n      \"ClosureSignalIndex:value\": 0\n    }, \"__tests__/template.marko\", \"5:1\"));\n    _._resume_branch($scope1_id);\n  }, $scope0_id), {\n    placeholder: _.attrTag({\n      content: _._content_resume(\"__tests__/template.marko_2_content\", () => {\n        _._scope_reason();\n        const $scope2_id = _._scope_id();\n        _._html(\"loading...\");\n      }, $scope0_id)\n    })\n  });\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {\n    \"ClosureScopes:value\": $value__closures\n  }, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"outside\"\n>\n  0\n</div>\nloading...\n```\n\n\n# Render FLUSH\n```html\n<div\n  id=\"outside\"\n>\n  0\n</div>\n<div\n  id=\"inside\"\n>\n  0\n</div>\n```\n# Console\n```\nLOG \"effect ran value=0\"\nLOG \"setup effect ran\"\n```\n\n# Render ASYNC\n```html\n<div\n  id=\"outside\"\n>\n  1\n</div>\n<div\n  id=\"inside\"\n>\n  0\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div\n  id=\"outside\"\n>\n  1\n</div>\nloading...\n```\n\n\n# Render ASYNC\n```html\n<div\n  id=\"outside\"\n>\n  1\n</div>\n<div\n  id=\"inside\"\n>\n  1\n</div>\n```\n# Console\n```\nLOG \"effect ran value=1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <div\n      id=\"outside\"\n    >\n      0\n      <!--M_*1 #text/0-->\n    </div>\n    <!--M_[-->\n    <!--M_!^2-->\n    loading...\n    <!--M_!2-->\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"ClosureScopes:value\": _.d = new Set\n        }, _.b = {\n          _: _.a,\n          \"ClosureSignalIndex:value\": 0,\n          \"#BranchAccessor\": \"#text/1\"\n        }], _.b[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.a), (_.d).add(_.b), _.c),\n        \"__tests__/template.marko_0 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text1\n```\n\n# Render FLUSH\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <div\n      id=\"outside\"\n    >\n      0\n      <!--M_*1 #text/0-->\n    </div>\n    <!--M_[-->\n    <!--M_[-->\n    <div\n      id=\"inside\"\n    >\n      0\n      <!--M_*4 #text/0-->\n    </div>\n    <!--M_]2 #text/0 4-->\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"ClosureScopes:value\": _.d = new Set\n        }, _.b = {\n          _: _.a,\n          \"ClosureSignalIndex:value\": 0,\n          \"#BranchAccessor\": \"#text/1\"\n        }], _.b[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.a), (_.d).add(_.b), _.c),\n        \"__tests__/template.marko_0 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.e = [1,\n      {\n        value: 0\n      }]));\n      M._.j.b = _ =&gt;\n      {\n        _.push(\n          \"__tests__/template.marko_3_value 4 __tests__/template.marko_3 4\"\n          )\n      };\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT t\nINSERT html/body/#comment1\nINSERT html/body/div1\nINSERT html/body/div1/#text\nINSERT html/body/div1/#comment\nINSERT html/body/#comment2\nREMOVE t after html/body/script0\nREMOVE #text after #comment\nREMOVE #comment after html/body/#comment0\nREMOVE #comment after html/body/#comment0\nINSERT html/body/#comment1, html/body/div1, html/body/#comment2\nINSERT html/body/#text0\nINSERT html/body/script1\n```\n# Console\n```\nLOG \"effect ran value=0\"\nLOG \"setup effect ran\"\n```\n\n# Render ASYNC\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <div\n      id=\"outside\"\n    >\n      1\n      <!--M_*1 #text/0-->\n    </div>\n    <!--M_[-->\n    <!--M_[-->\n    <div\n      id=\"inside\"\n    >\n      0\n      <!--M_*4 #text/0-->\n    </div>\n    <!--M_]2 #text/0 4-->\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"ClosureScopes:value\": _.d = new Set\n        }, _.b = {\n          _: _.a,\n          \"ClosureSignalIndex:value\": 0,\n          \"#BranchAccessor\": \"#text/1\"\n        }], _.b[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.a), (_.d).add(_.b), _.c),\n        \"__tests__/template.marko_0 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.e = [1,\n      {\n        value: 0\n      }]));\n      M._.j.b = _ =&gt;\n      {\n        _.push(\n          \"__tests__/template.marko_3_value 4 __tests__/template.marko_3 4\"\n          )\n      };\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div0/#text \"0\" => \"1\"\n```\n\n# Render ASYNC\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <div\n      id=\"outside\"\n    >\n      1\n      <!--M_*1 #text/0-->\n    </div>\n    loading...\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"ClosureScopes:value\": _.d = new Set\n        }, _.b = {\n          _: _.a,\n          \"ClosureSignalIndex:value\": 0,\n          \"#BranchAccessor\": \"#text/1\"\n        }], _.b[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.a), (_.d).add(_.b), _.c),\n        \"__tests__/template.marko_0 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.e = [1,\n      {\n        value: 0\n      }]));\n      M._.j.b = _ =&gt;\n      {\n        _.push(\n          \"__tests__/template.marko_3_value 4 __tests__/template.marko_3 4\"\n          )\n      };\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text\nREMOVE #document-fragment/#comment0 after html/body/#text\nREMOVE #document-fragment/#comment1 after html/body/#text\nREMOVE #document-fragment/div after html/body/#text\nREMOVE #document-fragment/#text0 after html/body/#text\nREMOVE #document-fragment/#comment2 after html/body/#text\nREMOVE #document-fragment/#text1 after html/body/#text\n```\n\n# Render ASYNC\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <div\n      id=\"outside\"\n    >\n      1\n      <!--M_*1 #text/0-->\n    </div>\n    <!--M_[-->\n    <!--M_[-->\n    <div\n      id=\"inside\"\n    >\n      1\n      <!--M_*4 #text/0-->\n    </div>\n    <!--M_]2 #text/0 4-->\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"ClosureScopes:value\": _.d = new Set\n        }, _.b = {\n          _: _.a,\n          \"ClosureSignalIndex:value\": 0,\n          \"#BranchAccessor\": \"#text/1\"\n        }], _.b[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.a), (_.d).add(_.b), _.c),\n        \"__tests__/template.marko_0 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.e = [1,\n      {\n        value: 0\n      }]));\n      M._.j.b = _ =&gt;\n      {\n        _.push(\n          \"__tests__/template.marko_3_value 4 __tests__/template.marko_3 4\"\n          )\n      };\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#comment0, html/body/#comment1, html/body/div1, html/body/#text0, html/body/#comment2, html/body/#text1\nREMOVE #text after html/body/#text1\n```\n# Console\n```\nLOG \"effect ran value=1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render ASYNC\n```html\n<div\n  id=\"outside\"\n>\n  0\n</div>\nloading...\n```\n\n\n# Render End\n```html\n<div\n  id=\"outside\"\n>\n  0\n</div>\n<div\n  id=\"inside\"\n>\n  0\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div id=outside>0<!--M_*1 #text/0--></div><!--M_[--><!--M_!^2-->loading...<!--M_!2--><!--M_]1 #text/1 2--><style M_>t{display:none}</style><t M_=2><!--M_#b--></t><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.a={\"ClosureScopes:value\":_.d=new Set},_.b={_:_.a,\"ClosureSignalIndex:value\":0,\"#BranchAccessor\":\"#text/1\"}],_.b[\"#PlaceholderContent\"]=_._[\"__tests__/template.marko_2_content\"](_.a),(_.d).add(_.b),_.c),\"__tests__/template.marko_0 1\"];REORDER_RUNTIME(M._);M._.w()</script>\n```\n\n# Write\n```html\n  <t M_=b><!--M_[--><div id=inside>0<!--M_*4 #text/0--></div><!--M_]2 #text/0 4--></t><script>M._.r.push(_=>(_.e=[1,{value:0}]));M._.j.b=_=>{_.push(\"__tests__/template.marko_3_value 4 __tests__/template.marko_3 4\")};M._.w()</script>\n```\n\n# Render ASYNC\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <div\n      id=\"outside\"\n    >\n      0\n      <!--M_*1 #text/0-->\n    </div>\n    <!--M_[-->\n    <!--M_!^2-->\n    loading...\n    <!--M_!2-->\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"ClosureScopes:value\": _.d = new Set\n        }, _.b = {\n          _: _.a,\n          \"ClosureSignalIndex:value\": 0,\n          \"#BranchAccessor\": \"#text/1\"\n        }], _.b[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.a), (_.d).add(_.b), _.c),\n        \"__tests__/template.marko_0 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/div/#comment\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/#text\nINSERT html/body/#comment2\nINSERT html/body/#comment3\nINSERT html/head/style\nINSERT html/head/style/#text\nINSERT t\nINSERT t/#comment\nREMOVE html/head/style after html/body/#comment3\nINSERT html/head/style\nREMOVE t after html/body/#comment3\nINSERT html/body/script\n```\n\n# Render End\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <div\n      id=\"outside\"\n    >\n      0\n      <!--M_*1 #text/0-->\n    </div>\n    <!--M_[-->\n    <!--M_[-->\n    <div\n      id=\"inside\"\n    >\n      0\n      <!--M_*4 #text/0-->\n    </div>\n    <!--M_]2 #text/0 4-->\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"ClosureScopes:value\": _.d = new Set\n        }, _.b = {\n          _: _.a,\n          \"ClosureSignalIndex:value\": 0,\n          \"#BranchAccessor\": \"#text/1\"\n        }], _.b[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.a), (_.d).add(_.b), _.c),\n        \"__tests__/template.marko_0 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.e = [1,\n      {\n        value: 0\n      }]));\n      M._.j.b = _ =&gt;\n      {\n        _.push(\n          \"__tests__/template.marko_3_value 4 __tests__/template.marko_3 4\"\n          )\n      };\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT t\nINSERT html/body/#comment1\nINSERT html/body/div1\nINSERT html/body/div1/#text\nINSERT html/body/div1/#comment\nINSERT html/body/#comment2\nREMOVE t after html/body/script0\nREMOVE #text after #comment\nREMOVE #comment after html/body/#comment0\nREMOVE #comment after html/body/#comment0\nINSERT html/body/#comment1, html/body/div1, html/body/#comment2\nINSERT html/body/script1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/template.marko",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\nlet/value=0\nscript -- await resolveAfter(0, 2); value = 1\ndiv#outside -- ${value}\ntry\n  @placeholder -- loading...\n  await|value|=resolveAfter(value)\n    div#inside -- ${value}\n    script -- console.log(`setup effect ran`);\n    script -- console.log(`effect ran value=${value}`);\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { flush, wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{}, flush, wait],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$resolveAfter\": \"e\",\n      \"$$await_content__value__script\": \"a\",\n      \"$$await_content__value\": \"c\",\n      \"$$await_content__$params\": \"r\",\n      \"$$try_content__await_promise\": \"s\",\n      \"$$try_content__value\": \"n\",\n      \"$$value__closure\": \"_\",\n      \"$$value\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"outside\"\n>\n  0\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div\n  id=\"outside\"\n>\n  0\n</div>\nloading...\n```\n\n\n# Render ASYNC\n```html\n<div\n  id=\"outside\"\n>\n  1\n</div>\nloading...\n```\n\n\n# Render ASYNC\n```html\n<div\n  id=\"outside\"\n>\n  1\n</div>\n<div\n  id=\"inside\"\n>\n  1\n</div>\n```\n# Console\n```\nLOG \"\\neffect ran value=1\"\nLOG \"\\nsetup effect ran\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"outside\"\n>\n  0\n</div>\n<!---->\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT div, #comment0, #text, #comment1, #comment2\n```\n\n# Render ASYNC\n```html\n<div\n  id=\"outside\"\n>\n  0\n</div>\nloading...\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE #document-fragment/#comment0 after #text\nREMOVE #document-fragment/#text after #text\nREMOVE #document-fragment/#comment1 after #text\n```\n\n# Render ASYNC\n```html\n<div\n  id=\"outside\"\n>\n  1\n</div>\nloading...\n<!---->\n```\n\n# Mutations\n```\nUPDATE div/#text \"0\" => \"1\"\n```\n\n# Render ASYNC\n```html\n<div\n  id=\"outside\"\n>\n  1\n</div>\n<!---->\n<div\n  id=\"inside\"\n>\n  1\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, div1, #comment1\nREMOVE #text after #comment1\n```\n# Console\n```\nLOG \"\\neffect ran value=1\"\nLOG \"\\nsetup effect ran\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 428 (min) 227 (brotli)\n_._enable_catch();\nconst $await_content__value__script = _._script(\"a0\", ($scope) =>\n    console.log(`\\neffect ran value=${$scope.c}`),\n  ),\n  $await_content__value = _._const(2, ($scope) => {\n    (_._text($scope.a, $scope.c), $await_content__value__script($scope));\n  });\n_._script(\"a1\", ($scope) => console.log(\"\\nsetup effect ran\"));\nconst $await_content__$params = ($scope, $params2) =>\n  $await_content__value($scope, $params2[0]);\n_._content_resume(\"a2\", \"loading...\", \"b\");\nconst $try_content__await_promise = _._await_promise(\n    0,\n    $await_content__$params,\n  ),\n  $try_content__value = _._closure_get(2, ($scope) =>\n    $try_content__await_promise($scope, resolveAfter($scope._.c, 3)),\n  ),\n  $value__closure = _._closure($try_content__value),\n  $value = _._let(2, ($scope) => {\n    (_._text($scope.a, $scope.c), $value__closure($scope));\n  });\n(_._script(\"a3\", ($scope) =>\n  (async () => {\n    (await resolveAfter(0, 1), $value($scope, 1));\n  })(),\n),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div id=outside> </div><!><!>\";\nexport const $walks = /* next(1), get, out(1), replace, over(2) */\"D l%c\";\nimport { resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\n_._enable_catch();\nconst $await_content__value__script = _._script(\"__tests__/template.marko_3_value\", $scope => console.log(`\\neffect ran value=${$scope.value}`));\nconst $await_content__value = /* @__PURE__ */_._const(\"value\", $scope => {\n  _._text($scope[\"#text/0\"], $scope.value);\n  $await_content__value__script($scope);\n});\nconst $await_content__setup__script = _._script(\"__tests__/template.marko_3\", $scope => console.log(`\\nsetup effect ran`));\nconst $await_content__setup = $await_content__setup__script;\nconst $await_content__$params = ($scope, $params2) => $await_content__value($scope, $params2[0]);\nconst $placeholder_content = _._content_resume(\"__tests__/template.marko_2_content\", \"loading...\", /* over(1) */\"b\");\nconst $await_content = /* @__PURE__ */_._await_content(\"#text/0\", \"<div id=inside> </div>\", /* next(1), get, out(1) */\"D l\", $await_content__setup);\nconst $try_content__await_promise = /* @__PURE__ */_._await_promise(\"#text/0\", $await_content__$params);\nconst $try_content__value = /* @__PURE__ */_._closure_get(\"value\", $scope => $try_content__await_promise($scope, resolveAfter($scope._.value, 3)));\nconst $try_content__setup = $scope => {\n  $try_content__value($scope);\n  $await_content($scope);\n};\nconst $value__closure = /* @__PURE__ */_._closure($try_content__value);\nconst $value = /* @__PURE__ */_._let(\"value/2\", $scope => {\n  _._text($scope[\"#text/0\"], $scope.value);\n  $value__closure($scope);\n});\nconst $try = /* @__PURE__ */_._try(\"#text/1\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", $try_content__setup);\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => (async () => {\n  await resolveAfter(0, 1);\n  $value($scope, 1);\n})());\nexport function $setup($scope) {\n  $value($scope, 0);\n  $try($scope, {\n    placeholder: _.attrTag({\n      content: $placeholder_content($scope)\n    })\n  });\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/html.expected/template.js",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $value__closures = new Set();\n  let value = 0;\n  _._html(`<div id=outside>${_._escape(value)}${_._el_resume($scope0_id, \"#text/0\")}</div>`);\n  _._try($scope0_id, \"#text/1\", _._content_resume(\"__tests__/template.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    _._scope_reason();\n    _._await($scope1_id, \"#text/0\", resolveAfter(value, 3), value => {\n      const $scope3_id = _._scope_id();\n      _._html(`<div id=inside>${_._escape(value)}${_._el_resume($scope3_id, \"#text/0\")}</div>`);\n      _._script($scope3_id, \"__tests__/template.marko_3_value\");\n      _._script($scope3_id, \"__tests__/template.marko_3\");\n      _._scope($scope3_id, {\n        value\n      }, \"__tests__/template.marko\", \"7:3\", {\n        value: \"7:9\"\n      });\n    });\n    _._subscribe($value__closures, _._scope($scope1_id, {\n      _: _._scope_with_id($scope0_id),\n      \"ClosureSignalIndex:value\": 0\n    }, \"__tests__/template.marko\", \"5:1\"));\n    _._resume_branch($scope1_id);\n  }, $scope0_id), {\n    placeholder: _.attrTag({\n      content: _._content_resume(\"__tests__/template.marko_2_content\", () => {\n        _._scope_reason();\n        const $scope2_id = _._scope_id();\n        _._html(\"loading...\");\n      }, $scope0_id)\n    })\n  });\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {\n    \"ClosureScopes:value\": $value__closures\n  }, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"outside\"\n>\n  0\n</div>\nloading...\n```\n\n\n# Render ASYNC\n```html\n<div\n  id=\"outside\"\n>\n  1\n</div>\nloading...\n```\n\n\n# Render FLUSH\n```html\n<div\n  id=\"outside\"\n>\n  1\n</div>\nloading...\n```\n\n\n# Render ASYNC\n```html\n<div\n  id=\"outside\"\n>\n  1\n</div>\n<div\n  id=\"inside\"\n>\n  1\n</div>\n```\n# Console\n```\nLOG \"\\neffect ran value=1\"\nLOG \"\\nsetup effect ran\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <div\n      id=\"outside\"\n    >\n      0\n      <!--M_*1 #text/0-->\n    </div>\n    <!--M_[-->\n    <!--M_!^2-->\n    loading...\n    <!--M_!2-->\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"ClosureScopes:value\": _.d = new Set\n        }, _.b = {\n          _: _.a,\n          \"ClosureSignalIndex:value\": 0,\n          \"#BranchAccessor\": \"#text/1\"\n        }], _.b[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.a), (_.d).add(_.b), _.c),\n        \"__tests__/template.marko_0 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text1\n```\n\n# Render ASYNC\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <div\n      id=\"outside\"\n    >\n      1\n      <!--M_*1 #text/0-->\n    </div>\n    <!--M_[-->\n    <!--M_!^2-->\n    loading...\n    <!--M_!2-->\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"ClosureScopes:value\": _.d = new Set\n        }, _.b = {\n          _: _.a,\n          \"ClosureSignalIndex:value\": 0,\n          \"#BranchAccessor\": \"#text/1\"\n        }], _.b[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.a), (_.d).add(_.b), _.c),\n        \"__tests__/template.marko_0 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/#text \"0\" => \"1\"\n```\n\n# Render FLUSH\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <div\n      id=\"outside\"\n    >\n      1\n      <!--M_*1 #text/0-->\n    </div>\n    <!--M_[-->\n    <!--M_!^2-->\n    loading...\n    <!--M_!2-->\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"ClosureScopes:value\": _.d = new Set\n        }, _.b = {\n          _: _.a,\n          \"ClosureSignalIndex:value\": 0,\n          \"#BranchAccessor\": \"#text/1\"\n        }], _.b[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.a), (_.d).add(_.b), _.c),\n        \"__tests__/template.marko_0 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.e = [1,\n      {\n        value: 0\n      }]));\n      M._.j.b = _ =&gt;\n      {\n        _.push(\n          \"__tests__/template.marko_3_value 4 __tests__/template.marko_3 4\"\n          )\n      };\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT t\nINSERT t/#comment0\nINSERT t/div\nINSERT t/div/#text\nINSERT t/div/#comment\nINSERT t/#comment1\nREMOVE t after html/body/script0\nINSERT html/body/script1\n```\n\n# Render ASYNC\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <div\n      id=\"outside\"\n    >\n      1\n      <!--M_*1 #text/0-->\n    </div>\n    <!--M_[-->\n    <!--M_[-->\n    <div\n      id=\"inside\"\n    >\n      1\n      <!--M_*4 #text/0-->\n    </div>\n    <!--M_]2 #text/0 4-->\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"ClosureScopes:value\": _.d = new Set\n        }, _.b = {\n          _: _.a,\n          \"ClosureSignalIndex:value\": 0,\n          \"#BranchAccessor\": \"#text/1\"\n        }], _.b[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.a), (_.d).add(_.b), _.c),\n        \"__tests__/template.marko_0 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.e = [1,\n      {\n        value: 0\n      }]));\n      M._.j.b = _ =&gt;\n      {\n        _.push(\n          \"__tests__/template.marko_3_value 4 __tests__/template.marko_3 4\"\n          )\n      };\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #text after #comment\nREMOVE #comment after html/body/#comment0\nREMOVE #comment after html/body/#comment0\nINSERT html/body/#comment1, html/body/div1, html/body/#text0, html/body/#comment2\n```\n# Console\n```\nLOG \"\\neffect ran value=1\"\nLOG \"\\nsetup effect ran\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render ASYNC\n```html\n<div\n  id=\"outside\"\n>\n  0\n</div>\nloading...\n```\n\n\n# Render End\n```html\n<div\n  id=\"outside\"\n>\n  0\n</div>\n<div\n  id=\"inside\"\n>\n  0\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div id=outside>0<!--M_*1 #text/0--></div><!--M_[--><!--M_!^2-->loading...<!--M_!2--><!--M_]1 #text/1 2--><style M_>t{display:none}</style><t M_=2><!--M_#b--></t><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.a={\"ClosureScopes:value\":_.d=new Set},_.b={_:_.a,\"ClosureSignalIndex:value\":0,\"#BranchAccessor\":\"#text/1\"}],_.b[\"#PlaceholderContent\"]=_._[\"__tests__/template.marko_2_content\"](_.a),(_.d).add(_.b),_.c),\"__tests__/template.marko_0 1\"];REORDER_RUNTIME(M._);M._.w()</script>\n```\n\n# Write\n```html\n  <t M_=b><!--M_[--><div id=inside>0<!--M_*4 #text/0--></div><!--M_]2 #text/0 4--></t><script>M._.r.push(_=>(_.e=[1,{value:0}]));M._.j.b=_=>{_.push(\"__tests__/template.marko_3_value 4 __tests__/template.marko_3 4\")};M._.w()</script>\n```\n\n# Render ASYNC\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <div\n      id=\"outside\"\n    >\n      0\n      <!--M_*1 #text/0-->\n    </div>\n    <!--M_[-->\n    <!--M_!^2-->\n    loading...\n    <!--M_!2-->\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"ClosureScopes:value\": _.d = new Set\n        }, _.b = {\n          _: _.a,\n          \"ClosureSignalIndex:value\": 0,\n          \"#BranchAccessor\": \"#text/1\"\n        }], _.b[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.a), (_.d).add(_.b), _.c),\n        \"__tests__/template.marko_0 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/div/#comment\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/#text\nINSERT html/body/#comment2\nINSERT html/body/#comment3\nINSERT html/head/style\nINSERT html/head/style/#text\nINSERT t\nINSERT t/#comment\nREMOVE html/head/style after html/body/#comment3\nINSERT html/head/style\nREMOVE t after html/body/#comment3\nINSERT html/body/script\n```\n\n# Render End\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <div\n      id=\"outside\"\n    >\n      0\n      <!--M_*1 #text/0-->\n    </div>\n    <!--M_[-->\n    <!--M_[-->\n    <div\n      id=\"inside\"\n    >\n      0\n      <!--M_*4 #text/0-->\n    </div>\n    <!--M_]2 #text/0 4-->\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"ClosureScopes:value\": _.d = new Set\n        }, _.b = {\n          _: _.a,\n          \"ClosureSignalIndex:value\": 0,\n          \"#BranchAccessor\": \"#text/1\"\n        }], _.b[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.a), (_.d).add(_.b), _.c),\n        \"__tests__/template.marko_0 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    <script>\n      M._.r.push(_ =&gt; (_.e = [1,\n      {\n        value: 0\n      }]));\n      M._.j.b = _ =&gt;\n      {\n        _.push(\n          \"__tests__/template.marko_3_value 4 __tests__/template.marko_3 4\"\n          )\n      };\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT t\nINSERT html/body/#comment1\nINSERT html/body/div1\nINSERT html/body/div1/#text\nINSERT html/body/div1/#comment\nINSERT html/body/#comment2\nREMOVE t after html/body/script0\nREMOVE #text after #comment\nREMOVE #comment after html/body/#comment0\nREMOVE #comment after html/body/#comment0\nINSERT html/body/#comment1, html/body/div1, html/body/#comment2\nINSERT html/body/script1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/template.marko",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\nlet/value=0\nscript -- await resolveAfter(0, 1); value = 1\ndiv#outside -- ${value}\ntry\n  @placeholder -- loading...\n  await|value|=resolveAfter(value, 3)\n    div#inside -- ${value}\n    script -- console.log(`\\nsetup effect ran`);\n    script -- console.log(`\\neffect ran value=${value}`);\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { after, flush, wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{}, after(2), flush, wait],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-chain/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-chain/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  6\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-chain/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  6\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-chain/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-chain/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div> </div>\";\nexport const $walks = /* next(1), get, out(1) */\"D l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $z = ($scope, z) => _._text($scope[\"#text/0\"], z);\nconst $y = ($scope, y) => $z($scope, y * 3);\nconst $x = /* @__PURE__ */_._let(\"x/1\", $scope => $y($scope, $scope.x * 2));\nexport function $setup($scope) {\n  $x($scope, 1);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-chain/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let x = 1;\n  const y = x * 2;\n  const z = y * 3;\n  _._html(`<div>${_._escape(z)}</div>`);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-chain/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  6\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-chain/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      6\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-chain/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  6\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-chain/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>6</div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      6\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-chain/template.marko",
    "content": "<let/x = 1/>\n<const/y = x*2/>\n<const/z = y*3/>\n<div>${z}</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$clickCount__script\": \"m\",\n      \"$$clickCount\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <button>\n    0\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    1\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  <button>\n    0\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    1\n  </button>\n</div>\n```\n\n# Mutations\n```\nUPDATE div/button/#text \"0\" => \"1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component/__snapshots__/dom.expected/tags/counter.js",
    "content": "export const $template = \"<button> </button>\";\nexport const $walks = /* get, next(1), get, out(1) */\" D l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $clickCount__script = _._script(\"__tests__/tags/counter.marko_0_clickCount\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $clickCount($scope, $scope.clickCount + 1);\n}));\nconst $clickCount = /* @__PURE__ */_._let(\"clickCount/2\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.clickCount);\n  $clickCount__script($scope);\n});\nexport function $setup($scope) {\n  $clickCount($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/tags/counter.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 112 (min) 94 (brotli)\nconst $clickCount__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $clickCount($scope, $scope.c + 1);\n    }),\n  ),\n  $clickCount = _._let(2, ($scope) => {\n    (_._text($scope.b, $scope.c), $clickCount__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<div>${_counter_template}</div>`;\nexport const $walks = /* next(1), <counter>, out(1) */`D/${_counter_walks}&l`;\nimport { $setup as _counter, $template as _counter_template, $walks as _counter_walks } from \"./tags/counter.marko\";\nexport function $setup($scope) {\n  _counter($scope[\"#childScope/0\"]);\n}\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component/__snapshots__/html.expected/tags/counter.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/counter.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let clickCount = 0;\n  _._html(`<button>${_._escape(clickCount)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/tags/counter.marko_0_clickCount\");\n  _._scope($scope0_id, {\n    clickCount\n  }, \"__tests__/tags/counter.marko\", 0, {\n    clickCount: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _counter from \"./tags/counter.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div>\");\n  _counter({});\n  _._html(\"</div>\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <button>\n    0\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    1\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        0\n        <!--M_*2 #text/1-->\n      </button>\n      <!--M_*2 #button/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 1,\n        {\n          clickCount: 0\n        }]),\n        \"__tests__/tags/counter.marko_0_clickCount 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        1\n        <!--M_*2 #text/1-->\n      </button>\n      <!--M_*2 #button/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 1,\n        {\n          clickCount: 0\n        }]),\n        \"__tests__/tags/counter.marko_0_clickCount 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/button/#text \"0\" => \"1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  <button>\n    0\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><button>0<!--M_*2 #text/1--></button><!--M_*2 #button/0--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,1,{clickCount:0}]),\"__tests__/tags/counter.marko_0_clickCount 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        0\n        <!--M_*2 #text/1-->\n      </button>\n      <!--M_*2 #button/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 1,\n        {\n          clickCount: 0\n        }]),\n        \"__tests__/tags/counter.marko_0_clickCount 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/button\nINSERT html/body/div/button/#text\nINSERT html/body/div/button/#comment\nINSERT html/body/div/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component/tags/counter.marko",
    "content": "<let/clickCount = 0/>\n<button onClick() {\n  clickCount++\n}>${clickCount}</button>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component/template.marko",
    "content": "<div>\n  <counter/>\n</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-attrs/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$onClick__script\": \"r\",\n      \"$$onClick$1\": \"m\",\n      \"$$clickCount\": \"n\",\n      \"$$onClick\": \"a\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-attrs/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-attrs/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n# Mutations\n```\nINSERT button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"0\" => \"1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-attrs/__snapshots__/dom.expected/tags/my-button.js",
    "content": "export const $template = \"<button> </button>\";\nexport const $walks = /* get, next(1), get, out(1) */\" D l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $onClick__script = _._script(\"__tests__/tags/my-button.marko_0_onClick\", $scope => _._on($scope[\"#button/0\"], \"click\", $scope.onClick));\nexport const $onClick = /* @__PURE__ */_._const(\"onClick\", $onClick__script);\nexport const $text = ($scope, text) => _._text($scope[\"#text/1\"], text);\nexport const $input = ($scope, input) => {\n  $onClick($scope, input.onClick);\n  $text($scope, input.text);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/my-button.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-attrs/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 196 (min) 138 (brotli)\nconst $onClick__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", $scope.e),\n  ),\n  $onClick$1 = _._const(4, $onClick__script),\n  $clickCount = _._let(1, ($scope) => {\n    ((($scope, text) => {\n      _._text($scope.b, text);\n    })($scope.a, $scope.b),\n      $onClick$1($scope.a, $onClick($scope)));\n  });\nfunction $onClick($scope) {\n  return function () {\n    $clickCount($scope, $scope.b + 1);\n  };\n}\n(_._resume(\"b0\", $onClick), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-attrs/__snapshots__/dom.expected/template.js",
    "content": "export const $template = _myButton_template;\nexport const $walks = /* <my-button> */`/${_myButton_walks}&`;\nimport { $setup as _myButton, $text as _myButton_input_text, $onClick as _myButton_input_onClick, $template as _myButton_template, $walks as _myButton_walks } from \"./tags/my-button.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $clickCount = /* @__PURE__ */_._let(\"clickCount/1\", $scope => {\n  _myButton_input_text($scope[\"#childScope/0\"], $scope.clickCount);\n  _myButton_input_onClick($scope[\"#childScope/0\"], $onClick($scope));\n});\nexport function $setup($scope) {\n  _myButton($scope[\"#childScope/0\"]);\n  $clickCount($scope, 0);\n}\nfunction $onClick($scope) {\n  return function () {\n    $clickCount($scope, $scope.clickCount + 1);\n  };\n}\n_._resume(\"__tests__/template.marko_0/onClick\", $onClick);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-attrs/__snapshots__/html.expected/tags/my-button.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/my-button.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    onClick,\n    text\n  } = input;\n  _._html(`<button>${_._escape(text)}${_._el_resume($scope0_id, \"#text/1\", _._serialize_guard($scope0_reason, /* input.text */0))}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/tags/my-button.marko_0_onClick\");\n  _._scope($scope0_id, {\n    onClick\n  }, \"__tests__/tags/my-button.marko\", 0, {\n    onClick: \"1:10\"\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-attrs/__snapshots__/html.expected/template.js",
    "content": "import _myButton from \"./tags/my-button.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let clickCount = 0;\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason(/* clickCount */1);\n  _myButton({\n    text: clickCount,\n    onClick: _._resume(function () {\n      clickCount++;\n    }, \"__tests__/template.marko_0/onClick\", $scope0_id)\n  });\n  _._scope($scope0_id, {\n    clickCount,\n    \"#childScope/0\": _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0, {\n    clickCount: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-attrs/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-attrs/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          clickCount: 0,\n          \"#childScope/0\": _.a = {}\n        }, _.a], _.a.onClick = _._[\n          \"__tests__/template.marko_0/onClick\"\n          ](_.c), _.b),\n        \"__tests__/tags/my-button.marko_0_onClick 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          clickCount: 0,\n          \"#childScope/0\": _.a = {}\n        }, _.a], _.a.onClick = _._[\n          \"__tests__/template.marko_0/onClick\"\n          ](_.c), _.b),\n        \"__tests__/tags/my-button.marko_0_onClick 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"0\" => \"1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-attrs/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  0\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-attrs/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>0<!--M_*2 #text/1--></button><!--M_*2 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.c={clickCount:0,\"#childScope/0\":_.a={}},_.a],_.a.onClick=_._[\"__tests__/template.marko_0/onClick\"](_.c),_.b),\"__tests__/tags/my-button.marko_0_onClick 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          clickCount: 0,\n          \"#childScope/0\": _.a = {}\n        }, _.a], _.a.onClick = _._[\n          \"__tests__/template.marko_0/onClick\"\n          ](_.c), _.b),\n        \"__tests__/tags/my-button.marko_0_onClick 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-attrs/tags/my-button.marko",
    "content": "<attrs/{ onClick, text }/>\n<button onClick=onClick>${text}</button>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-attrs/template.marko",
    "content": "<let/clickCount = 0/>\n<my-button \n  text=clickCount\n  onClick() {\n    clickCount++\n  }\n/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-attrs/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$onClick__script\": \"r\",\n      \"$$onClick$1\": \"m\",\n      \"$$clickCount\": \"n\",\n      \"$$onClick\": \"a\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n# Mutations\n```\nINSERT button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"1\" => \"2\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input/__snapshots__/dom.expected/tags/my-button.js",
    "content": "export const $template = \"<button> </button>\";\nexport const $walks = /* get, next(1), get, out(1) */\" D l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $onClick__script = _._script(\"__tests__/tags/my-button.marko_0_onClick\", $scope => _._on($scope[\"#button/0\"], \"click\", $scope.onClick));\nexport const $onClick = /* @__PURE__ */_._const(\"onClick\", $onClick__script);\nexport const $text = ($scope, text) => _._text($scope[\"#text/1\"], text);\nexport const $input = ($scope, input) => {\n  $onClick($scope, input.onClick);\n  $text($scope, input.text);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/my-button.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 196 (min) 138 (brotli)\nconst $onClick__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", $scope.e),\n  ),\n  $onClick$1 = _._const(4, $onClick__script),\n  $clickCount = _._let(1, ($scope) => {\n    ((($scope, text) => {\n      _._text($scope.b, text);\n    })($scope.a, $scope.b),\n      $onClick$1($scope.a, $onClick($scope)));\n  });\nfunction $onClick($scope) {\n  return function () {\n    $clickCount($scope, $scope.b + 1);\n  };\n}\n(_._resume(\"b0\", $onClick), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input/__snapshots__/dom.expected/template.js",
    "content": "export const $template = _myButton_template;\nexport const $walks = /* <my-button> */`/${_myButton_walks}&`;\nimport { $setup as _myButton, $text as _myButton_input_text, $onClick as _myButton_input_onClick, $template as _myButton_template, $walks as _myButton_walks } from \"./tags/my-button.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $clickCount = /* @__PURE__ */_._let(\"clickCount/1\", $scope => {\n  _myButton_input_text($scope[\"#childScope/0\"], $scope.clickCount);\n  _myButton_input_onClick($scope[\"#childScope/0\"], $onClick($scope));\n});\nexport function $setup($scope) {\n  _myButton($scope[\"#childScope/0\"]);\n  $clickCount($scope, 0);\n}\nfunction $onClick($scope) {\n  return function () {\n    $clickCount($scope, $scope.clickCount + 1);\n  };\n}\n_._resume(\"__tests__/template.marko_0/onClick\", $onClick);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input/__snapshots__/html.expected/tags/my-button.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/my-button.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    onClick,\n    text\n  } = input;\n  _._html(`<button>${_._escape(text)}${_._el_resume($scope0_id, \"#text/1\", _._serialize_guard($scope0_reason, /* input.text */0))}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/tags/my-button.marko_0_onClick\");\n  _._scope($scope0_id, {\n    onClick\n  }, \"__tests__/tags/my-button.marko\", 0, {\n    onClick: \"1:10\"\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input/__snapshots__/html.expected/template.js",
    "content": "import _myButton from \"./tags/my-button.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let clickCount = 0;\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason(/* clickCount */1);\n  _myButton({\n    text: clickCount,\n    onClick: _._resume(function () {\n      clickCount++;\n    }, \"__tests__/template.marko_0/onClick\", $scope0_id)\n  });\n  _._scope($scope0_id, {\n    clickCount,\n    \"#childScope/0\": _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0, {\n    clickCount: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          clickCount: 0,\n          \"#childScope/0\": _.a = {}\n        }, _.a], _.a.onClick = _._[\n          \"__tests__/template.marko_0/onClick\"\n          ](_.c), _.b),\n        \"__tests__/tags/my-button.marko_0_onClick 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          clickCount: 0,\n          \"#childScope/0\": _.a = {}\n        }, _.a], _.a.onClick = _._[\n          \"__tests__/template.marko_0/onClick\"\n          ](_.c), _.b),\n        \"__tests__/tags/my-button.marko_0_onClick 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      2\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          clickCount: 0,\n          \"#childScope/0\": _.a = {}\n        }, _.a], _.a.onClick = _._[\n          \"__tests__/template.marko_0/onClick\"\n          ](_.c), _.b),\n        \"__tests__/tags/my-button.marko_0_onClick 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"1\" => \"2\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  0\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>0<!--M_*2 #text/1--></button><!--M_*2 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.c={clickCount:0,\"#childScope/0\":_.a={}},_.a],_.a.onClick=_._[\"__tests__/template.marko_0/onClick\"](_.c),_.b),\"__tests__/tags/my-button.marko_0_onClick 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          clickCount: 0,\n          \"#childScope/0\": _.a = {}\n        }, _.a], _.a.onClick = _._[\n          \"__tests__/template.marko_0/onClick\"\n          ](_.c), _.b),\n        \"__tests__/tags/my-button.marko_0_onClick 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input/tags/my-button.marko",
    "content": "<const/{ onClick, text } = input/>\n<button onClick=onClick>${text}</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input/template.marko",
    "content": "<let/clickCount = 0/>\n<my-button \n  text=clickCount\n  onClick() {\n    clickCount++\n  }\n/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-alias/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$onClick__script\": \"r\",\n      \"$$onClick$1\": \"m\",\n      \"$$clickCount\": \"n\",\n      \"$$onClick\": \"a\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-alias/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-alias/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n# Mutations\n```\nINSERT button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"1\" => \"2\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-alias/__snapshots__/dom.expected/tags/my-button.js",
    "content": "export const $template = \"<button> </button>\";\nexport const $walks = /* get, next(1), get, out(1) */\" D l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $onClick__script = _._script(\"__tests__/tags/my-button.marko_0_onClick\", $scope => _._on($scope[\"#button/0\"], \"click\", $scope.onClick));\nexport const $onClick = /* @__PURE__ */_._const(\"onClick\", $onClick__script);\nexport const $text = ($scope, text) => _._text($scope[\"#text/1\"], text);\nexport const $input = ($scope, input) => {\n  $text($scope, input.text);\n  $onClick($scope, input.onClick);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/my-button.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-alias/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 196 (min) 143 (brotli)\nconst $onClick__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", $scope.f),\n  ),\n  $onClick$1 = _._const(5, $onClick__script),\n  $clickCount = _._let(1, ($scope) => {\n    ((($scope, text) => {\n      _._text($scope.b, text);\n    })($scope.a, $scope.b),\n      $onClick$1($scope.a, $onClick($scope)));\n  });\nfunction $onClick($scope) {\n  return function () {\n    $clickCount($scope, $scope.b + 1);\n  };\n}\n(_._resume(\"b0\", $onClick), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-alias/__snapshots__/dom.expected/template.js",
    "content": "export const $template = _myButton_template;\nexport const $walks = /* <my-button> */`/${_myButton_walks}&`;\nimport { $setup as _myButton, $text as _myButton_input_text, $onClick as _myButton_input_onClick, $template as _myButton_template, $walks as _myButton_walks } from \"./tags/my-button.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $clickCount = /* @__PURE__ */_._let(\"clickCount/1\", $scope => {\n  _myButton_input_text($scope[\"#childScope/0\"], $scope.clickCount);\n  _myButton_input_onClick($scope[\"#childScope/0\"], $onClick($scope));\n});\nexport function $setup($scope) {\n  _myButton($scope[\"#childScope/0\"]);\n  $clickCount($scope, 0);\n}\nfunction $onClick($scope) {\n  return function () {\n    $clickCount($scope, $scope.clickCount + 1);\n  };\n}\n_._resume(\"__tests__/template.marko_0/onClick\", $onClick);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-alias/__snapshots__/html.expected/tags/my-button.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/my-button.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const attrs = input;\n  const {\n    text\n  } = input;\n  const {\n    onClick\n  } = attrs;\n  _._html(`<button>${_._escape(text)}${_._el_resume($scope0_id, \"#text/1\", _._serialize_guard($scope0_reason, /* input.text */0))}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/tags/my-button.marko_0_onClick\");\n  _._scope($scope0_id, {\n    onClick\n  }, \"__tests__/tags/my-button.marko\", 0, {\n    onClick: \"3:10\"\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-alias/__snapshots__/html.expected/template.js",
    "content": "import _myButton from \"./tags/my-button.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let clickCount = 0;\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason(/* clickCount */1);\n  _myButton({\n    text: clickCount,\n    onClick: _._resume(function () {\n      clickCount++;\n    }, \"__tests__/template.marko_0/onClick\", $scope0_id)\n  });\n  _._scope($scope0_id, {\n    clickCount,\n    \"#childScope/0\": _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0, {\n    clickCount: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-alias/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-alias/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          clickCount: 0,\n          \"#childScope/0\": _.a = {}\n        }, _.a], _.a.onClick = _._[\n          \"__tests__/template.marko_0/onClick\"\n          ](_.c), _.b),\n        \"__tests__/tags/my-button.marko_0_onClick 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          clickCount: 0,\n          \"#childScope/0\": _.a = {}\n        }, _.a], _.a.onClick = _._[\n          \"__tests__/template.marko_0/onClick\"\n          ](_.c), _.b),\n        \"__tests__/tags/my-button.marko_0_onClick 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      2\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          clickCount: 0,\n          \"#childScope/0\": _.a = {}\n        }, _.a], _.a.onClick = _._[\n          \"__tests__/template.marko_0/onClick\"\n          ](_.c), _.b),\n        \"__tests__/tags/my-button.marko_0_onClick 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"1\" => \"2\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-alias/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  0\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-alias/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>0<!--M_*2 #text/1--></button><!--M_*2 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.c={clickCount:0,\"#childScope/0\":_.a={}},_.a],_.a.onClick=_._[\"__tests__/template.marko_0/onClick\"](_.c),_.b),\"__tests__/tags/my-button.marko_0_onClick 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          clickCount: 0,\n          \"#childScope/0\": _.a = {}\n        }, _.a], _.a.onClick = _._[\n          \"__tests__/template.marko_0/onClick\"\n          ](_.c), _.b),\n        \"__tests__/tags/my-button.marko_0_onClick 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-alias/tags/my-button.marko",
    "content": "<const/attrs = input/>\n<const/{ text } = input/>\n<const/{ onClick } = attrs/>\n<button onClick=onClick>${text}</button>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-alias/template.marko",
    "content": "<let/clickCount = 0/>\n<my-button \n  text=clickCount\n  onClick() {\n    clickCount++\n  }\n/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-alias/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-same-source-alias/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$onClick__script\": \"r\",\n      \"$$onClick$1\": \"m\",\n      \"$$textAlias\": \"n\",\n      \"$$clickCount\": \"a\",\n      \"$$onClick\": \"c\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-same-source-alias/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0 0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1 1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2 2\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-same-source-alias/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  0 0\n</button>\n```\n\n# Mutations\n```\nINSERT button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1 1\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text0 \"0\" => \"1\"\nUPDATE button/#text2 \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2 2\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text0 \"1\" => \"2\"\nUPDATE button/#text2 \"1\" => \"2\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-same-source-alias/__snapshots__/dom.expected/tags/my-button.js",
    "content": "export const $template = \"<button><!> <!></button>\";\nexport const $walks = /* get, next(1), replace, over(2), replace, out(1) */\" D%c%l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $onClick__script = _._script(\"__tests__/tags/my-button.marko_0_onClick\", $scope => _._on($scope[\"#button/0\"], \"click\", $scope.onClick));\nexport const $onClick = /* @__PURE__ */_._const(\"onClick\", $onClick__script);\nexport const $text = ($scope, text) => {\n  _._text($scope[\"#text/1\"], text);\n  $textAlias($scope, text);\n};\nconst $textAlias = ($scope, text) => _._text($scope[\"#text/2\"], text);\nexport const $input = ($scope, input) => {\n  $onClick($scope, input.onClick);\n  $text($scope, input.text);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/my-button.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-same-source-alias/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 227 (min) 156 (brotli)\nconst $onClick__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", $scope.f),\n  ),\n  $onClick$1 = _._const(5, $onClick__script),\n  $textAlias = ($scope, text) => _._text($scope.c, text),\n  $clickCount = _._let(1, ($scope) => {\n    ((($scope, text) => {\n      (_._text($scope.b, text), $textAlias($scope, text));\n    })($scope.a, $scope.b),\n      $onClick$1($scope.a, $onClick($scope)));\n  });\nfunction $onClick($scope) {\n  return function () {\n    $clickCount($scope, $scope.b + 1);\n  };\n}\n(_._resume(\"b0\", $onClick), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-same-source-alias/__snapshots__/dom.expected/template.js",
    "content": "export const $template = _myButton_template;\nexport const $walks = /* <my-button> */`/${_myButton_walks}&`;\nimport { $setup as _myButton, $text as _myButton_input_text, $onClick as _myButton_input_onClick, $template as _myButton_template, $walks as _myButton_walks } from \"./tags/my-button.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $clickCount = /* @__PURE__ */_._let(\"clickCount/1\", $scope => {\n  _myButton_input_text($scope[\"#childScope/0\"], $scope.clickCount);\n  _myButton_input_onClick($scope[\"#childScope/0\"], $onClick($scope));\n});\nexport function $setup($scope) {\n  _myButton($scope[\"#childScope/0\"]);\n  $clickCount($scope, 0);\n}\nfunction $onClick($scope) {\n  return function () {\n    $clickCount($scope, $scope.clickCount + 1);\n  };\n}\n_._resume(\"__tests__/template.marko_0/onClick\", $onClick);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-same-source-alias/__snapshots__/html.expected/tags/my-button.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/my-button.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    onClick,\n    text\n  } = input;\n  const {\n    text: textAlias\n  } = input;\n  _._html(`<button>${_._escape(text)}${_._el_resume($scope0_id, \"#text/1\", _._serialize_guard($scope0_reason, /* input.text */0))} ${_._sep(_._serialize_guard($scope0_reason, /* input.text */0))}${_._escape(textAlias)}${_._el_resume($scope0_id, \"#text/2\", _._serialize_guard($scope0_reason, /* input.text */0))}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/tags/my-button.marko_0_onClick\");\n  _._scope($scope0_id, {\n    onClick\n  }, \"__tests__/tags/my-button.marko\", 0, {\n    onClick: \"1:10\"\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-same-source-alias/__snapshots__/html.expected/template.js",
    "content": "import _myButton from \"./tags/my-button.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let clickCount = 0;\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason(/* clickCount */1);\n  _myButton({\n    text: clickCount,\n    onClick: _._resume(function () {\n      clickCount++;\n    }, \"__tests__/template.marko_0/onClick\", $scope0_id)\n  });\n  _._scope($scope0_id, {\n    clickCount,\n    \"#childScope/0\": _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0, {\n    clickCount: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-same-source-alias/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0 0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1 1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2 2\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-same-source-alias/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*2 #text/1-->\n       \n      <!---->\n      0\n      <!--M_*2 #text/2-->\n    </button>\n    <!--M_*2 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          clickCount: 0,\n          \"#childScope/0\": _.a = {}\n        }, _.a], _.a.onClick = _._[\n          \"__tests__/template.marko_0/onClick\"\n          ](_.c), _.b),\n        \"__tests__/tags/my-button.marko_0_onClick 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*2 #text/1-->\n       \n      <!---->\n      1\n      <!--M_*2 #text/2-->\n    </button>\n    <!--M_*2 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          clickCount: 0,\n          \"#childScope/0\": _.a = {}\n        }, _.a], _.a.onClick = _._[\n          \"__tests__/template.marko_0/onClick\"\n          ](_.c), _.b),\n        \"__tests__/tags/my-button.marko_0_onClick 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text0 \"0\" => \"1\"\nUPDATE html/body/button/#text2 \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      2\n      <!--M_*2 #text/1-->\n       \n      <!---->\n      2\n      <!--M_*2 #text/2-->\n    </button>\n    <!--M_*2 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          clickCount: 0,\n          \"#childScope/0\": _.a = {}\n        }, _.a], _.a.onClick = _._[\n          \"__tests__/template.marko_0/onClick\"\n          ](_.c), _.b),\n        \"__tests__/tags/my-button.marko_0_onClick 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text0 \"1\" => \"2\"\nUPDATE html/body/button/#text2 \"1\" => \"2\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-same-source-alias/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  0 0\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-same-source-alias/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>0<!--M_*2 #text/1--> <!>0<!--M_*2 #text/2--></button><!--M_*2 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.c={clickCount:0,\"#childScope/0\":_.a={}},_.a],_.a.onClick=_._[\"__tests__/template.marko_0/onClick\"](_.c),_.b),\"__tests__/tags/my-button.marko_0_onClick 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*2 #text/1-->\n       \n      <!---->\n      0\n      <!--M_*2 #text/2-->\n    </button>\n    <!--M_*2 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          clickCount: 0,\n          \"#childScope/0\": _.a = {}\n        }, _.a], _.a.onClick = _._[\n          \"__tests__/template.marko_0/onClick\"\n          ](_.c), _.b),\n        \"__tests__/tags/my-button.marko_0_onClick 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text0\nINSERT html/body/button/#comment0\nINSERT html/body/button/#text1\nINSERT html/body/button/#comment1\nINSERT html/body/button/#text2\nINSERT html/body/button/#comment2\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-same-source-alias/tags/my-button.marko",
    "content": "<const/{ onClick, text } = input/>\n<const/{ text: textAlias } = input/>\n<button onClick=onClick>${text} ${textAlias}</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-same-source-alias/template.marko",
    "content": "<let/clickCount = 0/>\n<my-button \n  text=clickCount\n  onClick() {\n    clickCount++\n  }\n/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-same-source-alias/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-same-source-alias-within-pattern/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"n\",\n      \"$$onClick__script\": \"o\",\n      \"$$onClick$1\": \"r\",\n      \"$$text\": \"c\",\n      \"$$textAlias\": \"e\",\n      \"$$clickCount\": \"m\",\n      \"$$onClick2\": \"i\",\n      \"$$onClick\": \"u\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-same-source-alias-within-pattern/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0 0\n</button>\n<button>\n  0 0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1 1\n</button>\n<button>\n  1 1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2 2\n</button>\n<button>\n  2 2\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-same-source-alias-within-pattern/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  0 0\n</button>\n<button>\n  0 0\n</button>\n```\n\n# Mutations\n```\nINSERT button0, button1\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1 1\n</button>\n<button>\n  1 1\n</button>\n```\n\n# Mutations\n```\nUPDATE button0/#text0 \"0\" => \"1\"\nUPDATE button0/#text2 \"0\" => \"1\"\nUPDATE button1/#text0 \"0\" => \"1\"\nUPDATE button1/#text2 \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2 2\n</button>\n<button>\n  2 2\n</button>\n```\n\n# Mutations\n```\nUPDATE button0/#text0 \"1\" => \"2\"\nUPDATE button0/#text2 \"1\" => \"2\"\nUPDATE button1/#text0 \"1\" => \"2\"\nUPDATE button1/#text2 \"1\" => \"2\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-same-source-alias-within-pattern/__snapshots__/dom.expected/tags/my-button.js",
    "content": "export const $template = \"<button><!> <!></button>\";\nexport const $walks = /* get, next(1), replace, over(2), replace, out(1) */\" D%c%l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $onClick__script = _._script(\"__tests__/tags/my-button.marko_0_onClick\", $scope => _._on($scope[\"#button/0\"], \"click\", $scope.onClick));\nexport const $onClick = /* @__PURE__ */_._const(\"onClick\", $onClick__script);\nexport const $text = ($scope, text) => {\n  _._text($scope[\"#text/1\"], text);\n  $textAlias($scope, text);\n};\nconst $textAlias = ($scope, text) => _._text($scope[\"#text/2\"], text);\nexport const $input = ($scope, input) => {\n  $onClick($scope, input.onClick);\n  $value2($scope, input.value);\n};\nexport const $value2 = ($scope, $value) => $text($scope, $value.text);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/my-button.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-same-source-alias-within-pattern/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 342 (min) 194 (brotli)\nconst $onClick__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", $scope.f),\n  ),\n  $onClick$1 = _._const(5, $onClick__script),\n  $text = ($scope, text) => {\n    (_._text($scope.b, text), $textAlias($scope, text));\n  },\n  $textAlias = ($scope, text) => _._text($scope.c, text),\n  $clickCount = _._let(2, ($scope) => {\n    ((($scope, $value) => {\n      $text($scope, $value.text);\n    })($scope.a, { text: $scope.c }),\n      $onClick$1($scope.a, $onClick($scope)),\n      $text($scope.b, $scope.c),\n      $onClick$1($scope.b, $onClick2($scope)));\n  });\nfunction $onClick2($scope) {\n  return function () {\n    $clickCount($scope, $scope.c + 1);\n  };\n}\nfunction $onClick($scope) {\n  return function () {\n    $clickCount($scope, $scope.c + 1);\n  };\n}\n(_._resume(\"b1\", $onClick2), _._resume(\"b0\", $onClick), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-same-source-alias-within-pattern/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `${_myButton_template}${_myButton_template}`;\nexport const $walks = /* <my-button>, <my-button> */`/${_myButton_walks}&/${_myButton_walks}&`;\nimport { $setup as _myButton, $value2 as _myButton_input_value, $onClick as _myButton_input_onClick, $template as _myButton_template, $walks as _myButton_walks, $text as _myButton_input_value_text } from \"./tags/my-button.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $clickCount = /* @__PURE__ */_._let(\"clickCount/2\", $scope => {\n  _myButton_input_value($scope[\"#childScope/0\"], {\n    text: $scope.clickCount\n  });\n  _myButton_input_onClick($scope[\"#childScope/0\"], $onClick($scope));\n  _myButton_input_value_text($scope[\"#childScope/1\"], $scope.clickCount);\n  _myButton_input_onClick($scope[\"#childScope/1\"], $onClick2($scope));\n});\nexport function $setup($scope) {\n  _myButton($scope[\"#childScope/0\"]);\n  _myButton($scope[\"#childScope/1\"]);\n  $clickCount($scope, 0);\n}\nfunction $onClick2($scope) {\n  return function () {\n    $clickCount($scope, $scope.clickCount + 1);\n  };\n}\nfunction $onClick($scope) {\n  return function () {\n    $clickCount($scope, $scope.clickCount + 1);\n  };\n}\n_._resume(\"__tests__/template.marko_0/onClick2\", $onClick2);\n_._resume(\"__tests__/template.marko_0/onClick\", $onClick);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-same-source-alias-within-pattern/__snapshots__/html.expected/tags/my-button.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/my-button.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    onClick,\n    value: {\n      text\n    }\n  } = input;\n  const {\n    value: {\n      text: textAlias\n    }\n  } = input;\n  _._html(`<button>${_._escape(text)}${_._el_resume($scope0_id, \"#text/1\", _._serialize_guard($scope0_reason, /* input.value.text */0))} ${_._sep(_._serialize_guard($scope0_reason, /* input.value.text */0))}${_._escape(textAlias)}${_._el_resume($scope0_id, \"#text/2\", _._serialize_guard($scope0_reason, /* input.value.text */0))}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/tags/my-button.marko_0_onClick\");\n  _._scope($scope0_id, {\n    onClick\n  }, \"__tests__/tags/my-button.marko\", 0, {\n    onClick: \"1:10\"\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-same-source-alias-within-pattern/__snapshots__/html.expected/template.js",
    "content": "import _myButton from \"./tags/my-button.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let clickCount = 0;\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason(/* clickCount */1);\n  _myButton({\n    value: {\n      text: clickCount\n    },\n    onClick: _._resume(function () {\n      clickCount++;\n    }, \"__tests__/template.marko_0/onClick\", $scope0_id)\n  });\n  const $childScope2 = _._peek_scope_id();\n  _._set_serialize_reason(/* clickCount */1);\n  _myButton({\n    onClick: _._resume(function () {\n      clickCount++;\n    }, \"__tests__/template.marko_0/onClick2\", $scope0_id),\n    value: _.attrTag({\n      text: clickCount\n    })\n  });\n  _._scope($scope0_id, {\n    clickCount,\n    \"#childScope/0\": _._existing_scope($childScope),\n    \"#childScope/1\": _._existing_scope($childScope2)\n  }, \"__tests__/template.marko\", 0, {\n    clickCount: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-same-source-alias-within-pattern/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0 0\n</button>\n<button>\n  0 0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1 1\n</button>\n<button>\n  1 1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2 2\n</button>\n<button>\n  2 2\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-same-source-alias-within-pattern/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*2 #text/1-->\n       \n      <!---->\n      0\n      <!--M_*2 #text/2-->\n    </button>\n    <!--M_*2 #button/0-->\n    <button>\n      0\n      <!--M_*3 #text/1-->\n       \n      <!---->\n      0\n      <!--M_*3 #text/2-->\n    </button>\n    <!--M_*3 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.d = {\n          clickCount: 0,\n          \"#childScope/0\": _.a = {},\n          \"#childScope/1\": _.b = {}\n        }, _.a, _.b], _.a.onClick = _._[\n          \"__tests__/template.marko_0/onClick\"\n          ](_.d), _.b.onClick = _._[\n          \"__tests__/template.marko_0/onClick2\"\n          ](_.d), _.c),\n        \"__tests__/tags/my-button.marko_0_onClick 2 3\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*2 #text/1-->\n       \n      <!---->\n      1\n      <!--M_*2 #text/2-->\n    </button>\n    <!--M_*2 #button/0-->\n    <button>\n      1\n      <!--M_*3 #text/1-->\n       \n      <!---->\n      1\n      <!--M_*3 #text/2-->\n    </button>\n    <!--M_*3 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.d = {\n          clickCount: 0,\n          \"#childScope/0\": _.a = {},\n          \"#childScope/1\": _.b = {}\n        }, _.a, _.b], _.a.onClick = _._[\n          \"__tests__/template.marko_0/onClick\"\n          ](_.d), _.b.onClick = _._[\n          \"__tests__/template.marko_0/onClick2\"\n          ](_.d), _.c),\n        \"__tests__/tags/my-button.marko_0_onClick 2 3\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button0/#text0 \"0\" => \"1\"\nUPDATE html/body/button0/#text2 \"0\" => \"1\"\nUPDATE html/body/button1/#text0 \"0\" => \"1\"\nUPDATE html/body/button1/#text2 \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      2\n      <!--M_*2 #text/1-->\n       \n      <!---->\n      2\n      <!--M_*2 #text/2-->\n    </button>\n    <!--M_*2 #button/0-->\n    <button>\n      2\n      <!--M_*3 #text/1-->\n       \n      <!---->\n      2\n      <!--M_*3 #text/2-->\n    </button>\n    <!--M_*3 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.d = {\n          clickCount: 0,\n          \"#childScope/0\": _.a = {},\n          \"#childScope/1\": _.b = {}\n        }, _.a, _.b], _.a.onClick = _._[\n          \"__tests__/template.marko_0/onClick\"\n          ](_.d), _.b.onClick = _._[\n          \"__tests__/template.marko_0/onClick2\"\n          ](_.d), _.c),\n        \"__tests__/tags/my-button.marko_0_onClick 2 3\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button0/#text0 \"1\" => \"2\"\nUPDATE html/body/button0/#text2 \"1\" => \"2\"\nUPDATE html/body/button1/#text0 \"1\" => \"2\"\nUPDATE html/body/button1/#text2 \"1\" => \"2\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-same-source-alias-within-pattern/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  0 0\n</button>\n<button>\n  0 0\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-same-source-alias-within-pattern/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>0<!--M_*2 #text/1--> <!>0<!--M_*2 #text/2--></button><!--M_*2 #button/0--><button>0<!--M_*3 #text/1--> <!>0<!--M_*3 #text/2--></button><!--M_*3 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.d={clickCount:0,\"#childScope/0\":_.a={},\"#childScope/1\":_.b={}},_.a,_.b],_.a.onClick=_._[\"__tests__/template.marko_0/onClick\"](_.d),_.b.onClick=_._[\"__tests__/template.marko_0/onClick2\"](_.d),_.c),\"__tests__/tags/my-button.marko_0_onClick 2 3\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*2 #text/1-->\n       \n      <!---->\n      0\n      <!--M_*2 #text/2-->\n    </button>\n    <!--M_*2 #button/0-->\n    <button>\n      0\n      <!--M_*3 #text/1-->\n       \n      <!---->\n      0\n      <!--M_*3 #text/2-->\n    </button>\n    <!--M_*3 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.d = {\n          clickCount: 0,\n          \"#childScope/0\": _.a = {},\n          \"#childScope/1\": _.b = {}\n        }, _.a, _.b], _.a.onClick = _._[\n          \"__tests__/template.marko_0/onClick\"\n          ](_.d), _.b.onClick = _._[\n          \"__tests__/template.marko_0/onClick2\"\n          ](_.d), _.c),\n        \"__tests__/tags/my-button.marko_0_onClick 2 3\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button0\nINSERT html/body/button0/#text0\nINSERT html/body/button0/#comment0\nINSERT html/body/button0/#text1\nINSERT html/body/button0/#comment1\nINSERT html/body/button0/#text2\nINSERT html/body/button0/#comment2\nINSERT html/body/#comment0\nINSERT html/body/button1\nINSERT html/body/button1/#text0\nINSERT html/body/button1/#comment0\nINSERT html/body/button1/#text1\nINSERT html/body/button1/#comment1\nINSERT html/body/button1/#text2\nINSERT html/body/button1/#comment2\nINSERT html/body/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-same-source-alias-within-pattern/tags/my-button.marko",
    "content": "<const/{ onClick, value: { text } } = input/>\n<const/{ value: { text: textAlias } } = input/>\n<button onClick=onClick>${text} ${textAlias}</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-same-source-alias-within-pattern/template.marko",
    "content": "<let/clickCount = 0/>\n<my-button \n  value={ text: clickCount }\n  onClick() {\n    clickCount++\n  }\n/>\n\n<my-button  onClick() { clickCount++ }>\n  <@value text=clickCount/>\n</>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-input-same-source-alias-within-pattern/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-renderBody/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$onClick__script\": \"r\",\n      \"$$onClick$1\": \"e\",\n      \"$$mybutton_content__clickCount\": \"m\",\n      \"$$clickCount__closure\": \"n\",\n      \"$$clickCount\": \"_\",\n      \"$$onClick\": \"a\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-renderBody/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-renderBody/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n# Mutations\n```\nINSERT button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-renderBody/__snapshots__/dom.expected/tags/my-button.js",
    "content": "export const $template = \"<button><!></button>\";\nexport const $walks = /* get, next(1), replace, out(1) */\" D%l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $onClick__script = _._script(\"__tests__/tags/my-button.marko_0_onClick\", $scope => _._on($scope[\"#button/0\"], \"click\", $scope.onClick));\nexport const $onClick = /* @__PURE__ */_._const(\"onClick\", $onClick__script);\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/1\");\nexport const $content = ($scope, content) => $dynamicTag($scope, content);\nexport const $input = ($scope, input) => {\n  $onClick($scope, input.onClick);\n  $content($scope, input.content);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/my-button.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-renderBody/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 224 (min) 152 (brotli)\nconst $onClick__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", $scope.e),\n  ),\n  $onClick$1 = _._const(4, $onClick__script),\n  $mybutton_content__clickCount = _._closure_get(1, ($scope) =>\n    _._text($scope.a, $scope._.b),\n  ),\n  $clickCount__closure = _._closure($mybutton_content__clickCount),\n  $clickCount = _._let(1, ($scope) => {\n    ($onClick$1($scope.a, $onClick($scope)), $clickCount__closure($scope));\n  });\nfunction $onClick($scope) {\n  return function () {\n    $clickCount($scope, $scope.b + 1);\n  };\n}\n(_._resume(\"b0\", $onClick), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-renderBody/__snapshots__/dom.expected/template.js",
    "content": "export const $template = _myButton_template;\nexport const $walks = /* <my-button> */`/${_myButton_walks}&`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _myButton, $content as _myButton_input_content, $onClick as _myButton_input_onClick, $template as _myButton_template, $walks as _myButton_walks } from \"./tags/my-button.marko\";\nconst $mybutton_content__clickCount = /* @__PURE__ */_._closure_get(\"clickCount\", $scope => _._text($scope[\"#text/0\"], $scope._.clickCount));\nconst $mybutton_content__setup = $mybutton_content__clickCount;\nconst $mybutton_content = /* @__PURE__ */_._content(\"__tests__/template.marko_1_content\", \" \", /* get, over(1) */\" b\", $mybutton_content__setup);\nconst $clickCount__closure = /* @__PURE__ */_._closure($mybutton_content__clickCount);\nconst $clickCount = /* @__PURE__ */_._let(\"clickCount/1\", $scope => {\n  _myButton_input_onClick($scope[\"#childScope/0\"], $onClick($scope));\n  $clickCount__closure($scope);\n});\nexport function $setup($scope) {\n  _myButton($scope[\"#childScope/0\"]);\n  _myButton_input_content($scope[\"#childScope/0\"], $mybutton_content($scope));\n  $clickCount($scope, 0);\n}\nfunction $onClick($scope) {\n  return function () {\n    $clickCount($scope, $scope.clickCount + 1);\n  };\n}\n_._resume(\"__tests__/template.marko_0/onClick\", $onClick);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-renderBody/__snapshots__/html.expected/tags/my-button.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/my-button.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    onClick,\n    content\n  } = input;\n  _._html(\"<button>\");\n  _._dynamic_tag($scope0_id, \"#text/1\", content, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.content */0));\n  _._html(`</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/tags/my-button.marko_0_onClick\");\n  _._scope($scope0_id, {\n    onClick\n  }, \"__tests__/tags/my-button.marko\", 0, {\n    onClick: \"1:10\"\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-renderBody/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _myButton from \"./tags/my-button.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $clickCount__closures = new Set();\n  let clickCount = 0;\n  const $childScope = _._peek_scope_id();\n  _myButton({\n    onClick: _._resume(function () {\n      clickCount++;\n    }, \"__tests__/template.marko_0/onClick\", $scope0_id),\n    content: _._content(\"__tests__/template.marko_1_content\", () => {\n      _._scope_reason();\n      const $scope1_id = _._scope_id();\n      _._html(`${_._escape(clickCount)}${_._el_resume($scope1_id, \"#text/0\")}`);\n      _._subscribe($clickCount__closures, _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id),\n        \"ClosureSignalIndex:clickCount\": 0\n      }, \"__tests__/template.marko\", \"2:2\"));\n      _._resume_branch($scope1_id);\n    })\n  });\n  _._scope($scope0_id, {\n    clickCount,\n    \"ClosureScopes:clickCount\": $clickCount__closures,\n    \"#childScope/0\": _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0, {\n    clickCount: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-renderBody/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-renderBody/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*3 #text/0-->\n    </button>\n    <!--M_*2 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.b = {\n          clickCount: 0,\n          \"ClosureScopes:clickCount\": _.d = new Set,\n          \"#childScope/0\": _.a = {}\n        }, _.a, _.e = {\n          _: _.b,\n          \"ClosureSignalIndex:clickCount\": 0\n        }], _.a.onClick = _._[\n          \"__tests__/template.marko_0/onClick\"\n          ](_.b), (_.d).add(_.e), _.c),\n        \"__tests__/tags/my-button.marko_0_onClick 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*3 #text/0-->\n    </button>\n    <!--M_*2 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.b = {\n          clickCount: 0,\n          \"ClosureScopes:clickCount\": _.d = new Set,\n          \"#childScope/0\": _.a = {}\n        }, _.a, _.e = {\n          _: _.b,\n          \"ClosureSignalIndex:clickCount\": 0\n        }], _.a.onClick = _._[\n          \"__tests__/template.marko_0/onClick\"\n          ](_.b), (_.d).add(_.e), _.c),\n        \"__tests__/tags/my-button.marko_0_onClick 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      2\n      <!--M_*3 #text/0-->\n    </button>\n    <!--M_*2 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.b = {\n          clickCount: 0,\n          \"ClosureScopes:clickCount\": _.d = new Set,\n          \"#childScope/0\": _.a = {}\n        }, _.a, _.e = {\n          _: _.b,\n          \"ClosureSignalIndex:clickCount\": 0\n        }], _.a.onClick = _._[\n          \"__tests__/template.marko_0/onClick\"\n          ](_.b), (_.d).add(_.e), _.c),\n        \"__tests__/tags/my-button.marko_0_onClick 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      3\n      <!--M_*3 #text/0-->\n    </button>\n    <!--M_*2 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.b = {\n          clickCount: 0,\n          \"ClosureScopes:clickCount\": _.d = new Set,\n          \"#childScope/0\": _.a = {}\n        }, _.a, _.e = {\n          _: _.b,\n          \"ClosureSignalIndex:clickCount\": 0\n        }], _.a.onClick = _._[\n          \"__tests__/template.marko_0/onClick\"\n          ](_.b), (_.d).add(_.e), _.c),\n        \"__tests__/tags/my-button.marko_0_onClick 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-renderBody/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  0\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-renderBody/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>0<!--M_*3 #text/0--></button><!--M_*2 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.b={clickCount:0,\"ClosureScopes:clickCount\":_.d=new Set,\"#childScope/0\":_.a={}},_.a,_.e={_:_.b,\"ClosureSignalIndex:clickCount\":0}],_.a.onClick=_._[\"__tests__/template.marko_0/onClick\"](_.b),(_.d).add(_.e),_.c),\"__tests__/tags/my-button.marko_0_onClick 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*3 #text/0-->\n    </button>\n    <!--M_*2 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.b = {\n          clickCount: 0,\n          \"ClosureScopes:clickCount\": _.d = new Set,\n          \"#childScope/0\": _.a = {}\n        }, _.a, _.e = {\n          _: _.b,\n          \"ClosureSignalIndex:clickCount\": 0\n        }], _.a.onClick = _._[\n          \"__tests__/template.marko_0/onClick\"\n          ](_.b), (_.d).add(_.e), _.c),\n        \"__tests__/tags/my-button.marko_0_onClick 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-renderBody/tags/my-button.marko",
    "content": "<attrs/{ onClick, content }/>\n<button onClick=onClick>\n  <${content}/>\n</button>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-renderBody/template.marko",
    "content": "<let/clickCount = 0/>\n<my-button\n  onClick() {\n    clickCount++\n  }\n>\n  ${clickCount}\n</my-button>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-component-renderBody/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-conditional-counter/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$if_content__count\": \"i\",\n      \"$$if_content__setup\": \"a\",\n      \"$$if\": \"n\",\n      \"$$show__script\": \"r\",\n      \"$$show\": \"_\",\n      \"$$count__script\": \"c\",\n      \"$$count\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-conditional-counter/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  class=\"inc\"\n/>\n<button\n  class=\"toggle\"\n/>\n<span>\n  0\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n/>\n<button\n  class=\"toggle\"\n/>\n<span>\n  1\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.toggle\").click();\n```\n```html\n<button\n  class=\"inc\"\n/>\n<button\n  class=\"toggle\"\n/>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n/>\n<button\n  class=\"toggle\"\n/>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.toggle\").click();\n```\n```html\n<button\n  class=\"inc\"\n/>\n<button\n  class=\"toggle\"\n/>\n<span>\n  2\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n/>\n<button\n  class=\"toggle\"\n/>\n<span>\n  3\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-conditional-counter/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button\n  class=\"inc\"\n/>\n<button\n  class=\"toggle\"\n/>\n<span>\n  0\n</span>\n<!---->\n```\n\n# Mutations\n```\nINSERT button0, button1, span, #comment\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n/>\n<button\n  class=\"toggle\"\n/>\n<span>\n  1\n</span>\n<!---->\n```\n\n# Mutations\n```\nUPDATE span/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.toggle\").click();\n```\n```html\n<button\n  class=\"inc\"\n/>\n<button\n  class=\"toggle\"\n/>\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE span after #text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n/>\n<button\n  class=\"toggle\"\n/>\n<!---->\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.toggle\").click();\n```\n```html\n<button\n  class=\"inc\"\n/>\n<button\n  class=\"toggle\"\n/>\n<span>\n  2\n</span>\n<!---->\n```\n\n# Mutations\n```\nINSERT span\nREMOVE #text after span\nUPDATE span/#text \" \" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n/>\n<button\n  class=\"toggle\"\n/>\n<span>\n  3\n</span>\n<!---->\n```\n\n# Mutations\n```\nUPDATE span/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-conditional-counter/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 280 (min) 170 (brotli)\nconst $if_content__count = _._if_closure(2, 0, ($scope) =>\n    _._text($scope.a, $scope._.e),\n  ),\n  $if_content__setup = $if_content__count,\n  $if = _._if(2, \"<span> </span>\", \"D l\", $if_content__setup),\n  $show__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.b, \"click\", function () {\n      $show($scope, !$scope.d);\n    }),\n  ),\n  $show = _._let(3, ($scope) => {\n    ($if($scope, $scope.d ? 0 : 1), $show__script($scope));\n  }),\n  $count__script = _._script(\"a1\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $count($scope, $scope.e + 1);\n    }),\n  ),\n  $count = _._let(4, ($scope) => {\n    ($if_content__count($scope), $count__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-conditional-counter/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button class=inc></button><button class=toggle></button><!><!>\";\nexport const $walks = /* get, over(1), get, over(1), replace, over(2) */\" b b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content__count = /* @__PURE__ */_._if_closure(\"#text/2\", 0, $scope => _._text($scope[\"#text/0\"], $scope._.count));\nconst $if_content__setup = $if_content__count;\nconst $if = /* @__PURE__ */_._if(\"#text/2\", \"<span> </span>\", /* next(1), get, out(1) */\"D l\", $if_content__setup);\nconst $show__script = _._script(\"__tests__/template.marko_0_show\", $scope => _._on($scope[\"#button/1\"], \"click\", function () {\n  $show($scope, !$scope.show);\n}));\nconst $show = /* @__PURE__ */_._let(\"show/3\", $scope => {\n  $if($scope, $scope.show ? 0 : 1);\n  $show__script($scope);\n});\nconst $count__script = _._script(\"__tests__/template.marko_0_count\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $count($scope, $scope.count + 1);\n}));\nconst $count = /* @__PURE__ */_._let(\"count/4\", $scope => {\n  $if_content__count($scope);\n  $count__script($scope);\n});\nexport function $setup($scope) {\n  $show($scope, true);\n  $count($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-conditional-counter/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let show = true;\n  let count = 0;\n  _._html(`<button class=inc></button>${_._el_resume($scope0_id, \"#button/0\")}<button class=toggle></button>${_._el_resume($scope0_id, \"#button/1\")}`);\n  _._if(() => {\n    if (show) {\n      const $scope1_id = _._scope_id();\n      _._html(`<span>${_._escape(count)}${_._el_resume($scope1_id, \"#text/0\")}</span>`);\n      _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"5:2\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/2\", 1, /* show */1, /* show */1, 0, 1);\n  _._script($scope0_id, \"__tests__/template.marko_0_show\");\n  _._script($scope0_id, \"__tests__/template.marko_0_count\");\n  _._scope($scope0_id, {\n    show,\n    count\n  }, \"__tests__/template.marko\", 0, {\n    show: \"1:6\",\n    count: \"2:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-conditional-counter/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  class=\"inc\"\n/>\n<button\n  class=\"toggle\"\n/>\n<span>\n  0\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n/>\n<button\n  class=\"toggle\"\n/>\n<span>\n  1\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.toggle\").click();\n```\n```html\n<button\n  class=\"inc\"\n/>\n<button\n  class=\"toggle\"\n/>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n/>\n<button\n  class=\"toggle\"\n/>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.toggle\").click();\n```\n```html\n<button\n  class=\"inc\"\n/>\n<button\n  class=\"toggle\"\n/>\n<span>\n  2\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n/>\n<button\n  class=\"toggle\"\n/>\n<span>\n  3\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-conditional-counter/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    />\n    <!--M_*1 #button/0-->\n    <button\n      class=\"toggle\"\n    />\n    <!--M_*1 #button/1-->\n    <span>\n      0\n      <!--M_*2 #text/0-->\n    </span>\n    <!--M_|1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          show: !0,\n          count: 0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_0_show 1 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    />\n    <!--M_*1 #button/0-->\n    <button\n      class=\"toggle\"\n    />\n    <!--M_*1 #button/1-->\n    <span>\n      1\n      <!--M_*2 #text/0-->\n    </span>\n    <!--M_|1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          show: !0,\n          count: 0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_0_show 1 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.toggle\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    />\n    <!--M_*1 #button/0-->\n    <button\n      class=\"toggle\"\n    />\n    <!--M_*1 #button/1-->\n    <!--M_|1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          show: !0,\n          count: 0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_0_show 1 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/#comment2 after span\nINSERT html/body/#comment2\nREMOVE span after html/body/#comment2\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    />\n    <!--M_*1 #button/0-->\n    <button\n      class=\"toggle\"\n    />\n    <!--M_*1 #button/1-->\n    <!--M_|1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          show: !0,\n          count: 0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_0_show 1 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.toggle\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    />\n    <!--M_*1 #button/0-->\n    <button\n      class=\"toggle\"\n    />\n    <!--M_*1 #button/1-->\n    <span>\n      2\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          show: !0,\n          count: 0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_0_show 1 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/span\nREMOVE #comment after html/body/span\nUPDATE html/body/span/#text \" \" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    />\n    <!--M_*1 #button/0-->\n    <button\n      class=\"toggle\"\n    />\n    <!--M_*1 #button/1-->\n    <span>\n      3\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          show: !0,\n          count: 0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_0_show 1 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-conditional-counter/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button\n  class=\"inc\"\n/>\n<button\n  class=\"toggle\"\n/>\n<span>\n  0\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-conditional-counter/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button class=inc></button><!--M_*1 #button/0--><button class=toggle></button><!--M_*1 #button/1--><span>0<!--M_*2 #text/0--></span><!--M_|1 #text/2 2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={show:!0,count:0},{_:_.a}]),\"__tests__/template.marko_0_show 1 __tests__/template.marko_0_count 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    />\n    <!--M_*1 #button/0-->\n    <button\n      class=\"toggle\"\n    />\n    <!--M_*1 #button/1-->\n    <span>\n      0\n      <!--M_*2 #text/0-->\n    </span>\n    <!--M_|1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          show: !0,\n          count: 0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_0_show 1 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button0\nINSERT html/body/#comment0\nINSERT html/body/button1\nINSERT html/body/#comment1\nINSERT html/body/span\nINSERT html/body/span/#text\nINSERT html/body/span/#comment\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-conditional-counter/template.marko",
    "content": "<let/show = true/>\n<let/count = 0/>\n<button.inc onClick() { count++; }/>\n<button.toggle onClick() { show = !show; }/>\n<if=show><span>${count}</span></if>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-conditional-counter/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nconst increment = (container: Element) => {\n  container.querySelector<HTMLButtonElement>(\"button.inc\")!.click();\n};\n\nconst toggle = (container: Element) => {\n  container.querySelector<HTMLButtonElement>(\"button.toggle\")!.click();\n};\n\nexport const config: TestConfig = {\n  steps: [{}, increment, toggle, increment, toggle, increment],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$if_content__count\": \"i\",\n      \"$$if_content__setup\": \"c\",\n      \"$$if\": \"r\",\n      \"$$show__script\": \"_\",\n      \"$$show\": \"m\",\n      \"$$count__script\": \"n\",\n      \"$$count\": \"a\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  class=\"inc\"\n/>\n<button\n  class=\"toggle\"\n/>\nThe count is 0\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n/>\n<button\n  class=\"toggle\"\n/>\nThe count is 1\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.toggle\").click();\n```\n```html\n<button\n  class=\"inc\"\n/>\n<button\n  class=\"toggle\"\n/>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n/>\n<button\n  class=\"toggle\"\n/>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.toggle\").click();\n```\n```html\n<button\n  class=\"inc\"\n/>\n<button\n  class=\"toggle\"\n/>\nThe count is 2\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n/>\n<button\n  class=\"toggle\"\n/>\nThe count is 3\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button\n  class=\"inc\"\n/>\n<button\n  class=\"toggle\"\n/>\nThe count is 0\n<!---->\n```\n\n# Mutations\n```\nINSERT button0, button1, #text0, #text1, #comment\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n/>\n<button\n  class=\"toggle\"\n/>\nThe count is 1\n<!---->\n```\n\n# Mutations\n```\nUPDATE #text1 \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.toggle\").click();\n```\n```html\n<button\n  class=\"inc\"\n/>\n<button\n  class=\"toggle\"\n/>\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE #text after #text\nREMOVE #text after #text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n/>\n<button\n  class=\"toggle\"\n/>\n<!---->\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.toggle\").click();\n```\n```html\n<button\n  class=\"inc\"\n/>\n<button\n  class=\"toggle\"\n/>\nThe count is 2\n<!---->\n```\n\n# Mutations\n```\nINSERT #text0, #text1\nREMOVE #text after #text1\nUPDATE #text1 \"\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n/>\n<button\n  class=\"toggle\"\n/>\nThe count is 3\n<!---->\n```\n\n# Mutations\n```\nUPDATE #text1 \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 282 (min) 175 (brotli)\nconst $if_content__count = _._if_closure(2, 0, ($scope) =>\n    _._text($scope.a, $scope._.e),\n  ),\n  $if_content__setup = $if_content__count,\n  $if = _._if(2, \"The count is <!>\", \"b%b\", $if_content__setup),\n  $show__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.b, \"click\", function () {\n      $show($scope, !$scope.d);\n    }),\n  ),\n  $show = _._let(3, ($scope) => {\n    ($if($scope, $scope.d ? 0 : 1), $show__script($scope));\n  }),\n  $count__script = _._script(\"a1\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $count($scope, $scope.e + 1);\n    }),\n  ),\n  $count = _._let(4, ($scope) => {\n    ($if_content__count($scope), $count__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button class=inc></button><button class=toggle></button><!><!>\";\nexport const $walks = /* get, over(1), get, over(1), replace, over(2) */\" b b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content__count = /* @__PURE__ */_._if_closure(\"#text/2\", 0, $scope => _._text($scope[\"#text/0\"], $scope._.count));\nconst $if_content__setup = $if_content__count;\nconst $if = /* @__PURE__ */_._if(\"#text/2\", \"The count is <!>\", /* over(1), replace, over(1) */\"b%b\", $if_content__setup);\nconst $show__script = _._script(\"__tests__/template.marko_0_show\", $scope => _._on($scope[\"#button/1\"], \"click\", function () {\n  $show($scope, !$scope.show);\n}));\nconst $show = /* @__PURE__ */_._let(\"show/3\", $scope => {\n  $if($scope, $scope.show ? 0 : 1);\n  $show__script($scope);\n});\nconst $count__script = _._script(\"__tests__/template.marko_0_count\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $count($scope, $scope.count + 1);\n}));\nconst $count = /* @__PURE__ */_._let(\"count/4\", $scope => {\n  $if_content__count($scope);\n  $count__script($scope);\n});\nexport function $setup($scope) {\n  $show($scope, true);\n  $count($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let show = true;\n  let count = 0;\n  _._html(`<button class=inc></button>${_._el_resume($scope0_id, \"#button/0\")}<button class=toggle></button>${_._el_resume($scope0_id, \"#button/1\")}`);\n  _._if(() => {\n    if (show) {\n      const $scope1_id = _._scope_id();\n      _._html(`The count is <!>${_._escape(count)}${_._el_resume($scope1_id, \"#text/0\")}`);\n      _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"5:2\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/2\");\n  _._script($scope0_id, \"__tests__/template.marko_0_show\");\n  _._script($scope0_id, \"__tests__/template.marko_0_count\");\n  _._scope($scope0_id, {\n    show,\n    count\n  }, \"__tests__/template.marko\", 0, {\n    show: \"1:6\",\n    count: \"2:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  class=\"inc\"\n/>\n<button\n  class=\"toggle\"\n/>\nThe count is 0\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n/>\n<button\n  class=\"toggle\"\n/>\nThe count is 1\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.toggle\").click();\n```\n```html\n<button\n  class=\"inc\"\n/>\n<button\n  class=\"toggle\"\n/>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n/>\n<button\n  class=\"toggle\"\n/>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.toggle\").click();\n```\n```html\n<button\n  class=\"inc\"\n/>\n<button\n  class=\"toggle\"\n/>\nThe count is 2\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n/>\n<button\n  class=\"toggle\"\n/>\nThe count is 3\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    />\n    <!--M_*1 #button/0-->\n    <button\n      class=\"toggle\"\n    />\n    <!--M_*1 #button/1-->\n    <!--M_[-->\n    The count is \n    <!---->\n    0\n    <!--M_*2 #text/0-->\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          show: !0,\n          count: 0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_0_show 1 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text2\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    />\n    <!--M_*1 #button/0-->\n    <button\n      class=\"toggle\"\n    />\n    <!--M_*1 #button/1-->\n    <!--M_[-->\n    The count is \n    <!---->\n    1\n    <!--M_*2 #text/0-->\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          show: !0,\n          count: 0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_0_show 1 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/#text1 \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.toggle\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    />\n    <!--M_*1 #button/0-->\n    <button\n      class=\"toggle\"\n    />\n    <!--M_*1 #button/1-->\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          show: !0,\n          count: 0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_0_show 1 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/#comment2 after #text\nINSERT html/body/#comment2\nREMOVE #comment after html/body/#comment2\nREMOVE #text after html/body/#comment2\nREMOVE #comment after html/body/#comment2\nREMOVE #text after html/body/#comment2\nREMOVE #comment after html/body/#comment2\nREMOVE #text after html/body/#comment2\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    />\n    <!--M_*1 #button/0-->\n    <button\n      class=\"toggle\"\n    />\n    <!--M_*1 #button/1-->\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          show: !0,\n          count: 0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_0_show 1 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.toggle\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    />\n    <!--M_*1 #button/0-->\n    <button\n      class=\"toggle\"\n    />\n    <!--M_*1 #button/1-->\n    The count is 2\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          show: !0,\n          count: 0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_0_show 1 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text0, html/body/#text1\nREMOVE #comment after html/body/#text1\nUPDATE html/body/#text1 \"\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    />\n    <!--M_*1 #button/0-->\n    <button\n      class=\"toggle\"\n    />\n    <!--M_*1 #button/1-->\n    The count is 3\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          show: !0,\n          count: 0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_0_show 1 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/#text1 \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button\n  class=\"inc\"\n/>\n<button\n  class=\"toggle\"\n/>\nThe count is 0\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button class=inc></button><!--M_*1 #button/0--><button class=toggle></button><!--M_*1 #button/1--><!--M_[-->The count is <!>0<!--M_*2 #text/0--><!--M_]1 #text/2 2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={show:!0,count:0},{_:_.a}]),\"__tests__/template.marko_0_show 1 __tests__/template.marko_0_count 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    />\n    <!--M_*1 #button/0-->\n    <button\n      class=\"toggle\"\n    />\n    <!--M_*1 #button/1-->\n    <!--M_[-->\n    The count is \n    <!---->\n    0\n    <!--M_*2 #text/0-->\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          show: !0,\n          count: 0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_0_show 1 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button0\nINSERT html/body/#comment0\nINSERT html/body/button1\nINSERT html/body/#comment1\nINSERT html/body/#comment2\nINSERT html/body/#text0\nINSERT html/body/#comment3\nINSERT html/body/#text1\nINSERT html/body/#comment4\nINSERT html/body/#comment5\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/template.marko",
    "content": "<let/show = true/>\n<let/count = 0/>\n<button.inc onClick() { count++; }/>\n<button.toggle onClick() { show = !show; }/>\n<if=show>The count is ${count}</if>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nconst increment = (container: Element) => {\n  container.querySelector<HTMLButtonElement>(\"button.inc\")!.click();\n};\n\nconst toggle = (container: Element) => {\n  container.querySelector<HTMLButtonElement>(\"button.toggle\")!.click();\n};\n\nexport const config: TestConfig = {\n  steps: [{}, increment, toggle, increment, toggle, increment],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-converge-in-if/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-converge-in-if/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n0\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-converge-in-if/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n0\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #text, #comment1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-converge-in-if/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-converge-in-if/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content__a__OR__b = /* @__PURE__ */_._or(1, $scope => _._text($scope[\"#text/0\"], $scope._.a + $scope._.b));\nconst $if_content__a = /* @__PURE__ */_._if_closure(\"#text/0\", 0, $if_content__a__OR__b);\nconst $if_content__setup = $scope => {\n  $if_content__a._($scope);\n  $if_content__b._($scope);\n};\nconst $if_content__b = /* @__PURE__ */_._if_closure(\"#text/0\", 0, $if_content__a__OR__b);\nconst $a = /* @__PURE__ */_._let(\"a/1\");\nconst $b = /* @__PURE__ */_._let(\"b/2\");\nconst $if = /* @__PURE__ */_._if(\"#text/0\", \" \", /* get, over(1) */\" b\", $if_content__setup);\nexport function $setup($scope) {\n  $a($scope, 0);\n  $b($scope, 0);\n  $if($scope, true ? 0 : 1);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-converge-in-if/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let a = 0;\n  let b = 0;\n  if (true) {\n    const $scope1_id = _._scope_id();\n    _._html(_._escape(a + b));\n  }\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-converge-in-if/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n0\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-converge-in-if/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    0\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-converge-in-if/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n0\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-converge-in-if/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  0\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    0\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-converge-in-if/template.marko",
    "content": "<let/a = 0/>\n<let/b = 0/>\n<if=true>\n  ${a + b}\n</if>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-counter/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$clickCount__script\": \"m\",\n      \"$$clickCount\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-counter/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <button>\n    0\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    1\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    2\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    3\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-counter/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  <button>\n    0\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    1\n  </button>\n</div>\n```\n\n# Mutations\n```\nUPDATE div/button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    2\n  </button>\n</div>\n```\n\n# Mutations\n```\nUPDATE div/button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    3\n  </button>\n</div>\n```\n\n# Mutations\n```\nUPDATE div/button/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-counter/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 112 (min) 94 (brotli)\nconst $clickCount__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $clickCount($scope, $scope.c + 1);\n    }),\n  ),\n  $clickCount = _._let(2, ($scope) => {\n    (_._text($scope.b, $scope.c), $clickCount__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-counter/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div><button> </button></div>\";\nexport const $walks = /* next(1), get, next(1), get, out(2) */\"D D m\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $clickCount__script = _._script(\"__tests__/template.marko_0_clickCount\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $clickCount($scope, $scope.clickCount + 1);\n}));\nconst $clickCount = /* @__PURE__ */_._let(\"clickCount/2\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.clickCount);\n  $clickCount__script($scope);\n});\nexport function $setup($scope) {\n  $clickCount($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-counter/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let clickCount = 0;\n  _._html(`<div><button>${_._escape(clickCount)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}</div>`);\n  _._script($scope0_id, \"__tests__/template.marko_0_clickCount\");\n  _._scope($scope0_id, {\n    clickCount\n  }, \"__tests__/template.marko\", 0, {\n    clickCount: \"2:8\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-counter/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <button>\n    0\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    1\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    2\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    3\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-counter/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        0\n        <!--M_*1 #text/1-->\n      </button>\n      <!--M_*1 #button/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          clickCount: 0\n        }]),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        1\n        <!--M_*1 #text/1-->\n      </button>\n      <!--M_*1 #button/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          clickCount: 0\n        }]),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        2\n        <!--M_*1 #text/1-->\n      </button>\n      <!--M_*1 #button/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          clickCount: 0\n        }]),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        3\n        <!--M_*1 #text/1-->\n      </button>\n      <!--M_*1 #button/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          clickCount: 0\n        }]),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/button/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-counter/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  <button>\n    0\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-counter/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><button>0<!--M_*1 #text/1--></button><!--M_*1 #button/0--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{clickCount:0}]),\"__tests__/template.marko_0_clickCount 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        0\n        <!--M_*1 #text/1-->\n      </button>\n      <!--M_*1 #button/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          clickCount: 0\n        }]),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/button\nINSERT html/body/div/button/#text\nINSERT html/body/div/button/#comment\nINSERT html/body/div/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-counter/template.marko",
    "content": "<div>\n  <let/clickCount = 0/>\n  <button onClick() {\n    clickCount++\n  }>${clickCount}</button>\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-counter/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-counter-const-event-handler/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$increment2__script\": \"r\",\n      \"$$increment2\": \"m\",\n      \"$$clickCount\": \"n\",\n      \"$$increment\": \"c\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-counter-const-event-handler/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-counter-const-event-handler/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n# Mutations\n```\nINSERT button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-counter-const-event-handler/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 176 (min) 129 (brotli)\nconst $increment2__script = _._script(\"a1\", ($scope) =>\n    _._on($scope.a, \"click\", $scope.d),\n  ),\n  $increment2 = _._const(3, $increment2__script),\n  $clickCount = _._let(2, ($scope) => {\n    (_._text($scope.b, $scope.c), $increment2($scope, $increment($scope)));\n  });\nfunction $increment($scope) {\n  return function () {\n    $clickCount($scope, $scope.c + 1);\n  };\n}\n(_._resume(\"a0\", $increment), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-counter-const-event-handler/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button> </button>\";\nexport const $walks = /* get, next(1), get, out(1) */\" D l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $increment2__script = _._script(\"__tests__/template.marko_0_increment\", $scope => _._on($scope[\"#button/0\"], \"click\", $scope.increment));\nconst $increment2 = /* @__PURE__ */_._const(\"increment\", $increment2__script);\nconst $clickCount = /* @__PURE__ */_._let(\"clickCount/2\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.clickCount);\n  $increment2($scope, $increment($scope));\n});\nexport function $setup($scope) {\n  $clickCount($scope, 0);\n}\nfunction $increment($scope) {\n  return function () {\n    $clickCount($scope, $scope.clickCount + 1);\n  };\n}\n_._resume(\"__tests__/template.marko_0/increment\", $increment);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-counter-const-event-handler/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let clickCount = 0;\n  const increment = _._resume(function () {\n    clickCount++;\n  }, \"__tests__/template.marko_0/increment\", $scope0_id);\n  _._html(`<button>${_._escape(clickCount)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_increment\");\n  _._scope($scope0_id, {\n    clickCount,\n    increment\n  }, \"__tests__/template.marko\", 0, {\n    clickCount: \"1:6\",\n    increment: \"2:8\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-counter-const-event-handler/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-counter-const-event-handler/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          clickCount: 0\n        }], _.a.increment = _._[\n          \"__tests__/template.marko_0/increment\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_increment 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          clickCount: 0\n        }], _.a.increment = _._[\n          \"__tests__/template.marko_0/increment\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_increment 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      2\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          clickCount: 0\n        }], _.a.increment = _._[\n          \"__tests__/template.marko_0/increment\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_increment 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      3\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          clickCount: 0\n        }], _.a.increment = _._[\n          \"__tests__/template.marko_0/increment\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_increment 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-counter-const-event-handler/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  0\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-counter-const-event-handler/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>0<!--M_*1 #text/1--></button><!--M_*1 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={clickCount:0}],_.a.increment=_._[\"__tests__/template.marko_0/increment\"](_.a),_.b),\"__tests__/template.marko_0_increment 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          clickCount: 0\n        }], _.a.increment = _._[\n          \"__tests__/template.marko_0/increment\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_increment 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-counter-const-event-handler/template.marko",
    "content": "<let/clickCount = 0/>\n<const/increment() { clickCount++ } />\n<button onClick=increment>${clickCount}</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-counter-const-event-handler/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-counter-multiplier/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$count__OR__multiplier\": \"r\",\n      \"$$count__script\": \"c\",\n      \"$$count\": \"i\",\n      \"$$multiplier__script\": \"m\",\n      \"$$multiplier\": \"n\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-counter-multiplier/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  id=\"multiplier\"\n>\n  increase multiplier (1)\n</button>\n<button\n  id=\"count\"\n>\n  increase count\n</button>\n<div>\n  0\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#count\").click();\n```\n```html\n<button\n  id=\"multiplier\"\n>\n  increase multiplier (1)\n</button>\n<button\n  id=\"count\"\n>\n  increase count\n</button>\n<div>\n  1\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#count\").click();\n```\n```html\n<button\n  id=\"multiplier\"\n>\n  increase multiplier (1)\n</button>\n<button\n  id=\"count\"\n>\n  increase count\n</button>\n<div>\n  2\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#multiplier\").click();\n```\n```html\n<button\n  id=\"multiplier\"\n>\n  increase multiplier (2)\n</button>\n<button\n  id=\"count\"\n>\n  increase count\n</button>\n<div>\n  4\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-counter-multiplier/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button\n  id=\"multiplier\"\n>\n  increase multiplier (1)\n</button>\n<button\n  id=\"count\"\n>\n  increase count\n</button>\n<div>\n  0\n</div>\n```\n\n# Mutations\n```\nINSERT button0, button1, div\n```\n\n# Render\n```js\ncontainer.querySelector(\"button#count\").click();\n```\n```html\n<button\n  id=\"multiplier\"\n>\n  increase multiplier (1)\n</button>\n<button\n  id=\"count\"\n>\n  increase count\n</button>\n<div>\n  1\n</div>\n```\n\n# Mutations\n```\nUPDATE div/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button#count\").click();\n```\n```html\n<button\n  id=\"multiplier\"\n>\n  increase multiplier (1)\n</button>\n<button\n  id=\"count\"\n>\n  increase count\n</button>\n<div>\n  2\n</div>\n```\n\n# Mutations\n```\nUPDATE div/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button#multiplier\").click();\n```\n```html\n<button\n  id=\"multiplier\"\n>\n  increase multiplier (2)\n</button>\n<button\n  id=\"count\"\n>\n  increase count\n</button>\n<div>\n  4\n</div>\n```\n\n# Mutations\n```\nUPDATE button0/#text1 \"1\" => \"2\"\nUPDATE div/#text \"2\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-counter-multiplier/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 256 (min) 150 (brotli)\nconst $count__OR__multiplier = _._or(6, ($scope) =>\n    (($scope, multipliedCount) => _._text($scope.d, multipliedCount))(\n      $scope,\n      $scope.e * $scope.f,\n    ),\n  ),\n  $count__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.c, \"click\", function () {\n      $count($scope, $scope.e + 1);\n    }),\n  ),\n  $count = _._let(4, ($scope) => {\n    ($count__OR__multiplier($scope), $count__script($scope));\n  }),\n  $multiplier__script = _._script(\"a1\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $multiplier($scope, $scope.f + 1);\n    }),\n  ),\n  $multiplier = _._let(5, ($scope) => {\n    (_._text($scope.b, $scope.f),\n      $count__OR__multiplier($scope),\n      $multiplier__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-counter-multiplier/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button id=multiplier>increase multiplier (<!>)</button><button id=count>increase count</button><div> </div>\";\nexport const $walks = /* get, next(1), over(1), replace, out(1), get, over(1), next(1), get, out(1) */\" Db%l bD l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $multipliedCount = ($scope, multipliedCount) => _._text($scope[\"#text/3\"], multipliedCount);\nconst $count__OR__multiplier = /* @__PURE__ */_._or(6, $scope => $multipliedCount($scope, $scope.count * $scope.multiplier));\nconst $count__script = _._script(\"__tests__/template.marko_0_count\", $scope => _._on($scope[\"#button/2\"], \"click\", function () {\n  $count($scope, $scope.count + 1);\n}));\nconst $count = /* @__PURE__ */_._let(\"count/4\", $scope => {\n  $count__OR__multiplier($scope);\n  $count__script($scope);\n});\nconst $multiplier__script = _._script(\"__tests__/template.marko_0_multiplier\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $multiplier($scope, $scope.multiplier + 1);\n}));\nconst $multiplier = /* @__PURE__ */_._let(\"multiplier/5\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.multiplier);\n  $count__OR__multiplier($scope);\n  $multiplier__script($scope);\n});\nexport function $setup($scope) {\n  $count($scope, 0);\n  $multiplier($scope, 1);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-counter-multiplier/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let count = 0;\n  let multiplier = 1;\n  const multipliedCount = count * multiplier;\n  _._html(`<button id=multiplier>increase multiplier (<!>${_._escape(multiplier)}${_._el_resume($scope0_id, \"#text/1\")})</button>${_._el_resume($scope0_id, \"#button/0\")}<button id=count>increase count</button>${_._el_resume($scope0_id, \"#button/2\")}<div>${_._escape(multipliedCount)}${_._el_resume($scope0_id, \"#text/3\")}</div>`);\n  _._script($scope0_id, \"__tests__/template.marko_0_count\");\n  _._script($scope0_id, \"__tests__/template.marko_0_multiplier\");\n  _._scope($scope0_id, {\n    count,\n    multiplier\n  }, \"__tests__/template.marko\", 0, {\n    count: \"1:6\",\n    multiplier: \"2:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-counter-multiplier/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  id=\"multiplier\"\n>\n  increase multiplier (1)\n</button>\n<button\n  id=\"count\"\n>\n  increase count\n</button>\n<div>\n  0\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#count\").click();\n```\n```html\n<button\n  id=\"multiplier\"\n>\n  increase multiplier (1)\n</button>\n<button\n  id=\"count\"\n>\n  increase count\n</button>\n<div>\n  1\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#count\").click();\n```\n```html\n<button\n  id=\"multiplier\"\n>\n  increase multiplier (1)\n</button>\n<button\n  id=\"count\"\n>\n  increase count\n</button>\n<div>\n  2\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#multiplier\").click();\n```\n```html\n<button\n  id=\"multiplier\"\n>\n  increase multiplier (2)\n</button>\n<button\n  id=\"count\"\n>\n  increase count\n</button>\n<div>\n  4\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-counter-multiplier/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"multiplier\"\n    >\n      increase multiplier (\n      <!---->\n      1\n      <!--M_*1 #text/1-->\n      )\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      id=\"count\"\n    >\n      increase count\n    </button>\n    <!--M_*1 #button/2-->\n    <div>\n      0\n      <!--M_*1 #text/3-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0,\n          multiplier: 1\n        }]),\n        \"__tests__/template.marko_0_count 1 __tests__/template.marko_0_multiplier 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#count\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"multiplier\"\n    >\n      increase multiplier (\n      <!---->\n      1\n      <!--M_*1 #text/1-->\n      )\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      id=\"count\"\n    >\n      increase count\n    </button>\n    <!--M_*1 #button/2-->\n    <div>\n      1\n      <!--M_*1 #text/3-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0,\n          multiplier: 1\n        }]),\n        \"__tests__/template.marko_0_count 1 __tests__/template.marko_0_multiplier 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button#count\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"multiplier\"\n    >\n      increase multiplier (\n      <!---->\n      1\n      <!--M_*1 #text/1-->\n      )\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      id=\"count\"\n    >\n      increase count\n    </button>\n    <!--M_*1 #button/2-->\n    <div>\n      2\n      <!--M_*1 #text/3-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0,\n          multiplier: 1\n        }]),\n        \"__tests__/template.marko_0_count 1 __tests__/template.marko_0_multiplier 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button#multiplier\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"multiplier\"\n    >\n      increase multiplier (\n      <!---->\n      2\n      <!--M_*1 #text/1-->\n      )\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      id=\"count\"\n    >\n      increase count\n    </button>\n    <!--M_*1 #button/2-->\n    <div>\n      4\n      <!--M_*1 #text/3-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0,\n          multiplier: 1\n        }]),\n        \"__tests__/template.marko_0_count 1 __tests__/template.marko_0_multiplier 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button0/#text1 \"1\" => \"2\"\nUPDATE html/body/div/#text \"2\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-counter-multiplier/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button\n  id=\"multiplier\"\n>\n  increase multiplier (1)\n</button>\n<button\n  id=\"count\"\n>\n  increase count\n</button>\n<div>\n  0\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-counter-multiplier/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button id=multiplier>increase multiplier (<!>1<!--M_*1 #text/1-->)</button><!--M_*1 #button/0--><button id=count>increase count</button><!--M_*1 #button/2--><div>0<!--M_*1 #text/3--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{count:0,multiplier:1}]),\"__tests__/template.marko_0_count 1 __tests__/template.marko_0_multiplier 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"multiplier\"\n    >\n      increase multiplier (\n      <!---->\n      1\n      <!--M_*1 #text/1-->\n      )\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      id=\"count\"\n    >\n      increase count\n    </button>\n    <!--M_*1 #button/2-->\n    <div>\n      0\n      <!--M_*1 #text/3-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0,\n          multiplier: 1\n        }]),\n        \"__tests__/template.marko_0_count 1 __tests__/template.marko_0_multiplier 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button0\nINSERT html/body/button0/#text0\nINSERT html/body/button0/#comment0\nINSERT html/body/button0/#text1\nINSERT html/body/button0/#comment1\nINSERT html/body/button0/#text2\nINSERT html/body/#comment0\nINSERT html/body/button1\nINSERT html/body/button1/#text\nINSERT html/body/#comment1\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/div/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-counter-multiplier/template.marko",
    "content": "<let/count = 0/>\n<let/multiplier = 1/>\n<const/multipliedCount = count * multiplier/>\n<button id=\"multiplier\" onClick() {\n  multiplier++\n}>increase multiplier (${multiplier})</button>\n<button id=\"count\" onClick() {\n  count++\n}>increase count</button>\n<div>\n  ${multipliedCount}\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-counter-multiplier/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction count(container: Element) {\n  container.querySelector<HTMLButtonElement>(\"button#count\")!.click();\n}\n\nfunction multiplier(container: Element) {\n  container.querySelector<HTMLButtonElement>(\"button#multiplier\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, count, count, multiplier],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-dynamic-native-tag/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"o\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-dynamic-native-tag/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"tagName\":\"h1\"}`\n\n```html\n<h1\n  class=\"a b\"\n>\n  Hello World\n</h1>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-dynamic-native-tag/__snapshots__/csr.expected.md",
    "content": "# Render `{\"tagName\":\"h1\"}`\n\n```html\n<!---->\n<h1\n  class=\"a b\"\n>\n  Hello World\n</h1>\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, h1, #comment1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-dynamic-native-tag/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 42 (min) 46 (brotli)\n_._content_resume(\"a0\", \"Hello World\", \"b\");\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-dynamic-native-tag/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $tagName_content = _._content_resume(\"__tests__/template.marko_1_content\", \"Hello World\", /* over(1) */\"b\");\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\", $tagName_content);\nexport const $tagName = ($scope, tagName) => $dynamicTag($scope, tagName, () => ({\n  class: [\"a\", \"b\"]\n}));\nexport const $input = ($scope, input) => $tagName($scope, input.tagName);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-dynamic-native-tag/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    tagName\n  } = input;\n  _._dynamic_tag($scope0_id, \"#text/0\", tagName, {\n    class: [\"a\", \"b\"]\n  }, _._content_resume(\"__tests__/template.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    _._scope_reason();\n    _._html(\"Hello World\");\n  }, $scope0_id), 0, _._serialize_guard($scope0_reason, /* input.tagName */0));\n  _._serialize_if($scope0_reason, /* input.tagName */0) && _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-dynamic-native-tag/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"tagName\":\"h1\"}`\n\n```html\n<h1\n  class=\"a b\"\n>\n  Hello World\n</h1>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-dynamic-native-tag/__snapshots__/resume.expected.md",
    "content": "# Render `{\"tagName\":\"h1\"}`\n\n```html\n<html>\n  <head />\n  <body>\n    <h1\n      class=\"a b\"\n    >\n      Hello World\n    </h1>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-dynamic-native-tag/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<h1\n  class=\"a b\"\n>\n  Hello World\n</h1>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-dynamic-native-tag/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <h1 class=\"a b\">Hello World</h1>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <h1\n      class=\"a b\"\n    >\n      Hello World\n    </h1>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/h1\nINSERT html/body/h1/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-dynamic-native-tag/template.marko",
    "content": "<attrs/{ tagName }/>\n<${tagName} class=[\"a\", \"b\"]>\n  Hello World\n</>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-dynamic-native-tag/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [{ tagName: \"h1\" }],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-effect-no-deps/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"m\",\n      \"$init\": \"o\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-effect-no-deps/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-effect-no-deps/__snapshots__/csr.expected.md",
    "content": "# Render\n# Mutations\n```\nINSERT #text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-effect-no-deps/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 57 (min) 61 (brotli)\n(_._script(\"a0\", ($scope) => (document.body.className = \"no-deps\")), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-effect-no-deps/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"\";\nexport const $walks = \"\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => (document.body.className = \"no-deps\"));\nexport const $setup = $setup__script;\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-effect-no-deps/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-effect-no-deps/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-effect-no-deps/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </head>\n  <body\n    class=\"no-deps\"\n  />\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body[class] null => \"no-deps\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-effect-no-deps/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-effect-no-deps/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </head>\n  <body />\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/head/script\nINSERT html/head/script/#text\nINSERT html/body\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-effect-no-deps/template.marko",
    "content": "<script>\n  document.body.className = \"no-deps\";\n</script>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-execution-order/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$if_content__message_text\": \"m\",\n      \"$$if_content__setup\": \"r\",\n      \"$$message\": \"_\",\n      \"$$message_text\": \"i\",\n      \"$$if\": \"a\",\n      \"$$show\": \"c\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-execution-order/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  hide\n</button>\nhi\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  hide\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-execution-order/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  hide\n</button>\nhi\n<!---->\n```\n\n# Mutations\n```\nINSERT button, #text, #comment\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  hide\n</button>\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE #text after #text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-execution-order/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 221 (min) 164 (brotli)\nconst $if_content__message_text = _._if_closure(1, 0, ($scope) =>\n    _._text($scope.a, $scope._.d),\n  ),\n  $if_content__setup = $if_content__message_text,\n  $message = _._let(2, ($scope) => $message_text($scope, $scope.c?.text)),\n  $message_text = _._const(3, $if_content__message_text),\n  $if = _._if(1, \" \", \" b\", $if_content__setup),\n  $show = _._let(4, ($scope) => $if($scope, $scope.e ? 0 : 1));\n(_._script(\"a0\", ($scope) =>\n  _._on($scope.a, \"click\", function () {\n    ($message($scope, null), $show($scope, !1));\n  }),\n),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-execution-order/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button>hide</button><!><!>\";\nexport const $walks = /* get, over(1), replace, over(2) */\" b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content__message_text = /* @__PURE__ */_._if_closure(\"#text/1\", 0, $scope => _._text($scope[\"#text/0\"], $scope._.message_text));\nconst $if_content__setup = $if_content__message_text;\nconst $message = /* @__PURE__ */_._let(\"message/2\", $scope => $message_text($scope, $scope.message?.text));\nconst $message_text = /* @__PURE__ */_._const(\"message_text\", $if_content__message_text);\nconst $if = /* @__PURE__ */_._if(\"#text/1\", \" \", /* get, over(1) */\" b\", $if_content__setup);\nconst $show = /* @__PURE__ */_._let(\"show/4\", $scope => $if($scope, $scope.show ? 0 : 1));\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $message($scope, null);\n  $show($scope, false);\n}));\nexport function $setup($scope) {\n  $message($scope, {\n    text: \"hi\"\n  });\n  $show($scope, true);\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-execution-order/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let message = {\n    text: \"hi\"\n  };\n  let show = true;\n  _._html(`<button>hide</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._if(() => {\n    if (show) {\n      const $scope1_id = _._scope_id();\n      _._html(`${_._escape(message.text)}${_._el_resume($scope1_id, \"#text/0\")}`);\n      _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"8:2\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/1\", 1, /* show */1, /* show */1, 0, 1);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {\n    message_text: message?.text\n  }, \"__tests__/template.marko\", 0, {\n    message_text: [\"message.text\", \"1:6\"]\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-execution-order/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  hide\n</button>\nhi\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  hide\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-execution-order/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      hide\n    </button>\n    <!--M_*1 #button/0-->\n    hi\n    <!--M_*2 #text/0-->\n    <!--M_|1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          message_text: \"hi\"\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      hide\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_|1 #text/1 2-->\n    <!--M_*2 #text/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          message_text: \"hi\"\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/#comment1 after html/body/#comment2\nINSERT html/body/#comment1\nREMOVE #text after html/body/#comment1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-execution-order/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  hide\n</button>\nhi\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-execution-order/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>hide</button><!--M_*1 #button/0-->hi<!--M_*2 #text/0--><!--M_|1 #text/1 2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={message_text:\"hi\"},{_:_.a}]),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      hide\n    </button>\n    <!--M_*1 #button/0-->\n    hi\n    <!--M_*2 #text/0-->\n    <!--M_|1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          message_text: \"hi\"\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment0\nINSERT html/body/#text\nINSERT html/body/#comment1\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-execution-order/template.marko",
    "content": "<let/message = { text:\"hi\" }/>\n<let/show = true/>\n  \n<button onClick() {\n  message = null;\n  show = false;\n}>hide</button>\n<if=show>\n  ${message.text}\n</if>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-execution-order/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-export/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-export/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"value\":123}`\n\n```html\n<div>\n  123\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-export/__snapshots__/csr.expected.md",
    "content": "# Render `{\"value\":123}`\n\n```html\n<div>\n  123\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-export/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-export/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div> </div>\";\nexport const $walks = /* next(1), get, out(1) */\"D l\";\nexport const $setup = () => {};\nexport const v = 123;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $value = ($scope, value) => _._text($scope[\"#text/0\"], value);\nexport const $input = ($scope, input) => $value($scope, input.value);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-export/__snapshots__/html.expected/template.js",
    "content": "export const v = 123;\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    value\n  } = input;\n  _._html(`<div>${_._escape(value)}${_._el_resume($scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.value */0))}</div>`);\n  _._serialize_if($scope0_reason, /* input.value */0) && _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-export/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"value\":123}`\n\n```html\n<div>\n  123\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-export/__snapshots__/resume.expected.md",
    "content": "# Render `{\"value\":123}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      123\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-export/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  123\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-export/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>123</div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      123\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-export/template.marko",
    "content": "export const v = 123;\n\n<attrs/{ value }/>\n<div>${value}</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-export/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: () => [\n    {\n      value: require(\"./template.marko\").v,\n    },\n  ],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-flush-here/__snapshots__/html.expected/template.js",
    "content": "import * as _2 from \"@marko/runtime-tags/debug/html\";\nexport default _2._template(\"__tests__/template.marko\", input => {\n  _2._scope_reason();\n  const $scope0_id = _2._scope_id();\n  const _ = _2.$global().__flush__ = ($global, html) => `BEFORE-${$global.runtimeId}-${html}-AFTER`;\n  _2._html(\"<h1>Hello World</h1>\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-flush-here/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\nBEFORE-M-\n<h1>\n  Hello World\n</h1>\n-AFTER\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-flush-here/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  BEFORE-M-<h1>Hello World</h1>-AFTER\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    BEFORE-M-\n    <h1>\n      Hello World\n    </h1>\n    -AFTER\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text0\nINSERT html/body/h1\nINSERT html/body/h1/#text\nINSERT html/body/#text1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-flush-here/template.marko",
    "content": "<const/_=($global.__flush__= ($global, html) => `BEFORE-${$global.runtimeId}-${html}-AFTER`)/>\n<h1>Hello World</h1>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-flush-here/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  skip_dom: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-fn-with-block/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$count__script\": \"m\",\n      \"$$count\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-fn-with-block/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-fn-with-block/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n# Mutations\n```\nINSERT button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-fn-with-block/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 112 (min) 94 (brotli)\nconst $count__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $count($scope, $scope.c + 1);\n    }),\n  ),\n  $count = _._let(2, ($scope) => {\n    (_._text($scope.b, $scope.c), $count__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-fn-with-block/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button> </button>\";\nexport const $walks = /* get, next(1), get, out(1) */\" D l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $count__script = _._script(\"__tests__/template.marko_0_count\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  {\n    $count($scope, $scope.count + 1);\n  }\n}));\nconst $count = /* @__PURE__ */_._let(\"count/2\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.count);\n  $count__script($scope);\n});\nexport function $setup($scope) {\n  $count($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-fn-with-block/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let count = 0;\n  _._html(`<button>${_._escape(count)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_count\");\n  _._scope($scope0_id, {\n    count\n  }, \"__tests__/template.marko\", 0, {\n    count: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-fn-with-block/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-fn-with-block/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      2\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      3\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-fn-with-block/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  0\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-fn-with-block/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>0<!--M_*1 #text/1--></button><!--M_*1 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{count:0}]),\"__tests__/template.marko_0_count 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-fn-with-block/template.marko",
    "content": "<let/count = 0/>\n\n<button \n  onClick() {\n    {\n      count++;\n    }\n  }>\n  ${count}\n</button>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-fn-with-block/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-handler-multi-ref-nested/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"o\",\n      \"$init\": \"t\",\n      \"$$a__OR__b__script\": \"m\",\n      \"$$a__OR__b\": \"r\",\n      \"$$a\": \"a\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-handler-multi-ref-nested/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-handler-multi-ref-nested/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n# Mutations\n```\nINSERT button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"0\" => \"1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-handler-multi-ref-nested/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 144 (min) 126 (brotli)\nconst $a__OR__b__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $a(\n        $scope,\n        $scope.c.map((a) => $scope.d),\n      );\n    }),\n  ),\n  $a__OR__b = _._or(4, $a__OR__b__script),\n  $a = _._let(2, ($scope) => {\n    (_._text($scope.b, $scope.c.join(\"\")), $a__OR__b($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-handler-multi-ref-nested/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button> </button>\";\nexport const $walks = /* get, next(1), get, out(1) */\" D l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $a__OR__b__script = _._script(\"__tests__/template.marko_0_a_b\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $a($scope, $scope.a.map(a => $scope.b));\n}));\nconst $a__OR__b = /* @__PURE__ */_._or(4, $a__OR__b__script);\nconst $a = /* @__PURE__ */_._let(\"a/2\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.a.join(\"\"));\n  $a__OR__b($scope);\n});\nconst $b = /* @__PURE__ */_._let(\"b/3\", $a__OR__b);\nexport function $setup($scope) {\n  $a($scope, [0]);\n  $b($scope, 1);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-handler-multi-ref-nested/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let a = [0];\n  let b = 1;\n  _._html(`<button>${_._escape(a.join(\"\"))}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_a_b\");\n  _._scope($scope0_id, {\n    a,\n    b\n  }, \"__tests__/template.marko\", 0, {\n    a: \"1:6\",\n    b: \"2:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-handler-multi-ref-nested/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-handler-multi-ref-nested/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          a: [0],\n          b: 1\n        }]),\n        \"__tests__/template.marko_0_a_b 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          a: [0],\n          b: 1\n        }]),\n        \"__tests__/template.marko_0_a_b 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"0\" => \"1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-handler-multi-ref-nested/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  0\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-handler-multi-ref-nested/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>0<!--M_*1 #text/1--></button><!--M_*1 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{a:[0],b:1}]),\"__tests__/template.marko_0_a_b 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          a: [0],\n          b: 1\n        }]),\n        \"__tests__/template.marko_0_a_b 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-handler-multi-ref-nested/template.marko",
    "content": "<let/a = [0]/>\n<let/b = 1/>\n<button onClick() {\n  a = a.map(a => b);\n}>\n  ${a.join(\"\")}\n</button>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-handler-multi-ref-nested/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-handler-refless/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$data\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-handler-refless/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-handler-refless/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n# Mutations\n```\nINSERT button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"0\" => \"1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-handler-refless/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 99 (min) 95 (brotli)\nconst $data = _._let(2, ($scope) => _._text($scope.b, $scope.c));\n(_._script(\"a0\", ($scope) =>\n  _._on($scope.a, \"click\", function () {\n    $data($scope, 1);\n  }),\n),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-handler-refless/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button> </button>\";\nexport const $walks = /* get, next(1), get, out(1) */\" D l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $data = /* @__PURE__ */_._let(\"data/2\", $scope => _._text($scope[\"#text/1\"], $scope.data));\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $data($scope, 1);\n}));\nexport function $setup($scope) {\n  $data($scope, 0);\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-handler-refless/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let data = 0;\n  _._html(`<button>${_._escape(data)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-handler-refless/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-handler-refless/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"0\" => \"1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-handler-refless/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  0\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-handler-refless/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>0<!--M_*1 #text/1--></button><!--M_*1 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0]),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-handler-refless/template.marko",
    "content": "<let/data = 0/>\n\n<button onClick() { data = 1; }>\n  ${data}\n</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-handler-refless/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-inert-collapsible-tree/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"m\",\n      \"$$for_content__open__script\": \"o\",\n      \"$$for_content__open\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-inert-collapsible-tree/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"comments\":[{\"text\":\"Hello World\",\"comments\":[{\"text\":\"testing 123\"}]},{\"text\":\"Goodbye World\"}]}`\n\n```html\n<ul>\n  <li\n    id=\"c-0\"\n  >\n    <span>\n      Hello World\n    </span>\n    <button>\n      [-]\n    </button>\n    <ul>\n      <li\n        id=\"c-0-0\"\n      >\n        <span>\n          testing 123\n        </span>\n        <button>\n          [-]\n        </button>\n      </li>\n    </ul>\n  </li>\n  <li\n    id=\"c-1\"\n  >\n    <span>\n      Goodbye World\n    </span>\n    <button>\n      [-]\n    </button>\n  </li>\n</ul>\n```\n\n\n# Render\n```js\ncontainer.querySelector(`#c-${id} > button`).click();\n```\n```html\n<ul>\n  <li\n    hidden=\"\"\n    id=\"c-0\"\n  >\n    <span>\n      Hello World\n    </span>\n    <button>\n      [+]\n    </button>\n    <ul>\n      <li\n        id=\"c-0-0\"\n      >\n        <span>\n          testing 123\n        </span>\n        <button>\n          [-]\n        </button>\n      </li>\n    </ul>\n  </li>\n  <li\n    id=\"c-1\"\n  >\n    <span>\n      Goodbye World\n    </span>\n    <button>\n      [-]\n    </button>\n  </li>\n</ul>\n```\n\n\n# Render\n```js\ncontainer.querySelector(`#c-${id} > button`).click();\n```\n```html\n<ul>\n  <li\n    id=\"c-0\"\n  >\n    <span>\n      Hello World\n    </span>\n    <button>\n      [-]\n    </button>\n    <ul>\n      <li\n        id=\"c-0-0\"\n      >\n        <span>\n          testing 123\n        </span>\n        <button>\n          [-]\n        </button>\n      </li>\n    </ul>\n  </li>\n  <li\n    id=\"c-1\"\n  >\n    <span>\n      Goodbye World\n    </span>\n    <button>\n      [-]\n    </button>\n  </li>\n</ul>\n```\n\n\n# Render\n```js\ncontainer.querySelector(`#c-${id} > button`).click();\n```\n```html\n<ul>\n  <li\n    id=\"c-0\"\n  >\n    <span>\n      Hello World\n    </span>\n    <button>\n      [-]\n    </button>\n    <ul>\n      <li\n        hidden=\"\"\n        id=\"c-0-0\"\n      >\n        <span>\n          testing 123\n        </span>\n        <button>\n          [+]\n        </button>\n      </li>\n    </ul>\n  </li>\n  <li\n    id=\"c-1\"\n  >\n    <span>\n      Goodbye World\n    </span>\n    <button>\n      [-]\n    </button>\n  </li>\n</ul>\n```\n\n\n# Render\n```js\ncontainer.querySelector(`#c-${id} > button`).click();\n```\n```html\n<ul>\n  <li\n    id=\"c-0\"\n  >\n    <span>\n      Hello World\n    </span>\n    <button>\n      [-]\n    </button>\n    <ul>\n      <li\n        hidden=\"\"\n        id=\"c-0-0\"\n      >\n        <span>\n          testing 123\n        </span>\n        <button>\n          [+]\n        </button>\n      </li>\n    </ul>\n  </li>\n  <li\n    hidden=\"\"\n    id=\"c-1\"\n  >\n    <span>\n      Goodbye World\n    </span>\n    <button>\n      [+]\n    </button>\n  </li>\n</ul>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-inert-collapsible-tree/__snapshots__/csr.expected.md",
    "content": "# Render `{\"comments\":[{\"text\":\"Hello World\",\"comments\":[{\"text\":\"testing 123\"}]},{\"text\":\"Goodbye World\"}]}`\n\n```html\n<ul>\n  <li\n    id=\"c-0\"\n  >\n    <span>\n      Hello World\n    </span>\n    <button>\n      [-]\n    </button>\n    <ul>\n      <li\n        id=\"c-0-0\"\n      >\n        <span>\n          testing 123\n        </span>\n        <button>\n          [-]\n        </button>\n      </li>\n    </ul>\n  </li>\n  <li\n    id=\"c-1\"\n  >\n    <span>\n      Goodbye World\n    </span>\n    <button>\n      [-]\n    </button>\n  </li>\n</ul>\n```\n\n# Mutations\n```\nINSERT ul\n```\n\n# Render\n```js\ncontainer.querySelector(`#c-${id} > button`).click();\n```\n```html\n<ul>\n  <li\n    hidden=\"\"\n    id=\"c-0\"\n  >\n    <span>\n      Hello World\n    </span>\n    <button>\n      [+]\n    </button>\n    <ul>\n      <li\n        id=\"c-0-0\"\n      >\n        <span>\n          testing 123\n        </span>\n        <button>\n          [-]\n        </button>\n      </li>\n    </ul>\n  </li>\n  <li\n    id=\"c-1\"\n  >\n    <span>\n      Goodbye World\n    </span>\n    <button>\n      [-]\n    </button>\n  </li>\n</ul>\n```\n\n# Mutations\n```\nUPDATE ul/li0[hidden] null => \"\"\nUPDATE ul/li0/button/#text \"[-]\" => \"[+]\"\n```\n\n# Render\n```js\ncontainer.querySelector(`#c-${id} > button`).click();\n```\n```html\n<ul>\n  <li\n    id=\"c-0\"\n  >\n    <span>\n      Hello World\n    </span>\n    <button>\n      [-]\n    </button>\n    <ul>\n      <li\n        id=\"c-0-0\"\n      >\n        <span>\n          testing 123\n        </span>\n        <button>\n          [-]\n        </button>\n      </li>\n    </ul>\n  </li>\n  <li\n    id=\"c-1\"\n  >\n    <span>\n      Goodbye World\n    </span>\n    <button>\n      [-]\n    </button>\n  </li>\n</ul>\n```\n\n# Mutations\n```\nUPDATE ul/li0[hidden] \"\" => null\nUPDATE ul/li0/button/#text \"[+]\" => \"[-]\"\n```\n\n# Render\n```js\ncontainer.querySelector(`#c-${id} > button`).click();\n```\n```html\n<ul>\n  <li\n    id=\"c-0\"\n  >\n    <span>\n      Hello World\n    </span>\n    <button>\n      [-]\n    </button>\n    <ul>\n      <li\n        hidden=\"\"\n        id=\"c-0-0\"\n      >\n        <span>\n          testing 123\n        </span>\n        <button>\n          [+]\n        </button>\n      </li>\n    </ul>\n  </li>\n  <li\n    id=\"c-1\"\n  >\n    <span>\n      Goodbye World\n    </span>\n    <button>\n      [-]\n    </button>\n  </li>\n</ul>\n```\n\n# Mutations\n```\nUPDATE ul/li0/ul/li[hidden] null => \"\"\nUPDATE ul/li0/ul/li/button/#text \"[-]\" => \"[+]\"\n```\n\n# Render\n```js\ncontainer.querySelector(`#c-${id} > button`).click();\n```\n```html\n<ul>\n  <li\n    id=\"c-0\"\n  >\n    <span>\n      Hello World\n    </span>\n    <button>\n      [-]\n    </button>\n    <ul>\n      <li\n        hidden=\"\"\n        id=\"c-0-0\"\n      >\n        <span>\n          testing 123\n        </span>\n        <button>\n          [+]\n        </button>\n      </li>\n    </ul>\n  </li>\n  <li\n    hidden=\"\"\n    id=\"c-1\"\n  >\n    <span>\n      Goodbye World\n    </span>\n    <button>\n      [+]\n    </button>\n  </li>\n</ul>\n```\n\n# Mutations\n```\nUPDATE ul/li1[hidden] null => \"\"\nUPDATE ul/li1/button/#text \"[-]\" => \"[+]\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-inert-collapsible-tree/__snapshots__/dom.expected/tags/comments.js",
    "content": "export const $template = \"<ul></ul>\";\nexport const $walks = /* get, over(1) */\" b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content__comment_comments = /* @__PURE__ */_._if_closure(\"#text/4\", 0, $scope => $input_comments($scope[\"#childScope/0\"], $scope._.comment_comments));\nconst $if_content__setup = $scope => {\n  $if_content__comment_comments._($scope);\n  $if_content__id._($scope);\n  $setup($scope[\"#childScope/0\"]);\n};\nconst $if_content__id = /* @__PURE__ */_._if_closure(\"#text/4\", 0, $scope => $input_path($scope[\"#childScope/0\"], $scope._.id));\nconst $for_content__id = /* @__PURE__ */_._const(\"id\", $scope => {\n  _._attr($scope[\"#li/0\"], \"id\", $scope.id);\n  $if_content__id($scope);\n});\nconst $for_content__input_path = /* @__PURE__ */_._for_closure(\"#ul/0\", $scope => $for_content__id($scope, `${$scope._.input_path || \"c\"}-${$scope[\"#LoopKey\"]}`));\nconst $for_content__open__script = _._script(\"__tests__/tags/comments.marko_1_open\", $scope => _._on($scope[\"#button/2\"], \"click\", function () {\n  $for_content__open($scope, !$scope.open);\n}));\nconst $for_content__open = /* @__PURE__ */_._let(\"open/12\", $scope => {\n  _._attr($scope[\"#li/0\"], \"hidden\", !$scope.open);\n  _._text($scope[\"#text/3\"], $scope.open ? \"[-]\" : \"[+]\");\n  $for_content__open__script($scope);\n});\nconst $for_content__setup = $scope => {\n  $for_content__input_path._($scope);\n  $for_content__open($scope, true);\n};\nconst $for_content__comment_text = ($scope, comment_text) => _._text($scope[\"#text/1\"], comment_text);\nconst $for_content__if = /* @__PURE__ */_._if(\"#text/4\", $template, /* <comments> */`/${$walks}&`, $if_content__setup);\nconst $for_content__comment_comments = /* @__PURE__ */_._const(\"comment_comments\", $scope => {\n  $for_content__if($scope, $scope.comment_comments ? 0 : 1);\n  $if_content__comment_comments($scope);\n});\nconst $for_content__$params = ($scope, $params2) => $for_content__comment($scope, $params2[0]);\nconst $for_content__comment = ($scope, comment) => {\n  $for_content__comment_text($scope, comment?.text);\n  $for_content__comment_comments($scope, comment?.comments);\n};\nconst $for = /* @__PURE__ */_._for_of(\"#ul/0\", \"<li><span> </span><button> </button><!></li>\", /* get, next(2), get, out(1), get, next(1), get, out(1), replace, out(1) */\" E l D l%l\", $for_content__setup, $for_content__$params);\nexport const $input_comments = ($scope, input_comments) => $for($scope, [input_comments]);\nexport const $input_path = /* @__PURE__ */_._const(\"input_path\", $for_content__input_path);\nexport const $input = ($scope, input) => {\n  $input_comments($scope, input.comments);\n  $input_path($scope, input.path);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/comments.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-inert-collapsible-tree/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 151 (min) 124 (brotli)\nconst $for_content__open__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.c, \"click\", function () {\n      $for_content__open($scope, !$scope.m);\n    }),\n  ),\n  $for_content__open = _._let(12, ($scope) => {\n    (_._attr($scope.a, \"hidden\", !$scope.m),\n      _._text($scope.d, $scope.m ? \"[-]\" : \"[+]\"),\n      $for_content__open__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-inert-collapsible-tree/__snapshots__/dom.expected/template.js",
    "content": "export const $template = _comments_template;\nexport const $walks = /* <comments> */`/${_comments_walks}&`;\nimport { $setup as _comments, $input_comments as _comments_input_comments, $input_path as _comments_input_path, $template as _comments_template, $walks as _comments_walks } from \"./tags/comments.marko\";\nexport function $setup($scope) {\n  _comments($scope[\"#childScope/0\"]);\n}\nexport const $input_comments = ($scope, input_comments) => _comments_input_comments($scope[\"#childScope/0\"], input_comments);\nexport const $input_path = ($scope, input_path) => _comments_input_path($scope[\"#childScope/0\"], input_path);\nexport const $input = ($scope, input) => {\n  $input_comments($scope, input.comments);\n  $input_path($scope, input.path);\n};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-inert-collapsible-tree/__snapshots__/html.expected/tags/comments.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nconst $content = input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<ul>\");\n  _._for_of(input.comments, (comment, i) => {\n    const $scope1_id = _._scope_id();\n    const id = `${input.path || \"c\"}-${i}`;\n    let open = true;\n    _._html(`<li${_._attr(\"id\", id)}${_._attr(\"hidden\", !open)}><span>${_._escape(comment.text)}${_._el_resume($scope1_id, \"#text/1\", _._serialize_guard($scope0_reason, /* input.comments */1))}</span><button>${_._escape(open ? \"[-]\" : \"[+]\")}${_._el_resume($scope1_id, \"#text/3\")}</button>${_._el_resume($scope1_id, \"#button/2\")}`);\n    _._if(() => {\n      if (comment.comments) {\n        const $scope2_id = _._scope_id();\n        const $childScope = _._peek_scope_id();\n        _._set_serialize_reason({\n          /* input.comments, input.path */0: _._serialize_guard($scope0_reason, /* input.comments, input.path */0),\n          /* input.comments */1: _._serialize_guard($scope0_reason, /* input.comments */1),\n          /* input.path */2: _._serialize_guard($scope0_reason, /* input.path */2)\n        });\n        $content({\n          comments: comment.comments,\n          path: id\n        });\n        _._serialize_if($scope0_reason, /* input.comments, input.path */0) && _._scope($scope2_id, {\n          _: _._scope_with_id($scope1_id),\n          \"#childScope/0\": _._serialize_if($scope0_reason, /* input.comments, input.path */0) && _._existing_scope($childScope)\n        }, \"__tests__/tags/comments.marko\", \"10:8\");\n        return 0;\n      }\n    }, $scope1_id, \"#text/4\", _._serialize_guard($scope0_reason, /* input.comments, input.path */0), _._serialize_guard($scope0_reason, /* input.comments */1), _._serialize_guard($scope0_reason, /* input.comments */1), 0, 1);\n    _._html(`</li>${_._el_resume($scope1_id, \"#li/0\")}`);\n    _._script($scope1_id, \"__tests__/tags/comments.marko_1_open\");\n    _._scope($scope1_id, {\n      comment_comments: _._serialize_if($scope0_reason, /* input.comments */1) && comment?.comments,\n      \"#LoopKey\": _._serialize_if($scope0_reason, /* input.path */2) && i,\n      id: _._serialize_if($scope0_reason, /* input.comments */1) && id,\n      open,\n      _: _._serialize_if($scope0_reason, /* input.comments, input.path */0) && _._scope_with_id($scope0_id)\n    }, \"__tests__/tags/comments.marko\", \"2:4\", {\n      comment_comments: [\"comment.comments\", \"2:8\"],\n      \"#LoopKey\": \"2:17\",\n      id: \"3:12\",\n      open: \"4:10\"\n    });\n  }, 0, $scope0_id, \"#ul/0\", _._serialize_guard($scope0_reason, /* input.comments, input.path */0), _._serialize_guard($scope0_reason, /* input.comments */1), _._serialize_guard($scope0_reason, /* input.comments */1), \"</ul>\", 1);\n  _._serialize_if($scope0_reason, /* input.comments */1) && _._scope($scope0_id, {\n    input_path: input.path\n  }, \"__tests__/tags/comments.marko\", 0, {\n    input_path: [\"input.path\"]\n  });\n};\nexport default _._template(\"__tests__/tags/comments.marko\", $content);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-inert-collapsible-tree/__snapshots__/html.expected/template.js",
    "content": "import _comments from \"./tags/comments.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason({\n    /* input.comments, input.path */0: _._serialize_guard($scope0_reason, /* input.comments, input.path */0),\n    /* input.comments */1: _._serialize_guard($scope0_reason, /* input.comments */1),\n    /* input.path */2: _._serialize_guard($scope0_reason, /* input.path */2)\n  });\n  _comments(input);\n  _._serialize_if($scope0_reason, /* input.comments, input.path */0) && _._scope($scope0_id, {\n    \"#childScope/0\": _._serialize_if($scope0_reason, /* input.comments, input.path */0) && _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-inert-collapsible-tree/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"comments\":[{\"text\":\"Hello World\",\"comments\":[{\"text\":\"testing 123\"}]},{\"text\":\"Goodbye World\"}]}`\n\n```html\n<ul>\n  <li\n    id=\"c-0\"\n  >\n    <span>\n      Hello World\n    </span>\n    <button>\n      [-]\n    </button>\n    <ul>\n      <li\n        id=\"c-0-0\"\n      >\n        <span>\n          testing 123\n        </span>\n        <button>\n          [-]\n        </button>\n      </li>\n    </ul>\n  </li>\n  <li\n    id=\"c-1\"\n  >\n    <span>\n      Goodbye World\n    </span>\n    <button>\n      [-]\n    </button>\n  </li>\n</ul>\n```\n\n\n# Render\n```js\ncontainer.querySelector(`#c-${id} > button`).click();\n```\n```html\n<ul>\n  <li\n    hidden=\"\"\n    id=\"c-0\"\n  >\n    <span>\n      Hello World\n    </span>\n    <button>\n      [+]\n    </button>\n    <ul>\n      <li\n        id=\"c-0-0\"\n      >\n        <span>\n          testing 123\n        </span>\n        <button>\n          [-]\n        </button>\n      </li>\n    </ul>\n  </li>\n  <li\n    id=\"c-1\"\n  >\n    <span>\n      Goodbye World\n    </span>\n    <button>\n      [-]\n    </button>\n  </li>\n</ul>\n```\n\n\n# Render\n```js\ncontainer.querySelector(`#c-${id} > button`).click();\n```\n```html\n<ul>\n  <li\n    id=\"c-0\"\n  >\n    <span>\n      Hello World\n    </span>\n    <button>\n      [-]\n    </button>\n    <ul>\n      <li\n        id=\"c-0-0\"\n      >\n        <span>\n          testing 123\n        </span>\n        <button>\n          [-]\n        </button>\n      </li>\n    </ul>\n  </li>\n  <li\n    id=\"c-1\"\n  >\n    <span>\n      Goodbye World\n    </span>\n    <button>\n      [-]\n    </button>\n  </li>\n</ul>\n```\n\n\n# Render\n```js\ncontainer.querySelector(`#c-${id} > button`).click();\n```\n```html\n<ul>\n  <li\n    id=\"c-0\"\n  >\n    <span>\n      Hello World\n    </span>\n    <button>\n      [-]\n    </button>\n    <ul>\n      <li\n        hidden=\"\"\n        id=\"c-0-0\"\n      >\n        <span>\n          testing 123\n        </span>\n        <button>\n          [+]\n        </button>\n      </li>\n    </ul>\n  </li>\n  <li\n    id=\"c-1\"\n  >\n    <span>\n      Goodbye World\n    </span>\n    <button>\n      [-]\n    </button>\n  </li>\n</ul>\n```\n\n\n# Render\n```js\ncontainer.querySelector(`#c-${id} > button`).click();\n```\n```html\n<ul>\n  <li\n    id=\"c-0\"\n  >\n    <span>\n      Hello World\n    </span>\n    <button>\n      [-]\n    </button>\n    <ul>\n      <li\n        hidden=\"\"\n        id=\"c-0-0\"\n      >\n        <span>\n          testing 123\n        </span>\n        <button>\n          [+]\n        </button>\n      </li>\n    </ul>\n  </li>\n  <li\n    hidden=\"\"\n    id=\"c-1\"\n  >\n    <span>\n      Goodbye World\n    </span>\n    <button>\n      [+]\n    </button>\n  </li>\n</ul>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-inert-collapsible-tree/__snapshots__/resume.expected.md",
    "content": "# Render `{\"comments\":[{\"text\":\"Hello World\",\"comments\":[{\"text\":\"testing 123\"}]},{\"text\":\"Goodbye World\"}]}`\n\n```html\n<html>\n  <head />\n  <body>\n    <ul>\n      <li\n        id=\"c-0\"\n      >\n        <span>\n          Hello World\n        </span>\n        <button>\n          [-]\n          <!--M_*3 #text/3-->\n        </button>\n        <!--M_*3 #button/2-->\n        <ul>\n          <li\n            id=\"c-0-0\"\n          >\n            <span>\n              testing 123\n            </span>\n            <button>\n              [-]\n              <!--M_*6 #text/3-->\n            </button>\n            <!--M_*6 #button/2-->\n          </li>\n          <!--M_*6 #li/0-->\n        </ul>\n      </li>\n      <!--M_*3 #li/0-->\n      <li\n        id=\"c-1\"\n      >\n        <span>\n          Goodbye World\n        </span>\n        <button>\n          [-]\n          <!--M_*7 #text/3-->\n        </button>\n        <!--M_*7 #button/2-->\n      </li>\n      <!--M_*7 #li/0-->\n    </ul>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 2,\n        {\n          open: !0\n        }, 2,\n        {\n          open: !0\n        },\n        {\n          open: !0\n        }]),\n        \"__tests__/tags/comments.marko_1_open 6 3 7\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(`#c-${id} > button`).click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <ul>\n      <li\n        hidden=\"\"\n        id=\"c-0\"\n      >\n        <span>\n          Hello World\n        </span>\n        <button>\n          [+]\n          <!--M_*3 #text/3-->\n        </button>\n        <!--M_*3 #button/2-->\n        <ul>\n          <li\n            id=\"c-0-0\"\n          >\n            <span>\n              testing 123\n            </span>\n            <button>\n              [-]\n              <!--M_*6 #text/3-->\n            </button>\n            <!--M_*6 #button/2-->\n          </li>\n          <!--M_*6 #li/0-->\n        </ul>\n      </li>\n      <!--M_*3 #li/0-->\n      <li\n        id=\"c-1\"\n      >\n        <span>\n          Goodbye World\n        </span>\n        <button>\n          [-]\n          <!--M_*7 #text/3-->\n        </button>\n        <!--M_*7 #button/2-->\n      </li>\n      <!--M_*7 #li/0-->\n    </ul>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 2,\n        {\n          open: !0\n        }, 2,\n        {\n          open: !0\n        },\n        {\n          open: !0\n        }]),\n        \"__tests__/tags/comments.marko_1_open 6 3 7\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/ul/li0[hidden] null => \"\"\nUPDATE html/body/ul/li0/button/#text \"[-]\" => \"[+]\"\n```\n\n# Render\n```js\ncontainer.querySelector(`#c-${id} > button`).click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <ul>\n      <li\n        id=\"c-0\"\n      >\n        <span>\n          Hello World\n        </span>\n        <button>\n          [-]\n          <!--M_*3 #text/3-->\n        </button>\n        <!--M_*3 #button/2-->\n        <ul>\n          <li\n            id=\"c-0-0\"\n          >\n            <span>\n              testing 123\n            </span>\n            <button>\n              [-]\n              <!--M_*6 #text/3-->\n            </button>\n            <!--M_*6 #button/2-->\n          </li>\n          <!--M_*6 #li/0-->\n        </ul>\n      </li>\n      <!--M_*3 #li/0-->\n      <li\n        id=\"c-1\"\n      >\n        <span>\n          Goodbye World\n        </span>\n        <button>\n          [-]\n          <!--M_*7 #text/3-->\n        </button>\n        <!--M_*7 #button/2-->\n      </li>\n      <!--M_*7 #li/0-->\n    </ul>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 2,\n        {\n          open: !0\n        }, 2,\n        {\n          open: !0\n        },\n        {\n          open: !0\n        }]),\n        \"__tests__/tags/comments.marko_1_open 6 3 7\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/ul/li0[hidden] \"\" => null\nUPDATE html/body/ul/li0/button/#text \"[+]\" => \"[-]\"\n```\n\n# Render\n```js\ncontainer.querySelector(`#c-${id} > button`).click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <ul>\n      <li\n        id=\"c-0\"\n      >\n        <span>\n          Hello World\n        </span>\n        <button>\n          [-]\n          <!--M_*3 #text/3-->\n        </button>\n        <!--M_*3 #button/2-->\n        <ul>\n          <li\n            hidden=\"\"\n            id=\"c-0-0\"\n          >\n            <span>\n              testing 123\n            </span>\n            <button>\n              [+]\n              <!--M_*6 #text/3-->\n            </button>\n            <!--M_*6 #button/2-->\n          </li>\n          <!--M_*6 #li/0-->\n        </ul>\n      </li>\n      <!--M_*3 #li/0-->\n      <li\n        id=\"c-1\"\n      >\n        <span>\n          Goodbye World\n        </span>\n        <button>\n          [-]\n          <!--M_*7 #text/3-->\n        </button>\n        <!--M_*7 #button/2-->\n      </li>\n      <!--M_*7 #li/0-->\n    </ul>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 2,\n        {\n          open: !0\n        }, 2,\n        {\n          open: !0\n        },\n        {\n          open: !0\n        }]),\n        \"__tests__/tags/comments.marko_1_open 6 3 7\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/ul/li0/ul/li[hidden] null => \"\"\nUPDATE html/body/ul/li0/ul/li/button/#text \"[-]\" => \"[+]\"\n```\n\n# Render\n```js\ncontainer.querySelector(`#c-${id} > button`).click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <ul>\n      <li\n        id=\"c-0\"\n      >\n        <span>\n          Hello World\n        </span>\n        <button>\n          [-]\n          <!--M_*3 #text/3-->\n        </button>\n        <!--M_*3 #button/2-->\n        <ul>\n          <li\n            hidden=\"\"\n            id=\"c-0-0\"\n          >\n            <span>\n              testing 123\n            </span>\n            <button>\n              [+]\n              <!--M_*6 #text/3-->\n            </button>\n            <!--M_*6 #button/2-->\n          </li>\n          <!--M_*6 #li/0-->\n        </ul>\n      </li>\n      <!--M_*3 #li/0-->\n      <li\n        hidden=\"\"\n        id=\"c-1\"\n      >\n        <span>\n          Goodbye World\n        </span>\n        <button>\n          [+]\n          <!--M_*7 #text/3-->\n        </button>\n        <!--M_*7 #button/2-->\n      </li>\n      <!--M_*7 #li/0-->\n    </ul>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 2,\n        {\n          open: !0\n        }, 2,\n        {\n          open: !0\n        },\n        {\n          open: !0\n        }]),\n        \"__tests__/tags/comments.marko_1_open 6 3 7\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/ul/li1[hidden] null => \"\"\nUPDATE html/body/ul/li1/button/#text \"[-]\" => \"[+]\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-inert-collapsible-tree/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<ul>\n  <li\n    id=\"c-0\"\n  >\n    <span>\n      Hello World\n    </span>\n    <button>\n      [-]\n    </button>\n    <ul>\n      <li\n        id=\"c-0-0\"\n      >\n        <span>\n          testing 123\n        </span>\n        <button>\n          [-]\n        </button>\n      </li>\n    </ul>\n  </li>\n  <li\n    id=\"c-1\"\n  >\n    <span>\n      Goodbye World\n    </span>\n    <button>\n      [-]\n    </button>\n  </li>\n</ul>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-inert-collapsible-tree/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <ul><li id=c-0><span>Hello World</span><button>[-]<!--M_*3 #text/3--></button><!--M_*3 #button/2--><ul><li id=c-0-0><span>testing 123</span><button>[-]<!--M_*6 #text/3--></button><!--M_*6 #button/2--></li><!--M_*6 #li/0--></ul></li><!--M_*3 #li/0--><li id=c-1><span>Goodbye World</span><button>[-]<!--M_*7 #text/3--></button><!--M_*7 #button/2--></li><!--M_*7 #li/0--></ul><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,2,{open:!0},2,{open:!0},{open:!0}]),\"__tests__/tags/comments.marko_1_open 6 3 7\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <ul>\n      <li\n        id=\"c-0\"\n      >\n        <span>\n          Hello World\n        </span>\n        <button>\n          [-]\n          <!--M_*3 #text/3-->\n        </button>\n        <!--M_*3 #button/2-->\n        <ul>\n          <li\n            id=\"c-0-0\"\n          >\n            <span>\n              testing 123\n            </span>\n            <button>\n              [-]\n              <!--M_*6 #text/3-->\n            </button>\n            <!--M_*6 #button/2-->\n          </li>\n          <!--M_*6 #li/0-->\n        </ul>\n      </li>\n      <!--M_*3 #li/0-->\n      <li\n        id=\"c-1\"\n      >\n        <span>\n          Goodbye World\n        </span>\n        <button>\n          [-]\n          <!--M_*7 #text/3-->\n        </button>\n        <!--M_*7 #button/2-->\n      </li>\n      <!--M_*7 #li/0-->\n    </ul>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 2,\n        {\n          open: !0\n        }, 2,\n        {\n          open: !0\n        },\n        {\n          open: !0\n        }]),\n        \"__tests__/tags/comments.marko_1_open 6 3 7\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/ul\nINSERT html/body/ul/li0\nINSERT html/body/ul/li0/span\nINSERT html/body/ul/li0/span/#text\nINSERT html/body/ul/li0/button\nINSERT html/body/ul/li0/button/#text\nINSERT html/body/ul/li0/button/#comment\nINSERT html/body/ul/li0/#comment\nINSERT html/body/ul/li0/ul\nINSERT html/body/ul/li0/ul/li\nINSERT html/body/ul/li0/ul/li/span\nINSERT html/body/ul/li0/ul/li/span/#text\nINSERT html/body/ul/li0/ul/li/button\nINSERT html/body/ul/li0/ul/li/button/#text\nINSERT html/body/ul/li0/ul/li/button/#comment\nINSERT html/body/ul/li0/ul/li/#comment\nINSERT html/body/ul/li0/ul/#comment\nINSERT html/body/ul/#comment0\nINSERT html/body/ul/li1\nINSERT html/body/ul/li1/span\nINSERT html/body/ul/li1/span/#text\nINSERT html/body/ul/li1/button\nINSERT html/body/ul/li1/button/#text\nINSERT html/body/ul/li1/button/#comment\nINSERT html/body/ul/li1/#comment\nINSERT html/body/ul/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-inert-collapsible-tree/tags/comments.marko",
    "content": "<ul>\n  <for|comment, i| of=input.comments>\n    <const/id=`${input.path || \"c\"}-${i}`/>\n    <let/open=true/>\n    <li id=id hidden=!open>\n      <span>${comment.text}</span>\n      <button onClick() { open = !open }>\n        ${open ? \"[-]\" : \"[+]\"}\n      </button>\n      <if=comment.comments>\n        <comments comments=comment.comments path=id/>\n      </if>\n    </li>\n  </for>\n</ul>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-inert-collapsible-tree/template.marko",
    "content": "<attrs/input/>\n<comments ...input/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-inert-collapsible-tree/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction toggle(id: string) {\n  return (container: Element) => {\n    (container.querySelector(`#c-${id} > button`) as HTMLButtonElement).click();\n  };\n}\n\nexport const config: TestConfig = {\n  steps: [\n    {\n      comments: [\n        {\n          text: \"Hello World\",\n          comments: [\n            {\n              text: \"testing 123\",\n            },\n          ],\n        },\n        {\n          text: \"Goodbye World\",\n        },\n      ],\n    },\n    toggle(\"0\"),\n    toggle(\"0\"),\n    toggle(\"0-0\"),\n    toggle(\"1\"),\n  ],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-layout/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-layout/__snapshots__/dom.expected/tags/layout.js",
    "content": "export const $template = \"<body><!></body>\";\nexport const $walks = /* next(1), replace, out(1) */\"D%l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\");\nexport const $content = ($scope, content) => $dynamicTag($scope, content);\nexport const $input = ($scope, input) => $content($scope, input.content);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/layout.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-layout/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-layout/__snapshots__/dom.expected/template.js",
    "content": "export const $template = _layout_template;\nexport const $walks = /* <layout> */`/${_layout_walks}&`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _layout, $content as _layout_input_content, $template as _layout_template, $walks as _layout_walks } from \"./tags/layout.marko\";\nconst $layout_content__name = /* @__PURE__ */_._closure_get(\"name\", $scope => _._text($scope[\"#text/0\"], $scope._.name));\nconst $layout_content__setup = $layout_content__name;\nconst $layout_content = /* @__PURE__ */_._content(\"__tests__/template.marko_1_content\", \"<h1>Hello <!></h1>\", /* next(1), over(1), replace, out(1) */\"Db%l\", $layout_content__setup);\nexport function $setup($scope) {\n  _layout($scope[\"#childScope/0\"]);\n  _layout_input_content($scope[\"#childScope/0\"], $layout_content($scope));\n}\nexport const $input = ($scope, input) => $name($scope, input.name);\nconst $name__closure = /* @__PURE__ */_._closure($layout_content__name);\nexport const $name = /* @__PURE__ */_._const(\"name\", $name__closure);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-layout/__snapshots__/html.expected/tags/layout.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/layout.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    content\n  } = input;\n  _._html(\"<body>\");\n  _._dynamic_tag($scope0_id, \"#text/0\", content, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.content */0));\n  _._trailers(\"</body>\");\n  _._serialize_if($scope0_reason, /* input.content */0) && _._scope($scope0_id, {}, \"__tests__/tags/layout.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-layout/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _layout from \"./tags/layout.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $name__closures = new Set();\n  const {\n    name\n  } = input;\n  _layout({\n    content: _._content(\"__tests__/template.marko_1_content\", () => {\n      const $scope1_reason = _._scope_reason();\n      const $scope1_id = _._scope_id();\n      _._html(`<h1>Hello ${_._sep(_._serialize_guard($scope0_reason, /* input.name */0))}${_._escape(name)}${_._el_resume($scope1_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.name */0))}</h1>`);\n      _._serialize_if($scope0_reason, /* input.name */0) && _._subscribe($name__closures, _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id),\n        \"ClosureSignalIndex:name\": _._serialize_if($scope0_reason, /* input.name */0) && 0\n      }, \"__tests__/template.marko\", \"2:2\"));\n      _._resume_branch($scope1_id);\n    })\n  });\n  _._serialize_if($scope0_reason, /* input.name */0) && _._scope($scope0_id, {\n    \"ClosureScopes:name\": _._serialize_if($scope0_reason, /* input.name */0) && $name__closures\n  }, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-layout/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"name\":\"World\"}`\n\n```html\n<h1>\n  Hello World\n</h1>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-layout/__snapshots__/resume.expected.md",
    "content": "# Render `{\"name\":\"World\"}`\n\n```html\n<html>\n  <head />\n  <body>\n    <h1>\n      Hello World\n    </h1>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-layout/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<h1>\n  Hello World\n</h1>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-layout/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <body><h1>Hello World</h1></body>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <h1>\n      Hello World\n    </h1>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/h1\nINSERT html/body/h1/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-layout/tags/layout.marko",
    "content": "<attrs/{ content }/>\n<body>\n  <${content}/>\n</body>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-layout/template.marko",
    "content": "<attrs/{ name }/>\n<layout>\n  <h1>Hello ${name}</h1>\n</layout>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-layout/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [{ name: \"World\" }],\n  skip_csr: true,\n  skip_resume: false,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-member-expression-computed/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$items__OR__index__script\": \"m\",\n      \"$$items__OR__index\": \"r\",\n      \"$$items\": \"c\",\n      \"$$items_\": \"e\",\n      \"$$index\": \"n\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-member-expression-computed/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  a\n</div>\n<div>\n  a\n</div>\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  b\n</div>\n<div>\n  c\n</div>\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  c\n</div>\n<div>\n  c\n</div>\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  ‍\n</div>\n<div>\n  ‍\n</div>\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  ‍\n</div>\n<div>\n  ‍\n</div>\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-member-expression-computed/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  a\n</div>\n<div>\n  a\n</div>\n<button>\n  Update\n</button>\n```\n\n# Mutations\n```\nINSERT div0, div1, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  b\n</div>\n<div>\n  c\n</div>\n<button>\n  Update\n</button>\n```\n\n# Mutations\n```\nUPDATE div0/#text \"a\" => \"b\"\nUPDATE div1/#text \"a\" => \"c\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  c\n</div>\n<div>\n  c\n</div>\n<button>\n  Update\n</button>\n```\n\n# Mutations\n```\nUPDATE div0/#text \"b\" => \"c\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  ‍\n</div>\n<div>\n  ‍\n</div>\n<button>\n  Update\n</button>\n```\n\n# Mutations\n```\nUPDATE div0/#text \"c\" => \"‍\"\nUPDATE div1/#text \"c\" => \"‍\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  ‍\n</div>\n<div>\n  ‍\n</div>\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-member-expression-computed/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 239 (min) 170 (brotli)\nconst $items__OR__index__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.c, \"click\", function () {\n      const newItems = $scope.d.slice(1);\n      ($items($scope, newItems),\n        $index($scope, ($scope.f + 1) % newItems.length));\n    }),\n  ),\n  $items__OR__index = _._or(6, ($scope) => {\n    (_._text($scope.b, $scope.d[$scope.f]), $items__OR__index__script($scope));\n  }),\n  $items = _._let(3, ($scope) => {\n    ($items_($scope, $scope.d?.[0]), $items__OR__index($scope));\n  }),\n  $items_ = _._const(4, ($scope) => _._text($scope.a, $scope.e)),\n  $index = _._let(5, $items__OR__index);\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-member-expression-computed/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div> </div><div> </div><button>Update</button>\";\nexport const $walks = /* next(1), get, out(1), next(1), get, out(1), get, over(1) */\"D lD l b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $items__OR__index__script = _._script(\"__tests__/template.marko_0_items_index\", $scope => _._on($scope[\"#button/2\"], \"click\", function () {\n  const newItems = $scope.items.slice(1);\n  $items($scope, newItems);\n  $index($scope, ($scope.index + 1) % newItems.length);\n}));\nconst $items__OR__index = /* @__PURE__ */_._or(6, $scope => {\n  _._text($scope[\"#text/1\"], $scope.items[$scope.index]);\n  $items__OR__index__script($scope);\n});\nconst $items = /* @__PURE__ */_._let(\"items/3\", $scope => {\n  $items_($scope, $scope.items?.[0]);\n  $items__OR__index($scope);\n});\nconst $items_ = /* @__PURE__ */_._const(\"items_0\", $scope => _._text($scope[\"#text/0\"], $scope.items_0));\nconst $index = /* @__PURE__ */_._let(\"index/5\", $items__OR__index);\nexport function $setup($scope) {\n  $items($scope, [\"a\", \"b\", \"c\"]);\n  $index($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-member-expression-computed/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let items = [\"a\", \"b\", \"c\"];\n  let index = 0;\n  _._html(`<div>${_._escape(items[0])}${_._el_resume($scope0_id, \"#text/0\")}</div><div>${_._escape(items[index])}${_._el_resume($scope0_id, \"#text/1\")}</div><button>Update</button>${_._el_resume($scope0_id, \"#button/2\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_items_index\");\n  _._scope($scope0_id, {\n    items,\n    index\n  }, \"__tests__/template.marko\", 0, {\n    items: \"1:5\",\n    index: \"2:5\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-member-expression-computed/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  a\n</div>\n<div>\n  a\n</div>\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  b\n</div>\n<div>\n  c\n</div>\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  c\n</div>\n<div>\n  c\n</div>\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  ‍\n</div>\n<div>\n  ‍\n</div>\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  ‍\n</div>\n<div>\n  ‍\n</div>\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-member-expression-computed/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      a\n      <!--M_*1 #text/0-->\n    </div>\n    <div>\n      a\n      <!--M_*1 #text/1-->\n    </div>\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          items: [\"a\", \"b\", \"c\"],\n          index: 0\n        }]),\n        \"__tests__/template.marko_0_items_index 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      b\n      <!--M_*1 #text/0-->\n    </div>\n    <div>\n      c\n      <!--M_*1 #text/1-->\n    </div>\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          items: [\"a\", \"b\", \"c\"],\n          index: 0\n        }]),\n        \"__tests__/template.marko_0_items_index 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div0/#text \"a\" => \"b\"\nUPDATE html/body/div1/#text \"a\" => \"c\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      c\n      <!--M_*1 #text/0-->\n    </div>\n    <div>\n      c\n      <!--M_*1 #text/1-->\n    </div>\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          items: [\"a\", \"b\", \"c\"],\n          index: 0\n        }]),\n        \"__tests__/template.marko_0_items_index 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div0/#text \"b\" => \"c\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      ‍\n      <!--M_*1 #text/0-->\n    </div>\n    <div>\n      ‍\n      <!--M_*1 #text/1-->\n    </div>\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          items: [\"a\", \"b\", \"c\"],\n          index: 0\n        }]),\n        \"__tests__/template.marko_0_items_index 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div0/#text \"c\" => \"‍\"\nUPDATE html/body/div1/#text \"c\" => \"‍\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      ‍\n      <!--M_*1 #text/0-->\n    </div>\n    <div>\n      ‍\n      <!--M_*1 #text/1-->\n    </div>\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          items: [\"a\", \"b\", \"c\"],\n          index: 0\n        }]),\n        \"__tests__/template.marko_0_items_index 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-member-expression-computed/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  a\n</div>\n<div>\n  a\n</div>\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-member-expression-computed/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>a<!--M_*1 #text/0--></div><div>a<!--M_*1 #text/1--></div><button>Update</button><!--M_*1 #button/2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{items:[\"a\",\"b\",\"c\"],index:0}]),\"__tests__/template.marko_0_items_index 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      a\n      <!--M_*1 #text/0-->\n    </div>\n    <div>\n      a\n      <!--M_*1 #text/1-->\n    </div>\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          items: [\"a\", \"b\", \"c\"],\n          index: 0\n        }]),\n        \"__tests__/template.marko_0_items_index 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/div0/#text\nINSERT html/body/div0/#comment\nINSERT html/body/div1\nINSERT html/body/div1/#text\nINSERT html/body/div1/#comment\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-member-expression-computed/template.marko",
    "content": "let/items=[\"a\", \"b\", \"c\"]\nlet/index=0\n\ndiv -- ${items[0]}\ndiv -- ${items[index]}\n\nbutton onClick() {\n  const newItems = items.slice(1);\n  items = newItems;\n  index = (index + 1) % newItems.length;\n} -- Update\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-member-expression-computed/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-member-expression-optional/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"e\",\n      \"$names\": \"n\",\n      \"$$index__script\": \"o\",\n      \"$$index\": \"a\",\n      \"$$user\": \"m\",\n      \"$$user_id\": \"i\",\n      \"$$user_name\": \"c\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-member-expression-optional/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  ‍\n</div>\n<div>\n  ‍\n</div>\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  0\n</div>\n<div>\n  Dylan\n</div>\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  1\n</div>\n<div>\n  Michael\n</div>\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  2\n</div>\n<div>\n  Ryan\n</div>\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  3\n</div>\n<div>\n  Luke\n</div>\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  ‍\n</div>\n<div>\n  ‍\n</div>\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-member-expression-optional/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  ‍\n</div>\n<div>\n  ‍\n</div>\n<button>\n  Update\n</button>\n```\n\n# Mutations\n```\nINSERT div0, div1, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  0\n</div>\n<div>\n  Dylan\n</div>\n<button>\n  Update\n</button>\n```\n\n# Mutations\n```\nUPDATE div0/#text \"‍\" => \"0\"\nUPDATE div1/#text \"‍\" => \"Dylan\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  1\n</div>\n<div>\n  Michael\n</div>\n<button>\n  Update\n</button>\n```\n\n# Mutations\n```\nUPDATE div0/#text \"0\" => \"1\"\nUPDATE div1/#text \"Dylan\" => \"Michael\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  2\n</div>\n<div>\n  Ryan\n</div>\n<button>\n  Update\n</button>\n```\n\n# Mutations\n```\nUPDATE div0/#text \"1\" => \"2\"\nUPDATE div1/#text \"Michael\" => \"Ryan\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  3\n</div>\n<div>\n  Luke\n</div>\n<button>\n  Update\n</button>\n```\n\n# Mutations\n```\nUPDATE div0/#text \"2\" => \"3\"\nUPDATE div1/#text \"Ryan\" => \"Luke\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  ‍\n</div>\n<div>\n  ‍\n</div>\n<button>\n  Update\n</button>\n```\n\n# Mutations\n```\nUPDATE div0/#text \"3\" => \"‍\"\nUPDATE div1/#text \"Luke\" => \"‍\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-member-expression-optional/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 292 (min) 206 (brotli)\nconst names = [\"Dylan\", \"Michael\", \"Ryan\", \"Luke\"],\n  $index__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.c, \"click\", function () {\n      ($index($scope, $scope.d === names.length - 1 ? -1 : $scope.d + 1),\n        $user(\n          $scope,\n          -1 !== $scope.d && { id: $scope.d, name: names[$scope.d] },\n        ));\n    }),\n  ),\n  $index = _._let(3, $index__script),\n  $user = _._let(4, ($scope) => {\n    ($user_id($scope, $scope.e?.id), $user_name($scope, $scope.e?.name));\n  }),\n  $user_id = _._const(5, ($scope) => _._text($scope.a, $scope.f)),\n  $user_name = _._const(6, ($scope) => _._text($scope.b, $scope.g));\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-member-expression-optional/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div> </div><div> </div><button>Update</button>\";\nexport const $walks = /* next(1), get, out(1), next(1), get, out(1), get, over(1) */\"D lD l b\";\nconst names = [\"Dylan\", \"Michael\", \"Ryan\", \"Luke\"];\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $index__script = _._script(\"__tests__/template.marko_0_index\", $scope => _._on($scope[\"#button/2\"], \"click\", function () {\n  $index($scope, $scope.index === names.length - 1 ? -1 : $scope.index + 1);\n  $user($scope, $scope.index !== -1 && {\n    id: $scope.index,\n    name: names[$scope.index]\n  });\n}));\nconst $index = /* @__PURE__ */_._let(\"index/3\", $index__script);\nconst $user = /* @__PURE__ */_._let(\"user/4\", $scope => {\n  $user_id($scope, $scope.user?.id);\n  $user_name($scope, $scope.user?.name);\n});\nexport function $setup($scope) {\n  $index($scope, -1);\n  $user($scope, undefined);\n}\nconst $user_id = /* @__PURE__ */_._const(\"user_id\", $scope => _._text($scope[\"#text/0\"], $scope.user_id));\nconst $user_name = /* @__PURE__ */_._const(\"user_name\", $scope => _._text($scope[\"#text/1\"], $scope.user_name));\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-member-expression-optional/__snapshots__/html.expected/template.js",
    "content": "const names = [\"Dylan\", \"Michael\", \"Ryan\", \"Luke\"];\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let index = -1;\n  let user = undefined;\n  _._html(`<div>${_._escape(user?.id)}${_._el_resume($scope0_id, \"#text/0\")}</div><div>${_._escape(user?.name)}${_._el_resume($scope0_id, \"#text/1\")}</div><button>Update</button>${_._el_resume($scope0_id, \"#button/2\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_index\");\n  _._scope($scope0_id, {\n    index\n  }, \"__tests__/template.marko\", 0, {\n    index: \"9:5\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-member-expression-optional/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  ‍\n</div>\n<div>\n  ‍\n</div>\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  0\n</div>\n<div>\n  Dylan\n</div>\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  1\n</div>\n<div>\n  Michael\n</div>\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  2\n</div>\n<div>\n  Ryan\n</div>\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  3\n</div>\n<div>\n  Luke\n</div>\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  ‍\n</div>\n<div>\n  ‍\n</div>\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-member-expression-optional/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      ‍\n      <!--M_*1 #text/0-->\n    </div>\n    <div>\n      ‍\n      <!--M_*1 #text/1-->\n    </div>\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          index: -1\n        }]),\n        \"__tests__/template.marko_0_index 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      0\n      <!--M_*1 #text/0-->\n    </div>\n    <div>\n      Dylan\n      <!--M_*1 #text/1-->\n    </div>\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          index: -1\n        }]),\n        \"__tests__/template.marko_0_index 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div0/#text \"‍\" => \"0\"\nUPDATE html/body/div1/#text \"‍\" => \"Dylan\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      1\n      <!--M_*1 #text/0-->\n    </div>\n    <div>\n      Michael\n      <!--M_*1 #text/1-->\n    </div>\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          index: -1\n        }]),\n        \"__tests__/template.marko_0_index 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div0/#text \"0\" => \"1\"\nUPDATE html/body/div1/#text \"Dylan\" => \"Michael\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      2\n      <!--M_*1 #text/0-->\n    </div>\n    <div>\n      Ryan\n      <!--M_*1 #text/1-->\n    </div>\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          index: -1\n        }]),\n        \"__tests__/template.marko_0_index 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div0/#text \"1\" => \"2\"\nUPDATE html/body/div1/#text \"Michael\" => \"Ryan\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      3\n      <!--M_*1 #text/0-->\n    </div>\n    <div>\n      Luke\n      <!--M_*1 #text/1-->\n    </div>\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          index: -1\n        }]),\n        \"__tests__/template.marko_0_index 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div0/#text \"2\" => \"3\"\nUPDATE html/body/div1/#text \"Ryan\" => \"Luke\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      ‍\n      <!--M_*1 #text/0-->\n    </div>\n    <div>\n      ‍\n      <!--M_*1 #text/1-->\n    </div>\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          index: -1\n        }]),\n        \"__tests__/template.marko_0_index 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div0/#text \"3\" => \"‍\"\nUPDATE html/body/div1/#text \"Luke\" => \"‍\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-member-expression-optional/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  ‍\n</div>\n<div>\n  ‍\n</div>\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-member-expression-optional/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>&zwj;<!--M_*1 #text/0--></div><div>&zwj;<!--M_*1 #text/1--></div><button>Update</button><!--M_*1 #button/2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{index:-1}]),\"__tests__/template.marko_0_index 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      ‍\n      <!--M_*1 #text/0-->\n    </div>\n    <div>\n      ‍\n      <!--M_*1 #text/1-->\n    </div>\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          index: -1\n        }]),\n        \"__tests__/template.marko_0_index 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/div0/#text\nINSERT html/body/div0/#comment\nINSERT html/body/div1\nINSERT html/body/div1/#text\nINSERT html/body/div1/#comment\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-member-expression-optional/template.marko",
    "content": "\nstatic const names = [\n  \"Dylan\",\n  \"Michael\",\n  \"Ryan\",\n  \"Luke\"\n]\n\nlet/index=-1\nlet/user=undefined\n\ndiv -- ${user?.id}\ndiv -- ${user?.name}\n\nbutton onClick() {\n  index = index === names.length - 1 ? -1 : index + 1;\n  user = index !== -1 && {\n    id: index,\n    name: names[index],\n  }\n} -- Update\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-member-expression-optional/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-merge-member-expression/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"a\",\n      \"$init\": \"s\",\n      \"$$foo\": \"t\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-merge-member-expression/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div />\n<div />\n<button>\n  Click\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div\n  class=\"baz\"\n/>\n<div\n  class=\"baz\"\n/>\n<button>\n  Click\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-merge-member-expression/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div />\n<div />\n<button>\n  Click\n</button>\n```\n\n# Mutations\n```\nINSERT div0, div1, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div\n  class=\"baz\"\n/>\n<div\n  class=\"baz\"\n/>\n<button>\n  Click\n</button>\n```\n\n# Mutations\n```\nUPDATE div0[class] null => \"baz\"\nUPDATE div1[class] null => \"baz\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-merge-member-expression/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 166 (min) 115 (brotli)\nconst $foo = _._let(3, ($scope) => {\n  (_._attr_class($scope.a, ($scope.d, $scope.d.class)),\n    _._attr_class($scope.b, ($scope.d, $scope.d.class)));\n});\n(_._script(\"a0\", ($scope) =>\n  _._on($scope.c, \"click\", function () {\n    $foo($scope, { class: \"baz\" });\n  }),\n),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-merge-member-expression/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div></div><div></div><button>Click</button>\";\nexport const $walks = /* get, over(1), get, over(1), get, over(1) */\" b b b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $foo = /* @__PURE__ */_._let(\"foo/3\", $scope => {\n  _._attr_class($scope[\"#div/0\"], ($scope.foo, $scope.foo.class));\n  _._attr_class($scope[\"#div/1\"], ($scope.foo, $scope.foo.class));\n});\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => _._on($scope[\"#button/2\"], \"click\", function () {\n  $foo($scope, {\n    class: \"baz\"\n  });\n}));\nexport function $setup($scope) {\n  $foo($scope, {});\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-merge-member-expression/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let foo = {};\n  const {\n    class: fooClass\n  } = foo;\n  _._html(`<div${_._attr_class((foo, foo.class))}></div>${_._el_resume($scope0_id, \"#div/0\")}<div${_._attr_class((foo, foo.class))}></div>${_._el_resume($scope0_id, \"#div/1\")}<button>Click</button>${_._el_resume($scope0_id, \"#button/2\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-merge-member-expression/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div />\n<div />\n<button>\n  Click\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div\n  class=\"baz\"\n/>\n<div\n  class=\"baz\"\n/>\n<button>\n  Click\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-merge-member-expression/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*1 #div/0-->\n    <div />\n    <!--M_*1 #div/1-->\n    <button>\n      Click\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div\n      class=\"baz\"\n    />\n    <!--M_*1 #div/0-->\n    <div\n      class=\"baz\"\n    />\n    <!--M_*1 #div/1-->\n    <button>\n      Click\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div0[class] null => \"baz\"\nUPDATE html/body/div1[class] null => \"baz\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-merge-member-expression/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n<div />\n<button>\n  Click\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-merge-member-expression/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div></div><!--M_*1 #div/0--><div></div><!--M_*1 #div/1--><button>Click</button><!--M_*1 #button/2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0]),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*1 #div/0-->\n    <div />\n    <!--M_*1 #div/1-->\n    <button>\n      Click\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/#comment0\nINSERT html/body/div1\nINSERT html/body/#comment1\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-merge-member-expression/template.marko",
    "content": "<let/foo = {}/>\n<const/{ class: fooClass }=foo/>\n<div class=(foo, foo.class)/>\n<div class=(foo, fooClass)/>\n<button onClick() { foo = { class: \"baz\" } }>Click</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-merge-member-expression/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-for/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"o\",\n      \"$init\": \"_\",\n      \"$$for_content2__outer__OR__inner\": \"c\",\n      \"$$for_content2__outer\": \"r\",\n      \"$$for_content2__setup\": \"t\",\n      \"$$for_content2__inner\": \"m\",\n      \"$$for_content2__$params\": \"a\",\n      \"$$for_content__for\": \"f\",\n      \"$$for_content__items\": \"i\",\n      \"$$for_content__setup\": \"n\",\n      \"$$for_content__$params\": \"s\",\n      \"$$for_content__outer\": \"e\",\n      \"$$for\": \"l\",\n      \"$$items__script\": \"u\",\n      \"$$items\": \"d\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-for/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Push\n</button>\n<div>\n  0.0\n</div>\n<div>\n  0.1\n</div>\n<div>\n  1.0\n</div>\n<div>\n  1.1\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Push\n</button>\n<div>\n  0.0\n</div>\n<div>\n  0.1\n</div>\n<div>\n  0.2\n</div>\n<div>\n  1.0\n</div>\n<div>\n  1.1\n</div>\n<div>\n  1.2\n</div>\n<div>\n  2.0\n</div>\n<div>\n  2.1\n</div>\n<div>\n  2.2\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-for/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  Push\n</button>\n<!---->\n<div>\n  0.0\n</div>\n<div>\n  0.1\n</div>\n<!---->\n<!---->\n<div>\n  1.0\n</div>\n<div>\n  1.1\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT button, #comment0, div0, div1, #comment1, #comment2, div2, div3, #comment3, #comment4\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Push\n</button>\n<!---->\n<div>\n  0.0\n</div>\n<div>\n  0.1\n</div>\n<div>\n  0.2\n</div>\n<!---->\n<!---->\n<div>\n  1.0\n</div>\n<div>\n  1.1\n</div>\n<div>\n  1.2\n</div>\n<!---->\n<!---->\n<div>\n  2.0\n</div>\n<div>\n  2.1\n</div>\n<div>\n  2.2\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment4, #text, #comment5\nINSERT div2\nINSERT div5\nREMOVE #text after #comment4\nINSERT div6\nINSERT div7\nINSERT div8\nUPDATE div2/#text \" \" => \"0.2\"\nUPDATE div5/#text \" \" => \"1.2\"\nUPDATE div6/#text \" \" => \"2.0\"\nUPDATE div7/#text \" \" => \"2.1\"\nUPDATE div8/#text \" \" => \"2.2\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-for/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<div> </div>\";\nexport const $walks = /* next(1), get, out(1) */\"D l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $name = ($scope, name) => _._text($scope[\"#text/0\"], name);\nexport const $input = ($scope, input) => $name($scope, input.name);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-for/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 416 (min) 268 (brotli)\nconst $for_content2__outer__OR__inner = _._or(3, ($scope) =>\n    (($scope, name) => _._text($scope.a, name))(\n      $scope.a,\n      `${$scope._.c}.${$scope.c}`,\n    ),\n  ),\n  $for_content2__outer = _._for_closure(0, $for_content2__outer__OR__inner),\n  $for_content2__setup = ($scope) => {\n    ($for_content2__outer._($scope), $scope.a);\n  },\n  $for_content2__inner = _._const(2, $for_content2__outer__OR__inner),\n  $for_content2__$params = ($scope, $params3) =>\n    $for_content2__inner($scope, $params3[0]),\n  $for_content__for = _._for_of(\n    0,\n    \"<div> </div>\",\n    \"/D l&\",\n    $for_content2__setup,\n    $for_content2__$params,\n  ),\n  $for_content__items = _._for_closure(1, ($scope) =>\n    $for_content__for($scope, [$scope._.c]),\n  ),\n  $for_content__setup = $for_content__items,\n  $for_content__$params = ($scope, $params2) =>\n    $for_content__outer($scope, $params2[0]),\n  $for_content__outer = _._const(2, $for_content2__outer),\n  $for = _._for_of(\n    1,\n    \"<!><!><!>\",\n    \"b%c\",\n    $for_content__setup,\n    $for_content__$params,\n  ),\n  $items__script = _._script(\"b0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $items($scope, [...$scope.c, $scope.c?.length]);\n    }),\n  ),\n  $items = _._let(2, ($scope) => {\n    ($for($scope, [$scope.c]),\n      $for_content__items($scope),\n      $items__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-for/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button>Push</button><!><!>\";\nexport const $walks = /* get, over(1), replace, over(2) */\" b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _child, $name as _child_input_name, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nconst $for_content2__outer__OR__inner = /* @__PURE__ */_._or(3, $scope => _child_input_name($scope[\"#childScope/0\"], `${$scope._.outer}.${$scope.inner}`));\nconst $for_content2__outer = /* @__PURE__ */_._for_closure(\"#text/0\", $for_content2__outer__OR__inner);\nconst $for_content2__setup = $scope => {\n  $for_content2__outer._($scope);\n  _child($scope[\"#childScope/0\"]);\n};\nconst $for_content2__inner = /* @__PURE__ */_._const(\"inner\", $for_content2__outer__OR__inner);\nconst $for_content2__$params = ($scope, $params3) => $for_content2__inner($scope, $params3[0]);\nconst $for_content__for = /* @__PURE__ */_._for_of(\"#text/0\", _child_template, /* <child> */`/${_child_walks}&`, $for_content2__setup, $for_content2__$params);\nconst $for_content__items = /* @__PURE__ */_._for_closure(\"#text/1\", $scope => $for_content__for($scope, [$scope._.items]));\nconst $for_content__setup = $for_content__items;\nconst $for_content__$params = ($scope, $params2) => $for_content__outer($scope, $params2[0]);\nconst $for_content__outer = /* @__PURE__ */_._const(\"outer\", $for_content2__outer);\nconst $for = /* @__PURE__ */_._for_of(\"#text/1\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", $for_content__setup, $for_content__$params);\nconst $items__script = _._script(\"__tests__/template.marko_0_items\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $items($scope, [...$scope.items, $scope.items?.length]);\n}));\nconst $items = /* @__PURE__ */_._let(\"items/2\", $scope => {\n  $for($scope, [$scope.items]);\n  $for_content__items($scope);\n  $items__script($scope);\n});\nexport function $setup($scope) {\n  $items($scope, [0, 1]);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-for/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    name\n  } = input;\n  _._html(`<div>${_._escape(name)}${_._el_resume($scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.name */0))}</div>`);\n  _._serialize_if($scope0_reason, /* input.name */0) && _._scope($scope0_id, {}, \"__tests__/tags/child.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-for/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _child from \"./tags/child.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let items = [0, 1];\n  _._html(`<button>Push</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._for_of(items, outer => {\n    const $scope1_id = _._scope_id();\n    _._for_of(items, inner => {\n      const $scope2_id = _._scope_id();\n      const $childScope = _._peek_scope_id();\n      _._set_serialize_reason(/* items */1);\n      _child({\n        name: `${outer}.${inner}`\n      });\n      _._scope($scope2_id, {\n        _: _._scope_with_id($scope1_id),\n        \"#childScope/0\": _._existing_scope($childScope)\n      }, \"__tests__/template.marko\", \"5:4\");\n    }, 0, $scope1_id, \"#text/0\", /* items */1, /* items */1, /* items */1, 0, 1);\n    _._scope($scope1_id, {\n      outer,\n      _: _._scope_with_id($scope0_id)\n    }, \"__tests__/template.marko\", \"4:2\", {\n      outer: \"4:6\"\n    });\n  }, 0, $scope0_id, \"#text/1\");\n  _._script($scope0_id, \"__tests__/template.marko_0_items\");\n  _._scope($scope0_id, {\n    items\n  }, \"__tests__/template.marko\", 0, {\n    items: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-for/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Push\n</button>\n<div>\n  0.0\n</div>\n<div>\n  0.1\n</div>\n<div>\n  1.0\n</div>\n<div>\n  1.1\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Push\n</button>\n<div>\n  0.0\n</div>\n<div>\n  0.1\n</div>\n<div>\n  0.2\n</div>\n<div>\n  1.0\n</div>\n<div>\n  1.1\n</div>\n<div>\n  1.2\n</div>\n<div>\n  2.0\n</div>\n<div>\n  2.1\n</div>\n<div>\n  2.2\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-for/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Push\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <div>\n      0.0\n      <!--M_*4 #text/0-->\n    </div>\n    <div>\n      0.1\n      <!--M_*6 #text/0-->\n    </div>\n    <!--M_|2 #text/0 5 3-->\n    <!--M_[2-->\n    <div>\n      1.0\n      <!--M_*9 #text/0-->\n    </div>\n    <div>\n      1.1\n      <!--M_*11 #text/0-->\n    </div>\n    <!--M_|7 #text/0 10 8-->\n    <!--M_]1 #text/1 7-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.h = [0, _.a = {\n          items: [0, 1]\n        }, _.b = {\n          outer: 0,\n          _: _.a\n        },\n        {\n          _: _.b,\n          \"#childScope/0\": _.c = {}\n        }, _.c,\n        {\n          _: _.b,\n          \"#childScope/0\": _.d = {}\n        }, _.d, _.e = {\n          outer: 1,\n          _: _.a\n        },\n        {\n          _: _.e,\n          \"#childScope/0\": _.f = {}\n        }, _.f,\n        {\n          _: _.e,\n          \"#childScope/0\": _.g = {}\n        }, _.g]),\n        \"__tests__/template.marko_0_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text0\nINSERT html/body/#text1\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Push\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <div>\n      0.0\n      <!--M_*4 #text/0-->\n    </div>\n    <div>\n      0.1\n      <!--M_*6 #text/0-->\n    </div>\n    <div>\n      0.2\n    </div>\n    <!--M_|2 #text/0 5 3-->\n    <!--M_[2-->\n    <div>\n      1.0\n      <!--M_*9 #text/0-->\n    </div>\n    <div>\n      1.1\n      <!--M_*11 #text/0-->\n    </div>\n    <div>\n      1.2\n    </div>\n    <!--M_|7 #text/0 10 8-->\n    <!---->\n    <div>\n      2.0\n    </div>\n    <div>\n      2.1\n    </div>\n    <div>\n      2.2\n    </div>\n    <!---->\n    <!--M_]1 #text/1 7-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.h = [0, _.a = {\n          items: [0, 1]\n        }, _.b = {\n          outer: 0,\n          _: _.a\n        },\n        {\n          _: _.b,\n          \"#childScope/0\": _.c = {}\n        }, _.c,\n        {\n          _: _.b,\n          \"#childScope/0\": _.d = {}\n        }, _.d, _.e = {\n          outer: 1,\n          _: _.a\n        },\n        {\n          _: _.e,\n          \"#childScope/0\": _.f = {}\n        }, _.f,\n        {\n          _: _.e,\n          \"#childScope/0\": _.g = {}\n        }, _.g]),\n        \"__tests__/template.marko_0_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#comment5, #text, html/body/#comment6\nINSERT html/body/div2\nINSERT html/body/div5\nREMOVE #text after html/body/#comment5\nINSERT html/body/div6\nINSERT html/body/div7\nINSERT html/body/div8\nUPDATE html/body/div2/#text \" \" => \"0.2\"\nUPDATE html/body/div5/#text \" \" => \"1.2\"\nUPDATE html/body/div6/#text \" \" => \"2.0\"\nUPDATE html/body/div7/#text \" \" => \"2.1\"\nUPDATE html/body/div8/#text \" \" => \"2.2\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-for/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  Push\n</button>\n<div>\n  0.0\n</div>\n<div>\n  0.1\n</div>\n<div>\n  1.0\n</div>\n<div>\n  1.1\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-for/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>Push</button><!--M_*1 #button/0--><!--M_[--><div>0.0<!--M_*4 #text/0--></div><div>0.1<!--M_*6 #text/0--></div><!--M_|2 #text/0 5 3--><!--M_[2--><div>1.0<!--M_*9 #text/0--></div><div>1.1<!--M_*11 #text/0--></div><!--M_|7 #text/0 10 8--><!--M_]1 #text/1 7--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.h=[0,_.a={items:[0,1]},_.b={outer:0,_:_.a},{_:_.b,\"#childScope/0\":_.c={}},_.c,{_:_.b,\"#childScope/0\":_.d={}},_.d,_.e={outer:1,_:_.a},{_:_.e,\"#childScope/0\":_.f={}},_.f,{_:_.e,\"#childScope/0\":_.g={}},_.g]),\"__tests__/template.marko_0_items 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Push\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <div>\n      0.0\n      <!--M_*4 #text/0-->\n    </div>\n    <div>\n      0.1\n      <!--M_*6 #text/0-->\n    </div>\n    <!--M_|2 #text/0 5 3-->\n    <!--M_[2-->\n    <div>\n      1.0\n      <!--M_*9 #text/0-->\n    </div>\n    <div>\n      1.1\n      <!--M_*11 #text/0-->\n    </div>\n    <!--M_|7 #text/0 10 8-->\n    <!--M_]1 #text/1 7-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.h = [0, _.a = {\n          items: [0, 1]\n        }, _.b = {\n          outer: 0,\n          _: _.a\n        },\n        {\n          _: _.b,\n          \"#childScope/0\": _.c = {}\n        }, _.c,\n        {\n          _: _.b,\n          \"#childScope/0\": _.d = {}\n        }, _.d, _.e = {\n          outer: 1,\n          _: _.a\n        },\n        {\n          _: _.e,\n          \"#childScope/0\": _.f = {}\n        }, _.f,\n        {\n          _: _.e,\n          \"#childScope/0\": _.g = {}\n        }, _.g]),\n        \"__tests__/template.marko_0_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/div0\nINSERT html/body/div0/#text\nINSERT html/body/div0/#comment\nINSERT html/body/div1\nINSERT html/body/div1/#text\nINSERT html/body/div1/#comment\nINSERT html/body/#comment2\nINSERT html/body/#comment3\nINSERT html/body/div2\nINSERT html/body/div2/#text\nINSERT html/body/div2/#comment\nINSERT html/body/div3\nINSERT html/body/div3/#text\nINSERT html/body/div3/#comment\nINSERT html/body/#comment4\nINSERT html/body/#comment5\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-for/tags/child.marko",
    "content": "<const/{name}=input/>\n<div>${name}</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-for/template.marko",
    "content": "<let/items=[0,1]/>\n<button onClick() { items = [...items, items.length] }>Push</button>\n\n<for|outer| of=items>\n  <for|inner| of=items>\n    <child name=`${outer}.${inner}` />\n  </for>\n</>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-for/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-params/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"_\",\n      \"$$dynamicTag\": \"o\",\n      \"$$content__OR__value\": \"c\",\n      \"$$content\": \"e\",\n      \"$$value\": \"n\",\n      \"$$child_content2__outer\": \"r\",\n      \"$$child_content2__setup\": \"s\",\n      \"$$child_content2\": \"m\",\n      \"$$child_content__y\": \"a\",\n      \"$$child_content__outer__closure\": \"i\",\n      \"$$child_content__outer\": \"d\",\n      \"$$x__script\": \"u\",\n      \"$$x\": \"l\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-params/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Inc\n</button>\n<div>\n  <div>\n    <div>\n      1.2\n    </div>\n  </div>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Inc\n</button>\n<div>\n  <div>\n    <div>\n      2.2\n    </div>\n  </div>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Inc\n</button>\n<div>\n  <div>\n    <div>\n      3.2\n    </div>\n  </div>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Inc\n</button>\n<div>\n  <div>\n    <div>\n      4.2\n    </div>\n  </div>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-params/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  Inc\n</button>\n<div>\n  <div>\n    <div>\n      1.2\n    </div>\n  </div>\n</div>\n```\n\n# Mutations\n```\nINSERT button, div\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Inc\n</button>\n<div>\n  <div>\n    <div>\n      2.2\n    </div>\n  </div>\n</div>\n```\n\n# Mutations\n```\nUPDATE div/div/div/#text0 \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Inc\n</button>\n<div>\n  <div>\n    <div>\n      3.2\n    </div>\n  </div>\n</div>\n```\n\n# Mutations\n```\nUPDATE div/div/div/#text0 \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Inc\n</button>\n<div>\n  <div>\n    <div>\n      4.2\n    </div>\n  </div>\n</div>\n```\n\n# Mutations\n```\nUPDATE div/div/div/#text0 \"3\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-params/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<div><!></div>\";\nexport const $walks = /* next(1), replace, out(1) */\"D%l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\", 0, 0, 1);\nconst $content__OR__value = /* @__PURE__ */_._or(5, $scope => $dynamicTag($scope, $scope.content, () => [$scope.value]));\nexport const $content = /* @__PURE__ */_._const(\"content\", $content__OR__value);\nexport const $value = /* @__PURE__ */_._const(\"value\", $content__OR__value);\nexport const $input = ($scope, input) => {\n  $content($scope, input.content);\n  $value($scope, input.value);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-params/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 505 (min) 293 (brotli)\nconst $dynamicTag = _._dynamic_tag(0, 0, 0, 1),\n  $content__OR__value = _._or(5, ($scope) =>\n    $dynamicTag($scope, $scope.d, () => [$scope.e]),\n  ),\n  $content = _._const(3, $content__OR__value),\n  $value = _._const(4, $content__OR__value),\n  $child_content2__outer = _._closure_get(2, ($scope) =>\n    _._text($scope.a, $scope._.c),\n  ),\n  $child_content2__setup = $child_content2__outer,\n  $child_content2 = _._content_resume(\n    \"b0\",\n    \"<div><!>.<!></div>\",\n    \"D%c%l\",\n    $child_content2__setup,\n    ($scope, $params3) =>\n      (($scope, inner) => _._text($scope.b, inner))($scope, $params3[0]),\n  ),\n  $child_content__y = _._closure_get(3, ($scope) =>\n    $value($scope.a, $scope._.d),\n  ),\n  $child_content__outer__closure = _._closure($child_content2__outer),\n  $child_content__outer = _._const(2, $child_content__outer__closure);\n_._content_resume(\n  \"b1\",\n  \"<div><!></div>\",\n  \"/D%l&\",\n  ($scope) => {\n    ($child_content__y($scope),\n      $scope.a,\n      $content($scope.a, $child_content2($scope)));\n  },\n  ($scope, $params2) => $child_content__outer($scope, $params2[0]),\n);\nconst $x__script = _._script(\"b2\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $x($scope, $scope.c + 1);\n    }),\n  ),\n  $x = _._let(2, ($scope) => {\n    ($value($scope.b, $scope.c), $x__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-params/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<button>Inc</button>${_child_template}`;\nexport const $walks = /* get, over(1), <child> */` b/${_child_walks}&`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _child, $content as _child_input_content, $value as _child_input_value, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nconst $child_content2__outer = /* @__PURE__ */_._closure_get(\"outer\", $scope => _._text($scope[\"#text/0\"], $scope._.outer));\nconst $child_content2__setup = $child_content2__outer;\nconst $child_content2__inner = ($scope, inner) => _._text($scope[\"#text/1\"], inner);\nconst $child_content2__$params = ($scope, $params3) => $child_content2__inner($scope, $params3[0]);\nconst $child_content2 = _._content_resume(\"__tests__/template.marko_2_content\", \"<div><!>.<!></div>\", /* next(1), replace, over(2), replace, out(1) */\"D%c%l\", $child_content2__setup, $child_content2__$params);\nconst $child_content__y = /* @__PURE__ */_._closure_get(\"y\", $scope => _child_input_value($scope[\"#childScope/0\"], $scope._.y));\nconst $child_content__setup = $scope => {\n  $child_content__y($scope);\n  _child($scope[\"#childScope/0\"]);\n  _child_input_content($scope[\"#childScope/0\"], $child_content2($scope));\n};\nconst $child_content__$params = ($scope, $params2) => $child_content__outer($scope, $params2[0]);\nconst $child_content__outer__closure = /* @__PURE__ */_._closure($child_content2__outer);\nconst $child_content__outer = /* @__PURE__ */_._const(\"outer\", $child_content__outer__closure);\nconst $child_content = _._content_resume(\"__tests__/template.marko_1_content\", _child_template, /* <child> */`/${_child_walks}&`, $child_content__setup, $child_content__$params);\nconst $x__script = _._script(\"__tests__/template.marko_0_x\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $x($scope, $scope.x + 1);\n}));\nconst $x = /* @__PURE__ */_._let(\"x/2\", $scope => {\n  _child_input_value($scope[\"#childScope/1\"], $scope.x);\n  $x__script($scope);\n});\nconst $y = /* @__PURE__ */_._let(\"y/3\");\nexport function $setup($scope) {\n  _child($scope[\"#childScope/1\"]);\n  _child_input_content($scope[\"#childScope/1\"], $child_content($scope));\n  $x($scope, 1);\n  $y($scope, 2);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-params/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    content,\n    value\n  } = input;\n  _._html(\"<div>\");\n  _._dynamic_tag($scope0_id, \"#text/0\", content, [value], 0, 1, _._serialize_guard($scope0_reason, /* input.content, input.value */0));\n  _._html(\"</div>\");\n  _._serialize_if($scope0_reason, /* input.content, input.value */0) && _._scope($scope0_id, {\n    content: _._serialize_if($scope0_reason, /* input.value */2) && content,\n    value: _._serialize_if($scope0_reason, /* input.content */1) && value\n  }, \"__tests__/tags/child.marko\", 0, {\n    content: \"1:9\",\n    value: \"1:18\"\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-params/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _child from \"./tags/child.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let x = 1;\n  let y = 2;\n  _._html(`<button>Inc</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason({\n    /* input.content, input.value */0: /* x */1,\n    /* input.value */2: /* x */1\n  });\n  _child({\n    value: x,\n    content: _._content_resume(\"__tests__/template.marko_1_content\", outer => {\n      const $scope1_reason = _._scope_reason();\n      const $scope1_id = _._scope_id();\n      const $child_content__outer__closures = new Set();\n      _child({\n        value: y,\n        content: _._content_resume(\"__tests__/template.marko_2_content\", inner => {\n          const $scope2_reason = _._scope_reason();\n          const $scope2_id = _._scope_id();\n          _._html(`<div>${_._escape(outer)}${_._el_resume($scope2_id, \"#text/0\", _._serialize_guard($scope1_reason, /* outer */0))}.${_._sep(_._serialize_guard($scope2_reason, /* inner */0))}${_._escape(inner)}${_._el_resume($scope2_id, \"#text/1\", _._serialize_guard($scope2_reason, /* inner */0))}</div>`);\n          _._subscribe($child_content__outer__closures, _._scope($scope2_id, {\n            _: _._scope_with_id($scope1_id),\n            \"ClosureSignalIndex:outer\": _._serialize_if($scope1_reason, /* outer */0) && 0\n          }, \"__tests__/template.marko\", \"7:6\"));\n          _._resume_branch($scope2_id);\n        }, $scope1_id)\n      });\n      _._scope($scope1_id, {\n        outer,\n        _: _._scope_with_id($scope0_id),\n        \"ClosureScopes:outer\": _._serialize_if($scope1_reason, /* outer */0) && $child_content__outer__closures\n      }, \"__tests__/template.marko\", \"6:2\", {\n        outer: \"6:8\"\n      });\n      _._resume_branch($scope1_id);\n    }, $scope0_id)\n  });\n  _._script($scope0_id, \"__tests__/template.marko_0_x\");\n  _._scope($scope0_id, {\n    x,\n    y,\n    \"#childScope/1\": _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0, {\n    x: \"1:6\",\n    y: \"2:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-params/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Inc\n</button>\n<div>\n  <div>\n    <div>\n      1.2\n    </div>\n  </div>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Inc\n</button>\n<div>\n  <div>\n    <div>\n      2.2\n    </div>\n  </div>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Inc\n</button>\n<div>\n  <div>\n    <div>\n      3.2\n    </div>\n  </div>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Inc\n</button>\n<div>\n  <div>\n    <div>\n      4.2\n    </div>\n  </div>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-params/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Inc\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      <!--M_[-->\n      <div>\n        <div>\n          1\n          <!--M_*5 #text/0-->\n          .2\n        </div>\n      </div>\n      <!--M_]2 #text/0 3-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.b = {\n          x: 1,\n          y: 2,\n          \"#childScope/1\": _.a = {\n            \"ConditionalRenderer:#text/0\": \"__tests__/template.marko_1_content\"\n          }\n        }, _.a, _.c = {\n          outer: 1,\n          _: _.b,\n          \"ClosureScopes:outer\": _.e = new Set\n        }, 1, _.f = {\n          _: _.c,\n          \"ClosureSignalIndex:outer\": 0,\n          \"#ClosestBranchId\": 3\n        }], _.a.content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.b), (_.e).add(_.f), _.d),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Inc\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      <!--M_[-->\n      <div>\n        <div>\n          2\n          <!--M_*5 #text/0-->\n          .2\n        </div>\n      </div>\n      <!--M_]2 #text/0 3-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.b = {\n          x: 1,\n          y: 2,\n          \"#childScope/1\": _.a = {\n            \"ConditionalRenderer:#text/0\": \"__tests__/template.marko_1_content\"\n          }\n        }, _.a, _.c = {\n          outer: 1,\n          _: _.b,\n          \"ClosureScopes:outer\": _.e = new Set\n        }, 1, _.f = {\n          _: _.c,\n          \"ClosureSignalIndex:outer\": 0,\n          \"#ClosestBranchId\": 3\n        }], _.a.content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.b), (_.e).add(_.f), _.d),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/div/div/#text0 \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Inc\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      <!--M_[-->\n      <div>\n        <div>\n          3\n          <!--M_*5 #text/0-->\n          .2\n        </div>\n      </div>\n      <!--M_]2 #text/0 3-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.b = {\n          x: 1,\n          y: 2,\n          \"#childScope/1\": _.a = {\n            \"ConditionalRenderer:#text/0\": \"__tests__/template.marko_1_content\"\n          }\n        }, _.a, _.c = {\n          outer: 1,\n          _: _.b,\n          \"ClosureScopes:outer\": _.e = new Set\n        }, 1, _.f = {\n          _: _.c,\n          \"ClosureSignalIndex:outer\": 0,\n          \"#ClosestBranchId\": 3\n        }], _.a.content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.b), (_.e).add(_.f), _.d),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/div/div/#text0 \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Inc\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      <!--M_[-->\n      <div>\n        <div>\n          4\n          <!--M_*5 #text/0-->\n          .2\n        </div>\n      </div>\n      <!--M_]2 #text/0 3-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.b = {\n          x: 1,\n          y: 2,\n          \"#childScope/1\": _.a = {\n            \"ConditionalRenderer:#text/0\": \"__tests__/template.marko_1_content\"\n          }\n        }, _.a, _.c = {\n          outer: 1,\n          _: _.b,\n          \"ClosureScopes:outer\": _.e = new Set\n        }, 1, _.f = {\n          _: _.c,\n          \"ClosureSignalIndex:outer\": 0,\n          \"#ClosestBranchId\": 3\n        }], _.a.content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.b), (_.e).add(_.f), _.d),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/div/div/#text0 \"3\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-params/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  Inc\n</button>\n<div>\n  <div>\n    <div>\n      1.2\n    </div>\n  </div>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-params/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>Inc</button><!--M_*1 #button/0--><div><!--M_[--><div><div>1<!--M_*5 #text/0-->.2</div></div><!--M_]2 #text/0 3--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.d=[0,_.b={x:1,y:2,\"#childScope/1\":_.a={\"ConditionalRenderer:#text/0\":\"__tests__/template.marko_1_content\"}},_.a,_.c={outer:1,_:_.b,\"ClosureScopes:outer\":_.e=new Set},1,_.f={_:_.c,\"ClosureSignalIndex:outer\":0,\"#ClosestBranchId\":3}],_.a.content=_._[\"__tests__/template.marko_1_content\"](_.b),(_.e).add(_.f),_.d),\"__tests__/template.marko_0_x 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Inc\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      <!--M_[-->\n      <div>\n        <div>\n          1\n          <!--M_*5 #text/0-->\n          .2\n        </div>\n      </div>\n      <!--M_]2 #text/0 3-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.b = {\n          x: 1,\n          y: 2,\n          \"#childScope/1\": _.a = {\n            \"ConditionalRenderer:#text/0\": \"__tests__/template.marko_1_content\"\n          }\n        }, _.a, _.c = {\n          outer: 1,\n          _: _.b,\n          \"ClosureScopes:outer\": _.e = new Set\n        }, 1, _.f = {\n          _: _.c,\n          \"ClosureSignalIndex:outer\": 0,\n          \"#ClosestBranchId\": 3\n        }], _.a.content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.b), (_.e).add(_.f), _.d),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment\nINSERT html/body/div\nINSERT html/body/div/#comment0\nINSERT html/body/div/div\nINSERT html/body/div/div/div\nINSERT html/body/div/div/div/#text0\nINSERT html/body/div/div/div/#comment\nINSERT html/body/div/div/div/#text1\nINSERT html/body/div/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-params/tags/child.marko",
    "content": "<const/{content, value}=input/>\n<div><${content}(value)/></div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-params/template.marko",
    "content": "<let/x=1/>\n<let/y=2/>\n\n<button onClick() { x++; }>Inc</button>\n\n<child|outer|=x>\n    <child|inner|=y>\n        <div>${outer}.${inner}</div>\n    </>\n</>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-params/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-custom-tag/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"o\",\n      \"$init\": \"t\",\n      \"$$child_content__count__script\": \"r\",\n      \"$$child_content__count\": \"m\",\n      \"$$count__closure\": \"_\",\n      \"$$count\": \"c\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-custom-tag/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-custom-tag/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<!---->\n<button>\n  0\n</button>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, button, #comment2, #comment3\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<!---->\n<button>\n  1\n</button>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<!---->\n<button>\n  2\n</button>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<!---->\n<button>\n  3\n</button>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-custom-tag/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\");\nexport const $input_content = ($scope, input_content) => $dynamicTag($scope, input_content);\nexport const $input = ($scope, input) => $input_content($scope, input.content);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-custom-tag/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 156 (min) 115 (brotli)\nconst $child_content__count__script = _._script(\"b0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $count($scope._, $scope._.b + 1);\n    }),\n  ),\n  $child_content__count = _._closure_get(1, ($scope) => {\n    (_._text($scope.b, $scope._.b), $child_content__count__script($scope));\n  }),\n  $count__closure = _._closure($child_content__count),\n  $count = _._let(1, $count__closure);\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-custom-tag/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<!>${_child_template}<!>`;\nexport const $walks = /* over(1), <child>, over(1) */`b/${_child_walks}&b`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _child, $input_content as _child_input_content, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nconst $child_content__count__script = _._script(\"__tests__/template.marko_1_count\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $count($scope._, $scope._.count + 1);\n}));\nconst $child_content__count = /* @__PURE__ */_._closure_get(\"count\", $scope => {\n  _._text($scope[\"#text/1\"], $scope._.count);\n  $child_content__count__script($scope);\n});\nconst $child_content__setup = $child_content__count;\nconst $child_content = /* @__PURE__ */_._content(\"__tests__/template.marko_1_content\", \"<button> </button>\", /* get, next(1), get, out(1) */\" D l\", $child_content__setup);\nconst $count__closure = /* @__PURE__ */_._closure($child_content__count);\nconst $count = /* @__PURE__ */_._let(\"count/1\", $count__closure);\nexport function $setup($scope) {\n  _child($scope[\"#childScope/0\"]);\n  _child_input_content($scope[\"#childScope/0\"], $child_content($scope));\n  $count($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-custom-tag/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._dynamic_tag($scope0_id, \"#text/0\", input.content, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.content */0));\n  _._serialize_if($scope0_reason, /* input.content */0) && _._scope($scope0_id, {}, \"__tests__/tags/child.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-custom-tag/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _child from \"./tags/child.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $count__closures = new Set();\n  let count = 0;\n  _child({\n    content: _._content(\"__tests__/template.marko_1_content\", () => {\n      _._scope_reason();\n      const $scope1_id = _._scope_id();\n      _._html(`<button>${_._escape(count)}${_._el_resume($scope1_id, \"#text/1\")}</button>${_._el_resume($scope1_id, \"#button/0\")}`);\n      _._script($scope1_id, \"__tests__/template.marko_1_count\");\n      _._subscribe($count__closures, _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id),\n        \"ClosureSignalIndex:count\": 0\n      }, \"__tests__/template.marko\", \"2:2\"));\n      _._resume_branch($scope1_id);\n    })\n  });\n  _._scope($scope0_id, {\n    count,\n    \"ClosureScopes:count\": $count__closures\n  }, \"__tests__/template.marko\", 0, {\n    count: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-custom-tag/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-custom-tag/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*3 #text/1-->\n    </button>\n    <!--M_*3 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          count: 0,\n          \"ClosureScopes:count\": _.c = new Set\n        }, 1, _.d = {\n          _: _.a,\n          \"ClosureSignalIndex:count\": 0\n        }], (_.c).add(_.d), _.b),\n        \"__tests__/template.marko_1_count 3\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*3 #text/1-->\n    </button>\n    <!--M_*3 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          count: 0,\n          \"ClosureScopes:count\": _.c = new Set\n        }, 1, _.d = {\n          _: _.a,\n          \"ClosureSignalIndex:count\": 0\n        }], (_.c).add(_.d), _.b),\n        \"__tests__/template.marko_1_count 3\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      2\n      <!--M_*3 #text/1-->\n    </button>\n    <!--M_*3 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          count: 0,\n          \"ClosureScopes:count\": _.c = new Set\n        }, 1, _.d = {\n          _: _.a,\n          \"ClosureSignalIndex:count\": 0\n        }], (_.c).add(_.d), _.b),\n        \"__tests__/template.marko_1_count 3\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      3\n      <!--M_*3 #text/1-->\n    </button>\n    <!--M_*3 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          count: 0,\n          \"ClosureScopes:count\": _.c = new Set\n        }, 1, _.d = {\n          _: _.a,\n          \"ClosureSignalIndex:count\": 0\n        }], (_.c).add(_.d), _.b),\n        \"__tests__/template.marko_1_count 3\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-custom-tag/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  0\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-custom-tag/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>0<!--M_*3 #text/1--></button><!--M_*3 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={count:0,\"ClosureScopes:count\":_.c=new Set},1,_.d={_:_.a,\"ClosureSignalIndex:count\":0}],(_.c).add(_.d),_.b),\"__tests__/template.marko_1_count 3\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*3 #text/1-->\n    </button>\n    <!--M_*3 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          count: 0,\n          \"ClosureScopes:count\": _.c = new Set\n        }, 1, _.d = {\n          _: _.a,\n          \"ClosureSignalIndex:count\": 0\n        }], (_.c).add(_.d), _.b),\n        \"__tests__/template.marko_1_count 3\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-custom-tag/tags/child.marko",
    "content": "<${input.content}/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-custom-tag/template.marko",
    "content": "<let/count = 0/>\n<child>\n  <button onClick() { count++ }>\n    ${count}\n  </button>\n</child>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-custom-tag/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-dynamic-tag/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$falseChild_content__count__script\": \"r\",\n      \"$$falseChild_content__count\": \"_\",\n      \"$$falseChild_content__setup\": \"m\",\n      \"$$count__closure\": \"n\",\n      \"$$count\": \"e\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-dynamic-tag/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-dynamic-tag/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<!---->\n<button>\n  0\n</button>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, button, #comment2, #comment3\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<!---->\n<button>\n  1\n</button>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<!---->\n<button>\n  2\n</button>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<!---->\n<button>\n  3\n</button>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-dynamic-tag/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\");\nexport const $input_content = ($scope, input_content) => $dynamicTag($scope, input_content);\nexport const $input = ($scope, input) => $input_content($scope, input.content);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-dynamic-tag/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 220 (min) 154 (brotli)\nconst $falseChild_content__count__script = _._script(\"b0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $count($scope._, $scope._.b + 1);\n    }),\n  ),\n  $falseChild_content__count = _._closure_get(1, ($scope) => {\n    (_._text($scope.b, $scope._.b), $falseChild_content__count__script($scope));\n  }),\n  $falseChild_content__setup = $falseChild_content__count;\n_._content_resume(\n  \"b1\",\n  \"<button> </button>\",\n  \" D l\",\n  $falseChild_content__setup,\n);\nconst $count__closure = _._closure($falseChild_content__count),\n  $count = _._let(1, $count__closure);\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-dynamic-tag/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nimport Child from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $falseChild_content__count__script = _._script(\"__tests__/template.marko_1_count\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $count($scope._, $scope._.count + 1);\n}));\nconst $falseChild_content__count = /* @__PURE__ */_._closure_get(\"count\", $scope => {\n  _._text($scope[\"#text/1\"], $scope._.count);\n  $falseChild_content__count__script($scope);\n});\nconst $falseChild_content__setup = $falseChild_content__count;\nconst $falseChild_content = _._content_resume(\"__tests__/template.marko_1_content\", \"<button> </button>\", /* get, next(1), get, out(1) */\" D l\", $falseChild_content__setup);\nconst $count__closure = /* @__PURE__ */_._closure($falseChild_content__count);\nconst $count = /* @__PURE__ */_._let(\"count/1\", $count__closure);\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\", $falseChild_content);\nexport function $setup($scope) {\n  $count($scope, 0);\n  $dynamicTag($scope, false || Child);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-dynamic-tag/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._dynamic_tag($scope0_id, \"#text/0\", input.content, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.content */0));\n  _._serialize_if($scope0_reason, /* input.content */0) && _._scope($scope0_id, {}, \"__tests__/tags/child.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-dynamic-tag/__snapshots__/html.expected/template.js",
    "content": "import Child from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $count__closures = new Set();\n  let count = 0;\n  _._dynamic_tag($scope0_id, \"#text/0\", false || Child, {}, _._content_resume(\"__tests__/template.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    _._scope_reason();\n    _._html(`<button>${_._escape(count)}${_._el_resume($scope1_id, \"#text/1\")}</button>${_._el_resume($scope1_id, \"#button/0\")}`);\n    _._script($scope1_id, \"__tests__/template.marko_1_count\");\n    _._subscribe($count__closures, _._scope($scope1_id, {\n      _: _._scope_with_id($scope0_id),\n      \"ClosureSignalIndex:count\": 0\n    }, \"__tests__/template.marko\", \"4:4\"));\n    _._resume_branch($scope1_id);\n  }, $scope0_id), 0, 0);\n  _._scope($scope0_id, {\n    count,\n    \"ClosureScopes:count\": $count__closures\n  }, \"__tests__/template.marko\", 0, {\n    count: \"3:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-dynamic-tag/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-dynamic-tag/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*3 #text/1-->\n    </button>\n    <!--M_*3 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          count: 0,\n          \"ClosureScopes:count\": _.c = new Set\n        }, 1, _.d = {\n          _: _.a,\n          \"ClosureSignalIndex:count\": 0\n        }], (_.c).add(_.d), _.b),\n        \"__tests__/template.marko_1_count 3\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*3 #text/1-->\n    </button>\n    <!--M_*3 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          count: 0,\n          \"ClosureScopes:count\": _.c = new Set\n        }, 1, _.d = {\n          _: _.a,\n          \"ClosureSignalIndex:count\": 0\n        }], (_.c).add(_.d), _.b),\n        \"__tests__/template.marko_1_count 3\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      2\n      <!--M_*3 #text/1-->\n    </button>\n    <!--M_*3 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          count: 0,\n          \"ClosureScopes:count\": _.c = new Set\n        }, 1, _.d = {\n          _: _.a,\n          \"ClosureSignalIndex:count\": 0\n        }], (_.c).add(_.d), _.b),\n        \"__tests__/template.marko_1_count 3\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      3\n      <!--M_*3 #text/1-->\n    </button>\n    <!--M_*3 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          count: 0,\n          \"ClosureScopes:count\": _.c = new Set\n        }, 1, _.d = {\n          _: _.a,\n          \"ClosureSignalIndex:count\": 0\n        }], (_.c).add(_.d), _.b),\n        \"__tests__/template.marko_1_count 3\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-dynamic-tag/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  0\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-dynamic-tag/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>0<!--M_*3 #text/1--></button><!--M_*3 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={count:0,\"ClosureScopes:count\":_.c=new Set},1,_.d={_:_.a,\"ClosureSignalIndex:count\":0}],(_.c).add(_.d),_.b),\"__tests__/template.marko_1_count 3\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*3 #text/1-->\n    </button>\n    <!--M_*3 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          count: 0,\n          \"ClosureScopes:count\": _.c = new Set\n        }, 1, _.d = {\n          _: _.a,\n          \"ClosureSignalIndex:count\": 0\n        }], (_.c).add(_.d), _.b),\n        \"__tests__/template.marko_1_count 3\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-dynamic-tag/tags/child.marko",
    "content": "<${input.content}/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-dynamic-tag/template.marko",
    "content": "import Child from \"<child>\";\n\n<let/count = 0/>\n<${false || Child}>\n  <button onClick() { count++ }>\n    ${count}\n  </button>\n</>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-dynamic-tag/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-for/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"a\",\n      \"$$for_content__selected__OR__num\": \"o\",\n      \"$$for_content__selected\": \"r\",\n      \"$$selected\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-for/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  1\n</button>\n<button>\n  2\n</button>\n<button>\n  3\n</button>\n<button>\n  4\n</button>\n<button>\n  5\n</button>\n<button>\n  6\n</button>\n<button>\n  7\n</button>\n<button>\n  8\n</button>\n<button>\n  9\n</button>\n<button>\n  10\n</button>\n<button>\n  11\n</button>\n<button>\n  12\n</button>\n```\n\n\n# Render\n```js\nclick(c, 2);\n```\n```html\n<button>\n  1\n</button>\n<button\n  data-multiple=\"\"\n  data-selected=\"\"\n>\n  2\n</button>\n<button>\n  3\n</button>\n<button\n  data-multiple=\"\"\n>\n  4\n</button>\n<button>\n  5\n</button>\n<button\n  data-multiple=\"\"\n>\n  6\n</button>\n<button>\n  7\n</button>\n<button\n  data-multiple=\"\"\n>\n  8\n</button>\n<button>\n  9\n</button>\n<button\n  data-multiple=\"\"\n>\n  10\n</button>\n<button>\n  11\n</button>\n<button\n  data-multiple=\"\"\n>\n  12\n</button>\n```\n\n\n# Render\n```js\nclick(c, 3);\n```\n```html\n<button>\n  1\n</button>\n<button>\n  2\n</button>\n<button\n  data-multiple=\"\"\n  data-selected=\"\"\n>\n  3\n</button>\n<button>\n  4\n</button>\n<button>\n  5\n</button>\n<button\n  data-multiple=\"\"\n>\n  6\n</button>\n<button>\n  7\n</button>\n<button>\n  8\n</button>\n<button\n  data-multiple=\"\"\n>\n  9\n</button>\n<button>\n  10\n</button>\n<button>\n  11\n</button>\n<button\n  data-multiple=\"\"\n>\n  12\n</button>\n```\n\n\n# Render\n```js\nclick(c, 5);\n```\n```html\n<button>\n  1\n</button>\n<button>\n  2\n</button>\n<button>\n  3\n</button>\n<button>\n  4\n</button>\n<button\n  data-multiple=\"\"\n  data-selected=\"\"\n>\n  5\n</button>\n<button>\n  6\n</button>\n<button>\n  7\n</button>\n<button>\n  8\n</button>\n<button>\n  9\n</button>\n<button\n  data-multiple=\"\"\n>\n  10\n</button>\n<button>\n  11\n</button>\n<button>\n  12\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-for/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<button>\n  1\n</button>\n<button>\n  2\n</button>\n<button>\n  3\n</button>\n<button>\n  4\n</button>\n<button>\n  5\n</button>\n<button>\n  6\n</button>\n<button>\n  7\n</button>\n<button>\n  8\n</button>\n<button>\n  9\n</button>\n<button>\n  10\n</button>\n<button>\n  11\n</button>\n<button>\n  12\n</button>\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, button0, button1, button2, button3, button4, button5, button6, button7, button8, button9, button10, button11, #comment1\n```\n\n# Render\n```js\nclick(c, 2);\n```\n```html\n<!---->\n<button>\n  1\n</button>\n<button\n  data-multiple=\"\"\n  data-selected=\"\"\n>\n  2\n</button>\n<button>\n  3\n</button>\n<button\n  data-multiple=\"\"\n>\n  4\n</button>\n<button>\n  5\n</button>\n<button\n  data-multiple=\"\"\n>\n  6\n</button>\n<button>\n  7\n</button>\n<button\n  data-multiple=\"\"\n>\n  8\n</button>\n<button>\n  9\n</button>\n<button\n  data-multiple=\"\"\n>\n  10\n</button>\n<button>\n  11\n</button>\n<button\n  data-multiple=\"\"\n>\n  12\n</button>\n<!---->\n```\n\n# Mutations\n```\nUPDATE button1[data-selected] null => \"\"\nUPDATE button1[data-multiple] null => \"\"\nUPDATE button3[data-multiple] null => \"\"\nUPDATE button5[data-multiple] null => \"\"\nUPDATE button7[data-multiple] null => \"\"\nUPDATE button9[data-multiple] null => \"\"\nUPDATE button11[data-multiple] null => \"\"\n```\n\n# Render\n```js\nclick(c, 3);\n```\n```html\n<!---->\n<button>\n  1\n</button>\n<button>\n  2\n</button>\n<button\n  data-multiple=\"\"\n  data-selected=\"\"\n>\n  3\n</button>\n<button>\n  4\n</button>\n<button>\n  5\n</button>\n<button\n  data-multiple=\"\"\n>\n  6\n</button>\n<button>\n  7\n</button>\n<button>\n  8\n</button>\n<button\n  data-multiple=\"\"\n>\n  9\n</button>\n<button>\n  10\n</button>\n<button>\n  11\n</button>\n<button\n  data-multiple=\"\"\n>\n  12\n</button>\n<!---->\n```\n\n# Mutations\n```\nUPDATE button1[data-selected] \"\" => null\nUPDATE button1[data-multiple] \"\" => null\nUPDATE button2[data-selected] null => \"\"\nUPDATE button2[data-multiple] null => \"\"\nUPDATE button3[data-multiple] \"\" => null\nUPDATE button7[data-multiple] \"\" => null\nUPDATE button8[data-multiple] null => \"\"\nUPDATE button9[data-multiple] \"\" => null\n```\n\n# Render\n```js\nclick(c, 5);\n```\n```html\n<!---->\n<button>\n  1\n</button>\n<button>\n  2\n</button>\n<button>\n  3\n</button>\n<button>\n  4\n</button>\n<button\n  data-multiple=\"\"\n  data-selected=\"\"\n>\n  5\n</button>\n<button>\n  6\n</button>\n<button>\n  7\n</button>\n<button>\n  8\n</button>\n<button>\n  9\n</button>\n<button\n  data-multiple=\"\"\n>\n  10\n</button>\n<button>\n  11\n</button>\n<button>\n  12\n</button>\n<!---->\n```\n\n# Mutations\n```\nUPDATE button2[data-selected] \"\" => null\nUPDATE button2[data-multiple] \"\" => null\nUPDATE button4[data-selected] null => \"\"\nUPDATE button4[data-multiple] null => \"\"\nUPDATE button5[data-multiple] \"\" => null\nUPDATE button8[data-multiple] \"\" => null\nUPDATE button9[data-multiple] null => \"\"\nUPDATE button11[data-multiple] \"\" => null\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-for/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 213 (min) 150 (brotli)\nconst $for_content__selected__OR__num = _._or(4, ($scope) => {\n    (_._attr($scope.a, \"data-selected\", $scope._.b === $scope.d),\n      _._attr($scope.a, \"data-multiple\", $scope.d % $scope._.b === 0));\n  }),\n  $for_content__selected = _._for_closure(0, $for_content__selected__OR__num);\n_._script(\"a0\", ($scope) =>\n  _._on($scope.a, \"click\", function () {\n    $selected($scope._, $scope.d);\n  }),\n);\nconst $selected = _._let(1, $for_content__selected);\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-for/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for_content__selected__OR__num = /* @__PURE__ */_._or(4, $scope => {\n  _._attr($scope[\"#button/0\"], \"data-selected\", $scope._.selected === $scope.num);\n  _._attr($scope[\"#button/0\"], \"data-multiple\", $scope.num % $scope._.selected === 0);\n});\nconst $for_content__selected = /* @__PURE__ */_._for_closure(\"#text/0\", $for_content__selected__OR__num);\nconst $for_content__setup = $for_content__selected;\nconst $for_content__num__script = _._script(\"__tests__/template.marko_1_num\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $selected($scope._, $scope.num);\n}));\nconst $for_content__num = /* @__PURE__ */_._const(\"num\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.num);\n  $for_content__selected__OR__num($scope);\n  $for_content__num__script($scope);\n});\nconst $for_content__$params = ($scope, $params2) => $for_content__num($scope, $params2[0]);\nconst $selected = /* @__PURE__ */_._let(\"selected/1\", $for_content__selected);\nconst $for = /* @__PURE__ */_._for_of(\"#text/0\", \"<button> </button>\", /* get, next(1), get, out(1) */\" D l\", $for_content__setup, $for_content__$params);\nexport function $setup($scope) {\n  $selected($scope, 0);\n  $for($scope, [[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]]);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-for/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let selected = 0;\n  _._for_of([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], num => {\n    const $scope1_id = _._scope_id();\n    _._html(`<button${_._attr(\"data-selected\", selected === num)}${_._attr(\"data-multiple\", num % selected === 0)}>${_._escape(num)}</button>${_._el_resume($scope1_id, \"#button/0\")}`);\n    _._script($scope1_id, \"__tests__/template.marko_1_num\");\n    _._scope($scope1_id, {\n      num,\n      _: _._scope_with_id($scope0_id)\n    }, \"__tests__/template.marko\", \"3:2\", {\n      num: \"3:6\"\n    });\n  }, 0, $scope0_id, \"#text/0\", /* selected */1, 0, 0, 0, 1);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-for/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  1\n</button>\n<button>\n  2\n</button>\n<button>\n  3\n</button>\n<button>\n  4\n</button>\n<button>\n  5\n</button>\n<button>\n  6\n</button>\n<button>\n  7\n</button>\n<button>\n  8\n</button>\n<button>\n  9\n</button>\n<button>\n  10\n</button>\n<button>\n  11\n</button>\n<button>\n  12\n</button>\n```\n\n\n# Render\n```js\nclick(c, 2);\n```\n```html\n<button>\n  1\n</button>\n<button\n  data-multiple=\"\"\n  data-selected=\"\"\n>\n  2\n</button>\n<button>\n  3\n</button>\n<button\n  data-multiple=\"\"\n>\n  4\n</button>\n<button>\n  5\n</button>\n<button\n  data-multiple=\"\"\n>\n  6\n</button>\n<button>\n  7\n</button>\n<button\n  data-multiple=\"\"\n>\n  8\n</button>\n<button>\n  9\n</button>\n<button\n  data-multiple=\"\"\n>\n  10\n</button>\n<button>\n  11\n</button>\n<button\n  data-multiple=\"\"\n>\n  12\n</button>\n```\n\n\n# Render\n```js\nclick(c, 3);\n```\n```html\n<button>\n  1\n</button>\n<button>\n  2\n</button>\n<button\n  data-multiple=\"\"\n  data-selected=\"\"\n>\n  3\n</button>\n<button>\n  4\n</button>\n<button>\n  5\n</button>\n<button\n  data-multiple=\"\"\n>\n  6\n</button>\n<button>\n  7\n</button>\n<button>\n  8\n</button>\n<button\n  data-multiple=\"\"\n>\n  9\n</button>\n<button>\n  10\n</button>\n<button>\n  11\n</button>\n<button\n  data-multiple=\"\"\n>\n  12\n</button>\n```\n\n\n# Render\n```js\nclick(c, 5);\n```\n```html\n<button>\n  1\n</button>\n<button>\n  2\n</button>\n<button>\n  3\n</button>\n<button>\n  4\n</button>\n<button\n  data-multiple=\"\"\n  data-selected=\"\"\n>\n  5\n</button>\n<button>\n  6\n</button>\n<button>\n  7\n</button>\n<button>\n  8\n</button>\n<button>\n  9\n</button>\n<button\n  data-multiple=\"\"\n>\n  10\n</button>\n<button>\n  11\n</button>\n<button>\n  12\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-for/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n    </button>\n    <!--M_*2 #button/0-->\n    <button>\n      2\n    </button>\n    <!--M_*3 #button/0-->\n    <button>\n      3\n    </button>\n    <!--M_*4 #button/0-->\n    <button>\n      4\n    </button>\n    <!--M_*5 #button/0-->\n    <button>\n      5\n    </button>\n    <!--M_*6 #button/0-->\n    <button>\n      6\n    </button>\n    <!--M_*7 #button/0-->\n    <button>\n      7\n    </button>\n    <!--M_*8 #button/0-->\n    <button>\n      8\n    </button>\n    <!--M_*9 #button/0-->\n    <button>\n      9\n    </button>\n    <!--M_*10 #button/0-->\n    <button>\n      10\n    </button>\n    <!--M_*11 #button/0-->\n    <button>\n      11\n    </button>\n    <!--M_*12 #button/0-->\n    <button>\n      12\n    </button>\n    <!--M_*13 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.n = [0, _.a = {\n            \"BranchScopes:#text/0\": [_.b = {\n              num: 1\n            }, _.c = {\n              num: 2\n            }, _.d = {\n              num: 3\n            }, _.e = {\n              num: 4\n            }, _.f = {\n              num: 5\n            }, _.g = {\n              num: 6\n            }, _.h = {\n              num: 7\n            }, _.i = {\n              num: 8\n            }, _.j = {\n              num: 9\n            }, _.k = {\n              num: 10\n            }, _.l = {\n              num: 11\n            }, _.m = {\n              num: 12\n            }]\n          }, _.b, _.c, _.d, _.e, _.f, _.g, _.h, _.i, _.j, _.k, _.l, _.m], _.b\n          ._ = _.c._ = _.d._ = _.e._ = _.f._ = _.g._ = _.h._ = _.i._ = _.j._ =\n          _.k._ = _.l._ = _.m._ = _.a, _.n),\n        \"__tests__/template.marko_1_num 2 3 4 5 6 7 8 9 10 11 12 13\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\nclick(c, 2);\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n    </button>\n    <!--M_*2 #button/0-->\n    <button\n      data-multiple=\"\"\n      data-selected=\"\"\n    >\n      2\n    </button>\n    <!--M_*3 #button/0-->\n    <button>\n      3\n    </button>\n    <!--M_*4 #button/0-->\n    <button\n      data-multiple=\"\"\n    >\n      4\n    </button>\n    <!--M_*5 #button/0-->\n    <button>\n      5\n    </button>\n    <!--M_*6 #button/0-->\n    <button\n      data-multiple=\"\"\n    >\n      6\n    </button>\n    <!--M_*7 #button/0-->\n    <button>\n      7\n    </button>\n    <!--M_*8 #button/0-->\n    <button\n      data-multiple=\"\"\n    >\n      8\n    </button>\n    <!--M_*9 #button/0-->\n    <button>\n      9\n    </button>\n    <!--M_*10 #button/0-->\n    <button\n      data-multiple=\"\"\n    >\n      10\n    </button>\n    <!--M_*11 #button/0-->\n    <button>\n      11\n    </button>\n    <!--M_*12 #button/0-->\n    <button\n      data-multiple=\"\"\n    >\n      12\n    </button>\n    <!--M_*13 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.n = [0, _.a = {\n            \"BranchScopes:#text/0\": [_.b = {\n              num: 1\n            }, _.c = {\n              num: 2\n            }, _.d = {\n              num: 3\n            }, _.e = {\n              num: 4\n            }, _.f = {\n              num: 5\n            }, _.g = {\n              num: 6\n            }, _.h = {\n              num: 7\n            }, _.i = {\n              num: 8\n            }, _.j = {\n              num: 9\n            }, _.k = {\n              num: 10\n            }, _.l = {\n              num: 11\n            }, _.m = {\n              num: 12\n            }]\n          }, _.b, _.c, _.d, _.e, _.f, _.g, _.h, _.i, _.j, _.k, _.l, _.m], _.b\n          ._ = _.c._ = _.d._ = _.e._ = _.f._ = _.g._ = _.h._ = _.i._ = _.j._ =\n          _.k._ = _.l._ = _.m._ = _.a, _.n),\n        \"__tests__/template.marko_1_num 2 3 4 5 6 7 8 9 10 11 12 13\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button1[data-selected] null => \"\"\nUPDATE html/body/button1[data-multiple] null => \"\"\nUPDATE html/body/button3[data-multiple] null => \"\"\nUPDATE html/body/button5[data-multiple] null => \"\"\nUPDATE html/body/button7[data-multiple] null => \"\"\nUPDATE html/body/button9[data-multiple] null => \"\"\nUPDATE html/body/button11[data-multiple] null => \"\"\n```\n\n# Render\n```js\nclick(c, 3);\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n    </button>\n    <!--M_*2 #button/0-->\n    <button>\n      2\n    </button>\n    <!--M_*3 #button/0-->\n    <button\n      data-multiple=\"\"\n      data-selected=\"\"\n    >\n      3\n    </button>\n    <!--M_*4 #button/0-->\n    <button>\n      4\n    </button>\n    <!--M_*5 #button/0-->\n    <button>\n      5\n    </button>\n    <!--M_*6 #button/0-->\n    <button\n      data-multiple=\"\"\n    >\n      6\n    </button>\n    <!--M_*7 #button/0-->\n    <button>\n      7\n    </button>\n    <!--M_*8 #button/0-->\n    <button>\n      8\n    </button>\n    <!--M_*9 #button/0-->\n    <button\n      data-multiple=\"\"\n    >\n      9\n    </button>\n    <!--M_*10 #button/0-->\n    <button>\n      10\n    </button>\n    <!--M_*11 #button/0-->\n    <button>\n      11\n    </button>\n    <!--M_*12 #button/0-->\n    <button\n      data-multiple=\"\"\n    >\n      12\n    </button>\n    <!--M_*13 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.n = [0, _.a = {\n            \"BranchScopes:#text/0\": [_.b = {\n              num: 1\n            }, _.c = {\n              num: 2\n            }, _.d = {\n              num: 3\n            }, _.e = {\n              num: 4\n            }, _.f = {\n              num: 5\n            }, _.g = {\n              num: 6\n            }, _.h = {\n              num: 7\n            }, _.i = {\n              num: 8\n            }, _.j = {\n              num: 9\n            }, _.k = {\n              num: 10\n            }, _.l = {\n              num: 11\n            }, _.m = {\n              num: 12\n            }]\n          }, _.b, _.c, _.d, _.e, _.f, _.g, _.h, _.i, _.j, _.k, _.l, _.m], _.b\n          ._ = _.c._ = _.d._ = _.e._ = _.f._ = _.g._ = _.h._ = _.i._ = _.j._ =\n          _.k._ = _.l._ = _.m._ = _.a, _.n),\n        \"__tests__/template.marko_1_num 2 3 4 5 6 7 8 9 10 11 12 13\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button1[data-selected] \"\" => null\nUPDATE html/body/button1[data-multiple] \"\" => null\nUPDATE html/body/button2[data-selected] null => \"\"\nUPDATE html/body/button2[data-multiple] null => \"\"\nUPDATE html/body/button3[data-multiple] \"\" => null\nUPDATE html/body/button7[data-multiple] \"\" => null\nUPDATE html/body/button8[data-multiple] null => \"\"\nUPDATE html/body/button9[data-multiple] \"\" => null\n```\n\n# Render\n```js\nclick(c, 5);\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n    </button>\n    <!--M_*2 #button/0-->\n    <button>\n      2\n    </button>\n    <!--M_*3 #button/0-->\n    <button>\n      3\n    </button>\n    <!--M_*4 #button/0-->\n    <button>\n      4\n    </button>\n    <!--M_*5 #button/0-->\n    <button\n      data-multiple=\"\"\n      data-selected=\"\"\n    >\n      5\n    </button>\n    <!--M_*6 #button/0-->\n    <button>\n      6\n    </button>\n    <!--M_*7 #button/0-->\n    <button>\n      7\n    </button>\n    <!--M_*8 #button/0-->\n    <button>\n      8\n    </button>\n    <!--M_*9 #button/0-->\n    <button>\n      9\n    </button>\n    <!--M_*10 #button/0-->\n    <button\n      data-multiple=\"\"\n    >\n      10\n    </button>\n    <!--M_*11 #button/0-->\n    <button>\n      11\n    </button>\n    <!--M_*12 #button/0-->\n    <button>\n      12\n    </button>\n    <!--M_*13 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.n = [0, _.a = {\n            \"BranchScopes:#text/0\": [_.b = {\n              num: 1\n            }, _.c = {\n              num: 2\n            }, _.d = {\n              num: 3\n            }, _.e = {\n              num: 4\n            }, _.f = {\n              num: 5\n            }, _.g = {\n              num: 6\n            }, _.h = {\n              num: 7\n            }, _.i = {\n              num: 8\n            }, _.j = {\n              num: 9\n            }, _.k = {\n              num: 10\n            }, _.l = {\n              num: 11\n            }, _.m = {\n              num: 12\n            }]\n          }, _.b, _.c, _.d, _.e, _.f, _.g, _.h, _.i, _.j, _.k, _.l, _.m], _.b\n          ._ = _.c._ = _.d._ = _.e._ = _.f._ = _.g._ = _.h._ = _.i._ = _.j._ =\n          _.k._ = _.l._ = _.m._ = _.a, _.n),\n        \"__tests__/template.marko_1_num 2 3 4 5 6 7 8 9 10 11 12 13\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button2[data-selected] \"\" => null\nUPDATE html/body/button2[data-multiple] \"\" => null\nUPDATE html/body/button4[data-selected] null => \"\"\nUPDATE html/body/button4[data-multiple] null => \"\"\nUPDATE html/body/button5[data-multiple] \"\" => null\nUPDATE html/body/button8[data-multiple] \"\" => null\nUPDATE html/body/button9[data-multiple] null => \"\"\nUPDATE html/body/button11[data-multiple] \"\" => null\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-for/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  1\n</button>\n<button>\n  2\n</button>\n<button>\n  3\n</button>\n<button>\n  4\n</button>\n<button>\n  5\n</button>\n<button>\n  6\n</button>\n<button>\n  7\n</button>\n<button>\n  8\n</button>\n<button>\n  9\n</button>\n<button>\n  10\n</button>\n<button>\n  11\n</button>\n<button>\n  12\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-for/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>1</button><!--M_*2 #button/0--><button>2</button><!--M_*3 #button/0--><button>3</button><!--M_*4 #button/0--><button>4</button><!--M_*5 #button/0--><button>5</button><!--M_*6 #button/0--><button>6</button><!--M_*7 #button/0--><button>7</button><!--M_*8 #button/0--><button>8</button><!--M_*9 #button/0--><button>9</button><!--M_*10 #button/0--><button>10</button><!--M_*11 #button/0--><button>11</button><!--M_*12 #button/0--><button>12</button><!--M_*13 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.n=[0,_.a={\"BranchScopes:#text/0\":[_.b={num:1},_.c={num:2},_.d={num:3},_.e={num:4},_.f={num:5},_.g={num:6},_.h={num:7},_.i={num:8},_.j={num:9},_.k={num:10},_.l={num:11},_.m={num:12}]},_.b,_.c,_.d,_.e,_.f,_.g,_.h,_.i,_.j,_.k,_.l,_.m],_.b._=_.c._=_.d._=_.e._=_.f._=_.g._=_.h._=_.i._=_.j._=_.k._=_.l._=_.m._=_.a,_.n),\"__tests__/template.marko_1_num 2 3 4 5 6 7 8 9 10 11 12 13\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n    </button>\n    <!--M_*2 #button/0-->\n    <button>\n      2\n    </button>\n    <!--M_*3 #button/0-->\n    <button>\n      3\n    </button>\n    <!--M_*4 #button/0-->\n    <button>\n      4\n    </button>\n    <!--M_*5 #button/0-->\n    <button>\n      5\n    </button>\n    <!--M_*6 #button/0-->\n    <button>\n      6\n    </button>\n    <!--M_*7 #button/0-->\n    <button>\n      7\n    </button>\n    <!--M_*8 #button/0-->\n    <button>\n      8\n    </button>\n    <!--M_*9 #button/0-->\n    <button>\n      9\n    </button>\n    <!--M_*10 #button/0-->\n    <button>\n      10\n    </button>\n    <!--M_*11 #button/0-->\n    <button>\n      11\n    </button>\n    <!--M_*12 #button/0-->\n    <button>\n      12\n    </button>\n    <!--M_*13 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.n = [0, _.a = {\n            \"BranchScopes:#text/0\": [_.b = {\n              num: 1\n            }, _.c = {\n              num: 2\n            }, _.d = {\n              num: 3\n            }, _.e = {\n              num: 4\n            }, _.f = {\n              num: 5\n            }, _.g = {\n              num: 6\n            }, _.h = {\n              num: 7\n            }, _.i = {\n              num: 8\n            }, _.j = {\n              num: 9\n            }, _.k = {\n              num: 10\n            }, _.l = {\n              num: 11\n            }, _.m = {\n              num: 12\n            }]\n          }, _.b, _.c, _.d, _.e, _.f, _.g, _.h, _.i, _.j, _.k, _.l, _.m], _.b\n          ._ = _.c._ = _.d._ = _.e._ = _.f._ = _.g._ = _.h._ = _.i._ = _.j._ =\n          _.k._ = _.l._ = _.m._ = _.a, _.n),\n        \"__tests__/template.marko_1_num 2 3 4 5 6 7 8 9 10 11 12 13\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button0\nINSERT html/body/button0/#text\nINSERT html/body/#comment0\nINSERT html/body/button1\nINSERT html/body/button1/#text\nINSERT html/body/#comment1\nINSERT html/body/button2\nINSERT html/body/button2/#text\nINSERT html/body/#comment2\nINSERT html/body/button3\nINSERT html/body/button3/#text\nINSERT html/body/#comment3\nINSERT html/body/button4\nINSERT html/body/button4/#text\nINSERT html/body/#comment4\nINSERT html/body/button5\nINSERT html/body/button5/#text\nINSERT html/body/#comment5\nINSERT html/body/button6\nINSERT html/body/button6/#text\nINSERT html/body/#comment6\nINSERT html/body/button7\nINSERT html/body/button7/#text\nINSERT html/body/#comment7\nINSERT html/body/button8\nINSERT html/body/button8/#text\nINSERT html/body/#comment8\nINSERT html/body/button9\nINSERT html/body/button9/#text\nINSERT html/body/#comment9\nINSERT html/body/button10\nINSERT html/body/button10/#text\nINSERT html/body/#comment10\nINSERT html/body/button11\nINSERT html/body/button11/#text\nINSERT html/body/#comment11\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-for/template.marko",
    "content": "<let/selected=0/>\n\n<for|num| of=[1,2,3,4,5,6,7,8,9,10,11,12]>\n  <button onClick() { selected = num; } data-selected=(selected === num) data-multiple=(num % selected === 0)>\n    ${num}\n  </button>\n</for>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-for/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element, number: number) {\n  const buttons: HTMLButtonElement[] = Array.from(\n    container.querySelectorAll(\"button\"),\n  );\n  const button = buttons.find((b) => b.textContent === \"\" + number)!;\n  button.click();\n}\n\nexport const config: TestConfig = {\n  steps: [\n    {},\n    (c: Element) => click(c, 2),\n    (c: Element) => click(c, 3),\n    (c: Element) => click(c, 5),\n  ],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-if/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$else_content__clickCount\": \"_\",\n      \"$$else_content__setup\": \"i\",\n      \"$$if_content__clickCount__script\": \"a\",\n      \"$$if_content__clickCount\": \"m\",\n      \"$$if_content__setup\": \"n\",\n      \"$$if\": \"r\",\n      \"$$clickCount\": \"s\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-if/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <button>\n    0\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    1\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    2\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <span>\n    The button was clicked 3 times.\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-if/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  <button>\n    0\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    1\n  </button>\n</div>\n```\n\n# Mutations\n```\nUPDATE div/button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    2\n  </button>\n</div>\n```\n\n# Mutations\n```\nUPDATE div/button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <span>\n    The button was clicked 3 times.\n  </span>\n</div>\n```\n\n# Mutations\n```\nINSERT div/span\nREMOVE button after div/span\nUPDATE div/span/#text1 \"\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-if/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 319 (min) 207 (brotli)\nconst $else_content__clickCount = _._if_closure(0, 1, ($scope) =>\n    _._text($scope.a, $scope._.b),\n  ),\n  $else_content__setup = $else_content__clickCount,\n  $if_content__clickCount__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $clickCount($scope._, $scope._.b + 1);\n    }),\n  ),\n  $if_content__clickCount = _._if_closure(0, 0, ($scope) => {\n    (_._text($scope.b, $scope._.b), $if_content__clickCount__script($scope));\n  }),\n  $if_content__setup = $if_content__clickCount,\n  $if = _._if(\n    0,\n    \"<button> </button>\",\n    \" D l\",\n    $if_content__setup,\n    \"<span>The button was clicked <!> times.</span>\",\n    \"Db%l\",\n    $else_content__setup,\n  ),\n  $clickCount = _._let(1, ($scope) => {\n    ($if($scope, $scope.b < 3 ? 0 : 1),\n      $if_content__clickCount($scope),\n      $else_content__clickCount($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-if/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div><!></div>\";\nexport const $walks = /* next(1), replace, out(1) */\"D%l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $else_content__clickCount = /* @__PURE__ */_._if_closure(\"#text/0\", 1, $scope => _._text($scope[\"#text/0\"], $scope._.clickCount));\nconst $else_content__setup = $else_content__clickCount;\nconst $if_content__clickCount__script = _._script(\"__tests__/template.marko_1_clickCount\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $clickCount($scope._, $scope._.clickCount + 1);\n}));\nconst $if_content__clickCount = /* @__PURE__ */_._if_closure(\"#text/0\", 0, $scope => {\n  _._text($scope[\"#text/1\"], $scope._.clickCount);\n  $if_content__clickCount__script($scope);\n});\nconst $if_content__setup = $if_content__clickCount;\nconst $if = /* @__PURE__ */_._if(\"#text/0\", \"<button> </button>\", /* get, next(1), get, out(1) */\" D l\", $if_content__setup, \"<span>The button was clicked <!> times.</span>\", /* next(1), over(1), replace, out(1) */\"Db%l\", $else_content__setup);\nconst $clickCount = /* @__PURE__ */_._let(\"clickCount/1\", $scope => {\n  $if($scope, $scope.clickCount < 3 ? 0 : 1);\n  $if_content__clickCount($scope);\n  $else_content__clickCount($scope);\n});\nexport function $setup($scope) {\n  $clickCount($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-if/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let clickCount = 0;\n  _._html(\"<div>\");\n  _._if(() => {\n    if (clickCount < 3) {\n      const $scope1_id = _._scope_id();\n      _._html(`<button>${_._escape(clickCount)}${_._el_resume($scope1_id, \"#text/1\")}</button>${_._el_resume($scope1_id, \"#button/0\")}`);\n      _._script($scope1_id, \"__tests__/template.marko_1_clickCount\");\n      _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"3:4\");\n      return 0;\n    } else {\n      const $scope2_id = _._scope_id();\n      _._html(`<span>The button was clicked <!>${_._escape(clickCount)}${_._el_resume($scope2_id, \"#text/0\")} times.</span>`);\n      _._scope($scope2_id, {\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"8:4\");\n      return 1;\n    }\n  }, $scope0_id, \"#text/0\", 1, /* clickCount */1, /* clickCount */1, 0, 1);\n  _._html(\"</div>\");\n  _._scope($scope0_id, {\n    clickCount\n  }, \"__tests__/template.marko\", 0, {\n    clickCount: \"2:8\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-if/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <button>\n    0\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    1\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    2\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <span>\n    The button was clicked 3 times.\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-if/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        0\n        <!--M_*2 #text/1-->\n      </button>\n      <!--M_*2 #button/0-->\n      <!--M_|1 #text/0 2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          clickCount: 0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1_clickCount 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        1\n      </button>\n      <!--M_*2 #button/0-->\n      <!--M_|1 #text/0 2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          clickCount: 0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1_clickCount 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/button\nREMOVE button after html/body/div/button\nUPDATE html/body/div/button/#text \" \" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        2\n      </button>\n      <!--M_*2 #button/0-->\n      <!--M_|1 #text/0 2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          clickCount: 0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1_clickCount 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <span>\n        The button was clicked 3 times.\n      </span>\n      <!--M_*2 #button/0-->\n      <!--M_|1 #text/0 2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          clickCount: 0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1_clickCount 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/span\nREMOVE button after html/body/div/span\nUPDATE html/body/div/span/#text1 \"\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-if/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  <button>\n    0\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-if/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><button>0<!--M_*2 #text/1--></button><!--M_*2 #button/0--><!--M_|1 #text/0 2--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={clickCount:0},{_:_.a}]),\"__tests__/template.marko_1_clickCount 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        0\n        <!--M_*2 #text/1-->\n      </button>\n      <!--M_*2 #button/0-->\n      <!--M_|1 #text/0 2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          clickCount: 0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1_clickCount 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/button\nINSERT html/body/div/button/#text\nINSERT html/body/div/button/#comment\nINSERT html/body/div/#comment0\nINSERT html/body/div/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-if/template.marko",
    "content": "<div>\n  <let/clickCount = 0/>\n  <if=clickCount < 3>\n    <button onClick() {\n      clickCount++\n    }>${clickCount}</button>\n  </if>\n  <else>\n    <span>\n      The button was clicked ${clickCount} times.\n    </span>\n  </else>\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-if/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-push-pop-list/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"o\",\n      \"$init\": \"t\",\n      \"$$for_content__$params\": \"c\",\n      \"$$id__OR__items__script\": \"r\",\n      \"$$id__OR__items\": \"i\",\n      \"$$id\": \"m\",\n      \"$$for\": \"n\",\n      \"$$items__script\": \"_\",\n      \"$$items\": \"e\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-push-pop-list/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <button\n    id=\"add\"\n  >\n    Add\n  </button>\n  <button\n    id=\"remove\"\n  >\n    Remove\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#add\").click();\n```\n```html\n<div>\n  1\n  <button\n    id=\"add\"\n  >\n    Add\n  </button>\n  <button\n    id=\"remove\"\n  >\n    Remove\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#add\").click();\n```\n```html\n<div>\n  12\n  <button\n    id=\"add\"\n  >\n    Add\n  </button>\n  <button\n    id=\"remove\"\n  >\n    Remove\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#remove\").click();\n```\n```html\n<div>\n  1\n  <button\n    id=\"add\"\n  >\n    Add\n  </button>\n  <button\n    id=\"remove\"\n  >\n    Remove\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#add\").click();\n```\n```html\n<div>\n  13\n  <button\n    id=\"add\"\n  >\n    Add\n  </button>\n  <button\n    id=\"remove\"\n  >\n    Remove\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-push-pop-list/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  <button\n    id=\"add\"\n  >\n    Add\n  </button>\n  <button\n    id=\"remove\"\n  >\n    Remove\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render\n```js\ncontainer.querySelector(\"#add\").click();\n```\n```html\n<div>\n  1\n  <button\n    id=\"add\"\n  >\n    Add\n  </button>\n  <button\n    id=\"remove\"\n  >\n    Remove\n  </button>\n</div>\n```\n\n# Mutations\n```\nREMOVE #text before div/button0\nINSERT div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"#add\").click();\n```\n```html\n<div>\n  12\n  <button\n    id=\"add\"\n  >\n    Add\n  </button>\n  <button\n    id=\"remove\"\n  >\n    Remove\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT div/#text1\n```\n\n# Render\n```js\ncontainer.querySelector(\"#remove\").click();\n```\n```html\n<div>\n  1\n  <button\n    id=\"add\"\n  >\n    Add\n  </button>\n  <button\n    id=\"remove\"\n  >\n    Remove\n  </button>\n</div>\n```\n\n# Mutations\n```\nREMOVE #text after div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"#add\").click();\n```\n```html\n<div>\n  13\n  <button\n    id=\"add\"\n  >\n    Add\n  </button>\n  <button\n    id=\"remove\"\n  >\n    Remove\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT div/#text1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-push-pop-list/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 306 (min) 190 (brotli)\nconst $for_content__$params = ($scope, $params2) =>\n    (($scope, item) => _._text($scope.a, item))($scope, $params2[0]),\n  $id__OR__items__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.b, \"click\", function () {\n      const nextId = $scope.d + 1;\n      ($id($scope, nextId), $items($scope, [...$scope.e, nextId]));\n    }),\n  ),\n  $id__OR__items = _._or(5, $id__OR__items__script),\n  $id = _._let(3, $id__OR__items),\n  $for = _._for_of(0, \" \", \" b\", 0, $for_content__$params),\n  $items__script = _._script(\"a1\", ($scope) =>\n    _._on($scope.c, \"click\", function () {\n      $items($scope, $scope.e.slice(0, -1));\n    }),\n  ),\n  $items = _._let(4, ($scope) => {\n    ($for($scope, [$scope.e]), $id__OR__items($scope), $items__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-push-pop-list/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div><!><button id=add>Add</button><button id=remove>Remove</button></div>\";\nexport const $walks = /* next(1), replace, over(1), get, over(1), get, out(1) */\"D%b b l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for_content__item = ($scope, item) => _._text($scope[\"#text/0\"], item);\nconst $for_content__$params = ($scope, $params2) => $for_content__item($scope, $params2[0]);\nconst $id__OR__items__script = _._script(\"__tests__/template.marko_0_id_items\", $scope => _._on($scope[\"#button/1\"], \"click\", function () {\n  // TODO: nested writes ([...items, id++]) don't work\n  const nextId = $scope.id + 1;\n  $id($scope, nextId);\n  $items($scope, [...$scope.items, nextId]);\n}));\nconst $id__OR__items = /* @__PURE__ */_._or(5, $id__OR__items__script);\nconst $id = /* @__PURE__ */_._let(\"id/3\", $id__OR__items);\nconst $for = /* @__PURE__ */_._for_of(\"#text/0\", \" \", /* get, over(1) */\" b\", 0, $for_content__$params);\nconst $items__script = _._script(\"__tests__/template.marko_0_items\", $scope => _._on($scope[\"#button/2\"], \"click\", function () {\n  $items($scope, $scope.items.slice(0, -1));\n}));\nconst $items = /* @__PURE__ */_._let(\"items/4\", $scope => {\n  $for($scope, [$scope.items]);\n  $id__OR__items($scope);\n  $items__script($scope);\n});\nexport function $setup($scope) {\n  $id($scope, 0);\n  $items($scope, []);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-push-pop-list/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let id = 0;\n  let items = [];\n  _._html(\"<div>\");\n  _._for_of(items, item => {\n    const $scope1_id = _._scope_id();\n    _._html(`${_._escape(item)}${_._el_resume($scope1_id, \"#text/0\")}`);\n    _._scope($scope1_id, {}, \"__tests__/template.marko\", \"5:4\");\n  }, 0, $scope0_id, \"#text/0\", /* items */1, /* items */1, /* items */1, 0, 1);\n  _._html(`<button id=add>Add</button>${_._el_resume($scope0_id, \"#button/1\")}<button id=remove>Remove</button>${_._el_resume($scope0_id, \"#button/2\")}</div>`);\n  _._script($scope0_id, \"__tests__/template.marko_0_items\");\n  _._script($scope0_id, \"__tests__/template.marko_0_id_items\");\n  _._scope($scope0_id, {\n    id,\n    items\n  }, \"__tests__/template.marko\", 0, {\n    id: \"2:8\",\n    items: \"3:8\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-push-pop-list/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <button\n    id=\"add\"\n  >\n    Add\n  </button>\n  <button\n    id=\"remove\"\n  >\n    Remove\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#add\").click();\n```\n```html\n<div>\n  1\n  <button\n    id=\"add\"\n  >\n    Add\n  </button>\n  <button\n    id=\"remove\"\n  >\n    Remove\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#add\").click();\n```\n```html\n<div>\n  12\n  <button\n    id=\"add\"\n  >\n    Add\n  </button>\n  <button\n    id=\"remove\"\n  >\n    Remove\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#remove\").click();\n```\n```html\n<div>\n  1\n  <button\n    id=\"add\"\n  >\n    Add\n  </button>\n  <button\n    id=\"remove\"\n  >\n    Remove\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#add\").click();\n```\n```html\n<div>\n  13\n  <button\n    id=\"add\"\n  >\n    Add\n  </button>\n  <button\n    id=\"remove\"\n  >\n    Remove\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-push-pop-list/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--M_|1 #text/0-->\n      <button\n        id=\"add\"\n      >\n        Add\n      </button>\n      <!--M_*1 #button/1-->\n      <button\n        id=\"remove\"\n      >\n        Remove\n      </button>\n      <!--M_*1 #button/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          id: 0,\n          items: []\n        }]),\n        \"__tests__/template.marko_0_items 1 __tests__/template.marko_0_id_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#add\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      1\n      <button\n        id=\"add\"\n      >\n        Add\n      </button>\n      <!--M_*1 #button/1-->\n      <button\n        id=\"remove\"\n      >\n        Remove\n      </button>\n      <!--M_*1 #button/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          id: 0,\n          items: []\n        }]),\n        \"__tests__/template.marko_0_items 1 __tests__/template.marko_0_id_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #comment before html/body/div/button0\nINSERT html/body/div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"#add\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      12\n      <button\n        id=\"add\"\n      >\n        Add\n      </button>\n      <!--M_*1 #button/1-->\n      <button\n        id=\"remove\"\n      >\n        Remove\n      </button>\n      <!--M_*1 #button/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          id: 0,\n          items: []\n        }]),\n        \"__tests__/template.marko_0_items 1 __tests__/template.marko_0_id_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text1\n```\n\n# Render\n```js\ncontainer.querySelector(\"#remove\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      1\n      <button\n        id=\"add\"\n      >\n        Add\n      </button>\n      <!--M_*1 #button/1-->\n      <button\n        id=\"remove\"\n      >\n        Remove\n      </button>\n      <!--M_*1 #button/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          id: 0,\n          items: []\n        }]),\n        \"__tests__/template.marko_0_items 1 __tests__/template.marko_0_id_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #text after html/body/div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"#add\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      13\n      <button\n        id=\"add\"\n      >\n        Add\n      </button>\n      <!--M_*1 #button/1-->\n      <button\n        id=\"remove\"\n      >\n        Remove\n      </button>\n      <!--M_*1 #button/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          id: 0,\n          items: []\n        }]),\n        \"__tests__/template.marko_0_items 1 __tests__/template.marko_0_id_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-push-pop-list/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  <button\n    id=\"add\"\n  >\n    Add\n  </button>\n  <button\n    id=\"remove\"\n  >\n    Remove\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-push-pop-list/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><!--M_|1 #text/0--><button id=add>Add</button><!--M_*1 #button/1--><button id=remove>Remove</button><!--M_*1 #button/2--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{id:0,items:[]}]),\"__tests__/template.marko_0_items 1 __tests__/template.marko_0_id_items 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--M_|1 #text/0-->\n      <button\n        id=\"add\"\n      >\n        Add\n      </button>\n      <!--M_*1 #button/1-->\n      <button\n        id=\"remove\"\n      >\n        Remove\n      </button>\n      <!--M_*1 #button/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          id: 0,\n          items: []\n        }]),\n        \"__tests__/template.marko_0_items 1 __tests__/template.marko_0_id_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#comment0\nINSERT html/body/div/button0\nINSERT html/body/div/button0/#text\nINSERT html/body/div/#comment1\nINSERT html/body/div/button1\nINSERT html/body/div/button1/#text\nINSERT html/body/div/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-push-pop-list/template.marko",
    "content": "<div>\n  <let/id=0/>\n  <let/items=[]/>\n\n  <for|item| of=items>${item}</for>\n\n  <button id=\"add\" onClick() { \n    // TODO: nested writes ([...items, id++]) don't work\n    const nextId = id + 1;\n    id = nextId;\n    items = [...items, nextId];\n  }>Add</button>\n  <button id=\"remove\" onClick() { items = items.slice(0, -1); }>Remove</button>\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-push-pop-list/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction add(container: Element) {\n  (container.querySelector(\"#add\") as HTMLButtonElement).click();\n}\n\nfunction remove(container: Element) {\n  (container.querySelector(\"#remove\") as HTMLButtonElement).click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, add, add, remove, add],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-shared-node-ref/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$for_content__$params\": \"r\",\n      \"$$open__script\": \"i\",\n      \"$$open\": \"n\",\n      \"$$for\": \"c\",\n      \"$$list__script\": \"e\",\n      \"$$list\": \"a\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-shared-node-ref/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<ul>\n  <li>\n    1\n  </li>\n  <li>\n    2\n  </li>\n  <li>\n    3\n  </li>\n</ul>\n<button\n  id=\"toggle\"\n>\n  Toggle\n</button>\n<button\n  id=\"reverse\"\n>\n  Reverse\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#toggle\").click();\n```\n```html\n<ul\n  hidden=\"\"\n>\n  <li>\n    1\n  </li>\n  <li>\n    2\n  </li>\n  <li>\n    3\n  </li>\n</ul>\n<button\n  id=\"toggle\"\n>\n  Toggle\n</button>\n<button\n  id=\"reverse\"\n>\n  Reverse\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#toggle\").click();\n```\n```html\n<ul>\n  <li>\n    1\n  </li>\n  <li>\n    2\n  </li>\n  <li>\n    3\n  </li>\n</ul>\n<button\n  id=\"toggle\"\n>\n  Toggle\n</button>\n<button\n  id=\"reverse\"\n>\n  Reverse\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#reverse\").click();\n```\n```html\n<ul>\n  <li>\n    3\n  </li>\n  <li>\n    2\n  </li>\n  <li>\n    1\n  </li>\n</ul>\n<button\n  id=\"toggle\"\n>\n  Toggle\n</button>\n<button\n  id=\"reverse\"\n>\n  Reverse\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-shared-node-ref/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<ul>\n  <li>\n    1\n  </li>\n  <li>\n    2\n  </li>\n  <li>\n    3\n  </li>\n</ul>\n<button\n  id=\"toggle\"\n>\n  Toggle\n</button>\n<button\n  id=\"reverse\"\n>\n  Reverse\n</button>\n```\n\n# Mutations\n```\nINSERT ul, button0, button1\n```\n\n# Render\n```js\ncontainer.querySelector(\"#toggle\").click();\n```\n```html\n<ul\n  hidden=\"\"\n>\n  <li>\n    1\n  </li>\n  <li>\n    2\n  </li>\n  <li>\n    3\n  </li>\n</ul>\n<button\n  id=\"toggle\"\n>\n  Toggle\n</button>\n<button\n  id=\"reverse\"\n>\n  Reverse\n</button>\n```\n\n# Mutations\n```\nUPDATE ul[hidden] null => \"\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#toggle\").click();\n```\n```html\n<ul>\n  <li>\n    1\n  </li>\n  <li>\n    2\n  </li>\n  <li>\n    3\n  </li>\n</ul>\n<button\n  id=\"toggle\"\n>\n  Toggle\n</button>\n<button\n  id=\"reverse\"\n>\n  Reverse\n</button>\n```\n\n# Mutations\n```\nUPDATE ul[hidden] \"\" => null\n```\n\n# Render\n```js\ncontainer.querySelector(\"#reverse\").click();\n```\n```html\n<ul>\n  <li>\n    3\n  </li>\n  <li>\n    2\n  </li>\n  <li>\n    1\n  </li>\n</ul>\n<button\n  id=\"toggle\"\n>\n  Toggle\n</button>\n<button\n  id=\"reverse\"\n>\n  Reverse\n</button>\n```\n\n# Mutations\n```\nREMOVE ul/li1 after ul/li2\nINSERT ul/li1\nREMOVE ul/li0 after ul/li2\nINSERT ul/li0\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-shared-node-ref/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 337 (min) 203 (brotli)\nconst $for_content__$params = ($scope, $params2) =>\n    (($scope, x) => _._text($scope.a, x))($scope, $params2[0]),\n  $open__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.b, \"click\", function () {\n      $open($scope, !$scope.d);\n    }),\n  ),\n  $open = _._let(3, ($scope) => {\n    (_._attr($scope.a, \"hidden\", !$scope.d), $open__script($scope));\n  }),\n  $for = _._for_of(0, \"<li> </li>\", \"D l\", 0, $for_content__$params),\n  $list__script = _._script(\"a1\", ($scope) =>\n    _._on($scope.c, \"click\", function () {\n      $list($scope, [].concat($scope.e).reverse());\n    }),\n  ),\n  $list = _._let(4, ($scope) => {\n    ($for($scope, [\n      $scope.e,\n      function (x) {\n        return x;\n      },\n    ]),\n      $list__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-shared-node-ref/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<ul></ul><button id=toggle>Toggle</button><button id=reverse>Reverse</button>\";\nexport const $walks = /* get, over(1), get, over(1), get, over(1) */\" b b b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for_content__x = ($scope, x) => _._text($scope[\"#text/0\"], x);\nconst $for_content__$params = ($scope, $params2) => $for_content__x($scope, $params2[0]);\nconst $open__script = _._script(\"__tests__/template.marko_0_open\", $scope => _._on($scope[\"#button/1\"], \"click\", function () {\n  $open($scope, !$scope.open);\n}));\nconst $open = /* @__PURE__ */_._let(\"open/3\", $scope => {\n  _._attr($scope[\"#ul/0\"], \"hidden\", !$scope.open);\n  $open__script($scope);\n});\nconst $for = /* @__PURE__ */_._for_of(\"#ul/0\", \"<li> </li>\", /* next(1), get, out(1) */\"D l\", 0, $for_content__$params);\nconst $list__script = _._script(\"__tests__/template.marko_0_list\", $scope => _._on($scope[\"#button/2\"], \"click\", function () {\n  $list($scope, [].concat($scope.list).reverse());\n}));\nconst $list = /* @__PURE__ */_._let(\"list/4\", $scope => {\n  $for($scope, [$scope.list, function (x) {\n    return x;\n  }]);\n  $list__script($scope);\n});\nexport function $setup($scope) {\n  $open($scope, true);\n  $list($scope, [1, 2, 3]);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-shared-node-ref/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let open = true;\n  let list = [1, 2, 3];\n  _._html(`<ul${_._attr(\"hidden\", !open)}>`);\n  _._for_of(list, x => {\n    const $scope1_id = _._scope_id();\n    _._html(`<li>${_._escape(x)}${_._el_resume($scope1_id, \"#text/0\")}</li>`);\n    _._scope($scope1_id, {}, \"__tests__/template.marko\", \"4:4\");\n  }, function (x) {\n    return x;\n  }, $scope0_id, \"#ul/0\", /* list */1, /* open, list */1, /* list */1, \"</ul>\", 1);\n  _._html(`<button id=toggle>Toggle</button>${_._el_resume($scope0_id, \"#button/1\")}<button id=reverse>Reverse</button>${_._el_resume($scope0_id, \"#button/2\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_list\");\n  _._script($scope0_id, \"__tests__/template.marko_0_open\");\n  _._scope($scope0_id, {\n    open,\n    list\n  }, \"__tests__/template.marko\", 0, {\n    open: \"1:6\",\n    list: \"2:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-shared-node-ref/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<ul>\n  <li>\n    1\n  </li>\n  <li>\n    2\n  </li>\n  <li>\n    3\n  </li>\n</ul>\n<button\n  id=\"toggle\"\n>\n  Toggle\n</button>\n<button\n  id=\"reverse\"\n>\n  Reverse\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#toggle\").click();\n```\n```html\n<ul\n  hidden=\"\"\n>\n  <li>\n    1\n  </li>\n  <li>\n    2\n  </li>\n  <li>\n    3\n  </li>\n</ul>\n<button\n  id=\"toggle\"\n>\n  Toggle\n</button>\n<button\n  id=\"reverse\"\n>\n  Reverse\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#toggle\").click();\n```\n```html\n<ul>\n  <li>\n    1\n  </li>\n  <li>\n    2\n  </li>\n  <li>\n    3\n  </li>\n</ul>\n<button\n  id=\"toggle\"\n>\n  Toggle\n</button>\n<button\n  id=\"reverse\"\n>\n  Reverse\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#reverse\").click();\n```\n```html\n<ul>\n  <li>\n    3\n  </li>\n  <li>\n    2\n  </li>\n  <li>\n    1\n  </li>\n</ul>\n<button\n  id=\"toggle\"\n>\n  Toggle\n</button>\n<button\n  id=\"reverse\"\n>\n  Reverse\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-shared-node-ref/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <ul>\n      <li>\n        1\n        <!--M_*2 #text/0-->\n      </li>\n      <li>\n        2\n        <!--M_*3 #text/0-->\n      </li>\n      <li>\n        3\n        <!--M_*4 #text/0-->\n      </li>\n      <!--M_}1 #ul/0 4 3 2-->\n    </ul>\n    <button\n      id=\"toggle\"\n    >\n      Toggle\n    </button>\n    <!--M_*1 #button/1-->\n    <button\n      id=\"reverse\"\n    >\n      Reverse\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          open: !0,\n          list: [1, 2, 3]\n        },\n        {\n          \"#LoopKey\": 1\n        },\n        {\n          \"#LoopKey\": 2\n        },\n        {\n          \"#LoopKey\": 3\n        }]),\n        \"__tests__/template.marko_0_list 1 __tests__/template.marko_0_open 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#toggle\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <ul\n      hidden=\"\"\n    >\n      <li>\n        1\n        <!--M_*2 #text/0-->\n      </li>\n      <li>\n        2\n        <!--M_*3 #text/0-->\n      </li>\n      <li>\n        3\n        <!--M_*4 #text/0-->\n      </li>\n      <!--M_}1 #ul/0 4 3 2-->\n    </ul>\n    <button\n      id=\"toggle\"\n    >\n      Toggle\n    </button>\n    <!--M_*1 #button/1-->\n    <button\n      id=\"reverse\"\n    >\n      Reverse\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          open: !0,\n          list: [1, 2, 3]\n        },\n        {\n          \"#LoopKey\": 1\n        },\n        {\n          \"#LoopKey\": 2\n        },\n        {\n          \"#LoopKey\": 3\n        }]),\n        \"__tests__/template.marko_0_list 1 __tests__/template.marko_0_open 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/ul[hidden] null => \"\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#toggle\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <ul>\n      <li>\n        1\n        <!--M_*2 #text/0-->\n      </li>\n      <li>\n        2\n        <!--M_*3 #text/0-->\n      </li>\n      <li>\n        3\n        <!--M_*4 #text/0-->\n      </li>\n      <!--M_}1 #ul/0 4 3 2-->\n    </ul>\n    <button\n      id=\"toggle\"\n    >\n      Toggle\n    </button>\n    <!--M_*1 #button/1-->\n    <button\n      id=\"reverse\"\n    >\n      Reverse\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          open: !0,\n          list: [1, 2, 3]\n        },\n        {\n          \"#LoopKey\": 1\n        },\n        {\n          \"#LoopKey\": 2\n        },\n        {\n          \"#LoopKey\": 3\n        }]),\n        \"__tests__/template.marko_0_list 1 __tests__/template.marko_0_open 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/ul[hidden] \"\" => null\n```\n\n# Render\n```js\ncontainer.querySelector(\"#reverse\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <ul>\n      <li>\n        3\n        <!--M_*4 #text/0-->\n      </li>\n      <li>\n        2\n        <!--M_*3 #text/0-->\n      </li>\n      <li>\n        1\n        <!--M_*2 #text/0-->\n      </li>\n      <!--M_}1 #ul/0 4 3 2-->\n    </ul>\n    <button\n      id=\"toggle\"\n    >\n      Toggle\n    </button>\n    <!--M_*1 #button/1-->\n    <button\n      id=\"reverse\"\n    >\n      Reverse\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          open: !0,\n          list: [1, 2, 3]\n        },\n        {\n          \"#LoopKey\": 1\n        },\n        {\n          \"#LoopKey\": 2\n        },\n        {\n          \"#LoopKey\": 3\n        }]),\n        \"__tests__/template.marko_0_list 1 __tests__/template.marko_0_open 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/ul/li1 after html/body/ul/li2\nINSERT html/body/ul/li1\nREMOVE html/body/ul/li0 after html/body/ul/li2\nINSERT html/body/ul/li0\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-shared-node-ref/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<ul>\n  <li>\n    1\n  </li>\n  <li>\n    2\n  </li>\n  <li>\n    3\n  </li>\n</ul>\n<button\n  id=\"toggle\"\n>\n  Toggle\n</button>\n<button\n  id=\"reverse\"\n>\n  Reverse\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-shared-node-ref/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <ul><li>1<!--M_*2 #text/0--></li><li>2<!--M_*3 #text/0--></li><li>3<!--M_*4 #text/0--></li><!--M_}1 #ul/0 4 3 2--></ul><button id=toggle>Toggle</button><!--M_*1 #button/1--><button id=reverse>Reverse</button><!--M_*1 #button/2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{open:!0,list:[1,2,3]},{\"#LoopKey\":1},{\"#LoopKey\":2},{\"#LoopKey\":3}]),\"__tests__/template.marko_0_list 1 __tests__/template.marko_0_open 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <ul>\n      <li>\n        1\n        <!--M_*2 #text/0-->\n      </li>\n      <li>\n        2\n        <!--M_*3 #text/0-->\n      </li>\n      <li>\n        3\n        <!--M_*4 #text/0-->\n      </li>\n      <!--M_}1 #ul/0 4 3 2-->\n    </ul>\n    <button\n      id=\"toggle\"\n    >\n      Toggle\n    </button>\n    <!--M_*1 #button/1-->\n    <button\n      id=\"reverse\"\n    >\n      Reverse\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          open: !0,\n          list: [1, 2, 3]\n        },\n        {\n          \"#LoopKey\": 1\n        },\n        {\n          \"#LoopKey\": 2\n        },\n        {\n          \"#LoopKey\": 3\n        }]),\n        \"__tests__/template.marko_0_list 1 __tests__/template.marko_0_open 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/ul\nINSERT html/body/ul/li0\nINSERT html/body/ul/li0/#text\nINSERT html/body/ul/li0/#comment\nINSERT html/body/ul/li1\nINSERT html/body/ul/li1/#text\nINSERT html/body/ul/li1/#comment\nINSERT html/body/ul/li2\nINSERT html/body/ul/li2/#text\nINSERT html/body/ul/li2/#comment\nINSERT html/body/ul/#comment\nINSERT html/body/button0\nINSERT html/body/button0/#text\nINSERT html/body/#comment0\nINSERT html/body/button1\nINSERT html/body/button1/#text\nINSERT html/body/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-shared-node-ref/template.marko",
    "content": "<let/open = true/>\n<let/list = [1,2,3]/>\n<ul hidden=!open>\n  <for|x| of=list by(x) { return x }>\n    <li>${x}</li>\n  </for>\n</ul>\n<button#toggle onClick() { open=!open }>Toggle</button>\n<button#reverse onClick() { list = [].concat(list).reverse() }>Reverse</button>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-shared-node-ref/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction toggle(container: Element) {\n  (container.querySelector(\"#toggle\") as HTMLButtonElement).click();\n}\n\nfunction reverse(container: Element) {\n  (container.querySelector(\"#reverse\") as HTMLButtonElement).click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, toggle, toggle, reverse],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-static/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-static/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <span>\n    1\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-static/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  <span>\n    1\n  </span>\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-static/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-static/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div><span> </span></div>\";\nexport const $walks = /* next(2), get, out(2) */\"E m\";\nconst x = 1;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport function $setup($scope) {\n  _._text($scope[\"#text/0\"], x);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-static/__snapshots__/html.expected/template.js",
    "content": "const x = 1;\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div><span>${_._escape(x)}</span></div>`);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-static/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <span>\n    1\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-static/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <span>\n        1\n      </span>\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-static/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  <span>\n    1\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-static/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><span>1</span></div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <span>\n        1\n      </span>\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/span\nINSERT html/body/div/span/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-static/template.marko",
    "content": "static const x = 1;\n<div>\n  <span>\n    ${x}\n  </span>\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-toggle-show/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"o\",\n      \"$init\": \"m\",\n      \"$$if\": \"t\",\n      \"$$show__script\": \"r\",\n      \"$$show\": \"i\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-toggle-show/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  Hello!\n  <button>\n    Toggle\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    Toggle\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Hello!\n  <button>\n    Toggle\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    Toggle\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-toggle-show/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  Hello!\n  <button>\n    Toggle\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    Toggle\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT div/#text\nREMOVE #text after div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Hello!\n  <button>\n    Toggle\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT div/#text\nREMOVE #text after div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    Toggle\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT div/#text\nREMOVE #text after div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-toggle-show/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 131 (min) 120 (brotli)\nconst $if = _._if(0, \"Hello!\", \"b\"),\n  $show__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.b, \"click\", function () {\n      $show($scope, !$scope.c);\n    }),\n  ),\n  $show = _._let(2, ($scope) => {\n    ($if($scope, $scope.c ? 0 : 1), $show__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-toggle-show/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div><!><button>Toggle</button></div>\";\nexport const $walks = /* next(1), replace, over(1), get, out(1) */\"D%b l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if = /* @__PURE__ */_._if(\"#text/0\", \"Hello!\", /* over(1) */\"b\");\nconst $show__script = _._script(\"__tests__/template.marko_0_show\", $scope => _._on($scope[\"#button/1\"], \"click\", function () {\n  $show($scope, !$scope.show);\n}));\nconst $show = /* @__PURE__ */_._let(\"show/2\", $scope => {\n  $if($scope, $scope.show ? 0 : 1);\n  $show__script($scope);\n});\nexport function $setup($scope) {\n  $show($scope, true);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-toggle-show/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let show = true;\n  _._html(\"<div>\");\n  _._if(() => {\n    if (show) {\n      const $scope1_id = _._scope_id();\n      _._html(\"Hello!\");\n      _._scope($scope1_id, {}, \"__tests__/template.marko\", \"3:4\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/0\");\n  _._html(`<button>Toggle</button>${_._el_resume($scope0_id, \"#button/1\")}</div>`);\n  _._script($scope0_id, \"__tests__/template.marko_0_show\");\n  _._scope($scope0_id, {\n    show\n  }, \"__tests__/template.marko\", 0, {\n    show: \"2:8\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-toggle-show/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  Hello!\n  <button>\n    Toggle\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    Toggle\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Hello!\n  <button>\n    Toggle\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    Toggle\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-toggle-show/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--M_[-->\n      Hello!\n      <!--M_]1 #text/0 2-->\n      <button>\n        Toggle\n      </button>\n      <!--M_*1 #button/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          show: !0\n        }]),\n        \"__tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text1\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--M_]1 #text/0 2-->\n      <button>\n        Toggle\n      </button>\n      <!--M_*1 #button/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          show: !0\n        }]),\n        \"__tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/div/#comment0 after #text\nINSERT html/body/div/#comment0\nREMOVE #comment after html/body/div/#comment0\nREMOVE #text after html/body/div/#comment0\nREMOVE #text after html/body/div/#comment0\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      Hello!\n      <button>\n        Toggle\n      </button>\n      <!--M_*1 #button/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          show: !0\n        }]),\n        \"__tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text\nREMOVE #comment after html/body/div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--M_]1 #text/0 2-->\n      <button>\n        Toggle\n      </button>\n      <!--M_*1 #button/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          show: !0\n        }]),\n        \"__tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#comment0\nREMOVE #text after html/body/div/#comment0\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-toggle-show/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  Hello!\n  <button>\n    Toggle\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-toggle-show/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><!--M_[-->Hello!<!--M_]1 #text/0 2--><button>Toggle</button><!--M_*1 #button/1--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{show:!0}]),\"__tests__/template.marko_0_show 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--M_[-->\n      Hello!\n      <!--M_]1 #text/0 2-->\n      <button>\n        Toggle\n      </button>\n      <!--M_*1 #button/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          show: !0\n        }]),\n        \"__tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#comment0\nINSERT html/body/div/#text\nINSERT html/body/div/#comment1\nINSERT html/body/div/button\nINSERT html/body/div/button/#text\nINSERT html/body/div/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-toggle-show/template.marko",
    "content": "<div>\n  <let/show=true/>\n  <if=show>Hello!</if>\n  <button onClick() { show = !show; }>Toggle</button>\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-toggle-show/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-unused-ref/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$clickCount__script\": \"m\",\n      \"$$clickCount\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-unused-ref/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <button>\n    0\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    1\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    2\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    3\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-unused-ref/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  <button>\n    0\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    1\n  </button>\n</div>\n```\n\n# Mutations\n```\nUPDATE div/button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    2\n  </button>\n</div>\n```\n\n# Mutations\n```\nUPDATE div/button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    3\n  </button>\n</div>\n```\n\n# Mutations\n```\nUPDATE div/button/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-unused-ref/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 112 (min) 94 (brotli)\nconst $clickCount__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $clickCount($scope, $scope.c + 1);\n    }),\n  ),\n  $clickCount = _._let(2, ($scope) => {\n    (_._text($scope.b, $scope.c), $clickCount__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-unused-ref/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div><button> </button></div>\";\nexport const $walks = /* next(1), get, next(1), get, out(2) */\"D D m\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $clickCount__script = _._script(\"__tests__/template.marko_0_clickCount\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $clickCount($scope, $scope.clickCount + 1);\n}));\nconst $clickCount = /* @__PURE__ */_._let(\"clickCount/2\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.clickCount);\n  $clickCount__script($scope);\n});\nexport function $setup($scope) {\n  /* unused_1 */123;\n  /* unused_2 */456;\n  $clickCount($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-unused-ref/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let unused_1 = 123;\n  const unused_2 = 456;\n  let clickCount = 0;\n  _._html(`<div><button>${_._escape(clickCount)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}</div>`);\n  _._script($scope0_id, \"__tests__/template.marko_0_clickCount\");\n  _._scope($scope0_id, {\n    clickCount\n  }, \"__tests__/template.marko\", 0, {\n    clickCount: \"4:8\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-unused-ref/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <button>\n    0\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    1\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    2\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    3\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-unused-ref/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        0\n        <!--M_*1 #text/1-->\n      </button>\n      <!--M_*1 #button/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          clickCount: 0\n        }]),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        1\n        <!--M_*1 #text/1-->\n      </button>\n      <!--M_*1 #button/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          clickCount: 0\n        }]),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        2\n        <!--M_*1 #text/1-->\n      </button>\n      <!--M_*1 #button/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          clickCount: 0\n        }]),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        3\n        <!--M_*1 #text/1-->\n      </button>\n      <!--M_*1 #button/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          clickCount: 0\n        }]),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/button/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-unused-ref/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  <button>\n    0\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-unused-ref/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><button>0<!--M_*1 #text/1--></button><!--M_*1 #button/0--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{clickCount:0}]),\"__tests__/template.marko_0_clickCount 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        0\n        <!--M_*1 #text/1-->\n      </button>\n      <!--M_*1 #button/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          clickCount: 0\n        }]),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/button\nINSERT html/body/div/button/#text\nINSERT html/body/div/button/#comment\nINSERT html/body/div/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-unused-ref/template.marko",
    "content": "<div>\n  <let/unused_1=123/>\n  <const/unused_2=456/>\n  <let/clickCount = 0/>\n  <button onClick() {\n    clickCount++\n  }>${clickCount}</button>\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/basic-unused-ref/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/batched-updates/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$a__OR__b__script\": \"m\",\n      \"$$a__OR__b\": \"r\",\n      \"$$a\": \"a\",\n      \"$$b\": \"c\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/batched-updates/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/batched-updates/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n# Mutations\n```\nINSERT button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"0\" => \"2\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/batched-updates/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 154 (min) 115 (brotli)\nconst $a__OR__b__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      ($a($scope, $scope.c + 1), $b($scope, $scope.d + 1));\n    }),\n  ),\n  $a__OR__b = _._or(4, ($scope) => {\n    (_._text($scope.b, $scope.c + $scope.d), $a__OR__b__script($scope));\n  }),\n  $a = _._let(2, $a__OR__b),\n  $b = _._let(3, $a__OR__b);\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/batched-updates/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button> </button>\";\nexport const $walks = /* get, next(1), get, out(1) */\" D l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $a__OR__b__script = _._script(\"__tests__/template.marko_0_a_b\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $a($scope, $scope.a + 1);\n  $b($scope, $scope.b + 1);\n}));\nconst $a__OR__b = /* @__PURE__ */_._or(4, $scope => {\n  _._text($scope[\"#text/1\"], $scope.a + $scope.b);\n  $a__OR__b__script($scope);\n});\nconst $a = /* @__PURE__ */_._let(\"a/2\", $a__OR__b);\nconst $b = /* @__PURE__ */_._let(\"b/3\", $a__OR__b);\nexport function $setup($scope) {\n  $a($scope, 0);\n  $b($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/batched-updates/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let a = 0;\n  let b = 0;\n  _._html(`<button>${_._escape(a + b)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_a_b\");\n  _._scope($scope0_id, {\n    a,\n    b\n  }, \"__tests__/template.marko\", 0, {\n    a: \"1:6\",\n    b: \"2:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/batched-updates/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/batched-updates/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          a: 0,\n          b: 0\n        }]),\n        \"__tests__/template.marko_0_a_b 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      2\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          a: 0,\n          b: 0\n        }]),\n        \"__tests__/template.marko_0_a_b 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"0\" => \"2\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/batched-updates/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  0\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/batched-updates/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>0<!--M_*1 #text/1--></button><!--M_*1 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{a:0,b:0}]),\"__tests__/template.marko_0_a_b 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          a: 0,\n          b: 0\n        }]),\n        \"__tests__/template.marko_0_a_b 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/batched-updates/template.marko",
    "content": "<let/a = 0/>\n<let/b = 0/>\n<button onClick() { a++; b++; }>${a + b}</button>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/batched-updates/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nconst click = (container: Element) => {\n  container.querySelector(\"button\")!.click();\n};\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/batched-updates-cleanup/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$if_content__message\": \"a\",\n      \"$$if_content__setup\": \"m\",\n      \"$$if\": \"r\",\n      \"$$show__script\": \"i\",\n      \"$$show\": \"_\",\n      \"$$message\": \"c\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/batched-updates-cleanup/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button />\n<span>\n  hi\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/batched-updates-cleanup/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button />\n<span>\n  hi\n</span>\n<!---->\n```\n\n# Mutations\n```\nINSERT button, span, #comment\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE span after #text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/batched-updates-cleanup/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 215 (min) 158 (brotli)\nconst $if_content__message = _._if_closure(1, 0, ($scope) =>\n    _._text($scope.a, $scope._.d),\n  ),\n  $if_content__setup = $if_content__message,\n  $if = _._if(1, \"<span> </span>\", \"D l\", $if_content__setup),\n  $show__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      ($message($scope, \"bye\"), $show($scope, !$scope.c));\n    }),\n  ),\n  $show = _._let(2, ($scope) => {\n    ($if($scope, $scope.c ? 0 : 1), $show__script($scope));\n  }),\n  $message = _._let(3, $if_content__message);\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/batched-updates-cleanup/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button></button><!><!>\";\nexport const $walks = /* get, over(1), replace, over(2) */\" b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content__message = /* @__PURE__ */_._if_closure(\"#text/1\", 0, $scope => _._text($scope[\"#text/0\"], $scope._.message));\nconst $if_content__setup = $if_content__message;\nconst $if = /* @__PURE__ */_._if(\"#text/1\", \"<span> </span>\", /* next(1), get, out(1) */\"D l\", $if_content__setup);\nconst $show__script = _._script(\"__tests__/template.marko_0_show\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $message($scope, \"bye\");\n  $show($scope, !$scope.show);\n}));\nconst $show = /* @__PURE__ */_._let(\"show/2\", $scope => {\n  $if($scope, $scope.show ? 0 : 1);\n  $show__script($scope);\n});\nconst $message = /* @__PURE__ */_._let(\"message/3\", $if_content__message);\nexport function $setup($scope) {\n  $show($scope, true);\n  $message($scope, \"hi\");\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/batched-updates-cleanup/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let show = true;\n  let message = \"hi\";\n  _._html(`<button></button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._if(() => {\n    if (show) {\n      const $scope1_id = _._scope_id();\n      _._html(`<span>${_._escape(message)}${_._el_resume($scope1_id, \"#text/0\")}</span>`);\n      _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"4:2\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/1\", 1, /* show */1, /* show */1, 0, 1);\n  _._script($scope0_id, \"__tests__/template.marko_0_show\");\n  _._scope($scope0_id, {\n    show,\n    message\n  }, \"__tests__/template.marko\", 0, {\n    show: \"1:6\",\n    message: \"2:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/batched-updates-cleanup/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button />\n<span>\n  hi\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/batched-updates-cleanup/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <span>\n      hi\n      <!--M_*2 #text/0-->\n    </span>\n    <!--M_|1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          show: !0,\n          message: \"hi\"\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <!--M_|1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          show: !0,\n          message: \"hi\"\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/#comment1 after span\nINSERT html/body/#comment1\nREMOVE span after html/body/#comment1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/batched-updates-cleanup/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button />\n<span>\n  hi\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/batched-updates-cleanup/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button></button><!--M_*1 #button/0--><span>hi<!--M_*2 #text/0--></span><!--M_|1 #text/1 2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={show:!0,message:\"hi\"},{_:_.a}]),\"__tests__/template.marko_0_show 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <span>\n      hi\n      <!--M_*2 #text/0-->\n    </span>\n    <!--M_|1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          show: !0,\n          message: \"hi\"\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/#comment0\nINSERT html/body/span\nINSERT html/body/span/#text\nINSERT html/body/span/#comment\nINSERT html/body/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/batched-updates-cleanup/template.marko",
    "content": "<let/show = true/>\n<let/message = \"hi\"/>\n<button onClick() { message = \"bye\"; show = !show; }/>\n<if=show><span>${message}</span></if>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/batched-updates-cleanup/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nconst click = (container: Element) => {\n  container.querySelector(\"button\")!.click();\n};\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/bind-to-input/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"r\",\n      \"$$x__script\": \"o\",\n      \"$$x$1\": \"_\",\n      \"$$countChange__OR__count\": \"a\",\n      \"$$count\": \"e\",\n      \"$$counter_content2__x\": \"c\",\n      \"$$counter_content__x\": \"n\",\n      \"$$x__closure\": \"m\",\n      \"$$x\": \"s\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/bind-to-input/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  data-internal=\"0\"\n  id=\"controlled\"\n>\n  0\n</button>\n<button\n  data-internal=\"0\"\n  id=\"uncontrolled\"\n>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#controlled\").click();\n```\n```html\n<button\n  data-internal=\"1\"\n  id=\"controlled\"\n>\n  1\n</button>\n<button\n  data-internal=\"0\"\n  id=\"uncontrolled\"\n>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#uncontrolled\").click();\n```\n```html\n<button\n  data-internal=\"1\"\n  id=\"controlled\"\n>\n  1\n</button>\n<button\n  data-internal=\"1\"\n  id=\"uncontrolled\"\n>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#controlled\").click();\n```\n```html\n<button\n  data-internal=\"2\"\n  id=\"controlled\"\n>\n  2\n</button>\n<button\n  data-internal=\"1\"\n  id=\"uncontrolled\"\n>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#uncontrolled\").click();\n```\n```html\n<button\n  data-internal=\"2\"\n  id=\"controlled\"\n>\n  2\n</button>\n<button\n  data-internal=\"2\"\n  id=\"uncontrolled\"\n>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#controlled\").click();\n```\n```html\n<button\n  data-internal=\"3\"\n  id=\"controlled\"\n>\n  3\n</button>\n<button\n  data-internal=\"2\"\n  id=\"uncontrolled\"\n>\n  3\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#uncontrolled\").click();\n```\n```html\n<button\n  data-internal=\"3\"\n  id=\"controlled\"\n>\n  3\n</button>\n<button\n  data-internal=\"3\"\n  id=\"uncontrolled\"\n>\n  3\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/bind-to-input/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button\n  data-internal=\"0\"\n  id=\"controlled\"\n>\n  0\n</button>\n<button\n  data-internal=\"0\"\n  id=\"uncontrolled\"\n>\n  0\n</button>\n```\n\n# Mutations\n```\nINSERT button0, button1\n```\n\n# Render\n```js\ncontainer.querySelector(\"#controlled\").click();\n```\n```html\n<button\n  data-internal=\"1\"\n  id=\"controlled\"\n>\n  1\n</button>\n<button\n  data-internal=\"0\"\n  id=\"uncontrolled\"\n>\n  1\n</button>\n```\n\n# Mutations\n```\nUPDATE button0[data-internal] \"0\" => \"1\"\nUPDATE button0/#text \"0\" => \"1\"\nUPDATE button1/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#uncontrolled\").click();\n```\n```html\n<button\n  data-internal=\"1\"\n  id=\"controlled\"\n>\n  1\n</button>\n<button\n  data-internal=\"1\"\n  id=\"uncontrolled\"\n>\n  1\n</button>\n```\n\n# Mutations\n```\nUPDATE button1[data-internal] \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#controlled\").click();\n```\n```html\n<button\n  data-internal=\"2\"\n  id=\"controlled\"\n>\n  2\n</button>\n<button\n  data-internal=\"1\"\n  id=\"uncontrolled\"\n>\n  2\n</button>\n```\n\n# Mutations\n```\nUPDATE button0[data-internal] \"1\" => \"2\"\nUPDATE button0/#text \"1\" => \"2\"\nUPDATE button1/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#uncontrolled\").click();\n```\n```html\n<button\n  data-internal=\"2\"\n  id=\"controlled\"\n>\n  2\n</button>\n<button\n  data-internal=\"2\"\n  id=\"uncontrolled\"\n>\n  2\n</button>\n```\n\n# Mutations\n```\nUPDATE button1[data-internal] \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#controlled\").click();\n```\n```html\n<button\n  data-internal=\"3\"\n  id=\"controlled\"\n>\n  3\n</button>\n<button\n  data-internal=\"2\"\n  id=\"uncontrolled\"\n>\n  3\n</button>\n```\n\n# Mutations\n```\nUPDATE button0[data-internal] \"2\" => \"3\"\nUPDATE button0/#text \"2\" => \"3\"\nUPDATE button1/#text \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#uncontrolled\").click();\n```\n```html\n<button\n  data-internal=\"3\"\n  id=\"controlled\"\n>\n  3\n</button>\n<button\n  data-internal=\"3\"\n  id=\"uncontrolled\"\n>\n  3\n</button>\n```\n\n# Mutations\n```\nUPDATE button1[data-internal] \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/bind-to-input/__snapshots__/dom.expected/tags/counter.js",
    "content": "export const $template = \"<button><!></button>\";\nexport const $walks = /* get, next(1), replace, out(1) */\" D%l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $x__script = _._script(\"__tests__/tags/counter.marko_0_x\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $x($scope, $scope.x + 1);\n}));\nconst $x = /* @__PURE__ */_._let(\"x/9\", $scope => {\n  _._attr($scope[\"#button/0\"], \"data-internal\", $scope.x);\n  $x__script($scope);\n});\nconst $countChange__OR__count = /* @__PURE__ */_._or(8, $scope => $x($scope, $scope.count, $scope.$countChange));\nexport const $countChange2 = /* @__PURE__ */_._const(\"$countChange\", $countChange__OR__count);\nexport const $count = /* @__PURE__ */_._const(\"count\", $countChange__OR__count);\nexport const $input_id = ($scope, input_id) => _._attr($scope[\"#button/0\"], \"id\", input_id);\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/1\");\nexport const $input_content = ($scope, input_content) => $dynamicTag($scope, input_content);\nexport const $input = ($scope, input) => {\n  $input_id($scope, input.id);\n  $input_content($scope, input.content);\n  $countChange2($scope, input.countChange);\n  $count($scope, input.count);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/counter.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/bind-to-input/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 365 (min) 204 (brotli)\nconst $x__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $x$1($scope, $scope.j + 1);\n    }),\n  ),\n  $x$1 = _._let(9, ($scope) => {\n    (_._attr($scope.a, \"data-internal\", $scope.j), $x__script($scope));\n  }),\n  $countChange__OR__count = _._or(8, ($scope) =>\n    $x$1($scope, $scope.h, $scope.g),\n  ),\n  $count = _._const(7, $countChange__OR__count),\n  $counter_content2__x = _._closure_get(2, ($scope) =>\n    _._text($scope.a, $scope._.c),\n  ),\n  $counter_content__x = _._closure_get(2, ($scope) =>\n    _._text($scope.a, $scope._.c),\n  ),\n  $x__closure = _._closure($counter_content__x, $counter_content2__x),\n  $x = _._let(2, ($scope) => {\n    ($count($scope.a, $scope.c),\n      $count($scope.b, $scope.c),\n      $x__closure($scope));\n  });\n(_._resume(\"b0\", function ($scope) {\n  return (_new_x) => {\n    $x($scope, _new_x);\n  };\n}),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/bind-to-input/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `${_counter_template}${_counter_template}`;\nexport const $walks = /* <counter>, <counter> */`/${_counter_walks}&/${_counter_walks}&`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _counter, $input_content as _counter_input_content, $count as _counter_input_count, $countChange2 as _counter_input_countChange, $input_id as _counter_input_id, $template as _counter_template, $walks as _counter_walks } from \"./tags/counter.marko\";\nconst $counter_content2__x = /* @__PURE__ */_._closure_get(\"x\", $scope => _._text($scope[\"#text/0\"], $scope._.x));\nconst $counter_content2__setup = $counter_content2__x;\nconst $counter_content2 = /* @__PURE__ */_._content(\"__tests__/template.marko_2_content\", \" \", /* get, over(1) */\" b\", $counter_content2__setup);\nconst $counter_content__x = /* @__PURE__ */_._closure_get(\"x\", $scope => _._text($scope[\"#text/0\"], $scope._.x));\nconst $counter_content__setup = $counter_content__x;\nconst $counter_content = /* @__PURE__ */_._content(\"__tests__/template.marko_1_content\", \" \", /* get, over(1) */\" b\", $counter_content__setup);\nconst $x__closure = /* @__PURE__ */_._closure($counter_content__x, $counter_content2__x);\nconst $x = /* @__PURE__ */_._let(\"x/2\", $scope => {\n  _counter_input_count($scope[\"#childScope/0\"], $scope.x);\n  _counter_input_count($scope[\"#childScope/1\"], $scope.x);\n  $x__closure($scope);\n});\nexport function $setup($scope) {\n  _counter($scope[\"#childScope/0\"]);\n  _counter_input_content($scope[\"#childScope/0\"], $counter_content($scope));\n  _counter_input_countChange($scope[\"#childScope/0\"], $countChange($scope));\n  _counter_input_id($scope[\"#childScope/0\"], \"controlled\");\n  _counter($scope[\"#childScope/1\"]);\n  _counter_input_content($scope[\"#childScope/1\"], $counter_content2($scope));\n  _counter_input_id($scope[\"#childScope/1\"], \"uncontrolled\");\n  _counter_input_countChange($scope[\"#childScope/1\"]);\n  $x($scope, 0);\n}\nfunction $countChange($scope) {\n  return _new_x => {\n    $x($scope, _new_x);\n  };\n}\n_._resume(\"__tests__/template.marko_0/countChange\", $countChange);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/bind-to-input/__snapshots__/html.expected/tags/counter.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/counter.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    \"countChange\": $countChange,\n    count\n  } = input;\n  let x = count;\n  _._html(`<button${_._attr(\"id\", input.id)}${_._attr(\"data-internal\", x)}>`);\n  _._dynamic_tag($scope0_id, \"#text/1\", input.content, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.content */0));\n  _._html(`</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/tags/counter.marko_0_x\");\n  _._scope($scope0_id, {\n    $countChange: _._serialize_if($scope0_reason, /* input.count */2) && $countChange,\n    count: _._serialize_if($scope0_reason, /* input.countChange */1) && count,\n    x,\n    \"TagVariableChange:x\": $countChange || void 0\n  }, \"__tests__/tags/counter.marko\", 0, {\n    $countChange: 0,\n    count: \"1:10\",\n    x: \"3:6\"\n  });\n  _._resume_branch($scope0_id);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/bind-to-input/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _counter from \"./tags/counter.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $x__closures = new Set();\n  let x = 0;\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason({\n    /* input.count */2: /* x */1\n  });\n  _counter({\n    count: x,\n    countChange: _._resume(_new_x => {\n      x = _new_x;\n    }, \"__tests__/template.marko_0/countChange\", $scope0_id),\n    id: \"controlled\",\n    content: _._content(\"__tests__/template.marko_1_content\", () => {\n      _._scope_reason();\n      const $scope1_id = _._scope_id();\n      _._html(`${_._escape(x)}${_._el_resume($scope1_id, \"#text/0\")}`);\n      _._subscribe($x__closures, _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id),\n        \"ClosureSignalIndex:x\": 0\n      }, \"__tests__/template.marko\", \"3:2\"));\n      _._resume_branch($scope1_id);\n    })\n  });\n  const $childScope2 = _._peek_scope_id();\n  _._set_serialize_reason({\n    /* input.count */2: /* x */1\n  });\n  _counter({\n    count: x,\n    id: \"uncontrolled\",\n    content: _._content(\"__tests__/template.marko_2_content\", () => {\n      _._scope_reason();\n      const $scope2_id = _._scope_id();\n      _._html(`${_._escape(x)}${_._el_resume($scope2_id, \"#text/0\")}`);\n      _._subscribe($x__closures, _._scope($scope2_id, {\n        _: _._scope_with_id($scope0_id),\n        \"ClosureSignalIndex:x\": 1\n      }, \"__tests__/template.marko\", \"4:2\"));\n      _._resume_branch($scope2_id);\n    })\n  });\n  _._scope($scope0_id, {\n    \"ClosureScopes:x\": $x__closures,\n    \"#childScope/0\": _._existing_scope($childScope),\n    \"#childScope/1\": _._existing_scope($childScope2)\n  }, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/bind-to-input/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  data-internal=\"0\"\n  id=\"controlled\"\n>\n  0\n</button>\n<button\n  data-internal=\"0\"\n  id=\"uncontrolled\"\n>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#controlled\").click();\n```\n```html\n<button\n  data-internal=\"1\"\n  id=\"controlled\"\n>\n  1\n</button>\n<button\n  data-internal=\"0\"\n  id=\"uncontrolled\"\n>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#uncontrolled\").click();\n```\n```html\n<button\n  data-internal=\"1\"\n  id=\"controlled\"\n>\n  1\n</button>\n<button\n  data-internal=\"1\"\n  id=\"uncontrolled\"\n>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#controlled\").click();\n```\n```html\n<button\n  data-internal=\"2\"\n  id=\"controlled\"\n>\n  2\n</button>\n<button\n  data-internal=\"1\"\n  id=\"uncontrolled\"\n>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#uncontrolled\").click();\n```\n```html\n<button\n  data-internal=\"2\"\n  id=\"controlled\"\n>\n  2\n</button>\n<button\n  data-internal=\"2\"\n  id=\"uncontrolled\"\n>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#controlled\").click();\n```\n```html\n<button\n  data-internal=\"3\"\n  id=\"controlled\"\n>\n  3\n</button>\n<button\n  data-internal=\"2\"\n  id=\"uncontrolled\"\n>\n  3\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#uncontrolled\").click();\n```\n```html\n<button\n  data-internal=\"3\"\n  id=\"controlled\"\n>\n  3\n</button>\n<button\n  data-internal=\"3\"\n  id=\"uncontrolled\"\n>\n  3\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/bind-to-input/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button\n      data-internal=\"0\"\n      id=\"controlled\"\n    >\n      0\n      <!--M_*3 #text/0-->\n    </button>\n    <!--M_*2 #button/0-->\n    <button\n      data-internal=\"0\"\n      id=\"uncontrolled\"\n    >\n      0\n      <!--M_*5 #text/0-->\n    </button>\n    <!--M_*4 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.b = {\n          \"ClosureScopes:x\": _.e = new Set,\n          \"#childScope/0\": _.a = {\n            x: 0\n          },\n          \"#childScope/1\": _.c = {\n            x: 0\n          }\n        }, _.a, _.f = {\n          _: _.b,\n          \"ClosureSignalIndex:x\": 0\n        }, _.c, _.g = {\n          _: _.b,\n          \"ClosureSignalIndex:x\": 1\n        }], _.a.$countChange = _.a[\"TagVariableChange:x\"] = _._[\n          \"__tests__/template.marko_0/countChange\"\n          ](_.b), (_.e).add(_.f), _.e.add(_.g), _.d),\n        \"__tests__/tags/counter.marko_0_x 2 4\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#controlled\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      data-internal=\"1\"\n      id=\"controlled\"\n    >\n      1\n      <!--M_*3 #text/0-->\n    </button>\n    <!--M_*2 #button/0-->\n    <button\n      data-internal=\"0\"\n      id=\"uncontrolled\"\n    >\n      1\n      <!--M_*5 #text/0-->\n    </button>\n    <!--M_*4 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.b = {\n          \"ClosureScopes:x\": _.e = new Set,\n          \"#childScope/0\": _.a = {\n            x: 0\n          },\n          \"#childScope/1\": _.c = {\n            x: 0\n          }\n        }, _.a, _.f = {\n          _: _.b,\n          \"ClosureSignalIndex:x\": 0\n        }, _.c, _.g = {\n          _: _.b,\n          \"ClosureSignalIndex:x\": 1\n        }], _.a.$countChange = _.a[\"TagVariableChange:x\"] = _._[\n          \"__tests__/template.marko_0/countChange\"\n          ](_.b), (_.e).add(_.f), _.e.add(_.g), _.d),\n        \"__tests__/tags/counter.marko_0_x 2 4\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button0[data-internal] \"0\" => \"1\"\nUPDATE html/body/button0/#text \"0\" => \"1\"\nUPDATE html/body/button1/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#uncontrolled\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      data-internal=\"1\"\n      id=\"controlled\"\n    >\n      1\n      <!--M_*3 #text/0-->\n    </button>\n    <!--M_*2 #button/0-->\n    <button\n      data-internal=\"1\"\n      id=\"uncontrolled\"\n    >\n      1\n      <!--M_*5 #text/0-->\n    </button>\n    <!--M_*4 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.b = {\n          \"ClosureScopes:x\": _.e = new Set,\n          \"#childScope/0\": _.a = {\n            x: 0\n          },\n          \"#childScope/1\": _.c = {\n            x: 0\n          }\n        }, _.a, _.f = {\n          _: _.b,\n          \"ClosureSignalIndex:x\": 0\n        }, _.c, _.g = {\n          _: _.b,\n          \"ClosureSignalIndex:x\": 1\n        }], _.a.$countChange = _.a[\"TagVariableChange:x\"] = _._[\n          \"__tests__/template.marko_0/countChange\"\n          ](_.b), (_.e).add(_.f), _.e.add(_.g), _.d),\n        \"__tests__/tags/counter.marko_0_x 2 4\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button1[data-internal] \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#controlled\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      data-internal=\"2\"\n      id=\"controlled\"\n    >\n      2\n      <!--M_*3 #text/0-->\n    </button>\n    <!--M_*2 #button/0-->\n    <button\n      data-internal=\"1\"\n      id=\"uncontrolled\"\n    >\n      2\n      <!--M_*5 #text/0-->\n    </button>\n    <!--M_*4 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.b = {\n          \"ClosureScopes:x\": _.e = new Set,\n          \"#childScope/0\": _.a = {\n            x: 0\n          },\n          \"#childScope/1\": _.c = {\n            x: 0\n          }\n        }, _.a, _.f = {\n          _: _.b,\n          \"ClosureSignalIndex:x\": 0\n        }, _.c, _.g = {\n          _: _.b,\n          \"ClosureSignalIndex:x\": 1\n        }], _.a.$countChange = _.a[\"TagVariableChange:x\"] = _._[\n          \"__tests__/template.marko_0/countChange\"\n          ](_.b), (_.e).add(_.f), _.e.add(_.g), _.d),\n        \"__tests__/tags/counter.marko_0_x 2 4\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button0[data-internal] \"1\" => \"2\"\nUPDATE html/body/button0/#text \"1\" => \"2\"\nUPDATE html/body/button1/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#uncontrolled\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      data-internal=\"2\"\n      id=\"controlled\"\n    >\n      2\n      <!--M_*3 #text/0-->\n    </button>\n    <!--M_*2 #button/0-->\n    <button\n      data-internal=\"2\"\n      id=\"uncontrolled\"\n    >\n      2\n      <!--M_*5 #text/0-->\n    </button>\n    <!--M_*4 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.b = {\n          \"ClosureScopes:x\": _.e = new Set,\n          \"#childScope/0\": _.a = {\n            x: 0\n          },\n          \"#childScope/1\": _.c = {\n            x: 0\n          }\n        }, _.a, _.f = {\n          _: _.b,\n          \"ClosureSignalIndex:x\": 0\n        }, _.c, _.g = {\n          _: _.b,\n          \"ClosureSignalIndex:x\": 1\n        }], _.a.$countChange = _.a[\"TagVariableChange:x\"] = _._[\n          \"__tests__/template.marko_0/countChange\"\n          ](_.b), (_.e).add(_.f), _.e.add(_.g), _.d),\n        \"__tests__/tags/counter.marko_0_x 2 4\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button1[data-internal] \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#controlled\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      data-internal=\"3\"\n      id=\"controlled\"\n    >\n      3\n      <!--M_*3 #text/0-->\n    </button>\n    <!--M_*2 #button/0-->\n    <button\n      data-internal=\"2\"\n      id=\"uncontrolled\"\n    >\n      3\n      <!--M_*5 #text/0-->\n    </button>\n    <!--M_*4 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.b = {\n          \"ClosureScopes:x\": _.e = new Set,\n          \"#childScope/0\": _.a = {\n            x: 0\n          },\n          \"#childScope/1\": _.c = {\n            x: 0\n          }\n        }, _.a, _.f = {\n          _: _.b,\n          \"ClosureSignalIndex:x\": 0\n        }, _.c, _.g = {\n          _: _.b,\n          \"ClosureSignalIndex:x\": 1\n        }], _.a.$countChange = _.a[\"TagVariableChange:x\"] = _._[\n          \"__tests__/template.marko_0/countChange\"\n          ](_.b), (_.e).add(_.f), _.e.add(_.g), _.d),\n        \"__tests__/tags/counter.marko_0_x 2 4\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button0[data-internal] \"2\" => \"3\"\nUPDATE html/body/button0/#text \"2\" => \"3\"\nUPDATE html/body/button1/#text \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#uncontrolled\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      data-internal=\"3\"\n      id=\"controlled\"\n    >\n      3\n      <!--M_*3 #text/0-->\n    </button>\n    <!--M_*2 #button/0-->\n    <button\n      data-internal=\"3\"\n      id=\"uncontrolled\"\n    >\n      3\n      <!--M_*5 #text/0-->\n    </button>\n    <!--M_*4 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.b = {\n          \"ClosureScopes:x\": _.e = new Set,\n          \"#childScope/0\": _.a = {\n            x: 0\n          },\n          \"#childScope/1\": _.c = {\n            x: 0\n          }\n        }, _.a, _.f = {\n          _: _.b,\n          \"ClosureSignalIndex:x\": 0\n        }, _.c, _.g = {\n          _: _.b,\n          \"ClosureSignalIndex:x\": 1\n        }], _.a.$countChange = _.a[\"TagVariableChange:x\"] = _._[\n          \"__tests__/template.marko_0/countChange\"\n          ](_.b), (_.e).add(_.f), _.e.add(_.g), _.d),\n        \"__tests__/tags/counter.marko_0_x 2 4\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button1[data-internal] \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/bind-to-input/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button\n  data-internal=\"0\"\n  id=\"controlled\"\n>\n  0\n</button>\n<button\n  data-internal=\"0\"\n  id=\"uncontrolled\"\n>\n  0\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/bind-to-input/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button id=controlled data-internal=0>0<!--M_*3 #text/0--></button><!--M_*2 #button/0--><button id=uncontrolled data-internal=0>0<!--M_*5 #text/0--></button><!--M_*4 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.d=[0,_.b={\"ClosureScopes:x\":_.e=new Set,\"#childScope/0\":_.a={x:0},\"#childScope/1\":_.c={x:0}},_.a,_.f={_:_.b,\"ClosureSignalIndex:x\":0},_.c,_.g={_:_.b,\"ClosureSignalIndex:x\":1}],_.a.$countChange=_.a[\"TagVariableChange:x\"]=_._[\"__tests__/template.marko_0/countChange\"](_.b),(_.e).add(_.f),_.e.add(_.g),_.d),\"__tests__/tags/counter.marko_0_x 2 4\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button\n      data-internal=\"0\"\n      id=\"controlled\"\n    >\n      0\n      <!--M_*3 #text/0-->\n    </button>\n    <!--M_*2 #button/0-->\n    <button\n      data-internal=\"0\"\n      id=\"uncontrolled\"\n    >\n      0\n      <!--M_*5 #text/0-->\n    </button>\n    <!--M_*4 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.b = {\n          \"ClosureScopes:x\": _.e = new Set,\n          \"#childScope/0\": _.a = {\n            x: 0\n          },\n          \"#childScope/1\": _.c = {\n            x: 0\n          }\n        }, _.a, _.f = {\n          _: _.b,\n          \"ClosureSignalIndex:x\": 0\n        }, _.c, _.g = {\n          _: _.b,\n          \"ClosureSignalIndex:x\": 1\n        }], _.a.$countChange = _.a[\"TagVariableChange:x\"] = _._[\n          \"__tests__/template.marko_0/countChange\"\n          ](_.b), (_.e).add(_.f), _.e.add(_.g), _.d),\n        \"__tests__/tags/counter.marko_0_x 2 4\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button0\nINSERT html/body/button0/#text\nINSERT html/body/button0/#comment\nINSERT html/body/#comment0\nINSERT html/body/button1\nINSERT html/body/button1/#text\nINSERT html/body/button1/#comment\nINSERT html/body/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/bind-to-input/tags/counter.marko",
    "content": "<const/{ count }=input/>\n\n<let/x:=count/>\n\n<button id=input.id onClick() { x++ } data-internal=x>\n  <${input.content}/>\n</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/bind-to-input/template.marko",
    "content": "<let/x=0/>\n\n<counter#controlled count:=x>${x}</>\n<counter#uncontrolled count=x>${x}</>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/bind-to-input/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nconst clickControlled = (container: Element) => {\n  container.querySelector<HTMLButtonElement>(\"#controlled\")!.click();\n};\n\nconst clickUncontrolled = (container: Element) => {\n  container.querySelector<HTMLButtonElement>(\"#uncontrolled\")!.click();\n};\n\nexport const config: TestConfig = {\n  steps: [\n    {},\n    clickControlled,\n    clickUncontrolled,\n    clickControlled,\n    clickUncontrolled,\n    clickControlled,\n    clickUncontrolled,\n  ],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/body-content/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"r\",\n      \"$$attrs__script\": \"o\",\n      \"$$attrs\": \"a\",\n      \"$$FancyButton_content__clickCount\": \"s\",\n      \"$$clickCount__closure\": \"_\",\n      \"$$clickCount\": \"m\",\n      \"$$onClick\": \"e\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/body-content/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/body-content/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n# Mutations\n```\nINSERT button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/body-content/__snapshots__/dom.expected/tags/FancyButton.js",
    "content": "export const $template = \"<button><!></button>\";\nexport const $walks = /* get, next(1), replace, out(1) */\" D%l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $attrs__script = _._script(\"__tests__/tags/FancyButton.marko_0_attrs\", $scope => _._attrs_script($scope, \"#button/0\"));\nexport const $attrs = /* @__PURE__ */_._const(\"attrs\", $scope => {\n  _._attrs($scope, \"#button/0\", $scope.attrs);\n  $attrs__script($scope);\n});\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/1\");\nexport const $content = ($scope, content) => $dynamicTag($scope, content);\nexport const $input = ($scope, input) => {\n  (({\n    content,\n    ...attrs\n  }) => $attrs($scope, attrs))(input);\n  $content($scope, input.content);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/FancyButton.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/body-content/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 262 (min) 172 (brotli)\nconst $attrs__script = _._script(\"a0\", ($scope) =>\n    _._attrs_script($scope, \"a\"),\n  ),\n  $attrs = _._const(5, ($scope) => {\n    (_._attrs($scope, \"a\", $scope.f), $attrs__script($scope));\n  }),\n  $FancyButton_content__clickCount = _._closure_get(1, ($scope) =>\n    _._text($scope.a, $scope._.b),\n  ),\n  $clickCount__closure = _._closure($FancyButton_content__clickCount),\n  $clickCount = _._let(1, ($scope) => {\n    ($attrs($scope.a, { onClick: $onClick($scope) }),\n      $clickCount__closure($scope));\n  });\nfunction $onClick($scope) {\n  return function () {\n    $clickCount($scope, $scope.b + 1);\n  };\n}\n(_._resume(\"b0\", $onClick), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/body-content/__snapshots__/dom.expected/template.js",
    "content": "export const $template = _FancyButton_template;\nexport const $walks = /* <FancyButton> */`/${_FancyButton_walks}&`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _FancyButton, $content as _FancyButton_input_content, $attrs as _FancyButton_input_$rest, $template as _FancyButton_template, $walks as _FancyButton_walks } from \"./tags/FancyButton.marko\";\nconst $FancyButton_content__clickCount = /* @__PURE__ */_._closure_get(\"clickCount\", $scope => _._text($scope[\"#text/0\"], $scope._.clickCount));\nconst $FancyButton_content__setup = $FancyButton_content__clickCount;\nconst $FancyButton_content = /* @__PURE__ */_._content(\"__tests__/template.marko_1_content\", \" \", /* get, over(1) */\" b\", $FancyButton_content__setup);\nconst $clickCount__closure = /* @__PURE__ */_._closure($FancyButton_content__clickCount);\nconst $clickCount = /* @__PURE__ */_._let(\"clickCount/1\", $scope => {\n  _FancyButton_input_$rest($scope[\"#childScope/0\"], {\n    onClick: $onClick($scope)\n  });\n  $clickCount__closure($scope);\n});\nexport function $setup($scope) {\n  _FancyButton($scope[\"#childScope/0\"]);\n  _FancyButton_input_content($scope[\"#childScope/0\"], $FancyButton_content($scope));\n  $clickCount($scope, 0);\n}\nfunction $onClick($scope) {\n  return function () {\n    $clickCount($scope, $scope.clickCount + 1);\n  };\n}\n_._resume(\"__tests__/template.marko_0/onClick\", $onClick);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/body-content/__snapshots__/html.expected/tags/FancyButton.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/FancyButton.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    content,\n    ...attrs\n  } = input;\n  _._html(`<button${_._attrs(attrs, \"#button/0\", $scope0_id, \"button\")}>`);\n  _._dynamic_tag($scope0_id, \"#text/1\", content, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.content */0));\n  _._html(`</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/tags/FancyButton.marko_0_attrs\");\n  _._scope($scope0_id, {\n    attrs\n  }, \"__tests__/tags/FancyButton.marko\", 0, {\n    attrs: \"1:22\"\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/body-content/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _FancyButton from \"./tags/FancyButton.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $clickCount__closures = new Set();\n  let clickCount = 0;\n  const $childScope = _._peek_scope_id();\n  _FancyButton({\n    onClick: _._resume(function () {\n      clickCount++;\n    }, \"__tests__/template.marko_0/onClick\", $scope0_id),\n    content: _._content(\"__tests__/template.marko_1_content\", () => {\n      _._scope_reason();\n      const $scope1_id = _._scope_id();\n      _._html(`${_._escape(clickCount)}${_._el_resume($scope1_id, \"#text/0\")}`);\n      _._subscribe($clickCount__closures, _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id),\n        \"ClosureSignalIndex:clickCount\": 0\n      }, \"__tests__/template.marko\", \"2:2\"));\n      _._resume_branch($scope1_id);\n    })\n  });\n  _._scope($scope0_id, {\n    clickCount,\n    \"ClosureScopes:clickCount\": $clickCount__closures,\n    \"#childScope/0\": _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0, {\n    clickCount: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/body-content/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/body-content/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*3 #text/0-->\n    </button>\n    <!--M_*2 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.d = {\n          clickCount: 0,\n          \"ClosureScopes:clickCount\": _.f = new Set,\n          \"#childScope/0\": _.c = {\n            \"EventAttributes:#button/0\": _.a = {},\n            attrs: _.b = {}\n          }\n        }, _.c, _.g = {\n          _: _.d,\n          \"ClosureSignalIndex:clickCount\": 0\n        }], _.a.click = _.b.onClick = _._[\n          \"__tests__/template.marko_0/onClick\"\n          ](_.d), (_.f).add(_.g), _.e),\n        \"__tests__/tags/FancyButton.marko_0_attrs 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*3 #text/0-->\n    </button>\n    <!--M_*2 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.d = {\n          clickCount: 0,\n          \"ClosureScopes:clickCount\": _.f = new Set,\n          \"#childScope/0\": _.c = {\n            \"EventAttributes:#button/0\": _.a = {},\n            attrs: _.b = {}\n          }\n        }, _.c, _.g = {\n          _: _.d,\n          \"ClosureSignalIndex:clickCount\": 0\n        }], _.a.click = _.b.onClick = _._[\n          \"__tests__/template.marko_0/onClick\"\n          ](_.d), (_.f).add(_.g), _.e),\n        \"__tests__/tags/FancyButton.marko_0_attrs 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      2\n      <!--M_*3 #text/0-->\n    </button>\n    <!--M_*2 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.d = {\n          clickCount: 0,\n          \"ClosureScopes:clickCount\": _.f = new Set,\n          \"#childScope/0\": _.c = {\n            \"EventAttributes:#button/0\": _.a = {},\n            attrs: _.b = {}\n          }\n        }, _.c, _.g = {\n          _: _.d,\n          \"ClosureSignalIndex:clickCount\": 0\n        }], _.a.click = _.b.onClick = _._[\n          \"__tests__/template.marko_0/onClick\"\n          ](_.d), (_.f).add(_.g), _.e),\n        \"__tests__/tags/FancyButton.marko_0_attrs 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      3\n      <!--M_*3 #text/0-->\n    </button>\n    <!--M_*2 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.d = {\n          clickCount: 0,\n          \"ClosureScopes:clickCount\": _.f = new Set,\n          \"#childScope/0\": _.c = {\n            \"EventAttributes:#button/0\": _.a = {},\n            attrs: _.b = {}\n          }\n        }, _.c, _.g = {\n          _: _.d,\n          \"ClosureSignalIndex:clickCount\": 0\n        }], _.a.click = _.b.onClick = _._[\n          \"__tests__/template.marko_0/onClick\"\n          ](_.d), (_.f).add(_.g), _.e),\n        \"__tests__/tags/FancyButton.marko_0_attrs 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/body-content/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  0\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/body-content/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>0<!--M_*3 #text/0--></button><!--M_*2 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.e=[0,_.d={clickCount:0,\"ClosureScopes:clickCount\":_.f=new Set,\"#childScope/0\":_.c={\"EventAttributes:#button/0\":_.a={},attrs:_.b={}}},_.c,_.g={_:_.d,\"ClosureSignalIndex:clickCount\":0}],_.a.click=_.b.onClick=_._[\"__tests__/template.marko_0/onClick\"](_.d),(_.f).add(_.g),_.e),\"__tests__/tags/FancyButton.marko_0_attrs 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*3 #text/0-->\n    </button>\n    <!--M_*2 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.d = {\n          clickCount: 0,\n          \"ClosureScopes:clickCount\": _.f = new Set,\n          \"#childScope/0\": _.c = {\n            \"EventAttributes:#button/0\": _.a = {},\n            attrs: _.b = {}\n          }\n        }, _.c, _.g = {\n          _: _.d,\n          \"ClosureSignalIndex:clickCount\": 0\n        }], _.a.click = _.b.onClick = _._[\n          \"__tests__/template.marko_0/onClick\"\n          ](_.d), (_.f).add(_.g), _.e),\n        \"__tests__/tags/FancyButton.marko_0_attrs 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/body-content/tags/FancyButton.marko",
    "content": "<const/{ content, ...attrs }=input/>\n<button ...attrs><${content}/></button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/body-content/template.marko",
    "content": "<let/clickCount = 0/>\n<FancyButton onClick() { clickCount++ }>${clickCount}</FancyButton>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/body-content/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nconst click = (container: Element) => {\n  container.querySelector(\"button\")!.click();\n};\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/branch-closure-if-only-child/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$if_content__count\": \"c\",\n      \"$$count__script\": \"i\",\n      \"$$count\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/branch-closure-if-only-child/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n<div>\n  0\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n<div>\n  1\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n<div>\n  2\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n<div>\n  3\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/branch-closure-if-only-child/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n<div>\n  0\n</div>\n```\n\n# Mutations\n```\nINSERT button, div\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n<div>\n  1\n</div>\n```\n\n# Mutations\n```\nUPDATE button/#text \"0\" => \"1\"\nUPDATE div/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n<div>\n  2\n</div>\n```\n\n# Mutations\n```\nUPDATE button/#text \"1\" => \"2\"\nUPDATE div/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n<div>\n  3\n</div>\n```\n\n# Mutations\n```\nUPDATE button/#text \"2\" => \"3\"\nUPDATE div/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/branch-closure-if-only-child/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 211 (min) 129 (brotli)\nconst $if_content__count = _._if_closure(2, 0, ($scope) =>\n    _._text($scope.a, $scope._.d),\n  ),\n  $count__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $count($scope, $scope.d + 1);\n    }),\n  ),\n  $count = _._let(3, ($scope) => {\n    (_._text($scope.b, $scope.d),\n      $if_content__count($scope),\n      $count__script($scope));\n  });\n(_._script(\"a1\", ($scope) => _._on($scope.c, \"click\", function () {})), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/branch-closure-if-only-child/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button> </button><div></div>\";\nexport const $walks = /* get, next(1), get, out(1), get, over(1) */\" D l b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content__count = /* @__PURE__ */_._if_closure(\"#div/2\", 0, $scope => _._text($scope[\"#text/0\"], $scope._.count));\nconst $if_content__setup = $if_content__count;\nconst $count__script = _._script(\"__tests__/template.marko_0_count\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $count($scope, $scope.count + 1);\n}));\nconst $count = /* @__PURE__ */_._let(\"count/3\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.count);\n  $if_content__count($scope);\n  $count__script($scope);\n});\nconst $if = /* @__PURE__ */_._if(\"#div/2\", \" \", /* get, over(1) */\" b\", $if_content__setup);\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => _._on($scope[\"#div/2\"], \"click\", function () {}));\nexport function $setup($scope) {\n  $count($scope, 0);\n  $if($scope, true ? 0 : 1);\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/branch-closure-if-only-child/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let count = 0;\n  _._html(`<button>${_._escape(count)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}<div>`);\n  _._if(() => {\n    if (true) {\n      const $scope1_id = _._scope_id();\n      _._html(`${_._escape(count)}${_._el_resume($scope1_id, \"#text/0\")}`);\n      _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"7:4\");\n      return 0;\n    }\n  }, $scope0_id, \"#div/2\", 1, 1, 0, \"</div>\", 1);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._script($scope0_id, \"__tests__/template.marko_0_count\");\n  _._scope($scope0_id, {\n    count\n  }, \"__tests__/template.marko\", 0, {\n    count: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/branch-closure-if-only-child/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n<div>\n  0\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n<div>\n  1\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n<div>\n  2\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n<div>\n  3\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/branch-closure-if-only-child/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      0\n      <!--M_*2 #text/0-->\n    </div>\n    <!--M_*1 #div/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"BranchScopes:#div/2\": _.b = {},\n          count: 0\n        }, _.b], _.b._ = _.a, _.c),\n        \"__tests__/template.marko_0 1 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      1\n      <!--M_*2 #text/0-->\n    </div>\n    <!--M_*1 #div/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"BranchScopes:#div/2\": _.b = {},\n          count: 0\n        }, _.b], _.b._ = _.a, _.c),\n        \"__tests__/template.marko_0 1 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"0\" => \"1\"\nUPDATE html/body/div/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      2\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      2\n      <!--M_*2 #text/0-->\n    </div>\n    <!--M_*1 #div/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"BranchScopes:#div/2\": _.b = {},\n          count: 0\n        }, _.b], _.b._ = _.a, _.c),\n        \"__tests__/template.marko_0 1 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"1\" => \"2\"\nUPDATE html/body/div/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      3\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      3\n      <!--M_*2 #text/0-->\n    </div>\n    <!--M_*1 #div/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"BranchScopes:#div/2\": _.b = {},\n          count: 0\n        }, _.b], _.b._ = _.a, _.c),\n        \"__tests__/template.marko_0 1 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"2\" => \"3\"\nUPDATE html/body/div/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/branch-closure-if-only-child/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  0\n</button>\n<div>\n  0\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/branch-closure-if-only-child/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>0<!--M_*1 #text/1--></button><!--M_*1 #button/0--><div>0<!--M_*2 #text/0--></div><!--M_*1 #div/2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.a={\"BranchScopes:#div/2\":_.b={},count:0},_.b],_.b._=_.a,_.c),\"__tests__/template.marko_0 1 __tests__/template.marko_0_count 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      0\n      <!--M_*2 #text/0-->\n    </div>\n    <!--M_*1 #div/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"BranchScopes:#div/2\": _.b = {},\n          count: 0\n        }, _.b], _.b._ = _.a, _.c),\n        \"__tests__/template.marko_0 1 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment0\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/div/#comment\nINSERT html/body/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/branch-closure-if-only-child/template.marko",
    "content": "<let/count=0>\n<button onClick() { count++ }>\n  ${count}\n</button>\n\n<div onClick() {}>\n  <if=true>\n    ${count}\n  </if>\n</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/branch-closure-if-only-child/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"e\",\n      \"$$catch_content__error\": \"t\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\nabcdf\n```\n\n\n# Render ASYNC\n```html\nabcdef\n```\n\n\n# Render ASYNC\n```html\naERROR!def\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\nabcdf\n```\n\n# Mutations\n```\nINSERT #text0, #text1, #text2, #text3, #text4, #text5, #text6\n```\n\n# Render ASYNC\n```html\nabcdef\n```\n\n# Mutations\n```\nINSERT #text5\nREMOVE #text after #text5\nUPDATE #text5 \" \" => \"e\"\n```\n\n# Render ASYNC\n```html\naERROR!def\n```\n\n# Mutations\n```\nINSERT #text1\nREMOVE #text after #text1\nREMOVE #text after #text1\nREMOVE #text after #text1\nUPDATE #text1 \" \" => \"ERROR!\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 123 (min) 88 (brotli)\n_._enable_catch();\nconst $catch_content__error = ($scope, error) =>\n  (($scope, error_message) => _._text($scope.a, error_message))(\n    $scope,\n    error?.message,\n  );\n_._content_resume(\"a0\", \" \", \" b\", 0, ($scope, $params2) =>\n  $catch_content__error($scope, $params2[0]),\n);\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"a<!>d<!>f\";\nexport const $walks = /* over(1), replace, over(2), replace, over(2) */\"b%c%c\";\nimport { rejectAfter, resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\n_._enable_catch();\nconst $await_content2__data = ($scope, data) => _._text($scope[\"#text/0\"], data);\nconst $await_content2__$params = ($scope, $params4) => $await_content2__data($scope, $params4[0]);\nconst $await_content__data = ($scope, data) => _._text($scope[\"#text/0\"], data);\nconst $await_content__$params = ($scope, $params3) => $await_content__data($scope, $params3[0]);\nconst $catch_content__error_message = ($scope, error_message) => _._text($scope[\"#text/0\"], error_message);\nconst $catch_content__$params = ($scope, $params2) => $catch_content__error($scope, $params2[0]);\nconst $catch_content__error = ($scope, error) => $catch_content__error_message($scope, error?.message);\nconst $catch_content = _._content_resume(\"__tests__/template.marko_2_content\", \" \", /* get, over(1) */\" b\", 0, $catch_content__$params);\nconst $await_content = /* @__PURE__ */_._await_content(\"#text/0\", \" \", /* get, over(1) */\" b\");\nconst $try_content__await_promise = /* @__PURE__ */_._await_promise(\"#text/0\", $await_content__$params);\nconst $try_content__setup = $scope => {\n  $await_content($scope);\n  $try_content__await_promise($scope, rejectAfter(new Error(\"ERROR!\"), 2));\n};\nconst $try = /* @__PURE__ */_._try(\"#text/0\", \"b<!>c\", /* over(1), replace, over(2) */\"b%c\", $try_content__setup);\nconst $await_content2 = /* @__PURE__ */_._await_content(\"#text/1\", \" \", /* get, over(1) */\" b\");\nconst $await_promise = /* @__PURE__ */_._await_promise(\"#text/1\", $await_content2__$params);\nexport function $setup($scope) {\n  $await_content2($scope);\n  $try($scope, {\n    catch: _.attrTag({\n      content: $catch_content($scope)\n    })\n  });\n  $await_promise($scope, resolveAfter(\"e\", 1));\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/html.expected/template.js",
    "content": "import { rejectAfter, resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"a\");\n  _._try($scope0_id, \"#text/0\", _._content_resume(\"__tests__/template.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    _._scope_reason();\n    _._html(\"b\");\n    _._await($scope1_id, \"#text/0\", rejectAfter(new Error(\"ERROR!\"), 2), data => {\n      const $scope3_id = _._scope_id();\n      _._html(_._escape(data));\n    }, 0);\n    _._html(\"c\");\n  }, $scope0_id), {\n    catch: _.attrTag({\n      content: _._content_resume(\"__tests__/template.marko_2_content\", error => {\n        const $scope2_reason = _._scope_reason();\n        const $scope2_id = _._scope_id();\n        _._html(`${_._escape(error.message)}${_._el_resume($scope2_id, \"#text/0\", _._serialize_guard($scope2_reason, /* error.message */0))}`);\n        _._serialize_if($scope2_reason, /* error.message */0) && _._scope($scope2_id, {}, \"__tests__/template.marko\", \"8:4\");\n      }, $scope0_id)\n    })\n  });\n  _._html(\"d\");\n  _._await($scope0_id, \"#text/1\", resolveAfter(\"e\", 1), data => {\n    const $scope4_id = _._scope_id();\n    _._html(_._escape(data));\n  }, 0);\n  _._html(\"f\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\nab\n```\n\n\n# Render FLUSH\n```html\naERROR!def\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    a\n    <!--M_[-->\n    <!--M_!^b-->\n    b\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#CatchContent\": _.c = {}\n      }], _.a[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.c), _.b)]\n    </script>\n  </body>\n</html>\n```\n\n\n# Render FLUSH\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    a\n    <!--M_[-->\n    ERROR!\n    <!--M_]1 #text/0 2-->\n    def\n    <script>\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT #comment\nINSERT html/body/#comment1\nINSERT html/body/#text3\nINSERT html/head/style\nINSERT html/head/style/#text\nINSERT t\nINSERT html/body/#text1\nREMOVE html/head/style after html/body/#text3\nINSERT html/head/style\nREMOVE t after html/body/#text3\nREMOVE script after #text\nREMOVE #text after #comment\nREMOVE #comment after html/body/#comment0\nREMOVE #comment after html/body/#comment0\nINSERT html/body/#text1\nINSERT html/body/#text2\nINSERT html/body/script\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render ASYNC\n```html\nab\n```\n\n\n# Render End\n```html\naERROR!def\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  a<!--M_[--><!--M_!^b-->b<script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,1,_.a={\"#BranchAccessor\":\"#text/0\",\"#CatchContent\":_.c={}}],_.a[\"#CatchContent\"]=_._[\"__tests__/template.marko_2_content\"](_.c),_.b)]</script>\n```\n\n# Write\n```html\n  <!--M_!b--><!--M_]1 #text/0 2-->def<style M_>t{display:none}</style><t M_=b>ERROR!</t><script>REORDER_RUNTIME(M._);M._.w()</script>\n```\n\n# Render ASYNC\n```html\n<html>\n  <head />\n  <body>\n    a\n    <!--M_[-->\n    <!--M_!^b-->\n    b\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#CatchContent\": _.c = {}\n      }], _.a[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.c), _.b)]\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text0\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/#text1\nINSERT html/body/script\n```\n\n# Render End\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    a\n    <!--M_[-->\n    ERROR!\n    <!--M_]1 #text/0 2-->\n    def\n    <script>\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT #comment\nINSERT html/body/#comment1\nINSERT html/body/#text2\nINSERT html/head/style\nINSERT html/head/style/#text\nINSERT t\nINSERT html/body/#text1\nREMOVE html/head/style after html/body/#text2\nINSERT html/head/style\nREMOVE t after html/body/#text2\nREMOVE script after #text\nREMOVE #text after #comment\nREMOVE #comment after html/body/#comment0\nREMOVE #comment after html/body/#comment0\nINSERT html/body/#text1\nINSERT html/body/script\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/template.marko",
    "content": "import { rejectAfter, resolveAfter } from \"../../utils/resolve\";\n\n-- a\n<try>\n  b<await|data|=rejectAfter(new Error(\"ERROR!\"), 2)>\n    ${data}\n  </await>c\n  <@catch|error|>\n    ${error.message}\n  </@catch>\n</try>\n-- d\n<await|data|=resolveAfter(\"e\", 1)>\n  ${data}\n</await>\n-- f"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { flush, wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{}, flush, wait],\n  skip_equivalent: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"a\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\nabdfh\n```\n\n\n# Render ASYNC\n```html\nabdfgh\n```\n\n\n# Render ASYNC\n```html\nabcdfgh\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\nabdfh\n```\n\n# Mutations\n```\nINSERT #text0, #text1, #text2, #text3, #text4, #text5, #text6\n```\n\n# Render ASYNC\n```html\nabdfgh\n```\n\n# Mutations\n```\nINSERT #text5\nREMOVE #text after #text5\nUPDATE #text5 \" \" => \"g\"\n```\n\n# Render ASYNC\n```html\nabcdfgh\n```\n\n# Mutations\n```\nINSERT #text2\nREMOVE #text after #text2\nUPDATE #text2 \" \" => \"c\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 55 (min) 59 (brotli)\n(_._enable_catch(), _._content_resume(\"a0\", \"ERROR!\", \"b\"));\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"a<!>f<!>h\";\nexport const $walks = /* over(1), replace, over(2), replace, over(2) */\"b%c%c\";\nimport { resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\n_._enable_catch();\nconst $await_content2__data = ($scope, data) => _._text($scope[\"#text/0\"], data);\nconst $await_content2__$params = ($scope, $params4) => $await_content2__data($scope, $params4[0]);\nconst $await_content__data = ($scope, data) => _._text($scope[\"#text/0\"], data);\nconst $await_content__$params = ($scope, $params3) => $await_content__data($scope, $params3[0]);\nconst $catch_content = _._content_resume(\"__tests__/template.marko_2_content\", \"ERROR!\", /* over(1) */\"b\");\nconst $await_content = /* @__PURE__ */_._await_content(\"#text/0\", \" \", /* get, over(1) */\" b\");\nconst $try_content__await_promise = /* @__PURE__ */_._await_promise(\"#text/0\", $await_content__$params);\nconst $try_content__setup = $scope => {\n  $await_content($scope);\n  $try_content__await_promise($scope, resolveAfter(\"c\", 2));\n};\nconst $try = /* @__PURE__ */_._try(\"#text/0\", \"b<!>d\", /* over(1), replace, over(2) */\"b%c\", $try_content__setup);\nconst $await_content2 = /* @__PURE__ */_._await_content(\"#text/1\", \" \", /* get, over(1) */\" b\");\nconst $await_promise = /* @__PURE__ */_._await_promise(\"#text/1\", $await_content2__$params);\nexport function $setup($scope) {\n  $await_content2($scope);\n  $try($scope, {\n    catch: _.attrTag({\n      content: $catch_content($scope)\n    })\n  });\n  $await_promise($scope, resolveAfter(\"g\", 1));\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/html.expected/template.js",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"a\");\n  _._try($scope0_id, \"#text/0\", _._content_resume(\"__tests__/template.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    _._scope_reason();\n    _._html(\"b\");\n    _._await($scope1_id, \"#text/0\", resolveAfter(\"c\", 2), data => {\n      const $scope3_id = _._scope_id();\n      _._html(_._escape(data));\n    }, 0);\n    _._html(\"d\");\n  }, $scope0_id), {\n    catch: _.attrTag({\n      content: _._content_resume(\"__tests__/template.marko_2_content\", error => {\n        _._scope_reason();\n        const $scope2_id = _._scope_id();\n        _._html(\"ERROR!\");\n      }, $scope0_id)\n    })\n  });\n  _._html(\"f\");\n  _._await($scope0_id, \"#text/1\", resolveAfter(\"g\", 1), data => {\n    const $scope4_id = _._scope_id();\n    _._html(_._escape(data));\n  }, 0);\n  _._html(\"h\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\nab\n```\n\n\n# Render FLUSH\n```html\nabcdfgh\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    a\n    <!--M_[-->\n    <!--M_!^b-->\n    b\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#CatchContent\": _.c = {}\n      }], _.a[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.c), _.b)]\n    </script>\n  </body>\n</html>\n```\n\n\n# Render FLUSH\n```html\n<html>\n  <head />\n  <body>\n    a\n    <!--M_[-->\n    <!--M_!^b-->\n    b\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#CatchContent\": _.c = {}\n      }], _.a[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.c), _.b)]\n    </script>\n    cd\n    <!--M_!b-->\n    <!--M_]1 #text/0 2-->\n    fgh\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text2\nINSERT html/body/#comment2\nINSERT html/body/#comment3\nINSERT html/body/#text3\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render ASYNC\n```html\nab\n```\n\n\n# Render End\n```html\nabcdfgh\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  a<!--M_[--><!--M_!^b-->b<script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,1,_.a={\"#BranchAccessor\":\"#text/0\",\"#CatchContent\":_.c={}}],_.a[\"#CatchContent\"]=_._[\"__tests__/template.marko_2_content\"](_.c),_.b)]</script>\n```\n\n# Write\n```html\n  cd<!--M_!b--><!--M_]1 #text/0 2-->fgh\n```\n\n# Render ASYNC\n```html\n<html>\n  <head />\n  <body>\n    a\n    <!--M_[-->\n    <!--M_!^b-->\n    b\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#CatchContent\": _.c = {}\n      }], _.a[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.c), _.b)]\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text0\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/#text1\nINSERT html/body/script\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    a\n    <!--M_[-->\n    <!--M_!^b-->\n    b\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#CatchContent\": _.c = {}\n      }], _.a[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.c), _.b)]\n    </script>\n    cd\n    <!--M_!b-->\n    <!--M_]1 #text/0 2-->\n    fgh\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text2\nINSERT html/body/#comment2\nINSERT html/body/#comment3\nINSERT html/body/#text3\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/template.marko",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\n\n-- a\n<try>\n  b<await|data|=resolveAfter(\"c\", 2)>\n    ${data}\n  </await>d\n  <@catch|error|>\n    ERROR!\n  </@catch>\n</try>\n-- f\n<await|data|=resolveAfter(\"g\", 1)>\n  ${data}\n</await>\n-- h"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { flush, wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{}, flush, wait],\n  skip_equivalent: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-success-sync/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"a\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-success-sync/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\nabc\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-success-sync/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\nabc\n```\n\n# Mutations\n```\nINSERT #text0, #text1, #text2\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-success-sync/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 55 (min) 59 (brotli)\n(_._enable_catch(), _._content_resume(\"a0\", \"ERROR!\", \"b\"));\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-success-sync/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"a<!>c\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\n_._enable_catch();\nconst $catch_content = _._content_resume(\"__tests__/template.marko_2_content\", \"ERROR!\", /* over(1) */\"b\");\nconst $try = /* @__PURE__ */_._try(\"#text/0\", \"b\", /* over(1) */\"b\");\nexport function $setup($scope) {\n  $try($scope, {\n    catch: _.attrTag({\n      content: $catch_content($scope)\n    })\n  });\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-success-sync/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"a\");\n  _._try($scope0_id, \"#text/0\", _._content_resume(\"__tests__/template.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    _._scope_reason();\n    _._html(\"b\");\n  }, $scope0_id), {\n    catch: _.attrTag({\n      content: _._content_resume(\"__tests__/template.marko_2_content\", error => {\n        _._scope_reason();\n        const $scope2_id = _._scope_id();\n        _._html(\"ERROR!\");\n      }, $scope0_id)\n    })\n  });\n  _._html(\"c\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-success-sync/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\nabc\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-success-sync/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    a\n    <!--M_[-->\n    b\n    <!--M_]1 #text/0 2-->\n    c\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#CatchContent\": _.c = {}\n      }], _.a[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.c), _.b)]\n    </script>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-success-sync/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\nabc\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-success-sync/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  a<!--M_[-->b<!--M_]1 #text/0 2-->c<script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,1,_.a={\"#BranchAccessor\":\"#text/0\",\"#CatchContent\":_.c={}}],_.a[\"#CatchContent\"]=_._[\"__tests__/template.marko_2_content\"](_.c),_.b)]</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    a\n    <!--M_[-->\n    b\n    <!--M_]1 #text/0 2-->\n    c\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#CatchContent\": _.c = {}\n      }], _.a[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.c), _.b)]\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text0\nINSERT html/body/#comment0\nINSERT html/body/#text1\nINSERT html/body/#comment1\nINSERT html/body/#text2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-success-sync/template.marko",
    "content": "-- a\n<try>\n  b\n  <@catch|error|>\n    ERROR!\n  </@catch>\n</try>\n-- c"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-throw-sync/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"e\",\n      \"$$catch_content__error\": \"t\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-throw-sync/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\naERROR!d\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-throw-sync/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\naERROR!d\n```\n\n# Mutations\n```\nINSERT #text0, #text1, #text2\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-throw-sync/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 123 (min) 88 (brotli)\n_._enable_catch();\nconst $catch_content__error = ($scope, error) =>\n  (($scope, error_message) => _._text($scope.a, error_message))(\n    $scope,\n    error?.message,\n  );\n_._content_resume(\"a0\", \" \", \" b\", 0, ($scope, $params2) =>\n  $catch_content__error($scope, $params2[0]),\n);\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-throw-sync/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"a<!>d\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\n_._enable_catch();\nconst $catch_content__error_message = ($scope, error_message) => _._text($scope[\"#text/0\"], error_message);\nconst $catch_content__$params = ($scope, $params2) => $catch_content__error($scope, $params2[0]);\nconst $catch_content__error = ($scope, error) => $catch_content__error_message($scope, error?.message);\nconst $catch_content = _._content_resume(\"__tests__/template.marko_2_content\", \" \", /* get, over(1) */\" b\", 0, $catch_content__$params);\nconst $try_content__setup = $scope => _._text($scope[\"#text/0\"], (() => {\n  throw new Error(\"ERROR!\");\n})());\nconst $try = /* @__PURE__ */_._try(\"#text/0\", \"b<!>\", /* over(1), replace, over(1) */\"b%b\", $try_content__setup);\nexport function $setup($scope) {\n  $try($scope, {\n    catch: _.attrTag({\n      content: $catch_content($scope)\n    })\n  });\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-throw-sync/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"a\");\n  _._try($scope0_id, \"#text/0\", _._content_resume(\"__tests__/template.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    _._scope_reason();\n    _._html(`b${_._escape((() => {\n      throw new Error(\"ERROR!\");\n    })())}`);\n  }, $scope0_id), {\n    catch: _.attrTag({\n      content: _._content_resume(\"__tests__/template.marko_2_content\", error => {\n        const $scope2_reason = _._scope_reason();\n        const $scope2_id = _._scope_id();\n        _._html(`${_._escape(error.message)}${_._el_resume($scope2_id, \"#text/0\", _._serialize_guard($scope2_reason, /* error.message */0))}`);\n        _._serialize_if($scope2_reason, /* error.message */0) && _._scope($scope2_id, {}, \"__tests__/template.marko\", \"4:4\");\n      }, $scope0_id)\n    })\n  });\n  _._html(\"d\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-throw-sync/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\naERROR!d\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-throw-sync/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    a\n    <!--M_[-->\n    ERROR!\n    <!--M_]1 #text/0 2-->\n    d\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#CatchContent\": _.c = {}\n      }], _.a[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.c), _.b)]\n    </script>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-throw-sync/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\naERROR!d\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-throw-sync/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  a<!--M_[-->ERROR!<!--M_]1 #text/0 2-->d<script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,1,_.a={\"#BranchAccessor\":\"#text/0\",\"#CatchContent\":_.c={}}],_.a[\"#CatchContent\"]=_._[\"__tests__/template.marko_2_content\"](_.c),_.b)]</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    a\n    <!--M_[-->\n    ERROR!\n    <!--M_]1 #text/0 2-->\n    d\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#CatchContent\": _.c = {}\n      }], _.a[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.c), _.b)]\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text0\nINSERT html/body/#comment0\nINSERT html/body/#text1\nINSERT html/body/#comment1\nINSERT html/body/#text2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/catch-single-throw-sync/template.marko",
    "content": "-- a\n<try>\n  b${(() => { throw new Error(\"ERROR!\") })()}\n  <@catch|error|>\n    ${error.message}\n  </@catch>\n</try>\n-- d"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cdata/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/cdata/template.marko:1:31\n    > 1 | <div>Here is a CDATA section: <![CDATA[ < > & ]]> with all kinds of unescaped text.</div>\n        |                               ^^^^^^^^^^^^^^^^^^^ CDATA sections are not supported in Marko.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cdata/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/cdata/template.marko:1:31\n    > 1 | <div>Here is a CDATA section: <![CDATA[ < > & ]]> with all kinds of unescaped text.</div>\n        |                               ^^^^^^^^^^^^^^^^^^^ CDATA sections are not supported in Marko.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cdata/template.marko",
    "content": "<div>Here is a CDATA section: <![CDATA[ < > & ]]> with all kinds of unescaped text.</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cdata/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/change-handler-alias-assignment/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/change-handler-alias-assignment/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Before\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  After\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/change-handler-alias-assignment/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  Before\n</button>\n```\n\n# Mutations\n```\nINSERT button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  After\n</button>\n```\n\n# Mutations\n```\nREMOVE #text in button\nINSERT button/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/change-handler-alias-assignment/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 134 (min) 95 (brotli)\n(_._script(\"a1\", ($scope) =>\n  _._on($scope.a, \"click\", function () {\n    $scope.c(\"After\");\n  }),\n),\n  _._resume(\"a0\", function ($scope) {\n    return function (v) {\n      $scope.a.textContent = v;\n    };\n  }),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/change-handler-alias-assignment/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button>Before</button>\";\nexport const $walks = /* get, over(1) */\" b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $pattern2 = ($scope, $pattern) => $fooChange2($scope, $pattern.fooChange);\nconst $fooChange2__script = _._script(\"__tests__/template.marko_0_$fooChange\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $scope.$fooChange(\"After\");\n}));\nconst $fooChange2 = /* @__PURE__ */_._const(\"$fooChange\", $fooChange2__script);\nexport function $setup($scope) {\n  $pattern2($scope, {\n    foo: 1,\n    fooChange: $fooBar($scope)\n  });\n}\nfunction $fooBar($scope) {\n  return function (v) {\n    _._el_read($scope[\"#button/0\"]).textContent = v;\n  };\n}\n_._resume(\"__tests__/template.marko_0/fooBar\", $fooBar);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/change-handler-alias-assignment/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    fooChange: $fooChange,\n    foo: bar\n  } = {\n    foo: 1,\n    fooChange: _._resume(function (v) {\n      ($btn => $btn())(_._el_read_error).textContent = v;\n    }, \"__tests__/template.marko_0/fooBar\", $scope0_id)\n  };\n  _._html(`<button>Before</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_$fooChange\");\n  _._scope($scope0_id, {\n    $fooChange\n  }, \"__tests__/template.marko\", 0, {\n    $fooChange: \"9:3\"\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/change-handler-alias-assignment/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Before\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  After\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/change-handler-alias-assignment/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Before\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {}], _.a.$fooChange = _._[\n          \"__tests__/template.marko_0/fooBar\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_$fooChange 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      After\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {}], _.a.$fooChange = _._[\n          \"__tests__/template.marko_0/fooBar\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_$fooChange 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #text in html/body/button\nINSERT html/body/button/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/change-handler-alias-assignment/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  Before\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/change-handler-alias-assignment/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>Before</button><!--M_*1 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={}],_.a.$fooChange=_._[\"__tests__/template.marko_0/fooBar\"](_.a),_.b),\"__tests__/template.marko_0_$fooChange 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Before\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {}], _.a.$fooChange = _._[\n          \"__tests__/template.marko_0/fooBar\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_$fooChange 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/change-handler-alias-assignment/template.marko",
    "content": "<const/{ foo: bar }={\n  foo: 1,\n  fooChange(v) {\n    $btn().textContent = v;\n  }\n}>\n\n<button/$btn onClick() {\n  bar = \"After\";\n}>\n  Before\n</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/change-handler-alias-assignment/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"r\",\n      \"$init\": \"t\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #text, #comment1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"\";\nexport const $walks = \"\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $input_valueChange__script = _._script(\"__tests__/tags/child.marko_0_input_valueChange\", $scope => $scope.input_valueChange(1));\nexport const $input_valueChange = /* @__PURE__ */_._const(\"input_valueChange\", $input_valueChange__script);\nexport const $input = ($scope, input) => $input_valueChange($scope, input.valueChange);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 135 (min) 82 (brotli)\n(_._script(\"a0\", ($scope) => $scope.c(1)),\n  _._resume(\"b1\", function ($scope) {\n    return function () {\n      $scope._.b();\n    };\n  }),\n  _._resume(\"b0\", function ($scope) {\n    return function () {};\n  }),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nimport { $setup as _child, $input_valueChange as _child_input_valueChange, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content__setter = /* @__PURE__ */_._if_closure(\"#text/0\", 0, $scope => _child_input_valueChange($scope[\"#childScope/0\"], $valueChange($scope)));\nconst $if_content__setup = $scope => {\n  $if_content__setter._($scope);\n  _child($scope[\"#childScope/0\"]);\n};\nconst $setter2 = /* @__PURE__ */_._const(\"setter\");\nconst $if = /* @__PURE__ */_._if(\"#text/0\", _child_template, /* <child> */`/${_child_walks}&`, $if_content__setup);\nexport function $setup($scope) {\n  /* value */0;\n  $setter2($scope, $setter($scope));\n  $if($scope, true ? 0 : 1);\n}\nfunction $valueChange($scope) {\n  return function () {\n    $scope._.setter();\n  };\n}\nfunction $setter($scope) {\n  return function () {\n    /* value */1;\n  };\n}\n_._resume(\"__tests__/template.marko_1/valueChange\", $valueChange);\n_._resume(\"__tests__/template.marko_0/setter\", $setter);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._script($scope0_id, \"__tests__/tags/child.marko_0_input_valueChange\");\n  _._scope($scope0_id, {\n    input_valueChange: input.valueChange\n  }, \"__tests__/tags/child.marko\", 0, {\n    input_valueChange: [\"input.valueChange\"]\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/html.expected/template.js",
    "content": "import _child from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let value = 0;\n  const setter = _._resume(function () {\n    value = 1;\n  }, \"__tests__/template.marko_0/setter\", $scope0_id);\n  if (true) {\n    const $scope1_id = _._scope_id();\n    _child({\n      valueChange: _._resume(function () {\n        setter();\n      }, \"__tests__/template.marko_1/valueChange\", $scope1_id)\n    });\n    _._scope($scope1_id, {\n      _: _._scope_with_id($scope0_id)\n    }, \"__tests__/template.marko\", \"3:2\");\n  }\n  _._scope($scope0_id, {\n    setter\n  }, \"__tests__/template.marko\", 0, {\n    setter: \"2:8\"\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {}, _.d = {\n          _: _.a\n        }, _.b = {}], _.a.setter = _._[\n          \"__tests__/template.marko_0/setter\"\n          ](_.a), _.b.input_valueChange = _._[\n          \"__tests__/template.marko_1/valueChange\"\n          ](_.d), _.c),\n        \"__tests__/tags/child.marko_0_input_valueChange 3\"\n      ];\n      M._.w()\n    </script>\n  </head>\n  <body />\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.a={},_.d={_:_.a},_.b={}],_.a.setter=_._[\"__tests__/template.marko_0/setter\"](_.a),_.b.input_valueChange=_._[\"__tests__/template.marko_1/valueChange\"](_.d),_.c),\"__tests__/tags/child.marko_0_input_valueChange 3\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {}, _.d = {\n          _: _.a\n        }, _.b = {}], _.a.setter = _._[\n          \"__tests__/template.marko_0/setter\"\n          ](_.a), _.b.input_valueChange = _._[\n          \"__tests__/template.marko_1/valueChange\"\n          ](_.d), _.c),\n        \"__tests__/tags/child.marko_0_input_valueChange 3\"\n      ];\n      M._.w()\n    </script>\n  </head>\n  <body />\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/head/script\nINSERT html/head/script/#text\nINSERT html/body\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/tags/child.marko",
    "content": "<script>input.valueChange(1)</script>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/template.marko",
    "content": "<let/value=0>\n<const/setter() { value = 1 }>\n<if=true>\n  <child valueChange() { setter() } />\n</>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{}, wait],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-for-shallow/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$name__OR__write__script\": \"n\",\n      \"$$name__OR__write\": \"r\",\n      \"$$name\": \"e\",\n      \"$$write$1\": \"s\",\n      \"$$for_content__write\": \"_\",\n      \"$$for_content__setup\": \"a\",\n      \"$$for_content__$params\": \"i\",\n      \"$$for\": \"c\",\n      \"$$items__script\": \"f\",\n      \"$$items\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-for-shallow/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Toggle\n</button>\n<div>\n  \nmounted 1\nmounted 2\nmounted 3\n</div>\n<div>\n  1\n</div>\n<span>\n  1\n</span>\n<p>\n  1\n</p>\n<div>\n  2\n</div>\n<span>\n  2\n</span>\n<p>\n  2\n</p>\n<div>\n  3\n</div>\n<span>\n  3\n</span>\n<p>\n  3\n</p>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  \nmounted 1\nmounted 2\nmounted 3\ndestroyed 3\n</div>\n<div>\n  1\n</div>\n<span>\n  1\n</span>\n<p>\n  1\n</p>\n<div>\n  2\n</div>\n<span>\n  2\n</span>\n<p>\n  2\n</p>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  \nmounted 1\nmounted 2\nmounted 3\ndestroyed 3\ndestroyed 2\n</div>\n<div>\n  1\n</div>\n<span>\n  1\n</span>\n<p>\n  1\n</p>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  \nmounted 1\nmounted 2\nmounted 3\ndestroyed 3\ndestroyed 2\ndestroyed 1\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  \nmounted 1\nmounted 2\nmounted 3\ndestroyed 3\ndestroyed 2\ndestroyed 1\nmounted 1\nmounted 2\nmounted 3\n</div>\n<div>\n  1\n</div>\n<span>\n  1\n</span>\n<p>\n  1\n</p>\n<div>\n  2\n</div>\n<span>\n  2\n</span>\n<p>\n  2\n</p>\n<div>\n  3\n</div>\n<span>\n  3\n</span>\n<p>\n  3\n</p>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-for-shallow/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  Toggle\n</button>\n<div>\n  \nmounted 1\nmounted 2\nmounted 3\n</div>\n<div>\n  1\n</div>\n<span>\n  1\n</span>\n<p>\n  1\n</p>\n<div>\n  2\n</div>\n<span>\n  2\n</span>\n<p>\n  2\n</p>\n<div>\n  3\n</div>\n<span>\n  3\n</span>\n<p>\n  3\n</p>\n<!---->\n```\n\n# Mutations\n```\nINSERT button, div0, div1, span0, p0, div2, span1, p1, div3, span2, p2, #comment\nINSERT #text\nREMOVE #text in div0\nINSERT #text\nREMOVE #text in div0\nINSERT div0/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  \nmounted 1\nmounted 2\nmounted 3\ndestroyed 3\n</div>\n<div>\n  1\n</div>\n<span>\n  1\n</span>\n<p>\n  1\n</p>\n<div>\n  2\n</div>\n<span>\n  2\n</span>\n<p>\n  2\n</p>\n<!---->\n```\n\n# Mutations\n```\nREMOVE div after p1\nREMOVE span after p1\nREMOVE p after p1\nREMOVE #text in div0\nINSERT div0/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  \nmounted 1\nmounted 2\nmounted 3\ndestroyed 3\ndestroyed 2\n</div>\n<div>\n  1\n</div>\n<span>\n  1\n</span>\n<p>\n  1\n</p>\n<!---->\n```\n\n# Mutations\n```\nREMOVE div after p\nREMOVE span after p\nREMOVE p after p\nREMOVE #text in div0\nINSERT div0/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  \nmounted 1\nmounted 2\nmounted 3\ndestroyed 3\ndestroyed 2\ndestroyed 1\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE div after div\nREMOVE span after div\nREMOVE p after div\nREMOVE #text in div\nINSERT div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  \nmounted 1\nmounted 2\nmounted 3\ndestroyed 3\ndestroyed 2\ndestroyed 1\nmounted 1\nmounted 2\nmounted 3\n</div>\n<div>\n  1\n</div>\n<span>\n  1\n</span>\n<p>\n  1\n</p>\n<div>\n  2\n</div>\n<span>\n  2\n</span>\n<p>\n  2\n</p>\n<div>\n  3\n</div>\n<span>\n  3\n</span>\n<p>\n  3\n</p>\n<!---->\n```\n\n# Mutations\n```\nREMOVE #text after div0\nINSERT div1, span0, p0\nINSERT div2, span1, p1\nINSERT div3, span2, p2\nREMOVE #text in div0\nINSERT #text\nREMOVE #text in div0\nINSERT #text\nREMOVE #text in div0\nINSERT div0/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-for-shallow/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<div> </div><span> </span><p> </p>\";\nexport const $walks = /* next(1), get, out(1), next(1), get, out(1), next(1), get, out(1) */\"D lD lD l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $name__OR__write__script = _._script(\"__tests__/tags/child.marko_0_name_write\", $scope => {\n  $scope.write(`mounted ${$scope.name}`);\n  _.$signal($scope, 0).onabort = () => {\n    $scope.write(`destroyed ${$scope.name}`);\n  };\n});\nconst $name__OR__write = /* @__PURE__ */_._or(7, $scope => {\n  _.$signalReset($scope, 0);\n  $name__OR__write__script($scope);\n});\nexport const $name = /* @__PURE__ */_._const(\"name\", $scope => {\n  _._text($scope[\"#text/0\"], $scope.name);\n  _._text($scope[\"#text/1\"], $scope.name);\n  _._text($scope[\"#text/2\"], $scope.name);\n  $name__OR__write($scope);\n});\nexport const $write = /* @__PURE__ */_._const(\"write\", $name__OR__write);\nexport const $input = ($scope, input) => {\n  $name($scope, input.name);\n  $write($scope, input.write);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-for-shallow/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 596 (min) 330 (brotli)\nconst $name__OR__write__script = _._script(\"a0\", ($scope) => {\n    ($scope.g(`mounted ${$scope.f}`),\n      (_.$signal($scope, 0).onabort = () => {\n        $scope.g(`destroyed ${$scope.f}`);\n      }));\n  }),\n  $name__OR__write = _._or(7, ($scope) => {\n    (_.$signalReset($scope, 0), $name__OR__write__script($scope));\n  }),\n  $name = _._const(5, ($scope) => {\n    (_._text($scope.a, $scope.f),\n      _._text($scope.b, $scope.f),\n      _._text($scope.c, $scope.f),\n      $name__OR__write($scope));\n  }),\n  $write$1 = _._const(6, $name__OR__write),\n  $for_content__write = _._for_closure(2, ($scope) =>\n    $write$1($scope.a, $scope._.e),\n  ),\n  $for_content__setup = ($scope) => {\n    ($for_content__write._($scope), $scope.a);\n  },\n  $for_content__$params = ($scope, $params2) =>\n    (($scope, item) => $name($scope.a, item))($scope, $params2[0]),\n  $for = _._for_of(\n    2,\n    \"<div> </div><span> </span><p> </p>\",\n    \"/D lD lD l&\",\n    $for_content__setup,\n    $for_content__$params,\n  ),\n  $items__script = _._script(\"b1\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $items($scope, $scope.d?.length ? $scope.d.slice(0, -1) : [1, 2, 3]);\n    }),\n  ),\n  $items = _._let(3, ($scope) => {\n    ($for($scope, [$scope.d]), $items__script($scope));\n  });\n(_._resume(\"b0\", function ($scope) {\n  return function (msg) {\n    $scope.b.innerHTML += \"\\n\" + msg;\n  };\n}),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-for-shallow/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button>Toggle</button><div></div><!><!>\";\nexport const $walks = /* get, over(1), get, over(1), replace, over(2) */\" b b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _child, $write as _child_input_write, $name as _child_input_name, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nconst $for_content__write = /* @__PURE__ */_._for_closure(\"#text/2\", $scope => _child_input_write($scope[\"#childScope/0\"], $scope._.write));\nconst $for_content__setup = $scope => {\n  $for_content__write._($scope);\n  _child($scope[\"#childScope/0\"]);\n};\nconst $for_content__item = ($scope, item) => _child_input_name($scope[\"#childScope/0\"], item);\nconst $for_content__$params = ($scope, $params2) => $for_content__item($scope, $params2[0]);\nconst $for = /* @__PURE__ */_._for_of(\"#text/2\", _child_template, /* <child> */`/${_child_walks}&`, $for_content__setup, $for_content__$params);\nconst $items__script = _._script(\"__tests__/template.marko_0_items\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $items($scope, $scope.items?.length ? $scope.items.slice(0, -1) : [1, 2, 3]);\n}));\nconst $items = /* @__PURE__ */_._let(\"items/3\", $scope => {\n  $for($scope, [$scope.items]);\n  $items__script($scope);\n});\nconst $write2 = /* @__PURE__ */_._const(\"write\");\nexport function $setup($scope) {\n  $items($scope, [1, 2, 3]);\n  $write2($scope, $write($scope));\n}\nfunction $write($scope) {\n  return function (msg) {\n    _._el_read($scope[\"#div/1\"]).innerHTML += '\\n' + msg;\n  };\n}\n_._resume(\"__tests__/template.marko_0/write\", $write);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-for-shallow/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    name,\n    write\n  } = input;\n  _._html(`<div>${_._escape(name)}${_._el_resume($scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.name */0))}</div><span>${_._escape(name)}${_._el_resume($scope0_id, \"#text/1\", _._serialize_guard($scope0_reason, /* input.name */0))}</span><p>${_._escape(name)}${_._el_resume($scope0_id, \"#text/2\", _._serialize_guard($scope0_reason, /* input.name */0))}</p>`);\n  _._script($scope0_id, \"__tests__/tags/child.marko_0_name_write\");\n  _._scope($scope0_id, {\n    name,\n    write\n  }, \"__tests__/tags/child.marko\", 0, {\n    name: \"1:9\",\n    write: \"1:15\"\n  });\n  _._resume_branch($scope0_id);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-for-shallow/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _child from \"./tags/child.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let items = [1, 2, 3];\n  const write = _._resume(function (msg) {\n    (el => el())(_._el_read_error).innerHTML += '\\n' + msg;\n  }, \"__tests__/template.marko_0/write\", $scope0_id);\n  _._html(`<button>Toggle</button>${_._el_resume($scope0_id, \"#button/0\")}<div></div>${_._el_resume($scope0_id, \"#div/1\")}`);\n  _._for_of(items, item => {\n    const $scope1_id = _._scope_id();\n    const $childScope = _._peek_scope_id();\n    _._set_serialize_reason(/* items */1);\n    _child({\n      write: write,\n      name: item\n    });\n    _._scope($scope1_id, {\n      \"#childScope/0\": _._existing_scope($childScope)\n    }, \"__tests__/template.marko\", \"7:2\");\n  }, 0, $scope0_id, \"#text/2\");\n  _._script($scope0_id, \"__tests__/template.marko_0_items\");\n  _._scope($scope0_id, {\n    items,\n    write\n  }, \"__tests__/template.marko\", 0, {\n    items: \"1:6\",\n    write: \"5:8\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-for-shallow/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Toggle\n</button>\n<div>\n  \nmounted 1\nmounted 2\nmounted 3\n</div>\n<div>\n  1\n</div>\n<span>\n  1\n</span>\n<p>\n  1\n</p>\n<div>\n  2\n</div>\n<span>\n  2\n</span>\n<p>\n  2\n</p>\n<div>\n  3\n</div>\n<span>\n  3\n</span>\n<p>\n  3\n</p>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  \nmounted 1\nmounted 2\nmounted 3\ndestroyed 3\n</div>\n<div>\n  1\n</div>\n<span>\n  1\n</span>\n<p>\n  1\n</p>\n<div>\n  2\n</div>\n<span>\n  2\n</span>\n<p>\n  2\n</p>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  \nmounted 1\nmounted 2\nmounted 3\ndestroyed 3\ndestroyed 2\n</div>\n<div>\n  1\n</div>\n<span>\n  1\n</span>\n<p>\n  1\n</p>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  \nmounted 1\nmounted 2\nmounted 3\ndestroyed 3\ndestroyed 2\ndestroyed 1\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  \nmounted 1\nmounted 2\nmounted 3\ndestroyed 3\ndestroyed 2\ndestroyed 1\nmounted 1\nmounted 2\nmounted 3\n</div>\n<div>\n  1\n</div>\n<span>\n  1\n</span>\n<p>\n  1\n</p>\n<div>\n  2\n</div>\n<span>\n  2\n</span>\n<p>\n  2\n</p>\n<div>\n  3\n</div>\n<span>\n  3\n</span>\n<p>\n  3\n</p>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-for-shallow/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      \nmounted 1\nmounted 2\nmounted 3\n    </div>\n    <!--M_*1 #div/1-->\n    <!--M_[-->\n    <div>\n      1\n      <!--M_*3 #text/0-->\n    </div>\n    <span>\n      1\n      <!--M_*3 #text/1-->\n    </span>\n    <p>\n      1\n      <!--M_*3 #text/2-->\n    </p>\n    <!--M_[2-->\n    <div>\n      2\n      <!--M_*5 #text/0-->\n    </div>\n    <span>\n      2\n      <!--M_*5 #text/1-->\n    </span>\n    <p>\n      2\n      <!--M_*5 #text/2-->\n    </p>\n    <!--M_[4-->\n    <div>\n      3\n      <!--M_*7 #text/0-->\n    </div>\n    <span>\n      3\n      <!--M_*7 #text/1-->\n    </span>\n    <p>\n      3\n      <!--M_*7 #text/2-->\n    </p>\n    <!--M_]1 #text/2 6-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.a = {\n          items: [1, 2, 3]\n        },\n        {\n          \"#childScope/0\": _.b = {\n            name: 1,\n            \"#ClosestBranchId\": 2\n          }\n        }, _.b,\n        {\n          \"#childScope/0\": _.c = {\n            name: 2,\n            \"#ClosestBranchId\": 4\n          }\n        }, _.c,\n        {\n          \"#childScope/0\": _.d = {\n            name: 3,\n            \"#ClosestBranchId\": 6\n          }\n        }, _.d], _.a.write = _.b.write = _.c.write = _.d.write = _._[\n          \"__tests__/template.marko_0/write\"\n          ](_.a), _.e),\n        \"__tests__/tags/child.marko_0_name_write 3 5 7 __tests__/template.marko_0_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text0\nINSERT html/body/#text1\nINSERT html/body/#text2\nINSERT #text\nREMOVE #text in html/body/div0\nINSERT #text\nREMOVE #text in html/body/div0\nINSERT html/body/div0/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      \nmounted 1\nmounted 2\nmounted 3\ndestroyed 3\n    </div>\n    <!--M_*1 #div/1-->\n    <!--M_[-->\n    <div>\n      1\n      <!--M_*3 #text/0-->\n    </div>\n    <span>\n      1\n      <!--M_*3 #text/1-->\n    </span>\n    <p>\n      1\n      <!--M_*3 #text/2-->\n    </p>\n    <!--M_[2-->\n    <div>\n      2\n      <!--M_*5 #text/0-->\n    </div>\n    <span>\n      2\n      <!--M_*5 #text/1-->\n    </span>\n    <p>\n      2\n      <!--M_*5 #text/2-->\n    </p>\n    <!--M_]1 #text/2 6-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.a = {\n          items: [1, 2, 3]\n        },\n        {\n          \"#childScope/0\": _.b = {\n            name: 1,\n            \"#ClosestBranchId\": 2\n          }\n        }, _.b,\n        {\n          \"#childScope/0\": _.c = {\n            name: 2,\n            \"#ClosestBranchId\": 4\n          }\n        }, _.c,\n        {\n          \"#childScope/0\": _.d = {\n            name: 3,\n            \"#ClosestBranchId\": 6\n          }\n        }, _.d], _.a.write = _.b.write = _.c.write = _.d.write = _._[\n          \"__tests__/template.marko_0/write\"\n          ](_.a), _.e),\n        \"__tests__/tags/child.marko_0_name_write 3 5 7 __tests__/template.marko_0_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #comment after html/body/#text1\nREMOVE div after html/body/#text1\nREMOVE span after html/body/#text1\nREMOVE p after html/body/#text1\nREMOVE #text after html/body/#text1\nREMOVE #text in html/body/div0\nINSERT html/body/div0/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      \nmounted 1\nmounted 2\nmounted 3\ndestroyed 3\ndestroyed 2\n    </div>\n    <!--M_*1 #div/1-->\n    <!--M_[-->\n    <div>\n      1\n      <!--M_*3 #text/0-->\n    </div>\n    <span>\n      1\n      <!--M_*3 #text/1-->\n    </span>\n    <p>\n      1\n      <!--M_*3 #text/2-->\n    </p>\n    <!--M_]1 #text/2 6-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.a = {\n          items: [1, 2, 3]\n        },\n        {\n          \"#childScope/0\": _.b = {\n            name: 1,\n            \"#ClosestBranchId\": 2\n          }\n        }, _.b,\n        {\n          \"#childScope/0\": _.c = {\n            name: 2,\n            \"#ClosestBranchId\": 4\n          }\n        }, _.c,\n        {\n          \"#childScope/0\": _.d = {\n            name: 3,\n            \"#ClosestBranchId\": 6\n          }\n        }, _.d], _.a.write = _.b.write = _.c.write = _.d.write = _._[\n          \"__tests__/template.marko_0/write\"\n          ](_.a), _.e),\n        \"__tests__/tags/child.marko_0_name_write 3 5 7 __tests__/template.marko_0_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #comment after html/body/#text\nREMOVE div after html/body/#text\nREMOVE span after html/body/#text\nREMOVE p after html/body/#text\nREMOVE #text after html/body/#text\nREMOVE #text in html/body/div0\nINSERT html/body/div0/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      \nmounted 1\nmounted 2\nmounted 3\ndestroyed 3\ndestroyed 2\ndestroyed 1\n    </div>\n    <!--M_*1 #div/1-->\n    <!--M_]1 #text/2 6-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.a = {\n          items: [1, 2, 3]\n        },\n        {\n          \"#childScope/0\": _.b = {\n            name: 1,\n            \"#ClosestBranchId\": 2\n          }\n        }, _.b,\n        {\n          \"#childScope/0\": _.c = {\n            name: 2,\n            \"#ClosestBranchId\": 4\n          }\n        }, _.c,\n        {\n          \"#childScope/0\": _.d = {\n            name: 3,\n            \"#ClosestBranchId\": 6\n          }\n        }, _.d], _.a.write = _.b.write = _.c.write = _.d.write = _._[\n          \"__tests__/template.marko_0/write\"\n          ](_.a), _.e),\n        \"__tests__/tags/child.marko_0_name_write 3 5 7 __tests__/template.marko_0_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/#comment2 after #text\nINSERT html/body/#comment2\nREMOVE #comment after html/body/#comment1\nREMOVE div after html/body/#comment1\nREMOVE span after html/body/#comment1\nREMOVE p after html/body/#comment1\nREMOVE #text after html/body/#comment1\nREMOVE #text in html/body/div\nINSERT html/body/div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      \nmounted 1\nmounted 2\nmounted 3\ndestroyed 3\ndestroyed 2\ndestroyed 1\nmounted 1\nmounted 2\nmounted 3\n    </div>\n    <!--M_*1 #div/1-->\n    <div>\n      1\n    </div>\n    <span>\n      1\n    </span>\n    <p>\n      1\n    </p>\n    <div>\n      2\n    </div>\n    <span>\n      2\n    </span>\n    <p>\n      2\n    </p>\n    <div>\n      3\n    </div>\n    <span>\n      3\n    </span>\n    <p>\n      3\n    </p>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.a = {\n          items: [1, 2, 3]\n        },\n        {\n          \"#childScope/0\": _.b = {\n            name: 1,\n            \"#ClosestBranchId\": 2\n          }\n        }, _.b,\n        {\n          \"#childScope/0\": _.c = {\n            name: 2,\n            \"#ClosestBranchId\": 4\n          }\n        }, _.c,\n        {\n          \"#childScope/0\": _.d = {\n            name: 3,\n            \"#ClosestBranchId\": 6\n          }\n        }, _.d], _.a.write = _.b.write = _.c.write = _.d.write = _._[\n          \"__tests__/template.marko_0/write\"\n          ](_.a), _.e),\n        \"__tests__/tags/child.marko_0_name_write 3 5 7 __tests__/template.marko_0_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #comment after html/body/#comment1\nINSERT html/body/div1, html/body/span0, html/body/p0\nINSERT html/body/div2, html/body/span1, html/body/p1\nINSERT html/body/div3, html/body/span2, html/body/p2\nREMOVE #text in html/body/div0\nINSERT #text\nREMOVE #text in html/body/div0\nINSERT #text\nREMOVE #text in html/body/div0\nINSERT html/body/div0/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-for-shallow/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  Toggle\n</button>\n<div />\n<div>\n  1\n</div>\n<span>\n  1\n</span>\n<p>\n  1\n</p>\n<div>\n  2\n</div>\n<span>\n  2\n</span>\n<p>\n  2\n</p>\n<div>\n  3\n</div>\n<span>\n  3\n</span>\n<p>\n  3\n</p>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-for-shallow/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>Toggle</button><!--M_*1 #button/0--><div></div><!--M_*1 #div/1--><!--M_[--><div>1<!--M_*3 #text/0--></div><span>1<!--M_*3 #text/1--></span><p>1<!--M_*3 #text/2--></p><!--M_[2--><div>2<!--M_*5 #text/0--></div><span>2<!--M_*5 #text/1--></span><p>2<!--M_*5 #text/2--></p><!--M_[4--><div>3<!--M_*7 #text/0--></div><span>3<!--M_*7 #text/1--></span><p>3<!--M_*7 #text/2--></p><!--M_]1 #text/2 6--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.e=[0,_.a={items:[1,2,3]},{\"#childScope/0\":_.b={name:1,\"#ClosestBranchId\":2}},_.b,{\"#childScope/0\":_.c={name:2,\"#ClosestBranchId\":4}},_.c,{\"#childScope/0\":_.d={name:3,\"#ClosestBranchId\":6}},_.d],_.a.write=_.b.write=_.c.write=_.d.write=_._[\"__tests__/template.marko_0/write\"](_.a),_.e),\"__tests__/tags/child.marko_0_name_write 3 5 7 __tests__/template.marko_0_items 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/0-->\n    <div />\n    <!--M_*1 #div/1-->\n    <!--M_[-->\n    <div>\n      1\n      <!--M_*3 #text/0-->\n    </div>\n    <span>\n      1\n      <!--M_*3 #text/1-->\n    </span>\n    <p>\n      1\n      <!--M_*3 #text/2-->\n    </p>\n    <!--M_[2-->\n    <div>\n      2\n      <!--M_*5 #text/0-->\n    </div>\n    <span>\n      2\n      <!--M_*5 #text/1-->\n    </span>\n    <p>\n      2\n      <!--M_*5 #text/2-->\n    </p>\n    <!--M_[4-->\n    <div>\n      3\n      <!--M_*7 #text/0-->\n    </div>\n    <span>\n      3\n      <!--M_*7 #text/1-->\n    </span>\n    <p>\n      3\n      <!--M_*7 #text/2-->\n    </p>\n    <!--M_]1 #text/2 6-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.a = {\n          items: [1, 2, 3]\n        },\n        {\n          \"#childScope/0\": _.b = {\n            name: 1,\n            \"#ClosestBranchId\": 2\n          }\n        }, _.b,\n        {\n          \"#childScope/0\": _.c = {\n            name: 2,\n            \"#ClosestBranchId\": 4\n          }\n        }, _.c,\n        {\n          \"#childScope/0\": _.d = {\n            name: 3,\n            \"#ClosestBranchId\": 6\n          }\n        }, _.d], _.a.write = _.b.write = _.c.write = _.d.write = _._[\n          \"__tests__/template.marko_0/write\"\n          ](_.a), _.e),\n        \"__tests__/tags/child.marko_0_name_write 3 5 7 __tests__/template.marko_0_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment0\nINSERT html/body/div0\nINSERT html/body/#comment1\nINSERT html/body/#comment2\nINSERT html/body/div1\nINSERT html/body/div1/#text\nINSERT html/body/div1/#comment\nINSERT html/body/span0\nINSERT html/body/span0/#text\nINSERT html/body/span0/#comment\nINSERT html/body/p0\nINSERT html/body/p0/#text\nINSERT html/body/p0/#comment\nINSERT html/body/#comment3\nINSERT html/body/div2\nINSERT html/body/div2/#text\nINSERT html/body/div2/#comment\nINSERT html/body/span1\nINSERT html/body/span1/#text\nINSERT html/body/span1/#comment\nINSERT html/body/p1\nINSERT html/body/p1/#text\nINSERT html/body/p1/#comment\nINSERT html/body/#comment4\nINSERT html/body/div3\nINSERT html/body/div3/#text\nINSERT html/body/div3/#comment\nINSERT html/body/span2\nINSERT html/body/span2/#text\nINSERT html/body/span2/#comment\nINSERT html/body/p2\nINSERT html/body/p2/#text\nINSERT html/body/p2/#comment\nINSERT html/body/#comment5\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-for-shallow/tags/child.marko",
    "content": "<const/{name, write}=input/>\n<div>${name}</div>\n<span>${name}</span>\n<p>${name}</p>\n<script>\n  write(`mounted ${name}`);\n  $signal.onabort = () => {\n    write(`destroyed ${name}`)\n  };\n</script>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-for-shallow/template.marko",
    "content": "<let/items=[1,2,3]/>\n<button onClick() { items = items.length ? items.slice(0, -1) : [1,2,3] }>Toggle</button>\n\n<div/el/>\n<const/write(msg) { el().innerHTML += '\\n' + msg } />\n\n<for|item| of=items>\n  <child write=write name=item />\n</for>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-for-shallow/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-deep/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"_\",\n      \"$init\": \"t\",\n      \"$$template\": \"i\",\n      \"$$name__OR__write__script\": \"n\",\n      \"$$name__OR__write\": \"o\",\n      \"$$name\": \"e\",\n      \"$$write$1\": \"r\",\n      \"$$if_content3__write\": \"c\",\n      \"$$if_content3__setup\": \"l\",\n      \"$$if_content2__if\": \"a\",\n      \"$$if_content2__showInner\": \"s\",\n      \"$$if_content2__setup\": \"f\",\n      \"$$if_content2__write\": \"u\",\n      \"$$if_content__if\": \"d\",\n      \"$$if_content__showMiddle\": \"m\",\n      \"$$if_content__setup\": \"g\",\n      \"$$if_content__write\": \"D\",\n      \"$$if\": \"p\",\n      \"$$showOuter__script\": \"b\",\n      \"$$showOuter\": \"v\",\n      \"$$showMiddle__script\": \"$\",\n      \"$$showMiddle\": \"k\",\n      \"$$showInner__closure\": \"x\",\n      \"$$showInner__script\": \"h\",\n      \"$$showInner\": \"M\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-deep/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\n</pre>\n<div>\n  <div>\n    Outer a\n  </div>\n  <span>\n    Outer a\n  </span>\n  <p>\n    Outer a\n  </p>\n  <div>\n    <div>\n      Middle a\n    </div>\n    <span>\n      Middle a\n    </span>\n    <p>\n      Middle a\n    </p>\n    <div>\n      Inner a\n    </div>\n    <span>\n      Inner a\n    </span>\n    <p>\n      Inner a\n    </p>\n  </div>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#inner\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\n</pre>\n<div>\n  <div>\n    Outer a\n  </div>\n  <span>\n    Outer a\n  </span>\n  <p>\n    Outer a\n  </p>\n  <div>\n    <div>\n      Middle a\n    </div>\n    <span>\n      Middle a\n    </span>\n    <p>\n      Middle a\n    </p>\n  </div>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#middle\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\n</pre>\n<div>\n  <div>\n    Outer a\n  </div>\n  <span>\n    Outer a\n  </span>\n  <p>\n    Outer a\n  </p>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#outer\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\n</pre>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#inner\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\n</pre>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#middle\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\n</pre>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#outer\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\nOuter mounted\nMiddle mounted\nInner mounted\n</pre>\n<div>\n  <div>\n    Outer a\n  </div>\n  <span>\n    Outer a\n  </span>\n  <p>\n    Outer a\n  </p>\n  <div>\n    <div>\n      Middle a\n    </div>\n    <span>\n      Middle a\n    </span>\n    <p>\n      Middle a\n    </p>\n    <div>\n      Inner a\n    </div>\n    <span>\n      Inner a\n    </span>\n    <p>\n      Inner a\n    </p>\n  </div>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#outer\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\n</pre>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-deep/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\n</pre>\n<div>\n  <div>\n    Outer a\n  </div>\n  <span>\n    Outer a\n  </span>\n  <p>\n    Outer a\n  </p>\n  <div>\n    <div>\n      Middle a\n    </div>\n    <span>\n      Middle a\n    </span>\n    <p>\n      Middle a\n    </p>\n    <div>\n      Inner a\n    </div>\n    <span>\n      Inner a\n    </span>\n    <p>\n      Inner a\n    </p>\n  </div>\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT button0, button1, button2, pre, div, #comment\nINSERT #text\nREMOVE #text in pre\nINSERT #text\nREMOVE #text in pre\nINSERT pre/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button#inner\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\n</pre>\n<div>\n  <div>\n    Outer a\n  </div>\n  <span>\n    Outer a\n  </span>\n  <p>\n    Outer a\n  </p>\n  <div>\n    <div>\n      Middle a\n    </div>\n    <span>\n      Middle a\n    </span>\n    <p>\n      Middle a\n    </p>\n  </div>\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT div/div1/#text\nREMOVE div after div/div1/#text\nREMOVE span after div/div1/#text\nREMOVE p after div/div1/#text\nREMOVE #text in pre\nINSERT pre/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button#middle\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\n</pre>\n<div>\n  <div>\n    Outer a\n  </div>\n  <span>\n    Outer a\n  </span>\n  <p>\n    Outer a\n  </p>\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT div/#text\nREMOVE div after div/#text\nREMOVE #text in pre\nINSERT pre/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button#outer\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\n</pre>\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE div after #text\nREMOVE #text in pre\nINSERT pre/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button#inner\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\n</pre>\n<!---->\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#middle\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\n</pre>\n<!---->\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#outer\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\nOuter mounted\nMiddle mounted\nInner mounted\n</pre>\n<div>\n  <div>\n    Outer a\n  </div>\n  <span>\n    Outer a\n  </span>\n  <p>\n    Outer a\n  </p>\n  <div>\n    <div>\n      Middle a\n    </div>\n    <span>\n      Middle a\n    </span>\n    <p>\n      Middle a\n    </p>\n    <div>\n      Inner a\n    </div>\n    <span>\n      Inner a\n    </span>\n    <p>\n      Inner a\n    </p>\n  </div>\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT div\nREMOVE #text after div\nINSERT div/div1\nREMOVE #text after div/div1\nUPDATE div/div0/#text0 \"\" => \"Outer\"\nUPDATE div/span/#text0 \"\" => \"Outer\"\nUPDATE div/p/#text0 \"\" => \"Outer\"\nINSERT div/div1/div1, div/div1/span1, div/div1/p1\nREMOVE #text after div/div1/p1\nUPDATE div/div1/div0/#text0 \"\" => \"Middle\"\nUPDATE div/div1/span0/#text0 \"\" => \"Middle\"\nUPDATE div/div1/p0/#text0 \"\" => \"Middle\"\nUPDATE div/div1/div1/#text0 \"\" => \"Inner\"\nUPDATE div/div1/span1/#text0 \"\" => \"Inner\"\nUPDATE div/div1/p1/#text0 \"\" => \"Inner\"\nREMOVE #text in pre\nINSERT #text\nREMOVE #text in pre\nINSERT #text\nREMOVE #text in pre\nINSERT pre/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button#outer\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\n</pre>\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE div after #text\nREMOVE #text in pre\nINSERT #text\nREMOVE #text in pre\nINSERT #text\nREMOVE #text in pre\nINSERT pre/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-deep/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<div><!> a</div><span><!> a</span><p><!> a</p>\";\nexport const $walks = /* next(1), replace, out(1), next(1), replace, out(1), next(1), replace, out(1) */\"D%lD%lD%l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $name__OR__write__script = _._script(\"__tests__/tags/child.marko_0_name_write\", $scope => {\n  $scope.write(`${$scope.name} mounted`);\n  _.$signal($scope, 0).onabort = () => {\n    $scope.write(`${$scope.name} destroyed`);\n  };\n});\nconst $name__OR__write = /* @__PURE__ */_._or(7, $scope => {\n  _.$signalReset($scope, 0);\n  $name__OR__write__script($scope);\n});\nexport const $name = /* @__PURE__ */_._const(\"name\", $scope => {\n  _._text($scope[\"#text/0\"], $scope.name);\n  _._text($scope[\"#text/1\"], $scope.name);\n  _._text($scope[\"#text/2\"], $scope.name);\n  $name__OR__write($scope);\n});\nexport const $write = /* @__PURE__ */_._const(\"write\", $name__OR__write);\nexport const $input = ($scope, input) => {\n  $name($scope, input.name);\n  $write($scope, input.write);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-deep/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 1115 (min) 465 (brotli)\nconst $template = \"<div><!> a</div><span><!> a</span><p><!> a</p>\",\n  $name__OR__write__script = _._script(\"a0\", ($scope) => {\n    ($scope.g(`${$scope.f} mounted`),\n      (_.$signal($scope, 0).onabort = () => {\n        $scope.g(`${$scope.f} destroyed`);\n      }));\n  }),\n  $name__OR__write = _._or(7, ($scope) => {\n    (_.$signalReset($scope, 0), $name__OR__write__script($scope));\n  }),\n  $name = _._const(5, ($scope) => {\n    (_._text($scope.a, $scope.f),\n      _._text($scope.b, $scope.f),\n      _._text($scope.c, $scope.f),\n      $name__OR__write($scope));\n  }),\n  $write$1 = _._const(6, $name__OR__write),\n  $if_content3__write = _._closure_get(\n    8,\n    ($scope) => $write$1($scope.a, $scope._._._.i),\n    ($scope) => $scope._._._,\n  ),\n  $if_content3__setup = ($scope) => {\n    ($if_content3__write($scope), $scope.a, $name($scope.a, \"Inner\"));\n  },\n  $if_content2__if = _._if(1, $template, \"/D%lD%lD%l&\", $if_content3__setup),\n  $if_content2__showInner = _._closure_get(\n    7,\n    ($scope) => $if_content2__if($scope, $scope._._.h ? 0 : 1),\n    ($scope) => $scope._._,\n  ),\n  $if_content2__setup = ($scope) => {\n    ($if_content2__showInner($scope),\n      $if_content2__write($scope),\n      $scope.a,\n      $name($scope.a, \"Middle\"));\n  },\n  $if_content2__write = _._closure_get(\n    8,\n    ($scope) => $write$1($scope.a, $scope._._.i),\n    ($scope) => $scope._._,\n  ),\n  $if_content__if = _._if(\n    1,\n    `<div>${$template}<!></div>`,\n    \"D/D%lD%lD%l&%l\",\n    $if_content2__setup,\n  ),\n  $if_content__showMiddle = _._if_closure(4, 0, ($scope) =>\n    $if_content__if($scope, $scope._.g ? 0 : 1),\n  ),\n  $if_content__setup = ($scope) => {\n    ($if_content__showMiddle._($scope),\n      $if_content__write._($scope),\n      $scope.a,\n      $name($scope.a, \"Outer\"));\n  },\n  $if_content__write = _._if_closure(4, 0, ($scope) =>\n    $write$1($scope.a, $scope._.i),\n  ),\n  $if = _._if(\n    4,\n    `<div>${$template}<!></div>`,\n    \"D/D%lD%lD%l&%l\",\n    $if_content__setup,\n  ),\n  $showOuter__script = _._script(\"b1\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $showOuter($scope, !$scope.f);\n    }),\n  ),\n  $showOuter = _._let(5, ($scope) => {\n    ($if($scope, $scope.f ? 0 : 1), $showOuter__script($scope));\n  }),\n  $showMiddle__script = _._script(\"b2\", ($scope) =>\n    _._on($scope.b, \"click\", function () {\n      $showMiddle($scope, !$scope.g);\n    }),\n  ),\n  $showMiddle = _._let(6, ($scope) => {\n    ($if_content__showMiddle($scope), $showMiddle__script($scope));\n  }),\n  $showInner__closure = _._closure($if_content2__showInner),\n  $showInner__script = _._script(\"b3\", ($scope) =>\n    _._on($scope.c, \"click\", function () {\n      $showInner($scope, !$scope.h);\n    }),\n  ),\n  $showInner = _._let(7, ($scope) => {\n    ($showInner__closure($scope), $showInner__script($scope));\n  });\n(_._resume(\"b0\", function ($scope) {\n  return function (msg) {\n    $scope.d.innerHTML += \"\\n\" + msg;\n  };\n}),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-deep/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button id=outer>Toggle Outer</button><button id=middle>Toggle Middle</button><button id=inner>Toggle Inner</button><pre></pre><!><!>\";\nexport const $walks = /* get, over(1), get, over(1), get, over(1), get, over(1), replace, over(2) */\" b b b b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _child, $write as _child_input_write, $name as _child_input_name, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nconst $if_content3__write = /* @__PURE__ */_._closure_get(\"write\", $scope => _child_input_write($scope[\"#childScope/0\"], $scope._._._.write), $scope => $scope._._._);\nconst $if_content3__setup = $scope => {\n  $if_content3__write($scope);\n  _child($scope[\"#childScope/0\"]);\n  _child_input_name($scope[\"#childScope/0\"], \"Inner\");\n};\nconst $if_content2__if = /* @__PURE__ */_._if(\"#text/1\", _child_template, /* <child> */`/${_child_walks}&`, $if_content3__setup);\nconst $if_content2__showInner = /* @__PURE__ */_._closure_get(\"showInner\", $scope => $if_content2__if($scope, $scope._._.showInner ? 0 : 1), $scope => $scope._._);\nconst $if_content2__setup = $scope => {\n  $if_content2__showInner($scope);\n  $if_content2__write($scope);\n  _child($scope[\"#childScope/0\"]);\n  _child_input_name($scope[\"#childScope/0\"], \"Middle\");\n};\nconst $if_content2__write = /* @__PURE__ */_._closure_get(\"write\", $scope => _child_input_write($scope[\"#childScope/0\"], $scope._._.write), $scope => $scope._._);\nconst $if_content__if = /* @__PURE__ */_._if(\"#text/1\", `<div>${_child_template}<!></div>`, /* next(1), <child>, replace, out(1) */`D/${_child_walks}&%l`, $if_content2__setup);\nconst $if_content__showMiddle = /* @__PURE__ */_._if_closure(\"#text/4\", 0, $scope => $if_content__if($scope, $scope._.showMiddle ? 0 : 1));\nconst $if_content__setup = $scope => {\n  $if_content__showMiddle._($scope);\n  $if_content__write._($scope);\n  _child($scope[\"#childScope/0\"]);\n  _child_input_name($scope[\"#childScope/0\"], \"Outer\");\n};\nconst $if_content__write = /* @__PURE__ */_._if_closure(\"#text/4\", 0, $scope => _child_input_write($scope[\"#childScope/0\"], $scope._.write));\nconst $if = /* @__PURE__ */_._if(\"#text/4\", `<div>${_child_template}<!></div>`, /* next(1), <child>, replace, out(1) */`D/${_child_walks}&%l`, $if_content__setup);\nconst $showOuter__script = _._script(\"__tests__/template.marko_0_showOuter\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $showOuter($scope, !$scope.showOuter);\n}));\nconst $showOuter = /* @__PURE__ */_._let(\"showOuter/5\", $scope => {\n  $if($scope, $scope.showOuter ? 0 : 1);\n  $showOuter__script($scope);\n});\nconst $showMiddle__script = _._script(\"__tests__/template.marko_0_showMiddle\", $scope => _._on($scope[\"#button/1\"], \"click\", function () {\n  $showMiddle($scope, !$scope.showMiddle);\n}));\nconst $showMiddle = /* @__PURE__ */_._let(\"showMiddle/6\", $scope => {\n  $if_content__showMiddle($scope);\n  $showMiddle__script($scope);\n});\nconst $showInner__closure = /* @__PURE__ */_._closure($if_content2__showInner);\nconst $showInner__script = _._script(\"__tests__/template.marko_0_showInner\", $scope => _._on($scope[\"#button/2\"], \"click\", function () {\n  $showInner($scope, !$scope.showInner);\n}));\nconst $showInner = /* @__PURE__ */_._let(\"showInner/7\", $scope => {\n  $showInner__closure($scope);\n  $showInner__script($scope);\n});\nconst $write2 = /* @__PURE__ */_._const(\"write\");\nexport function $setup($scope) {\n  $showOuter($scope, true);\n  $showMiddle($scope, true);\n  $showInner($scope, true);\n  $write2($scope, $write($scope));\n}\nfunction $write($scope) {\n  return function (msg) {\n    _._el_read($scope[\"#pre/3\"]).innerHTML += '\\n' + msg;\n  };\n}\n_._resume(\"__tests__/template.marko_0/write\", $write);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-deep/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    name,\n    write\n  } = input;\n  _._html(`<div>${_._escape(name)}${_._el_resume($scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.name */0))} a</div><span>${_._escape(name)}${_._el_resume($scope0_id, \"#text/1\", _._serialize_guard($scope0_reason, /* input.name */0))} a</span><p>${_._escape(name)}${_._el_resume($scope0_id, \"#text/2\", _._serialize_guard($scope0_reason, /* input.name */0))} a</p>`);\n  _._script($scope0_id, \"__tests__/tags/child.marko_0_name_write\");\n  _._scope($scope0_id, {\n    name,\n    write\n  }, \"__tests__/tags/child.marko\", 0, {\n    name: \"1:9\",\n    write: \"1:15\"\n  });\n  _._resume_branch($scope0_id);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-deep/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _child from \"./tags/child.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $showInner__closures = new Set();\n  let showOuter = true;\n  let showMiddle = true;\n  let showInner = true;\n  const write = _._resume(function (msg) {\n    (el => el())(_._el_read_error).innerHTML += '\\n' + msg;\n  }, \"__tests__/template.marko_0/write\", $scope0_id);\n  _._html(`<button id=outer>Toggle Outer</button>${_._el_resume($scope0_id, \"#button/0\")}<button id=middle>Toggle Middle</button>${_._el_resume($scope0_id, \"#button/1\")}<button id=inner>Toggle Inner</button>${_._el_resume($scope0_id, \"#button/2\")}<pre></pre>${_._el_resume($scope0_id, \"#pre/3\")}`);\n  _._if(() => {\n    if (showOuter) {\n      const $scope1_id = _._scope_id();\n      _._html(\"<div>\");\n      _child({\n        write: write,\n        name: \"Outer\"\n      });\n      _._if(() => {\n        if (showMiddle) {\n          const $scope2_id = _._scope_id();\n          _._html(\"<div>\");\n          _child({\n            write: write,\n            name: \"Middle\"\n          });\n          _._if(() => {\n            if (showInner) {\n              const $scope3_id = _._scope_id();\n              _child({\n                write: write,\n                name: \"Inner\"\n              });\n              _._scope($scope3_id, {\n                _: _._scope_with_id($scope2_id)\n              }, \"__tests__/template.marko\", \"17:10\");\n              return 0;\n            }\n          }, $scope2_id, \"#text/1\");\n          _._html(\"</div>\");\n          _._subscribe($showInner__closures, _._scope($scope2_id, {\n            _: _._scope_with_id($scope1_id),\n            \"ClosureSignalIndex:showInner\": 0\n          }, \"__tests__/template.marko\", \"14:6\"));\n          return 0;\n        }\n      }, $scope1_id, \"#text/1\", 1, /* showMiddle */1, /* showMiddle */1, 0, 1);\n      _._html(\"</div>\");\n      _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"11:2\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/4\", 1, /* showOuter */1, /* showOuter */1, 0, 1);\n  _._script($scope0_id, \"__tests__/template.marko_0_showInner\");\n  _._script($scope0_id, \"__tests__/template.marko_0_showMiddle\");\n  _._script($scope0_id, \"__tests__/template.marko_0_showOuter\");\n  _._scope($scope0_id, {\n    showOuter,\n    showMiddle,\n    showInner,\n    write,\n    \"ClosureScopes:showInner\": $showInner__closures\n  }, \"__tests__/template.marko\", 0, {\n    showOuter: \"1:6\",\n    showMiddle: \"2:6\",\n    showInner: \"3:6\",\n    write: \"9:8\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-deep/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\n</pre>\n<div>\n  <div>\n    Outer a\n  </div>\n  <span>\n    Outer a\n  </span>\n  <p>\n    Outer a\n  </p>\n  <div>\n    <div>\n      Middle a\n    </div>\n    <span>\n      Middle a\n    </span>\n    <p>\n      Middle a\n    </p>\n    <div>\n      Inner a\n    </div>\n    <span>\n      Inner a\n    </span>\n    <p>\n      Inner a\n    </p>\n  </div>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#inner\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\n</pre>\n<div>\n  <div>\n    Outer a\n  </div>\n  <span>\n    Outer a\n  </span>\n  <p>\n    Outer a\n  </p>\n  <div>\n    <div>\n      Middle a\n    </div>\n    <span>\n      Middle a\n    </span>\n    <p>\n      Middle a\n    </p>\n  </div>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#middle\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\n</pre>\n<div>\n  <div>\n    Outer a\n  </div>\n  <span>\n    Outer a\n  </span>\n  <p>\n    Outer a\n  </p>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#outer\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\n</pre>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#inner\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\n</pre>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#middle\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\n</pre>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#outer\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\nOuter mounted\nMiddle mounted\nInner mounted\n</pre>\n<div>\n  <div>\n    Outer a\n  </div>\n  <span>\n    Outer a\n  </span>\n  <p>\n    Outer a\n  </p>\n  <div>\n    <div>\n      Middle a\n    </div>\n    <span>\n      Middle a\n    </span>\n    <p>\n      Middle a\n    </p>\n    <div>\n      Inner a\n    </div>\n    <span>\n      Inner a\n    </span>\n    <p>\n      Inner a\n    </p>\n  </div>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#outer\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\n</pre>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-deep/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"outer\"\n    >\n      Toggle Outer\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      id=\"middle\"\n    >\n      Toggle Middle\n    </button>\n    <!--M_*1 #button/1-->\n    <button\n      id=\"inner\"\n    >\n      Toggle Inner\n    </button>\n    <!--M_*1 #button/2-->\n    <pre>\n      \nOuter mounted\nMiddle mounted\nInner mounted\n    </pre>\n    <!--M_*1 #pre/3-->\n    <div>\n      <div>\n        Outer a\n      </div>\n      <span>\n        Outer a\n      </span>\n      <p>\n        Outer a\n      </p>\n      <div>\n        <div>\n          Middle a\n        </div>\n        <span>\n          Middle a\n        </span>\n        <p>\n          Middle a\n        </p>\n        <!--M_[-->\n        <div>\n          Inner a\n        </div>\n        <span>\n          Inner a\n        </span>\n        <p>\n          Inner a\n        </p>\n        <!--M_]4 #text/1 6-->\n      </div>\n      <!--M_|2 #text/1 4-->\n    </div>\n    <!--M_|1 #text/4 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.g = [0, _.a = {\n          showOuter: !0,\n          showMiddle: !0,\n          showInner: !0,\n          \"ClosureScopes:showInner\": _.h = new Set\n        }, _.c = {\n          _: _.a\n        }, _.b = {\n          name: \"Outer\",\n          \"#ClosestBranchId\": 2\n        }, _.e = {\n          _: _.c,\n          \"ClosureSignalIndex:showInner\": 0\n        }, _.d = {\n          name: \"Middle\",\n          \"#ClosestBranchId\": 4\n        },\n        {\n          _: _.e\n        }, _.f = {\n          name: \"Inner\",\n          \"#ClosestBranchId\": 6\n        }], _.a.write = _.b.write = _.d.write = _.f.write = _._[\n          \"__tests__/template.marko_0/write\"\n          ](_.a), (_.h).add(_.e), _.g),\n        \"__tests__/tags/child.marko_0_name_write 3 5 7 __tests__/template.marko_0_showInner 1 __tests__/template.marko_0_showMiddle 1 __tests__/template.marko_0_showOuter 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/div1/#text\nINSERT #text\nREMOVE #text in html/body/pre\nINSERT #text\nREMOVE #text in html/body/pre\nINSERT html/body/pre/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button#inner\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"outer\"\n    >\n      Toggle Outer\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      id=\"middle\"\n    >\n      Toggle Middle\n    </button>\n    <!--M_*1 #button/1-->\n    <button\n      id=\"inner\"\n    >\n      Toggle Inner\n    </button>\n    <!--M_*1 #button/2-->\n    <pre>\n      \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\n    </pre>\n    <!--M_*1 #pre/3-->\n    <div>\n      <div>\n        Outer a\n      </div>\n      <span>\n        Outer a\n      </span>\n      <p>\n        Outer a\n      </p>\n      <div>\n        <div>\n          Middle a\n        </div>\n        <span>\n          Middle a\n        </span>\n        <p>\n          Middle a\n        </p>\n        <!--M_]4 #text/1 6-->\n      </div>\n      <!--M_|2 #text/1 4-->\n    </div>\n    <!--M_|1 #text/4 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.g = [0, _.a = {\n          showOuter: !0,\n          showMiddle: !0,\n          showInner: !0,\n          \"ClosureScopes:showInner\": _.h = new Set\n        }, _.c = {\n          _: _.a\n        }, _.b = {\n          name: \"Outer\",\n          \"#ClosestBranchId\": 2\n        }, _.e = {\n          _: _.c,\n          \"ClosureSignalIndex:showInner\": 0\n        }, _.d = {\n          name: \"Middle\",\n          \"#ClosestBranchId\": 4\n        },\n        {\n          _: _.e\n        }, _.f = {\n          name: \"Inner\",\n          \"#ClosestBranchId\": 6\n        }], _.a.write = _.b.write = _.d.write = _.f.write = _._[\n          \"__tests__/template.marko_0/write\"\n          ](_.a), (_.h).add(_.e), _.g),\n        \"__tests__/tags/child.marko_0_name_write 3 5 7 __tests__/template.marko_0_showInner 1 __tests__/template.marko_0_showMiddle 1 __tests__/template.marko_0_showOuter 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/div/div1/#comment after #text\nINSERT html/body/div/div1/#comment\nREMOVE #comment after html/body/div/div1/#comment\nREMOVE div after html/body/div/div1/#comment\nREMOVE span after html/body/div/div1/#comment\nREMOVE p after html/body/div/div1/#comment\nREMOVE #text after html/body/div/div1/#comment\nREMOVE #text in html/body/pre\nINSERT html/body/pre/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button#middle\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"outer\"\n    >\n      Toggle Outer\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      id=\"middle\"\n    >\n      Toggle Middle\n    </button>\n    <!--M_*1 #button/1-->\n    <button\n      id=\"inner\"\n    >\n      Toggle Inner\n    </button>\n    <!--M_*1 #button/2-->\n    <pre>\n      \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\n    </pre>\n    <!--M_*1 #pre/3-->\n    <div>\n      <div>\n        Outer a\n      </div>\n      <span>\n        Outer a\n      </span>\n      <p>\n        Outer a\n      </p>\n      <!--M_|2 #text/1 4-->\n    </div>\n    <!--M_|1 #text/4 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.g = [0, _.a = {\n          showOuter: !0,\n          showMiddle: !0,\n          showInner: !0,\n          \"ClosureScopes:showInner\": _.h = new Set\n        }, _.c = {\n          _: _.a\n        }, _.b = {\n          name: \"Outer\",\n          \"#ClosestBranchId\": 2\n        }, _.e = {\n          _: _.c,\n          \"ClosureSignalIndex:showInner\": 0\n        }, _.d = {\n          name: \"Middle\",\n          \"#ClosestBranchId\": 4\n        },\n        {\n          _: _.e\n        }, _.f = {\n          name: \"Inner\",\n          \"#ClosestBranchId\": 6\n        }], _.a.write = _.b.write = _.d.write = _.f.write = _._[\n          \"__tests__/template.marko_0/write\"\n          ](_.a), (_.h).add(_.e), _.g),\n        \"__tests__/tags/child.marko_0_name_write 3 5 7 __tests__/template.marko_0_showInner 1 __tests__/template.marko_0_showMiddle 1 __tests__/template.marko_0_showOuter 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/div/#comment after div\nINSERT html/body/div/#comment\nREMOVE div after html/body/div/#comment\nREMOVE #text in html/body/pre\nINSERT html/body/pre/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button#outer\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"outer\"\n    >\n      Toggle Outer\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      id=\"middle\"\n    >\n      Toggle Middle\n    </button>\n    <!--M_*1 #button/1-->\n    <button\n      id=\"inner\"\n    >\n      Toggle Inner\n    </button>\n    <!--M_*1 #button/2-->\n    <pre>\n      \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\n    </pre>\n    <!--M_*1 #pre/3-->\n    <!--M_|1 #text/4 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.g = [0, _.a = {\n          showOuter: !0,\n          showMiddle: !0,\n          showInner: !0,\n          \"ClosureScopes:showInner\": _.h = new Set\n        }, _.c = {\n          _: _.a\n        }, _.b = {\n          name: \"Outer\",\n          \"#ClosestBranchId\": 2\n        }, _.e = {\n          _: _.c,\n          \"ClosureSignalIndex:showInner\": 0\n        }, _.d = {\n          name: \"Middle\",\n          \"#ClosestBranchId\": 4\n        },\n        {\n          _: _.e\n        }, _.f = {\n          name: \"Inner\",\n          \"#ClosestBranchId\": 6\n        }], _.a.write = _.b.write = _.d.write = _.f.write = _._[\n          \"__tests__/template.marko_0/write\"\n          ](_.a), (_.h).add(_.e), _.g),\n        \"__tests__/tags/child.marko_0_name_write 3 5 7 __tests__/template.marko_0_showInner 1 __tests__/template.marko_0_showMiddle 1 __tests__/template.marko_0_showOuter 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/#comment4 after div\nINSERT html/body/#comment4\nREMOVE div after html/body/#comment4\nREMOVE #text in html/body/pre\nINSERT html/body/pre/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button#inner\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"outer\"\n    >\n      Toggle Outer\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      id=\"middle\"\n    >\n      Toggle Middle\n    </button>\n    <!--M_*1 #button/1-->\n    <button\n      id=\"inner\"\n    >\n      Toggle Inner\n    </button>\n    <!--M_*1 #button/2-->\n    <pre>\n      \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\n    </pre>\n    <!--M_*1 #pre/3-->\n    <!--M_|1 #text/4 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.g = [0, _.a = {\n          showOuter: !0,\n          showMiddle: !0,\n          showInner: !0,\n          \"ClosureScopes:showInner\": _.h = new Set\n        }, _.c = {\n          _: _.a\n        }, _.b = {\n          name: \"Outer\",\n          \"#ClosestBranchId\": 2\n        }, _.e = {\n          _: _.c,\n          \"ClosureSignalIndex:showInner\": 0\n        }, _.d = {\n          name: \"Middle\",\n          \"#ClosestBranchId\": 4\n        },\n        {\n          _: _.e\n        }, _.f = {\n          name: \"Inner\",\n          \"#ClosestBranchId\": 6\n        }], _.a.write = _.b.write = _.d.write = _.f.write = _._[\n          \"__tests__/template.marko_0/write\"\n          ](_.a), (_.h).add(_.e), _.g),\n        \"__tests__/tags/child.marko_0_name_write 3 5 7 __tests__/template.marko_0_showInner 1 __tests__/template.marko_0_showMiddle 1 __tests__/template.marko_0_showOuter 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#middle\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"outer\"\n    >\n      Toggle Outer\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      id=\"middle\"\n    >\n      Toggle Middle\n    </button>\n    <!--M_*1 #button/1-->\n    <button\n      id=\"inner\"\n    >\n      Toggle Inner\n    </button>\n    <!--M_*1 #button/2-->\n    <pre>\n      \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\n    </pre>\n    <!--M_*1 #pre/3-->\n    <!--M_|1 #text/4 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.g = [0, _.a = {\n          showOuter: !0,\n          showMiddle: !0,\n          showInner: !0,\n          \"ClosureScopes:showInner\": _.h = new Set\n        }, _.c = {\n          _: _.a\n        }, _.b = {\n          name: \"Outer\",\n          \"#ClosestBranchId\": 2\n        }, _.e = {\n          _: _.c,\n          \"ClosureSignalIndex:showInner\": 0\n        }, _.d = {\n          name: \"Middle\",\n          \"#ClosestBranchId\": 4\n        },\n        {\n          _: _.e\n        }, _.f = {\n          name: \"Inner\",\n          \"#ClosestBranchId\": 6\n        }], _.a.write = _.b.write = _.d.write = _.f.write = _._[\n          \"__tests__/template.marko_0/write\"\n          ](_.a), (_.h).add(_.e), _.g),\n        \"__tests__/tags/child.marko_0_name_write 3 5 7 __tests__/template.marko_0_showInner 1 __tests__/template.marko_0_showMiddle 1 __tests__/template.marko_0_showOuter 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#outer\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"outer\"\n    >\n      Toggle Outer\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      id=\"middle\"\n    >\n      Toggle Middle\n    </button>\n    <!--M_*1 #button/1-->\n    <button\n      id=\"inner\"\n    >\n      Toggle Inner\n    </button>\n    <!--M_*1 #button/2-->\n    <pre>\n      \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\nOuter mounted\nMiddle mounted\nInner mounted\n    </pre>\n    <!--M_*1 #pre/3-->\n    <div>\n      <div>\n        Outer a\n      </div>\n      <span>\n        Outer a\n      </span>\n      <p>\n        Outer a\n      </p>\n      <div>\n        <div>\n          Middle a\n        </div>\n        <span>\n          Middle a\n        </span>\n        <p>\n          Middle a\n        </p>\n        <div>\n          Inner a\n        </div>\n        <span>\n          Inner a\n        </span>\n        <p>\n          Inner a\n        </p>\n      </div>\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.g = [0, _.a = {\n          showOuter: !0,\n          showMiddle: !0,\n          showInner: !0,\n          \"ClosureScopes:showInner\": _.h = new Set\n        }, _.c = {\n          _: _.a\n        }, _.b = {\n          name: \"Outer\",\n          \"#ClosestBranchId\": 2\n        }, _.e = {\n          _: _.c,\n          \"ClosureSignalIndex:showInner\": 0\n        }, _.d = {\n          name: \"Middle\",\n          \"#ClosestBranchId\": 4\n        },\n        {\n          _: _.e\n        }, _.f = {\n          name: \"Inner\",\n          \"#ClosestBranchId\": 6\n        }], _.a.write = _.b.write = _.d.write = _.f.write = _._[\n          \"__tests__/template.marko_0/write\"\n          ](_.a), (_.h).add(_.e), _.g),\n        \"__tests__/tags/child.marko_0_name_write 3 5 7 __tests__/template.marko_0_showInner 1 __tests__/template.marko_0_showMiddle 1 __tests__/template.marko_0_showOuter 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div\nREMOVE #comment after html/body/div\nINSERT html/body/div/div1\nREMOVE #text after html/body/div/div1\nUPDATE html/body/div/div0/#text0 \"\" => \"Outer\"\nUPDATE html/body/div/span/#text0 \"\" => \"Outer\"\nUPDATE html/body/div/p/#text0 \"\" => \"Outer\"\nINSERT html/body/div/div1/div1, html/body/div/div1/span1, html/body/div/div1/p1\nREMOVE #text after html/body/div/div1/p1\nUPDATE html/body/div/div1/div0/#text0 \"\" => \"Middle\"\nUPDATE html/body/div/div1/span0/#text0 \"\" => \"Middle\"\nUPDATE html/body/div/div1/p0/#text0 \"\" => \"Middle\"\nUPDATE html/body/div/div1/div1/#text0 \"\" => \"Inner\"\nUPDATE html/body/div/div1/span1/#text0 \"\" => \"Inner\"\nUPDATE html/body/div/div1/p1/#text0 \"\" => \"Inner\"\nREMOVE #text in html/body/pre\nINSERT #text\nREMOVE #text in html/body/pre\nINSERT #text\nREMOVE #text in html/body/pre\nINSERT html/body/pre/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button#outer\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"outer\"\n    >\n      Toggle Outer\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      id=\"middle\"\n    >\n      Toggle Middle\n    </button>\n    <!--M_*1 #button/1-->\n    <button\n      id=\"inner\"\n    >\n      Toggle Inner\n    </button>\n    <!--M_*1 #button/2-->\n    <pre>\n      \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\n    </pre>\n    <!--M_*1 #pre/3-->\n    <!--M_|1 #text/4 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.g = [0, _.a = {\n          showOuter: !0,\n          showMiddle: !0,\n          showInner: !0,\n          \"ClosureScopes:showInner\": _.h = new Set\n        }, _.c = {\n          _: _.a\n        }, _.b = {\n          name: \"Outer\",\n          \"#ClosestBranchId\": 2\n        }, _.e = {\n          _: _.c,\n          \"ClosureSignalIndex:showInner\": 0\n        }, _.d = {\n          name: \"Middle\",\n          \"#ClosestBranchId\": 4\n        },\n        {\n          _: _.e\n        }, _.f = {\n          name: \"Inner\",\n          \"#ClosestBranchId\": 6\n        }], _.a.write = _.b.write = _.d.write = _.f.write = _._[\n          \"__tests__/template.marko_0/write\"\n          ](_.a), (_.h).add(_.e), _.g),\n        \"__tests__/tags/child.marko_0_name_write 3 5 7 __tests__/template.marko_0_showInner 1 __tests__/template.marko_0_showMiddle 1 __tests__/template.marko_0_showOuter 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#comment4\nREMOVE div after html/body/#comment4\nREMOVE #text in html/body/pre\nINSERT #text\nREMOVE #text in html/body/pre\nINSERT #text\nREMOVE #text in html/body/pre\nINSERT html/body/pre/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-deep/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre />\n<div>\n  <div>\n    Outer a\n  </div>\n  <span>\n    Outer a\n  </span>\n  <p>\n    Outer a\n  </p>\n  <div>\n    <div>\n      Middle a\n    </div>\n    <span>\n      Middle a\n    </span>\n    <p>\n      Middle a\n    </p>\n    <div>\n      Inner a\n    </div>\n    <span>\n      Inner a\n    </span>\n    <p>\n      Inner a\n    </p>\n  </div>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-deep/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button id=outer>Toggle Outer</button><!--M_*1 #button/0--><button id=middle>Toggle Middle</button><!--M_*1 #button/1--><button id=inner>Toggle Inner</button><!--M_*1 #button/2--><pre></pre><!--M_*1 #pre/3--><div><div>Outer a</div><span>Outer a</span><p>Outer a</p><div><div>Middle a</div><span>Middle a</span><p>Middle a</p><!--M_[--><div>Inner a</div><span>Inner a</span><p>Inner a</p><!--M_]4 #text/1 6--></div><!--M_|2 #text/1 4--></div><!--M_|1 #text/4 2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.g=[0,_.a={showOuter:!0,showMiddle:!0,showInner:!0,\"ClosureScopes:showInner\":_.h=new Set},_.c={_:_.a},_.b={name:\"Outer\",\"#ClosestBranchId\":2},_.e={_:_.c,\"ClosureSignalIndex:showInner\":0},_.d={name:\"Middle\",\"#ClosestBranchId\":4},{_:_.e},_.f={name:\"Inner\",\"#ClosestBranchId\":6}],_.a.write=_.b.write=_.d.write=_.f.write=_._[\"__tests__/template.marko_0/write\"](_.a),(_.h).add(_.e),_.g),\"__tests__/tags/child.marko_0_name_write 3 5 7 __tests__/template.marko_0_showInner 1 __tests__/template.marko_0_showMiddle 1 __tests__/template.marko_0_showOuter 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"outer\"\n    >\n      Toggle Outer\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      id=\"middle\"\n    >\n      Toggle Middle\n    </button>\n    <!--M_*1 #button/1-->\n    <button\n      id=\"inner\"\n    >\n      Toggle Inner\n    </button>\n    <!--M_*1 #button/2-->\n    <pre />\n    <!--M_*1 #pre/3-->\n    <div>\n      <div>\n        Outer a\n      </div>\n      <span>\n        Outer a\n      </span>\n      <p>\n        Outer a\n      </p>\n      <div>\n        <div>\n          Middle a\n        </div>\n        <span>\n          Middle a\n        </span>\n        <p>\n          Middle a\n        </p>\n        <!--M_[-->\n        <div>\n          Inner a\n        </div>\n        <span>\n          Inner a\n        </span>\n        <p>\n          Inner a\n        </p>\n        <!--M_]4 #text/1 6-->\n      </div>\n      <!--M_|2 #text/1 4-->\n    </div>\n    <!--M_|1 #text/4 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.g = [0, _.a = {\n          showOuter: !0,\n          showMiddle: !0,\n          showInner: !0,\n          \"ClosureScopes:showInner\": _.h = new Set\n        }, _.c = {\n          _: _.a\n        }, _.b = {\n          name: \"Outer\",\n          \"#ClosestBranchId\": 2\n        }, _.e = {\n          _: _.c,\n          \"ClosureSignalIndex:showInner\": 0\n        }, _.d = {\n          name: \"Middle\",\n          \"#ClosestBranchId\": 4\n        },\n        {\n          _: _.e\n        }, _.f = {\n          name: \"Inner\",\n          \"#ClosestBranchId\": 6\n        }], _.a.write = _.b.write = _.d.write = _.f.write = _._[\n          \"__tests__/template.marko_0/write\"\n          ](_.a), (_.h).add(_.e), _.g),\n        \"__tests__/tags/child.marko_0_name_write 3 5 7 __tests__/template.marko_0_showInner 1 __tests__/template.marko_0_showMiddle 1 __tests__/template.marko_0_showOuter 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button0\nINSERT html/body/button0/#text\nINSERT html/body/#comment0\nINSERT html/body/button1\nINSERT html/body/button1/#text\nINSERT html/body/#comment1\nINSERT html/body/button2\nINSERT html/body/button2/#text\nINSERT html/body/#comment2\nINSERT html/body/pre\nINSERT html/body/#comment3\nINSERT html/body/div\nINSERT html/body/div/div0\nINSERT html/body/div/div0/#text\nINSERT html/body/div/span\nINSERT html/body/div/span/#text\nINSERT html/body/div/p\nINSERT html/body/div/p/#text\nINSERT html/body/div/div1\nINSERT html/body/div/div1/div0\nINSERT html/body/div/div1/div0/#text\nINSERT html/body/div/div1/span0\nINSERT html/body/div/div1/span0/#text\nINSERT html/body/div/div1/p0\nINSERT html/body/div/div1/p0/#text\nINSERT html/body/div/div1/#comment0\nINSERT html/body/div/div1/div1\nINSERT html/body/div/div1/div1/#text\nINSERT html/body/div/div1/span1\nINSERT html/body/div/div1/span1/#text\nINSERT html/body/div/div1/p1\nINSERT html/body/div/div1/p1/#text\nINSERT html/body/div/div1/#comment1\nINSERT html/body/div/#comment\nINSERT html/body/#comment4\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-deep/tags/child.marko",
    "content": "<const/{name, write}=input/>\n<div>${name} a</div>\n<span>${name} a</span>\n<p>${name} a</p>\n<script>\n  write(`${name} mounted`);\n  $signal.onabort = () => {\n    write(`${name} destroyed`)\n  };\n</script>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-deep/template.marko",
    "content": "<let/showOuter=true/>\n<let/showMiddle=true/>\n<let/showInner=true/>\n<button#outer onClick() { showOuter = !showOuter }>Toggle Outer</button>\n<button#middle onClick() { showMiddle = !showMiddle }>Toggle Middle</button>\n<button#inner onClick() { showInner = !showInner }>Toggle Inner</button>\n\n<pre/el/>\n<const/write(msg) { el().innerHTML += '\\n' + msg } />\n\n<if=showOuter>\n  <div>\n    <child write=write name=\"Outer\"/>\n    <if=showMiddle>\n      <div>\n        <child write=write name=\"Middle\"/>\n        <if=showInner>\n          <child write=write name=\"Inner\" />\n        </if>\n      </div>\n    </if>\n  </div>\n</if>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-deep/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction clickOuter(container: Element) {\n  container.querySelector<HTMLButtonElement>(\"button#outer\")!.click();\n}\n\nfunction clickMiddle(container: Element) {\n  container.querySelector<HTMLButtonElement>(\"button#middle\")!.click();\n}\n\nfunction clickInner(container: Element) {\n  container.querySelector<HTMLButtonElement>(\"button#inner\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [\n    {},\n    clickInner,\n    clickMiddle,\n    clickOuter,\n    clickInner,\n    clickMiddle,\n    clickOuter,\n    clickOuter,\n  ],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-same-scope/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"n\",\n      \"$init\": \"i\",\n      \"$$if_content__setup__script\": \"o\",\n      \"$$if_content__setup\": \"t\",\n      \"$$if\": \"a\",\n      \"$$show__script\": \"r\",\n      \"$$show\": \"s\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-same-scope/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Toggle\n</button>\n<pre>\n  \nmounted\n</pre>\n<div>\n  a\n</div>\n<span>\n  b\n</span>\n<p>\n  c\n</p>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<pre>\n  \nmounted\ndestroyed\n</pre>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<pre>\n  \nmounted\ndestroyed\nmounted\n</pre>\n<div>\n  a\n</div>\n<span>\n  b\n</span>\n<p>\n  c\n</p>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<pre>\n  \nmounted\ndestroyed\nmounted\ndestroyed\n</pre>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-same-scope/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  Toggle\n</button>\n<pre>\n  \nmounted\n</pre>\n<div>\n  a\n</div>\n<span>\n  b\n</span>\n<p>\n  c\n</p>\n<!---->\n```\n\n# Mutations\n```\nINSERT button, pre, div, span, p, #comment\nINSERT pre/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<pre>\n  \nmounted\ndestroyed\n</pre>\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE div after #text\nREMOVE span after #text\nREMOVE p after #text\nREMOVE #text in pre\nINSERT pre/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<pre>\n  \nmounted\ndestroyed\nmounted\n</pre>\n<div>\n  a\n</div>\n<span>\n  b\n</span>\n<p>\n  c\n</p>\n<!---->\n```\n\n# Mutations\n```\nINSERT div, span, p\nREMOVE #text after p\nREMOVE #text in pre\nINSERT pre/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<pre>\n  \nmounted\ndestroyed\nmounted\ndestroyed\n</pre>\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE div after #text\nREMOVE span after #text\nREMOVE p after #text\nREMOVE #text in pre\nINSERT pre/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-same-scope/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 305 (min) 193 (brotli)\nconst $if_content__setup__script = _._script(\"a0\", ($scope) => {\n    (($scope._.b.innerHTML += \"\\nmounted\"),\n      (_.$signal($scope, 0).onabort = () => {\n        $scope._.b.innerHTML += \"\\ndestroyed\";\n      }));\n  }),\n  $if_content__setup = ($scope) => {\n    (_.$signalReset($scope, 0), $if_content__setup__script($scope));\n  },\n  $if = _._if(2, \"<div>a</div><span>b</span><p>c</p>\", \"d\", $if_content__setup),\n  $show__script = _._script(\"a1\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $show($scope, !$scope.d);\n    }),\n  ),\n  $show = _._let(3, ($scope) => {\n    ($if($scope, $scope.d ? 0 : 1), $show__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-same-scope/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button>Toggle</button><pre></pre><!><!>\";\nexport const $walks = /* get, over(1), get, over(1), replace, over(2) */\" b b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content__setup__script = _._script(\"__tests__/template.marko_1\", $scope => {\n  _._el_read($scope._[\"#pre/1\"]).innerHTML += '\\nmounted';\n  _.$signal($scope, 0).onabort = () => {\n    _._el_read($scope._[\"#pre/1\"]).innerHTML += '\\ndestroyed';\n  };\n});\nconst $if_content__setup = $scope => {\n  _.$signalReset($scope, 0);\n  $if_content__setup__script($scope);\n};\nconst $if = /* @__PURE__ */_._if(\"#text/2\", \"<div>a</div><span>b</span><p>c</p>\", /* over(3) */\"d\", $if_content__setup);\nconst $show__script = _._script(\"__tests__/template.marko_0_show\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $show($scope, !$scope.show);\n}));\nconst $show = /* @__PURE__ */_._let(\"show/3\", $scope => {\n  $if($scope, $scope.show ? 0 : 1);\n  $show__script($scope);\n});\nexport function $setup($scope) {\n  $show($scope, true);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-same-scope/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let show = true;\n  _._html(`<button>Toggle</button>${_._el_resume($scope0_id, \"#button/0\")}<pre></pre>${_._el_resume($scope0_id, \"#pre/1\")}`);\n  _._if(() => {\n    if (show) {\n      const $scope1_id = _._scope_id();\n      _._html(\"<div>a</div><span>b</span><p>c</p>\");\n      _._script($scope1_id, \"__tests__/template.marko_1\");\n      _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"6:2\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/2\");\n  _._script($scope0_id, \"__tests__/template.marko_0_show\");\n  _._scope($scope0_id, {\n    show\n  }, \"__tests__/template.marko\", 0, {\n    show: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-same-scope/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Toggle\n</button>\n<pre>\n  \nmounted\n</pre>\n<div>\n  a\n</div>\n<span>\n  b\n</span>\n<p>\n  c\n</p>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<pre>\n  \nmounted\ndestroyed\n</pre>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<pre>\n  \nmounted\ndestroyed\nmounted\n</pre>\n<div>\n  a\n</div>\n<span>\n  b\n</span>\n<p>\n  c\n</p>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<pre>\n  \nmounted\ndestroyed\nmounted\ndestroyed\n</pre>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-same-scope/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/0-->\n    <pre>\n      \nmounted\n    </pre>\n    <!--M_*1 #pre/1-->\n    <!--M_[-->\n    <div>\n      a\n    </div>\n    <span>\n      b\n    </span>\n    <p>\n      c\n    </p>\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          show: !0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1 2 __tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text\nINSERT html/body/pre/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/0-->\n    <pre>\n      \nmounted\ndestroyed\n    </pre>\n    <!--M_*1 #pre/1-->\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          show: !0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1 2 __tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/#comment2 after #text\nINSERT html/body/#comment2\nREMOVE #comment after html/body/#comment2\nREMOVE div after html/body/#comment2\nREMOVE span after html/body/#comment2\nREMOVE p after html/body/#comment2\nREMOVE #text after html/body/#comment2\nREMOVE #text in html/body/pre\nINSERT html/body/pre/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/0-->\n    <pre>\n      \nmounted\ndestroyed\nmounted\n    </pre>\n    <!--M_*1 #pre/1-->\n    <div>\n      a\n    </div>\n    <span>\n      b\n    </span>\n    <p>\n      c\n    </p>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          show: !0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1 2 __tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div, html/body/span, html/body/p\nREMOVE #comment after html/body/p\nREMOVE #text in html/body/pre\nINSERT html/body/pre/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/0-->\n    <pre>\n      \nmounted\ndestroyed\nmounted\ndestroyed\n    </pre>\n    <!--M_*1 #pre/1-->\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          show: !0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1 2 __tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#comment2\nREMOVE div after html/body/#comment2\nREMOVE span after html/body/#comment2\nREMOVE p after html/body/#comment2\nREMOVE #text in html/body/pre\nINSERT html/body/pre/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-same-scope/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  Toggle\n</button>\n<pre />\n<div>\n  a\n</div>\n<span>\n  b\n</span>\n<p>\n  c\n</p>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-same-scope/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>Toggle</button><!--M_*1 #button/0--><pre></pre><!--M_*1 #pre/1--><!--M_[--><div>a</div><span>b</span><p>c</p><!--M_]1 #text/2 2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={show:!0},{_:_.a}]),\"__tests__/template.marko_1 2 __tests__/template.marko_0_show 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/0-->\n    <pre />\n    <!--M_*1 #pre/1-->\n    <!--M_[-->\n    <div>\n      a\n    </div>\n    <span>\n      b\n    </span>\n    <p>\n      c\n    </p>\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          show: !0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1 2 __tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment0\nINSERT html/body/pre\nINSERT html/body/#comment1\nINSERT html/body/#comment2\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/span\nINSERT html/body/span/#text\nINSERT html/body/p\nINSERT html/body/p/#text\nINSERT html/body/#comment3\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-same-scope/template.marko",
    "content": "<let/show=true/>\n<button onClick() { show = !show }>Toggle</button>\n\n<pre/el/>\n\n<if=show>\n  <div>a</div>\n  <span>b</span>\n  <p>c</p>\n  <script>\n    el().innerHTML += '\\nmounted';\n    $signal.onabort = () => {\n      el().innerHTML += '\\ndestroyed';\n    };\n  </script>\n</if>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-same-scope/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-shallow/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"n\",\n      \"$$input__script\": \"i\",\n      \"$$input\": \"r\",\n      \"$$if_content__setup\": \"o\",\n      \"$$if\": \"a\",\n      \"$$show__script\": \"e\",\n      \"$$show\": \"s\",\n      \"$$write\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-shallow/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Toggle\n</button>\n<div>\n  mounted\n</div>\n<div>\n  a\n</div>\n<span>\n  b\n</span>\n<p>\n  c\n</p>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  destroyed\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  mounted\n</div>\n<div>\n  a\n</div>\n<span>\n  b\n</span>\n<p>\n  c\n</p>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  destroyed\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-shallow/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  Toggle\n</button>\n<div>\n  mounted\n</div>\n<div>\n  a\n</div>\n<span>\n  b\n</span>\n<p>\n  c\n</p>\n<!---->\n```\n\n# Mutations\n```\nINSERT button, div0, div1, span, p, #comment\nINSERT div0/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  destroyed\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE div after #text\nREMOVE span after #text\nREMOVE p after #text\nREMOVE #text in div\nINSERT div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  mounted\n</div>\n<div>\n  a\n</div>\n<span>\n  b\n</span>\n<p>\n  c\n</p>\n<!---->\n```\n\n# Mutations\n```\nINSERT div1, span, p\nREMOVE #text after p\nREMOVE #text in div0\nINSERT div0/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  destroyed\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE div after #text\nREMOVE span after #text\nREMOVE p after #text\nREMOVE #text in div\nINSERT div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-shallow/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<div>a</div><span>b</span><p>c</p>\";\nexport const $walks = /* over(3) */\"d\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $input__script = _._script(\"__tests__/tags/child.marko_0_input\", $scope => {\n  $scope.input.write('mounted');\n  _.$signal($scope, 0).onabort = () => {\n    $scope.input.write('destroyed');\n  };\n});\nexport const $input = /* @__PURE__ */_._const(\"input\", $scope => {\n  _.$signalReset($scope, 0);\n  $input__script($scope);\n});\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-shallow/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 404 (min) 241 (brotli)\nconst $input__script = _._script(\"a0\", ($scope) => {\n    ($scope.b.write(\"mounted\"),\n      (_.$signal($scope, 0).onabort = () => {\n        $scope.b.write(\"destroyed\");\n      }));\n  }),\n  $input = _._const(1, ($scope) => {\n    (_.$signalReset($scope, 0), $input__script($scope));\n  }),\n  $if_content__setup = ($scope) => {\n    ($scope.a, $input($scope.a, { write: $write($scope) }));\n  },\n  $if = _._if(\n    2,\n    \"<div>a</div><span>b</span><p>c</p>\",\n    \"/d&\",\n    $if_content__setup,\n  ),\n  $show__script = _._script(\"b1\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $show($scope, !$scope.d);\n    }),\n  ),\n  $show = _._let(3, ($scope) => {\n    ($if($scope, $scope.d ? 0 : 1), $show__script($scope));\n  });\nfunction $write($scope) {\n  return function (state) {\n    $scope._.b.innerHTML = state;\n  };\n}\n(_._resume(\"b0\", $write), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-shallow/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button>Toggle</button><div></div><!><!>\";\nexport const $walks = /* get, over(1), get, over(1), replace, over(2) */\" b b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _child, $input as _child_input, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nconst $if_content__setup = $scope => {\n  _child($scope[\"#childScope/0\"]);\n  _child_input($scope[\"#childScope/0\"], {\n    write: $write($scope)\n  });\n};\nconst $if = /* @__PURE__ */_._if(\"#text/2\", _child_template, /* <child> */`/${_child_walks}&`, $if_content__setup);\nconst $show__script = _._script(\"__tests__/template.marko_0_show\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $show($scope, !$scope.show);\n}));\nconst $show = /* @__PURE__ */_._let(\"show/3\", $scope => {\n  $if($scope, $scope.show ? 0 : 1);\n  $show__script($scope);\n});\nexport function $setup($scope) {\n  $show($scope, true);\n}\nfunction $write($scope) {\n  return function (state) {\n    _._el_read($scope._[\"#div/1\"]).innerHTML = state;\n  };\n}\n_._resume(\"__tests__/template.marko_1/write\", $write);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-shallow/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div>a</div><span>b</span><p>c</p>\");\n  _._script($scope0_id, \"__tests__/tags/child.marko_0_input\");\n  _._scope($scope0_id, {\n    input\n  }, \"__tests__/tags/child.marko\", 0, {\n    input: 0\n  });\n  _._resume_branch($scope0_id);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-shallow/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _child from \"./tags/child.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let show = true;\n  _._html(`<button>Toggle</button>${_._el_resume($scope0_id, \"#button/0\")}<div></div>${_._el_resume($scope0_id, \"#div/1\")}`);\n  _._if(() => {\n    if (show) {\n      const $scope1_id = _._scope_id();\n      _child({\n        write: _._resume(function (state) {\n          (el => el())(_._el_read_error).innerHTML = state;\n        }, \"__tests__/template.marko_1/write\", $scope1_id)\n      });\n      _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"6:2\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/2\");\n  _._script($scope0_id, \"__tests__/template.marko_0_show\");\n  _._scope($scope0_id, {\n    show\n  }, \"__tests__/template.marko\", 0, {\n    show: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-shallow/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Toggle\n</button>\n<div>\n  mounted\n</div>\n<div>\n  a\n</div>\n<span>\n  b\n</span>\n<p>\n  c\n</p>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  destroyed\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  mounted\n</div>\n<div>\n  a\n</div>\n<span>\n  b\n</span>\n<p>\n  c\n</p>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  destroyed\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-shallow/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      mounted\n    </div>\n    <!--M_*1 #div/1-->\n    <!--M_[-->\n    <div>\n      a\n    </div>\n    <span>\n      b\n    </span>\n    <p>\n      c\n    </p>\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          show: !0\n        }, _.d = {\n          _: _.a\n        },\n        {\n          input: _.b = {},\n          \"#ClosestBranchId\": 2\n        }], _.b.write = _._[\n          \"__tests__/template.marko_1/write\"\n          ](_.d), _.c),\n        \"__tests__/tags/child.marko_0_input 3 __tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text\nINSERT html/body/div0/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      destroyed\n    </div>\n    <!--M_*1 #div/1-->\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          show: !0\n        }, _.d = {\n          _: _.a\n        },\n        {\n          input: _.b = {},\n          \"#ClosestBranchId\": 2\n        }], _.b.write = _._[\n          \"__tests__/template.marko_1/write\"\n          ](_.d), _.c),\n        \"__tests__/tags/child.marko_0_input 3 __tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/#comment2 after #text\nINSERT html/body/#comment2\nREMOVE #comment after html/body/#comment2\nREMOVE div after html/body/#comment2\nREMOVE span after html/body/#comment2\nREMOVE p after html/body/#comment2\nREMOVE #text after html/body/#comment2\nREMOVE #text in html/body/div\nINSERT html/body/div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      mounted\n    </div>\n    <!--M_*1 #div/1-->\n    <div>\n      a\n    </div>\n    <span>\n      b\n    </span>\n    <p>\n      c\n    </p>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          show: !0\n        }, _.d = {\n          _: _.a\n        },\n        {\n          input: _.b = {},\n          \"#ClosestBranchId\": 2\n        }], _.b.write = _._[\n          \"__tests__/template.marko_1/write\"\n          ](_.d), _.c),\n        \"__tests__/tags/child.marko_0_input 3 __tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div1, html/body/span, html/body/p\nREMOVE #comment after html/body/p\nREMOVE #text in html/body/div0\nINSERT html/body/div0/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      destroyed\n    </div>\n    <!--M_*1 #div/1-->\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          show: !0\n        }, _.d = {\n          _: _.a\n        },\n        {\n          input: _.b = {},\n          \"#ClosestBranchId\": 2\n        }], _.b.write = _._[\n          \"__tests__/template.marko_1/write\"\n          ](_.d), _.c),\n        \"__tests__/tags/child.marko_0_input 3 __tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#comment2\nREMOVE div after html/body/#comment2\nREMOVE span after html/body/#comment2\nREMOVE p after html/body/#comment2\nREMOVE #text in html/body/div\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-shallow/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  Toggle\n</button>\n<div />\n<div>\n  a\n</div>\n<span>\n  b\n</span>\n<p>\n  c\n</p>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-shallow/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>Toggle</button><!--M_*1 #button/0--><div></div><!--M_*1 #div/1--><!--M_[--><div>a</div><span>b</span><p>c</p><!--M_]1 #text/2 2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.a={show:!0},_.d={_:_.a},{input:_.b={},\"#ClosestBranchId\":2}],_.b.write=_._[\"__tests__/template.marko_1/write\"](_.d),_.c),\"__tests__/tags/child.marko_0_input 3 __tests__/template.marko_0_show 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/0-->\n    <div />\n    <!--M_*1 #div/1-->\n    <!--M_[-->\n    <div>\n      a\n    </div>\n    <span>\n      b\n    </span>\n    <p>\n      c\n    </p>\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          show: !0\n        }, _.d = {\n          _: _.a\n        },\n        {\n          input: _.b = {},\n          \"#ClosestBranchId\": 2\n        }], _.b.write = _._[\n          \"__tests__/template.marko_1/write\"\n          ](_.d), _.c),\n        \"__tests__/tags/child.marko_0_input 3 __tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment0\nINSERT html/body/div0\nINSERT html/body/#comment1\nINSERT html/body/#comment2\nINSERT html/body/div1\nINSERT html/body/div1/#text\nINSERT html/body/span\nINSERT html/body/span/#text\nINSERT html/body/p\nINSERT html/body/p/#text\nINSERT html/body/#comment3\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-shallow/tags/child.marko",
    "content": "<div>a</div>\n<span>b</span>\n<p>c</p>\n<script>\n  input.write('mounted');\n  $signal.onabort = () => {\n    input.write('destroyed')\n  };\n</script>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-shallow/template.marko",
    "content": "<let/show=true/>\n<button onClick() { show = !show }>Toggle</button>\n\n<div/el/>\n\n<if=show>\n  <child write(state) { el().innerHTML = state } />\n</if>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-shallow/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-for-deep/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"_\",\n      \"$init\": \"o\",\n      \"$$name__OR__write__script\": \"r\",\n      \"$$name__OR__write\": \"t\",\n      \"$$name\": \"e\",\n      \"$$write$1\": \"i\",\n      \"$$for_content2__write\": \"n\",\n      \"$$for_content2__setup\": \"d\",\n      \"$$for_content2__outerItem__OR__middleItem\": \"s\",\n      \"$$for_content2__outerItem\": \"c\",\n      \"$$for_content2__middleItem\": \"a\",\n      \"$$for_content2__$params\": \"l\",\n      \"$$for_content__for\": \"f\",\n      \"$$for_content__items\": \"m\",\n      \"$$for_content__setup\": \"u\",\n      \"$$for_content__write\": \"v\",\n      \"$$for_content__outerItem\": \"g\",\n      \"$$for_content__$params\": \"$\",\n      \"$$for\": \"b\",\n      \"$$items__script\": \"p\",\n      \"$$items\": \"D\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-for-deep/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Toggle\n</button>\n<div />\n<div>\n  <div>\n    1\n  </div>\n  <div>\n    <div>\n      1.1\n    </div>\n  </div>\n  <div>\n    <div>\n      1.2\n    </div>\n  </div>\n  <div>\n    <div>\n      1.3\n    </div>\n  </div>\n</div>\n<div>\n  <div>\n    2\n  </div>\n  <div>\n    <div>\n      2.1\n    </div>\n  </div>\n  <div>\n    <div>\n      2.2\n    </div>\n  </div>\n  <div>\n    <div>\n      2.3\n    </div>\n  </div>\n</div>\n<div>\n  <div>\n    3\n  </div>\n  <div>\n    <div>\n      3.1\n    </div>\n  </div>\n  <div>\n    <div>\n      3.2\n    </div>\n  </div>\n  <div>\n    <div>\n      3.3\n    </div>\n  </div>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  \ndestroyed 3.1\ndestroyed 3.2\ndestroyed 3.3\ndestroyed 3\ndestroyed 1.3\ndestroyed 2.3\n</div>\n<div>\n  <div>\n    1\n  </div>\n  <div>\n    <div>\n      1.1\n    </div>\n  </div>\n  <div>\n    <div>\n      1.2\n    </div>\n  </div>\n</div>\n<div>\n  <div>\n    2\n  </div>\n  <div>\n    <div>\n      2.1\n    </div>\n  </div>\n  <div>\n    <div>\n      2.2\n    </div>\n  </div>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-for-deep/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  Toggle\n</button>\n<div />\n<div>\n  <div>\n    1\n  </div>\n  <div>\n    <div>\n      1.1\n    </div>\n  </div>\n  <div>\n    <div>\n      1.2\n    </div>\n  </div>\n  <div>\n    <div>\n      1.3\n    </div>\n  </div>\n</div>\n<div>\n  <div>\n    2\n  </div>\n  <div>\n    <div>\n      2.1\n    </div>\n  </div>\n  <div>\n    <div>\n      2.2\n    </div>\n  </div>\n  <div>\n    <div>\n      2.3\n    </div>\n  </div>\n</div>\n<div>\n  <div>\n    3\n  </div>\n  <div>\n    <div>\n      3.1\n    </div>\n  </div>\n  <div>\n    <div>\n      3.2\n    </div>\n  </div>\n  <div>\n    <div>\n      3.3\n    </div>\n  </div>\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT button, div0, div1, div2, div3, #comment\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  \ndestroyed 3.1\ndestroyed 3.2\ndestroyed 3.3\ndestroyed 3\ndestroyed 1.3\ndestroyed 2.3\n</div>\n<div>\n  <div>\n    1\n  </div>\n  <div>\n    <div>\n      1.1\n    </div>\n  </div>\n  <div>\n    <div>\n      1.2\n    </div>\n  </div>\n</div>\n<div>\n  <div>\n    2\n  </div>\n  <div>\n    <div>\n      2.1\n    </div>\n  </div>\n  <div>\n    <div>\n      2.2\n    </div>\n  </div>\n</div>\n<!---->\n```\n\n# Mutations\n```\nREMOVE div after div2\nREMOVE div after div1/div2\nREMOVE div after div2/div2\nINSERT #text\nREMOVE #text in div0\nINSERT #text\nREMOVE #text in div0\nINSERT #text\nREMOVE #text in div0\nINSERT #text\nREMOVE #text in div0\nINSERT #text\nREMOVE #text in div0\nINSERT div0/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-for-deep/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<div> </div>\";\nexport const $walks = /* next(1), get, out(1) */\"D l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $name__OR__write__script = _._script(\"__tests__/tags/child.marko_0_name_write\", $scope => (_.$signal($scope, 0).onabort = () => {\n  $scope.write(`destroyed ${$scope.name}`);\n}));\nconst $name__OR__write = /* @__PURE__ */_._or(5, $scope => {\n  _.$signalReset($scope, 0);\n  $name__OR__write__script($scope);\n});\nexport const $name = /* @__PURE__ */_._const(\"name\", $scope => {\n  _._text($scope[\"#text/0\"], $scope.name);\n  $name__OR__write($scope);\n});\nexport const $write = /* @__PURE__ */_._const(\"write\", $name__OR__write);\nexport const $input = ($scope, input) => {\n  $name($scope, input.name);\n  $write($scope, input.write);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-for-deep/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 820 (min) 418 (brotli)\nconst $name__OR__write__script = _._script(\n    \"a0\",\n    ($scope) =>\n      (_.$signal($scope, 0).onabort = () => {\n        $scope.e(`destroyed ${$scope.d}`);\n      }),\n  ),\n  $name__OR__write = _._or(5, ($scope) => {\n    (_.$signalReset($scope, 0), $name__OR__write__script($scope));\n  }),\n  $name = _._const(3, ($scope) => {\n    (_._text($scope.a, $scope.d), $name__OR__write($scope));\n  }),\n  $write$1 = _._const(4, $name__OR__write),\n  $for_content2__write = _._closure_get(\n    4,\n    ($scope) => $write$1($scope.a, $scope._._.e),\n    ($scope) => $scope._._,\n  ),\n  $for_content2__setup = ($scope) => {\n    ($for_content2__write($scope),\n      $for_content2__outerItem._($scope),\n      $scope.a);\n  },\n  $for_content2__outerItem__OR__middleItem = _._or(3, ($scope) =>\n    $name($scope.a, `${$scope._.d}.${$scope.c}`),\n  ),\n  $for_content2__outerItem = _._for_closure(\n    1,\n    $for_content2__outerItem__OR__middleItem,\n  ),\n  $for_content2__middleItem = _._const(\n    2,\n    $for_content2__outerItem__OR__middleItem,\n  ),\n  $for_content2__$params = ($scope, $params3) =>\n    $for_content2__middleItem($scope, $params3[0]),\n  $for_content__for = _._for_of(\n    1,\n    \"<div><div> </div></div>\",\n    \"D/D l&l\",\n    $for_content2__setup,\n    $for_content2__$params,\n  ),\n  $for_content__items = _._for_closure(2, ($scope) =>\n    $for_content__for($scope, [$scope._.d]),\n  ),\n  $for_content__setup = ($scope) => {\n    ($for_content__items._($scope), $for_content__write._($scope), $scope.a);\n  },\n  $for_content__write = _._for_closure(2, ($scope) =>\n    $write$1($scope.a, $scope._.e),\n  ),\n  $for_content__outerItem = _._const(3, ($scope) => {\n    ($name($scope.a, `${$scope.d}`), $for_content2__outerItem($scope));\n  }),\n  $for_content__$params = ($scope, $params2) =>\n    $for_content__outerItem($scope, $params2[0]),\n  $for = _._for_of(\n    2,\n    \"<div><div> </div><!></div>\",\n    \"D/D l&%l\",\n    $for_content__setup,\n    $for_content__$params,\n  ),\n  $items__script = _._script(\"b1\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $items($scope, $scope.d?.length ? $scope.d.slice(0, -1) : [1, 2, 3]);\n    }),\n  ),\n  $items = _._let(3, ($scope) => {\n    ($for($scope, [$scope.d]),\n      $for_content__items($scope),\n      $items__script($scope));\n  });\n(_._resume(\"b0\", function ($scope) {\n  return function (msg) {\n    $scope.b.innerHTML += \"\\n\" + msg;\n  };\n}),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-for-deep/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button>Toggle</button><div></div><!><!>\";\nexport const $walks = /* get, over(1), get, over(1), replace, over(2) */\" b b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _child, $write as _child_input_write, $name as _child_input_name, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nconst $for_content2__write = /* @__PURE__ */_._closure_get(\"write\", $scope => _child_input_write($scope[\"#childScope/0\"], $scope._._.write), $scope => $scope._._);\nconst $for_content2__setup = $scope => {\n  $for_content2__write($scope);\n  $for_content2__outerItem._($scope);\n  _child($scope[\"#childScope/0\"]);\n};\nconst $for_content2__outerItem__OR__middleItem = /* @__PURE__ */_._or(3, $scope => _child_input_name($scope[\"#childScope/0\"], `${$scope._.outerItem}.${$scope.middleItem}`));\nconst $for_content2__outerItem = /* @__PURE__ */_._for_closure(\"#text/1\", $for_content2__outerItem__OR__middleItem);\nconst $for_content2__middleItem = /* @__PURE__ */_._const(\"middleItem\", $for_content2__outerItem__OR__middleItem);\nconst $for_content2__$params = ($scope, $params3) => $for_content2__middleItem($scope, $params3[0]);\nconst $for_content__for = /* @__PURE__ */_._for_of(\"#text/1\", `<div>${_child_template}</div>`, /* next(1), <child>, out(1) */`D/${_child_walks}&l`, $for_content2__setup, $for_content2__$params);\nconst $for_content__items = /* @__PURE__ */_._for_closure(\"#text/2\", $scope => $for_content__for($scope, [$scope._.items]));\nconst $for_content__setup = $scope => {\n  $for_content__items._($scope);\n  $for_content__write._($scope);\n  _child($scope[\"#childScope/0\"]);\n};\nconst $for_content__write = /* @__PURE__ */_._for_closure(\"#text/2\", $scope => _child_input_write($scope[\"#childScope/0\"], $scope._.write));\nconst $for_content__outerItem = /* @__PURE__ */_._const(\"outerItem\", $scope => {\n  _child_input_name($scope[\"#childScope/0\"], `${$scope.outerItem}`);\n  $for_content2__outerItem($scope);\n});\nconst $for_content__$params = ($scope, $params2) => $for_content__outerItem($scope, $params2[0]);\nconst $for = /* @__PURE__ */_._for_of(\"#text/2\", `<div>${_child_template}<!></div>`, /* next(1), <child>, replace, out(1) */`D/${_child_walks}&%l`, $for_content__setup, $for_content__$params);\nconst $items__script = _._script(\"__tests__/template.marko_0_items\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $items($scope, $scope.items?.length ? $scope.items.slice(0, -1) : [1, 2, 3]);\n}));\nconst $items = /* @__PURE__ */_._let(\"items/3\", $scope => {\n  $for($scope, [$scope.items]);\n  $for_content__items($scope);\n  $items__script($scope);\n});\nconst $write2 = /* @__PURE__ */_._const(\"write\");\nexport function $setup($scope) {\n  $items($scope, [1, 2, 3]);\n  $write2($scope, $write($scope));\n}\nfunction $write($scope) {\n  return function (msg) {\n    _._el_read($scope[\"#div/1\"]).innerHTML += '\\n' + msg;\n  };\n}\n_._resume(\"__tests__/template.marko_0/write\", $write);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-for-deep/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    name,\n    write\n  } = input;\n  _._html(`<div>${_._escape(name)}${_._el_resume($scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.name */0))}</div>`);\n  _._script($scope0_id, \"__tests__/tags/child.marko_0_name_write\");\n  _._scope($scope0_id, {\n    name,\n    write\n  }, \"__tests__/tags/child.marko\", 0, {\n    name: \"1:9\",\n    write: \"1:15\"\n  });\n  _._resume_branch($scope0_id);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-for-deep/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _child from \"./tags/child.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let items = [1, 2, 3];\n  const write = _._resume(function (msg) {\n    (el => el())(_._el_read_error).innerHTML += '\\n' + msg;\n  }, \"__tests__/template.marko_0/write\", $scope0_id);\n  _._html(`<button>Toggle</button>${_._el_resume($scope0_id, \"#button/0\")}<div></div>${_._el_resume($scope0_id, \"#div/1\")}`);\n  _._for_of(items, outerItem => {\n    const $scope1_id = _._scope_id();\n    _._html(\"<div>\");\n    const $childScope = _._peek_scope_id();\n    _._set_serialize_reason(/* items */1);\n    _child({\n      write: write,\n      name: `${outerItem}`\n    });\n    _._for_of(items, middleItem => {\n      const $scope2_id = _._scope_id();\n      _._html(\"<div>\");\n      const $childScope2 = _._peek_scope_id();\n      _._set_serialize_reason(/* items */1);\n      _child({\n        write: write,\n        name: `${outerItem}.${middleItem}`\n      });\n      _._html(\"</div>\");\n      _._scope($scope2_id, {\n        _: _._scope_with_id($scope1_id),\n        \"#childScope/0\": _._existing_scope($childScope2)\n      }, \"__tests__/template.marko\", \"10:6\");\n    }, 0, $scope1_id, \"#text/1\", /* items */1, /* items */1, /* items */1, 0, 1);\n    _._html(\"</div>\");\n    _._scope($scope1_id, {\n      outerItem,\n      _: _._scope_with_id($scope0_id),\n      \"#childScope/0\": _._existing_scope($childScope)\n    }, \"__tests__/template.marko\", \"7:2\", {\n      outerItem: \"7:6\"\n    });\n  }, 0, $scope0_id, \"#text/2\", /* items */1, /* items */1, /* items */1, 0, 1);\n  _._script($scope0_id, \"__tests__/template.marko_0_items\");\n  _._scope($scope0_id, {\n    items,\n    write\n  }, \"__tests__/template.marko\", 0, {\n    items: \"1:6\",\n    write: \"5:8\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-for-deep/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Toggle\n</button>\n<div />\n<div>\n  <div>\n    1\n  </div>\n  <div>\n    <div>\n      1.1\n    </div>\n  </div>\n  <div>\n    <div>\n      1.2\n    </div>\n  </div>\n  <div>\n    <div>\n      1.3\n    </div>\n  </div>\n</div>\n<div>\n  <div>\n    2\n  </div>\n  <div>\n    <div>\n      2.1\n    </div>\n  </div>\n  <div>\n    <div>\n      2.2\n    </div>\n  </div>\n  <div>\n    <div>\n      2.3\n    </div>\n  </div>\n</div>\n<div>\n  <div>\n    3\n  </div>\n  <div>\n    <div>\n      3.1\n    </div>\n  </div>\n  <div>\n    <div>\n      3.2\n    </div>\n  </div>\n  <div>\n    <div>\n      3.3\n    </div>\n  </div>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  \ndestroyed 3.1\ndestroyed 3.2\ndestroyed 3.3\ndestroyed 3\ndestroyed 1.3\ndestroyed 2.3\n</div>\n<div>\n  <div>\n    1\n  </div>\n  <div>\n    <div>\n      1.1\n    </div>\n  </div>\n  <div>\n    <div>\n      1.2\n    </div>\n  </div>\n</div>\n<div>\n  <div>\n    2\n  </div>\n  <div>\n    <div>\n      2.1\n    </div>\n  </div>\n  <div>\n    <div>\n      2.2\n    </div>\n  </div>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-for-deep/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/0-->\n    <div />\n    <!--M_*1 #div/1-->\n    <div>\n      <div>\n        1\n        <!--M_*3 #text/0-->\n      </div>\n      <div>\n        <div>\n          1.1\n          <!--M_*5 #text/0-->\n        </div>\n      </div>\n      <div>\n        <div>\n          1.2\n          <!--M_*7 #text/0-->\n        </div>\n      </div>\n      <div>\n        <div>\n          1.3\n          <!--M_*9 #text/0-->\n        </div>\n      </div>\n      <!--M_|2 #text/1 8 6 4-->\n    </div>\n    <div>\n      <div>\n        2\n        <!--M_*11 #text/0-->\n      </div>\n      <div>\n        <div>\n          2.1\n          <!--M_*13 #text/0-->\n        </div>\n      </div>\n      <div>\n        <div>\n          2.2\n          <!--M_*15 #text/0-->\n        </div>\n      </div>\n      <div>\n        <div>\n          2.3\n          <!--M_*17 #text/0-->\n        </div>\n      </div>\n      <!--M_|10 #text/1 16 14 12-->\n    </div>\n    <div>\n      <div>\n        3\n        <!--M_*19 #text/0-->\n      </div>\n      <div>\n        <div>\n          3.1\n          <!--M_*21 #text/0-->\n        </div>\n      </div>\n      <div>\n        <div>\n          3.2\n          <!--M_*23 #text/0-->\n        </div>\n      </div>\n      <div>\n        <div>\n          3.3\n          <!--M_*25 #text/0-->\n        </div>\n      </div>\n      <!--M_|18 #text/1 24 22 20-->\n    </div>\n    <!--M_|1 #text/2 18 10 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.q = [0, _.a = {\n            items: [1, 2, 3]\n          }, _.c = {\n            outerItem: 1,\n            _: _.a,\n            \"#childScope/0\": _.b = {\n              name: \"1\",\n              \"#ClosestBranchId\": 2\n            }\n          }, _.b,\n          {\n            _: _.c,\n            \"#childScope/0\": _.d = {\n              name: \"1.1\",\n              \"#ClosestBranchId\": 4\n            }\n          }, _.d,\n          {\n            _: _.c,\n            \"#childScope/0\": _.e = {\n              name: \"1.2\",\n              \"#ClosestBranchId\": 6\n            }\n          }, _.e,\n          {\n            _: _.c,\n            \"#childScope/0\": _.f = {\n              name: \"1.3\",\n              \"#ClosestBranchId\": 8\n            }\n          }, _.f, _.h = {\n            outerItem: 2,\n            _: _.a,\n            \"#childScope/0\": _.g = {\n              name: \"2\",\n              \"#ClosestBranchId\": 10\n            }\n          }, _.g,\n          {\n            _: _.h,\n            \"#childScope/0\": _.i = {\n              name: \"2.1\",\n              \"#ClosestBranchId\": 12\n            }\n          }, _.i,\n          {\n            _: _.h,\n            \"#childScope/0\": _.j = {\n              name: \"2.2\",\n              \"#ClosestBranchId\": 14\n            }\n          }, _.j,\n          {\n            _: _.h,\n            \"#childScope/0\": _.k = {\n              name: \"2.3\",\n              \"#ClosestBranchId\": 16\n            }\n          }, _.k, _.m = {\n            outerItem: 3,\n            _: _.a,\n            \"#childScope/0\": _.l = {\n              name: \"3\",\n              \"#ClosestBranchId\": 18\n            }\n          }, _.l,\n          {\n            _: _.m,\n            \"#childScope/0\": _.n = {\n              name: \"3.1\",\n              \"#ClosestBranchId\": 20\n            }\n          }, _.n,\n          {\n            _: _.m,\n            \"#childScope/0\": _.o = {\n              name: \"3.2\",\n              \"#ClosestBranchId\": 22\n            }\n          }, _.o,\n          {\n            _: _.m,\n            \"#childScope/0\": _.p = {\n              name: \"3.3\",\n              \"#ClosestBranchId\": 24\n            }\n          }, _.p], _.a.write = _.b.write = _.d.write = _.e.write = _.f.write =\n          _.g.write = _.i.write = _.j.write = _.k.write = _.l.write = _.n\n          .write = _.o.write = _.p.write = _._[\n            \"__tests__/template.marko_0/write\"\n            ](_.a), _.q),\n        \"__tests__/tags/child.marko_0_name_write 3 5 7 9 11 13 15 17 19 21 23 25 __tests__/template.marko_0_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      \ndestroyed 3.1\ndestroyed 3.2\ndestroyed 3.3\ndestroyed 3\ndestroyed 1.3\ndestroyed 2.3\n    </div>\n    <!--M_*1 #div/1-->\n    <div>\n      <div>\n        1\n        <!--M_*3 #text/0-->\n      </div>\n      <div>\n        <div>\n          1.1\n          <!--M_*5 #text/0-->\n        </div>\n      </div>\n      <div>\n        <div>\n          1.2\n          <!--M_*7 #text/0-->\n        </div>\n      </div>\n      <!--M_|2 #text/1 8 6 4-->\n    </div>\n    <div>\n      <div>\n        2\n        <!--M_*11 #text/0-->\n      </div>\n      <div>\n        <div>\n          2.1\n          <!--M_*13 #text/0-->\n        </div>\n      </div>\n      <div>\n        <div>\n          2.2\n          <!--M_*15 #text/0-->\n        </div>\n      </div>\n      <!--M_|10 #text/1 16 14 12-->\n    </div>\n    <!--M_|1 #text/2 18 10 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.q = [0, _.a = {\n            items: [1, 2, 3]\n          }, _.c = {\n            outerItem: 1,\n            _: _.a,\n            \"#childScope/0\": _.b = {\n              name: \"1\",\n              \"#ClosestBranchId\": 2\n            }\n          }, _.b,\n          {\n            _: _.c,\n            \"#childScope/0\": _.d = {\n              name: \"1.1\",\n              \"#ClosestBranchId\": 4\n            }\n          }, _.d,\n          {\n            _: _.c,\n            \"#childScope/0\": _.e = {\n              name: \"1.2\",\n              \"#ClosestBranchId\": 6\n            }\n          }, _.e,\n          {\n            _: _.c,\n            \"#childScope/0\": _.f = {\n              name: \"1.3\",\n              \"#ClosestBranchId\": 8\n            }\n          }, _.f, _.h = {\n            outerItem: 2,\n            _: _.a,\n            \"#childScope/0\": _.g = {\n              name: \"2\",\n              \"#ClosestBranchId\": 10\n            }\n          }, _.g,\n          {\n            _: _.h,\n            \"#childScope/0\": _.i = {\n              name: \"2.1\",\n              \"#ClosestBranchId\": 12\n            }\n          }, _.i,\n          {\n            _: _.h,\n            \"#childScope/0\": _.j = {\n              name: \"2.2\",\n              \"#ClosestBranchId\": 14\n            }\n          }, _.j,\n          {\n            _: _.h,\n            \"#childScope/0\": _.k = {\n              name: \"2.3\",\n              \"#ClosestBranchId\": 16\n            }\n          }, _.k, _.m = {\n            outerItem: 3,\n            _: _.a,\n            \"#childScope/0\": _.l = {\n              name: \"3\",\n              \"#ClosestBranchId\": 18\n            }\n          }, _.l,\n          {\n            _: _.m,\n            \"#childScope/0\": _.n = {\n              name: \"3.1\",\n              \"#ClosestBranchId\": 20\n            }\n          }, _.n,\n          {\n            _: _.m,\n            \"#childScope/0\": _.o = {\n              name: \"3.2\",\n              \"#ClosestBranchId\": 22\n            }\n          }, _.o,\n          {\n            _: _.m,\n            \"#childScope/0\": _.p = {\n              name: \"3.3\",\n              \"#ClosestBranchId\": 24\n            }\n          }, _.p], _.a.write = _.b.write = _.d.write = _.e.write = _.f.write =\n          _.g.write = _.i.write = _.j.write = _.k.write = _.l.write = _.n\n          .write = _.o.write = _.p.write = _._[\n            \"__tests__/template.marko_0/write\"\n            ](_.a), _.q),\n        \"__tests__/tags/child.marko_0_name_write 3 5 7 9 11 13 15 17 19 21 23 25 __tests__/template.marko_0_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE div after html/body/div2\nREMOVE div after html/body/div1/div2\nREMOVE div after html/body/div2/div2\nINSERT #text\nREMOVE #text in html/body/div0\nINSERT #text\nREMOVE #text in html/body/div0\nINSERT #text\nREMOVE #text in html/body/div0\nINSERT #text\nREMOVE #text in html/body/div0\nINSERT #text\nREMOVE #text in html/body/div0\nINSERT html/body/div0/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-for-deep/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  Toggle\n</button>\n<div />\n<div>\n  <div>\n    1\n  </div>\n  <div>\n    <div>\n      1.1\n    </div>\n  </div>\n  <div>\n    <div>\n      1.2\n    </div>\n  </div>\n  <div>\n    <div>\n      1.3\n    </div>\n  </div>\n</div>\n<div>\n  <div>\n    2\n  </div>\n  <div>\n    <div>\n      2.1\n    </div>\n  </div>\n  <div>\n    <div>\n      2.2\n    </div>\n  </div>\n  <div>\n    <div>\n      2.3\n    </div>\n  </div>\n</div>\n<div>\n  <div>\n    3\n  </div>\n  <div>\n    <div>\n      3.1\n    </div>\n  </div>\n  <div>\n    <div>\n      3.2\n    </div>\n  </div>\n  <div>\n    <div>\n      3.3\n    </div>\n  </div>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-for-deep/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>Toggle</button><!--M_*1 #button/0--><div></div><!--M_*1 #div/1--><div><div>1<!--M_*3 #text/0--></div><div><div>1.1<!--M_*5 #text/0--></div></div><div><div>1.2<!--M_*7 #text/0--></div></div><div><div>1.3<!--M_*9 #text/0--></div></div><!--M_|2 #text/1 8 6 4--></div><div><div>2<!--M_*11 #text/0--></div><div><div>2.1<!--M_*13 #text/0--></div></div><div><div>2.2<!--M_*15 #text/0--></div></div><div><div>2.3<!--M_*17 #text/0--></div></div><!--M_|10 #text/1 16 14 12--></div><div><div>3<!--M_*19 #text/0--></div><div><div>3.1<!--M_*21 #text/0--></div></div><div><div>3.2<!--M_*23 #text/0--></div></div><div><div>3.3<!--M_*25 #text/0--></div></div><!--M_|18 #text/1 24 22 20--></div><!--M_|1 #text/2 18 10 2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.q=[0,_.a={items:[1,2,3]},_.c={outerItem:1,_:_.a,\"#childScope/0\":_.b={name:\"1\",\"#ClosestBranchId\":2}},_.b,{_:_.c,\"#childScope/0\":_.d={name:\"1.1\",\"#ClosestBranchId\":4}},_.d,{_:_.c,\"#childScope/0\":_.e={name:\"1.2\",\"#ClosestBranchId\":6}},_.e,{_:_.c,\"#childScope/0\":_.f={name:\"1.3\",\"#ClosestBranchId\":8}},_.f,_.h={outerItem:2,_:_.a,\"#childScope/0\":_.g={name:\"2\",\"#ClosestBranchId\":10}},_.g,{_:_.h,\"#childScope/0\":_.i={name:\"2.1\",\"#ClosestBranchId\":12}},_.i,{_:_.h,\"#childScope/0\":_.j={name:\"2.2\",\"#ClosestBranchId\":14}},_.j,{_:_.h,\"#childScope/0\":_.k={name:\"2.3\",\"#ClosestBranchId\":16}},_.k,_.m={outerItem:3,_:_.a,\"#childScope/0\":_.l={name:\"3\",\"#ClosestBranchId\":18}},_.l,{_:_.m,\"#childScope/0\":_.n={name:\"3.1\",\"#ClosestBranchId\":20}},_.n,{_:_.m,\"#childScope/0\":_.o={name:\"3.2\",\"#ClosestBranchId\":22}},_.o,{_:_.m,\"#childScope/0\":_.p={name:\"3.3\",\"#ClosestBranchId\":24}},_.p],_.a.write=_.b.write=_.d.write=_.e.write=_.f.write=_.g.write=_.i.write=_.j.write=_.k.write=_.l.write=_.n.write=_.o.write=_.p.write=_._[\"__tests__/template.marko_0/write\"](_.a),_.q),\"__tests__/tags/child.marko_0_name_write 3 5 7 9 11 13 15 17 19 21 23 25 __tests__/template.marko_0_items 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/0-->\n    <div />\n    <!--M_*1 #div/1-->\n    <div>\n      <div>\n        1\n        <!--M_*3 #text/0-->\n      </div>\n      <div>\n        <div>\n          1.1\n          <!--M_*5 #text/0-->\n        </div>\n      </div>\n      <div>\n        <div>\n          1.2\n          <!--M_*7 #text/0-->\n        </div>\n      </div>\n      <div>\n        <div>\n          1.3\n          <!--M_*9 #text/0-->\n        </div>\n      </div>\n      <!--M_|2 #text/1 8 6 4-->\n    </div>\n    <div>\n      <div>\n        2\n        <!--M_*11 #text/0-->\n      </div>\n      <div>\n        <div>\n          2.1\n          <!--M_*13 #text/0-->\n        </div>\n      </div>\n      <div>\n        <div>\n          2.2\n          <!--M_*15 #text/0-->\n        </div>\n      </div>\n      <div>\n        <div>\n          2.3\n          <!--M_*17 #text/0-->\n        </div>\n      </div>\n      <!--M_|10 #text/1 16 14 12-->\n    </div>\n    <div>\n      <div>\n        3\n        <!--M_*19 #text/0-->\n      </div>\n      <div>\n        <div>\n          3.1\n          <!--M_*21 #text/0-->\n        </div>\n      </div>\n      <div>\n        <div>\n          3.2\n          <!--M_*23 #text/0-->\n        </div>\n      </div>\n      <div>\n        <div>\n          3.3\n          <!--M_*25 #text/0-->\n        </div>\n      </div>\n      <!--M_|18 #text/1 24 22 20-->\n    </div>\n    <!--M_|1 #text/2 18 10 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.q = [0, _.a = {\n            items: [1, 2, 3]\n          }, _.c = {\n            outerItem: 1,\n            _: _.a,\n            \"#childScope/0\": _.b = {\n              name: \"1\",\n              \"#ClosestBranchId\": 2\n            }\n          }, _.b,\n          {\n            _: _.c,\n            \"#childScope/0\": _.d = {\n              name: \"1.1\",\n              \"#ClosestBranchId\": 4\n            }\n          }, _.d,\n          {\n            _: _.c,\n            \"#childScope/0\": _.e = {\n              name: \"1.2\",\n              \"#ClosestBranchId\": 6\n            }\n          }, _.e,\n          {\n            _: _.c,\n            \"#childScope/0\": _.f = {\n              name: \"1.3\",\n              \"#ClosestBranchId\": 8\n            }\n          }, _.f, _.h = {\n            outerItem: 2,\n            _: _.a,\n            \"#childScope/0\": _.g = {\n              name: \"2\",\n              \"#ClosestBranchId\": 10\n            }\n          }, _.g,\n          {\n            _: _.h,\n            \"#childScope/0\": _.i = {\n              name: \"2.1\",\n              \"#ClosestBranchId\": 12\n            }\n          }, _.i,\n          {\n            _: _.h,\n            \"#childScope/0\": _.j = {\n              name: \"2.2\",\n              \"#ClosestBranchId\": 14\n            }\n          }, _.j,\n          {\n            _: _.h,\n            \"#childScope/0\": _.k = {\n              name: \"2.3\",\n              \"#ClosestBranchId\": 16\n            }\n          }, _.k, _.m = {\n            outerItem: 3,\n            _: _.a,\n            \"#childScope/0\": _.l = {\n              name: \"3\",\n              \"#ClosestBranchId\": 18\n            }\n          }, _.l,\n          {\n            _: _.m,\n            \"#childScope/0\": _.n = {\n              name: \"3.1\",\n              \"#ClosestBranchId\": 20\n            }\n          }, _.n,\n          {\n            _: _.m,\n            \"#childScope/0\": _.o = {\n              name: \"3.2\",\n              \"#ClosestBranchId\": 22\n            }\n          }, _.o,\n          {\n            _: _.m,\n            \"#childScope/0\": _.p = {\n              name: \"3.3\",\n              \"#ClosestBranchId\": 24\n            }\n          }, _.p], _.a.write = _.b.write = _.d.write = _.e.write = _.f.write =\n          _.g.write = _.i.write = _.j.write = _.k.write = _.l.write = _.n\n          .write = _.o.write = _.p.write = _._[\n            \"__tests__/template.marko_0/write\"\n            ](_.a), _.q),\n        \"__tests__/tags/child.marko_0_name_write 3 5 7 9 11 13 15 17 19 21 23 25 __tests__/template.marko_0_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment0\nINSERT html/body/div0\nINSERT html/body/#comment1\nINSERT html/body/div1\nINSERT html/body/div1/div0\nINSERT html/body/div1/div0/#text\nINSERT html/body/div1/div0/#comment\nINSERT html/body/div1/div1\nINSERT html/body/div1/div1/div\nINSERT html/body/div1/div1/div/#text\nINSERT html/body/div1/div1/div/#comment\nINSERT html/body/div1/div2\nINSERT html/body/div1/div2/div\nINSERT html/body/div1/div2/div/#text\nINSERT html/body/div1/div2/div/#comment\nINSERT html/body/div1/div3\nINSERT html/body/div1/div3/div\nINSERT html/body/div1/div3/div/#text\nINSERT html/body/div1/div3/div/#comment\nINSERT html/body/div1/#comment\nINSERT html/body/div2\nINSERT html/body/div2/div0\nINSERT html/body/div2/div0/#text\nINSERT html/body/div2/div0/#comment\nINSERT html/body/div2/div1\nINSERT html/body/div2/div1/div\nINSERT html/body/div2/div1/div/#text\nINSERT html/body/div2/div1/div/#comment\nINSERT html/body/div2/div2\nINSERT html/body/div2/div2/div\nINSERT html/body/div2/div2/div/#text\nINSERT html/body/div2/div2/div/#comment\nINSERT html/body/div2/div3\nINSERT html/body/div2/div3/div\nINSERT html/body/div2/div3/div/#text\nINSERT html/body/div2/div3/div/#comment\nINSERT html/body/div2/#comment\nINSERT html/body/div3\nINSERT html/body/div3/div0\nINSERT html/body/div3/div0/#text\nINSERT html/body/div3/div0/#comment\nINSERT html/body/div3/div1\nINSERT html/body/div3/div1/div\nINSERT html/body/div3/div1/div/#text\nINSERT html/body/div3/div1/div/#comment\nINSERT html/body/div3/div2\nINSERT html/body/div3/div2/div\nINSERT html/body/div3/div2/div/#text\nINSERT html/body/div3/div2/div/#comment\nINSERT html/body/div3/div3\nINSERT html/body/div3/div3/div\nINSERT html/body/div3/div3/div/#text\nINSERT html/body/div3/div3/div/#comment\nINSERT html/body/div3/#comment\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-for-deep/tags/child.marko",
    "content": "<const/{name, write}=input/>\n<div>${name}</div>\n<script>\n  // TODO: In SSR this effect will be resumed depth first while CSR will be\n  // queued breadth first so the output will be different. Figure out if we\n  // care and then restore the `write` call below.\n\n  // write(`mounted ${name}`);\n  $signal.onabort = () => {\n    write(`destroyed ${name}`)\n  };\n</script>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-for-deep/template.marko",
    "content": "<let/items=[1,2,3]/>\n<button onClick() { items = items.length ? items.slice(0, -1) : [1,2,3] }>Toggle</button>\n\n<div/el/>\n<const/write(msg) { el().innerHTML += '\\n' + msg } />\n\n<for|outerItem| of=items>\n  <div>\n    <child write=write name=`${outerItem}` />\n    <for|middleItem| of=items>\n      <div>\n        <child write=write name=`${outerItem}.${middleItem}` />\n        <!-- <for|innerItem| of=items>\n          <child write=write name=`${outerItem}.${middleItem}.${innerItem}` />\n        </for> -->\n      </div>\n    </for>\n  </div>\n</for>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-for-deep/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-for-shallow/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"o\",\n      \"$init\": \"t\",\n      \"$$name__OR__write__script\": \"n\",\n      \"$$name__OR__write\": \"r\",\n      \"$$name\": \"e\",\n      \"$$write$1\": \"i\",\n      \"$$for_content__write\": \"s\",\n      \"$$for_content__setup\": \"_\",\n      \"$$for_content__$params\": \"a\",\n      \"$$for\": \"d\",\n      \"$$items__script\": \"c\",\n      \"$$items\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-for-shallow/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Toggle\n</button>\n<div>\n  \nmounted 1\nmounted 2\nmounted 3\n</div>\n<div>\n  1\n</div>\n<div>\n  2\n</div>\n<div>\n  3\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  \nmounted 1\nmounted 2\nmounted 3\ndestroyed 3\n</div>\n<div>\n  1\n</div>\n<div>\n  2\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  \nmounted 1\nmounted 2\nmounted 3\ndestroyed 3\ndestroyed 2\n</div>\n<div>\n  1\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  \nmounted 1\nmounted 2\nmounted 3\ndestroyed 3\ndestroyed 2\ndestroyed 1\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  \nmounted 1\nmounted 2\nmounted 3\ndestroyed 3\ndestroyed 2\ndestroyed 1\nmounted 1\nmounted 2\nmounted 3\n</div>\n<div>\n  1\n</div>\n<div>\n  2\n</div>\n<div>\n  3\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-for-shallow/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  Toggle\n</button>\n<div>\n  \nmounted 1\nmounted 2\nmounted 3\n</div>\n<div>\n  1\n</div>\n<div>\n  2\n</div>\n<div>\n  3\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT button, div0, div1, div2, div3, #comment\nINSERT #text\nREMOVE #text in div0\nINSERT #text\nREMOVE #text in div0\nINSERT div0/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  \nmounted 1\nmounted 2\nmounted 3\ndestroyed 3\n</div>\n<div>\n  1\n</div>\n<div>\n  2\n</div>\n<!---->\n```\n\n# Mutations\n```\nREMOVE div after div2\nREMOVE #text in div0\nINSERT div0/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  \nmounted 1\nmounted 2\nmounted 3\ndestroyed 3\ndestroyed 2\n</div>\n<div>\n  1\n</div>\n<!---->\n```\n\n# Mutations\n```\nREMOVE div after div1\nREMOVE #text in div0\nINSERT div0/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  \nmounted 1\nmounted 2\nmounted 3\ndestroyed 3\ndestroyed 2\ndestroyed 1\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE div after div\nREMOVE #text in div\nINSERT div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  \nmounted 1\nmounted 2\nmounted 3\ndestroyed 3\ndestroyed 2\ndestroyed 1\nmounted 1\nmounted 2\nmounted 3\n</div>\n<div>\n  1\n</div>\n<div>\n  2\n</div>\n<div>\n  3\n</div>\n<!---->\n```\n\n# Mutations\n```\nREMOVE #text after div0\nINSERT div1\nINSERT div2\nINSERT div3\nREMOVE #text in div0\nINSERT #text\nREMOVE #text in div0\nINSERT #text\nREMOVE #text in div0\nINSERT div0/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-for-shallow/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<div> </div>\";\nexport const $walks = /* next(1), get, out(1) */\"D l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $name__OR__write__script = _._script(\"__tests__/tags/child.marko_0_name_write\", $scope => {\n  $scope.write(`mounted ${$scope.name}`);\n  _.$signal($scope, 0).onabort = () => {\n    $scope.write(`destroyed ${$scope.name}`);\n  };\n});\nconst $name__OR__write = /* @__PURE__ */_._or(5, $scope => {\n  _.$signalReset($scope, 0);\n  $name__OR__write__script($scope);\n});\nexport const $name = /* @__PURE__ */_._const(\"name\", $scope => {\n  _._text($scope[\"#text/0\"], $scope.name);\n  $name__OR__write($scope);\n});\nexport const $write = /* @__PURE__ */_._const(\"write\", $name__OR__write);\nexport const $input = ($scope, input) => {\n  $name($scope, input.name);\n  $write($scope, input.write);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-for-shallow/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 534 (min) 313 (brotli)\nconst $name__OR__write__script = _._script(\"a0\", ($scope) => {\n    ($scope.e(`mounted ${$scope.d}`),\n      (_.$signal($scope, 0).onabort = () => {\n        $scope.e(`destroyed ${$scope.d}`);\n      }));\n  }),\n  $name__OR__write = _._or(5, ($scope) => {\n    (_.$signalReset($scope, 0), $name__OR__write__script($scope));\n  }),\n  $name = _._const(3, ($scope) => {\n    (_._text($scope.a, $scope.d), $name__OR__write($scope));\n  }),\n  $write$1 = _._const(4, $name__OR__write),\n  $for_content__write = _._for_closure(2, ($scope) =>\n    $write$1($scope.a, $scope._.e),\n  ),\n  $for_content__setup = ($scope) => {\n    ($for_content__write._($scope), $scope.a);\n  },\n  $for_content__$params = ($scope, $params2) =>\n    (($scope, item) => $name($scope.a, item))($scope, $params2[0]),\n  $for = _._for_of(\n    2,\n    \"<div> </div>\",\n    \"/D l&\",\n    $for_content__setup,\n    $for_content__$params,\n  ),\n  $items__script = _._script(\"b1\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $items($scope, $scope.d?.length ? $scope.d.slice(0, -1) : [1, 2, 3]);\n    }),\n  ),\n  $items = _._let(3, ($scope) => {\n    ($for($scope, [$scope.d]), $items__script($scope));\n  });\n(_._resume(\"b0\", function ($scope) {\n  return function (msg) {\n    $scope.b.innerHTML += \"\\n\" + msg;\n  };\n}),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-for-shallow/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button>Toggle</button><div></div><!><!>\";\nexport const $walks = /* get, over(1), get, over(1), replace, over(2) */\" b b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _child, $write as _child_input_write, $name as _child_input_name, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nconst $for_content__write = /* @__PURE__ */_._for_closure(\"#text/2\", $scope => _child_input_write($scope[\"#childScope/0\"], $scope._.write));\nconst $for_content__setup = $scope => {\n  $for_content__write._($scope);\n  _child($scope[\"#childScope/0\"]);\n};\nconst $for_content__item = ($scope, item) => _child_input_name($scope[\"#childScope/0\"], item);\nconst $for_content__$params = ($scope, $params2) => $for_content__item($scope, $params2[0]);\nconst $for = /* @__PURE__ */_._for_of(\"#text/2\", _child_template, /* <child> */`/${_child_walks}&`, $for_content__setup, $for_content__$params);\nconst $items__script = _._script(\"__tests__/template.marko_0_items\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $items($scope, $scope.items?.length ? $scope.items.slice(0, -1) : [1, 2, 3]);\n}));\nconst $items = /* @__PURE__ */_._let(\"items/3\", $scope => {\n  $for($scope, [$scope.items]);\n  $items__script($scope);\n});\nconst $write2 = /* @__PURE__ */_._const(\"write\");\nexport function $setup($scope) {\n  $items($scope, [1, 2, 3]);\n  $write2($scope, $write($scope));\n}\nfunction $write($scope) {\n  return function (msg) {\n    _._el_read($scope[\"#div/1\"]).innerHTML += '\\n' + msg;\n  };\n}\n_._resume(\"__tests__/template.marko_0/write\", $write);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-for-shallow/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    name,\n    write\n  } = input;\n  _._html(`<div>${_._escape(name)}${_._el_resume($scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.name */0))}</div>`);\n  _._script($scope0_id, \"__tests__/tags/child.marko_0_name_write\");\n  _._scope($scope0_id, {\n    name,\n    write\n  }, \"__tests__/tags/child.marko\", 0, {\n    name: \"1:9\",\n    write: \"1:15\"\n  });\n  _._resume_branch($scope0_id);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-for-shallow/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _child from \"./tags/child.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let items = [1, 2, 3];\n  const write = _._resume(function (msg) {\n    (el => el())(_._el_read_error).innerHTML += '\\n' + msg;\n  }, \"__tests__/template.marko_0/write\", $scope0_id);\n  _._html(`<button>Toggle</button>${_._el_resume($scope0_id, \"#button/0\")}<div></div>${_._el_resume($scope0_id, \"#div/1\")}`);\n  _._for_of(items, item => {\n    const $scope1_id = _._scope_id();\n    const $childScope = _._peek_scope_id();\n    _._set_serialize_reason(/* items */1);\n    _child({\n      write: write,\n      name: item\n    });\n    _._scope($scope1_id, {\n      \"#childScope/0\": _._existing_scope($childScope)\n    }, \"__tests__/template.marko\", \"7:2\");\n  }, 0, $scope0_id, \"#text/2\", /* items */1, /* items */1, /* items */1, 0, 1);\n  _._script($scope0_id, \"__tests__/template.marko_0_items\");\n  _._scope($scope0_id, {\n    items,\n    write\n  }, \"__tests__/template.marko\", 0, {\n    items: \"1:6\",\n    write: \"5:8\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-for-shallow/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Toggle\n</button>\n<div>\n  \nmounted 1\nmounted 2\nmounted 3\n</div>\n<div>\n  1\n</div>\n<div>\n  2\n</div>\n<div>\n  3\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  \nmounted 1\nmounted 2\nmounted 3\ndestroyed 3\n</div>\n<div>\n  1\n</div>\n<div>\n  2\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  \nmounted 1\nmounted 2\nmounted 3\ndestroyed 3\ndestroyed 2\n</div>\n<div>\n  1\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  \nmounted 1\nmounted 2\nmounted 3\ndestroyed 3\ndestroyed 2\ndestroyed 1\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  \nmounted 1\nmounted 2\nmounted 3\ndestroyed 3\ndestroyed 2\ndestroyed 1\nmounted 1\nmounted 2\nmounted 3\n</div>\n<div>\n  1\n</div>\n<div>\n  2\n</div>\n<div>\n  3\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-for-shallow/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      \nmounted 1\nmounted 2\nmounted 3\n    </div>\n    <!--M_*1 #div/1-->\n    <div>\n      1\n      <!--M_*3 #text/0-->\n    </div>\n    <div>\n      2\n      <!--M_*5 #text/0-->\n    </div>\n    <div>\n      3\n      <!--M_*7 #text/0-->\n    </div>\n    <!--M_|1 #text/2 6 4 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.a = {\n          items: [1, 2, 3]\n        },\n        {\n          \"#childScope/0\": _.b = {\n            name: 1,\n            \"#ClosestBranchId\": 2\n          }\n        }, _.b,\n        {\n          \"#childScope/0\": _.c = {\n            name: 2,\n            \"#ClosestBranchId\": 4\n          }\n        }, _.c,\n        {\n          \"#childScope/0\": _.d = {\n            name: 3,\n            \"#ClosestBranchId\": 6\n          }\n        }, _.d], _.a.write = _.b.write = _.c.write = _.d.write = _._[\n          \"__tests__/template.marko_0/write\"\n          ](_.a), _.e),\n        \"__tests__/tags/child.marko_0_name_write 3 5 7 __tests__/template.marko_0_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE #text in html/body/div0\nINSERT #text\nREMOVE #text in html/body/div0\nINSERT html/body/div0/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      \nmounted 1\nmounted 2\nmounted 3\ndestroyed 3\n    </div>\n    <!--M_*1 #div/1-->\n    <div>\n      1\n      <!--M_*3 #text/0-->\n    </div>\n    <div>\n      2\n      <!--M_*5 #text/0-->\n    </div>\n    <!--M_|1 #text/2 6 4 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.a = {\n          items: [1, 2, 3]\n        },\n        {\n          \"#childScope/0\": _.b = {\n            name: 1,\n            \"#ClosestBranchId\": 2\n          }\n        }, _.b,\n        {\n          \"#childScope/0\": _.c = {\n            name: 2,\n            \"#ClosestBranchId\": 4\n          }\n        }, _.c,\n        {\n          \"#childScope/0\": _.d = {\n            name: 3,\n            \"#ClosestBranchId\": 6\n          }\n        }, _.d], _.a.write = _.b.write = _.c.write = _.d.write = _._[\n          \"__tests__/template.marko_0/write\"\n          ](_.a), _.e),\n        \"__tests__/tags/child.marko_0_name_write 3 5 7 __tests__/template.marko_0_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE div after html/body/div2\nREMOVE #text in html/body/div0\nINSERT html/body/div0/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      \nmounted 1\nmounted 2\nmounted 3\ndestroyed 3\ndestroyed 2\n    </div>\n    <!--M_*1 #div/1-->\n    <div>\n      1\n      <!--M_*3 #text/0-->\n    </div>\n    <!--M_|1 #text/2 6 4 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.a = {\n          items: [1, 2, 3]\n        },\n        {\n          \"#childScope/0\": _.b = {\n            name: 1,\n            \"#ClosestBranchId\": 2\n          }\n        }, _.b,\n        {\n          \"#childScope/0\": _.c = {\n            name: 2,\n            \"#ClosestBranchId\": 4\n          }\n        }, _.c,\n        {\n          \"#childScope/0\": _.d = {\n            name: 3,\n            \"#ClosestBranchId\": 6\n          }\n        }, _.d], _.a.write = _.b.write = _.c.write = _.d.write = _._[\n          \"__tests__/template.marko_0/write\"\n          ](_.a), _.e),\n        \"__tests__/tags/child.marko_0_name_write 3 5 7 __tests__/template.marko_0_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE div after html/body/div1\nREMOVE #text in html/body/div0\nINSERT html/body/div0/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      \nmounted 1\nmounted 2\nmounted 3\ndestroyed 3\ndestroyed 2\ndestroyed 1\n    </div>\n    <!--M_*1 #div/1-->\n    <!--M_|1 #text/2 6 4 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.a = {\n          items: [1, 2, 3]\n        },\n        {\n          \"#childScope/0\": _.b = {\n            name: 1,\n            \"#ClosestBranchId\": 2\n          }\n        }, _.b,\n        {\n          \"#childScope/0\": _.c = {\n            name: 2,\n            \"#ClosestBranchId\": 4\n          }\n        }, _.c,\n        {\n          \"#childScope/0\": _.d = {\n            name: 3,\n            \"#ClosestBranchId\": 6\n          }\n        }, _.d], _.a.write = _.b.write = _.c.write = _.d.write = _._[\n          \"__tests__/template.marko_0/write\"\n          ](_.a), _.e),\n        \"__tests__/tags/child.marko_0_name_write 3 5 7 __tests__/template.marko_0_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/#comment2 after div\nINSERT html/body/#comment2\nREMOVE div after html/body/#comment1\nREMOVE #text in html/body/div\nINSERT html/body/div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      \nmounted 1\nmounted 2\nmounted 3\ndestroyed 3\ndestroyed 2\ndestroyed 1\nmounted 1\nmounted 2\nmounted 3\n    </div>\n    <!--M_*1 #div/1-->\n    <div>\n      1\n    </div>\n    <div>\n      2\n    </div>\n    <div>\n      3\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.a = {\n          items: [1, 2, 3]\n        },\n        {\n          \"#childScope/0\": _.b = {\n            name: 1,\n            \"#ClosestBranchId\": 2\n          }\n        }, _.b,\n        {\n          \"#childScope/0\": _.c = {\n            name: 2,\n            \"#ClosestBranchId\": 4\n          }\n        }, _.c,\n        {\n          \"#childScope/0\": _.d = {\n            name: 3,\n            \"#ClosestBranchId\": 6\n          }\n        }, _.d], _.a.write = _.b.write = _.c.write = _.d.write = _._[\n          \"__tests__/template.marko_0/write\"\n          ](_.a), _.e),\n        \"__tests__/tags/child.marko_0_name_write 3 5 7 __tests__/template.marko_0_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #comment after html/body/#comment1\nINSERT html/body/div1\nINSERT html/body/div2\nINSERT html/body/div3\nREMOVE #text in html/body/div0\nINSERT #text\nREMOVE #text in html/body/div0\nINSERT #text\nREMOVE #text in html/body/div0\nINSERT html/body/div0/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-for-shallow/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  Toggle\n</button>\n<div />\n<div>\n  1\n</div>\n<div>\n  2\n</div>\n<div>\n  3\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-for-shallow/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>Toggle</button><!--M_*1 #button/0--><div></div><!--M_*1 #div/1--><div>1<!--M_*3 #text/0--></div><div>2<!--M_*5 #text/0--></div><div>3<!--M_*7 #text/0--></div><!--M_|1 #text/2 6 4 2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.e=[0,_.a={items:[1,2,3]},{\"#childScope/0\":_.b={name:1,\"#ClosestBranchId\":2}},_.b,{\"#childScope/0\":_.c={name:2,\"#ClosestBranchId\":4}},_.c,{\"#childScope/0\":_.d={name:3,\"#ClosestBranchId\":6}},_.d],_.a.write=_.b.write=_.c.write=_.d.write=_._[\"__tests__/template.marko_0/write\"](_.a),_.e),\"__tests__/tags/child.marko_0_name_write 3 5 7 __tests__/template.marko_0_items 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/0-->\n    <div />\n    <!--M_*1 #div/1-->\n    <div>\n      1\n      <!--M_*3 #text/0-->\n    </div>\n    <div>\n      2\n      <!--M_*5 #text/0-->\n    </div>\n    <div>\n      3\n      <!--M_*7 #text/0-->\n    </div>\n    <!--M_|1 #text/2 6 4 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.a = {\n          items: [1, 2, 3]\n        },\n        {\n          \"#childScope/0\": _.b = {\n            name: 1,\n            \"#ClosestBranchId\": 2\n          }\n        }, _.b,\n        {\n          \"#childScope/0\": _.c = {\n            name: 2,\n            \"#ClosestBranchId\": 4\n          }\n        }, _.c,\n        {\n          \"#childScope/0\": _.d = {\n            name: 3,\n            \"#ClosestBranchId\": 6\n          }\n        }, _.d], _.a.write = _.b.write = _.c.write = _.d.write = _._[\n          \"__tests__/template.marko_0/write\"\n          ](_.a), _.e),\n        \"__tests__/tags/child.marko_0_name_write 3 5 7 __tests__/template.marko_0_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment0\nINSERT html/body/div0\nINSERT html/body/#comment1\nINSERT html/body/div1\nINSERT html/body/div1/#text\nINSERT html/body/div1/#comment\nINSERT html/body/div2\nINSERT html/body/div2/#text\nINSERT html/body/div2/#comment\nINSERT html/body/div3\nINSERT html/body/div3/#text\nINSERT html/body/div3/#comment\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-for-shallow/tags/child.marko",
    "content": "<const/{name, write}=input/>\n<div>${name}</div>\n<script>\n  write(`mounted ${name}`);\n  $signal.onabort = () => {\n    write(`destroyed ${name}`)\n  };\n</script>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-for-shallow/template.marko",
    "content": "<let/items=[1,2,3]/>\n<button onClick() { items = items.length ? items.slice(0, -1) : [1,2,3] }>Toggle</button>\n\n<div/el/>\n<const/write(msg) { el().innerHTML += '\\n' + msg } />\n\n<for|item| of=items>\n  <child write=write name=item />\n</for>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-for-shallow/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-deep/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"_\",\n      \"$init\": \"i\",\n      \"$$name__OR__write__script\": \"t\",\n      \"$$name__OR__write\": \"o\",\n      \"$$name\": \"e\",\n      \"$$write$1\": \"n\",\n      \"$$if_content3__write\": \"r\",\n      \"$$if_content3__setup\": \"c\",\n      \"$$if_content2__if\": \"s\",\n      \"$$if_content2__showInner\": \"a\",\n      \"$$if_content2__setup\": \"l\",\n      \"$$if_content2__write\": \"u\",\n      \"$$if_content__if\": \"d\",\n      \"$$if_content__showMiddle\": \"f\",\n      \"$$if_content__setup\": \"m\",\n      \"$$if_content__write\": \"p\",\n      \"$$if\": \"g\",\n      \"$$showOuter__script\": \"b\",\n      \"$$showOuter\": \"k\",\n      \"$$showMiddle__script\": \"D\",\n      \"$$showMiddle\": \"v\",\n      \"$$showInner__closure\": \"$\",\n      \"$$showInner__script\": \"h\",\n      \"$$showInner\": \"M\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-deep/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\n</pre>\n<div>\n  <p>\n    Outer\n  </p>\n  <div>\n    <p>\n      Middle\n    </p>\n    <p>\n      Inner\n    </p>\n  </div>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#inner\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\n</pre>\n<div>\n  <p>\n    Outer\n  </p>\n  <div>\n    <p>\n      Middle\n    </p>\n  </div>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#middle\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\n</pre>\n<div>\n  <p>\n    Outer\n  </p>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#outer\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\n</pre>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#inner\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\n</pre>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#middle\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\n</pre>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#outer\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\nOuter mounted\nMiddle mounted\nInner mounted\n</pre>\n<div>\n  <p>\n    Outer\n  </p>\n  <div>\n    <p>\n      Middle\n    </p>\n    <p>\n      Inner\n    </p>\n  </div>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#outer\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\n</pre>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-deep/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\n</pre>\n<div>\n  <p>\n    Outer\n  </p>\n  <div>\n    <p>\n      Middle\n    </p>\n    <p>\n      Inner\n    </p>\n  </div>\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT button0, button1, button2, pre, div, #comment\nINSERT #text\nREMOVE #text in pre\nINSERT #text\nREMOVE #text in pre\nINSERT pre/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button#inner\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\n</pre>\n<div>\n  <p>\n    Outer\n  </p>\n  <div>\n    <p>\n      Middle\n    </p>\n  </div>\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT div/div/#text\nREMOVE p after div/div/#text\nREMOVE #text in pre\nINSERT pre/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button#middle\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\n</pre>\n<div>\n  <p>\n    Outer\n  </p>\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT div/#text\nREMOVE div after div/#text\nREMOVE #text in pre\nINSERT pre/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button#outer\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\n</pre>\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE div after #text\nREMOVE #text in pre\nINSERT pre/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button#inner\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\n</pre>\n<!---->\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#middle\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\n</pre>\n<!---->\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#outer\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\nOuter mounted\nMiddle mounted\nInner mounted\n</pre>\n<div>\n  <p>\n    Outer\n  </p>\n  <div>\n    <p>\n      Middle\n    </p>\n    <p>\n      Inner\n    </p>\n  </div>\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT div\nREMOVE #text after div\nINSERT div/div\nREMOVE #text after div/div\nUPDATE div/p/#text \" \" => \"Outer\"\nINSERT div/div/p1\nREMOVE #text after div/div/p1\nUPDATE div/div/p0/#text \" \" => \"Middle\"\nUPDATE div/div/p1/#text \" \" => \"Inner\"\nREMOVE #text in pre\nINSERT #text\nREMOVE #text in pre\nINSERT #text\nREMOVE #text in pre\nINSERT pre/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button#outer\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\n</pre>\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE div after #text\nREMOVE #text in pre\nINSERT #text\nREMOVE #text in pre\nINSERT #text\nREMOVE #text in pre\nINSERT pre/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-deep/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<p> </p>\";\nexport const $walks = /* next(1), get, out(1) */\"D l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $name__OR__write__script = _._script(\"__tests__/tags/child.marko_0_name_write\", $scope => {\n  $scope.write(`${$scope.name} mounted`);\n  _.$signal($scope, 0).onabort = () => {\n    $scope.write(`${$scope.name} destroyed`);\n  };\n});\nconst $name__OR__write = /* @__PURE__ */_._or(5, $scope => {\n  _.$signalReset($scope, 0);\n  $name__OR__write__script($scope);\n});\nexport const $name = /* @__PURE__ */_._const(\"name\", $scope => {\n  _._text($scope[\"#text/0\"], $scope.name);\n  $name__OR__write($scope);\n});\nexport const $write = /* @__PURE__ */_._const(\"write\", $name__OR__write);\nexport const $input = ($scope, input) => {\n  $name($scope, input.name);\n  $write($scope, input.write);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-deep/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 1029 (min) 430 (brotli)\nconst $name__OR__write__script = _._script(\"a0\", ($scope) => {\n    ($scope.e(`${$scope.d} mounted`),\n      (_.$signal($scope, 0).onabort = () => {\n        $scope.e(`${$scope.d} destroyed`);\n      }));\n  }),\n  $name__OR__write = _._or(5, ($scope) => {\n    (_.$signalReset($scope, 0), $name__OR__write__script($scope));\n  }),\n  $name = _._const(3, ($scope) => {\n    (_._text($scope.a, $scope.d), $name__OR__write($scope));\n  }),\n  $write$1 = _._const(4, $name__OR__write),\n  $if_content3__write = _._closure_get(\n    8,\n    ($scope) => $write$1($scope.a, $scope._._._.i),\n    ($scope) => $scope._._._,\n  ),\n  $if_content3__setup = ($scope) => {\n    ($if_content3__write($scope), $scope.a, $name($scope.a, \"Inner\"));\n  },\n  $if_content2__if = _._if(1, \"<p> </p>\", \"/D l&\", $if_content3__setup),\n  $if_content2__showInner = _._closure_get(\n    7,\n    ($scope) => $if_content2__if($scope, $scope._._.h ? 0 : 1),\n    ($scope) => $scope._._,\n  ),\n  $if_content2__setup = ($scope) => {\n    ($if_content2__showInner($scope),\n      $if_content2__write($scope),\n      $scope.a,\n      $name($scope.a, \"Middle\"));\n  },\n  $if_content2__write = _._closure_get(\n    8,\n    ($scope) => $write$1($scope.a, $scope._._.i),\n    ($scope) => $scope._._,\n  ),\n  $if_content__if = _._if(\n    1,\n    \"<div><p> </p><!></div>\",\n    \"D/D l&%l\",\n    $if_content2__setup,\n  ),\n  $if_content__showMiddle = _._if_closure(4, 0, ($scope) =>\n    $if_content__if($scope, $scope._.g ? 0 : 1),\n  ),\n  $if_content__setup = ($scope) => {\n    ($if_content__showMiddle._($scope),\n      $if_content__write._($scope),\n      $scope.a,\n      $name($scope.a, \"Outer\"));\n  },\n  $if_content__write = _._if_closure(4, 0, ($scope) =>\n    $write$1($scope.a, $scope._.i),\n  ),\n  $if = _._if(4, \"<div><p> </p><!></div>\", \"D/D l&%l\", $if_content__setup),\n  $showOuter__script = _._script(\"b1\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $showOuter($scope, !$scope.f);\n    }),\n  ),\n  $showOuter = _._let(5, ($scope) => {\n    ($if($scope, $scope.f ? 0 : 1), $showOuter__script($scope));\n  }),\n  $showMiddle__script = _._script(\"b2\", ($scope) =>\n    _._on($scope.b, \"click\", function () {\n      $showMiddle($scope, !$scope.g);\n    }),\n  ),\n  $showMiddle = _._let(6, ($scope) => {\n    ($if_content__showMiddle($scope), $showMiddle__script($scope));\n  }),\n  $showInner__closure = _._closure($if_content2__showInner),\n  $showInner__script = _._script(\"b3\", ($scope) =>\n    _._on($scope.c, \"click\", function () {\n      $showInner($scope, !$scope.h);\n    }),\n  ),\n  $showInner = _._let(7, ($scope) => {\n    ($showInner__closure($scope), $showInner__script($scope));\n  });\n(_._resume(\"b0\", function ($scope) {\n  return function (msg) {\n    $scope.d.innerHTML += \"\\n\" + msg;\n  };\n}),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-deep/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button id=outer>Toggle Outer</button><button id=middle>Toggle Middle</button><button id=inner>Toggle Inner</button><pre></pre><!><!>\";\nexport const $walks = /* get, over(1), get, over(1), get, over(1), get, over(1), replace, over(2) */\" b b b b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _child, $write as _child_input_write, $name as _child_input_name, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nconst $if_content3__write = /* @__PURE__ */_._closure_get(\"write\", $scope => _child_input_write($scope[\"#childScope/0\"], $scope._._._.write), $scope => $scope._._._);\nconst $if_content3__setup = $scope => {\n  $if_content3__write($scope);\n  _child($scope[\"#childScope/0\"]);\n  _child_input_name($scope[\"#childScope/0\"], \"Inner\");\n};\nconst $if_content2__if = /* @__PURE__ */_._if(\"#text/1\", _child_template, /* <child> */`/${_child_walks}&`, $if_content3__setup);\nconst $if_content2__showInner = /* @__PURE__ */_._closure_get(\"showInner\", $scope => $if_content2__if($scope, $scope._._.showInner ? 0 : 1), $scope => $scope._._);\nconst $if_content2__setup = $scope => {\n  $if_content2__showInner($scope);\n  $if_content2__write($scope);\n  _child($scope[\"#childScope/0\"]);\n  _child_input_name($scope[\"#childScope/0\"], \"Middle\");\n};\nconst $if_content2__write = /* @__PURE__ */_._closure_get(\"write\", $scope => _child_input_write($scope[\"#childScope/0\"], $scope._._.write), $scope => $scope._._);\nconst $if_content__if = /* @__PURE__ */_._if(\"#text/1\", `<div>${_child_template}<!></div>`, /* next(1), <child>, replace, out(1) */`D/${_child_walks}&%l`, $if_content2__setup);\nconst $if_content__showMiddle = /* @__PURE__ */_._if_closure(\"#text/4\", 0, $scope => $if_content__if($scope, $scope._.showMiddle ? 0 : 1));\nconst $if_content__setup = $scope => {\n  $if_content__showMiddle._($scope);\n  $if_content__write._($scope);\n  _child($scope[\"#childScope/0\"]);\n  _child_input_name($scope[\"#childScope/0\"], \"Outer\");\n};\nconst $if_content__write = /* @__PURE__ */_._if_closure(\"#text/4\", 0, $scope => _child_input_write($scope[\"#childScope/0\"], $scope._.write));\nconst $if = /* @__PURE__ */_._if(\"#text/4\", `<div>${_child_template}<!></div>`, /* next(1), <child>, replace, out(1) */`D/${_child_walks}&%l`, $if_content__setup);\nconst $showOuter__script = _._script(\"__tests__/template.marko_0_showOuter\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $showOuter($scope, !$scope.showOuter);\n}));\nconst $showOuter = /* @__PURE__ */_._let(\"showOuter/5\", $scope => {\n  $if($scope, $scope.showOuter ? 0 : 1);\n  $showOuter__script($scope);\n});\nconst $showMiddle__script = _._script(\"__tests__/template.marko_0_showMiddle\", $scope => _._on($scope[\"#button/1\"], \"click\", function () {\n  $showMiddle($scope, !$scope.showMiddle);\n}));\nconst $showMiddle = /* @__PURE__ */_._let(\"showMiddle/6\", $scope => {\n  $if_content__showMiddle($scope);\n  $showMiddle__script($scope);\n});\nconst $showInner__closure = /* @__PURE__ */_._closure($if_content2__showInner);\nconst $showInner__script = _._script(\"__tests__/template.marko_0_showInner\", $scope => _._on($scope[\"#button/2\"], \"click\", function () {\n  $showInner($scope, !$scope.showInner);\n}));\nconst $showInner = /* @__PURE__ */_._let(\"showInner/7\", $scope => {\n  $showInner__closure($scope);\n  $showInner__script($scope);\n});\nconst $write2 = /* @__PURE__ */_._const(\"write\");\nexport function $setup($scope) {\n  $showOuter($scope, true);\n  $showMiddle($scope, true);\n  $showInner($scope, true);\n  $write2($scope, $write($scope));\n}\nfunction $write($scope) {\n  return function (msg) {\n    _._el_read($scope[\"#pre/3\"]).innerHTML += '\\n' + msg;\n  };\n}\n_._resume(\"__tests__/template.marko_0/write\", $write);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-deep/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    name,\n    write\n  } = input;\n  _._html(`<p>${_._escape(name)}${_._el_resume($scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.name */0))}</p>`);\n  _._script($scope0_id, \"__tests__/tags/child.marko_0_name_write\");\n  _._scope($scope0_id, {\n    name,\n    write\n  }, \"__tests__/tags/child.marko\", 0, {\n    name: \"1:9\",\n    write: \"1:15\"\n  });\n  _._resume_branch($scope0_id);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-deep/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _child from \"./tags/child.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $showInner__closures = new Set();\n  let showOuter = true;\n  let showMiddle = true;\n  let showInner = true;\n  const write = _._resume(function (msg) {\n    (el => el())(_._el_read_error).innerHTML += '\\n' + msg;\n  }, \"__tests__/template.marko_0/write\", $scope0_id);\n  _._html(`<button id=outer>Toggle Outer</button>${_._el_resume($scope0_id, \"#button/0\")}<button id=middle>Toggle Middle</button>${_._el_resume($scope0_id, \"#button/1\")}<button id=inner>Toggle Inner</button>${_._el_resume($scope0_id, \"#button/2\")}<pre></pre>${_._el_resume($scope0_id, \"#pre/3\")}`);\n  _._if(() => {\n    if (showOuter) {\n      const $scope1_id = _._scope_id();\n      _._html(\"<div>\");\n      _child({\n        write: write,\n        name: \"Outer\"\n      });\n      _._if(() => {\n        if (showMiddle) {\n          const $scope2_id = _._scope_id();\n          _._html(\"<div>\");\n          _child({\n            write: write,\n            name: \"Middle\"\n          });\n          _._if(() => {\n            if (showInner) {\n              const $scope3_id = _._scope_id();\n              _child({\n                write: write,\n                name: \"Inner\"\n              });\n              _._scope($scope3_id, {\n                _: _._scope_with_id($scope2_id)\n              }, \"__tests__/template.marko\", \"17:10\");\n              return 0;\n            }\n          }, $scope2_id, \"#text/1\", 1, /* showInner */1, /* showInner */1, 0, 1);\n          _._html(\"</div>\");\n          _._subscribe($showInner__closures, _._scope($scope2_id, {\n            _: _._scope_with_id($scope1_id),\n            \"ClosureSignalIndex:showInner\": 0\n          }, \"__tests__/template.marko\", \"14:6\"));\n          return 0;\n        }\n      }, $scope1_id, \"#text/1\", 1, /* showMiddle */1, /* showMiddle */1, 0, 1);\n      _._html(\"</div>\");\n      _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"11:2\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/4\", 1, /* showOuter */1, /* showOuter */1, 0, 1);\n  _._script($scope0_id, \"__tests__/template.marko_0_showInner\");\n  _._script($scope0_id, \"__tests__/template.marko_0_showMiddle\");\n  _._script($scope0_id, \"__tests__/template.marko_0_showOuter\");\n  _._scope($scope0_id, {\n    showOuter,\n    showMiddle,\n    showInner,\n    write,\n    \"ClosureScopes:showInner\": $showInner__closures\n  }, \"__tests__/template.marko\", 0, {\n    showOuter: \"1:6\",\n    showMiddle: \"2:6\",\n    showInner: \"3:6\",\n    write: \"9:8\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-deep/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\n</pre>\n<div>\n  <p>\n    Outer\n  </p>\n  <div>\n    <p>\n      Middle\n    </p>\n    <p>\n      Inner\n    </p>\n  </div>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#inner\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\n</pre>\n<div>\n  <p>\n    Outer\n  </p>\n  <div>\n    <p>\n      Middle\n    </p>\n  </div>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#middle\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\n</pre>\n<div>\n  <p>\n    Outer\n  </p>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#outer\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\n</pre>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#inner\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\n</pre>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#middle\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\n</pre>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#outer\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\nOuter mounted\nMiddle mounted\nInner mounted\n</pre>\n<div>\n  <p>\n    Outer\n  </p>\n  <div>\n    <p>\n      Middle\n    </p>\n    <p>\n      Inner\n    </p>\n  </div>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#outer\").click();\n```\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre>\n  \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\n</pre>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-deep/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"outer\"\n    >\n      Toggle Outer\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      id=\"middle\"\n    >\n      Toggle Middle\n    </button>\n    <!--M_*1 #button/1-->\n    <button\n      id=\"inner\"\n    >\n      Toggle Inner\n    </button>\n    <!--M_*1 #button/2-->\n    <pre>\n      \nOuter mounted\nMiddle mounted\nInner mounted\n    </pre>\n    <!--M_*1 #pre/3-->\n    <div>\n      <p>\n        Outer\n      </p>\n      <div>\n        <p>\n          Middle\n        </p>\n        <p>\n          Inner\n        </p>\n        <!--M_|4 #text/1 6-->\n      </div>\n      <!--M_|2 #text/1 4-->\n    </div>\n    <!--M_|1 #text/4 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.g = [0, _.a = {\n          showOuter: !0,\n          showMiddle: !0,\n          showInner: !0,\n          \"ClosureScopes:showInner\": _.h = new Set\n        }, _.c = {\n          _: _.a\n        }, _.b = {\n          name: \"Outer\",\n          \"#ClosestBranchId\": 2\n        }, _.e = {\n          _: _.c,\n          \"ClosureSignalIndex:showInner\": 0\n        }, _.d = {\n          name: \"Middle\",\n          \"#ClosestBranchId\": 4\n        },\n        {\n          _: _.e\n        }, _.f = {\n          name: \"Inner\",\n          \"#ClosestBranchId\": 6\n        }], _.a.write = _.b.write = _.d.write = _.f.write = _._[\n          \"__tests__/template.marko_0/write\"\n          ](_.a), (_.h).add(_.e), _.g),\n        \"__tests__/tags/child.marko_0_name_write 3 5 7 __tests__/template.marko_0_showInner 1 __tests__/template.marko_0_showMiddle 1 __tests__/template.marko_0_showOuter 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE #text in html/body/pre\nINSERT #text\nREMOVE #text in html/body/pre\nINSERT html/body/pre/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button#inner\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"outer\"\n    >\n      Toggle Outer\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      id=\"middle\"\n    >\n      Toggle Middle\n    </button>\n    <!--M_*1 #button/1-->\n    <button\n      id=\"inner\"\n    >\n      Toggle Inner\n    </button>\n    <!--M_*1 #button/2-->\n    <pre>\n      \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\n    </pre>\n    <!--M_*1 #pre/3-->\n    <div>\n      <p>\n        Outer\n      </p>\n      <div>\n        <p>\n          Middle\n        </p>\n        <!--M_|4 #text/1 6-->\n      </div>\n      <!--M_|2 #text/1 4-->\n    </div>\n    <!--M_|1 #text/4 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.g = [0, _.a = {\n          showOuter: !0,\n          showMiddle: !0,\n          showInner: !0,\n          \"ClosureScopes:showInner\": _.h = new Set\n        }, _.c = {\n          _: _.a\n        }, _.b = {\n          name: \"Outer\",\n          \"#ClosestBranchId\": 2\n        }, _.e = {\n          _: _.c,\n          \"ClosureSignalIndex:showInner\": 0\n        }, _.d = {\n          name: \"Middle\",\n          \"#ClosestBranchId\": 4\n        },\n        {\n          _: _.e\n        }, _.f = {\n          name: \"Inner\",\n          \"#ClosestBranchId\": 6\n        }], _.a.write = _.b.write = _.d.write = _.f.write = _._[\n          \"__tests__/template.marko_0/write\"\n          ](_.a), (_.h).add(_.e), _.g),\n        \"__tests__/tags/child.marko_0_name_write 3 5 7 __tests__/template.marko_0_showInner 1 __tests__/template.marko_0_showMiddle 1 __tests__/template.marko_0_showOuter 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/div/div/#comment after p\nINSERT html/body/div/div/#comment\nREMOVE p after html/body/div/div/#comment\nREMOVE #text in html/body/pre\nINSERT html/body/pre/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button#middle\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"outer\"\n    >\n      Toggle Outer\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      id=\"middle\"\n    >\n      Toggle Middle\n    </button>\n    <!--M_*1 #button/1-->\n    <button\n      id=\"inner\"\n    >\n      Toggle Inner\n    </button>\n    <!--M_*1 #button/2-->\n    <pre>\n      \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\n    </pre>\n    <!--M_*1 #pre/3-->\n    <div>\n      <p>\n        Outer\n      </p>\n      <!--M_|2 #text/1 4-->\n    </div>\n    <!--M_|1 #text/4 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.g = [0, _.a = {\n          showOuter: !0,\n          showMiddle: !0,\n          showInner: !0,\n          \"ClosureScopes:showInner\": _.h = new Set\n        }, _.c = {\n          _: _.a\n        }, _.b = {\n          name: \"Outer\",\n          \"#ClosestBranchId\": 2\n        }, _.e = {\n          _: _.c,\n          \"ClosureSignalIndex:showInner\": 0\n        }, _.d = {\n          name: \"Middle\",\n          \"#ClosestBranchId\": 4\n        },\n        {\n          _: _.e\n        }, _.f = {\n          name: \"Inner\",\n          \"#ClosestBranchId\": 6\n        }], _.a.write = _.b.write = _.d.write = _.f.write = _._[\n          \"__tests__/template.marko_0/write\"\n          ](_.a), (_.h).add(_.e), _.g),\n        \"__tests__/tags/child.marko_0_name_write 3 5 7 __tests__/template.marko_0_showInner 1 __tests__/template.marko_0_showMiddle 1 __tests__/template.marko_0_showOuter 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/div/#comment after div\nINSERT html/body/div/#comment\nREMOVE div after html/body/div/#comment\nREMOVE #text in html/body/pre\nINSERT html/body/pre/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button#outer\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"outer\"\n    >\n      Toggle Outer\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      id=\"middle\"\n    >\n      Toggle Middle\n    </button>\n    <!--M_*1 #button/1-->\n    <button\n      id=\"inner\"\n    >\n      Toggle Inner\n    </button>\n    <!--M_*1 #button/2-->\n    <pre>\n      \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\n    </pre>\n    <!--M_*1 #pre/3-->\n    <!--M_|1 #text/4 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.g = [0, _.a = {\n          showOuter: !0,\n          showMiddle: !0,\n          showInner: !0,\n          \"ClosureScopes:showInner\": _.h = new Set\n        }, _.c = {\n          _: _.a\n        }, _.b = {\n          name: \"Outer\",\n          \"#ClosestBranchId\": 2\n        }, _.e = {\n          _: _.c,\n          \"ClosureSignalIndex:showInner\": 0\n        }, _.d = {\n          name: \"Middle\",\n          \"#ClosestBranchId\": 4\n        },\n        {\n          _: _.e\n        }, _.f = {\n          name: \"Inner\",\n          \"#ClosestBranchId\": 6\n        }], _.a.write = _.b.write = _.d.write = _.f.write = _._[\n          \"__tests__/template.marko_0/write\"\n          ](_.a), (_.h).add(_.e), _.g),\n        \"__tests__/tags/child.marko_0_name_write 3 5 7 __tests__/template.marko_0_showInner 1 __tests__/template.marko_0_showMiddle 1 __tests__/template.marko_0_showOuter 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/#comment4 after div\nINSERT html/body/#comment4\nREMOVE div after html/body/#comment4\nREMOVE #text in html/body/pre\nINSERT html/body/pre/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button#inner\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"outer\"\n    >\n      Toggle Outer\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      id=\"middle\"\n    >\n      Toggle Middle\n    </button>\n    <!--M_*1 #button/1-->\n    <button\n      id=\"inner\"\n    >\n      Toggle Inner\n    </button>\n    <!--M_*1 #button/2-->\n    <pre>\n      \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\n    </pre>\n    <!--M_*1 #pre/3-->\n    <!--M_|1 #text/4 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.g = [0, _.a = {\n          showOuter: !0,\n          showMiddle: !0,\n          showInner: !0,\n          \"ClosureScopes:showInner\": _.h = new Set\n        }, _.c = {\n          _: _.a\n        }, _.b = {\n          name: \"Outer\",\n          \"#ClosestBranchId\": 2\n        }, _.e = {\n          _: _.c,\n          \"ClosureSignalIndex:showInner\": 0\n        }, _.d = {\n          name: \"Middle\",\n          \"#ClosestBranchId\": 4\n        },\n        {\n          _: _.e\n        }, _.f = {\n          name: \"Inner\",\n          \"#ClosestBranchId\": 6\n        }], _.a.write = _.b.write = _.d.write = _.f.write = _._[\n          \"__tests__/template.marko_0/write\"\n          ](_.a), (_.h).add(_.e), _.g),\n        \"__tests__/tags/child.marko_0_name_write 3 5 7 __tests__/template.marko_0_showInner 1 __tests__/template.marko_0_showMiddle 1 __tests__/template.marko_0_showOuter 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#middle\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"outer\"\n    >\n      Toggle Outer\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      id=\"middle\"\n    >\n      Toggle Middle\n    </button>\n    <!--M_*1 #button/1-->\n    <button\n      id=\"inner\"\n    >\n      Toggle Inner\n    </button>\n    <!--M_*1 #button/2-->\n    <pre>\n      \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\n    </pre>\n    <!--M_*1 #pre/3-->\n    <!--M_|1 #text/4 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.g = [0, _.a = {\n          showOuter: !0,\n          showMiddle: !0,\n          showInner: !0,\n          \"ClosureScopes:showInner\": _.h = new Set\n        }, _.c = {\n          _: _.a\n        }, _.b = {\n          name: \"Outer\",\n          \"#ClosestBranchId\": 2\n        }, _.e = {\n          _: _.c,\n          \"ClosureSignalIndex:showInner\": 0\n        }, _.d = {\n          name: \"Middle\",\n          \"#ClosestBranchId\": 4\n        },\n        {\n          _: _.e\n        }, _.f = {\n          name: \"Inner\",\n          \"#ClosestBranchId\": 6\n        }], _.a.write = _.b.write = _.d.write = _.f.write = _._[\n          \"__tests__/template.marko_0/write\"\n          ](_.a), (_.h).add(_.e), _.g),\n        \"__tests__/tags/child.marko_0_name_write 3 5 7 __tests__/template.marko_0_showInner 1 __tests__/template.marko_0_showMiddle 1 __tests__/template.marko_0_showOuter 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#outer\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"outer\"\n    >\n      Toggle Outer\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      id=\"middle\"\n    >\n      Toggle Middle\n    </button>\n    <!--M_*1 #button/1-->\n    <button\n      id=\"inner\"\n    >\n      Toggle Inner\n    </button>\n    <!--M_*1 #button/2-->\n    <pre>\n      \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\nOuter mounted\nMiddle mounted\nInner mounted\n    </pre>\n    <!--M_*1 #pre/3-->\n    <div>\n      <p>\n        Outer\n      </p>\n      <div>\n        <p>\n          Middle\n        </p>\n        <p>\n          Inner\n        </p>\n      </div>\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.g = [0, _.a = {\n          showOuter: !0,\n          showMiddle: !0,\n          showInner: !0,\n          \"ClosureScopes:showInner\": _.h = new Set\n        }, _.c = {\n          _: _.a\n        }, _.b = {\n          name: \"Outer\",\n          \"#ClosestBranchId\": 2\n        }, _.e = {\n          _: _.c,\n          \"ClosureSignalIndex:showInner\": 0\n        }, _.d = {\n          name: \"Middle\",\n          \"#ClosestBranchId\": 4\n        },\n        {\n          _: _.e\n        }, _.f = {\n          name: \"Inner\",\n          \"#ClosestBranchId\": 6\n        }], _.a.write = _.b.write = _.d.write = _.f.write = _._[\n          \"__tests__/template.marko_0/write\"\n          ](_.a), (_.h).add(_.e), _.g),\n        \"__tests__/tags/child.marko_0_name_write 3 5 7 __tests__/template.marko_0_showInner 1 __tests__/template.marko_0_showMiddle 1 __tests__/template.marko_0_showOuter 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div\nREMOVE #comment after html/body/div\nINSERT html/body/div/div\nREMOVE #text after html/body/div/div\nUPDATE html/body/div/p/#text \" \" => \"Outer\"\nINSERT html/body/div/div/p1\nREMOVE #text after html/body/div/div/p1\nUPDATE html/body/div/div/p0/#text \" \" => \"Middle\"\nUPDATE html/body/div/div/p1/#text \" \" => \"Inner\"\nREMOVE #text in html/body/pre\nINSERT #text\nREMOVE #text in html/body/pre\nINSERT #text\nREMOVE #text in html/body/pre\nINSERT html/body/pre/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button#outer\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"outer\"\n    >\n      Toggle Outer\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      id=\"middle\"\n    >\n      Toggle Middle\n    </button>\n    <!--M_*1 #button/1-->\n    <button\n      id=\"inner\"\n    >\n      Toggle Inner\n    </button>\n    <!--M_*1 #button/2-->\n    <pre>\n      \nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\nOuter mounted\nMiddle mounted\nInner mounted\nInner destroyed\nMiddle destroyed\nOuter destroyed\n    </pre>\n    <!--M_*1 #pre/3-->\n    <!--M_|1 #text/4 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.g = [0, _.a = {\n          showOuter: !0,\n          showMiddle: !0,\n          showInner: !0,\n          \"ClosureScopes:showInner\": _.h = new Set\n        }, _.c = {\n          _: _.a\n        }, _.b = {\n          name: \"Outer\",\n          \"#ClosestBranchId\": 2\n        }, _.e = {\n          _: _.c,\n          \"ClosureSignalIndex:showInner\": 0\n        }, _.d = {\n          name: \"Middle\",\n          \"#ClosestBranchId\": 4\n        },\n        {\n          _: _.e\n        }, _.f = {\n          name: \"Inner\",\n          \"#ClosestBranchId\": 6\n        }], _.a.write = _.b.write = _.d.write = _.f.write = _._[\n          \"__tests__/template.marko_0/write\"\n          ](_.a), (_.h).add(_.e), _.g),\n        \"__tests__/tags/child.marko_0_name_write 3 5 7 __tests__/template.marko_0_showInner 1 __tests__/template.marko_0_showMiddle 1 __tests__/template.marko_0_showOuter 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#comment4\nREMOVE div after html/body/#comment4\nREMOVE #text in html/body/pre\nINSERT #text\nREMOVE #text in html/body/pre\nINSERT #text\nREMOVE #text in html/body/pre\nINSERT html/body/pre/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-deep/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button\n  id=\"outer\"\n>\n  Toggle Outer\n</button>\n<button\n  id=\"middle\"\n>\n  Toggle Middle\n</button>\n<button\n  id=\"inner\"\n>\n  Toggle Inner\n</button>\n<pre />\n<div>\n  <p>\n    Outer\n  </p>\n  <div>\n    <p>\n      Middle\n    </p>\n    <p>\n      Inner\n    </p>\n  </div>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-deep/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button id=outer>Toggle Outer</button><!--M_*1 #button/0--><button id=middle>Toggle Middle</button><!--M_*1 #button/1--><button id=inner>Toggle Inner</button><!--M_*1 #button/2--><pre></pre><!--M_*1 #pre/3--><div><p>Outer</p><div><p>Middle</p><p>Inner</p><!--M_|4 #text/1 6--></div><!--M_|2 #text/1 4--></div><!--M_|1 #text/4 2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.g=[0,_.a={showOuter:!0,showMiddle:!0,showInner:!0,\"ClosureScopes:showInner\":_.h=new Set},_.c={_:_.a},_.b={name:\"Outer\",\"#ClosestBranchId\":2},_.e={_:_.c,\"ClosureSignalIndex:showInner\":0},_.d={name:\"Middle\",\"#ClosestBranchId\":4},{_:_.e},_.f={name:\"Inner\",\"#ClosestBranchId\":6}],_.a.write=_.b.write=_.d.write=_.f.write=_._[\"__tests__/template.marko_0/write\"](_.a),(_.h).add(_.e),_.g),\"__tests__/tags/child.marko_0_name_write 3 5 7 __tests__/template.marko_0_showInner 1 __tests__/template.marko_0_showMiddle 1 __tests__/template.marko_0_showOuter 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"outer\"\n    >\n      Toggle Outer\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      id=\"middle\"\n    >\n      Toggle Middle\n    </button>\n    <!--M_*1 #button/1-->\n    <button\n      id=\"inner\"\n    >\n      Toggle Inner\n    </button>\n    <!--M_*1 #button/2-->\n    <pre />\n    <!--M_*1 #pre/3-->\n    <div>\n      <p>\n        Outer\n      </p>\n      <div>\n        <p>\n          Middle\n        </p>\n        <p>\n          Inner\n        </p>\n        <!--M_|4 #text/1 6-->\n      </div>\n      <!--M_|2 #text/1 4-->\n    </div>\n    <!--M_|1 #text/4 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.g = [0, _.a = {\n          showOuter: !0,\n          showMiddle: !0,\n          showInner: !0,\n          \"ClosureScopes:showInner\": _.h = new Set\n        }, _.c = {\n          _: _.a\n        }, _.b = {\n          name: \"Outer\",\n          \"#ClosestBranchId\": 2\n        }, _.e = {\n          _: _.c,\n          \"ClosureSignalIndex:showInner\": 0\n        }, _.d = {\n          name: \"Middle\",\n          \"#ClosestBranchId\": 4\n        },\n        {\n          _: _.e\n        }, _.f = {\n          name: \"Inner\",\n          \"#ClosestBranchId\": 6\n        }], _.a.write = _.b.write = _.d.write = _.f.write = _._[\n          \"__tests__/template.marko_0/write\"\n          ](_.a), (_.h).add(_.e), _.g),\n        \"__tests__/tags/child.marko_0_name_write 3 5 7 __tests__/template.marko_0_showInner 1 __tests__/template.marko_0_showMiddle 1 __tests__/template.marko_0_showOuter 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button0\nINSERT html/body/button0/#text\nINSERT html/body/#comment0\nINSERT html/body/button1\nINSERT html/body/button1/#text\nINSERT html/body/#comment1\nINSERT html/body/button2\nINSERT html/body/button2/#text\nINSERT html/body/#comment2\nINSERT html/body/pre\nINSERT html/body/#comment3\nINSERT html/body/div\nINSERT html/body/div/p\nINSERT html/body/div/p/#text\nINSERT html/body/div/div\nINSERT html/body/div/div/p0\nINSERT html/body/div/div/p0/#text\nINSERT html/body/div/div/p1\nINSERT html/body/div/div/p1/#text\nINSERT html/body/div/div/#comment\nINSERT html/body/div/#comment\nINSERT html/body/#comment4\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-deep/tags/child.marko",
    "content": "<const/{name, write}=input/>\n<p>${name}</p>\n<script>\n  write(`${name} mounted`);\n  $signal.onabort = () => {\n    write(`${name} destroyed`)\n  };\n</script>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-deep/template.marko",
    "content": "<let/showOuter=true/>\n<let/showMiddle=true/>\n<let/showInner=true/>\n<button#outer onClick() { showOuter = !showOuter }>Toggle Outer</button>\n<button#middle onClick() { showMiddle = !showMiddle }>Toggle Middle</button>\n<button#inner onClick() { showInner = !showInner }>Toggle Inner</button>\n\n<pre/el/>\n<const/write(msg) { el().innerHTML += '\\n' + msg } />\n\n<if=showOuter>\n  <div>\n    <child write=write name=\"Outer\"/>\n    <if=showMiddle>\n      <div>\n        <child write=write name=\"Middle\"/>\n        <if=showInner>\n          <child write=write name=\"Inner\" />\n        </if>\n      </div>\n    </if>\n  </div>\n</if>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-deep/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction clickOuter(container: Element) {\n  container.querySelector<HTMLButtonElement>(\"button#outer\")!.click();\n}\n\nfunction clickMiddle(container: Element) {\n  container.querySelector<HTMLButtonElement>(\"button#middle\")!.click();\n}\n\nfunction clickInner(container: Element) {\n  container.querySelector<HTMLButtonElement>(\"button#inner\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [\n    {},\n    clickInner,\n    clickMiddle,\n    clickOuter,\n    clickInner,\n    clickMiddle,\n    clickOuter,\n    clickOuter,\n  ],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-same-scope/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"i\",\n      \"$init\": \"n\",\n      \"$$if_content__setup__script\": \"o\",\n      \"$$if_content__setup\": \"t\",\n      \"$$if\": \"r\",\n      \"$$show__script\": \"a\",\n      \"$$show\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-same-scope/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Toggle\n</button>\n<pre>\n  \nmounted\n</pre>\n<div>\n  child\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<pre>\n  \nmounted\ndestroyed\n</pre>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<pre>\n  \nmounted\ndestroyed\nmounted\n</pre>\n<div>\n  child\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<pre>\n  \nmounted\ndestroyed\nmounted\ndestroyed\n</pre>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-same-scope/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  Toggle\n</button>\n<pre>\n  \nmounted\n</pre>\n<div>\n  child\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT button, pre, div, #comment\nINSERT pre/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<pre>\n  \nmounted\ndestroyed\n</pre>\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE div after #text\nREMOVE #text in pre\nINSERT pre/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<pre>\n  \nmounted\ndestroyed\nmounted\n</pre>\n<div>\n  child\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT div\nREMOVE #text after div\nREMOVE #text in pre\nINSERT pre/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<pre>\n  \nmounted\ndestroyed\nmounted\ndestroyed\n</pre>\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE div after #text\nREMOVE #text in pre\nINSERT pre/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-same-scope/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 287 (min) 181 (brotli)\nconst $if_content__setup__script = _._script(\"a0\", ($scope) => {\n    (($scope._.b.innerHTML += \"\\nmounted\"),\n      (_.$signal($scope, 0).onabort = () => {\n        $scope._.b.innerHTML += \"\\ndestroyed\";\n      }));\n  }),\n  $if_content__setup = ($scope) => {\n    (_.$signalReset($scope, 0), $if_content__setup__script($scope));\n  },\n  $if = _._if(2, \"<div>child</div>\", \"b\", $if_content__setup),\n  $show__script = _._script(\"a1\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $show($scope, !$scope.d);\n    }),\n  ),\n  $show = _._let(3, ($scope) => {\n    ($if($scope, $scope.d ? 0 : 1), $show__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-same-scope/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button>Toggle</button><pre></pre><!><!>\";\nexport const $walks = /* get, over(1), get, over(1), replace, over(2) */\" b b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content__setup__script = _._script(\"__tests__/template.marko_1\", $scope => {\n  _._el_read($scope._[\"#pre/1\"]).innerHTML += '\\nmounted';\n  _.$signal($scope, 0).onabort = () => {\n    _._el_read($scope._[\"#pre/1\"]).innerHTML += '\\ndestroyed';\n  };\n});\nconst $if_content__setup = $scope => {\n  _.$signalReset($scope, 0);\n  $if_content__setup__script($scope);\n};\nconst $if = /* @__PURE__ */_._if(\"#text/2\", \"<div>child</div>\", /* over(1) */\"b\", $if_content__setup);\nconst $show__script = _._script(\"__tests__/template.marko_0_show\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $show($scope, !$scope.show);\n}));\nconst $show = /* @__PURE__ */_._let(\"show/3\", $scope => {\n  $if($scope, $scope.show ? 0 : 1);\n  $show__script($scope);\n});\nexport function $setup($scope) {\n  $show($scope, true);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-same-scope/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let show = true;\n  _._html(`<button>Toggle</button>${_._el_resume($scope0_id, \"#button/0\")}<pre></pre>${_._el_resume($scope0_id, \"#pre/1\")}`);\n  _._if(() => {\n    if (show) {\n      const $scope1_id = _._scope_id();\n      _._html(\"<div>child</div>\");\n      _._script($scope1_id, \"__tests__/template.marko_1\");\n      _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"6:2\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/2\", 1, /* show */1, /* show */1, 0, 1);\n  _._script($scope0_id, \"__tests__/template.marko_0_show\");\n  _._scope($scope0_id, {\n    show\n  }, \"__tests__/template.marko\", 0, {\n    show: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-same-scope/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Toggle\n</button>\n<pre>\n  \nmounted\n</pre>\n<div>\n  child\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<pre>\n  \nmounted\ndestroyed\n</pre>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<pre>\n  \nmounted\ndestroyed\nmounted\n</pre>\n<div>\n  child\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<pre>\n  \nmounted\ndestroyed\nmounted\ndestroyed\n</pre>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-same-scope/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/0-->\n    <pre>\n      \nmounted\n    </pre>\n    <!--M_*1 #pre/1-->\n    <div>\n      child\n    </div>\n    <!--M_|1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          show: !0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1 2 __tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/pre/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/0-->\n    <pre>\n      \nmounted\ndestroyed\n    </pre>\n    <!--M_*1 #pre/1-->\n    <!--M_|1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          show: !0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1 2 __tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/#comment2 after div\nINSERT html/body/#comment2\nREMOVE div after html/body/#comment2\nREMOVE #text in html/body/pre\nINSERT html/body/pre/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/0-->\n    <pre>\n      \nmounted\ndestroyed\nmounted\n    </pre>\n    <!--M_*1 #pre/1-->\n    <div>\n      child\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          show: !0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1 2 __tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div\nREMOVE #comment after html/body/div\nREMOVE #text in html/body/pre\nINSERT html/body/pre/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/0-->\n    <pre>\n      \nmounted\ndestroyed\nmounted\ndestroyed\n    </pre>\n    <!--M_*1 #pre/1-->\n    <!--M_|1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          show: !0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1 2 __tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#comment2\nREMOVE div after html/body/#comment2\nREMOVE #text in html/body/pre\nINSERT html/body/pre/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-same-scope/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  Toggle\n</button>\n<pre />\n<div>\n  child\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-same-scope/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>Toggle</button><!--M_*1 #button/0--><pre></pre><!--M_*1 #pre/1--><div>child</div><!--M_|1 #text/2 2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={show:!0},{_:_.a}]),\"__tests__/template.marko_1 2 __tests__/template.marko_0_show 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/0-->\n    <pre />\n    <!--M_*1 #pre/1-->\n    <div>\n      child\n    </div>\n    <!--M_|1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          show: !0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1 2 __tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment0\nINSERT html/body/pre\nINSERT html/body/#comment1\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-same-scope/template.marko",
    "content": "<let/show=true/>\n<button onClick() { show = !show }>Toggle</button>\n\n<pre/el/>\n\n<if=show>\n  <div>child</div>\n  <script>\n    el().innerHTML += '\\nmounted';\n    $signal.onabort = () => {\n      el().innerHTML += '\\ndestroyed';\n    };\n  </script>\n</if>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-same-scope/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-shallow/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"i\",\n      \"$$input__script\": \"r\",\n      \"$$input\": \"n\",\n      \"$$if_content__setup\": \"o\",\n      \"$$if\": \"e\",\n      \"$$show__script\": \"a\",\n      \"$$show\": \"m\",\n      \"$$write\": \"s\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-shallow/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Toggle\n</button>\n<div>\n  mounted\n</div>\n<div>\n  child\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  destroyed\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  mounted\n</div>\n<div>\n  child\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  destroyed\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-shallow/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  Toggle\n</button>\n<div>\n  mounted\n</div>\n<div>\n  child\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT button, div0, div1, #comment\nINSERT div0/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  destroyed\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE div after #text\nREMOVE #text in div\nINSERT div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  mounted\n</div>\n<div>\n  child\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT div1\nREMOVE #text after div1\nREMOVE #text in div0\nINSERT div0/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  destroyed\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE div after #text\nREMOVE #text in div\nINSERT div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-shallow/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<div>child</div>\";\nexport const $walks = /* over(1) */\"b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $input__script = _._script(\"__tests__/tags/child.marko_0_input\", $scope => {\n  $scope.input.write('mounted');\n  _.$signal($scope, 0).onabort = () => {\n    $scope.input.write('destroyed');\n  };\n});\nexport const $input = /* @__PURE__ */_._const(\"input\", $scope => {\n  _.$signalReset($scope, 0);\n  $input__script($scope);\n});\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-shallow/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 386 (min) 235 (brotli)\nconst $input__script = _._script(\"a0\", ($scope) => {\n    ($scope.b.write(\"mounted\"),\n      (_.$signal($scope, 0).onabort = () => {\n        $scope.b.write(\"destroyed\");\n      }));\n  }),\n  $input = _._const(1, ($scope) => {\n    (_.$signalReset($scope, 0), $input__script($scope));\n  }),\n  $if_content__setup = ($scope) => {\n    ($scope.a, $input($scope.a, { write: $write($scope) }));\n  },\n  $if = _._if(2, \"<div>child</div>\", \"/b&\", $if_content__setup),\n  $show__script = _._script(\"b1\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $show($scope, !$scope.d);\n    }),\n  ),\n  $show = _._let(3, ($scope) => {\n    ($if($scope, $scope.d ? 0 : 1), $show__script($scope));\n  });\nfunction $write($scope) {\n  return function (state) {\n    $scope._.b.innerHTML = state;\n  };\n}\n(_._resume(\"b0\", $write), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-shallow/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button>Toggle</button><div></div><!><!>\";\nexport const $walks = /* get, over(1), get, over(1), replace, over(2) */\" b b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _child, $input as _child_input, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nconst $if_content__setup = $scope => {\n  _child($scope[\"#childScope/0\"]);\n  _child_input($scope[\"#childScope/0\"], {\n    write: $write($scope)\n  });\n};\nconst $if = /* @__PURE__ */_._if(\"#text/2\", _child_template, /* <child> */`/${_child_walks}&`, $if_content__setup);\nconst $show__script = _._script(\"__tests__/template.marko_0_show\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $show($scope, !$scope.show);\n}));\nconst $show = /* @__PURE__ */_._let(\"show/3\", $scope => {\n  $if($scope, $scope.show ? 0 : 1);\n  $show__script($scope);\n});\nexport function $setup($scope) {\n  $show($scope, true);\n}\nfunction $write($scope) {\n  return function (state) {\n    _._el_read($scope._[\"#div/1\"]).innerHTML = state;\n  };\n}\n_._resume(\"__tests__/template.marko_1/write\", $write);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-shallow/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div>child</div>\");\n  _._script($scope0_id, \"__tests__/tags/child.marko_0_input\");\n  _._scope($scope0_id, {\n    input\n  }, \"__tests__/tags/child.marko\", 0, {\n    input: 0\n  });\n  _._resume_branch($scope0_id);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-shallow/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _child from \"./tags/child.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let show = true;\n  _._html(`<button>Toggle</button>${_._el_resume($scope0_id, \"#button/0\")}<div></div>${_._el_resume($scope0_id, \"#div/1\")}`);\n  _._if(() => {\n    if (show) {\n      const $scope1_id = _._scope_id();\n      _child({\n        write: _._resume(function (state) {\n          (el => el())(_._el_read_error).innerHTML = state;\n        }, \"__tests__/template.marko_1/write\", $scope1_id)\n      });\n      _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"6:2\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/2\", 1, /* show */1, /* show */1, 0, 1);\n  _._script($scope0_id, \"__tests__/template.marko_0_show\");\n  _._scope($scope0_id, {\n    show\n  }, \"__tests__/template.marko\", 0, {\n    show: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-shallow/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Toggle\n</button>\n<div>\n  mounted\n</div>\n<div>\n  child\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  destroyed\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  mounted\n</div>\n<div>\n  child\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Toggle\n</button>\n<div>\n  destroyed\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-shallow/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      mounted\n    </div>\n    <!--M_*1 #div/1-->\n    <div>\n      child\n    </div>\n    <!--M_|1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          show: !0\n        }, _.d = {\n          _: _.a\n        },\n        {\n          input: _.b = {},\n          \"#ClosestBranchId\": 2\n        }], _.b.write = _._[\n          \"__tests__/template.marko_1/write\"\n          ](_.d), _.c),\n        \"__tests__/tags/child.marko_0_input 3 __tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div0/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      destroyed\n    </div>\n    <!--M_*1 #div/1-->\n    <!--M_|1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          show: !0\n        }, _.d = {\n          _: _.a\n        },\n        {\n          input: _.b = {},\n          \"#ClosestBranchId\": 2\n        }], _.b.write = _._[\n          \"__tests__/template.marko_1/write\"\n          ](_.d), _.c),\n        \"__tests__/tags/child.marko_0_input 3 __tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/#comment2 after div\nINSERT html/body/#comment2\nREMOVE div after html/body/#comment2\nREMOVE #text in html/body/div\nINSERT html/body/div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      mounted\n    </div>\n    <!--M_*1 #div/1-->\n    <div>\n      child\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          show: !0\n        }, _.d = {\n          _: _.a\n        },\n        {\n          input: _.b = {},\n          \"#ClosestBranchId\": 2\n        }], _.b.write = _._[\n          \"__tests__/template.marko_1/write\"\n          ](_.d), _.c),\n        \"__tests__/tags/child.marko_0_input 3 __tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div1\nREMOVE #comment after html/body/div1\nREMOVE #text in html/body/div0\nINSERT html/body/div0/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      destroyed\n    </div>\n    <!--M_*1 #div/1-->\n    <!--M_|1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          show: !0\n        }, _.d = {\n          _: _.a\n        },\n        {\n          input: _.b = {},\n          \"#ClosestBranchId\": 2\n        }], _.b.write = _._[\n          \"__tests__/template.marko_1/write\"\n          ](_.d), _.c),\n        \"__tests__/tags/child.marko_0_input 3 __tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#comment2\nREMOVE div after html/body/#comment2\nREMOVE #text in html/body/div\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-shallow/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  Toggle\n</button>\n<div />\n<div>\n  child\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-shallow/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>Toggle</button><!--M_*1 #button/0--><div></div><!--M_*1 #div/1--><div>child</div><!--M_|1 #text/2 2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.a={show:!0},_.d={_:_.a},{input:_.b={},\"#ClosestBranchId\":2}],_.b.write=_._[\"__tests__/template.marko_1/write\"](_.d),_.c),\"__tests__/tags/child.marko_0_input 3 __tests__/template.marko_0_show 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/0-->\n    <div />\n    <!--M_*1 #div/1-->\n    <div>\n      child\n    </div>\n    <!--M_|1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          show: !0\n        }, _.d = {\n          _: _.a\n        },\n        {\n          input: _.b = {},\n          \"#ClosestBranchId\": 2\n        }], _.b.write = _._[\n          \"__tests__/template.marko_1/write\"\n          ](_.d), _.c),\n        \"__tests__/tags/child.marko_0_input 3 __tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment0\nINSERT html/body/div0\nINSERT html/body/#comment1\nINSERT html/body/div1\nINSERT html/body/div1/#text\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-shallow/tags/child.marko",
    "content": "<div>child</div>\n<script>\n  input.write('mounted');\n  $signal.onabort = () => {\n    input.write('destroyed')\n  };\n</script>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-shallow/template.marko",
    "content": "<let/show=true/>\n<button onClick() { show = !show }>Toggle</button>\n\n<div/el/>\n\n<if=show>\n  <child write(state) { el().innerHTML = state } />\n</if>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-shallow/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/closure-owner-scope-serialize-in-serialized-function/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"r\",\n      \"$init\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/closure-owner-scope-serialize-in-serialized-function/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  HI\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/closure-owner-scope-serialize-in-serialized-function/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<div>\n  HI\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, div, #comment1\nINSERT div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/closure-owner-scope-serialize-in-serialized-function/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 138 (min) 102 (brotli)\n(_._script(\"a2\", ($scope) => $scope.b()),\n  _._resume(\"a1\", function ($scope) {\n    return function () {\n      $scope.a.innerHTML = $scope._.b();\n    };\n  }),\n  _._resume(\"a0\", function () {\n    return \"HI\";\n  }),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/closure-owner-scope-serialize-in-serialized-function/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content__run__script = _._script(\"__tests__/template.marko_1_run\", $scope => $scope.run());\nconst $if_content__run = /* @__PURE__ */_._const(\"run\", $if_content__run__script);\nconst $if_content__text = /* @__PURE__ */_._if_closure(\"#text/0\", 0, $scope => $if_content__run($scope, $run($scope)));\nconst $if_content__setup = $if_content__text;\nconst $text2 = /* @__PURE__ */_._const(\"text\");\nconst $if = /* @__PURE__ */_._if(\"#text/0\", \"<div></div>\", /* get, over(1) */\" b\", $if_content__setup);\nexport function $setup($scope) {\n  $text2($scope, $text);\n  $if($scope, 1 ? 0 : 1);\n}\nfunction $run($scope) {\n  return function () {\n    _._el_read($scope[\"#div/0\"]).innerHTML = $scope._.text();\n  };\n}\nfunction $text() {\n  return \"HI\";\n}\n_._resume(\"__tests__/template.marko_1/run\", $run);\n_._resume(\"__tests__/template.marko_0/text\", $text);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/closure-owner-scope-serialize-in-serialized-function/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const text = _._resume(function () {\n    return \"HI\";\n  }, \"__tests__/template.marko_0/text\");\n  if (1) {\n    const $scope1_id = _._scope_id();\n    const run = _._resume(function () {\n      (el => el())(_._el_read_error).innerHTML = text();\n    }, \"__tests__/template.marko_1/run\", $scope1_id);\n    _._html(`<div></div>${_._el_resume($scope1_id, \"#div/0\")}`);\n    _._script($scope1_id, \"__tests__/template.marko_1_run\");\n    _._scope($scope1_id, {\n      run,\n      _: _._scope_with_id($scope0_id)\n    }, \"__tests__/template.marko\", \"2:2\", {\n      run: \"4:10\"\n    });\n  }\n  _._scope($scope0_id, {\n    text\n  }, \"__tests__/template.marko\", 0, {\n    text: \"1:8\"\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/closure-owner-scope-serialize-in-serialized-function/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  HI\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/closure-owner-scope-serialize-in-serialized-function/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      HI\n    </div>\n    <!--M_*2 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.b = {\n          text: _._[\n            \"__tests__/template.marko_0/text\"\n            ]\n        }, _.a = {\n          _: _.b\n        }], _.a.run = _._[\n          \"__tests__/template.marko_1/run\"\n          ](_.a), _.c),\n        \"__tests__/template.marko_1_run 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/closure-owner-scope-serialize-in-serialized-function/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/closure-owner-scope-serialize-in-serialized-function/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div></div><!--M_*2 #div/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.b={text:_._[\"__tests__/template.marko_0/text\"]},_.a={_:_.b}],_.a.run=_._[\"__tests__/template.marko_1/run\"](_.a),_.c),\"__tests__/template.marko_1_run 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*2 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.b = {\n          text: _._[\n            \"__tests__/template.marko_0/text\"\n            ]\n        }, _.a = {\n          _: _.b\n        }], _.a.run = _._[\n          \"__tests__/template.marko_1/run\"\n          ](_.a), _.c),\n        \"__tests__/template.marko_1_run 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/closure-owner-scope-serialize-in-serialized-function/template.marko",
    "content": "<const/text() { return \"HI\" }>\n<if=1>\n  <div/el/>\n  <const/run() { el().innerHTML = text(); }>\n  <script>run()</>\n</>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/closure-owner-scope-serialize-in-serialized-function/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{}, wait],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/closure-serialize-reason/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$if_content__setup\": \"r\",\n      \"$$if\": \"m\",\n      \"$$x__script\": \"n\",\n      \"$$x\": \"a\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/closure-serialize-reason/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"message\":\"hello\"}`\n\n```html\n<div />\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <span>\n    hello\n  </span>\n</div>\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <span>\n    hello\n  </span>\n</div>\n<button>\n  2\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/closure-serialize-reason/__snapshots__/csr.expected.md",
    "content": "# Render `{\"message\":\"hello\"}`\n\n```html\n<div />\n<button>\n  0\n</button>\n```\n\n# Mutations\n```\nINSERT div, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <span>\n    hello\n  </span>\n</div>\n<button>\n  1\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"0\" => \"1\"\nINSERT div/span\nUPDATE div/span/#text \" \" => \"hello\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <span>\n    hello\n  </span>\n</div>\n<button>\n  2\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"1\" => \"2\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/closure-serialize-reason/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 249 (min) 174 (brotli)\nconst $if_content__setup = _._if_closure(0, 0, ($scope) =>\n    _._text($scope.a, $scope._.h()),\n  ),\n  $if = _._if(0, \"<span> </span>\", \"D l\", $if_content__setup),\n  $x__script = _._script(\"a1\", ($scope) =>\n    _._on($scope.b, \"click\", function () {\n      $x($scope, $scope.g + 1);\n    }),\n  ),\n  $x = _._let(6, ($scope) => {\n    (_._text($scope.c, $scope.g),\n      $if($scope, $scope.g ? 0 : 1),\n      $x__script($scope));\n  });\n(_._resume(\"a0\", function ($scope) {\n  return () => $scope.f;\n}),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/closure-serialize-reason/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div></div><button> </button>\";\nexport const $walks = /* get, over(1), get, next(1), get, out(1) */\" b D l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content__getMessage = /* @__PURE__ */_._if_closure(\"#div/0\", 0, $scope => _._text($scope[\"#text/0\"], $scope._.getMessage()));\nconst $if_content__setup = $if_content__getMessage;\nconst $if = /* @__PURE__ */_._if(\"#div/0\", \"<span> </span>\", /* next(1), get, out(1) */\"D l\", $if_content__setup);\nconst $x__script = _._script(\"__tests__/template.marko_0_x\", $scope => _._on($scope[\"#button/1\"], \"click\", function () {\n  $x($scope, $scope.x + 1);\n}));\nconst $x = /* @__PURE__ */_._let(\"x/6\", $scope => {\n  _._text($scope[\"#text/2\"], $scope.x);\n  $if($scope, $scope.x ? 0 : 1);\n  $x__script($scope);\n});\nexport function $setup($scope) {\n  $x($scope, 0);\n}\nconst $getMessage2 = /* @__PURE__ */_._const(\"getMessage\", $if_content__getMessage);\nexport const $input_message = /* @__PURE__ */_._const(\"input_message\", $scope => $getMessage2($scope, $getMessage($scope)));\nexport const $input = ($scope, input) => $input_message($scope, input.message);\nfunction $getMessage($scope) {\n  return () => $scope.input_message;\n}\n_._resume(\"__tests__/template.marko_0/getMessage\", $getMessage);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/closure-serialize-reason/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let x = 0;\n  const getMessage = _._resume(() => input.message, \"__tests__/template.marko_0/getMessage\", $scope0_id);\n  _._html(\"<div>\");\n  _._if(() => {\n    if (x) {\n      const $scope1_id = _._scope_id();\n      _._html(`<span>${_._escape(getMessage())}${_._el_resume($scope1_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.message */0))}</span>`);\n      _._scope($scope1_id, {\n        _: _._serialize_if($scope0_reason, /* input.message */0) && _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"4:4\");\n      return 0;\n    }\n  }, $scope0_id, \"#div/0\", 1, /* x */1, /* x */1, \"</div>\", 1);\n  _._html(`<button>${_._escape(x)}${_._el_resume($scope0_id, \"#text/2\")}</button>${_._el_resume($scope0_id, \"#button/1\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_x\");\n  _._scope($scope0_id, {\n    input_message: input.message,\n    x,\n    getMessage\n  }, \"__tests__/template.marko\", 0, {\n    input_message: [\"input.message\"],\n    x: \"1:6\",\n    getMessage: \"2:8\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/closure-serialize-reason/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"message\":\"hello\"}`\n\n```html\n<div />\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <span>\n    hello\n  </span>\n</div>\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <span>\n    hello\n  </span>\n</div>\n<button>\n  2\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/closure-serialize-reason/__snapshots__/resume.expected.md",
    "content": "# Render `{\"message\":\"hello\"}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--M_}1 #div/0-->\n    </div>\n    <button>\n      0\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          input_message: \"hello\",\n          x: 0\n        }], _.a.getMessage = _._[\n          \"__tests__/template.marko_0/getMessage\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--M_}1 #div/0-->\n      <span>\n        hello\n      </span>\n    </div>\n    <button>\n      1\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          input_message: \"hello\",\n          x: 0\n        }], _.a.getMessage = _._[\n          \"__tests__/template.marko_0/getMessage\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"0\" => \"1\"\nINSERT html/body/div/span\nUPDATE html/body/div/span/#text \" \" => \"hello\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--M_}1 #div/0-->\n      <span>\n        hello\n      </span>\n    </div>\n    <button>\n      2\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          input_message: \"hello\",\n          x: 0\n        }], _.a.getMessage = _._[\n          \"__tests__/template.marko_0/getMessage\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"1\" => \"2\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/closure-serialize-reason/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n<button>\n  0\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/closure-serialize-reason/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><!--M_}1 #div/0--></div><button>0<!--M_*1 #text/2--></button><!--M_*1 #button/1--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={input_message:\"hello\",x:0}],_.a.getMessage=_._[\"__tests__/template.marko_0/getMessage\"](_.a),_.b),\"__tests__/template.marko_0_x 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--M_}1 #div/0-->\n    </div>\n    <button>\n      0\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          input_message: \"hello\",\n          x: 0\n        }], _.a.getMessage = _._[\n          \"__tests__/template.marko_0/getMessage\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#comment\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/closure-serialize-reason/template.marko",
    "content": "<let/x=0>\n<const/getMessage=() => input.message>\n<div>\n  <if=x>\n    <span>${getMessage()}</>\n  </>\n</div>\n<button onClick() { x++ }>\n  ${x}\n</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/closure-serialize-reason/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nconst click = (container: Element) => {\n  container.querySelector<HTMLButtonElement>(\"button\")!.click();\n};\n\nexport const config: TestConfig = {\n  steps: [{ message: \"hello\" }, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/comments/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/comments/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/comments/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  <!--abc-->\n  <!--[if lt IE 9]&gt;&lt;script src=\"...\"&gt;&lt;/script&gt;&lt;![endif]-->\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/comments/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/comments/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div><!--abc--><!--[if lt IE 9]><script src=\\\"...\\\"></script><![endif]--></div>\";\nexport const $walks = /* over(1) */\"b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/comments/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div><!--abc--><!--[if lt IE 9]><script src=\\\"...\\\"></script><![endif]--></div>\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/comments/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/comments/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--abc-->\n      <!--[if lt IE 9]&gt;&lt;script src=\"...\"&gt;&lt;/script&gt;&lt;![endif]-->\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/comments/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/comments/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><!--abc--><!--[if lt IE 9]><script src=\"...\"></script><![endif]--></div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--abc-->\n      <!--[if lt IE 9]&gt;&lt;script src=\"...\"&gt;&lt;/script&gt;&lt;![endif]-->\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#comment0\nINSERT html/body/div/#comment1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/comments/template.marko",
    "content": "<div>\n  <!--123-->\n  <html-comment>abc</html-comment>\n  <!--[if lt IE 9]><script src=\"...\"></script><![endif]-->\n  <html-comment>[if lt IE 9]><script src=\"...\"></script><![endif]</html-comment>\n</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-import-value/__snapshots__/dom.expected/tags/counter.js",
    "content": "export const $template = \"<button> </button>\";\nexport const $walks = /* get, next(1), get, out(1) */\" D l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $input__OR__count = /* @__PURE__ */_._or(5, $scope => _._text($scope[\"#text/1\"], $scope.input.format($scope.count)));\nconst $count__script = _._script(\"__tests__/tags/counter.marko_0_count\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $count($scope, $scope.count + 1);\n}));\nconst $count = /* @__PURE__ */_._let(\"count/4\", $scope => {\n  $input__OR__count($scope);\n  $count__script($scope);\n});\nexport function $setup($scope) {\n  $count($scope, 0);\n}\nexport const $input = /* @__PURE__ */_._const(\"input\", $input__OR__count);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/counter.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-import-value/__snapshots__/dom.expected/template.js",
    "content": "export const $template = _counter_template;\nexport const $walks = /* <counter> */`/${_counter_walks}&`;\nimport { formatNumber } from \"./helpers\";\nimport { $setup as _counter, $input as _counter_input, $template as _counter_template, $walks as _counter_walks } from \"./tags/counter.marko\";\nexport function $setup($scope) {\n  _counter($scope[\"#childScope/0\"]);\n  _counter_input($scope[\"#childScope/0\"], {\n    format: formatNumber\n  });\n}\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-import-value/__snapshots__/html.expected/tags/counter.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/counter.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let count = 0;\n  _._html(`<button>${_._escape(input.format(count))}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/tags/counter.marko_0_count\");\n  _._scope($scope0_id, {\n    input,\n    count\n  }, \"__tests__/tags/counter.marko\", 0, {\n    input: 0,\n    count: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-import-value/__snapshots__/html.expected/template.js",
    "content": "import { formatNumber } from \"./helpers\";\nimport _counter from \"./tags/counter.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _counter({\n    format: formatNumber\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-import-value/__snapshots__/ssr-sanitized.expected.md",
    "content": "Unable to serialize \"input\" in packages/runtime-tags/src/__tests__/fixtures/component-attrs-import-value/tags/counter.marko (reading format)"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-import-value/__snapshots__/ssr.expected.md",
    "content": "Unable to serialize \"input\" in packages/runtime-tags/src/__tests__/fixtures/component-attrs-import-value/tags/counter.marko (reading format)"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-import-value/helpers.ts",
    "content": "export const formatNumber = (n: number) => {\n  return \"$\" + n.toFixed(2);\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-import-value/tags/counter.marko",
    "content": "<let/count = 0/>\n<button onClick() { count++ }>\n  ${input.format(count)}\n</button>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-import-value/template.marko",
    "content": "import { formatNumber } from \"./helpers\";\n<counter format=formatNumber/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-import-value/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n  skip_csr: true,\n  error_runtime: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-intersection/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"o\",\n      \"$init\": \"t\",\n      \"$$value__OR__dummy\": \"m\",\n      \"$$value\": \"r\",\n      \"$$count__script\": \"c\",\n      \"$$count\": \"a\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-intersection/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  0\n</div>\n<button />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  1\n</div>\n<button />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-intersection/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  0\n</div>\n<button />\n```\n\n# Mutations\n```\nINSERT div, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  1\n</div>\n<button />\n```\n\n# Mutations\n```\nUPDATE div/#text \"0\" => \"1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-intersection/__snapshots__/dom.expected/tags/display-intersection.js",
    "content": "export const $template = \"<div> </div>\";\nexport const $walks = /* next(1), get, out(1) */\"D l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $value__OR__dummy = /* @__PURE__ */_._or(5, $scope => _._text($scope[\"#text/0\"], ($scope.dummy, $scope.value)));\nconst $dummy = /* @__PURE__ */_._let(\"dummy/4\", $value__OR__dummy);\nexport function $setup($scope) {\n  $dummy($scope, {});\n}\nexport const $value = /* @__PURE__ */_._const(\"value\", $value__OR__dummy);\nexport const $input = ($scope, input) => $value($scope, input.value);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/display-intersection.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-intersection/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 159 (min) 135 (brotli)\nconst $value__OR__dummy = _._or(5, ($scope) =>\n    _._text($scope.a, ($scope.e, $scope.d)),\n  ),\n  $value = _._const(3, $value__OR__dummy),\n  $count__script = _._script(\"b0\", ($scope) =>\n    _._on($scope.b, \"click\", function () {\n      $count($scope, $scope.c + 1);\n    }),\n  ),\n  $count = _._let(2, ($scope) => {\n    ($value($scope.a, $scope.c), $count__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-intersection/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `${_displayIntersection_template}<button></button>`;\nexport const $walks = /* <display-intersection>, get, over(1) */`/${_displayIntersection_walks}& b`;\nimport { $setup as _displayIntersection, $value as _displayIntersection_input_value, $template as _displayIntersection_template, $walks as _displayIntersection_walks } from \"./tags/display-intersection.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $count__script = _._script(\"__tests__/template.marko_0_count\", $scope => _._on($scope[\"#button/1\"], \"click\", function () {\n  $count($scope, $scope.count + 1);\n}));\nconst $count = /* @__PURE__ */_._let(\"count/2\", $scope => {\n  _displayIntersection_input_value($scope[\"#childScope/0\"], $scope.count);\n  $count__script($scope);\n});\nexport function $setup($scope) {\n  _displayIntersection($scope[\"#childScope/0\"]);\n  $count($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-intersection/__snapshots__/html.expected/tags/display-intersection.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/display-intersection.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    value\n  } = input;\n  let dummy = {};\n  _._html(`<div>${_._escape((dummy, value))}${_._el_resume($scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.value */0))}</div>`);\n  _._serialize_if($scope0_reason, /* input.value */0) && _._scope($scope0_id, {\n    dummy\n  }, \"__tests__/tags/display-intersection.marko\", 0, {\n    dummy: \"2:6\"\n  });\n  _._resume_branch($scope0_id);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-intersection/__snapshots__/html.expected/template.js",
    "content": "import _displayIntersection from \"./tags/display-intersection.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let count = 0;\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason(/* count */1);\n  _displayIntersection({\n    value: count\n  });\n  _._html(`<button></button>${_._el_resume($scope0_id, \"#button/1\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_count\");\n  _._scope($scope0_id, {\n    count,\n    \"#childScope/0\": _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0, {\n    count: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-intersection/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  0\n</div>\n<button />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  1\n</div>\n<button />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-intersection/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      0\n      <!--M_*2 #text/0-->\n    </div>\n    <button />\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0,\n        {\n          count: 0,\n          \"#childScope/0\": _.a = {\n            dummy:\n            {}\n          }\n        }, _.a]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      1\n      <!--M_*2 #text/0-->\n    </div>\n    <button />\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0,\n        {\n          count: 0,\n          \"#childScope/0\": _.a = {\n            dummy:\n            {}\n          }\n        }, _.a]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/#text \"0\" => \"1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-intersection/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  0\n</div>\n<button />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-intersection/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>0<!--M_*2 #text/0--></div><button></button><!--M_*1 #button/1--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,{count:0,\"#childScope/0\":_.a={dummy:{}}},_.a]),\"__tests__/template.marko_0_count 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      0\n      <!--M_*2 #text/0-->\n    </div>\n    <button />\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0,\n        {\n          count: 0,\n          \"#childScope/0\": _.a = {\n            dummy:\n            {}\n          }\n        }, _.a]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/div/#comment\nINSERT html/body/button\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-intersection/tags/display-intersection.marko",
    "content": "<attrs/{ value }/>\n<let/dummy = {}/>\n<div>${dummy, value}</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-intersection/template.marko",
    "content": "<let/count = 0/>\n<display-intersection value=count/>\n<button onClick() { count++ }/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-intersection/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-static-code/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$input__OR__count\": \"r\",\n      \"$$count__script\": \"e\",\n      \"$$count\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-static-code/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  $0.00\n</button>\n<button>\n  $0.00\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\").forEach(button => button.click());\n```\n```html\n<button>\n  $1.00\n</button>\n<button>\n  $1.00\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-static-code/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  $0.00\n</button>\n<button>\n  $0.00\n</button>\n```\n\n# Mutations\n```\nINSERT button0, button1\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\").forEach(button => button.click());\n```\n```html\n<button>\n  $1.00\n</button>\n<button>\n  $1.00\n</button>\n```\n\n# Mutations\n```\nUPDATE button0/#text \"$0.00\" => \"$1.00\"\nUPDATE button1/#text \"$0.00\" => \"$1.00\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-static-code/__snapshots__/dom.expected/tags/counter.js",
    "content": "export const $template = \"<button> </button>\";\nexport const $walks = /* get, next(1), get, out(1) */\" D l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $input__OR__count = /* @__PURE__ */_._or(5, $scope => _._text($scope[\"#text/1\"], $scope.input.format($scope.count)));\nconst $count__script = _._script(\"__tests__/tags/counter.marko_0_count\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $count($scope, $scope.count + 1);\n}));\nconst $count = /* @__PURE__ */_._let(\"count/4\", $scope => {\n  $input__OR__count($scope);\n  $count__script($scope);\n});\nexport function $setup($scope) {\n  $count($scope, 0);\n}\nexport const $input = /* @__PURE__ */_._const(\"input\", $input__OR__count);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/counter.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-static-code/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 247 (min) 149 (brotli)\nconst $input__OR__count = _._or(5, ($scope) =>\n    _._text($scope.b, $scope.d.format($scope.e)),\n  ),\n  $count__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $count($scope, $scope.e + 1);\n    }),\n  ),\n  $count = _._let(4, ($scope) => {\n    ($input__OR__count($scope), $count__script($scope));\n  });\n(_._resume(\"b0\", function (n) {\n  return \"$\" + n.toFixed(2);\n}),\n  _._resume(\"b1\", function (n) {\n    return \"$\" + n.toFixed(2);\n  }),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-static-code/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `${_counter_template}${_counter_template}`;\nexport const $walks = /* <counter>, <counter> */`/${_counter_walks}&/${_counter_walks}&`;\nconst formatNumber = $formatNumber;\nconst formatNumber2 = $formatNumber2;\nimport { $setup as _counter, $input as _counter_input, $template as _counter_template, $walks as _counter_walks } from \"./tags/counter.marko\";\nexport function $setup($scope) {\n  _counter($scope[\"#childScope/0\"]);\n  _counter_input($scope[\"#childScope/0\"], {\n    format: formatNumber\n  });\n  _counter($scope[\"#childScope/1\"]);\n  _counter_input($scope[\"#childScope/1\"], {\n    format: formatNumber2\n  });\n}\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nfunction $formatNumber(n) {\n  return \"$\" + n.toFixed(2);\n}\nfunction $formatNumber2(n) {\n  return \"$\" + n.toFixed(2);\n}\n_._resume(\"__tests__/template.marko_0/formatNumber\", $formatNumber);\n_._resume(\"__tests__/template.marko_0/formatNumber2\", $formatNumber2);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-static-code/__snapshots__/html.expected/tags/counter.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/counter.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let count = 0;\n  _._html(`<button>${_._escape(input.format(count))}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/tags/counter.marko_0_count\");\n  _._scope($scope0_id, {\n    input,\n    count\n  }, \"__tests__/tags/counter.marko\", 0, {\n    input: 0,\n    count: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-static-code/__snapshots__/html.expected/template.js",
    "content": "const formatNumber = _._resume(n => {\n  return \"$\" + n.toFixed(2);\n}, \"__tests__/template.marko_0/formatNumber\");\nfunction formatNumber2(n) {\n  return \"$\" + n.toFixed(2);\n}\n_._resume(formatNumber2, \"__tests__/template.marko_0/formatNumber2\");\nimport _counter from \"./tags/counter.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _counter({\n    format: formatNumber\n  });\n  _counter({\n    format: formatNumber2\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-static-code/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  $0.00\n</button>\n<button>\n  $0.00\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\").forEach(button => button.click());\n```\n```html\n<button>\n  $1.00\n</button>\n<button>\n  $1.00\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-static-code/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      $0.00\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <button>\n      $0.00\n      <!--M_*3 #text/1-->\n    </button>\n    <!--M_*3 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 1,\n        {\n          input:\n          {\n            format: _._[\n              \"__tests__/template.marko_0/formatNumber\"\n              ]\n          },\n          count: 0\n        },\n        {\n          input:\n          {\n            format: _._[\n              \"__tests__/template.marko_0/formatNumber2\"\n              ]\n          },\n          count: 0\n        }]),\n        \"__tests__/tags/counter.marko_0_count 2 3\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\").forEach(button => button.click());\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      $1.00\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <button>\n      $1.00\n      <!--M_*3 #text/1-->\n    </button>\n    <!--M_*3 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 1,\n        {\n          input:\n          {\n            format: _._[\n              \"__tests__/template.marko_0/formatNumber\"\n              ]\n          },\n          count: 0\n        },\n        {\n          input:\n          {\n            format: _._[\n              \"__tests__/template.marko_0/formatNumber2\"\n              ]\n          },\n          count: 0\n        }]),\n        \"__tests__/tags/counter.marko_0_count 2 3\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button0/#text \"$0.00\" => \"$1.00\"\nUPDATE html/body/button1/#text \"$0.00\" => \"$1.00\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-static-code/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  $0.00\n</button>\n<button>\n  $0.00\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-static-code/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>$0.00<!--M_*2 #text/1--></button><!--M_*2 #button/0--><button>$0.00<!--M_*3 #text/1--></button><!--M_*3 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,1,{input:{format:_._[\"__tests__/template.marko_0/formatNumber\"]},count:0},{input:{format:_._[\"__tests__/template.marko_0/formatNumber2\"]},count:0}]),\"__tests__/tags/counter.marko_0_count 2 3\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      $0.00\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <button>\n      $0.00\n      <!--M_*3 #text/1-->\n    </button>\n    <!--M_*3 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 1,\n        {\n          input:\n          {\n            format: _._[\n              \"__tests__/template.marko_0/formatNumber\"\n              ]\n          },\n          count: 0\n        },\n        {\n          input:\n          {\n            format: _._[\n              \"__tests__/template.marko_0/formatNumber2\"\n              ]\n          },\n          count: 0\n        }]),\n        \"__tests__/tags/counter.marko_0_count 2 3\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button0\nINSERT html/body/button0/#text\nINSERT html/body/button0/#comment\nINSERT html/body/#comment0\nINSERT html/body/button1\nINSERT html/body/button1/#text\nINSERT html/body/button1/#comment\nINSERT html/body/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-static-code/helpers.ts",
    "content": "export const formatNumber = (n: number) => {\n  return \"$\" + n.toFixed(2);\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-static-code/tags/counter.marko",
    "content": "<let/count = 0/>\n<button onClick() { count++ }>\n  ${input.format(count)}\n</button>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-static-code/template.marko",
    "content": "static const formatNumber = (n: number) => {\n  return \"$\" + n.toFixed(2);\n}\n\nstatic function formatNumber2(n: number) {\n  return \"$\" + n.toFixed(2);\n}\n<counter format=formatNumber/>\n<counter format=formatNumber2/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-static-code/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelectorAll(\"button\")!.forEach((button) => button.click());\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-static-non-registered-function/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-static-non-registered-function/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  $1.00\n</div>\n<div>\n  $1.11\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\").forEach(button => button.click());\n```\n```html\n<div>\n  $1.00\n</div>\n<div>\n  $1.11\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-static-non-registered-function/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  $1.00\n</div>\n<div>\n  $1.11\n</div>\n```\n\n# Mutations\n```\nINSERT div0, div1\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\").forEach(button => button.click());\n```\n```html\n<div>\n  $1.00\n</div>\n<div>\n  $1.11\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-static-non-registered-function/__snapshots__/dom.expected/tags/price.js",
    "content": "export const $template = \"<div> </div>\";\nexport const $walks = /* next(1), get, out(1) */\"D l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $input = ($scope, input) => _._text($scope[\"#text/0\"], input.format(input.value));\nexport default /* @__PURE__ */_._template(\"__tests__/tags/price.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-static-non-registered-function/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-static-non-registered-function/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `${_price_template}${_price_template}`;\nexport const $walks = /* <price>, <price> */`/${_price_walks}&/${_price_walks}&`;\nconst formatNumber = n => {\n  return \"$\" + n.toFixed(2);\n};\nfunction formatNumber2(n) {\n  return \"$\" + n.toFixed(2);\n}\nimport { $setup as _price, $input as _price_input, $template as _price_template, $walks as _price_walks } from \"./tags/price.marko\";\nexport function $setup($scope) {\n  _price($scope[\"#childScope/0\"]);\n  _price_input($scope[\"#childScope/0\"], {\n    value: 1,\n    format: formatNumber\n  });\n  _price($scope[\"#childScope/1\"]);\n  _price_input($scope[\"#childScope/1\"], {\n    value: 1.1111,\n    format: formatNumber2\n  });\n}\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-static-non-registered-function/__snapshots__/html.expected/tags/price.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/price.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div>${_._escape(input.format(input.value))}${_._el_resume($scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input */0))}</div>`);\n  _._serialize_if($scope0_reason, /* input */0) && _._scope($scope0_id, {}, \"__tests__/tags/price.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-static-non-registered-function/__snapshots__/html.expected/template.js",
    "content": "const formatNumber = n => {\n  return \"$\" + n.toFixed(2);\n};\nfunction formatNumber2(n) {\n  return \"$\" + n.toFixed(2);\n}\nimport _price from \"./tags/price.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _price({\n    value: 1,\n    format: formatNumber\n  });\n  _price({\n    value: 1.1111,\n    format: formatNumber2\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-static-non-registered-function/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  $1.00\n</div>\n<div>\n  $1.11\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\").forEach(button => button.click());\n```\n```html\n<div>\n  $1.00\n</div>\n<div>\n  $1.11\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-static-non-registered-function/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      $1.00\n    </div>\n    <div>\n      $1.11\n    </div>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\").forEach(button => button.click());\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      $1.00\n    </div>\n    <div>\n      $1.11\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-static-non-registered-function/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  $1.00\n</div>\n<div>\n  $1.11\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-static-non-registered-function/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>$1.00</div><div>$1.11</div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      $1.00\n    </div>\n    <div>\n      $1.11\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/div0/#text\nINSERT html/body/div1\nINSERT html/body/div1/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-static-non-registered-function/helpers.ts",
    "content": "export const formatNumber = (n: number) => {\n  return \"$\" + n.toFixed(2);\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-static-non-registered-function/tags/price.marko",
    "content": "<div>${input.format(input.value)}</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-static-non-registered-function/template.marko",
    "content": "static const formatNumber = (n: number) => {\n  return \"$\" + n.toFixed(2);\n}\n\nstatic function formatNumber2(n: number) {\n  return \"$\" + n.toFixed(2);\n}\n<price value=1 format=formatNumber/>\n<price value=1.1111 format=formatNumber2/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/component-attrs-static-non-registered-function/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelectorAll(\"button\")!.forEach((button) => button.click());\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/conditional-table-row/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$if\": \"r\",\n      \"$$show__script\": \"m\",\n      \"$$show\": \"i\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/conditional-table-row/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<table>\n  <tbody />\n</table>\n<button>\n  Toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<table>\n  <tbody>\n    <tr>\n      <td>\n        Hi\n      </td>\n    </tr>\n  </tbody>\n</table>\n<button>\n  Toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<table>\n  <tbody />\n</table>\n<button>\n  Toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<table>\n  <tbody>\n    <tr>\n      <td>\n        Hi\n      </td>\n    </tr>\n  </tbody>\n</table>\n<button>\n  Toggle\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/conditional-table-row/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<table>\n  <tbody />\n</table>\n<button>\n  Toggle\n</button>\n```\n\n# Mutations\n```\nINSERT table, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<table>\n  <tbody>\n    <tr>\n      <td>\n        Hi\n      </td>\n    </tr>\n  </tbody>\n</table>\n<button>\n  Toggle\n</button>\n```\n\n# Mutations\n```\nINSERT table/tbody/tr\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<table>\n  <tbody />\n</table>\n<button>\n  Toggle\n</button>\n```\n\n# Mutations\n```\nREMOVE tr in table/tbody\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<table>\n  <tbody>\n    <tr>\n      <td>\n        Hi\n      </td>\n    </tr>\n  </tbody>\n</table>\n<button>\n  Toggle\n</button>\n```\n\n# Mutations\n```\nINSERT table/tbody/tr\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/conditional-table-row/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 145 (min) 124 (brotli)\nconst $if = _._if(0, \"<tr><td>Hi</td></tr>\", \"b\"),\n  $show__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.b, \"click\", function () {\n      $show($scope, !$scope.c);\n    }),\n  ),\n  $show = _._let(2, ($scope) => {\n    ($if($scope, $scope.c ? 0 : 1), $show__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/conditional-table-row/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<table><tbody></tbody></table><button>Toggle</button>\";\nexport const $walks = /* next(1), get, out(1), get, over(1) */\"D l b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if = /* @__PURE__ */_._if(\"#tbody/0\", \"<tr><td>Hi</td></tr>\", /* over(1) */\"b\");\nconst $show__script = _._script(\"__tests__/template.marko_0_show\", $scope => _._on($scope[\"#button/1\"], \"click\", function () {\n  $show($scope, !$scope.show);\n}));\nconst $show = /* @__PURE__ */_._let(\"show/2\", $scope => {\n  $if($scope, $scope.show ? 0 : 1);\n  $show__script($scope);\n});\nexport function $setup($scope) {\n  $show($scope, false);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/conditional-table-row/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let show = false;\n  _._html(\"<table><tbody>\");\n  _._if(() => {\n    if (show) {\n      const $scope1_id = _._scope_id();\n      _._html(\"<tr><td>Hi</td></tr>\");\n      _._scope($scope1_id, {}, \"__tests__/template.marko\", \"4:6\");\n      return 0;\n    }\n  }, $scope0_id, \"#tbody/0\", 1, /* show */1, /* show */1, \"</tbody>\", 1);\n  _._html(`</table><button>Toggle</button>${_._el_resume($scope0_id, \"#button/1\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_show\");\n  _._scope($scope0_id, {\n    show\n  }, \"__tests__/template.marko\", 0, {\n    show: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/conditional-table-row/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<table>\n  <tbody />\n</table>\n<button>\n  Toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<table>\n  <tbody>\n    <tr>\n      <td>\n        Hi\n      </td>\n    </tr>\n  </tbody>\n</table>\n<button>\n  Toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<table>\n  <tbody />\n</table>\n<button>\n  Toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<table>\n  <tbody>\n    <tr>\n      <td>\n        Hi\n      </td>\n    </tr>\n  </tbody>\n</table>\n<button>\n  Toggle\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/conditional-table-row/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <table>\n      <tbody>\n        <!--M_}1 #tbody/0-->\n      </tbody>\n    </table>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          show: !1\n        }]),\n        \"__tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <table>\n      <tbody>\n        <!--M_}1 #tbody/0-->\n        <tr>\n          <td>\n            Hi\n          </td>\n        </tr>\n      </tbody>\n    </table>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          show: !1\n        }]),\n        \"__tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/table/tbody/tr\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <table>\n      <tbody />\n    </table>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          show: !1\n        }]),\n        \"__tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #comment, tr in html/body/table/tbody\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <table>\n      <tbody>\n        <tr>\n          <td>\n            Hi\n          </td>\n        </tr>\n      </tbody>\n    </table>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          show: !1\n        }]),\n        \"__tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/table/tbody/tr\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/conditional-table-row/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<table>\n  <tbody />\n</table>\n<button>\n  Toggle\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/conditional-table-row/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <table><tbody><!--M_}1 #tbody/0--></tbody></table><button>Toggle</button><!--M_*1 #button/1--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{show:!1}]),\"__tests__/template.marko_0_show 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <table>\n      <tbody>\n        <!--M_}1 #tbody/0-->\n      </tbody>\n    </table>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          show: !1\n        }]),\n        \"__tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/table\nINSERT html/body/table/tbody\nINSERT html/body/table/tbody/#comment\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/conditional-table-row/template.marko",
    "content": "<let/show=false/>\n<table>\n  <tbody>\n    <if=show>\n      <tr><td>Hi</></>\n    </>\n  </tbody>\n</table>\n<button onClick() { show = !show }>Toggle</>\n\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/conditional-table-row/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/const-tag/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"m\",\n      \"$init\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/const-tag/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  11\n</div>\nfunction\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/const-tag/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  11\n</div>\nfunction\n```\n\n# Mutations\n```\nINSERT div, #text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/const-tag/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 65 (min) 69 (brotli)\n(_._hoist_resume(\"a1\", 4),\n  _._resume(\"a0\", function () {\n    return 1;\n  }),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/const-tag/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div><!><!></div><!>\";\nexport const $walks = /* next(1), replace, over(1), replace, out(1), replace, over(1) */\"D%b%l%b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $y_getter = _._hoist_resume(\"__tests__/template.marko_0_y/hoist\", \"y\");\nconst $x = ($scope, x) => _._text($scope[\"#text/0\"], x);\nconst $y2 = /* @__PURE__ */_._const(\"y\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.y());\n  _._assert_hoist($scope.y);\n});\nexport function $setup($scope) {\n  _._text($scope[\"#text/2\"], typeof $y_getter($scope));\n  $x($scope, 1);\n  $y2($scope, $y);\n}\nfunction $y() {\n  return 1;\n}\n_._resume(\"__tests__/template.marko_0/y\", $y);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/const-tag/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $y_getter = _._hoist($scope0_id, \"__tests__/template.marko_0_y/hoist\");\n  const x = 1;\n  const y = _._resume(() => 1, \"__tests__/template.marko_0/y\");\n  _._html(`<div>${_._escape(x)}${_._escape(y())}</div>${_._escape(typeof $y_getter)}`);\n  _._scope($scope0_id, {\n    y\n  }, \"__tests__/template.marko\", 0, {\n    y: \"3:10\"\n  });\n  _._assert_hoist(y);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/const-tag/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  11\n</div>\nfunction\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/const-tag/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      11\n    </div>\n    function\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n      {\n        y: _._[\n          \"__tests__/template.marko_0/y\"\n          ]\n      }])]\n    </script>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/const-tag/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  11\n</div>\nfunction\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/const-tag/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>11</div>function<script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{y:_._[\"__tests__/template.marko_0/y\"]}])]</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      11\n    </div>\n    function\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n      {\n        y: _._[\n          \"__tests__/template.marko_0/y\"\n          ]\n      }])]\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/#text\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/const-tag/template.marko",
    "content": "<const/x=1/>\n<div>\n  <const/y=()=>1/>\n  ${x}\n  ${y()}\n</div>\n\n-- ${typeof y}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/const-tag-destructure/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/const-tag-destructure/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  1\n</div>\n2\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/const-tag-destructure/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  1\n</div>\n2\n```\n\n# Mutations\n```\nINSERT div, #text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/const-tag-destructure/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/const-tag-destructure/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div> </div><!>\";\nexport const $walks = /* next(1), get, out(1), replace, over(1) */\"D l%b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $z = /* @__PURE__ */_._let(\"z/2\", $scope => {\n  $x($scope, $scope.z.x);\n  $y($scope, $scope.z.y);\n});\nconst $x = /* @__PURE__ */_._const(\"x\", $scope => _._text($scope[\"#text/0\"], $scope.x));\nconst $y = /* @__PURE__ */_._const(\"y\", $scope => _._text($scope[\"#text/1\"], $scope.y));\nexport function $setup($scope) {\n  $z($scope, {\n    x: 1,\n    y: 2\n  });\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/const-tag-destructure/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let z = {\n    x: 1,\n    y: 2\n  };\n  const {\n    x,\n    y\n  } = z;\n  _._html(`<div>${_._escape(x)}</div>${_._escape(y)}`);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/const-tag-destructure/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  1\n</div>\n2\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/const-tag-destructure/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      1\n    </div>\n    2\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/const-tag-destructure/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  1\n</div>\n2\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/const-tag-destructure/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>1</div>2\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      1\n    </div>\n    2\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/const-tag-destructure/template.marko",
    "content": "<let/z = { x: 1, y: 2 }/>\n<const/{ x, y } = z/>\n<div>\n  ${x}\n</div>\n\n-- ${y}"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/const-tag-hoist-error/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/const-tag-hoist-error/__snapshots__/csr-sanitized.expected.md",
    "content": "Hoisted values must be functions, received type \"number\"."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/const-tag-hoist-error/__snapshots__/csr.expected.md",
    "content": "Hoisted values must be functions, received type \"number\"."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/const-tag-hoist-error/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 24 (min) 28 (brotli)\n_._hoist_resume(\"a0\", 3);\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/const-tag-hoist-error/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div> </div><!>\";\nexport const $walks = /* next(1), get, out(1), replace, over(1) */\"D l%b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $y_getter = _._hoist_resume(\"__tests__/template.marko_0_y/hoist\", \"y\");\nconst $x = ($scope, x) => _._text($scope[\"#text/0\"], x);\nconst $y = /* @__PURE__ */_._const(\"y\", $scope => _._assert_hoist($scope.y));\nexport function $setup($scope) {\n  _._text($scope[\"#text/1\"], $y_getter($scope));\n  $x($scope, 1);\n  $y($scope, 1);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/const-tag-hoist-error/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $y_getter = _._hoist($scope0_id, \"__tests__/template.marko_0_y/hoist\");\n  const x = 1;\n  const y = 1;\n  _._html(`<div>${_._escape(x)}</div>${_._escape($y_getter)}`);\n  _._scope($scope0_id, {\n    y\n  }, \"__tests__/template.marko\", 0, {\n    y: \"3:10\"\n  });\n  _._assert_hoist(y);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/const-tag-hoist-error/__snapshots__/resume-sanitized.expected.md",
    "content": "Hoisted values must be functions, received type \"number\"."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/const-tag-hoist-error/__snapshots__/resume.expected.md",
    "content": "Hoisted values must be functions, received type \"number\"."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/const-tag-hoist-error/__snapshots__/ssr-sanitized.expected.md",
    "content": "Hoisted values must be functions, received type \"number\"."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/const-tag-hoist-error/__snapshots__/ssr.expected.md",
    "content": "Hoisted values must be functions, received type \"number\"."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/const-tag-hoist-error/template.marko",
    "content": "<const/x=1/>\n<div>\n  <const/y=1/>\n  ${x}\n</div>\n\n-- ${y}"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/const-tag-hoist-error/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_runtime: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"r\",\n      \"$$checked\": \"a\",\n      \"$$checkedChange\": \"e\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  type=\"checkbox\"\n/>\n<span>\n  false\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"input\").click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n/>\n<span>\n  true\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"input\").click();\n```\n```html\n<input\n  type=\"checkbox\"\n/>\n<span>\n  false\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"input\").click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n/>\n<span>\n  true\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<input\n  type=\"checkbox\"\n/>\n<span>\n  false\n</span>\n```\n\n# Mutations\n```\nINSERT input, span\n```\n\n# Render\n```js\ncontainer.querySelector(\"input\").click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n/>\n<span>\n  true\n</span>\n```\n\n# Mutations\n```\nUPDATE span/#text \"false\" => \"true\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"input\").click();\n```\n```html\n<input\n  type=\"checkbox\"\n/>\n<span>\n  false\n</span>\n```\n\n# Mutations\n```\nUPDATE span/#text \"true\" => \"false\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"input\").click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n/>\n<span>\n  true\n</span>\n```\n\n# Mutations\n```\nUPDATE span/#text \"false\" => \"true\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 196 (min) 122 (brotli)\nconst $checked = _._let(2, ($scope) => {\n  (_._attr_input_checked($scope, \"a\", $scope.c, $checkedChange($scope)),\n    _._text($scope.b, String($scope.c)));\n});\nfunction $checkedChange($scope) {\n  return (_new_checked) => {\n    $checked($scope, _new_checked);\n  };\n}\n(_._script(\"a1\", ($scope) => _._attr_input_checked_script($scope, \"a\")),\n  _._resume(\"a0\", $checkedChange),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<input type=checkbox><span> </span>\";\nexport const $walks = /* get, over(1), next(1), get, out(1) */\" bD l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $checked = /* @__PURE__ */_._let(\"checked/2\", $scope => {\n  _._attr_input_checked($scope, \"#input/0\", $scope.checked, $checkedChange($scope));\n  _._text($scope[\"#text/1\"], String($scope.checked));\n});\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => _._attr_input_checked_script($scope, \"#input/0\"));\nexport function $setup($scope) {\n  $checked($scope, false);\n  $setup__script($scope);\n}\nfunction $checkedChange($scope) {\n  return _new_checked => {\n    $checked($scope, _new_checked);\n  };\n}\n_._resume(\"__tests__/template.marko_0/checkedChange\", $checkedChange);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let checked = false;\n  _._html(`<input${_._attr_input_checked($scope0_id, \"#input/0\", checked, _._resume(_new_checked => {\n    checked = _new_checked;\n  }, \"__tests__/template.marko_0/checkedChange\", $scope0_id))} type=checkbox>${_._el_resume($scope0_id, \"#input/0\")}<span>${_._escape(String(checked))}${_._el_resume($scope0_id, \"#text/1\")}</span>`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  type=\"checkbox\"\n/>\n<span>\n  false\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"input\").click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n/>\n<span>\n  true\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"input\").click();\n```\n```html\n<input\n  type=\"checkbox\"\n/>\n<span>\n  false\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"input\").click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n/>\n<span>\n  true\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <input\n      type=\"checkbox\"\n    />\n    <!--M_*1 #input/0-->\n    <span>\n      false\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#input/0\": 0\n        }], _.a[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_0/checkedChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"input\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      checked=\"\"\n      type=\"checkbox\"\n    />\n    <!--M_*1 #input/0-->\n    <span>\n      true\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#input/0\": 0\n        }], _.a[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_0/checkedChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"false\" => \"true\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"input\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      type=\"checkbox\"\n    />\n    <!--M_*1 #input/0-->\n    <span>\n      false\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#input/0\": 0\n        }], _.a[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_0/checkedChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"true\" => \"false\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"input\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      checked=\"\"\n      type=\"checkbox\"\n    />\n    <!--M_*1 #input/0-->\n    <span>\n      true\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#input/0\": 0\n        }], _.a[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_0/checkedChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"false\" => \"true\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<input\n  type=\"checkbox\"\n/>\n<span>\n  false\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <input type=checkbox><!--M_*1 #input/0--><span>false<!--M_*1 #text/1--></span><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={\"ControlledType:#input/0\":0}],_.a[\"ControlledHandler:#input/0\"]=_._[\"__tests__/template.marko_0/checkedChange\"](_.a),_.b),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <input\n      type=\"checkbox\"\n    />\n    <!--M_*1 #input/0-->\n    <span>\n      false\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#input/0\": 0\n        }], _.a[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_0/checkedChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/input\nINSERT html/body/#comment\nINSERT html/body/span\nINSERT html/body/span/#text\nINSERT html/body/span/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked/template.marko",
    "content": "<let/checked = false/>\n<input type=\"checkbox\" checked:=checked/>\n<span>${String(checked)}</span>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"input\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-many/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$for_content__checked\": \"r\",\n      \"$$for_content__states__OR__state\": \"e\",\n      \"$$for_content__states\": \"_\",\n      \"$$for_content__setup__script\": \"n\",\n      \"$$for_content__setup\": \"c\",\n      \"$$for_content__state\": \"i\",\n      \"$$for_content__$params\": \"u\",\n      \"$$for\": \"a\",\n      \"$$states\": \"m\",\n      \"$$checkedChange\": \"s\",\n      \"$$valueChange\": \"f\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-many/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  type=\"checkbox\"\n/>\n<input\n  type=\"checkbox\"\n/>\n<input\n  type=\"checkbox\"\n/>\n<div>\n  false,false,false\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"input\").item(0).click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n/>\n<input\n  type=\"checkbox\"\n/>\n<input\n  type=\"checkbox\"\n/>\n<div>\n  true,false,false\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"input\").item(1).click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n/>\n<input\n  checked=\"\"\n  type=\"checkbox\"\n/>\n<input\n  type=\"checkbox\"\n/>\n<div>\n  true,true,false\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"input\").item(1).click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n/>\n<input\n  type=\"checkbox\"\n/>\n<input\n  type=\"checkbox\"\n/>\n<div>\n  true,false,false\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-many/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<input\n  type=\"checkbox\"\n/>\n<input\n  type=\"checkbox\"\n/>\n<input\n  type=\"checkbox\"\n/>\n<div>\n  false,false,false\n</div>\n```\n\n# Mutations\n```\nINSERT #comment, input0, input1, input2, div\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"input\").item(0).click();\n```\n```html\n<!---->\n<input\n  checked=\"\"\n  type=\"checkbox\"\n/>\n<input\n  type=\"checkbox\"\n/>\n<input\n  type=\"checkbox\"\n/>\n<div>\n  true,false,false\n</div>\n```\n\n# Mutations\n```\nUPDATE div/#text \"false,false,false\" => \"true,false,false\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"input\").item(1).click();\n```\n```html\n<!---->\n<input\n  checked=\"\"\n  type=\"checkbox\"\n/>\n<input\n  checked=\"\"\n  type=\"checkbox\"\n/>\n<input\n  type=\"checkbox\"\n/>\n<div>\n  true,true,false\n</div>\n```\n\n# Mutations\n```\nUPDATE div/#text \"true,false,false\" => \"true,true,false\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"input\").item(1).click();\n```\n```html\n<!---->\n<input\n  checked=\"\"\n  type=\"checkbox\"\n/>\n<input\n  type=\"checkbox\"\n/>\n<input\n  type=\"checkbox\"\n/>\n<div>\n  true,false,false\n</div>\n```\n\n# Mutations\n```\nUPDATE div/#text \"true,true,false\" => \"true,false,false\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-many/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 528 (min) 301 (brotli)\nconst $for_content__checked = _._let(6, ($scope) =>\n    _._attr_input_checked($scope, \"a\", $scope.g, $checkedChange($scope)),\n  ),\n  $for_content__states__OR__state = _._or(3, ($scope) =>\n    $for_content__checked($scope, $scope.c, $valueChange($scope)),\n  ),\n  $for_content__states = _._for_closure(0, $for_content__states__OR__state),\n  $for_content__setup__script = _._script(\"a2\", ($scope) =>\n    _._attr_input_checked_script($scope, \"a\"),\n  ),\n  $for_content__setup = ($scope) => {\n    ($for_content__states._($scope), $for_content__setup__script($scope));\n  },\n  $for_content__state = _._const(2, $for_content__states__OR__state),\n  $for_content__$params = ($scope, $params2) =>\n    $for_content__state($scope, $params2[0]),\n  $for = _._for_of(\n    0,\n    \"<input type=checkbox>\",\n    \" b\",\n    $for_content__setup,\n    $for_content__$params,\n  ),\n  $states = _._let(2, ($scope) => {\n    (_._text($scope.b, $scope.c.join(\",\")),\n      $for($scope, [$scope.c]),\n      $for_content__states($scope));\n  });\nfunction $checkedChange($scope) {\n  return (_new_checked) => {\n    $for_content__checked($scope, _new_checked);\n  };\n}\nfunction $valueChange($scope) {\n  return function (value) {\n    if (void 0 === $scope.M) throw new Error(\"LoopKey is undefined\");\n    const newStates = [...$scope._.c];\n    ((newStates[$scope.M] = value), $states($scope._, newStates));\n  };\n}\n(_._resume(\"a1\", $checkedChange), _._resume(\"a0\", $valueChange), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-many/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><div> </div>\";\nexport const $walks = /* over(1), replace, over(1), next(1), get, out(1) */\"b%bD l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for_content__checked = /* @__PURE__ */_._let(\"checked/6\", $scope => _._attr_input_checked($scope, \"#input/0\", $scope.checked, $checkedChange($scope)));\nconst $for_content__states__OR__state = /* @__PURE__ */_._or(3, $scope => $for_content__checked($scope, $scope.state, $valueChange($scope)));\nconst $for_content__states = /* @__PURE__ */_._for_closure(\"#text/0\", $for_content__states__OR__state);\nconst $for_content__setup__script = _._script(\"__tests__/template.marko_1\", $scope => _._attr_input_checked_script($scope, \"#input/0\"));\nconst $for_content__setup = $scope => {\n  $for_content__states._($scope);\n  $for_content__setup__script($scope);\n};\nconst $for_content__state = /* @__PURE__ */_._const(\"state\", $for_content__states__OR__state);\nconst $for_content__$params = ($scope, $params2) => $for_content__state($scope, $params2[0]);\nconst $for = /* @__PURE__ */_._for_of(\"#text/0\", \"<input type=checkbox>\", /* get, over(1) */\" b\", $for_content__setup, $for_content__$params);\nconst $states = /* @__PURE__ */_._let(\"states/2\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.states.join(','));\n  $for($scope, [$scope.states]);\n  $for_content__states($scope);\n});\nexport function $setup($scope) {\n  $states($scope, [false, false, false]);\n}\nfunction $checkedChange($scope) {\n  return _new_checked => {\n    $for_content__checked($scope, _new_checked);\n  };\n}\nfunction $valueChange($scope) {\n  return function (value) {\n    if ($scope[\"#LoopKey\"] === undefined) {\n      throw new Error('LoopKey is undefined');\n    }\n    const newStates = [...$scope._.states];\n    newStates[$scope[\"#LoopKey\"]] = value;\n    $states($scope._, newStates);\n  };\n}\n_._resume(\"__tests__/template.marko_1/checkedChange\", $checkedChange);\n_._resume(\"__tests__/template.marko_1/valueChange\", $valueChange);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-many/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let states = [false, false, false];\n  _._for_of(states, (state, i) => {\n    const $scope1_id = _._scope_id();\n    let checked = state;\n    _._html(`<input${_._attr_input_checked($scope1_id, \"#input/0\", checked, _._resume(_new_checked => {\n      checked = _new_checked;\n    }, \"__tests__/template.marko_1/checkedChange\", $scope1_id))} type=checkbox>${_._el_resume($scope1_id, \"#input/0\")}`);\n    _._script($scope1_id, \"__tests__/template.marko_1\");\n    _._scope($scope1_id, {\n      \"#LoopKey\": i,\n      _: _._scope_with_id($scope0_id),\n      \"TagVariableChange:checked\": _._resume(function (value) {\n        if (i === undefined) {\n          throw new Error('LoopKey is undefined');\n        }\n        const newStates = [...states];\n        newStates[i] = value;\n        states = newStates;\n      }, \"__tests__/template.marko_1/valueChange\", $scope1_id) || void 0\n    }, \"__tests__/template.marko\", \"2:2\", {\n      \"#LoopKey\": \"2:13\"\n    });\n  }, 0, $scope0_id, \"#text/0\", /* states */1, /* states */1, /* states */1, 0, 1);\n  _._html(`<div>${_._escape(states.join(','))}${_._el_resume($scope0_id, \"#text/1\")}</div>`);\n  _._scope($scope0_id, {\n    states\n  }, \"__tests__/template.marko\", 0, {\n    states: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-many/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  type=\"checkbox\"\n/>\n<input\n  type=\"checkbox\"\n/>\n<input\n  type=\"checkbox\"\n/>\n<div>\n  false,false,false\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"input\").item(0).click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n/>\n<input\n  type=\"checkbox\"\n/>\n<input\n  type=\"checkbox\"\n/>\n<div>\n  true,false,false\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"input\").item(1).click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n/>\n<input\n  checked=\"\"\n  type=\"checkbox\"\n/>\n<input\n  type=\"checkbox\"\n/>\n<div>\n  true,true,false\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"input\").item(1).click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n/>\n<input\n  type=\"checkbox\"\n/>\n<input\n  type=\"checkbox\"\n/>\n<div>\n  true,false,false\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-many/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <input\n      type=\"checkbox\"\n    />\n    <!--M_*2 #input/0-->\n    <input\n      type=\"checkbox\"\n    />\n    <!--M_*3 #input/0-->\n    <input\n      type=\"checkbox\"\n    />\n    <!--M_*4 #input/0-->\n    <!--M_|1 #text/0 4 3 2-->\n    <div>\n      false,false,false\n      <!--M_*1 #text/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.b = {\n          states: [!1, !1, !1]\n        }, _.a = {\n          \"ControlledType:#input/0\": 0,\n          \"#LoopKey\": 0,\n          _: _.b\n        }, _.c = {\n          \"ControlledType:#input/0\": 0,\n          \"#LoopKey\": 1,\n          _: _.b\n        }, _.d = {\n          \"ControlledType:#input/0\": 0,\n          \"#LoopKey\": 2,\n          _: _.b\n        }], _.a[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_1/checkedChange\"\n          ](_.a), _.a[\"TagVariableChange:checked\"] = _._[\n          \"__tests__/template.marko_1/valueChange\"\n          ](_.a), _.c[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_1/checkedChange\"\n          ](_.c), _.c[\"TagVariableChange:checked\"] = _._[\n          \"__tests__/template.marko_1/valueChange\"\n          ](_.c), _.d[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_1/checkedChange\"\n          ](_.d), _.d[\"TagVariableChange:checked\"] = _._[\n          \"__tests__/template.marko_1/valueChange\"\n          ](_.d), _.e),\n        \"__tests__/template.marko_1 2 3 4\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"input\").item(0).click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      checked=\"\"\n      type=\"checkbox\"\n    />\n    <!--M_*2 #input/0-->\n    <input\n      type=\"checkbox\"\n    />\n    <!--M_*3 #input/0-->\n    <input\n      type=\"checkbox\"\n    />\n    <!--M_*4 #input/0-->\n    <!--M_|1 #text/0 4 3 2-->\n    <div>\n      true,false,false\n      <!--M_*1 #text/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.b = {\n          states: [!1, !1, !1]\n        }, _.a = {\n          \"ControlledType:#input/0\": 0,\n          \"#LoopKey\": 0,\n          _: _.b\n        }, _.c = {\n          \"ControlledType:#input/0\": 0,\n          \"#LoopKey\": 1,\n          _: _.b\n        }, _.d = {\n          \"ControlledType:#input/0\": 0,\n          \"#LoopKey\": 2,\n          _: _.b\n        }], _.a[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_1/checkedChange\"\n          ](_.a), _.a[\"TagVariableChange:checked\"] = _._[\n          \"__tests__/template.marko_1/valueChange\"\n          ](_.a), _.c[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_1/checkedChange\"\n          ](_.c), _.c[\"TagVariableChange:checked\"] = _._[\n          \"__tests__/template.marko_1/valueChange\"\n          ](_.c), _.d[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_1/checkedChange\"\n          ](_.d), _.d[\"TagVariableChange:checked\"] = _._[\n          \"__tests__/template.marko_1/valueChange\"\n          ](_.d), _.e),\n        \"__tests__/template.marko_1 2 3 4\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/#text \"false,false,false\" => \"true,false,false\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"input\").item(1).click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      checked=\"\"\n      type=\"checkbox\"\n    />\n    <!--M_*2 #input/0-->\n    <input\n      checked=\"\"\n      type=\"checkbox\"\n    />\n    <!--M_*3 #input/0-->\n    <input\n      type=\"checkbox\"\n    />\n    <!--M_*4 #input/0-->\n    <!--M_|1 #text/0 4 3 2-->\n    <div>\n      true,true,false\n      <!--M_*1 #text/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.b = {\n          states: [!1, !1, !1]\n        }, _.a = {\n          \"ControlledType:#input/0\": 0,\n          \"#LoopKey\": 0,\n          _: _.b\n        }, _.c = {\n          \"ControlledType:#input/0\": 0,\n          \"#LoopKey\": 1,\n          _: _.b\n        }, _.d = {\n          \"ControlledType:#input/0\": 0,\n          \"#LoopKey\": 2,\n          _: _.b\n        }], _.a[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_1/checkedChange\"\n          ](_.a), _.a[\"TagVariableChange:checked\"] = _._[\n          \"__tests__/template.marko_1/valueChange\"\n          ](_.a), _.c[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_1/checkedChange\"\n          ](_.c), _.c[\"TagVariableChange:checked\"] = _._[\n          \"__tests__/template.marko_1/valueChange\"\n          ](_.c), _.d[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_1/checkedChange\"\n          ](_.d), _.d[\"TagVariableChange:checked\"] = _._[\n          \"__tests__/template.marko_1/valueChange\"\n          ](_.d), _.e),\n        \"__tests__/template.marko_1 2 3 4\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/#text \"true,false,false\" => \"true,true,false\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"input\").item(1).click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      checked=\"\"\n      type=\"checkbox\"\n    />\n    <!--M_*2 #input/0-->\n    <input\n      type=\"checkbox\"\n    />\n    <!--M_*3 #input/0-->\n    <input\n      type=\"checkbox\"\n    />\n    <!--M_*4 #input/0-->\n    <!--M_|1 #text/0 4 3 2-->\n    <div>\n      true,false,false\n      <!--M_*1 #text/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.b = {\n          states: [!1, !1, !1]\n        }, _.a = {\n          \"ControlledType:#input/0\": 0,\n          \"#LoopKey\": 0,\n          _: _.b\n        }, _.c = {\n          \"ControlledType:#input/0\": 0,\n          \"#LoopKey\": 1,\n          _: _.b\n        }, _.d = {\n          \"ControlledType:#input/0\": 0,\n          \"#LoopKey\": 2,\n          _: _.b\n        }], _.a[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_1/checkedChange\"\n          ](_.a), _.a[\"TagVariableChange:checked\"] = _._[\n          \"__tests__/template.marko_1/valueChange\"\n          ](_.a), _.c[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_1/checkedChange\"\n          ](_.c), _.c[\"TagVariableChange:checked\"] = _._[\n          \"__tests__/template.marko_1/valueChange\"\n          ](_.c), _.d[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_1/checkedChange\"\n          ](_.d), _.d[\"TagVariableChange:checked\"] = _._[\n          \"__tests__/template.marko_1/valueChange\"\n          ](_.d), _.e),\n        \"__tests__/template.marko_1 2 3 4\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/#text \"true,true,false\" => \"true,false,false\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-many/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<input\n  type=\"checkbox\"\n/>\n<input\n  type=\"checkbox\"\n/>\n<input\n  type=\"checkbox\"\n/>\n<div>\n  false,false,false\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-many/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <input type=checkbox><!--M_*2 #input/0--><input type=checkbox><!--M_*3 #input/0--><input type=checkbox><!--M_*4 #input/0--><!--M_|1 #text/0 4 3 2--><div>false,false,false<!--M_*1 #text/1--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.e=[0,_.b={states:[!1,!1,!1]},_.a={\"ControlledType:#input/0\":0,\"#LoopKey\":0,_:_.b},_.c={\"ControlledType:#input/0\":0,\"#LoopKey\":1,_:_.b},_.d={\"ControlledType:#input/0\":0,\"#LoopKey\":2,_:_.b}],_.a[\"ControlledHandler:#input/0\"]=_._[\"__tests__/template.marko_1/checkedChange\"](_.a),_.a[\"TagVariableChange:checked\"]=_._[\"__tests__/template.marko_1/valueChange\"](_.a),_.c[\"ControlledHandler:#input/0\"]=_._[\"__tests__/template.marko_1/checkedChange\"](_.c),_.c[\"TagVariableChange:checked\"]=_._[\"__tests__/template.marko_1/valueChange\"](_.c),_.d[\"ControlledHandler:#input/0\"]=_._[\"__tests__/template.marko_1/checkedChange\"](_.d),_.d[\"TagVariableChange:checked\"]=_._[\"__tests__/template.marko_1/valueChange\"](_.d),_.e),\"__tests__/template.marko_1 2 3 4\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <input\n      type=\"checkbox\"\n    />\n    <!--M_*2 #input/0-->\n    <input\n      type=\"checkbox\"\n    />\n    <!--M_*3 #input/0-->\n    <input\n      type=\"checkbox\"\n    />\n    <!--M_*4 #input/0-->\n    <!--M_|1 #text/0 4 3 2-->\n    <div>\n      false,false,false\n      <!--M_*1 #text/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.b = {\n          states: [!1, !1, !1]\n        }, _.a = {\n          \"ControlledType:#input/0\": 0,\n          \"#LoopKey\": 0,\n          _: _.b\n        }, _.c = {\n          \"ControlledType:#input/0\": 0,\n          \"#LoopKey\": 1,\n          _: _.b\n        }, _.d = {\n          \"ControlledType:#input/0\": 0,\n          \"#LoopKey\": 2,\n          _: _.b\n        }], _.a[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_1/checkedChange\"\n          ](_.a), _.a[\"TagVariableChange:checked\"] = _._[\n          \"__tests__/template.marko_1/valueChange\"\n          ](_.a), _.c[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_1/checkedChange\"\n          ](_.c), _.c[\"TagVariableChange:checked\"] = _._[\n          \"__tests__/template.marko_1/valueChange\"\n          ](_.c), _.d[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_1/checkedChange\"\n          ](_.d), _.d[\"TagVariableChange:checked\"] = _._[\n          \"__tests__/template.marko_1/valueChange\"\n          ](_.d), _.e),\n        \"__tests__/template.marko_1 2 3 4\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/input0\nINSERT html/body/#comment0\nINSERT html/body/input1\nINSERT html/body/#comment1\nINSERT html/body/input2\nINSERT html/body/#comment2\nINSERT html/body/#comment3\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/div/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-many/template.marko",
    "content": "<let/states=[false, false, false]>\n<for|state, i| of=states>\n  <let/checked=state valueChange(value) {\n    if (i === undefined) {\n      throw new Error('LoopKey is undefined');\n    }\n    \n    const newStates = [...states];\n    newStates[i] = value\n    states = newStates;\n  }>\n  <input type=\"checkbox\" checked:=checked>\n</>\n<div>${states.join(',')}</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-many/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click0(container: Element) {\n  container.querySelectorAll(\"input\").item(0).click();\n}\n\nfunction click1(container: Element) {\n  container.querySelectorAll(\"input\").item(1).click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click0, click1, click1],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-spread/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"r\",\n      \"$$input__script\": \"c\",\n      \"$$input\": \"e\",\n      \"$$checked\": \"a\",\n      \"$$checkedChange\": \"o\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-spread/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  type=\"checkbox\"\n/>\n<span>\n  false\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"input\").click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n/>\n<span>\n  true\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"input\").click();\n```\n```html\n<input\n  type=\"checkbox\"\n/>\n<span>\n  false\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"input\").click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n/>\n<span>\n  true\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-spread/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<input\n  type=\"checkbox\"\n/>\n<span>\n  false\n</span>\n```\n\n# Mutations\n```\nINSERT input, span\n```\n\n# Render\n```js\ncontainer.querySelector(\"input\").click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n/>\n<span>\n  true\n</span>\n```\n\n# Mutations\n```\nUPDATE span/#text \"false\" => \"true\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"input\").click();\n```\n```html\n<input\n  type=\"checkbox\"\n/>\n<span>\n  false\n</span>\n```\n\n# Mutations\n```\nUPDATE span/#text \"true\" => \"false\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"input\").click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n/>\n<span>\n  true\n</span>\n```\n\n# Mutations\n```\nUPDATE span/#text \"false\" => \"true\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-spread/__snapshots__/dom.expected/tags/checkbox.js",
    "content": "export const $template = \"<input>\";\nexport const $walks = /* get, over(1) */\" b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $input__script = _._script(\"__tests__/tags/checkbox.marko_0_input\", $scope => _._attrs_script($scope, \"#input/0\"));\nexport const $input = /* @__PURE__ */_._const(\"input\", $scope => {\n  _._attrs($scope, \"#input/0\", {\n    type: \"checkbox\",\n    ...$scope.input\n  });\n  $input__script($scope);\n});\nexport default /* @__PURE__ */_._template(\"__tests__/tags/checkbox.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-spread/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 252 (min) 177 (brotli)\nconst $input__script = _._script(\"a0\", ($scope) =>\n    _._attrs_script($scope, \"a\"),\n  ),\n  $input = _._const(2, ($scope) => {\n    (_._attrs($scope, \"a\", { type: \"checkbox\", ...$scope.c }),\n      $input__script($scope));\n  }),\n  $checked = _._let(2, ($scope) => {\n    ($input($scope.a, {\n      checked: $scope.c,\n      checkedChange: $checkedChange($scope),\n    }),\n      _._text($scope.b, String($scope.c)));\n  });\nfunction $checkedChange($scope) {\n  return (_new_checked) => {\n    $checked($scope, _new_checked);\n  };\n}\n(_._resume(\"b0\", $checkedChange), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-spread/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `${_checkbox_template}<span> </span>`;\nexport const $walks = /* <checkbox>, next(1), get, out(1) */`/${_checkbox_walks}&D l`;\nimport { $setup as _checkbox, $input as _checkbox_input, $template as _checkbox_template, $walks as _checkbox_walks } from \"./tags/checkbox.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $checked = /* @__PURE__ */_._let(\"checked/2\", $scope => {\n  _checkbox_input($scope[\"#childScope/0\"], {\n    checked: $scope.checked,\n    checkedChange: $checkedChange($scope)\n  });\n  _._text($scope[\"#text/1\"], String($scope.checked));\n});\nexport function $setup($scope) {\n  _checkbox($scope[\"#childScope/0\"]);\n  $checked($scope, false);\n}\nfunction $checkedChange($scope) {\n  return _new_checked => {\n    $checked($scope, _new_checked);\n  };\n}\n_._resume(\"__tests__/template.marko_0/checkedChange\", $checkedChange);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-spread/__snapshots__/html.expected/tags/checkbox.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/checkbox.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<input${_._attrs({\n    type: \"checkbox\",\n    ...input\n  }, \"#input/0\", $scope0_id, \"input\")}>${_._el_resume($scope0_id, \"#input/0\")}`);\n  _._script($scope0_id, \"__tests__/tags/checkbox.marko_0_input\");\n  _._scope($scope0_id, {\n    input\n  }, \"__tests__/tags/checkbox.marko\", 0, {\n    input: 0\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-spread/__snapshots__/html.expected/template.js",
    "content": "import _checkbox from \"./tags/checkbox.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let checked = false;\n  const $childScope = _._peek_scope_id();\n  _checkbox({\n    checked: checked,\n    checkedChange: _._resume(_new_checked => {\n      checked = _new_checked;\n    }, \"__tests__/template.marko_0/checkedChange\", $scope0_id)\n  });\n  _._html(`<span>${_._escape(String(checked))}${_._el_resume($scope0_id, \"#text/1\")}</span>`);\n  _._scope($scope0_id, {\n    \"#childScope/0\": _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-spread/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  type=\"checkbox\"\n/>\n<span>\n  false\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"input\").click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n/>\n<span>\n  true\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"input\").click();\n```\n```html\n<input\n  type=\"checkbox\"\n/>\n<span>\n  false\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"input\").click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n/>\n<span>\n  true\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-spread/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <input\n      type=\"checkbox\"\n    />\n    <!--M_*2 #input/0-->\n    <span>\n      false\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.d = {\n            \"#childScope/0\": _.a = {\n              \"ControlledType:#input/0\": 0,\n              input: _.b = {\n                checked: !1\n              }\n            }\n          }, _.a], _.a[\"ControlledHandler:#input/0\"] = _.b.checkedChange = _\n          ._[\n            \"__tests__/template.marko_0/checkedChange\"\n            ](_.d), _.c),\n        \"__tests__/tags/checkbox.marko_0_input 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"input\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      checked=\"\"\n      type=\"checkbox\"\n    />\n    <!--M_*2 #input/0-->\n    <span>\n      true\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.d = {\n            \"#childScope/0\": _.a = {\n              \"ControlledType:#input/0\": 0,\n              input: _.b = {\n                checked: !1\n              }\n            }\n          }, _.a], _.a[\"ControlledHandler:#input/0\"] = _.b.checkedChange = _\n          ._[\n            \"__tests__/template.marko_0/checkedChange\"\n            ](_.d), _.c),\n        \"__tests__/tags/checkbox.marko_0_input 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"false\" => \"true\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"input\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      type=\"checkbox\"\n    />\n    <!--M_*2 #input/0-->\n    <span>\n      false\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.d = {\n            \"#childScope/0\": _.a = {\n              \"ControlledType:#input/0\": 0,\n              input: _.b = {\n                checked: !1\n              }\n            }\n          }, _.a], _.a[\"ControlledHandler:#input/0\"] = _.b.checkedChange = _\n          ._[\n            \"__tests__/template.marko_0/checkedChange\"\n            ](_.d), _.c),\n        \"__tests__/tags/checkbox.marko_0_input 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"true\" => \"false\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"input\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      checked=\"\"\n      type=\"checkbox\"\n    />\n    <!--M_*2 #input/0-->\n    <span>\n      true\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.d = {\n            \"#childScope/0\": _.a = {\n              \"ControlledType:#input/0\": 0,\n              input: _.b = {\n                checked: !1\n              }\n            }\n          }, _.a], _.a[\"ControlledHandler:#input/0\"] = _.b.checkedChange = _\n          ._[\n            \"__tests__/template.marko_0/checkedChange\"\n            ](_.d), _.c),\n        \"__tests__/tags/checkbox.marko_0_input 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"false\" => \"true\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-spread/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<input\n  type=\"checkbox\"\n/>\n<span>\n  false\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-spread/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <input type=checkbox><!--M_*2 #input/0--><span>false<!--M_*1 #text/1--></span><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.d={\"#childScope/0\":_.a={\"ControlledType:#input/0\":0,input:_.b={checked:!1}}},_.a],_.a[\"ControlledHandler:#input/0\"]=_.b.checkedChange=_._[\"__tests__/template.marko_0/checkedChange\"](_.d),_.c),\"__tests__/tags/checkbox.marko_0_input 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <input\n      type=\"checkbox\"\n    />\n    <!--M_*2 #input/0-->\n    <span>\n      false\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.d = {\n            \"#childScope/0\": _.a = {\n              \"ControlledType:#input/0\": 0,\n              input: _.b = {\n                checked: !1\n              }\n            }\n          }, _.a], _.a[\"ControlledHandler:#input/0\"] = _.b.checkedChange = _\n          ._[\n            \"__tests__/template.marko_0/checkedChange\"\n            ](_.d), _.c),\n        \"__tests__/tags/checkbox.marko_0_input 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/input\nINSERT html/body/#comment\nINSERT html/body/span\nINSERT html/body/span/#text\nINSERT html/body/span/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-spread/tags/checkbox.marko",
    "content": "<input type=\"checkbox\" ...input />"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-spread/template.marko",
    "content": "<let/checked = false/>\n<checkbox checked:=checked />\n<span>${String(checked)}</span>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-spread/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"input\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"e\",\n      \"$$checkedValue__OR__checkedValueChange\": \"_\",\n      \"$$checkedValue\": \"a\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  a\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[1].click();\n```\n```html\n<input\n  default-checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  b\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[2].click();\n```\n```html\n<input\n  default-checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  c\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[0].click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  a\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  a\n</span>\n```\n\n# Mutations\n```\nINSERT input0, input1, input2, span\n```\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[1].click();\n```\n```html\n<input\n  default-checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  b\n</span>\n```\n\n# Mutations\n```\nUPDATE span/#text \"a\" => \"b\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[2].click();\n```\n```html\n<input\n  default-checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  c\n</span>\n```\n\n# Mutations\n```\nUPDATE span/#text \"b\" => \"c\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[0].click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  a\n</span>\n```\n\n# Mutations\n```\nUPDATE span/#text \"c\" => \"a\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 395 (min) 158 (brotli)\nconst $checkedValue__OR__checkedValueChange = _._or(6, ($scope) => {\n    (_._attr_input_checkedValue($scope, \"a\", $scope.e, $scope.f, \"a\"),\n      _._attr_input_checkedValue($scope, \"b\", $scope.e, $scope.f, \"b\"),\n      _._attr_input_checkedValue($scope, \"c\", $scope.e, $scope.f, \"c\"));\n  }),\n  $checkedValue = _._let(4, ($scope) => {\n    (_._text($scope.d, $scope.e),\n      $checkedValue__OR__checkedValueChange($scope));\n  });\n(_._script(\"a1\", ($scope) => {\n  (_._attr_input_checkedValue_script($scope, \"a\"),\n    _._attr_input_checkedValue_script($scope, \"b\"),\n    _._attr_input_checkedValue_script($scope, \"c\"));\n}),\n  _._resume(\"a0\", function ($scope) {\n    return (_new_checkedValue) => {\n      $checkedValue($scope, _new_checkedValue);\n    };\n  }),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<input type=radio><input type=radio><input type=radio><span> </span>\";\nexport const $walks = /* get, over(1), get, over(1), get, over(1), next(1), get, out(1) */\" b b bD l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $checkedValue__OR__checkedValueChange = /* @__PURE__ */_._or(6, $scope => {\n  _._attr_input_checkedValue($scope, \"#input/0\", $scope.checkedValue, $scope.$checkedValueChange, \"a\");\n  _._attr_input_checkedValue($scope, \"#input/1\", $scope.checkedValue, $scope.$checkedValueChange, \"b\");\n  _._attr_input_checkedValue($scope, \"#input/2\", $scope.checkedValue, $scope.$checkedValueChange, \"c\");\n});\nconst $checkedValue = /* @__PURE__ */_._let(\"checkedValue/4\", $scope => {\n  _._text($scope[\"#text/3\"], $scope.checkedValue);\n  $checkedValue__OR__checkedValueChange($scope);\n});\nconst $checkedValueChange3 = /* @__PURE__ */_._const(\"$checkedValueChange\", $checkedValue__OR__checkedValueChange);\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => {\n  _._attr_input_checkedValue_script($scope, \"#input/0\");\n  _._attr_input_checkedValue_script($scope, \"#input/1\");\n  _._attr_input_checkedValue_script($scope, \"#input/2\");\n});\nexport function $setup($scope) {\n  $checkedValue($scope, \"a\");\n  $checkedValueChange3($scope, $checkedValueChange2($scope));\n  $setup__script($scope);\n}\nfunction $checkedValueChange2($scope) {\n  return _new_checkedValue => {\n    $checkedValue($scope, _new_checkedValue);\n  };\n}\n_._resume(\"__tests__/template.marko_0/checkedValueChange2\", $checkedValueChange2);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let checkedValue = \"a\";\n  const $checkedValueChange = _._resume(_new_checkedValue => {\n    checkedValue = _new_checkedValue;\n  }, \"__tests__/template.marko_0/checkedValueChange2\", $scope0_id);\n  _._html(`<input${_._attr_input_checkedValue($scope0_id, \"#input/0\", checkedValue, $checkedValueChange, \"a\")} type=radio>${_._el_resume($scope0_id, \"#input/0\")}<input${_._attr_input_checkedValue($scope0_id, \"#input/1\", checkedValue, $checkedValueChange, \"b\")} type=radio>${_._el_resume($scope0_id, \"#input/1\")}<input${_._attr_input_checkedValue($scope0_id, \"#input/2\", checkedValue, $checkedValueChange, \"c\")} type=radio>${_._el_resume($scope0_id, \"#input/2\")}<span>${_._escape(checkedValue)}${_._el_resume($scope0_id, \"#text/3\")}</span>`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {\n    $checkedValueChange\n  }, \"__tests__/template.marko\", 0, {\n    $checkedValueChange: 0\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  a\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[1].click();\n```\n```html\n<input\n  default-checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  b\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[2].click();\n```\n```html\n<input\n  default-checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  c\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[0].click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  a\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <input\n      checked=\"\"\n      type=\"radio\"\n      value=\"a\"\n    />\n    <!--M_*1 #input/0-->\n    <input\n      type=\"radio\"\n      value=\"b\"\n    />\n    <!--M_*1 #input/1-->\n    <input\n      type=\"radio\"\n      value=\"c\"\n    />\n    <!--M_*1 #input/2-->\n    <span>\n      a\n      <!--M_*1 #text/3-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n            \"ControlledType:#input/0\": 1,\n            \"ControlledType:#input/1\": 1,\n            \"ControlledType:#input/2\": 1\n          }], _.a[\"ControlledHandler:#input/0\"] = _.a[\n            \"ControlledHandler:#input/1\"] = _.a[\n          \"ControlledHandler:#input/2\"] = _.a.$checkedValueChange = _._[\n            \"__tests__/template.marko_0/checkedValueChange2\"\n            ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[1].click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      default-checked=\"\"\n      type=\"radio\"\n      value=\"a\"\n    />\n    <!--M_*1 #input/0-->\n    <input\n      checked=\"\"\n      type=\"radio\"\n      value=\"b\"\n    />\n    <!--M_*1 #input/1-->\n    <input\n      type=\"radio\"\n      value=\"c\"\n    />\n    <!--M_*1 #input/2-->\n    <span>\n      b\n      <!--M_*1 #text/3-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n            \"ControlledType:#input/0\": 1,\n            \"ControlledType:#input/1\": 1,\n            \"ControlledType:#input/2\": 1\n          }], _.a[\"ControlledHandler:#input/0\"] = _.a[\n            \"ControlledHandler:#input/1\"] = _.a[\n          \"ControlledHandler:#input/2\"] = _.a.$checkedValueChange = _._[\n            \"__tests__/template.marko_0/checkedValueChange2\"\n            ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"a\" => \"b\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[2].click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      default-checked=\"\"\n      type=\"radio\"\n      value=\"a\"\n    />\n    <!--M_*1 #input/0-->\n    <input\n      type=\"radio\"\n      value=\"b\"\n    />\n    <!--M_*1 #input/1-->\n    <input\n      checked=\"\"\n      type=\"radio\"\n      value=\"c\"\n    />\n    <!--M_*1 #input/2-->\n    <span>\n      c\n      <!--M_*1 #text/3-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n            \"ControlledType:#input/0\": 1,\n            \"ControlledType:#input/1\": 1,\n            \"ControlledType:#input/2\": 1\n          }], _.a[\"ControlledHandler:#input/0\"] = _.a[\n            \"ControlledHandler:#input/1\"] = _.a[\n          \"ControlledHandler:#input/2\"] = _.a.$checkedValueChange = _._[\n            \"__tests__/template.marko_0/checkedValueChange2\"\n            ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"b\" => \"c\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[0].click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      checked=\"\"\n      type=\"radio\"\n      value=\"a\"\n    />\n    <!--M_*1 #input/0-->\n    <input\n      type=\"radio\"\n      value=\"b\"\n    />\n    <!--M_*1 #input/1-->\n    <input\n      type=\"radio\"\n      value=\"c\"\n    />\n    <!--M_*1 #input/2-->\n    <span>\n      a\n      <!--M_*1 #text/3-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n            \"ControlledType:#input/0\": 1,\n            \"ControlledType:#input/1\": 1,\n            \"ControlledType:#input/2\": 1\n          }], _.a[\"ControlledHandler:#input/0\"] = _.a[\n            \"ControlledHandler:#input/1\"] = _.a[\n          \"ControlledHandler:#input/2\"] = _.a.$checkedValueChange = _._[\n            \"__tests__/template.marko_0/checkedValueChange2\"\n            ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"c\" => \"a\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  a\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <input value=a checked type=radio><!--M_*1 #input/0--><input value=b type=radio><!--M_*1 #input/1--><input value=c type=radio><!--M_*1 #input/2--><span>a<!--M_*1 #text/3--></span><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={\"ControlledType:#input/0\":1,\"ControlledType:#input/1\":1,\"ControlledType:#input/2\":1}],_.a[\"ControlledHandler:#input/0\"]=_.a[\"ControlledHandler:#input/1\"]=_.a[\"ControlledHandler:#input/2\"]=_.a.$checkedValueChange=_._[\"__tests__/template.marko_0/checkedValueChange2\"](_.a),_.b),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <input\n      checked=\"\"\n      type=\"radio\"\n      value=\"a\"\n    />\n    <!--M_*1 #input/0-->\n    <input\n      type=\"radio\"\n      value=\"b\"\n    />\n    <!--M_*1 #input/1-->\n    <input\n      type=\"radio\"\n      value=\"c\"\n    />\n    <!--M_*1 #input/2-->\n    <span>\n      a\n      <!--M_*1 #text/3-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n            \"ControlledType:#input/0\": 1,\n            \"ControlledType:#input/1\": 1,\n            \"ControlledType:#input/2\": 1\n          }], _.a[\"ControlledHandler:#input/0\"] = _.a[\n            \"ControlledHandler:#input/1\"] = _.a[\n          \"ControlledHandler:#input/2\"] = _.a.$checkedValueChange = _._[\n            \"__tests__/template.marko_0/checkedValueChange2\"\n            ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/input0\nINSERT html/body/#comment0\nINSERT html/body/input1\nINSERT html/body/#comment1\nINSERT html/body/input2\nINSERT html/body/#comment2\nINSERT html/body/span\nINSERT html/body/span/#text\nINSERT html/body/span/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value/template.marko",
    "content": "<let/checkedValue = \"a\"/>\n\n<input type=\"radio\" checkedValue:=checkedValue value=\"a\"/>\n<input type=\"radio\" checkedValue:=checkedValue value=\"b\"/>\n<input type=\"radio\" checkedValue:=checkedValue value=\"c\"/>\n<span>${checkedValue}</span>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction clickA(container: Element) {\n  container.querySelectorAll(`input`)[0]!.click();\n}\n\nfunction clickB(container: Element) {\n  container.querySelectorAll(`input`)[1]!.click();\n}\n\nfunction clickC(container: Element) {\n  container.querySelectorAll(`input`)[2]!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, clickB, clickC, clickA],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-multiple-number/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"e\",\n      \"$$checked\": \"r\",\n      \"$$checkedValueChange3\": \"u\",\n      \"$$checkedValueChange2\": \"c\",\n      \"$$checkedValueChange\": \"_\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-multiple-number/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  type=\"checkbox\"\n  value=\"0\"\n/>\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"1\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"2\"\n/>\n<span>\n  1\n</span>\n<button>\n  Reset\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[0].click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"0\"\n/>\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"1\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"2\"\n/>\n<span>\n  1,0\n</span>\n<button>\n  Reset\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[1].click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"0\"\n/>\n<input\n  default-checked=\"\"\n  type=\"checkbox\"\n  value=\"1\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"2\"\n/>\n<span>\n  0\n</span>\n<button>\n  Reset\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[2].click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"0\"\n/>\n<input\n  default-checked=\"\"\n  type=\"checkbox\"\n  value=\"1\"\n/>\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"2\"\n/>\n<span>\n  0,2\n</span>\n<button>\n  Reset\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<input\n  type=\"checkbox\"\n  value=\"0\"\n/>\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"1\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"2\"\n/>\n<span>\n  1\n</span>\n<button>\n  Reset\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-multiple-number/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<input\n  type=\"checkbox\"\n  value=\"0\"\n/>\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"1\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"2\"\n/>\n<span>\n  1\n</span>\n<button>\n  Reset\n</button>\n```\n\n# Mutations\n```\nINSERT input0, input1, input2, span, button\n```\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[0].click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"0\"\n/>\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"1\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"2\"\n/>\n<span>\n  1,0\n</span>\n<button>\n  Reset\n</button>\n```\n\n# Mutations\n```\nUPDATE span/#text \"1\" => \"1,0\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[1].click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"0\"\n/>\n<input\n  default-checked=\"\"\n  type=\"checkbox\"\n  value=\"1\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"2\"\n/>\n<span>\n  0\n</span>\n<button>\n  Reset\n</button>\n```\n\n# Mutations\n```\nUPDATE span/#text \"1,0\" => \"0\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[2].click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"0\"\n/>\n<input\n  default-checked=\"\"\n  type=\"checkbox\"\n  value=\"1\"\n/>\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"2\"\n/>\n<span>\n  0,2\n</span>\n<button>\n  Reset\n</button>\n```\n\n# Mutations\n```\nUPDATE span/#text \"0\" => \"0,2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<input\n  type=\"checkbox\"\n  value=\"0\"\n/>\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"1\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"2\"\n/>\n<span>\n  1\n</span>\n<button>\n  Reset\n</button>\n```\n\n# Mutations\n```\nUPDATE span/#text \"0,2\" => \"1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-multiple-number/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 596 (min) 197 (brotli)\nconst $checked = _._let(5, ($scope) => {\n  (_._attr_input_checkedValue(\n    $scope,\n    \"a\",\n    $scope.f,\n    $checkedValueChange($scope),\n    0,\n  ),\n    _._attr_input_checkedValue(\n      $scope,\n      \"b\",\n      $scope.f,\n      $checkedValueChange2($scope),\n      \"1\",\n    ),\n    _._attr_input_checkedValue(\n      $scope,\n      \"c\",\n      $scope.f,\n      $checkedValueChange3($scope),\n      2,\n    ),\n    _._text($scope.d, $scope.f));\n});\nfunction $checkedValueChange3($scope) {\n  return function (v) {\n    $checked(\n      $scope,\n      v.map((it) => Number(it)),\n    );\n  };\n}\nfunction $checkedValueChange2($scope) {\n  return function (v) {\n    $checked(\n      $scope,\n      v.map((it) => Number(it)),\n    );\n  };\n}\nfunction $checkedValueChange($scope) {\n  return function (v) {\n    $checked(\n      $scope,\n      v.map((it) => Number(it)),\n    );\n  };\n}\n(_._script(\"a3\", ($scope) => {\n  (_._attr_input_checkedValue_script($scope, \"a\"),\n    _._attr_input_checkedValue_script($scope, \"b\"),\n    _._attr_input_checkedValue_script($scope, \"c\"),\n    _._on($scope.e, \"click\", function () {\n      $checked($scope, [1]);\n    }));\n}),\n  _._resume(\"a2\", $checkedValueChange3),\n  _._resume(\"a1\", $checkedValueChange2),\n  _._resume(\"a0\", $checkedValueChange),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-multiple-number/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<input type=checkbox><input type=checkbox><input type=checkbox><span> </span><button>Reset</button>\";\nexport const $walks = /* get, over(1), get, over(1), get, over(1), next(1), get, out(1), get, over(1) */\" b b bD l b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $checked = /* @__PURE__ */_._let(\"checked/5\", $scope => {\n  _._attr_input_checkedValue($scope, \"#input/0\", $scope.checked, $checkedValueChange($scope), 0);\n  _._attr_input_checkedValue($scope, \"#input/1\", $scope.checked, $checkedValueChange2($scope), \"1\");\n  _._attr_input_checkedValue($scope, \"#input/2\", $scope.checked, $checkedValueChange3($scope), 2);\n  _._text($scope[\"#text/3\"], $scope.checked);\n});\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => {\n  _._attr_input_checkedValue_script($scope, \"#input/0\");\n  _._attr_input_checkedValue_script($scope, \"#input/1\");\n  _._attr_input_checkedValue_script($scope, \"#input/2\");\n  _._on($scope[\"#button/4\"], \"click\", function () {\n    $checked($scope, [1]);\n  });\n});\nexport function $setup($scope) {\n  $checked($scope, [1]);\n  $setup__script($scope);\n}\nfunction $checkedValueChange3($scope) {\n  return function (v) {\n    $checked($scope, v.map(it => Number(it)));\n  };\n}\nfunction $checkedValueChange2($scope) {\n  return function (v) {\n    $checked($scope, v.map(it => Number(it)));\n  };\n}\nfunction $checkedValueChange($scope) {\n  return function (v) {\n    $checked($scope, v.map(it => Number(it)));\n  };\n}\n_._resume(\"__tests__/template.marko_0/checkedValueChange3\", $checkedValueChange3);\n_._resume(\"__tests__/template.marko_0/checkedValueChange2\", $checkedValueChange2);\n_._resume(\"__tests__/template.marko_0/checkedValueChange\", $checkedValueChange);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-multiple-number/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let checked = [1];\n  _._html(`<input${_._attr_input_checkedValue($scope0_id, \"#input/0\", checked, _._resume(function (v) {\n    checked = v.map(it => Number(it));\n  }, \"__tests__/template.marko_0/checkedValueChange\", $scope0_id), 0)} type=checkbox>${_._el_resume($scope0_id, \"#input/0\")}<input${_._attr_input_checkedValue($scope0_id, \"#input/1\", checked, _._resume(function (v) {\n    checked = v.map(it => Number(it));\n  }, \"__tests__/template.marko_0/checkedValueChange2\", $scope0_id), \"1\")} type=checkbox>${_._el_resume($scope0_id, \"#input/1\")}<input${_._attr_input_checkedValue($scope0_id, \"#input/2\", checked, _._resume(function (v) {\n    checked = v.map(it => Number(it));\n  }, \"__tests__/template.marko_0/checkedValueChange3\", $scope0_id), 2)} type=checkbox>${_._el_resume($scope0_id, \"#input/2\")}<span>${_._escape(checked)}${_._el_resume($scope0_id, \"#text/3\")}</span><button>Reset</button>${_._el_resume($scope0_id, \"#button/4\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-multiple-number/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  type=\"checkbox\"\n  value=\"0\"\n/>\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"1\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"2\"\n/>\n<span>\n  1\n</span>\n<button>\n  Reset\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[0].click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"0\"\n/>\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"1\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"2\"\n/>\n<span>\n  1,0\n</span>\n<button>\n  Reset\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[1].click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"0\"\n/>\n<input\n  default-checked=\"\"\n  type=\"checkbox\"\n  value=\"1\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"2\"\n/>\n<span>\n  0\n</span>\n<button>\n  Reset\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[2].click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"0\"\n/>\n<input\n  default-checked=\"\"\n  type=\"checkbox\"\n  value=\"1\"\n/>\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"2\"\n/>\n<span>\n  0,2\n</span>\n<button>\n  Reset\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<input\n  type=\"checkbox\"\n  value=\"0\"\n/>\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"1\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"2\"\n/>\n<span>\n  1\n</span>\n<button>\n  Reset\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-multiple-number/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <input\n      type=\"checkbox\"\n      value=\"0\"\n    />\n    <!--M_*1 #input/0-->\n    <input\n      checked=\"\"\n      type=\"checkbox\"\n      value=\"1\"\n    />\n    <!--M_*1 #input/1-->\n    <input\n      type=\"checkbox\"\n      value=\"2\"\n    />\n    <!--M_*1 #input/2-->\n    <span>\n      1\n      <!--M_*1 #text/3-->\n    </span>\n    <button>\n      Reset\n    </button>\n    <!--M_*1 #button/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"ControlledType:#input/0\": 1,\n          \"ControlledValue:#input/0\": _.b = [],\n          \"ControlledType:#input/1\": 1,\n          \"ControlledValue:#input/1\": _.b,\n          \"ControlledType:#input/2\": 1,\n          \"ControlledValue:#input/2\": _.b\n        }], _.a[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_0/checkedValueChange\"\n          ](_.a), _.a[\"ControlledHandler:#input/1\"] = _._[\n          \"__tests__/template.marko_0/checkedValueChange2\"\n          ](_.a), _.a[\"ControlledHandler:#input/2\"] = _._[\n          \"__tests__/template.marko_0/checkedValueChange3\"\n          ](_.a), _.c),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[0].click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      checked=\"\"\n      type=\"checkbox\"\n      value=\"0\"\n    />\n    <!--M_*1 #input/0-->\n    <input\n      checked=\"\"\n      type=\"checkbox\"\n      value=\"1\"\n    />\n    <!--M_*1 #input/1-->\n    <input\n      type=\"checkbox\"\n      value=\"2\"\n    />\n    <!--M_*1 #input/2-->\n    <span>\n      1,0\n      <!--M_*1 #text/3-->\n    </span>\n    <button>\n      Reset\n    </button>\n    <!--M_*1 #button/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"ControlledType:#input/0\": 1,\n          \"ControlledValue:#input/0\": _.b = [],\n          \"ControlledType:#input/1\": 1,\n          \"ControlledValue:#input/1\": _.b,\n          \"ControlledType:#input/2\": 1,\n          \"ControlledValue:#input/2\": _.b\n        }], _.a[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_0/checkedValueChange\"\n          ](_.a), _.a[\"ControlledHandler:#input/1\"] = _._[\n          \"__tests__/template.marko_0/checkedValueChange2\"\n          ](_.a), _.a[\"ControlledHandler:#input/2\"] = _._[\n          \"__tests__/template.marko_0/checkedValueChange3\"\n          ](_.a), _.c),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"1\" => \"1,0\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[1].click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      checked=\"\"\n      type=\"checkbox\"\n      value=\"0\"\n    />\n    <!--M_*1 #input/0-->\n    <input\n      default-checked=\"\"\n      type=\"checkbox\"\n      value=\"1\"\n    />\n    <!--M_*1 #input/1-->\n    <input\n      type=\"checkbox\"\n      value=\"2\"\n    />\n    <!--M_*1 #input/2-->\n    <span>\n      0\n      <!--M_*1 #text/3-->\n    </span>\n    <button>\n      Reset\n    </button>\n    <!--M_*1 #button/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"ControlledType:#input/0\": 1,\n          \"ControlledValue:#input/0\": _.b = [],\n          \"ControlledType:#input/1\": 1,\n          \"ControlledValue:#input/1\": _.b,\n          \"ControlledType:#input/2\": 1,\n          \"ControlledValue:#input/2\": _.b\n        }], _.a[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_0/checkedValueChange\"\n          ](_.a), _.a[\"ControlledHandler:#input/1\"] = _._[\n          \"__tests__/template.marko_0/checkedValueChange2\"\n          ](_.a), _.a[\"ControlledHandler:#input/2\"] = _._[\n          \"__tests__/template.marko_0/checkedValueChange3\"\n          ](_.a), _.c),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"1,0\" => \"0\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[2].click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      checked=\"\"\n      type=\"checkbox\"\n      value=\"0\"\n    />\n    <!--M_*1 #input/0-->\n    <input\n      default-checked=\"\"\n      type=\"checkbox\"\n      value=\"1\"\n    />\n    <!--M_*1 #input/1-->\n    <input\n      checked=\"\"\n      type=\"checkbox\"\n      value=\"2\"\n    />\n    <!--M_*1 #input/2-->\n    <span>\n      0,2\n      <!--M_*1 #text/3-->\n    </span>\n    <button>\n      Reset\n    </button>\n    <!--M_*1 #button/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"ControlledType:#input/0\": 1,\n          \"ControlledValue:#input/0\": _.b = [],\n          \"ControlledType:#input/1\": 1,\n          \"ControlledValue:#input/1\": _.b,\n          \"ControlledType:#input/2\": 1,\n          \"ControlledValue:#input/2\": _.b\n        }], _.a[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_0/checkedValueChange\"\n          ](_.a), _.a[\"ControlledHandler:#input/1\"] = _._[\n          \"__tests__/template.marko_0/checkedValueChange2\"\n          ](_.a), _.a[\"ControlledHandler:#input/2\"] = _._[\n          \"__tests__/template.marko_0/checkedValueChange3\"\n          ](_.a), _.c),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"0\" => \"0,2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      type=\"checkbox\"\n      value=\"0\"\n    />\n    <!--M_*1 #input/0-->\n    <input\n      checked=\"\"\n      type=\"checkbox\"\n      value=\"1\"\n    />\n    <!--M_*1 #input/1-->\n    <input\n      type=\"checkbox\"\n      value=\"2\"\n    />\n    <!--M_*1 #input/2-->\n    <span>\n      1\n      <!--M_*1 #text/3-->\n    </span>\n    <button>\n      Reset\n    </button>\n    <!--M_*1 #button/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"ControlledType:#input/0\": 1,\n          \"ControlledValue:#input/0\": _.b = [],\n          \"ControlledType:#input/1\": 1,\n          \"ControlledValue:#input/1\": _.b,\n          \"ControlledType:#input/2\": 1,\n          \"ControlledValue:#input/2\": _.b\n        }], _.a[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_0/checkedValueChange\"\n          ](_.a), _.a[\"ControlledHandler:#input/1\"] = _._[\n          \"__tests__/template.marko_0/checkedValueChange2\"\n          ](_.a), _.a[\"ControlledHandler:#input/2\"] = _._[\n          \"__tests__/template.marko_0/checkedValueChange3\"\n          ](_.a), _.c),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"0,2\" => \"1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-multiple-number/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<input\n  type=\"checkbox\"\n  value=\"0\"\n/>\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"1\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"2\"\n/>\n<span>\n  1\n</span>\n<button>\n  Reset\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-multiple-number/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <input value=0 type=checkbox><!--M_*1 #input/0--><input value=1 checked type=checkbox><!--M_*1 #input/1--><input value=2 type=checkbox><!--M_*1 #input/2--><span>1<!--M_*1 #text/3--></span><button>Reset</button><!--M_*1 #button/4--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.a={\"ControlledType:#input/0\":1,\"ControlledValue:#input/0\":_.b=[],\"ControlledType:#input/1\":1,\"ControlledValue:#input/1\":_.b,\"ControlledType:#input/2\":1,\"ControlledValue:#input/2\":_.b}],_.a[\"ControlledHandler:#input/0\"]=_._[\"__tests__/template.marko_0/checkedValueChange\"](_.a),_.a[\"ControlledHandler:#input/1\"]=_._[\"__tests__/template.marko_0/checkedValueChange2\"](_.a),_.a[\"ControlledHandler:#input/2\"]=_._[\"__tests__/template.marko_0/checkedValueChange3\"](_.a),_.c),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <input\n      type=\"checkbox\"\n      value=\"0\"\n    />\n    <!--M_*1 #input/0-->\n    <input\n      checked=\"\"\n      type=\"checkbox\"\n      value=\"1\"\n    />\n    <!--M_*1 #input/1-->\n    <input\n      type=\"checkbox\"\n      value=\"2\"\n    />\n    <!--M_*1 #input/2-->\n    <span>\n      1\n      <!--M_*1 #text/3-->\n    </span>\n    <button>\n      Reset\n    </button>\n    <!--M_*1 #button/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"ControlledType:#input/0\": 1,\n          \"ControlledValue:#input/0\": _.b = [],\n          \"ControlledType:#input/1\": 1,\n          \"ControlledValue:#input/1\": _.b,\n          \"ControlledType:#input/2\": 1,\n          \"ControlledValue:#input/2\": _.b\n        }], _.a[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_0/checkedValueChange\"\n          ](_.a), _.a[\"ControlledHandler:#input/1\"] = _._[\n          \"__tests__/template.marko_0/checkedValueChange2\"\n          ](_.a), _.a[\"ControlledHandler:#input/2\"] = _._[\n          \"__tests__/template.marko_0/checkedValueChange3\"\n          ](_.a), _.c),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/input0\nINSERT html/body/#comment0\nINSERT html/body/input1\nINSERT html/body/#comment1\nINSERT html/body/input2\nINSERT html/body/#comment2\nINSERT html/body/span\nINSERT html/body/span/#text\nINSERT html/body/span/#comment\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment3\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-multiple-number/template.marko",
    "content": "<let/checked=[1]/>\n\n<input type=\"checkbox\" value=0 checkedValue=checked checkedValueChange(v) { checked = v.map(it => Number(it)) }>\n<input type=\"checkbox\" value=\"1\" checkedValue=checked checkedValueChange(v) { checked = v.map(it => Number(it)) }>\n<input type=\"checkbox\" value=2 checkedValue=checked checkedValueChange(v) { checked = v.map(it => Number(it)) }>\n\n<span>${checked}</span>\n\n<button onClick() { checked = [1] }>\n  Reset\n</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-multiple-number/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click0(container: Element) {\n  container.querySelectorAll(`input`)[0]!.click();\n}\n\nfunction click1(container: Element) {\n  container.querySelectorAll(`input`)[1]!.click();\n}\n\nfunction click2(container: Element) {\n  container.querySelectorAll(`input`)[2]!.click();\n}\n\nfunction reset(container: Element) {\n  container.querySelector<HTMLButtonElement>(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click0, click1, click2, reset],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-number/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"e\",\n      \"$$checked\": \"r\",\n      \"$$checkedValueChange3\": \"_\",\n      \"$$checkedValueChange2\": \"u\",\n      \"$$checkedValueChange\": \"c\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-number/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"0\"\n/>\n<input\n  type=\"radio\"\n  value=\"1\"\n/>\n<input\n  type=\"radio\"\n  value=\"2\"\n/>\n<span>\n  0\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[1].click();\n```\n```html\n<input\n  default-checked=\"\"\n  type=\"radio\"\n  value=\"0\"\n/>\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"1\"\n/>\n<input\n  type=\"radio\"\n  value=\"2\"\n/>\n<span>\n  1\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[2].click();\n```\n```html\n<input\n  default-checked=\"\"\n  type=\"radio\"\n  value=\"0\"\n/>\n<input\n  type=\"radio\"\n  value=\"1\"\n/>\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"2\"\n/>\n<span>\n  2\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[0].click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"0\"\n/>\n<input\n  type=\"radio\"\n  value=\"1\"\n/>\n<input\n  type=\"radio\"\n  value=\"2\"\n/>\n<span>\n  0\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-number/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"0\"\n/>\n<input\n  type=\"radio\"\n  value=\"1\"\n/>\n<input\n  type=\"radio\"\n  value=\"2\"\n/>\n<span>\n  0\n</span>\n```\n\n# Mutations\n```\nINSERT input0, input1, input2, span\n```\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[1].click();\n```\n```html\n<input\n  default-checked=\"\"\n  type=\"radio\"\n  value=\"0\"\n/>\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"1\"\n/>\n<input\n  type=\"radio\"\n  value=\"2\"\n/>\n<span>\n  1\n</span>\n```\n\n# Mutations\n```\nUPDATE span/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[2].click();\n```\n```html\n<input\n  default-checked=\"\"\n  type=\"radio\"\n  value=\"0\"\n/>\n<input\n  type=\"radio\"\n  value=\"1\"\n/>\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"2\"\n/>\n<span>\n  2\n</span>\n```\n\n# Mutations\n```\nUPDATE span/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[0].click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"0\"\n/>\n<input\n  type=\"radio\"\n  value=\"1\"\n/>\n<input\n  type=\"radio\"\n  value=\"2\"\n/>\n<span>\n  0\n</span>\n```\n\n# Mutations\n```\nUPDATE span/#text \"2\" => \"0\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-number/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 508 (min) 165 (brotli)\nconst $checked = _._let(4, ($scope) => {\n  (_._attr_input_checkedValue(\n    $scope,\n    \"a\",\n    $scope.e + \"\",\n    $checkedValueChange($scope),\n    0,\n  ),\n    _._attr_input_checkedValue(\n      $scope,\n      \"b\",\n      $scope.e,\n      $checkedValueChange2($scope),\n      \"1\",\n    ),\n    _._attr_input_checkedValue(\n      $scope,\n      \"c\",\n      $scope.e,\n      $checkedValueChange3($scope),\n      2,\n    ),\n    _._text($scope.d, $scope.e));\n});\nfunction $checkedValueChange3($scope) {\n  return function (v) {\n    $checked($scope, +v);\n  };\n}\nfunction $checkedValueChange2($scope) {\n  return function (v) {\n    $checked($scope, +v);\n  };\n}\nfunction $checkedValueChange($scope) {\n  return function (v) {\n    $checked($scope, +v);\n  };\n}\n(_._script(\"a3\", ($scope) => {\n  (_._attr_input_checkedValue_script($scope, \"a\"),\n    _._attr_input_checkedValue_script($scope, \"b\"),\n    _._attr_input_checkedValue_script($scope, \"c\"));\n}),\n  _._resume(\"a2\", $checkedValueChange3),\n  _._resume(\"a1\", $checkedValueChange2),\n  _._resume(\"a0\", $checkedValueChange),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-number/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<input type=radio><input type=radio><input type=radio><span> </span>\";\nexport const $walks = /* get, over(1), get, over(1), get, over(1), next(1), get, out(1) */\" b b bD l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $checked = /* @__PURE__ */_._let(\"checked/4\", $scope => {\n  _._attr_input_checkedValue($scope, \"#input/0\", $scope.checked + \"\", $checkedValueChange($scope), 0);\n  _._attr_input_checkedValue($scope, \"#input/1\", $scope.checked, $checkedValueChange2($scope), \"1\");\n  _._attr_input_checkedValue($scope, \"#input/2\", $scope.checked, $checkedValueChange3($scope), 2);\n  _._text($scope[\"#text/3\"], $scope.checked);\n});\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => {\n  _._attr_input_checkedValue_script($scope, \"#input/0\");\n  _._attr_input_checkedValue_script($scope, \"#input/1\");\n  _._attr_input_checkedValue_script($scope, \"#input/2\");\n});\nexport function $setup($scope) {\n  $checked($scope, 0);\n  $setup__script($scope);\n}\nfunction $checkedValueChange3($scope) {\n  return function (v) {\n    $checked($scope, +v);\n  };\n}\nfunction $checkedValueChange2($scope) {\n  return function (v) {\n    $checked($scope, +v);\n  };\n}\nfunction $checkedValueChange($scope) {\n  return function (v) {\n    $checked($scope, +v);\n  };\n}\n_._resume(\"__tests__/template.marko_0/checkedValueChange3\", $checkedValueChange3);\n_._resume(\"__tests__/template.marko_0/checkedValueChange2\", $checkedValueChange2);\n_._resume(\"__tests__/template.marko_0/checkedValueChange\", $checkedValueChange);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-number/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let checked = 0;\n  _._html(`<input${_._attr_input_checkedValue($scope0_id, \"#input/0\", checked + \"\", _._resume(function (v) {\n    checked = +v;\n  }, \"__tests__/template.marko_0/checkedValueChange\", $scope0_id), 0)} type=radio>${_._el_resume($scope0_id, \"#input/0\")}<input${_._attr_input_checkedValue($scope0_id, \"#input/1\", checked, _._resume(function (v) {\n    checked = +v;\n  }, \"__tests__/template.marko_0/checkedValueChange2\", $scope0_id), \"1\")} type=radio>${_._el_resume($scope0_id, \"#input/1\")}<input${_._attr_input_checkedValue($scope0_id, \"#input/2\", checked, _._resume(function (v) {\n    checked = +v;\n  }, \"__tests__/template.marko_0/checkedValueChange3\", $scope0_id), 2)} type=radio>${_._el_resume($scope0_id, \"#input/2\")}<span>${_._escape(checked)}${_._el_resume($scope0_id, \"#text/3\")}</span>`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-number/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"0\"\n/>\n<input\n  type=\"radio\"\n  value=\"1\"\n/>\n<input\n  type=\"radio\"\n  value=\"2\"\n/>\n<span>\n  0\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[1].click();\n```\n```html\n<input\n  default-checked=\"\"\n  type=\"radio\"\n  value=\"0\"\n/>\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"1\"\n/>\n<input\n  type=\"radio\"\n  value=\"2\"\n/>\n<span>\n  1\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[2].click();\n```\n```html\n<input\n  default-checked=\"\"\n  type=\"radio\"\n  value=\"0\"\n/>\n<input\n  type=\"radio\"\n  value=\"1\"\n/>\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"2\"\n/>\n<span>\n  2\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[0].click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"0\"\n/>\n<input\n  type=\"radio\"\n  value=\"1\"\n/>\n<input\n  type=\"radio\"\n  value=\"2\"\n/>\n<span>\n  0\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-number/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <input\n      checked=\"\"\n      type=\"radio\"\n      value=\"0\"\n    />\n    <!--M_*1 #input/0-->\n    <input\n      type=\"radio\"\n      value=\"1\"\n    />\n    <!--M_*1 #input/1-->\n    <input\n      type=\"radio\"\n      value=\"2\"\n    />\n    <!--M_*1 #input/2-->\n    <span>\n      0\n      <!--M_*1 #text/3-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#input/0\": 1,\n          \"ControlledType:#input/1\": 1,\n          \"ControlledType:#input/2\": 1\n        }], _.a[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_0/checkedValueChange\"\n          ](_.a), _.a[\"ControlledHandler:#input/1\"] = _._[\n          \"__tests__/template.marko_0/checkedValueChange2\"\n          ](_.a), _.a[\"ControlledHandler:#input/2\"] = _._[\n          \"__tests__/template.marko_0/checkedValueChange3\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[1].click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      default-checked=\"\"\n      type=\"radio\"\n      value=\"0\"\n    />\n    <!--M_*1 #input/0-->\n    <input\n      checked=\"\"\n      type=\"radio\"\n      value=\"1\"\n    />\n    <!--M_*1 #input/1-->\n    <input\n      type=\"radio\"\n      value=\"2\"\n    />\n    <!--M_*1 #input/2-->\n    <span>\n      1\n      <!--M_*1 #text/3-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#input/0\": 1,\n          \"ControlledType:#input/1\": 1,\n          \"ControlledType:#input/2\": 1\n        }], _.a[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_0/checkedValueChange\"\n          ](_.a), _.a[\"ControlledHandler:#input/1\"] = _._[\n          \"__tests__/template.marko_0/checkedValueChange2\"\n          ](_.a), _.a[\"ControlledHandler:#input/2\"] = _._[\n          \"__tests__/template.marko_0/checkedValueChange3\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[2].click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      default-checked=\"\"\n      type=\"radio\"\n      value=\"0\"\n    />\n    <!--M_*1 #input/0-->\n    <input\n      type=\"radio\"\n      value=\"1\"\n    />\n    <!--M_*1 #input/1-->\n    <input\n      checked=\"\"\n      type=\"radio\"\n      value=\"2\"\n    />\n    <!--M_*1 #input/2-->\n    <span>\n      2\n      <!--M_*1 #text/3-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#input/0\": 1,\n          \"ControlledType:#input/1\": 1,\n          \"ControlledType:#input/2\": 1\n        }], _.a[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_0/checkedValueChange\"\n          ](_.a), _.a[\"ControlledHandler:#input/1\"] = _._[\n          \"__tests__/template.marko_0/checkedValueChange2\"\n          ](_.a), _.a[\"ControlledHandler:#input/2\"] = _._[\n          \"__tests__/template.marko_0/checkedValueChange3\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[0].click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      checked=\"\"\n      type=\"radio\"\n      value=\"0\"\n    />\n    <!--M_*1 #input/0-->\n    <input\n      type=\"radio\"\n      value=\"1\"\n    />\n    <!--M_*1 #input/1-->\n    <input\n      type=\"radio\"\n      value=\"2\"\n    />\n    <!--M_*1 #input/2-->\n    <span>\n      0\n      <!--M_*1 #text/3-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#input/0\": 1,\n          \"ControlledType:#input/1\": 1,\n          \"ControlledType:#input/2\": 1\n        }], _.a[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_0/checkedValueChange\"\n          ](_.a), _.a[\"ControlledHandler:#input/1\"] = _._[\n          \"__tests__/template.marko_0/checkedValueChange2\"\n          ](_.a), _.a[\"ControlledHandler:#input/2\"] = _._[\n          \"__tests__/template.marko_0/checkedValueChange3\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"2\" => \"0\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-number/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"0\"\n/>\n<input\n  type=\"radio\"\n  value=\"1\"\n/>\n<input\n  type=\"radio\"\n  value=\"2\"\n/>\n<span>\n  0\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-number/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <input value=0 checked type=radio><!--M_*1 #input/0--><input value=1 type=radio><!--M_*1 #input/1--><input value=2 type=radio><!--M_*1 #input/2--><span>0<!--M_*1 #text/3--></span><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={\"ControlledType:#input/0\":1,\"ControlledType:#input/1\":1,\"ControlledType:#input/2\":1}],_.a[\"ControlledHandler:#input/0\"]=_._[\"__tests__/template.marko_0/checkedValueChange\"](_.a),_.a[\"ControlledHandler:#input/1\"]=_._[\"__tests__/template.marko_0/checkedValueChange2\"](_.a),_.a[\"ControlledHandler:#input/2\"]=_._[\"__tests__/template.marko_0/checkedValueChange3\"](_.a),_.b),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <input\n      checked=\"\"\n      type=\"radio\"\n      value=\"0\"\n    />\n    <!--M_*1 #input/0-->\n    <input\n      type=\"radio\"\n      value=\"1\"\n    />\n    <!--M_*1 #input/1-->\n    <input\n      type=\"radio\"\n      value=\"2\"\n    />\n    <!--M_*1 #input/2-->\n    <span>\n      0\n      <!--M_*1 #text/3-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#input/0\": 1,\n          \"ControlledType:#input/1\": 1,\n          \"ControlledType:#input/2\": 1\n        }], _.a[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_0/checkedValueChange\"\n          ](_.a), _.a[\"ControlledHandler:#input/1\"] = _._[\n          \"__tests__/template.marko_0/checkedValueChange2\"\n          ](_.a), _.a[\"ControlledHandler:#input/2\"] = _._[\n          \"__tests__/template.marko_0/checkedValueChange3\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/input0\nINSERT html/body/#comment0\nINSERT html/body/input1\nINSERT html/body/#comment1\nINSERT html/body/input2\nINSERT html/body/#comment2\nINSERT html/body/span\nINSERT html/body/span/#text\nINSERT html/body/span/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-number/template.marko",
    "content": "<let/checked=0/>\n\n<input type=\"radio\" value=0 checkedValue=checked+\"\" checkedValueChange(v) { checked = +v }>\n<input type=\"radio\" value=\"1\" checkedValue=checked checkedValueChange(v) { checked = +v }>\n<input type=\"radio\" value=2 checkedValue=checked checkedValueChange(v) { checked = +v }>\n\n<span>${checked}</span>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-number/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click0(container: Element) {\n  container.querySelectorAll(`input`)[0]!.click();\n}\n\nfunction click1(container: Element) {\n  container.querySelectorAll(`input`)[1]!.click();\n}\n\nfunction click2(container: Element) {\n  container.querySelectorAll(`input`)[2]!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click1, click2, click0],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-spread/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"e\",\n      \"$init\": \"a\",\n      \"$$input__script\": \"c\",\n      \"$$input\": \"t\",\n      \"$$checkedValue__OR__checkedValueChange\": \"r\",\n      \"$$checkedValue\": \"u\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-spread/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  a\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[1].click();\n```\n```html\n<input\n  default-checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  b\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[2].click();\n```\n```html\n<input\n  default-checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  c\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[0].click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  a\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-spread/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  a\n</span>\n```\n\n# Mutations\n```\nINSERT input0, input1, input2, span\n```\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[1].click();\n```\n```html\n<input\n  default-checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  b\n</span>\n```\n\n# Mutations\n```\nUPDATE span/#text \"a\" => \"b\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[2].click();\n```\n```html\n<input\n  default-checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  c\n</span>\n```\n\n# Mutations\n```\nUPDATE span/#text \"b\" => \"c\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[0].click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  a\n</span>\n```\n\n# Mutations\n```\nUPDATE span/#text \"c\" => \"a\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-spread/__snapshots__/dom.expected/tags/radio.js",
    "content": "export const $template = \"<input>\";\nexport const $walks = /* get, over(1) */\" b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $input__script = _._script(\"__tests__/tags/radio.marko_0_input\", $scope => _._attrs_script($scope, \"#input/0\"));\nexport const $input = /* @__PURE__ */_._const(\"input\", $scope => {\n  _._attrs($scope, \"#input/0\", {\n    type: \"radio\",\n    ...$scope.input\n  });\n  $input__script($scope);\n});\nexport default /* @__PURE__ */_._template(\"__tests__/tags/radio.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-spread/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 396 (min) 187 (brotli)\nconst $input__script = _._script(\"a0\", ($scope) =>\n    _._attrs_script($scope, \"a\"),\n  ),\n  $input = _._const(2, ($scope) => {\n    (_._attrs($scope, \"a\", { type: \"radio\", ...$scope.c }),\n      $input__script($scope));\n  }),\n  $checkedValue__OR__checkedValueChange = _._or(6, ($scope) => {\n    ($input($scope.a, {\n      checkedValue: $scope.e,\n      checkedValueChange: $scope.f,\n      value: \"a\",\n    }),\n      $input($scope.b, {\n        checkedValue: $scope.e,\n        checkedValueChange: $scope.f,\n        value: \"b\",\n      }),\n      $input($scope.c, {\n        checkedValue: $scope.e,\n        checkedValueChange: $scope.f,\n        value: \"c\",\n      }));\n  }),\n  $checkedValue = _._let(4, ($scope) => {\n    (_._text($scope.d, $scope.e),\n      $checkedValue__OR__checkedValueChange($scope));\n  });\n(_._resume(\"b0\", function ($scope) {\n  return (_new_checkedValue) => {\n    $checkedValue($scope, _new_checkedValue);\n  };\n}),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-spread/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `${_radio_template}${_radio_template}${_radio_template}<span> </span>`;\nexport const $walks = /* <radio>, <radio>, <radio>, next(1), get, out(1) */`/${_radio_walks}&/${_radio_walks}&/${_radio_walks}&D l`;\nimport { $setup as _radio, $input as _radio_input, $template as _radio_template, $walks as _radio_walks } from \"./tags/radio.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $checkedValue__OR__checkedValueChange = /* @__PURE__ */_._or(6, $scope => {\n  _radio_input($scope[\"#childScope/0\"], {\n    checkedValue: $scope.checkedValue,\n    checkedValueChange: $scope.$checkedValueChange,\n    value: \"a\"\n  });\n  _radio_input($scope[\"#childScope/1\"], {\n    checkedValue: $scope.checkedValue,\n    checkedValueChange: $scope.$checkedValueChange,\n    value: \"b\"\n  });\n  _radio_input($scope[\"#childScope/2\"], {\n    checkedValue: $scope.checkedValue,\n    checkedValueChange: $scope.$checkedValueChange,\n    value: \"c\"\n  });\n});\nconst $checkedValue = /* @__PURE__ */_._let(\"checkedValue/4\", $scope => {\n  _._text($scope[\"#text/3\"], $scope.checkedValue);\n  $checkedValue__OR__checkedValueChange($scope);\n});\nconst $checkedValueChange3 = /* @__PURE__ */_._const(\"$checkedValueChange\", $checkedValue__OR__checkedValueChange);\nexport function $setup($scope) {\n  _radio($scope[\"#childScope/0\"]);\n  _radio($scope[\"#childScope/1\"]);\n  _radio($scope[\"#childScope/2\"]);\n  $checkedValue($scope, \"a\");\n  $checkedValueChange3($scope, $checkedValueChange2($scope));\n}\nfunction $checkedValueChange2($scope) {\n  return _new_checkedValue => {\n    $checkedValue($scope, _new_checkedValue);\n  };\n}\n_._resume(\"__tests__/template.marko_0/checkedValueChange2\", $checkedValueChange2);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-spread/__snapshots__/html.expected/tags/radio.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/radio.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<input${_._attrs({\n    type: \"radio\",\n    ...input\n  }, \"#input/0\", $scope0_id, \"input\")}>${_._el_resume($scope0_id, \"#input/0\")}`);\n  _._script($scope0_id, \"__tests__/tags/radio.marko_0_input\");\n  _._scope($scope0_id, {\n    input\n  }, \"__tests__/tags/radio.marko\", 0, {\n    input: 0\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-spread/__snapshots__/html.expected/template.js",
    "content": "import _radio from \"./tags/radio.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let checkedValue = \"a\";\n  const $checkedValueChange = _._resume(_new_checkedValue => {\n    checkedValue = _new_checkedValue;\n  }, \"__tests__/template.marko_0/checkedValueChange2\", $scope0_id);\n  const $childScope = _._peek_scope_id();\n  _radio({\n    checkedValue: checkedValue,\n    checkedValueChange: $checkedValueChange,\n    value: \"a\"\n  });\n  const $childScope2 = _._peek_scope_id();\n  _radio({\n    checkedValue: checkedValue,\n    checkedValueChange: $checkedValueChange,\n    value: \"b\"\n  });\n  const $childScope3 = _._peek_scope_id();\n  _radio({\n    checkedValue: checkedValue,\n    checkedValueChange: $checkedValueChange,\n    value: \"c\"\n  });\n  _._html(`<span>${_._escape(checkedValue)}${_._el_resume($scope0_id, \"#text/3\")}</span>`);\n  _._scope($scope0_id, {\n    $checkedValueChange,\n    \"#childScope/0\": _._existing_scope($childScope),\n    \"#childScope/1\": _._existing_scope($childScope2),\n    \"#childScope/2\": _._existing_scope($childScope3)\n  }, \"__tests__/template.marko\", 0, {\n    $checkedValueChange: 0\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-spread/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  a\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[1].click();\n```\n```html\n<input\n  default-checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  b\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[2].click();\n```\n```html\n<input\n  default-checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  c\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[0].click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  a\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-spread/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <input\n      checked=\"\"\n      type=\"radio\"\n      value=\"a\"\n    />\n    <!--M_*2 #input/0-->\n    <input\n      type=\"radio\"\n      value=\"b\"\n    />\n    <!--M_*3 #input/0-->\n    <input\n      type=\"radio\"\n      value=\"c\"\n    />\n    <!--M_*4 #input/0-->\n    <span>\n      a\n      <!--M_*1 #text/3-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.h = [0, _.a = {\n          \"#childScope/0\": _.b = {\n            \"ControlledType:#input/0\": 1,\n            input: _.c = {\n              checkedValue: \"a\",\n              value: \"a\"\n            }\n          },\n          \"#childScope/1\": _.d = {\n            \"ControlledType:#input/0\": 1,\n            input: _.e = {\n              checkedValue: \"a\",\n              value: \"b\"\n            }\n          },\n          \"#childScope/2\": _.f = {\n            \"ControlledType:#input/0\": 1,\n            input: _.g = {\n              checkedValue: \"a\",\n              value: \"c\"\n            }\n          }\n        }, _.b, _.d, _.f], _.a.$checkedValueChange = _.b[\n          \"ControlledHandler:#input/0\"] = _.c.checkedValueChange = _.d[\n          \"ControlledHandler:#input/0\"] = _.e.checkedValueChange = _.f[\n          \"ControlledHandler:#input/0\"] = _.g.checkedValueChange = _._[\n          \"__tests__/template.marko_0/checkedValueChange2\"\n          ](_.a), _.h),\n        \"__tests__/tags/radio.marko_0_input 2 3 4\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[1].click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      default-checked=\"\"\n      type=\"radio\"\n      value=\"a\"\n    />\n    <!--M_*2 #input/0-->\n    <input\n      checked=\"\"\n      type=\"radio\"\n      value=\"b\"\n    />\n    <!--M_*3 #input/0-->\n    <input\n      type=\"radio\"\n      value=\"c\"\n    />\n    <!--M_*4 #input/0-->\n    <span>\n      b\n      <!--M_*1 #text/3-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.h = [0, _.a = {\n          \"#childScope/0\": _.b = {\n            \"ControlledType:#input/0\": 1,\n            input: _.c = {\n              checkedValue: \"a\",\n              value: \"a\"\n            }\n          },\n          \"#childScope/1\": _.d = {\n            \"ControlledType:#input/0\": 1,\n            input: _.e = {\n              checkedValue: \"a\",\n              value: \"b\"\n            }\n          },\n          \"#childScope/2\": _.f = {\n            \"ControlledType:#input/0\": 1,\n            input: _.g = {\n              checkedValue: \"a\",\n              value: \"c\"\n            }\n          }\n        }, _.b, _.d, _.f], _.a.$checkedValueChange = _.b[\n          \"ControlledHandler:#input/0\"] = _.c.checkedValueChange = _.d[\n          \"ControlledHandler:#input/0\"] = _.e.checkedValueChange = _.f[\n          \"ControlledHandler:#input/0\"] = _.g.checkedValueChange = _._[\n          \"__tests__/template.marko_0/checkedValueChange2\"\n          ](_.a), _.h),\n        \"__tests__/tags/radio.marko_0_input 2 3 4\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"a\" => \"b\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[2].click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      default-checked=\"\"\n      type=\"radio\"\n      value=\"a\"\n    />\n    <!--M_*2 #input/0-->\n    <input\n      type=\"radio\"\n      value=\"b\"\n    />\n    <!--M_*3 #input/0-->\n    <input\n      checked=\"\"\n      type=\"radio\"\n      value=\"c\"\n    />\n    <!--M_*4 #input/0-->\n    <span>\n      c\n      <!--M_*1 #text/3-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.h = [0, _.a = {\n          \"#childScope/0\": _.b = {\n            \"ControlledType:#input/0\": 1,\n            input: _.c = {\n              checkedValue: \"a\",\n              value: \"a\"\n            }\n          },\n          \"#childScope/1\": _.d = {\n            \"ControlledType:#input/0\": 1,\n            input: _.e = {\n              checkedValue: \"a\",\n              value: \"b\"\n            }\n          },\n          \"#childScope/2\": _.f = {\n            \"ControlledType:#input/0\": 1,\n            input: _.g = {\n              checkedValue: \"a\",\n              value: \"c\"\n            }\n          }\n        }, _.b, _.d, _.f], _.a.$checkedValueChange = _.b[\n          \"ControlledHandler:#input/0\"] = _.c.checkedValueChange = _.d[\n          \"ControlledHandler:#input/0\"] = _.e.checkedValueChange = _.f[\n          \"ControlledHandler:#input/0\"] = _.g.checkedValueChange = _._[\n          \"__tests__/template.marko_0/checkedValueChange2\"\n          ](_.a), _.h),\n        \"__tests__/tags/radio.marko_0_input 2 3 4\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"b\" => \"c\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[0].click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      checked=\"\"\n      type=\"radio\"\n      value=\"a\"\n    />\n    <!--M_*2 #input/0-->\n    <input\n      type=\"radio\"\n      value=\"b\"\n    />\n    <!--M_*3 #input/0-->\n    <input\n      type=\"radio\"\n      value=\"c\"\n    />\n    <!--M_*4 #input/0-->\n    <span>\n      a\n      <!--M_*1 #text/3-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.h = [0, _.a = {\n          \"#childScope/0\": _.b = {\n            \"ControlledType:#input/0\": 1,\n            input: _.c = {\n              checkedValue: \"a\",\n              value: \"a\"\n            }\n          },\n          \"#childScope/1\": _.d = {\n            \"ControlledType:#input/0\": 1,\n            input: _.e = {\n              checkedValue: \"a\",\n              value: \"b\"\n            }\n          },\n          \"#childScope/2\": _.f = {\n            \"ControlledType:#input/0\": 1,\n            input: _.g = {\n              checkedValue: \"a\",\n              value: \"c\"\n            }\n          }\n        }, _.b, _.d, _.f], _.a.$checkedValueChange = _.b[\n          \"ControlledHandler:#input/0\"] = _.c.checkedValueChange = _.d[\n          \"ControlledHandler:#input/0\"] = _.e.checkedValueChange = _.f[\n          \"ControlledHandler:#input/0\"] = _.g.checkedValueChange = _._[\n          \"__tests__/template.marko_0/checkedValueChange2\"\n          ](_.a), _.h),\n        \"__tests__/tags/radio.marko_0_input 2 3 4\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"c\" => \"a\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-spread/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  a\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-spread/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <input value=a checked type=radio><!--M_*2 #input/0--><input value=b type=radio><!--M_*3 #input/0--><input value=c type=radio><!--M_*4 #input/0--><span>a<!--M_*1 #text/3--></span><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.h=[0,_.a={\"#childScope/0\":_.b={\"ControlledType:#input/0\":1,input:_.c={checkedValue:\"a\",value:\"a\"}},\"#childScope/1\":_.d={\"ControlledType:#input/0\":1,input:_.e={checkedValue:\"a\",value:\"b\"}},\"#childScope/2\":_.f={\"ControlledType:#input/0\":1,input:_.g={checkedValue:\"a\",value:\"c\"}}},_.b,_.d,_.f],_.a.$checkedValueChange=_.b[\"ControlledHandler:#input/0\"]=_.c.checkedValueChange=_.d[\"ControlledHandler:#input/0\"]=_.e.checkedValueChange=_.f[\"ControlledHandler:#input/0\"]=_.g.checkedValueChange=_._[\"__tests__/template.marko_0/checkedValueChange2\"](_.a),_.h),\"__tests__/tags/radio.marko_0_input 2 3 4\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <input\n      checked=\"\"\n      type=\"radio\"\n      value=\"a\"\n    />\n    <!--M_*2 #input/0-->\n    <input\n      type=\"radio\"\n      value=\"b\"\n    />\n    <!--M_*3 #input/0-->\n    <input\n      type=\"radio\"\n      value=\"c\"\n    />\n    <!--M_*4 #input/0-->\n    <span>\n      a\n      <!--M_*1 #text/3-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.h = [0, _.a = {\n          \"#childScope/0\": _.b = {\n            \"ControlledType:#input/0\": 1,\n            input: _.c = {\n              checkedValue: \"a\",\n              value: \"a\"\n            }\n          },\n          \"#childScope/1\": _.d = {\n            \"ControlledType:#input/0\": 1,\n            input: _.e = {\n              checkedValue: \"a\",\n              value: \"b\"\n            }\n          },\n          \"#childScope/2\": _.f = {\n            \"ControlledType:#input/0\": 1,\n            input: _.g = {\n              checkedValue: \"a\",\n              value: \"c\"\n            }\n          }\n        }, _.b, _.d, _.f], _.a.$checkedValueChange = _.b[\n          \"ControlledHandler:#input/0\"] = _.c.checkedValueChange = _.d[\n          \"ControlledHandler:#input/0\"] = _.e.checkedValueChange = _.f[\n          \"ControlledHandler:#input/0\"] = _.g.checkedValueChange = _._[\n          \"__tests__/template.marko_0/checkedValueChange2\"\n          ](_.a), _.h),\n        \"__tests__/tags/radio.marko_0_input 2 3 4\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/input0\nINSERT html/body/#comment0\nINSERT html/body/input1\nINSERT html/body/#comment1\nINSERT html/body/input2\nINSERT html/body/#comment2\nINSERT html/body/span\nINSERT html/body/span/#text\nINSERT html/body/span/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-spread/tags/radio.marko",
    "content": "<input type=\"radio\" ...input />"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-spread/template.marko",
    "content": "<let/checkedValue = \"a\"/>\n\n<radio checkedValue:=checkedValue value=\"a\"/>\n<radio checkedValue:=checkedValue value=\"b\"/>\n<radio checkedValue:=checkedValue value=\"c\"/>\n<span>${checkedValue}</span>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-spread/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction clickA(container: Element) {\n  container.querySelectorAll(`input`)[0]!.click();\n}\n\nfunction clickB(container: Element) {\n  container.querySelectorAll(`input`)[1]!.click();\n}\n\nfunction clickC(container: Element) {\n  container.querySelectorAll(`input`)[2]!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, clickB, clickC, clickA],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-values/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"e\",\n      \"$$checkedValue__OR__checkedValueChange\": \"_\",\n      \"$$checkedValue\": \"a\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-values/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"a\"\n/>\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"c\"\n/>\n<span>\n  a,b\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[1].click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"a\"\n/>\n<input\n  default-checked=\"\"\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"c\"\n/>\n<span>\n  a\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[2].click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"a\"\n/>\n<input\n  default-checked=\"\"\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"c\"\n/>\n<span>\n  a,c\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[0].click();\n```\n```html\n<input\n  default-checked=\"\"\n  type=\"checkbox\"\n  value=\"a\"\n/>\n<input\n  default-checked=\"\"\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"c\"\n/>\n<span>\n  c\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-values/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"a\"\n/>\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"c\"\n/>\n<span>\n  a,b\n</span>\n```\n\n# Mutations\n```\nINSERT input0, input1, input2, span\n```\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[1].click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"a\"\n/>\n<input\n  default-checked=\"\"\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"c\"\n/>\n<span>\n  a\n</span>\n```\n\n# Mutations\n```\nUPDATE span/#text \"a,b\" => \"a\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[2].click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"a\"\n/>\n<input\n  default-checked=\"\"\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"c\"\n/>\n<span>\n  a,c\n</span>\n```\n\n# Mutations\n```\nUPDATE span/#text \"a\" => \"a,c\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[0].click();\n```\n```html\n<input\n  default-checked=\"\"\n  type=\"checkbox\"\n  value=\"a\"\n/>\n<input\n  default-checked=\"\"\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"c\"\n/>\n<span>\n  c\n</span>\n```\n\n# Mutations\n```\nUPDATE span/#text \"a,c\" => \"c\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-values/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 395 (min) 158 (brotli)\nconst $checkedValue__OR__checkedValueChange = _._or(6, ($scope) => {\n    (_._attr_input_checkedValue($scope, \"a\", $scope.e, $scope.f, \"a\"),\n      _._attr_input_checkedValue($scope, \"b\", $scope.e, $scope.f, \"b\"),\n      _._attr_input_checkedValue($scope, \"c\", $scope.e, $scope.f, \"c\"));\n  }),\n  $checkedValue = _._let(4, ($scope) => {\n    (_._text($scope.d, $scope.e),\n      $checkedValue__OR__checkedValueChange($scope));\n  });\n(_._script(\"a1\", ($scope) => {\n  (_._attr_input_checkedValue_script($scope, \"a\"),\n    _._attr_input_checkedValue_script($scope, \"b\"),\n    _._attr_input_checkedValue_script($scope, \"c\"));\n}),\n  _._resume(\"a0\", function ($scope) {\n    return (_new_checkedValue) => {\n      $checkedValue($scope, _new_checkedValue);\n    };\n  }),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-values/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<input type=checkbox><input type=checkbox><input type=checkbox><span> </span>\";\nexport const $walks = /* get, over(1), get, over(1), get, over(1), next(1), get, out(1) */\" b b bD l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $checkedValue__OR__checkedValueChange = /* @__PURE__ */_._or(6, $scope => {\n  _._attr_input_checkedValue($scope, \"#input/0\", $scope.checkedValue, $scope.$checkedValueChange, \"a\");\n  _._attr_input_checkedValue($scope, \"#input/1\", $scope.checkedValue, $scope.$checkedValueChange, \"b\");\n  _._attr_input_checkedValue($scope, \"#input/2\", $scope.checkedValue, $scope.$checkedValueChange, \"c\");\n});\nconst $checkedValue = /* @__PURE__ */_._let(\"checkedValue/4\", $scope => {\n  _._text($scope[\"#text/3\"], $scope.checkedValue);\n  $checkedValue__OR__checkedValueChange($scope);\n});\nconst $checkedValueChange3 = /* @__PURE__ */_._const(\"$checkedValueChange\", $checkedValue__OR__checkedValueChange);\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => {\n  _._attr_input_checkedValue_script($scope, \"#input/0\");\n  _._attr_input_checkedValue_script($scope, \"#input/1\");\n  _._attr_input_checkedValue_script($scope, \"#input/2\");\n});\nexport function $setup($scope) {\n  $checkedValue($scope, [\"a\", \"b\"]);\n  $checkedValueChange3($scope, $checkedValueChange2($scope));\n  $setup__script($scope);\n}\nfunction $checkedValueChange2($scope) {\n  return _new_checkedValue => {\n    $checkedValue($scope, _new_checkedValue);\n  };\n}\n_._resume(\"__tests__/template.marko_0/checkedValueChange2\", $checkedValueChange2);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-values/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let checkedValue = [\"a\", \"b\"];\n  const $checkedValueChange = _._resume(_new_checkedValue => {\n    checkedValue = _new_checkedValue;\n  }, \"__tests__/template.marko_0/checkedValueChange2\", $scope0_id);\n  _._html(`<input${_._attr_input_checkedValue($scope0_id, \"#input/0\", checkedValue, $checkedValueChange, \"a\")} type=checkbox>${_._el_resume($scope0_id, \"#input/0\")}<input${_._attr_input_checkedValue($scope0_id, \"#input/1\", checkedValue, $checkedValueChange, \"b\")} type=checkbox>${_._el_resume($scope0_id, \"#input/1\")}<input${_._attr_input_checkedValue($scope0_id, \"#input/2\", checkedValue, $checkedValueChange, \"c\")} type=checkbox>${_._el_resume($scope0_id, \"#input/2\")}<span>${_._escape(checkedValue)}${_._el_resume($scope0_id, \"#text/3\")}</span>`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {\n    $checkedValueChange\n  }, \"__tests__/template.marko\", 0, {\n    $checkedValueChange: 0\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-values/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"a\"\n/>\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"c\"\n/>\n<span>\n  a,b\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[1].click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"a\"\n/>\n<input\n  default-checked=\"\"\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"c\"\n/>\n<span>\n  a\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[2].click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"a\"\n/>\n<input\n  default-checked=\"\"\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"c\"\n/>\n<span>\n  a,c\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[0].click();\n```\n```html\n<input\n  default-checked=\"\"\n  type=\"checkbox\"\n  value=\"a\"\n/>\n<input\n  default-checked=\"\"\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"c\"\n/>\n<span>\n  c\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-values/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <input\n      checked=\"\"\n      type=\"checkbox\"\n      value=\"a\"\n    />\n    <!--M_*1 #input/0-->\n    <input\n      checked=\"\"\n      type=\"checkbox\"\n      value=\"b\"\n    />\n    <!--M_*1 #input/1-->\n    <input\n      type=\"checkbox\"\n      value=\"c\"\n    />\n    <!--M_*1 #input/2-->\n    <span>\n      a,b\n      <!--M_*1 #text/3-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n            \"ControlledType:#input/0\": 1,\n            \"ControlledValue:#input/0\": _.b = [],\n            \"ControlledType:#input/1\": 1,\n            \"ControlledValue:#input/1\": _.b,\n            \"ControlledType:#input/2\": 1,\n            \"ControlledValue:#input/2\": _.b\n          }], _.a[\"ControlledHandler:#input/0\"] = _.a[\n            \"ControlledHandler:#input/1\"] = _.a[\n          \"ControlledHandler:#input/2\"] = _.a.$checkedValueChange = _._[\n            \"__tests__/template.marko_0/checkedValueChange2\"\n            ](_.a), _.c),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[1].click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      checked=\"\"\n      type=\"checkbox\"\n      value=\"a\"\n    />\n    <!--M_*1 #input/0-->\n    <input\n      default-checked=\"\"\n      type=\"checkbox\"\n      value=\"b\"\n    />\n    <!--M_*1 #input/1-->\n    <input\n      type=\"checkbox\"\n      value=\"c\"\n    />\n    <!--M_*1 #input/2-->\n    <span>\n      a\n      <!--M_*1 #text/3-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n            \"ControlledType:#input/0\": 1,\n            \"ControlledValue:#input/0\": _.b = [],\n            \"ControlledType:#input/1\": 1,\n            \"ControlledValue:#input/1\": _.b,\n            \"ControlledType:#input/2\": 1,\n            \"ControlledValue:#input/2\": _.b\n          }], _.a[\"ControlledHandler:#input/0\"] = _.a[\n            \"ControlledHandler:#input/1\"] = _.a[\n          \"ControlledHandler:#input/2\"] = _.a.$checkedValueChange = _._[\n            \"__tests__/template.marko_0/checkedValueChange2\"\n            ](_.a), _.c),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"a,b\" => \"a\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[2].click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      checked=\"\"\n      type=\"checkbox\"\n      value=\"a\"\n    />\n    <!--M_*1 #input/0-->\n    <input\n      default-checked=\"\"\n      type=\"checkbox\"\n      value=\"b\"\n    />\n    <!--M_*1 #input/1-->\n    <input\n      checked=\"\"\n      type=\"checkbox\"\n      value=\"c\"\n    />\n    <!--M_*1 #input/2-->\n    <span>\n      a,c\n      <!--M_*1 #text/3-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n            \"ControlledType:#input/0\": 1,\n            \"ControlledValue:#input/0\": _.b = [],\n            \"ControlledType:#input/1\": 1,\n            \"ControlledValue:#input/1\": _.b,\n            \"ControlledType:#input/2\": 1,\n            \"ControlledValue:#input/2\": _.b\n          }], _.a[\"ControlledHandler:#input/0\"] = _.a[\n            \"ControlledHandler:#input/1\"] = _.a[\n          \"ControlledHandler:#input/2\"] = _.a.$checkedValueChange = _._[\n            \"__tests__/template.marko_0/checkedValueChange2\"\n            ](_.a), _.c),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"a\" => \"a,c\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(`input`)[0].click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      default-checked=\"\"\n      type=\"checkbox\"\n      value=\"a\"\n    />\n    <!--M_*1 #input/0-->\n    <input\n      default-checked=\"\"\n      type=\"checkbox\"\n      value=\"b\"\n    />\n    <!--M_*1 #input/1-->\n    <input\n      checked=\"\"\n      type=\"checkbox\"\n      value=\"c\"\n    />\n    <!--M_*1 #input/2-->\n    <span>\n      c\n      <!--M_*1 #text/3-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n            \"ControlledType:#input/0\": 1,\n            \"ControlledValue:#input/0\": _.b = [],\n            \"ControlledType:#input/1\": 1,\n            \"ControlledValue:#input/1\": _.b,\n            \"ControlledType:#input/2\": 1,\n            \"ControlledValue:#input/2\": _.b\n          }], _.a[\"ControlledHandler:#input/0\"] = _.a[\n            \"ControlledHandler:#input/1\"] = _.a[\n          \"ControlledHandler:#input/2\"] = _.a.$checkedValueChange = _._[\n            \"__tests__/template.marko_0/checkedValueChange2\"\n            ](_.a), _.c),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"a,c\" => \"c\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-values/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"a\"\n/>\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"c\"\n/>\n<span>\n  a,b\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-values/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <input value=a checked type=checkbox><!--M_*1 #input/0--><input value=b checked type=checkbox><!--M_*1 #input/1--><input value=c type=checkbox><!--M_*1 #input/2--><span>a,b<!--M_*1 #text/3--></span><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.a={\"ControlledType:#input/0\":1,\"ControlledValue:#input/0\":_.b=[],\"ControlledType:#input/1\":1,\"ControlledValue:#input/1\":_.b,\"ControlledType:#input/2\":1,\"ControlledValue:#input/2\":_.b}],_.a[\"ControlledHandler:#input/0\"]=_.a[\"ControlledHandler:#input/1\"]=_.a[\"ControlledHandler:#input/2\"]=_.a.$checkedValueChange=_._[\"__tests__/template.marko_0/checkedValueChange2\"](_.a),_.c),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <input\n      checked=\"\"\n      type=\"checkbox\"\n      value=\"a\"\n    />\n    <!--M_*1 #input/0-->\n    <input\n      checked=\"\"\n      type=\"checkbox\"\n      value=\"b\"\n    />\n    <!--M_*1 #input/1-->\n    <input\n      type=\"checkbox\"\n      value=\"c\"\n    />\n    <!--M_*1 #input/2-->\n    <span>\n      a,b\n      <!--M_*1 #text/3-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n            \"ControlledType:#input/0\": 1,\n            \"ControlledValue:#input/0\": _.b = [],\n            \"ControlledType:#input/1\": 1,\n            \"ControlledValue:#input/1\": _.b,\n            \"ControlledType:#input/2\": 1,\n            \"ControlledValue:#input/2\": _.b\n          }], _.a[\"ControlledHandler:#input/0\"] = _.a[\n            \"ControlledHandler:#input/1\"] = _.a[\n          \"ControlledHandler:#input/2\"] = _.a.$checkedValueChange = _._[\n            \"__tests__/template.marko_0/checkedValueChange2\"\n            ](_.a), _.c),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/input0\nINSERT html/body/#comment0\nINSERT html/body/input1\nINSERT html/body/#comment1\nINSERT html/body/input2\nINSERT html/body/#comment2\nINSERT html/body/span\nINSERT html/body/span/#text\nINSERT html/body/span/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-values/template.marko",
    "content": "<let/checkedValue = [\"a\", \"b\"]/>\n<input type=\"checkbox\" checkedValue:=checkedValue value=\"a\"/>\n<input type=\"checkbox\" checkedValue:=checkedValue value=\"b\"/>\n<input type=\"checkbox\" checkedValue:=checkedValue value=\"c\"/>\n<span>${checkedValue}</span>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-values/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction clickA(container: Element) {\n  container.querySelectorAll(`input`)[0]!.click();\n}\n\nfunction clickB(container: Element) {\n  container.querySelectorAll(`input`)[1]!.click();\n}\n\nfunction clickC(container: Element) {\n  container.querySelectorAll(`input`)[2]!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, clickB, clickC, clickA],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-values-spread/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"e\",\n      \"$init\": \"a\",\n      \"$$input__script\": \"c\",\n      \"$$input\": \"t\",\n      \"$$checkedValue__OR__checkedValueChange\": \"r\",\n      \"$$checkedValue\": \"u\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-values-spread/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"a\"\n/>\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"c\"\n/>\n<span>\n  a,b\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"input\").click();\n```\n```html\n<input\n  default-checked=\"\"\n  type=\"checkbox\"\n  value=\"a\"\n/>\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"c\"\n/>\n<span>\n  b\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"input\").click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"a\"\n/>\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"c\"\n/>\n<span>\n  b,a\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"input\").click();\n```\n```html\n<input\n  default-checked=\"\"\n  type=\"checkbox\"\n  value=\"a\"\n/>\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"c\"\n/>\n<span>\n  b\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-values-spread/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"a\"\n/>\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"c\"\n/>\n<span>\n  a,b\n</span>\n```\n\n# Mutations\n```\nINSERT input0, input1, input2, span\n```\n\n# Render\n```js\ncontainer.querySelector(\"input\").click();\n```\n```html\n<input\n  default-checked=\"\"\n  type=\"checkbox\"\n  value=\"a\"\n/>\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"c\"\n/>\n<span>\n  b\n</span>\n```\n\n# Mutations\n```\nUPDATE span/#text \"a,b\" => \"b\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"input\").click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"a\"\n/>\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"c\"\n/>\n<span>\n  b,a\n</span>\n```\n\n# Mutations\n```\nUPDATE span/#text \"b\" => \"b,a\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"input\").click();\n```\n```html\n<input\n  default-checked=\"\"\n  type=\"checkbox\"\n  value=\"a\"\n/>\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"c\"\n/>\n<span>\n  b\n</span>\n```\n\n# Mutations\n```\nUPDATE span/#text \"b,a\" => \"b\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-values-spread/__snapshots__/dom.expected/tags/checkbox.js",
    "content": "export const $template = \"<input>\";\nexport const $walks = /* get, over(1) */\" b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $input__script = _._script(\"__tests__/tags/checkbox.marko_0_input\", $scope => _._attrs_script($scope, \"#input/0\"));\nexport const $input = /* @__PURE__ */_._const(\"input\", $scope => {\n  _._attrs($scope, \"#input/0\", {\n    type: \"checkbox\",\n    ...$scope.input\n  });\n  $input__script($scope);\n});\nexport default /* @__PURE__ */_._template(\"__tests__/tags/checkbox.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-values-spread/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 399 (min) 188 (brotli)\nconst $input__script = _._script(\"a0\", ($scope) =>\n    _._attrs_script($scope, \"a\"),\n  ),\n  $input = _._const(2, ($scope) => {\n    (_._attrs($scope, \"a\", { type: \"checkbox\", ...$scope.c }),\n      $input__script($scope));\n  }),\n  $checkedValue__OR__checkedValueChange = _._or(6, ($scope) => {\n    ($input($scope.a, {\n      checkedValue: $scope.e,\n      checkedValueChange: $scope.f,\n      value: \"a\",\n    }),\n      $input($scope.b, {\n        checkedValue: $scope.e,\n        checkedValueChange: $scope.f,\n        value: \"b\",\n      }),\n      $input($scope.c, {\n        checkedValue: $scope.e,\n        checkedValueChange: $scope.f,\n        value: \"c\",\n      }));\n  }),\n  $checkedValue = _._let(4, ($scope) => {\n    (_._text($scope.d, $scope.e),\n      $checkedValue__OR__checkedValueChange($scope));\n  });\n(_._resume(\"b0\", function ($scope) {\n  return (_new_checkedValue) => {\n    $checkedValue($scope, _new_checkedValue);\n  };\n}),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-values-spread/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `${_checkbox_template}${_checkbox_template}${_checkbox_template}<span> </span>`;\nexport const $walks = /* <checkbox>, <checkbox>, <checkbox>, next(1), get, out(1) */`/${_checkbox_walks}&/${_checkbox_walks}&/${_checkbox_walks}&D l`;\nimport { $setup as _checkbox, $input as _checkbox_input, $template as _checkbox_template, $walks as _checkbox_walks } from \"./tags/checkbox.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $checkedValue__OR__checkedValueChange = /* @__PURE__ */_._or(6, $scope => {\n  _checkbox_input($scope[\"#childScope/0\"], {\n    checkedValue: $scope.checkedValue,\n    checkedValueChange: $scope.$checkedValueChange,\n    value: \"a\"\n  });\n  _checkbox_input($scope[\"#childScope/1\"], {\n    checkedValue: $scope.checkedValue,\n    checkedValueChange: $scope.$checkedValueChange,\n    value: \"b\"\n  });\n  _checkbox_input($scope[\"#childScope/2\"], {\n    checkedValue: $scope.checkedValue,\n    checkedValueChange: $scope.$checkedValueChange,\n    value: \"c\"\n  });\n});\nconst $checkedValue = /* @__PURE__ */_._let(\"checkedValue/4\", $scope => {\n  _._text($scope[\"#text/3\"], $scope.checkedValue);\n  $checkedValue__OR__checkedValueChange($scope);\n});\nconst $checkedValueChange3 = /* @__PURE__ */_._const(\"$checkedValueChange\", $checkedValue__OR__checkedValueChange);\nexport function $setup($scope) {\n  _checkbox($scope[\"#childScope/0\"]);\n  _checkbox($scope[\"#childScope/1\"]);\n  _checkbox($scope[\"#childScope/2\"]);\n  $checkedValue($scope, [\"a\", \"b\"]);\n  $checkedValueChange3($scope, $checkedValueChange2($scope));\n}\nfunction $checkedValueChange2($scope) {\n  return _new_checkedValue => {\n    $checkedValue($scope, _new_checkedValue);\n  };\n}\n_._resume(\"__tests__/template.marko_0/checkedValueChange2\", $checkedValueChange2);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-values-spread/__snapshots__/html.expected/tags/checkbox.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/checkbox.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<input${_._attrs({\n    type: \"checkbox\",\n    ...input\n  }, \"#input/0\", $scope0_id, \"input\")}>${_._el_resume($scope0_id, \"#input/0\")}`);\n  _._script($scope0_id, \"__tests__/tags/checkbox.marko_0_input\");\n  _._scope($scope0_id, {\n    input\n  }, \"__tests__/tags/checkbox.marko\", 0, {\n    input: 0\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-values-spread/__snapshots__/html.expected/template.js",
    "content": "import _checkbox from \"./tags/checkbox.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let checkedValue = [\"a\", \"b\"];\n  const $checkedValueChange = _._resume(_new_checkedValue => {\n    checkedValue = _new_checkedValue;\n  }, \"__tests__/template.marko_0/checkedValueChange2\", $scope0_id);\n  const $childScope = _._peek_scope_id();\n  _checkbox({\n    checkedValue: checkedValue,\n    checkedValueChange: $checkedValueChange,\n    value: \"a\"\n  });\n  const $childScope2 = _._peek_scope_id();\n  _checkbox({\n    checkedValue: checkedValue,\n    checkedValueChange: $checkedValueChange,\n    value: \"b\"\n  });\n  const $childScope3 = _._peek_scope_id();\n  _checkbox({\n    checkedValue: checkedValue,\n    checkedValueChange: $checkedValueChange,\n    value: \"c\"\n  });\n  _._html(`<span>${_._escape(checkedValue)}${_._el_resume($scope0_id, \"#text/3\")}</span>`);\n  _._scope($scope0_id, {\n    $checkedValueChange,\n    \"#childScope/0\": _._existing_scope($childScope),\n    \"#childScope/1\": _._existing_scope($childScope2),\n    \"#childScope/2\": _._existing_scope($childScope3)\n  }, \"__tests__/template.marko\", 0, {\n    $checkedValueChange: 0\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-values-spread/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"a\"\n/>\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"c\"\n/>\n<span>\n  a,b\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"input\").click();\n```\n```html\n<input\n  default-checked=\"\"\n  type=\"checkbox\"\n  value=\"a\"\n/>\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"c\"\n/>\n<span>\n  b\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"input\").click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"a\"\n/>\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"c\"\n/>\n<span>\n  b,a\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"input\").click();\n```\n```html\n<input\n  default-checked=\"\"\n  type=\"checkbox\"\n  value=\"a\"\n/>\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"c\"\n/>\n<span>\n  b\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-values-spread/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <input\n      checked=\"\"\n      type=\"checkbox\"\n      value=\"a\"\n    />\n    <!--M_*2 #input/0-->\n    <input\n      checked=\"\"\n      type=\"checkbox\"\n      value=\"b\"\n    />\n    <!--M_*3 #input/0-->\n    <input\n      type=\"checkbox\"\n      value=\"c\"\n    />\n    <!--M_*4 #input/0-->\n    <span>\n      a,b\n      <!--M_*1 #text/3-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.j = [0, _.a = {\n          \"#childScope/0\": _.b = {\n            \"ControlledType:#input/0\": 1,\n            \"ControlledValue:#input/0\": _.d = [],\n            input: _.c = {\n              checkedValue: _.f = [\"a\", \"b\"],\n              value: \"a\"\n            }\n          },\n          \"#childScope/1\": _.e = {\n            \"ControlledType:#input/0\": 1,\n            \"ControlledValue:#input/0\": _.d,\n            input: _.g = {\n              checkedValue: _.f,\n              value: \"b\"\n            }\n          },\n          \"#childScope/2\": _.h = {\n            \"ControlledType:#input/0\": 1,\n            \"ControlledValue:#input/0\": _.d,\n            input: _.i = {\n              checkedValue: _.f,\n              value: \"c\"\n            }\n          }\n        }, _.b, _.e, _.h], _.a.$checkedValueChange = _.b[\n          \"ControlledHandler:#input/0\"] = _.c.checkedValueChange = _.e[\n          \"ControlledHandler:#input/0\"] = _.g.checkedValueChange = _.h[\n          \"ControlledHandler:#input/0\"] = _.i.checkedValueChange = _._[\n          \"__tests__/template.marko_0/checkedValueChange2\"\n          ](_.a), _.j),\n        \"__tests__/tags/checkbox.marko_0_input 2 3 4\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"input\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      default-checked=\"\"\n      type=\"checkbox\"\n      value=\"a\"\n    />\n    <!--M_*2 #input/0-->\n    <input\n      checked=\"\"\n      type=\"checkbox\"\n      value=\"b\"\n    />\n    <!--M_*3 #input/0-->\n    <input\n      type=\"checkbox\"\n      value=\"c\"\n    />\n    <!--M_*4 #input/0-->\n    <span>\n      b\n      <!--M_*1 #text/3-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.j = [0, _.a = {\n          \"#childScope/0\": _.b = {\n            \"ControlledType:#input/0\": 1,\n            \"ControlledValue:#input/0\": _.d = [],\n            input: _.c = {\n              checkedValue: _.f = [\"a\", \"b\"],\n              value: \"a\"\n            }\n          },\n          \"#childScope/1\": _.e = {\n            \"ControlledType:#input/0\": 1,\n            \"ControlledValue:#input/0\": _.d,\n            input: _.g = {\n              checkedValue: _.f,\n              value: \"b\"\n            }\n          },\n          \"#childScope/2\": _.h = {\n            \"ControlledType:#input/0\": 1,\n            \"ControlledValue:#input/0\": _.d,\n            input: _.i = {\n              checkedValue: _.f,\n              value: \"c\"\n            }\n          }\n        }, _.b, _.e, _.h], _.a.$checkedValueChange = _.b[\n          \"ControlledHandler:#input/0\"] = _.c.checkedValueChange = _.e[\n          \"ControlledHandler:#input/0\"] = _.g.checkedValueChange = _.h[\n          \"ControlledHandler:#input/0\"] = _.i.checkedValueChange = _._[\n          \"__tests__/template.marko_0/checkedValueChange2\"\n          ](_.a), _.j),\n        \"__tests__/tags/checkbox.marko_0_input 2 3 4\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"a,b\" => \"b\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"input\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      checked=\"\"\n      type=\"checkbox\"\n      value=\"a\"\n    />\n    <!--M_*2 #input/0-->\n    <input\n      checked=\"\"\n      type=\"checkbox\"\n      value=\"b\"\n    />\n    <!--M_*3 #input/0-->\n    <input\n      type=\"checkbox\"\n      value=\"c\"\n    />\n    <!--M_*4 #input/0-->\n    <span>\n      b,a\n      <!--M_*1 #text/3-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.j = [0, _.a = {\n          \"#childScope/0\": _.b = {\n            \"ControlledType:#input/0\": 1,\n            \"ControlledValue:#input/0\": _.d = [],\n            input: _.c = {\n              checkedValue: _.f = [\"a\", \"b\"],\n              value: \"a\"\n            }\n          },\n          \"#childScope/1\": _.e = {\n            \"ControlledType:#input/0\": 1,\n            \"ControlledValue:#input/0\": _.d,\n            input: _.g = {\n              checkedValue: _.f,\n              value: \"b\"\n            }\n          },\n          \"#childScope/2\": _.h = {\n            \"ControlledType:#input/0\": 1,\n            \"ControlledValue:#input/0\": _.d,\n            input: _.i = {\n              checkedValue: _.f,\n              value: \"c\"\n            }\n          }\n        }, _.b, _.e, _.h], _.a.$checkedValueChange = _.b[\n          \"ControlledHandler:#input/0\"] = _.c.checkedValueChange = _.e[\n          \"ControlledHandler:#input/0\"] = _.g.checkedValueChange = _.h[\n          \"ControlledHandler:#input/0\"] = _.i.checkedValueChange = _._[\n          \"__tests__/template.marko_0/checkedValueChange2\"\n          ](_.a), _.j),\n        \"__tests__/tags/checkbox.marko_0_input 2 3 4\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"b\" => \"b,a\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"input\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      default-checked=\"\"\n      type=\"checkbox\"\n      value=\"a\"\n    />\n    <!--M_*2 #input/0-->\n    <input\n      checked=\"\"\n      type=\"checkbox\"\n      value=\"b\"\n    />\n    <!--M_*3 #input/0-->\n    <input\n      type=\"checkbox\"\n      value=\"c\"\n    />\n    <!--M_*4 #input/0-->\n    <span>\n      b\n      <!--M_*1 #text/3-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.j = [0, _.a = {\n          \"#childScope/0\": _.b = {\n            \"ControlledType:#input/0\": 1,\n            \"ControlledValue:#input/0\": _.d = [],\n            input: _.c = {\n              checkedValue: _.f = [\"a\", \"b\"],\n              value: \"a\"\n            }\n          },\n          \"#childScope/1\": _.e = {\n            \"ControlledType:#input/0\": 1,\n            \"ControlledValue:#input/0\": _.d,\n            input: _.g = {\n              checkedValue: _.f,\n              value: \"b\"\n            }\n          },\n          \"#childScope/2\": _.h = {\n            \"ControlledType:#input/0\": 1,\n            \"ControlledValue:#input/0\": _.d,\n            input: _.i = {\n              checkedValue: _.f,\n              value: \"c\"\n            }\n          }\n        }, _.b, _.e, _.h], _.a.$checkedValueChange = _.b[\n          \"ControlledHandler:#input/0\"] = _.c.checkedValueChange = _.e[\n          \"ControlledHandler:#input/0\"] = _.g.checkedValueChange = _.h[\n          \"ControlledHandler:#input/0\"] = _.i.checkedValueChange = _._[\n          \"__tests__/template.marko_0/checkedValueChange2\"\n          ](_.a), _.j),\n        \"__tests__/tags/checkbox.marko_0_input 2 3 4\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"b,a\" => \"b\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-values-spread/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"a\"\n/>\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"c\"\n/>\n<span>\n  a,b\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-values-spread/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <input value=a checked type=checkbox><!--M_*2 #input/0--><input value=b checked type=checkbox><!--M_*3 #input/0--><input value=c type=checkbox><!--M_*4 #input/0--><span>a,b<!--M_*1 #text/3--></span><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.j=[0,_.a={\"#childScope/0\":_.b={\"ControlledType:#input/0\":1,\"ControlledValue:#input/0\":_.d=[],input:_.c={checkedValue:_.f=[\"a\",\"b\"],value:\"a\"}},\"#childScope/1\":_.e={\"ControlledType:#input/0\":1,\"ControlledValue:#input/0\":_.d,input:_.g={checkedValue:_.f,value:\"b\"}},\"#childScope/2\":_.h={\"ControlledType:#input/0\":1,\"ControlledValue:#input/0\":_.d,input:_.i={checkedValue:_.f,value:\"c\"}}},_.b,_.e,_.h],_.a.$checkedValueChange=_.b[\"ControlledHandler:#input/0\"]=_.c.checkedValueChange=_.e[\"ControlledHandler:#input/0\"]=_.g.checkedValueChange=_.h[\"ControlledHandler:#input/0\"]=_.i.checkedValueChange=_._[\"__tests__/template.marko_0/checkedValueChange2\"](_.a),_.j),\"__tests__/tags/checkbox.marko_0_input 2 3 4\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <input\n      checked=\"\"\n      type=\"checkbox\"\n      value=\"a\"\n    />\n    <!--M_*2 #input/0-->\n    <input\n      checked=\"\"\n      type=\"checkbox\"\n      value=\"b\"\n    />\n    <!--M_*3 #input/0-->\n    <input\n      type=\"checkbox\"\n      value=\"c\"\n    />\n    <!--M_*4 #input/0-->\n    <span>\n      a,b\n      <!--M_*1 #text/3-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.j = [0, _.a = {\n          \"#childScope/0\": _.b = {\n            \"ControlledType:#input/0\": 1,\n            \"ControlledValue:#input/0\": _.d = [],\n            input: _.c = {\n              checkedValue: _.f = [\"a\", \"b\"],\n              value: \"a\"\n            }\n          },\n          \"#childScope/1\": _.e = {\n            \"ControlledType:#input/0\": 1,\n            \"ControlledValue:#input/0\": _.d,\n            input: _.g = {\n              checkedValue: _.f,\n              value: \"b\"\n            }\n          },\n          \"#childScope/2\": _.h = {\n            \"ControlledType:#input/0\": 1,\n            \"ControlledValue:#input/0\": _.d,\n            input: _.i = {\n              checkedValue: _.f,\n              value: \"c\"\n            }\n          }\n        }, _.b, _.e, _.h], _.a.$checkedValueChange = _.b[\n          \"ControlledHandler:#input/0\"] = _.c.checkedValueChange = _.e[\n          \"ControlledHandler:#input/0\"] = _.g.checkedValueChange = _.h[\n          \"ControlledHandler:#input/0\"] = _.i.checkedValueChange = _._[\n          \"__tests__/template.marko_0/checkedValueChange2\"\n          ](_.a), _.j),\n        \"__tests__/tags/checkbox.marko_0_input 2 3 4\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/input0\nINSERT html/body/#comment0\nINSERT html/body/input1\nINSERT html/body/#comment1\nINSERT html/body/input2\nINSERT html/body/#comment2\nINSERT html/body/span\nINSERT html/body/span/#text\nINSERT html/body/span/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-values-spread/tags/checkbox.marko",
    "content": "<input type=\"checkbox\" ...input />"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-values-spread/template.marko",
    "content": "<let/checkedValue = [\"a\", \"b\"]/>\n<checkbox checkedValue:=checkedValue value=\"a\"/>\n<checkbox checkedValue:=checkedValue value=\"b\"/>\n<checkbox checkedValue:=checkedValue value=\"c\"/>\n<span>${checkedValue}</span>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-checked-values-spread/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"input\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-details-open/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"r\",\n      \"$$open\": \"a\",\n      \"$$openChange\": \"o\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-details-open/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<details>\n  <summary />\n</details>\n<span>\n  false\n</span>\n```\n\n\n# Render\n```js\nconst details = container.querySelector(\"details\");\ndetails.open = !details.open;\n```\n```html\n<details\n  open=\"\"\n>\n  <summary />\n</details>\n<span>\n  true\n</span>\n```\n\n\n# Render\n```js\nconst details = container.querySelector(\"details\");\ndetails.open = !details.open;\n```\n```html\n<details>\n  <summary />\n</details>\n<span>\n  false\n</span>\n```\n\n\n# Render\n```js\nconst details = container.querySelector(\"details\");\ndetails.open = !details.open;\n```\n```html\n<details\n  open=\"\"\n>\n  <summary />\n</details>\n<span>\n  true\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-details-open/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<details>\n  <summary />\n</details>\n<span>\n  false\n</span>\n```\n\n# Mutations\n```\nINSERT details, span\n```\n\n# Render\n```js\nconst details = container.querySelector(\"details\");\ndetails.open = !details.open;\n```\n```html\n<details\n  open=\"\"\n>\n  <summary />\n</details>\n<span>\n  true\n</span>\n```\n\n# Mutations\n```\nUPDATE details[open] null => \"\"\nUPDATE details[open] \"\" => \"\"\nUPDATE details[open] null => \"\"\nUPDATE span/#text \"false\" => \"true\"\n```\n\n# Render\n```js\nconst details = container.querySelector(\"details\");\ndetails.open = !details.open;\n```\n```html\n<details>\n  <summary />\n</details>\n<span>\n  false\n</span>\n```\n\n# Mutations\n```\nUPDATE details[open] \"\" => null\nUPDATE details[open] null => null\nUPDATE details[open] \"\" => null\nUPDATE span/#text \"true\" => \"false\"\n```\n\n# Render\n```js\nconst details = container.querySelector(\"details\");\ndetails.open = !details.open;\n```\n```html\n<details\n  open=\"\"\n>\n  <summary />\n</details>\n<span>\n  true\n</span>\n```\n\n# Mutations\n```\nUPDATE details[open] null => \"\"\nUPDATE details[open] \"\" => \"\"\nUPDATE details[open] null => \"\"\nUPDATE span/#text \"false\" => \"true\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-details-open/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 194 (min) 121 (brotli)\nconst $open = _._let(2, ($scope) => {\n  (_._attr_details_open($scope, \"a\", $scope.c, $openChange($scope)),\n    _._text($scope.b, String($scope.c)));\n});\nfunction $openChange($scope) {\n  return (_new_open) => {\n    $open($scope, _new_open);\n  };\n}\n(_._script(\"a1\", ($scope) => _._attr_details_open_script($scope, \"a\")),\n  _._resume(\"a0\", $openChange),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-details-open/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<details><summary></summary></details><span> </span>\";\nexport const $walks = /* get, over(1), next(1), get, out(1) */\" bD l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $open = /* @__PURE__ */_._let(\"open/2\", $scope => {\n  _._attr_details_open($scope, \"#details/0\", $scope.open, $openChange($scope));\n  _._text($scope[\"#text/1\"], String($scope.open));\n});\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => _._attr_details_open_script($scope, \"#details/0\"));\nexport function $setup($scope) {\n  $open($scope, false);\n  $setup__script($scope);\n}\nfunction $openChange($scope) {\n  return _new_open => {\n    $open($scope, _new_open);\n  };\n}\n_._resume(\"__tests__/template.marko_0/openChange\", $openChange);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-details-open/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let open = false;\n  _._html(`<details${_._attr_details_open($scope0_id, \"#details/0\", open, _._resume(_new_open => {\n    open = _new_open;\n  }, \"__tests__/template.marko_0/openChange\", $scope0_id))}><summary></summary></details>${_._el_resume($scope0_id, \"#details/0\")}<span>${_._escape(String(open))}${_._el_resume($scope0_id, \"#text/1\")}</span>`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-details-open/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<details>\n  <summary />\n</details>\n<span>\n  false\n</span>\n```\n\n\n# Render\n```js\nconst details = container.querySelector(\"details\");\ndetails.open = !details.open;\n```\n```html\n<details\n  open=\"\"\n>\n  <summary />\n</details>\n<span>\n  true\n</span>\n```\n\n\n# Render\n```js\nconst details = container.querySelector(\"details\");\ndetails.open = !details.open;\n```\n```html\n<details>\n  <summary />\n</details>\n<span>\n  false\n</span>\n```\n\n\n# Render\n```js\nconst details = container.querySelector(\"details\");\ndetails.open = !details.open;\n```\n```html\n<details\n  open=\"\"\n>\n  <summary />\n</details>\n<span>\n  true\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-details-open/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <details>\n      <summary />\n    </details>\n    <!--M_*1 #details/0-->\n    <span>\n      false\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#details/0\": 4\n        }], _.a[\"ControlledHandler:#details/0\"] = _._[\n          \"__tests__/template.marko_0/openChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\nconst details = container.querySelector(\"details\");\ndetails.open = !details.open;\n```\n```html\n<html>\n  <head />\n  <body>\n    <details\n      open=\"\"\n    >\n      <summary />\n    </details>\n    <!--M_*1 #details/0-->\n    <span>\n      true\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#details/0\": 4\n        }], _.a[\"ControlledHandler:#details/0\"] = _._[\n          \"__tests__/template.marko_0/openChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/details[open] null => \"\"\nUPDATE html/body/details[open] \"\" => \"\"\nUPDATE html/body/details[open] null => \"\"\nUPDATE html/body/span/#text \"false\" => \"true\"\n```\n\n# Render\n```js\nconst details = container.querySelector(\"details\");\ndetails.open = !details.open;\n```\n```html\n<html>\n  <head />\n  <body>\n    <details>\n      <summary />\n    </details>\n    <!--M_*1 #details/0-->\n    <span>\n      false\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#details/0\": 4\n        }], _.a[\"ControlledHandler:#details/0\"] = _._[\n          \"__tests__/template.marko_0/openChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/details[open] \"\" => null\nUPDATE html/body/details[open] null => null\nUPDATE html/body/details[open] \"\" => null\nUPDATE html/body/span/#text \"true\" => \"false\"\n```\n\n# Render\n```js\nconst details = container.querySelector(\"details\");\ndetails.open = !details.open;\n```\n```html\n<html>\n  <head />\n  <body>\n    <details\n      open=\"\"\n    >\n      <summary />\n    </details>\n    <!--M_*1 #details/0-->\n    <span>\n      true\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#details/0\": 4\n        }], _.a[\"ControlledHandler:#details/0\"] = _._[\n          \"__tests__/template.marko_0/openChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/details[open] null => \"\"\nUPDATE html/body/details[open] \"\" => \"\"\nUPDATE html/body/details[open] null => \"\"\nUPDATE html/body/span/#text \"false\" => \"true\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-details-open/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<details>\n  <summary />\n</details>\n<span>\n  false\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-details-open/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <details><summary></summary></details><!--M_*1 #details/0--><span>false<!--M_*1 #text/1--></span><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={\"ControlledType:#details/0\":4}],_.a[\"ControlledHandler:#details/0\"]=_._[\"__tests__/template.marko_0/openChange\"](_.a),_.b),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <details>\n      <summary />\n    </details>\n    <!--M_*1 #details/0-->\n    <span>\n      false\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#details/0\": 4\n        }], _.a[\"ControlledHandler:#details/0\"] = _._[\n          \"__tests__/template.marko_0/openChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/details\nINSERT html/body/details/summary\nINSERT html/body/#comment\nINSERT html/body/span\nINSERT html/body/span/#text\nINSERT html/body/span/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-details-open/template.marko",
    "content": "<let/open = false/>\n<details open:=open><summary/></details>\n<span>${String(open)}</span>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-details-open/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction toggle(container: Element) {\n  const details = container.querySelector<HTMLDetailsElement>(\"details\")!;\n  details.open = !details.open;\n}\n\nexport const config: TestConfig = {\n  steps: [{}, toggle, toggle, toggle],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-dialog-open/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"r\",\n      \"$$open\": \"o\",\n      \"$$openChange\": \"a\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-dialog-open/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<dialog\n  open=\"\"\n/>\n<span>\n  true\n</span>\n```\n\n\n# Render\n```js\nconst dialog = container.querySelector(\"dialog\");\ndialog.open = !dialog.open;\n```\n```html\n<dialog />\n<span>\n  false\n</span>\n```\n\n\n# Render\n```js\nconst dialog = container.querySelector(\"dialog\");\ndialog.open = !dialog.open;\n```\n```html\n<dialog\n  open=\"\"\n/>\n<span>\n  true\n</span>\n```\n\n\n# Render\n```js\nconst dialog = container.querySelector(\"dialog\");\ndialog.open = !dialog.open;\n```\n```html\n<dialog />\n<span>\n  false\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-dialog-open/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<dialog\n  open=\"\"\n/>\n<span>\n  true\n</span>\n```\n\n# Mutations\n```\nINSERT dialog, span\n```\n\n# Render\n```js\nconst dialog = container.querySelector(\"dialog\");\ndialog.open = !dialog.open;\n```\n```html\n<dialog />\n<span>\n  false\n</span>\n```\n\n# Mutations\n```\nUPDATE dialog[open] \"\" => null\nUPDATE dialog[open] null => null\nUPDATE dialog[open] \"\" => null\nUPDATE span/#text \"true\" => \"false\"\n```\n\n# Render\n```js\nconst dialog = container.querySelector(\"dialog\");\ndialog.open = !dialog.open;\n```\n```html\n<dialog\n  open=\"\"\n/>\n<span>\n  true\n</span>\n```\n\n# Mutations\n```\nUPDATE dialog[open] null => \"\"\nUPDATE dialog[open] \"\" => \"\"\nUPDATE dialog[open] null => \"\"\nUPDATE span/#text \"false\" => \"true\"\n```\n\n# Render\n```js\nconst dialog = container.querySelector(\"dialog\");\ndialog.open = !dialog.open;\n```\n```html\n<dialog />\n<span>\n  false\n</span>\n```\n\n# Mutations\n```\nUPDATE dialog[open] \"\" => null\nUPDATE dialog[open] null => null\nUPDATE dialog[open] \"\" => null\nUPDATE span/#text \"true\" => \"false\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-dialog-open/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 192 (min) 130 (brotli)\nconst $open = _._let(2, ($scope) => {\n  (_._attr_dialog_open($scope, \"a\", $scope.c, $openChange($scope)),\n    _._text($scope.b, String($scope.c)));\n});\nfunction $openChange($scope) {\n  return (_new_open) => {\n    $open($scope, _new_open);\n  };\n}\n(_._script(\"a1\", ($scope) => _._attr_dialog_open_script($scope, \"a\")),\n  _._resume(\"a0\", $openChange),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-dialog-open/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<dialog></dialog><span> </span>\";\nexport const $walks = /* get, over(1), next(1), get, out(1) */\" bD l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $open = /* @__PURE__ */_._let(\"open/2\", $scope => {\n  _._attr_dialog_open($scope, \"#dialog/0\", $scope.open, $openChange($scope));\n  _._text($scope[\"#text/1\"], String($scope.open));\n});\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => _._attr_dialog_open_script($scope, \"#dialog/0\"));\nexport function $setup($scope) {\n  $open($scope, true);\n  $setup__script($scope);\n}\nfunction $openChange($scope) {\n  return _new_open => {\n    $open($scope, _new_open);\n  };\n}\n_._resume(\"__tests__/template.marko_0/openChange\", $openChange);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-dialog-open/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let open = true;\n  _._html(`<dialog${_._attr_dialog_open($scope0_id, \"#dialog/0\", open, _._resume(_new_open => {\n    open = _new_open;\n  }, \"__tests__/template.marko_0/openChange\", $scope0_id))}></dialog>${_._el_resume($scope0_id, \"#dialog/0\")}<span>${_._escape(String(open))}${_._el_resume($scope0_id, \"#text/1\")}</span>`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-dialog-open/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<dialog\n  open=\"\"\n/>\n<span>\n  true\n</span>\n```\n\n\n# Render\n```js\nconst dialog = container.querySelector(\"dialog\");\ndialog.open = !dialog.open;\n```\n```html\n<dialog />\n<span>\n  false\n</span>\n```\n\n\n# Render\n```js\nconst dialog = container.querySelector(\"dialog\");\ndialog.open = !dialog.open;\n```\n```html\n<dialog\n  open=\"\"\n/>\n<span>\n  true\n</span>\n```\n\n\n# Render\n```js\nconst dialog = container.querySelector(\"dialog\");\ndialog.open = !dialog.open;\n```\n```html\n<dialog />\n<span>\n  false\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-dialog-open/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <dialog\n      open=\"\"\n    />\n    <!--M_*1 #dialog/0-->\n    <span>\n      true\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#dialog/0\": 4,\n          \"ControlledValue:#dialog/0\": !0\n        }], _.a[\"ControlledHandler:#dialog/0\"] = _._[\n          \"__tests__/template.marko_0/openChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\nconst dialog = container.querySelector(\"dialog\");\ndialog.open = !dialog.open;\n```\n```html\n<html>\n  <head />\n  <body>\n    <dialog />\n    <!--M_*1 #dialog/0-->\n    <span>\n      false\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#dialog/0\": 4,\n          \"ControlledValue:#dialog/0\": !0\n        }], _.a[\"ControlledHandler:#dialog/0\"] = _._[\n          \"__tests__/template.marko_0/openChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/dialog[open] \"\" => null\nUPDATE html/body/dialog[open] null => null\nUPDATE html/body/dialog[open] \"\" => null\nUPDATE html/body/span/#text \"true\" => \"false\"\n```\n\n# Render\n```js\nconst dialog = container.querySelector(\"dialog\");\ndialog.open = !dialog.open;\n```\n```html\n<html>\n  <head />\n  <body>\n    <dialog\n      open=\"\"\n    />\n    <!--M_*1 #dialog/0-->\n    <span>\n      true\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#dialog/0\": 4,\n          \"ControlledValue:#dialog/0\": !0\n        }], _.a[\"ControlledHandler:#dialog/0\"] = _._[\n          \"__tests__/template.marko_0/openChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/dialog[open] null => \"\"\nUPDATE html/body/dialog[open] \"\" => \"\"\nUPDATE html/body/dialog[open] null => \"\"\nUPDATE html/body/span/#text \"false\" => \"true\"\n```\n\n# Render\n```js\nconst dialog = container.querySelector(\"dialog\");\ndialog.open = !dialog.open;\n```\n```html\n<html>\n  <head />\n  <body>\n    <dialog />\n    <!--M_*1 #dialog/0-->\n    <span>\n      false\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#dialog/0\": 4,\n          \"ControlledValue:#dialog/0\": !0\n        }], _.a[\"ControlledHandler:#dialog/0\"] = _._[\n          \"__tests__/template.marko_0/openChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/dialog[open] \"\" => null\nUPDATE html/body/dialog[open] null => null\nUPDATE html/body/dialog[open] \"\" => null\nUPDATE html/body/span/#text \"true\" => \"false\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-dialog-open/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<dialog\n  open=\"\"\n/>\n<span>\n  true\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-dialog-open/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <dialog open></dialog><!--M_*1 #dialog/0--><span>true<!--M_*1 #text/1--></span><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={\"ControlledType:#dialog/0\":4,\"ControlledValue:#dialog/0\":!0}],_.a[\"ControlledHandler:#dialog/0\"]=_._[\"__tests__/template.marko_0/openChange\"](_.a),_.b),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <dialog\n      open=\"\"\n    />\n    <!--M_*1 #dialog/0-->\n    <span>\n      true\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#dialog/0\": 4,\n          \"ControlledValue:#dialog/0\": !0\n        }], _.a[\"ControlledHandler:#dialog/0\"] = _._[\n          \"__tests__/template.marko_0/openChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/dialog\nINSERT html/body/#comment\nINSERT html/body/span\nINSERT html/body/span/#text\nINSERT html/body/span/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-dialog-open/template.marko",
    "content": "<let/open = true/>\n<dialog open:=open/>\n<span>${String(open)}</span>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-dialog-open/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction toggle(container: Element) {\n  const dialog = container.querySelector<HTMLDialogElement>(\"dialog\")!;\n  dialog.open = !dialog.open;\n}\n\nexport const config: TestConfig = {\n  steps: [{}, toggle, toggle, toggle],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-dynamic-checkbox-checked-value/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"_\",\n      \"$$if_content__checkedValue__OR__checkedValueChange\": \"e\",\n      \"$$if_content__checkedValue\": \"c\",\n      \"$$if_content__setup__script\": \"r\",\n      \"$$if_content__setup\": \"a\",\n      \"$$if_content__$checkedValueChange\": \"i\",\n      \"$$if\": \"u\",\n      \"$$show__script\": \"o\",\n      \"$$show\": \"n\",\n      \"$$checkedValue__OR__checkedValueChange\": \"p\",\n      \"$$checkedValue\": \"s\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-dynamic-checkbox-checked-value/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  a\n</span>\n<button>\n  Toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(`input[value=b]`).click();\n```\n```html\n<input\n  default-checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  b\n</span>\n<button>\n  Toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<input\n  default-checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  b\n</span>\n<button>\n  Toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<input\n  default-checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  b\n</span>\n<button>\n  Toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(`input[value=a]`).click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  default-checked=\"\"\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  a\n</span>\n<button>\n  Toggle\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-dynamic-checkbox-checked-value/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  a\n</span>\n<button>\n  Toggle\n</button>\n```\n\n# Mutations\n```\nINSERT input0, input1, input2, span, button\n```\n\n# Render\n```js\ncontainer.querySelector(`input[value=b]`).click();\n```\n```html\n<input\n  default-checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  b\n</span>\n<button>\n  Toggle\n</button>\n```\n\n# Mutations\n```\nUPDATE span/#text \"a\" => \"b\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<input\n  default-checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  b\n</span>\n<button>\n  Toggle\n</button>\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE input after #text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<input\n  default-checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  b\n</span>\n<button>\n  Toggle\n</button>\n```\n\n# Mutations\n```\nINSERT input1\nREMOVE #text after input1\nUPDATE input1[value] null => \"b\"\nUPDATE input1[checked] null => \"\"\n```\n\n# Render\n```js\ncontainer.querySelector(`input[value=a]`).click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  default-checked=\"\"\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  a\n</span>\n<button>\n  Toggle\n</button>\n```\n\n# Mutations\n```\nUPDATE span/#text \"b\" => \"a\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-dynamic-checkbox-checked-value/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 647 (min) 267 (brotli)\nconst $if_content__checkedValue__OR__checkedValueChange = _._or(1, ($scope) =>\n    _._attr_input_checkedValue($scope, \"a\", $scope._.g, $scope._.h, \"b\"),\n  ),\n  $if_content__checkedValue = _._if_closure(\n    1,\n    0,\n    $if_content__checkedValue__OR__checkedValueChange,\n  ),\n  $if_content__setup__script = _._script(\"a1\", ($scope) =>\n    _._attr_input_checkedValue_script($scope, \"a\"),\n  ),\n  $if_content__setup = ($scope) => {\n    ($if_content__checkedValue._($scope),\n      $if_content__$checkedValueChange._($scope),\n      $if_content__setup__script($scope));\n  },\n  $if_content__$checkedValueChange = _._if_closure(\n    1,\n    0,\n    $if_content__checkedValue__OR__checkedValueChange,\n  ),\n  $if = _._if(1, \"<input type=radio>\", \" b\", $if_content__setup),\n  $show__script = _._script(\"a2\", ($scope) =>\n    _._on($scope.e, \"click\", function () {\n      $show($scope, !$scope.f);\n    }),\n  ),\n  $show = _._let(5, ($scope) => {\n    ($if($scope, $scope.f ? 0 : 1), $show__script($scope));\n  }),\n  $checkedValue__OR__checkedValueChange = _._or(8, ($scope) => {\n    (_._attr_input_checkedValue($scope, \"a\", $scope.g, $scope.h, \"a\"),\n      _._attr_input_checkedValue($scope, \"c\", $scope.g, $scope.h, \"c\"));\n  }),\n  $checkedValue = _._let(6, ($scope) => {\n    (_._text($scope.d, $scope.g),\n      $checkedValue__OR__checkedValueChange($scope),\n      $if_content__checkedValue($scope));\n  });\n(_._script(\"a3\", ($scope) => {\n  (_._attr_input_checkedValue_script($scope, \"a\"),\n    _._attr_input_checkedValue_script($scope, \"c\"));\n}),\n  _._resume(\"a0\", function ($scope) {\n    return (_new_checkedValue) => {\n      $checkedValue($scope, _new_checkedValue);\n    };\n  }),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-dynamic-checkbox-checked-value/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<input type=radio><!><input type=radio><span> </span><button>Toggle</button>\";\nexport const $walks = /* get, over(1), replace, over(1), get, over(1), next(1), get, out(1), get, over(1) */\" b%b bD l b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content__checkedValue__OR__checkedValueChange = /* @__PURE__ */_._or(1, $scope => _._attr_input_checkedValue($scope, \"#input/0\", $scope._.checkedValue, $scope._.$checkedValueChange, \"b\"));\nconst $if_content__checkedValue = /* @__PURE__ */_._if_closure(\"#text/1\", 0, $if_content__checkedValue__OR__checkedValueChange);\nconst $if_content__setup__script = _._script(\"__tests__/template.marko_1\", $scope => _._attr_input_checkedValue_script($scope, \"#input/0\"));\nconst $if_content__setup = $scope => {\n  $if_content__checkedValue._($scope);\n  $if_content__$checkedValueChange._($scope);\n  $if_content__setup__script($scope);\n};\nconst $if_content__$checkedValueChange = /* @__PURE__ */_._if_closure(\"#text/1\", 0, $if_content__checkedValue__OR__checkedValueChange);\nconst $if = /* @__PURE__ */_._if(\"#text/1\", \"<input type=radio>\", /* get, over(1) */\" b\", $if_content__setup);\nconst $show__script = _._script(\"__tests__/template.marko_0_show\", $scope => _._on($scope[\"#button/4\"], \"click\", function () {\n  $show($scope, !$scope.show);\n}));\nconst $show = /* @__PURE__ */_._let(\"show/5\", $scope => {\n  $if($scope, $scope.show ? 0 : 1);\n  $show__script($scope);\n});\nconst $checkedValue__OR__checkedValueChange = /* @__PURE__ */_._or(8, $scope => {\n  _._attr_input_checkedValue($scope, \"#input/0\", $scope.checkedValue, $scope.$checkedValueChange, \"a\");\n  _._attr_input_checkedValue($scope, \"#input/2\", $scope.checkedValue, $scope.$checkedValueChange, \"c\");\n});\nconst $checkedValue = /* @__PURE__ */_._let(\"checkedValue/6\", $scope => {\n  _._text($scope[\"#text/3\"], $scope.checkedValue);\n  $checkedValue__OR__checkedValueChange($scope);\n  $if_content__checkedValue($scope);\n});\nconst $checkedValueChange3 = /* @__PURE__ */_._const(\"$checkedValueChange\", $checkedValue__OR__checkedValueChange);\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => {\n  _._attr_input_checkedValue_script($scope, \"#input/0\");\n  _._attr_input_checkedValue_script($scope, \"#input/2\");\n});\nexport function $setup($scope) {\n  $show($scope, true);\n  $checkedValue($scope, \"a\");\n  $checkedValueChange3($scope, $checkedValueChange2($scope));\n  $setup__script($scope);\n}\nfunction $checkedValueChange2($scope) {\n  return _new_checkedValue => {\n    $checkedValue($scope, _new_checkedValue);\n  };\n}\n_._resume(\"__tests__/template.marko_0/checkedValueChange2\", $checkedValueChange2);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-dynamic-checkbox-checked-value/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let show = true;\n  let checkedValue = \"a\";\n  const $checkedValueChange = _._resume(_new_checkedValue => {\n    checkedValue = _new_checkedValue;\n  }, \"__tests__/template.marko_0/checkedValueChange2\", $scope0_id);\n  _._html(`<input${_._attr_input_checkedValue($scope0_id, \"#input/0\", checkedValue, $checkedValueChange, \"a\")} type=radio>${_._el_resume($scope0_id, \"#input/0\")}`);\n  _._if(() => {\n    if (show) {\n      const $scope1_id = _._scope_id();\n      _._html(`<input${_._attr_input_checkedValue($scope1_id, \"#input/0\", checkedValue, $checkedValueChange, \"b\")} type=radio>${_._el_resume($scope1_id, \"#input/0\")}`);\n      _._script($scope1_id, \"__tests__/template.marko_1\");\n      _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"5:2\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/1\", 1, /* show */1, /* show */1, 0, 1);\n  _._html(`<input${_._attr_input_checkedValue($scope0_id, \"#input/2\", checkedValue, $checkedValueChange, \"c\")} type=radio>${_._el_resume($scope0_id, \"#input/2\")}<span>${_._escape(checkedValue)}${_._el_resume($scope0_id, \"#text/3\")}</span><button>Toggle</button>${_._el_resume($scope0_id, \"#button/4\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_show\");\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {\n    show,\n    checkedValue,\n    $checkedValueChange\n  }, \"__tests__/template.marko\", 0, {\n    show: \"1:6\",\n    checkedValue: \"2:6\",\n    $checkedValueChange: 0\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-dynamic-checkbox-checked-value/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  a\n</span>\n<button>\n  Toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(`input[value=b]`).click();\n```\n```html\n<input\n  default-checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  b\n</span>\n<button>\n  Toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<input\n  default-checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  b\n</span>\n<button>\n  Toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<input\n  default-checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  b\n</span>\n<button>\n  Toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(`input[value=a]`).click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  default-checked=\"\"\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  a\n</span>\n<button>\n  Toggle\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-dynamic-checkbox-checked-value/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <input\n      checked=\"\"\n      type=\"radio\"\n      value=\"a\"\n    />\n    <!--M_*1 #input/0-->\n    <input\n      type=\"radio\"\n      value=\"b\"\n    />\n    <!--M_*2 #input/0-->\n    <!--M_|1 #text/1 2-->\n    <input\n      type=\"radio\"\n      value=\"c\"\n    />\n    <!--M_*1 #input/2-->\n    <span>\n      a\n      <!--M_*1 #text/3-->\n    </span>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"ControlledType:#input/0\": 1,\n          \"ControlledType:#input/2\": 1,\n          show: !0,\n          checkedValue: \"a\"\n        }, _.b = {\n          \"ControlledType:#input/0\": 1,\n          _: _.a\n        }], _.a[\"ControlledHandler:#input/0\"] = _.a[\n          \"ControlledHandler:#input/2\"] = _.a.$checkedValueChange = _.b[\n          \"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_0/checkedValueChange2\"\n          ](_.a), _.c),\n        \"__tests__/template.marko_1 2 __tests__/template.marko_0_show 1 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(`input[value=b]`).click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      default-checked=\"\"\n      type=\"radio\"\n      value=\"a\"\n    />\n    <!--M_*1 #input/0-->\n    <input\n      checked=\"\"\n      type=\"radio\"\n      value=\"b\"\n    />\n    <!--M_*2 #input/0-->\n    <!--M_|1 #text/1 2-->\n    <input\n      type=\"radio\"\n      value=\"c\"\n    />\n    <!--M_*1 #input/2-->\n    <span>\n      b\n      <!--M_*1 #text/3-->\n    </span>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"ControlledType:#input/0\": 1,\n          \"ControlledType:#input/2\": 1,\n          show: !0,\n          checkedValue: \"a\"\n        }, _.b = {\n          \"ControlledType:#input/0\": 1,\n          _: _.a\n        }], _.a[\"ControlledHandler:#input/0\"] = _.a[\n          \"ControlledHandler:#input/2\"] = _.a.$checkedValueChange = _.b[\n          \"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_0/checkedValueChange2\"\n          ](_.a), _.c),\n        \"__tests__/template.marko_1 2 __tests__/template.marko_0_show 1 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"a\" => \"b\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      default-checked=\"\"\n      type=\"radio\"\n      value=\"a\"\n    />\n    <!--M_*1 #input/0-->\n    <!--M_|1 #text/1 2-->\n    <!--M_*2 #input/0-->\n    <input\n      type=\"radio\"\n      value=\"c\"\n    />\n    <!--M_*1 #input/2-->\n    <span>\n      b\n      <!--M_*1 #text/3-->\n    </span>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"ControlledType:#input/0\": 1,\n          \"ControlledType:#input/2\": 1,\n          show: !0,\n          checkedValue: \"a\"\n        }, _.b = {\n          \"ControlledType:#input/0\": 1,\n          _: _.a\n        }], _.a[\"ControlledHandler:#input/0\"] = _.a[\n          \"ControlledHandler:#input/2\"] = _.a.$checkedValueChange = _.b[\n          \"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_0/checkedValueChange2\"\n          ](_.a), _.c),\n        \"__tests__/template.marko_1 2 __tests__/template.marko_0_show 1 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/#comment1 after html/body/#comment2\nINSERT html/body/#comment1\nREMOVE input after html/body/#comment1\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      default-checked=\"\"\n      type=\"radio\"\n      value=\"a\"\n    />\n    <!--M_*1 #input/0-->\n    <input\n      checked=\"\"\n      type=\"radio\"\n      value=\"b\"\n    />\n    <!--M_*2 #input/0-->\n    <input\n      type=\"radio\"\n      value=\"c\"\n    />\n    <!--M_*1 #input/2-->\n    <span>\n      b\n      <!--M_*1 #text/3-->\n    </span>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"ControlledType:#input/0\": 1,\n          \"ControlledType:#input/2\": 1,\n          show: !0,\n          checkedValue: \"a\"\n        }, _.b = {\n          \"ControlledType:#input/0\": 1,\n          _: _.a\n        }], _.a[\"ControlledHandler:#input/0\"] = _.a[\n          \"ControlledHandler:#input/2\"] = _.a.$checkedValueChange = _.b[\n          \"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_0/checkedValueChange2\"\n          ](_.a), _.c),\n        \"__tests__/template.marko_1 2 __tests__/template.marko_0_show 1 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/input1\nREMOVE #comment after html/body/input1\nUPDATE html/body/input1[value] null => \"b\"\nUPDATE html/body/input1[checked] null => \"\"\n```\n\n# Render\n```js\ncontainer.querySelector(`input[value=a]`).click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      checked=\"\"\n      type=\"radio\"\n      value=\"a\"\n    />\n    <!--M_*1 #input/0-->\n    <input\n      default-checked=\"\"\n      type=\"radio\"\n      value=\"b\"\n    />\n    <!--M_*2 #input/0-->\n    <input\n      type=\"radio\"\n      value=\"c\"\n    />\n    <!--M_*1 #input/2-->\n    <span>\n      a\n      <!--M_*1 #text/3-->\n    </span>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"ControlledType:#input/0\": 1,\n          \"ControlledType:#input/2\": 1,\n          show: !0,\n          checkedValue: \"a\"\n        }, _.b = {\n          \"ControlledType:#input/0\": 1,\n          _: _.a\n        }], _.a[\"ControlledHandler:#input/0\"] = _.a[\n          \"ControlledHandler:#input/2\"] = _.a.$checkedValueChange = _.b[\n          \"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_0/checkedValueChange2\"\n          ](_.a), _.c),\n        \"__tests__/template.marko_1 2 __tests__/template.marko_0_show 1 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"b\" => \"a\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-dynamic-checkbox-checked-value/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"c\"\n/>\n<span>\n  a\n</span>\n<button>\n  Toggle\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-dynamic-checkbox-checked-value/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <input value=a checked type=radio><!--M_*1 #input/0--><input value=b type=radio><!--M_*2 #input/0--><!--M_|1 #text/1 2--><input value=c type=radio><!--M_*1 #input/2--><span>a<!--M_*1 #text/3--></span><button>Toggle</button><!--M_*1 #button/4--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.a={\"ControlledType:#input/0\":1,\"ControlledType:#input/2\":1,show:!0,checkedValue:\"a\"},_.b={\"ControlledType:#input/0\":1,_:_.a}],_.a[\"ControlledHandler:#input/0\"]=_.a[\"ControlledHandler:#input/2\"]=_.a.$checkedValueChange=_.b[\"ControlledHandler:#input/0\"]=_._[\"__tests__/template.marko_0/checkedValueChange2\"](_.a),_.c),\"__tests__/template.marko_1 2 __tests__/template.marko_0_show 1 __tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <input\n      checked=\"\"\n      type=\"radio\"\n      value=\"a\"\n    />\n    <!--M_*1 #input/0-->\n    <input\n      type=\"radio\"\n      value=\"b\"\n    />\n    <!--M_*2 #input/0-->\n    <!--M_|1 #text/1 2-->\n    <input\n      type=\"radio\"\n      value=\"c\"\n    />\n    <!--M_*1 #input/2-->\n    <span>\n      a\n      <!--M_*1 #text/3-->\n    </span>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"ControlledType:#input/0\": 1,\n          \"ControlledType:#input/2\": 1,\n          show: !0,\n          checkedValue: \"a\"\n        }, _.b = {\n          \"ControlledType:#input/0\": 1,\n          _: _.a\n        }], _.a[\"ControlledHandler:#input/0\"] = _.a[\n          \"ControlledHandler:#input/2\"] = _.a.$checkedValueChange = _.b[\n          \"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_0/checkedValueChange2\"\n          ](_.a), _.c),\n        \"__tests__/template.marko_1 2 __tests__/template.marko_0_show 1 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/input0\nINSERT html/body/#comment0\nINSERT html/body/input1\nINSERT html/body/#comment1\nINSERT html/body/#comment2\nINSERT html/body/input2\nINSERT html/body/#comment3\nINSERT html/body/span\nINSERT html/body/span/#text\nINSERT html/body/span/#comment\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment4\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-dynamic-checkbox-checked-value/template.marko",
    "content": "<let/show=true>\n<let/checkedValue = \"a\"/>\n\n<input type=\"radio\" checkedValue:=checkedValue value=\"a\"/>\n<if=show>\n  <input type=\"radio\" checkedValue:=checkedValue value=\"b\"/>\n</>\n<input type=\"radio\" checkedValue:=checkedValue value=\"c\"/>\n<span>${checkedValue}</span>\n<button onClick(){ show = !show }>Toggle</>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-dynamic-checkbox-checked-value/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction clickA(container: Element) {\n  container.querySelector<HTMLInputElement>(`input[value=a]`)!.click();\n}\n\nfunction clickB(container: Element) {\n  container.querySelector<HTMLInputElement>(`input[value=b]`)!.click();\n}\n\nfunction toggleB(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, clickB, toggleB, toggleB, clickA],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-number-member-modifier-value/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"r\",\n      \"$$value\": \"a\",\n      \"$$valueChange\": \"m\",\n      \"$$input_value__OR__input_valueChange\": \"e\",\n      \"$$input_value\": \"o\",\n      \"$$valueChange$1\": \"_\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-number-member-modifier-value/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  type=\"number\"\n  value=\"0\"\n/>\n<span>\n  0 number\n</span>\n```\n\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\nconst window = input.ownerDocument.defaultView;\ninput.value = value;\ninput.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<input\n  default-value=\"0\"\n  type=\"number\"\n  value=\"1\"\n/>\n<span>\n  1 number\n</span>\n```\n\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\nconst window = input.ownerDocument.defaultView;\ninput.value = value;\ninput.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<input\n  default-value=\"0\"\n  type=\"number\"\n  value=\"10\"\n/>\n<span>\n  10 number\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-number-member-modifier-value/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<input\n  type=\"number\"\n  value=\"0\"\n/>\n<span>\n  0 number\n</span>\n```\n\n# Mutations\n```\nINSERT input, span\n```\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\nconst window = input.ownerDocument.defaultView;\ninput.value = value;\ninput.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<input\n  default-value=\"0\"\n  type=\"number\"\n  value=\"1\"\n/>\n<span>\n  1 number\n</span>\n```\n\n# Mutations\n```\nUPDATE span/#text0 \"0\" => \"1\"\n```\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\nconst window = input.ownerDocument.defaultView;\ninput.value = value;\ninput.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<input\n  default-value=\"0\"\n  type=\"number\"\n  value=\"10\"\n/>\n<span>\n  10 number\n</span>\n```\n\n# Mutations\n```\nUPDATE span/#text0 \"1\" => \"10\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-number-member-modifier-value/__snapshots__/dom.expected/tags/custom-input.js",
    "content": "export const $template = \"<input type=number>\";\nexport const $walks = /* get, over(1) */\" b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $input_value__OR__input_valueChange = /* @__PURE__ */_._or(5, $scope => _._attr_input_value($scope, \"#input/0\", $scope.input_value, $scope.input_valueChange && $valueChange($scope)));\nexport const $input_value = /* @__PURE__ */_._const(\"input_value\", $input_value__OR__input_valueChange);\nexport const $input_valueChange = /* @__PURE__ */_._const(\"input_valueChange\", $input_value__OR__input_valueChange);\nconst $setup__script = _._script(\"__tests__/tags/custom-input.marko_0\", $scope => _._attr_input_value_script($scope, \"#input/0\"));\nexport const $setup = $setup__script;\nexport const $input = ($scope, input) => {\n  $input_value($scope, input.value);\n  $input_valueChange($scope, input.valueChange);\n};\nfunction $valueChange($scope) {\n  return $next => {\n    $scope.input_valueChange(parseInt($next));\n  };\n}\n_._resume(\"__tests__/tags/custom-input.marko_0/valueChange\", $valueChange);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/custom-input.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-number-member-modifier-value/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 318 (min) 179 (brotli)\nconst $input_value__OR__input_valueChange = _._or(5, ($scope) =>\n    _._attr_input_value(\n      $scope,\n      \"a\",\n      $scope.d,\n      $scope.e && $valueChange$1($scope),\n    ),\n  ),\n  $input_value = _._const(3, $input_value__OR__input_valueChange);\nfunction $valueChange$1($scope) {\n  return ($next) => {\n    $scope.e(parseInt($next));\n  };\n}\n(_._script(\"a1\", ($scope) => _._attr_input_value_script($scope, \"a\")),\n  _._resume(\"a0\", $valueChange$1));\nconst $value = _._let(3, ($scope) => {\n  ($input_value($scope.a, $scope.d),\n    _._text($scope.b, $scope.d),\n    _._text($scope.c, typeof $scope.d));\n});\n(_._resume(\"b0\", function ($scope) {\n  return (_new_value) => {\n    $value($scope, _new_value);\n  };\n}),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-number-member-modifier-value/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `${_customInput_template}<span><!> <!></span>`;\nexport const $walks = /* <custom-input>, next(1), replace, over(2), replace, out(1) */`/${_customInput_walks}&D%c%l`;\nimport { $setup as _customInput, $input_value as _customInput_input_value, $input_valueChange as _customInput_input_valueChange, $template as _customInput_template, $walks as _customInput_walks } from \"./tags/custom-input.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $value = /* @__PURE__ */_._let(\"value/3\", $scope => {\n  _customInput_input_value($scope[\"#childScope/0\"], $scope.value);\n  _._text($scope[\"#text/1\"], $scope.value);\n  _._text($scope[\"#text/2\"], typeof $scope.value);\n});\nexport function $setup($scope) {\n  _customInput($scope[\"#childScope/0\"]);\n  _customInput_input_valueChange($scope[\"#childScope/0\"], $valueChange($scope));\n  $value($scope, 0);\n}\nfunction $valueChange($scope) {\n  return _new_value => {\n    $value($scope, _new_value);\n  };\n}\n_._resume(\"__tests__/template.marko_0/valueChange\", $valueChange);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-number-member-modifier-value/__snapshots__/html.expected/tags/custom-input.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/custom-input.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<input${_._attr_input_value($scope0_id, \"#input/0\", input.value, input.valueChange && _._resume($next => {\n    input.valueChange(parseInt($next));\n  }, \"__tests__/tags/custom-input.marko_0/valueChange\", $scope0_id))} type=number>${_._el_resume($scope0_id, \"#input/0\", _._serialize_guard($scope0_reason, /* input.value, input.valueChange */0))}`);\n  _._script($scope0_id, \"__tests__/tags/custom-input.marko_0\");\n  _._scope($scope0_id, {\n    input_value: _._serialize_if($scope0_reason, /* input.valueChange */1) && input.value,\n    input_valueChange: input.valueChange\n  }, \"__tests__/tags/custom-input.marko\", 0, {\n    input_value: [\"input.value\"],\n    input_valueChange: [\"input.valueChange\"]\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-number-member-modifier-value/__snapshots__/html.expected/template.js",
    "content": "import _customInput from \"./tags/custom-input.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let value = 0;\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason({\n    /* input.value, input.valueChange */0: /* value */1\n  });\n  _customInput({\n    value: value,\n    valueChange: _._resume(_new_value => {\n      value = _new_value;\n    }, \"__tests__/template.marko_0/valueChange\", $scope0_id)\n  });\n  _._html(`<span>${_._escape(value)}${_._el_resume($scope0_id, \"#text/1\")} <!>${_._escape(typeof value)}${_._el_resume($scope0_id, \"#text/2\")}</span>`);\n  _._scope($scope0_id, {\n    \"#childScope/0\": _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-number-member-modifier-value/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  type=\"number\"\n  value=\"0\"\n/>\n<span>\n  0 number\n</span>\n```\n\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\nconst window = input.ownerDocument.defaultView;\ninput.value = value;\ninput.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<input\n  default-value=\"0\"\n  type=\"number\"\n  value=\"1\"\n/>\n<span>\n  1 number\n</span>\n```\n\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\nconst window = input.ownerDocument.defaultView;\ninput.value = value;\ninput.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<input\n  default-value=\"0\"\n  type=\"number\"\n  value=\"10\"\n/>\n<span>\n  10 number\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-number-member-modifier-value/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <input\n      type=\"number\"\n      value=\"0\"\n    />\n    <!--M_*2 #input/0-->\n    <span>\n      0\n      <!--M_*1 #text/1-->\n       \n      <!---->\n      number\n      <!--M_*1 #text/2-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"#childScope/0\": _.a = {\n            \"ControlledType:#input/0\": 2\n          }\n        }, _.a], _.a.input_valueChange = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.c), _.a[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/tags/custom-input.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/tags/custom-input.marko_0 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\nconst window = input.ownerDocument.defaultView;\ninput.value = value;\ninput.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      default-value=\"0\"\n      type=\"number\"\n      value=\"1\"\n    />\n    <!--M_*2 #input/0-->\n    <span>\n      1\n      <!--M_*1 #text/1-->\n       \n      <!---->\n      number\n      <!--M_*1 #text/2-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"#childScope/0\": _.a = {\n            \"ControlledType:#input/0\": 2\n          }\n        }, _.a], _.a.input_valueChange = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.c), _.a[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/tags/custom-input.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/tags/custom-input.marko_0 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text0 \"0\" => \"1\"\n```\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\nconst window = input.ownerDocument.defaultView;\ninput.value = value;\ninput.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      default-value=\"0\"\n      type=\"number\"\n      value=\"10\"\n    />\n    <!--M_*2 #input/0-->\n    <span>\n      10\n      <!--M_*1 #text/1-->\n       \n      <!---->\n      number\n      <!--M_*1 #text/2-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"#childScope/0\": _.a = {\n            \"ControlledType:#input/0\": 2\n          }\n        }, _.a], _.a.input_valueChange = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.c), _.a[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/tags/custom-input.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/tags/custom-input.marko_0 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text0 \"1\" => \"10\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-number-member-modifier-value/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<input\n  type=\"number\"\n  value=\"0\"\n/>\n<span>\n  0 number\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-number-member-modifier-value/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <input value=0 type=number><!--M_*2 #input/0--><span>0<!--M_*1 #text/1--> <!>number<!--M_*1 #text/2--></span><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.c={\"#childScope/0\":_.a={\"ControlledType:#input/0\":2}},_.a],_.a.input_valueChange=_._[\"__tests__/template.marko_0/valueChange\"](_.c),_.a[\"ControlledHandler:#input/0\"]=_._[\"__tests__/tags/custom-input.marko_0/valueChange\"](_.a),_.b),\"__tests__/tags/custom-input.marko_0 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <input\n      type=\"number\"\n      value=\"0\"\n    />\n    <!--M_*2 #input/0-->\n    <span>\n      0\n      <!--M_*1 #text/1-->\n       \n      <!---->\n      number\n      <!--M_*1 #text/2-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"#childScope/0\": _.a = {\n            \"ControlledType:#input/0\": 2\n          }\n        }, _.a], _.a.input_valueChange = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.c), _.a[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/tags/custom-input.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/tags/custom-input.marko_0 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/input\nINSERT html/body/#comment\nINSERT html/body/span\nINSERT html/body/span/#text0\nINSERT html/body/span/#comment0\nINSERT html/body/span/#text1\nINSERT html/body/span/#comment1\nINSERT html/body/span/#text2\nINSERT html/body/span/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-number-member-modifier-value/tags/custom-input.marko",
    "content": "<input type=\"number\" value:parseInt:=input.value/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-number-member-modifier-value/template.marko",
    "content": "<let/value = 0>\n<custom-input value:=value/>\n<span>${value} ${typeof value}</span>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-number-member-modifier-value/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction type(value: string) {\n  return (container: Element) => {\n    const input = container.querySelector(\"input\")!;\n    const window = input.ownerDocument.defaultView!;\n    input.value = value;\n    input.dispatchEvent(new window.Event(\"input\", { bubbles: true }));\n  };\n}\n\nexport const config: TestConfig = {\n  steps: [{}, type(\"1\"), type(\"10\")],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-number-modifier-value/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"r\",\n      \"$$value\": \"a\",\n      \"$$valueChange\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-number-modifier-value/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  type=\"number\"\n  value=\"0\"\n/>\n<span>\n  0 number\n</span>\n```\n\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\nconst window = input.ownerDocument.defaultView;\ninput.value = value;\ninput.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<input\n  default-value=\"0\"\n  type=\"number\"\n  value=\"1\"\n/>\n<span>\n  1 number\n</span>\n```\n\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\nconst window = input.ownerDocument.defaultView;\ninput.value = value;\ninput.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<input\n  default-value=\"0\"\n  type=\"number\"\n  value=\"10\"\n/>\n<span>\n  10 number\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-number-modifier-value/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<input\n  type=\"number\"\n  value=\"0\"\n/>\n<span>\n  0 number\n</span>\n```\n\n# Mutations\n```\nINSERT input, span\n```\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\nconst window = input.ownerDocument.defaultView;\ninput.value = value;\ninput.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<input\n  default-value=\"0\"\n  type=\"number\"\n  value=\"1\"\n/>\n<span>\n  1 number\n</span>\n```\n\n# Mutations\n```\nUPDATE span/#text0 \"0\" => \"1\"\n```\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\nconst window = input.ownerDocument.defaultView;\ninput.value = value;\ninput.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<input\n  default-value=\"0\"\n  type=\"number\"\n  value=\"10\"\n/>\n<span>\n  10 number\n</span>\n```\n\n# Mutations\n```\nUPDATE span/#text0 \"1\" => \"10\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-number-modifier-value/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 218 (min) 133 (brotli)\nconst $value = _._let(3, ($scope) => {\n  (_._attr_input_value($scope, \"a\", $scope.d, $valueChange($scope)),\n    _._text($scope.b, $scope.d),\n    _._text($scope.c, typeof $scope.d));\n});\nfunction $valueChange($scope) {\n  return (_new_value) => {\n    $value($scope, parseInt(_new_value));\n  };\n}\n(_._script(\"a1\", ($scope) => _._attr_input_value_script($scope, \"a\")),\n  _._resume(\"a0\", $valueChange),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-number-modifier-value/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<input type=number><span><!> <!></span>\";\nexport const $walks = /* get, over(1), next(1), replace, over(2), replace, out(1) */\" bD%c%l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $value = /* @__PURE__ */_._let(\"value/3\", $scope => {\n  _._attr_input_value($scope, \"#input/0\", $scope.value, $valueChange($scope));\n  _._text($scope[\"#text/1\"], $scope.value);\n  _._text($scope[\"#text/2\"], typeof $scope.value);\n});\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => _._attr_input_value_script($scope, \"#input/0\"));\nexport function $setup($scope) {\n  $value($scope, 0);\n  $setup__script($scope);\n}\nfunction $valueChange($scope) {\n  return _new_value => {\n    $value($scope, parseInt(_new_value));\n  };\n}\n_._resume(\"__tests__/template.marko_0/valueChange\", $valueChange);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-number-modifier-value/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let value = 0;\n  _._html(`<input${_._attr_input_value($scope0_id, \"#input/0\", value, _._resume(_new_value => {\n    value = parseInt(_new_value);\n  }, \"__tests__/template.marko_0/valueChange\", $scope0_id))} type=number>${_._el_resume($scope0_id, \"#input/0\")}<span>${_._escape(value)}${_._el_resume($scope0_id, \"#text/1\")} <!>${_._escape(typeof value)}${_._el_resume($scope0_id, \"#text/2\")}</span>`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-number-modifier-value/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  type=\"number\"\n  value=\"0\"\n/>\n<span>\n  0 number\n</span>\n```\n\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\nconst window = input.ownerDocument.defaultView;\ninput.value = value;\ninput.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<input\n  default-value=\"0\"\n  type=\"number\"\n  value=\"1\"\n/>\n<span>\n  1 number\n</span>\n```\n\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\nconst window = input.ownerDocument.defaultView;\ninput.value = value;\ninput.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<input\n  default-value=\"0\"\n  type=\"number\"\n  value=\"10\"\n/>\n<span>\n  10 number\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-number-modifier-value/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <input\n      type=\"number\"\n      value=\"0\"\n    />\n    <!--M_*1 #input/0-->\n    <span>\n      0\n      <!--M_*1 #text/1-->\n       \n      <!---->\n      number\n      <!--M_*1 #text/2-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#input/0\": 2\n        }], _.a[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\nconst window = input.ownerDocument.defaultView;\ninput.value = value;\ninput.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      default-value=\"0\"\n      type=\"number\"\n      value=\"1\"\n    />\n    <!--M_*1 #input/0-->\n    <span>\n      1\n      <!--M_*1 #text/1-->\n       \n      <!---->\n      number\n      <!--M_*1 #text/2-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#input/0\": 2\n        }], _.a[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text0 \"0\" => \"1\"\n```\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\nconst window = input.ownerDocument.defaultView;\ninput.value = value;\ninput.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      default-value=\"0\"\n      type=\"number\"\n      value=\"10\"\n    />\n    <!--M_*1 #input/0-->\n    <span>\n      10\n      <!--M_*1 #text/1-->\n       \n      <!---->\n      number\n      <!--M_*1 #text/2-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#input/0\": 2\n        }], _.a[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text0 \"1\" => \"10\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-number-modifier-value/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<input\n  type=\"number\"\n  value=\"0\"\n/>\n<span>\n  0 number\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-number-modifier-value/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <input value=0 type=number><!--M_*1 #input/0--><span>0<!--M_*1 #text/1--> <!>number<!--M_*1 #text/2--></span><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={\"ControlledType:#input/0\":2}],_.a[\"ControlledHandler:#input/0\"]=_._[\"__tests__/template.marko_0/valueChange\"](_.a),_.b),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <input\n      type=\"number\"\n      value=\"0\"\n    />\n    <!--M_*1 #input/0-->\n    <span>\n      0\n      <!--M_*1 #text/1-->\n       \n      <!---->\n      number\n      <!--M_*1 #text/2-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#input/0\": 2\n        }], _.a[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/input\nINSERT html/body/#comment\nINSERT html/body/span\nINSERT html/body/span/#text0\nINSERT html/body/span/#comment0\nINSERT html/body/span/#text1\nINSERT html/body/span/#comment1\nINSERT html/body/span/#text2\nINSERT html/body/span/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-number-modifier-value/template.marko",
    "content": "<let/value = 0>\n<input type=\"number\" value:parseInt:=value/>\n<span>${value} ${typeof value}</span>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-number-modifier-value/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction type(value: string) {\n  return (container: Element) => {\n    const input = container.querySelector(\"input\")!;\n    const window = input.ownerDocument.defaultView!;\n    input.value = value;\n    input.dispatchEvent(new window.Event(\"input\", { bubbles: true }));\n  };\n}\n\nexport const config: TestConfig = {\n  steps: [{}, type(\"1\"), type(\"10\")],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-value/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"r\",\n      \"$$value\": \"a\",\n      \"$$valueChange\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-value/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  type=\"text\"\n  value=\"hello\"\n/>\n<span>\n  hello\n</span>\n```\n\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\nconst window = input.ownerDocument.defaultView;\ninput.value = value;\ninput.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<input\n  default-value=\"hello\"\n  type=\"text\"\n  value=\"w\"\n/>\n<span>\n  w\n</span>\n```\n\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\nconst window = input.ownerDocument.defaultView;\ninput.value = value;\ninput.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<input\n  default-value=\"hello\"\n  type=\"text\"\n  value=\"wor\"\n/>\n<span>\n  wor\n</span>\n```\n\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\nconst window = input.ownerDocument.defaultView;\ninput.value = value;\ninput.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<input\n  default-value=\"hello\"\n  type=\"text\"\n  value=\"world\"\n/>\n<span>\n  world\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-value/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<input\n  type=\"text\"\n  value=\"hello\"\n/>\n<span>\n  hello\n</span>\n```\n\n# Mutations\n```\nINSERT input, span\n```\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\nconst window = input.ownerDocument.defaultView;\ninput.value = value;\ninput.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<input\n  default-value=\"hello\"\n  type=\"text\"\n  value=\"w\"\n/>\n<span>\n  w\n</span>\n```\n\n# Mutations\n```\nUPDATE span/#text \"hello\" => \"w\"\n```\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\nconst window = input.ownerDocument.defaultView;\ninput.value = value;\ninput.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<input\n  default-value=\"hello\"\n  type=\"text\"\n  value=\"wor\"\n/>\n<span>\n  wor\n</span>\n```\n\n# Mutations\n```\nUPDATE span/#text \"w\" => \"wor\"\n```\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\nconst window = input.ownerDocument.defaultView;\ninput.value = value;\ninput.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<input\n  default-value=\"hello\"\n  type=\"text\"\n  value=\"world\"\n/>\n<span>\n  world\n</span>\n```\n\n# Mutations\n```\nUPDATE span/#text \"wor\" => \"world\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-value/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 184 (min) 125 (brotli)\nconst $value = _._let(2, ($scope) => {\n  (_._attr_input_value($scope, \"a\", $scope.c, $valueChange($scope)),\n    _._text($scope.b, $scope.c));\n});\nfunction $valueChange($scope) {\n  return (_new_value) => {\n    $value($scope, _new_value);\n  };\n}\n(_._script(\"a1\", ($scope) => _._attr_input_value_script($scope, \"a\")),\n  _._resume(\"a0\", $valueChange),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-value/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<input type=text><span> </span>\";\nexport const $walks = /* get, over(1), next(1), get, out(1) */\" bD l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $value = /* @__PURE__ */_._let(\"value/2\", $scope => {\n  _._attr_input_value($scope, \"#input/0\", $scope.value, $valueChange($scope));\n  _._text($scope[\"#text/1\"], $scope.value);\n});\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => _._attr_input_value_script($scope, \"#input/0\"));\nexport function $setup($scope) {\n  $value($scope, \"hello\");\n  $setup__script($scope);\n}\nfunction $valueChange($scope) {\n  return _new_value => {\n    $value($scope, _new_value);\n  };\n}\n_._resume(\"__tests__/template.marko_0/valueChange\", $valueChange);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-value/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let value = \"hello\";\n  _._html(`<input${_._attr_input_value($scope0_id, \"#input/0\", value, _._resume(_new_value => {\n    value = _new_value;\n  }, \"__tests__/template.marko_0/valueChange\", $scope0_id))} type=text>${_._el_resume($scope0_id, \"#input/0\")}<span>${_._escape(value)}${_._el_resume($scope0_id, \"#text/1\")}</span>`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-value/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  type=\"text\"\n  value=\"hello\"\n/>\n<span>\n  hello\n</span>\n```\n\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\nconst window = input.ownerDocument.defaultView;\ninput.value = value;\ninput.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<input\n  default-value=\"hello\"\n  type=\"text\"\n  value=\"w\"\n/>\n<span>\n  w\n</span>\n```\n\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\nconst window = input.ownerDocument.defaultView;\ninput.value = value;\ninput.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<input\n  default-value=\"hello\"\n  type=\"text\"\n  value=\"wor\"\n/>\n<span>\n  wor\n</span>\n```\n\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\nconst window = input.ownerDocument.defaultView;\ninput.value = value;\ninput.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<input\n  default-value=\"hello\"\n  type=\"text\"\n  value=\"world\"\n/>\n<span>\n  world\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-value/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <input\n      type=\"text\"\n      value=\"hello\"\n    />\n    <!--M_*1 #input/0-->\n    <span>\n      hello\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#input/0\": 2\n        }], _.a[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\nconst window = input.ownerDocument.defaultView;\ninput.value = value;\ninput.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      default-value=\"hello\"\n      type=\"text\"\n      value=\"w\"\n    />\n    <!--M_*1 #input/0-->\n    <span>\n      w\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#input/0\": 2\n        }], _.a[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"hello\" => \"w\"\n```\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\nconst window = input.ownerDocument.defaultView;\ninput.value = value;\ninput.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      default-value=\"hello\"\n      type=\"text\"\n      value=\"wor\"\n    />\n    <!--M_*1 #input/0-->\n    <span>\n      wor\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#input/0\": 2\n        }], _.a[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"w\" => \"wor\"\n```\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\nconst window = input.ownerDocument.defaultView;\ninput.value = value;\ninput.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      default-value=\"hello\"\n      type=\"text\"\n      value=\"world\"\n    />\n    <!--M_*1 #input/0-->\n    <span>\n      world\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#input/0\": 2\n        }], _.a[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"wor\" => \"world\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-value/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<input\n  type=\"text\"\n  value=\"hello\"\n/>\n<span>\n  hello\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-value/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <input value=hello type=text><!--M_*1 #input/0--><span>hello<!--M_*1 #text/1--></span><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={\"ControlledType:#input/0\":2}],_.a[\"ControlledHandler:#input/0\"]=_._[\"__tests__/template.marko_0/valueChange\"](_.a),_.b),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <input\n      type=\"text\"\n      value=\"hello\"\n    />\n    <!--M_*1 #input/0-->\n    <span>\n      hello\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#input/0\": 2\n        }], _.a[\"ControlledHandler:#input/0\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/input\nINSERT html/body/#comment\nINSERT html/body/span\nINSERT html/body/span/#text\nINSERT html/body/span/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-value/template.marko",
    "content": "<let/value = \"hello\"/>\n<input type=\"text\" value:=value/>\n<span>${value}</span>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-value/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction type(value: string) {\n  return (container: Element) => {\n    const input = container.querySelector(\"input\")!;\n    const window = input.ownerDocument.defaultView!;\n    input.value = value;\n    input.dispatchEvent(new window.Event(\"input\", { bubbles: true }));\n  };\n}\n\nexport const config: TestConfig = {\n  steps: [{}, type(\"w\"), type(\"wor\"), type(\"world\")],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-value-spread/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"r\",\n      \"$$input__script\": \"a\",\n      \"$$input\": \"e\",\n      \"$$value\": \"m\",\n      \"$$valueChange\": \"o\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-value-spread/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  type=\"text\"\n  value=\"hello\"\n/>\n<span>\n  hello\n</span>\n```\n\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\nconst window = input.ownerDocument.defaultView;\ninput.value = value;\ninput.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<input\n  default-value=\"hello\"\n  type=\"text\"\n  value=\"w\"\n/>\n<span>\n  w\n</span>\n```\n\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\nconst window = input.ownerDocument.defaultView;\ninput.value = value;\ninput.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<input\n  default-value=\"hello\"\n  type=\"text\"\n  value=\"wor\"\n/>\n<span>\n  wor\n</span>\n```\n\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\nconst window = input.ownerDocument.defaultView;\ninput.value = value;\ninput.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<input\n  default-value=\"hello\"\n  type=\"text\"\n  value=\"world\"\n/>\n<span>\n  world\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-value-spread/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<input\n  type=\"text\"\n  value=\"hello\"\n/>\n<span>\n  hello\n</span>\n```\n\n# Mutations\n```\nINSERT input, span\n```\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\nconst window = input.ownerDocument.defaultView;\ninput.value = value;\ninput.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<input\n  default-value=\"hello\"\n  type=\"text\"\n  value=\"w\"\n/>\n<span>\n  w\n</span>\n```\n\n# Mutations\n```\nUPDATE span/#text \"hello\" => \"w\"\n```\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\nconst window = input.ownerDocument.defaultView;\ninput.value = value;\ninput.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<input\n  default-value=\"hello\"\n  type=\"text\"\n  value=\"wor\"\n/>\n<span>\n  wor\n</span>\n```\n\n# Mutations\n```\nUPDATE span/#text \"w\" => \"wor\"\n```\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\nconst window = input.ownerDocument.defaultView;\ninput.value = value;\ninput.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<input\n  default-value=\"hello\"\n  type=\"text\"\n  value=\"world\"\n/>\n<span>\n  world\n</span>\n```\n\n# Mutations\n```\nUPDATE span/#text \"wor\" => \"world\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-value-spread/__snapshots__/dom.expected/tags/my-input.js",
    "content": "export const $template = \"<input>\";\nexport const $walks = /* get, over(1) */\" b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $input__script = _._script(\"__tests__/tags/my-input.marko_0_input\", $scope => _._attrs_script($scope, \"#input/0\"));\nexport const $input = /* @__PURE__ */_._const(\"input\", $scope => {\n  _._attrs($scope, \"#input/0\", $scope.input);\n  $input__script($scope);\n});\nexport default /* @__PURE__ */_._template(\"__tests__/tags/my-input.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-value-spread/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 231 (min) 154 (brotli)\nconst $input__script = _._script(\"a0\", ($scope) =>\n    _._attrs_script($scope, \"a\"),\n  ),\n  $input = _._const(2, ($scope) => {\n    (_._attrs($scope, \"a\", $scope.c), $input__script($scope));\n  }),\n  $value = _._let(2, ($scope) => {\n    ($input($scope.a, {\n      type: \"text\",\n      value: $scope.c,\n      valueChange: $valueChange($scope),\n    }),\n      _._text($scope.b, $scope.c));\n  });\nfunction $valueChange($scope) {\n  return (_new_value) => {\n    $value($scope, _new_value);\n  };\n}\n(_._resume(\"b0\", $valueChange), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-value-spread/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `${_myInput_template}<span> </span>`;\nexport const $walks = /* <my-input>, next(1), get, out(1) */`/${_myInput_walks}&D l`;\nimport { $setup as _myInput, $input as _myInput_input, $template as _myInput_template, $walks as _myInput_walks } from \"./tags/my-input.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $value = /* @__PURE__ */_._let(\"value/2\", $scope => {\n  _myInput_input($scope[\"#childScope/0\"], {\n    type: \"text\",\n    value: $scope.value,\n    valueChange: $valueChange($scope)\n  });\n  _._text($scope[\"#text/1\"], $scope.value);\n});\nexport function $setup($scope) {\n  _myInput($scope[\"#childScope/0\"]);\n  $value($scope, \"hello\");\n}\nfunction $valueChange($scope) {\n  return _new_value => {\n    $value($scope, _new_value);\n  };\n}\n_._resume(\"__tests__/template.marko_0/valueChange\", $valueChange);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-value-spread/__snapshots__/html.expected/tags/my-input.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/my-input.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<input${_._attrs(input, \"#input/0\", $scope0_id, \"input\")}>${_._el_resume($scope0_id, \"#input/0\")}`);\n  _._script($scope0_id, \"__tests__/tags/my-input.marko_0_input\");\n  _._scope($scope0_id, {\n    input\n  }, \"__tests__/tags/my-input.marko\", 0, {\n    input: 0\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-value-spread/__snapshots__/html.expected/template.js",
    "content": "import _myInput from \"./tags/my-input.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let value = \"hello\";\n  const $childScope = _._peek_scope_id();\n  _myInput({\n    type: \"text\",\n    value: value,\n    valueChange: _._resume(_new_value => {\n      value = _new_value;\n    }, \"__tests__/template.marko_0/valueChange\", $scope0_id)\n  });\n  _._html(`<span>${_._escape(value)}${_._el_resume($scope0_id, \"#text/1\")}</span>`);\n  _._scope($scope0_id, {\n    \"#childScope/0\": _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-value-spread/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  type=\"text\"\n  value=\"hello\"\n/>\n<span>\n  hello\n</span>\n```\n\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\nconst window = input.ownerDocument.defaultView;\ninput.value = value;\ninput.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<input\n  default-value=\"hello\"\n  type=\"text\"\n  value=\"w\"\n/>\n<span>\n  w\n</span>\n```\n\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\nconst window = input.ownerDocument.defaultView;\ninput.value = value;\ninput.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<input\n  default-value=\"hello\"\n  type=\"text\"\n  value=\"wor\"\n/>\n<span>\n  wor\n</span>\n```\n\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\nconst window = input.ownerDocument.defaultView;\ninput.value = value;\ninput.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<input\n  default-value=\"hello\"\n  type=\"text\"\n  value=\"world\"\n/>\n<span>\n  world\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-value-spread/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <input\n      type=\"text\"\n      value=\"hello\"\n    />\n    <!--M_*2 #input/0-->\n    <span>\n      hello\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.d = {\n          \"#childScope/0\": _.a = {\n            \"ControlledType:#input/0\": 2,\n            input: _.b = {\n              type: \"text\",\n              value: \"hello\"\n            }\n          }\n        }, _.a], _.a[\"ControlledHandler:#input/0\"] = _.b.valueChange = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.d), _.c),\n        \"__tests__/tags/my-input.marko_0_input 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\nconst window = input.ownerDocument.defaultView;\ninput.value = value;\ninput.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      default-value=\"hello\"\n      type=\"text\"\n      value=\"w\"\n    />\n    <!--M_*2 #input/0-->\n    <span>\n      w\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.d = {\n          \"#childScope/0\": _.a = {\n            \"ControlledType:#input/0\": 2,\n            input: _.b = {\n              type: \"text\",\n              value: \"hello\"\n            }\n          }\n        }, _.a], _.a[\"ControlledHandler:#input/0\"] = _.b.valueChange = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.d), _.c),\n        \"__tests__/tags/my-input.marko_0_input 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"hello\" => \"w\"\n```\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\nconst window = input.ownerDocument.defaultView;\ninput.value = value;\ninput.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      default-value=\"hello\"\n      type=\"text\"\n      value=\"wor\"\n    />\n    <!--M_*2 #input/0-->\n    <span>\n      wor\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.d = {\n          \"#childScope/0\": _.a = {\n            \"ControlledType:#input/0\": 2,\n            input: _.b = {\n              type: \"text\",\n              value: \"hello\"\n            }\n          }\n        }, _.a], _.a[\"ControlledHandler:#input/0\"] = _.b.valueChange = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.d), _.c),\n        \"__tests__/tags/my-input.marko_0_input 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"w\" => \"wor\"\n```\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\nconst window = input.ownerDocument.defaultView;\ninput.value = value;\ninput.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      default-value=\"hello\"\n      type=\"text\"\n      value=\"world\"\n    />\n    <!--M_*2 #input/0-->\n    <span>\n      world\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.d = {\n          \"#childScope/0\": _.a = {\n            \"ControlledType:#input/0\": 2,\n            input: _.b = {\n              type: \"text\",\n              value: \"hello\"\n            }\n          }\n        }, _.a], _.a[\"ControlledHandler:#input/0\"] = _.b.valueChange = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.d), _.c),\n        \"__tests__/tags/my-input.marko_0_input 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"wor\" => \"world\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-value-spread/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<input\n  type=\"text\"\n  value=\"hello\"\n/>\n<span>\n  hello\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-value-spread/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <input value=hello type=text><!--M_*2 #input/0--><span>hello<!--M_*1 #text/1--></span><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.d={\"#childScope/0\":_.a={\"ControlledType:#input/0\":2,input:_.b={type:\"text\",value:\"hello\"}}},_.a],_.a[\"ControlledHandler:#input/0\"]=_.b.valueChange=_._[\"__tests__/template.marko_0/valueChange\"](_.d),_.c),\"__tests__/tags/my-input.marko_0_input 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <input\n      type=\"text\"\n      value=\"hello\"\n    />\n    <!--M_*2 #input/0-->\n    <span>\n      hello\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.d = {\n          \"#childScope/0\": _.a = {\n            \"ControlledType:#input/0\": 2,\n            input: _.b = {\n              type: \"text\",\n              value: \"hello\"\n            }\n          }\n        }, _.a], _.a[\"ControlledHandler:#input/0\"] = _.b.valueChange = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.d), _.c),\n        \"__tests__/tags/my-input.marko_0_input 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/input\nINSERT html/body/#comment\nINSERT html/body/span\nINSERT html/body/span/#text\nINSERT html/body/span/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-value-spread/tags/my-input.marko",
    "content": "<input ...input />"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-value-spread/template.marko",
    "content": "<let/value = \"hello\"/>\n<my-input type=\"text\" value:=value/>\n<span>${value}</span>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-input-value-spread/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction type(value: string) {\n  return (container: Element) => {\n    const input = container.querySelector(\"input\")!;\n    const window = input.ownerDocument.defaultView!;\n    input.value = value;\n    input.dispatchEvent(new window.Event(\"input\", { bubbles: true }));\n  };\n}\n\nexport const config: TestConfig = {\n  steps: [{}, type(\"w\"), type(\"wor\"), type(\"world\")],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"r\",\n      \"$$value\": \"a\",\n      \"$$valueChange\": \"e\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<select>\n  <option\n    value=\"a\"\n  >\n    A\n  </option>\n  <option\n    selected=\"\"\n    value=\"b\"\n  >\n    B\n  </option>\n  <option\n    value=\"c\"\n  >\n    C\n  </option>\n</select>\n<span>\n  b\n</span>\n```\n\n\n# Render\n```js\nconst select = container.querySelector(`select`);\nconst window = select.ownerDocument.defaultView;\nselect.value = \"c\";\nselect.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<select>\n  <option\n    value=\"a\"\n  >\n    A\n  </option>\n  <option\n    default-selected=\"\"\n    value=\"b\"\n  >\n    B\n  </option>\n  <option\n    selected=\"\"\n    value=\"c\"\n  >\n    C\n  </option>\n</select>\n<span>\n  c\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<select>\n  <option\n    value=\"a\"\n  >\n    A\n  </option>\n  <option\n    selected=\"\"\n    value=\"b\"\n  >\n    B\n  </option>\n  <option\n    value=\"c\"\n  >\n    C\n  </option>\n</select>\n<span>\n  b\n</span>\n```\n\n# Mutations\n```\nINSERT select, span\nUPDATE select/option1[selected] null => \"\"\n```\n\n# Render\n```js\nconst select = container.querySelector(`select`);\nconst window = select.ownerDocument.defaultView;\nselect.value = \"c\";\nselect.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<select>\n  <option\n    value=\"a\"\n  >\n    A\n  </option>\n  <option\n    default-selected=\"\"\n    value=\"b\"\n  >\n    B\n  </option>\n  <option\n    selected=\"\"\n    value=\"c\"\n  >\n    C\n  </option>\n</select>\n<span>\n  c\n</span>\n```\n\n# Mutations\n```\nUPDATE span/#text \"b\" => \"c\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 194 (min) 123 (brotli)\nconst $value = _._let(2, ($scope) => {\n  (_._attr_select_value($scope, \"a\", $scope.c, $valueChange($scope)),\n    _._text($scope.b, $scope.c));\n});\nfunction $valueChange($scope) {\n  return function (v) {\n    $value($scope, v);\n  };\n}\n(_._script(\"a1\", ($scope) => _._attr_select_value_script($scope, \"a\")),\n  _._resume(\"a0\", $valueChange),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<select><option value=a>A</option><option value=b>B</option><option value=c>C</option></select><span> </span>\";\nexport const $walks = /* get, over(1), next(1), get, out(1) */\" bD l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $value = /* @__PURE__ */_._let(\"value/2\", $scope => {\n  _._attr_select_value($scope, \"#select/0\", $scope.value, $valueChange($scope));\n  _._text($scope[\"#text/1\"], $scope.value);\n});\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => _._attr_select_value_script($scope, \"#select/0\"));\nexport function $setup($scope) {\n  $value($scope, \"b\");\n  $setup__script($scope);\n}\nfunction $valueChange($scope) {\n  return function (v) {\n    $value($scope, v);\n  };\n}\n_._resume(\"__tests__/template.marko_0/valueChange\", $valueChange);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let value = \"b\";\n  _._attr_select_value($scope0_id, \"#select/0\", value, _._resume(function (v) {\n    value = v;\n  }, \"__tests__/template.marko_0/valueChange\", $scope0_id), () => {\n    _._html(`<select><option${_._attr_option_value(\"a\")}>A</option><option${_._attr_option_value(\"b\")}>B</option><option${_._attr_option_value(\"c\")}>C</option></select>`);\n  });\n  _._html(`${_._el_resume($scope0_id, \"#select/0\")}<span>${_._escape(value)}${_._el_resume($scope0_id, \"#text/1\")}</span>`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<select>\n  <option\n    value=\"a\"\n  >\n    A\n  </option>\n  <option\n    selected=\"\"\n    value=\"b\"\n  >\n    B\n  </option>\n  <option\n    value=\"c\"\n  >\n    C\n  </option>\n</select>\n<span>\n  b\n</span>\n```\n\n\n# Render\n```js\nconst select = container.querySelector(`select`);\nconst window = select.ownerDocument.defaultView;\nselect.value = \"c\";\nselect.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<select>\n  <option\n    value=\"a\"\n  >\n    A\n  </option>\n  <option\n    default-selected=\"\"\n    value=\"b\"\n  >\n    B\n  </option>\n  <option\n    selected=\"\"\n    value=\"c\"\n  >\n    C\n  </option>\n</select>\n<span>\n  c\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <select>\n      <option\n        value=\"a\"\n      >\n        A\n      </option>\n      <option\n        selected=\"\"\n        value=\"b\"\n      >\n        B\n      </option>\n      <option\n        value=\"c\"\n      >\n        C\n      </option>\n    </select>\n    <!--M_*1 #select/0-->\n    <span>\n      b\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#select/0\": 3\n        }], _.a[\"ControlledHandler:#select/0\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\nconst select = container.querySelector(`select`);\nconst window = select.ownerDocument.defaultView;\nselect.value = \"c\";\nselect.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<html>\n  <head />\n  <body>\n    <select>\n      <option\n        value=\"a\"\n      >\n        A\n      </option>\n      <option\n        default-selected=\"\"\n        value=\"b\"\n      >\n        B\n      </option>\n      <option\n        selected=\"\"\n        value=\"c\"\n      >\n        C\n      </option>\n    </select>\n    <!--M_*1 #select/0-->\n    <span>\n      c\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#select/0\": 3\n        }], _.a[\"ControlledHandler:#select/0\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"b\" => \"c\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<select>\n  <option\n    value=\"a\"\n  >\n    A\n  </option>\n  <option\n    selected=\"\"\n    value=\"b\"\n  >\n    B\n  </option>\n  <option\n    value=\"c\"\n  >\n    C\n  </option>\n</select>\n<span>\n  b\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <select><option value=a>A</option><option value=b selected>B</option><option value=c>C</option></select><!--M_*1 #select/0--><span>b<!--M_*1 #text/1--></span><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={\"ControlledType:#select/0\":3}],_.a[\"ControlledHandler:#select/0\"]=_._[\"__tests__/template.marko_0/valueChange\"](_.a),_.b),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <select>\n      <option\n        value=\"a\"\n      >\n        A\n      </option>\n      <option\n        selected=\"\"\n        value=\"b\"\n      >\n        B\n      </option>\n      <option\n        value=\"c\"\n      >\n        C\n      </option>\n    </select>\n    <!--M_*1 #select/0-->\n    <span>\n      b\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#select/0\": 3\n        }], _.a[\"ControlledHandler:#select/0\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/select\nINSERT html/body/select/option0\nINSERT html/body/select/option0/#text\nINSERT html/body/select/option1\nINSERT html/body/select/option1/#text\nINSERT html/body/select/option2\nINSERT html/body/select/option2/#text\nINSERT html/body/#comment\nINSERT html/body/span\nINSERT html/body/span/#text\nINSERT html/body/span/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select/template.marko",
    "content": "<let/value = \"b\"/>\n<select value=value valueChange(v) { value=v }>\n  <option value=\"a\">A</option>\n  <option value=\"b\">B</option>\n  <option value=\"c\">C</option>\n</>\n<span>${value}</span>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction selectC(container: Element) {\n  const select = container.querySelector(`select`)!;\n  const window = select.ownerDocument.defaultView!;\n  select.value = \"c\";\n  select.dispatchEvent(new window.Event(\"input\", { bubbles: true }));\n}\n\nexport const config: TestConfig = {\n  steps: [{}, selectC],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-dynamic-spread/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"a\",\n      \"$$tagselect_content__setup__script\": \"o\",\n      \"$$tagselect_content\": \"r\",\n      \"$$dynamicTag\": \"_\",\n      \"$$value__OR__tag\": \"e\",\n      \"$$value\": \"n\",\n      \"$$valueChange\": \"i\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-dynamic-spread/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<select>\n  <option\n    value=\"a\"\n  >\n    A\n  </option>\n  <option\n    selected=\"\"\n    value=\"b\"\n  >\n    B\n  </option>\n  <option\n    value=\"c\"\n  >\n    C\n  </option>\n</select>\n<span>\n  b\n</span>\n```\n\n\n# Render\n```js\nconst select = container.querySelector(`select`);\nconst window = select.ownerDocument.defaultView;\nselect.value = \"c\";\nselect.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<select>\n  <option\n    value=\"a\"\n  >\n    A\n  </option>\n  <option\n    default-selected=\"\"\n    value=\"b\"\n  >\n    B\n  </option>\n  <option\n    selected=\"\"\n    value=\"c\"\n  >\n    C\n  </option>\n</select>\n<span>\n  c\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-dynamic-spread/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<select>\n  <option\n    value=\"a\"\n  >\n    A\n  </option>\n  <option\n    selected=\"\"\n    value=\"b\"\n  >\n    B\n  </option>\n  <option\n    value=\"c\"\n  >\n    C\n  </option>\n</select>\n<span>\n  b\n</span>\n```\n\n# Mutations\n```\nINSERT #comment, select, span\nUPDATE select/option1[selected] null => \"\"\n```\n\n# Render\n```js\nconst select = container.querySelector(`select`);\nconst window = select.ownerDocument.defaultView;\nselect.value = \"c\";\nselect.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<!---->\n<select>\n  <option\n    value=\"a\"\n  >\n    A\n  </option>\n  <option\n    default-selected=\"\"\n    value=\"b\"\n  >\n    B\n  </option>\n  <option\n    selected=\"\"\n    value=\"c\"\n  >\n    C\n  </option>\n</select>\n<span>\n  c\n</span>\n```\n\n# Mutations\n```\nUPDATE span/#text \"b\" => \"c\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-dynamic-spread/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 502 (min) 232 (brotli)\n_._resume_dynamic_tag();\nconst $tagselect_content__setup__script = _._script(\"a1\", ($scope) => {\n    (_._attrs_script($scope, \"a\"),\n      _._attrs_script($scope, \"b\"),\n      _._attrs_script($scope, \"c\"));\n  }),\n  $tagselect_content = _._content_resume(\n    \"a2\",\n    \"<option>A</option><option>B</option><option>C</option>\",\n    \" b b b\",\n    ($scope) => {\n      (_._attrs($scope, \"a\", { value: \"a\" }),\n        _._attrs($scope, \"b\", { value: \"b\" }),\n        _._attrs($scope, \"c\", { value: \"c\" }),\n        $tagselect_content__setup__script($scope));\n    },\n  ),\n  $dynamicTag = _._dynamic_tag(0, $tagselect_content),\n  $value__OR__tag = _._or(4, ($scope) =>\n    $dynamicTag($scope, $scope.d ? \"select\" : {}, () => ({\n      value: $scope.c,\n      valueChange: $valueChange($scope),\n    })),\n  ),\n  $value = _._let(2, ($scope) => {\n    (_._text($scope.b, $scope.c), $value__OR__tag($scope));\n  });\nfunction $valueChange($scope) {\n  return function (v) {\n    $value($scope, v);\n  };\n}\n(_._resume(\"a0\", $valueChange), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-dynamic-spread/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><span> </span>\";\nexport const $walks = /* over(1), replace, over(1), next(1), get, out(1) */\"b%bD l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\n_._resume_dynamic_tag();\nconst $tagselect_content__setup__script = _._script(\"__tests__/template.marko_1\", $scope => {\n  _._attrs_script($scope, \"#option/0\");\n  _._attrs_script($scope, \"#option/1\");\n  _._attrs_script($scope, \"#option/2\");\n});\nconst $tagselect_content__setup = $scope => {\n  _._attrs($scope, \"#option/0\", {\n    value: \"a\"\n  });\n  _._attrs($scope, \"#option/1\", {\n    value: \"b\"\n  });\n  _._attrs($scope, \"#option/2\", {\n    value: \"c\"\n  });\n  $tagselect_content__setup__script($scope);\n};\nconst $tagselect_content = _._content_resume(\"__tests__/template.marko_1_content\", \"<option>A</option><option>B</option><option>C</option>\", /* get, over(1), get, over(1), get, over(1) */\" b b b\", $tagselect_content__setup);\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\", $tagselect_content);\nconst $value__OR__tag = /* @__PURE__ */_._or(4, $scope => $dynamicTag($scope, $scope.tag ? \"select\" : {}, () => ({\n  value: $scope.value,\n  valueChange: $valueChange($scope)\n})));\nconst $value = /* @__PURE__ */_._let(\"value/2\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.value);\n  $value__OR__tag($scope);\n});\nconst $tag = /* @__PURE__ */_._const(\"tag\", $value__OR__tag);\nexport function $setup($scope) {\n  $value($scope, \"b\");\n  $tag($scope, \"select\");\n}\nfunction $valueChange($scope) {\n  return function (v) {\n    $value($scope, v);\n  };\n}\n_._resume(\"__tests__/template.marko_0/valueChange\", $valueChange);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-dynamic-spread/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let value = \"b\";\n  const tag = \"select\";\n  _._dynamic_tag($scope0_id, \"#text/0\", tag ? \"select\" : {}, {\n    value,\n    valueChange: _._resume(function (v) {\n      value = v;\n    }, \"__tests__/template.marko_0/valueChange\", $scope0_id)\n  }, _._content_resume(\"__tests__/template.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    _._scope_reason();\n    _._html(`<option${_._attrs({\n      value: \"a\"\n    }, \"#option/0\", $scope1_id, \"option\")}>A</option>${_._el_resume($scope1_id, \"#option/0\")}<option${_._attrs({\n      value: \"b\"\n    }, \"#option/1\", $scope1_id, \"option\")}>B</option>${_._el_resume($scope1_id, \"#option/1\")}<option${_._attrs({\n      value: \"c\"\n    }, \"#option/2\", $scope1_id, \"option\")}>C</option>${_._el_resume($scope1_id, \"#option/2\")}`);\n    _._script($scope1_id, \"__tests__/template.marko_1\");\n    _._scope($scope1_id, {}, \"__tests__/template.marko\", \"3:4\");\n  }, $scope0_id));\n  _._html(`<span>${_._escape(value)}${_._el_resume($scope0_id, \"#text/1\")}</span>`);\n  _._scope($scope0_id, {\n    tag\n  }, \"__tests__/template.marko\", 0, {\n    tag: \"2:8\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-dynamic-spread/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<select>\n  <option\n    value=\"a\"\n  >\n    A\n  </option>\n  <option\n    selected=\"\"\n    value=\"b\"\n  >\n    B\n  </option>\n  <option\n    value=\"c\"\n  >\n    C\n  </option>\n</select>\n<span>\n  b\n</span>\n```\n\n\n# Render\n```js\nconst select = container.querySelector(`select`);\nconst window = select.ownerDocument.defaultView;\nselect.value = \"c\";\nselect.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<select>\n  <option\n    value=\"a\"\n  >\n    A\n  </option>\n  <option\n    default-selected=\"\"\n    value=\"b\"\n  >\n    B\n  </option>\n  <option\n    selected=\"\"\n    value=\"c\"\n  >\n    C\n  </option>\n</select>\n<span>\n  c\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-dynamic-spread/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <select>\n      <option\n        value=\"a\"\n      >\n        A\n      </option>\n      <!--M_*3 #option/0-->\n      <option\n        selected=\"\"\n        value=\"b\"\n      >\n        B\n      </option>\n      <!--M_*3 #option/1-->\n      <option\n        value=\"c\"\n      >\n        C\n      </option>\n      <!--M_*3 #option/2-->\n    </select>\n    <!--M_'1 #text/0 2-->\n    <span>\n      b\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"ConditionalRenderer:#text/0\": \"select\",\n          tag: \"select\"\n        }, _.a = {\n          \"ControlledType:#select/0\": 3,\n          \"#Renderer\": \"select\"\n        }], _.a[\"ControlledHandler:#select/0\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.c), _.b),\n        \"__tests__/template.marko_1 3 _dynamicTagScript 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\nconst select = container.querySelector(`select`);\nconst window = select.ownerDocument.defaultView;\nselect.value = \"c\";\nselect.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<html>\n  <head />\n  <body>\n    <select>\n      <option\n        value=\"a\"\n      >\n        A\n      </option>\n      <!--M_*3 #option/0-->\n      <option\n        default-selected=\"\"\n        value=\"b\"\n      >\n        B\n      </option>\n      <!--M_*3 #option/1-->\n      <option\n        selected=\"\"\n        value=\"c\"\n      >\n        C\n      </option>\n      <!--M_*3 #option/2-->\n    </select>\n    <!--M_'1 #text/0 2-->\n    <span>\n      c\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"ConditionalRenderer:#text/0\": \"select\",\n          tag: \"select\"\n        }, _.a = {\n          \"ControlledType:#select/0\": 3,\n          \"#Renderer\": \"select\"\n        }], _.a[\"ControlledHandler:#select/0\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.c), _.b),\n        \"__tests__/template.marko_1 3 _dynamicTagScript 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"b\" => \"c\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-dynamic-spread/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<select>\n  <option\n    value=\"a\"\n  >\n    A\n  </option>\n  <option\n    selected=\"\"\n    value=\"b\"\n  >\n    B\n  </option>\n  <option\n    value=\"c\"\n  >\n    C\n  </option>\n</select>\n<span>\n  b\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-dynamic-spread/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <select><option value=a>A</option><!--M_*3 #option/0--><option value=b selected>B</option><!--M_*3 #option/1--><option value=c>C</option><!--M_*3 #option/2--></select><!--M_'1 #text/0 2--><span>b<!--M_*1 #text/1--></span><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.c={\"ConditionalRenderer:#text/0\":\"select\",tag:\"select\"},_.a={\"ControlledType:#select/0\":3,\"#Renderer\":\"select\"}],_.a[\"ControlledHandler:#select/0\"]=_._[\"__tests__/template.marko_0/valueChange\"](_.c),_.b),\"__tests__/template.marko_1 3 _dynamicTagScript 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <select>\n      <option\n        value=\"a\"\n      >\n        A\n      </option>\n      <!--M_*3 #option/0-->\n      <option\n        selected=\"\"\n        value=\"b\"\n      >\n        B\n      </option>\n      <!--M_*3 #option/1-->\n      <option\n        value=\"c\"\n      >\n        C\n      </option>\n      <!--M_*3 #option/2-->\n    </select>\n    <!--M_'1 #text/0 2-->\n    <span>\n      b\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"ConditionalRenderer:#text/0\": \"select\",\n          tag: \"select\"\n        }, _.a = {\n          \"ControlledType:#select/0\": 3,\n          \"#Renderer\": \"select\"\n        }], _.a[\"ControlledHandler:#select/0\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.c), _.b),\n        \"__tests__/template.marko_1 3 _dynamicTagScript 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/select\nINSERT html/body/select/option0\nINSERT html/body/select/option0/#text\nINSERT html/body/select/#comment0\nINSERT html/body/select/option1\nINSERT html/body/select/option1/#text\nINSERT html/body/select/#comment1\nINSERT html/body/select/option2\nINSERT html/body/select/option2/#text\nINSERT html/body/select/#comment2\nINSERT html/body/#comment\nINSERT html/body/span\nINSERT html/body/span/#text\nINSERT html/body/span/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-dynamic-spread/template.marko",
    "content": "<let/value = \"b\"/>\n<const/tag = \"select\"/>\n<${tag ? \"select\" : {}} ...{ value, valueChange(v) { value=v } }>\n  <option ...{ value:\"a\" }>A</option>\n  <option ...{ value:\"b\" }>B</option>\n  <option ...{ value:\"c\" }>C</option>\n</>\n<span>${value}</span>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-dynamic-spread/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction selectC(container: Element) {\n  const select = container.querySelector(`select`)!;\n  const window = select.ownerDocument.defaultView!;\n  select.value = \"c\";\n  select.dispatchEvent(new window.Event(\"input\", { bubbles: true }));\n}\n\nexport const config: TestConfig = {\n  steps: [{}, selectC],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-multiple-value-number/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"r\",\n      \"$$selected\": \"a\",\n      \"$$valueChange\": \"e\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-multiple-value-number/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<select\n  multiple=\"\"\n>\n  <option\n    value=\"0\"\n  />\n  <option\n    selected=\"\"\n    value=\"1\"\n  />\n  <option\n    value=\"2\"\n  />\n</select>\n<span>\n  1\n</span>\n<button>\n  Reset\n</button>\n```\n\n\n# Render\n```js\nselectIndex(container, 0);\n```\n```html\n<select\n  multiple=\"\"\n>\n  <option\n    selected=\"\"\n    value=\"0\"\n  />\n  <option\n    selected=\"\"\n    value=\"1\"\n  />\n  <option\n    value=\"2\"\n  />\n</select>\n<span>\n  0,1\n</span>\n<button>\n  Reset\n</button>\n```\n\n\n# Render\n```js\nselectIndex(container, 1);\n```\n```html\n<select\n  multiple=\"\"\n>\n  <option\n    selected=\"\"\n    value=\"0\"\n  />\n  <option\n    selected=\"\"\n    value=\"1\"\n  />\n  <option\n    value=\"2\"\n  />\n</select>\n<span>\n  0,1\n</span>\n<button>\n  Reset\n</button>\n```\n\n\n# Render\n```js\nselectIndex(container, 2);\n```\n```html\n<select\n  multiple=\"\"\n>\n  <option\n    selected=\"\"\n    value=\"0\"\n  />\n  <option\n    selected=\"\"\n    value=\"1\"\n  />\n  <option\n    selected=\"\"\n    value=\"2\"\n  />\n</select>\n<span>\n  0,1,2\n</span>\n<button>\n  Reset\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<select\n  multiple=\"\"\n>\n  <option\n    value=\"0\"\n  />\n  <option\n    selected=\"\"\n    value=\"1\"\n  />\n  <option\n    value=\"2\"\n  />\n</select>\n<span>\n  1\n</span>\n<button>\n  Reset\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-multiple-value-number/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<select\n  multiple=\"\"\n>\n  <option\n    value=\"0\"\n  />\n  <option\n    selected=\"\"\n    value=\"1\"\n  />\n  <option\n    value=\"2\"\n  />\n</select>\n<span>\n  1\n</span>\n<button>\n  Reset\n</button>\n```\n\n# Mutations\n```\nINSERT select, span, button\nUPDATE select/option1[selected] null => \"\"\n```\n\n# Render\n```js\nselectIndex(container, 0);\n```\n```html\n<select\n  multiple=\"\"\n>\n  <option\n    selected=\"\"\n    value=\"0\"\n  />\n  <option\n    selected=\"\"\n    value=\"1\"\n  />\n  <option\n    value=\"2\"\n  />\n</select>\n<span>\n  0,1\n</span>\n<button>\n  Reset\n</button>\n```\n\n# Mutations\n```\nUPDATE span/#text \"1\" => \"0,1\"\n```\n\n# Render\n```js\nselectIndex(container, 1);\n```\n```html\n<select\n  multiple=\"\"\n>\n  <option\n    selected=\"\"\n    value=\"0\"\n  />\n  <option\n    selected=\"\"\n    value=\"1\"\n  />\n  <option\n    value=\"2\"\n  />\n</select>\n<span>\n  0,1\n</span>\n<button>\n  Reset\n</button>\n```\n\n\n# Render\n```js\nselectIndex(container, 2);\n```\n```html\n<select\n  multiple=\"\"\n>\n  <option\n    selected=\"\"\n    value=\"0\"\n  />\n  <option\n    selected=\"\"\n    value=\"1\"\n  />\n  <option\n    selected=\"\"\n    value=\"2\"\n  />\n</select>\n<span>\n  0,1,2\n</span>\n<button>\n  Reset\n</button>\n```\n\n# Mutations\n```\nUPDATE span/#text \"0,1\" => \"0,1,2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<select\n  multiple=\"\"\n>\n  <option\n    value=\"0\"\n  />\n  <option\n    selected=\"\"\n    value=\"1\"\n  />\n  <option\n    value=\"2\"\n  />\n</select>\n<span>\n  1\n</span>\n<button>\n  Reset\n</button>\n```\n\n# Mutations\n```\nUPDATE span/#text \"0,1,2\" => \"1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-multiple-value-number/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 254 (min) 165 (brotli)\nconst $selected = _._let(3, ($scope) => {\n  (_._attr_select_value($scope, \"a\", $scope.d, $valueChange($scope)),\n    _._text($scope.b, $scope.d));\n});\nfunction $valueChange($scope) {\n  return function (v) {\n    $selected(\n      $scope,\n      v.map((it) => Number(it)),\n    );\n  };\n}\n(_._script(\"a1\", ($scope) => {\n  (_._attr_select_value_script($scope, \"a\"),\n    _._on($scope.c, \"click\", function () {\n      $selected($scope, [1]);\n    }));\n}),\n  _._resume(\"a0\", $valueChange),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-multiple-value-number/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<select multiple><option value=0></option><option value=1></option><option value=2></option></select><span> </span><button>Reset</button>\";\nexport const $walks = /* get, over(1), next(1), get, out(1), get, over(1) */\" bD l b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $selected = /* @__PURE__ */_._let(\"selected/3\", $scope => {\n  _._attr_select_value($scope, \"#select/0\", $scope.selected, $valueChange($scope));\n  _._text($scope[\"#text/1\"], $scope.selected);\n});\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => {\n  _._attr_select_value_script($scope, \"#select/0\");\n  _._on($scope[\"#button/2\"], \"click\", function () {\n    $selected($scope, [1]);\n  });\n});\nexport function $setup($scope) {\n  $selected($scope, [1]);\n  $setup__script($scope);\n}\nfunction $valueChange($scope) {\n  return function (v) {\n    $selected($scope, v.map(it => Number(it)));\n  };\n}\n_._resume(\"__tests__/template.marko_0/valueChange\", $valueChange);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-multiple-value-number/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let selected = [1];\n  _._attr_select_value($scope0_id, \"#select/0\", selected, _._resume(function (v) {\n    selected = v.map(it => Number(it));\n  }, \"__tests__/template.marko_0/valueChange\", $scope0_id), () => {\n    _._html(`<select multiple><option${_._attr_option_value(0)}></option><option${_._attr_option_value(\"1\")}></option><option${_._attr_option_value(2)}></option></select>`);\n  });\n  _._html(`${_._el_resume($scope0_id, \"#select/0\")}<span>${_._escape(selected)}${_._el_resume($scope0_id, \"#text/1\")}</span><button>Reset</button>${_._el_resume($scope0_id, \"#button/2\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-multiple-value-number/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<select\n  multiple=\"\"\n>\n  <option\n    value=\"0\"\n  />\n  <option\n    selected=\"\"\n    value=\"1\"\n  />\n  <option\n    value=\"2\"\n  />\n</select>\n<span>\n  1\n</span>\n<button>\n  Reset\n</button>\n```\n\n\n# Render\n```js\nselectIndex(container, 0);\n```\n```html\n<select\n  multiple=\"\"\n>\n  <option\n    selected=\"\"\n    value=\"0\"\n  />\n  <option\n    selected=\"\"\n    value=\"1\"\n  />\n  <option\n    value=\"2\"\n  />\n</select>\n<span>\n  0,1\n</span>\n<button>\n  Reset\n</button>\n```\n\n\n# Render\n```js\nselectIndex(container, 1);\n```\n```html\n<select\n  multiple=\"\"\n>\n  <option\n    selected=\"\"\n    value=\"0\"\n  />\n  <option\n    selected=\"\"\n    value=\"1\"\n  />\n  <option\n    value=\"2\"\n  />\n</select>\n<span>\n  0,1\n</span>\n<button>\n  Reset\n</button>\n```\n\n\n# Render\n```js\nselectIndex(container, 2);\n```\n```html\n<select\n  multiple=\"\"\n>\n  <option\n    selected=\"\"\n    value=\"0\"\n  />\n  <option\n    selected=\"\"\n    value=\"1\"\n  />\n  <option\n    selected=\"\"\n    value=\"2\"\n  />\n</select>\n<span>\n  0,1,2\n</span>\n<button>\n  Reset\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<select\n  multiple=\"\"\n>\n  <option\n    value=\"0\"\n  />\n  <option\n    selected=\"\"\n    value=\"1\"\n  />\n  <option\n    value=\"2\"\n  />\n</select>\n<span>\n  1\n</span>\n<button>\n  Reset\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-multiple-value-number/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <select\n      multiple=\"\"\n    >\n      <option\n        value=\"0\"\n      />\n      <option\n        selected=\"\"\n        value=\"1\"\n      />\n      <option\n        value=\"2\"\n      />\n    </select>\n    <!--M_*1 #select/0-->\n    <span>\n      1\n      <!--M_*1 #text/1-->\n    </span>\n    <button>\n      Reset\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#select/0\": 3\n        }], _.a[\"ControlledHandler:#select/0\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\nselectIndex(container, 0);\n```\n```html\n<html>\n  <head />\n  <body>\n    <select\n      multiple=\"\"\n    >\n      <option\n        selected=\"\"\n        value=\"0\"\n      />\n      <option\n        selected=\"\"\n        value=\"1\"\n      />\n      <option\n        value=\"2\"\n      />\n    </select>\n    <!--M_*1 #select/0-->\n    <span>\n      0,1\n      <!--M_*1 #text/1-->\n    </span>\n    <button>\n      Reset\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#select/0\": 3\n        }], _.a[\"ControlledHandler:#select/0\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"1\" => \"0,1\"\n```\n\n# Render\n```js\nselectIndex(container, 1);\n```\n```html\n<html>\n  <head />\n  <body>\n    <select\n      multiple=\"\"\n    >\n      <option\n        selected=\"\"\n        value=\"0\"\n      />\n      <option\n        selected=\"\"\n        value=\"1\"\n      />\n      <option\n        value=\"2\"\n      />\n    </select>\n    <!--M_*1 #select/0-->\n    <span>\n      0,1\n      <!--M_*1 #text/1-->\n    </span>\n    <button>\n      Reset\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#select/0\": 3\n        }], _.a[\"ControlledHandler:#select/0\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\nselectIndex(container, 2);\n```\n```html\n<html>\n  <head />\n  <body>\n    <select\n      multiple=\"\"\n    >\n      <option\n        selected=\"\"\n        value=\"0\"\n      />\n      <option\n        selected=\"\"\n        value=\"1\"\n      />\n      <option\n        selected=\"\"\n        value=\"2\"\n      />\n    </select>\n    <!--M_*1 #select/0-->\n    <span>\n      0,1,2\n      <!--M_*1 #text/1-->\n    </span>\n    <button>\n      Reset\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#select/0\": 3\n        }], _.a[\"ControlledHandler:#select/0\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"0,1\" => \"0,1,2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <select\n      multiple=\"\"\n    >\n      <option\n        value=\"0\"\n      />\n      <option\n        selected=\"\"\n        value=\"1\"\n      />\n      <option\n        value=\"2\"\n      />\n    </select>\n    <!--M_*1 #select/0-->\n    <span>\n      1\n      <!--M_*1 #text/1-->\n    </span>\n    <button>\n      Reset\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#select/0\": 3\n        }], _.a[\"ControlledHandler:#select/0\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"0,1,2\" => \"1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-multiple-value-number/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<select\n  multiple=\"\"\n>\n  <option\n    value=\"0\"\n  />\n  <option\n    selected=\"\"\n    value=\"1\"\n  />\n  <option\n    value=\"2\"\n  />\n</select>\n<span>\n  1\n</span>\n<button>\n  Reset\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-multiple-value-number/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <select multiple><option value=0></option><option value=1 selected></option><option value=2></option></select><!--M_*1 #select/0--><span>1<!--M_*1 #text/1--></span><button>Reset</button><!--M_*1 #button/2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={\"ControlledType:#select/0\":3}],_.a[\"ControlledHandler:#select/0\"]=_._[\"__tests__/template.marko_0/valueChange\"](_.a),_.b),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <select\n      multiple=\"\"\n    >\n      <option\n        value=\"0\"\n      />\n      <option\n        selected=\"\"\n        value=\"1\"\n      />\n      <option\n        value=\"2\"\n      />\n    </select>\n    <!--M_*1 #select/0-->\n    <span>\n      1\n      <!--M_*1 #text/1-->\n    </span>\n    <button>\n      Reset\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#select/0\": 3\n        }], _.a[\"ControlledHandler:#select/0\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/select\nINSERT html/body/select/option0\nINSERT html/body/select/option1\nINSERT html/body/select/option2\nINSERT html/body/#comment0\nINSERT html/body/span\nINSERT html/body/span/#text\nINSERT html/body/span/#comment\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-multiple-value-number/template.marko",
    "content": "<let/selected=[1]/>\n\n<select multiple value=selected valueChange(v) { selected = v.map(it => Number(it)) }>\n  <option value=0/>\n  <option value=\"1\"/>\n  <option value=2/>\n</select>\n\n<span>${selected}</span>\n\n<button onClick() { selected = [1] }>\n  Reset\n</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-multiple-value-number/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction select0(container: Element) {\n  selectIndex(container, 0);\n}\n\nfunction select1(container: Element) {\n  selectIndex(container, 1);\n}\n\nfunction select2(container: Element) {\n  selectIndex(container, 2);\n}\n\nfunction reset(container: Element) {\n  container.querySelector<HTMLButtonElement>(\"button\")!.click();\n}\n\nfunction selectIndex(container: Element, index: number) {\n  const select = container.querySelector<HTMLSelectElement>(`select`)!;\n  select.options[index].selected = true;\n  select.dispatchEvent(\n    new select.ownerDocument.defaultView!.Event(\"input\", { bubbles: true }),\n  );\n}\n\nexport const config: TestConfig = {\n  steps: [{}, select0, select1, select2, reset],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-mutated-option/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$for_content__$params\": \"e\",\n      \"$$for\": \"n\",\n      \"$$options__script\": \"_\",\n      \"$$options\": \"a\",\n      \"$$value\": \"c\",\n      \"$$options_\": \"r\",\n      \"$$valueChange\": \"i\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-mutated-option/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<form>\n  <select>\n    <option\n      selected=\"\"\n      value=\"1\"\n    >\n      1\n    </option>\n    <option\n      value=\"2\"\n    >\n      2\n    </option>\n    <option\n      value=\"3\"\n    >\n      3\n    </option>\n  </select>\n  <button\n    type=\"reset\"\n  >\n    reset\n  </button>\n</form>\n<div>\n  1\n</div>\n<button\n  class=\"remove\"\n>\n  Remove option\n</button>\n<button\n  class=\"add\"\n>\n  Add option\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".remove\").click();\n```\n```html\n<form>\n  <select>\n    <option\n      selected=\"\"\n      value=\"2\"\n    >\n      2\n    </option>\n    <option\n      value=\"3\"\n    >\n      3\n    </option>\n  </select>\n  <button\n    type=\"reset\"\n  >\n    reset\n  </button>\n</form>\n<div>\n  2\n</div>\n<button\n  class=\"remove\"\n>\n  Remove option\n</button>\n<button\n  class=\"add\"\n>\n  Add option\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".remove\").click();\n```\n```html\n<form>\n  <select>\n    <option\n      selected=\"\"\n      value=\"3\"\n    >\n      3\n    </option>\n  </select>\n  <button\n    type=\"reset\"\n  >\n    reset\n  </button>\n</form>\n<div>\n  3\n</div>\n<button\n  class=\"remove\"\n>\n  Remove option\n</button>\n<button\n  class=\"add\"\n>\n  Add option\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".remove\").click();\n```\n```html\n<form>\n  <select />\n  <button\n    type=\"reset\"\n  >\n    reset\n  </button>\n</form>\n<div>\n  ‍\n</div>\n<button\n  class=\"remove\"\n>\n  Remove option\n</button>\n<button\n  class=\"add\"\n>\n  Add option\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".add\").click();\n```\n```html\n<form>\n  <select>\n    <option\n      selected=\"\"\n      value=\"3\"\n    >\n      3\n    </option>\n  </select>\n  <button\n    type=\"reset\"\n  >\n    reset\n  </button>\n</form>\n<div>\n  3\n</div>\n<button\n  class=\"remove\"\n>\n  Remove option\n</button>\n<button\n  class=\"add\"\n>\n  Add option\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".add\").click();\n```\n```html\n<form>\n  <select>\n    <option\n      value=\"2\"\n    >\n      2\n    </option>\n    <option\n      selected=\"\"\n      value=\"3\"\n    >\n      3\n    </option>\n  </select>\n  <button\n    type=\"reset\"\n  >\n    reset\n  </button>\n</form>\n<div>\n  3\n</div>\n<button\n  class=\"remove\"\n>\n  Remove option\n</button>\n<button\n  class=\"add\"\n>\n  Add option\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".add\").click();\n```\n```html\n<form>\n  <select>\n    <option\n      value=\"1\"\n    >\n      1\n    </option>\n    <option\n      value=\"2\"\n    >\n      2\n    </option>\n    <option\n      selected=\"\"\n      value=\"3\"\n    >\n      3\n    </option>\n  </select>\n  <button\n    type=\"reset\"\n  >\n    reset\n  </button>\n</form>\n<div>\n  3\n</div>\n<button\n  class=\"remove\"\n>\n  Remove option\n</button>\n<button\n  class=\"add\"\n>\n  Add option\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-mutated-option/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<form>\n  <select>\n    <option\n      selected=\"\"\n      value=\"1\"\n    >\n      1\n    </option>\n    <option\n      value=\"2\"\n    >\n      2\n    </option>\n    <option\n      value=\"3\"\n    >\n      3\n    </option>\n  </select>\n  <button\n    type=\"reset\"\n  >\n    reset\n  </button>\n</form>\n<div>\n  1\n</div>\n<button\n  class=\"remove\"\n>\n  Remove option\n</button>\n<button\n  class=\"add\"\n>\n  Add option\n</button>\n```\n\n# Mutations\n```\nINSERT form, div, button0, button1\nUPDATE form/select/option0[selected] null => \"\"\n```\n\n# Render\n```js\ncontainer.querySelector(\".remove\").click();\n```\n```html\n<form>\n  <select>\n    <option\n      selected=\"\"\n      value=\"2\"\n    >\n      2\n    </option>\n    <option\n      value=\"3\"\n    >\n      3\n    </option>\n  </select>\n  <button\n    type=\"reset\"\n  >\n    reset\n  </button>\n</form>\n<div>\n  2\n</div>\n<button\n  class=\"remove\"\n>\n  Remove option\n</button>\n<button\n  class=\"add\"\n>\n  Add option\n</button>\n```\n\n# Mutations\n```\nREMOVE option before form/select/option0\nUPDATE div/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\".remove\").click();\n```\n```html\n<form>\n  <select>\n    <option\n      selected=\"\"\n      value=\"3\"\n    >\n      3\n    </option>\n  </select>\n  <button\n    type=\"reset\"\n  >\n    reset\n  </button>\n</form>\n<div>\n  3\n</div>\n<button\n  class=\"remove\"\n>\n  Remove option\n</button>\n<button\n  class=\"add\"\n>\n  Add option\n</button>\n```\n\n# Mutations\n```\nREMOVE option before form/select/option\nUPDATE div/#text \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\".remove\").click();\n```\n```html\n<form>\n  <select />\n  <button\n    type=\"reset\"\n  >\n    reset\n  </button>\n</form>\n<div>\n  ‍\n</div>\n<button\n  class=\"remove\"\n>\n  Remove option\n</button>\n<button\n  class=\"add\"\n>\n  Add option\n</button>\n```\n\n# Mutations\n```\nREMOVE option in form/select\nUPDATE div/#text \"3\" => \"‍\"\n```\n\n# Render\n```js\ncontainer.querySelector(\".add\").click();\n```\n```html\n<form>\n  <select>\n    <option\n      selected=\"\"\n      value=\"3\"\n    >\n      3\n    </option>\n  </select>\n  <button\n    type=\"reset\"\n  >\n    reset\n  </button>\n</form>\n<div>\n  3\n</div>\n<button\n  class=\"remove\"\n>\n  Remove option\n</button>\n<button\n  class=\"add\"\n>\n  Add option\n</button>\n```\n\n# Mutations\n```\nINSERT form/select/option\nUPDATE div/#text \"‍\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\".add\").click();\n```\n```html\n<form>\n  <select>\n    <option\n      value=\"2\"\n    >\n      2\n    </option>\n    <option\n      selected=\"\"\n      value=\"3\"\n    >\n      3\n    </option>\n  </select>\n  <button\n    type=\"reset\"\n  >\n    reset\n  </button>\n</form>\n<div>\n  3\n</div>\n<button\n  class=\"remove\"\n>\n  Remove option\n</button>\n<button\n  class=\"add\"\n>\n  Add option\n</button>\n```\n\n# Mutations\n```\nINSERT form/select/option0\n```\n\n# Render\n```js\ncontainer.querySelector(\".add\").click();\n```\n```html\n<form>\n  <select>\n    <option\n      value=\"1\"\n    >\n      1\n    </option>\n    <option\n      value=\"2\"\n    >\n      2\n    </option>\n    <option\n      selected=\"\"\n      value=\"3\"\n    >\n      3\n    </option>\n  </select>\n  <button\n    type=\"reset\"\n  >\n    reset\n  </button>\n</form>\n<div>\n  3\n</div>\n<button\n  class=\"remove\"\n>\n  Remove option\n</button>\n<button\n  class=\"add\"\n>\n  Add option\n</button>\n```\n\n# Mutations\n```\nINSERT form/select/option0\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-mutated-option/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 584 (min) 311 (brotli)\nconst $for_content__$params = ($scope, $params2) =>\n    (($scope, opt) => {\n      (_._attr($scope.a, \"value\", opt), _._text($scope.b, opt));\n    })($scope, $params2[0]),\n  $for = _._for_of(0, \"<option> </option>\", \" D l\", 0, $for_content__$params),\n  $options__script = _._script(\"a1\", ($scope) => {\n    (_._on($scope.c, \"click\", function () {\n      $options($scope, $scope.e.slice(1));\n    }),\n      _._on($scope.d, \"click\", function () {\n        $options($scope, [\n          $scope.e?.length ? $scope.e?.[0] - 1 : 3,\n          ...$scope.e,\n        ]);\n      }));\n  }),\n  $options = _._let(4, ($scope) => {\n    ($options_($scope, $scope.e?.[0]),\n      $for($scope, [$scope.e, (v) => v]),\n      $options__script($scope));\n  }),\n  $value = _._let(6, ($scope) => {\n    (_._attr_select_value($scope, \"a\", $scope.g, $valueChange($scope)),\n      _._text($scope.b, $scope.g));\n  }),\n  $options_ = _._const(5, ($scope) => $value($scope, $scope.f));\nfunction $valueChange($scope) {\n  return (_new_value) => {\n    $value($scope, _new_value);\n  };\n}\n(_._script(\"a2\", ($scope) => {\n  (_._attr_select_value_script($scope, \"a\"),\n    _._on($scope.a, \"change\", console.log),\n    _._on($scope.a, \"input\", console.log));\n}),\n  _._resume(\"a0\", $valueChange),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-mutated-option/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<form><select></select><button type=reset>reset</button></form><div> </div><button class=remove>Remove option</button><button class=add>Add option</button>\";\nexport const $walks = /* next(1), get, out(1), next(1), get, out(1), get, over(1), get, over(1) */\"D lD l b b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for_content__opt = ($scope, opt) => {\n  _._attr($scope[\"#option/0\"], \"value\", opt);\n  _._text($scope[\"#text/1\"], opt);\n};\nconst $for_content__$params = ($scope, $params2) => $for_content__opt($scope, $params2[0]);\nconst $for = /* @__PURE__ */_._for_of(\"#select/0\", \"<option> </option>\", /* get, next(1), get, out(1) */\" D l\", 0, $for_content__$params);\nconst $options__script = _._script(\"__tests__/template.marko_0_options\", $scope => {\n  _._on($scope[\"#button/2\"], \"click\", function () {\n    $options($scope, $scope.options.slice(1));\n  });\n  _._on($scope[\"#button/3\"], \"click\", function () {\n    $options($scope, [$scope.options?.length ? $scope.options?.[0] - 1 : 3, ...$scope.options]);\n  });\n});\nconst $options = /* @__PURE__ */_._let(\"options/4\", $scope => {\n  $options_($scope, $scope.options?.[0]);\n  $for($scope, [$scope.options, v => v]);\n  $options__script($scope);\n});\nconst $value = /* @__PURE__ */_._let(\"value/6\", $scope => {\n  _._attr_select_value($scope, \"#select/0\", $scope.value, $valueChange($scope));\n  _._text($scope[\"#text/1\"], $scope.value);\n});\nconst $options_ = /* @__PURE__ */_._const(\"options_0\", $scope => $value($scope, $scope.options_0));\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => {\n  _._attr_select_value_script($scope, \"#select/0\");\n  _._on($scope[\"#select/0\"], \"change\", console.log);\n  _._on($scope[\"#select/0\"], \"input\", console.log);\n});\nexport function $setup($scope) {\n  $options($scope, [1, 2, 3]);\n  $setup__script($scope);\n}\nfunction $valueChange($scope) {\n  return _new_value => {\n    $value($scope, _new_value);\n  };\n}\n_._resume(\"__tests__/template.marko_0/valueChange\", $valueChange);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-mutated-option/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let options = [1, 2, 3];\n  let value = options[0];\n  _._attr_select_value($scope0_id, \"#select/0\", value, _._resume(_new_value => {\n    value = _new_value;\n  }, \"__tests__/template.marko_0/valueChange\", $scope0_id), () => {\n    _._html(\"<form><select>\");\n    _._for_of(options, opt => {\n      const $scope1_id = _._scope_id();\n      _._html(`<option${_._attr_option_value(opt)}>${_._escape(opt)}${_._el_resume($scope1_id, \"#text/1\")}</option>${_._el_resume($scope1_id, \"#option/0\")}`);\n      _._scope($scope1_id, {}, \"__tests__/template.marko\", \"5:6\");\n    }, v => v, $scope0_id, \"#select/0\", /* options */1, 1, /* options */1, \"</select>\", 1);\n  });\n  _._html(`<button type=reset>reset</button></form><div>${_._escape(value)}${_._el_resume($scope0_id, \"#text/1\")}</div><button class=remove>Remove option</button>${_._el_resume($scope0_id, \"#button/2\")}<button class=add>Add option</button>${_._el_resume($scope0_id, \"#button/3\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_options\");\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {\n    options\n  }, \"__tests__/template.marko\", 0, {\n    options: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-mutated-option/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<form>\n  <select>\n    <option\n      selected=\"\"\n      value=\"1\"\n    >\n      1\n    </option>\n    <option\n      value=\"2\"\n    >\n      2\n    </option>\n    <option\n      value=\"3\"\n    >\n      3\n    </option>\n  </select>\n  <button\n    type=\"reset\"\n  >\n    reset\n  </button>\n</form>\n<div>\n  1\n</div>\n<button\n  class=\"remove\"\n>\n  Remove option\n</button>\n<button\n  class=\"add\"\n>\n  Add option\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".remove\").click();\n```\n```html\n<form>\n  <select>\n    <option\n      selected=\"\"\n      value=\"2\"\n    >\n      2\n    </option>\n    <option\n      value=\"3\"\n    >\n      3\n    </option>\n  </select>\n  <button\n    type=\"reset\"\n  >\n    reset\n  </button>\n</form>\n<div>\n  2\n</div>\n<button\n  class=\"remove\"\n>\n  Remove option\n</button>\n<button\n  class=\"add\"\n>\n  Add option\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".remove\").click();\n```\n```html\n<form>\n  <select>\n    <option\n      selected=\"\"\n      value=\"3\"\n    >\n      3\n    </option>\n  </select>\n  <button\n    type=\"reset\"\n  >\n    reset\n  </button>\n</form>\n<div>\n  3\n</div>\n<button\n  class=\"remove\"\n>\n  Remove option\n</button>\n<button\n  class=\"add\"\n>\n  Add option\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".remove\").click();\n```\n```html\n<form>\n  <select />\n  <button\n    type=\"reset\"\n  >\n    reset\n  </button>\n</form>\n<div>\n  ‍\n</div>\n<button\n  class=\"remove\"\n>\n  Remove option\n</button>\n<button\n  class=\"add\"\n>\n  Add option\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".add\").click();\n```\n```html\n<form>\n  <select>\n    <option\n      selected=\"\"\n      value=\"3\"\n    >\n      3\n    </option>\n  </select>\n  <button\n    type=\"reset\"\n  >\n    reset\n  </button>\n</form>\n<div>\n  3\n</div>\n<button\n  class=\"remove\"\n>\n  Remove option\n</button>\n<button\n  class=\"add\"\n>\n  Add option\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".add\").click();\n```\n```html\n<form>\n  <select>\n    <option\n      value=\"2\"\n    >\n      2\n    </option>\n    <option\n      selected=\"\"\n      value=\"3\"\n    >\n      3\n    </option>\n  </select>\n  <button\n    type=\"reset\"\n  >\n    reset\n  </button>\n</form>\n<div>\n  3\n</div>\n<button\n  class=\"remove\"\n>\n  Remove option\n</button>\n<button\n  class=\"add\"\n>\n  Add option\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".add\").click();\n```\n```html\n<form>\n  <select>\n    <option\n      value=\"1\"\n    >\n      1\n    </option>\n    <option\n      value=\"2\"\n    >\n      2\n    </option>\n    <option\n      selected=\"\"\n      value=\"3\"\n    >\n      3\n    </option>\n  </select>\n  <button\n    type=\"reset\"\n  >\n    reset\n  </button>\n</form>\n<div>\n  3\n</div>\n<button\n  class=\"remove\"\n>\n  Remove option\n</button>\n<button\n  class=\"add\"\n>\n  Add option\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-mutated-option/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <form>\n      <select>\n        <option\n          selected=\"\"\n          value=\"1\"\n        >\n          1\n          <!--M_*2 #text/1-->\n        </option>\n        <!--M_*2 #option/0-->\n        <option\n          value=\"2\"\n        >\n          2\n          <!--M_*3 #text/1-->\n        </option>\n        <!--M_*3 #option/0-->\n        <option\n          value=\"3\"\n        >\n          3\n          <!--M_*4 #text/1-->\n        </option>\n        <!--M_*4 #option/0-->\n        <!--M_}1 #select/0 4 3 2-->\n      </select>\n      <button\n        type=\"reset\"\n      >\n        reset\n      </button>\n    </form>\n    <div>\n      1\n      <!--M_*1 #text/1-->\n    </div>\n    <button\n      class=\"remove\"\n    >\n      Remove option\n    </button>\n    <!--M_*1 #button/2-->\n    <button\n      class=\"add\"\n    >\n      Add option\n    </button>\n    <!--M_*1 #button/3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#select/0\": 3,\n          options: [1, 2, 3]\n        },\n        {\n          \"#LoopKey\": 1\n        },\n        {\n          \"#LoopKey\": 2\n        },\n        {\n          \"#LoopKey\": 3\n        }], _.a[\"ControlledHandler:#select/0\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_options 1 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".remove\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <form>\n      <select>\n        <!--M_*2 #option/0-->\n        <option\n          selected=\"\"\n          value=\"2\"\n        >\n          2\n          <!--M_*3 #text/1-->\n        </option>\n        <!--M_*3 #option/0-->\n        <option\n          value=\"3\"\n        >\n          3\n          <!--M_*4 #text/1-->\n        </option>\n        <!--M_*4 #option/0-->\n        <!--M_}1 #select/0 4 3 2-->\n      </select>\n      <button\n        type=\"reset\"\n      >\n        reset\n      </button>\n    </form>\n    <div>\n      2\n      <!--M_*1 #text/1-->\n    </div>\n    <button\n      class=\"remove\"\n    >\n      Remove option\n    </button>\n    <!--M_*1 #button/2-->\n    <button\n      class=\"add\"\n    >\n      Add option\n    </button>\n    <!--M_*1 #button/3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#select/0\": 3,\n          options: [1, 2, 3]\n        },\n        {\n          \"#LoopKey\": 1\n        },\n        {\n          \"#LoopKey\": 2\n        },\n        {\n          \"#LoopKey\": 3\n        }], _.a[\"ControlledHandler:#select/0\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_options 1 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE option before html/body/form/select/#comment0\nUPDATE html/body/div/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\".remove\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <form>\n      <select>\n        <!--M_*2 #option/0-->\n        <!--M_*3 #option/0-->\n        <option\n          selected=\"\"\n          value=\"3\"\n        >\n          3\n          <!--M_*4 #text/1-->\n        </option>\n        <!--M_*4 #option/0-->\n        <!--M_}1 #select/0 4 3 2-->\n      </select>\n      <button\n        type=\"reset\"\n      >\n        reset\n      </button>\n    </form>\n    <div>\n      3\n      <!--M_*1 #text/1-->\n    </div>\n    <button\n      class=\"remove\"\n    >\n      Remove option\n    </button>\n    <!--M_*1 #button/2-->\n    <button\n      class=\"add\"\n    >\n      Add option\n    </button>\n    <!--M_*1 #button/3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#select/0\": 3,\n          options: [1, 2, 3]\n        },\n        {\n          \"#LoopKey\": 1\n        },\n        {\n          \"#LoopKey\": 2\n        },\n        {\n          \"#LoopKey\": 3\n        }], _.a[\"ControlledHandler:#select/0\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_options 1 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE option after html/body/form/select/#comment0\nUPDATE html/body/div/#text \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\".remove\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <form>\n      <select />\n      <button\n        type=\"reset\"\n      >\n        reset\n      </button>\n    </form>\n    <div>\n      ‍\n      <!--M_*1 #text/1-->\n    </div>\n    <button\n      class=\"remove\"\n    >\n      Remove option\n    </button>\n    <!--M_*1 #button/2-->\n    <button\n      class=\"add\"\n    >\n      Add option\n    </button>\n    <!--M_*1 #button/3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#select/0\": 3,\n          options: [1, 2, 3]\n        },\n        {\n          \"#LoopKey\": 1\n        },\n        {\n          \"#LoopKey\": 2\n        },\n        {\n          \"#LoopKey\": 3\n        }], _.a[\"ControlledHandler:#select/0\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_options 1 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #comment, #comment, option, #comment, #comment in html/body/form/select\nUPDATE html/body/div/#text \"3\" => \"‍\"\n```\n\n# Render\n```js\ncontainer.querySelector(\".add\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <form>\n      <select>\n        <option\n          selected=\"\"\n          value=\"3\"\n        >\n          3\n        </option>\n      </select>\n      <button\n        type=\"reset\"\n      >\n        reset\n      </button>\n    </form>\n    <div>\n      3\n      <!--M_*1 #text/1-->\n    </div>\n    <button\n      class=\"remove\"\n    >\n      Remove option\n    </button>\n    <!--M_*1 #button/2-->\n    <button\n      class=\"add\"\n    >\n      Add option\n    </button>\n    <!--M_*1 #button/3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#select/0\": 3,\n          options: [1, 2, 3]\n        },\n        {\n          \"#LoopKey\": 1\n        },\n        {\n          \"#LoopKey\": 2\n        },\n        {\n          \"#LoopKey\": 3\n        }], _.a[\"ControlledHandler:#select/0\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_options 1 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/form/select/option\nUPDATE html/body/div/#text \"‍\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\".add\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <form>\n      <select>\n        <option\n          value=\"2\"\n        >\n          2\n        </option>\n        <option\n          selected=\"\"\n          value=\"3\"\n        >\n          3\n        </option>\n      </select>\n      <button\n        type=\"reset\"\n      >\n        reset\n      </button>\n    </form>\n    <div>\n      3\n      <!--M_*1 #text/1-->\n    </div>\n    <button\n      class=\"remove\"\n    >\n      Remove option\n    </button>\n    <!--M_*1 #button/2-->\n    <button\n      class=\"add\"\n    >\n      Add option\n    </button>\n    <!--M_*1 #button/3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#select/0\": 3,\n          options: [1, 2, 3]\n        },\n        {\n          \"#LoopKey\": 1\n        },\n        {\n          \"#LoopKey\": 2\n        },\n        {\n          \"#LoopKey\": 3\n        }], _.a[\"ControlledHandler:#select/0\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_options 1 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/form/select/option0\n```\n\n# Render\n```js\ncontainer.querySelector(\".add\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <form>\n      <select>\n        <option\n          value=\"1\"\n        >\n          1\n        </option>\n        <option\n          value=\"2\"\n        >\n          2\n        </option>\n        <option\n          selected=\"\"\n          value=\"3\"\n        >\n          3\n        </option>\n      </select>\n      <button\n        type=\"reset\"\n      >\n        reset\n      </button>\n    </form>\n    <div>\n      3\n      <!--M_*1 #text/1-->\n    </div>\n    <button\n      class=\"remove\"\n    >\n      Remove option\n    </button>\n    <!--M_*1 #button/2-->\n    <button\n      class=\"add\"\n    >\n      Add option\n    </button>\n    <!--M_*1 #button/3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#select/0\": 3,\n          options: [1, 2, 3]\n        },\n        {\n          \"#LoopKey\": 1\n        },\n        {\n          \"#LoopKey\": 2\n        },\n        {\n          \"#LoopKey\": 3\n        }], _.a[\"ControlledHandler:#select/0\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_options 1 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/form/select/option0\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-mutated-option/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<form>\n  <select>\n    <option\n      selected=\"\"\n      value=\"1\"\n    >\n      1\n    </option>\n    <option\n      value=\"2\"\n    >\n      2\n    </option>\n    <option\n      value=\"3\"\n    >\n      3\n    </option>\n  </select>\n  <button\n    type=\"reset\"\n  >\n    reset\n  </button>\n</form>\n<div>\n  1\n</div>\n<button\n  class=\"remove\"\n>\n  Remove option\n</button>\n<button\n  class=\"add\"\n>\n  Add option\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-mutated-option/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <form><select><option value=1 selected>1<!--M_*2 #text/1--></option><!--M_*2 #option/0--><option value=2>2<!--M_*3 #text/1--></option><!--M_*3 #option/0--><option value=3>3<!--M_*4 #text/1--></option><!--M_*4 #option/0--><!--M_}1 #select/0 4 3 2--></select><button type=reset>reset</button></form><div>1<!--M_*1 #text/1--></div><button class=remove>Remove option</button><!--M_*1 #button/2--><button class=add>Add option</button><!--M_*1 #button/3--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={\"ControlledType:#select/0\":3,options:[1,2,3]},{\"#LoopKey\":1},{\"#LoopKey\":2},{\"#LoopKey\":3}],_.a[\"ControlledHandler:#select/0\"]=_._[\"__tests__/template.marko_0/valueChange\"](_.a),_.b),\"__tests__/template.marko_0_options 1 __tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <form>\n      <select>\n        <option\n          selected=\"\"\n          value=\"1\"\n        >\n          1\n          <!--M_*2 #text/1-->\n        </option>\n        <!--M_*2 #option/0-->\n        <option\n          value=\"2\"\n        >\n          2\n          <!--M_*3 #text/1-->\n        </option>\n        <!--M_*3 #option/0-->\n        <option\n          value=\"3\"\n        >\n          3\n          <!--M_*4 #text/1-->\n        </option>\n        <!--M_*4 #option/0-->\n        <!--M_}1 #select/0 4 3 2-->\n      </select>\n      <button\n        type=\"reset\"\n      >\n        reset\n      </button>\n    </form>\n    <div>\n      1\n      <!--M_*1 #text/1-->\n    </div>\n    <button\n      class=\"remove\"\n    >\n      Remove option\n    </button>\n    <!--M_*1 #button/2-->\n    <button\n      class=\"add\"\n    >\n      Add option\n    </button>\n    <!--M_*1 #button/3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#select/0\": 3,\n          options: [1, 2, 3]\n        },\n        {\n          \"#LoopKey\": 1\n        },\n        {\n          \"#LoopKey\": 2\n        },\n        {\n          \"#LoopKey\": 3\n        }], _.a[\"ControlledHandler:#select/0\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_options 1 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/form\nINSERT html/body/form/select\nINSERT html/body/form/select/option0\nINSERT html/body/form/select/option0/#text\nINSERT html/body/form/select/option0/#comment\nINSERT html/body/form/select/#comment0\nINSERT html/body/form/select/option1\nINSERT html/body/form/select/option1/#text\nINSERT html/body/form/select/option1/#comment\nINSERT html/body/form/select/#comment1\nINSERT html/body/form/select/option2\nINSERT html/body/form/select/option2/#text\nINSERT html/body/form/select/option2/#comment\nINSERT html/body/form/select/#comment2\nINSERT html/body/form/select/#comment3\nINSERT html/body/form/button\nINSERT html/body/form/button/#text\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/div/#comment\nINSERT html/body/button0\nINSERT html/body/button0/#text\nINSERT html/body/#comment0\nINSERT html/body/button1\nINSERT html/body/button1/#text\nINSERT html/body/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-mutated-option/template.marko",
    "content": "<let/options = [1,2,3]/>\n<let/value=options[0]/>\n<form>\n  <select value:=value onChange=console.log onInput=console.log>\n    <for|opt| of=options by=v=>v>\n      <option value=opt>${opt}</>\n    </>\n  </select>\n  <button type=\"reset\">reset</>\n</form>\n<div>${value}</div>\n<button.remove onClick() {\n  options = options.slice(1)\n}>Remove option</>\n\n<button.add onClick() {\n  options = [options.length ? options[0] - 1 : 3, ...options];\n}>Add option</>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-mutated-option/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction clickAdd(container: Element) {\n  container.querySelector<HTMLButtonElement>(\".add\")!.click();\n}\n\nfunction clickRemove(container: Element) {\n  container.querySelector<HTMLButtonElement>(\".remove\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [\n    {},\n    clickRemove,\n    clickRemove,\n    clickRemove,\n    clickAdd,\n    clickAdd,\n    clickAdd,\n  ],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-spread/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$input__script\": \"n\",\n      \"$$input\": \"a\",\n      \"$$myselect_content\": \"e\",\n      \"$$value\": \"r\",\n      \"$$valueChange\": \"i\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-spread/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<select>\n  <option\n    value=\"a\"\n  >\n    A\n  </option>\n  <option\n    selected=\"\"\n    value=\"b\"\n  >\n    B\n  </option>\n  <option\n    value=\"c\"\n  >\n    C\n  </option>\n</select>\n<span>\n  b\n</span>\n```\n\n\n# Render\n```js\nconst select = container.querySelector(`select`);\nconst window = select.ownerDocument.defaultView;\nselect.value = \"c\";\nselect.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<select>\n  <option\n    value=\"a\"\n  >\n    A\n  </option>\n  <option\n    default-selected=\"\"\n    value=\"b\"\n  >\n    B\n  </option>\n  <option\n    selected=\"\"\n    value=\"c\"\n  >\n    C\n  </option>\n</select>\n<span>\n  c\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-spread/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<select>\n  <option\n    value=\"a\"\n  >\n    A\n  </option>\n  <option\n    selected=\"\"\n    value=\"b\"\n  >\n    B\n  </option>\n  <option\n    value=\"c\"\n  >\n    C\n  </option>\n</select>\n<span>\n  b\n</span>\n```\n\n# Mutations\n```\nINSERT select, span\nUPDATE select/option1[selected] null => \"\"\n```\n\n# Render\n```js\nconst select = container.querySelector(`select`);\nconst window = select.ownerDocument.defaultView;\nselect.value = \"c\";\nselect.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<select>\n  <option\n    value=\"a\"\n  >\n    A\n  </option>\n  <option\n    default-selected=\"\"\n    value=\"b\"\n  >\n    B\n  </option>\n  <option\n    selected=\"\"\n    value=\"c\"\n  >\n    C\n  </option>\n</select>\n<span>\n  c\n</span>\n```\n\n# Mutations\n```\nUPDATE span/#text \"b\" => \"c\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-spread/__snapshots__/dom.expected/tags/my-select.js",
    "content": "export const $template = \"<select></select>\";\nexport const $walks = /* get, over(1) */\" b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $input__script = _._script(\"__tests__/tags/my-select.marko_0_input\", $scope => _._attrs_script($scope, \"#select/0\"));\nexport const $input = /* @__PURE__ */_._const(\"input\", $scope => {\n  _._attrs_content($scope, \"#select/0\", $scope.input);\n  $input__script($scope);\n});\nexport default /* @__PURE__ */_._template(\"__tests__/tags/my-select.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-spread/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 359 (min) 191 (brotli)\nconst $input__script = _._script(\"a0\", ($scope) =>\n    _._attrs_script($scope, \"a\"),\n  ),\n  $input = _._const(2, ($scope) => {\n    (_._attrs_content($scope, \"a\", $scope.c), $input__script($scope));\n  }),\n  $myselect_content = _._content_resume(\n    \"b1\",\n    \"<option value=a>A</option><option value=b>B</option><option value=c>C</option>\",\n    \"d\",\n  ),\n  $value = _._let(2, ($scope) => {\n    ($input($scope.a, {\n      value: $scope.c,\n      valueChange: $valueChange($scope),\n      content: $myselect_content($scope),\n    }),\n      _._text($scope.b, $scope.c));\n  });\nfunction $valueChange($scope) {\n  return function (v) {\n    $value($scope, v);\n  };\n}\n(_._resume(\"b0\", $valueChange), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-spread/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `${_mySelect_template}<span> </span>`;\nexport const $walks = /* <my-select>, next(1), get, out(1) */`/${_mySelect_walks}&D l`;\nimport { $setup as _mySelect, $input as _mySelect_input, $template as _mySelect_template, $walks as _mySelect_walks } from \"./tags/my-select.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $myselect_content = _._content_resume(\"__tests__/template.marko_1_content\", \"<option value=a>A</option><option value=b>B</option><option value=c>C</option>\", /* over(3) */\"d\");\nconst $value = /* @__PURE__ */_._let(\"value/2\", $scope => {\n  _mySelect_input($scope[\"#childScope/0\"], {\n    value: $scope.value,\n    valueChange: $valueChange($scope),\n    content: $myselect_content($scope)\n  });\n  _._text($scope[\"#text/1\"], $scope.value);\n});\nexport function $setup($scope) {\n  _mySelect($scope[\"#childScope/0\"]);\n  $value($scope, \"b\");\n}\nfunction $valueChange($scope) {\n  return function (v) {\n    $value($scope, v);\n  };\n}\n_._resume(\"__tests__/template.marko_0/valueChange\", $valueChange);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-spread/__snapshots__/html.expected/tags/my-select.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/my-select.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $select_input = input;\n  _._html(\"<select\");\n  _._attr_select_value($scope0_id, \"#select/0\", $select_input.value, $select_input.valueChange, () => {\n    _._attrs_content($select_input, \"#select/0\", $scope0_id, \"select\");\n    _._html(\"</select>\");\n  });\n  _._html(_._el_resume($scope0_id, \"#select/0\"));\n  _._script($scope0_id, \"__tests__/tags/my-select.marko_0_input\");\n  _._scope($scope0_id, {\n    input\n  }, \"__tests__/tags/my-select.marko\", 0, {\n    input: 0\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-spread/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _mySelect from \"./tags/my-select.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let value = \"b\";\n  const $childScope = _._peek_scope_id();\n  _mySelect({\n    value: value,\n    valueChange: _._resume(function (v) {\n      value = v;\n    }, \"__tests__/template.marko_0/valueChange\", $scope0_id),\n    content: _._content_resume(\"__tests__/template.marko_1_content\", () => {\n      _._scope_reason();\n      const $scope1_id = _._scope_id();\n      _._html(`<option${_._attr_option_value(\"a\")}>A</option><option${_._attr_option_value(\"b\")}>B</option><option${_._attr_option_value(\"c\")}>C</option>`);\n    }, $scope0_id)\n  });\n  _._html(`<span>${_._escape(value)}${_._el_resume($scope0_id, \"#text/1\")}</span>`);\n  _._scope($scope0_id, {\n    \"#childScope/0\": _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-spread/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<select>\n  <option\n    value=\"a\"\n  >\n    A\n  </option>\n  <option\n    selected=\"\"\n    value=\"b\"\n  >\n    B\n  </option>\n  <option\n    value=\"c\"\n  >\n    C\n  </option>\n</select>\n<span>\n  b\n</span>\n```\n\n\n# Render\n```js\nconst select = container.querySelector(`select`);\nconst window = select.ownerDocument.defaultView;\nselect.value = \"c\";\nselect.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<select>\n  <option\n    value=\"a\"\n  >\n    A\n  </option>\n  <option\n    default-selected=\"\"\n    value=\"b\"\n  >\n    B\n  </option>\n  <option\n    selected=\"\"\n    value=\"c\"\n  >\n    C\n  </option>\n</select>\n<span>\n  c\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-spread/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <select>\n      <option\n        value=\"a\"\n      >\n        A\n      </option>\n      <option\n        selected=\"\"\n        value=\"b\"\n      >\n        B\n      </option>\n      <option\n        value=\"c\"\n      >\n        C\n      </option>\n    </select>\n    <!--M_*2 #select/0-->\n    <span>\n      b\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.e = {\n            \"#childScope/0\": _.a = {\n              \"ControlledType:#select/0\": 3,\n              \"BranchScopes:#select/0\": _.c = {},\n              \"ConditionalRenderer:#select/0\": \"__tests__/template.marko_1_content\",\n              input: _.b = {\n                value: \"b\"\n              }\n            }\n          }, _.a, _.c], _.a[\"ControlledHandler:#select/0\"] = _.b.valueChange =\n          _._[\n            \"__tests__/template.marko_0/valueChange\"\n            ](_.e), _.b.content = _._[\n            \"__tests__/template.marko_1_content\"\n            ](_.e), _.d),\n        \"__tests__/tags/my-select.marko_0_input 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\nconst select = container.querySelector(`select`);\nconst window = select.ownerDocument.defaultView;\nselect.value = \"c\";\nselect.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<html>\n  <head />\n  <body>\n    <select>\n      <option\n        value=\"a\"\n      >\n        A\n      </option>\n      <option\n        default-selected=\"\"\n        value=\"b\"\n      >\n        B\n      </option>\n      <option\n        selected=\"\"\n        value=\"c\"\n      >\n        C\n      </option>\n    </select>\n    <!--M_*2 #select/0-->\n    <span>\n      c\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.e = {\n            \"#childScope/0\": _.a = {\n              \"ControlledType:#select/0\": 3,\n              \"BranchScopes:#select/0\": _.c = {},\n              \"ConditionalRenderer:#select/0\": \"__tests__/template.marko_1_content\",\n              input: _.b = {\n                value: \"b\"\n              }\n            }\n          }, _.a, _.c], _.a[\"ControlledHandler:#select/0\"] = _.b.valueChange =\n          _._[\n            \"__tests__/template.marko_0/valueChange\"\n            ](_.e), _.b.content = _._[\n            \"__tests__/template.marko_1_content\"\n            ](_.e), _.d),\n        \"__tests__/tags/my-select.marko_0_input 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"b\" => \"c\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-spread/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<select>\n  <option\n    value=\"a\"\n  >\n    A\n  </option>\n  <option\n    selected=\"\"\n    value=\"b\"\n  >\n    B\n  </option>\n  <option\n    value=\"c\"\n  >\n    C\n  </option>\n</select>\n<span>\n  b\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-spread/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <select><option value=a>A</option><option value=b selected>B</option><option value=c>C</option></select><!--M_*2 #select/0--><span>b<!--M_*1 #text/1--></span><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.d=[0,_.e={\"#childScope/0\":_.a={\"ControlledType:#select/0\":3,\"BranchScopes:#select/0\":_.c={},\"ConditionalRenderer:#select/0\":\"__tests__/template.marko_1_content\",input:_.b={value:\"b\"}}},_.a,_.c],_.a[\"ControlledHandler:#select/0\"]=_.b.valueChange=_._[\"__tests__/template.marko_0/valueChange\"](_.e),_.b.content=_._[\"__tests__/template.marko_1_content\"](_.e),_.d),\"__tests__/tags/my-select.marko_0_input 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <select>\n      <option\n        value=\"a\"\n      >\n        A\n      </option>\n      <option\n        selected=\"\"\n        value=\"b\"\n      >\n        B\n      </option>\n      <option\n        value=\"c\"\n      >\n        C\n      </option>\n    </select>\n    <!--M_*2 #select/0-->\n    <span>\n      b\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.e = {\n            \"#childScope/0\": _.a = {\n              \"ControlledType:#select/0\": 3,\n              \"BranchScopes:#select/0\": _.c = {},\n              \"ConditionalRenderer:#select/0\": \"__tests__/template.marko_1_content\",\n              input: _.b = {\n                value: \"b\"\n              }\n            }\n          }, _.a, _.c], _.a[\"ControlledHandler:#select/0\"] = _.b.valueChange =\n          _._[\n            \"__tests__/template.marko_0/valueChange\"\n            ](_.e), _.b.content = _._[\n            \"__tests__/template.marko_1_content\"\n            ](_.e), _.d),\n        \"__tests__/tags/my-select.marko_0_input 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/select\nINSERT html/body/select/option0\nINSERT html/body/select/option0/#text\nINSERT html/body/select/option1\nINSERT html/body/select/option1/#text\nINSERT html/body/select/option2\nINSERT html/body/select/option2/#text\nINSERT html/body/#comment\nINSERT html/body/span\nINSERT html/body/span/#text\nINSERT html/body/span/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-spread/tags/my-select.marko",
    "content": "<select ...input />"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-spread/template.marko",
    "content": "<let/value = \"b\"/>\n<my-select value=value valueChange(v) { value=v }>\n  <option value=\"a\">A</option>\n  <option value=\"b\">B</option>\n  <option value=\"c\">C</option>\n</>\n<span>${value}</span>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-spread/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction selectC(container: Element) {\n  const select = container.querySelector(`select`)!;\n  const window = select.ownerDocument.defaultView!;\n  select.value = \"c\";\n  select.dispatchEvent(new window.Event(\"input\", { bubbles: true }));\n}\n\nexport const config: TestConfig = {\n  steps: [{}, selectC],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-value-number/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"r\",\n      \"$$selected\": \"a\",\n      \"$$valueChange\": \"e\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-value-number/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<select>\n  <option\n    value=\"0\"\n  />\n  <option\n    selected=\"\"\n    value=\"1\"\n  />\n  <option\n    value=\"2\"\n  />\n</select>\n<span>\n  1\n</span>\n<button>\n  Reset\n</button>\n```\n\n\n# Render\n```js\nselectIndex(container, 0);\n```\n```html\n<select>\n  <option\n    selected=\"\"\n    value=\"0\"\n  />\n  <option\n    default-selected=\"\"\n    value=\"1\"\n  />\n  <option\n    value=\"2\"\n  />\n</select>\n<span>\n  0\n</span>\n<button>\n  Reset\n</button>\n```\n\n\n# Render\n```js\nselectIndex(container, 1);\n```\n```html\n<select>\n  <option\n    value=\"0\"\n  />\n  <option\n    selected=\"\"\n    value=\"1\"\n  />\n  <option\n    value=\"2\"\n  />\n</select>\n<span>\n  1\n</span>\n<button>\n  Reset\n</button>\n```\n\n\n# Render\n```js\nselectIndex(container, 2);\n```\n```html\n<select>\n  <option\n    value=\"0\"\n  />\n  <option\n    default-selected=\"\"\n    value=\"1\"\n  />\n  <option\n    selected=\"\"\n    value=\"2\"\n  />\n</select>\n<span>\n  2\n</span>\n<button>\n  Reset\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<select>\n  <option\n    value=\"0\"\n  />\n  <option\n    selected=\"\"\n    value=\"1\"\n  />\n  <option\n    value=\"2\"\n  />\n</select>\n<span>\n  1\n</span>\n<button>\n  Reset\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-value-number/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<select>\n  <option\n    value=\"0\"\n  />\n  <option\n    selected=\"\"\n    value=\"1\"\n  />\n  <option\n    value=\"2\"\n  />\n</select>\n<span>\n  1\n</span>\n<button>\n  Reset\n</button>\n```\n\n# Mutations\n```\nINSERT select, span, button\nUPDATE select/option1[selected] null => \"\"\n```\n\n# Render\n```js\nselectIndex(container, 0);\n```\n```html\n<select>\n  <option\n    selected=\"\"\n    value=\"0\"\n  />\n  <option\n    default-selected=\"\"\n    value=\"1\"\n  />\n  <option\n    value=\"2\"\n  />\n</select>\n<span>\n  0\n</span>\n<button>\n  Reset\n</button>\n```\n\n# Mutations\n```\nUPDATE span/#text \"1\" => \"0\"\n```\n\n# Render\n```js\nselectIndex(container, 1);\n```\n```html\n<select>\n  <option\n    value=\"0\"\n  />\n  <option\n    selected=\"\"\n    value=\"1\"\n  />\n  <option\n    value=\"2\"\n  />\n</select>\n<span>\n  1\n</span>\n<button>\n  Reset\n</button>\n```\n\n# Mutations\n```\nUPDATE span/#text \"0\" => \"1\"\n```\n\n# Render\n```js\nselectIndex(container, 2);\n```\n```html\n<select>\n  <option\n    value=\"0\"\n  />\n  <option\n    default-selected=\"\"\n    value=\"1\"\n  />\n  <option\n    selected=\"\"\n    value=\"2\"\n  />\n</select>\n<span>\n  2\n</span>\n<button>\n  Reset\n</button>\n```\n\n# Mutations\n```\nUPDATE span/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<select>\n  <option\n    value=\"0\"\n  />\n  <option\n    selected=\"\"\n    value=\"1\"\n  />\n  <option\n    value=\"2\"\n  />\n</select>\n<span>\n  1\n</span>\n<button>\n  Reset\n</button>\n```\n\n# Mutations\n```\nUPDATE span/#text \"2\" => \"1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-value-number/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 235 (min) 141 (brotli)\nconst $selected = _._let(3, ($scope) => {\n  (_._attr_select_value($scope, \"a\", $scope.d, $valueChange($scope)),\n    _._text($scope.b, $scope.d));\n});\nfunction $valueChange($scope) {\n  return function (v) {\n    $selected($scope, +v);\n  };\n}\n(_._script(\"a1\", ($scope) => {\n  (_._attr_select_value_script($scope, \"a\"),\n    _._on($scope.c, \"click\", function () {\n      $selected($scope, 1);\n    }));\n}),\n  _._resume(\"a0\", $valueChange),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-value-number/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<select><option value=0></option><option value=1></option><option value=2></option></select><span> </span><button>Reset</button>\";\nexport const $walks = /* get, over(1), next(1), get, out(1), get, over(1) */\" bD l b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $selected = /* @__PURE__ */_._let(\"selected/3\", $scope => {\n  _._attr_select_value($scope, \"#select/0\", $scope.selected, $valueChange($scope));\n  _._text($scope[\"#text/1\"], $scope.selected);\n});\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => {\n  _._attr_select_value_script($scope, \"#select/0\");\n  _._on($scope[\"#button/2\"], \"click\", function () {\n    $selected($scope, 1);\n  });\n});\nexport function $setup($scope) {\n  $selected($scope, 1);\n  $setup__script($scope);\n}\nfunction $valueChange($scope) {\n  return function (v) {\n    $selected($scope, +v);\n  };\n}\n_._resume(\"__tests__/template.marko_0/valueChange\", $valueChange);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-value-number/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let selected = 1;\n  _._attr_select_value($scope0_id, \"#select/0\", selected, _._resume(function (v) {\n    selected = +v;\n  }, \"__tests__/template.marko_0/valueChange\", $scope0_id), () => {\n    _._html(`<select><option${_._attr_option_value(0)}></option><option${_._attr_option_value(\"1\")}></option><option${_._attr_option_value(2)}></option></select>`);\n  });\n  _._html(`${_._el_resume($scope0_id, \"#select/0\")}<span>${_._escape(selected)}${_._el_resume($scope0_id, \"#text/1\")}</span><button>Reset</button>${_._el_resume($scope0_id, \"#button/2\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-value-number/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<select>\n  <option\n    value=\"0\"\n  />\n  <option\n    selected=\"\"\n    value=\"1\"\n  />\n  <option\n    value=\"2\"\n  />\n</select>\n<span>\n  1\n</span>\n<button>\n  Reset\n</button>\n```\n\n\n# Render\n```js\nselectIndex(container, 0);\n```\n```html\n<select>\n  <option\n    selected=\"\"\n    value=\"0\"\n  />\n  <option\n    default-selected=\"\"\n    value=\"1\"\n  />\n  <option\n    value=\"2\"\n  />\n</select>\n<span>\n  0\n</span>\n<button>\n  Reset\n</button>\n```\n\n\n# Render\n```js\nselectIndex(container, 1);\n```\n```html\n<select>\n  <option\n    value=\"0\"\n  />\n  <option\n    selected=\"\"\n    value=\"1\"\n  />\n  <option\n    value=\"2\"\n  />\n</select>\n<span>\n  1\n</span>\n<button>\n  Reset\n</button>\n```\n\n\n# Render\n```js\nselectIndex(container, 2);\n```\n```html\n<select>\n  <option\n    value=\"0\"\n  />\n  <option\n    default-selected=\"\"\n    value=\"1\"\n  />\n  <option\n    selected=\"\"\n    value=\"2\"\n  />\n</select>\n<span>\n  2\n</span>\n<button>\n  Reset\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<select>\n  <option\n    value=\"0\"\n  />\n  <option\n    selected=\"\"\n    value=\"1\"\n  />\n  <option\n    value=\"2\"\n  />\n</select>\n<span>\n  1\n</span>\n<button>\n  Reset\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-value-number/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <select>\n      <option\n        value=\"0\"\n      />\n      <option\n        selected=\"\"\n        value=\"1\"\n      />\n      <option\n        value=\"2\"\n      />\n    </select>\n    <!--M_*1 #select/0-->\n    <span>\n      1\n      <!--M_*1 #text/1-->\n    </span>\n    <button>\n      Reset\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#select/0\": 3\n        }], _.a[\"ControlledHandler:#select/0\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\nselectIndex(container, 0);\n```\n```html\n<html>\n  <head />\n  <body>\n    <select>\n      <option\n        selected=\"\"\n        value=\"0\"\n      />\n      <option\n        default-selected=\"\"\n        value=\"1\"\n      />\n      <option\n        value=\"2\"\n      />\n    </select>\n    <!--M_*1 #select/0-->\n    <span>\n      0\n      <!--M_*1 #text/1-->\n    </span>\n    <button>\n      Reset\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#select/0\": 3\n        }], _.a[\"ControlledHandler:#select/0\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"1\" => \"0\"\n```\n\n# Render\n```js\nselectIndex(container, 1);\n```\n```html\n<html>\n  <head />\n  <body>\n    <select>\n      <option\n        value=\"0\"\n      />\n      <option\n        selected=\"\"\n        value=\"1\"\n      />\n      <option\n        value=\"2\"\n      />\n    </select>\n    <!--M_*1 #select/0-->\n    <span>\n      1\n      <!--M_*1 #text/1-->\n    </span>\n    <button>\n      Reset\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#select/0\": 3\n        }], _.a[\"ControlledHandler:#select/0\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"0\" => \"1\"\n```\n\n# Render\n```js\nselectIndex(container, 2);\n```\n```html\n<html>\n  <head />\n  <body>\n    <select>\n      <option\n        value=\"0\"\n      />\n      <option\n        default-selected=\"\"\n        value=\"1\"\n      />\n      <option\n        selected=\"\"\n        value=\"2\"\n      />\n    </select>\n    <!--M_*1 #select/0-->\n    <span>\n      2\n      <!--M_*1 #text/1-->\n    </span>\n    <button>\n      Reset\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#select/0\": 3\n        }], _.a[\"ControlledHandler:#select/0\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <select>\n      <option\n        value=\"0\"\n      />\n      <option\n        selected=\"\"\n        value=\"1\"\n      />\n      <option\n        value=\"2\"\n      />\n    </select>\n    <!--M_*1 #select/0-->\n    <span>\n      1\n      <!--M_*1 #text/1-->\n    </span>\n    <button>\n      Reset\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#select/0\": 3\n        }], _.a[\"ControlledHandler:#select/0\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"2\" => \"1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-value-number/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<select>\n  <option\n    value=\"0\"\n  />\n  <option\n    selected=\"\"\n    value=\"1\"\n  />\n  <option\n    value=\"2\"\n  />\n</select>\n<span>\n  1\n</span>\n<button>\n  Reset\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-value-number/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <select><option value=0></option><option value=1 selected></option><option value=2></option></select><!--M_*1 #select/0--><span>1<!--M_*1 #text/1--></span><button>Reset</button><!--M_*1 #button/2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={\"ControlledType:#select/0\":3}],_.a[\"ControlledHandler:#select/0\"]=_._[\"__tests__/template.marko_0/valueChange\"](_.a),_.b),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <select>\n      <option\n        value=\"0\"\n      />\n      <option\n        selected=\"\"\n        value=\"1\"\n      />\n      <option\n        value=\"2\"\n      />\n    </select>\n    <!--M_*1 #select/0-->\n    <span>\n      1\n      <!--M_*1 #text/1-->\n    </span>\n    <button>\n      Reset\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#select/0\": 3\n        }], _.a[\"ControlledHandler:#select/0\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/select\nINSERT html/body/select/option0\nINSERT html/body/select/option1\nINSERT html/body/select/option2\nINSERT html/body/#comment0\nINSERT html/body/span\nINSERT html/body/span/#text\nINSERT html/body/span/#comment\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-value-number/template.marko",
    "content": "<let/selected=1/>\n\n<select value=selected valueChange(v) { selected = +v }>\n  <option value=0/>\n  <option value=\"1\"/>\n  <option value=2/>\n</select>\n\n<span>${selected}</span>\n\n<button onClick() { selected = 1 }>\n  Reset\n</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-select-value-number/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction select0(container: Element) {\n  selectIndex(container, 0);\n}\n\nfunction select1(container: Element) {\n  selectIndex(container, 1);\n}\n\nfunction select2(container: Element) {\n  selectIndex(container, 2);\n}\n\nfunction reset(container: Element) {\n  container.querySelector<HTMLButtonElement>(\"button\")!.click();\n}\n\nfunction selectIndex(container: Element, index: number) {\n  const select = container.querySelector<HTMLSelectElement>(`select`)!;\n  select.value = select.options[index].value;\n  select.dispatchEvent(\n    new select.ownerDocument.defaultView!.Event(\"input\", { bubbles: true }),\n  );\n}\n\nexport const config: TestConfig = {\n  steps: [{}, select0, select1, select2, reset],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-textarea-value/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"a\",\n      \"$$value\": \"r\",\n      \"$$valueChange\": \"e\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-textarea-value/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<textarea>\n  hello\n</textarea>\n<span>\n  hello\n</span>\n```\n\n\n# Render\n```js\nconst textarea = container.querySelector(\"textarea\");\nconst window = textarea.ownerDocument.defaultView;\ntextarea.value = value;\ntextarea.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<textarea\n  default-value=\"hello\"\n>\n  w\n</textarea>\n<span>\n  w\n</span>\n```\n\n\n# Render\n```js\nconst textarea = container.querySelector(\"textarea\");\nconst window = textarea.ownerDocument.defaultView;\ntextarea.value = value;\ntextarea.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<textarea\n  default-value=\"hello\"\n>\n  wor\n</textarea>\n<span>\n  wor\n</span>\n```\n\n\n# Render\n```js\nconst textarea = container.querySelector(\"textarea\");\nconst window = textarea.ownerDocument.defaultView;\ntextarea.value = value;\ntextarea.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<textarea\n  default-value=\"hello\"\n>\n  world\n</textarea>\n<span>\n  world\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-textarea-value/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<textarea>\n  hello\n</textarea>\n<span>\n  hello\n</span>\n```\n\n# Mutations\n```\nINSERT textarea, span\n```\n\n# Render\n```js\nconst textarea = container.querySelector(\"textarea\");\nconst window = textarea.ownerDocument.defaultView;\ntextarea.value = value;\ntextarea.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<textarea\n  default-value=\"hello\"\n>\n  w\n</textarea>\n<span>\n  w\n</span>\n```\n\n# Mutations\n```\nUPDATE span/#text \"hello\" => \"w\"\n```\n\n# Render\n```js\nconst textarea = container.querySelector(\"textarea\");\nconst window = textarea.ownerDocument.defaultView;\ntextarea.value = value;\ntextarea.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<textarea\n  default-value=\"hello\"\n>\n  wor\n</textarea>\n<span>\n  wor\n</span>\n```\n\n# Mutations\n```\nUPDATE span/#text \"w\" => \"wor\"\n```\n\n# Render\n```js\nconst textarea = container.querySelector(\"textarea\");\nconst window = textarea.ownerDocument.defaultView;\ntextarea.value = value;\ntextarea.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<textarea\n  default-value=\"hello\"\n>\n  world\n</textarea>\n<span>\n  world\n</span>\n```\n\n# Mutations\n```\nUPDATE span/#text \"wor\" => \"world\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-textarea-value/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 190 (min) 119 (brotli)\nconst $value = _._let(2, ($scope) => {\n  (_._attr_textarea_value($scope, \"a\", $scope.c, $valueChange($scope)),\n    _._text($scope.b, $scope.c));\n});\nfunction $valueChange($scope) {\n  return (_new_value) => {\n    $value($scope, _new_value);\n  };\n}\n(_._script(\"a1\", ($scope) => _._attr_textarea_value_script($scope, \"a\")),\n  _._resume(\"a0\", $valueChange),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-textarea-value/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<textarea></textarea><span> </span>\";\nexport const $walks = /* get, over(1), next(1), get, out(1) */\" bD l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $value = /* @__PURE__ */_._let(\"value/2\", $scope => {\n  _._attr_textarea_value($scope, \"#textarea/0\", $scope.value, $valueChange($scope));\n  _._text($scope[\"#text/1\"], $scope.value);\n});\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => _._attr_textarea_value_script($scope, \"#textarea/0\"));\nexport function $setup($scope) {\n  $value($scope, \"hello\");\n  $setup__script($scope);\n}\nfunction $valueChange($scope) {\n  return _new_value => {\n    $value($scope, _new_value);\n  };\n}\n_._resume(\"__tests__/template.marko_0/valueChange\", $valueChange);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-textarea-value/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let value = \"hello\";\n  _._html(`<textarea>${_._attr_textarea_value($scope0_id, \"#textarea/0\", value, _._resume(_new_value => {\n    value = _new_value;\n  }, \"__tests__/template.marko_0/valueChange\", $scope0_id))}</textarea>${_._el_resume($scope0_id, \"#textarea/0\")}<span>${_._escape(value)}${_._el_resume($scope0_id, \"#text/1\")}</span>`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-textarea-value/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<textarea>\n  hello\n</textarea>\n<span>\n  hello\n</span>\n```\n\n\n# Render\n```js\nconst textarea = container.querySelector(\"textarea\");\nconst window = textarea.ownerDocument.defaultView;\ntextarea.value = value;\ntextarea.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<textarea\n  default-value=\"hello\"\n>\n  w\n</textarea>\n<span>\n  w\n</span>\n```\n\n\n# Render\n```js\nconst textarea = container.querySelector(\"textarea\");\nconst window = textarea.ownerDocument.defaultView;\ntextarea.value = value;\ntextarea.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<textarea\n  default-value=\"hello\"\n>\n  wor\n</textarea>\n<span>\n  wor\n</span>\n```\n\n\n# Render\n```js\nconst textarea = container.querySelector(\"textarea\");\nconst window = textarea.ownerDocument.defaultView;\ntextarea.value = value;\ntextarea.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<textarea\n  default-value=\"hello\"\n>\n  world\n</textarea>\n<span>\n  world\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-textarea-value/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <textarea>\n      hello\n    </textarea>\n    <!--M_*1 #textarea/0-->\n    <span>\n      hello\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#textarea/0\": 2\n        }], _.a[\"ControlledHandler:#textarea/0\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\nconst textarea = container.querySelector(\"textarea\");\nconst window = textarea.ownerDocument.defaultView;\ntextarea.value = value;\ntextarea.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<html>\n  <head />\n  <body>\n    <textarea\n      default-value=\"hello\"\n    >\n      w\n    </textarea>\n    <!--M_*1 #textarea/0-->\n    <span>\n      w\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#textarea/0\": 2\n        }], _.a[\"ControlledHandler:#textarea/0\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"hello\" => \"w\"\n```\n\n# Render\n```js\nconst textarea = container.querySelector(\"textarea\");\nconst window = textarea.ownerDocument.defaultView;\ntextarea.value = value;\ntextarea.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<html>\n  <head />\n  <body>\n    <textarea\n      default-value=\"hello\"\n    >\n      wor\n    </textarea>\n    <!--M_*1 #textarea/0-->\n    <span>\n      wor\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#textarea/0\": 2\n        }], _.a[\"ControlledHandler:#textarea/0\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"w\" => \"wor\"\n```\n\n# Render\n```js\nconst textarea = container.querySelector(\"textarea\");\nconst window = textarea.ownerDocument.defaultView;\ntextarea.value = value;\ntextarea.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<html>\n  <head />\n  <body>\n    <textarea\n      default-value=\"hello\"\n    >\n      world\n    </textarea>\n    <!--M_*1 #textarea/0-->\n    <span>\n      world\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#textarea/0\": 2\n        }], _.a[\"ControlledHandler:#textarea/0\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"wor\" => \"world\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-textarea-value/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<textarea>\n  hello\n</textarea>\n<span>\n  hello\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-textarea-value/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <textarea>hello</textarea><!--M_*1 #textarea/0--><span>hello<!--M_*1 #text/1--></span><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={\"ControlledType:#textarea/0\":2}],_.a[\"ControlledHandler:#textarea/0\"]=_._[\"__tests__/template.marko_0/valueChange\"](_.a),_.b),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <textarea>\n      hello\n    </textarea>\n    <!--M_*1 #textarea/0-->\n    <span>\n      hello\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#textarea/0\": 2\n        }], _.a[\"ControlledHandler:#textarea/0\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/textarea\nINSERT html/body/textarea/#text\nINSERT html/body/#comment\nINSERT html/body/span\nINSERT html/body/span/#text\nINSERT html/body/span/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-textarea-value/template.marko",
    "content": "<let/value = \"hello\"/>\n<textarea value:=value/>\n<span>${value}</span>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-textarea-value/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction type(value: string) {\n  return (container: Element) => {\n    const textarea = container.querySelector(\"textarea\")!;\n    const window = textarea.ownerDocument.defaultView!;\n    textarea.value = value;\n    textarea.dispatchEvent(new window.Event(\"input\", { bubbles: true }));\n  };\n}\n\nexport const config: TestConfig = {\n  steps: [{}, type(\"w\"), type(\"wor\"), type(\"world\")],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-textarea-value-spread/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"r\",\n      \"$$input__script\": \"a\",\n      \"$$input\": \"m\",\n      \"$$value\": \"o\",\n      \"$$valueChange\": \"e\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-textarea-value-spread/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<textarea>\n  hello\n</textarea>\n<span>\n  hello\n</span>\n```\n\n\n# Render\n```js\nconst textarea = container.querySelector(\"textarea\");\nconst window = textarea.ownerDocument.defaultView;\ntextarea.value = value;\ntextarea.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<textarea\n  default-value=\"hello\"\n>\n  w\n</textarea>\n<span>\n  w\n</span>\n```\n\n\n# Render\n```js\nconst textarea = container.querySelector(\"textarea\");\nconst window = textarea.ownerDocument.defaultView;\ntextarea.value = value;\ntextarea.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<textarea\n  default-value=\"hello\"\n>\n  wor\n</textarea>\n<span>\n  wor\n</span>\n```\n\n\n# Render\n```js\nconst textarea = container.querySelector(\"textarea\");\nconst window = textarea.ownerDocument.defaultView;\ntextarea.value = value;\ntextarea.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<textarea\n  default-value=\"hello\"\n>\n  world\n</textarea>\n<span>\n  world\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-textarea-value-spread/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<textarea>\n  hello\n</textarea>\n<span>\n  hello\n</span>\n```\n\n# Mutations\n```\nINSERT textarea, span\n```\n\n# Render\n```js\nconst textarea = container.querySelector(\"textarea\");\nconst window = textarea.ownerDocument.defaultView;\ntextarea.value = value;\ntextarea.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<textarea\n  default-value=\"hello\"\n>\n  w\n</textarea>\n<span>\n  w\n</span>\n```\n\n# Mutations\n```\nUPDATE span/#text \"hello\" => \"w\"\n```\n\n# Render\n```js\nconst textarea = container.querySelector(\"textarea\");\nconst window = textarea.ownerDocument.defaultView;\ntextarea.value = value;\ntextarea.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<textarea\n  default-value=\"hello\"\n>\n  wor\n</textarea>\n<span>\n  wor\n</span>\n```\n\n# Mutations\n```\nUPDATE span/#text \"w\" => \"wor\"\n```\n\n# Render\n```js\nconst textarea = container.querySelector(\"textarea\");\nconst window = textarea.ownerDocument.defaultView;\ntextarea.value = value;\ntextarea.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<textarea\n  default-value=\"hello\"\n>\n  world\n</textarea>\n<span>\n  world\n</span>\n```\n\n# Mutations\n```\nUPDATE span/#text \"wor\" => \"world\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-textarea-value-spread/__snapshots__/dom.expected/tags/my-textarea.js",
    "content": "export const $template = \"<textarea></textarea>\";\nexport const $walks = /* get, over(1) */\" b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $input__script = _._script(\"__tests__/tags/my-textarea.marko_0_input\", $scope => _._attrs_script($scope, \"#textarea/0\"));\nexport const $input = /* @__PURE__ */_._const(\"input\", $scope => {\n  _._attrs($scope, \"#textarea/0\", $scope.input);\n  $input__script($scope);\n});\nexport default /* @__PURE__ */_._template(\"__tests__/tags/my-textarea.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-textarea-value-spread/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 219 (min) 144 (brotli)\nconst $input__script = _._script(\"a0\", ($scope) =>\n    _._attrs_script($scope, \"a\"),\n  ),\n  $input = _._const(2, ($scope) => {\n    (_._attrs($scope, \"a\", $scope.c), $input__script($scope));\n  }),\n  $value = _._let(2, ($scope) => {\n    ($input($scope.a, { value: $scope.c, valueChange: $valueChange($scope) }),\n      _._text($scope.b, $scope.c));\n  });\nfunction $valueChange($scope) {\n  return (_new_value) => {\n    $value($scope, _new_value);\n  };\n}\n(_._resume(\"b0\", $valueChange), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-textarea-value-spread/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `${_myTextarea_template}<span> </span>`;\nexport const $walks = /* <my-textarea>, next(1), get, out(1) */`/${_myTextarea_walks}&D l`;\nimport { $setup as _myTextarea, $input as _myTextarea_input, $template as _myTextarea_template, $walks as _myTextarea_walks } from \"./tags/my-textarea.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $value = /* @__PURE__ */_._let(\"value/2\", $scope => {\n  _myTextarea_input($scope[\"#childScope/0\"], {\n    value: $scope.value,\n    valueChange: $valueChange($scope)\n  });\n  _._text($scope[\"#text/1\"], $scope.value);\n});\nexport function $setup($scope) {\n  _myTextarea($scope[\"#childScope/0\"]);\n  $value($scope, \"hello\");\n}\nfunction $valueChange($scope) {\n  return _new_value => {\n    $value($scope, _new_value);\n  };\n}\n_._resume(\"__tests__/template.marko_0/valueChange\", $valueChange);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-textarea-value-spread/__snapshots__/html.expected/tags/my-textarea.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/my-textarea.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $textarea_input = input;\n  _._html(`<textarea${_._attrs($textarea_input, \"#textarea/0\", $scope0_id, \"textarea\")}>${_._attr_textarea_value($scope0_id, \"#textarea/0\", $textarea_input.value, $textarea_input.valueChange)}</textarea>${_._el_resume($scope0_id, \"#textarea/0\")}`);\n  _._script($scope0_id, \"__tests__/tags/my-textarea.marko_0_input\");\n  _._scope($scope0_id, {\n    input\n  }, \"__tests__/tags/my-textarea.marko\", 0, {\n    input: 0\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-textarea-value-spread/__snapshots__/html.expected/template.js",
    "content": "import _myTextarea from \"./tags/my-textarea.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let value = \"hello\";\n  const $childScope = _._peek_scope_id();\n  _myTextarea({\n    value: value,\n    valueChange: _._resume(_new_value => {\n      value = _new_value;\n    }, \"__tests__/template.marko_0/valueChange\", $scope0_id)\n  });\n  _._html(`<span>${_._escape(value)}${_._el_resume($scope0_id, \"#text/1\")}</span>`);\n  _._scope($scope0_id, {\n    \"#childScope/0\": _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-textarea-value-spread/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<textarea>\n  hello\n</textarea>\n<span>\n  hello\n</span>\n```\n\n\n# Render\n```js\nconst textarea = container.querySelector(\"textarea\");\nconst window = textarea.ownerDocument.defaultView;\ntextarea.value = value;\ntextarea.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<textarea\n  default-value=\"hello\"\n>\n  w\n</textarea>\n<span>\n  w\n</span>\n```\n\n\n# Render\n```js\nconst textarea = container.querySelector(\"textarea\");\nconst window = textarea.ownerDocument.defaultView;\ntextarea.value = value;\ntextarea.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<textarea\n  default-value=\"hello\"\n>\n  wor\n</textarea>\n<span>\n  wor\n</span>\n```\n\n\n# Render\n```js\nconst textarea = container.querySelector(\"textarea\");\nconst window = textarea.ownerDocument.defaultView;\ntextarea.value = value;\ntextarea.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<textarea\n  default-value=\"hello\"\n>\n  world\n</textarea>\n<span>\n  world\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-textarea-value-spread/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <textarea>\n      hello\n    </textarea>\n    <!--M_*2 #textarea/0-->\n    <span>\n      hello\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.d = {\n            \"#childScope/0\": _.a = {\n              \"ControlledType:#textarea/0\": 2,\n              input: _.b = {\n                value: \"hello\"\n              }\n            }\n          }, _.a], _.a[\"ControlledHandler:#textarea/0\"] = _.b.valueChange = _\n          ._[\n            \"__tests__/template.marko_0/valueChange\"\n            ](_.d), _.c),\n        \"__tests__/tags/my-textarea.marko_0_input 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\nconst textarea = container.querySelector(\"textarea\");\nconst window = textarea.ownerDocument.defaultView;\ntextarea.value = value;\ntextarea.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<html>\n  <head />\n  <body>\n    <textarea\n      default-value=\"hello\"\n    >\n      w\n    </textarea>\n    <!--M_*2 #textarea/0-->\n    <span>\n      w\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.d = {\n            \"#childScope/0\": _.a = {\n              \"ControlledType:#textarea/0\": 2,\n              input: _.b = {\n                value: \"hello\"\n              }\n            }\n          }, _.a], _.a[\"ControlledHandler:#textarea/0\"] = _.b.valueChange = _\n          ._[\n            \"__tests__/template.marko_0/valueChange\"\n            ](_.d), _.c),\n        \"__tests__/tags/my-textarea.marko_0_input 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"hello\" => \"w\"\n```\n\n# Render\n```js\nconst textarea = container.querySelector(\"textarea\");\nconst window = textarea.ownerDocument.defaultView;\ntextarea.value = value;\ntextarea.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<html>\n  <head />\n  <body>\n    <textarea\n      default-value=\"hello\"\n    >\n      wor\n    </textarea>\n    <!--M_*2 #textarea/0-->\n    <span>\n      wor\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.d = {\n            \"#childScope/0\": _.a = {\n              \"ControlledType:#textarea/0\": 2,\n              input: _.b = {\n                value: \"hello\"\n              }\n            }\n          }, _.a], _.a[\"ControlledHandler:#textarea/0\"] = _.b.valueChange = _\n          ._[\n            \"__tests__/template.marko_0/valueChange\"\n            ](_.d), _.c),\n        \"__tests__/tags/my-textarea.marko_0_input 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"w\" => \"wor\"\n```\n\n# Render\n```js\nconst textarea = container.querySelector(\"textarea\");\nconst window = textarea.ownerDocument.defaultView;\ntextarea.value = value;\ntextarea.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<html>\n  <head />\n  <body>\n    <textarea\n      default-value=\"hello\"\n    >\n      world\n    </textarea>\n    <!--M_*2 #textarea/0-->\n    <span>\n      world\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.d = {\n            \"#childScope/0\": _.a = {\n              \"ControlledType:#textarea/0\": 2,\n              input: _.b = {\n                value: \"hello\"\n              }\n            }\n          }, _.a], _.a[\"ControlledHandler:#textarea/0\"] = _.b.valueChange = _\n          ._[\n            \"__tests__/template.marko_0/valueChange\"\n            ](_.d), _.c),\n        \"__tests__/tags/my-textarea.marko_0_input 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/#text \"wor\" => \"world\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-textarea-value-spread/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<textarea>\n  hello\n</textarea>\n<span>\n  hello\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-textarea-value-spread/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <textarea>hello</textarea><!--M_*2 #textarea/0--><span>hello<!--M_*1 #text/1--></span><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.d={\"#childScope/0\":_.a={\"ControlledType:#textarea/0\":2,input:_.b={value:\"hello\"}}},_.a],_.a[\"ControlledHandler:#textarea/0\"]=_.b.valueChange=_._[\"__tests__/template.marko_0/valueChange\"](_.d),_.c),\"__tests__/tags/my-textarea.marko_0_input 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <textarea>\n      hello\n    </textarea>\n    <!--M_*2 #textarea/0-->\n    <span>\n      hello\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.d = {\n            \"#childScope/0\": _.a = {\n              \"ControlledType:#textarea/0\": 2,\n              input: _.b = {\n                value: \"hello\"\n              }\n            }\n          }, _.a], _.a[\"ControlledHandler:#textarea/0\"] = _.b.valueChange = _\n          ._[\n            \"__tests__/template.marko_0/valueChange\"\n            ](_.d), _.c),\n        \"__tests__/tags/my-textarea.marko_0_input 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/textarea\nINSERT html/body/textarea/#text\nINSERT html/body/#comment\nINSERT html/body/span\nINSERT html/body/span/#text\nINSERT html/body/span/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-textarea-value-spread/tags/my-textarea.marko",
    "content": "<textarea ...input />"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-textarea-value-spread/template.marko",
    "content": "<let/value = \"hello\"/>\n<my-textarea value:=value/>\n<span>${value}</span>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/controllable-textarea-value-spread/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction type(value: string) {\n  return (container: Element) => {\n    const textarea = container.querySelector(\"textarea\")!;\n    const window = textarea.ownerDocument.defaultView!;\n    textarea.value = value;\n    textarea.dispatchEvent(new window.Event(\"input\", { bubbles: true }));\n  };\n}\n\nexport const config: TestConfig = {\n  steps: [{}, type(\"w\"), type(\"wor\"), type(\"world\")],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/counter-intersection/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$a__OR__b\": \"m\",\n      \"$$a\": \"r\",\n      \"$$b\": \"c\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/counter-intersection/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <button\n    class=\"a\"\n  >\n    0\n  </button>\n   + \n  <button\n    class=\"b\"\n  >\n    0\n  </button>\n   = 0\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.a\").click();\n```\n```html\n<div>\n  <button\n    class=\"a\"\n  >\n    10\n  </button>\n   + \n  <button\n    class=\"b\"\n  >\n    0\n  </button>\n   = 10\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.b\").click();\n```\n```html\n<div>\n  <button\n    class=\"a\"\n  >\n    10\n  </button>\n   + \n  <button\n    class=\"b\"\n  >\n    5\n  </button>\n   = 15\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/counter-intersection/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  <button\n    class=\"a\"\n  >\n    0\n  </button>\n   + \n  <button\n    class=\"b\"\n  >\n    0\n  </button>\n   = 0\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.a\").click();\n```\n```html\n<div>\n  <button\n    class=\"a\"\n  >\n    10\n  </button>\n   + \n  <button\n    class=\"b\"\n  >\n    0\n  </button>\n   = 10\n</div>\n```\n\n# Mutations\n```\nUPDATE div/button0/#text \"0\" => \"10\"\nUPDATE div/#text2 \"0\" => \"10\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.b\").click();\n```\n```html\n<div>\n  <button\n    class=\"a\"\n  >\n    10\n  </button>\n   + \n  <button\n    class=\"b\"\n  >\n    5\n  </button>\n   = 15\n</div>\n```\n\n# Mutations\n```\nUPDATE div/button1/#text \"0\" => \"5\"\nUPDATE div/#text2 \"10\" => \"15\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/counter-intersection/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 221 (min) 136 (brotli)\nconst $a__OR__b = _._or(7, ($scope) => _._text($scope.e, $scope.f + $scope.g)),\n  $a = _._let(5, ($scope) => {\n    (_._text($scope.b, $scope.f), $a__OR__b($scope));\n  }),\n  $b = _._let(6, ($scope) => {\n    (_._text($scope.d, $scope.g), $a__OR__b($scope));\n  });\n(_._script(\"a0\", ($scope) => {\n  (_._on($scope.a, \"click\", function () {\n    $a($scope, 10);\n  }),\n    _._on($scope.c, \"click\", function () {\n      $b($scope, 5);\n    }));\n}),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/counter-intersection/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div><button class=a> </button> + <button class=b> </button> = <!></div>\";\nexport const $walks = /* next(1), get, next(1), get, out(1), over(1), get, next(1), get, out(1), over(1), replace, out(1) */\"D D lb D lb%l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $a__OR__b = /* @__PURE__ */_._or(7, $scope => _._text($scope[\"#text/4\"], $scope.a + $scope.b));\nconst $a = /* @__PURE__ */_._let(\"a/5\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.a);\n  $a__OR__b($scope);\n});\nconst $b = /* @__PURE__ */_._let(\"b/6\", $scope => {\n  _._text($scope[\"#text/3\"], $scope.b);\n  $a__OR__b($scope);\n});\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => {\n  _._on($scope[\"#button/0\"], \"click\", function () {\n    $a($scope, 10);\n  });\n  _._on($scope[\"#button/2\"], \"click\", function () {\n    $b($scope, 5);\n  });\n});\nexport function $setup($scope) {\n  $a($scope, 0);\n  $b($scope, 0);\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/counter-intersection/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let a = 0;\n  let b = 0;\n  _._html(`<div><button class=a>${_._escape(a)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")} + <button class=b>${_._escape(b)}${_._el_resume($scope0_id, \"#text/3\")}</button>${_._el_resume($scope0_id, \"#button/2\")} = <!>${_._escape(a + b)}${_._el_resume($scope0_id, \"#text/4\")}</div>`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {\n    a,\n    b\n  }, \"__tests__/template.marko\", 0, {\n    a: \"2:8\",\n    b: \"3:8\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/counter-intersection/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <button\n    class=\"a\"\n  >\n    0\n  </button>\n   + \n  <button\n    class=\"b\"\n  >\n    0\n  </button>\n   = 0\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.a\").click();\n```\n```html\n<div>\n  <button\n    class=\"a\"\n  >\n    10\n  </button>\n   + \n  <button\n    class=\"b\"\n  >\n    0\n  </button>\n   = 10\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.b\").click();\n```\n```html\n<div>\n  <button\n    class=\"a\"\n  >\n    10\n  </button>\n   + \n  <button\n    class=\"b\"\n  >\n    5\n  </button>\n   = 15\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/counter-intersection/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button\n        class=\"a\"\n      >\n        0\n        <!--M_*1 #text/1-->\n      </button>\n      <!--M_*1 #button/0-->\n       + \n      <button\n        class=\"b\"\n      >\n        0\n        <!--M_*1 #text/3-->\n      </button>\n      <!--M_*1 #button/2-->\n       = \n      <!---->\n      0\n      <!--M_*1 #text/4-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          a: 0,\n          b: 0\n        }]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.a\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button\n        class=\"a\"\n      >\n        10\n        <!--M_*1 #text/1-->\n      </button>\n      <!--M_*1 #button/0-->\n       + \n      <button\n        class=\"b\"\n      >\n        0\n        <!--M_*1 #text/3-->\n      </button>\n      <!--M_*1 #button/2-->\n       = \n      <!---->\n      10\n      <!--M_*1 #text/4-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          a: 0,\n          b: 0\n        }]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/button0/#text \"0\" => \"10\"\nUPDATE html/body/div/#text2 \"0\" => \"10\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.b\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button\n        class=\"a\"\n      >\n        10\n        <!--M_*1 #text/1-->\n      </button>\n      <!--M_*1 #button/0-->\n       + \n      <button\n        class=\"b\"\n      >\n        5\n        <!--M_*1 #text/3-->\n      </button>\n      <!--M_*1 #button/2-->\n       = \n      <!---->\n      15\n      <!--M_*1 #text/4-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          a: 0,\n          b: 0\n        }]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/button1/#text \"0\" => \"5\"\nUPDATE html/body/div/#text2 \"10\" => \"15\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/counter-intersection/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  <button\n    class=\"a\"\n  >\n    0\n  </button>\n   + \n  <button\n    class=\"b\"\n  >\n    0\n  </button>\n   = 0\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/counter-intersection/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><button class=a>0<!--M_*1 #text/1--></button><!--M_*1 #button/0--> + <button class=b>0<!--M_*1 #text/3--></button><!--M_*1 #button/2--> = <!>0<!--M_*1 #text/4--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{a:0,b:0}]),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button\n        class=\"a\"\n      >\n        0\n        <!--M_*1 #text/1-->\n      </button>\n      <!--M_*1 #button/0-->\n       + \n      <button\n        class=\"b\"\n      >\n        0\n        <!--M_*1 #text/3-->\n      </button>\n      <!--M_*1 #button/2-->\n       = \n      <!---->\n      0\n      <!--M_*1 #text/4-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          a: 0,\n          b: 0\n        }]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/button0\nINSERT html/body/div/button0/#text\nINSERT html/body/div/button0/#comment\nINSERT html/body/div/#comment0\nINSERT html/body/div/#text0\nINSERT html/body/div/button1\nINSERT html/body/div/button1/#text\nINSERT html/body/div/button1/#comment\nINSERT html/body/div/#comment1\nINSERT html/body/div/#text1\nINSERT html/body/div/#comment2\nINSERT html/body/div/#text2\nINSERT html/body/div/#comment3\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/counter-intersection/template.marko",
    "content": "<div>\n  <let/a = 0/>\n  <let/b = 0/>\n  <button.a onClick() { a = 10 }>${a}</button> +\n  <button.b onClick() { b = 5 }>${b}</button> = \n  ${a + b}\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/counter-intersection/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction clickA(container: Element) {\n  container.querySelector<HTMLButtonElement>(\"button.a\")!.click();\n}\n\nfunction clickB(container: Element) {\n  container.querySelector<HTMLButtonElement>(\"button.b\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, clickA, clickB],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/create-and-clear-rows-loop-from/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/create-and-clear-rows-loop-from/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"to\":3}`\n\n```html\n<div>\n  0, 1, 2, 3, \n</div>\n```\n\n\n# Render `{\"from\":4,\"to\":6}`\n\n```html\n<div>\n  4, 5, 6, \n</div>\n```\n\n\n# Render `{\"from\":7,\"to\":16,\"step\":3}`\n\n```html\n<div>\n  7, 10, 13, 16, \n</div>\n```\n\n\n# Render `{\"from\":0,\"to\":-1,\"step\":-0.3}`\n\n```html\n<div>\n  0, -0.3, -0.6, -0.8999999999999999, \n</div>\n```\n\n\n# Render `{\"from\":0,\"to\":3,\"step\":0.5}`\n\n```html\n<div>\n  0, 0.5, 1, 1.5, 2, 2.5, 3, \n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/create-and-clear-rows-loop-from/__snapshots__/csr.expected.md",
    "content": "# Render `{\"to\":3}`\n\n```html\n<div>\n  0, 1, 2, 3, \n</div>\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render `{\"from\":4,\"to\":6}`\n\n```html\n<div>\n  4, 5, 6, \n</div>\n```\n\n# Mutations\n```\nREMOVE #text, #text, #text, #text, #text, #text, #text, #text in div\nINSERT div/#text0, div/#text1\nINSERT div/#text2, div/#text3\nINSERT div/#text4, div/#text5\nUPDATE div/#text0 \"\" => \"4\"\nUPDATE div/#text2 \"\" => \"5\"\nUPDATE div/#text4 \"\" => \"6\"\n```\n\n# Render `{\"from\":7,\"to\":16,\"step\":3}`\n\n```html\n<div>\n  7, 10, 13, 16, \n</div>\n```\n\n# Mutations\n```\nREMOVE #text, #text, #text, #text, #text, #text in div\nINSERT div/#text0, div/#text1\nINSERT div/#text2, div/#text3\nINSERT div/#text4, div/#text5\nINSERT div/#text6, div/#text7\nUPDATE div/#text0 \"\" => \"7\"\nUPDATE div/#text2 \"\" => \"10\"\nUPDATE div/#text4 \"\" => \"13\"\nUPDATE div/#text6 \"\" => \"16\"\n```\n\n# Render `{\"from\":0,\"to\":-1,\"step\":-0.3}`\n\n```html\n<div>\n  0, -0.3, -0.6, -0.8999999999999999, \n</div>\n```\n\n# Mutations\n```\nREMOVE #text, #text, #text, #text, #text, #text, #text, #text in div\nINSERT div/#text0, div/#text1\nINSERT div/#text2, div/#text3\nINSERT div/#text4, div/#text5\nINSERT div/#text6, div/#text7\nUPDATE div/#text0 \"\" => \"0\"\nUPDATE div/#text2 \"\" => \"-0.3\"\nUPDATE div/#text4 \"\" => \"-0.6\"\nUPDATE div/#text6 \"\" => \"-0.8999999999999999\"\n```\n\n# Render `{\"from\":0,\"to\":3,\"step\":0.5}`\n\n```html\n<div>\n  0, 0.5, 1, 1.5, 2, 2.5, 3, \n</div>\n```\n\n# Mutations\n```\nREMOVE #text after div/#text1\nREMOVE #text after div/#text1\nREMOVE #text after div/#text1\nREMOVE #text after div/#text1\nREMOVE #text after div/#text1\nREMOVE #text after div/#text1\nINSERT div/#text12, div/#text13\nINSERT div/#text10, div/#text11\nINSERT div/#text8, div/#text9\nINSERT div/#text6, div/#text7\nINSERT div/#text4, div/#text5\nINSERT div/#text2, div/#text3\nUPDATE div/#text2 \"\" => \"0.5\"\nUPDATE div/#text4 \"\" => \"1\"\nUPDATE div/#text6 \"\" => \"1.5\"\nUPDATE div/#text8 \"\" => \"2\"\nUPDATE div/#text10 \"\" => \"2.5\"\nUPDATE div/#text12 \"\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/create-and-clear-rows-loop-from/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/create-and-clear-rows-loop-from/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* get, over(1) */\" b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for_content__setup = $scope => _._text($scope[\"#text/0\"], $scope[\"#LoopKey\"]);\nconst $for = /* @__PURE__ */_._for_to(\"#div/0\", \"<!>, \", /* replace, over(2) */\"%c\", $for_content__setup);\nconst $input_from__OR__input_to__OR__input_step = /* @__PURE__ */_._or(6, $scope => $for($scope, [$scope.input_to, $scope.input_from, $scope.input_step]), 2);\nexport const $input_from = /* @__PURE__ */_._const(\"input_from\", $input_from__OR__input_to__OR__input_step);\nexport const $input_to = /* @__PURE__ */_._const(\"input_to\", $input_from__OR__input_to__OR__input_step);\nexport const $input_step = /* @__PURE__ */_._const(\"input_step\", $input_from__OR__input_to__OR__input_step);\nexport const $input = ($scope, input) => {\n  $input_from($scope, input.from);\n  $input_to($scope, input.to);\n  $input_step($scope, input.step);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/create-and-clear-rows-loop-from/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div>\");\n  _._for_to(input.to, input.from, input.step, n => {\n    const $scope1_id = _._scope_id();\n    _._html(`${_._escape(n)}, `);\n    _._serialize_if($scope0_reason, /* input.from, input.to, input.step */3) && _._scope($scope1_id, {}, \"__tests__/template.marko\", \"2:4\");\n  }, 0, $scope0_id, \"#div/0\", _._serialize_guard($scope0_reason, /* input.from, input.to, input.step */3), _._serialize_guard($scope0_reason, /* input.from, input.to, input.step */3), _._serialize_guard($scope0_reason, /* input.from, input.to, input.step */3), \"</div>\");\n  _._serialize_if($scope0_reason, /* input.from, input.to, input.step */3) && _._scope($scope0_id, {\n    input_from: _._serialize_if($scope0_reason, /* input.to, input.step */2) && input.from,\n    input_to: _._serialize_if($scope0_reason, /* input.from, input.step */1) && input.to,\n    input_step: _._serialize_if($scope0_reason, /* input.from, input.to */0) && input.step\n  }, \"__tests__/template.marko\", 0, {\n    input_from: [\"input.from\"],\n    input_to: [\"input.to\"],\n    input_step: [\"input.step\"]\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/create-and-clear-rows-loop-from/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"to\":3}`\n\n```html\n<div>\n  0, 1, 2, 3, \n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/create-and-clear-rows-loop-from/__snapshots__/resume.expected.md",
    "content": "# Render `{\"to\":3}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      0, 1, 2, 3, \n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/create-and-clear-rows-loop-from/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  0, 1, 2, 3, \n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/create-and-clear-rows-loop-from/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>0, 1, 2, 3, </div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      0, 1, 2, 3, \n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/create-and-clear-rows-loop-from/template.marko",
    "content": "<div>\n  <for|n| from=input.from to=input.to step=input.step>\n    ${n}, \n  </for>\n</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/create-and-clear-rows-loop-from/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [\n    {\n      to: 3,\n    },\n    {\n      from: 4,\n      to: 6,\n    },\n    {\n      from: 7,\n      to: 16,\n      step: 3,\n    },\n    {\n      from: 0,\n      to: -1,\n      step: -0.3,\n    },\n    {\n      from: 0,\n      to: 3,\n      step: 0.5,\n    },\n  ],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/create-and-clear-rows-loop-in/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/create-and-clear-rows-loop-in/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"children\":{\"1\":\"a\",\"2\":\"b\",\"3\":\"c\"}}`\n\n```html\n<div>\n  <p>\n    1: a\n  </p>\n  <p>\n    2: b\n  </p>\n  <p>\n    3: c\n  </p>\n  <p>\n    1\n  </p>\n  <p>\n    2\n  </p>\n  <p>\n    3\n  </p>\n</div>\n```\n\n\n# Render `{\"children\":{}}`\n\n```html\n<div />\n```\n\n\n# Render `{\"children\":{\"1\":\"a\",\"2\":\"b\",\"3\":\"c\"}}`\n\n```html\n<div>\n  <p>\n    1: a\n  </p>\n  <p>\n    2: b\n  </p>\n  <p>\n    3: c\n  </p>\n  <p>\n    1\n  </p>\n  <p>\n    2\n  </p>\n  <p>\n    3\n  </p>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/create-and-clear-rows-loop-in/__snapshots__/csr.expected.md",
    "content": "# Render `{\"children\":{\"1\":\"a\",\"2\":\"b\",\"3\":\"c\"}}`\n\n```html\n<div>\n  <p>\n    1: a\n  </p>\n  <p>\n    2: b\n  </p>\n  <p>\n    3: c\n  </p>\n  <p>\n    1\n  </p>\n  <p>\n    2\n  </p>\n  <p>\n    3\n  </p>\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render `{\"children\":{}}`\n\n```html\n<div />\n```\n\n# Mutations\n```\nINSERT div/#text0\nREMOVE p before p\nREMOVE p before p\nREMOVE p before div/#text0\nINSERT div/#text1\nREMOVE p after div/#text0\nREMOVE p after div/#text0\nREMOVE p after div/#text0\n```\n\n# Render `{\"children\":{\"1\":\"a\",\"2\":\"b\",\"3\":\"c\"}}`\n\n```html\n<div>\n  <p>\n    1: a\n  </p>\n  <p>\n    2: b\n  </p>\n  <p>\n    3: c\n  </p>\n  <p>\n    1\n  </p>\n  <p>\n    2\n  </p>\n  <p>\n    3\n  </p>\n</div>\n```\n\n# Mutations\n```\nREMOVE #text before #text\nINSERT div/p0\nINSERT div/p1\nINSERT div/p2\nREMOVE #text after div/p2\nINSERT div/p3\nINSERT div/p4\nINSERT div/p5\nUPDATE div/p0/#text0 \"\" => \"1\"\nUPDATE div/p1/#text0 \"\" => \"2\"\nUPDATE div/p2/#text0 \"\" => \"3\"\nUPDATE div/p3/#text \" \" => \"1\"\nUPDATE div/p4/#text \" \" => \"2\"\nUPDATE div/p5/#text \" \" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/create-and-clear-rows-loop-in/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/create-and-clear-rows-loop-in/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div><!><!></div>\";\nexport const $walks = /* next(1), replace, over(1), replace, out(1) */\"D%b%l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for_content2__setup = $scope => _._text($scope[\"#text/0\"], $scope[\"#LoopKey\"]);\nconst $for_content__setup = $scope => _._text($scope[\"#text/0\"], $scope[\"#LoopKey\"]);\nconst $for_content__text = ($scope, text) => _._text($scope[\"#text/1\"], text);\nconst $for_content__$params = ($scope, $params2) => $for_content__text($scope, $params2[1]);\nconst $for = /* @__PURE__ */_._for_in(\"#text/0\", \"<p><!>: <!></p>\", /* next(1), replace, over(2), replace, out(1) */\"D%c%l\", $for_content__setup, $for_content__$params);\nconst $for2 = /* @__PURE__ */_._for_in(\"#text/1\", \"<p> </p>\", /* next(1), get, out(1) */\"D l\", $for_content2__setup);\nexport const $input_children = ($scope, input_children) => {\n  $for($scope, [input_children]);\n  $for2($scope, [input_children]);\n};\nexport const $input = ($scope, input) => $input_children($scope, input.children);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/create-and-clear-rows-loop-in/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div>\");\n  _._for_in(input.children, (key, text) => {\n    const $scope1_id = _._scope_id();\n    _._html(`<p>${_._escape(key)}: ${_._sep(_._serialize_guard($scope0_reason, /* input.children */0))}${_._escape(text)}${_._el_resume($scope1_id, \"#text/1\", _._serialize_guard($scope0_reason, /* input.children */0))}</p>`);\n    _._serialize_if($scope0_reason, /* input.children */0) && _._scope($scope1_id, {}, \"__tests__/template.marko\", \"2:4\");\n  }, 0, $scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.children */0), _._serialize_guard($scope0_reason, /* input.children */0), _._serialize_guard($scope0_reason, /* input.children */0), 0, 1);\n  _._for_in(input.children, key => {\n    const $scope2_id = _._scope_id();\n    _._html(`<p>${_._escape(key)}</p>`);\n    _._serialize_if($scope0_reason, /* input.children */0) && _._scope($scope2_id, {}, \"__tests__/template.marko\", \"5:4\");\n  }, 0, $scope0_id, \"#text/1\", _._serialize_guard($scope0_reason, /* input.children */0), _._serialize_guard($scope0_reason, /* input.children */0), _._serialize_guard($scope0_reason, /* input.children */0), 0, 1);\n  _._html(\"</div>\");\n  _._serialize_if($scope0_reason, /* input.children */0) && _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/create-and-clear-rows-loop-in/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"children\":{\"1\":\"a\",\"2\":\"b\",\"3\":\"c\"}}`\n\n```html\n<div>\n  <p>\n    1: a\n  </p>\n  <p>\n    2: b\n  </p>\n  <p>\n    3: c\n  </p>\n  <p>\n    1\n  </p>\n  <p>\n    2\n  </p>\n  <p>\n    3\n  </p>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/create-and-clear-rows-loop-in/__snapshots__/resume.expected.md",
    "content": "# Render `{\"children\":{\"1\":\"a\",\"2\":\"b\",\"3\":\"c\"}}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <p>\n        1: a\n      </p>\n      <p>\n        2: b\n      </p>\n      <p>\n        3: c\n      </p>\n      <p>\n        1\n      </p>\n      <p>\n        2\n      </p>\n      <p>\n        3\n      </p>\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/create-and-clear-rows-loop-in/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  <p>\n    1: a\n  </p>\n  <p>\n    2: b\n  </p>\n  <p>\n    3: c\n  </p>\n  <p>\n    1\n  </p>\n  <p>\n    2\n  </p>\n  <p>\n    3\n  </p>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/create-and-clear-rows-loop-in/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><p>1: a</p><p>2: b</p><p>3: c</p><p>1</p><p>2</p><p>3</p></div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <p>\n        1: a\n      </p>\n      <p>\n        2: b\n      </p>\n      <p>\n        3: c\n      </p>\n      <p>\n        1\n      </p>\n      <p>\n        2\n      </p>\n      <p>\n        3\n      </p>\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/p0\nINSERT html/body/div/p0/#text\nINSERT html/body/div/p1\nINSERT html/body/div/p1/#text\nINSERT html/body/div/p2\nINSERT html/body/div/p2/#text\nINSERT html/body/div/p3\nINSERT html/body/div/p3/#text\nINSERT html/body/div/p4\nINSERT html/body/div/p4/#text\nINSERT html/body/div/p5\nINSERT html/body/div/p5/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/create-and-clear-rows-loop-in/template.marko",
    "content": "<div>\n  <for|key, text| in=input.children>\n    <p>${key}: ${text}</p>\n  </for>\n  <for|key| in=input.children>\n    <p>${key}</p>\n  </for>\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/create-and-clear-rows-loop-in/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [\n    {\n      children: {\n        \"1\": \"a\",\n        \"2\": \"b\",\n        \"3\": \"c\",\n      },\n    },\n    {\n      children: {},\n    },\n    {\n      children: {\n        \"1\": \"a\",\n        \"2\": \"b\",\n        \"3\": \"c\",\n      },\n    },\n  ],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cross-tag-closure/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"r\",\n      \"$init\": \"t\",\n      \"$$value\": \"_\",\n      \"$$mytag_content__count__script\": \"o\",\n      \"$$mytag_content__count\": \"e\",\n      \"$$count__closure\": \"c\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cross-tag-closure/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cross-tag-closure/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<!---->\n<button>\n  0\n</button>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, button, #comment2, #comment3\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<!---->\n<button>\n  1\n</button>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<!---->\n<button>\n  2\n</button>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<!---->\n<button>\n  3\n</button>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cross-tag-closure/__snapshots__/dom.expected/tags/my-let.js",
    "content": "export const $template = \"\";\nexport const $walks = \"\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $value = /* @__PURE__ */_._let(\"value/3\", $scope => _._return($scope, $scope.value));\nexport const $input_value = ($scope, input_value) => $value($scope, input_value);\nexport function $setup($scope) {\n  _._return_change($scope, $valueChange($scope));\n}\nexport const $input = ($scope, input) => $input_value($scope, input.value);\nfunction $valueChange($scope) {\n  return _new_value => {\n    $value($scope, _new_value);\n  };\n}\n_._resume(\"__tests__/tags/my-let.marko_0/valueChange\", $valueChange);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/my-let.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cross-tag-closure/__snapshots__/dom.expected/tags/my-tag.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\");\nexport const $input_content = ($scope, input_content) => $dynamicTag($scope, input_content);\nexport const $input = ($scope, input) => $input_content($scope, input.content);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/my-tag.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cross-tag-closure/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 276 (min) 177 (brotli)\nconst $value = _._let(3, ($scope) => _._return($scope, $scope.d));\n_._resume(\"a0\", function ($scope) {\n  return (_new_value) => {\n    $value($scope, _new_value);\n  };\n});\nconst $mytag_content__count__script = _._script(\"c0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      _._var_change($scope._.a, $scope._.d + 1);\n    }),\n  ),\n  $mytag_content__count = _._closure_get(3, ($scope) => {\n    (_._text($scope.b, $scope._.d), $mytag_content__count__script($scope));\n  }),\n  $count__closure = _._closure($mytag_content__count);\n(_._var_resume(\"c2\", _._const(3, $count__closure)), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cross-tag-closure/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<!>${_myLet_template}${_myTag_template}<!>`;\nexport const $walks = /* over(1), <my-let/var>, <my-tag>, over(1) */`b0${_myLet_walks}&/${_myTag_walks}&b`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _myLet, $input_value as _myLet_input_value, $template as _myLet_template, $walks as _myLet_walks } from \"./tags/my-let.marko\";\nimport { $setup as _myTag, $input_content as _myTag_input_content, $template as _myTag_template, $walks as _myTag_walks } from \"./tags/my-tag.marko\";\nconst $mytag_content__count__script = _._script(\"__tests__/template.marko_1_count\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  _._var_change($scope._[\"#childScope/0\"], $scope._.count + 1, \"count\");\n}));\nconst $mytag_content__count = /* @__PURE__ */_._closure_get(\"count\", $scope => {\n  _._text($scope[\"#text/1\"], $scope._.count);\n  $mytag_content__count__script($scope);\n});\nconst $mytag_content__setup = $mytag_content__count;\nconst $mytag_content = /* @__PURE__ */_._content(\"__tests__/template.marko_1_content\", \"<button> </button>\", /* get, next(1), get, out(1) */\" D l\", $mytag_content__setup);\nconst $count__closure = /* @__PURE__ */_._closure($mytag_content__count);\nconst $count = _._var_resume(\"__tests__/template.marko_0_count/var\", /* @__PURE__ */_._const(\"count\", $count__closure));\nexport function $setup($scope) {\n  _._var($scope, \"#childScope/0\", $count);\n  _myLet($scope[\"#childScope/0\"]);\n  _myLet_input_value($scope[\"#childScope/0\"], 0);\n  _myTag($scope[\"#childScope/2\"]);\n  _myTag_input_content($scope[\"#childScope/2\"], $mytag_content($scope));\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cross-tag-closure/__snapshots__/html.expected/tags/my-let.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/my-let.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let value = input.value;\n  const $return = value;\n  _._scope($scope0_id, {\n    \"#TagVariableChange\": _._resume(_new_value => {\n      value = _new_value;\n    }, \"__tests__/tags/my-let.marko_0/valueChange\", $scope0_id) || void 0\n  }, \"__tests__/tags/my-let.marko\", 0);\n  _._resume_branch($scope0_id);\n  return $return;\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cross-tag-closure/__snapshots__/html.expected/tags/my-tag.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/my-tag.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._dynamic_tag($scope0_id, \"#text/0\", input.content, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.content */0));\n  _._serialize_if($scope0_reason, /* input.content */0) && _._scope($scope0_id, {}, \"__tests__/tags/my-tag.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cross-tag-closure/__snapshots__/html.expected/template.js",
    "content": "import _myLet from \"./tags/my-let.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nimport _myTag from \"./tags/my-tag.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $count__closures = new Set();\n  const $childScope = _._peek_scope_id();\n  let count = _myLet({\n    value: 0\n  });\n  _._var($scope0_id, \"#scopeOffset/1\", $childScope, \"__tests__/template.marko_0_count/var\");\n  _myTag({\n    content: _._content(\"__tests__/template.marko_1_content\", () => {\n      _._scope_reason();\n      const $scope1_id = _._scope_id();\n      _._html(`<button>${_._escape(count)}${_._el_resume($scope1_id, \"#text/1\")}</button>${_._el_resume($scope1_id, \"#button/0\")}`);\n      _._script($scope1_id, \"__tests__/template.marko_1_count\");\n      _._subscribe($count__closures, _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id),\n        \"ClosureSignalIndex:count\": 0\n      }, \"__tests__/template.marko\", \"2:1\"));\n      _._resume_branch($scope1_id);\n    })\n  });\n  _._scope($scope0_id, {\n    count,\n    \"#childScope/0\": _._existing_scope($childScope),\n    \"ClosureScopes:count\": $count__closures\n  }, \"__tests__/template.marko\", 0, {\n    count: \"1:8\"\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cross-tag-closure/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cross-tag-closure/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*5 #text/1-->\n    </button>\n    <!--M_*5 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.b = {\n          \"#scopeOffset/1\": 3,\n          count: 0,\n          \"#childScope/0\": _.a = {},\n          \"ClosureScopes:count\": _.d = new Set\n        }, _.a, 2, _.e = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 0\n        }], _.a[\"#TagVariableChange\"] = _._[\n          \"__tests__/tags/my-let.marko_0/valueChange\"\n          ](_.a), _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_count/var\"\n          ](_.b), (_.d).add(_.e), _.c),\n        \"__tests__/template.marko_1_count 5\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*5 #text/1-->\n    </button>\n    <!--M_*5 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.b = {\n          \"#scopeOffset/1\": 3,\n          count: 0,\n          \"#childScope/0\": _.a = {},\n          \"ClosureScopes:count\": _.d = new Set\n        }, _.a, 2, _.e = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 0\n        }], _.a[\"#TagVariableChange\"] = _._[\n          \"__tests__/tags/my-let.marko_0/valueChange\"\n          ](_.a), _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_count/var\"\n          ](_.b), (_.d).add(_.e), _.c),\n        \"__tests__/template.marko_1_count 5\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      2\n      <!--M_*5 #text/1-->\n    </button>\n    <!--M_*5 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.b = {\n          \"#scopeOffset/1\": 3,\n          count: 0,\n          \"#childScope/0\": _.a = {},\n          \"ClosureScopes:count\": _.d = new Set\n        }, _.a, 2, _.e = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 0\n        }], _.a[\"#TagVariableChange\"] = _._[\n          \"__tests__/tags/my-let.marko_0/valueChange\"\n          ](_.a), _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_count/var\"\n          ](_.b), (_.d).add(_.e), _.c),\n        \"__tests__/template.marko_1_count 5\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      3\n      <!--M_*5 #text/1-->\n    </button>\n    <!--M_*5 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.b = {\n          \"#scopeOffset/1\": 3,\n          count: 0,\n          \"#childScope/0\": _.a = {},\n          \"ClosureScopes:count\": _.d = new Set\n        }, _.a, 2, _.e = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 0\n        }], _.a[\"#TagVariableChange\"] = _._[\n          \"__tests__/tags/my-let.marko_0/valueChange\"\n          ](_.a), _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_count/var\"\n          ](_.b), (_.d).add(_.e), _.c),\n        \"__tests__/template.marko_1_count 5\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cross-tag-closure/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  0\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cross-tag-closure/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>0<!--M_*5 #text/1--></button><!--M_*5 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.b={\"#scopeOffset/1\":3,count:0,\"#childScope/0\":_.a={},\"ClosureScopes:count\":_.d=new Set},_.a,2,_.e={_:_.b,\"ClosureSignalIndex:count\":0}],_.a[\"#TagVariableChange\"]=_._[\"__tests__/tags/my-let.marko_0/valueChange\"](_.a),_.a[\"#TagVariable\"]=_._[\"__tests__/template.marko_0_count/var\"](_.b),(_.d).add(_.e),_.c),\"__tests__/template.marko_1_count 5\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*5 #text/1-->\n    </button>\n    <!--M_*5 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.b = {\n          \"#scopeOffset/1\": 3,\n          count: 0,\n          \"#childScope/0\": _.a = {},\n          \"ClosureScopes:count\": _.d = new Set\n        }, _.a, 2, _.e = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 0\n        }], _.a[\"#TagVariableChange\"] = _._[\n          \"__tests__/tags/my-let.marko_0/valueChange\"\n          ](_.a), _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_count/var\"\n          ](_.b), (_.d).add(_.e), _.c),\n        \"__tests__/template.marko_1_count 5\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cross-tag-closure/tags/my-let.marko",
    "content": "let/value=input.value\n\nreturn:=value\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cross-tag-closure/tags/my-tag.marko",
    "content": "${input.content}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cross-tag-closure/template.marko",
    "content": "my-let/count=0\nmy-tag\n  button onClick() { count++ } -- ${count}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/cross-tag-closure/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-args-and-attributes-error/__snapshots__/dom.expected/tags/custom-tag.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* over(1) */\"b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/tags/custom-tag.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-args-and-attributes-error/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/custom-tag-args-and-attributes-error/template.marko:1:13\n    > 1 | <custom-tag(1) x=2 />\n        |             ^ Tag does not support arguments when attributes or body present."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-args-and-attributes-error/__snapshots__/html.expected/tags/custom-tag.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/custom-tag.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div></div>\");\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-args-and-attributes-error/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/custom-tag-args-and-attributes-error/template.marko:1:13\n    > 1 | <custom-tag(1) x=2 />\n        |             ^ Tag does not support arguments when attributes or body present."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-args-and-attributes-error/tags/custom-tag.marko",
    "content": "<div/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-args-and-attributes-error/template.marko",
    "content": "<custom-tag(1) x=2 />"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-args-and-attributes-error/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: [\"template.marko\"],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-args-error/__snapshots__/dom.expected/tags/custom-tag.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* over(1) */\"b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/tags/custom-tag.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-args-error/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/custom-tag-args-error/template.marko:1:15\n    > 1 | <custom-tag(1,2) />\n        |               ^ Tag does not support multiple arguments."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-args-error/__snapshots__/html.expected/tags/custom-tag.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/custom-tag.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div></div>\");\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-args-error/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/custom-tag-args-error/template.marko:1:15\n    > 1 | <custom-tag(1,2) />\n        |               ^ Tag does not support multiple arguments."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-args-error/tags/custom-tag.marko",
    "content": "<div/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-args-error/template.marko",
    "content": "<custom-tag(1,2) />"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-args-error/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: [\"template.marko\"],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-child-analyze/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-child-analyze/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\nHello Frank\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-child-analyze/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\nHello Frank\n```\n\n# Mutations\n```\nINSERT #text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-child-analyze/__snapshots__/dom.expected/tags/hello/index.js",
    "content": "export const $template = \"Hello\";\nexport const $walks = /* over(1) */\"b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/tags/hello/index.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-child-analyze/__snapshots__/dom.expected/tags/message.js",
    "content": "export const $template = \"Frank\";\nexport const $walks = /* over(1) */\"b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/tags/message.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-child-analyze/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-child-analyze/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"Hello Frank\";\nexport const $walks = /* over(1) */\"b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-child-analyze/__snapshots__/html.expected/tags/hello/index.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/hello/index.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"Hello\");\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-child-analyze/__snapshots__/html.expected/tags/message.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/message.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"Frank\");\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-child-analyze/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"Hello Frank\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-child-analyze/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\nHello Frank\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-child-analyze/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    Hello Frank\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-child-analyze/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\nHello Frank\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-child-analyze/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  Hello Frank\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    Hello Frank\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-child-analyze/tags/hello/index.marko",
    "content": "-- Hello\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-child-analyze/tags/hello/marko-tag.json",
    "content": "{\n  \"template\": \"./index.marko\",\n  \"transformer\": \"./transformer.ts\"\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-child-analyze/tags/hello/transformer.ts",
    "content": "import type { types } from \"@marko/compiler\";\nimport { loadFileForTag } from \"@marko/compiler/babel-utils\";\n\nexport default (helloTag: types.NodePath<types.MarkoTag>, t: typeof types) => {\n  const messageTag = (helloTag as any).getNextSibling();\n  helloTag.insertAfter(\n    t.markoText(`${readFileText(helloTag)} ${readFileText(messageTag)}`),\n  );\n  helloTag.remove();\n  messageTag.remove();\n};\n\nfunction readFileText(tag: types.NodePath<types.MarkoTag>) {\n  const file = loadFileForTag(tag)!;\n  return (file.path.get(\"body\")[0] as types.NodePath<types.MarkoText>).node\n    .value;\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-child-analyze/tags/message.marko",
    "content": "-- Frank\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-child-analyze/template.marko",
    "content": "<hello/>\n<message/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-default-value/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-default-value/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n3 y\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-default-value/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n3 y\n```\n\n# Mutations\n```\nINSERT #text0, #text1, #text2, #text3\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-default-value/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<!> \";\nexport const $walks = /* replace, over(2) */\"%c\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $value = ($scope, value) => _._text($scope[\"#text/0\"], value);\nexport const $input_value = ($scope, input_value) => $value($scope, input_value);\nexport const $input = ($scope, input) => $input_value($scope, input.value);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-default-value/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-default-value/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `${_child_template}${_child_template}`;\nexport const $walks = /* <child>, <child> */`/${_child_walks}&/${_child_walks}&`;\nimport { $setup as _child, $input_value as _child_input_value, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $x = /* @__PURE__ */_._let(\"x/2\", $scope => _child_input_value($scope[\"#childScope/1\"], $scope.x));\nexport function $setup($scope) {\n  _child($scope[\"#childScope/0\"]);\n  _child_input_value($scope[\"#childScope/0\"], 3);\n  _child($scope[\"#childScope/1\"]);\n  $x($scope, \"y\");\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-default-value/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const value = input.value;\n  _._html(`${_._sep(_._serialize_guard($scope0_reason, /* input.value */0))}${_._escape(value)}${_._el_resume($scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.value */0))} `);\n  _._serialize_if($scope0_reason, /* input.value */0) && _._scope($scope0_id, {}, \"__tests__/tags/child.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-default-value/__snapshots__/html.expected/template.js",
    "content": "import _child from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let x = \"y\";\n  _child({\n    value: 3\n  });\n  _child({\n    value: x\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-default-value/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n3 y\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-default-value/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    3 y \n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-default-value/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n3 y\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-default-value/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  3 y \n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    3 y \n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-default-value/tags/child.marko",
    "content": "<const/value value=input.value/>\n\n-- ${value} "
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-default-value/template.marko",
    "content": "<let/x value=\"y\"/>\n\n\n<child=3/>\n<child=x/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-args/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$x__OR__y__script\": \"_\",\n      \"$$x__OR__y\": \"i\",\n      \"$$dynamicTag\": \"m\",\n      \"$$input_content__OR__x__OR__y\": \"r\",\n      \"$$x\": \"e\",\n      \"$$y\": \"a\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-args/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  class=\"inc\"\n>\n  1,10\n</button>\n<div>\n  Counts: 1,10\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  2,11\n</button>\n<div>\n  Counts: 2,11\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  3,12\n</button>\n<div>\n  Counts: 3,12\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  4,13\n</button>\n<div>\n  Counts: 4,13\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-args/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button\n  class=\"inc\"\n>\n  1,10\n</button>\n<div>\n  Counts: 1,10\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT button, div, #comment0, #comment1\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  2,11\n</button>\n<div>\n  Counts: 2,11\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text0 \"1\" => \"2\"\nUPDATE button/#text2 \"10\" => \"11\"\nUPDATE div/#text1 \"1\" => \"2\"\nUPDATE div/#text3 \"10\" => \"11\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  3,12\n</button>\n<div>\n  Counts: 3,12\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text0 \"2\" => \"3\"\nUPDATE button/#text2 \"11\" => \"12\"\nUPDATE div/#text1 \"2\" => \"3\"\nUPDATE div/#text3 \"11\" => \"12\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  4,13\n</button>\n<div>\n  Counts: 4,13\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text0 \"3\" => \"4\"\nUPDATE button/#text2 \"12\" => \"13\"\nUPDATE div/#text1 \"3\" => \"4\"\nUPDATE div/#text3 \"12\" => \"13\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-args/__snapshots__/dom.expected/tags/custom-tag.js",
    "content": "export const $template = \"<button class=inc><!>,<!></button><!><!>\";\nexport const $walks = /* get, next(1), replace, over(2), replace, out(1), replace, over(2) */\" D%c%l%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $x__OR__y__script = _._script(\"__tests__/tags/custom-tag.marko_0_x_y\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $x($scope, $scope.x + 1);\n  $y($scope, $scope.y + 1);\n}));\nconst $x__OR__y = /* @__PURE__ */_._or(9, $x__OR__y__script);\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/3\", 0, 0, 1);\nconst $input_content__OR__x__OR__y = /* @__PURE__ */_._or(10, $scope => $dynamicTag($scope, $scope.input_content, () => [$scope.x, $scope.y]), 2);\nconst $x = /* @__PURE__ */_._let(\"x/7\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.x);\n  $x__OR__y($scope);\n  $input_content__OR__x__OR__y($scope);\n});\nconst $y = /* @__PURE__ */_._let(\"y/8\", $scope => {\n  _._text($scope[\"#text/2\"], $scope.y);\n  $x__OR__y($scope);\n  $input_content__OR__x__OR__y($scope);\n});\nexport function $setup($scope) {\n  $x($scope, 1);\n  $y($scope, 10);\n}\nexport const $input_content = /* @__PURE__ */_._const(\"input_content\", $input_content__OR__x__OR__y);\nexport const $input = ($scope, input) => $input_content($scope, input.content);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/custom-tag.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-args/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 392 (min) 235 (brotli)\nconst $x__OR__y__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      ($x($scope, $scope.h + 1), $y($scope, $scope.i + 1));\n    }),\n  ),\n  $x__OR__y = _._or(9, $x__OR__y__script),\n  $dynamicTag = _._dynamic_tag(3, 0, 0, 1),\n  $input_content__OR__x__OR__y = _._or(\n    10,\n    ($scope) => $dynamicTag($scope, $scope.g, () => [$scope.h, $scope.i]),\n    2,\n  ),\n  $x = _._let(7, ($scope) => {\n    (_._text($scope.b, $scope.h),\n      $x__OR__y($scope),\n      $input_content__OR__x__OR__y($scope));\n  }),\n  $y = _._let(8, ($scope) => {\n    (_._text($scope.c, $scope.i),\n      $x__OR__y($scope),\n      $input_content__OR__x__OR__y($scope));\n  });\n(_._content_resume(\n  \"b0\",\n  \"<div>Counts: <!>,<!></div>\",\n  \"Db%c%l\",\n  0,\n  ($scope, $params2) => {\n    ((($scope, count) => {\n      _._text($scope.a, count);\n    })($scope, $params2[0]),\n      (($scope, count2) => {\n        _._text($scope.b, count2);\n      })($scope, $params2[1]));\n  },\n),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-args/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `${_customTag_template}<!>`;\nexport const $walks = /* <custom-tag>, over(1) */`/${_customTag_walks}&b`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _customTag, $input_content as _customTag_input_content, $template as _customTag_template, $walks as _customTag_walks } from \"./tags/custom-tag.marko\";\nconst $customtag_content__count = ($scope, count) => _._text($scope[\"#text/0\"], count);\nconst $customtag_content__count2 = ($scope, count2) => _._text($scope[\"#text/1\"], count2);\nconst $customtag_content__$params = ($scope, $params2) => {\n  $customtag_content__count($scope, $params2[0]);\n  $customtag_content__count2($scope, $params2[1]);\n};\nconst $customtag_content = _._content_resume(\"__tests__/template.marko_1_content\", \"<div>Counts: <!>,<!></div>\", /* next(1), over(1), replace, over(2), replace, out(1) */\"Db%c%l\", 0, $customtag_content__$params);\nexport function $setup($scope) {\n  _customTag($scope[\"#childScope/0\"]);\n  _customTag_input_content($scope[\"#childScope/0\"], $customtag_content($scope));\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-args/__snapshots__/html.expected/tags/custom-tag.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/custom-tag.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let x = 1;\n  let y = 10;\n  _._html(`<button class=inc>${_._escape(x)}${_._el_resume($scope0_id, \"#text/1\")},<!>${_._escape(y)}${_._el_resume($scope0_id, \"#text/2\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._dynamic_tag($scope0_id, \"#text/3\", input.content, [x, y], 0, 1);\n  _._script($scope0_id, \"__tests__/tags/custom-tag.marko_0_x_y\");\n  _._scope($scope0_id, {\n    input_content: input.content,\n    x,\n    y\n  }, \"__tests__/tags/custom-tag.marko\", 0, {\n    input_content: [\"input.content\"],\n    x: \"1:6\",\n    y: \"2:6\"\n  });\n  _._resume_branch($scope0_id);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-args/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _customTag from \"./tags/custom-tag.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _customTag({\n    content: _._content_resume(\"__tests__/template.marko_1_content\", (count, count2) => {\n      const $scope1_reason = _._scope_reason();\n      const $scope1_id = _._scope_id();\n      _._html(`<div>Counts: ${_._sep(_._serialize_guard($scope1_reason, /* count */1))}${_._escape(count)}${_._el_resume($scope1_id, \"#text/0\", _._serialize_guard($scope1_reason, /* count */1))},${_._sep(_._serialize_guard($scope1_reason, /* count2 */2))}${_._escape(count2)}${_._el_resume($scope1_id, \"#text/1\", _._serialize_guard($scope1_reason, /* count2 */2))}</div>`);\n      _._serialize_if($scope1_reason, /* count, count2 */0) && _._scope($scope1_id, {}, \"__tests__/template.marko\", \"1:2\");\n    }, $scope0_id)\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-args/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  class=\"inc\"\n>\n  1,10\n</button>\n<div>\n  Counts: 1,10\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  2,11\n</button>\n<div>\n  Counts: 2,11\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  3,12\n</button>\n<div>\n  Counts: 3,12\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  4,13\n</button>\n<div>\n  Counts: 4,13\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-args/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    >\n      1\n      <!--M_*2 #text/1-->\n      ,\n      <!---->\n      10\n      <!--M_*2 #text/2-->\n    </button>\n    <!--M_*2 #button/0-->\n    <!--M_[-->\n    <div>\n      Counts: \n      <!---->\n      1\n      <!--M_*3 #text/0-->\n      ,\n      <!---->\n      10\n      <!--M_*3 #text/1-->\n    </div>\n    <!--M_]2 #text/3 3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n          \"ConditionalRenderer:#text/3\": \"__tests__/template.marko_1_content\",\n          input_content: _.c = {},\n          x: 1,\n          y: 10\n        }], _.a.input_content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.c), _.b),\n        \"__tests__/tags/custom-tag.marko_0_x_y 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    >\n      2\n      <!--M_*2 #text/1-->\n      ,\n      <!---->\n      11\n      <!--M_*2 #text/2-->\n    </button>\n    <!--M_*2 #button/0-->\n    <!--M_[-->\n    <div>\n      Counts: \n      <!---->\n      2\n      <!--M_*3 #text/0-->\n      ,\n      <!---->\n      11\n      <!--M_*3 #text/1-->\n    </div>\n    <!--M_]2 #text/3 3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n          \"ConditionalRenderer:#text/3\": \"__tests__/template.marko_1_content\",\n          input_content: _.c = {},\n          x: 1,\n          y: 10\n        }], _.a.input_content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.c), _.b),\n        \"__tests__/tags/custom-tag.marko_0_x_y 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text0 \"1\" => \"2\"\nUPDATE html/body/button/#text2 \"10\" => \"11\"\nUPDATE html/body/div/#text1 \"1\" => \"2\"\nUPDATE html/body/div/#text3 \"10\" => \"11\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    >\n      3\n      <!--M_*2 #text/1-->\n      ,\n      <!---->\n      12\n      <!--M_*2 #text/2-->\n    </button>\n    <!--M_*2 #button/0-->\n    <!--M_[-->\n    <div>\n      Counts: \n      <!---->\n      3\n      <!--M_*3 #text/0-->\n      ,\n      <!---->\n      12\n      <!--M_*3 #text/1-->\n    </div>\n    <!--M_]2 #text/3 3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n          \"ConditionalRenderer:#text/3\": \"__tests__/template.marko_1_content\",\n          input_content: _.c = {},\n          x: 1,\n          y: 10\n        }], _.a.input_content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.c), _.b),\n        \"__tests__/tags/custom-tag.marko_0_x_y 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text0 \"2\" => \"3\"\nUPDATE html/body/button/#text2 \"11\" => \"12\"\nUPDATE html/body/div/#text1 \"2\" => \"3\"\nUPDATE html/body/div/#text3 \"11\" => \"12\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    >\n      4\n      <!--M_*2 #text/1-->\n      ,\n      <!---->\n      13\n      <!--M_*2 #text/2-->\n    </button>\n    <!--M_*2 #button/0-->\n    <!--M_[-->\n    <div>\n      Counts: \n      <!---->\n      4\n      <!--M_*3 #text/0-->\n      ,\n      <!---->\n      13\n      <!--M_*3 #text/1-->\n    </div>\n    <!--M_]2 #text/3 3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n          \"ConditionalRenderer:#text/3\": \"__tests__/template.marko_1_content\",\n          input_content: _.c = {},\n          x: 1,\n          y: 10\n        }], _.a.input_content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.c), _.b),\n        \"__tests__/tags/custom-tag.marko_0_x_y 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text0 \"3\" => \"4\"\nUPDATE html/body/button/#text2 \"12\" => \"13\"\nUPDATE html/body/div/#text1 \"3\" => \"4\"\nUPDATE html/body/div/#text3 \"12\" => \"13\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-args/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button\n  class=\"inc\"\n>\n  1,10\n</button>\n<div>\n  Counts: 1,10\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-args/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button class=inc>1<!--M_*2 #text/1-->,<!>10<!--M_*2 #text/2--></button><!--M_*2 #button/0--><!--M_[--><div>Counts: <!>1<!--M_*3 #text/0-->,<!>10<!--M_*3 #text/1--></div><!--M_]2 #text/3 3--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,1,_.a={\"ConditionalRenderer:#text/3\":\"__tests__/template.marko_1_content\",input_content:_.c={},x:1,y:10}],_.a.input_content=_._[\"__tests__/template.marko_1_content\"](_.c),_.b),\"__tests__/tags/custom-tag.marko_0_x_y 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    >\n      1\n      <!--M_*2 #text/1-->\n      ,\n      <!---->\n      10\n      <!--M_*2 #text/2-->\n    </button>\n    <!--M_*2 #button/0-->\n    <!--M_[-->\n    <div>\n      Counts: \n      <!---->\n      1\n      <!--M_*3 #text/0-->\n      ,\n      <!---->\n      10\n      <!--M_*3 #text/1-->\n    </div>\n    <!--M_]2 #text/3 3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n          \"ConditionalRenderer:#text/3\": \"__tests__/template.marko_1_content\",\n          input_content: _.c = {},\n          x: 1,\n          y: 10\n        }], _.a.input_content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.c), _.b),\n        \"__tests__/tags/custom-tag.marko_0_x_y 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text0\nINSERT html/body/button/#comment0\nINSERT html/body/button/#text1\nINSERT html/body/button/#comment1\nINSERT html/body/button/#text2\nINSERT html/body/button/#comment2\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/div\nINSERT html/body/div/#text0\nINSERT html/body/div/#comment0\nINSERT html/body/div/#text1\nINSERT html/body/div/#comment1\nINSERT html/body/div/#text2\nINSERT html/body/div/#comment2\nINSERT html/body/div/#text3\nINSERT html/body/div/#comment3\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-args/tags/custom-tag.marko",
    "content": "<let/x = 1/>\n<let/y = 10/>\n<button.inc onClick() { x++; y++ }>\n  ${x},${y}\n</button>\n\n<${input.content}(x, y)/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-args/template.marko",
    "content": "<custom-tag|count, count2|>\n  <div>Counts: ${count},${count2}</div>\n</custom-tag>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-args/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-attributes/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$dynamicTag\": \"m\",\n      \"$$input_content__OR__input_name__OR__x\": \"n\",\n      \"$$x__script\": \"a\",\n      \"$$x\": \"e\",\n      \"$$customtag_content__$temp\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-attributes/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  class=\"inc\"\n>\n  1\n</button>\n<div>\n  Count (hello): 1\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  2\n</button>\n<div>\n  Count (hello): 2\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  3\n</button>\n<div>\n  Count (hello): 3\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  4\n</button>\n<div>\n  Count (hello): 4\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-attributes/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button\n  class=\"inc\"\n>\n  1\n</button>\n<div>\n  Count (hello): 1\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT button, div, #comment0, #comment1\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  2\n</button>\n<div>\n  Count (hello): 2\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text \"1\" => \"2\"\nUPDATE div/#text3 \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  3\n</button>\n<div>\n  Count (hello): 3\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text \"2\" => \"3\"\nUPDATE div/#text3 \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  4\n</button>\n<div>\n  Count (hello): 4\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text \"3\" => \"4\"\nUPDATE div/#text3 \"3\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-attributes/__snapshots__/dom.expected/tags/custom-tag.js",
    "content": "export const $template = \"<button class=inc> </button><!><!>\";\nexport const $walks = /* get, next(1), get, out(1), replace, over(2) */\" D l%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/2\");\nconst $input_content__OR__input_name__OR__x = /* @__PURE__ */_._or(8, $scope => $dynamicTag($scope, $scope.input_content, () => ({\n  count: $scope.x,\n  name: $scope.input_name\n})), 2);\nconst $x__script = _._script(\"__tests__/tags/custom-tag.marko_0_x\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $x($scope, $scope.x + 1);\n}));\nconst $x = /* @__PURE__ */_._let(\"x/7\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.x);\n  $input_content__OR__input_name__OR__x($scope);\n  $x__script($scope);\n});\nexport function $setup($scope) {\n  $x($scope, 1);\n}\nexport const $input_content = /* @__PURE__ */_._const(\"input_content\", $input_content__OR__input_name__OR__x);\nexport const $input_name = /* @__PURE__ */_._const(\"input_name\", $input_content__OR__input_name__OR__x);\nexport const $input = ($scope, input) => {\n  $input_content($scope, input.content);\n  $input_name($scope, input.name);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/custom-tag.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-attributes/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 357 (min) 221 (brotli)\nconst $dynamicTag = _._dynamic_tag(2),\n  $input_content__OR__input_name__OR__x = _._or(\n    8,\n    ($scope) =>\n      $dynamicTag($scope, $scope.f, () => ({\n        count: $scope.h,\n        name: $scope.g,\n      })),\n    2,\n  ),\n  $x__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $x($scope, $scope.h + 1);\n    }),\n  ),\n  $x = _._let(7, ($scope) => {\n    (_._text($scope.b, $scope.h),\n      $input_content__OR__input_name__OR__x($scope),\n      $x__script($scope));\n  }),\n  $customtag_content__$temp = ($scope, $temp) => {\n    ((($scope, count) => {\n      _._text($scope.b, count);\n    })($scope, $temp.count),\n      (($scope, name) => {\n        _._text($scope.a, name);\n      })($scope, $temp.name));\n  };\n(_._content_resume(\n  \"b0\",\n  \"<div>Count (<!>): <!></div>\",\n  \"Db%c%l\",\n  0,\n  ($scope, $params2) => $customtag_content__$temp($scope, $params2?.[0]),\n),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-attributes/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `${_customTag_template}<!>`;\nexport const $walks = /* <custom-tag>, over(1) */`/${_customTag_walks}&b`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _customTag, $input_content as _customTag_input_content, $input_name as _customTag_input_name, $template as _customTag_template, $walks as _customTag_walks } from \"./tags/custom-tag.marko\";\nconst $customtag_content__name = ($scope, name) => _._text($scope[\"#text/0\"], name);\nconst $customtag_content__count = ($scope, count) => _._text($scope[\"#text/1\"], count);\nconst $customtag_content__$params = ($scope, $params2) => $customtag_content__$temp($scope, $params2?.[0]);\nconst $customtag_content__$temp = ($scope, $temp) => {\n  $customtag_content__count($scope, $temp.count);\n  $customtag_content__name($scope, $temp.name);\n};\nconst $customtag_content = _._content_resume(\"__tests__/template.marko_1_content\", \"<div>Count (<!>): <!></div>\", /* next(1), over(1), replace, over(2), replace, out(1) */\"Db%c%l\", 0, $customtag_content__$params);\nexport function $setup($scope) {\n  _customTag($scope[\"#childScope/0\"]);\n  _customTag_input_content($scope[\"#childScope/0\"], $customtag_content($scope));\n  _customTag_input_name($scope[\"#childScope/0\"], \"hello\");\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-attributes/__snapshots__/html.expected/tags/custom-tag.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/custom-tag.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let x = 1;\n  _._html(`<button class=inc>${_._escape(x)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._dynamic_tag($scope0_id, \"#text/2\", input.content, {\n    count: x,\n    name: input.name\n  });\n  _._script($scope0_id, \"__tests__/tags/custom-tag.marko_0_x\");\n  _._scope($scope0_id, {\n    input_content: input.content,\n    input_name: input.name,\n    x\n  }, \"__tests__/tags/custom-tag.marko\", 0, {\n    input_content: [\"input.content\"],\n    input_name: [\"input.name\"],\n    x: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-attributes/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _customTag from \"./tags/custom-tag.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _customTag({\n    name: \"hello\",\n    content: _._content_resume(\"__tests__/template.marko_1_content\", ({\n      count,\n      name\n    }) => {\n      const $scope1_reason = _._scope_reason();\n      const $scope1_id = _._scope_id();\n      _._html(`<div>Count (${_._sep(_._serialize_guard($scope1_reason, /* name */2))}${_._escape(name)}${_._el_resume($scope1_id, \"#text/0\", _._serialize_guard($scope1_reason, /* name */2))}): ${_._sep(_._serialize_guard($scope1_reason, /* count */1))}${_._escape(count)}${_._el_resume($scope1_id, \"#text/1\", _._serialize_guard($scope1_reason, /* count */1))}</div>`);\n      _._serialize_if($scope1_reason, /* count, name */0) && _._scope($scope1_id, {}, \"__tests__/template.marko\", \"1:2\");\n    }, $scope0_id)\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-attributes/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  class=\"inc\"\n>\n  1\n</button>\n<div>\n  Count (hello): 1\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  2\n</button>\n<div>\n  Count (hello): 2\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  3\n</button>\n<div>\n  Count (hello): 3\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  4\n</button>\n<div>\n  Count (hello): 4\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-attributes/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    >\n      1\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <!--M_[-->\n    <div>\n      Count (\n      <!---->\n      hello\n      <!--M_*3 #text/0-->\n      ): \n      <!---->\n      1\n      <!--M_*3 #text/1-->\n    </div>\n    <!--M_]2 #text/2 3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n          \"ConditionalRenderer:#text/2\": \"__tests__/template.marko_1_content\",\n          input_content: _.c = {},\n          input_name: \"hello\",\n          x: 1\n        }], _.a.input_content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.c), _.b),\n        \"__tests__/tags/custom-tag.marko_0_x 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    >\n      2\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <!--M_[-->\n    <div>\n      Count (\n      <!---->\n      hello\n      <!--M_*3 #text/0-->\n      ): \n      <!---->\n      2\n      <!--M_*3 #text/1-->\n    </div>\n    <!--M_]2 #text/2 3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n          \"ConditionalRenderer:#text/2\": \"__tests__/template.marko_1_content\",\n          input_content: _.c = {},\n          input_name: \"hello\",\n          x: 1\n        }], _.a.input_content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.c), _.b),\n        \"__tests__/tags/custom-tag.marko_0_x 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"1\" => \"2\"\nUPDATE html/body/div/#text3 \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    >\n      3\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <!--M_[-->\n    <div>\n      Count (\n      <!---->\n      hello\n      <!--M_*3 #text/0-->\n      ): \n      <!---->\n      3\n      <!--M_*3 #text/1-->\n    </div>\n    <!--M_]2 #text/2 3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n          \"ConditionalRenderer:#text/2\": \"__tests__/template.marko_1_content\",\n          input_content: _.c = {},\n          input_name: \"hello\",\n          x: 1\n        }], _.a.input_content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.c), _.b),\n        \"__tests__/tags/custom-tag.marko_0_x 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"2\" => \"3\"\nUPDATE html/body/div/#text3 \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    >\n      4\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <!--M_[-->\n    <div>\n      Count (\n      <!---->\n      hello\n      <!--M_*3 #text/0-->\n      ): \n      <!---->\n      4\n      <!--M_*3 #text/1-->\n    </div>\n    <!--M_]2 #text/2 3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n          \"ConditionalRenderer:#text/2\": \"__tests__/template.marko_1_content\",\n          input_content: _.c = {},\n          input_name: \"hello\",\n          x: 1\n        }], _.a.input_content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.c), _.b),\n        \"__tests__/tags/custom-tag.marko_0_x 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"3\" => \"4\"\nUPDATE html/body/div/#text3 \"3\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-attributes/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button\n  class=\"inc\"\n>\n  1\n</button>\n<div>\n  Count (hello): 1\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-attributes/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button class=inc>1<!--M_*2 #text/1--></button><!--M_*2 #button/0--><!--M_[--><div>Count (<!>hello<!--M_*3 #text/0-->): <!>1<!--M_*3 #text/1--></div><!--M_]2 #text/2 3--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,1,_.a={\"ConditionalRenderer:#text/2\":\"__tests__/template.marko_1_content\",input_content:_.c={},input_name:\"hello\",x:1}],_.a.input_content=_._[\"__tests__/template.marko_1_content\"](_.c),_.b),\"__tests__/tags/custom-tag.marko_0_x 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    >\n      1\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <!--M_[-->\n    <div>\n      Count (\n      <!---->\n      hello\n      <!--M_*3 #text/0-->\n      ): \n      <!---->\n      1\n      <!--M_*3 #text/1-->\n    </div>\n    <!--M_]2 #text/2 3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n          \"ConditionalRenderer:#text/2\": \"__tests__/template.marko_1_content\",\n          input_content: _.c = {},\n          input_name: \"hello\",\n          x: 1\n        }], _.a.input_content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.c), _.b),\n        \"__tests__/tags/custom-tag.marko_0_x 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/div\nINSERT html/body/div/#text0\nINSERT html/body/div/#comment0\nINSERT html/body/div/#text1\nINSERT html/body/div/#comment1\nINSERT html/body/div/#text2\nINSERT html/body/div/#comment2\nINSERT html/body/div/#text3\nINSERT html/body/div/#comment3\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-attributes/tags/custom-tag.marko",
    "content": "<let/x = 1/>\n<button.inc onClick() { x++ }>\n  ${x}\n</button>\n\n<${input.content} count=x name=input.name/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-attributes/template.marko",
    "content": "<custom-tag|{ count, name }| name=\"hello\">\n  <div>Count (${name}): ${count}</div>\n</custom-tag>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-attributes/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-single-arg/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$dynamicTag\": \"m\",\n      \"$$input_content__OR__x\": \"r\",\n      \"$$x__script\": \"a\",\n      \"$$x\": \"i\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-single-arg/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  class=\"inc\"\n>\n  1\n</button>\n<div>\n  Count: 1\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  2\n</button>\n<div>\n  Count: 2\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  3\n</button>\n<div>\n  Count: 3\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  4\n</button>\n<div>\n  Count: 4\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-single-arg/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button\n  class=\"inc\"\n>\n  1\n</button>\n<div>\n  Count: 1\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT button, div, #comment0, #comment1\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  2\n</button>\n<div>\n  Count: 2\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text \"1\" => \"2\"\nUPDATE div/#text1 \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  3\n</button>\n<div>\n  Count: 3\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text \"2\" => \"3\"\nUPDATE div/#text1 \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  4\n</button>\n<div>\n  Count: 4\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text \"3\" => \"4\"\nUPDATE div/#text1 \"3\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-single-arg/__snapshots__/dom.expected/tags/custom-tag.js",
    "content": "export const $template = \"<button class=inc> </button><!><!>\";\nexport const $walks = /* get, next(1), get, out(1), replace, over(2) */\" D l%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/2\", 0, 0, 1);\nconst $input_content__OR__x = /* @__PURE__ */_._or(7, $scope => $dynamicTag($scope, $scope.input_content, () => [$scope.x]));\nconst $x__script = _._script(\"__tests__/tags/custom-tag.marko_0_x\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $x($scope, $scope.x + 1);\n}));\nconst $x = /* @__PURE__ */_._let(\"x/6\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.x);\n  $input_content__OR__x($scope);\n  $x__script($scope);\n});\nexport function $setup($scope) {\n  $x($scope, 1);\n}\nexport const $input_content = /* @__PURE__ */_._const(\"input_content\", $input_content__OR__x);\nexport const $input = ($scope, input) => $input_content($scope, input.content);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/custom-tag.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-single-arg/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 272 (min) 197 (brotli)\nconst $dynamicTag = _._dynamic_tag(2, 0, 0, 1),\n  $input_content__OR__x = _._or(7, ($scope) =>\n    $dynamicTag($scope, $scope.f, () => [$scope.g]),\n  ),\n  $x__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $x($scope, $scope.g + 1);\n    }),\n  ),\n  $x = _._let(6, ($scope) => {\n    (_._text($scope.b, $scope.g),\n      $input_content__OR__x($scope),\n      $x__script($scope));\n  });\n(_._content_resume(\n  \"b0\",\n  \"<div>Count: <!></div>\",\n  \"Db%l\",\n  0,\n  ($scope, $params2) =>\n    (($scope, count) => _._text($scope.a, count))($scope, $params2[0]),\n),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-single-arg/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `${_customTag_template}<!>`;\nexport const $walks = /* <custom-tag>, over(1) */`/${_customTag_walks}&b`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _customTag, $input_content as _customTag_input_content, $template as _customTag_template, $walks as _customTag_walks } from \"./tags/custom-tag.marko\";\nconst $customtag_content__count = ($scope, count) => _._text($scope[\"#text/0\"], count);\nconst $customtag_content__$params = ($scope, $params2) => $customtag_content__count($scope, $params2[0]);\nconst $customtag_content = _._content_resume(\"__tests__/template.marko_1_content\", \"<div>Count: <!></div>\", /* next(1), over(1), replace, out(1) */\"Db%l\", 0, $customtag_content__$params);\nexport function $setup($scope) {\n  _customTag($scope[\"#childScope/0\"]);\n  _customTag_input_content($scope[\"#childScope/0\"], $customtag_content($scope));\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-single-arg/__snapshots__/html.expected/tags/custom-tag.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/custom-tag.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let x = 1;\n  _._html(`<button class=inc>${_._escape(x)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._dynamic_tag($scope0_id, \"#text/2\", input.content, [x], 0, 1);\n  _._script($scope0_id, \"__tests__/tags/custom-tag.marko_0_x\");\n  _._scope($scope0_id, {\n    input_content: input.content,\n    x\n  }, \"__tests__/tags/custom-tag.marko\", 0, {\n    input_content: [\"input.content\"],\n    x: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-single-arg/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _customTag from \"./tags/custom-tag.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _customTag({\n    content: _._content_resume(\"__tests__/template.marko_1_content\", count => {\n      const $scope1_reason = _._scope_reason();\n      const $scope1_id = _._scope_id();\n      _._html(`<div>Count: ${_._sep(_._serialize_guard($scope1_reason, /* count */0))}${_._escape(count)}${_._el_resume($scope1_id, \"#text/0\", _._serialize_guard($scope1_reason, /* count */0))}</div>`);\n      _._serialize_if($scope1_reason, /* count */0) && _._scope($scope1_id, {}, \"__tests__/template.marko\", \"1:2\");\n    }, $scope0_id)\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-single-arg/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  class=\"inc\"\n>\n  1\n</button>\n<div>\n  Count: 1\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  2\n</button>\n<div>\n  Count: 2\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  3\n</button>\n<div>\n  Count: 3\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  4\n</button>\n<div>\n  Count: 4\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-single-arg/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    >\n      1\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <!--M_[-->\n    <div>\n      Count: \n      <!---->\n      1\n      <!--M_*3 #text/0-->\n    </div>\n    <!--M_]2 #text/2 3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n          \"ConditionalRenderer:#text/2\": \"__tests__/template.marko_1_content\",\n          input_content: _.c = {},\n          x: 1\n        }], _.a.input_content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.c), _.b),\n        \"__tests__/tags/custom-tag.marko_0_x 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    >\n      2\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <!--M_[-->\n    <div>\n      Count: \n      <!---->\n      2\n      <!--M_*3 #text/0-->\n    </div>\n    <!--M_]2 #text/2 3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n          \"ConditionalRenderer:#text/2\": \"__tests__/template.marko_1_content\",\n          input_content: _.c = {},\n          x: 1\n        }], _.a.input_content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.c), _.b),\n        \"__tests__/tags/custom-tag.marko_0_x 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"1\" => \"2\"\nUPDATE html/body/div/#text1 \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    >\n      3\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <!--M_[-->\n    <div>\n      Count: \n      <!---->\n      3\n      <!--M_*3 #text/0-->\n    </div>\n    <!--M_]2 #text/2 3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n          \"ConditionalRenderer:#text/2\": \"__tests__/template.marko_1_content\",\n          input_content: _.c = {},\n          x: 1\n        }], _.a.input_content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.c), _.b),\n        \"__tests__/tags/custom-tag.marko_0_x 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"2\" => \"3\"\nUPDATE html/body/div/#text1 \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    >\n      4\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <!--M_[-->\n    <div>\n      Count: \n      <!---->\n      4\n      <!--M_*3 #text/0-->\n    </div>\n    <!--M_]2 #text/2 3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n          \"ConditionalRenderer:#text/2\": \"__tests__/template.marko_1_content\",\n          input_content: _.c = {},\n          x: 1\n        }], _.a.input_content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.c), _.b),\n        \"__tests__/tags/custom-tag.marko_0_x 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"3\" => \"4\"\nUPDATE html/body/div/#text1 \"3\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-single-arg/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button\n  class=\"inc\"\n>\n  1\n</button>\n<div>\n  Count: 1\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-single-arg/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button class=inc>1<!--M_*2 #text/1--></button><!--M_*2 #button/0--><!--M_[--><div>Count: <!>1<!--M_*3 #text/0--></div><!--M_]2 #text/2 3--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,1,_.a={\"ConditionalRenderer:#text/2\":\"__tests__/template.marko_1_content\",input_content:_.c={},x:1}],_.a.input_content=_._[\"__tests__/template.marko_1_content\"](_.c),_.b),\"__tests__/tags/custom-tag.marko_0_x 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    >\n      1\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <!--M_[-->\n    <div>\n      Count: \n      <!---->\n      1\n      <!--M_*3 #text/0-->\n    </div>\n    <!--M_]2 #text/2 3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n          \"ConditionalRenderer:#text/2\": \"__tests__/template.marko_1_content\",\n          input_content: _.c = {},\n          x: 1\n        }], _.a.input_content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.c), _.b),\n        \"__tests__/tags/custom-tag.marko_0_x 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/div\nINSERT html/body/div/#text0\nINSERT html/body/div/#comment0\nINSERT html/body/div/#text1\nINSERT html/body/div/#comment1\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-single-arg/tags/custom-tag.marko",
    "content": "<let/x = 1/>\n<button.inc onClick() { x++ }>\n  ${x}\n</button>\n\n<${input.content}(x)/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-single-arg/template.marko",
    "content": "<custom-tag|count|>\n  <div>Count: ${count}</div>\n</custom-tag>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-single-arg/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-render-body/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-render-body/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\nWorldThis is the body content\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-render-body/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\nWorldThis is the body content\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #text0, #text1, #comment0, #comment1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-render-body/__snapshots__/dom.expected/tags/child/index.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* replace, over(1), replace, over(2) */\"%b%c\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $name = ($scope, name) => _._text($scope[\"#text/0\"], name);\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/1\");\nexport const $content = ($scope, content) => $dynamicTag($scope, content);\nexport const $input = ($scope, input) => {\n  $name($scope, input.name);\n  $content($scope, input.content);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child/index.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-render-body/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-render-body/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `${_child_template}<!>`;\nexport const $walks = /* <child>, over(1) */`/${_child_walks}&b`;\nimport { $setup as _child, $content as _child_input_content, $name as _child_input_name, $template as _child_template, $walks as _child_walks } from \"./tags/child/index.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $child_content = /* @__PURE__ */_._content(\"__tests__/template.marko_1_content\", \"This is the body content\", /* over(1) */\"b\");\nexport function $setup($scope) {\n  _child($scope[\"#childScope/0\"]);\n  _child_input_content($scope[\"#childScope/0\"], $child_content($scope));\n  _child_input_name($scope[\"#childScope/0\"], \"World\");\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-render-body/__snapshots__/html.expected/tags/child/index.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child/index.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    name,\n    content\n  } = input;\n  _._html(`${_._sep(_._serialize_guard($scope0_reason, /* input.name */1))}${_._escape(name)}${_._el_resume($scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.name */1))}`);\n  _._dynamic_tag($scope0_id, \"#text/1\", content, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.content */2));\n  _._serialize_if($scope0_reason, /* input.name, input.content */0) && _._scope($scope0_id, {}, \"__tests__/tags/child/index.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-render-body/__snapshots__/html.expected/template.js",
    "content": "import _child from \"./tags/child/index.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _child({\n    name: \"World\",\n    content: _._content(\"__tests__/template.marko_1_content\", () => {\n      _._scope_reason();\n      const $scope1_id = _._scope_id();\n      _._html(\"This is the body content\");\n    })\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-render-body/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\nWorldThis is the body content\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-render-body/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    WorldThis is the body content\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-render-body/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\nWorldThis is the body content\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-render-body/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  WorldThis is the body content\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    WorldThis is the body content\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-render-body/tags/child/index.marko",
    "content": "<const/{ name, content } = input/>\n-- ${name}\n<${content}/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-render-body/template.marko",
    "content": "<child name=\"World\">\n    This is the body content\n</child>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-separate-assets/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* over(1) */\"b\";\nexport const $setup = () => {};\nimport \"./template.style.css\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-separate-assets/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div></div>\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-separate-assets/template.marko",
    "content": "<div/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-separate-assets/template.style.css",
    "content": "div {\n  color: green;\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-separate-assets/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  skip_csr: true,\n  skip_ssr: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-template/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-template/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\nHello Frank!\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-template/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\nHello Frank!\n```\n\n# Mutations\n```\nINSERT #text0, #text1, #text2\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-template/__snapshots__/dom.expected/hello.js",
    "content": "export const $template = \"Hello <!>!\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $input_name = ($scope, input_name) => _._text($scope[\"#text/0\"], input_name);\nexport const $input = ($scope, input) => $input_name($scope, input.name);\nexport default /* @__PURE__ */_._template(\"__tests__/hello.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-template/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-template/__snapshots__/dom.expected/template.js",
    "content": "export const $template = _hello_template;\nexport const $walks = /* <hello> */`/${_hello_walks}&`;\nimport { $setup as _hello, $input_name as _hello_input_name, $template as _hello_template, $walks as _hello_walks } from \"./hello.marko\";\nexport function $setup($scope) {\n  _hello($scope[\"#childScope/0\"]);\n  _hello_input_name($scope[\"#childScope/0\"], \"Frank\");\n}\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-template/__snapshots__/html.expected/hello.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/hello.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`Hello ${_._sep(_._serialize_guard($scope0_reason, /* input.name */0))}${_._escape(input.name)}${_._el_resume($scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.name */0))}!`);\n  _._serialize_if($scope0_reason, /* input.name */0) && _._scope($scope0_id, {}, \"__tests__/hello.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-template/__snapshots__/html.expected/template.js",
    "content": "import _hello from \"./hello.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _hello({\n    name: \"Frank\"\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-template/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\nHello Frank!\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-template/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    Hello Frank!\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-template/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\nHello Frank!\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-template/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  Hello Frank!\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    Hello Frank!\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-template/hello.marko",
    "content": "-- Hello ${input.name}!"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-template/marko.json",
    "content": "{\n  \"<hello>\": {\n    \"template\": \"./hello.marko\"\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-template/template.marko",
    "content": "<hello name=\"Frank\"/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"r\",\n      \"$$x__script\": \"m\",\n      \"$$x\": \"o\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  class=\"inc\"\n>\n  1\n</button>\n<div>\n  1\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  2\n</button>\n<div>\n  2\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  3\n</button>\n<div>\n  3\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  4\n</button>\n<div>\n  4\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button\n  class=\"inc\"\n>\n  1\n</button>\n<div>\n  1\n</div>\n```\n\n# Mutations\n```\nINSERT button, div\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  2\n</button>\n<div>\n  2\n</div>\n```\n\n# Mutations\n```\nUPDATE button/#text \"1\" => \"2\"\nUPDATE div/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  3\n</button>\n<div>\n  3\n</div>\n```\n\n# Mutations\n```\nUPDATE button/#text \"2\" => \"3\"\nUPDATE div/#text \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  4\n</button>\n<div>\n  4\n</div>\n```\n\n# Mutations\n```\nUPDATE button/#text \"3\" => \"4\"\nUPDATE div/#text \"3\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<button class=inc> </button>\";\nexport const $walks = /* get, next(1), get, out(1) */\" D l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $x__script = _._script(\"__tests__/tags/child.marko_0_x\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $x($scope, $scope.x + 1);\n}));\nconst $x = /* @__PURE__ */_._let(\"x/2\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.x);\n  _._return($scope, $scope.x);\n  $x__script($scope);\n});\nexport function $setup($scope) {\n  $x($scope, 1);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 171 (min) 128 (brotli)\nconst $x__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $x($scope, $scope.c + 1);\n    }),\n  ),\n  $x = _._let(2, ($scope) => {\n    (_._text($scope.b, $scope.c),\n      _._return($scope, $scope.c),\n      $x__script($scope));\n  });\n(_._var_resume(\"b0\", ($scope, data) => _._text($scope.c, data)), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `${_child_template}<div> </div>`;\nexport const $walks = /* <child/var>, next(1), get, out(1) */`0${_child_walks}&D l`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _child, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nconst $data = _._var_resume(\"__tests__/template.marko_0_data/var\", ($scope, data) => _._text($scope[\"#text/2\"], data));\nexport function $setup($scope) {\n  _._var($scope, \"#childScope/0\", $data);\n  _child($scope[\"#childScope/0\"]);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let x = 1;\n  _._html(`<button class=inc>${_._escape(x)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  const $return = x;\n  _._script($scope0_id, \"__tests__/tags/child.marko_0_x\");\n  _._scope($scope0_id, {\n    x\n  }, \"__tests__/tags/child.marko\", 0, {\n    x: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n  return $return;\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var/__snapshots__/html.expected/template.js",
    "content": "import _child from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $childScope = _._peek_scope_id();\n  let data = _child({});\n  _._var($scope0_id, \"#scopeOffset/1\", $childScope, \"__tests__/template.marko_0_data/var\");\n  _._html(`<div>${_._escape(data)}${_._el_resume($scope0_id, \"#text/2\")}</div>`);\n  _._scope($scope0_id, {\n    \"#childScope/0\": _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  class=\"inc\"\n>\n  1\n</button>\n<div>\n  1\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  2\n</button>\n<div>\n  2\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  3\n</button>\n<div>\n  3\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  4\n</button>\n<div>\n  4\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    >\n      1\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <div>\n      1\n      <!--M_*1 #text/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"#scopeOffset/1\": 3,\n          \"#childScope/0\": _.a = {\n            x: 1\n          }\n        }, _.a], _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_data/var\"\n          ](_.c), _.b),\n        \"__tests__/tags/child.marko_0_x 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    >\n      2\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <div>\n      2\n      <!--M_*1 #text/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"#scopeOffset/1\": 3,\n          \"#childScope/0\": _.a = {\n            x: 1\n          }\n        }, _.a], _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_data/var\"\n          ](_.c), _.b),\n        \"__tests__/tags/child.marko_0_x 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"1\" => \"2\"\nUPDATE html/body/div/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    >\n      3\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <div>\n      3\n      <!--M_*1 #text/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"#scopeOffset/1\": 3,\n          \"#childScope/0\": _.a = {\n            x: 1\n          }\n        }, _.a], _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_data/var\"\n          ](_.c), _.b),\n        \"__tests__/tags/child.marko_0_x 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"2\" => \"3\"\nUPDATE html/body/div/#text \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    >\n      4\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <div>\n      4\n      <!--M_*1 #text/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"#scopeOffset/1\": 3,\n          \"#childScope/0\": _.a = {\n            x: 1\n          }\n        }, _.a], _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_data/var\"\n          ](_.c), _.b),\n        \"__tests__/tags/child.marko_0_x 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"3\" => \"4\"\nUPDATE html/body/div/#text \"3\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button\n  class=\"inc\"\n>\n  1\n</button>\n<div>\n  1\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button class=inc>1<!--M_*2 #text/1--></button><!--M_*2 #button/0--><div>1<!--M_*1 #text/2--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.c={\"#scopeOffset/1\":3,\"#childScope/0\":_.a={x:1}},_.a],_.a[\"#TagVariable\"]=_._[\"__tests__/template.marko_0_data/var\"](_.c),_.b),\"__tests__/tags/child.marko_0_x 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    >\n      1\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <div>\n      1\n      <!--M_*1 #text/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"#scopeOffset/1\": 3,\n          \"#childScope/0\": _.a = {\n            x: 1\n          }\n        }, _.a], _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_data/var\"\n          ](_.c), _.b),\n        \"__tests__/tags/child.marko_0_x 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/div/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var/tags/child.marko",
    "content": "<let/x = 1/>\n<button.inc onClick() { x++ }>\n  ${x}\n</button>\n<return=x/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var/template.marko",
    "content": "<child/data/>\n<div>${data}</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nconst increment = (container: Element) => {\n  container.querySelector<HTMLButtonElement>(\"button.inc\")!.click();\n};\n\nexport const config: TestConfig = {\n  steps: [{}, increment, increment, increment],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-assignment/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"c\",\n      \"$$x__script\": \"n\",\n      \"$$x\": \"r\",\n      \"$$count__script\": \"o\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-assignment/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  class=\"inc-child\"\n>\n  1\n</button>\n<button\n  class=\"inc-parent\"\n>\n  1\n</button>\n<button\n  class=\"reset\"\n>\n  reset\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.inc-child\").click();\n```\n```html\n<button\n  class=\"inc-child\"\n>\n  2\n</button>\n<button\n  class=\"inc-parent\"\n>\n  2\n</button>\n<button\n  class=\"reset\"\n>\n  reset\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.inc-parent\").click();\n```\n```html\n<button\n  class=\"inc-child\"\n>\n  3\n</button>\n<button\n  class=\"inc-parent\"\n>\n  3\n</button>\n<button\n  class=\"reset\"\n>\n  reset\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.reset\").click();\n```\n```html\n<button\n  class=\"inc-child\"\n>\n  0\n</button>\n<button\n  class=\"inc-parent\"\n>\n  0\n</button>\n<button\n  class=\"reset\"\n>\n  reset\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-assignment/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button\n  class=\"inc-child\"\n>\n  1\n</button>\n<button\n  class=\"inc-parent\"\n>\n  1\n</button>\n<button\n  class=\"reset\"\n>\n  reset\n</button>\n```\n\n# Mutations\n```\nINSERT button0, button1, button2\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.inc-child\").click();\n```\n```html\n<button\n  class=\"inc-child\"\n>\n  2\n</button>\n<button\n  class=\"inc-parent\"\n>\n  2\n</button>\n<button\n  class=\"reset\"\n>\n  reset\n</button>\n```\n\n# Mutations\n```\nUPDATE button0/#text \"1\" => \"2\"\nUPDATE button1/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.inc-parent\").click();\n```\n```html\n<button\n  class=\"inc-child\"\n>\n  3\n</button>\n<button\n  class=\"inc-parent\"\n>\n  3\n</button>\n<button\n  class=\"reset\"\n>\n  reset\n</button>\n```\n\n# Mutations\n```\nUPDATE button0/#text \"2\" => \"3\"\nUPDATE button1/#text \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.reset\").click();\n```\n```html\n<button\n  class=\"inc-child\"\n>\n  0\n</button>\n<button\n  class=\"inc-parent\"\n>\n  0\n</button>\n<button\n  class=\"reset\"\n>\n  reset\n</button>\n```\n\n# Mutations\n```\nUPDATE button0/#text \"3\" => \"0\"\nUPDATE button1/#text \"3\" => \"0\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-assignment/__snapshots__/dom.expected/tags/counter.js",
    "content": "export const $template = \"<button class=inc-child> </button>\";\nexport const $walks = /* get, next(1), get, out(1) */\" D l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $x__script = _._script(\"__tests__/tags/counter.marko_0_x\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $x($scope, $scope.x + 1);\n}));\nconst $x = /* @__PURE__ */_._let(\"x/2\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.x);\n  _._return($scope, $scope.x);\n  $x__script($scope);\n});\nexport function $setup($scope) {\n  _._return_change($scope, $valueChange($scope));\n  $x($scope, 1);\n}\nfunction $valueChange($scope) {\n  return _new_x => {\n    $x($scope, _new_x);\n  };\n}\n_._resume(\"__tests__/tags/counter.marko_0/valueChange\", $valueChange);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/counter.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-assignment/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 390 (min) 185 (brotli)\nconst $x__script = _._script(\"a1\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $x($scope, $scope.c + 1);\n    }),\n  ),\n  $x = _._let(2, ($scope) => {\n    (_._text($scope.b, $scope.c),\n      _._return($scope, $scope.c),\n      $x__script($scope));\n  });\n_._resume(\"a0\", function ($scope) {\n  return (_new_x) => {\n    $x($scope, _new_x);\n  };\n});\nconst $count__script = _._script(\"b0\", ($scope) =>\n  _._on($scope.c, \"click\", function () {\n    _._var_change($scope.a, $scope.f + 1);\n  }),\n);\n(_._var_resume(\n  \"b1\",\n  _._const(5, ($scope) => {\n    (_._text($scope.d, $scope.f), $count__script($scope));\n  }),\n),\n  _._script(\"b2\", ($scope) =>\n    _._on($scope.e, \"click\", function () {\n      _._var_change($scope.a, 0);\n    }),\n  ),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-assignment/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `${_counter_template}<button class=inc-parent> </button><button class=reset>reset</button>`;\nexport const $walks = /* <counter/var>, get, next(1), get, out(1), get, over(1) */`0${_counter_walks}& D l b`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _counter, $template as _counter_template, $walks as _counter_walks } from \"./tags/counter.marko\";\nconst $count__script = _._script(\"__tests__/template.marko_0_count\", $scope => _._on($scope[\"#button/2\"], \"click\", function () {\n  _._var_change($scope[\"#childScope/0\"], $scope.count + 1, \"count\");\n}));\nconst $count = _._var_resume(\"__tests__/template.marko_0_count/var\", /* @__PURE__ */_._const(\"count\", $scope => {\n  _._text($scope[\"#text/3\"], $scope.count);\n  $count__script($scope);\n}));\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => _._on($scope[\"#button/4\"], \"click\", function () {\n  _._var_change($scope[\"#childScope/0\"], 0, \"count\");\n}));\nexport function $setup($scope) {\n  _._var($scope, \"#childScope/0\", $count);\n  _counter($scope[\"#childScope/0\"]);\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-assignment/__snapshots__/html.expected/tags/counter.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/counter.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let x = 1;\n  _._html(`<button class=inc-child>${_._escape(x)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  const $return = x;\n  _._script($scope0_id, \"__tests__/tags/counter.marko_0_x\");\n  _._scope($scope0_id, {\n    x,\n    \"#TagVariableChange\": _._resume(_new_x => {\n      x = _new_x;\n    }, \"__tests__/tags/counter.marko_0/valueChange\", $scope0_id) || void 0\n  }, \"__tests__/tags/counter.marko\", 0, {\n    x: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n  return $return;\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-assignment/__snapshots__/html.expected/template.js",
    "content": "import _counter from \"./tags/counter.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $childScope = _._peek_scope_id();\n  let count = _counter({});\n  _._var($scope0_id, \"#scopeOffset/1\", $childScope, \"__tests__/template.marko_0_count/var\");\n  _._html(`<button class=inc-parent>${_._escape(count)}${_._el_resume($scope0_id, \"#text/3\")}</button>${_._el_resume($scope0_id, \"#button/2\")}<button class=reset>reset</button>${_._el_resume($scope0_id, \"#button/4\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._script($scope0_id, \"__tests__/template.marko_0_count\");\n  _._scope($scope0_id, {\n    count,\n    \"#childScope/0\": _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0, {\n    count: \"1:10\"\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-assignment/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  class=\"inc-child\"\n>\n  1\n</button>\n<button\n  class=\"inc-parent\"\n>\n  1\n</button>\n<button\n  class=\"reset\"\n>\n  reset\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.inc-child\").click();\n```\n```html\n<button\n  class=\"inc-child\"\n>\n  2\n</button>\n<button\n  class=\"inc-parent\"\n>\n  2\n</button>\n<button\n  class=\"reset\"\n>\n  reset\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.inc-parent\").click();\n```\n```html\n<button\n  class=\"inc-child\"\n>\n  3\n</button>\n<button\n  class=\"inc-parent\"\n>\n  3\n</button>\n<button\n  class=\"reset\"\n>\n  reset\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.reset\").click();\n```\n```html\n<button\n  class=\"inc-child\"\n>\n  0\n</button>\n<button\n  class=\"inc-parent\"\n>\n  0\n</button>\n<button\n  class=\"reset\"\n>\n  reset\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-assignment/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc-child\"\n    >\n      1\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <button\n      class=\"inc-parent\"\n    >\n      1\n      <!--M_*1 #text/3-->\n    </button>\n    <!--M_*1 #button/2-->\n    <button\n      class=\"reset\"\n    >\n      reset\n    </button>\n    <!--M_*1 #button/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"#scopeOffset/1\": 3,\n          count: 1,\n          \"#childScope/0\": _.a = {\n            x: 1\n          }\n        }, _.a], _.a[\"#TagVariableChange\"] = _._[\n          \"__tests__/tags/counter.marko_0/valueChange\"\n          ](_.a), _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_count/var\"\n          ](_.c), _.b),\n        \"__tests__/tags/counter.marko_0_x 2 __tests__/template.marko_0 1 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.inc-child\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc-child\"\n    >\n      2\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <button\n      class=\"inc-parent\"\n    >\n      2\n      <!--M_*1 #text/3-->\n    </button>\n    <!--M_*1 #button/2-->\n    <button\n      class=\"reset\"\n    >\n      reset\n    </button>\n    <!--M_*1 #button/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"#scopeOffset/1\": 3,\n          count: 1,\n          \"#childScope/0\": _.a = {\n            x: 1\n          }\n        }, _.a], _.a[\"#TagVariableChange\"] = _._[\n          \"__tests__/tags/counter.marko_0/valueChange\"\n          ](_.a), _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_count/var\"\n          ](_.c), _.b),\n        \"__tests__/tags/counter.marko_0_x 2 __tests__/template.marko_0 1 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button0/#text \"1\" => \"2\"\nUPDATE html/body/button1/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.inc-parent\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc-child\"\n    >\n      3\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <button\n      class=\"inc-parent\"\n    >\n      3\n      <!--M_*1 #text/3-->\n    </button>\n    <!--M_*1 #button/2-->\n    <button\n      class=\"reset\"\n    >\n      reset\n    </button>\n    <!--M_*1 #button/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"#scopeOffset/1\": 3,\n          count: 1,\n          \"#childScope/0\": _.a = {\n            x: 1\n          }\n        }, _.a], _.a[\"#TagVariableChange\"] = _._[\n          \"__tests__/tags/counter.marko_0/valueChange\"\n          ](_.a), _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_count/var\"\n          ](_.c), _.b),\n        \"__tests__/tags/counter.marko_0_x 2 __tests__/template.marko_0 1 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button0/#text \"2\" => \"3\"\nUPDATE html/body/button1/#text \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.reset\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc-child\"\n    >\n      0\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <button\n      class=\"inc-parent\"\n    >\n      0\n      <!--M_*1 #text/3-->\n    </button>\n    <!--M_*1 #button/2-->\n    <button\n      class=\"reset\"\n    >\n      reset\n    </button>\n    <!--M_*1 #button/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"#scopeOffset/1\": 3,\n          count: 1,\n          \"#childScope/0\": _.a = {\n            x: 1\n          }\n        }, _.a], _.a[\"#TagVariableChange\"] = _._[\n          \"__tests__/tags/counter.marko_0/valueChange\"\n          ](_.a), _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_count/var\"\n          ](_.c), _.b),\n        \"__tests__/tags/counter.marko_0_x 2 __tests__/template.marko_0 1 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button0/#text \"3\" => \"0\"\nUPDATE html/body/button1/#text \"3\" => \"0\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-assignment/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button\n  class=\"inc-child\"\n>\n  1\n</button>\n<button\n  class=\"inc-parent\"\n>\n  1\n</button>\n<button\n  class=\"reset\"\n>\n  reset\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-assignment/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button class=inc-child>1<!--M_*2 #text/1--></button><!--M_*2 #button/0--><button class=inc-parent>1<!--M_*1 #text/3--></button><!--M_*1 #button/2--><button class=reset>reset</button><!--M_*1 #button/4--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.c={\"#scopeOffset/1\":3,count:1,\"#childScope/0\":_.a={x:1}},_.a],_.a[\"#TagVariableChange\"]=_._[\"__tests__/tags/counter.marko_0/valueChange\"](_.a),_.a[\"#TagVariable\"]=_._[\"__tests__/template.marko_0_count/var\"](_.c),_.b),\"__tests__/tags/counter.marko_0_x 2 __tests__/template.marko_0 1 __tests__/template.marko_0_count 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc-child\"\n    >\n      1\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <button\n      class=\"inc-parent\"\n    >\n      1\n      <!--M_*1 #text/3-->\n    </button>\n    <!--M_*1 #button/2-->\n    <button\n      class=\"reset\"\n    >\n      reset\n    </button>\n    <!--M_*1 #button/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"#scopeOffset/1\": 3,\n          count: 1,\n          \"#childScope/0\": _.a = {\n            x: 1\n          }\n        }, _.a], _.a[\"#TagVariableChange\"] = _._[\n          \"__tests__/tags/counter.marko_0/valueChange\"\n          ](_.a), _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_count/var\"\n          ](_.c), _.b),\n        \"__tests__/tags/counter.marko_0_x 2 __tests__/template.marko_0 1 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button0\nINSERT html/body/button0/#text\nINSERT html/body/button0/#comment\nINSERT html/body/#comment0\nINSERT html/body/button1\nINSERT html/body/button1/#text\nINSERT html/body/button1/#comment\nINSERT html/body/#comment1\nINSERT html/body/button2\nINSERT html/body/button2/#text\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-assignment/tags/counter.marko",
    "content": "<let/x = 1/>\n<button.inc-child onClick() { x++ }>\n  ${x}\n</button>\n<return:=x/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-assignment/template.marko",
    "content": "<counter/count/>\n<button.inc-parent onClick() { count++ }>\n  ${count}\n</button>\n<button.reset onClick() { count = 0 }>reset</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-assignment/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nconst increment_child = (container: Element) => {\n  container.querySelector<HTMLButtonElement>(\"button.inc-child\")!.click();\n};\n\nconst increment_parent = (container: Element) => {\n  container.querySelector<HTMLButtonElement>(\"button.inc-parent\")!.click();\n};\n\nconst reset = (container: Element) => {\n  container.querySelector<HTMLButtonElement>(\"button.reset\")!.click();\n};\n\nexport const config: TestConfig = {\n  steps: [{}, increment_child, increment_parent, reset],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-expression/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-expression/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<span>\n  child\n</span>\n<div>\n  4\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-expression/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<span>\n  child\n</span>\n<div>\n  4\n</div>\n```\n\n# Mutations\n```\nINSERT span, div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-expression/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<span>child</span>\";\nexport const $walks = /* over(1) */\"b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $x = /* @__PURE__ */_._let(\"x/0\", $scope => _._return($scope, $scope.x + 3));\nexport function $setup($scope) {\n  $x($scope, 1);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-expression/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 42 (min) 46 (brotli)\n_._var_resume(\"b0\", ($scope, data) => _._text($scope.c, data));\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-expression/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `${_child_template}<div> </div>`;\nexport const $walks = /* <child/var>, next(1), get, out(1) */`0${_child_walks}&D l`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _child, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nconst $data = _._var_resume(\"__tests__/template.marko_0_data/var\", ($scope, data) => _._text($scope[\"#text/2\"], data));\nexport function $setup($scope) {\n  _._var($scope, \"#childScope/0\", $data);\n  _child($scope[\"#childScope/0\"]);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-expression/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let x = 1;\n  _._html(\"<span>child</span>\");\n  const $return = x + 3;\n  _._resume_branch($scope0_id);\n  return $return;\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-expression/__snapshots__/html.expected/template.js",
    "content": "import _child from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let data = _child({});\n  _._html(`<div>${_._escape(data)}</div>`);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-expression/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<span>\n  child\n</span>\n<div>\n  4\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-expression/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <span>\n      child\n    </span>\n    <div>\n      4\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-expression/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<span>\n  child\n</span>\n<div>\n  4\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-expression/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <span>child</span><div>4</div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <span>\n      child\n    </span>\n    <div>\n      4\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/span\nINSERT html/body/span/#text\nINSERT html/body/div\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-expression/tags/child.marko",
    "content": "<let/x = 1/>\n<span>child</span>\n<return=x + 3/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-expression/template.marko",
    "content": "<child/data/>\n<div>${data}</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-in-body/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"r\",\n      \"$init\": \"m\",\n      \"$$child_content__setHtml__script\": \"o\",\n      \"$$child_content__setHtml\": \"t\",\n      \"$$setHtml__closure\": \"e\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-in-body/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-in-body/__snapshots__/csr.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<!---->\n<!---->\n<div />\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, #text, div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-in-body/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<!><!><div></div>\";\nexport const $walks = /* over(1), replace, over(1), get, over(1) */\"b%b b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\");\nexport const $input_content = ($scope, input_content) => $dynamicTag($scope, input_content);\nexport function $setup($scope) {\n  _._return($scope, $_return($scope));\n}\nexport const $input = ($scope, input) => $input_content($scope, input.content);\nfunction $_return($scope) {\n  return () => html => _._el_read($scope[\"#div/1\"]).innerHTML = html;\n}\n_._resume(\"__tests__/tags/child.marko_0/_return\", $_return);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-in-body/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 152 (min) 109 (brotli)\n(_._resume(\"a0\", function ($scope) {\n  return () => (html) => ($scope.b.innerHTML = html);\n}),\n  _._script(\"b0\", ($scope) => _._assert_init($scope._, \"c\")(\"Hello world\")),\n  _._var_resume(\"b2\", _._const(2)),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-in-body/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<!>${_child_template}`;\nexport const $walks = /* over(1), <child/var> */`b0${_child_walks}&`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _child, $input_content as _child_input_content, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nconst $child_content__setHtml__script = _._script(\"__tests__/template.marko_1_setHtml\", $scope => _._assert_init($scope._, \"setHtml\")(\"Hello world\"));\nconst $child_content__setHtml = /* @__PURE__ */_._closure_get(\"setHtml\", $child_content__setHtml__script);\nconst $child_content__setup = $child_content__setHtml;\nconst $child_content = /* @__PURE__ */_._content(\"__tests__/template.marko_1_content\", 0, 0, $child_content__setup);\nconst $setHtml = _._var_resume(\"__tests__/template.marko_0_setHtml/var\", /* @__PURE__ */_._const(\"setHtml\"));\nexport function $setup($scope) {\n  _._var($scope, \"#childScope/0\", $setHtml);\n  _child($scope[\"#childScope/0\"]);\n  _child_input_content($scope[\"#childScope/0\"], $child_content($scope));\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-in-body/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._dynamic_tag($scope0_id, \"#text/0\", input.content, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.content */0));\n  _._html(`<div></div>${_._el_resume($scope0_id, \"#div/1\")}`);\n  const $return = _._resume(() => html => (el => el())(_._el_read_error).innerHTML = html, \"__tests__/tags/child.marko_0/_return\", $scope0_id);\n  _._scope($scope0_id, {}, \"__tests__/tags/child.marko\", 0);\n  return $return;\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-in-body/__snapshots__/html.expected/template.js",
    "content": "import _child from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let setHtml = _child({\n    content: _._content(\"__tests__/template.marko_1_content\", () => {\n      _._scope_reason();\n      const $scope1_id = _._scope_id();\n      _._script($scope1_id, \"__tests__/template.marko_1_setHtml\");\n      _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"1:2\");\n      _._resume_branch($scope1_id);\n    })\n  });\n  _._scope($scope0_id, {\n    setHtml\n  }, \"__tests__/template.marko\", 0, {\n    setHtml: \"1:8\"\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-in-body/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-in-body/__snapshots__/resume.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*2 #div/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          setHtml: _.b = {}\n        }, _.b,\n        {\n          _: _.a\n        }], _.a.setHtml = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.b), _.c),\n        \"__tests__/template.marko_1_setHtml 3\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-in-body/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-in-body/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div></div><!--M_*2 #div/1--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.a={setHtml:_.b={}},_.b,{_:_.a}],_.a.setHtml=_._[\"__tests__/tags/child.marko_0/_return\"](_.b),_.c),\"__tests__/template.marko_1_setHtml 3\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*2 #div/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          setHtml: _.b = {}\n        }, _.b,\n        {\n          _: _.a\n        }], _.a.setHtml = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.b), _.c),\n        \"__tests__/template.marko_1_setHtml 3\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-in-body/tags/child.marko",
    "content": "<${input.content} />\n<div/el />\n<return=() => (html) => el().innerHTML = html />"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-in-body/template.marko",
    "content": "<child/setHtml>\n  <script>setHtml(\"Hello world\")</script>\n</child>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-in-body/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [{ show: true }],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-intersection/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"r\",\n      \"$$input_extra__OR__x\": \"o\",\n      \"$$x__script\": \"m\",\n      \"$$x\": \"_\",\n      \"$$name__OR__data\": \"e\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-intersection/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  class=\"inc\"\n>\n  0\n</button>\n<div>\n  Marko 1\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  1\n</button>\n<div>\n  Marko 2\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  2\n</button>\n<div>\n  Marko 3\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  3\n</button>\n<div>\n  Marko 4\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-intersection/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button\n  class=\"inc\"\n>\n  0\n</button>\n<div>\n  Marko 1\n</div>\n```\n\n# Mutations\n```\nINSERT button, div\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  1\n</button>\n<div>\n  Marko 2\n</div>\n```\n\n# Mutations\n```\nUPDATE button/#text \"0\" => \"1\"\nUPDATE div/#text \"Marko 1\" => \"Marko 2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  2\n</button>\n<div>\n  Marko 3\n</div>\n```\n\n# Mutations\n```\nUPDATE button/#text \"1\" => \"2\"\nUPDATE div/#text \"Marko 2\" => \"Marko 3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  3\n</button>\n<div>\n  Marko 4\n</div>\n```\n\n# Mutations\n```\nUPDATE button/#text \"2\" => \"3\"\nUPDATE div/#text \"Marko 3\" => \"Marko 4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-intersection/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<button class=inc> </button>\";\nexport const $walks = /* get, next(1), get, out(1) */\" D l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $input_extra__OR__x = /* @__PURE__ */_._or(6, $scope => _._return($scope, $scope.x + $scope.input_extra));\nconst $x__script = _._script(\"__tests__/tags/child.marko_0_x\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $x($scope, $scope.x + 1);\n}));\nconst $x = /* @__PURE__ */_._let(\"x/5\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.x);\n  $input_extra__OR__x($scope);\n  $x__script($scope);\n});\nexport function $setup($scope) {\n  $x($scope, 0);\n}\nexport const $input_extra = /* @__PURE__ */_._const(\"input_extra\", $input_extra__OR__x);\nexport const $input = ($scope, input) => $input_extra($scope, input.extra);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-intersection/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 247 (min) 171 (brotli)\nconst $input_extra__OR__x = _._or(6, ($scope) =>\n    _._return($scope, $scope.f + $scope.e),\n  ),\n  $x__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $x($scope, $scope.f + 1);\n    }),\n  ),\n  $x = _._let(5, ($scope) => {\n    (_._text($scope.b, $scope.f),\n      $input_extra__OR__x($scope),\n      $x__script($scope));\n  }),\n  $name__OR__data = _._or(\n    5,\n    ($scope) =>\n      (($scope, message) => _._text($scope.c, message))(\n        $scope,\n        `${$scope.d} ${$scope.e}`,\n      ),\n    1,\n    1,\n  );\n(_._var_resume(\"b0\", _._const(4, $name__OR__data)), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-intersection/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `${_child_template}<div> </div>`;\nexport const $walks = /* <child/var>, next(1), get, out(1) */`0${_child_walks}&D l`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _child, $input_extra as _child_input_extra, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nconst $message = ($scope, message) => _._text($scope[\"#text/2\"], message);\nconst $name__OR__data = /* @__PURE__ */_._or(5, $scope => $message($scope, `${$scope.name} ${$scope.data}`), 1, \"#scopeOffset/1\");\nconst $name = /* @__PURE__ */_._let(\"name/3\", $name__OR__data);\nexport function $setup($scope) {\n  _._var($scope, \"#childScope/0\", $data);\n  _child($scope[\"#childScope/0\"]);\n  _child_input_extra($scope[\"#childScope/0\"], 1);\n  $name($scope, \"Marko\");\n}\nconst $data = _._var_resume(\"__tests__/template.marko_0_data/var\", /* @__PURE__ */_._const(\"data\", $name__OR__data));\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-intersection/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let x = 0;\n  _._html(`<button class=inc>${_._escape(x)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  const $return = x + input.extra;\n  _._script($scope0_id, \"__tests__/tags/child.marko_0_x\");\n  _._scope($scope0_id, {\n    input_extra: input.extra,\n    x\n  }, \"__tests__/tags/child.marko\", 0, {\n    input_extra: [\"input.extra\"],\n    x: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n  return $return;\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-intersection/__snapshots__/html.expected/template.js",
    "content": "import _child from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let name = \"Marko\";\n  const $childScope = _._peek_scope_id();\n  let data = _child({\n    extra: 1\n  });\n  _._var($scope0_id, \"#scopeOffset/1\", $childScope, \"__tests__/template.marko_0_data/var\");\n  const message = `${name} ${data}`;\n  _._html(`<div>${_._escape(message)}${_._el_resume($scope0_id, \"#text/2\")}</div>`);\n  _._scope($scope0_id, {\n    name,\n    \"#childScope/0\": _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0, {\n    name: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-intersection/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  class=\"inc\"\n>\n  0\n</button>\n<div>\n  Marko 1\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  1\n</button>\n<div>\n  Marko 2\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  2\n</button>\n<div>\n  Marko 3\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  3\n</button>\n<div>\n  Marko 4\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-intersection/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    >\n      0\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <div>\n      Marko 1\n      <!--M_*1 #text/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"#scopeOffset/1\": 3,\n          name: \"Marko\",\n          \"#childScope/0\": _.a = {\n            input_extra: 1,\n            x: 0\n          }\n        }, _.a], _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_data/var\"\n          ](_.c), _.b),\n        \"__tests__/tags/child.marko_0_x 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    >\n      1\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <div>\n      Marko 2\n      <!--M_*1 #text/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"#scopeOffset/1\": 3,\n          name: \"Marko\",\n          \"#childScope/0\": _.a = {\n            input_extra: 1,\n            x: 0\n          }\n        }, _.a], _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_data/var\"\n          ](_.c), _.b),\n        \"__tests__/tags/child.marko_0_x 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"0\" => \"1\"\nUPDATE html/body/div/#text \"Marko 1\" => \"Marko 2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    >\n      2\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <div>\n      Marko 3\n      <!--M_*1 #text/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"#scopeOffset/1\": 3,\n          name: \"Marko\",\n          \"#childScope/0\": _.a = {\n            input_extra: 1,\n            x: 0\n          }\n        }, _.a], _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_data/var\"\n          ](_.c), _.b),\n        \"__tests__/tags/child.marko_0_x 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"1\" => \"2\"\nUPDATE html/body/div/#text \"Marko 2\" => \"Marko 3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    >\n      3\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <div>\n      Marko 4\n      <!--M_*1 #text/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"#scopeOffset/1\": 3,\n          name: \"Marko\",\n          \"#childScope/0\": _.a = {\n            input_extra: 1,\n            x: 0\n          }\n        }, _.a], _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_data/var\"\n          ](_.c), _.b),\n        \"__tests__/tags/child.marko_0_x 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"2\" => \"3\"\nUPDATE html/body/div/#text \"Marko 3\" => \"Marko 4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-intersection/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button\n  class=\"inc\"\n>\n  0\n</button>\n<div>\n  Marko 1\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-intersection/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button class=inc>0<!--M_*2 #text/1--></button><!--M_*2 #button/0--><div>Marko 1<!--M_*1 #text/2--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.c={\"#scopeOffset/1\":3,name:\"Marko\",\"#childScope/0\":_.a={input_extra:1,x:0}},_.a],_.a[\"#TagVariable\"]=_._[\"__tests__/template.marko_0_data/var\"](_.c),_.b),\"__tests__/tags/child.marko_0_x 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    >\n      0\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <div>\n      Marko 1\n      <!--M_*1 #text/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"#scopeOffset/1\": 3,\n          name: \"Marko\",\n          \"#childScope/0\": _.a = {\n            input_extra: 1,\n            x: 0\n          }\n        }, _.a], _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_data/var\"\n          ](_.c), _.b),\n        \"__tests__/tags/child.marko_0_x 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/div/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-intersection/tags/child.marko",
    "content": "<let/x = 0/>\n<button.inc onClick() { x++ }>\n  ${x}\n</button>\n<return=x+input.extra/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-intersection/template.marko",
    "content": "<let/name=\"Marko\"/>\n<child/data extra=1/>\n<const/message = `${name} ${data}`/>\n<div>${message}</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-intersection/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nconst increment = (container: Element) => {\n  container.querySelector<HTMLButtonElement>(\"button.inc\")!.click();\n};\n\nexport const config: TestConfig = {\n  steps: [{}, increment, increment, increment],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-multiple/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-multiple/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<span>\n  child\n</span>\n<div>\n  3\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-multiple/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<span>\n  child\n</span>\n<div>\n  3\n</div>\n```\n\n# Mutations\n```\nINSERT span, div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-multiple/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<span>child</span>\";\nexport const $walks = /* over(1) */\"b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $x__OR__y = /* @__PURE__ */_._or(2, $scope => _._return($scope, $scope.x + $scope.y));\nconst $x = /* @__PURE__ */_._let(\"x/0\", $x__OR__y);\nconst $y = /* @__PURE__ */_._let(\"y/1\", $x__OR__y);\nexport function $setup($scope) {\n  $x($scope, 1);\n  $y($scope, 2);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-multiple/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 42 (min) 46 (brotli)\n_._var_resume(\"b0\", ($scope, data) => _._text($scope.c, data));\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-multiple/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `${_child_template}<div> </div>`;\nexport const $walks = /* <child/var>, next(1), get, out(1) */`0${_child_walks}&D l`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _child, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nconst $data = _._var_resume(\"__tests__/template.marko_0_data/var\", ($scope, data) => _._text($scope[\"#text/2\"], data));\nexport function $setup($scope) {\n  _._var($scope, \"#childScope/0\", $data);\n  _child($scope[\"#childScope/0\"]);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-multiple/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let x = 1;\n  let y = 2;\n  _._html(\"<span>child</span>\");\n  const $return = x + y;\n  _._resume_branch($scope0_id);\n  return $return;\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-multiple/__snapshots__/html.expected/template.js",
    "content": "import _child from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let data = _child({});\n  _._html(`<div>${_._escape(data)}</div>`);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-multiple/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<span>\n  child\n</span>\n<div>\n  3\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-multiple/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <span>\n      child\n    </span>\n    <div>\n      3\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-multiple/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<span>\n  child\n</span>\n<div>\n  3\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-multiple/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <span>child</span><div>3</div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <span>\n      child\n    </span>\n    <div>\n      3\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/span\nINSERT html/body/span/#text\nINSERT html/body/div\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-multiple/tags/child.marko",
    "content": "<let/x = 1/>\n<let/y = 2/>\n<span>child</span>\n<return=x + y/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-multiple/template.marko",
    "content": "<child/data/>\n<div>${data}</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/debug-tag/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"\";\nexport const $walks = \"\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $x = /* @__PURE__ */_._const(\"x\", $scope => {\n  debugger;\n});\nconst $y = /* @__PURE__ */_._let(\"y/1\", $scope => {\n  debugger;\n});\nexport function $setup($scope) {\n  debugger;\n  $x($scope, 0);\n  $y($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/debug-tag/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  debugger;\n  const x = 0;\n  debugger;\n  let y = 0;\n  debugger;\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/debug-tag/template.marko",
    "content": "<debug/>\n<const/x=0/>\n<debug=x/>\n<let/y=0/>\n<debug=y/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/debug-tag/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  skip_ssr: true,\n  skip_csr: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/declaration/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/declaration/template.marko:1:1\n    > 1 | <?xml version=\"1.0\" encoding=\"utf-8\"?>\n        | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ XML declarations sections are not supported in Marko.\n      2 | <contact-info>\n      3 |    <name>Hello World</name>\n      4 | </contact-info>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/declaration/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/declaration/template.marko:1:1\n    > 1 | <?xml version=\"1.0\" encoding=\"utf-8\"?>\n        | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ XML declarations sections are not supported in Marko.\n      2 | <contact-info>\n      3 |    <name>Hello World</name>\n      4 | </contact-info>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/declaration/marko.json",
    "content": "{\n  \"<contact-info>\": { \"html\": true },\n  \"<name>\": { \"html\": true }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/declaration/template.marko",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<contact-info>\n   <name>Hello World</name>\n</contact-info>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/declaration/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/declared-alias-closure/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"_\",\n      \"$init\": \"t\",\n      \"$$if_content__value_class\": \"r\",\n      \"$$if_content__setup\": \"s\",\n      \"$$if_content__text\": \"a\",\n      \"$$Child_content__if\": \"o\",\n      \"$$Child_content__setup\": \"e\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/declared-alias-closure/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/declared-alias-closure/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<div>\n  <!---->\n  <!---->\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, div, #comment1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/declared-alias-closure/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 300 (min) 189 (brotli)\n_._script(\"a0\", ($scope) => _._attrs_script($scope, \"a\"));\nconst $if_content__value_class = _._closure_get(\n    2,\n    ($scope) => _._attr_class($scope.a, $scope._._.c),\n    ($scope) => $scope._._,\n  ),\n  $if_content__setup = ($scope) => {\n    ($if_content__value_class($scope), $if_content__text($scope));\n  },\n  $if_content__text = _._closure_get(\n    3,\n    ($scope) => _._text($scope.b, $scope._._.d),\n    ($scope) => $scope._._,\n  ),\n  $Child_content__if = _._if(0, \"<span> </span>\", \" D l\", $if_content__setup),\n  $Child_content__setup = _._closure_get(1, ($scope) =>\n    $Child_content__if($scope, $scope._.b ? 0 : 1),\n  );\n(_._content_resume(\"a1\", \"<!><!><!>\", \"b%c\", $Child_content__setup), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/declared-alias-closure/__snapshots__/dom.expected/template.js",
    "content": "const $Child_content2__walks = /* get, over(1) */\" b\",\n  $Child_content2__template = \"<div></div>\";\nexport const $template = `<!>${$Child_content2__template}<!>`;\nexport const $walks = /* over(1), <Child>, over(1) */`b/${$Child_content2__walks}&b`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $Child_content2__input__script = _._script(\"__tests__/template.marko_3_input\", $scope => _._attrs_script($scope, \"#div/0\"));\nconst $Child_content2__input = /* @__PURE__ */_._const(\"input\", $scope => {\n  _._attrs_content($scope, \"#div/0\", $scope.input);\n  $Child_content2__input__script($scope);\n});\nconst $Child_content2__$params = ($scope, $params2) => $Child_content2__input($scope, $params2[0]);\nconst $if_content__value_class = /* @__PURE__ */_._closure_get(\"value_class\", $scope => _._attr_class($scope[\"#span/0\"], $scope._._.value_class), $scope => $scope._._);\nconst $if_content__setup = $scope => {\n  $if_content__value_class($scope);\n  $if_content__text($scope);\n};\nconst $if_content__text = /* @__PURE__ */_._closure_get(\"text\", $scope => _._text($scope[\"#text/1\"], $scope._._.text), $scope => $scope._._);\nconst $Child_content__if = /* @__PURE__ */_._if(\"#text/0\", \"<span> </span>\", /* get, next(1), get, out(1) */\" D l\", $if_content__setup);\nconst $Child_content__value = /* @__PURE__ */_._closure_get(\"value\", $scope => $Child_content__if($scope, $scope._.value ? 0 : 1));\nconst $Child_content__setup = $Child_content__value;\nconst $Child_content = _._content_resume(\"__tests__/template.marko_1_content\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", $Child_content__setup);\nconst $value = /* @__PURE__ */_._const(\"value\", $scope => {\n  $value_class($scope, $scope.value?.class);\n  $text($scope, $scope.value?.text);\n});\nconst $value_class = /* @__PURE__ */_._const(\"value_class\");\nconst $text = /* @__PURE__ */_._const(\"text\");\nexport function $setup($scope) {\n  $Child_content2__input($scope[\"#childScope/0\"], {\n    content: $Child_content($scope)\n  });\n  $value($scope, undefined);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/declared-alias-closure/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const value = undefined;\n  const Child = {\n    content: _._content(\"__tests__/template.marko_3_content\", input => {\n      const $scope3_id = _._scope_id();\n      _._scope_reason();\n      _._html(\"<div\");\n      _._attrs_content(input, \"#div/0\", $scope3_id, \"div\");\n      _._html(`</div>${_._el_resume($scope3_id, \"#div/0\")}`);\n      _._script($scope3_id, \"__tests__/template.marko_3_input\");\n      _._scope($scope3_id, {\n        input\n      }, \"__tests__/template.marko\", \"2:2\", {\n        input: \"2:15\"\n      });\n    })\n  };\n  Child.content({\n    content: _._content_resume(\"__tests__/template.marko_1_content\", () => {\n      _._scope_reason();\n      const $scope1_id = _._scope_id();\n      if (value) {\n        const $scope2_id = _._scope_id();\n        const {\n          text\n        } = value;\n        _._html(`<span${_._attr_class(value.class)}>${_._escape(text)}</span>`);\n        _._scope($scope2_id, {\n          _: _._scope_with_id($scope1_id)\n        }, \"__tests__/template.marko\", \"7:4\");\n      }\n      _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"6:2\");\n      _._resume_branch($scope1_id);\n    }, $scope0_id)\n  });\n  _._scope($scope0_id, {\n    value,\n    value_class: value?.class,\n    text: value?.text\n  }, \"__tests__/template.marko\", 0, {\n    value: \"1:8\",\n    value_class: [\"value.class\", \"1:8\"],\n    text: \"8:16\"\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/declared-alias-closure/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/declared-alias-closure/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*2 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.a = {},\n        {\n          \"BranchScopes:#div/0\": _.c = {\n            _: _.a\n          },\n          \"ConditionalRenderer:#div/0\": \"__tests__/template.marko_1_content\",\n          input: _.b = {}\n        }, _.c], _.b.content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.a), _.d),\n        \"__tests__/template.marko_3_input 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/declared-alias-closure/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/declared-alias-closure/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div></div><!--M_*2 #div/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.d=[0,_.a={},{\"BranchScopes:#div/0\":_.c={_:_.a},\"ConditionalRenderer:#div/0\":\"__tests__/template.marko_1_content\",input:_.b={}},_.c],_.b.content=_._[\"__tests__/template.marko_1_content\"](_.a),_.d),\"__tests__/template.marko_3_input 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*2 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.a = {},\n        {\n          \"BranchScopes:#div/0\": _.c = {\n            _: _.a\n          },\n          \"ConditionalRenderer:#div/0\": \"__tests__/template.marko_1_content\",\n          input: _.b = {}\n        }, _.c], _.b.content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.a), _.d),\n        \"__tests__/template.marko_3_input 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/declared-alias-closure/template.marko",
    "content": "<const/value=undefined>\n<define/Child|input|>\n    <div ...input/>\n</define>\n\n<Child>\n  <if=value>\n      <const/{ text }=value>\n      <span class=value.class>${text}</span>\n  </if>\n</>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-circular/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-circular/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\nfoo foo\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-circular/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<!---->\n<!---->\n<!---->\n<!---->\nfoo\n<!---->\n<!---->\nfoo\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, #comment2, #comment3, #comment4, #text0, #text1, #comment5, #comment6, #text2, #comment7\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-circular/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-circular/__snapshots__/dom.expected/template.js",
    "content": "const $Foo_content__walks = /* over(1), replace, over(2) */\"b%c\",\n  $Foo_content__template = \"<!><!> foo\",\n  $Bar_content__walks = /* over(1), <Foo>, over(1) */`b/${$Foo_content__walks}&b`,\n  $Bar_content__template = `<!>${$Foo_content__template}<!>`;\nexport const $template = `<!>${$Foo_content__template}<!>`;\nexport const $walks = /* over(1), <Foo>, over(1) */`b/${$Foo_content__walks}&b`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $Bar_content__setup = /* @__PURE__ */_._child_setup($scope => $Foo_content__tag_input_show($scope[\"#childScope/0\"]));\nconst $if_content__setup = $scope => {\n  $Bar_content__setup._($scope[\"#childScope/0\"], $scope);\n};\nconst $Foo_content__if = /* @__PURE__ */_._if(\"#text/0\", `<!>${$Bar_content__template}<!>`, /* over(1), <Bar>, over(1) */`b/${$Bar_content__walks}&b`, $if_content__setup);\nconst $Foo_content__tag_input_show = ($scope, show) => $Foo_content__if($scope, show ? 0 : 1);\nconst $Foo_content__$params = ($scope, $params2) => $Foo_content__$temp($scope, $params2?.[0]);\nconst $Foo_content__$temp = ($scope, $temp) => $Foo_content__tag_input_show($scope, $temp.show);\nexport function $setup($scope) {\n  $Foo_content__tag_input_show($scope[\"#childScope/0\"], true);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-circular/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const Foo = {\n    content: _._content(\"__tests__/template.marko_1_content\", ({\n      show\n    }) => {\n      const $scope1_id = _._scope_id();\n      const $scope1_reason = _._scope_reason();\n      _._if(() => {\n        if (show) {\n          const $scope2_id = _._scope_id();\n          const Bar = {\n            content: _._content(\"__tests__/template.marko_3_content\", () => {\n              const $scope3_id = _._scope_id();\n              _._scope_reason();\n              Foo.content({});\n            })\n          };\n          Bar.content({});\n          _._serialize_if($scope1_reason, /* show */0) && _._scope($scope2_id, {}, \"__tests__/template.marko\", \"2:4\");\n          return 0;\n        }\n      }, $scope1_id, \"#text/0\", _._serialize_guard($scope1_reason, /* show */0), _._serialize_guard($scope1_reason, /* show */0), _._serialize_guard($scope1_reason, /* show */0));\n      _._html(\" foo\");\n      _._serialize_if($scope1_reason, /* show */0) && _._scope($scope1_id, {}, \"__tests__/template.marko\", \"1:2\");\n    })\n  };\n  Foo.content({\n    show: true\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-circular/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\nfoo foo\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-circular/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    foo foo\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-circular/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\nfoo foo\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-circular/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n   foo foo\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    foo foo\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-circular/template.marko",
    "content": "<define/Foo|{ show }|>\n  <if=show>\n    <define/Bar>\n      <Foo/>\n    </define>\n    <Bar/>\n  </if>\n  foo\n</define>\n\n<Foo show/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-for-attribute-tag/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"e\",\n      \"$$input_thing_selected\": \"n\",\n      \"$$dynamicTag\": \"c\",\n      \"$$input_thing\": \"o\",\n      \"$$myThing_content\": \"a\",\n      \"$$selected__script\": \"s\",\n      \"$$selected\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-for-attribute-tag/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <span>\n    The thing\n  </span>\n</div>\n<button>\n  Toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div\n  class=\"selected\"\n>\n  <span>\n    The thing\n  </span>\n</div>\n<button>\n  Toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div\n  class=\"\"\n>\n  <span>\n    The thing\n  </span>\n</div>\n<button>\n  Toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div\n  class=\"selected\"\n>\n  <span>\n    The thing\n  </span>\n</div>\n<button>\n  Toggle\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-for-attribute-tag/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  <span>\n    The thing\n  </span>\n</div>\n<button>\n  Toggle\n</button>\n```\n\n# Mutations\n```\nINSERT div, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div\n  class=\"selected\"\n>\n  <span>\n    The thing\n  </span>\n</div>\n<button>\n  Toggle\n</button>\n```\n\n# Mutations\n```\nUPDATE div[class] null => \"selected\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div\n  class=\"\"\n>\n  <span>\n    The thing\n  </span>\n</div>\n<button>\n  Toggle\n</button>\n```\n\n# Mutations\n```\nUPDATE div[class] \"selected\" => \"\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div\n  class=\"selected\"\n>\n  <span>\n    The thing\n  </span>\n</div>\n<button>\n  Toggle\n</button>\n```\n\n# Mutations\n```\nUPDATE div[class] \"\" => \"selected\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-for-attribute-tag/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<div><!></div>\";\nexport const $walks = /* get, next(1), replace, out(1) */\" D%l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $input_thing_selected = /* @__PURE__ */_._const(\"input_thing_selected\", $scope => _._attr_class_item($scope[\"#div/0\"], \"selected\", $scope.input_thing_selected));\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/1\");\nexport const $input_thing_content = ($scope, input_thing_content) => $dynamicTag($scope, input_thing_content);\nexport const $input = ($scope, input) => $input_thing($scope, input.thing);\nexport const $input_thing = ($scope, input_thing) => {\n  $input_thing_selected($scope, input_thing?.selected);\n  $input_thing_content($scope, input_thing?.content);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-for-attribute-tag/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 329 (min) 200 (brotli)\nconst $input_thing_selected = _._const(5, ($scope) =>\n    _._attr_class_item($scope.a, \"selected\", $scope.f),\n  ),\n  $dynamicTag = _._dynamic_tag(1),\n  $input_thing = ($scope, input_thing) => {\n    ($input_thing_selected($scope, input_thing?.selected),\n      (($scope, input_thing_content) => {\n        $dynamicTag($scope, input_thing_content);\n      })($scope, input_thing?.content));\n  },\n  $myThing_content = _._content(\"b0\", \"<span>The thing</span>\", \"b\"),\n  $selected__script = _._script(\"b1\", ($scope) =>\n    _._on($scope.b, \"click\", function () {\n      $selected($scope, !$scope.c);\n    }),\n  ),\n  $selected = _._let(2, ($scope) => {\n    ((($scope, myThing) => {\n      $input_thing($scope.a, myThing);\n    })($scope, { selected: $scope.c, content: $myThing_content($scope) }),\n      $selected__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-for-attribute-tag/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `${_child_template}<button>Toggle</button>`;\nexport const $walks = /* <child>, get, over(1) */`/${_child_walks}& b`;\nimport { $setup as _child, $input_thing as _child_input_thing, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $myThing_content = /* @__PURE__ */_._content(\"__tests__/template.marko_1_content\", \"<span>The thing</span>\", /* over(1) */\"b\");\nconst $myThing = ($scope, myThing) => _child_input_thing($scope[\"#childScope/0\"], myThing);\nconst $selected__script = _._script(\"__tests__/template.marko_0_selected\", $scope => _._on($scope[\"#button/1\"], \"click\", function () {\n  $selected($scope, !$scope.selected);\n}));\nconst $selected = /* @__PURE__ */_._let(\"selected/2\", $scope => {\n  $myThing($scope, {\n    selected: $scope.selected,\n    content: $myThing_content($scope)\n  });\n  $selected__script($scope);\n});\nexport function $setup($scope) {\n  _child($scope[\"#childScope/0\"]);\n  $selected($scope, false);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-for-attribute-tag/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div${_._attr_class({\n    \"selected\": input.thing.selected\n  })}>`);\n  _._dynamic_tag($scope0_id, \"#text/1\", input.thing.content, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.thing.content */2));\n  _._html(`</div>${_._el_resume($scope0_id, \"#div/0\", _._serialize_guard($scope0_reason, /* input.thing.selected */1))}`);\n  _._serialize_if($scope0_reason, /* input.thing.selected, input.thing.content */0) && _._scope($scope0_id, {}, \"__tests__/tags/child.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-for-attribute-tag/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _child from \"./tags/child.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let selected = false;\n  const myThing = {\n    selected: selected,\n    content: _._content(\"__tests__/template.marko_1_content\", () => {\n      const $scope1_id = _._scope_id();\n      _._scope_reason();\n      _._html(\"<span>The thing</span>\");\n    })\n  };\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason(1);\n  _child({\n    thing: myThing\n  });\n  _._html(`<button>Toggle</button>${_._el_resume($scope0_id, \"#button/1\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_selected\");\n  _._scope($scope0_id, {\n    selected,\n    \"#childScope/0\": _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0, {\n    selected: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-for-attribute-tag/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <span>\n    The thing\n  </span>\n</div>\n<button>\n  Toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div\n  class=\"selected\"\n>\n  <span>\n    The thing\n  </span>\n</div>\n<button>\n  Toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div\n  class=\"\"\n>\n  <span>\n    The thing\n  </span>\n</div>\n<button>\n  Toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div\n  class=\"selected\"\n>\n  <span>\n    The thing\n  </span>\n</div>\n<button>\n  Toggle\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-for-attribute-tag/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--M_[-->\n      <span>\n        The thing\n      </span>\n      <!--M_]2 #text/1 3-->\n    </div>\n    <!--M_*2 #div/0-->\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0,\n        {\n          selected: !1,\n          \"#childScope/0\": _.a = {\n            \"ConditionalRenderer:#text/1\": \"__tests__/template.marko_1_content\"\n          }\n        }, _.a]),\n        \"__tests__/template.marko_0_selected 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div\n      class=\"selected\"\n    >\n      <!--M_[-->\n      <span>\n        The thing\n      </span>\n      <!--M_]2 #text/1 3-->\n    </div>\n    <!--M_*2 #div/0-->\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0,\n        {\n          selected: !1,\n          \"#childScope/0\": _.a = {\n            \"ConditionalRenderer:#text/1\": \"__tests__/template.marko_1_content\"\n          }\n        }, _.a]),\n        \"__tests__/template.marko_0_selected 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div[class] null => \"selected\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div\n      class=\"\"\n    >\n      <!--M_[-->\n      <span>\n        The thing\n      </span>\n      <!--M_]2 #text/1 3-->\n    </div>\n    <!--M_*2 #div/0-->\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0,\n        {\n          selected: !1,\n          \"#childScope/0\": _.a = {\n            \"ConditionalRenderer:#text/1\": \"__tests__/template.marko_1_content\"\n          }\n        }, _.a]),\n        \"__tests__/template.marko_0_selected 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div[class] \"selected\" => \"\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div\n      class=\"selected\"\n    >\n      <!--M_[-->\n      <span>\n        The thing\n      </span>\n      <!--M_]2 #text/1 3-->\n    </div>\n    <!--M_*2 #div/0-->\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0,\n        {\n          selected: !1,\n          \"#childScope/0\": _.a = {\n            \"ConditionalRenderer:#text/1\": \"__tests__/template.marko_1_content\"\n          }\n        }, _.a]),\n        \"__tests__/template.marko_0_selected 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div[class] \"\" => \"selected\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-for-attribute-tag/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  <span>\n    The thing\n  </span>\n</div>\n<button>\n  Toggle\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-for-attribute-tag/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><!--M_[--><span>The thing</span><!--M_]2 #text/1 3--></div><!--M_*2 #div/0--><button>Toggle</button><!--M_*1 #button/1--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,{selected:!1,\"#childScope/0\":_.a={\"ConditionalRenderer:#text/1\":\"__tests__/template.marko_1_content\"}},_.a]),\"__tests__/template.marko_0_selected 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--M_[-->\n      <span>\n        The thing\n      </span>\n      <!--M_]2 #text/1 3-->\n    </div>\n    <!--M_*2 #div/0-->\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0,\n        {\n          selected: !1,\n          \"#childScope/0\": _.a = {\n            \"ConditionalRenderer:#text/1\": \"__tests__/template.marko_1_content\"\n          }\n        }, _.a]),\n        \"__tests__/template.marko_0_selected 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#comment0\nINSERT html/body/div/span\nINSERT html/body/div/span/#text\nINSERT html/body/div/#comment1\nINSERT html/body/#comment0\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-for-attribute-tag/tags/child.marko",
    "content": "<div class={ \"selected\": input.thing.selected }>\n  <${input.thing.content} />\n</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-for-attribute-tag/template.marko",
    "content": "<let/selected=false />\n<define/myThing selected=selected>\n  <span>The thing</span>\n</define>\n\n<child thing=myThing />\n<button onClick() { selected = !selected }>Toggle</button>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-for-attribute-tag/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-no-content/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"a\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-no-content/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  Foo Fallback\n</div>\n<div>\n  Bar Fallback\n</div>\n<div>\n  Baz Content\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-no-content/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<div>\n  Foo Fallback\n</div>\n<div>\n  Bar Fallback\n</div>\n<div>\n  Baz Content\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, div0, div1, div2, #comment1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-no-content/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 162 (min) 73 (brotli)\n(_._content_resume(\"a0\", \"<div>Baz Fallback</div>\", \"b\"),\n  _._content_resume(\"a1\", \"<div>Bar Fallback</div>\", \"b\"),\n  _._content_resume(\"a2\", \"<div>Foo Fallback</div>\", \"b\"));\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-no-content/__snapshots__/dom.expected/template.js",
    "content": "const $Baz_content__walks = /* over(1) */\"b\",\n  $Baz_content__template = \"<div>Baz Content</div>\";\nexport const $template = `<!><!><!>${$Baz_content__template}<!>`;\nexport const $walks = /* over(1), replace, over(1), replace, over(1), <Baz>, over(1) */`b%b%b/${$Baz_content__walks}&b`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $Baz_content2 = _._content_resume(\"__tests__/template.marko_4_content\", \"<div>Baz Fallback</div>\", /* over(1) */\"b\");\nconst $Bar_content = _._content_resume(\"__tests__/template.marko_2_content\", \"<div>Bar Fallback</div>\", /* over(1) */\"b\");\nconst $Foo_content = _._content_resume(\"__tests__/template.marko_1_content\", \"<div>Foo Fallback</div>\", /* over(1) */\"b\");\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\", $Foo_content);\nconst $Foo = ($scope, Foo) => $dynamicTag($scope, Foo);\nconst $dynamicTag2 = /* @__PURE__ */_._dynamic_tag(\"#text/1\", $Bar_content);\nconst $Bar = ($scope, Bar) => $dynamicTag2($scope, Bar);\nexport function $setup($scope) {\n  $Foo($scope, {});\n  $Bar($scope, {});\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-no-content/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const Foo = {};\n  _._dynamic_tag($scope0_id, \"#text/0\", Foo, {}, _._content_resume(\"__tests__/template.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    _._scope_reason();\n    _._html(\"<div>Foo Fallback</div>\");\n  }, $scope0_id), 0, 0);\n  const Bar = {};\n  _._dynamic_tag($scope0_id, \"#text/1\", Bar, {}, _._content_resume(\"__tests__/template.marko_2_content\", () => {\n    const $scope2_id = _._scope_id();\n    _._scope_reason();\n    _._html(\"<div>Bar Fallback</div>\");\n  }, $scope0_id), 0, 0);\n  const Baz = {\n    content: _._content(\"__tests__/template.marko_3_content\", () => {\n      const $scope3_id = _._scope_id();\n      _._scope_reason();\n      _._html(\"<div>Baz Content</div>\");\n    })\n  };\n  Baz.content({});\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-no-content/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  Foo Fallback\n</div>\n<div>\n  Bar Fallback\n</div>\n<div>\n  Baz Content\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-no-content/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      Foo Fallback\n    </div>\n    <div>\n      Bar Fallback\n    </div>\n    <div>\n      Baz Content\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-no-content/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  Foo Fallback\n</div>\n<div>\n  Bar Fallback\n</div>\n<div>\n  Baz Content\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-no-content/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>Foo Fallback</div><div>Bar Fallback</div><div>Baz Content</div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      Foo Fallback\n    </div>\n    <div>\n      Bar Fallback\n    </div>\n    <div>\n      Baz Content\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/div0/#text\nINSERT html/body/div1\nINSERT html/body/div1/#text\nINSERT html/body/div2\nINSERT html/body/div2/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-no-content/template.marko",
    "content": "<define/Foo></define>\n<Foo>\n  <div>Foo Fallback</>\n</>\n\n<define/Bar/>\n<Bar>\n  <div>Bar Fallback</>\n</>\n\n<define/Baz>\n  <div>Baz Content</>\n</define>\n<Baz>\n  <div>Baz Fallback</>\n</>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-object/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$x__script\": \"r\",\n      \"$$x\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-object/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  {\"foo\":1,\"bar\":2}\n</div>\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  {\"foo\":1,\"bar\":3}\n</div>\n<button>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  {\"foo\":1,\"bar\":4}\n</div>\n<button>\n  3\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  {\"foo\":1,\"bar\":5}\n</div>\n<button>\n  4\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-object/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  {\"foo\":1,\"bar\":2}\n</div>\n<button>\n  1\n</button>\n```\n\n# Mutations\n```\nINSERT div, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  {\"foo\":1,\"bar\":3}\n</div>\n<button>\n  2\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"1\" => \"2\"\nUPDATE div/#text \"{\\\"foo\\\":1,\\\"bar\\\":2}\" => \"{\\\"foo\\\":1,\\\"bar\\\":3}\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  {\"foo\":1,\"bar\":4}\n</div>\n<button>\n  3\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"2\" => \"3\"\nUPDATE div/#text \"{\\\"foo\\\":1,\\\"bar\\\":3}\" => \"{\\\"foo\\\":1,\\\"bar\\\":4}\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  {\"foo\":1,\"bar\":5}\n</div>\n<button>\n  4\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"3\" => \"4\"\nUPDATE div/#text \"{\\\"foo\\\":1,\\\"bar\\\":4}\" => \"{\\\"foo\\\":1,\\\"bar\\\":5}\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-object/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 175 (min) 130 (brotli)\nconst $x__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.b, \"click\", function () {\n      $x($scope, $scope.d + 1);\n    }),\n  ),\n  $x = _._let(3, ($scope) => {\n    (_._text($scope.c, $scope.d),\n      (($scope, myObj) => {\n        _._text($scope.a, JSON.stringify(myObj));\n      })($scope, { foo: 1, bar: $scope.d + 1 }),\n      $x__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-object/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div> </div><button> </button>\";\nexport const $walks = /* next(1), get, out(1), get, next(1), get, out(1) */\"D l D l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $myObj = ($scope, myObj) => _._text($scope[\"#text/0\"], JSON.stringify(myObj));\nconst $x__script = _._script(\"__tests__/template.marko_0_x\", $scope => _._on($scope[\"#button/1\"], \"click\", function () {\n  $x($scope, $scope.x + 1);\n}));\nconst $x = /* @__PURE__ */_._let(\"x/3\", $scope => {\n  _._text($scope[\"#text/2\"], $scope.x);\n  $myObj($scope, {\n    foo: 1,\n    bar: $scope.x + 1\n  });\n  $x__script($scope);\n});\nexport function $setup($scope) {\n  $x($scope, 1);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-object/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let x = 1;\n  const myObj = {\n    foo: 1,\n    bar: x + 1\n  };\n  _._html(`<div>${_._escape(JSON.stringify(myObj))}${_._el_resume($scope0_id, \"#text/0\")}</div><button>${_._escape(x)}${_._el_resume($scope0_id, \"#text/2\")}</button>${_._el_resume($scope0_id, \"#button/1\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_x\");\n  _._scope($scope0_id, {\n    x\n  }, \"__tests__/template.marko\", 0, {\n    x: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-object/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  {\"foo\":1,\"bar\":2}\n</div>\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  {\"foo\":1,\"bar\":3}\n</div>\n<button>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  {\"foo\":1,\"bar\":4}\n</div>\n<button>\n  3\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  {\"foo\":1,\"bar\":5}\n</div>\n<button>\n  4\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-object/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      {\"foo\":1,\"bar\":2}\n      <!--M_*1 #text/0-->\n    </div>\n    <button>\n      1\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 1\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      {\"foo\":1,\"bar\":3}\n      <!--M_*1 #text/0-->\n    </div>\n    <button>\n      2\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 1\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"1\" => \"2\"\nUPDATE html/body/div/#text \"{\\\"foo\\\":1,\\\"bar\\\":2}\" => \"{\\\"foo\\\":1,\\\"bar\\\":3}\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      {\"foo\":1,\"bar\":4}\n      <!--M_*1 #text/0-->\n    </div>\n    <button>\n      3\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 1\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"2\" => \"3\"\nUPDATE html/body/div/#text \"{\\\"foo\\\":1,\\\"bar\\\":3}\" => \"{\\\"foo\\\":1,\\\"bar\\\":4}\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      {\"foo\":1,\"bar\":5}\n      <!--M_*1 #text/0-->\n    </div>\n    <button>\n      4\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 1\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"3\" => \"4\"\nUPDATE html/body/div/#text \"{\\\"foo\\\":1,\\\"bar\\\":4}\" => \"{\\\"foo\\\":1,\\\"bar\\\":5}\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-object/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  {\"foo\":1,\"bar\":2}\n</div>\n<button>\n  1\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-object/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>{\"foo\":1,\"bar\":2}<!--M_*1 #text/0--></div><button>1<!--M_*1 #text/2--></button><!--M_*1 #button/1--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{x:1}]),\"__tests__/template.marko_0_x 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      {\"foo\":1,\"bar\":2}\n      <!--M_*1 #text/0-->\n    </div>\n    <button>\n      1\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 1\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/div/#comment\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-object/template.marko",
    "content": "<let/x=1/>\n<define/myObj foo=1 bar=x + 1/>\n<div>${JSON.stringify(myObj)}</div>\n<button onClick() { x++; }>\n  ${x}\n</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-object/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-recursive-known/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-recursive-known/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n\"hi\"\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-recursive-known/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<!---->\n<!---->\n<!---->\n\"hi\"\n<!---->\n<!---->\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, #comment2, #comment3, #text, #comment4, #comment5, #comment6, #comment7\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-recursive-known/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-recursive-known/__snapshots__/dom.expected/template.js",
    "content": "const $Foo_content__walks = /* over(1), replace, over(2) */\"b%c\",\n  $Foo_content__template = \"<!><!><!>\";\nexport const $template = `<!>${$Foo_content__template}<!>`;\nexport const $walks = /* over(1), <Foo>, over(1) */`b/${$Foo_content__walks}&b`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $else_content__input_message = /* @__PURE__ */_._if_closure(\"#text/0\", 1, $scope => _._text($scope[\"#text/0\"], JSON.stringify($scope._.input_message)));\nconst $else_content__setup = $else_content__input_message;\nconst $if_content__input_bar = /* @__PURE__ */_._if_closure(\"#text/0\", 0, $scope => $Foo_content__tag_input_message($scope[\"#childScope/0\"], $scope._.input_bar));\nconst $if_content__setup = $scope => {\n  $if_content__input_bar._($scope);\n  $Foo_content__tag_input_bar($scope[\"#childScope/0\"]);\n};\nconst $Foo_content__tag_input_message = /* @__PURE__ */_._const(\"input_message\", $else_content__input_message);\nconst $Foo_content__if = /* @__PURE__ */_._if(\"#text/0\", `<!>${$Foo_content__template}<!>`, /* over(1), <Foo>, over(1) */`b/${$Foo_content__walks}&b`, $if_content__setup, \" \", /* get, over(1) */\" b\", $else_content__setup);\nconst $Foo_content__tag_input_bar = /* @__PURE__ */_._const(\"input_bar\", $scope => {\n  $Foo_content__if($scope, $scope.input_bar ? 0 : 1);\n  $if_content__input_bar($scope);\n});\nconst $Foo_content__$params = ($scope, $params2) => $Foo_content__input($scope, $params2[0]);\nconst $Foo_content__input = ($scope, input) => {\n  $Foo_content__tag_input_bar($scope, input.bar);\n  $Foo_content__tag_input_message($scope, input.message);\n};\nexport function $setup($scope) {\n  $Foo_content__tag_input_bar($scope[\"#childScope/0\"], \"hi\");\n  $Foo_content__tag_input_message($scope[\"#childScope/0\"]);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-recursive-known/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const Foo = {\n    content: _._content(\"__tests__/template.marko_1_content\", input => {\n      const $scope1_id = _._scope_id();\n      const $scope1_reason = _._scope_reason();\n      _._if(() => {\n        if (input.bar) {\n          const $scope2_id = _._scope_id();\n          const $childScope = _._peek_scope_id();\n          _._set_serialize_reason({\n            /* input.bar, input.message */0: _._serialize_guard($scope1_reason, /* input.bar */1),\n            /* input.message */2: _._serialize_guard($scope1_reason, /* input.bar */1)\n          });\n          Foo.content({\n            message: input.bar\n          });\n          _._serialize_if($scope1_reason, /* input.bar */1) && _._scope($scope2_id, {\n            _: _._scope_with_id($scope1_id),\n            \"#childScope/0\": _._serialize_if($scope1_reason, /* input.bar */1) && _._existing_scope($childScope)\n          }, \"__tests__/template.marko\", \"2:3\");\n          return 0;\n        } else {\n          const $scope3_id = _._scope_id();\n          _._html(`${_._escape(JSON.stringify(input.message))}${_._el_resume($scope3_id, \"#text/0\", _._serialize_guard($scope1_reason, /* input.message */2))}`);\n          _._serialize_if($scope1_reason, /* input.bar, input.message */0) && _._scope($scope3_id, {\n            _: _._serialize_if($scope1_reason, /* input.message */2) && _._scope_with_id($scope1_id)\n          }, \"__tests__/template.marko\", \"4:3\");\n          return 1;\n        }\n      }, $scope1_id, \"#text/0\", _._serialize_guard($scope1_reason, /* input.bar, input.message */0) || _._serialize_guard($scope1_reason, /* input.bar */1), _._serialize_guard($scope1_reason, /* input.bar */1), _._serialize_guard($scope1_reason, /* input.bar */1));\n      _._serialize_if($scope1_reason, /* input.bar */1) && _._scope($scope1_id, {\n        input_bar: input.bar,\n        input_message: input.message\n      }, \"__tests__/template.marko\", \"1:1\", {\n        input_bar: [\"input.bar\", \"1:12\"],\n        input_message: [\"input.message\", \"1:12\"]\n      });\n    })\n  };\n  Foo.content({\n    bar: \"hi\"\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-recursive-known/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n\"hi\"\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-recursive-known/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    \"hi\"\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-recursive-known/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n\"hi\"\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-recursive-known/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  \"hi\"\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    \"hi\"\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-recursive-known/template.marko",
    "content": "define/Foo|input|\n  if=input.bar\n    Foo message=input.bar\n  else\n    -- ${JSON.stringify(input.message)}\n\nFoo bar=\"hi\""
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-recursive-unknown/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"_\",\n      \"$$else_content__input_message\": \"e\",\n      \"$$else_content__setup\": \"s\",\n      \"$$if_content__dynamicTag\": \"t\",\n      \"$$if_content__Foo__OR__input_bar\": \"o\",\n      \"$$if_content__Foo\": \"r\",\n      \"$$if_content__setup\": \"a\",\n      \"$$if_content__input_bar\": \"c\",\n      \"$$Foo_content__if\": \"m\",\n      \"$$Foo_content__input_bar\": \"i\",\n      \"$$Foo_content__tag_input_message\": \"n\",\n      \"$$Foo_content__input\": \"g\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-recursive-unknown/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n\"hi\"\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-recursive-unknown/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<!---->\n<!---->\n<!---->\n\"hi\"\n<!---->\n<!---->\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, #comment2, #comment3, #text, #comment4, #comment5, #comment6, #comment7\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-recursive-unknown/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 406 (min) 258 (brotli)\nconst $else_content__input_message = _._if_closure(0, 1, ($scope) =>\n    _._text($scope.a, JSON.stringify($scope._.e)),\n  ),\n  $else_content__setup = $else_content__input_message,\n  $if_content__dynamicTag = _._dynamic_tag(0),\n  $if_content__Foo__OR__input_bar = _._or(1, ($scope) =>\n    $if_content__dynamicTag($scope, $scope._._.b, () => ({\n      message: $scope._.d,\n    })),\n  ),\n  $if_content__Foo = _._closure_get(\n    1,\n    $if_content__Foo__OR__input_bar,\n    ($scope) => $scope._._,\n  ),\n  $if_content__setup = ($scope) => {\n    ($if_content__Foo($scope), $if_content__input_bar._($scope));\n  },\n  $if_content__input_bar = _._if_closure(0, 0, $if_content__Foo__OR__input_bar),\n  $Foo_content__if = _._if(\n    0,\n    \"<!><!><!>\",\n    \"b%c\",\n    $if_content__setup,\n    \" \",\n    \" b\",\n    $else_content__setup,\n  ),\n  $Foo_content__input_bar = _._const(3, ($scope) => {\n    ($Foo_content__if($scope, $scope.d ? 0 : 1),\n      $if_content__input_bar($scope));\n  }),\n  $Foo_content__tag_input_message = _._const(4, $else_content__input_message),\n  $Foo_content__input = ($scope, input) => {\n    ($Foo_content__input_bar($scope, input?.bar),\n      $Foo_content__tag_input_message($scope, input?.message));\n  };\n_._content_resume(\"a0\", \"<!><!><!>\", \"b%c\", 0, ($scope, $params2) =>\n  $Foo_content__input($scope, $params2[0]),\n);\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-recursive-unknown/__snapshots__/dom.expected/template.js",
    "content": "const $Foo_content__walks = /* over(1), replace, over(2) */\"b%c\",\n  $Foo_content__template = \"<!><!><!>\";\nexport const $template = `<!>${$Foo_content__template}<!>`;\nexport const $walks = /* over(1), <Foo>, over(1) */`b/${$Foo_content__walks}&b`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $else_content__input_message = /* @__PURE__ */_._if_closure(\"#text/0\", 1, $scope => _._text($scope[\"#text/0\"], JSON.stringify($scope._.input_message)));\nconst $else_content__setup = $else_content__input_message;\nconst $if_content__dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\");\nconst $if_content__Foo__OR__input_bar = /* @__PURE__ */_._or(1, $scope => $if_content__dynamicTag($scope, 0 || $scope._._.Foo, () => ({\n  message: $scope._.input_bar\n})));\nconst $if_content__Foo = /* @__PURE__ */_._closure_get(\"Foo\", $if_content__Foo__OR__input_bar, $scope => $scope._._);\nconst $if_content__setup = $scope => {\n  $if_content__Foo($scope);\n  $if_content__input_bar._($scope);\n};\nconst $if_content__input_bar = /* @__PURE__ */_._if_closure(\"#text/0\", 0, $if_content__Foo__OR__input_bar);\nconst $Foo_content__if = /* @__PURE__ */_._if(\"#text/0\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", $if_content__setup, \" \", /* get, over(1) */\" b\", $else_content__setup);\nconst $Foo_content__input_bar = /* @__PURE__ */_._const(\"input_bar\", $scope => {\n  $Foo_content__if($scope, $scope.input_bar ? 0 : 1);\n  $if_content__input_bar($scope);\n});\nconst $Foo_content__tag_input_message = /* @__PURE__ */_._const(\"input_message\", $else_content__input_message);\nconst $Foo_content__$params = ($scope, $params2) => $Foo_content__input($scope, $params2[0]);\nconst $Foo_content__input = ($scope, input) => {\n  $Foo_content__input_bar($scope, input?.bar);\n  $Foo_content__tag_input_message($scope, input?.message);\n};\nconst $Foo_content = _._content_resume(\"__tests__/template.marko_1_content\", $Foo_content__template, $Foo_content__walks, 0, $Foo_content__$params);\nconst $Foo = /* @__PURE__ */_._const(\"Foo\");\nexport function $setup($scope) {\n  $scope[\"#childScope/0\"]._ = $scope;\n  $Foo_content__input_bar($scope[\"#childScope/0\"], \"hi\");\n  $Foo_content__tag_input_message($scope[\"#childScope/0\"]);\n  $Foo($scope, {\n    content: $Foo_content($scope)\n  });\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-recursive-unknown/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const Foo = {\n    content: _._content_resume(\"__tests__/template.marko_1_content\", input => {\n      const $scope1_id = _._scope_id();\n      const $scope1_reason = _._scope_reason();\n      _._if(() => {\n        if (input.bar) {\n          const $scope2_id = _._scope_id();\n          _._dynamic_tag($scope2_id, \"#text/0\", 0 || Foo, {\n            message: input.bar\n          }, 0, 0, _._serialize_guard($scope1_reason, /* input.bar */1));\n          _._serialize_if($scope1_reason, /* input.bar */1) && _._scope($scope2_id, {\n            _: _._scope_with_id($scope1_id)\n          }, \"__tests__/template.marko\", \"2:3\");\n          return 0;\n        } else {\n          const $scope3_id = _._scope_id();\n          _._html(`${_._escape(JSON.stringify(input.message))}${_._el_resume($scope3_id, \"#text/0\", _._serialize_guard($scope1_reason, /* input.message */2))}`);\n          _._serialize_if($scope1_reason, /* input.bar, input.message */0) && _._scope($scope3_id, {\n            _: _._serialize_if($scope1_reason, /* input.message */2) && _._scope_with_id($scope1_id)\n          }, \"__tests__/template.marko\", \"4:3\");\n          return 1;\n        }\n      }, $scope1_id, \"#text/0\", _._serialize_guard($scope1_reason, /* input.bar, input.message */0) || _._serialize_guard($scope1_reason, /* input.bar */1), _._serialize_guard($scope1_reason, /* input.bar */1), _._serialize_guard($scope1_reason, /* input.bar */1));\n      _._serialize_if($scope1_reason, /* input.bar */1) && _._scope($scope1_id, {\n        input_bar: input?.bar,\n        input_message: input?.message,\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"1:1\", {\n        input_bar: [\"input.bar\", \"1:12\"],\n        input_message: [\"input.message\", \"1:12\"]\n      });\n    }, $scope0_id)\n  };\n  Foo.content({\n    bar: \"hi\"\n  });\n  _._scope($scope0_id, {\n    Foo\n  }, \"__tests__/template.marko\", 0, {\n    Foo: \"1:8\"\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-recursive-unknown/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n\"hi\"\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-recursive-unknown/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    \"hi\"\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n        Foo: _.a = {}\n      }], _.a.content = _._[\n        \"__tests__/template.marko_1_content\"\n        ](_.c), _.b)]\n    </script>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-recursive-unknown/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n\"hi\"\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-recursive-unknown/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  \"hi\"<script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.c={Foo:_.a={}}],_.a.content=_._[\"__tests__/template.marko_1_content\"](_.c),_.b)]</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    \"hi\"\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n        Foo: _.a = {}\n      }], _.a.content = _._[\n        \"__tests__/template.marko_1_content\"\n        ](_.c), _.b)]\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-recursive-unknown/template.marko",
    "content": "define/Foo|input|\n  if=input.bar\n    ${0 || Foo} message=input.bar\n  else\n    -- ${JSON.stringify(input.message)}\n\nFoo bar=\"hi\"\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$MyTag_content__y__script\": \"m\",\n      \"$$MyTag_content__y\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  Hello Ryan 1\n</div>\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Hello Ryan 2\n</div>\n<button>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Hello Ryan 3\n</div>\n<button>\n  3\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Hello Ryan 4\n</div>\n<button>\n  4\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<div>\n  Hello Ryan 1\n</div>\n<button>\n  1\n</button>\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, div, button, #comment1\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<div>\n  Hello Ryan 2\n</div>\n<button>\n  2\n</button>\n<!---->\n```\n\n# Mutations\n```\nUPDATE div/#text3 \"1\" => \"2\"\nUPDATE button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<div>\n  Hello Ryan 3\n</div>\n<button>\n  3\n</button>\n<!---->\n```\n\n# Mutations\n```\nUPDATE div/#text3 \"2\" => \"3\"\nUPDATE button/#text \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<div>\n  Hello Ryan 4\n</div>\n<button>\n  4\n</button>\n<!---->\n```\n\n# Mutations\n```\nUPDATE div/#text3 \"3\" => \"4\"\nUPDATE button/#text \"3\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 129 (min) 101 (brotli)\nconst $MyTag_content__y__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.c, \"click\", function () {\n      $MyTag_content__y($scope, $scope.h + 1);\n    }),\n  ),\n  $MyTag_content__y = _._let(7, ($scope) => {\n    (_._text($scope.b, $scope.h),\n      _._text($scope.d, $scope.h),\n      $MyTag_content__y__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render/__snapshots__/dom.expected/template.js",
    "content": "const $MyTag_content__walks = /* next(1), over(1), replace, over(2), replace, out(1), get, next(1), get, out(1) */\"Db%c%l D l\",\n  $MyTag_content__template = \"<div>Hello <!> <!></div><button> </button>\";\nexport const $template = `<!>${$MyTag_content__template}<!>`;\nexport const $walks = /* over(1), <MyTag>, over(1) */`b/${$MyTag_content__walks}&b`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $MyTag_content__y__script = _._script(\"__tests__/template.marko_1_y\", $scope => _._on($scope[\"#button/2\"], \"click\", function () {\n  $MyTag_content__y($scope, $scope.y + 1);\n}));\nconst $MyTag_content__y = /* @__PURE__ */_._let(\"y/7\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.y);\n  _._text($scope[\"#text/3\"], $scope.y);\n  $MyTag_content__y__script($scope);\n});\nconst $MyTag_content__setup = /* @__PURE__ */_._child_setup($scope => $MyTag_content__y($scope, 1));\nconst $MyTag_content__name = ($scope, name) => _._text($scope[\"#text/0\"], name);\nconst $MyTag_content__$params = ($scope, $params2) => $MyTag_content__$temp($scope, $params2?.[0]);\nconst $MyTag_content__$temp = ($scope, $temp) => $MyTag_content__name($scope, $temp.name);\nexport function $setup($scope) {\n  $MyTag_content__setup._($scope[\"#childScope/0\"], $scope);\n  $MyTag_content__name($scope[\"#childScope/0\"], \"Ryan\");\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const MyTag = {\n    content: _._content(\"__tests__/template.marko_1_content\", ({\n      name\n    }) => {\n      const $scope1_id = _._scope_id();\n      const $scope1_reason = _._scope_reason();\n      let y = 1;\n      _._html(`<div>Hello ${_._sep(_._serialize_guard($scope1_reason, /* name */0))}${_._escape(name)}${_._el_resume($scope1_id, \"#text/0\", _._serialize_guard($scope1_reason, /* name */0))} <!>${_._escape(y)}${_._el_resume($scope1_id, \"#text/1\")}</div><button>${_._escape(y)}${_._el_resume($scope1_id, \"#text/3\")}</button>${_._el_resume($scope1_id, \"#button/2\")}`);\n      _._script($scope1_id, \"__tests__/template.marko_1_y\");\n      _._scope($scope1_id, {\n        y\n      }, \"__tests__/template.marko\", \"1:2\", {\n        y: \"2:8\"\n      });\n      _._resume_branch($scope1_id);\n    })\n  };\n  MyTag.content({\n    name: \"Ryan\"\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  Hello Ryan 1\n</div>\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Hello Ryan 2\n</div>\n<button>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Hello Ryan 3\n</div>\n<button>\n  3\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Hello Ryan 4\n</div>\n<button>\n  4\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      Hello Ryan \n      <!---->\n      1\n      <!--M_*2 #text/1-->\n    </div>\n    <button>\n      1\n      <!--M_*2 #text/3-->\n    </button>\n    <!--M_*2 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 1,\n        {\n          y: 1\n        }]),\n        \"__tests__/template.marko_1_y 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      Hello Ryan \n      <!---->\n      2\n      <!--M_*2 #text/1-->\n    </div>\n    <button>\n      2\n      <!--M_*2 #text/3-->\n    </button>\n    <!--M_*2 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 1,\n        {\n          y: 1\n        }]),\n        \"__tests__/template.marko_1_y 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/#text1 \"1\" => \"2\"\nUPDATE html/body/button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      Hello Ryan \n      <!---->\n      3\n      <!--M_*2 #text/1-->\n    </div>\n    <button>\n      3\n      <!--M_*2 #text/3-->\n    </button>\n    <!--M_*2 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 1,\n        {\n          y: 1\n        }]),\n        \"__tests__/template.marko_1_y 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/#text1 \"2\" => \"3\"\nUPDATE html/body/button/#text \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      Hello Ryan \n      <!---->\n      4\n      <!--M_*2 #text/1-->\n    </div>\n    <button>\n      4\n      <!--M_*2 #text/3-->\n    </button>\n    <!--M_*2 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 1,\n        {\n          y: 1\n        }]),\n        \"__tests__/template.marko_1_y 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/#text1 \"3\" => \"4\"\nUPDATE html/body/button/#text \"3\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  Hello Ryan 1\n</div>\n<button>\n  1\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>Hello Ryan <!>1<!--M_*2 #text/1--></div><button>1<!--M_*2 #text/3--></button><!--M_*2 #button/2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,1,{y:1}]),\"__tests__/template.marko_1_y 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      Hello Ryan \n      <!---->\n      1\n      <!--M_*2 #text/1-->\n    </div>\n    <button>\n      1\n      <!--M_*2 #text/3-->\n    </button>\n    <!--M_*2 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 1,\n        {\n          y: 1\n        }]),\n        \"__tests__/template.marko_1_y 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text0\nINSERT html/body/div/#comment0\nINSERT html/body/div/#text1\nINSERT html/body/div/#comment1\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render/template.marko",
    "content": "<define/MyTag|{name}|>\n  <let/y=1 />\n  <div>Hello ${name} ${y}</div>\n  <button onClick() { y++; }>\n    ${y}\n  </button>\n</define>\n\n<MyTag name=\"Ryan\" />"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-args/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$x__script\": \"m\",\n      \"$$x\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-args/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  1|Hello|1\n</div>\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  1|Hello|2\n</div>\n<button>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  1|Hello|3\n</div>\n<button>\n  3\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  1|Hello|4\n</div>\n<button>\n  4\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-args/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<div>\n  1|Hello|1\n</div>\n<button>\n  1\n</button>\n```\n\n# Mutations\n```\nINSERT #comment, div, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<div>\n  1|Hello|2\n</div>\n<button>\n  2\n</button>\n```\n\n# Mutations\n```\nUPDATE div/#text4 \"1\" => \"2\"\nUPDATE button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<div>\n  1|Hello|3\n</div>\n<button>\n  3\n</button>\n```\n\n# Mutations\n```\nUPDATE div/#text4 \"2\" => \"3\"\nUPDATE button/#text \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<div>\n  1|Hello|4\n</div>\n<button>\n  4\n</button>\n```\n\n# Mutations\n```\nUPDATE div/#text4 \"3\" => \"4\"\nUPDATE button/#text \"3\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-args/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 147 (min) 110 (brotli)\nconst $x__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.b, \"click\", function () {\n      $x($scope, $scope.d + 1);\n    }),\n  ),\n  $x = _._let(3, ($scope) => {\n    ((($scope, c) => {\n      _._text($scope.c, c);\n    })($scope.a, $scope.d),\n      _._text($scope.c, $scope.d),\n      $x__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-args/__snapshots__/dom.expected/template.js",
    "content": "const $MyTag_content__walks = /* next(1), replace, over(2), replace, over(2), replace, out(1) */\"D%c%c%l\",\n  $MyTag_content__template = \"<div><!>|<!>|<!></div>\";\nexport const $template = `<!>${$MyTag_content__template}<button> </button>`;\nexport const $walks = /* over(1), <MyTag>, get, next(1), get, out(1) */`b/${$MyTag_content__walks}& D l`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $MyTag_content__a = ($scope, a) => _._text($scope[\"#text/0\"], a);\nconst $MyTag_content__b = ($scope, b) => _._text($scope[\"#text/1\"], b);\nconst $MyTag_content__c = ($scope, c) => _._text($scope[\"#text/2\"], c);\nconst $MyTag_content__$params = ($scope, $params2) => {\n  $MyTag_content__a($scope, $params2[0]);\n  $MyTag_content__b($scope, $params2[1]);\n  $MyTag_content__c($scope, $params2[2]);\n};\nconst $x__script = _._script(\"__tests__/template.marko_0_x\", $scope => _._on($scope[\"#button/1\"], \"click\", function () {\n  $x($scope, $scope.x + 1);\n}));\nconst $x = /* @__PURE__ */_._let(\"x/3\", $scope => {\n  $MyTag_content__c($scope[\"#childScope/0\"], $scope.x);\n  _._text($scope[\"#text/2\"], $scope.x);\n  $x__script($scope);\n});\nexport function $setup($scope) {\n  $MyTag_content__a($scope[\"#childScope/0\"], 1);\n  $MyTag_content__b($scope[\"#childScope/0\"], \"Hello\");\n  $x($scope, 1);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-args/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let x = 1;\n  const MyTag = {\n    content: _._content(\"__tests__/template.marko_1_content\", (a, b, c) => {\n      const $scope1_id = _._scope_id();\n      const $scope1_reason = _._scope_reason();\n      _._html(`<div>${_._escape(a)}${_._el_resume($scope1_id, \"#text/0\", _._serialize_guard($scope1_reason, /* a */1))}|${_._sep(_._serialize_guard($scope1_reason, /* b */2))}${_._escape(b)}${_._el_resume($scope1_id, \"#text/1\", _._serialize_guard($scope1_reason, /* b */2))}|${_._sep(_._serialize_guard($scope1_reason, /* c */3))}${_._escape(c)}${_._el_resume($scope1_id, \"#text/2\", _._serialize_guard($scope1_reason, /* c */3))}</div>`);\n      _._serialize_if($scope1_reason, /* a, b, c */0) && _._scope($scope1_id, {}, \"__tests__/template.marko\", \"2:2\");\n    })\n  };\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason({\n    /* a, b, c */0: /* x */1,\n    /* c */3: /* x */1\n  });\n  MyTag.content(1, \"Hello\", x);\n  _._html(`<button>${_._escape(x)}${_._el_resume($scope0_id, \"#text/2\")}</button>${_._el_resume($scope0_id, \"#button/1\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_x\");\n  _._scope($scope0_id, {\n    x,\n    \"#childScope/0\": _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0, {\n    x: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-args/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  1|Hello|1\n</div>\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  1|Hello|2\n</div>\n<button>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  1|Hello|3\n</div>\n<button>\n  3\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  1|Hello|4\n</div>\n<button>\n  4\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-args/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      1|Hello|\n      <!---->\n      1\n      <!--M_*2 #text/2-->\n    </div>\n    <button>\n      1\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0,\n        {\n          x: 1,\n          \"#childScope/0\": _.a = {}\n        }, _.a]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      1|Hello|\n      <!---->\n      2\n      <!--M_*2 #text/2-->\n    </div>\n    <button>\n      2\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0,\n        {\n          x: 1,\n          \"#childScope/0\": _.a = {}\n        }, _.a]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/#text1 \"1\" => \"2\"\nUPDATE html/body/button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      1|Hello|\n      <!---->\n      3\n      <!--M_*2 #text/2-->\n    </div>\n    <button>\n      3\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0,\n        {\n          x: 1,\n          \"#childScope/0\": _.a = {}\n        }, _.a]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/#text1 \"2\" => \"3\"\nUPDATE html/body/button/#text \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      1|Hello|\n      <!---->\n      4\n      <!--M_*2 #text/2-->\n    </div>\n    <button>\n      4\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0,\n        {\n          x: 1,\n          \"#childScope/0\": _.a = {}\n        }, _.a]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/#text1 \"3\" => \"4\"\nUPDATE html/body/button/#text \"3\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-args/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  1|Hello|1\n</div>\n<button>\n  1\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-args/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>1|Hello|<!>1<!--M_*2 #text/2--></div><button>1<!--M_*1 #text/2--></button><!--M_*1 #button/1--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,{x:1,\"#childScope/0\":_.a={}},_.a]),\"__tests__/template.marko_0_x 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      1|Hello|\n      <!---->\n      1\n      <!--M_*2 #text/2-->\n    </div>\n    <button>\n      1\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0,\n        {\n          x: 1,\n          \"#childScope/0\": _.a = {}\n        }, _.a]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text0\nINSERT html/body/div/#comment0\nINSERT html/body/div/#text1\nINSERT html/body/div/#comment1\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-args/template.marko",
    "content": "<let/x=1 />\n<define/MyTag|a, b, c|>\n  <div>${a}|${b}|${c}</div>\n</define>\n\n<MyTag(1, \"Hello\", x) />\n<button onClick() { x++; }>\n  ${x}\n</button>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-args/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-attr-signal/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$x__script\": \"m\",\n      \"$$x\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-attr-signal/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  1\n</div>\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  2\n</div>\n<button>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  3\n</div>\n<button>\n  3\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  4\n</div>\n<button>\n  4\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-attr-signal/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<div>\n  1\n</div>\n<button>\n  1\n</button>\n```\n\n# Mutations\n```\nINSERT #comment, div, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<div>\n  2\n</div>\n<button>\n  2\n</button>\n```\n\n# Mutations\n```\nUPDATE div/#text \"1\" => \"2\"\nUPDATE button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<div>\n  3\n</div>\n<button>\n  3\n</button>\n```\n\n# Mutations\n```\nUPDATE div/#text \"2\" => \"3\"\nUPDATE button/#text \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<div>\n  4\n</div>\n<button>\n  4\n</button>\n```\n\n# Mutations\n```\nUPDATE div/#text \"3\" => \"4\"\nUPDATE button/#text \"3\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-attr-signal/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 147 (min) 110 (brotli)\nconst $x__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.b, \"click\", function () {\n      $x($scope, $scope.d + 1);\n    }),\n  ),\n  $x = _._let(3, ($scope) => {\n    ((($scope, number) => {\n      _._text($scope.a, number);\n    })($scope.a, $scope.d),\n      _._text($scope.c, $scope.d),\n      $x__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-attr-signal/__snapshots__/dom.expected/template.js",
    "content": "const $MyTag_content__walks = /* next(1), get, out(1) */\"D l\",\n  $MyTag_content__template = \"<div> </div>\";\nexport const $template = `<!>${$MyTag_content__template}<button> </button>`;\nexport const $walks = /* over(1), <MyTag>, get, next(1), get, out(1) */`b/${$MyTag_content__walks}& D l`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $MyTag_content__number = ($scope, number) => _._text($scope[\"#text/0\"], number);\nconst $MyTag_content__$params = ($scope, $params2) => $MyTag_content__$temp($scope, $params2?.[0]);\nconst $MyTag_content__$temp = ($scope, $temp) => $MyTag_content__number($scope, $temp.number);\nconst $x__script = _._script(\"__tests__/template.marko_0_x\", $scope => _._on($scope[\"#button/1\"], \"click\", function () {\n  $x($scope, $scope.x + 1);\n}));\nconst $x = /* @__PURE__ */_._let(\"x/3\", $scope => {\n  $MyTag_content__number($scope[\"#childScope/0\"], $scope.x);\n  _._text($scope[\"#text/2\"], $scope.x);\n  $x__script($scope);\n});\nexport function $setup($scope) {\n  $x($scope, 1);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-attr-signal/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let x = 1;\n  const MyTag = {\n    content: _._content(\"__tests__/template.marko_1_content\", ({\n      number\n    }) => {\n      const $scope1_id = _._scope_id();\n      const $scope1_reason = _._scope_reason();\n      _._html(`<div>${_._escape(number)}${_._el_resume($scope1_id, \"#text/0\", _._serialize_guard($scope1_reason, /* number */0))}</div>`);\n      _._serialize_if($scope1_reason, /* number */0) && _._scope($scope1_id, {}, \"__tests__/template.marko\", \"2:2\");\n    })\n  };\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason(/* x */1);\n  MyTag.content({\n    number: x\n  });\n  _._html(`<button>${_._escape(x)}${_._el_resume($scope0_id, \"#text/2\")}</button>${_._el_resume($scope0_id, \"#button/1\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_x\");\n  _._scope($scope0_id, {\n    x,\n    \"#childScope/0\": _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0, {\n    x: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-attr-signal/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  1\n</div>\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  2\n</div>\n<button>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  3\n</div>\n<button>\n  3\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  4\n</div>\n<button>\n  4\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-attr-signal/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      1\n      <!--M_*2 #text/0-->\n    </div>\n    <button>\n      1\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0,\n        {\n          x: 1,\n          \"#childScope/0\": _.a = {}\n        }, _.a]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      2\n      <!--M_*2 #text/0-->\n    </div>\n    <button>\n      2\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0,\n        {\n          x: 1,\n          \"#childScope/0\": _.a = {}\n        }, _.a]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/#text \"1\" => \"2\"\nUPDATE html/body/button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      3\n      <!--M_*2 #text/0-->\n    </div>\n    <button>\n      3\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0,\n        {\n          x: 1,\n          \"#childScope/0\": _.a = {}\n        }, _.a]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/#text \"2\" => \"3\"\nUPDATE html/body/button/#text \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      4\n      <!--M_*2 #text/0-->\n    </div>\n    <button>\n      4\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0,\n        {\n          x: 1,\n          \"#childScope/0\": _.a = {}\n        }, _.a]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/#text \"3\" => \"4\"\nUPDATE html/body/button/#text \"3\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-attr-signal/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  1\n</div>\n<button>\n  1\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-attr-signal/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>1<!--M_*2 #text/0--></div><button>1<!--M_*1 #text/2--></button><!--M_*1 #button/1--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,{x:1,\"#childScope/0\":_.a={}},_.a]),\"__tests__/template.marko_0_x 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      1\n      <!--M_*2 #text/0-->\n    </div>\n    <button>\n      1\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0,\n        {\n          x: 1,\n          \"#childScope/0\": _.a = {}\n        }, _.a]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/div/#comment\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-attr-signal/template.marko",
    "content": "<let/x=1 />\n<define/MyTag|{number}|>\n  <div>${number}</div>\n</define>\n\n<MyTag number=x />\n<button onClick() { x++; }>\n  ${x}\n</button>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-attr-signal/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-closure/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"_\",\n      \"$$if_content__setup\": \"e\",\n      \"$$MyTag_content__x\": \"o\",\n      \"$$MyTag_content__setup\": \"i\",\n      \"$$if\": \"r\",\n      \"$$x__closure\": \"m\",\n      \"$$x__script\": \"c\",\n      \"$$x\": \"a\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-closure/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  1\n</div>\n<div>\n  1\n</div>\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  2\n</div>\n<div>\n  2\n</div>\n<button>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  3\n</div>\n<div>\n  3\n</div>\n<button>\n  3\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  4\n</div>\n<div>\n  4\n</div>\n<button>\n  4\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-closure/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<div>\n  1\n</div>\n<!---->\n<div>\n  1\n</div>\n<!---->\n<button>\n  1\n</button>\n```\n\n# Mutations\n```\nINSERT #comment0, div0, #comment1, div1, #comment2, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<div>\n  2\n</div>\n<!---->\n<div>\n  2\n</div>\n<!---->\n<button>\n  2\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"1\" => \"2\"\nUPDATE div0/#text \"1\" => \"2\"\nUPDATE div1/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<div>\n  3\n</div>\n<!---->\n<div>\n  3\n</div>\n<!---->\n<button>\n  3\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"2\" => \"3\"\nUPDATE div0/#text \"2\" => \"3\"\nUPDATE div1/#text \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<div>\n  4\n</div>\n<!---->\n<div>\n  4\n</div>\n<!---->\n<button>\n  4\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"3\" => \"4\"\nUPDATE div0/#text \"3\" => \"4\"\nUPDATE div1/#text \"3\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-closure/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 272 (min) 184 (brotli)\nconst $if_content__setup = ($scope) => {\n    $MyTag_content__setup._($scope.a, $scope._);\n  },\n  $MyTag_content__x = _._closure_get(4, ($scope) =>\n    _._text($scope.a, $scope._.e),\n  ),\n  $MyTag_content__setup = _._child_setup($MyTag_content__x),\n  $if = _._if(1, \"<!><div> </div><!>\", \"b/D l&b\", $if_content__setup),\n  $x__closure = _._closure($MyTag_content__x),\n  $x__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.c, \"click\", function () {\n      $x($scope, $scope.e + 1);\n    }),\n  ),\n  $x = _._let(4, ($scope) => {\n    (_._text($scope.d, $scope.e),\n      $if($scope, ($scope.e, 0)),\n      $x__closure($scope),\n      $x__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-closure/__snapshots__/dom.expected/template.js",
    "content": "const $MyTag_content__walks = /* next(1), get, out(1) */\"D l\",\n  $MyTag_content__template = \"<div> </div>\";\nexport const $template = `<!>${$MyTag_content__template}<!><button> </button>`;\nexport const $walks = /* over(1), <MyTag>, replace, over(1), get, next(1), get, out(1) */`b/${$MyTag_content__walks}&%b D l`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content__setup = $scope => {\n  $MyTag_content__setup._($scope[\"#childScope/0\"], $scope._);\n};\nconst $MyTag_content__x = /* @__PURE__ */_._closure_get(\"x\", $scope => _._text($scope[\"#text/0\"], $scope._.x));\nconst $MyTag_content__setup = /* @__PURE__ */_._child_setup($MyTag_content__x);\nconst $if = /* @__PURE__ */_._if(\"#text/1\", `<!>${$MyTag_content__template}<!>`, /* over(1), <MyTag>, over(1) */`b/${$MyTag_content__walks}&b`, $if_content__setup);\nconst $x__closure = /* @__PURE__ */_._closure($MyTag_content__x);\nconst $x__script = _._script(\"__tests__/template.marko_0_x\", $scope => _._on($scope[\"#button/2\"], \"click\", function () {\n  $x($scope, $scope.x + 1);\n}));\nconst $x = /* @__PURE__ */_._let(\"x/4\", $scope => {\n  _._text($scope[\"#text/3\"], $scope.x);\n  $if($scope, $scope.x || 1 ? 0 : 1);\n  $x__closure($scope);\n  $x__script($scope);\n});\nexport function $setup($scope) {\n  $MyTag_content__setup._($scope[\"#childScope/0\"], $scope);\n  $x($scope, 1);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-closure/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $x__closures = new Set();\n  let x = 1;\n  const MyTag = {\n    content: _._content(\"__tests__/template.marko_1_content\", () => {\n      const $scope1_id = _._scope_id();\n      _._scope_reason();\n      _._html(`<div>${_._escape(x)}${_._el_resume($scope1_id, \"#text/0\")}</div>`);\n      _._subscribe($x__closures, _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id),\n        \"ClosureSignalIndex:x\": 0\n      }, \"__tests__/template.marko\", \"2:2\"));\n      _._resume_branch($scope1_id);\n    })\n  };\n  MyTag.content({});\n  _._if(() => {\n    if (x || 1) {\n      const $scope2_id = _._scope_id();\n      MyTag.content({});\n      _._scope($scope2_id, {}, \"__tests__/template.marko\", \"7:2\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/1\");\n  _._html(`<button>${_._escape(x)}${_._el_resume($scope0_id, \"#text/3\")}</button>${_._el_resume($scope0_id, \"#button/2\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_x\");\n  _._scope($scope0_id, {\n    x,\n    \"ClosureScopes:x\": $x__closures\n  }, \"__tests__/template.marko\", 0, {\n    x: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-closure/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  1\n</div>\n<div>\n  1\n</div>\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  2\n</div>\n<div>\n  2\n</div>\n<button>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  3\n</div>\n<div>\n  3\n</div>\n<button>\n  3\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  4\n</div>\n<div>\n  4\n</div>\n<button>\n  4\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-closure/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      1\n      <!--M_*2 #text/0-->\n    </div>\n    <!--M_[-->\n    <div>\n      1\n      <!--M_*4 #text/0-->\n    </div>\n    <!--M_]1 #text/1 3-->\n    <button>\n      1\n      <!--M_*1 #text/3-->\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          x: 1,\n          \"ClosureScopes:x\": _.c = new Set\n        }, _.d = {\n          _: _.a,\n          \"ClosureSignalIndex:x\": 0\n        }, 1, _.e = {\n          _: _.a,\n          \"ClosureSignalIndex:x\": 0,\n          \"#ClosestBranchId\": 3\n        }], (_.c).add(_.d), _.c.add(_.e), _.b),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      2\n      <!--M_*2 #text/0-->\n    </div>\n    <!---->\n    <div>\n      2\n    </div>\n    <!---->\n    <!--M_]1 #text/1 3-->\n    <button>\n      2\n      <!--M_*1 #text/3-->\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          x: 1,\n          \"ClosureScopes:x\": _.c = new Set\n        }, _.d = {\n          _: _.a,\n          \"ClosureSignalIndex:x\": 0\n        }, 1, _.e = {\n          _: _.a,\n          \"ClosureSignalIndex:x\": 0,\n          \"#ClosestBranchId\": 3\n        }], (_.c).add(_.d), _.c.add(_.e), _.b),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"1\" => \"2\"\nINSERT html/body/#comment0, html/body/div1, html/body/#comment1\nREMOVE #comment after html/body/#comment1\nREMOVE div after html/body/#comment1\nREMOVE #text after html/body/#comment1\nUPDATE html/body/div0/#text \"1\" => \"2\"\nUPDATE html/body/div1/#text \" \" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      3\n      <!--M_*2 #text/0-->\n    </div>\n    <!---->\n    <div>\n      3\n    </div>\n    <!---->\n    <!--M_]1 #text/1 3-->\n    <button>\n      3\n      <!--M_*1 #text/3-->\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          x: 1,\n          \"ClosureScopes:x\": _.c = new Set\n        }, _.d = {\n          _: _.a,\n          \"ClosureSignalIndex:x\": 0\n        }, 1, _.e = {\n          _: _.a,\n          \"ClosureSignalIndex:x\": 0,\n          \"#ClosestBranchId\": 3\n        }], (_.c).add(_.d), _.c.add(_.e), _.b),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"2\" => \"3\"\nUPDATE html/body/div0/#text \"2\" => \"3\"\nUPDATE html/body/div1/#text \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      4\n      <!--M_*2 #text/0-->\n    </div>\n    <!---->\n    <div>\n      4\n    </div>\n    <!---->\n    <!--M_]1 #text/1 3-->\n    <button>\n      4\n      <!--M_*1 #text/3-->\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          x: 1,\n          \"ClosureScopes:x\": _.c = new Set\n        }, _.d = {\n          _: _.a,\n          \"ClosureSignalIndex:x\": 0\n        }, 1, _.e = {\n          _: _.a,\n          \"ClosureSignalIndex:x\": 0,\n          \"#ClosestBranchId\": 3\n        }], (_.c).add(_.d), _.c.add(_.e), _.b),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"3\" => \"4\"\nUPDATE html/body/div0/#text \"3\" => \"4\"\nUPDATE html/body/div1/#text \"3\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-closure/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  1\n</div>\n<div>\n  1\n</div>\n<button>\n  1\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-closure/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>1<!--M_*2 #text/0--></div><!--M_[--><div>1<!--M_*4 #text/0--></div><!--M_]1 #text/1 3--><button>1<!--M_*1 #text/3--></button><!--M_*1 #button/2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={x:1,\"ClosureScopes:x\":_.c=new Set},_.d={_:_.a,\"ClosureSignalIndex:x\":0},1,_.e={_:_.a,\"ClosureSignalIndex:x\":0,\"#ClosestBranchId\":3}],(_.c).add(_.d),_.c.add(_.e),_.b),\"__tests__/template.marko_0_x 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      1\n      <!--M_*2 #text/0-->\n    </div>\n    <!--M_[-->\n    <div>\n      1\n      <!--M_*4 #text/0-->\n    </div>\n    <!--M_]1 #text/1 3-->\n    <button>\n      1\n      <!--M_*1 #text/3-->\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          x: 1,\n          \"ClosureScopes:x\": _.c = new Set\n        }, _.d = {\n          _: _.a,\n          \"ClosureSignalIndex:x\": 0\n        }, 1, _.e = {\n          _: _.a,\n          \"ClosureSignalIndex:x\": 0,\n          \"#ClosestBranchId\": 3\n        }], (_.c).add(_.d), _.c.add(_.e), _.b),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/div0/#text\nINSERT html/body/div0/#comment\nINSERT html/body/#comment0\nINSERT html/body/div1\nINSERT html/body/div1/#text\nINSERT html/body/div1/#comment\nINSERT html/body/#comment1\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-closure/template.marko",
    "content": "<let/x=1 />\n<define/MyTag>\n  <div>${x}</div>\n</define>\n\n<MyTag />\n<if=x||1>\n  <MyTag />\n</>\n<button onClick() { x++; }>\n  ${x}\n</button>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-closure/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-conditional/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$if_content__x\": \"e\",\n      \"$$if_content__setup\": \"i\",\n      \"$$if\": \"m\",\n      \"$$show\": \"r\",\n      \"$$x__script\": \"_\",\n      \"$$x\": \"a\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-conditional/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  Hello 1\n</div>\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Hello 2\n</div>\n<button>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Hello 3\n</div>\n<button>\n  3\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Hello 4\n</div>\n<button>\n  4\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-conditional/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<!---->\n<div>\n  Hello 1\n</div>\n<!---->\n<button>\n  1\n</button>\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, div, #comment2, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<!---->\n<div>\n  Hello 2\n</div>\n<!---->\n<button>\n  2\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"1\" => \"2\"\nUPDATE div/#text1 \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<!---->\n<div>\n  Hello 3\n</div>\n<!---->\n<button>\n  3\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"2\" => \"3\"\nUPDATE div/#text1 \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<!---->\n<div>\n  Hello 4\n</div>\n<!---->\n<button>\n  4\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"3\" => \"4\"\nUPDATE div/#text1 \"3\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-conditional/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 269 (min) 202 (brotli)\nconst $if_content__x = _._if_closure(0, 0, ($scope) =>\n    (($scope, value) => _._text($scope.a, value))($scope.a, $scope._.e),\n  ),\n  $if_content__setup = $if_content__x,\n  $if = _._if(0, \"<!><div>Hello <!></div><!>\", \"b/Db%l&b\", $if_content__setup),\n  $show = _._let(3, ($scope) => $if($scope, $scope.d ? 0 : 1)),\n  $x__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.b, \"click\", function () {\n      ($x($scope, $scope.e + 1), $show($scope, !0));\n    }),\n  ),\n  $x = _._let(4, ($scope) => {\n    (_._text($scope.c, $scope.e), $if_content__x($scope), $x__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-conditional/__snapshots__/dom.expected/template.js",
    "content": "const $MyTag_content__walks = /* next(1), over(1), replace, out(1) */\"Db%l\",\n  $MyTag_content__template = \"<div>Hello <!></div>\";\nexport const $template = \"<!><!><button> </button>\";\nexport const $walks = /* over(1), replace, over(1), get, next(1), get, out(1) */\"b%b D l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $MyTag_content__value = ($scope, value) => _._text($scope[\"#text/0\"], value);\nconst $MyTag_content__$params = ($scope, $params2) => $MyTag_content__$temp($scope, $params2?.[0]);\nconst $MyTag_content__$temp = ($scope, $temp) => $MyTag_content__value($scope, $temp.value);\nconst $if_content__x = /* @__PURE__ */_._if_closure(\"#text/0\", 0, $scope => $MyTag_content__value($scope[\"#childScope/0\"], $scope._.x));\nconst $if_content__setup = $if_content__x;\nconst $if = /* @__PURE__ */_._if(\"#text/0\", `<!>${$MyTag_content__template}<!>`, /* over(1), <MyTag>, over(1) */`b/${$MyTag_content__walks}&b`, $if_content__setup);\nconst $show = /* @__PURE__ */_._let(\"show/3\", $scope => $if($scope, $scope.show ? 0 : 1));\nconst $x__script = _._script(\"__tests__/template.marko_0_x\", $scope => _._on($scope[\"#button/1\"], \"click\", function () {\n  $x($scope, $scope.x + 1);\n  $show($scope, true);\n}));\nconst $x = /* @__PURE__ */_._let(\"x/4\", $scope => {\n  _._text($scope[\"#text/2\"], $scope.x);\n  $if_content__x($scope);\n  $x__script($scope);\n});\nexport function $setup($scope) {\n  $show($scope, true);\n  $x($scope, 1);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-conditional/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let show = true;\n  let x = 1;\n  const MyTag = {\n    content: _._content(\"__tests__/template.marko_2_content\", ({\n      value\n    }) => {\n      const $scope2_id = _._scope_id();\n      const $scope2_reason = _._scope_reason();\n      _._html(`<div>Hello ${_._sep(_._serialize_guard($scope2_reason, /* value */0))}${_._escape(value)}${_._el_resume($scope2_id, \"#text/0\", _._serialize_guard($scope2_reason, /* value */0))}</div>`);\n      _._serialize_if($scope2_reason, /* value */0) && _._scope($scope2_id, {}, \"__tests__/template.marko\", \"4:2\");\n    })\n  };\n  _._if(() => {\n    if (show) {\n      const $scope1_id = _._scope_id();\n      const $childScope = _._peek_scope_id();\n      _._set_serialize_reason(/* x */1);\n      MyTag.content({\n        value: x\n      });\n      _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id),\n        \"#childScope/0\": _._existing_scope($childScope)\n      }, \"__tests__/template.marko\", \"8:2\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/0\");\n  _._html(`<button>${_._escape(x)}${_._el_resume($scope0_id, \"#text/2\")}</button>${_._el_resume($scope0_id, \"#button/1\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_x\");\n  _._scope($scope0_id, {\n    x\n  }, \"__tests__/template.marko\", 0, {\n    x: \"2:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-conditional/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  Hello 1\n</div>\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Hello 2\n</div>\n<button>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Hello 3\n</div>\n<button>\n  3\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Hello 4\n</div>\n<button>\n  4\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-conditional/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <!--M_[-->\n    <div>\n      Hello \n      <!---->\n      1\n      <!--M_*3 #text/0-->\n    </div>\n    <!--M_]1 #text/0 2-->\n    <button>\n      1\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          x: 1\n        },\n        {\n          _: _.a,\n          \"#childScope/0\": _.b = {}\n        }, _.b]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/#comment0 before html\nINSERT html/body/#comment0\nINSERT html/body/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <!---->\n    <div>\n      Hello 2\n    </div>\n    <!---->\n    <!--M_]1 #text/0 2-->\n    <button>\n      2\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          x: 1\n        },\n        {\n          _: _.a,\n          \"#childScope/0\": _.b = {}\n        }, _.b]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#comment0, html/body/div, html/body/#comment1\nREMOVE #comment after html/body/#comment1\nREMOVE div after html/body/#comment1\nREMOVE #text after html/body/#comment1\nUPDATE html/body/button/#text \"1\" => \"2\"\nUPDATE html/body/div/#text1 \"\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <!---->\n    <div>\n      Hello 3\n    </div>\n    <!---->\n    <!--M_]1 #text/0 2-->\n    <button>\n      3\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          x: 1\n        },\n        {\n          _: _.a,\n          \"#childScope/0\": _.b = {}\n        }, _.b]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"2\" => \"3\"\nUPDATE html/body/div/#text1 \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <!---->\n    <div>\n      Hello 4\n    </div>\n    <!---->\n    <!--M_]1 #text/0 2-->\n    <button>\n      4\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          x: 1\n        },\n        {\n          _: _.a,\n          \"#childScope/0\": _.b = {}\n        }, _.b]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"3\" => \"4\"\nUPDATE html/body/div/#text1 \"3\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-conditional/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  Hello 1\n</div>\n<button>\n  1\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-conditional/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <!--M_[--><div>Hello <!>1<!--M_*3 #text/0--></div><!--M_]1 #text/0 2--><button>1<!--M_*1 #text/2--></button><!--M_*1 #button/1--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.a={x:1},{_:_.a,\"#childScope/0\":_.b={}},_.b]),\"__tests__/template.marko_0_x 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<!--M_[-->\n<html>\n  <head />\n  <body>\n    <div>\n      Hello \n      <!---->\n      1\n      <!--M_*3 #text/0-->\n    </div>\n    <!--M_]1 #text/0 2-->\n    <button>\n      1\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          x: 1\n        },\n        {\n          _: _.a,\n          \"#childScope/0\": _.b = {}\n        }, _.b]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT #comment\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text0\nINSERT html/body/div/#comment0\nINSERT html/body/div/#text1\nINSERT html/body/div/#comment1\nINSERT html/body/#comment0\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-conditional/template.marko",
    "content": "<let/show=true>\n<let/x=1>\n\n<define/MyTag|{value}|>\n  <div>Hello ${value}</div>\n</define>\n\n<if=show>\n  <MyTag=x />\n</if>\n\n<button onClick() { x++; show=true }>\n  ${x}\n</button>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-conditional/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-stateful/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$count__script\": \"m\",\n      \"$$count\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-stateful/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n<div>\n  Hello Ryan 0\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n<div>\n  Hello Ryan 1\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n<div>\n  Hello Ryan 2\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n<div>\n  Hello Ryan 3\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-stateful/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n<div>\n  Hello Ryan 0\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT button, div, #comment\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n<div>\n  Hello Ryan 1\n</div>\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text \"0\" => \"1\"\nUPDATE div/#text3 \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n<div>\n  Hello Ryan 2\n</div>\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text \"1\" => \"2\"\nUPDATE div/#text3 \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n<div>\n  Hello Ryan 3\n</div>\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text \"2\" => \"3\"\nUPDATE div/#text3 \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-stateful/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 147 (min) 108 (brotli)\nconst $count__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $count($scope, $scope.d + 1);\n    }),\n  ),\n  $count = _._let(3, ($scope) => {\n    (_._text($scope.b, $scope.d),\n      (($scope, count) => {\n        _._text($scope.b, count);\n      })($scope.c, $scope.d),\n      $count__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-stateful/__snapshots__/dom.expected/template.js",
    "content": "const $MyTag_content__walks = /* next(1), over(1), replace, over(2), replace, out(1) */\"Db%c%l\",\n  $MyTag_content__template = \"<div>Hello <!> <!></div>\";\nexport const $template = `<button> </button>${$MyTag_content__template}<!>`;\nexport const $walks = /* get, next(1), get, out(1), <MyTag>, over(1) */` D l/${$MyTag_content__walks}&b`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $MyTag_content__name = ($scope, name) => _._text($scope[\"#text/0\"], name);\nconst $MyTag_content__count = ($scope, count) => _._text($scope[\"#text/1\"], count);\nconst $MyTag_content__$params = ($scope, $params2) => $MyTag_content__$temp($scope, $params2?.[0]);\nconst $MyTag_content__$temp = ($scope, $temp) => {\n  $MyTag_content__name($scope, $temp.name);\n  $MyTag_content__count($scope, $temp.count);\n};\nconst $count__script = _._script(\"__tests__/template.marko_0_count\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $count($scope, $scope.count + 1);\n}));\nconst $count = /* @__PURE__ */_._let(\"count/3\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.count);\n  $MyTag_content__count($scope[\"#childScope/2\"], $scope.count);\n  $count__script($scope);\n});\nexport function $setup($scope) {\n  $MyTag_content__name($scope[\"#childScope/2\"], \"Ryan\");\n  $count($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-stateful/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let count = 0;\n  _._html(`<button>${_._escape(count)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  const MyTag = {\n    content: _._content(\"__tests__/template.marko_1_content\", ({\n      name,\n      count\n    }) => {\n      const $scope1_id = _._scope_id();\n      const $scope1_reason = _._scope_reason();\n      _._html(`<div>Hello ${_._sep(_._serialize_guard($scope1_reason, /* name */1))}${_._escape(name)}${_._el_resume($scope1_id, \"#text/0\", _._serialize_guard($scope1_reason, /* name */1))} ${_._sep(_._serialize_guard($scope1_reason, /* count */2))}${_._escape(count)}${_._el_resume($scope1_id, \"#text/1\", _._serialize_guard($scope1_reason, /* count */2))}</div>`);\n      _._serialize_if($scope1_reason, /* name, count */0) && _._scope($scope1_id, {}, \"__tests__/template.marko\", \"6:2\");\n    })\n  };\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason({\n    /* name, count */0: /* count */1,\n    /* count */2: /* count */1\n  });\n  MyTag.content({\n    name: \"Ryan\",\n    count: count\n  });\n  _._script($scope0_id, \"__tests__/template.marko_0_count\");\n  _._scope($scope0_id, {\n    count,\n    \"#childScope/2\": _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0, {\n    count: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-stateful/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n<div>\n  Hello Ryan 0\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n<div>\n  Hello Ryan 1\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n<div>\n  Hello Ryan 2\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n<div>\n  Hello Ryan 3\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-stateful/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      Hello Ryan \n      <!---->\n      0\n      <!--M_*2 #text/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0,\n        {\n          count: 0,\n          \"#childScope/2\": _.a = {}\n        }, _.a]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      Hello Ryan \n      <!---->\n      1\n      <!--M_*2 #text/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0,\n        {\n          count: 0,\n          \"#childScope/2\": _.a = {}\n        }, _.a]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"0\" => \"1\"\nUPDATE html/body/div/#text1 \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      2\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      Hello Ryan \n      <!---->\n      2\n      <!--M_*2 #text/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0,\n        {\n          count: 0,\n          \"#childScope/2\": _.a = {}\n        }, _.a]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"1\" => \"2\"\nUPDATE html/body/div/#text1 \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      3\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      Hello Ryan \n      <!---->\n      3\n      <!--M_*2 #text/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0,\n        {\n          count: 0,\n          \"#childScope/2\": _.a = {}\n        }, _.a]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"2\" => \"3\"\nUPDATE html/body/div/#text1 \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-stateful/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  0\n</button>\n<div>\n  Hello Ryan 0\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-stateful/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>0<!--M_*1 #text/1--></button><!--M_*1 #button/0--><div>Hello Ryan <!>0<!--M_*2 #text/1--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,{count:0,\"#childScope/2\":_.a={}},_.a]),\"__tests__/template.marko_0_count 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      Hello Ryan \n      <!---->\n      0\n      <!--M_*2 #text/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0,\n        {\n          count: 0,\n          \"#childScope/2\": _.a = {}\n        }, _.a]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment\nINSERT html/body/div\nINSERT html/body/div/#text0\nINSERT html/body/div/#comment0\nINSERT html/body/div/#text1\nINSERT html/body/div/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-stateful/template.marko",
    "content": "<let/count=0>\n<button onClick() { count++; }>\n  ${count}\n</button>\n\n<define/MyTag|{name, count}|>\n  <div>Hello ${name} ${count}</div>\n</define>\n\n<MyTag name=\"Ryan\" count=count />"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/define-tag-render-stateful/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-and-member-intersection/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-and-member-intersection/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"a\":\"foo\",\"b\":\"bar\"}`\n\n```html\n<div>\n  foofoobar\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-and-member-intersection/__snapshots__/csr.expected.md",
    "content": "# Render `{\"a\":\"foo\",\"b\":\"bar\"}`\n\n```html\n<div>\n  foofoobar\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-and-member-intersection/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-and-member-intersection/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div><!><!></div>\";\nexport const $walks = /* next(1), replace, over(1), replace, out(1) */\"D%b%l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $a__OR__b = /* @__PURE__ */_._or(6, $scope => _._text($scope[\"#text/1\"], $scope.input_a + $scope.b));\nexport const $input_a = /* @__PURE__ */_._const(\"input_a\", $scope => {\n  _._text($scope[\"#text/0\"], $scope.input_a);\n  $a__OR__b($scope);\n});\nexport const $b = /* @__PURE__ */_._const(\"b\", $a__OR__b);\nexport const $input = ($scope, input) => {\n  $input_a($scope, input.a);\n  $b($scope, input.b);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-and-member-intersection/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    a,\n    b\n  } = input;\n  _._html(`<div>${_._escape(input.a)}${_._el_resume($scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.a */1))}${_._sep(_._serialize_guard($scope0_reason, /* input.a, input.b */0))}${_._escape(a + b)}${_._el_resume($scope0_id, \"#text/1\", _._serialize_guard($scope0_reason, /* input.a, input.b */0))}</div>`);\n  _._serialize_if($scope0_reason, /* input.a, input.b */0) && _._scope($scope0_id, {\n    input_a: _._serialize_if($scope0_reason, /* input.b */2) && input.a,\n    b: _._serialize_if($scope0_reason, /* input.a */1) && b\n  }, \"__tests__/template.marko\", 0, {\n    input_a: [\"input.a\"],\n    b: \"1:12\"\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-and-member-intersection/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"a\":\"foo\",\"b\":\"bar\"}`\n\n```html\n<div>\n  foofoobar\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-and-member-intersection/__snapshots__/resume.expected.md",
    "content": "# Render `{\"a\":\"foo\",\"b\":\"bar\"}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      foofoobar\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-and-member-intersection/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  foofoobar\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-and-member-intersection/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>foofoobar</div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      foofoobar\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-and-member-intersection/template.marko",
    "content": "const/{ a, b }=input\n\ndiv\n  -- ${input.a}\n  -- ${a + b}\n\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-and-member-intersection/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [{ a: \"foo\", b: \"bar\" }],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-and-reference-input/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"r\",\n      \"$init\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-and-reference-input/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  1\n</div>\n<div>\n  content\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-and-reference-input/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  1\n</div>\n<div>\n  content\n</div>\n```\n\n# Mutations\n```\nINSERT div0, div1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-and-reference-input/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<div><!></div><div> </div>\";\nexport const $walks = /* get, next(1), replace, out(1), next(1), get, out(1) */\" D%lD l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $rest__script = _._script(\"__tests__/tags/child.marko_0_rest\", $scope => _._attrs_script($scope, \"#div/0\"));\nconst $rest = /* @__PURE__ */_._const(\"rest\", $scope => {\n  _._attrs($scope, \"#div/0\", $scope.rest);\n  $rest__script($scope);\n});\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/1\");\nconst $content = ($scope, content) => $dynamicTag($scope, content);\nexport const $input = ($scope, input) => {\n  _._text($scope[\"#text/2\"], Object.keys(input));\n  (({\n    content,\n    ...rest\n  }) => $rest($scope, rest))(input);\n  $content($scope, input.content);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-and-reference-input/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 46 (min) 50 (brotli)\n(_._script(\"a0\", ($scope) => _._attrs_script($scope, \"a\")), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-and-reference-input/__snapshots__/dom.expected/template.js",
    "content": "export const $template = _child_template;\nexport const $walks = /* <child> */`/${_child_walks}&`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _child, $input as _child_input, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nconst $child_content__value = /* @__PURE__ */_._closure_get(\"value\", $scope => _._text($scope[\"#text/0\"], $scope._.value));\nconst $child_content__setup = $child_content__value;\nconst $child_content = /* @__PURE__ */_._content(\"__tests__/template.marko_1_content\", \" \", /* get, over(1) */\" b\", $child_content__setup);\nconst $value = /* @__PURE__ */_._const(\"value\");\nexport function $setup($scope) {\n  _child($scope[\"#childScope/0\"]);\n  _child_input($scope[\"#childScope/0\"], {\n    content: $child_content($scope)\n  });\n  $value($scope, 1);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-and-reference-input/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    content,\n    ...rest\n  } = input;\n  _._html(`<div${_._attrs(rest, \"#div/0\", $scope0_id, \"div\")}>`);\n  _._dynamic_tag($scope0_id, \"#text/1\", content, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.content */1));\n  _._html(`</div>${_._el_resume($scope0_id, \"#div/0\")}<div>${_._escape(Object.keys(input))}${_._el_resume($scope0_id, \"#text/2\", _._serialize_guard($scope0_reason, /* input */0))}</div>`);\n  _._script($scope0_id, \"__tests__/tags/child.marko_0_rest\");\n  _._scope($scope0_id, {\n    rest\n  }, \"__tests__/tags/child.marko\", 0, {\n    rest: \"1:22\"\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-and-reference-input/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _child from \"./tags/child.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const value = 1;\n  _child({\n    content: _._content(\"__tests__/template.marko_1_content\", () => {\n      _._scope_reason();\n      const $scope1_id = _._scope_id();\n      _._html(_._escape(value));\n      _._resume_branch($scope1_id);\n    })\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-and-reference-input/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  1\n</div>\n<div>\n  content\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-and-reference-input/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      1\n    </div>\n    <!--M_*2 #div/0-->\n    <div>\n      content\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 1,\n        {\n          rest:\n          {}\n        }]),\n        \"__tests__/tags/child.marko_0_rest 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-and-reference-input/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  1\n</div>\n<div>\n  content\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-and-reference-input/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>1</div><!--M_*2 #div/0--><div>content</div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,1,{rest:{}}]),\"__tests__/tags/child.marko_0_rest 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      1\n    </div>\n    <!--M_*2 #div/0-->\n    <div>\n      content\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 1,\n        {\n          rest:\n          {}\n        }]),\n        \"__tests__/tags/child.marko_0_rest 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/div0/#text\nINSERT html/body/#comment\nINSERT html/body/div1\nINSERT html/body/div1/#text\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-and-reference-input/tags/child.marko",
    "content": "<const/{ content, ...rest }=input>\n<div ...rest>\n  <${content}/>\n</div>\n<div>${Object.keys(input)}</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-and-reference-input/template.marko",
    "content": "<const/value=1>\n<child>\n  ${value}\n</child>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-and-reference-unprovided-input/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"r\",\n      \"$init\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-and-reference-unprovided-input/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  class=\"foo\"\n>\n  1\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-and-reference-unprovided-input/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div\n  class=\"foo\"\n>\n  1\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-and-reference-unprovided-input/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<div><!></div>\";\nexport const $walks = /* get, next(1), replace, out(1) */\" D%l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $input_class = ($scope, input_class) => _._attr_class($scope[\"#div/0\"], [input_class, \"foo\"]);\nconst $rest__script = _._script(\"__tests__/tags/child.marko_0_rest\", $scope => _._attrs_script($scope, \"#div/0\"));\nconst $rest = /* @__PURE__ */_._const(\"rest\", $scope => {\n  _._attrs_partial($scope, \"#div/0\", $scope.rest, {\n    class: 1\n  });\n  $rest__script($scope);\n});\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/1\");\nconst $content = ($scope, content) => $dynamicTag($scope, content);\nexport const $input = ($scope, input) => {\n  (({\n    content,\n    ...rest\n  }) => $rest($scope, rest))(input);\n  $input_class($scope, input.class);\n  $content($scope, input.content);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-and-reference-unprovided-input/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 46 (min) 50 (brotli)\n(_._script(\"a0\", ($scope) => _._attrs_script($scope, \"a\")), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-and-reference-unprovided-input/__snapshots__/dom.expected/template.js",
    "content": "export const $template = _child_template;\nexport const $walks = /* <child> */`/${_child_walks}&`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _child, $input as _child_input, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nconst $child_content__value = /* @__PURE__ */_._closure_get(\"value\", $scope => _._text($scope[\"#text/0\"], $scope._.value));\nconst $child_content__setup = $child_content__value;\nconst $child_content = /* @__PURE__ */_._content(\"__tests__/template.marko_1_content\", \" \", /* get, over(1) */\" b\", $child_content__setup);\nconst $value = /* @__PURE__ */_._const(\"value\");\nexport function $setup($scope) {\n  _child($scope[\"#childScope/0\"]);\n  _child_input($scope[\"#childScope/0\"], {\n    content: $child_content($scope)\n  });\n  $value($scope, 1);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-and-reference-unprovided-input/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    content,\n    ...rest\n  } = input;\n  _._html(`<div${_._attr_class([input.class, \"foo\"])}${_._attrs_partial(rest, {\n    class: 1\n  }, \"#div/0\", $scope0_id, \"div\")}>`);\n  _._dynamic_tag($scope0_id, \"#text/1\", content, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.content */0));\n  _._html(`</div>${_._el_resume($scope0_id, \"#div/0\")}`);\n  _._script($scope0_id, \"__tests__/tags/child.marko_0_rest\");\n  _._scope($scope0_id, {\n    rest\n  }, \"__tests__/tags/child.marko\", 0, {\n    rest: \"1:22\"\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-and-reference-unprovided-input/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _child from \"./tags/child.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const value = 1;\n  _child({\n    content: _._content(\"__tests__/template.marko_1_content\", () => {\n      _._scope_reason();\n      const $scope1_id = _._scope_id();\n      _._html(_._escape(value));\n      _._resume_branch($scope1_id);\n    })\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-and-reference-unprovided-input/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  class=\"foo\"\n>\n  1\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-and-reference-unprovided-input/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div\n      class=\"foo\"\n    >\n      1\n    </div>\n    <!--M_*2 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 1,\n        {\n          rest:\n          {}\n        }]),\n        \"__tests__/tags/child.marko_0_rest 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-and-reference-unprovided-input/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div\n  class=\"foo\"\n>\n  1\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-and-reference-unprovided-input/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div class=foo>1</div><!--M_*2 #div/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,1,{rest:{}}]),\"__tests__/tags/child.marko_0_rest 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div\n      class=\"foo\"\n    >\n      1\n    </div>\n    <!--M_*2 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 1,\n        {\n          rest:\n          {}\n        }]),\n        \"__tests__/tags/child.marko_0_rest 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-and-reference-unprovided-input/tags/child.marko",
    "content": "<const/{ content, ...rest }=input>\n<div ...rest class=[input.class, \"foo\"]>\n  <${content}/>\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-and-reference-unprovided-input/template.marko",
    "content": "<const/value=1>\n<child>\n  ${value}\n</child>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-input/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"r\",\n      \"$init\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-input/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  1\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-input/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  1\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-input/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<div><!></div>\";\nexport const $walks = /* get, next(1), replace, out(1) */\" D%l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $rest__script = _._script(\"__tests__/tags/child.marko_0_rest\", $scope => _._attrs_script($scope, \"#div/0\"));\nexport const $rest = /* @__PURE__ */_._const(\"rest\", $scope => {\n  _._attrs($scope, \"#div/0\", $scope.rest);\n  $rest__script($scope);\n});\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/1\");\nexport const $content = ($scope, content) => $dynamicTag($scope, content);\nexport const $input = ($scope, input) => {\n  (({\n    content,\n    ...rest\n  }) => $rest($scope, rest))(input);\n  $content($scope, input.content);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-input/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 46 (min) 50 (brotli)\n(_._script(\"a0\", ($scope) => _._attrs_script($scope, \"a\")), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-input/__snapshots__/dom.expected/template.js",
    "content": "export const $template = _child_template;\nexport const $walks = /* <child> */`/${_child_walks}&`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _child, $content as _child_input_content, $rest as _child_input_$rest, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nconst $child_content__value = /* @__PURE__ */_._closure_get(\"value\", $scope => _._text($scope[\"#text/0\"], $scope._.value));\nconst $child_content__setup = $child_content__value;\nconst $child_content = /* @__PURE__ */_._content(\"__tests__/template.marko_1_content\", \" \", /* get, over(1) */\" b\", $child_content__setup);\nconst $value = /* @__PURE__ */_._const(\"value\");\nexport function $setup($scope) {\n  _child($scope[\"#childScope/0\"]);\n  _child_input_content($scope[\"#childScope/0\"], $child_content($scope));\n  _child_input_$rest($scope[\"#childScope/0\"], {});\n  $value($scope, 1);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-input/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    content,\n    ...rest\n  } = input;\n  _._html(`<div${_._attrs(rest, \"#div/0\", $scope0_id, \"div\")}>`);\n  _._dynamic_tag($scope0_id, \"#text/1\", content, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.content */0));\n  _._html(`</div>${_._el_resume($scope0_id, \"#div/0\")}`);\n  _._script($scope0_id, \"__tests__/tags/child.marko_0_rest\");\n  _._scope($scope0_id, {\n    rest\n  }, \"__tests__/tags/child.marko\", 0, {\n    rest: \"1:22\"\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-input/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _child from \"./tags/child.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const value = 1;\n  _child({\n    content: _._content(\"__tests__/template.marko_1_content\", () => {\n      _._scope_reason();\n      const $scope1_id = _._scope_id();\n      _._html(_._escape(value));\n      _._resume_branch($scope1_id);\n    })\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-input/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  1\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-input/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      1\n    </div>\n    <!--M_*2 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 1,\n        {\n          rest:\n          {}\n        }]),\n        \"__tests__/tags/child.marko_0_rest 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-input/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  1\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-input/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>1</div><!--M_*2 #div/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,1,{rest:{}}]),\"__tests__/tags/child.marko_0_rest 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      1\n    </div>\n    <!--M_*2 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 1,\n        {\n          rest:\n          {}\n        }]),\n        \"__tests__/tags/child.marko_0_rest 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-input/tags/child.marko",
    "content": "<const/{ content, ...rest }=input>\n<div ...rest>\n  <${content}/>\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-input/template.marko",
    "content": "<const/value=1>\n<child>\n  ${value}\n</child>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-input-with-assignment/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"r\",\n      \"$$child_content__value\": \"o\",\n      \"$$child_content__setup\": \"e\",\n      \"$$value__closure\": \"s\",\n      \"$$value\": \"_\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-input-with-assignment/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  1\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div>\n  2\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-input-with-assignment/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  1\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render ASYNC\n```html\n<div>\n  2\n</div>\n```\n\n# Mutations\n```\nUPDATE div/#text \"1\" => \"2\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-input-with-assignment/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* get, over(1) */\" b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $valueChange2__script = _._script(\"__tests__/tags/child.marko_0_$valueChange\", $scope => $scope.$valueChange(2));\nexport const $valueChange2 = /* @__PURE__ */_._const(\"$valueChange\", $valueChange2__script);\nconst $rest__script = _._script(\"__tests__/tags/child.marko_0_rest\", $scope => _._attrs_script($scope, \"#div/0\"));\nexport const $rest = /* @__PURE__ */_._const(\"rest\", $scope => {\n  _._attrs_content($scope, \"#div/0\", $scope.rest);\n  $rest__script($scope);\n});\nexport const $input = ($scope, input) => {\n  (({\n    value,\n    valueChange,\n    ...rest\n  }) => $rest($scope, rest))(input);\n  $valueChange2($scope, input.valueChange);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-input-with-assignment/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 243 (min) 151 (brotli)\n(_._script(\"a0\", ($scope) => $scope.d(2)),\n  _._script(\"a1\", ($scope) => _._attrs_script($scope, \"a\")));\nconst $child_content__value = _._closure_get(1, ($scope) =>\n    _._text($scope.a, $scope._.b),\n  ),\n  $child_content__setup = $child_content__value;\n_._content_resume(\"b1\", \" \", \" b\", $child_content__setup);\nconst $value__closure = _._closure($child_content__value),\n  $value = _._let(1, $value__closure);\n(_._resume(\"b0\", function ($scope) {\n  return (_new_value) => {\n    $value($scope, _new_value);\n  };\n}),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-input-with-assignment/__snapshots__/dom.expected/template.js",
    "content": "export const $template = _child_template;\nexport const $walks = /* <child> */`/${_child_walks}&`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _child, $valueChange2 as _child_input_valueChange, $rest as _child_input_$rest, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nconst $child_content__value = /* @__PURE__ */_._closure_get(\"value\", $scope => _._text($scope[\"#text/0\"], $scope._.value));\nconst $child_content__setup = $child_content__value;\nconst $child_content = _._content_resume(\"__tests__/template.marko_1_content\", \" \", /* get, over(1) */\" b\", $child_content__setup);\nconst $value__closure = /* @__PURE__ */_._closure($child_content__value);\nconst $value = /* @__PURE__ */_._let(\"value/1\", $value__closure);\nexport function $setup($scope) {\n  _child($scope[\"#childScope/0\"]);\n  _child_input_valueChange($scope[\"#childScope/0\"], $valueChange($scope));\n  _child_input_$rest($scope[\"#childScope/0\"], {\n    content: $child_content($scope)\n  });\n  $value($scope, 1);\n}\nfunction $valueChange($scope) {\n  return _new_value => {\n    $value($scope, _new_value);\n  };\n}\n_._resume(\"__tests__/template.marko_0/valueChange\", $valueChange);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-input-with-assignment/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    valueChange: $valueChange,\n    value,\n    ...rest\n  } = input;\n  _._html(\"<div\");\n  _._attrs_content(rest, \"#div/0\", $scope0_id, \"div\");\n  _._html(`</div>${_._el_resume($scope0_id, \"#div/0\")}`);\n  _._script($scope0_id, \"__tests__/tags/child.marko_0_rest\");\n  _._script($scope0_id, \"__tests__/tags/child.marko_0_$valueChange\");\n  _._scope($scope0_id, {\n    $valueChange,\n    rest\n  }, \"__tests__/tags/child.marko\", 0, {\n    $valueChange: \"3:11\",\n    rest: \"1:19\"\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-input-with-assignment/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _child from \"./tags/child.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $value__closures = new Set();\n  let value = 1;\n  _child({\n    valueChange: _._resume(_new_value => {\n      value = _new_value;\n    }, \"__tests__/template.marko_0/valueChange\", $scope0_id),\n    content: _._content_resume(\"__tests__/template.marko_1_content\", () => {\n      _._scope_reason();\n      const $scope1_id = _._scope_id();\n      _._html(`${_._escape(value)}${_._el_resume($scope1_id, \"#text/0\")}`);\n      _._subscribe($value__closures, _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id),\n        \"ClosureSignalIndex:value\": 0\n      }, \"__tests__/template.marko\", \"3:1\"));\n      _._resume_branch($scope1_id);\n    }, $scope0_id)\n  });\n  _._scope($scope0_id, {\n    value,\n    \"ClosureScopes:value\": $value__closures\n  }, \"__tests__/template.marko\", 0, {\n    value: \"1:5\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-input-with-assignment/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  1\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div>\n  2\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-input-with-assignment/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      1\n      <!--M_*3 #text/0-->\n    </div>\n    <!--M_*2 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.a = {\n          value: 1,\n          \"ClosureScopes:value\": _.f = new Set\n        }, _.b = {\n          \"BranchScopes:#div/0\": _.d = {\n            _: _.a,\n            \"ClosureSignalIndex:value\": 0\n          },\n          \"ConditionalRenderer:#div/0\": \"__tests__/template.marko_1_content\",\n          rest: _.c = {}\n        }, _.d], _.b.$valueChange = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.c.content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.a), (_.f).add(_.d), _.e),\n        \"__tests__/tags/child.marko_0_rest 2 __tests__/tags/child.marko_0_$valueChange 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render ASYNC\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      2\n      <!--M_*3 #text/0-->\n    </div>\n    <!--M_*2 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.a = {\n          value: 1,\n          \"ClosureScopes:value\": _.f = new Set\n        }, _.b = {\n          \"BranchScopes:#div/0\": _.d = {\n            _: _.a,\n            \"ClosureSignalIndex:value\": 0\n          },\n          \"ConditionalRenderer:#div/0\": \"__tests__/template.marko_1_content\",\n          rest: _.c = {}\n        }, _.d], _.b.$valueChange = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.c.content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.a), (_.f).add(_.d), _.e),\n        \"__tests__/tags/child.marko_0_rest 2 __tests__/tags/child.marko_0_$valueChange 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/#text \"1\" => \"2\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-input-with-assignment/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  1\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-input-with-assignment/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>1<!--M_*3 #text/0--></div><!--M_*2 #div/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.e=[0,_.a={value:1,\"ClosureScopes:value\":_.f=new Set},_.b={\"BranchScopes:#div/0\":_.d={_:_.a,\"ClosureSignalIndex:value\":0},\"ConditionalRenderer:#div/0\":\"__tests__/template.marko_1_content\",rest:_.c={}},_.d],_.b.$valueChange=_._[\"__tests__/template.marko_0/valueChange\"](_.a),_.c.content=_._[\"__tests__/template.marko_1_content\"](_.a),(_.f).add(_.d),_.e),\"__tests__/tags/child.marko_0_rest 2 __tests__/tags/child.marko_0_$valueChange 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      1\n      <!--M_*3 #text/0-->\n    </div>\n    <!--M_*2 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.a = {\n          value: 1,\n          \"ClosureScopes:value\": _.f = new Set\n        }, _.b = {\n          \"BranchScopes:#div/0\": _.d = {\n            _: _.a,\n            \"ClosureSignalIndex:value\": 0\n          },\n          \"ConditionalRenderer:#div/0\": \"__tests__/template.marko_1_content\",\n          rest: _.c = {}\n        }, _.d], _.b.$valueChange = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.c.content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.a), (_.f).add(_.d), _.e),\n        \"__tests__/tags/child.marko_0_rest 2 __tests__/tags/child.marko_0_$valueChange 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/div/#comment\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-input-with-assignment/tags/child.marko",
    "content": "const/{ value, ...rest }=input\n\nscript -- value = 2\n\ndiv ...rest\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-input-with-assignment/template.marko",
    "content": "let/value=1\n\nchild value:=value -- ${value}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-input-with-assignment/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{}, wait],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-stateful-upstream-alias/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"r\",\n      \"$$list$1\": \"n\",\n      \"$$_return2\": \"o\",\n      \"$$_return\": \"e\",\n      \"$$for_content__$params\": \"i\",\n      \"$$for\": \"c\",\n      \"$$list\": \"s\",\n      \"$$clear__script\": \"m\",\n      \"$$clear\": \"a\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-stateful-upstream-alias/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Clear\n</button>\n<ul>\n  <li>\n    Learn Marko\n  </li>\n  <li>\n    Make a Website\n  </li>\n</ul>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Clear\n</button>\n<ul />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-stateful-upstream-alias/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  Clear\n</button>\n<ul>\n  <li>\n    Learn Marko\n  </li>\n  <li>\n    Make a Website\n  </li>\n</ul>\n```\n\n# Mutations\n```\nINSERT button, ul\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Clear\n</button>\n<ul />\n```\n\n# Mutations\n```\nREMOVE li, li in ul\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-stateful-upstream-alias/__snapshots__/dom.expected/tags/store.js",
    "content": "export const $template = \"\";\nexport const $walks = \"\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $list = /* @__PURE__ */_._let(\"list/3\", $scope => _._return($scope, {\n  list: $scope.list,\n  listChange: $_return($scope),\n  clear: $_return2($scope)\n}));\nexport const $input_value = ($scope, input_value) => $list($scope, input_value);\nexport const $input = ($scope, input) => $input_value($scope, input.value);\nfunction $_return2($scope) {\n  return function () {\n    $list($scope, []);\n  };\n}\nfunction $_return($scope) {\n  return function (v) {\n    $list($scope, v);\n  };\n}\n_._resume(\"__tests__/tags/store.marko_0/_return2\", $_return2);\n_._resume(\"__tests__/tags/store.marko_0/_return\", $_return);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/store.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-stateful-upstream-alias/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 417 (min) 244 (brotli)\nconst $list$1 = _._let(3, ($scope) =>\n  _._return($scope, {\n    list: $scope.d,\n    listChange: $_return($scope),\n    clear: $_return2($scope),\n  }),\n);\nfunction $_return2($scope) {\n  return function () {\n    $list$1($scope, []);\n  };\n}\nfunction $_return($scope) {\n  return function (v) {\n    $list$1($scope, v);\n  };\n}\n(_._resume(\"a1\", $_return2), _._resume(\"a0\", $_return));\nconst $for_content__$params = ($scope, $params2) =>\n  (($scope, item) => _._text($scope.a, item))($scope, $params2[0]);\n_._var_resume(\"b0\", ($scope, store) => {\n  ($list($scope, store.list), $clear($scope, store.clear));\n});\nconst $for = _._for_of(3, \"<li> </li>\", \"D l\", 0, $for_content__$params),\n  $list = ($scope, list) => $for($scope, [list]),\n  $clear__script = _._script(\"b1\", ($scope) =>\n    _._on($scope.c, \"click\", $scope.g),\n  ),\n  $clear = _._const(6, $clear__script);\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-stateful-upstream-alias/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `${_store_template}<button>Clear</button><ul></ul>`;\nexport const $walks = /* <store/var>, get, over(1), get, over(1) */`0${_store_walks}& b b`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _store, $input_value as _store_input_value, $template as _store_template, $walks as _store_walks } from \"./tags/store.marko\";\nconst $for_content__item = ($scope, item) => _._text($scope[\"#text/0\"], item);\nconst $for_content__$params = ($scope, $params2) => $for_content__item($scope, $params2[0]);\nconst $store = _._var_resume(\"__tests__/template.marko_0_store/var\", ($scope, store) => {\n  $list($scope, store.list);\n  $clear($scope, store.clear);\n});\nconst $for = /* @__PURE__ */_._for_of(\"#ul/3\", \"<li> </li>\", /* next(1), get, out(1) */\"D l\", 0, $for_content__$params);\nconst $list = ($scope, list) => $for($scope, [list]);\nconst $clear__script = _._script(\"__tests__/template.marko_0_clear\", $scope => _._on($scope[\"#button/2\"], \"click\", $scope.clear));\nconst $clear = /* @__PURE__ */_._const(\"clear\", $clear__script);\nexport function $setup($scope) {\n  _._var($scope, \"#childScope/0\", $store);\n  _store($scope[\"#childScope/0\"]);\n  _store_input_value($scope[\"#childScope/0\"], [\"Learn Marko\", \"Make a Website\"]);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-stateful-upstream-alias/__snapshots__/html.expected/tags/store.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/store.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let list = input.value;\n  const $return = {\n    list,\n    listChange: _._resume(function (v) {\n      list = v;\n    }, \"__tests__/tags/store.marko_0/_return\", $scope0_id),\n    clear: _._resume(function () {\n      list = [];\n    }, \"__tests__/tags/store.marko_0/_return2\", $scope0_id)\n  };\n  _._resume_branch($scope0_id);\n  return $return;\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-stateful-upstream-alias/__snapshots__/html.expected/template.js",
    "content": "import _store from \"./tags/store.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $childScope = _._peek_scope_id();\n  let store = _store({\n    value: [\"Learn Marko\", \"Make a Website\"]\n  });\n  _._var($scope0_id, \"#scopeOffset/1\", $childScope, \"__tests__/template.marko_0_store/var\");\n  const {\n    list,\n    clear\n  } = store;\n  _._html(`<button>Clear</button>${_._el_resume($scope0_id, \"#button/2\")}<ul>`);\n  _._for_of(list, item => {\n    const $scope1_id = _._scope_id();\n    _._html(`<li>${_._escape(item)}${_._el_resume($scope1_id, \"#text/0\")}</li>`);\n    _._scope($scope1_id, {}, \"__tests__/template.marko\", \"10:4\");\n  }, 0, $scope0_id, \"#ul/3\", /* store */1, /* store */1, /* store */1, \"</ul>\", 1);\n  _._script($scope0_id, \"__tests__/template.marko_0_clear\");\n  _._scope($scope0_id, {\n    clear,\n    \"#childScope/0\": _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0, {\n    clear: \"6:16\"\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-stateful-upstream-alias/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Clear\n</button>\n<ul>\n  <li>\n    Learn Marko\n  </li>\n  <li>\n    Make a Website\n  </li>\n</ul>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Clear\n</button>\n<ul />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-stateful-upstream-alias/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Clear\n    </button>\n    <!--M_*1 #button/2-->\n    <ul>\n      <li>\n        Learn Marko\n        <!--M_*4 #text/0-->\n      </li>\n      <li>\n        Make a Website\n        <!--M_*5 #text/0-->\n      </li>\n      <!--M_}1 #ul/3 5 4-->\n    </ul>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"#scopeOffset/1\": 3,\n          clear: _.b = {},\n          \"#childScope/0\": _.b\n        }, _.b], _.a.clear = _._[\n          \"__tests__/tags/store.marko_0/_return2\"\n          ](_.b), _.b[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_store/var\"\n          ](_.a), _.c),\n        \"__tests__/template.marko_0_clear 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Clear\n    </button>\n    <!--M_*1 #button/2-->\n    <ul />\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"#scopeOffset/1\": 3,\n          clear: _.b = {},\n          \"#childScope/0\": _.b\n        }, _.b], _.a.clear = _._[\n          \"__tests__/tags/store.marko_0/_return2\"\n          ](_.b), _.b[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_store/var\"\n          ](_.a), _.c),\n        \"__tests__/template.marko_0_clear 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE li, li, #comment in html/body/ul\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-stateful-upstream-alias/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  Clear\n</button>\n<ul>\n  <li>\n    Learn Marko\n  </li>\n  <li>\n    Make a Website\n  </li>\n</ul>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-stateful-upstream-alias/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>Clear</button><!--M_*1 #button/2--><ul><li>Learn Marko<!--M_*4 #text/0--></li><li>Make a Website<!--M_*5 #text/0--></li><!--M_}1 #ul/3 5 4--></ul><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.a={\"#scopeOffset/1\":3,clear:_.b={},\"#childScope/0\":_.b},_.b],_.a.clear=_._[\"__tests__/tags/store.marko_0/_return2\"](_.b),_.b[\"#TagVariable\"]=_._[\"__tests__/template.marko_0_store/var\"](_.a),_.c),\"__tests__/template.marko_0_clear 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Clear\n    </button>\n    <!--M_*1 #button/2-->\n    <ul>\n      <li>\n        Learn Marko\n        <!--M_*4 #text/0-->\n      </li>\n      <li>\n        Make a Website\n        <!--M_*5 #text/0-->\n      </li>\n      <!--M_}1 #ul/3 5 4-->\n    </ul>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"#scopeOffset/1\": 3,\n          clear: _.b = {},\n          \"#childScope/0\": _.b\n        }, _.b], _.a.clear = _._[\n          \"__tests__/tags/store.marko_0/_return2\"\n          ](_.b), _.b[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_store/var\"\n          ](_.a), _.c),\n        \"__tests__/template.marko_0_clear 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment\nINSERT html/body/ul\nINSERT html/body/ul/li0\nINSERT html/body/ul/li0/#text\nINSERT html/body/ul/li0/#comment\nINSERT html/body/ul/li1\nINSERT html/body/ul/li1/#text\nINSERT html/body/ul/li1/#comment\nINSERT html/body/ul/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-stateful-upstream-alias/tags/store.marko",
    "content": "<let/list=input.value>\n<return={\n  list,\n  listChange(v) { list = v },\n  clear() { list = [] }\n}>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-stateful-upstream-alias/template.marko",
    "content": "<store/store=[\n  \"Learn Marko\",\n  \"Make a Website\",\n]/>\n\n<const/{ list, clear }=store>\n\n<button onClick=clear>Clear</>\n<ul>\n  <for|item| of=list>\n    <li>\n      ${item}\n    </li>\n  </for>\n</ul>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/destructure-stateful-upstream-alias/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/doctype/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><html><head><title>Title of the document</title></head><body>The content of the document......</body></html>\";\nexport const $walks = /* over(2) */\"c\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/doctype/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<!DOCTYPE html><html><head><title>Title of the document</title></head><body>The content of the document......\"), _._trailers(\"</body></html>\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/doctype/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\nThe content of the document......\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/doctype/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <!DOCTYPE html><html><head><title>Title of the document</title></head><body>The content of the document......</body></html>\n```\n\n# Render End\n```html\nDocumentType {}\n<html>\n  <head>\n    <title>\n      Title of the document\n    </title>\n  </head>\n  <body>\n    The content of the document......\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html\nINSERT html/head\nINSERT html/head/title\nINSERT html/head/title/#text\nINSERT html/body\nINSERT html/body/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/doctype/template.marko",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n  <title>Title of the document</title>\n</head>\n\n<body>\n  The content of the document......\n</body>\n\n</html>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/doctype/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  skip_csr: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dollar-global-client/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"a\",\n      \"$$if_content2__setup\": \"n\",\n      \"$$if_content__setup\": \"o\",\n      \"$$if\": \"s\",\n      \"$$if2\": \"i\",\n      \"$$show__script\": \"m\",\n      \"$$show\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dollar-global-client/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"$global\":{\"x\":1,\"serializedGlobals\":[\"x\"]}}`\n\n```html\n<div>\n  <span\n    class=\"hidden\"\n  >\n    1\n  </span>\n  <button>\n    Toggle\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <span>\n    1\n  </span>\n  <button>\n    Toggle\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <span\n    class=\"hidden\"\n  >\n    1\n  </span>\n  <button>\n    Toggle\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <span>\n    1\n  </span>\n  <button>\n    Toggle\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dollar-global-client/__snapshots__/csr.expected.md",
    "content": "# Render `{\"$global\":{\"x\":1,\"serializedGlobals\":[\"x\"]}}`\n\n```html\n<div>\n  <span\n    class=\"hidden\"\n  >\n    1\n  </span>\n  <button>\n    Toggle\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <span>\n    1\n  </span>\n  <button>\n    Toggle\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT div/span\nREMOVE #text after div/span\nINSERT div/#text\nREMOVE span after div/#text\nUPDATE div/span/#text \" \" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <span\n    class=\"hidden\"\n  >\n    1\n  </span>\n  <button>\n    Toggle\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT div/#text\nREMOVE span after div/#text\nINSERT div/span\nREMOVE #text after div/span\nUPDATE div/span/#text \" \" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <span>\n    1\n  </span>\n  <button>\n    Toggle\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT div/span\nREMOVE #text after div/span\nINSERT div/#text\nREMOVE span after div/#text\nUPDATE div/span/#text \" \" => \"1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dollar-global-client/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 253 (min) 161 (brotli)\nconst $if_content2__setup = ($scope) => _._text($scope.a, $scope.$.x),\n  $if_content__setup = ($scope) => _._text($scope.a, $scope.$.x),\n  $if = _._if(0, \"<span> </span>\", \"D l\", $if_content__setup),\n  $if2 = _._if(1, \"<span class=hidden> </span>\", \"D l\", $if_content2__setup),\n  $show__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.c, \"click\", function () {\n      $show($scope, !$scope.d);\n    }),\n  ),\n  $show = _._let(3, ($scope) => {\n    ($if($scope, $scope.d ? 0 : 1),\n      $if2($scope, $scope.d ? 1 : 0),\n      $show__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dollar-global-client/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div><!><!><button>Toggle</button></div>\";\nexport const $walks = /* next(1), replace, over(1), replace, over(1), get, out(1) */\"D%b%b l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content2__setup = $scope => _._text($scope[\"#text/0\"], $scope.$global.x);\nconst $if_content__setup = $scope => _._text($scope[\"#text/0\"], $scope.$global.x);\nconst $if = /* @__PURE__ */_._if(\"#text/0\", \"<span> </span>\", /* next(1), get, out(1) */\"D l\", $if_content__setup);\nconst $if2 = /* @__PURE__ */_._if(\"#text/1\", \"<span class=hidden> </span>\", /* next(1), get, out(1) */\"D l\", $if_content2__setup);\nconst $show__script = _._script(\"__tests__/template.marko_0_show\", $scope => _._on($scope[\"#button/2\"], \"click\", function () {\n  $show($scope, !$scope.show);\n}));\nconst $show = /* @__PURE__ */_._let(\"show/3\", $scope => {\n  $if($scope, $scope.show ? 0 : 1);\n  $if2($scope, !$scope.show ? 0 : 1);\n  $show__script($scope);\n});\nexport function $setup($scope) {\n  $show($scope, false);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dollar-global-client/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let show = false;\n  _._html(\"<div>\");\n  _._if(() => {\n    if (show) {\n      const $scope1_id = _._scope_id();\n      _._html(`<span>${_._escape(_.$global().x)}</span>`);\n      _._scope($scope1_id, {}, \"__tests__/template.marko\", \"3:4\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/0\", 1, /* show */1, /* show */1, 0, 1);\n  _._if(() => {\n    if (!show) {\n      const $scope2_id = _._scope_id();\n      _._html(`<span class=hidden>${_._escape(_.$global().x)}</span>`);\n      _._scope($scope2_id, {}, \"__tests__/template.marko\", \"7:4\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/1\", 1, /* show */1, /* show */1, 0, 1);\n  _._html(`<button>Toggle</button>${_._el_resume($scope0_id, \"#button/2\")}</div>`);\n  _._script($scope0_id, \"__tests__/template.marko_0_show\");\n  _._scope($scope0_id, {\n    show\n  }, \"__tests__/template.marko\", 0, {\n    show: \"2:8\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dollar-global-client/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"$global\":{\"x\":1,\"serializedGlobals\":[\"x\"]}}`\n\n```html\n<div>\n  <span\n    class=\"hidden\"\n  >\n    1\n  </span>\n  <button>\n    Toggle\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <span>\n    1\n  </span>\n  <button>\n    Toggle\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <span\n    class=\"hidden\"\n  >\n    1\n  </span>\n  <button>\n    Toggle\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <span>\n    1\n  </span>\n  <button>\n    Toggle\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dollar-global-client/__snapshots__/resume.expected.md",
    "content": "# Render `{\"$global\":{\"x\":1,\"serializedGlobals\":[\"x\"]}}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--M_|1 #text/0-->\n      <span\n        class=\"hidden\"\n      >\n        1\n      </span>\n      <!--M_|1 #text/1 2-->\n      <button>\n        Toggle\n      </button>\n      <!--M_*1 #button/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [\n        {\n          x: 1\n        },\n        {\n          show: !1\n        }]),\n        \"__tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <span>\n        1\n      </span>\n      <!--M_|1 #text/1 2-->\n      <button>\n        Toggle\n      </button>\n      <!--M_*1 #button/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [\n        {\n          x: 1\n        },\n        {\n          show: !1\n        }]),\n        \"__tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/span\nREMOVE #comment after html/body/div/span\nREMOVE html/body/div/#comment0 after span\nINSERT html/body/div/#comment0\nREMOVE span after html/body/div/#comment0\nUPDATE html/body/div/span/#text \" \" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--M_|1 #text/0-->\n      <span\n        class=\"hidden\"\n      >\n        1\n      </span>\n      <button>\n        Toggle\n      </button>\n      <!--M_*1 #button/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [\n        {\n          x: 1\n        },\n        {\n          show: !1\n        }]),\n        \"__tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#comment0\nREMOVE span after html/body/div/#comment0\nINSERT html/body/div/span\nREMOVE #comment after html/body/div/span\nUPDATE html/body/div/span/#text \" \" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <span>\n        1\n      </span>\n      <!--M_|1 #text/1 2-->\n      <button>\n        Toggle\n      </button>\n      <!--M_*1 #button/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [\n        {\n          x: 1\n        },\n        {\n          show: !1\n        }]),\n        \"__tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/span\nREMOVE #comment after html/body/div/span\nINSERT html/body/div/#comment0\nREMOVE span after html/body/div/#comment0\nUPDATE html/body/div/span/#text \" \" => \"1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dollar-global-client/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  <span\n    class=\"hidden\"\n  >\n    1\n  </span>\n  <button>\n    Toggle\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dollar-global-client/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><!--M_|1 #text/0--><span class=hidden>1</span><!--M_|1 #text/1 2--><button>Toggle</button><!--M_*1 #button/2--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[{x:1},{show:!1}]),\"__tests__/template.marko_0_show 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--M_|1 #text/0-->\n      <span\n        class=\"hidden\"\n      >\n        1\n      </span>\n      <!--M_|1 #text/1 2-->\n      <button>\n        Toggle\n      </button>\n      <!--M_*1 #button/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [\n        {\n          x: 1\n        },\n        {\n          show: !1\n        }]),\n        \"__tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#comment0\nINSERT html/body/div/span\nINSERT html/body/div/span/#text\nINSERT html/body/div/#comment1\nINSERT html/body/div/button\nINSERT html/body/div/button/#text\nINSERT html/body/div/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dollar-global-client/template.marko",
    "content": "<div>\n  <let/show=false/>\n  <if=show>\n    <span>${$global.x}</span>\n  </if>\n\n  <if=!show>\n    <span.hidden>${$global.x}</span>\n  </if>\n  <button onClick() { show = !show; }>\n    Toggle\n  </button>\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dollar-global-client/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{ $global: { x: 1, serializedGlobals: [\"x\"] } }, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-closure-multiple/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"_\",\n      \"$init\": \"t\",\n      \"$$if_content__a\": \"o\",\n      \"$$if_content__b\": \"e\",\n      \"$$a__OR__b__script\": \"r\",\n      \"$$a__OR__b\": \"c\",\n      \"$$a__closure\": \"a\",\n      \"$$a\": \"m\",\n      \"$$b__closure\": \"s\",\n      \"$$b\": \"l\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-closure-multiple/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button />\n<div>\n  0\n</div>\n<div>\n  0\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<div>\n  1\n</div>\n<div>\n  1\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<div>\n  2\n</div>\n<div>\n  2\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<div>\n  3\n</div>\n<div>\n  3\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-closure-multiple/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button />\n<!---->\n<div>\n  0\n</div>\n<div>\n  0\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT button, #comment0, div0, div1, #comment1, #comment2\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<!---->\n<div>\n  1\n</div>\n<div>\n  1\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nUPDATE div1/#text \"0\" => \"1\"\nUPDATE div0/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<!---->\n<div>\n  2\n</div>\n<div>\n  2\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nUPDATE div1/#text \"1\" => \"2\"\nUPDATE div0/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<!---->\n<div>\n  3\n</div>\n<div>\n  3\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nUPDATE div1/#text \"2\" => \"3\"\nUPDATE div0/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-closure-multiple/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 307 (min) 163 (brotli)\n_._enable_catch();\nconst $if_content__a = _._closure_get(\n    2,\n    ($scope) => _._text($scope.a, $scope._._.c),\n    ($scope) => $scope._._,\n  ),\n  $if_content__b = _._closure_get(\n    3,\n    ($scope) => _._text($scope.b, $scope._._.d),\n    ($scope) => $scope._._,\n  ),\n  $a__OR__b__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      ($a($scope, $scope.c + 1), $b($scope, $scope.d + 1));\n    }),\n  ),\n  $a__OR__b = _._or(4, $a__OR__b__script),\n  $a__closure = _._closure($if_content__a),\n  $a = _._let(2, ($scope) => {\n    ($a__OR__b($scope), $a__closure($scope));\n  }),\n  $b__closure = _._closure($if_content__b),\n  $b = _._let(3, ($scope) => {\n    ($a__OR__b($scope), $b__closure($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-closure-multiple/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button></button><!><!>\";\nexport const $walks = /* get, over(1), replace, over(2) */\" b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\n_._enable_catch();\nconst $if_content__a = /* @__PURE__ */_._closure_get(\"a\", $scope => _._text($scope[\"#text/0\"], $scope._._.a), $scope => $scope._._);\nconst $if_content__setup = $scope => {\n  $if_content__a($scope);\n  $if_content__b($scope);\n};\nconst $if_content__b = /* @__PURE__ */_._closure_get(\"b\", $scope => _._text($scope[\"#text/1\"], $scope._._.b), $scope => $scope._._);\nconst $try_content__if = /* @__PURE__ */_._if(\"#text/0\", \"<div> </div><div> </div>\", /* next(1), get, out(1), next(1), get, out(1) */\"D lD l\", $if_content__setup);\nconst $try_content__setup = $scope => $try_content__if($scope, true ? 0 : 1);\nconst $a__OR__b__script = _._script(\"__tests__/template.marko_0_a_b\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $a($scope, $scope.a + 1);\n  $b($scope, $scope.b + 1);\n}));\nconst $a__OR__b = /* @__PURE__ */_._or(4, $a__OR__b__script);\nconst $a__closure = /* @__PURE__ */_._closure($if_content__a);\nconst $a = /* @__PURE__ */_._let(\"a/2\", $scope => {\n  $a__OR__b($scope);\n  $a__closure($scope);\n});\nconst $b__closure = /* @__PURE__ */_._closure($if_content__b);\nconst $b = /* @__PURE__ */_._let(\"b/3\", $scope => {\n  $a__OR__b($scope);\n  $b__closure($scope);\n});\nconst $try = /* @__PURE__ */_._try(\"#text/1\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", $try_content__setup);\nexport function $setup($scope) {\n  $a($scope, 0);\n  $b($scope, 0);\n  $try($scope, {});\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-closure-multiple/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $a__closures = new Set();\n  const $b__closures = new Set();\n  let a = 0;\n  let b = 0;\n  _._html(`<button></button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._try($scope0_id, \"#text/1\", _._content_resume(\"__tests__/template.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    _._scope_reason();\n    if (true) {\n      const $scope2_id = _._scope_id();\n      _._html(`<div>${_._escape(a)}${_._el_resume($scope2_id, \"#text/0\")}</div><div>${_._escape(b)}${_._el_resume($scope2_id, \"#text/1\")}</div>`);\n      _._subscribe($b__closures, _._subscribe($a__closures, _._scope($scope2_id, {\n        _: _._scope_with_id($scope1_id),\n        \"ClosureSignalIndex:a\": 0,\n        \"ClosureSignalIndex:b\": 0\n      }, \"__tests__/template.marko\", \"8:4\")));\n    }\n    _._scope($scope1_id, {\n      _: _._scope_with_id($scope0_id)\n    }, \"__tests__/template.marko\", \"7:2\");\n  }, $scope0_id), {});\n  _._script($scope0_id, \"__tests__/template.marko_0_a_b\");\n  _._scope($scope0_id, {\n    a,\n    b,\n    \"ClosureScopes:a\": $a__closures,\n    \"ClosureScopes:b\": $b__closures\n  }, \"__tests__/template.marko\", 0, {\n    a: \"1:6\",\n    b: \"2:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-closure-multiple/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button />\n<div>\n  0\n</div>\n<div>\n  0\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<div>\n  1\n</div>\n<div>\n  1\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<div>\n  2\n</div>\n<div>\n  2\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<div>\n  3\n</div>\n<div>\n  3\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-closure-multiple/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <div>\n      0\n      <!--M_*3 #text/0-->\n    </div>\n    <div>\n      0\n      <!--M_*3 #text/1-->\n    </div>\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          a: 0,\n          b: 0,\n          \"ClosureScopes:a\": _.d = new Set,\n          \"ClosureScopes:b\": _.f = new Set\n        }, _.b = {\n          _: _.a,\n          \"#BranchAccessor\": \"#text/1\"\n        }, _.e = {\n          _: _.b,\n          \"ClosureSignalIndex:a\": 0,\n          \"ClosureSignalIndex:b\": 0\n        }], (_.d).add(_.e), (_.f).add(_.e), _.c),\n        \"__tests__/template.marko_0_a_b 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <div>\n      1\n      <!--M_*3 #text/0-->\n    </div>\n    <div>\n      1\n      <!--M_*3 #text/1-->\n    </div>\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          a: 0,\n          b: 0,\n          \"ClosureScopes:a\": _.d = new Set,\n          \"ClosureScopes:b\": _.f = new Set\n        }, _.b = {\n          _: _.a,\n          \"#BranchAccessor\": \"#text/1\"\n        }, _.e = {\n          _: _.b,\n          \"ClosureSignalIndex:a\": 0,\n          \"ClosureSignalIndex:b\": 0\n        }], (_.d).add(_.e), (_.f).add(_.e), _.c),\n        \"__tests__/template.marko_0_a_b 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div1/#text \"0\" => \"1\"\nUPDATE html/body/div0/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <div>\n      2\n      <!--M_*3 #text/0-->\n    </div>\n    <div>\n      2\n      <!--M_*3 #text/1-->\n    </div>\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          a: 0,\n          b: 0,\n          \"ClosureScopes:a\": _.d = new Set,\n          \"ClosureScopes:b\": _.f = new Set\n        }, _.b = {\n          _: _.a,\n          \"#BranchAccessor\": \"#text/1\"\n        }, _.e = {\n          _: _.b,\n          \"ClosureSignalIndex:a\": 0,\n          \"ClosureSignalIndex:b\": 0\n        }], (_.d).add(_.e), (_.f).add(_.e), _.c),\n        \"__tests__/template.marko_0_a_b 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div1/#text \"1\" => \"2\"\nUPDATE html/body/div0/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <div>\n      3\n      <!--M_*3 #text/0-->\n    </div>\n    <div>\n      3\n      <!--M_*3 #text/1-->\n    </div>\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          a: 0,\n          b: 0,\n          \"ClosureScopes:a\": _.d = new Set,\n          \"ClosureScopes:b\": _.f = new Set\n        }, _.b = {\n          _: _.a,\n          \"#BranchAccessor\": \"#text/1\"\n        }, _.e = {\n          _: _.b,\n          \"ClosureSignalIndex:a\": 0,\n          \"ClosureSignalIndex:b\": 0\n        }], (_.d).add(_.e), (_.f).add(_.e), _.c),\n        \"__tests__/template.marko_0_a_b 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div1/#text \"2\" => \"3\"\nUPDATE html/body/div0/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-closure-multiple/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button />\n<div>\n  0\n</div>\n<div>\n  0\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-closure-multiple/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button></button><!--M_*1 #button/0--><!--M_[--><div>0<!--M_*3 #text/0--></div><div>0<!--M_*3 #text/1--></div><!--M_]1 #text/1 2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.a={a:0,b:0,\"ClosureScopes:a\":_.d=new Set,\"ClosureScopes:b\":_.f=new Set},_.b={_:_.a,\"#BranchAccessor\":\"#text/1\"},_.e={_:_.b,\"ClosureSignalIndex:a\":0,\"ClosureSignalIndex:b\":0}],(_.d).add(_.e),(_.f).add(_.e),_.c),\"__tests__/template.marko_0_a_b 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <div>\n      0\n      <!--M_*3 #text/0-->\n    </div>\n    <div>\n      0\n      <!--M_*3 #text/1-->\n    </div>\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          a: 0,\n          b: 0,\n          \"ClosureScopes:a\": _.d = new Set,\n          \"ClosureScopes:b\": _.f = new Set\n        }, _.b = {\n          _: _.a,\n          \"#BranchAccessor\": \"#text/1\"\n        }, _.e = {\n          _: _.b,\n          \"ClosureSignalIndex:a\": 0,\n          \"ClosureSignalIndex:b\": 0\n        }], (_.d).add(_.e), (_.f).add(_.e), _.c),\n        \"__tests__/template.marko_0_a_b 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/div0\nINSERT html/body/div0/#text\nINSERT html/body/div0/#comment\nINSERT html/body/div1\nINSERT html/body/div1/#text\nINSERT html/body/div1/#comment\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-closure-multiple/template.marko",
    "content": "<let/a = 0/>\n<let/b = 0/>\n<button onClick() {\n  a++;\n  b++;\n}/>\n<try>\n  <if=true>\n    <div>${a}</div>\n    <div>${b}</div>\n  </if>\n</try>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-closure-multiple/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-closure-with-function/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"r\",\n      \"$init\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-closure-with-function/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"a\":\"a\",\"b\":\"b\",\"c\":\"c\"}`\n\n```html\n<div>\n  cfoo\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-closure-with-function/__snapshots__/csr.expected.md",
    "content": "# Render `{\"a\":\"a\",\"b\":\"b\",\"c\":\"c\"}`\n\n```html\n<!---->\n<!---->\n<div>\n  cfoo\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, div, #comment2, #comment3\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-closure-with-function/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 66 (min) 64 (brotli)\n(_._resume(\"a0\", function ($scope) {\n  return function (test) {\n    return $scope.d + test;\n  };\n}),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-closure-with-function/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content2__bar__OR__foo = /* @__PURE__ */_._or(1, $scope => _._text($scope[\"#text/0\"], $scope._._.bar($scope._.foo)));\nconst $if_content2__bar = /* @__PURE__ */_._closure_get(\"bar\", $if_content2__bar__OR__foo, $scope => $scope._._);\nconst $if_content2__setup = $scope => {\n  $if_content2__bar($scope);\n  $if_content2__foo._($scope);\n};\nconst $if_content2__foo = /* @__PURE__ */_._if_closure(\"#text/0\", 0, $if_content2__bar__OR__foo);\nconst $if_content__if = /* @__PURE__ */_._if(\"#text/0\", \"<div> </div>\", /* next(1), get, out(1) */\"D l\", $if_content2__setup);\nconst $if_content__input_b = /* @__PURE__ */_._if_closure(\"#text/0\", 0, $scope => $if_content__if($scope, $scope._.input_b ? 0 : 1));\nconst $if_content__foo = /* @__PURE__ */_._const(\"foo\");\nconst $if_content__setup = $scope => {\n  $if_content__input_b._($scope);\n  $if_content__foo($scope, \"foo\");\n};\nconst $bar2__closure = /* @__PURE__ */_._closure($if_content2__bar);\nconst $bar2 = /* @__PURE__ */_._const(\"bar\", $bar2__closure);\nexport const $input_c = /* @__PURE__ */_._const(\"input_c\", $scope => $bar2($scope, $bar($scope)));\nconst $if = /* @__PURE__ */_._if(\"#text/0\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", $if_content__setup);\nexport const $input_a = ($scope, input_a) => $if($scope, input_a ? 0 : 1);\nexport const $input = ($scope, input) => {\n  $input_c($scope, input.c);\n  $input_a($scope, input.a);\n  $input_b($scope, input.b);\n};\nexport const $input_b = /* @__PURE__ */_._const(\"input_b\", $if_content__input_b);\nfunction $bar($scope) {\n  return function (test) {\n    return $scope.input_c + test;\n  };\n}\n_._resume(\"__tests__/template.marko_0/bar\", $bar);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-closure-with-function/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $bar2__closures = new Set();\n  const bar = _._resume(function (test) {\n    return input.c + test;\n  }, \"__tests__/template.marko_0/bar\", $scope0_id);\n  _._if(() => {\n    if (input.a) {\n      const $scope1_id = _._scope_id();\n      const foo = \"foo\";\n      _._if(() => {\n        if (input.b) {\n          const $scope2_id = _._scope_id();\n          _._html(`<div>${_._escape(bar(foo))}${_._el_resume($scope2_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.c */3))}</div>`);\n          _._serialize_if($scope0_reason, /* input.c, input.a, input.b */2) && _._subscribe($bar2__closures, _._scope($scope2_id, {\n            _: _._scope_with_id($scope1_id),\n            \"ClosureSignalIndex:bar\": _._serialize_if($scope0_reason, /* input.c */3) && 0\n          }, \"__tests__/template.marko\", \"6:3\"));\n          return 0;\n        }\n      }, $scope1_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.b */5), _._serialize_guard($scope0_reason, /* input.b */5), _._serialize_guard($scope0_reason, /* input.b */5), 0, 1);\n      _._serialize_if($scope0_reason, /* input.c, input.b */0) && _._scope($scope1_id, {\n        foo,\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"3:1\", {\n        foo: \"4:9\"\n      });\n      return 0;\n    }\n  }, $scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.a, input.b */1), _._serialize_guard($scope0_reason, /* input.a */4), _._serialize_guard($scope0_reason, /* input.a */4));\n  _._serialize_if($scope0_reason, /* input.c, input.a, input.b */2) && _._scope($scope0_id, {\n    input_c: _._serialize_if($scope0_reason, /* input.a, input.b */1) && input.c,\n    input_b: _._serialize_if($scope0_reason, /* input.a */4) && input.b,\n    bar: _._serialize_if($scope0_reason, /* input.a, input.b */1) && bar,\n    \"ClosureScopes:bar\": _._serialize_if($scope0_reason, /* input.c */3) && $bar2__closures\n  }, \"__tests__/template.marko\", 0, {\n    input_c: [\"input.c\"],\n    input_b: [\"input.b\"],\n    bar: \"1:7\"\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-closure-with-function/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"a\":\"a\",\"b\":\"b\",\"c\":\"c\"}`\n\n```html\n<div>\n  cfoo\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-closure-with-function/__snapshots__/resume.expected.md",
    "content": "# Render `{\"a\":\"a\",\"b\":\"b\",\"c\":\"c\"}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      cfoo\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-closure-with-function/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  cfoo\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-closure-with-function/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>cfoo</div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      cfoo\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-closure-with-function/template.marko",
    "content": "const/bar(test) { return input.c + test }\n\nif=input.a\n  const/foo=\"foo\"\n\n  if=input.b\n    div -- ${bar(foo)}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-closure-with-function/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [\n    {\n      a: \"a\",\n      b: \"b\",\n      c: \"c\",\n    },\n  ],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-closures/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"_\",\n      \"$$if_content2__c\": \"o\",\n      \"$$customtag_content__c\": \"e\",\n      \"$$c__closure\": \"r\",\n      \"$$c\": \"c\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-closures/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button />\n<div>\n  1 2 3\n</div>\n<div>\n  1 2 3\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<div>\n  1 2 4\n</div>\n<div>\n  1 2 4\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-closures/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button />\n<div>\n  1 2 3\n</div>\n<div>\n  <!---->\n  1 2 3\n  <!---->\n</div>\n```\n\n# Mutations\n```\nINSERT button, div0, div1\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<div>\n  1 2 4\n</div>\n<div>\n  <!---->\n  1 2 4\n  <!---->\n</div>\n```\n\n# Mutations\n```\nUPDATE div0/#text4 \"3\" => \"4\"\nUPDATE div1/#text4 \"3\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-closures/__snapshots__/dom.expected/tags/custom-tag.js",
    "content": "export const $template = \"<div><!></div>\";\nexport const $walks = /* next(1), replace, out(1) */\"D%l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\");\nexport const $input_content = ($scope, input_content) => $dynamicTag($scope, input_content);\nexport const $input = ($scope, input) => $input_content($scope, input.content);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/custom-tag.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-closures/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 194 (min) 122 (brotli)\nconst $if_content2__c = _._closure_get(\n    4,\n    ($scope) => _._text($scope.c, $scope._._.e),\n    ($scope) => $scope._._,\n  ),\n  $customtag_content__c = _._closure_get(4, ($scope) =>\n    _._text($scope.c, $scope._.e),\n  ),\n  $c__closure = _._closure($customtag_content__c, $if_content2__c),\n  $c = _._let(4, $c__closure);\n(_._script(\"b1\", ($scope) =>\n  _._on($scope.a, \"click\", function () {\n    $c($scope, 4);\n  }),\n),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-closures/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<button></button>${_customTag_template}<div></div>`;\nexport const $walks = /* get, over(1), <custom-tag>, get, over(1) */` b/${_customTag_walks}& b`;\nconst a = 1;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _customTag, $input_content as _customTag_input_content, $template as _customTag_template, $walks as _customTag_walks } from \"./tags/custom-tag.marko\";\nconst $if_content2__b = /* @__PURE__ */_._closure_get(\"b\", $scope => _._text($scope[\"#text/1\"], $scope._._.b), $scope => $scope._._);\nconst $if_content2__setup = $scope => {\n  $if_content2__b($scope);\n  $if_content2__c($scope);\n  _._text($scope[\"#text/0\"], a);\n};\nconst $if_content2__c = /* @__PURE__ */_._closure_get(\"c\", $scope => _._text($scope[\"#text/2\"], $scope._._.c), $scope => $scope._._);\nconst $if_content__if = /* @__PURE__ */_._if(\"#text/0\", \"<!> <!> <!>\", /* replace, over(2), replace, over(2), replace, over(1) */\"%c%c%b\", $if_content2__setup);\nconst $if_content__setup = $scope => $if_content__if($scope, Math.random() ? 0 : 1);\nconst $customtag_content__b = /* @__PURE__ */_._closure_get(\"b\", $scope => _._text($scope[\"#text/1\"], $scope._.b));\nconst $customtag_content__setup = $scope => {\n  $customtag_content__b($scope);\n  $customtag_content__c($scope);\n  _._text($scope[\"#text/0\"], a);\n};\nconst $customtag_content__c = /* @__PURE__ */_._closure_get(\"c\", $scope => _._text($scope[\"#text/2\"], $scope._.c));\nconst $customtag_content = /* @__PURE__ */_._content(\"__tests__/template.marko_1_content\", \"<!> <!> <!>\", /* replace, over(2), replace, over(2), replace, over(1) */\"%c%c%b\", $customtag_content__setup);\nconst $b = /* @__PURE__ */_._const(\"b\");\nconst $c__closure = /* @__PURE__ */_._closure($customtag_content__c, $if_content2__c);\nconst $c = /* @__PURE__ */_._let(\"c/4\", $c__closure);\nconst $if = /* @__PURE__ */_._if(\"#div/2\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", $if_content__setup);\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $c($scope, 4);\n}));\nexport function $setup($scope) {\n  _customTag($scope[\"#childScope/1\"]);\n  _customTag_input_content($scope[\"#childScope/1\"], $customtag_content($scope));\n  $b($scope, 2);\n  $c($scope, 3);\n  $if($scope, Math.random() ? 0 : 1);\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-closures/__snapshots__/html.expected/tags/custom-tag.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/custom-tag.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div>\");\n  _._dynamic_tag($scope0_id, \"#text/0\", input.content, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.content */0));\n  _._html(\"</div>\");\n  _._serialize_if($scope0_reason, /* input.content */0) && _._scope($scope0_id, {}, \"__tests__/tags/custom-tag.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-closures/__snapshots__/html.expected/template.js",
    "content": "const a = 1;\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nimport _customTag from \"./tags/custom-tag.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $c__closures = new Set();\n  const b = 2;\n  let c = 3;\n  _._html(`<button></button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _customTag({\n    content: _._content(\"__tests__/template.marko_1_content\", () => {\n      _._scope_reason();\n      const $scope1_id = _._scope_id();\n      _._html(`${_._escape(a)} ${_._escape(b)} <!>${_._escape(c)}${_._el_resume($scope1_id, \"#text/2\")}`);\n      _._subscribe($c__closures, _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id),\n        \"ClosureSignalIndex:c\": 0\n      }, \"__tests__/template.marko\", \"6:2\"));\n      _._resume_branch($scope1_id);\n    })\n  });\n  _._html(\"<div>\");\n  if (Math.random()) {\n    const $scope2_id = _._scope_id();\n    if (Math.random()) {\n      const $scope3_id = _._scope_id();\n      _._html(`${_._escape(a)} ${_._escape(b)} <!>${_._escape(c)}${_._el_resume($scope3_id, \"#text/2\")}`);\n      _._subscribe($c__closures, _._scope($scope3_id, {\n        _: _._scope_with_id($scope2_id),\n        \"ClosureSignalIndex:c\": 1\n      }, \"__tests__/template.marko\", \"11:6\"));\n    }\n    _._scope($scope2_id, {\n      _: _._scope_with_id($scope0_id)\n    }, \"__tests__/template.marko\", \"10:4\");\n  }\n  _._html(\"</div>\");\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {\n    \"ClosureScopes:c\": $c__closures\n  }, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-closures/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button />\n<div>\n  1 2 3\n</div>\n<div>\n  1 2 3\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<div>\n  1 2 4\n</div>\n<div>\n  1 2 4\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-closures/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <div>\n      1 2 \n      <!---->\n      3\n      <!--M_*3 #text/2-->\n    </div>\n    <div>\n      1 2 \n      <!---->\n      3\n      <!--M_*5 #text/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"ClosureScopes:c\": _.d = new Set\n        }, 1, _.e = {\n          _: _.a,\n          \"ClosureSignalIndex:c\": 0\n        }, _.b = {\n          _: _.a\n        }, _.f = {\n          _: _.b,\n          \"ClosureSignalIndex:c\": 1\n        }], (_.d).add(_.e), _.d.add(_.f), _.c),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <div>\n      1 2 \n      <!---->\n      4\n      <!--M_*3 #text/2-->\n    </div>\n    <div>\n      1 2 \n      <!---->\n      4\n      <!--M_*5 #text/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"ClosureScopes:c\": _.d = new Set\n        }, 1, _.e = {\n          _: _.a,\n          \"ClosureSignalIndex:c\": 0\n        }, _.b = {\n          _: _.a\n        }, _.f = {\n          _: _.b,\n          \"ClosureSignalIndex:c\": 1\n        }], (_.d).add(_.e), _.d.add(_.f), _.c),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div0/#text1 \"3\" => \"4\"\nUPDATE html/body/div1/#text1 \"3\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-closures/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button />\n<div>\n  1 2 3\n</div>\n<div>\n  1 2 3\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-closures/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button></button><!--M_*1 #button/0--><div>1 2 <!>3<!--M_*3 #text/2--></div><div>1 2 <!>3<!--M_*5 #text/2--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.a={\"ClosureScopes:c\":_.d=new Set},1,_.e={_:_.a,\"ClosureSignalIndex:c\":0},_.b={_:_.a},_.f={_:_.b,\"ClosureSignalIndex:c\":1}],(_.d).add(_.e),_.d.add(_.f),_.c),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <div>\n      1 2 \n      <!---->\n      3\n      <!--M_*3 #text/2-->\n    </div>\n    <div>\n      1 2 \n      <!---->\n      3\n      <!--M_*5 #text/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"ClosureScopes:c\": _.d = new Set\n        }, 1, _.e = {\n          _: _.a,\n          \"ClosureSignalIndex:c\": 0\n        }, _.b = {\n          _: _.a\n        }, _.f = {\n          _: _.b,\n          \"ClosureSignalIndex:c\": 1\n        }], (_.d).add(_.e), _.d.add(_.f), _.c),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/#comment\nINSERT html/body/div0\nINSERT html/body/div0/#text0\nINSERT html/body/div0/#comment0\nINSERT html/body/div0/#text1\nINSERT html/body/div0/#comment1\nINSERT html/body/div1\nINSERT html/body/div1/#text0\nINSERT html/body/div1/#comment0\nINSERT html/body/div1/#text1\nINSERT html/body/div1/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-closures/tags/custom-tag.marko",
    "content": "<div><${input.content}/></div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-closures/template.marko",
    "content": "static const a = 1;\nconst/b = 2;\nlet/c = 3;\n\n<button onClick() { c = 4 }/>\n<custom-tag>\n  ${a} ${b} ${c}\n</custom-tag>\n<div>\n  <if=Math.random()>\n    <if=Math.random()>\n      ${a} ${b} ${c}\n    </if>\n  </if>\n</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-closures/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-content-attr/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$sideEffect\": \"r\",\n      \"$$MyThing_content__count\": \"_\",\n      \"$$count__OR__MyThing\": \"e\",\n      \"$$count__closure\": \"c\",\n      \"$$count__script\": \"a\",\n      \"$$count\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-content-attr/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0 3\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1 3\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2 3\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-content-attr/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  0 3\n</button>\n```\n\n# Mutations\n```\nINSERT button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1 3\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text0 \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2 3\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text0 \"1\" => \"2\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-content-attr/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 292 (min) 190 (brotli)\nlet sideEffect = 3;\nconst $MyThing_content__count = _._closure_get(1, ($scope) =>\n  _._text($scope.a, $scope._.b),\n);\n_._content_resume(\"a0\", \"<!> <!>\", \"%c%b\", ($scope) => {\n  ($MyThing_content__count($scope), _._text($scope.b, sideEffect++));\n});\nconst $count__OR__MyThing = _._or(3, ($scope) =>\n    _._attr_content($scope, \"a\", ($scope.b, $scope.c)),\n  ),\n  $count__closure = _._closure($MyThing_content__count),\n  $count__script = _._script(\"a1\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $count($scope, $scope.b + 1);\n    }),\n  ),\n  $count = _._let(1, ($scope) => {\n    ($count__OR__MyThing($scope),\n      $count__closure($scope),\n      $count__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-content-attr/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button></button>\";\nexport const $walks = /* get, over(1) */\" b\";\nlet sideEffect = 3;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $MyThing_content__count = /* @__PURE__ */_._closure_get(\"count\", $scope => _._text($scope[\"#text/0\"], $scope._.count));\nconst $MyThing_content__setup = $scope => {\n  $MyThing_content__count($scope);\n  _._text($scope[\"#text/1\"], sideEffect++);\n};\nconst $MyThing_content = _._content_resume(\"__tests__/template.marko_1_content\", \"<!> <!>\", /* replace, over(2), replace, over(1) */\"%c%b\", $MyThing_content__setup);\nconst $count__OR__MyThing = /* @__PURE__ */_._or(3, $scope => _._attr_content($scope, \"#button/0\", ($scope.count, $scope.MyThing)));\nconst $count__closure = /* @__PURE__ */_._closure($MyThing_content__count);\nconst $count__script = _._script(\"__tests__/template.marko_0_count\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $count($scope, $scope.count + 1);\n}));\nconst $count = /* @__PURE__ */_._let(\"count/1\", $scope => {\n  $count__OR__MyThing($scope);\n  $count__closure($scope);\n  $count__script($scope);\n});\nconst $MyThing = /* @__PURE__ */_._const(\"MyThing\", $count__OR__MyThing);\nexport function $setup($scope) {\n  $count($scope, 0);\n  $MyThing($scope, {\n    content: $MyThing_content($scope)\n  });\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-content-attr/__snapshots__/html.expected/template.js",
    "content": "let sideEffect = 3;\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $count__closures = new Set();\n  let count = 0;\n  const MyThing = {\n    content: _._content_resume(\"__tests__/template.marko_1_content\", () => {\n      const $scope1_id = _._scope_id();\n      _._scope_reason();\n      _._html(`${_._escape(count)}${_._el_resume($scope1_id, \"#text/0\")} ${_._escape(sideEffect++)}`);\n      _._subscribe($count__closures, _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id),\n        \"ClosureSignalIndex:count\": 0\n      }, \"__tests__/template.marko\", \"5:1\"));\n      _._resume_branch($scope1_id);\n    }, $scope0_id)\n  };\n  _._html(\"<button>\");\n  _._attr_content(\"#button/0\", $scope0_id, (count, MyThing));\n  _._html(`</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_count\");\n  _._scope($scope0_id, {\n    count,\n    MyThing,\n    \"ClosureScopes:count\": $count__closures\n  }, \"__tests__/template.marko\", 0, {\n    count: \"3:5\",\n    MyThing: \"5:8\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-content-attr/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0 3\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1 3\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2 3\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-content-attr/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*2 #text/0-->\n       3\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.a = {\n          \"BranchScopes:#button/0\": _.b = {\n            \"ClosureSignalIndex:count\": 0\n          },\n          \"ConditionalRenderer:#button/0\": \"__tests__/template.marko_1_content\",\n          count: 0,\n          MyThing: _.c = {},\n          \"ClosureScopes:count\": _.e = new Set\n        }, _.b], _.b._ = _.a, _.c.content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.a), (_.e).add(_.b), _.d),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*2 #text/0-->\n       3\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.a = {\n          \"BranchScopes:#button/0\": _.b = {\n            \"ClosureSignalIndex:count\": 0\n          },\n          \"ConditionalRenderer:#button/0\": \"__tests__/template.marko_1_content\",\n          count: 0,\n          MyThing: _.c = {},\n          \"ClosureScopes:count\": _.e = new Set\n        }, _.b], _.b._ = _.a, _.c.content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.a), (_.e).add(_.b), _.d),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text0 \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      2\n      <!--M_*2 #text/0-->\n       3\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.a = {\n          \"BranchScopes:#button/0\": _.b = {\n            \"ClosureSignalIndex:count\": 0\n          },\n          \"ConditionalRenderer:#button/0\": \"__tests__/template.marko_1_content\",\n          count: 0,\n          MyThing: _.c = {},\n          \"ClosureScopes:count\": _.e = new Set\n        }, _.b], _.b._ = _.a, _.c.content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.a), (_.e).add(_.b), _.d),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text0 \"1\" => \"2\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-content-attr/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  0 3\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-content-attr/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>0<!--M_*2 #text/0--> 3</button><!--M_*1 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.d=[0,_.a={\"BranchScopes:#button/0\":_.b={\"ClosureSignalIndex:count\":0},\"ConditionalRenderer:#button/0\":\"__tests__/template.marko_1_content\",count:0,MyThing:_.c={},\"ClosureScopes:count\":_.e=new Set},_.b],_.b._=_.a,_.c.content=_._[\"__tests__/template.marko_1_content\"](_.a),(_.e).add(_.b),_.d),\"__tests__/template.marko_0_count 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*2 #text/0-->\n       3\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.a = {\n          \"BranchScopes:#button/0\": _.b = {\n            \"ClosureSignalIndex:count\": 0\n          },\n          \"ConditionalRenderer:#button/0\": \"__tests__/template.marko_1_content\",\n          count: 0,\n          MyThing: _.c = {},\n          \"ClosureScopes:count\": _.e = new Set\n        }, _.b], _.b._ = _.a, _.c.content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.a), (_.e).add(_.b), _.d),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text0\nINSERT html/body/button/#comment\nINSERT html/body/button/#text1\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-content-attr/template.marko",
    "content": "static let sideEffect = 3\n\nlet/count=0\n\ndefine/MyThing\n  -- ${count} ${sideEffect++}\n\nbutton onClick() { count++ } content=(count, MyThing)\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-content-attr/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-event-handlers/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"m\",\n      \"$$clickCount__script\": \"o\",\n      \"$$clickCount\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-event-handlers/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-event-handlers/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n# Mutations\n```\nINSERT button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-event-handlers/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 116 (min) 108 (brotli)\nconst $clickCount__script = _._script(\"a0\", ($scope) =>\n    _._on(\n      $scope.a,\n      \"click\",\n      $scope.c <= 1 &&\n        (() => {\n          $clickCount($scope, $scope.c + 1);\n        }),\n    ),\n  ),\n  $clickCount = _._let(2, ($scope) => {\n    (_._text($scope.b, $scope.c), $clickCount__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-event-handlers/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button> </button>\";\nexport const $walks = /* get, next(1), get, out(1) */\" D l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $clickCount__script = _._script(\"__tests__/template.marko_0_clickCount\", $scope => _._on($scope[\"#button/0\"], \"click\", $scope.clickCount <= 1 ? () => {\n  $clickCount($scope, $scope.clickCount + 1);\n} : false));\nconst $clickCount = /* @__PURE__ */_._let(\"clickCount/2\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.clickCount);\n  $clickCount__script($scope);\n});\nexport function $setup($scope) {\n  $clickCount($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-event-handlers/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let clickCount = 0;\n  _._html(`<button>${_._escape(clickCount)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_clickCount\");\n  _._scope($scope0_id, {\n    clickCount\n  }, \"__tests__/template.marko\", 0, {\n    clickCount: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-event-handlers/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-event-handlers/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          clickCount: 0\n        }]),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          clickCount: 0\n        }]),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      2\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          clickCount: 0\n        }]),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      2\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          clickCount: 0\n        }]),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-event-handlers/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  0\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-event-handlers/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>0<!--M_*1 #text/1--></button><!--M_*1 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{clickCount:0}]),\"__tests__/template.marko_0_clickCount 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          clickCount: 0\n        }]),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-event-handlers/template.marko",
    "content": "<let/clickCount = 0/>\n<button onClick=(clickCount <= 1 ? (() => { clickCount++ }) : false)>${clickCount}</button>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-event-handlers/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nconst click = (container: Element) => {\n  container.querySelector(\"button\")!.click();\n};\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-native-dynamic-tag/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"o\",\n      \"$init\": \"t\",\n      \"$$tagName_content\": \"n\",\n      \"$$dynamicTag\": \"a\",\n      \"$$tagName__OR__className\": \"m\",\n      \"$$tagName__script\": \"c\",\n      \"$$tagName\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-native-dynamic-tag/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<span\n  class=\"A\"\n>\n  body content\n</span>\n<button />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div\n  class=\"A\"\n>\n  body content\n</div>\n<button />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<span\n  class=\"A\"\n>\n  body content\n</span>\n<button />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-native-dynamic-tag/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<span\n  class=\"A\"\n>\n  body content\n</span>\n<button />\n```\n\n# Mutations\n```\nINSERT #comment, span, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<div\n  class=\"A\"\n>\n  body content\n</div>\n<button />\n```\n\n# Mutations\n```\nINSERT div\nREMOVE span after div\nINSERT div/#text\nUPDATE div[class] null => \"A\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<span\n  class=\"A\"\n>\n  body content\n</span>\n<button />\n```\n\n# Mutations\n```\nINSERT span\nREMOVE div after span\nINSERT span/#text\nUPDATE span[class] null => \"A\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-native-dynamic-tag/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 228 (min) 160 (brotli)\nconst $tagName_content = _._content_resume(\"a0\", \"body content\", \"b\"),\n  $dynamicTag = _._dynamic_tag(0, $tagName_content),\n  $tagName__OR__className = _._or(4, ($scope) =>\n    $dynamicTag($scope, $scope.c, () => ({ class: $scope.d })),\n  ),\n  $tagName__script = _._script(\"a1\", ($scope) =>\n    _._on($scope.b, \"click\", function () {\n      $tagName($scope, \"span\" === $scope.c ? \"div\" : \"span\");\n    }),\n  ),\n  $tagName = _._let(2, ($scope) => {\n    ($tagName__OR__className($scope), $tagName__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-native-dynamic-tag/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><button></button>\";\nexport const $walks = /* over(1), replace, over(1), get, over(1) */\"b%b b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $tagName_content = _._content_resume(\"__tests__/template.marko_1_content\", \"body content\", /* over(1) */\"b\");\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\", $tagName_content);\nconst $tagName__OR__className = /* @__PURE__ */_._or(4, $scope => $dynamicTag($scope, $scope.tagName, () => ({\n  class: $scope.className\n})));\nconst $tagName__script = _._script(\"__tests__/template.marko_0_tagName\", $scope => _._on($scope[\"#button/1\"], \"click\", function () {\n  $tagName($scope, $scope.tagName === \"span\" ? \"div\" : \"span\");\n}));\nconst $tagName = /* @__PURE__ */_._let(\"tagName/2\", $scope => {\n  $tagName__OR__className($scope);\n  $tagName__script($scope);\n});\nconst $className = /* @__PURE__ */_._let(\"className/3\", $tagName__OR__className);\nexport function $setup($scope) {\n  $tagName($scope, \"span\");\n  $className($scope, \"A\");\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-native-dynamic-tag/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let tagName = \"span\";\n  let className = \"A\";\n  _._dynamic_tag($scope0_id, \"#text/0\", tagName, {\n    class: className\n  }, _._content_resume(\"__tests__/template.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    _._scope_reason();\n    _._html(\"body content\");\n  }, $scope0_id));\n  _._html(`<button></button>${_._el_resume($scope0_id, \"#button/1\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_tagName\");\n  _._scope($scope0_id, {\n    tagName,\n    className\n  }, \"__tests__/template.marko\", 0, {\n    tagName: \"1:6\",\n    className: \"2:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-native-dynamic-tag/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<span\n  class=\"A\"\n>\n  body content\n</span>\n<button />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div\n  class=\"A\"\n>\n  body content\n</div>\n<button />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<span\n  class=\"A\"\n>\n  body content\n</span>\n<button />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-native-dynamic-tag/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <span\n      class=\"A\"\n    >\n      <!--M_[-->\n      body content\n      <!--M_]2 #span/0 3-->\n    </span>\n    <!--M_'1 #text/0 2-->\n    <button />\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          \"ConditionalRenderer:#text/0\": \"span\",\n          tagName: \"span\",\n          className: \"A\"\n        },\n        {\n          \"ConditionalRenderer:#span/0\": \"__tests__/template.marko_1_content\"\n        }]),\n        \"__tests__/template.marko_0_tagName 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/span/#text1\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div\n      class=\"A\"\n    >\n      body content\n    </div>\n    <!--M_'1 #text/0 2-->\n    <button />\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          \"ConditionalRenderer:#text/0\": \"span\",\n          tagName: \"span\",\n          className: \"A\"\n        },\n        {\n          \"ConditionalRenderer:#span/0\": \"__tests__/template.marko_1_content\"\n        }]),\n        \"__tests__/template.marko_0_tagName 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div\nREMOVE span after html/body/div\nINSERT html/body/div/#text\nUPDATE html/body/div[class] null => \"A\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <span\n      class=\"A\"\n    >\n      body content\n    </span>\n    <!--M_'1 #text/0 2-->\n    <button />\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          \"ConditionalRenderer:#text/0\": \"span\",\n          tagName: \"span\",\n          className: \"A\"\n        },\n        {\n          \"ConditionalRenderer:#span/0\": \"__tests__/template.marko_1_content\"\n        }]),\n        \"__tests__/template.marko_0_tagName 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/span\nREMOVE div after html/body/span\nINSERT html/body/span/#text\nUPDATE html/body/span[class] null => \"A\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-native-dynamic-tag/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<span\n  class=\"A\"\n>\n  body content\n</span>\n<button />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-native-dynamic-tag/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <span class=A><!--M_[-->body content<!--M_]2 #span/0 3--></span><!--M_'1 #text/0 2--><button></button><!--M_*1 #button/1--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{\"ConditionalRenderer:#text/0\":\"span\",tagName:\"span\",className:\"A\"},{\"ConditionalRenderer:#span/0\":\"__tests__/template.marko_1_content\"}]),\"__tests__/template.marko_0_tagName 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <span\n      class=\"A\"\n    >\n      <!--M_[-->\n      body content\n      <!--M_]2 #span/0 3-->\n    </span>\n    <!--M_'1 #text/0 2-->\n    <button />\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          \"ConditionalRenderer:#text/0\": \"span\",\n          tagName: \"span\",\n          className: \"A\"\n        },\n        {\n          \"ConditionalRenderer:#span/0\": \"__tests__/template.marko_1_content\"\n        }]),\n        \"__tests__/template.marko_0_tagName 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/span\nINSERT html/body/span/#comment0\nINSERT html/body/span/#text\nINSERT html/body/span/#comment1\nINSERT html/body/#comment0\nINSERT html/body/button\nINSERT html/body/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-native-dynamic-tag/template.marko",
    "content": "<let/tagName = \"span\"/>\n<let/className = \"A\"/>\n\n<${tagName} class=className>body content</>\n\n<button onClick() { tagName = tagName === \"span\" ? \"div\" : \"span\" } />"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-native-dynamic-tag/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-native-tag-events/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"n\",\n      \"$init\": \"t\",\n      \"$$tagName_content\": \"m\",\n      \"$$dynamicTag\": \"o\",\n      \"$$tagName\": \"a\",\n      \"$$onClick\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-native-tag-events/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<span\n  class=\"A\"\n>\n  body content\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".A\").click();\n```\n```html\n<div\n  class=\"A\"\n>\n  body content\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".A\").click();\n```\n```html\n<span\n  class=\"A\"\n>\n  body content\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-native-tag-events/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<span\n  class=\"A\"\n>\n  body content\n</span>\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, span, #comment1\n```\n\n# Render\n```js\ncontainer.querySelector(\".A\").click();\n```\n```html\n<!---->\n<div\n  class=\"A\"\n>\n  body content\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT div\nREMOVE span after div\nINSERT div/#text\nUPDATE div[class] null => \"A\"\n```\n\n# Render\n```js\ncontainer.querySelector(\".A\").click();\n```\n```html\n<!---->\n<span\n  class=\"A\"\n>\n  body content\n</span>\n<!---->\n```\n\n# Mutations\n```\nINSERT span\nREMOVE div after span\nINSERT span/#text\nUPDATE span[class] null => \"A\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-native-tag-events/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 238 (min) 152 (brotli)\n_._resume_dynamic_tag();\nconst $tagName_content = _._content_resume(\"a1\", \"body content\", \"b\"),\n  $dynamicTag = _._dynamic_tag(0, $tagName_content),\n  $tagName = _._let(1, ($scope) =>\n    $dynamicTag($scope, $scope.b, () => ({\n      class: \"A\",\n      onClick: $onClick($scope),\n    })),\n  );\nfunction $onClick($scope) {\n  return function () {\n    $tagName($scope, \"span\" === $scope.b ? \"div\" : \"span\");\n  };\n}\n(_._resume(\"a0\", $onClick), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-native-tag-events/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\n_._resume_dynamic_tag();\nconst $tagName_content = _._content_resume(\"__tests__/template.marko_1_content\", \"body content\", /* over(1) */\"b\");\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\", $tagName_content);\nconst $tagName = /* @__PURE__ */_._let(\"tagName/1\", $scope => $dynamicTag($scope, $scope.tagName, () => ({\n  class: \"A\",\n  onClick: $onClick($scope)\n})));\nexport function $setup($scope) {\n  $tagName($scope, \"span\");\n}\nfunction $onClick($scope) {\n  return function () {\n    $tagName($scope, $scope.tagName === \"span\" ? \"div\" : \"span\");\n  };\n}\n_._resume(\"__tests__/template.marko_0/onClick\", $onClick);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-native-tag-events/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let tagName = \"span\";\n  _._dynamic_tag($scope0_id, \"#text/0\", tagName, {\n    class: \"A\",\n    onClick: _._resume(function () {\n      tagName = tagName === \"span\" ? \"div\" : \"span\";\n    }, \"__tests__/template.marko_0/onClick\", $scope0_id)\n  }, _._content_resume(\"__tests__/template.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    _._scope_reason();\n    _._html(\"body content\");\n  }, $scope0_id));\n  _._scope($scope0_id, {\n    tagName\n  }, \"__tests__/template.marko\", 0, {\n    tagName: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-native-tag-events/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<span\n  class=\"A\"\n>\n  body content\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".A\").click();\n```\n```html\n<div\n  class=\"A\"\n>\n  body content\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".A\").click();\n```\n```html\n<span\n  class=\"A\"\n>\n  body content\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-native-tag-events/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <span\n      class=\"A\"\n    >\n      <!--M_[-->\n      body content\n      <!--M_]2 #span/0 3-->\n    </span>\n    <!--M_'1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n        \"ConditionalRenderer:#text/0\": \"span\",\n        tagName: \"span\"\n      },\n      {\n        \"EventAttributes:#span/0\": _.a = {},\n        \"ConditionalRenderer:#span/0\": \"__tests__/template.marko_1_content\",\n        \"#Renderer\": \"span\"\n      }], _.a.click = _._[\n        \"__tests__/template.marko_0/onClick\"\n        ](_.c), _.b), \"_dynamicTagScript 2\"];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/span/#text1\n```\n\n# Render\n```js\ncontainer.querySelector(\".A\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div\n      class=\"A\"\n    >\n      body content\n    </div>\n    <!--M_'1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n        \"ConditionalRenderer:#text/0\": \"span\",\n        tagName: \"span\"\n      },\n      {\n        \"EventAttributes:#span/0\": _.a = {},\n        \"ConditionalRenderer:#span/0\": \"__tests__/template.marko_1_content\",\n        \"#Renderer\": \"span\"\n      }], _.a.click = _._[\n        \"__tests__/template.marko_0/onClick\"\n        ](_.c), _.b), \"_dynamicTagScript 2\"];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div\nREMOVE span after html/body/div\nINSERT html/body/div/#text\nUPDATE html/body/div[class] null => \"A\"\n```\n\n# Render\n```js\ncontainer.querySelector(\".A\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <span\n      class=\"A\"\n    >\n      body content\n    </span>\n    <!--M_'1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n        \"ConditionalRenderer:#text/0\": \"span\",\n        tagName: \"span\"\n      },\n      {\n        \"EventAttributes:#span/0\": _.a = {},\n        \"ConditionalRenderer:#span/0\": \"__tests__/template.marko_1_content\",\n        \"#Renderer\": \"span\"\n      }], _.a.click = _._[\n        \"__tests__/template.marko_0/onClick\"\n        ](_.c), _.b), \"_dynamicTagScript 2\"];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/span\nREMOVE div after html/body/span\nINSERT html/body/span/#text\nUPDATE html/body/span[class] null => \"A\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-native-tag-events/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<span\n  class=\"A\"\n>\n  body content\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-native-tag-events/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <span class=A><!--M_[-->body content<!--M_]2 #span/0 3--></span><!--M_'1 #text/0 2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.c={\"ConditionalRenderer:#text/0\":\"span\",tagName:\"span\"},{\"EventAttributes:#span/0\":_.a={},\"ConditionalRenderer:#span/0\":\"__tests__/template.marko_1_content\",\"#Renderer\":\"span\"}],_.a.click=_._[\"__tests__/template.marko_0/onClick\"](_.c),_.b),\"_dynamicTagScript 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <span\n      class=\"A\"\n    >\n      <!--M_[-->\n      body content\n      <!--M_]2 #span/0 3-->\n    </span>\n    <!--M_'1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n        \"ConditionalRenderer:#text/0\": \"span\",\n        tagName: \"span\"\n      },\n      {\n        \"EventAttributes:#span/0\": _.a = {},\n        \"ConditionalRenderer:#span/0\": \"__tests__/template.marko_1_content\",\n        \"#Renderer\": \"span\"\n      }], _.a.click = _._[\n        \"__tests__/template.marko_0/onClick\"\n        ](_.c), _.b), \"_dynamicTagScript 2\"];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/span\nINSERT html/body/span/#comment0\nINSERT html/body/span/#text\nINSERT html/body/span/#comment1\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-native-tag-events/template.marko",
    "content": "<let/tagName = \"span\"/>\n\n<${tagName} class=\"A\" onClick() {\n  tagName = tagName === \"span\" ? \"div\" : \"span\"\n}>body content</>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-native-tag-events/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector<HTMLElement>(\".A\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-args/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$setup\": \"i\",\n      \"$$input\": \"m\",\n      \"$tags\": \"a\",\n      \"$$dynamicTag\": \"r\",\n      \"$$x__script\": \"n\",\n      \"$$x\": \"_\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-args/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Count: 1\n</button>\n<div>\n  1\n</div>\n<div>\n  false\n</div>\n<div>\n  true\n</div>\n<div>\n  \"spread1\"\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Count: 2\n</button>\n<div>\n  2\n</div>\n<div>\n  false\n</div>\n<div>\n  true\n</div>\n<div>\n  \"spread1\"\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Count: 3\n</button>\n<div>\n  3\n</div>\n<div>\n  false\n</div>\n<div>\n  true\n</div>\n<div>\n  \"spread1\"\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Count: 4\n</button>\n<div>\n  4\n</div>\n<div>\n  false\n</div>\n<div>\n  true\n</div>\n<div>\n  \"spread1\"\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-args/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  Count: 1\n</button>\n<div>\n  1\n</div>\n<div>\n  false\n</div>\n<div>\n  true\n</div>\n<div>\n  \"spread1\"\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT button, div0, div1, div2, div3, #comment\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Count: 2\n</button>\n<div>\n  2\n</div>\n<div>\n  false\n</div>\n<div>\n  true\n</div>\n<div>\n  \"spread1\"\n</div>\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text1 \"1\" => \"2\"\nUPDATE div0/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Count: 3\n</button>\n<div>\n  3\n</div>\n<div>\n  false\n</div>\n<div>\n  true\n</div>\n<div>\n  \"spread1\"\n</div>\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text1 \"2\" => \"3\"\nUPDATE div0/#text \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Count: 4\n</button>\n<div>\n  4\n</div>\n<div>\n  false\n</div>\n<div>\n  true\n</div>\n<div>\n  \"spread1\"\n</div>\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text1 \"3\" => \"4\"\nUPDATE div0/#text \"3\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-args/__snapshots__/dom.expected/tags/custom-tag.js",
    "content": "export const $template = \"<div> </div>\";\nexport const $walks = /* next(1), get, out(1) */\"D l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $input = ($scope, input) => _._text($scope[\"#text/0\"], JSON.stringify(input));\nexport default /* @__PURE__ */_._template(\"__tests__/tags/custom-tag.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-args/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 259 (min) 184 (brotli)\nconst $setup = () => {},\n  $input = ($scope, input) => _._text($scope.a, JSON.stringify(input));\nconst tags = [_._template(\"a\", \"<div> </div>\", \"D l\", $setup, $input)],\n  $dynamicTag = _._dynamic_tag(2, 0, 0, 1),\n  $x__script = _._script(\"b0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $x($scope, $scope.g + 1);\n    }),\n  ),\n  $x = _._let(6, ($scope) => {\n    (_._text($scope.b, $scope.g),\n      $dynamicTag($scope, tags[0], () => [$scope.g, \"foo\"]),\n      $x__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-args/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button>Count: <!></button><!><!><!><!><!>\";\nexport const $walks = /* get, next(1), over(1), replace, out(1), replace, over(1), replace, over(1), replace, over(1), replace, over(2) */\" Db%l%b%b%b%c\";\nimport customTag from './tags/custom-tag.marko';\nconst tags = [customTag];\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/2\", 0, 0, 1);\nconst $x__script = _._script(\"__tests__/template.marko_0_x\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $x($scope, $scope.x + 1);\n}));\nconst $x = /* @__PURE__ */_._let(\"x/6\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.x);\n  $dynamicTag($scope, tags[0], () => [$scope.x, 'foo']);\n  $x__script($scope);\n});\nconst $dynamicTag2 = /* @__PURE__ */_._dynamic_tag(\"#text/3\", 0, 0, 1);\nconst $dynamicTag3 = /* @__PURE__ */_._dynamic_tag(\"#text/4\", 0, 0, 1);\nconst $dynamicTag4 = /* @__PURE__ */_._dynamic_tag(\"#text/5\", 0, 0, 1);\nexport function $setup($scope) {\n  $x($scope, 1);\n  $dynamicTag2($scope, tags[0], () => [false]);\n  $dynamicTag3($scope, tags[0], () => [true]);\n  $dynamicTag4($scope, tags[0], () => [...[\"spread1\", \"spread2\"]]);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-args/__snapshots__/html.expected/tags/custom-tag.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/custom-tag.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div>${_._escape(JSON.stringify(input))}${_._el_resume($scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input */0))}</div>`);\n  _._serialize_if($scope0_reason, /* input */0) && _._scope($scope0_id, {}, \"__tests__/tags/custom-tag.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-args/__snapshots__/html.expected/template.js",
    "content": "import customTag from './tags/custom-tag.marko';\nconst tags = [customTag];\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let x = 1;\n  _._html(`<button>Count: <!>${_._escape(x)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._dynamic_tag($scope0_id, \"#text/2\", tags[0], [x, 'foo'], 0, 1);\n  _._dynamic_tag($scope0_id, \"#text/3\", tags[0], [false], 0, 1, 0);\n  _._dynamic_tag($scope0_id, \"#text/4\", tags[0], [true], 0, 1, 0);\n  _._dynamic_tag($scope0_id, \"#text/5\", tags[0], [...[\"spread1\", \"spread2\"]], 0, 1, 0);\n  _._script($scope0_id, \"__tests__/template.marko_0_x\");\n  _._scope($scope0_id, {\n    x\n  }, \"__tests__/template.marko\", 0, {\n    x: \"3:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-args/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Count: 1\n</button>\n<div>\n  1\n</div>\n<div>\n  false\n</div>\n<div>\n  true\n</div>\n<div>\n  \"spread1\"\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Count: 2\n</button>\n<div>\n  2\n</div>\n<div>\n  false\n</div>\n<div>\n  true\n</div>\n<div>\n  \"spread1\"\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Count: 3\n</button>\n<div>\n  3\n</div>\n<div>\n  false\n</div>\n<div>\n  true\n</div>\n<div>\n  \"spread1\"\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Count: 4\n</button>\n<div>\n  4\n</div>\n<div>\n  false\n</div>\n<div>\n  true\n</div>\n<div>\n  \"spread1\"\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-args/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Count: \n      <!---->\n      1\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <div>\n      1\n      <!--M_*2 #text/0-->\n    </div>\n    <!--M_]1 #text/2 2-->\n    <div>\n      false\n    </div>\n    <div>\n      true\n    </div>\n    <div>\n      \"spread1\"\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          \"ConditionalRenderer:#text/2\": \"__tests__/tags/custom-tag.marko\",\n          x: 1\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Count: \n      <!---->\n      2\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <div>\n      2\n      <!--M_*2 #text/0-->\n    </div>\n    <!--M_]1 #text/2 2-->\n    <div>\n      false\n    </div>\n    <div>\n      true\n    </div>\n    <div>\n      \"spread1\"\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          \"ConditionalRenderer:#text/2\": \"__tests__/tags/custom-tag.marko\",\n          x: 1\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text1 \"1\" => \"2\"\nUPDATE html/body/div0/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Count: \n      <!---->\n      3\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <div>\n      3\n      <!--M_*2 #text/0-->\n    </div>\n    <!--M_]1 #text/2 2-->\n    <div>\n      false\n    </div>\n    <div>\n      true\n    </div>\n    <div>\n      \"spread1\"\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          \"ConditionalRenderer:#text/2\": \"__tests__/tags/custom-tag.marko\",\n          x: 1\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text1 \"2\" => \"3\"\nUPDATE html/body/div0/#text \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Count: \n      <!---->\n      4\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <div>\n      4\n      <!--M_*2 #text/0-->\n    </div>\n    <!--M_]1 #text/2 2-->\n    <div>\n      false\n    </div>\n    <div>\n      true\n    </div>\n    <div>\n      \"spread1\"\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          \"ConditionalRenderer:#text/2\": \"__tests__/tags/custom-tag.marko\",\n          x: 1\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text1 \"3\" => \"4\"\nUPDATE html/body/div0/#text \"3\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-args/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  Count: 1\n</button>\n<div>\n  1\n</div>\n<div>\n  false\n</div>\n<div>\n  true\n</div>\n<div>\n  \"spread1\"\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-args/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>Count: <!>1<!--M_*1 #text/1--></button><!--M_*1 #button/0--><!--M_[--><div>1<!--M_*2 #text/0--></div><!--M_]1 #text/2 2--><div>false</div><div>true</div><div>\"spread1\"</div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{\"ConditionalRenderer:#text/2\":\"__tests__/tags/custom-tag.marko\",x:1}]),\"__tests__/template.marko_0_x 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Count: \n      <!---->\n      1\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <div>\n      1\n      <!--M_*2 #text/0-->\n    </div>\n    <!--M_]1 #text/2 2-->\n    <div>\n      false\n    </div>\n    <div>\n      true\n    </div>\n    <div>\n      \"spread1\"\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          \"ConditionalRenderer:#text/2\": \"__tests__/tags/custom-tag.marko\",\n          x: 1\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text0\nINSERT html/body/button/#comment0\nINSERT html/body/button/#text1\nINSERT html/body/button/#comment1\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/div0\nINSERT html/body/div0/#text\nINSERT html/body/div0/#comment\nINSERT html/body/#comment2\nINSERT html/body/div1\nINSERT html/body/div1/#text\nINSERT html/body/div2\nINSERT html/body/div2/#text\nINSERT html/body/div3\nINSERT html/body/div3/#text\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-args/tags/custom-tag.marko",
    "content": "<div>${JSON.stringify(input)}</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-args/template.marko",
    "content": "import customTag from './tags/custom-tag.marko';\nstatic const tags = [customTag];\n<let/x=1 />\n<button onClick() { x++ }>Count: ${x}</button>\n<${tags[0]}(x, 'foo') />\n<${tags[0]}(false) />\n<${tags[0]}(true) />\n<${tags[0]}(...[\"spread1\", \"spread2\"]) />"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-args/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-args-tag-var/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"m\",\n      \"$$setup\": \"r\",\n      \"$$input\": \"_\",\n      \"$tags\": \"a\",\n      \"$$dynamicTag\": \"e\",\n      \"$$x__script\": \"o\",\n      \"$$x\": \"i\",\n      \"$$y\": \"c\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-args-tag-var/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Count: 1\n</button>\n<div>\n  Child: 1\n</div>\n<div>\n  Parent: 1\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Count: 2\n</button>\n<div>\n  Child: 2\n</div>\n<div>\n  Parent: 2\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Count: 3\n</button>\n<div>\n  Child: 3\n</div>\n<div>\n  Parent: 3\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Count: 4\n</button>\n<div>\n  Child: 4\n</div>\n<div>\n  Parent: 4\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-args-tag-var/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  Count: 1\n</button>\n<div>\n  Child: 1\n</div>\n<div>\n  Parent: 1\n</div>\n```\n\n# Mutations\n```\nINSERT button, div0, div1\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Count: 2\n</button>\n<div>\n  Child: 2\n</div>\n<div>\n  Parent: 2\n</div>\n```\n\n# Mutations\n```\nUPDATE button/#text1 \"1\" => \"2\"\nUPDATE div0/#text1 \"1\" => \"2\"\nUPDATE div1/#text1 \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Count: 3\n</button>\n<div>\n  Child: 3\n</div>\n<div>\n  Parent: 3\n</div>\n```\n\n# Mutations\n```\nUPDATE button/#text1 \"2\" => \"3\"\nUPDATE div0/#text1 \"2\" => \"3\"\nUPDATE div1/#text1 \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Count: 4\n</button>\n<div>\n  Child: 4\n</div>\n<div>\n  Parent: 4\n</div>\n```\n\n# Mutations\n```\nUPDATE button/#text1 \"3\" => \"4\"\nUPDATE div0/#text1 \"3\" => \"4\"\nUPDATE div1/#text1 \"3\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-args-tag-var/__snapshots__/dom.expected/tags/custom-tag.js",
    "content": "export const $template = \"<div>Child: <!></div>\";\nexport const $walks = /* next(1), over(1), replace, out(1) */\"Db%l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $input = /* @__PURE__ */_._const(\"input\", $scope => {\n  _._text($scope[\"#text/0\"], $scope.input);\n  _._return($scope, $scope.input);\n});\nexport default /* @__PURE__ */_._template(\"__tests__/tags/custom-tag.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-args-tag-var/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 324 (min) 217 (brotli)\nconst $setup = () => {},\n  $input = _._const(2, ($scope) => {\n    (_._text($scope.a, $scope.c), _._return($scope, $scope.c));\n  });\nconst tags = [\n    _._template(\"a\", \"<div>Child: <!></div>\", \"Db%l\", $setup, $input),\n  ],\n  $dynamicTag = _._dynamic_tag(2, 0, () => $y, 1),\n  $x__script = _._script(\"b0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $x($scope, $scope.f + 1);\n    }),\n  ),\n  $x = _._let(5, ($scope) => {\n    (_._text($scope.b, $scope.f),\n      $dynamicTag($scope, tags[0], () => [$scope.f]),\n      $x__script($scope));\n  }),\n  $y = _._var_resume(\"b1\", ($scope, y) => _._text($scope.e, y));\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-args-tag-var/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button>Count: <!></button><!><div>Parent: <!></div>\";\nexport const $walks = /* get, next(1), over(1), replace, out(1), dynamicTagWithVar, over(1), next(1), over(1), replace, out(1) */\" Db%l1bDb%l\";\nimport customTag from './tags/custom-tag.marko';\nconst tags = [customTag];\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/2\", 0, () => $y, 1);\nconst $x__script = _._script(\"__tests__/template.marko_0_x\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $x($scope, $scope.x + 1);\n}));\nconst $x = /* @__PURE__ */_._let(\"x/5\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.x);\n  $dynamicTag($scope, tags[0], () => [$scope.x]);\n  $x__script($scope);\n});\nexport function $setup($scope) {\n  $x($scope, 1);\n}\nconst $y = _._var_resume(\"__tests__/template.marko_0_y/var\", ($scope, y) => _._text($scope[\"#text/4\"], y));\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-args-tag-var/__snapshots__/html.expected/tags/custom-tag.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/custom-tag.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div>Child: ${_._sep(_._serialize_guard($scope0_reason, /* input */0))}${_._escape(input)}${_._el_resume($scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input */0))}</div>`);\n  const $return = input;\n  _._serialize_if($scope0_reason, /* input */0) && _._scope($scope0_id, {}, \"__tests__/tags/custom-tag.marko\", 0);\n  return $return;\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-args-tag-var/__snapshots__/html.expected/template.js",
    "content": "import customTag from './tags/custom-tag.marko';\nconst tags = [customTag];\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let x = 1;\n  _._html(`<button>Count: <!>${_._escape(x)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  const $tags0_scope = _._peek_scope_id();\n  let y = _._dynamic_tag($scope0_id, \"#text/2\", tags[0], [x], 0, 1);\n  _._var($scope0_id, \"#scopeOffset/3\", $tags0_scope, \"__tests__/template.marko_0_y/var\");\n  _._html(`<div>Parent: <!>${_._escape(y)}${_._el_resume($scope0_id, \"#text/4\")}</div>`);\n  _._script($scope0_id, \"__tests__/template.marko_0_x\");\n  _._scope($scope0_id, {\n    x\n  }, \"__tests__/template.marko\", 0, {\n    x: \"3:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-args-tag-var/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Count: 1\n</button>\n<div>\n  Child: 1\n</div>\n<div>\n  Parent: 1\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Count: 2\n</button>\n<div>\n  Child: 2\n</div>\n<div>\n  Parent: 2\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Count: 3\n</button>\n<div>\n  Child: 3\n</div>\n<div>\n  Parent: 3\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Count: 4\n</button>\n<div>\n  Child: 4\n</div>\n<div>\n  Parent: 4\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-args-tag-var/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Count: \n      <!---->\n      1\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <div>\n      Child: \n      <!---->\n      1\n      <!--M_*2 #text/0-->\n    </div>\n    <!--M_]1 #text/2 2-->\n    <div>\n      Parent: \n      <!---->\n      1\n      <!--M_*1 #text/4-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"ConditionalRenderer:#text/2\": \"__tests__/tags/custom-tag.marko\",\n          \"#scopeOffset/3\": 3,\n          x: 1\n        }, _.a = {}], _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_y/var\"\n          ](_.c), _.b),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Count: \n      <!---->\n      2\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <div>\n      Child: \n      <!---->\n      2\n      <!--M_*2 #text/0-->\n    </div>\n    <!--M_]1 #text/2 2-->\n    <div>\n      Parent: \n      <!---->\n      2\n      <!--M_*1 #text/4-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"ConditionalRenderer:#text/2\": \"__tests__/tags/custom-tag.marko\",\n          \"#scopeOffset/3\": 3,\n          x: 1\n        }, _.a = {}], _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_y/var\"\n          ](_.c), _.b),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text1 \"1\" => \"2\"\nUPDATE html/body/div0/#text1 \"1\" => \"2\"\nUPDATE html/body/div1/#text1 \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Count: \n      <!---->\n      3\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <div>\n      Child: \n      <!---->\n      3\n      <!--M_*2 #text/0-->\n    </div>\n    <!--M_]1 #text/2 2-->\n    <div>\n      Parent: \n      <!---->\n      3\n      <!--M_*1 #text/4-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"ConditionalRenderer:#text/2\": \"__tests__/tags/custom-tag.marko\",\n          \"#scopeOffset/3\": 3,\n          x: 1\n        }, _.a = {}], _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_y/var\"\n          ](_.c), _.b),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text1 \"2\" => \"3\"\nUPDATE html/body/div0/#text1 \"2\" => \"3\"\nUPDATE html/body/div1/#text1 \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Count: \n      <!---->\n      4\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <div>\n      Child: \n      <!---->\n      4\n      <!--M_*2 #text/0-->\n    </div>\n    <!--M_]1 #text/2 2-->\n    <div>\n      Parent: \n      <!---->\n      4\n      <!--M_*1 #text/4-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"ConditionalRenderer:#text/2\": \"__tests__/tags/custom-tag.marko\",\n          \"#scopeOffset/3\": 3,\n          x: 1\n        }, _.a = {}], _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_y/var\"\n          ](_.c), _.b),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text1 \"3\" => \"4\"\nUPDATE html/body/div0/#text1 \"3\" => \"4\"\nUPDATE html/body/div1/#text1 \"3\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-args-tag-var/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  Count: 1\n</button>\n<div>\n  Child: 1\n</div>\n<div>\n  Parent: 1\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-args-tag-var/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>Count: <!>1<!--M_*1 #text/1--></button><!--M_*1 #button/0--><!--M_[--><div>Child: <!>1<!--M_*2 #text/0--></div><!--M_]1 #text/2 2--><div>Parent: <!>1<!--M_*1 #text/4--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.c={\"ConditionalRenderer:#text/2\":\"__tests__/tags/custom-tag.marko\",\"#scopeOffset/3\":3,x:1},_.a={}],_.a[\"#TagVariable\"]=_._[\"__tests__/template.marko_0_y/var\"](_.c),_.b),\"__tests__/template.marko_0_x 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Count: \n      <!---->\n      1\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <div>\n      Child: \n      <!---->\n      1\n      <!--M_*2 #text/0-->\n    </div>\n    <!--M_]1 #text/2 2-->\n    <div>\n      Parent: \n      <!---->\n      1\n      <!--M_*1 #text/4-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"ConditionalRenderer:#text/2\": \"__tests__/tags/custom-tag.marko\",\n          \"#scopeOffset/3\": 3,\n          x: 1\n        }, _.a = {}], _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_y/var\"\n          ](_.c), _.b),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text0\nINSERT html/body/button/#comment0\nINSERT html/body/button/#text1\nINSERT html/body/button/#comment1\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/div0\nINSERT html/body/div0/#text0\nINSERT html/body/div0/#comment0\nINSERT html/body/div0/#text1\nINSERT html/body/div0/#comment1\nINSERT html/body/#comment2\nINSERT html/body/div1\nINSERT html/body/div1/#text0\nINSERT html/body/div1/#comment0\nINSERT html/body/div1/#text1\nINSERT html/body/div1/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-args-tag-var/tags/custom-tag.marko",
    "content": "<div>Child: ${input}</div>\n<return=input/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-args-tag-var/template.marko",
    "content": "import customTag from './tags/custom-tag.marko';\nstatic const tags = [customTag];\n<let/x=1 />\n<button onClick() { x++ }>Count: ${x}</button>\n<${tags[0]}(x)/y />\n<div>Parent: ${y}</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-args-tag-var/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-attr-signal/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$className__script\": \"m\",\n      \"$$className\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-attr-signal/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<p\n  class=\"A\"\n>\n  paragraph\n</p>\n<button />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<p\n  class=\"B\"\n>\n  paragraph\n</p>\n<button />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<p\n  class=\"A\"\n>\n  paragraph\n</p>\n<button />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-attr-signal/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<p\n  class=\"A\"\n>\n  paragraph\n</p>\n<button />\n```\n\n# Mutations\n```\nINSERT #comment, p, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<p\n  class=\"B\"\n>\n  paragraph\n</p>\n<button />\n```\n\n# Mutations\n```\nUPDATE p[class] \"A\" => \"B\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<p\n  class=\"A\"\n>\n  paragraph\n</p>\n<button />\n```\n\n# Mutations\n```\nUPDATE p[class] \"B\" => \"A\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-attr-signal/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 130 (min) 113 (brotli)\nconst $className__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.b, \"click\", function () {\n      $className($scope, \"A\" === $scope.c ? \"B\" : \"A\");\n    }),\n  ),\n  $className = _._let(2, ($scope) => {\n    (_._attr_class($scope.a, $scope.c), $className__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-attr-signal/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><p>paragraph</p><button></button>\";\nexport const $walks = /* over(1), get, over(1), get, over(1) */\"b b b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $className__script = _._script(\"__tests__/template.marko_0_className\", $scope => _._on($scope[\"#button/1\"], \"click\", function () {\n  $className($scope, $scope.className === \"A\" ? \"B\" : \"A\");\n}));\nconst $className = /* @__PURE__ */_._let(\"className/2\", $scope => {\n  _._attr_class($scope[\"#p/0\"], $scope.className);\n  $className__script($scope);\n});\nexport function $setup($scope) {\n  $className($scope, \"A\");\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-attr-signal/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let className = \"A\";\n  _._html(`<p${_._attr_class(className)}>paragraph</p>${_._el_resume($scope0_id, \"#p/0\")}<button></button>${_._el_resume($scope0_id, \"#button/1\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_className\");\n  _._scope($scope0_id, {\n    className\n  }, \"__tests__/template.marko\", 0, {\n    className: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-attr-signal/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<p\n  class=\"A\"\n>\n  paragraph\n</p>\n<button />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<p\n  class=\"B\"\n>\n  paragraph\n</p>\n<button />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<p\n  class=\"A\"\n>\n  paragraph\n</p>\n<button />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-attr-signal/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <p\n      class=\"A\"\n    >\n      paragraph\n    </p>\n    <!--M_*1 #p/0-->\n    <button />\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          className: \"A\"\n        }]),\n        \"__tests__/template.marko_0_className 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <p\n      class=\"B\"\n    >\n      paragraph\n    </p>\n    <!--M_*1 #p/0-->\n    <button />\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          className: \"A\"\n        }]),\n        \"__tests__/template.marko_0_className 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/p[class] \"A\" => \"B\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <p\n      class=\"A\"\n    >\n      paragraph\n    </p>\n    <!--M_*1 #p/0-->\n    <button />\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          className: \"A\"\n        }]),\n        \"__tests__/template.marko_0_className 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/p[class] \"B\" => \"A\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-attr-signal/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<p\n  class=\"A\"\n>\n  paragraph\n</p>\n<button />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-attr-signal/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <p class=A>paragraph</p><!--M_*1 #p/0--><button></button><!--M_*1 #button/1--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{className:\"A\"}]),\"__tests__/template.marko_0_className 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <p\n      class=\"A\"\n    >\n      paragraph\n    </p>\n    <!--M_*1 #p/0-->\n    <button />\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          className: \"A\"\n        }]),\n        \"__tests__/template.marko_0_className 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/p\nINSERT html/body/p/#text\nINSERT html/body/#comment0\nINSERT html/body/button\nINSERT html/body/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-attr-signal/template.marko",
    "content": "<let/className = \"A\"/>\n\n<${\"p\"} class=className>paragraph</>\n\n<button onClick() { className = className === \"A\" ? \"B\" : \"A\" } />"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-attr-signal/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-default/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-default/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div />\n<div>\n  Hello\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-default/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div />\n<div>\n  Hello\n</div>\n```\n\n# Mutations\n```\nINSERT div0, div1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-default/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<div><!></div>\";\nexport const $walks = /* next(1), replace, out(1) */\"D%l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\");\nexport const $input = ($scope, input) => $dynamicTag($scope, input);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-default/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-default/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `${_child_template}${_child_template}`;\nexport const $walks = /* <child>, <child> */`/${_child_walks}&/${_child_walks}&`;\nimport { $setup as _child, $input as _child_input, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $child_content = /* @__PURE__ */_._content(\"__tests__/template.marko_1_content\", \"Hello\", /* over(1) */\"b\");\nexport function $setup($scope) {\n  _child($scope[\"#childScope/0\"]);\n  _child_input($scope[\"#childScope/0\"], {});\n  _child($scope[\"#childScope/1\"]);\n  _child_input($scope[\"#childScope/1\"], {\n    content: $child_content($scope)\n  });\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-default/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div>\");\n  _._dynamic_tag($scope0_id, \"#text/0\", input, {}, 0, 0, _._serialize_guard($scope0_reason, /* input */0));\n  _._html(\"</div>\");\n  _._serialize_if($scope0_reason, /* input */0) && _._scope($scope0_id, {}, \"__tests__/tags/child.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-default/__snapshots__/html.expected/template.js",
    "content": "import _child from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _child({});\n  _child({\n    content: _._content(\"__tests__/template.marko_1_content\", () => {\n      _._scope_reason();\n      const $scope1_id = _._scope_id();\n      _._html(\"Hello\");\n    })\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-default/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div />\n<div>\n  Hello\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-default/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <div>\n      Hello\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-default/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n<div>\n  Hello\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-default/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div></div><div>Hello</div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <div>\n      Hello\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/div1\nINSERT html/body/div1/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-default/tags/child.marko",
    "content": "div\n  ${input}"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-default/template.marko",
    "content": "<child/>\n<child>Hello</child>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-native/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"i\",\n      \"$$setup\": \"a\",\n      \"$$input\": \"m\",\n      \"$child\": \"o\",\n      \"$$dynamicTag\": \"c\",\n      \"$$tagName__script\": \"d\",\n      \"$$tagName\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-native/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button />\n<div>\n  Id is dynamic\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<div\n  id=\"dynamic\"\n/>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<div>\n  Id is dynamic\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-native/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button />\n<div>\n  Id is dynamic\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT button, div, #comment\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<div\n  id=\"dynamic\"\n/>\n<!---->\n```\n\n# Mutations\n```\nINSERT div\nREMOVE div after div\nUPDATE div[id] null => \"dynamic\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<div>\n  Id is dynamic\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT div\nREMOVE div after div\nUPDATE div/#text1 \"\" => \"dynamic\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-native/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<div>Id is <!></div>\";\nexport const $walks = /* next(1), over(1), replace, out(1) */\"Db%l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $id = ($scope, id) => _._text($scope[\"#text/0\"], id);\nexport const $input = ($scope, input) => $id($scope, input.id);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-native/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 268 (min) 188 (brotli)\nconst $setup = () => {},\n  $input = ($scope, input) =>\n    (($scope, id) => _._text($scope.a, id))($scope, input.id);\nvar child = _._template(\"a\", \"<div>Id is <!></div>\", \"Db%l\", $setup, $input);\nconst $dynamicTag = _._dynamic_tag(1),\n  $tagName__script = _._script(\"b0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $tagName($scope, $scope.c === child ? \"div\" : child);\n    }),\n  ),\n  $tagName = _._let(2, ($scope) => {\n    ($dynamicTag($scope, $scope.c, () => ({ id: \"dynamic\" })),\n      $tagName__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-native/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button></button><!><!>\";\nexport const $walks = /* get, over(1), replace, over(2) */\" b%c\";\nimport child from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/1\");\nconst $tagName__script = _._script(\"__tests__/template.marko_0_tagName\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $tagName($scope, $scope.tagName === child ? \"div\" : child);\n}));\nconst $tagName = /* @__PURE__ */_._let(\"tagName/2\", $scope => {\n  $dynamicTag($scope, $scope.tagName, () => ({\n    id: \"dynamic\"\n  }));\n  $tagName__script($scope);\n});\nexport function $setup($scope) {\n  $tagName($scope, child);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-native/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    id\n  } = input;\n  _._html(`<div>Id is ${_._sep(_._serialize_guard($scope0_reason, /* input.id */0))}${_._escape(id)}${_._el_resume($scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.id */0))}</div>`);\n  _._serialize_if($scope0_reason, /* input.id */0) && _._scope($scope0_id, {}, \"__tests__/tags/child.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-native/__snapshots__/html.expected/template.js",
    "content": "import child from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let tagName = child;\n  _._html(`<button></button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._dynamic_tag($scope0_id, \"#text/1\", tagName, {\n    id: \"dynamic\"\n  });\n  _._script($scope0_id, \"__tests__/template.marko_0_tagName\");\n  _._scope($scope0_id, {\n    tagName\n  }, \"__tests__/template.marko\", 0, {\n    tagName: \"3:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-native/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button />\n<div>\n  Id is dynamic\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<div\n  id=\"dynamic\"\n/>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<div>\n  Id is dynamic\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-native/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <div>\n      Id is \n      <!---->\n      dynamic\n      <!--M_*2 #text/0-->\n    </div>\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          \"ConditionalRenderer:#text/1\": \"__tests__/tags/child.marko\",\n          tagName: _._[\n            \"__tests__/tags/child.marko\"\n            ]\n        }]),\n        \"__tests__/template.marko_0_tagName 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <div\n      id=\"dynamic\"\n    />\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          \"ConditionalRenderer:#text/1\": \"__tests__/tags/child.marko\",\n          tagName: _._[\n            \"__tests__/tags/child.marko\"\n            ]\n        }]),\n        \"__tests__/template.marko_0_tagName 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div\nREMOVE #comment after html/body/div\nREMOVE div after html/body/div\nREMOVE #text after html/body/div\nUPDATE html/body/div[id] null => \"dynamic\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <div>\n      Id is dynamic\n    </div>\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          \"ConditionalRenderer:#text/1\": \"__tests__/tags/child.marko\",\n          tagName: _._[\n            \"__tests__/tags/child.marko\"\n            ]\n        }]),\n        \"__tests__/template.marko_0_tagName 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div\nREMOVE div after html/body/div\nUPDATE html/body/div/#text1 \"\" => \"dynamic\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-native/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button />\n<div>\n  Id is dynamic\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-native/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button></button><!--M_*1 #button/0--><!--M_[--><div>Id is <!>dynamic<!--M_*2 #text/0--></div><!--M_]1 #text/1 2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{\"ConditionalRenderer:#text/1\":\"__tests__/tags/child.marko\",tagName:_._[\"__tests__/tags/child.marko\"]}]),\"__tests__/template.marko_0_tagName 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <div>\n      Id is \n      <!---->\n      dynamic\n      <!--M_*2 #text/0-->\n    </div>\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          \"ConditionalRenderer:#text/1\": \"__tests__/tags/child.marko\",\n          tagName: _._[\n            \"__tests__/tags/child.marko\"\n            ]\n        }]),\n        \"__tests__/template.marko_0_tagName 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/div\nINSERT html/body/div/#text0\nINSERT html/body/div/#comment0\nINSERT html/body/div/#text1\nINSERT html/body/div/#comment1\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-native/tags/child.marko",
    "content": "<attrs/{id}/>\n\n<div>Id is ${id}</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-native/template.marko",
    "content": "import child from \"<child>\";\n\n<let/tagName = child/>\n\n<button onClick() { tagName = tagName === child ? \"div\" : child } />\n\n<${tagName} id=\"dynamic\" />"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-native/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-tags/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"a\",\n      \"$$setup$1\": \"i\",\n      \"$$input$1\": \"o\",\n      \"$child1\": \"m\",\n      \"$$setup\": \"e\",\n      \"$$input\": \"r\",\n      \"$child2\": \"c\",\n      \"$$dynamicTag\": \"l\",\n      \"$$tagName__OR__val\": \"d\",\n      \"$$tagName__script\": \"_\",\n      \"$$tagName\": \"n\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-tags/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  Child 1 has 3\n</div>\n<button />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Child 2 has 3\n</div>\n<button />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Child 1 has 3\n</div>\n<button />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-tags/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<div>\n  Child 1 has 3\n</div>\n<button />\n```\n\n# Mutations\n```\nINSERT #comment, div, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<div>\n  Child 2 has 3\n</div>\n<button />\n```\n\n# Mutations\n```\nINSERT div\nREMOVE div after div\nUPDATE div/#text1 \"\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<div>\n  Child 1 has 3\n</div>\n<button />\n```\n\n# Mutations\n```\nINSERT div\nREMOVE div after div\nUPDATE div/#text1 \"\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-tags/__snapshots__/dom.expected/tags/child1.js",
    "content": "export const $template = \"<div>Child 1 has <!></div>\";\nexport const $walks = /* next(1), over(1), replace, out(1) */\"Db%l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $value = ($scope, value) => _._text($scope[\"#text/0\"], value);\nexport const $input = ($scope, input) => $value($scope, input.value);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child1.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-tags/__snapshots__/dom.expected/tags/child2.js",
    "content": "export const $template = \"<div>Child 2 has <!></div>\";\nexport const $walks = /* next(1), over(1), replace, out(1) */\"Db%l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $value = ($scope, value) => _._text($scope[\"#text/0\"], value);\nexport const $input = ($scope, input) => $value($scope, input.value);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child2.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-tags/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 411 (min) 221 (brotli)\nconst $setup$1 = () => {},\n  $input$1 = ($scope, input) =>\n    (($scope, value) => _._text($scope.a, value))($scope, input.value);\nvar child1 = _._template(\n  \"a\",\n  \"<div>Child 1 has <!></div>\",\n  \"Db%l\",\n  $setup$1,\n  $input$1,\n);\nconst $setup = () => {},\n  $input = ($scope, input) =>\n    (($scope, value) => _._text($scope.a, value))($scope, input.value);\nvar child2 = _._template(\n  \"b\",\n  \"<div>Child 2 has <!></div>\",\n  \"Db%l\",\n  $setup,\n  $input,\n);\nconst $dynamicTag = _._dynamic_tag(0),\n  $tagName__OR__val = _._or(4, ($scope) =>\n    $dynamicTag($scope, $scope.c, () => ({ value: $scope.d })),\n  ),\n  $tagName__script = _._script(\"c0\", ($scope) =>\n    _._on($scope.b, \"click\", function () {\n      $tagName($scope, $scope.c === child1 ? child2 : child1);\n    }),\n  ),\n  $tagName = _._let(2, ($scope) => {\n    ($tagName__OR__val($scope), $tagName__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-tags/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><button></button>\";\nexport const $walks = /* over(1), replace, over(1), get, over(1) */\"b%b b\";\nimport child1 from \"./tags/child1.marko\";\nimport child2 from \"./tags/child2.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\");\nconst $tagName__OR__val = /* @__PURE__ */_._or(4, $scope => $dynamicTag($scope, $scope.tagName, () => ({\n  value: $scope.val\n})));\nconst $tagName__script = _._script(\"__tests__/template.marko_0_tagName\", $scope => _._on($scope[\"#button/1\"], \"click\", function () {\n  $tagName($scope, $scope.tagName === child1 ? child2 : child1);\n}));\nconst $tagName = /* @__PURE__ */_._let(\"tagName/2\", $scope => {\n  $tagName__OR__val($scope);\n  $tagName__script($scope);\n});\nconst $val = /* @__PURE__ */_._let(\"val/3\", $tagName__OR__val);\nexport function $setup($scope) {\n  $tagName($scope, child1);\n  $val($scope, 3);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-tags/__snapshots__/html.expected/tags/child1.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child1.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    value\n  } = input;\n  _._html(`<div>Child 1 has ${_._sep(_._serialize_guard($scope0_reason, /* input.value */0))}${_._escape(value)}${_._el_resume($scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.value */0))}</div>`);\n  _._serialize_if($scope0_reason, /* input.value */0) && _._scope($scope0_id, {}, \"__tests__/tags/child1.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-tags/__snapshots__/html.expected/tags/child2.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child2.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    value\n  } = input;\n  _._html(`<div>Child 2 has ${_._sep(_._serialize_guard($scope0_reason, /* input.value */0))}${_._escape(value)}${_._el_resume($scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.value */0))}</div>`);\n  _._serialize_if($scope0_reason, /* input.value */0) && _._scope($scope0_id, {}, \"__tests__/tags/child2.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-tags/__snapshots__/html.expected/template.js",
    "content": "import child1 from \"./tags/child1.marko\";\nimport child2 from \"./tags/child2.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let tagName = child1;\n  let val = 3;\n  _._dynamic_tag($scope0_id, \"#text/0\", tagName, {\n    value: val\n  });\n  _._html(`<button></button>${_._el_resume($scope0_id, \"#button/1\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_tagName\");\n  _._scope($scope0_id, {\n    tagName,\n    val\n  }, \"__tests__/template.marko\", 0, {\n    tagName: \"4:6\",\n    val: \"5:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-tags/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  Child 1 has 3\n</div>\n<button />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Child 2 has 3\n</div>\n<button />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Child 1 has 3\n</div>\n<button />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-tags/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <!--M_[-->\n    <div>\n      Child 1 has \n      <!---->\n      3\n      <!--M_*2 #text/0-->\n    </div>\n    <!--M_]1 #text/0 2-->\n    <button />\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          \"ConditionalRenderer:#text/0\": \"__tests__/tags/child1.marko\",\n          tagName: _._[\n            \"__tests__/tags/child1.marko\"\n            ],\n          val: 3\n        }]),\n        \"__tests__/template.marko_0_tagName 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/#comment0 before html\nINSERT html/body/#comment0\nINSERT html/body/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      Child 2 has 3\n    </div>\n    <!--M_]1 #text/0 2-->\n    <button />\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          \"ConditionalRenderer:#text/0\": \"__tests__/tags/child1.marko\",\n          tagName: _._[\n            \"__tests__/tags/child1.marko\"\n            ],\n          val: 3\n        }]),\n        \"__tests__/template.marko_0_tagName 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div\nREMOVE #comment after html/body/div\nREMOVE div after html/body/div\nREMOVE #text after html/body/div\nUPDATE html/body/div/#text1 \"\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      Child 1 has 3\n    </div>\n    <!--M_]1 #text/0 2-->\n    <button />\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          \"ConditionalRenderer:#text/0\": \"__tests__/tags/child1.marko\",\n          tagName: _._[\n            \"__tests__/tags/child1.marko\"\n            ],\n          val: 3\n        }]),\n        \"__tests__/template.marko_0_tagName 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div\nREMOVE div after html/body/div\nUPDATE html/body/div/#text1 \"\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-tags/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  Child 1 has 3\n</div>\n<button />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-tags/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <!--M_[--><div>Child 1 has <!>3<!--M_*2 #text/0--></div><!--M_]1 #text/0 2--><button></button><!--M_*1 #button/1--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{\"ConditionalRenderer:#text/0\":\"__tests__/tags/child1.marko\",tagName:_._[\"__tests__/tags/child1.marko\"],val:3}]),\"__tests__/template.marko_0_tagName 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<!--M_[-->\n<html>\n  <head />\n  <body>\n    <div>\n      Child 1 has \n      <!---->\n      3\n      <!--M_*2 #text/0-->\n    </div>\n    <!--M_]1 #text/0 2-->\n    <button />\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          \"ConditionalRenderer:#text/0\": \"__tests__/tags/child1.marko\",\n          tagName: _._[\n            \"__tests__/tags/child1.marko\"\n            ],\n          val: 3\n        }]),\n        \"__tests__/template.marko_0_tagName 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT #comment\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text0\nINSERT html/body/div/#comment0\nINSERT html/body/div/#text1\nINSERT html/body/div/#comment1\nINSERT html/body/#comment0\nINSERT html/body/button\nINSERT html/body/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-tags/tags/child1.marko",
    "content": "<attrs/{value}/>\n\n<div>Child 1 has ${value}</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-tags/tags/child2.marko",
    "content": "<attrs/{value}/>\n\n<div>Child 2 has ${value}</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-tags/template.marko",
    "content": "import child1 from \"<child1>\";\nimport child2 from \"<child2>\";\n\n<let/tagName = child1/>\n<let/val = 3/>\n\n<${tagName} value=val />\n\n<button onClick() { tagName = tagName === child1 ? child2 : child1 } />"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-tags/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-input-intersection/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"m\",\n      \"$$dynamicTag\": \"o\",\n      \"$$inputAs__OR__inputClass__OR__htmlInput__OR__content\": \"e\",\n      \"$$content\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-input-intersection/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  class=\"foo\"\n>\n  default\n</div>\n<span\n  class=\"foo\"\n>\n  default\n</span>\n```\n\n\n# Render ASYNC\n```html\n<div\n  class=\"foo\"\n>\n  Div\n</div>\n<span\n  class=\"foo\"\n>\n  Span\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-input-intersection/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<!---->\n<div\n  class=\"foo\"\n>\n  default\n</div>\n<!---->\n<!---->\n<span\n  class=\"foo\"\n>\n  default\n</span>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, div, #comment2, #comment3, span, #comment4, #comment5\n```\n\n# Render ASYNC\n```html\n<!---->\n<!---->\n<div\n  class=\"foo\"\n>\n  Div\n</div>\n<!---->\n<!---->\n<span\n  class=\"foo\"\n>\n  Span\n</span>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nREMOVE #text in div\nINSERT div/#text\nREMOVE #text in span\nINSERT span/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-input-intersection/__snapshots__/dom.expected/tags/my-tag.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\n_._resume_dynamic_tag();\nconst $startContent_content = /* @__PURE__ */_._content(\"__tests__/tags/my-tag.marko_1_content\", \"default\", /* over(1) */\"b\");\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\");\nconst $inputAs__OR__inputClass__OR__htmlInput__OR__content = /* @__PURE__ */_._or(9, $scope => $dynamicTag($scope, $scope.inputAs || \"div\", () => ({\n  ...$scope.htmlInput,\n  class: [\"foo\", $scope.inputClass],\n  content: $scope.content\n})), 3);\nconst $content = /* @__PURE__ */_._let(\"content/8\", $inputAs__OR__inputClass__OR__htmlInput__OR__content);\nconst $startContent = ($scope, startContent) => $content($scope, startContent);\nexport function $setup($scope) {\n  $startContent($scope, {\n    content: $startContent_content($scope)\n  });\n}\nexport const $inputAs = /* @__PURE__ */_._const(\"inputAs\", $inputAs__OR__inputClass__OR__htmlInput__OR__content);\nexport const $inputClass = /* @__PURE__ */_._const(\"inputClass\", $inputAs__OR__inputClass__OR__htmlInput__OR__content);\nexport const $htmlInput = /* @__PURE__ */_._const(\"htmlInput\", $inputAs__OR__inputClass__OR__htmlInput__OR__content);\nconst $inputContent__script = _._script(\"__tests__/tags/my-tag.marko_0_inputContent\", $scope => $content($scope, $scope.inputContent));\nexport const $inputContent = /* @__PURE__ */_._const(\"inputContent\", $inputContent__script);\nexport const $input = ($scope, input) => {\n  (({\n    as,\n    class: $class,\n    content,\n    ...htmlInput\n  }) => $htmlInput($scope, htmlInput))(input);\n  $inputAs($scope, input.as);\n  $inputClass($scope, input.class);\n  $inputContent($scope, input.content);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/my-tag.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-input-intersection/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 242 (min) 164 (brotli)\n_._resume_dynamic_tag();\nconst $dynamicTag = _._dynamic_tag(0),\n  $inputAs__OR__inputClass__OR__htmlInput__OR__content = _._or(\n    9,\n    ($scope) =>\n      $dynamicTag($scope, $scope.d || \"div\", () => ({\n        ...$scope.g,\n        class: [\"foo\", $scope.e],\n        content: $scope.i,\n      })),\n    3,\n  ),\n  $content = _._let(8, $inputAs__OR__inputClass__OR__htmlInput__OR__content);\n(_._script(\"a1\", ($scope) => $content($scope, $scope.f)),\n  _._content_resume(\"b0\", \"Span\", \"b\"),\n  _._content_resume(\"b1\", \"Div\", \"b\"),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-input-intersection/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<!>${_myTag_template}${_myTag_template}<!>`;\nexport const $walks = /* over(1), <my-tag>, <my-tag>, over(1) */`b/${_myTag_walks}&/${_myTag_walks}&b`;\nimport { $setup as _myTag, $inputContent as _myTag_input_content, $inputAs as _myTag_input_as, $inputClass as _myTag_input_class, $htmlInput as _myTag_input_$rest, $template as _myTag_template, $walks as _myTag_walks } from \"./tags/my-tag.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $mytag_content2 = _._content_resume(\"__tests__/template.marko_2_content\", \"Span\", /* over(1) */\"b\");\nconst $mytag_content = _._content_resume(\"__tests__/template.marko_1_content\", \"Div\", /* over(1) */\"b\");\nexport function $setup($scope) {\n  _myTag($scope[\"#childScope/0\"]);\n  _myTag_input_content($scope[\"#childScope/0\"], $mytag_content($scope));\n  _myTag_input_as($scope[\"#childScope/0\"]);\n  _myTag_input_class($scope[\"#childScope/0\"]);\n  _myTag_input_$rest($scope[\"#childScope/0\"], {});\n  _myTag($scope[\"#childScope/1\"]);\n  _myTag_input_content($scope[\"#childScope/1\"], $mytag_content2($scope));\n  _myTag_input_as($scope[\"#childScope/1\"], \"span\");\n  _myTag_input_class($scope[\"#childScope/1\"]);\n  _myTag_input_$rest($scope[\"#childScope/1\"], {});\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-input-intersection/__snapshots__/html.expected/tags/my-tag.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/my-tag.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    as: inputAs,\n    class: inputClass,\n    content: inputContent,\n    ...htmlInput\n  } = input;\n  const startContent = {\n    content: _._content(\"__tests__/tags/my-tag.marko_1_content\", () => {\n      const $scope1_id = _._scope_id();\n      _._scope_reason();\n      _._html(\"default\");\n    })\n  };\n  let content = startContent;\n  _._dynamic_tag($scope0_id, \"#text/0\", inputAs || \"div\", {\n    ...htmlInput,\n    class: [\"foo\", inputClass],\n    content: content\n  });\n  _._script($scope0_id, \"__tests__/tags/my-tag.marko_0_inputContent\");\n  _._scope($scope0_id, {\n    inputAs,\n    inputClass,\n    inputContent,\n    htmlInput,\n    content: _._serialize_if($scope0_reason, /* input.as, input.class, htmlInput */0) && content\n  }, \"__tests__/tags/my-tag.marko\", 0, {\n    inputAs: \"1:13\",\n    inputClass: \"1:29\",\n    inputContent: \"1:50\",\n    htmlInput: \"1:67\",\n    content: \"6:5\"\n  });\n  _._resume_branch($scope0_id);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-input-intersection/__snapshots__/html.expected/template.js",
    "content": "import _myTag from \"./tags/my-tag.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _myTag({\n    content: _._content_resume(\"__tests__/template.marko_1_content\", () => {\n      _._scope_reason();\n      const $scope1_id = _._scope_id();\n      _._html(\"Div\");\n    }, $scope0_id)\n  });\n  _myTag({\n    as: \"span\",\n    content: _._content_resume(\"__tests__/template.marko_2_content\", () => {\n      _._scope_reason();\n      const $scope2_id = _._scope_id();\n      _._html(\"Span\");\n    }, $scope0_id)\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-input-intersection/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  class=\"foo\"\n>\n  default\n</div>\n<span\n  class=\"foo\"\n>\n  default\n</span>\n```\n\n\n# Render ASYNC\n```html\n<div\n  class=\"foo\"\n>\n  Div\n</div>\n<span\n  class=\"foo\"\n>\n  Span\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-input-intersection/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div\n      class=\"foo\"\n    >\n      <!--M_[-->\n      default\n      <!--M_]3 #div/0 4-->\n    </div>\n    <!--M_'2 #text/0 3-->\n    <span\n      class=\"foo\"\n    >\n      <!--M_[-->\n      default\n      <!--M_]6 #span/0 7-->\n    </span>\n    <!--M_'5 #text/0 6-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, 1, _.a = {\n          \"ConditionalRenderer:#text/0\": \"div\",\n          inputContent: _.e = {},\n          htmlInput:\n          {}\n        },\n        {\n          \"ConditionalRenderer:#div/0\": _.c =\n            \"__tests__/tags/my-tag.marko_1_content\"\n        }, 1, _.b = {\n          \"ConditionalRenderer:#text/0\": \"span\",\n          inputAs: \"span\",\n          htmlInput:\n          {}\n        },\n        {\n          \"ConditionalRenderer:#span/0\": _.c\n        }], _.a.inputContent = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.e), _.b.inputContent = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.e), _.d),\n        \"__tests__/tags/my-tag.marko_0_inputContent 2 5\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text1\nINSERT html/body/span/#text1\n```\n\n# Render ASYNC\n```html\n<html>\n  <head />\n  <body>\n    <div\n      class=\"foo\"\n    >\n      Div\n    </div>\n    <!--M_'2 #text/0 3-->\n    <span\n      class=\"foo\"\n    >\n      Span\n    </span>\n    <!--M_'5 #text/0 6-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, 1, _.a = {\n          \"ConditionalRenderer:#text/0\": \"div\",\n          inputContent: _.e = {},\n          htmlInput:\n          {}\n        },\n        {\n          \"ConditionalRenderer:#div/0\": _.c =\n            \"__tests__/tags/my-tag.marko_1_content\"\n        }, 1, _.b = {\n          \"ConditionalRenderer:#text/0\": \"span\",\n          inputAs: \"span\",\n          htmlInput:\n          {}\n        },\n        {\n          \"ConditionalRenderer:#span/0\": _.c\n        }], _.a.inputContent = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.e), _.b.inputContent = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.e), _.d),\n        \"__tests__/tags/my-tag.marko_0_inputContent 2 5\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #comment, #text, #text, #comment in html/body/div\nINSERT html/body/div/#text\nREMOVE #comment, #text, #text, #comment in html/body/span\nINSERT html/body/span/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-input-intersection/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div\n  class=\"foo\"\n>\n  default\n</div>\n<span\n  class=\"foo\"\n>\n  default\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-input-intersection/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div class=foo><!--M_[-->default<!--M_]3 #div/0 4--></div><!--M_'2 #text/0 3--><span class=foo><!--M_[-->default<!--M_]6 #span/0 7--></span><!--M_'5 #text/0 6--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.d=[0,1,_.a={\"ConditionalRenderer:#text/0\":\"div\",inputContent:_.e={},htmlInput:{}},{\"ConditionalRenderer:#div/0\":_.c=\"__tests__/tags/my-tag.marko_1_content\"},1,_.b={\"ConditionalRenderer:#text/0\":\"span\",inputAs:\"span\",htmlInput:{}},{\"ConditionalRenderer:#span/0\":_.c}],_.a.inputContent=_._[\"__tests__/template.marko_1_content\"](_.e),_.b.inputContent=_._[\"__tests__/template.marko_2_content\"](_.e),_.d),\"__tests__/tags/my-tag.marko_0_inputContent 2 5\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div\n      class=\"foo\"\n    >\n      <!--M_[-->\n      default\n      <!--M_]3 #div/0 4-->\n    </div>\n    <!--M_'2 #text/0 3-->\n    <span\n      class=\"foo\"\n    >\n      <!--M_[-->\n      default\n      <!--M_]6 #span/0 7-->\n    </span>\n    <!--M_'5 #text/0 6-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, 1, _.a = {\n          \"ConditionalRenderer:#text/0\": \"div\",\n          inputContent: _.e = {},\n          htmlInput:\n          {}\n        },\n        {\n          \"ConditionalRenderer:#div/0\": _.c =\n            \"__tests__/tags/my-tag.marko_1_content\"\n        }, 1, _.b = {\n          \"ConditionalRenderer:#text/0\": \"span\",\n          inputAs: \"span\",\n          htmlInput:\n          {}\n        },\n        {\n          \"ConditionalRenderer:#span/0\": _.c\n        }], _.a.inputContent = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.e), _.b.inputContent = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.e), _.d),\n        \"__tests__/tags/my-tag.marko_0_inputContent 2 5\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#comment0\nINSERT html/body/div/#text\nINSERT html/body/div/#comment1\nINSERT html/body/#comment0\nINSERT html/body/span\nINSERT html/body/span/#comment0\nINSERT html/body/span/#text\nINSERT html/body/span/#comment1\nINSERT html/body/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-input-intersection/tags/my-tag.marko",
    "content": "const/{ as: inputAs, class: inputClass, content: inputContent, ...htmlInput }=input\n\ndefine/startContent\n  -- default\n\nlet/content=startContent\n\n${inputAs || \"div\"} ...htmlInput class=[\"foo\", inputClass] content=content\n\nscript --\n  content = inputContent;"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-input-intersection/template.marko",
    "content": "my-tag -- Div\nmy-tag as=\"span\" -- Span"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-input-intersection/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{}, wait],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-multiple/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"m\",\n      \"$init\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-multiple/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <div>\n    hi\n  </div>\n</div>\n<div>\n  <div>\n    hi\n  </div>\n</div>\n<div>\n  <div>\n    hi\n  </div>\n</div>\n<div>\n  <div>\n    hi\n  </div>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-multiple/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  <!---->\n  <div>\n    hi\n  </div>\n  <!---->\n</div>\n<div>\n  <!---->\n  <div>\n    hi\n  </div>\n  <!---->\n</div>\n<div>\n  <!---->\n  <div>\n    hi\n  </div>\n  <!---->\n</div>\n<div>\n  <!---->\n  <div>\n    hi\n  </div>\n  <!---->\n</div>\n```\n\n# Mutations\n```\nINSERT div0, div1, div2, div3\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-multiple/__snapshots__/dom.expected/tags/wrapper.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\n_._resume_dynamic_tag();\nconst $inputAsdiv_content = _._content_resume(\"__tests__/tags/wrapper.marko_1_content\", \"hi\", /* over(1) */\"b\");\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\", $inputAsdiv_content);\nconst $inputAs__OR__htmlInput = /* @__PURE__ */_._or(5, $scope => $dynamicTag($scope, $scope.inputAs || \"div\", () => $scope.htmlInput));\nexport const $inputAs = /* @__PURE__ */_._const(\"inputAs\", $inputAs__OR__htmlInput);\nexport const $htmlInput = /* @__PURE__ */_._const(\"htmlInput\", $inputAs__OR__htmlInput);\nexport const $input = ($scope, input) => {\n  (({\n    as,\n    ...htmlInput\n  }) => $htmlInput($scope, htmlInput))(input);\n  $inputAs($scope, input.as);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/wrapper.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-multiple/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 61 (min) 63 (brotli)\n(_._resume_dynamic_tag(), _._content_resume(\"a0\", \"hi\", \"b\"), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-multiple/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<div>${_wrapper_template}</div><div>${_wrapper_template}</div><div>${_wrapper_template}</div><div>${_wrapper_template}</div>`;\nexport const $walks = /* next(1), <wrapper>, out(1), next(1), <wrapper>, out(1), next(1), <wrapper>, out(1), next(1), <wrapper>, out(1) */`D/${_wrapper_walks}&lD/${_wrapper_walks}&lD/${_wrapper_walks}&lD/${_wrapper_walks}&l`;\nimport { $setup as _wrapper, $inputAs as _wrapper_input_as, $htmlInput as _wrapper_input_$rest, $template as _wrapper_template, $walks as _wrapper_walks } from \"./tags/wrapper.marko\";\nexport function $setup($scope) {\n  _wrapper($scope[\"#childScope/0\"]);\n  _wrapper_input_as($scope[\"#childScope/0\"]);\n  _wrapper_input_$rest($scope[\"#childScope/0\"], {});\n  _wrapper($scope[\"#childScope/1\"]);\n  _wrapper_input_as($scope[\"#childScope/1\"]);\n  _wrapper_input_$rest($scope[\"#childScope/1\"], {});\n  _wrapper($scope[\"#childScope/2\"]);\n  _wrapper_input_as($scope[\"#childScope/2\"]);\n  _wrapper_input_$rest($scope[\"#childScope/2\"], {});\n  _wrapper($scope[\"#childScope/3\"]);\n  _wrapper_input_as($scope[\"#childScope/3\"]);\n  _wrapper_input_$rest($scope[\"#childScope/3\"], {});\n}\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-multiple/__snapshots__/html.expected/tags/wrapper.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/wrapper.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    as: inputAs,\n    ...htmlInput\n  } = input;\n  _._dynamic_tag($scope0_id, \"#text/0\", inputAs || \"div\", htmlInput, _._content_resume(\"__tests__/tags/wrapper.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    _._scope_reason();\n    _._html(\"hi\");\n  }, $scope0_id), 0, _._serialize_guard($scope0_reason, /* input.as, htmlInput */0));\n  _._serialize_if($scope0_reason, /* input.as, htmlInput */0) && _._scope($scope0_id, {\n    inputAs: _._serialize_if($scope0_reason, /* htmlInput */2) && inputAs,\n    htmlInput: _._serialize_if($scope0_reason, /* input.as */1) && htmlInput\n  }, \"__tests__/tags/wrapper.marko\", 0, {\n    inputAs: \"1:13\",\n    htmlInput: \"1:25\"\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-multiple/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _wrapper from \"./tags/wrapper.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div>\");\n  _wrapper({});\n  _._html(\"</div><div>\");\n  _wrapper({});\n  _._html(\"</div><div>\");\n  _wrapper({});\n  _._html(\"</div><div>\");\n  _wrapper({});\n  _._html(\"</div>\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-multiple/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <div>\n    hi\n  </div>\n</div>\n<div>\n  <div>\n    hi\n  </div>\n</div>\n<div>\n  <div>\n    hi\n  </div>\n</div>\n<div>\n  <div>\n    hi\n  </div>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-multiple/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <div>\n        hi\n      </div>\n    </div>\n    <div>\n      <div>\n        hi\n      </div>\n    </div>\n    <div>\n      <div>\n        hi\n      </div>\n    </div>\n    <div>\n      <div>\n        hi\n      </div>\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-multiple/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  <div>\n    hi\n  </div>\n</div>\n<div>\n  <div>\n    hi\n  </div>\n</div>\n<div>\n  <div>\n    hi\n  </div>\n</div>\n<div>\n  <div>\n    hi\n  </div>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-multiple/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><div>hi</div></div><div><div>hi</div></div><div><div>hi</div></div><div><div>hi</div></div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <div>\n        hi\n      </div>\n    </div>\n    <div>\n      <div>\n        hi\n      </div>\n    </div>\n    <div>\n      <div>\n        hi\n      </div>\n    </div>\n    <div>\n      <div>\n        hi\n      </div>\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/div0/div\nINSERT html/body/div0/div/#text\nINSERT html/body/div1\nINSERT html/body/div1/div\nINSERT html/body/div1/div/#text\nINSERT html/body/div2\nINSERT html/body/div2/div\nINSERT html/body/div2/div/#text\nINSERT html/body/div3\nINSERT html/body/div3/div\nINSERT html/body/div3/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-multiple/tags/wrapper.marko",
    "content": "const/{ as: inputAs, ...htmlInput}=input\n\n<${inputAs || \"div\"} ...htmlInput>\n  hi\n</>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-multiple/template.marko",
    "content": "<div>\n    <wrapper/>\n</div>\n<div>\n    <wrapper/>\n</div>\n<div>\n    <wrapper/>\n</div>\n<div>\n    <wrapper/>\n</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-name/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"o\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-name/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<h2\n  class=\"a b\"\n/>\n<div\n  class=\"a b\"\n>\n  B \n</div>\nBody content\n<div\n  class=\"a b\"\n>\n  A \n</div>\n<h2\n  class=\"a b\"\n/>\n<ab\n  class=\"a b\"\n/>\n<hundefined\n  class=\"a b\"\n/>\n<hundefined\n  class=\"a b\"\n/>\n<a\n  class=\"a b\"\n/>\n<h1 />\n<div />\n<div />\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-name/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<h2\n  class=\"a b\"\n/>\n<div\n  class=\"a b\"\n>\n  B \n</div>\nBody content\n<div\n  class=\"a b\"\n>\n  A \n</div>\n<h2\n  class=\"a b\"\n/>\n<ab\n  class=\"a b\"\n/>\n<hundefined\n  class=\"a b\"\n/>\n<hundefined\n  class=\"a b\"\n/>\n<a\n  class=\"a b\"\n/>\n<h1 />\n<div />\n<div />\n<div />\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #text0, #text1, #text2, #text3, h20, div0, #text4, #text5, div1, h21, ab, hundefined0, hundefined1, a, #text6, h1, div2, div3, div4, #comment1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-name/__snapshots__/dom.expected/tags/tag-a/index.js",
    "content": "export const $template = \"<div>A <!></div>\";\nexport const $walks = /* get, next(1), over(1), replace, out(1) */\" Db%l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $className = ($scope, className) => _._attr_class($scope[\"#div/0\"], className);\nexport const $other = ($scope, other) => _._attr($scope[\"#div/0\"], \"data-other\", other);\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/1\");\nexport const $content = ($scope, content) => $dynamicTag($scope, content);\nexport const $input = ($scope, input) => {\n  $className($scope, input.class);\n  $other($scope, input.other);\n  $content($scope, input.content);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/tag-a/index.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-name/__snapshots__/dom.expected/tags/tag-b/index.js",
    "content": "export const $template = \"<div>B <!></div>\";\nexport const $walks = /* get, next(1), over(1), replace, out(1) */\" Db%l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $className = ($scope, className) => _._attr_class($scope[\"#div/0\"], className);\nexport const $other = ($scope, other) => _._attr($scope[\"#div/0\"], \"data-other\", other);\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/1\");\nexport const $content = ($scope, content) => $dynamicTag($scope, content);\nexport const $input = ($scope, input) => {\n  $className($scope, input.class);\n  $other($scope, input.other);\n  $content($scope, input.content);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/tag-b/index.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-name/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 43 (min) 47 (brotli)\n_._content_resume(\"c0\", \"Body content\", \"b\");\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-name/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><!><!><!><!><!><!><!><!><!><!><!><!><!><!><!><!><!><!><!>\";\nexport const $walks = /* over(1), replace, over(1), replace, over(1), replace, over(1), replace, over(1), replace, over(1), replace, over(1), replace, over(1), replace, over(1), replace, over(1), replace, over(1), replace, over(1), replace, over(1), replace, over(1), replace, over(1), replace, over(1), replace, over(1), replace, over(1), replace, over(1), replace, over(2) */\"b%b%b%b%b%b%b%b%b%b%b%b%b%b%b%b%b%b%b%c\";\nimport tagA from \"./tags/tag-a/index.marko\";\nimport tagB from \"./tags/tag-b/index.marko\";\nconst foo = '';\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $showTagAtagA_content = _._content_resume(\"__tests__/template.marko_1_content\", \"Body content\", /* over(1) */\"b\");\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\");\nconst $content__OR__other = /* @__PURE__ */_._or(29, $scope => $dynamicTag($scope, $scope.content, () => ({\n  class: [\"a\", \"b\"],\n  other: $scope.other\n})));\nexport const $content = /* @__PURE__ */_._const(\"content\", $content__OR__other);\nconst $dynamicTag11 = /* @__PURE__ */_._dynamic_tag(\"#text/10\");\nconst $dynamicTag2 = /* @__PURE__ */_._dynamic_tag(\"#text/1\");\nconst $x__OR__other = /* @__PURE__ */_._or(30, $scope => $dynamicTag2($scope, $scope.x, () => ({\n  class: [\"a\", \"b\"],\n  other: $scope.other\n})));\nconst $dynamicTag3 = /* @__PURE__ */_._dynamic_tag(\"#text/2\");\nconst $dynamicTag4 = /* @__PURE__ */_._dynamic_tag(\"#text/3\");\nconst $show__OR__other = /* @__PURE__ */_._or(31, $scope => {\n  $dynamicTag3($scope, $scope.show ? \"div\" : null, () => ({\n    class: [\"a\", \"b\"],\n    other: $scope.other\n  }));\n  $dynamicTag4($scope, $scope.show && \"div\", () => ({\n    class: [\"a\", \"b\"],\n    other: $scope.other\n  }));\n});\nconst $dynamicTag5 = /* @__PURE__ */_._dynamic_tag(\"#text/4\");\nconst $isLarge__OR__other = /* @__PURE__ */_._or(33, $scope => $dynamicTag5($scope, $scope.isLarge ? \"h1\" : \"h2\", () => ({\n  class: [\"a\", \"b\"],\n  other: $scope.other\n})));\nconst $dynamicTag6 = /* @__PURE__ */_._dynamic_tag(\"#text/5\");\nconst $dynamicTag7 = /* @__PURE__ */_._dynamic_tag(\"#text/6\");\nconst $dynamicTag8 = /* @__PURE__ */_._dynamic_tag(\"#text/7\", $showTagAtagA_content);\nconst $showTagA__OR__other = /* @__PURE__ */_._or(32, $scope => {\n  $dynamicTag6($scope, $scope.showTagA ? tagA : tagB, () => ({\n    class: [\"a\", \"b\"],\n    other: $scope.other\n  }));\n  $dynamicTag7($scope, $scope.showTagA && tagA, () => ({\n    class: [\"a\", \"b\"],\n    other: $scope.other\n  }));\n  $dynamicTag8($scope, $scope.showTagA && tagA, () => ({\n    class: [\"a\", \"b\"],\n    other: $scope.other\n  }));\n});\nconst $dynamicTag9 = /* @__PURE__ */_._dynamic_tag(\"#text/8\");\nconst $tag__OR__other = /* @__PURE__ */_._or(34, $scope => $dynamicTag9($scope, $scope.tag || tagA, () => ({\n  class: [\"a\", \"b\"],\n  other: $scope.other\n})));\nconst $dynamicTag10 = /* @__PURE__ */_._dynamic_tag(\"#text/9\");\nconst $other__OR__largeHeading = /* @__PURE__ */_._or(37, $scope => $dynamicTag10($scope, $scope.largeHeading || \"h2\", () => ({\n  class: [\"a\", \"b\"],\n  other: $scope.other\n})));\nconst $dynamicTag12 = /* @__PURE__ */_._dynamic_tag(\"#text/11\");\nconst $dynamicTag13 = /* @__PURE__ */_._dynamic_tag(\"#text/12\");\nconst $level__OR__other = /* @__PURE__ */_._or(35, $scope => {\n  $dynamicTag12($scope, \"h\" + $scope.level, () => ({\n    class: [\"a\", \"b\"],\n    other: $scope.other\n  }));\n  $dynamicTag13($scope, `h${$scope.level}`, () => ({\n    class: [\"a\", \"b\"],\n    other: $scope.other\n  }));\n});\nconst $dynamicTag14 = /* @__PURE__ */_._dynamic_tag(\"#text/13\");\nconst $other__OR__tagConstA = /* @__PURE__ */_._or(39, $scope => $dynamicTag14($scope, $scope.tagConstA, () => ({\n  class: [\"a\", \"b\"],\n  other: $scope.other\n})));\nconst $dynamicTag15 = /* @__PURE__ */_._dynamic_tag(\"#text/14\");\nconst $other__OR__tagConstB = /* @__PURE__ */_._or(41, $scope => $dynamicTag15($scope, $scope.tagConstB, () => ({\n  class: [\"a\", \"b\"],\n  other: $scope.other\n})));\nexport const $other = /* @__PURE__ */_._const(\"other\", $scope => {\n  $dynamicTag11($scope, global.x = \"a\" + \"b\", () => ({\n    class: [\"a\", \"b\"],\n    other: $scope.other\n  }));\n  $content__OR__other($scope);\n  $x__OR__other($scope);\n  $show__OR__other($scope);\n  $isLarge__OR__other($scope);\n  $showTagA__OR__other($scope);\n  $tag__OR__other($scope);\n  $other__OR__largeHeading($scope);\n  $level__OR__other($scope);\n  $other__OR__tagConstA($scope);\n  $other__OR__tagConstB($scope);\n});\nexport const $x = /* @__PURE__ */_._const(\"x\", $x__OR__other);\nconst $tagConstB = /* @__PURE__ */_._const(\"tagConstB\", $other__OR__tagConstB);\nexport const $show = /* @__PURE__ */_._const(\"show\", $scope => {\n  $tagConstB($scope, $scope.show ? \"div\" : null);\n  $show__OR__other($scope);\n});\nconst $largeHeading = /* @__PURE__ */_._const(\"largeHeading\", $other__OR__largeHeading);\nexport const $isLarge = /* @__PURE__ */_._const(\"isLarge\", $scope => {\n  $largeHeading($scope, $scope.isLarge && \"h1\");\n  $isLarge__OR__other($scope);\n});\nexport const $showTagA = /* @__PURE__ */_._const(\"showTagA\", $showTagA__OR__other);\nexport const $tag = /* @__PURE__ */_._const(\"tag\", $tag__OR__other);\nexport const $level = /* @__PURE__ */_._const(\"level\", $level__OR__other);\nconst $tagConstA = /* @__PURE__ */_._const(\"tagConstA\", $other__OR__tagConstA);\nconst $dynamicTag16 = /* @__PURE__ */_._dynamic_tag(\"#text/15\");\nconst $dynamicTag17 = /* @__PURE__ */_._dynamic_tag(\"#text/16\");\nconst $dynamicTag18 = /* @__PURE__ */_._dynamic_tag(\"#text/17\");\nconst $dynamicTag19 = /* @__PURE__ */_._dynamic_tag(\"#text/18\");\nexport function $setup($scope) {\n  $tagConstA($scope, \"a\");\n  $dynamicTag16($scope, `h${1}`);\n  $dynamicTag17($scope, foo || 'div');\n  $dynamicTag18($scope, foo + 'div');\n  $dynamicTag19($scope, \"d\" + \"iv\");\n}\nexport const $input = ($scope, input) => {\n  $content($scope, input.content);\n  $x($scope, input.x);\n  $show($scope, input.show);\n  $showTagA($scope, input.showTagA);\n  $isLarge($scope, input.isLarge);\n  $tag($scope, input.tag);\n  $level($scope, input.level);\n  $other($scope, input.other);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-name/__snapshots__/html.expected/tags/tag-a/index.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/tag-a/index.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    class: className,\n    other,\n    content\n  } = input;\n  _._html(`<div${_._attr_class(className)}${_._attr(\"data-other\", other)}>A `);\n  _._dynamic_tag($scope0_id, \"#text/1\", content, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.content */2));\n  _._html(`</div>${_._el_resume($scope0_id, \"#div/0\", _._serialize_guard($scope0_reason, /* input.class, input.other */0))}`);\n  _._serialize_if($scope0_reason, /* input.class, input.other, input.content */1) && _._scope($scope0_id, {}, \"__tests__/tags/tag-a/index.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-name/__snapshots__/html.expected/tags/tag-b/index.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/tag-b/index.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    class: className,\n    other,\n    content\n  } = input;\n  _._html(`<div${_._attr_class(className)}${_._attr(\"data-other\", other)}>B `);\n  _._dynamic_tag($scope0_id, \"#text/1\", content, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.content */2));\n  _._html(`</div>${_._el_resume($scope0_id, \"#div/0\", _._serialize_guard($scope0_reason, /* input.class, input.other */0))}`);\n  _._serialize_if($scope0_reason, /* input.class, input.other, input.content */1) && _._scope($scope0_id, {}, \"__tests__/tags/tag-b/index.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-name/__snapshots__/html.expected/template.js",
    "content": "import tagA from \"./tags/tag-a/index.marko\";\nimport tagB from \"./tags/tag-b/index.marko\";\nconst foo = '';\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    content,\n    x,\n    show,\n    showTagA,\n    isLarge,\n    tag,\n    level,\n    other\n  } = input;\n  _._dynamic_tag($scope0_id, \"#text/0\", content, {\n    class: [\"a\", \"b\"],\n    other: other\n  }, 0, 0, _._serialize_guard($scope0_reason, /* input.content, input.other */0));\n  _._dynamic_tag($scope0_id, \"#text/1\", x, {\n    class: [\"a\", \"b\"],\n    other: other\n  }, 0, 0, _._serialize_guard($scope0_reason, /* input.x, input.other */1));\n  _._dynamic_tag($scope0_id, \"#text/2\", show ? \"div\" : null, {\n    class: [\"a\", \"b\"],\n    other: other\n  }, 0, 0, _._serialize_guard($scope0_reason, /* input.show, input.other */2));\n  _._dynamic_tag($scope0_id, \"#text/3\", show && \"div\", {\n    class: [\"a\", \"b\"],\n    other: other\n  }, 0, 0, _._serialize_guard($scope0_reason, /* input.show, input.other */2));\n  _._dynamic_tag($scope0_id, \"#text/4\", isLarge ? \"h1\" : \"h2\", {\n    class: [\"a\", \"b\"],\n    other: other\n  }, 0, 0, _._serialize_guard($scope0_reason, /* input.isLarge, input.other */4));\n  _._dynamic_tag($scope0_id, \"#text/5\", showTagA ? tagA : tagB, {\n    class: [\"a\", \"b\"],\n    other: other\n  }, 0, 0, _._serialize_guard($scope0_reason, /* input.showTagA, input.other */3));\n  _._dynamic_tag($scope0_id, \"#text/6\", showTagA && tagA, {\n    class: [\"a\", \"b\"],\n    other: other\n  }, 0, 0, _._serialize_guard($scope0_reason, /* input.showTagA, input.other */3));\n  _._dynamic_tag($scope0_id, \"#text/7\", showTagA && tagA, {\n    class: [\"a\", \"b\"],\n    other: other\n  }, _._content_resume(\"__tests__/template.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    _._scope_reason();\n    _._html(\"Body content\");\n  }, $scope0_id), 0, _._serialize_guard($scope0_reason, /* input.showTagA, input.other */3));\n  _._dynamic_tag($scope0_id, \"#text/8\", tag || tagA, {\n    class: [\"a\", \"b\"],\n    other: other\n  }, 0, 0, _._serialize_guard($scope0_reason, /* input.tag, input.other */5));\n  const largeHeading = isLarge && \"h1\";\n  _._dynamic_tag($scope0_id, \"#text/9\", largeHeading || \"h2\", {\n    class: [\"a\", \"b\"],\n    other: other\n  }, 0, 0, _._serialize_guard($scope0_reason, /* input.isLarge, input.other */4));\n  _._dynamic_tag($scope0_id, \"#text/10\", global.x = \"a\" + \"b\", {\n    class: [\"a\", \"b\"],\n    other: other\n  }, 0, 0, _._serialize_guard($scope0_reason, /* input.other */9));\n  _._dynamic_tag($scope0_id, \"#text/11\", \"h\" + level, {\n    class: [\"a\", \"b\"],\n    other: other\n  }, 0, 0, _._serialize_guard($scope0_reason, /* input.level, input.other */6));\n  _._dynamic_tag($scope0_id, \"#text/12\", `h${level}`, {\n    class: [\"a\", \"b\"],\n    other: other\n  }, 0, 0, _._serialize_guard($scope0_reason, /* input.level, input.other */6));\n  const tagConstA = \"a\";\n  _._dynamic_tag($scope0_id, \"#text/13\", tagConstA, {\n    class: [\"a\", \"b\"],\n    other: other\n  }, 0, 0, _._serialize_guard($scope0_reason, /* input.other */9));\n  const tagConstB = show ? \"div\" : null;\n  _._dynamic_tag($scope0_id, \"#text/14\", tagConstB, {\n    class: [\"a\", \"b\"],\n    other: other\n  }, 0, 0, _._serialize_guard($scope0_reason, /* input.show, input.other */2));\n  _._dynamic_tag($scope0_id, \"#text/15\", `h${1}`, {}, 0, 0, 0);\n  _._dynamic_tag($scope0_id, \"#text/16\", foo || 'div', {}, 0, 0, 0);\n  _._dynamic_tag($scope0_id, \"#text/17\", foo + 'div', {}, 0, 0, 0);\n  _._dynamic_tag($scope0_id, \"#text/18\", \"d\" + \"iv\", {}, 0, 0, 0);\n  _._serialize_if($scope0_reason, /* input.content, input.x, input.show, input.showTagA, input.isLarge, input.tag, input.level, input.other */8) && _._scope($scope0_id, {\n    content: _._serialize_if($scope0_reason, /* input.other */9) && content,\n    x: _._serialize_if($scope0_reason, /* input.other */9) && x,\n    show: _._serialize_if($scope0_reason, /* input.other */9) && show,\n    showTagA: _._serialize_if($scope0_reason, /* input.other */9) && showTagA,\n    isLarge: _._serialize_if($scope0_reason, /* input.other */9) && isLarge,\n    tag: _._serialize_if($scope0_reason, /* input.other */9) && tag,\n    level: _._serialize_if($scope0_reason, /* input.other */9) && level,\n    other: _._serialize_if($scope0_reason, /* input.content, input.x, input.show, input.showTagA, input.isLarge, input.tag, input.level */7) && other,\n    largeHeading: _._serialize_if($scope0_reason, /* input.other */9) && largeHeading,\n    tagConstA: _._serialize_if($scope0_reason, /* input.other */9) && tagConstA,\n    tagConstB: _._serialize_if($scope0_reason, /* input.other */9) && tagConstB\n  }, \"__tests__/template.marko\", 0, {\n    content: \"5:10\",\n    x: \"5:19\",\n    show: \"5:22\",\n    showTagA: \"5:28\",\n    isLarge: \"5:38\",\n    tag: \"5:47\",\n    level: \"5:52\",\n    other: \"5:59\",\n    largeHeading: \"23:8\",\n    tagConstA: \"30:8\",\n    tagConstB: \"33:8\"\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-name/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<h2\n  class=\"a b\"\n/>\n<div\n  class=\"a b\"\n>\n  B \n</div>\nBody content\n<div\n  class=\"a b\"\n>\n  A \n</div>\n<h2\n  class=\"a b\"\n/>\n<ab\n  class=\"a b\"\n/>\n<hundefined\n  class=\"a b\"\n/>\n<hundefined\n  class=\"a b\"\n/>\n<a\n  class=\"a b\"\n/>\n<h1 />\n<div />\n<div />\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-name/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <h2\n      class=\"a b\"\n    />\n    <div\n      class=\"a b\"\n    >\n      B \n    </div>\n    Body content\n    <div\n      class=\"a b\"\n    >\n      A \n    </div>\n    <h2\n      class=\"a b\"\n    />\n    <ab\n      class=\"a b\"\n    />\n    <hundefined\n      class=\"a b\"\n    />\n    <hundefined\n      class=\"a b\"\n    />\n    <a\n      class=\"a b\"\n    />\n    <h1 />\n    <div />\n    <div />\n    <div />\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-name/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<h2\n  class=\"a b\"\n/>\n<div\n  class=\"a b\"\n>\n  B \n</div>\nBody content\n<div\n  class=\"a b\"\n>\n  A \n</div>\n<h2\n  class=\"a b\"\n/>\n<ab\n  class=\"a b\"\n/>\n<hundefined\n  class=\"a b\"\n/>\n<hundefined\n  class=\"a b\"\n/>\n<a\n  class=\"a b\"\n/>\n<h1 />\n<div />\n<div />\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-name/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <h2 class=\"a b\"></h2><div class=\"a b\">B </div>Body content<div class=\"a b\">A </div><h2 class=\"a b\"></h2><ab class=\"a b\"></ab><hundefined class=\"a b\"></hundefined><hundefined class=\"a b\"></hundefined><a class=\"a b\"></a><h1></h1><div></div><div></div><div></div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <h2\n      class=\"a b\"\n    />\n    <div\n      class=\"a b\"\n    >\n      B \n    </div>\n    Body content\n    <div\n      class=\"a b\"\n    >\n      A \n    </div>\n    <h2\n      class=\"a b\"\n    />\n    <ab\n      class=\"a b\"\n    />\n    <hundefined\n      class=\"a b\"\n    />\n    <hundefined\n      class=\"a b\"\n    />\n    <a\n      class=\"a b\"\n    />\n    <h1 />\n    <div />\n    <div />\n    <div />\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/h20\nINSERT html/body/div0\nINSERT html/body/div0/#text\nINSERT html/body/#text\nINSERT html/body/div1\nINSERT html/body/div1/#text\nINSERT html/body/h21\nINSERT html/body/ab\nINSERT html/body/hundefined0\nINSERT html/body/hundefined1\nINSERT html/body/a\nINSERT html/body/h1\nINSERT html/body/div2\nINSERT html/body/div3\nINSERT html/body/div4\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-name/tags/tag-a/index.marko",
    "content": "<const/{ class: className, other, content }=input/>\n<div class=className data-other=other>\n  A\n  <${content}/>\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-name/tags/tag-b/index.marko",
    "content": "<const/{ class: className, other, content }=input/>\n<div class=className data-other=other>\n  B\n  <${content}/>\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-name/template.marko",
    "content": "import tagA from \"./tags/tag-a/index.marko\";\nimport tagB from \"<tag-b>\";\nstatic const foo = '';\n\n<attrs/{ content, x, show, showTagA, isLarge, tag, level, other }/>\n\n<${content} class=[\"a\", \"b\"] other=other/>\n<${x} class=[\"a\", \"b\"] other=other/>\n\n<${show ? \"div\" : null} class=[\"a\", \"b\"] other=other/>\n<${show && \"div\"} class=[\"a\", \"b\"] other=other/>\n\n<${isLarge ? \"h1\" : \"h2\"} class=[\"a\", \"b\"] other=other/>\n\n<${showTagA ? tagA : tagB} class=[\"a\", \"b\"] other=other class=[\"a\", \"b\"] other=other/>\n<${showTagA && tagA} class=[\"a\", \"b\"] other=other/>\n<${showTagA && tagA} class=[\"a\", \"b\"] other=other>\n  Body content\n</>\n\n<${tag || tagA} class=[\"a\", \"b\"] other=other/>\n\n<const/largeHeading = isLarge && \"h1\"/>\n<${largeHeading || \"h2\"} class=[\"a\", \"b\"] other=other/>\n\n<${global.x = \"a\" + \"b\"} class=[\"a\", \"b\"] other=other/>\n<${\"h\" + level} class=[\"a\", \"b\"] other=other/>\n<${`h${level}`} class=[\"a\", \"b\"] other=other/>\n\n<const/tagConstA = \"a\"/>\n<${tagConstA} class=[\"a\", \"b\"] other=other/>\n\n<const/tagConstB = show ? \"div\" : null/>\n<${tagConstB} class=[\"a\", \"b\"] other=other/>\n\n<${`h${1}`} />\n<${foo || 'div'} />\n<${foo + 'div'} />\n<${\"d\" + \"iv\"} />"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-native/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-native/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<p\n  class=\"par\"\n>\n  paragraph\n</p>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-native/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<p\n  class=\"par\"\n>\n  paragraph\n</p>\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, p, #comment1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-native/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-native/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><p class=par>paragraph</p><!>\";\nexport const $walks = /* over(3) */\"d\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-native/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<p class=par>paragraph</p>\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-native/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<p\n  class=\"par\"\n>\n  paragraph\n</p>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-native/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <p\n      class=\"par\"\n    >\n      paragraph\n    </p>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-native/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<p\n  class=\"par\"\n>\n  paragraph\n</p>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-native/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <p class=par>paragraph</p>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <p\n      class=\"par\"\n    >\n      paragraph\n    </p>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/p\nINSERT html/body/p/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-native/template.marko",
    "content": "<${\"p\"}.par>paragraph</>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-single-arg/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$input\": \"m\",\n      \"$$setup\": \"r\",\n      \"$tags\": \"a\",\n      \"$$dynamicTag\": \"i\",\n      \"$$x__script\": \"n\",\n      \"$$x\": \"e\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-single-arg/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Count: 1\n</button>\n<div>\n  1\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Count: 2\n</button>\n<div>\n  2\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Count: 3\n</button>\n<div>\n  3\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Count: 4\n</button>\n<div>\n  4\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-single-arg/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  Count: 1\n</button>\n<div>\n  1\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT button, div, #comment\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Count: 2\n</button>\n<div>\n  2\n</div>\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text1 \"1\" => \"2\"\nUPDATE div/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Count: 3\n</button>\n<div>\n  3\n</div>\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text1 \"2\" => \"3\"\nUPDATE div/#text \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Count: 4\n</button>\n<div>\n  4\n</div>\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text1 \"3\" => \"4\"\nUPDATE div/#text \"3\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-single-arg/__snapshots__/dom.expected/tags/custom-tag.js",
    "content": "export const $template = \"<div> </div>\";\nexport const $walks = /* next(1), get, out(1) */\"D l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $input = ($scope, input) => _._text($scope[\"#text/0\"], input);\nexport function $setup($scope) {\n  _._return($scope, \"hello from other\");\n}\nexport default /* @__PURE__ */_._template(\"__tests__/tags/custom-tag.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-single-arg/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 280 (min) 192 (brotli)\nconst $input = ($scope, input) => _._text($scope.a, input);\nfunction $setup($scope) {\n  _._return($scope, \"hello from other\");\n}\nconst tags = [_._template(\"a\", \"<div> </div>\", \"D l\", $setup, $input)],\n  $dynamicTag = _._dynamic_tag(2, 0, 0, 1),\n  $x__script = _._script(\"b0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $x($scope, $scope.d + 1);\n    }),\n  ),\n  $x = _._let(3, ($scope) => {\n    (_._text($scope.b, $scope.d),\n      $dynamicTag($scope, tags[0], () => [$scope.d]),\n      $x__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-single-arg/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button>Count: <!></button><!><!>\";\nexport const $walks = /* get, next(1), over(1), replace, out(1), replace, over(2) */\" Db%l%c\";\nimport customTag from './tags/custom-tag.marko';\nconst tags = [customTag];\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/2\", 0, 0, 1);\nconst $x__script = _._script(\"__tests__/template.marko_0_x\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $x($scope, $scope.x + 1);\n}));\nconst $x = /* @__PURE__ */_._let(\"x/3\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.x);\n  $dynamicTag($scope, tags[0], () => [$scope.x]);\n  $x__script($scope);\n});\nexport function $setup($scope) {\n  $x($scope, 1);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-single-arg/__snapshots__/html.expected/tags/custom-tag.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/custom-tag.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div>${_._escape(input)}${_._el_resume($scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input */0))}</div>`);\n  const $return = \"hello from other\";\n  _._serialize_if($scope0_reason, /* input */0) && _._scope($scope0_id, {}, \"__tests__/tags/custom-tag.marko\", 0);\n  return $return;\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-single-arg/__snapshots__/html.expected/template.js",
    "content": "import customTag from './tags/custom-tag.marko';\nconst tags = [customTag];\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let x = 1;\n  _._html(`<button>Count: <!>${_._escape(x)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._dynamic_tag($scope0_id, \"#text/2\", tags[0], [x], 0, 1);\n  _._script($scope0_id, \"__tests__/template.marko_0_x\");\n  _._scope($scope0_id, {\n    x\n  }, \"__tests__/template.marko\", 0, {\n    x: \"3:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-single-arg/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Count: 1\n</button>\n<div>\n  1\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Count: 2\n</button>\n<div>\n  2\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Count: 3\n</button>\n<div>\n  3\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Count: 4\n</button>\n<div>\n  4\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-single-arg/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Count: \n      <!---->\n      1\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <div>\n      1\n      <!--M_*2 #text/0-->\n    </div>\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          \"ConditionalRenderer:#text/2\": \"__tests__/tags/custom-tag.marko\",\n          x: 1\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Count: \n      <!---->\n      2\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <div>\n      2\n      <!--M_*2 #text/0-->\n    </div>\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          \"ConditionalRenderer:#text/2\": \"__tests__/tags/custom-tag.marko\",\n          x: 1\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text1 \"1\" => \"2\"\nUPDATE html/body/div/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Count: \n      <!---->\n      3\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <div>\n      3\n      <!--M_*2 #text/0-->\n    </div>\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          \"ConditionalRenderer:#text/2\": \"__tests__/tags/custom-tag.marko\",\n          x: 1\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text1 \"2\" => \"3\"\nUPDATE html/body/div/#text \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Count: \n      <!---->\n      4\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <div>\n      4\n      <!--M_*2 #text/0-->\n    </div>\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          \"ConditionalRenderer:#text/2\": \"__tests__/tags/custom-tag.marko\",\n          x: 1\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text1 \"3\" => \"4\"\nUPDATE html/body/div/#text \"3\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-single-arg/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  Count: 1\n</button>\n<div>\n  1\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-single-arg/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>Count: <!>1<!--M_*1 #text/1--></button><!--M_*1 #button/0--><!--M_[--><div>1<!--M_*2 #text/0--></div><!--M_]1 #text/2 2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{\"ConditionalRenderer:#text/2\":\"__tests__/tags/custom-tag.marko\",x:1}]),\"__tests__/template.marko_0_x 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Count: \n      <!---->\n      1\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <div>\n      1\n      <!--M_*2 #text/0-->\n    </div>\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          \"ConditionalRenderer:#text/2\": \"__tests__/tags/custom-tag.marko\",\n          x: 1\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text0\nINSERT html/body/button/#comment0\nINSERT html/body/button/#text1\nINSERT html/body/button/#comment1\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/div/#comment\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-single-arg/tags/custom-tag.marko",
    "content": "<div>${input}</div>\n<return=\"hello from other\"/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-single-arg/template.marko",
    "content": "import customTag from './tags/custom-tag.marko';\nstatic const tags = [customTag];\n<let/x=1 />\n<button onClick() { x++ }>Count: ${x}</button>\n<${tags[0]}(x) />"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-single-arg/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-sometimes-null/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$x_content\": \"m\",\n      \"$$dynamicTag\": \"n\",\n      \"$$x__script\": \"r\",\n      \"$$x\": \"a\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-sometimes-null/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\nBody Content\n<button />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Body Content\n</div>\n<button />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\nBody Content\n<button />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-sometimes-null/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\nBody Content\n<button />\n```\n\n# Mutations\n```\nINSERT #comment, #text, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<div>\n  Body Content\n</div>\n<button />\n```\n\n# Mutations\n```\nINSERT div\nREMOVE #text after div\nINSERT div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\nBody Content\n<button />\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE div after #text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-sometimes-null/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 180 (min) 146 (brotli)\nconst $x_content = _._content_resume(\"a0\", \"Body Content\", \"b\"),\n  $dynamicTag = _._dynamic_tag(0, $x_content),\n  $x__script = _._script(\"a1\", ($scope) =>\n    _._on($scope.b, \"click\", function () {\n      $x($scope, $scope.c ? null : \"div\");\n    }),\n  ),\n  $x = _._let(2, ($scope) => {\n    ($dynamicTag($scope, $scope.c), $x__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-sometimes-null/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><button></button>\";\nexport const $walks = /* over(1), replace, over(1), get, over(1) */\"b%b b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $x_content = _._content_resume(\"__tests__/template.marko_1_content\", \"Body Content\", /* over(1) */\"b\");\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\", $x_content);\nconst $x__script = _._script(\"__tests__/template.marko_0_x\", $scope => _._on($scope[\"#button/1\"], \"click\", function () {\n  $x($scope, $scope.x ? null : \"div\");\n}));\nconst $x = /* @__PURE__ */_._let(\"x/2\", $scope => {\n  $dynamicTag($scope, $scope.x);\n  $x__script($scope);\n});\nexport function $setup($scope) {\n  $x($scope, null);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-sometimes-null/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let x = null;\n  _._dynamic_tag($scope0_id, \"#text/0\", x, {}, _._content_resume(\"__tests__/template.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    _._scope_reason();\n    _._html(\"Body Content\");\n  }, $scope0_id));\n  _._html(`<button></button>${_._el_resume($scope0_id, \"#button/1\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_x\");\n  _._scope($scope0_id, {\n    x\n  }, \"__tests__/template.marko\", 0, {\n    x: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-sometimes-null/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\nBody Content\n<button />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Body Content\n</div>\n<button />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\nBody Content\n<button />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-sometimes-null/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <!--M_[-->\n    Body Content\n    <!--M_]1 #text/0 2-->\n    <button />\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: null\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/#comment0 before html\nINSERT html/body/#comment0\nINSERT html/body/#text1\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      Body Content\n    </div>\n    <!--M_]1 #text/0 2-->\n    <button />\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: null\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div\nREMOVE #comment after html/body/div\nREMOVE #text after html/body/div\nREMOVE #text after html/body/div\nINSERT html/body/div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    Body Content\n    <!--M_]1 #text/0 2-->\n    <button />\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: null\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text\nREMOVE div after html/body/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-sometimes-null/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\nBody Content\n<button />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-sometimes-null/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <!--M_[-->Body Content<!--M_]1 #text/0 2--><button></button><!--M_*1 #button/1--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{x:null}]),\"__tests__/template.marko_0_x 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<!--M_[-->\n<html>\n  <head />\n  <body>\n    Body Content\n    <!--M_]1 #text/0 2-->\n    <button />\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: null\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT #comment\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text\nINSERT html/body/#comment0\nINSERT html/body/button\nINSERT html/body/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-sometimes-null/template.marko",
    "content": "<let/x = null/>\n\n<${x}>Body Content</>\n\n<button onClick() { x = x ? null : \"div\"}/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-sometimes-null/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-spread/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"m\",\n      \"$init\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-spread/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <div\n    id=\"foo\"\n  >\n    hi\n  </div>\n</div>\n<div>\n  <div\n    data-foo=\"bar\"\n    id=\"foo\"\n  >\n    hi\n  </div>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-spread/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  <!---->\n  <div\n    id=\"foo\"\n  >\n    hi\n  </div>\n  <!---->\n</div>\n<div>\n  <!---->\n  <div\n    data-foo=\"bar\"\n    id=\"foo\"\n  >\n    hi\n  </div>\n  <!---->\n</div>\n```\n\n# Mutations\n```\nINSERT div0, div1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-spread/__snapshots__/dom.expected/tags/wrapper.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\n_._resume_dynamic_tag();\nconst $inputAsdiv_content = _._content_resume(\"__tests__/tags/wrapper.marko_1_content\", \"hi\", /* over(1) */\"b\");\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\", $inputAsdiv_content);\nconst $inputAs__OR__foo__OR__htmlInput = /* @__PURE__ */_._or(6, $scope => $dynamicTag($scope, $scope.inputAs || \"div\", () => ({\n  ...$scope.htmlInput,\n  \"data-foo\": $scope.foo\n})), 2);\nexport const $inputAs = /* @__PURE__ */_._const(\"inputAs\", $inputAs__OR__foo__OR__htmlInput);\nexport const $foo = /* @__PURE__ */_._const(\"foo\", $inputAs__OR__foo__OR__htmlInput);\nexport const $htmlInput = /* @__PURE__ */_._const(\"htmlInput\", $inputAs__OR__foo__OR__htmlInput);\nexport const $input = ($scope, input) => {\n  (({\n    as,\n    foo,\n    ...htmlInput\n  }) => $htmlInput($scope, htmlInput))(input);\n  $inputAs($scope, input.as);\n  $foo($scope, input.foo);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/wrapper.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-spread/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 61 (min) 63 (brotli)\n(_._resume_dynamic_tag(), _._content_resume(\"a0\", \"hi\", \"b\"), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-spread/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<div>${_wrapper_template}</div><div>${_wrapper_template}</div>`;\nexport const $walks = /* next(1), <wrapper>, out(1), next(1), <wrapper>, out(1) */`D/${_wrapper_walks}&lD/${_wrapper_walks}&l`;\nimport { $setup as _wrapper, $input as _wrapper_param_, $template as _wrapper_template, $walks as _wrapper_walks, $foo as _wrapper_input_foo, $inputAs as _wrapper_input_as, $htmlInput as _wrapper_input_$rest } from \"./tags/wrapper.marko\";\nexport function $setup($scope) {\n  _wrapper($scope[\"#childScope/0\"]);\n  _wrapper_param_($scope[\"#childScope/0\"], {\n    id: \"foo\"\n  });\n  _wrapper($scope[\"#childScope/1\"]);\n  _wrapper_input_foo($scope[\"#childScope/1\"], \"bar\");\n  const $wrapper_input_spread = {\n    id: \"foo\"\n  };\n  _wrapper_input_as($scope[\"#childScope/1\"], $wrapper_input_spread.as);\n  _wrapper_input_$rest($scope[\"#childScope/1\"], (({\n    as,\n    foo,\n    ...htmlInput\n  }) => htmlInput)($wrapper_input_spread));\n}\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-spread/__snapshots__/html.expected/tags/wrapper.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/wrapper.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    as: inputAs,\n    foo,\n    ...htmlInput\n  } = input;\n  _._dynamic_tag($scope0_id, \"#text/0\", inputAs || \"div\", {\n    ...htmlInput,\n    \"data-foo\": foo\n  }, _._content_resume(\"__tests__/tags/wrapper.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    _._scope_reason();\n    _._html(\"hi\");\n  }, $scope0_id), 0, _._serialize_guard($scope0_reason, /* input.as, input.foo, htmlInput */3));\n  _._serialize_if($scope0_reason, /* input.as, input.foo, htmlInput */3) && _._scope($scope0_id, {\n    inputAs: _._serialize_if($scope0_reason, /* input.foo, htmlInput */2) && inputAs,\n    foo: _._serialize_if($scope0_reason, /* input.as, htmlInput */1) && foo,\n    htmlInput: _._serialize_if($scope0_reason, /* input.as, input.foo */0) && htmlInput\n  }, \"__tests__/tags/wrapper.marko\", 0, {\n    inputAs: \"1:13\",\n    foo: \"1:22\",\n    htmlInput: \"1:30\"\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-spread/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _wrapper from \"./tags/wrapper.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div>\");\n  _wrapper({\n    id: \"foo\"\n  });\n  _._html(\"</div><div>\");\n  _wrapper({\n    ...{\n      id: \"foo\"\n    },\n    foo: \"bar\"\n  });\n  _._html(\"</div>\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-spread/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <div\n    id=\"foo\"\n  >\n    hi\n  </div>\n</div>\n<div>\n  <div\n    data-foo=\"bar\"\n    id=\"foo\"\n  >\n    hi\n  </div>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-spread/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <div\n        id=\"foo\"\n      >\n        hi\n      </div>\n    </div>\n    <div>\n      <div\n        data-foo=\"bar\"\n        id=\"foo\"\n      >\n        hi\n      </div>\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-spread/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  <div\n    id=\"foo\"\n  >\n    hi\n  </div>\n</div>\n<div>\n  <div\n    data-foo=\"bar\"\n    id=\"foo\"\n  >\n    hi\n  </div>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-spread/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><div id=foo>hi</div></div><div><div id=foo data-foo=bar>hi</div></div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <div\n        id=\"foo\"\n      >\n        hi\n      </div>\n    </div>\n    <div>\n      <div\n        data-foo=\"bar\"\n        id=\"foo\"\n      >\n        hi\n      </div>\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/div0/div\nINSERT html/body/div0/div/#text\nINSERT html/body/div1\nINSERT html/body/div1/div\nINSERT html/body/div1/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-spread/tags/wrapper.marko",
    "content": "const/{ as: inputAs, foo, ...htmlInput}=input\n\n<${inputAs || \"div\"} ...htmlInput data-foo=foo>\n  hi\n</>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-spread/template.marko",
    "content": "<div>\n    <wrapper({ id: \"foo\" }) />\n</div>\n<div>\n    <wrapper ...{ id: \"foo\" } foo=\"bar\" />\n</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var/__snapshots__/dom.expected/tags/child/index.js",
    "content": "export const $template = \"\";\nexport const $walks = \"\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport function $setup($scope) {\n  _._return($scope, 1);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child/index.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<!>${_child_template}<!><!><!><!>`;\nexport const $walks = /* over(1), <child/var>, dynamicTagWithVar, over(1), dynamicTagWithVar, over(1), dynamicTagWithVar, over(2) */`b0${_child_walks}&1b1b1c`;\nimport child from \"./tags/child/index.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _child, $template as _child_template, $walks as _child_walks } from \"./tags/child/index.marko\";\nconst $data = _._var_resume(\"__tests__/template.marko_0_data1/var\", ($scope, data1) => {});\nexport function $setup($scope) {\n  _._var($scope, \"#childScope/0\", $data);\n  _child($scope[\"#childScope/0\"]);\n}\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/2\", 0, () => $data2);\nconst $data2 = _._var_resume(\"__tests__/template.marko_0_data2/var\", ($scope, data2) => {});\nconst $dynamicTag3 = /* @__PURE__ */_._dynamic_tag(\"#text/6\", 0, () => $el);\nexport const $input_show = ($scope, input_show) => {\n  $dynamicTag($scope, input_show && child);\n  $dynamicTag3($scope, input_show && \"div\");\n};\nconst $dynamicTag2 = /* @__PURE__ */_._dynamic_tag(\"#text/4\", 0, () => $data3);\nconst $data3 = _._var_resume(\"__tests__/template.marko_0_data3/var\", ($scope, data3) => {});\nexport const $input_dynamic = ($scope, input_dynamic) => $dynamicTag2($scope, input_dynamic);\nconst $el = _._var_resume(\"__tests__/template.marko_0_el1/var\", ($scope, el1) => {});\nexport const $input = ($scope, input) => {\n  $input_show($scope, input.show);\n  $input_dynamic($scope, input.dynamic);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var/__snapshots__/html.expected/tags/child/index.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child/index.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $return = 1;\n  return $return;\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var/__snapshots__/html.expected/template.js",
    "content": "import child from \"./tags/child/index.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let data1 = child({});\n  const $inputshowchild_scope = _._peek_scope_id();\n  let data2 = _._dynamic_tag($scope0_id, \"#text/2\", input.show && child, {});\n  _._var($scope0_id, \"#scopeOffset/3\", $inputshowchild_scope, \"__tests__/template.marko_0_data2/var\");\n  const $inputdynamic_scope = _._peek_scope_id();\n  let data3 = _._dynamic_tag($scope0_id, \"#text/4\", input.dynamic, {});\n  _._var($scope0_id, \"#scopeOffset/5\", $inputdynamic_scope, \"__tests__/template.marko_0_data3/var\");\n  const $inputshowdiv_scope = _._peek_scope_id();\n  let el1 = _._dynamic_tag($scope0_id, \"#text/6\", input.show && \"div\", {});\n  _._var($scope0_id, \"#scopeOffset/7\", $inputshowdiv_scope, \"__tests__/template.marko_0_el1/var\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var/tags/child/index.marko",
    "content": "<return=1/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var/template.marko",
    "content": "import child from \"<child>\";\n\n<${child}/data1/>\n<${input.show && child}/data2/>\n<${input.dynamic}/data3/>\n<${input.show && \"div\"}/el1/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [{ show: true, dynamic: \"div\" }],\n  skip_csr: true,\n  skip_ssr: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-assignment/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"r\",\n      \"$init\": \"t\",\n      \"$$x__script\": \"c\",\n      \"$$x\": \"n\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-assignment/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  class=\"inc\"\n>\n  1\n</button>\n<button\n  class=\"reset\"\n>\n  reset\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  2\n</button>\n<button\n  class=\"reset\"\n>\n  reset\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  3\n</button>\n<button\n  class=\"reset\"\n>\n  reset\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.reset\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  0\n</button>\n<button\n  class=\"reset\"\n>\n  reset\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  1\n</button>\n<button\n  class=\"reset\"\n>\n  reset\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-assignment/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<button\n  class=\"inc\"\n>\n  1\n</button>\n<button\n  class=\"reset\"\n>\n  reset\n</button>\n```\n\n# Mutations\n```\nINSERT #comment, button0, button1\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<!---->\n<button\n  class=\"inc\"\n>\n  2\n</button>\n<button\n  class=\"reset\"\n>\n  reset\n</button>\n```\n\n# Mutations\n```\nUPDATE button0/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<!---->\n<button\n  class=\"inc\"\n>\n  3\n</button>\n<button\n  class=\"reset\"\n>\n  reset\n</button>\n```\n\n# Mutations\n```\nUPDATE button0/#text \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.reset\").click();\n```\n```html\n<!---->\n<button\n  class=\"inc\"\n>\n  0\n</button>\n<button\n  class=\"reset\"\n>\n  reset\n</button>\n```\n\n# Mutations\n```\nUPDATE button0/#text \"3\" => \"0\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<!---->\n<button\n  class=\"inc\"\n>\n  1\n</button>\n<button\n  class=\"reset\"\n>\n  reset\n</button>\n```\n\n# Mutations\n```\nUPDATE button0/#text \"0\" => \"1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-assignment/__snapshots__/dom.expected/tags/counter.js",
    "content": "export const $template = \"<button class=inc> </button>\";\nexport const $walks = /* get, next(1), get, out(1) */\" D l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $x__script = _._script(\"__tests__/tags/counter.marko_0_x\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $x($scope, $scope.x + 1);\n}));\nconst $x = /* @__PURE__ */_._let(\"x/2\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.x);\n  _._return($scope, $scope.x);\n  $x__script($scope);\n});\nexport function $setup($scope) {\n  _._return_change($scope, $valueChange($scope));\n  $x($scope, 1);\n}\nfunction $valueChange($scope) {\n  return _new_x => {\n    $x($scope, _new_x);\n  };\n}\n_._resume(\"__tests__/tags/counter.marko_0/valueChange\", $valueChange);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/counter.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-assignment/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 279 (min) 163 (brotli)\nconst $x__script = _._script(\"a1\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $x($scope, $scope.c + 1);\n    }),\n  ),\n  $x = _._let(2, ($scope) => {\n    (_._text($scope.b, $scope.c),\n      _._return($scope, $scope.c),\n      $x__script($scope));\n  });\n(_._resume(\"a0\", function ($scope) {\n  return (_new_x) => {\n    $x($scope, _new_x);\n  };\n}),\n  _._var_resume(\"b0\", ($scope, count) => {}),\n  _._script(\"b1\", ($scope) =>\n    _._on($scope.c, \"click\", function () {\n      _._var_change($scope.Aa, 0);\n    }),\n  ),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-assignment/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><button class=reset>reset</button>\";\nexport const $walks = /* over(1), dynamicTagWithVar, over(1), get, over(1) */\"b1b b\";\nimport Counter from \"./tags/counter.marko\";\nfunction getCounter() {\n  return Counter; // breaks tag name analysis.\n}\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\", 0, () => $count);\nconst $count = _._var_resume(\"__tests__/template.marko_0_count/var\", ($scope, count) => {});\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => _._on($scope[\"#button/2\"], \"click\", function () {\n  _._var_change($scope[\"BranchScopes:#text/0\"], 0, \"count\");\n}));\nexport function $setup($scope) {\n  $dynamicTag($scope, getCounter());\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-assignment/__snapshots__/html.expected/tags/counter.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/counter.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let x = 1;\n  _._html(`<button class=inc>${_._escape(x)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  const $return = x;\n  _._script($scope0_id, \"__tests__/tags/counter.marko_0_x\");\n  _._scope($scope0_id, {\n    x,\n    \"#TagVariableChange\": _._resume(_new_x => {\n      x = _new_x;\n    }, \"__tests__/tags/counter.marko_0/valueChange\", $scope0_id) || void 0\n  }, \"__tests__/tags/counter.marko\", 0, {\n    x: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n  return $return;\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-assignment/__snapshots__/html.expected/template.js",
    "content": "import Counter from \"./tags/counter.marko\";\nfunction getCounter() {\n  return Counter; // breaks tag name analysis.\n}\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $getCounter_scope = _._peek_scope_id();\n  let count = _._dynamic_tag($scope0_id, \"#text/0\", getCounter(), {});\n  _._var($scope0_id, \"#scopeOffset/1\", $getCounter_scope, \"__tests__/template.marko_0_count/var\");\n  _._html(`<button class=reset>reset</button>${_._el_resume($scope0_id, \"#button/2\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-assignment/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  class=\"inc\"\n>\n  1\n</button>\n<button\n  class=\"reset\"\n>\n  reset\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  2\n</button>\n<button\n  class=\"reset\"\n>\n  reset\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  3\n</button>\n<button\n  class=\"reset\"\n>\n  reset\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.reset\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  0\n</button>\n<button\n  class=\"reset\"\n>\n  reset\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  1\n</button>\n<button\n  class=\"reset\"\n>\n  reset\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-assignment/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <!--M_[-->\n    <button\n      class=\"inc\"\n    >\n      1\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <!--M_]1 #text/0 2-->\n    <button\n      class=\"reset\"\n    >\n      reset\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"ConditionalRenderer:#text/0\": \"__tests__/tags/counter.marko\",\n          \"#scopeOffset/1\": 3\n        }, _.a = {\n          x: 1\n        }], _.a[\"#TagVariableChange\"] = _._[\n          \"__tests__/tags/counter.marko_0/valueChange\"\n          ](_.a), _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_count/var\"\n          ](_.c), _.b),\n        \"__tests__/tags/counter.marko_0_x 2 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/#comment0 before html\nINSERT html/body/#comment0\nINSERT html/body/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <!--M_[-->\n    <button\n      class=\"inc\"\n    >\n      2\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <!--M_]1 #text/0 2-->\n    <button\n      class=\"reset\"\n    >\n      reset\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"ConditionalRenderer:#text/0\": \"__tests__/tags/counter.marko\",\n          \"#scopeOffset/1\": 3\n        }, _.a = {\n          x: 1\n        }], _.a[\"#TagVariableChange\"] = _._[\n          \"__tests__/tags/counter.marko_0/valueChange\"\n          ](_.a), _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_count/var\"\n          ](_.c), _.b),\n        \"__tests__/tags/counter.marko_0_x 2 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button0/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <!--M_[-->\n    <button\n      class=\"inc\"\n    >\n      3\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <!--M_]1 #text/0 2-->\n    <button\n      class=\"reset\"\n    >\n      reset\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"ConditionalRenderer:#text/0\": \"__tests__/tags/counter.marko\",\n          \"#scopeOffset/1\": 3\n        }, _.a = {\n          x: 1\n        }], _.a[\"#TagVariableChange\"] = _._[\n          \"__tests__/tags/counter.marko_0/valueChange\"\n          ](_.a), _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_count/var\"\n          ](_.c), _.b),\n        \"__tests__/tags/counter.marko_0_x 2 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button0/#text \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.reset\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <!--M_[-->\n    <button\n      class=\"inc\"\n    >\n      0\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <!--M_]1 #text/0 2-->\n    <button\n      class=\"reset\"\n    >\n      reset\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"ConditionalRenderer:#text/0\": \"__tests__/tags/counter.marko\",\n          \"#scopeOffset/1\": 3\n        }, _.a = {\n          x: 1\n        }], _.a[\"#TagVariableChange\"] = _._[\n          \"__tests__/tags/counter.marko_0/valueChange\"\n          ](_.a), _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_count/var\"\n          ](_.c), _.b),\n        \"__tests__/tags/counter.marko_0_x 2 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button0/#text \"3\" => \"0\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.inc\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <!--M_[-->\n    <button\n      class=\"inc\"\n    >\n      1\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <!--M_]1 #text/0 2-->\n    <button\n      class=\"reset\"\n    >\n      reset\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"ConditionalRenderer:#text/0\": \"__tests__/tags/counter.marko\",\n          \"#scopeOffset/1\": 3\n        }, _.a = {\n          x: 1\n        }], _.a[\"#TagVariableChange\"] = _._[\n          \"__tests__/tags/counter.marko_0/valueChange\"\n          ](_.a), _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_count/var\"\n          ](_.c), _.b),\n        \"__tests__/tags/counter.marko_0_x 2 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button0/#text \"0\" => \"1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-assignment/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button\n  class=\"inc\"\n>\n  1\n</button>\n<button\n  class=\"reset\"\n>\n  reset\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-assignment/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <!--M_[--><button class=inc>1<!--M_*2 #text/1--></button><!--M_*2 #button/0--><!--M_]1 #text/0 2--><button class=reset>reset</button><!--M_*1 #button/2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.c={\"ConditionalRenderer:#text/0\":\"__tests__/tags/counter.marko\",\"#scopeOffset/1\":3},_.a={x:1}],_.a[\"#TagVariableChange\"]=_._[\"__tests__/tags/counter.marko_0/valueChange\"](_.a),_.a[\"#TagVariable\"]=_._[\"__tests__/template.marko_0_count/var\"](_.c),_.b),\"__tests__/tags/counter.marko_0_x 2 __tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<!--M_[-->\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    >\n      1\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <!--M_]1 #text/0 2-->\n    <button\n      class=\"reset\"\n    >\n      reset\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"ConditionalRenderer:#text/0\": \"__tests__/tags/counter.marko\",\n          \"#scopeOffset/1\": 3\n        }, _.a = {\n          x: 1\n        }], _.a[\"#TagVariableChange\"] = _._[\n          \"__tests__/tags/counter.marko_0/valueChange\"\n          ](_.a), _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_count/var\"\n          ](_.c), _.b),\n        \"__tests__/tags/counter.marko_0_x 2 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT #comment\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button0\nINSERT html/body/button0/#text\nINSERT html/body/button0/#comment\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/button1\nINSERT html/body/button1/#text\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-assignment/tags/counter.marko",
    "content": "<let/x = 1/>\n<button.inc onClick() { x++ }>\n  ${x}\n</button>\n<return:=x/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-assignment/template.marko",
    "content": "import Counter from \"<counter>\";\nstatic function getCounter() {\n  return Counter; // breaks tag name analysis.\n}\n<${getCounter()}/count/>\n<button.reset onClick() { count = 0 }>reset</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-assignment/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nconst increment = (container: Element) => {\n  container.querySelector<HTMLButtonElement>(\"button.inc\")!.click();\n};\n\nconst reset = (container: Element) => {\n  container.querySelector<HTMLButtonElement>(\"button.reset\")!.click();\n};\n\nexport const config: TestConfig = {\n  steps: [{}, increment, increment, reset, increment],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-in-body/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"r\",\n      \"$init\": \"o\",\n      \"$$Child_content__setHtml__script\": \"e\",\n      \"$$Child_content__setHtml\": \"t\",\n      \"$$Child_content__setup\": \"m\",\n      \"$$setHtml__closure\": \"n\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-in-body/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-in-body/__snapshots__/csr.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<!---->\n<!---->\n<div />\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, #text, div, #comment2\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-in-body/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<!><!><div></div>\";\nexport const $walks = /* over(1), replace, over(1), get, over(1) */\"b%b b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\");\nexport const $input_content = ($scope, input_content) => $dynamicTag($scope, input_content);\nexport function $setup($scope) {\n  _._return($scope, $_return($scope));\n}\nexport const $input = ($scope, input) => $input_content($scope, input.content);\nfunction $_return($scope) {\n  return () => html => _._el_read($scope[\"#div/1\"]).innerHTML = html;\n}\n_._resume(\"__tests__/tags/child.marko_0/_return\", $_return);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-in-body/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 240 (min) 168 (brotli)\n_._resume(\"a0\", function ($scope) {\n  return () => (html) => ($scope.b.innerHTML = html);\n});\nconst $Child_content__setHtml__script = _._script(\"b0\", ($scope) =>\n    _._assert_init($scope._, \"c\")(\"Hello World\"),\n  ),\n  $Child_content__setHtml = _._closure_get(2, $Child_content__setHtml__script),\n  $Child_content__setup = $Child_content__setHtml;\n_._content_resume(\"b1\", 0, 0, $Child_content__setup);\nconst $setHtml__closure = _._closure($Child_content__setHtml);\n(_._var_resume(\"b2\", _._const(2, $setHtml__closure)), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-in-body/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), dynamicTagWithVar, over(2) */\"b1c\";\nimport Child from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $Child_content__setHtml__script = _._script(\"__tests__/template.marko_1_setHtml\", $scope => _._assert_init($scope._, \"setHtml\")(\"Hello World\"));\nconst $Child_content__setHtml = /* @__PURE__ */_._closure_get(\"setHtml\", $Child_content__setHtml__script);\nconst $Child_content__setup = $Child_content__setHtml;\nconst $Child_content = _._content_resume(\"__tests__/template.marko_1_content\", 0, 0, $Child_content__setup);\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\", $Child_content, () => $setHtml);\nconst $setHtml__closure = /* @__PURE__ */_._closure($Child_content__setHtml);\nconst $setHtml = _._var_resume(\"__tests__/template.marko_0_setHtml/var\", /* @__PURE__ */_._const(\"setHtml\", $setHtml__closure));\nexport function $setup($scope) {\n  $dynamicTag($scope, 1 && Child);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-in-body/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._dynamic_tag($scope0_id, \"#text/0\", input.content, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.content */0));\n  _._html(`<div></div>${_._el_resume($scope0_id, \"#div/1\")}`);\n  const $return = _._resume(() => html => (el => el())(_._el_read_error).innerHTML = html, \"__tests__/tags/child.marko_0/_return\", $scope0_id);\n  _._scope($scope0_id, {}, \"__tests__/tags/child.marko\", 0);\n  return $return;\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-in-body/__snapshots__/html.expected/template.js",
    "content": "import Child from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $setHtml__closures = new Set();\n  const $Child_scope = _._peek_scope_id();\n  let setHtml = _._dynamic_tag($scope0_id, \"#text/0\", 1 && Child, {}, _._content_resume(\"__tests__/template.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    _._scope_reason();\n    _._script($scope1_id, \"__tests__/template.marko_1_setHtml\");\n    _._subscribe($setHtml__closures, _._scope($scope1_id, {\n      _: _._scope_with_id($scope0_id),\n      \"ClosureSignalIndex:setHtml\": 0\n    }, \"__tests__/template.marko\", \"3:4\"));\n    _._resume_branch($scope1_id);\n  }, $scope0_id));\n  _._var($scope0_id, \"#scopeOffset/1\", $Child_scope, \"__tests__/template.marko_0_setHtml/var\");\n  _._scope($scope0_id, {\n    setHtml,\n    \"ClosureScopes:setHtml\": $setHtml__closures\n  }, \"__tests__/template.marko\", 0, {\n    setHtml: \"3:16\"\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-in-body/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-in-body/__snapshots__/resume.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<!--M_[-->\n<!--M_]2 #text/0 3-->\n<html>\n  <head />\n  <body>\n    <!--M_[-->\n    <div />\n    <!--M_*2 #div/1-->\n    <!--M_]1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"ConditionalRenderer:#text/0\": \"__tests__/tags/child.marko\",\n          \"#scopeOffset/1\": 4,\n          setHtml: _.b = {\n            \"ConditionalRenderer:#text/0\": \"__tests__/template.marko_1_content\"\n          },\n          \"ClosureScopes:setHtml\": _.d = new Set\n        }, _.b, _.e = {\n          _: _.a,\n          \"ClosureSignalIndex:setHtml\": 0\n        }], _.a.setHtml = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.b), _.b[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_setHtml/var\"\n          ](_.a), (_.d).add(_.e), _.c),\n        \"__tests__/template.marko_1_setHtml 3\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/#comment0 before #comment0\nINSERT html/body/#comment0\nINSERT html/body/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-in-body/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-in-body/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <!--M_[--><!--M_[--><!--M_]2 #text/0 3--><div></div><!--M_*2 #div/1--><!--M_]1 #text/0 2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.a={\"ConditionalRenderer:#text/0\":\"__tests__/tags/child.marko\",\"#scopeOffset/1\":4,setHtml:_.b={\"ConditionalRenderer:#text/0\":\"__tests__/template.marko_1_content\"},\"ClosureScopes:setHtml\":_.d=new Set},_.b,_.e={_:_.a,\"ClosureSignalIndex:setHtml\":0}],_.a.setHtml=_._[\"__tests__/tags/child.marko_0/_return\"](_.b),_.b[\"#TagVariable\"]=_._[\"__tests__/template.marko_0_setHtml/var\"](_.a),(_.d).add(_.e),_.c),\"__tests__/template.marko_1_setHtml 3\"];M._.w()</script>\n```\n\n# Render End\n```html\n<!--M_[-->\n<!--M_[-->\n<!--M_]2 #text/0 3-->\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*2 #div/1-->\n    <!--M_]1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"ConditionalRenderer:#text/0\": \"__tests__/tags/child.marko\",\n          \"#scopeOffset/1\": 4,\n          setHtml: _.b = {\n            \"ConditionalRenderer:#text/0\": \"__tests__/template.marko_1_content\"\n          },\n          \"ClosureScopes:setHtml\": _.d = new Set\n        }, _.b, _.e = {\n          _: _.a,\n          \"ClosureSignalIndex:setHtml\": 0\n        }], _.a.setHtml = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.b), _.b[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_setHtml/var\"\n          ](_.a), (_.d).add(_.e), _.c),\n        \"__tests__/template.marko_1_setHtml 3\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT #comment0\nINSERT #comment1\nINSERT #comment2\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-in-body/tags/child.marko",
    "content": "<${input.content} />\n<div/el />\n<return=() => (html) => el().innerHTML = html />"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-in-body/template.marko",
    "content": "import Child from '<child>';\n\n<${1 && Child}/setHtml>\n  <script>setHtml(\"Hello World\")</script>\n</>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-in-body/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [{ show: true }],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-with-updating-body/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"n\",\n      \"$$count__script\": \"o\",\n      \"$$count\": \"c\",\n      \"$$tagName_content\": \"i\",\n      \"$$dynamicTag\": \"a\",\n      \"$$tagName__script\": \"m\",\n      \"$$tagName\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-with-updating-body/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <button\n    id=\"count\"\n  >\n    0\n  </button>\n</div>\n<button\n  id=\"changeTag\"\n/>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#count\").click();\n```\n```html\n<div>\n  <button\n    id=\"count\"\n  >\n    1\n  </button>\n</div>\n<button\n  id=\"changeTag\"\n/>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#changeTag\").click();\n```\n```html\n<span>\n  <button\n    id=\"count\"\n  >\n    0\n  </button>\n</span>\n<button\n  id=\"changeTag\"\n/>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#count\").click();\n```\n```html\n<span>\n  <button\n    id=\"count\"\n  >\n    1\n  </button>\n</span>\n<button\n  id=\"changeTag\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-with-updating-body/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<div>\n  <button\n    id=\"count\"\n  >\n    0\n  </button>\n</div>\n<button\n  id=\"changeTag\"\n/>\n```\n\n# Mutations\n```\nINSERT #comment, div, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"#count\").click();\n```\n```html\n<!---->\n<div>\n  <button\n    id=\"count\"\n  >\n    1\n  </button>\n</div>\n<button\n  id=\"changeTag\"\n/>\n```\n\n# Mutations\n```\nUPDATE div/button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#changeTag\").click();\n```\n```html\n<!---->\n<span>\n  <button\n    id=\"count\"\n  >\n    0\n  </button>\n</span>\n<button\n  id=\"changeTag\"\n/>\n```\n\n# Mutations\n```\nINSERT span\nREMOVE div after span\nINSERT span/button\nUPDATE span/button/#text \" \" => \"0\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#count\").click();\n```\n```html\n<!---->\n<span>\n  <button\n    id=\"count\"\n  >\n    1\n  </button>\n</span>\n<button\n  id=\"changeTag\"\n/>\n```\n\n# Mutations\n```\nUPDATE span/button/#text \"0\" => \"1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-with-updating-body/__snapshots__/dom.expected/tags/counter.js",
    "content": "export const $template = \"<button id=count> </button>\";\nexport const $walks = /* get, next(1), get, out(1) */\" D l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $count__script = _._script(\"__tests__/tags/counter.marko_0_count\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $count($scope, $scope.count + 1);\n}));\nconst $count = /* @__PURE__ */_._let(\"count/2\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.count);\n  $count__script($scope);\n});\nexport function $setup($scope) {\n  $count($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/tags/counter.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-with-updating-body/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 344 (min) 206 (brotli)\nconst $count__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $count($scope, $scope.c + 1);\n    }),\n  ),\n  $count = _._let(2, ($scope) => {\n    (_._text($scope.b, $scope.c), $count__script($scope));\n  });\nconst $tagName_content = _._content_resume(\n    \"b0\",\n    \"<button id=count> </button>\",\n    \"/ D l&\",\n    ($scope) => {\n      !(function ($scope) {\n        $count($scope, 0);\n      })($scope.a);\n    },\n  ),\n  $dynamicTag = _._dynamic_tag(0, $tagName_content),\n  $tagName__script = _._script(\"b1\", ($scope) =>\n    _._on($scope.b, \"click\", function () {\n      $tagName($scope, \"span\" === $scope.c ? \"div\" : \"span\");\n    }),\n  ),\n  $tagName = _._let(2, ($scope) => {\n    ($dynamicTag($scope, $scope.c), $tagName__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-with-updating-body/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><button id=changeTag></button>\";\nexport const $walks = /* over(1), replace, over(1), get, over(1) */\"b%b b\";\nimport { $setup as _counter, $template as _counter_template, $walks as _counter_walks } from \"./tags/counter.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $tagName_content__setup = $scope => {\n  _counter($scope[\"#childScope/0\"]);\n};\nconst $tagName_content = _._content_resume(\"__tests__/template.marko_1_content\", _counter_template, /* <counter> */`/${_counter_walks}&`, $tagName_content__setup);\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\", $tagName_content);\nconst $tagName__script = _._script(\"__tests__/template.marko_0_tagName\", $scope => _._on($scope[\"#button/1\"], \"click\", function () {\n  $tagName($scope, $scope.tagName === \"span\" ? \"div\" : \"span\");\n}));\nconst $tagName = /* @__PURE__ */_._let(\"tagName/2\", $scope => {\n  $dynamicTag($scope, $scope.tagName);\n  $tagName__script($scope);\n});\nexport function $setup($scope) {\n  $tagName($scope, \"div\");\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-with-updating-body/__snapshots__/html.expected/tags/counter.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/counter.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let count = 0;\n  _._html(`<button id=count>${_._escape(count)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/tags/counter.marko_0_count\");\n  _._scope($scope0_id, {\n    count\n  }, \"__tests__/tags/counter.marko\", 0, {\n    count: \"1:5\"\n  });\n  _._resume_branch($scope0_id);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-with-updating-body/__snapshots__/html.expected/template.js",
    "content": "import _counter from \"./tags/counter.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let tagName = \"div\";\n  _._dynamic_tag($scope0_id, \"#text/0\", tagName, {}, _._content_resume(\"__tests__/template.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    _._scope_reason();\n    _counter({});\n  }, $scope0_id));\n  _._html(`<button id=changeTag></button>${_._el_resume($scope0_id, \"#button/1\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_tagName\");\n  _._scope($scope0_id, {\n    tagName\n  }, \"__tests__/template.marko\", 0, {\n    tagName: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-with-updating-body/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <button\n    id=\"count\"\n  >\n    0\n  </button>\n</div>\n<button\n  id=\"changeTag\"\n/>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#count\").click();\n```\n```html\n<div>\n  <button\n    id=\"count\"\n  >\n    1\n  </button>\n</div>\n<button\n  id=\"changeTag\"\n/>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#changeTag\").click();\n```\n```html\n<span>\n  <button\n    id=\"count\"\n  >\n    0\n  </button>\n</span>\n<button\n  id=\"changeTag\"\n/>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#count\").click();\n```\n```html\n<span>\n  <button\n    id=\"count\"\n  >\n    1\n  </button>\n</span>\n<button\n  id=\"changeTag\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-with-updating-body/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--M_[-->\n      <button\n        id=\"count\"\n      >\n        0\n        <!--M_*4 #text/1-->\n      </button>\n      <!--M_*4 #button/0-->\n      <!--M_]2 #div/0 3-->\n    </div>\n    <!--M_'1 #text/0 2-->\n    <button\n      id=\"changeTag\"\n    />\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          \"ConditionalRenderer:#text/0\": \"div\",\n          tagName: \"div\"\n        },\n        {\n          \"ConditionalRenderer:#div/0\": \"__tests__/template.marko_1_content\"\n        }, 1,\n        {\n          count: 0,\n          \"#ClosestBranchId\": 3\n        }]),\n        \"__tests__/tags/counter.marko_0_count 4 __tests__/template.marko_0_tagName 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"#count\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--M_[-->\n      <button\n        id=\"count\"\n      >\n        1\n        <!--M_*4 #text/1-->\n      </button>\n      <!--M_*4 #button/0-->\n      <!--M_]2 #div/0 3-->\n    </div>\n    <!--M_'1 #text/0 2-->\n    <button\n      id=\"changeTag\"\n    />\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          \"ConditionalRenderer:#text/0\": \"div\",\n          tagName: \"div\"\n        },\n        {\n          \"ConditionalRenderer:#div/0\": \"__tests__/template.marko_1_content\"\n        }, 1,\n        {\n          count: 0,\n          \"#ClosestBranchId\": 3\n        }]),\n        \"__tests__/tags/counter.marko_0_count 4 __tests__/template.marko_0_tagName 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#changeTag\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <span>\n      <button\n        id=\"count\"\n      >\n        0\n      </button>\n    </span>\n    <!--M_'1 #text/0 2-->\n    <button\n      id=\"changeTag\"\n    />\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          \"ConditionalRenderer:#text/0\": \"div\",\n          tagName: \"div\"\n        },\n        {\n          \"ConditionalRenderer:#div/0\": \"__tests__/template.marko_1_content\"\n        }, 1,\n        {\n          count: 0,\n          \"#ClosestBranchId\": 3\n        }]),\n        \"__tests__/tags/counter.marko_0_count 4 __tests__/template.marko_0_tagName 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/span\nREMOVE div after html/body/span\nINSERT html/body/span/button\nUPDATE html/body/span/button/#text \" \" => \"0\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#count\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <span>\n      <button\n        id=\"count\"\n      >\n        1\n      </button>\n    </span>\n    <!--M_'1 #text/0 2-->\n    <button\n      id=\"changeTag\"\n    />\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          \"ConditionalRenderer:#text/0\": \"div\",\n          tagName: \"div\"\n        },\n        {\n          \"ConditionalRenderer:#div/0\": \"__tests__/template.marko_1_content\"\n        }, 1,\n        {\n          count: 0,\n          \"#ClosestBranchId\": 3\n        }]),\n        \"__tests__/tags/counter.marko_0_count 4 __tests__/template.marko_0_tagName 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span/button/#text \"0\" => \"1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-with-updating-body/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  <button\n    id=\"count\"\n  >\n    0\n  </button>\n</div>\n<button\n  id=\"changeTag\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-with-updating-body/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><!--M_[--><button id=count>0<!--M_*4 #text/1--></button><!--M_*4 #button/0--><!--M_]2 #div/0 3--></div><!--M_'1 #text/0 2--><button id=changeTag></button><!--M_*1 #button/1--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{\"ConditionalRenderer:#text/0\":\"div\",tagName:\"div\"},{\"ConditionalRenderer:#div/0\":\"__tests__/template.marko_1_content\"},1,{count:0,\"#ClosestBranchId\":3}]),\"__tests__/tags/counter.marko_0_count 4 __tests__/template.marko_0_tagName 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--M_[-->\n      <button\n        id=\"count\"\n      >\n        0\n        <!--M_*4 #text/1-->\n      </button>\n      <!--M_*4 #button/0-->\n      <!--M_]2 #div/0 3-->\n    </div>\n    <!--M_'1 #text/0 2-->\n    <button\n      id=\"changeTag\"\n    />\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          \"ConditionalRenderer:#text/0\": \"div\",\n          tagName: \"div\"\n        },\n        {\n          \"ConditionalRenderer:#div/0\": \"__tests__/template.marko_1_content\"\n        }, 1,\n        {\n          count: 0,\n          \"#ClosestBranchId\": 3\n        }]),\n        \"__tests__/tags/counter.marko_0_count 4 __tests__/template.marko_0_tagName 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#comment0\nINSERT html/body/div/button\nINSERT html/body/div/button/#text\nINSERT html/body/div/button/#comment\nINSERT html/body/div/#comment1\nINSERT html/body/div/#comment2\nINSERT html/body/#comment0\nINSERT html/body/button\nINSERT html/body/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-with-updating-body/tags/counter.marko",
    "content": "let/count = 0\nbutton#count onClick() { count++ }\n  -- ${count}"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-with-updating-body/template.marko",
    "content": "<let/tagName = \"div\"/>\n\n<${tagName}>\n  <counter/>\n</>\n\n<button#changeTag onClick() { tagName = tagName === \"span\" ? \"div\" : \"span\" } />"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-with-updating-body/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction count(container: Element) {\n  container.querySelector<HTMLButtonElement>(\"#count\")!.click();\n}\n\nfunction changeTag(container: Element) {\n  container.querySelector<HTMLButtonElement>(\"#changeTag\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, count, changeTag, count],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/embed-control-flow-boundary/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"o\",\n      \"$initEmbedded\": \"t\",\n      \"$$if\": \"a\",\n      \"$$hide\": \"m\",\n      \"$$hide__script\": \"i\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/embed-control-flow-boundary/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 278 (min) 173 (brotli)\nconst $if = _._if(2, \"<div>Hello</div>\", \"b\"),\n  $hide__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $hide($scope, !$scope.d);\n    }),\n  ),\n  $hide = _._let(3, ($scope) => {\n    ($if($scope, $scope.d ? 1 : 0), $hide__script($scope));\n  });\n(_._script(\"a1\", ($scope) => {\n  ((_.$signal($scope, 0).onabort = () => {\n    console.log(\"cleaned up\");\n  }),\n    _._on($scope.b, \"click\", function () {\n      document.body.innerHTML = \"\";\n    }));\n}),\n  initEmbedded(\"a\"));\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/embed-control-flow-boundary/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button id=toggle>Toggle</button><button id=cleanup>Cleanup</button><!><!>\";\nexport const $walks = /* get, over(1), get, over(1), replace, over(2) */\" b b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if = /* @__PURE__ */_._if(\"#text/2\", \"<div>Hello</div>\", /* over(1) */\"b\");\nconst $hide__script = _._script(\"__tests__/template.marko_0_hide\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $hide($scope, !$scope.hide);\n}));\nconst $hide = /* @__PURE__ */_._let(\"hide/3\", $scope => {\n  $if($scope, !$scope.hide ? 0 : 1);\n  $hide__script($scope);\n});\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => {\n  _.$signal($scope, 0).onabort = () => {\n    console.log(\"cleaned up\");\n  };\n  _._on($scope[\"#button/1\"], \"click\", function () {\n    document.body.innerHTML = \"\";\n  });\n});\nexport function $setup($scope) {\n  _.$signalReset($scope, 0);\n  $hide($scope, undefined);\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/embed-control-flow-boundary/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let hide = undefined;\n  _._html(`<button id=toggle>Toggle</button>${_._el_resume($scope0_id, \"#button/0\")}<button id=cleanup>Cleanup</button>${_._el_resume($scope0_id, \"#button/1\")}`);\n  _._if(() => {\n    if (!hide) {\n      const $scope1_id = _._scope_id();\n      _._html(\"<div>Hello</div>\");\n      _._scope($scope1_id, {}, \"__tests__/template.marko\", \"20:2\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/2\", 1, /* hide */1, /* hide */1, 0, 1);\n  _._script($scope0_id, \"__tests__/template.marko_0_hide\");\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {\n    hide\n  }, \"__tests__/template.marko\", 0, {\n    hide: \"7:6\"\n  });\n  _._resume_branch($scope0_id);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/embed-control-flow-boundary/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  id=\"toggle\"\n>\n  Toggle\n</button>\n<button\n  id=\"cleanup\"\n>\n  Cleanup\n</button>\n<div>\n  Hello\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#toggle\").click();\n```\n```html\n<button\n  id=\"toggle\"\n>\n  Toggle\n</button>\n<button\n  id=\"cleanup\"\n>\n  Cleanup\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#toggle\").click();\n```\n```html\n<button\n  id=\"toggle\"\n>\n  Toggle\n</button>\n<button\n  id=\"cleanup\"\n>\n  Cleanup\n</button>\n<div>\n  Hello\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#toggle\").click();\n```\n```html\n<button\n  id=\"toggle\"\n>\n  Toggle\n</button>\n<button\n  id=\"cleanup\"\n>\n  Cleanup\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button#cleanup\").click();\n```\n# Console\n```\nLOG \"cleaned up\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/embed-control-flow-boundary/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"toggle\"\n    >\n      Toggle\n    </button>\n    <!--Membedded*1 #button/0-->\n    <button\n      id=\"cleanup\"\n    >\n      Cleanup\n    </button>\n    <!--Membedded*1 #button/1-->\n    <div>\n      Hello\n    </div>\n    <!--Membedded|1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"embedded\");\n      (M.embedded.b = {})[\n        \"__tests__/template.marko\"\n        ] = 1;\n      M.embedded.r = [_ =&gt; (_.a = [0,\n        {}]),\n        \"__tests__/template.marko_0_hide 1 __tests__/template.marko_0 1\"\n      ];\n      M.embedded.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button#toggle\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"toggle\"\n    >\n      Toggle\n    </button>\n    <!--Membedded*1 #button/0-->\n    <button\n      id=\"cleanup\"\n    >\n      Cleanup\n    </button>\n    <!--Membedded*1 #button/1-->\n    <!--Membedded|1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"embedded\");\n      (M.embedded.b = {})[\n        \"__tests__/template.marko\"\n        ] = 1;\n      M.embedded.r = [_ =&gt; (_.a = [0,\n        {}]),\n        \"__tests__/template.marko_0_hide 1 __tests__/template.marko_0 1\"\n      ];\n      M.embedded.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/#comment2 after div\nINSERT html/body/#comment2\nREMOVE div after html/body/#comment2\n```\n\n# Render\n```js\ncontainer.querySelector(\"button#toggle\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"toggle\"\n    >\n      Toggle\n    </button>\n    <!--Membedded*1 #button/0-->\n    <button\n      id=\"cleanup\"\n    >\n      Cleanup\n    </button>\n    <!--Membedded*1 #button/1-->\n    <div>\n      Hello\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"embedded\");\n      (M.embedded.b = {})[\n        \"__tests__/template.marko\"\n        ] = 1;\n      M.embedded.r = [_ =&gt; (_.a = [0,\n        {}]),\n        \"__tests__/template.marko_0_hide 1 __tests__/template.marko_0 1\"\n      ];\n      M.embedded.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div\nREMOVE #comment after html/body/div\n```\n\n# Render\n```js\ncontainer.querySelector(\"button#toggle\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"toggle\"\n    >\n      Toggle\n    </button>\n    <!--Membedded*1 #button/0-->\n    <button\n      id=\"cleanup\"\n    >\n      Cleanup\n    </button>\n    <!--Membedded*1 #button/1-->\n    <!--Membedded|1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"embedded\");\n      (M.embedded.b = {})[\n        \"__tests__/template.marko\"\n        ] = 1;\n      M.embedded.r = [_ =&gt; (_.a = [0,\n        {}]),\n        \"__tests__/template.marko_0_hide 1 __tests__/template.marko_0 1\"\n      ];\n      M.embedded.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#comment2\nREMOVE div after html/body/#comment2\n```\n\n# Render\n```js\ncontainer.querySelector(\"button#cleanup\").click();\n```\n```html\n<html>\n  <head />\n  <body />\n</html>\n```\n\n# Mutations\n```\nREMOVE button, #comment, button, #comment, #comment, #text, script in html/body\n```\n# Console\n```\nLOG \"cleaned up\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/embed-control-flow-boundary/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button\n  id=\"toggle\"\n>\n  Toggle\n</button>\n<button\n  id=\"cleanup\"\n>\n  Cleanup\n</button>\n<div>\n  Hello\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/embed-control-flow-boundary/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button id=toggle>Toggle</button><!--Membedded*1 #button/0--><button id=cleanup>Cleanup</button><!--Membedded*1 #button/1--><div>Hello</div><!--Membedded|1 #text/2 2--><script>WALKER_RUNTIME(\"M\")(\"embedded\");(M.embedded.b={})[\"__tests__/template.marko\"]=1;M.embedded.r=[_=>(_.a=[0,{}]),\"__tests__/template.marko_0_hide 1 __tests__/template.marko_0 1\"];M.embedded.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"toggle\"\n    >\n      Toggle\n    </button>\n    <!--Membedded*1 #button/0-->\n    <button\n      id=\"cleanup\"\n    >\n      Cleanup\n    </button>\n    <!--Membedded*1 #button/1-->\n    <div>\n      Hello\n    </div>\n    <!--Membedded|1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"embedded\");\n      (M.embedded.b = {})[\n        \"__tests__/template.marko\"\n        ] = 1;\n      M.embedded.r = [_ =&gt; (_.a = [0,\n        {}]),\n        \"__tests__/template.marko_0_hide 1 __tests__/template.marko_0 1\"\n      ];\n      M.embedded.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button0\nINSERT html/body/button0/#text\nINSERT html/body/#comment0\nINSERT html/body/button1\nINSERT html/body/button1/#text\nINSERT html/body/#comment1\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/embed-control-flow-boundary/template.marko",
    "content": "<script>\n  $signal.onabort = () => {\n    console.log(\"cleaned up\");\n  }\n</script>\n\n<let/hide>\n<button#toggle onClick() {\n  hide = !hide;\n}>\n  Toggle\n</button>\n\n<button#cleanup onClick() {\n  document.body.innerHTML = \"\";\n}>\n  Cleanup\n</button>\n\n<if=!hide>\n  <div>Hello</div>\n</if>\n\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/embed-control-flow-boundary/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction toggle(container: Element) {\n  container.querySelector<HTMLButtonElement>(\"button#toggle\")!.click();\n}\n\nfunction cleanup(container: Element) {\n  container.querySelector<HTMLButtonElement>(\"button#cleanup\")!.click();\n}\n\nexport const config: TestConfig = {\n  embedded: true,\n  skip_csr: true,\n  skip_resume: false,\n  steps: [{}, toggle, toggle, toggle, cleanup],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/embed-counter/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$initEmbedded\": \"o\",\n      \"$$clickCount__script\": \"m\",\n      \"$$clickCount\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/embed-counter/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 115 (min) 104 (brotli)\nconst $clickCount__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $clickCount($scope, $scope.c + 1);\n    }),\n  ),\n  $clickCount = _._let(2, ($scope) => {\n    (_._text($scope.b, $scope.c), $clickCount__script($scope));\n  });\ninitEmbedded(\"a\");\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/embed-counter/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div><button> </button></div>\";\nexport const $walks = /* next(1), get, next(1), get, out(2) */\"D D m\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $clickCount__script = _._script(\"__tests__/template.marko_0_clickCount\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $clickCount($scope, $scope.clickCount + 1);\n}));\nconst $clickCount = /* @__PURE__ */_._let(\"clickCount/2\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.clickCount);\n  $clickCount__script($scope);\n});\nexport function $setup($scope) {\n  $clickCount($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/embed-counter/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let clickCount = 0;\n  _._html(`<div><button>${_._escape(clickCount)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}</div>`);\n  _._script($scope0_id, \"__tests__/template.marko_0_clickCount\");\n  _._scope($scope0_id, {\n    clickCount\n  }, \"__tests__/template.marko\", 0, {\n    clickCount: \"2:8\"\n  });\n  _._resume_branch($scope0_id);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/embed-counter/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <button>\n    0\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    1\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    2\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    3\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/embed-counter/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        0\n        <!--Membedded*1 #text/1-->\n      </button>\n      <!--Membedded*1 #button/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"embedded\");\n      (M.embedded.b = {})[\n        \"__tests__/template.marko\"\n        ] = 1;\n      M.embedded.r = [_ =&gt; (_.a = [0,\n        {\n          clickCount: 0\n        }]),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      M.embedded.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        1\n        <!--Membedded*1 #text/1-->\n      </button>\n      <!--Membedded*1 #button/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"embedded\");\n      (M.embedded.b = {})[\n        \"__tests__/template.marko\"\n        ] = 1;\n      M.embedded.r = [_ =&gt; (_.a = [0,\n        {\n          clickCount: 0\n        }]),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      M.embedded.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        2\n        <!--Membedded*1 #text/1-->\n      </button>\n      <!--Membedded*1 #button/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"embedded\");\n      (M.embedded.b = {})[\n        \"__tests__/template.marko\"\n        ] = 1;\n      M.embedded.r = [_ =&gt; (_.a = [0,\n        {\n          clickCount: 0\n        }]),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      M.embedded.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        3\n        <!--Membedded*1 #text/1-->\n      </button>\n      <!--Membedded*1 #button/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"embedded\");\n      (M.embedded.b = {})[\n        \"__tests__/template.marko\"\n        ] = 1;\n      M.embedded.r = [_ =&gt; (_.a = [0,\n        {\n          clickCount: 0\n        }]),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      M.embedded.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/button/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/embed-counter/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  <button>\n    0\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/embed-counter/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><button>0<!--Membedded*1 #text/1--></button><!--Membedded*1 #button/0--></div><script>WALKER_RUNTIME(\"M\")(\"embedded\");(M.embedded.b={})[\"__tests__/template.marko\"]=1;M.embedded.r=[_=>(_.a=[0,{clickCount:0}]),\"__tests__/template.marko_0_clickCount 1\"];M.embedded.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        0\n        <!--Membedded*1 #text/1-->\n      </button>\n      <!--Membedded*1 #button/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"embedded\");\n      (M.embedded.b = {})[\n        \"__tests__/template.marko\"\n        ] = 1;\n      M.embedded.r = [_ =&gt; (_.a = [0,\n        {\n          clickCount: 0\n        }]),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      M.embedded.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/button\nINSERT html/body/div/button/#text\nINSERT html/body/div/button/#comment\nINSERT html/body/div/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/embed-counter/template.marko",
    "content": "<div>\n  <let/clickCount = 0/>\n  <button onClick() {\n    clickCount++\n  }>${clickCount}</button>\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/embed-counter/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  embedded: true,\n  skip_csr: true,\n  skip_resume: false,\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/embed-removal/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"o\",\n      \"$initEmbedded\": \"n\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/embed-removal/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 141 (min) 103 (brotli)\n(_._script(\"a0\", ($scope) => {\n  ((_.$signal($scope, 0).onabort = () => {\n    console.log(\"cleaned up\");\n  }),\n    _._on($scope.a, \"click\", function () {\n      document.body.innerHTML = \"\";\n    }));\n}),\n  initEmbedded(\"a\"));\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/embed-removal/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button>Cleanup</button>\";\nexport const $walks = /* get, over(1) */\" b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => {\n  _.$signal($scope, 0).onabort = () => {\n    console.log(\"cleaned up\");\n  };\n  _._on($scope[\"#button/0\"], \"click\", function () {\n    document.body.innerHTML = \"\";\n  });\n});\nexport function $setup($scope) {\n  _.$signalReset($scope, 0);\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/embed-removal/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<button>Cleanup</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/embed-removal/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Cleanup\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n# Console\n```\nLOG \"cleaned up\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/embed-removal/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Cleanup\n    </button>\n    <!--Membedded*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"embedded\");\n      (M.embedded.b = {})[\n        \"__tests__/template.marko\"\n        ] = 1;\n      M.embedded.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M.embedded.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body />\n</html>\n```\n\n# Mutations\n```\nREMOVE button, #comment, #text, script in html/body\n```\n# Console\n```\nLOG \"cleaned up\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/embed-removal/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  Cleanup\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/embed-removal/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>Cleanup</button><!--Membedded*1 #button/0--><script>WALKER_RUNTIME(\"M\")(\"embedded\");(M.embedded.b={})[\"__tests__/template.marko\"]=1;M.embedded.r=[_=>(_.a=[0]),\"__tests__/template.marko_0 1\"];M.embedded.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Cleanup\n    </button>\n    <!--Membedded*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"embedded\");\n      (M.embedded.b = {})[\n        \"__tests__/template.marko\"\n        ] = 1;\n      M.embedded.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M.embedded.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/embed-removal/template.marko",
    "content": "<script>\n  $signal.onabort = () => {\n    console.log(\"cleaned up\");\n  }\n</script>\n\n<button onClick() {\n  document.body.innerHTML = \"\";\n}>\n  Cleanup\n</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/embed-removal/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  embedded: true,\n  skip_csr: true,\n  skip_resume: false,\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/empty-child-template/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/empty-child-template/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/empty-child-template/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div />\n```\n\n# Mutations\n```\nINSERT div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/empty-child-template/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"\";\nexport const $walks = \"\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/empty-child-template/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/empty-child-template/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<div>${_child_template}</div>`;\nexport const $walks = /* next(1), <child>, out(1) */`D/${_child_walks}&l`;\nimport { $setup as _child, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nexport function $setup($scope) {\n  _child($scope[\"#childScope/0\"]);\n}\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/empty-child-template/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  _._scope_reason();\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/empty-child-template/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _child from \"./tags/child.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div>\");\n  _child({});\n  _._html(\"</div>\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/empty-child-template/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/empty-child-template/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div />\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/empty-child-template/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/empty-child-template/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div></div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div />\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/empty-child-template/tags/child.marko",
    "content": ""
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/empty-child-template/template.marko",
    "content": "<div>\n  <child hello/>\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/entities/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/entities/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\nHello John & Suzy Invalid Entity: &b ; Valid Numeric Entity: \" Valid Hexadecimal Entity: ¢\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/entities/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\nHello John & Suzy Invalid Entity: &b ; Valid Numeric Entity: \" Valid Hexadecimal Entity: ¢\n```\n\n# Mutations\n```\nINSERT #text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/entities/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/entities/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"Hello John &amp; Suzy Invalid Entity: &b ; Valid Numeric Entity: &#34; Valid Hexadecimal Entity: &#x00A2;\";\nexport const $walks = /* over(1) */\"b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/entities/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"Hello John &amp; Suzy Invalid Entity: &b ; Valid Numeric Entity: &#34; Valid Hexadecimal Entity: &#x00A2;\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/entities/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\nHello John & Suzy Invalid Entity: &b ; Valid Numeric Entity: \" Valid Hexadecimal Entity: ¢\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/entities/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    Hello John & Suzy Invalid Entity: &b ; Valid Numeric Entity: \" Valid Hexadecimal Entity: ¢\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/entities/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\nHello John & Suzy Invalid Entity: &b ; Valid Numeric Entity: \" Valid Hexadecimal Entity: ¢\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/entities/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  Hello John &amp; Suzy Invalid Entity: &b ; Valid Numeric Entity: &#34; Valid Hexadecimal Entity: &#x00A2;\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    Hello John & Suzy Invalid Entity: &b ; Valid Numeric Entity: \" Valid Hexadecimal Entity: ¢\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/entities/template.marko",
    "content": "---\nHello John &amp; Suzy\nInvalid Entity: &b ;\nValid Numeric Entity: &#34;\nValid Hexadecimal Entity: &#x00A2;\n---"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-assign-to-tag-param-in-render/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-assign-to-tag-param-in-render/template.marko:2:10\n      1 | <define/Tag|{ x }|>\n    > 2 |   <div>${x++}</>\n        |          ^ Assignments to a tag parameter must be within a script or function.\n      3 | </define>\n      4 |\n      5 | <let/x=1>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-assign-to-tag-param-in-render/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-assign-to-tag-param-in-render/template.marko:2:10\n      1 | <define/Tag|{ x }|>\n    > 2 |   <div>${x++}</>\n        |          ^ Assignments to a tag parameter must be within a script or function.\n      3 | </define>\n      4 |\n      5 | <let/x=1>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-assign-to-tag-param-in-render/template.marko",
    "content": "<define/Tag|{ x }|>\n  <div>${x++}</>\n</define>\n\n<let/x=1>\n<Tag x:=x/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-assign-to-tag-param-in-render/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-assign-to-tag-var-in-render/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-assign-to-tag-var-in-render/template.marko:2:8\n      1 | <let/x=1>\n    > 2 | <div>${x++}</>\n        |        ^ Assignments to a tag variable must be within a script or function.\n      3 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-assign-to-tag-var-in-render/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-assign-to-tag-var-in-render/template.marko:2:8\n      1 | <let/x=1>\n    > 2 | <div>${x++}</>\n        |        ^ Assignments to a tag variable must be within a script or function.\n      3 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-assign-to-tag-var-in-render/template.marko",
    "content": "<let/x=1>\n<div>${x++}</>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-assign-to-tag-var-in-render/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-async/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-async/__snapshots__/csr-sanitized.expected.md",
    "content": "ERROR!"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-async/__snapshots__/csr.expected.md",
    "content": "ERROR!"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-async/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-async/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"a<!>b\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nimport { rejectAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $await_content = /* @__PURE__ */_._await_content(\"#text/0\", \"failed\", /* over(1) */\"b\");\nconst $await_promise = /* @__PURE__ */_._await_promise(\"#text/0\");\nexport function $setup($scope) {\n  $await_content($scope);\n  $await_promise($scope, rejectAfter(new Error(\"ERROR!\"), 1));\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-async/__snapshots__/html.expected/template.js",
    "content": "import { rejectAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"a\");\n  _._await($scope0_id, \"#text/0\", rejectAfter(new Error(\"ERROR!\"), 1), () => {\n    const $scope1_id = _._scope_id();\n    _._html(\"failed\");\n  }, 0);\n  _._html(\"b\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-async/__snapshots__/resume-sanitized.expected.md",
    "content": "ERROR!"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-async/__snapshots__/resume.expected.md",
    "content": "ERROR!"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-async/__snapshots__/ssr-sanitized.expected.md",
    "content": "ERROR!"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-async/__snapshots__/ssr.expected.md",
    "content": "ERROR!"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-async/template.marko",
    "content": "import { rejectAfter } from \"../../utils/resolve\";\n-- a\nawait=rejectAfter(new Error(\"ERROR!\"), 1)\n  -- failed\n-- b\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-async/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{}, wait],\n  error_runtime: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-basic-scriptlet/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-basic-scriptlet/template.marko:3:3\n      1 | <div>\n      2 |   <let/clickCount = 0/>\n    > 3 |   $ const doubleCount = clickCount * 2;\n        |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Scriptlets are not supported when using the tags api.\n      4 |   <button onClick() {\n      5 |     clickCount++\n      6 |   }>${doubleCount}</button>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-basic-scriptlet/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-basic-scriptlet/template.marko:3:3\n      1 | <div>\n      2 |   <let/clickCount = 0/>\n    > 3 |   $ const doubleCount = clickCount * 2;\n        |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Scriptlets are not supported when using the tags api.\n      4 |   <button onClick() {\n      5 |     clickCount++\n      6 |   }>${doubleCount}</button>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-basic-scriptlet/template.marko",
    "content": "<div>\n  <let/clickCount = 0/>\n  $ const doubleCount = clickCount * 2;\n  <button onClick() {\n    clickCount++\n  }>${doubleCount}</button>\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-basic-scriptlet/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-const-args/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-const-args/template.marko:1:8\n    > 1 | <const(y)/x=1/>\n        |        ^ Tag does not support arguments.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-const-args/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-const-args/template.marko:1:8\n    > 1 | <const(y)/x=1/>\n        |        ^ Tag does not support arguments.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-const-args/template.marko",
    "content": "<const(y)/x=1/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-const-args/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-const-base-var-assignment/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-const-base-var-assignment/template.marko:4:3\n      2 |\n      3 | <script>\n    > 4 |   foo = \"bar\";\n        |   ^^^^^^^^^^^ foo is readonly and cannot be mutated.\n      5 | </script>\n      6 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-const-base-var-assignment/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-const-base-var-assignment/template.marko:4:3\n      2 |\n      3 | <script>\n    > 4 |   foo = \"bar\";\n        |   ^^^^^^^^^^^ foo is readonly and cannot be mutated.\n      5 | </script>\n      6 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-const-base-var-assignment/template.marko",
    "content": "<const/foo=\"Hello\">\n\n<script>\n  foo = \"bar\";\n</script>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-const-base-var-assignment/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-const-body-content/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-const-body-content/template.marko:2:3\n      1 | <const/x=1>\n    > 2 |   Hello!\n        |   ^ Line has extra indentation at the beginning\n      3 | </const>\n      4 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-const-body-content/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-const-body-content/template.marko:2:3\n      1 | <const/x=1>\n    > 2 |   Hello!\n        |   ^ Line has extra indentation at the beginning\n      3 | </const>\n      4 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-const-body-content/template.marko",
    "content": "<const/x=1>\n  Hello!\n</const>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-const-body-content/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-const-extra-attr/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-const-extra-attr/template.marko:1:2\n    > 1 | <const/x=1 y=2/>\n        |  ^^^^^ The [`<const>` tag](https://markojs.com/docs/reference/core-tag#const) only supports the [`value=` attribute](https://markojs.com/docs/reference/language#shorthand-value).\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-const-extra-attr/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-const-extra-attr/template.marko:1:2\n    > 1 | <const/x=1 y=2/>\n        |  ^^^^^ The [`<const>` tag](https://markojs.com/docs/reference/core-tag#const) only supports the [`value=` attribute](https://markojs.com/docs/reference/language#shorthand-value).\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-const-extra-attr/template.marko",
    "content": "<const/x=1 y=2/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-const-extra-attr/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-const-mutation/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<p> </p>\";\nexport const $walks = /* next(1), get, out(1) */\"D l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $user = ($scope, user) => {\n  $user_fullName($scope, user.fullName);\n  $user_firstName($scope, user.firstName);\n  $user_middleName($scope, user.middleName);\n  $user_lastName($scope, user.lastName);\n};\nconst $fullName = ($scope, fullName) => _._text($scope[\"#text/0\"], fullName);\nconst $user_fullName__OR__user_firstName__OR__user_middleName__OR__user_lastName = /* @__PURE__ */_._or(6, $scope => $fullName($scope, $scope.user_fullName = `${$scope.user_firstName} ${$scope.user_middleName} ${$scope.user_lastName}`), 3);\nconst $user_fullName = /* @__PURE__ */_._const(\"user_fullName\", $user_fullName__OR__user_firstName__OR__user_middleName__OR__user_lastName);\nconst $user_firstName = /* @__PURE__ */_._const(\"user_firstName\", $user_fullName__OR__user_firstName__OR__user_middleName__OR__user_lastName);\nconst $user_middleName = /* @__PURE__ */_._const(\"user_middleName\", $user_fullName__OR__user_firstName__OR__user_middleName__OR__user_lastName);\nconst $user_lastName = /* @__PURE__ */_._const(\"user_lastName\", $user_fullName__OR__user_firstName__OR__user_middleName__OR__user_lastName);\nexport function $setup($scope) {\n  $user($scope, {\n    firstName: \"George\",\n    middleName: \"R.R.\",\n    lastName: \"Martin\"\n  });\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-const-mutation/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const user = {\n    firstName: \"George\",\n    middleName: \"R.R.\",\n    lastName: \"Martin\"\n  };\n  const fullName = user.fullName = `${user.firstName} ${user.middleName} ${user.lastName}`;\n  _._html(`<p>${_._escape(fullName)}</p>`);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-const-mutation/template.marko",
    "content": "<const/user={\n  firstName: \"George\",\n  middleName: \"R.R.\",\n  lastName: \"Martin\"\n}/>\n<const/fullName=user.fullName=`${user.firstName} ${user.middleName} ${user.lastName}`/>\n<p>${fullName}</p>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-const-mutation/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  skip_ssr: true,\n  skip_csr: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-const-no-default-value/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-const-no-default-value/template.marko:1:2\n    > 1 | <const/x/>\n        |  ^^^^^ The [`<const>` tag](https://markojs.com/docs/reference/core-tag#const) requires a [`value=` attribute](https://markojs.com/docs/reference/language#shorthand-value).\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-const-no-default-value/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-const-no-default-value/template.marko:1:2\n    > 1 | <const/x/>\n        |  ^^^^^ The [`<const>` tag](https://markojs.com/docs/reference/core-tag#const) requires a [`value=` attribute](https://markojs.com/docs/reference/language#shorthand-value).\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-const-no-default-value/template.marko",
    "content": "<const/x/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-const-no-default-value/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-const-no-tag-var/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-const-no-tag-var/template.marko:1:2\n    > 1 | <const=\"Hello\"/>\n        |  ^^^^^ The [`<const>` tag](https://markojs.com/docs/reference/core-tag#const) requires a [tag variable](https://markojs.com/docs/reference/language#tag-variables).\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-const-no-tag-var/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-const-no-tag-var/template.marko:1:2\n    > 1 | <const=\"Hello\"/>\n        |  ^^^^^ The [`<const>` tag](https://markojs.com/docs/reference/core-tag#const) requires a [tag variable](https://markojs.com/docs/reference/language#tag-variables).\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-const-no-tag-var/template.marko",
    "content": "<const=\"Hello\"/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-const-no-tag-var/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-const-params/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-const-params/template.marko:1:10\n    > 1 | <const/x|y|=1/>\n        |          ^ Tag does not support parameters.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-const-params/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-const-params/template.marko:1:10\n    > 1 | <const/x|y|=1/>\n        |          ^ Tag does not support parameters.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-const-params/template.marko",
    "content": "<const/x|y|=1/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-const-params/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-custom-tag-local-case/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-custom-tag-local-case/template.marko:3:2\n      1 | static const myTag = \"div\"\n      2 |\n    > 3 | <myTag/>\n        |  ^^^^^ Local variables must be in a [dynamic tag](https://markojs.com/docs/reference/language#dynamic-tags) unless they are PascalCase. Use `<${myTag}/>` or rename to `MyTag`."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-custom-tag-local-case/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-custom-tag-local-case/template.marko:3:2\n      1 | static const myTag = \"div\"\n      2 |\n    > 3 | <myTag/>\n        |  ^^^^^ Local variables must be in a [dynamic tag](https://markojs.com/docs/reference/language#dynamic-tags) unless they are PascalCase. Use `<${myTag}/>` or rename to `MyTag`."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-custom-tag-local-case/template.marko",
    "content": "static const myTag = \"div\"\n\n<myTag/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-custom-tag-local-case/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-custom-tag-not-found/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-custom-tag-not-found/template.marko:1:2\n    > 1 | <buton/>\n        |  ^^^^^ Unable to find entry point for [custom tag](https://markojs.com/docs/reference/custom-tag#relative-custom-tags) `<buton>`. Did you mean `<button>`?"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-custom-tag-not-found/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-custom-tag-not-found/template.marko:1:2\n    > 1 | <buton/>\n        |  ^^^^^ Unable to find entry point for [custom tag](https://markojs.com/docs/reference/custom-tag#relative-custom-tags) `<buton>`. Did you mean `<button>`?"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-custom-tag-not-found/template.marko",
    "content": "<buton/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-custom-tag-not-found/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-custom-tag-own-body-read-before-return/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"r\",\n      \"$init\": \"t\",\n      \"$$child_content__x\": \"_\",\n      \"$$x__closure\": \"e\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-custom-tag-own-body-read-before-return/__snapshots__/csr-sanitized.expected.md",
    "content": "Cannot access 'x' before initialization"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-custom-tag-own-body-read-before-return/__snapshots__/csr.expected.md",
    "content": "Cannot access 'x' before initialization"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-custom-tag-own-body-read-before-return/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), dynamicTagWithVar, over(2) */\"b1c\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\", 0, () => $r);\nconst $r = _._var_resume(\"__tests__/tags/child.marko_0_r/var\", /* @__PURE__ */_._const(\"r\", $scope => _._return($scope, $scope.r)));\nexport const $input_content = ($scope, input_content) => $dynamicTag($scope, input_content);\nexport const $input = ($scope, input) => $input_content($scope, input.content);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-custom-tag-own-body-read-before-return/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 197 (min) 135 (brotli)\n_._var_resume(\n  \"a0\",\n  _._const(5, ($scope) => _._return($scope, $scope.f)),\n);\nconst $child_content__x = _._closure_get(3, ($scope) =>\n    _._text($scope.a, _._assert_init($scope._, \"d\")),\n  ),\n  $x__closure = _._closure($child_content__x);\n(_._var_resume(\n  \"b1\",\n  _._const(3, ($scope) => {\n    (_._text($scope.c, $scope.d), $x__closure($scope));\n  }),\n),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-custom-tag-own-body-read-before-return/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<!>${_child_template}<div> </div>`;\nexport const $walks = /* over(1), <child/var>, next(1), get, out(1) */`b0${_child_walks}&D l`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _child, $input_content as _child_input_content, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nconst $child_content__x = /* @__PURE__ */_._closure_get(\"x\", $scope => _._text($scope[\"#text/0\"], _._assert_init($scope._, \"x\")));\nconst $child_content__setup = $scope => {\n  $child_content__x($scope);\n  _._return($scope, 1);\n};\nconst $child_content = /* @__PURE__ */_._content(\"__tests__/template.marko_1_content\", \"<span> </span>\", /* next(1), get, out(1) */\"D l\", $child_content__setup);\nconst $x__closure = /* @__PURE__ */_._closure($child_content__x);\nconst $x = _._var_resume(\"__tests__/template.marko_0_x/var\", /* @__PURE__ */_._const(\"x\", $scope => {\n  _._text($scope[\"#text/2\"], $scope.x);\n  $x__closure($scope);\n}));\nexport function $setup($scope) {\n  _._var($scope, \"#childScope/0\", $x);\n  _child($scope[\"#childScope/0\"]);\n  _child_input_content($scope[\"#childScope/0\"], $child_content($scope));\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-custom-tag-own-body-read-before-return/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $inputcontent_scope = _._peek_scope_id();\n  let r = _._dynamic_tag($scope0_id, \"#text/0\", input.content, {});\n  _._var($scope0_id, \"#scopeOffset/1\", $inputcontent_scope, \"__tests__/tags/child.marko_0_r/var\");\n  const $return = r;\n  _._scope($scope0_id, {}, \"__tests__/tags/child.marko\", 0);\n  return $return;\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-custom-tag-own-body-read-before-return/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _child from \"./tags/child.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $x__closures = new Set();\n  const $childScope = _._peek_scope_id();\n  let x = _child({\n    content: _._content(\"__tests__/template.marko_1_content\", () => {\n      _._scope_reason();\n      const $scope1_id = _._scope_id();\n      _._html(`<span>${_._escape(x)}${_._el_resume($scope1_id, \"#text/0\")}</span>`);\n      const $return = 1;\n      _._subscribe($x__closures, _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id),\n        \"ClosureSignalIndex:x\": 0\n      }, \"__tests__/template.marko\", \"1:2\"));\n      _._resume_branch($scope1_id);\n      return $return;\n    })\n  });\n  _._var($scope0_id, \"#scopeOffset/1\", $childScope, \"__tests__/template.marko_0_x/var\");\n  _._html(`<div>${_._escape(x)}${_._el_resume($scope0_id, \"#text/2\")}</div>`);\n  _._scope($scope0_id, {\n    \"ClosureScopes:x\": $x__closures,\n    \"#childScope/0\": _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-custom-tag-own-body-read-before-return/__snapshots__/resume-sanitized.expected.md",
    "content": "Cannot access 'x' before initialization"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-custom-tag-own-body-read-before-return/__snapshots__/resume.expected.md",
    "content": "Cannot access 'x' before initialization"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-custom-tag-own-body-read-before-return/__snapshots__/ssr-sanitized.expected.md",
    "content": "Cannot access 'x' before initialization"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-custom-tag-own-body-read-before-return/__snapshots__/ssr.expected.md",
    "content": "Cannot access 'x' before initialization"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-custom-tag-own-body-read-before-return/tags/child.marko",
    "content": "<${input.content}/r/>\n<return=r>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-custom-tag-own-body-read-before-return/template.marko",
    "content": "<child/x>\n  <span>${x}</span>\n  <return=1>\n</child>\n<div>${x}</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-custom-tag-own-body-read-before-return/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_runtime: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-debug-args/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-debug-args/template.marko:2:8\n      1 | <const/x=0/>\n    > 2 | <debug(x)/>\n        |        ^ Tag does not support arguments.\n      3 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-debug-args/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-debug-args/template.marko:2:8\n      1 | <const/x=0/>\n    > 2 | <debug(x)/>\n        |        ^ Tag does not support arguments.\n      3 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-debug-args/template.marko",
    "content": "<const/x=0/>\n<debug(x)/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-debug-args/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-debug-body-content/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-debug-body-content/template.marko:1:13\n    > 1 | <debug>Hello</debug>\n        |             ^^^^^^^^ The closing \"debug\" tag was not expected\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-debug-body-content/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-debug-body-content/template.marko:1:13\n    > 1 | <debug>Hello</debug>\n        |             ^^^^^^^^ The closing \"debug\" tag was not expected\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-debug-body-content/template.marko",
    "content": "<debug>Hello</debug>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-debug-body-content/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-debug-extra-attr/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-debug-extra-attr/template.marko:2:2\n      1 | <const/x=0/>\n    > 2 | <debug=x y=1/>\n        |  ^^^^^ The [`<debug>` tag](https://markojs.com/docs/reference/core-tag#debug) only supports the [`value=` attribute](https://markojs.com/docs/reference/language#shorthand-value).\n      3 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-debug-extra-attr/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-debug-extra-attr/template.marko:2:2\n      1 | <const/x=0/>\n    > 2 | <debug=x y=1/>\n        |  ^^^^^ The [`<debug>` tag](https://markojs.com/docs/reference/core-tag#debug) only supports the [`value=` attribute](https://markojs.com/docs/reference/language#shorthand-value).\n      3 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-debug-extra-attr/template.marko",
    "content": "<const/x=0/>\n<debug=x y=1/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-debug-extra-attr/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-debug-params/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-debug-params/template.marko:1:8\n    > 1 | <debug|x|/>\n        |        ^ Tag does not support parameters.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-debug-params/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-debug-params/template.marko:1:8\n    > 1 | <debug|x|/>\n        |        ^ Tag does not support parameters.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-debug-params/template.marko",
    "content": "<debug|x|/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-debug-params/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-debug-tag-var/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-debug-tag-var/template.marko:1:8\n    > 1 | <debug/x/>\n        |        ^ Tag does not support a variable.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-debug-tag-var/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-debug-tag-var/template.marko:1:8\n    > 1 | <debug/x/>\n        |        ^ Tag does not support a variable.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-debug-tag-var/template.marko",
    "content": "<debug/x/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-debug-tag-var/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-define-args/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-define-args/template.marko:1:9\n    > 1 | <define(y)/x/>\n        |         ^ Tag does not support arguments.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-define-args/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-define-args/template.marko:1:9\n    > 1 | <define(y)/x/>\n        |         ^ Tag does not support arguments.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-define-args/template.marko",
    "content": "<define(y)/x/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-define-args/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-define-no-tag-var/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-define-no-tag-var/template.marko:1:2\n    > 1 | <define>Hello!</define>\n        |  ^^^^^^ The [`<define>` tag](https://markojs.com/docs/reference/core-tag#define) requires a [tag variable](https://markojs.com/docs/reference/language#tag-variables).\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-define-no-tag-var/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-define-no-tag-var/template.marko:1:2\n    > 1 | <define>Hello!</define>\n        |  ^^^^^^ The [`<define>` tag](https://markojs.com/docs/reference/core-tag#define) requires a [tag variable](https://markojs.com/docs/reference/language#tag-variables).\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-define-no-tag-var/template.marko",
    "content": "<define>Hello!</define>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-define-no-tag-var/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-define-tag-hoist/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-define-tag-hoist/template.marko:2:3\n      1 | define/B\n    > 2 |   A\n        |   ^ Hoisted values must be functions. The `<define>` tag variable may not be hoisted. Please move the `<define>` tag prior to any references or extract to a separate `.marko` file.\n      3 |\n      4 | define/A\n      5 |   -- Hello"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-define-tag-hoist/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-define-tag-hoist/template.marko:2:3\n      1 | define/B\n    > 2 |   A\n        |   ^ Hoisted values must be functions. The `<define>` tag variable may not be hoisted. Please move the `<define>` tag prior to any references or extract to a separate `.marko` file.\n      3 |\n      4 | define/A\n      5 |   -- Hello"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-define-tag-hoist/template.marko",
    "content": "define/B\n  A\n\ndefine/A\n  -- Hello\n\nB\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-define-tag-hoist/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-duplicate-declaration/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-duplicate-declaration/template.marko:2:10\n      1 | <define/Foo|bar|>\n    > 2 |   <const/bar = 1>\n        |          ^^^ Duplicate declaration \"bar\"\n      3 |   <script>\n      4 |     console.log(bar)\n      5 |   </>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-duplicate-declaration/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-duplicate-declaration/template.marko:2:10\n      1 | <define/Foo|bar|>\n    > 2 |   <const/bar = 1>\n        |          ^^^ Duplicate declaration \"bar\"\n      3 |   <script>\n      4 |     console.log(bar)\n      5 |   </>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-duplicate-declaration/template.marko",
    "content": "<define/Foo|bar|>\n  <const/bar = 1>\n  <script>\n    console.log(bar)\n  </>\n</>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-duplicate-declaration/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-dynamic-tag-name/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-dynamic-tag-name/__snapshots__/csr-sanitized.expected.md",
    "content": "Invalid tag name: \"hello world\". Tag names must start with a letter and contain only letters, numbers, periods, hyphens, and underscores."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-dynamic-tag-name/__snapshots__/csr.expected.md",
    "content": "Invalid tag name: \"hello world\". Tag names must start with a letter and contain only letters, numbers, periods, hyphens, and underscores."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-dynamic-tag-name/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-dynamic-tag-name/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nconst tagName = \"hello world\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\");\nexport function $setup($scope) {\n  $dynamicTag($scope, tagName);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-dynamic-tag-name/__snapshots__/html.expected/template.js",
    "content": "const tagName = \"hello world\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._dynamic_tag($scope0_id, \"#text/0\", tagName, {}, 0, 0, 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-dynamic-tag-name/__snapshots__/resume-sanitized.expected.md",
    "content": "Invalid tag name: \"hello world\". Tag names must start with a letter and contain only letters, numbers, periods, hyphens, and underscores."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-dynamic-tag-name/__snapshots__/resume.expected.md",
    "content": "Invalid tag name: \"hello world\". Tag names must start with a letter and contain only letters, numbers, periods, hyphens, and underscores."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-dynamic-tag-name/__snapshots__/ssr-sanitized.expected.md",
    "content": "Invalid tag name: \"hello world\". Tag names must start with a letter and contain only letters, numbers, periods, hyphens, and underscores."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-dynamic-tag-name/__snapshots__/ssr.expected.md",
    "content": "Invalid tag name: \"hello world\". Tag names must start with a letter and contain only letters, numbers, periods, hyphens, and underscores."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-dynamic-tag-name/template.marko",
    "content": "static const tagName = \"hello world\";\n${tagName}\n\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-dynamic-tag-name/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_runtime: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-effect-args/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-effect-args/template.marko:1:9\n    > 1 | <script(x)=(() => {})/>\n        |         ^ Tag does not support arguments.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-effect-args/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-effect-args/template.marko:1:9\n    > 1 | <script(x)=(() => {})/>\n        |         ^ Tag does not support arguments.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-effect-args/template.marko",
    "content": "<script(x)=(() => {})/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-effect-args/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-effect-body-content/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-effect-body-content/template.marko:1:2\n    > 1 | <effect=(() => {})>Hello</effect>\n        |  ^^^^^^ The [`<effect>`](https://markojs.com/docs/reference/core-tag#effect) tag does not support body content.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-effect-body-content/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-effect-body-content/template.marko:1:2\n    > 1 | <effect=(() => {})>Hello</effect>\n        |  ^^^^^^ The [`<effect>`](https://markojs.com/docs/reference/core-tag#effect) tag does not support body content.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-effect-body-content/template.marko",
    "content": "<effect=(() => {})>Hello</effect>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-effect-body-content/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-effect-extra-attr/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-effect-extra-attr/template.marko:1:20\n    > 1 | <script=(() => {}) y=1/>\n        |                    ^^^ The [`<script>` tag](https://markojs.com/docs/reference/core-tag#script) does not support html attributes. For a native html [`<script>` tag](https://markojs.com/docs/reference/core-tag#script) use the `html-script` core tag instead.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-effect-extra-attr/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-effect-extra-attr/template.marko:1:20\n    > 1 | <script=(() => {}) y=1/>\n        |                    ^^^ The [`<script>` tag](https://markojs.com/docs/reference/core-tag#script) does not support html attributes. For a native html [`<script>` tag](https://markojs.com/docs/reference/core-tag#script) use the `html-script` core tag instead.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-effect-extra-attr/template.marko",
    "content": "<script=(() => {}) y=1/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-effect-extra-attr/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-effect-params/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-effect-params/template.marko:1:9\n    > 1 | <script|x|=(() => {})/>\n        |         ^ Tag does not support parameters.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-effect-params/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-effect-params/template.marko:1:9\n    > 1 | <script|x|=(() => {})/>\n        |         ^ Tag does not support parameters.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-effect-params/template.marko",
    "content": "<script|x|=(() => {})/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-effect-params/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-effect-tag-var/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-effect-tag-var/template.marko:1:9\n    > 1 | <script/x=(() => {})/>\n        |         ^ The [`<script>` tag](https://markojs.com/docs/reference/core-tag#script) does not support a tag variable reference. For a native html [`<script>` tag](https://markojs.com/docs/reference/core-tag#script) use the `html-script` core tag instead.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-effect-tag-var/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-effect-tag-var/template.marko:1:9\n    > 1 | <script/x=(() => {})/>\n        |         ^ The [`<script>` tag](https://markojs.com/docs/reference/core-tag#script) does not support a tag variable reference. For a native html [`<script>` tag](https://markojs.com/docs/reference/core-tag#script) use the `html-script` core tag instead.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-effect-tag-var/template.marko",
    "content": "<script/x=(() => {})/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-effect-tag-var/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-else-args/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-else-args/template.marko:2:7\n      1 | <if=false>Skipped</if>\n    > 2 | <else(input.show)>Hello World</else>\n        |       ^^^^^^^^^^ Tag does not support arguments.\n      3 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-else-args/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-else-args/template.marko:2:7\n      1 | <if=false>Skipped</if>\n    > 2 | <else(input.show)>Hello World</else>\n        |       ^^^^^^^^^^ Tag does not support arguments.\n      3 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-else-args/template.marko",
    "content": "<if=false>Skipped</if>\n<else(input.show)>Hello World</else>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-else-args/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-else-extra-attr/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-else-extra-attr/template.marko:2:7\n      1 | <if=false>Skipped</if>\n    > 2 | <else if=input.show y=2>Hello World</else>\n        |       ^^^^^^^^^^^^^^^^^ The [`else` tag](https://markojs.com/docs/reference/core-tag#if--else) only supports an `if=` attribute.\n      3 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-else-extra-attr/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-else-extra-attr/template.marko:2:7\n      1 | <if=false>Skipped</if>\n    > 2 | <else if=input.show y=2>Hello World</else>\n        |       ^^^^^^^^^^^^^^^^^ The [`else` tag](https://markojs.com/docs/reference/core-tag#if--else) only supports an `if=` attribute.\n      3 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-else-extra-attr/template.marko",
    "content": "<if=false>Skipped</if>\n<else if=input.show y=2>Hello World</else>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-else-extra-attr/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-else-no-content/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-else-no-content/template.marko:2:2\n      1 | <if=false>Skipped</if>\n    > 2 | <else />\n        |  ^^^^ The [`else` tag](https://markojs.com/docs/reference/core-tag#if--else) requires [body content](https://markojs.com/docs/reference/language#tag-content).\n      3 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-else-no-content/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-else-no-content/template.marko:2:2\n      1 | <if=false>Skipped</if>\n    > 2 | <else />\n        |  ^^^^ The [`else` tag](https://markojs.com/docs/reference/core-tag#if--else) requires [body content](https://markojs.com/docs/reference/language#tag-content).\n      3 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-else-no-content/template.marko",
    "content": "<if=false>Skipped</if>\n<else />\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-else-no-content/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-else-params/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-else-params/template.marko:2:7\n      1 | <if=false>Skipped</if>\n    > 2 | <else|x| if=input.show>Hello World</else>\n        |       ^ Tag does not support parameters.\n      3 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-else-params/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-else-params/template.marko:2:7\n      1 | <if=false>Skipped</if>\n    > 2 | <else|x| if=input.show>Hello World</else>\n        |       ^ Tag does not support parameters.\n      3 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-else-params/template.marko",
    "content": "<if=false>Skipped</if>\n<else|x| if=input.show>Hello World</else>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-else-params/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-else-var/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-else-var/template.marko:2:7\n      1 | <if=false>Skipped</if>\n    > 2 | <else/x>Hello World</else>\n        |       ^ Tag does not support a variable.\n      3 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-else-var/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-else-var/template.marko:2:7\n      1 | <if=false>Skipped</if>\n    > 2 | <else/x>Hello World</else>\n        |       ^ Tag does not support a variable.\n      3 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-else-var/template.marko",
    "content": "<if=false>Skipped</if>\n<else/x>Hello World</else>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-else-var/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-elseif-args/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-elseif-args/template.marko:2:10\n      1 | <if=false>Skipped</if>\n    > 2 | <else-if(input.show)>Hello World</else-if>\n        |          ^^^^^^^^^^ Tag does not support arguments.\n      3 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-elseif-args/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-elseif-args/template.marko:2:10\n      1 | <if=false>Skipped</if>\n    > 2 | <else-if(input.show)>Hello World</else-if>\n        |          ^^^^^^^^^^ Tag does not support arguments.\n      3 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-elseif-args/template.marko",
    "content": "<if=false>Skipped</if>\n<else-if(input.show)>Hello World</else-if>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-elseif-args/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-elseif-extra-attr/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-elseif-extra-attr/template.marko:2:21\n      1 | <if=false>Skipped</if>\n    > 2 | <else-if=input.show y=2>Hello World</else-if>\n        |                     ^^^ The [`else-if` tag](https://markojs.com/docs/reference/core-tag#if--else) only supports the [`value=` attribute](https://markojs.com/docs/reference/language#shorthand-value).\n      3 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-elseif-extra-attr/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-elseif-extra-attr/template.marko:2:21\n      1 | <if=false>Skipped</if>\n    > 2 | <else-if=input.show y=2>Hello World</else-if>\n        |                     ^^^ The [`else-if` tag](https://markojs.com/docs/reference/core-tag#if--else) only supports the [`value=` attribute](https://markojs.com/docs/reference/language#shorthand-value).\n      3 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-elseif-extra-attr/template.marko",
    "content": "<if=false>Skipped</if>\n<else-if=input.show y=2>Hello World</else-if>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-elseif-extra-attr/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-elseif-no-content/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-elseif-no-content/template.marko:2:2\n      1 | <if=false>Skipped</if>\n    > 2 | <else-if=input.show />\n        |  ^^^^^^^ The [`else-if` tag](https://markojs.com/docs/reference/core-tag#if--else) requires [body content](https://markojs.com/docs/reference/language#tag-content).\n      3 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-elseif-no-content/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-elseif-no-content/template.marko:2:2\n      1 | <if=false>Skipped</if>\n    > 2 | <else-if=input.show />\n        |  ^^^^^^^ The [`else-if` tag](https://markojs.com/docs/reference/core-tag#if--else) requires [body content](https://markojs.com/docs/reference/language#tag-content).\n      3 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-elseif-no-content/template.marko",
    "content": "<if=false>Skipped</if>\n<else-if=input.show />\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-elseif-no-content/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-elseif-no-default-value/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-elseif-no-default-value/template.marko:2:2\n      1 | <if=false>Skipped</if>\n    > 2 | <else-if>Hello World</else-if>\n        |  ^^^^^^^ The [`else-if` tag](https://markojs.com/docs/reference/core-tag#if--else) requires a [`value=` attribute](https://markojs.com/docs/reference/language#shorthand-value).\n      3 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-elseif-no-default-value/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-elseif-no-default-value/template.marko:2:2\n      1 | <if=false>Skipped</if>\n    > 2 | <else-if>Hello World</else-if>\n        |  ^^^^^^^ The [`else-if` tag](https://markojs.com/docs/reference/core-tag#if--else) requires a [`value=` attribute](https://markojs.com/docs/reference/language#shorthand-value).\n      3 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-elseif-no-default-value/template.marko",
    "content": "<if=false>Skipped</if>\n<else-if>Hello World</else-if>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-elseif-no-default-value/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-elseif-params/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-elseif-params/template.marko:2:10\n      1 | <if=false>Skipped</if>\n    > 2 | <else-if|x|=input.show>Hello World</else-if>\n        |          ^ Tag does not support parameters.\n      3 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-elseif-params/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-elseif-params/template.marko:2:10\n      1 | <if=false>Skipped</if>\n    > 2 | <else-if|x|=input.show>Hello World</else-if>\n        |          ^ Tag does not support parameters.\n      3 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-elseif-params/template.marko",
    "content": "<if=false>Skipped</if>\n<else-if|x|=input.show>Hello World</else-if>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-elseif-params/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-elseif-var/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-elseif-var/template.marko:2:10\n      1 | <if=false>Skipped</if>\n    > 2 | <else-if/x=input.show>Hello World</else-if>\n        |          ^ Tag does not support a variable.\n      3 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-elseif-var/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-elseif-var/template.marko:2:10\n      1 | <if=false>Skipped</if>\n    > 2 | <else-if/x=input.show>Hello World</else-if>\n        |          ^ Tag does not support a variable.\n      3 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-elseif-var/template.marko",
    "content": "<if=false>Skipped</if>\n<else-if/x=input.show>Hello World</else-if>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-elseif-var/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-html-comment-args/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-html-comment-args/template.marko:1:15\n    > 1 | <html-comment(x)/>\n        |               ^ Tag does not support arguments.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-html-comment-args/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-html-comment-args/template.marko:1:15\n    > 1 | <html-comment(x)/>\n        |               ^ Tag does not support arguments.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-html-comment-args/template.marko",
    "content": "<html-comment(x)/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-html-comment-args/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-html-comment-attrs/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-html-comment-attrs/template.marko:1:15\n    > 1 | <html-comment|x|>${x}</html-comment>\n        |               ^ Tag does not support parameters.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-html-comment-attrs/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-html-comment-attrs/template.marko:1:15\n    > 1 | <html-comment|x|>${x}</html-comment>\n        |               ^ Tag does not support parameters.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-html-comment-attrs/template.marko",
    "content": "<html-comment|x|>${x}</html-comment>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-html-comment-attrs/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-html-comment-params/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-html-comment-params/template.marko:1:15\n    > 1 | <html-comment y=2/>\n        |               ^^^ Tag does not support attributes.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-html-comment-params/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-html-comment-params/template.marko:1:15\n    > 1 | <html-comment y=2/>\n        |               ^^^ Tag does not support attributes.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-html-comment-params/template.marko",
    "content": "<html-comment y=2/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-html-comment-params/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-id-args/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-id-args/template.marko:1:5\n    > 1 | <id(x)/firstNameId/>\n        |     ^ Tag does not support arguments.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-id-args/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-id-args/template.marko:1:5\n    > 1 | <id(x)/firstNameId/>\n        |     ^ Tag does not support arguments.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-id-args/template.marko",
    "content": "<id(x)/firstNameId/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-id-args/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-id-attr/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-id-attr/template.marko:1:2\n    > 1 | <id/firstNameId x=1/>\n        |  ^^ The [`<id>` tag](https://markojs.com/docs/reference/core-tag#id) only supports the [`value=` attribute](https://markojs.com/docs/reference/language#shorthand-value).\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-id-attr/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-id-attr/template.marko:1:2\n    > 1 | <id/firstNameId x=1/>\n        |  ^^ The [`<id>` tag](https://markojs.com/docs/reference/core-tag#id) only supports the [`value=` attribute](https://markojs.com/docs/reference/language#shorthand-value).\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-id-attr/template.marko",
    "content": "<id/firstNameId x=1/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-id-attr/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-id-body-content/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-id-body-content/template.marko:1:17\n    > 1 | <id/firstNameId|y|/>\n        |                 ^ Tag does not support parameters.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-id-body-content/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-id-body-content/template.marko:1:17\n    > 1 | <id/firstNameId|y|/>\n        |                 ^ Tag does not support parameters.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-id-body-content/template.marko",
    "content": "<id/firstNameId|y|/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-id-body-content/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-id-destructure/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-id-destructure/template.marko:1:5\n    > 1 | <id/{ firstNameId }/>\n        |     ^^^^^^^^^^^^^^^ The [`<id>` tag](https://markojs.com/docs/reference/core-tag#id) cannot be destructured.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-id-destructure/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-id-destructure/template.marko:1:5\n    > 1 | <id/{ firstNameId }/>\n        |     ^^^^^^^^^^^^^^^ The [`<id>` tag](https://markojs.com/docs/reference/core-tag#id) cannot be destructured.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-id-destructure/template.marko",
    "content": "<id/{ firstNameId }/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-id-destructure/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-id-no-tag-var/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-id-no-tag-var/template.marko:1:2\n    > 1 | <id/>\n        |  ^^ The [`<id>` tag](https://markojs.com/docs/reference/core-tag#id) requires a [tag variable](https://markojs.com/docs/reference/language#tag-variables).\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-id-no-tag-var/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-id-no-tag-var/template.marko:1:2\n    > 1 | <id/>\n        |  ^^ The [`<id>` tag](https://markojs.com/docs/reference/core-tag#id) requires a [tag variable](https://markojs.com/docs/reference/language#tag-variables).\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-id-no-tag-var/template.marko",
    "content": "<id/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-id-no-tag-var/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-id-params/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-id-params/template.marko:1:17\n    > 1 | <id/firstNameId|y|/>\n        |                 ^ Tag does not support parameters.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-id-params/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-id-params/template.marko:1:17\n    > 1 | <id/firstNameId|y|/>\n        |                 ^ Tag does not support parameters.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-id-params/template.marko",
    "content": "<id/firstNameId|y|/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-id-params/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-if-args/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-if-args/template.marko:1:5\n    > 1 | <if(input.show)>Hello World</if>\n        |     ^^^^^^^^^^ Tag does not support arguments.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-if-args/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-if-args/template.marko:1:5\n    > 1 | <if(input.show)>Hello World</if>\n        |     ^^^^^^^^^^ Tag does not support arguments.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-if-args/template.marko",
    "content": "<if(input.show)>Hello World</if>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-if-args/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-if-else-else-if/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-if-else-else-if/template.marko:5:1\n      3 | else\n      4 |   -- B\n    > 5 | else if=true\n        | ^ The [`<else>` tag](https://markojs.com/docs/reference/core-tag#if--else) must have a preceding `<if=cond>` or `<else if=cond>`.\n      6 |   -- C"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-if-else-else-if/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-if-else-else-if/template.marko:5:1\n      3 | else\n      4 |   -- B\n    > 5 | else if=true\n        | ^ The [`<else>` tag](https://markojs.com/docs/reference/core-tag#if--else) must have a preceding `<if=cond>` or `<else if=cond>`.\n      6 |   -- C"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-if-else-else-if/template.marko",
    "content": "if=false\n  -- A\nelse\n  -- B\nelse if=true\n  -- C"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-if-else-else-if/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-if-else-wrong-attr/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-if-else-wrong-attr/template.marko:3:6\n      1 | if=false\n      2 |   -- A\n    > 3 | else of=true\n        |      ^^^^^^^ The [`else` tag](https://markojs.com/docs/reference/core-tag#if--else) only supports an `if=` attribute.\n      4 |   -- B"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-if-else-wrong-attr/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-if-else-wrong-attr/template.marko:3:6\n      1 | if=false\n      2 |   -- A\n    > 3 | else of=true\n        |      ^^^^^^^ The [`else` tag](https://markojs.com/docs/reference/core-tag#if--else) only supports an `if=` attribute.\n      4 |   -- B"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-if-else-wrong-attr/template.marko",
    "content": "if=false\n  -- A\nelse of=true\n  -- B"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-if-else-wrong-attr/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-if-extra-attr/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-if-extra-attr/template.marko:1:16\n    > 1 | <if=input.show y=2>Hello World</if>\n        |                ^^^ The [`if` tag](https://markojs.com/docs/reference/core-tag#if--else) only supports the [`value=` attribute](https://markojs.com/docs/reference/language#shorthand-value).\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-if-extra-attr/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-if-extra-attr/template.marko:1:16\n    > 1 | <if=input.show y=2>Hello World</if>\n        |                ^^^ The [`if` tag](https://markojs.com/docs/reference/core-tag#if--else) only supports the [`value=` attribute](https://markojs.com/docs/reference/language#shorthand-value).\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-if-extra-attr/template.marko",
    "content": "<if=input.show y=2>Hello World</if>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-if-extra-attr/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-if-no-content/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-if-no-content/template.marko:1:2\n    > 1 | <if=input.show />\n        |  ^^ The [`if` tag](https://markojs.com/docs/reference/core-tag#if--else) requires [body content](https://markojs.com/docs/reference/language#tag-content).\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-if-no-content/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-if-no-content/template.marko:1:2\n    > 1 | <if=input.show />\n        |  ^^ The [`if` tag](https://markojs.com/docs/reference/core-tag#if--else) requires [body content](https://markojs.com/docs/reference/language#tag-content).\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-if-no-content/template.marko",
    "content": "<if=input.show />\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-if-no-content/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-if-no-default-value/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-if-no-default-value/template.marko:1:2\n    > 1 | <if>Hello World</if>\n        |  ^^ The [`if` tag](https://markojs.com/docs/reference/core-tag#if--else) requires a [`value=` attribute](https://markojs.com/docs/reference/language#shorthand-value).\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-if-no-default-value/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-if-no-default-value/template.marko:1:2\n    > 1 | <if>Hello World</if>\n        |  ^^ The [`if` tag](https://markojs.com/docs/reference/core-tag#if--else) requires a [`value=` attribute](https://markojs.com/docs/reference/language#shorthand-value).\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-if-no-default-value/template.marko",
    "content": "<if>Hello World</if>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-if-no-default-value/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-if-params/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-if-params/template.marko:1:5\n    > 1 | <if|x|=input.show>Hello World</if>\n        |     ^ Tag does not support parameters.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-if-params/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-if-params/template.marko:1:5\n    > 1 | <if|x|=input.show>Hello World</if>\n        |     ^ Tag does not support parameters.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-if-params/template.marko",
    "content": "<if|x|=input.show>Hello World</if>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-if-params/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-if-var/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-if-var/template.marko:1:5\n    > 1 | <if/x=input.show>Hello World</if>\n        |     ^ Tag does not support a variable.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-if-var/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-if-var/template.marko:1:5\n    > 1 | <if/x=input.show>Hello World</if>\n        |     ^ Tag does not support a variable.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-if-var/template.marko",
    "content": "<if/x=input.show>Hello World</if>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-if-var/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-input-shadow/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-input-shadow/template.marko:1:8\n    > 1 | <const/input=1>\n        |        ^^^^^ Duplicate declaration \"input\"\n      2 | <script>\n      3 |   console.log(input)\n      4 | </>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-input-shadow/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-input-shadow/template.marko:1:8\n    > 1 | <const/input=1>\n        |        ^^^^^ Duplicate declaration \"input\"\n      2 | <script>\n      3 |   console.log(input)\n      4 | </>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-input-shadow/template.marko",
    "content": "<const/input=1>\n<script>\n  console.log(input)\n</>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-input-shadow/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-invalid-html-attr-name/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-invalid-html-attr-name/template.marko:1:6\n    > 1 | <div @invalid@attr=\"value\"/>\n        |      ^^^^^^^^^^^^^ Invalid attribute name.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-invalid-html-attr-name/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-invalid-html-attr-name/template.marko:1:6\n    > 1 | <div @invalid@attr=\"value\"/>\n        |      ^^^^^^^^^^^^^ Invalid attribute name.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-invalid-html-attr-name/template.marko",
    "content": "<div @invalid@attr=\"value\"/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-invalid-html-attr-name/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-invalid-modifier-name/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-invalid-modifier-name/template.marko:2:22\n      1 | <let/value=0/>\n    > 2 | <custom-input myAttr:123:=value/>\n        |                      ^^^ Bound attribute refinement shorthand must be a valid JavaScript identifier.\n      3 |\n      4 |\n      5 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-invalid-modifier-name/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-invalid-modifier-name/template.marko:2:22\n      1 | <let/value=0/>\n    > 2 | <custom-input myAttr:123:=value/>\n        |                      ^^^ Bound attribute refinement shorthand must be a valid JavaScript identifier.\n      3 |\n      4 |\n      5 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-invalid-modifier-name/template.marko",
    "content": "<let/value=0/>\n<custom-input myAttr:123:=value/>\n\n\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-invalid-modifier-name/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-invalid-user-attr-name/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-invalid-user-attr-name/template.marko:1:14\n    > 1 | <MyComponent @invalid@attr=\"value\"/>\n        |              ^^^^^^^^^^^^^ Invalid attribute name.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-invalid-user-attr-name/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-invalid-user-attr-name/template.marko:1:14\n    > 1 | <MyComponent @invalid@attr=\"value\"/>\n        |              ^^^^^^^^^^^^^ Invalid attribute name.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-invalid-user-attr-name/template.marko",
    "content": "<MyComponent @invalid@attr=\"value\"/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-invalid-user-attr-name/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-let-args/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-let-args/template.marko:1:6\n    > 1 | <let(y)/count=0/>\n        |      ^ Tag does not support arguments.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-let-args/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-let-args/template.marko:1:6\n    > 1 | <let(y)/count=0/>\n        |      ^ Tag does not support arguments.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-let-args/template.marko",
    "content": "<let(y)/count=0/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-let-args/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-let-body-content/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-let-body-content/template.marko:1:19\n    > 1 | <let/count=0>Hello</let>\n        |                   ^^^^^^ The closing \"let\" tag was not expected\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-let-body-content/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-let-body-content/template.marko:1:19\n    > 1 | <let/count=0>Hello</let>\n        |                   ^^^^^^ The closing \"let\" tag was not expected\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-let-body-content/template.marko",
    "content": "<let/count=0>Hello</let>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-let-body-content/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-let-extra-attr/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-let-extra-attr/template.marko:1:14\n    > 1 | <let/count=0 y=3/>\n        |              ^^^ The [`<let>` tag](https://markojs.com/docs/reference/core-tag#let) only supports the [`value=` attribute](https://markojs.com/docs/reference/language#shorthand-value) and its change handler.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-let-extra-attr/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-let-extra-attr/template.marko:1:14\n    > 1 | <let/count=0 y=3/>\n        |              ^^^ The [`<let>` tag](https://markojs.com/docs/reference/core-tag#let) only supports the [`value=` attribute](https://markojs.com/docs/reference/language#shorthand-value) and its change handler.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-let-extra-attr/template.marko",
    "content": "<let/count=0 y=3/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-let-extra-attr/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-let-invalid-binding/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-let-invalid-binding/template.marko:1:13\n    > 1 | <let/count:=1/>\n        |             ^ Attributes may only be bound to identifiers or member expressions\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-let-invalid-binding/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-let-invalid-binding/template.marko:1:13\n    > 1 | <let/count:=1/>\n        |             ^ Attributes may only be bound to identifiers or member expressions\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-let-invalid-binding/template.marko",
    "content": "<let/count:=1/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-let-invalid-binding/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-let-no-tag-var/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-let-no-tag-var/template.marko:1:2\n    > 1 | <let=0/>\n        |  ^^^ The [`<let>` tag](https://markojs.com/docs/reference/core-tag#let) requires a [tag variable](https://markojs.com/docs/reference/language#tag-variables).\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-let-no-tag-var/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-let-no-tag-var/template.marko:1:2\n    > 1 | <let=0/>\n        |  ^^^ The [`<let>` tag](https://markojs.com/docs/reference/core-tag#let) requires a [tag variable](https://markojs.com/docs/reference/language#tag-variables).\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-let-no-tag-var/template.marko",
    "content": "<let=0/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-let-no-tag-var/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-let-params/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-let-params/template.marko:1:12\n    > 1 | <let/count|x|=0/>\n        |            ^ Tag does not support parameters.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-let-params/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-let-params/template.marko:1:12\n    > 1 | <let/count|x|=0/>\n        |            ^ Tag does not support parameters.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-let-params/template.marko",
    "content": "<let/count|x|=0/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-let-params/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-let-spread-attr/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-let-spread-attr/template.marko:1:12\n    > 1 | <let/count ...{ value: 1, valueChange() {} }/>\n        |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The [`<let>`](https://markojs.com/docs/reference/core-tag#let) tag does not support `...spread` attributes.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-let-spread-attr/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-let-spread-attr/template.marko:1:12\n    > 1 | <let/count ...{ value: 1, valueChange() {} }/>\n        |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The [`<let>`](https://markojs.com/docs/reference/core-tag#let) tag does not support `...spread` attributes.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-let-spread-attr/template.marko",
    "content": "<let/count ...{ value: 1, valueChange() {} }/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-let-spread-attr/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-lifecycle-args/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-lifecycle-args/template.marko:1:12\n    > 1 | <lifecycle(x)\n        |            ^ Tag does not support arguments.\n      2 |   onMount() {}\n      3 |   onUpdate() {}\n      4 |   onDestroy() {}"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-lifecycle-args/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-lifecycle-args/template.marko:1:12\n    > 1 | <lifecycle(x)\n        |            ^ Tag does not support arguments.\n      2 |   onMount() {}\n      3 |   onUpdate() {}\n      4 |   onDestroy() {}"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-lifecycle-args/template.marko",
    "content": "<lifecycle(x)\n  onMount() {}\n  onUpdate() {}\n  onDestroy() {}\n/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-lifecycle-args/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-lifecycle-body-content/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-lifecycle-body-content/template.marko:5:7\n      3 |   onUpdate() {}\n      4 |   onDestroy() {}\n    > 5 | >Hello</lifecycle>\n        |       ^^^^^^^^^^^^ The closing \"lifecycle\" tag was not expected"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-lifecycle-body-content/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-lifecycle-body-content/template.marko:5:7\n      3 |   onUpdate() {}\n      4 |   onDestroy() {}\n    > 5 | >Hello</lifecycle>\n        |       ^^^^^^^^^^^^ The closing \"lifecycle\" tag was not expected"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-lifecycle-body-content/template.marko",
    "content": "<lifecycle\n  onMount() {}\n  onUpdate() {}\n  onDestroy() {}\n>Hello</lifecycle>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-lifecycle-body-content/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-lifecycle-no-attrs/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-lifecycle-no-attrs/template.marko:1:2\n    > 1 | <lifecycle />\n        |  ^^^^^^^^^ The [`<lifecycle>` tag](https://markojs.com/docs/reference/core-tag#lifecycle) requires at least one attribute."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-lifecycle-no-attrs/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-lifecycle-no-attrs/template.marko:1:2\n    > 1 | <lifecycle />\n        |  ^^^^^^^^^ The [`<lifecycle>` tag](https://markojs.com/docs/reference/core-tag#lifecycle) requires at least one attribute."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-lifecycle-no-attrs/template.marko",
    "content": "<lifecycle />"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-lifecycle-no-attrs/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-lifecycle-params/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-lifecycle-params/template.marko:1:12\n    > 1 | <lifecycle|x|\n        |            ^ Tag does not support parameters.\n      2 |   onMount() {}\n      3 |   onUpdate() {}\n      4 |   onDestroy() {}"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-lifecycle-params/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-lifecycle-params/template.marko:1:12\n    > 1 | <lifecycle|x|\n        |            ^ Tag does not support parameters.\n      2 |   onMount() {}\n      3 |   onUpdate() {}\n      4 |   onDestroy() {}"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-lifecycle-params/template.marko",
    "content": "<lifecycle|x|\n  onMount() {}\n  onUpdate() {}\n  onDestroy() {}\n/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-lifecycle-params/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-lifecycle-spread-attr/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-lifecycle-spread-attr/template.marko:1:2\n    > 1 | <lifecycle ...{\n        |  ^^^^^^^^^ The [`<lifecycle>` tag](https://markojs.com/docs/reference/core-tag#lifecycle) does not support [`...spread` attributes](https://markojs.com/docs/reference/language#spread-attributes).\n      2 |   onMount() {},\n      3 |   onUpdate() {},\n      4 |   onDestroy() {}"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-lifecycle-spread-attr/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-lifecycle-spread-attr/template.marko:1:2\n    > 1 | <lifecycle ...{\n        |  ^^^^^^^^^ The [`<lifecycle>` tag](https://markojs.com/docs/reference/core-tag#lifecycle) does not support [`...spread` attributes](https://markojs.com/docs/reference/language#spread-attributes).\n      2 |   onMount() {},\n      3 |   onUpdate() {},\n      4 |   onDestroy() {}"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-lifecycle-spread-attr/template.marko",
    "content": "<lifecycle ...{\n  onMount() {},\n  onUpdate() {},\n  onDestroy() {}\n}/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-lifecycle-spread-attr/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-lifecycle-var/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-lifecycle-var/template.marko:1:12\n    > 1 | <lifecycle/x\n        |            ^ Tag does not support a variable.\n      2 |   onMount() {}\n      3 |   onUpdate() {}\n      4 |   onDestroy() {}"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-lifecycle-var/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-lifecycle-var/template.marko:1:12\n    > 1 | <lifecycle/x\n        |            ^ Tag does not support a variable.\n      2 |   onMount() {}\n      3 |   onUpdate() {}\n      4 |   onDestroy() {}"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-lifecycle-var/template.marko",
    "content": "<lifecycle/x\n  onMount() {}\n  onUpdate() {}\n  onDestroy() {}\n/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-lifecycle-var/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-log-args/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-log-args/template.marko:1:6\n    > 1 | <log(x)=\"Hello\"/>\n        |      ^ Tag does not support arguments.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-log-args/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-log-args/template.marko:1:6\n    > 1 | <log(x)=\"Hello\"/>\n        |      ^ Tag does not support arguments.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-log-args/template.marko",
    "content": "<log(x)=\"Hello\"/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-log-args/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-log-body-content/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-log-body-content/template.marko:1:19\n    > 1 | <log=\"Hello\">Hello</log>\n        |                   ^^^^^^ The closing \"log\" tag was not expected\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-log-body-content/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-log-body-content/template.marko:1:19\n    > 1 | <log=\"Hello\">Hello</log>\n        |                   ^^^^^^ The closing \"log\" tag was not expected\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-log-body-content/template.marko",
    "content": "<log=\"Hello\">Hello</log>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-log-body-content/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-log-extra-attr/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-log-extra-attr/template.marko:1:2\n    > 1 | <log=\"Hello\" y=1/>\n        |  ^^^ The [`<log>` tag](https://markojs.com/docs/reference/core-tag#log) only supports the [`value=` attribute](https://markojs.com/docs/reference/language#shorthand-value).\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-log-extra-attr/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-log-extra-attr/template.marko:1:2\n    > 1 | <log=\"Hello\" y=1/>\n        |  ^^^ The [`<log>` tag](https://markojs.com/docs/reference/core-tag#log) only supports the [`value=` attribute](https://markojs.com/docs/reference/language#shorthand-value).\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-log-extra-attr/template.marko",
    "content": "<log=\"Hello\" y=1/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-log-extra-attr/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-log-no-default-value/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-log-no-default-value/template.marko:1:2\n    > 1 | <log/>\n        |  ^^^ The [`<log>` tag](https://markojs.com/docs/reference/core-tag#log) requires a [`value=` attribute](https://markojs.com/docs/reference/language#shorthand-value).\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-log-no-default-value/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-log-no-default-value/template.marko:1:2\n    > 1 | <log/>\n        |  ^^^ The [`<log>` tag](https://markojs.com/docs/reference/core-tag#log) requires a [`value=` attribute](https://markojs.com/docs/reference/language#shorthand-value).\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-log-no-default-value/template.marko",
    "content": "<log/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-log-no-default-value/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-log-params/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-log-params/template.marko:1:6\n    > 1 | <log|x|=\"Hello\"/>\n        |      ^ Tag does not support parameters.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-log-params/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-log-params/template.marko:1:6\n    > 1 | <log|x|=\"Hello\"/>\n        |      ^ Tag does not support parameters.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-log-params/template.marko",
    "content": "<log|x|=\"Hello\"/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-log-params/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-log-tag-var/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-log-tag-var/template.marko:1:6\n    > 1 | <log/x=\"Hello\"/>\n        |      ^ Tag does not support a variable.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-log-tag-var/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-log-tag-var/template.marko:1:6\n    > 1 | <log/x=\"Hello\"/>\n        |      ^ Tag does not support a variable.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-log-tag-var/template.marko",
    "content": "<log/x=\"Hello\"/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-log-tag-var/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-mututally-exclusive-partial-spread-native-attrs/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"r\",\n      \"$init\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-mututally-exclusive-partial-spread-native-attrs/__snapshots__/csr-sanitized.expected.md",
    "content": "The attributes checkedChange and checkedValue are mutually exclusive."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-mututally-exclusive-partial-spread-native-attrs/__snapshots__/csr.expected.md",
    "content": "The attributes checkedChange and checkedValue are mutually exclusive."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-mututally-exclusive-partial-spread-native-attrs/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 75 (min) 73 (brotli)\n(_._script(\"a1\", ($scope) => _._attrs_script($scope, \"a\")),\n  _._resume(\"a0\", function () {}),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-mututally-exclusive-partial-spread-native-attrs/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<input>\";\nexport const $walks = /* get, over(1) */\" b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => _._attrs_script($scope, \"#input/0\"));\nexport function $setup($scope) {\n  _._attrs($scope, \"#input/0\", {\n    type: \"checkbox\",\n    checkedValue: 1,\n    ...{\n      checkedChange: $checkedChange\n    }\n  });\n  $setup__script($scope);\n}\nfunction $checkedChange() {}\n_._resume(\"__tests__/template.marko_0/checkedChange\", $checkedChange);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-mututally-exclusive-partial-spread-native-attrs/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<input${_._attrs({\n    type: \"checkbox\",\n    checkedValue: 1,\n    ...{\n      checkedChange: _._resume(function () {}, \"__tests__/template.marko_0/checkedChange\")\n    }\n  }, \"#input/0\", $scope0_id, \"input\")}>${_._el_resume($scope0_id, \"#input/0\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-mututally-exclusive-partial-spread-native-attrs/__snapshots__/resume-sanitized.expected.md",
    "content": "The attributes checkedChange and checkedValue are mutually exclusive."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-mututally-exclusive-partial-spread-native-attrs/__snapshots__/resume.expected.md",
    "content": "The attributes checkedChange and checkedValue are mutually exclusive."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-mututally-exclusive-partial-spread-native-attrs/__snapshots__/ssr-sanitized.expected.md",
    "content": "The attributes checkedChange and checkedValue are mutually exclusive."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-mututally-exclusive-partial-spread-native-attrs/__snapshots__/ssr.expected.md",
    "content": "The attributes checkedChange and checkedValue are mutually exclusive."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-mututally-exclusive-partial-spread-native-attrs/template.marko",
    "content": "<input type=\"checkbox\" checkedValue=1 ...{ checkedChange() {} }>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-mututally-exclusive-partial-spread-native-attrs/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_runtime: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-mututally-exclusive-spread-native-attrs/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"r\",\n      \"$init\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-mututally-exclusive-spread-native-attrs/__snapshots__/csr-sanitized.expected.md",
    "content": "The attributes checkedChange and checkedValue are mutually exclusive."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-mututally-exclusive-spread-native-attrs/__snapshots__/csr.expected.md",
    "content": "The attributes checkedChange and checkedValue are mutually exclusive."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-mututally-exclusive-spread-native-attrs/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 75 (min) 73 (brotli)\n(_._script(\"a1\", ($scope) => _._attrs_script($scope, \"a\")),\n  _._resume(\"a0\", function () {}),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-mututally-exclusive-spread-native-attrs/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<input>\";\nexport const $walks = /* get, over(1) */\" b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => _._attrs_script($scope, \"#input/0\"));\nexport function $setup($scope) {\n  _._attrs($scope, \"#input/0\", {\n    type: \"checkbox\",\n    ...{\n      checkedValue: 1,\n      checkedChange: $checkedChange\n    }\n  });\n  $setup__script($scope);\n}\nfunction $checkedChange() {}\n_._resume(\"__tests__/template.marko_0/checkedChange\", $checkedChange);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-mututally-exclusive-spread-native-attrs/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<input${_._attrs({\n    type: \"checkbox\",\n    ...{\n      checkedValue: 1,\n      checkedChange: _._resume(function () {}, \"__tests__/template.marko_0/checkedChange\")\n    }\n  }, \"#input/0\", $scope0_id, \"input\")}>${_._el_resume($scope0_id, \"#input/0\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-mututally-exclusive-spread-native-attrs/__snapshots__/resume-sanitized.expected.md",
    "content": "The attributes checkedChange and checkedValue are mutually exclusive."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-mututally-exclusive-spread-native-attrs/__snapshots__/resume.expected.md",
    "content": "The attributes checkedChange and checkedValue are mutually exclusive."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-mututally-exclusive-spread-native-attrs/__snapshots__/ssr-sanitized.expected.md",
    "content": "The attributes checkedChange and checkedValue are mutually exclusive."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-mututally-exclusive-spread-native-attrs/__snapshots__/ssr.expected.md",
    "content": "The attributes checkedChange and checkedValue are mutually exclusive."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-mututally-exclusive-spread-native-attrs/template.marko",
    "content": "<input type=\"checkbox\" ...{ checkedValue: 1, checkedChange() {} }>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-mututally-exclusive-spread-native-attrs/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_runtime: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-mututally-exclusive-static-native-attrs/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-mututally-exclusive-static-native-attrs/template.marko:1:2\n    > 1 | <input type=\"checkbox\" checkedValue=1 checkedChange() {}>\n        |  ^^^^^ The attributes checkedChange and checkedValue are mutually exclusive.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-mututally-exclusive-static-native-attrs/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-mututally-exclusive-static-native-attrs/template.marko:1:2\n    > 1 | <input type=\"checkbox\" checkedValue=1 checkedChange() {}>\n        |  ^^^^^ The attributes checkedChange and checkedValue are mutually exclusive.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-mututally-exclusive-static-native-attrs/template.marko",
    "content": "<input type=\"checkbox\" checkedValue=1 checkedChange() {}>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-mututally-exclusive-static-native-attrs/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-args/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-return-args/template.marko:1:9\n    > 1 | <return(x)=3/>\n        |         ^ Tag does not support arguments.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-args/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-return-args/template.marko:1:9\n    > 1 | <return(x)=3/>\n        |         ^ Tag does not support arguments.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-args/template.marko",
    "content": "<return(x)=3/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-args/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-body-content/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-return-body-content/template.marko:1:16\n    > 1 | <return=3>Hello</return>\n        |                ^^^^^^^^^ The closing \"return\" tag was not expected\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-body-content/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-return-body-content/template.marko:1:16\n    > 1 | <return=3>Hello</return>\n        |                ^^^^^^^^^ The closing \"return\" tag was not expected\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-body-content/template.marko",
    "content": "<return=3>Hello</return>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-body-content/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-extra-attr/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-return-extra-attr/template.marko:1:11\n    > 1 | <return=3 y=5/>\n        |           ^^^ Tag does not support the `y` attribute.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-extra-attr/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-return-extra-attr/template.marko:1:11\n    > 1 | <return=3 y=5/>\n        |           ^^^ Tag does not support the `y` attribute.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-extra-attr/template.marko",
    "content": "<return=3 y=5/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-extra-attr/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-if-else/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-return-if-else/template.marko:2:4\n      1 | <if=input.show>\n    > 2 |   <return=1/>\n        |    ^^^^^^ The [`<return>` tag](https://markojs.com/docs/reference/core-tag#return) can not be used under the `<\"if\">` tag.\n      3 | </if>\n      4 | <else>\n      5 |   <return=2/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-if-else/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-return-if-else/template.marko:2:4\n      1 | <if=input.show>\n    > 2 |   <return=1/>\n        |    ^^^^^^ The [`<return>` tag](https://markojs.com/docs/reference/core-tag#return) can not be used under the `<\"if\">` tag.\n      3 | </if>\n      4 | <else>\n      5 |   <return=2/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-if-else/template.marko",
    "content": "<if=input.show>\n  <return=1/>\n</if>\n<else>\n  <return=2/>\n</else>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-if-else/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-multiple/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-return-multiple/template.marko:2:2\n      1 | <return=1/>\n    > 2 | <return=2/>\n        |  ^^^^^^ Cannot have multiple [`<return>` tags](https://markojs.com/docs/reference/core-tag#return) for the template.\n      3 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-multiple/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-return-multiple/template.marko:2:2\n      1 | <return=1/>\n    > 2 | <return=2/>\n        |  ^^^^^^ Cannot have multiple [`<return>` tags](https://markojs.com/docs/reference/core-tag#return) for the template.\n      3 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-multiple/template.marko",
    "content": "<return=1/>\n<return=2/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-multiple/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-no-default-value/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-return-no-default-value/template.marko:1:2\n    > 1 | <return/>\n        |  ^^^^^^ The [`<return>` tag](https://markojs.com/docs/reference/core-tag#return) requires a [`value=` attribute](https://markojs.com/docs/reference/language#shorthand-value).\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-no-default-value/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-return-no-default-value/template.marko:1:2\n    > 1 | <return/>\n        |  ^^^^^^ The [`<return>` tag](https://markojs.com/docs/reference/core-tag#return) requires a [`value=` attribute](https://markojs.com/docs/reference/language#shorthand-value).\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-no-default-value/template.marko",
    "content": "<return/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-no-default-value/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-params/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-return-params/template.marko:1:9\n    > 1 | <return|x|=3/>\n        |         ^ Tag does not support parameters.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-params/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-return-params/template.marko:1:9\n    > 1 | <return|x|=3/>\n        |         ^ Tag does not support parameters.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-params/template.marko",
    "content": "<return|x|=3/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-params/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-spread-attr/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-return-spread-attr/template.marko:1:9\n    > 1 | <return ...{ value: 2 }/>\n        |         ^^^^^^^^^^^^^^^ Tag does not support spread attributes.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-spread-attr/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-return-spread-attr/template.marko:1:9\n    > 1 | <return ...{ value: 2 }/>\n        |         ^^^^^^^^^^^^^^^ Tag does not support spread attributes.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-spread-attr/template.marko",
    "content": "<return ...{ value: 2 }/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-spread-attr/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-var/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-return-var/template.marko:1:9\n    > 1 | <return/x=3/>\n        |         ^ Tag does not support a variable.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-var/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-return-var/template.marko:1:9\n    > 1 | <return/x=3/>\n        |         ^ Tag does not support a variable.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-var/template.marko",
    "content": "<return/x=3/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-var/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-write/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"r\",\n      \"$init\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-write/__snapshots__/csr-sanitized.expected.md",
    "content": "x is a readonly tag variable."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-write/__snapshots__/csr.expected.md",
    "content": "x is a readonly tag variable."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-write/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"\";\nexport const $walks = \"\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport function $setup($scope) {\n  _._return($scope, 1);\n  _._return_change($scope, false);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-write/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 74 (min) 67 (brotli)\n(_._var_resume(\"b0\", ($scope, x) => {}),\n  _._script(\"b1\", ($scope) => _._var_change($scope.a, 2)),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-write/__snapshots__/dom.expected/template.js",
    "content": "export const $template = _child_template;\nexport const $walks = /* <child/var> */`0${_child_walks}&`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _child, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nconst $x = _._var_resume(\"__tests__/template.marko_0_x/var\", ($scope, x) => {});\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => _._var_change($scope[\"#childScope/0\"], 2, \"x\"));\nexport function $setup($scope) {\n  _._var($scope, \"#childScope/0\", $x);\n  _child($scope[\"#childScope/0\"]);\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-write/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $return = 1;\n  _._scope($scope0_id, {\n    \"#TagVariableChange\": false || void 0\n  }, \"__tests__/tags/child.marko\", 0);\n  return $return;\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-write/__snapshots__/html.expected/template.js",
    "content": "import _child from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $childScope = _._peek_scope_id();\n  let x = _child({});\n  _._var($scope0_id, \"#scopeOffset/1\", $childScope, \"__tests__/template.marko_0_x/var\");\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {\n    \"#childScope/0\": _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-write/__snapshots__/resume-sanitized.expected.md",
    "content": "x is a readonly tag variable."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-write/__snapshots__/resume.expected.md",
    "content": "x is a readonly tag variable."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-write/tags/child.marko",
    "content": "<return=1 valueChange=false/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-write/template.marko",
    "content": "<child/x/>\n<script>\n  x = 2;\n</script>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-return-write/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_runtime: true,\n  skip_ssr: true,\n  skip_resume: false,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-script-attrs/__snapshots__/dom.expected/error-script-placeholder/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-script-attrs/error-script-placeholder/template.marko:2:3\n      1 | <script>\n    > 2 |   ${\"Hello <b> </script>\"}\n        |   ^^^^^^^^^^^^^^^^^^^^^^^^ Unexpected content in [`<script>` tag](https://markojs.com/docs/reference/core-tag#script). Only javascript and typescript is supported. For a native html [`<script>` tag](https://markojs.com/docs/reference/core-tag#script) use the `html-script` core tag instead.\n      3 | </script>\n      4 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-script-attrs/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-script-attrs/template.marko:1:9\n    > 1 | <script blocking=\"render\">\n        |         ^^^^^^^^^^^^^^^^^ The [`<script>` tag](https://markojs.com/docs/reference/core-tag#script) does not support html attributes. For a native html [`<script>` tag](https://markojs.com/docs/reference/core-tag#script) use the `html-script` core tag instead.\n      2 |   console.log(\"hi\")\n      3 | </script>\n      4 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-script-attrs/__snapshots__/html.expected/error-script-placeholder/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-script-attrs/error-script-placeholder/template.marko:2:3\n      1 | <script>\n    > 2 |   ${\"Hello <b> </script>\"}\n        |   ^^^^^^^^^^^^^^^^^^^^^^^^ Unexpected content in [`<script>` tag](https://markojs.com/docs/reference/core-tag#script). Only javascript and typescript is supported. For a native html [`<script>` tag](https://markojs.com/docs/reference/core-tag#script) use the `html-script` core tag instead.\n      3 | </script>\n      4 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-script-attrs/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-script-attrs/template.marko:1:9\n    > 1 | <script blocking=\"render\">\n        |         ^^^^^^^^^^^^^^^^^ The [`<script>` tag](https://markojs.com/docs/reference/core-tag#script) does not support html attributes. For a native html [`<script>` tag](https://markojs.com/docs/reference/core-tag#script) use the `html-script` core tag instead.\n      2 |   console.log(\"hi\")\n      3 | </script>\n      4 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-script-attrs/error-script-placeholder/template.marko",
    "content": "<script>\n  ${\"Hello <b> </script>\"}\n</script>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-script-attrs/error-script-placeholder/test.ts",
    "content": "export const error_compiler = true;\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-script-attrs/template.marko",
    "content": "<script blocking=\"render\">\n  console.log(\"hi\")\n</script>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-script-attrs/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-script-placeholder/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-script-placeholder/template.marko:2:3\n      1 | <script>\n    > 2 |   ${\"Hello <b> </script>\"}\n        |   ^^^^^^^^^^^^^^^^^^^^^^^^ Unexpected content in [`<script>` tag](https://markojs.com/docs/reference/core-tag#script). Only javascript and typescript is supported. For a native html [`<script>` tag](https://markojs.com/docs/reference/core-tag#script) use the `html-script` core tag instead.\n      3 | </script>\n      4 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-script-placeholder/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-script-placeholder/template.marko:2:3\n      1 | <script>\n    > 2 |   ${\"Hello <b> </script>\"}\n        |   ^^^^^^^^^^^^^^^^^^^^^^^^ Unexpected content in [`<script>` tag](https://markojs.com/docs/reference/core-tag#script). Only javascript and typescript is supported. For a native html [`<script>` tag](https://markojs.com/docs/reference/core-tag#script) use the `html-script` core tag instead.\n      3 | </script>\n      4 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-script-placeholder/template.marko",
    "content": "<script>\n  ${\"Hello <b> </script>\"}\n</script>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-script-placeholder/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-style-attrs/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-style-attrs/template.marko:1:17\n    > 1 | <style blocking=\"render\">\n        |                 ^^^^^^^^ The `style` does not support html attributes. For a native html [`<style>` tag](https://markojs.com/docs/reference/core-tag#style) use the `html-style` core tag instead.\n      2 |   body {\n      3 |     color: green;\n      4 |   }"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-style-attrs/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-style-attrs/template.marko:1:17\n    > 1 | <style blocking=\"render\">\n        |                 ^^^^^^^^ The `style` does not support html attributes. For a native html [`<style>` tag](https://markojs.com/docs/reference/core-tag#style) use the `html-style` core tag instead.\n      2 |   body {\n      3 |     color: green;\n      4 |   }"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-style-attrs/template.marko",
    "content": "<style blocking=\"render\">\n  body {\n    color: green;\n  }\n</style>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-style-attrs/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-style-placeholder/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-style-placeholder/template.marko:3:12\n      1 | <style>\n      2 |   body {\n    > 3 |     color: ${\"green\"}\n        |            ^^^^^^^^^^ The [`<style>` tag](https://markojs.com/docs/reference/core-tag#style) currently only supports static content. For a native html [`<style>` tag](https://markojs.com/docs/reference/core-tag#style) use the `html-style` core tag instead.\n      4 |   }\n      5 | </style>\n      6 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-style-placeholder/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/error-style-placeholder/template.marko:3:12\n      1 | <style>\n      2 |   body {\n    > 3 |     color: ${\"green\"}\n        |            ^^^^^^^^^^ The [`<style>` tag](https://markojs.com/docs/reference/core-tag#style) currently only supports static content. For a native html [`<style>` tag](https://markojs.com/docs/reference/core-tag#style) use the `html-style` core tag instead.\n      4 |   }\n      5 | </style>\n      6 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-style-placeholder/template.marko",
    "content": "<style>\n  body {\n    color: ${\"green\"}\n  }\n</style>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-style-placeholder/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-sync/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-sync/__snapshots__/csr-sanitized.expected.md",
    "content": "ERROR!"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-sync/__snapshots__/csr.expected.md",
    "content": "ERROR!"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-sync/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-sync/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"a\";\nexport const $walks = /* over(1) */\"b\";\nexport function $setup($scope) {\n  /* _ */(() => {\n    throw new Error(\"ERROR!\");\n  })();\n}\nimport * as _2 from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_2._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-sync/__snapshots__/html.expected/template.js",
    "content": "import * as _2 from \"@marko/runtime-tags/debug/html\";\nexport default _2._template(\"__tests__/template.marko\", input => {\n  _2._scope_reason();\n  const $scope0_id = _2._scope_id();\n  const _ = (() => {\n    throw new Error(\"ERROR!\");\n  })();\n  _2._html(\"a\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-sync/__snapshots__/resume-sanitized.expected.md",
    "content": "ERROR!"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-sync/__snapshots__/resume.expected.md",
    "content": "ERROR!"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-sync/__snapshots__/ssr-sanitized.expected.md",
    "content": "ERROR!"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-sync/__snapshots__/ssr.expected.md",
    "content": "ERROR!"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-sync/template.marko",
    "content": "-- a\nconst/_=(()=> { throw new Error(\"ERROR!\") })()\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-sync/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_runtime: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-tag-var-uninitialized/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"m\",\n      \"$$Tag_content2__name\": \"t\",\n      \"$$name__closure\": \"_\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-tag-var-uninitialized/__snapshots__/csr-sanitized.expected.md",
    "content": "Cannot access 'name' before initialization"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-tag-var-uninitialized/__snapshots__/csr.expected.md",
    "content": "Cannot access 'name' before initialization"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-tag-var-uninitialized/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 32 (min) 36 (brotli)\n_._var_resume(\"a1\", _._const(2));\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-tag-var-uninitialized/__snapshots__/dom.expected/template.js",
    "content": "const $Tag_content__walks = /* over(1), replace, over(2) */\"b%c\",\n  $Tag_content__template = \"<!><!><!>\";\nexport const $template = `<!>${$Tag_content__template}<!>`;\nexport const $walks = /* over(1), <Tag/var>, over(1) */`b0${$Tag_content__walks}&b`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $Tag_content2__name = /* @__PURE__ */_._closure_get(\"name\", $scope => _._text($scope[\"#text/0\"], _._assert_init($scope._, \"name\")));\nconst $Tag_content2__setup = $Tag_content2__name;\nconst $Tag_content2 = /* @__PURE__ */_._content(\"__tests__/template.marko_2_content\", \"<div> </div>\", /* next(1), get, out(1) */\"D l\", $Tag_content2__setup);\nconst $Tag_content__dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\");\nconst $Tag_content__input_content = ($scope, input_content) => $Tag_content__dynamicTag($scope, input_content);\nconst $Tag_content__setup = /* @__PURE__ */_._child_setup($scope => _._return($scope, \"A\"));\nconst $Tag_content__$params = ($scope, $params2) => $Tag_content__input($scope, $params2[0]);\nconst $Tag_content__input = ($scope, input) => $Tag_content__input_content($scope, input.content);\nconst $name = _._var_resume(\"__tests__/template.marko_0_name/var\", /* @__PURE__ */_._const(\"name\"));\nexport function $setup($scope) {\n  _._var($scope, \"#childScope/0\", $name);\n  $Tag_content__setup._($scope[\"#childScope/0\"], $scope);\n  $Tag_content__input_content($scope[\"#childScope/0\"], $Tag_content2($scope));\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-tag-var-uninitialized/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const Tag = {\n    content: _._content(\"__tests__/template.marko_1_content\", input => {\n      const $scope1_id = _._scope_id();\n      const $scope1_reason = _._scope_reason();\n      _._dynamic_tag($scope1_id, \"#text/0\", input.content, {}, 0, 0, _._serialize_guard($scope1_reason, /* input.content */0));\n      const $return = \"A\";\n      _._serialize_if($scope1_reason, /* input.content */0) && _._scope($scope1_id, {}, \"__tests__/template.marko\", \"1:2\");\n      return $return;\n    })\n  };\n  let name = Tag.content({\n    content: _._content(\"__tests__/template.marko_2_content\", () => {\n      _._scope_reason();\n      const $scope2_id = _._scope_id();\n      _._html(`<div>${_._escape(name)}</div>`);\n      _._resume_branch($scope2_id);\n    })\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-tag-var-uninitialized/__snapshots__/resume-sanitized.expected.md",
    "content": "Cannot access 'name' before initialization"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-tag-var-uninitialized/__snapshots__/resume.expected.md",
    "content": "Cannot access 'name' before initialization"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-tag-var-uninitialized/__snapshots__/ssr-sanitized.expected.md",
    "content": "Cannot access 'name' before initialization"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-tag-var-uninitialized/__snapshots__/ssr.expected.md",
    "content": "Cannot access 'name' before initialization"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-tag-var-uninitialized/template.marko",
    "content": "<define/Tag|input|>\n  <${input.content}/>\n  <return=\"A\">\n</define>\n\n<Tag/name>\n  <div>${name}</div>\n</>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/error-tag-var-uninitialized/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_runtime: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/escape-html-strings/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/escape-html-strings/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  1` \n  <span>\n    child`\"'\n  </span>\n  <span>\n    ${value}\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/escape-html-strings/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  1` \n  <span>\n    child`\"'\n  </span>\n  <span>\n    ${value}\n  </span>\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/escape-html-strings/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<span>child`\\\"'</span><span>${value}</span>\";\nexport const $walks = /* over(2) */\"c\";\nexport const $setup = () => {};\nconst value = \"No!!\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/escape-html-strings/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/escape-html-strings/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<div><!>\\` ${_child_template}</div>`;\nexport const $walks = /* next(1), replace, over(2), <child>, out(1) */`D%c/${_child_walks}&l`;\nconst count = 1;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _child, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nexport function $setup($scope) {\n  _._text($scope[\"#text/0\"], count);\n  _child($scope[\"#childScope/1\"]);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/escape-html-strings/__snapshots__/html.expected/tags/child.js",
    "content": "const value = \"No!!\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<span>child`\\\"'</span><span>${value}</span>\");\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/escape-html-strings/__snapshots__/html.expected/template.js",
    "content": "const count = 1;\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nimport _child from \"./tags/child.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div>${_._escape(count)}\\` `);\n  _child({});\n  _._html(\"</div>\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/escape-html-strings/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  1` \n  <span>\n    child`\"'\n  </span>\n  <span>\n    ${value}\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/escape-html-strings/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      1` \n      <span>\n        child`\"'\n      </span>\n      <span>\n        ${value}\n      </span>\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/escape-html-strings/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  1` \n  <span>\n    child`\"'\n  </span>\n  <span>\n    ${value}\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/escape-html-strings/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>1` <span>child`\"'</span><span>${value}</span></div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      1` \n      <span>\n        child`\"'\n      </span>\n      <span>\n        ${value}\n      </span>\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/div/span0\nINSERT html/body/div/span0/#text\nINSERT html/body/div/span1\nINSERT html/body/div/span1/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/escape-html-strings/tags/child.marko",
    "content": "static const value = \"No!!\"\n<span>child`\"'</span>\n<span>\\${value}</span>\n<script>\"`\"</script>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/escape-html-strings/template.marko",
    "content": "static const count = 1;\n<div>\n  ${count}`\n  <child />\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/expression-statement-tag-var-assignment/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"o\",\n      \"$init\": \"t\",\n      \"$$x__OR__direction__script\": \"n\",\n      \"$$x__OR__direction\": \"c\",\n      \"$$x\": \"i\",\n      \"$$direction\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/expression-statement-tag-var-assignment/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  class=\"up\"\n>\n  up\n</button>\n<button\n  class=\"down\"\n>\n  down\n</button>\n<button\n  class=\"change\"\n>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".change\").click();\n```\n```html\n<button\n  class=\"up\"\n>\n  up\n</button>\n<button\n  class=\"down\"\n>\n  down\n</button>\n<button\n  class=\"change\"\n>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".up\").click();\n```\n```html\n<button\n  class=\"up\"\n>\n  up\n</button>\n<button\n  class=\"down\"\n>\n  down\n</button>\n<button\n  class=\"change\"\n>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".change\").click();\n```\n```html\n<button\n  class=\"up\"\n>\n  up\n</button>\n<button\n  class=\"down\"\n>\n  down\n</button>\n<button\n  class=\"change\"\n>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".change\").click();\n```\n```html\n<button\n  class=\"up\"\n>\n  up\n</button>\n<button\n  class=\"down\"\n>\n  down\n</button>\n<button\n  class=\"change\"\n>\n  3\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".down\").click();\n```\n```html\n<button\n  class=\"up\"\n>\n  up\n</button>\n<button\n  class=\"down\"\n>\n  down\n</button>\n<button\n  class=\"change\"\n>\n  3\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".change\").click();\n```\n```html\n<button\n  class=\"up\"\n>\n  up\n</button>\n<button\n  class=\"down\"\n>\n  down\n</button>\n<button\n  class=\"change\"\n>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".change\").click();\n```\n```html\n<button\n  class=\"up\"\n>\n  up\n</button>\n<button\n  class=\"down\"\n>\n  down\n</button>\n<button\n  class=\"change\"\n>\n  1\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/expression-statement-tag-var-assignment/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button\n  class=\"up\"\n>\n  up\n</button>\n<button\n  class=\"down\"\n>\n  down\n</button>\n<button\n  class=\"change\"\n>\n  1\n</button>\n```\n\n# Mutations\n```\nINSERT button0, button1, button2\n```\n\n# Render\n```js\ncontainer.querySelector(\".change\").click();\n```\n```html\n<button\n  class=\"up\"\n>\n  up\n</button>\n<button\n  class=\"down\"\n>\n  down\n</button>\n<button\n  class=\"change\"\n>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".up\").click();\n```\n```html\n<button\n  class=\"up\"\n>\n  up\n</button>\n<button\n  class=\"down\"\n>\n  down\n</button>\n<button\n  class=\"change\"\n>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".change\").click();\n```\n```html\n<button\n  class=\"up\"\n>\n  up\n</button>\n<button\n  class=\"down\"\n>\n  down\n</button>\n<button\n  class=\"change\"\n>\n  2\n</button>\n```\n\n# Mutations\n```\nUPDATE button2/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\".change\").click();\n```\n```html\n<button\n  class=\"up\"\n>\n  up\n</button>\n<button\n  class=\"down\"\n>\n  down\n</button>\n<button\n  class=\"change\"\n>\n  3\n</button>\n```\n\n# Mutations\n```\nUPDATE button2/#text \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\".down\").click();\n```\n```html\n<button\n  class=\"up\"\n>\n  up\n</button>\n<button\n  class=\"down\"\n>\n  down\n</button>\n<button\n  class=\"change\"\n>\n  3\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".change\").click();\n```\n```html\n<button\n  class=\"up\"\n>\n  up\n</button>\n<button\n  class=\"down\"\n>\n  down\n</button>\n<button\n  class=\"change\"\n>\n  2\n</button>\n```\n\n# Mutations\n```\nUPDATE button2/#text \"3\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\".change\").click();\n```\n```html\n<button\n  class=\"up\"\n>\n  up\n</button>\n<button\n  class=\"down\"\n>\n  down\n</button>\n<button\n  class=\"change\"\n>\n  1\n</button>\n```\n\n# Mutations\n```\nUPDATE button2/#text \"2\" => \"1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/expression-statement-tag-var-assignment/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 280 (min) 163 (brotli)\nconst $x__OR__direction__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.c, \"click\", function () {\n      \"up\" === $scope.f\n        ? $x($scope, $scope.e + 1)\n        : \"down\" === $scope.f && $x($scope, $scope.e - 1);\n    }),\n  ),\n  $x__OR__direction = _._or(6, $x__OR__direction__script),\n  $x = _._let(4, ($scope) => {\n    (_._text($scope.d, $scope.e), $x__OR__direction($scope));\n  }),\n  $direction = _._let(5, $x__OR__direction);\n(_._script(\"a1\", ($scope) => {\n  (_._on($scope.a, \"click\", function () {\n    $direction($scope, \"up\");\n  }),\n    _._on($scope.b, \"click\", function () {\n      $direction($scope, \"down\");\n    }));\n}),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/expression-statement-tag-var-assignment/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button class=up>up</button><button class=down>down</button><button class=change> </button>\";\nexport const $walks = /* get, over(1), get, over(1), get, next(1), get, out(1) */\" b b D l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $x__OR__direction__script = _._script(\"__tests__/template.marko_0_x_direction\", $scope => _._on($scope[\"#button/2\"], \"click\", function () {\n  if ($scope.direction === \"up\") $x($scope, $scope.x + 1);else if ($scope.direction === \"down\") $x($scope, $scope.x - 1);\n}));\nconst $x__OR__direction = /* @__PURE__ */_._or(6, $x__OR__direction__script);\nconst $x = /* @__PURE__ */_._let(\"x/4\", $scope => {\n  _._text($scope[\"#text/3\"], $scope.x);\n  $x__OR__direction($scope);\n});\nconst $direction = /* @__PURE__ */_._let(\"direction/5\", $x__OR__direction);\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => {\n  _._on($scope[\"#button/0\"], \"click\", function () {\n    $direction($scope, \"up\");\n  });\n  _._on($scope[\"#button/1\"], \"click\", function () {\n    $direction($scope, \"down\");\n  });\n});\nexport function $setup($scope) {\n  $x($scope, 1);\n  $direction($scope, undefined);\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/expression-statement-tag-var-assignment/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let x = 1;\n  let direction = undefined;\n  _._html(`<button class=up>up</button>${_._el_resume($scope0_id, \"#button/0\")}<button class=down>down</button>${_._el_resume($scope0_id, \"#button/1\")}<button class=change>${_._escape(x)}${_._el_resume($scope0_id, \"#text/3\")}</button>${_._el_resume($scope0_id, \"#button/2\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_x_direction\");\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {\n    x,\n    direction\n  }, \"__tests__/template.marko\", 0, {\n    x: \"1:6\",\n    direction: \"2:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/expression-statement-tag-var-assignment/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  class=\"up\"\n>\n  up\n</button>\n<button\n  class=\"down\"\n>\n  down\n</button>\n<button\n  class=\"change\"\n>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".change\").click();\n```\n```html\n<button\n  class=\"up\"\n>\n  up\n</button>\n<button\n  class=\"down\"\n>\n  down\n</button>\n<button\n  class=\"change\"\n>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".up\").click();\n```\n```html\n<button\n  class=\"up\"\n>\n  up\n</button>\n<button\n  class=\"down\"\n>\n  down\n</button>\n<button\n  class=\"change\"\n>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".change\").click();\n```\n```html\n<button\n  class=\"up\"\n>\n  up\n</button>\n<button\n  class=\"down\"\n>\n  down\n</button>\n<button\n  class=\"change\"\n>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".change\").click();\n```\n```html\n<button\n  class=\"up\"\n>\n  up\n</button>\n<button\n  class=\"down\"\n>\n  down\n</button>\n<button\n  class=\"change\"\n>\n  3\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".down\").click();\n```\n```html\n<button\n  class=\"up\"\n>\n  up\n</button>\n<button\n  class=\"down\"\n>\n  down\n</button>\n<button\n  class=\"change\"\n>\n  3\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".change\").click();\n```\n```html\n<button\n  class=\"up\"\n>\n  up\n</button>\n<button\n  class=\"down\"\n>\n  down\n</button>\n<button\n  class=\"change\"\n>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".change\").click();\n```\n```html\n<button\n  class=\"up\"\n>\n  up\n</button>\n<button\n  class=\"down\"\n>\n  down\n</button>\n<button\n  class=\"change\"\n>\n  1\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/expression-statement-tag-var-assignment/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"up\"\n    >\n      up\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      class=\"down\"\n    >\n      down\n    </button>\n    <!--M_*1 #button/1-->\n    <button\n      class=\"change\"\n    >\n      1\n      <!--M_*1 #text/3-->\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 1\n        }]),\n        \"__tests__/template.marko_0_x_direction 1 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".change\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"up\"\n    >\n      up\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      class=\"down\"\n    >\n      down\n    </button>\n    <!--M_*1 #button/1-->\n    <button\n      class=\"change\"\n    >\n      1\n      <!--M_*1 #text/3-->\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 1\n        }]),\n        \"__tests__/template.marko_0_x_direction 1 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".up\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"up\"\n    >\n      up\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      class=\"down\"\n    >\n      down\n    </button>\n    <!--M_*1 #button/1-->\n    <button\n      class=\"change\"\n    >\n      1\n      <!--M_*1 #text/3-->\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 1\n        }]),\n        \"__tests__/template.marko_0_x_direction 1 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".change\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"up\"\n    >\n      up\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      class=\"down\"\n    >\n      down\n    </button>\n    <!--M_*1 #button/1-->\n    <button\n      class=\"change\"\n    >\n      2\n      <!--M_*1 #text/3-->\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 1\n        }]),\n        \"__tests__/template.marko_0_x_direction 1 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button2/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\".change\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"up\"\n    >\n      up\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      class=\"down\"\n    >\n      down\n    </button>\n    <!--M_*1 #button/1-->\n    <button\n      class=\"change\"\n    >\n      3\n      <!--M_*1 #text/3-->\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 1\n        }]),\n        \"__tests__/template.marko_0_x_direction 1 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button2/#text \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\".down\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"up\"\n    >\n      up\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      class=\"down\"\n    >\n      down\n    </button>\n    <!--M_*1 #button/1-->\n    <button\n      class=\"change\"\n    >\n      3\n      <!--M_*1 #text/3-->\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 1\n        }]),\n        \"__tests__/template.marko_0_x_direction 1 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".change\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"up\"\n    >\n      up\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      class=\"down\"\n    >\n      down\n    </button>\n    <!--M_*1 #button/1-->\n    <button\n      class=\"change\"\n    >\n      2\n      <!--M_*1 #text/3-->\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 1\n        }]),\n        \"__tests__/template.marko_0_x_direction 1 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button2/#text \"3\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\".change\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"up\"\n    >\n      up\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      class=\"down\"\n    >\n      down\n    </button>\n    <!--M_*1 #button/1-->\n    <button\n      class=\"change\"\n    >\n      1\n      <!--M_*1 #text/3-->\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 1\n        }]),\n        \"__tests__/template.marko_0_x_direction 1 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button2/#text \"2\" => \"1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/expression-statement-tag-var-assignment/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button\n  class=\"up\"\n>\n  up\n</button>\n<button\n  class=\"down\"\n>\n  down\n</button>\n<button\n  class=\"change\"\n>\n  1\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/expression-statement-tag-var-assignment/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button class=up>up</button><!--M_*1 #button/0--><button class=down>down</button><!--M_*1 #button/1--><button class=change>1<!--M_*1 #text/3--></button><!--M_*1 #button/2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{x:1}]),\"__tests__/template.marko_0_x_direction 1 __tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"up\"\n    >\n      up\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      class=\"down\"\n    >\n      down\n    </button>\n    <!--M_*1 #button/1-->\n    <button\n      class=\"change\"\n    >\n      1\n      <!--M_*1 #text/3-->\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 1\n        }]),\n        \"__tests__/template.marko_0_x_direction 1 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button0\nINSERT html/body/button0/#text\nINSERT html/body/#comment0\nINSERT html/body/button1\nINSERT html/body/button1/#text\nINSERT html/body/#comment1\nINSERT html/body/button2\nINSERT html/body/button2/#text\nINSERT html/body/button2/#comment\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/expression-statement-tag-var-assignment/template.marko",
    "content": "<let/x=1>\n<let/direction>\n\n<button.up onClick() { direction = \"up\" }>up</button>\n<button.down onClick() { direction = \"down\" }>down</button>\n\n<button.change onClick() {\n  if (direction === \"up\") x++;\n  else if (direction === \"down\") x--;\n}>${x}</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/expression-statement-tag-var-assignment/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction clickUp(container: Element) {\n  container.querySelector<HTMLButtonElement>(\".up\")!.click();\n}\n\nfunction clickDown(container: Element) {\n  container.querySelector<HTMLButtonElement>(\".down\")!.click();\n}\n\nfunction clickChange(container: Element) {\n  container.querySelector<HTMLButtonElement>(\".change\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [\n    {},\n    clickChange,\n    clickUp,\n    clickChange,\n    clickChange,\n    clickDown,\n    clickChange,\n    clickChange,\n  ],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-by/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$for_content5__$params\": \"_\",\n      \"$$for_content5__$temp\": \"e\",\n      \"$$for_content4__$params\": \"f\",\n      \"$$for_content4__$temp\": \"r\",\n      \"$$for_content3__$params\": \"i\",\n      \"$$for_content3__$temp\": \"a\",\n      \"$$for_content2__$params\": \"m\",\n      \"$$for_content2__$temp\": \"x\",\n      \"$$for_content__$params\": \"g\",\n      \"$$for_content__$temp\": \"d\",\n      \"$$for\": \"c\",\n      \"$$for2\": \"n\",\n      \"$$for3\": \"s\",\n      \"$$for4\": \"b\",\n      \"$$for5\": \"k\",\n      \"$$items__script\": \"l\",\n      \"$$items\": \"p\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-by/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <div\n    class=\"by-string\"\n  >\n    firstsecondthird\n  </div>\n  <div\n    class=\"by-function\"\n  >\n    firstsecondthird\n  </div>\n  <div\n    class=\"by-unknown-string\"\n  >\n    firstsecondthird\n  </div>\n  <div\n    class=\"by-unknown-function\"\n  >\n    firstsecondthird\n  </div>\n  <div\n    class=\"by-unknown-missing\"\n  >\n    firstsecondthird\n  </div>\n  <button>\n    Rotate\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <div\n    class=\"by-string\"\n  >\n    secondthirdfirst\n  </div>\n  <div\n    class=\"by-function\"\n  >\n    secondthirdfirst\n  </div>\n  <div\n    class=\"by-unknown-string\"\n  >\n    secondthirdfirst\n  </div>\n  <div\n    class=\"by-unknown-function\"\n  >\n    secondthirdfirst\n  </div>\n  <div\n    class=\"by-unknown-missing\"\n  >\n    secondthirdfirst\n  </div>\n  <button>\n    Rotate\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <div\n    class=\"by-string\"\n  >\n    thirdfirstsecond\n  </div>\n  <div\n    class=\"by-function\"\n  >\n    thirdfirstsecond\n  </div>\n  <div\n    class=\"by-unknown-string\"\n  >\n    thirdfirstsecond\n  </div>\n  <div\n    class=\"by-unknown-function\"\n  >\n    thirdfirstsecond\n  </div>\n  <div\n    class=\"by-unknown-missing\"\n  >\n    thirdfirstsecond\n  </div>\n  <button>\n    Rotate\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <div\n    class=\"by-string\"\n  >\n    firstsecondthird\n  </div>\n  <div\n    class=\"by-function\"\n  >\n    firstsecondthird\n  </div>\n  <div\n    class=\"by-unknown-string\"\n  >\n    firstsecondthird\n  </div>\n  <div\n    class=\"by-unknown-function\"\n  >\n    firstsecondthird\n  </div>\n  <div\n    class=\"by-unknown-missing\"\n  >\n    firstsecondthird\n  </div>\n  <button>\n    Rotate\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-by/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  <div\n    class=\"by-string\"\n  >\n    firstsecondthird\n  </div>\n  <div\n    class=\"by-function\"\n  >\n    firstsecondthird\n  </div>\n  <div\n    class=\"by-unknown-string\"\n  >\n    firstsecondthird\n  </div>\n  <div\n    class=\"by-unknown-function\"\n  >\n    firstsecondthird\n  </div>\n  <div\n    class=\"by-unknown-missing\"\n  >\n    firstsecondthird\n  </div>\n  <button>\n    Rotate\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <div\n    class=\"by-string\"\n  >\n    secondthirdfirst\n  </div>\n  <div\n    class=\"by-function\"\n  >\n    secondthirdfirst\n  </div>\n  <div\n    class=\"by-unknown-string\"\n  >\n    secondthirdfirst\n  </div>\n  <div\n    class=\"by-unknown-function\"\n  >\n    secondthirdfirst\n  </div>\n  <div\n    class=\"by-unknown-missing\"\n  >\n    secondthirdfirst\n  </div>\n  <button>\n    Rotate\n  </button>\n</div>\n```\n\n# Mutations\n```\nREMOVE div/div0/#text2 before div/div0/#text0\nINSERT div/div0/#text2\nREMOVE div/div1/#text2 before div/div1/#text0\nINSERT div/div1/#text2\nREMOVE div/div2/#text2 before div/div2/#text0\nINSERT div/div2/#text2\nREMOVE div/div3/#text2 before div/div3/#text0\nINSERT div/div3/#text2\nUPDATE div/div4/#text0 \"first\" => \"second\"\nUPDATE div/div4/#text1 \"second\" => \"third\"\nUPDATE div/div4/#text2 \"third\" => \"first\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <div\n    class=\"by-string\"\n  >\n    thirdfirstsecond\n  </div>\n  <div\n    class=\"by-function\"\n  >\n    thirdfirstsecond\n  </div>\n  <div\n    class=\"by-unknown-string\"\n  >\n    thirdfirstsecond\n  </div>\n  <div\n    class=\"by-unknown-function\"\n  >\n    thirdfirstsecond\n  </div>\n  <div\n    class=\"by-unknown-missing\"\n  >\n    thirdfirstsecond\n  </div>\n  <button>\n    Rotate\n  </button>\n</div>\n```\n\n# Mutations\n```\nREMOVE div/div0/#text2 before div/div0/#text0\nINSERT div/div0/#text2\nREMOVE div/div1/#text2 before div/div1/#text0\nINSERT div/div1/#text2\nREMOVE div/div2/#text2 before div/div2/#text0\nINSERT div/div2/#text2\nREMOVE div/div3/#text2 before div/div3/#text0\nINSERT div/div3/#text2\nUPDATE div/div4/#text0 \"second\" => \"third\"\nUPDATE div/div4/#text1 \"third\" => \"first\"\nUPDATE div/div4/#text2 \"first\" => \"second\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <div\n    class=\"by-string\"\n  >\n    firstsecondthird\n  </div>\n  <div\n    class=\"by-function\"\n  >\n    firstsecondthird\n  </div>\n  <div\n    class=\"by-unknown-string\"\n  >\n    firstsecondthird\n  </div>\n  <div\n    class=\"by-unknown-function\"\n  >\n    firstsecondthird\n  </div>\n  <div\n    class=\"by-unknown-missing\"\n  >\n    firstsecondthird\n  </div>\n  <button>\n    Rotate\n  </button>\n</div>\n```\n\n# Mutations\n```\nREMOVE div/div0/#text2 before div/div0/#text0\nINSERT div/div0/#text2\nREMOVE div/div1/#text2 before div/div1/#text0\nINSERT div/div1/#text2\nREMOVE div/div2/#text2 before div/div2/#text0\nINSERT div/div2/#text2\nREMOVE div/div3/#text2 before div/div3/#text0\nINSERT div/div3/#text2\nUPDATE div/div4/#text0 \"third\" => \"first\"\nUPDATE div/div4/#text1 \"first\" => \"second\"\nUPDATE div/div4/#text2 \"second\" => \"third\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-by/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 664 (min) 235 (brotli)\nconst $for_content5__$params = ($scope, $params6) =>\n    $for_content5__$temp($scope, $params6?.[0]),\n  $for_content5__$temp = ($scope, $temp5) =>\n    (($scope, text) => _._text($scope.a, text))($scope, $temp5.text),\n  $for_content4__$params = ($scope, $params5) =>\n    $for_content4__$temp($scope, $params5?.[0]),\n  $for_content4__$temp = ($scope, $temp4) =>\n    (($scope, text) => _._text($scope.a, text))($scope, $temp4.text),\n  $for_content3__$params = ($scope, $params4) =>\n    $for_content3__$temp($scope, $params4?.[0]),\n  $for_content3__$temp = ($scope, $temp3) =>\n    (($scope, text) => _._text($scope.a, text))($scope, $temp3.text),\n  $for_content2__$params = ($scope, $params3) =>\n    $for_content2__$temp($scope, $params3?.[0]),\n  $for_content2__$temp = ($scope, $temp2) =>\n    (($scope, text) => _._text($scope.a, text))($scope, $temp2.text),\n  $for_content__$params = ($scope, $params2) =>\n    $for_content__$temp($scope, $params2?.[0]),\n  $for_content__$temp = ($scope, $temp) =>\n    (($scope, text) => _._text($scope.a, text))($scope, $temp.text),\n  $for = _._for_of(0, \" \", \" b\", 0, $for_content__$params),\n  $for2 = _._for_of(1, \" \", \" b\", 0, $for_content2__$params),\n  $for3 = _._for_of(2, \" \", \" b\", 0, $for_content3__$params),\n  $for4 = _._for_of(3, \" \", \" b\", 0, $for_content4__$params),\n  $for5 = _._for_of(4, \" \", \" b\", 0, $for_content5__$params),\n  $items__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.f, \"click\", function () {\n      $items($scope, [...$scope.g.slice(1), $scope.g?.[0]]);\n    }),\n  ),\n  $items = _._let(6, ($scope) => {\n    ($for($scope, [$scope.g, \"id\"]),\n      $for2($scope, [$scope.g, (item) => item.id]),\n      $for3($scope, [$scope.g, \"id\"]),\n      $for4($scope, [$scope.g, (item) => item.id]),\n      $for5($scope, [$scope.g, void 0]),\n      $items__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-by/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div><div class=by-string></div><div class=by-function></div><div class=by-unknown-string></div><div class=by-unknown-function></div><div class=by-unknown-missing></div><button>Rotate</button></div>\";\nexport const $walks = /* next(1), get, over(1), get, over(1), get, over(1), get, over(1), get, over(1), get, out(1) */\"D b b b b b l\";\nfunction getStringBy() {\n  return \"id\";\n}\nfunction getFunctionBy() {\n  return item => item.id;\n}\nfunction getMissingBy() {\n  return undefined;\n}\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for_content5__text = ($scope, text) => _._text($scope[\"#text/0\"], text);\nconst $for_content5__$params = ($scope, $params6) => $for_content5__$temp($scope, $params6?.[0]);\nconst $for_content5__$temp = ($scope, $temp5) => $for_content5__text($scope, $temp5.text);\nconst $for_content4__text = ($scope, text) => _._text($scope[\"#text/0\"], text);\nconst $for_content4__$params = ($scope, $params5) => $for_content4__$temp($scope, $params5?.[0]);\nconst $for_content4__$temp = ($scope, $temp4) => $for_content4__text($scope, $temp4.text);\nconst $for_content3__text = ($scope, text) => _._text($scope[\"#text/0\"], text);\nconst $for_content3__$params = ($scope, $params4) => $for_content3__$temp($scope, $params4?.[0]);\nconst $for_content3__$temp = ($scope, $temp3) => $for_content3__text($scope, $temp3.text);\nconst $for_content2__text = ($scope, text) => _._text($scope[\"#text/0\"], text);\nconst $for_content2__$params = ($scope, $params3) => $for_content2__$temp($scope, $params3?.[0]);\nconst $for_content2__$temp = ($scope, $temp2) => $for_content2__text($scope, $temp2.text);\nconst $for_content__text = ($scope, text) => _._text($scope[\"#text/0\"], text);\nconst $for_content__$params = ($scope, $params2) => $for_content__$temp($scope, $params2?.[0]);\nconst $for_content__$temp = ($scope, $temp) => $for_content__text($scope, $temp.text);\nconst $for = /* @__PURE__ */_._for_of(\"#div/0\", \" \", /* get, over(1) */\" b\", 0, $for_content__$params);\nconst $for2 = /* @__PURE__ */_._for_of(\"#div/1\", \" \", /* get, over(1) */\" b\", 0, $for_content2__$params);\nconst $for3 = /* @__PURE__ */_._for_of(\"#div/2\", \" \", /* get, over(1) */\" b\", 0, $for_content3__$params);\nconst $for4 = /* @__PURE__ */_._for_of(\"#div/3\", \" \", /* get, over(1) */\" b\", 0, $for_content4__$params);\nconst $for5 = /* @__PURE__ */_._for_of(\"#div/4\", \" \", /* get, over(1) */\" b\", 0, $for_content5__$params);\nconst $items__script = _._script(\"__tests__/template.marko_0_items\", $scope => _._on($scope[\"#button/5\"], \"click\", function () {\n  $items($scope, [...$scope.items.slice(1), $scope.items?.[0]]);\n}));\nconst $items = /* @__PURE__ */_._let(\"items/6\", $scope => {\n  $for($scope, [$scope.items, \"id\"]);\n  $for2($scope, [$scope.items, item => item.id]);\n  $for3($scope, [$scope.items, getStringBy()]);\n  $for4($scope, [$scope.items, getFunctionBy()]);\n  $for5($scope, [$scope.items, getMissingBy()]);\n  $items__script($scope);\n});\nexport function $setup($scope) {\n  $items($scope, [{\n    id: 0,\n    text: \"first\"\n  }, {\n    id: 1,\n    text: \"second\"\n  }, {\n    id: 2,\n    text: \"third\"\n  }]);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-by/__snapshots__/html.expected/template.js",
    "content": "function getStringBy() {\n  return \"id\";\n}\nfunction getFunctionBy() {\n  return item => item.id;\n}\nfunction getMissingBy() {\n  return undefined;\n}\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let items = [{\n    id: 0,\n    text: \"first\"\n  }, {\n    id: 1,\n    text: \"second\"\n  }, {\n    id: 2,\n    text: \"third\"\n  }];\n  _._html(\"<div><div class=by-string>\");\n  _._for_of(items, ({\n    text\n  }) => {\n    const $scope1_id = _._scope_id();\n    _._html(`${_._escape(text)}${_._el_resume($scope1_id, \"#text/0\")}`);\n    _._scope($scope1_id, {}, \"__tests__/template.marko\", \"17:6\");\n  }, \"id\", $scope0_id, \"#div/0\", /* items */1, /* items */1, /* items */1, \"</div>\", 1);\n  _._html(\"<div class=by-function>\");\n  _._for_of(items, ({\n    text\n  }) => {\n    const $scope2_id = _._scope_id();\n    _._html(`${_._escape(text)}${_._el_resume($scope2_id, \"#text/0\")}`);\n    _._scope($scope2_id, {}, \"__tests__/template.marko\", \"21:6\");\n  }, item => item.id, $scope0_id, \"#div/1\", /* items */1, /* items */1, /* items */1, \"</div>\", 1);\n  _._html(\"<div class=by-unknown-string>\");\n  _._for_of(items, ({\n    text\n  }) => {\n    const $scope3_id = _._scope_id();\n    _._html(`${_._escape(text)}${_._el_resume($scope3_id, \"#text/0\")}`);\n    _._scope($scope3_id, {}, \"__tests__/template.marko\", \"25:6\");\n  }, getStringBy(), $scope0_id, \"#div/2\", /* items */1, /* items */1, /* items */1, \"</div>\", 1);\n  _._html(\"<div class=by-unknown-function>\");\n  _._for_of(items, ({\n    text\n  }) => {\n    const $scope4_id = _._scope_id();\n    _._html(`${_._escape(text)}${_._el_resume($scope4_id, \"#text/0\")}`);\n    _._scope($scope4_id, {}, \"__tests__/template.marko\", \"29:6\");\n  }, getFunctionBy(), $scope0_id, \"#div/3\", /* items */1, /* items */1, /* items */1, \"</div>\", 1);\n  _._html(\"<div class=by-unknown-missing>\");\n  _._for_of(items, ({\n    text\n  }) => {\n    const $scope5_id = _._scope_id();\n    _._html(`${_._escape(text)}${_._el_resume($scope5_id, \"#text/0\")}`);\n    _._scope($scope5_id, {}, \"__tests__/template.marko\", \"33:6\");\n  }, getMissingBy(), $scope0_id, \"#div/4\", /* items */1, /* items */1, /* items */1, \"</div>\", 1);\n  _._html(`<button>Rotate</button>${_._el_resume($scope0_id, \"#button/5\")}</div>`);\n  _._script($scope0_id, \"__tests__/template.marko_0_items\");\n  _._scope($scope0_id, {\n    items\n  }, \"__tests__/template.marko\", 0, {\n    items: \"14:8\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-by/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <div\n    class=\"by-string\"\n  >\n    firstsecondthird\n  </div>\n  <div\n    class=\"by-function\"\n  >\n    firstsecondthird\n  </div>\n  <div\n    class=\"by-unknown-string\"\n  >\n    firstsecondthird\n  </div>\n  <div\n    class=\"by-unknown-function\"\n  >\n    firstsecondthird\n  </div>\n  <div\n    class=\"by-unknown-missing\"\n  >\n    firstsecondthird\n  </div>\n  <button>\n    Rotate\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <div\n    class=\"by-string\"\n  >\n    secondthirdfirst\n  </div>\n  <div\n    class=\"by-function\"\n  >\n    secondthirdfirst\n  </div>\n  <div\n    class=\"by-unknown-string\"\n  >\n    secondthirdfirst\n  </div>\n  <div\n    class=\"by-unknown-function\"\n  >\n    secondthirdfirst\n  </div>\n  <div\n    class=\"by-unknown-missing\"\n  >\n    secondthirdfirst\n  </div>\n  <button>\n    Rotate\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <div\n    class=\"by-string\"\n  >\n    thirdfirstsecond\n  </div>\n  <div\n    class=\"by-function\"\n  >\n    thirdfirstsecond\n  </div>\n  <div\n    class=\"by-unknown-string\"\n  >\n    thirdfirstsecond\n  </div>\n  <div\n    class=\"by-unknown-function\"\n  >\n    thirdfirstsecond\n  </div>\n  <div\n    class=\"by-unknown-missing\"\n  >\n    thirdfirstsecond\n  </div>\n  <button>\n    Rotate\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <div\n    class=\"by-string\"\n  >\n    firstsecondthird\n  </div>\n  <div\n    class=\"by-function\"\n  >\n    firstsecondthird\n  </div>\n  <div\n    class=\"by-unknown-string\"\n  >\n    firstsecondthird\n  </div>\n  <div\n    class=\"by-unknown-function\"\n  >\n    firstsecondthird\n  </div>\n  <div\n    class=\"by-unknown-missing\"\n  >\n    firstsecondthird\n  </div>\n  <button>\n    Rotate\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-by/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <div\n        class=\"by-string\"\n      >\n        first\n        <!--M_*2 #text/0-->\n        second\n        <!--M_*3 #text/0-->\n        third\n        <!--M_*4 #text/0-->\n        <!--M_}1 #div/0 4 3 2-->\n      </div>\n      <div\n        class=\"by-function\"\n      >\n        first\n        <!--M_*5 #text/0-->\n        second\n        <!--M_*6 #text/0-->\n        third\n        <!--M_*7 #text/0-->\n        <!--M_}1 #div/1 7 6 5-->\n      </div>\n      <div\n        class=\"by-unknown-string\"\n      >\n        first\n        <!--M_*8 #text/0-->\n        second\n        <!--M_*9 #text/0-->\n        third\n        <!--M_*10 #text/0-->\n        <!--M_}1 #div/2 10 9 8-->\n      </div>\n      <div\n        class=\"by-unknown-function\"\n      >\n        first\n        <!--M_*11 #text/0-->\n        second\n        <!--M_*12 #text/0-->\n        third\n        <!--M_*13 #text/0-->\n        <!--M_}1 #div/3 13 12 11-->\n      </div>\n      <div\n        class=\"by-unknown-missing\"\n      >\n        first\n        <!--M_*14 #text/0-->\n        second\n        <!--M_*15 #text/0-->\n        third\n        <!--M_*16 #text/0-->\n        <!--M_}1 #div/4 16 15 14-->\n      </div>\n      <button>\n        Rotate\n      </button>\n      <!--M_*1 #button/5-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          items: [\n          {\n            id: 0,\n            text: \"first\"\n          },\n          {\n            id: 1,\n            text: \"second\"\n          },\n          {\n            id: 2,\n            text: \"third\"\n          }]\n        }]),\n        \"__tests__/template.marko_0_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <div\n        class=\"by-string\"\n      >\n        <!--M_*2 #text/0-->\n        second\n        <!--M_*3 #text/0-->\n        third\n        <!--M_*4 #text/0-->\n        <!--M_}1 #div/0 4 3 2-->\n        first\n      </div>\n      <div\n        class=\"by-function\"\n      >\n        <!--M_*5 #text/0-->\n        second\n        <!--M_*6 #text/0-->\n        third\n        <!--M_*7 #text/0-->\n        <!--M_}1 #div/1 7 6 5-->\n        first\n      </div>\n      <div\n        class=\"by-unknown-string\"\n      >\n        <!--M_*8 #text/0-->\n        second\n        <!--M_*9 #text/0-->\n        third\n        <!--M_*10 #text/0-->\n        <!--M_}1 #div/2 10 9 8-->\n        first\n      </div>\n      <div\n        class=\"by-unknown-function\"\n      >\n        <!--M_*11 #text/0-->\n        second\n        <!--M_*12 #text/0-->\n        third\n        <!--M_*13 #text/0-->\n        <!--M_}1 #div/3 13 12 11-->\n        first\n      </div>\n      <div\n        class=\"by-unknown-missing\"\n      >\n        second\n        <!--M_*14 #text/0-->\n        third\n        <!--M_*15 #text/0-->\n        first\n        <!--M_*16 #text/0-->\n        <!--M_}1 #div/4 16 15 14-->\n      </div>\n      <button>\n        Rotate\n      </button>\n      <!--M_*1 #button/5-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          items: [\n          {\n            id: 0,\n            text: \"first\"\n          },\n          {\n            id: 1,\n            text: \"second\"\n          },\n          {\n            id: 2,\n            text: \"third\"\n          }]\n        }]),\n        \"__tests__/template.marko_0_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/div/div0/#text2 before html/body/div/div0/#comment0\nINSERT html/body/div/div0/#text2\nREMOVE html/body/div/div1/#text2 before html/body/div/div1/#comment0\nINSERT html/body/div/div1/#text2\nREMOVE html/body/div/div2/#text2 before html/body/div/div2/#comment0\nINSERT html/body/div/div2/#text2\nREMOVE html/body/div/div3/#text2 before html/body/div/div3/#comment0\nINSERT html/body/div/div3/#text2\nUPDATE html/body/div/div4/#text0 \"first\" => \"second\"\nUPDATE html/body/div/div4/#text1 \"second\" => \"third\"\nUPDATE html/body/div/div4/#text2 \"third\" => \"first\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <div\n        class=\"by-string\"\n      >\n        <!--M_*2 #text/0-->\n        <!--M_*3 #text/0-->\n        third\n        <!--M_*4 #text/0-->\n        <!--M_}1 #div/0 4 3 2-->\n        firstsecond\n      </div>\n      <div\n        class=\"by-function\"\n      >\n        <!--M_*5 #text/0-->\n        <!--M_*6 #text/0-->\n        third\n        <!--M_*7 #text/0-->\n        <!--M_}1 #div/1 7 6 5-->\n        firstsecond\n      </div>\n      <div\n        class=\"by-unknown-string\"\n      >\n        <!--M_*8 #text/0-->\n        <!--M_*9 #text/0-->\n        third\n        <!--M_*10 #text/0-->\n        <!--M_}1 #div/2 10 9 8-->\n        firstsecond\n      </div>\n      <div\n        class=\"by-unknown-function\"\n      >\n        <!--M_*11 #text/0-->\n        <!--M_*12 #text/0-->\n        third\n        <!--M_*13 #text/0-->\n        <!--M_}1 #div/3 13 12 11-->\n        firstsecond\n      </div>\n      <div\n        class=\"by-unknown-missing\"\n      >\n        third\n        <!--M_*14 #text/0-->\n        first\n        <!--M_*15 #text/0-->\n        second\n        <!--M_*16 #text/0-->\n        <!--M_}1 #div/4 16 15 14-->\n      </div>\n      <button>\n        Rotate\n      </button>\n      <!--M_*1 #button/5-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          items: [\n          {\n            id: 0,\n            text: \"first\"\n          },\n          {\n            id: 1,\n            text: \"second\"\n          },\n          {\n            id: 2,\n            text: \"third\"\n          }]\n        }]),\n        \"__tests__/template.marko_0_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/div/div0/#text2 after html/body/div/div0/#comment0\nINSERT html/body/div/div0/#text2\nREMOVE html/body/div/div1/#text2 after html/body/div/div1/#comment0\nINSERT html/body/div/div1/#text2\nREMOVE html/body/div/div2/#text2 after html/body/div/div2/#comment0\nINSERT html/body/div/div2/#text2\nREMOVE html/body/div/div3/#text2 after html/body/div/div3/#comment0\nINSERT html/body/div/div3/#text2\nUPDATE html/body/div/div4/#text0 \"second\" => \"third\"\nUPDATE html/body/div/div4/#text1 \"third\" => \"first\"\nUPDATE html/body/div/div4/#text2 \"first\" => \"second\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <div\n        class=\"by-string\"\n      >\n        <!--M_*2 #text/0-->\n        <!--M_*3 #text/0-->\n        <!--M_*4 #text/0-->\n        <!--M_}1 #div/0 4 3 2-->\n        firstsecondthird\n      </div>\n      <div\n        class=\"by-function\"\n      >\n        <!--M_*5 #text/0-->\n        <!--M_*6 #text/0-->\n        <!--M_*7 #text/0-->\n        <!--M_}1 #div/1 7 6 5-->\n        firstsecondthird\n      </div>\n      <div\n        class=\"by-unknown-string\"\n      >\n        <!--M_*8 #text/0-->\n        <!--M_*9 #text/0-->\n        <!--M_*10 #text/0-->\n        <!--M_}1 #div/2 10 9 8-->\n        firstsecondthird\n      </div>\n      <div\n        class=\"by-unknown-function\"\n      >\n        <!--M_*11 #text/0-->\n        <!--M_*12 #text/0-->\n        <!--M_*13 #text/0-->\n        <!--M_}1 #div/3 13 12 11-->\n        firstsecondthird\n      </div>\n      <div\n        class=\"by-unknown-missing\"\n      >\n        first\n        <!--M_*14 #text/0-->\n        second\n        <!--M_*15 #text/0-->\n        third\n        <!--M_*16 #text/0-->\n        <!--M_}1 #div/4 16 15 14-->\n      </div>\n      <button>\n        Rotate\n      </button>\n      <!--M_*1 #button/5-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          items: [\n          {\n            id: 0,\n            text: \"first\"\n          },\n          {\n            id: 1,\n            text: \"second\"\n          },\n          {\n            id: 2,\n            text: \"third\"\n          }]\n        }]),\n        \"__tests__/template.marko_0_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/div/div0/#text2 after html/body/div/div0/#comment1\nINSERT html/body/div/div0/#text2\nREMOVE html/body/div/div1/#text2 after html/body/div/div1/#comment1\nINSERT html/body/div/div1/#text2\nREMOVE html/body/div/div2/#text2 after html/body/div/div2/#comment1\nINSERT html/body/div/div2/#text2\nREMOVE html/body/div/div3/#text2 after html/body/div/div3/#comment1\nINSERT html/body/div/div3/#text2\nUPDATE html/body/div/div4/#text0 \"third\" => \"first\"\nUPDATE html/body/div/div4/#text1 \"first\" => \"second\"\nUPDATE html/body/div/div4/#text2 \"second\" => \"third\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-by/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  <div\n    class=\"by-string\"\n  >\n    firstsecondthird\n  </div>\n  <div\n    class=\"by-function\"\n  >\n    firstsecondthird\n  </div>\n  <div\n    class=\"by-unknown-string\"\n  >\n    firstsecondthird\n  </div>\n  <div\n    class=\"by-unknown-function\"\n  >\n    firstsecondthird\n  </div>\n  <div\n    class=\"by-unknown-missing\"\n  >\n    firstsecondthird\n  </div>\n  <button>\n    Rotate\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-by/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><div class=by-string>first<!--M_*2 #text/0-->second<!--M_*3 #text/0-->third<!--M_*4 #text/0--><!--M_}1 #div/0 4 3 2--></div><div class=by-function>first<!--M_*5 #text/0-->second<!--M_*6 #text/0-->third<!--M_*7 #text/0--><!--M_}1 #div/1 7 6 5--></div><div class=by-unknown-string>first<!--M_*8 #text/0-->second<!--M_*9 #text/0-->third<!--M_*10 #text/0--><!--M_}1 #div/2 10 9 8--></div><div class=by-unknown-function>first<!--M_*11 #text/0-->second<!--M_*12 #text/0-->third<!--M_*13 #text/0--><!--M_}1 #div/3 13 12 11--></div><div class=by-unknown-missing>first<!--M_*14 #text/0-->second<!--M_*15 #text/0-->third<!--M_*16 #text/0--><!--M_}1 #div/4 16 15 14--></div><button>Rotate</button><!--M_*1 #button/5--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{items:[{id:0,text:\"first\"},{id:1,text:\"second\"},{id:2,text:\"third\"}]}]),\"__tests__/template.marko_0_items 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <div\n        class=\"by-string\"\n      >\n        first\n        <!--M_*2 #text/0-->\n        second\n        <!--M_*3 #text/0-->\n        third\n        <!--M_*4 #text/0-->\n        <!--M_}1 #div/0 4 3 2-->\n      </div>\n      <div\n        class=\"by-function\"\n      >\n        first\n        <!--M_*5 #text/0-->\n        second\n        <!--M_*6 #text/0-->\n        third\n        <!--M_*7 #text/0-->\n        <!--M_}1 #div/1 7 6 5-->\n      </div>\n      <div\n        class=\"by-unknown-string\"\n      >\n        first\n        <!--M_*8 #text/0-->\n        second\n        <!--M_*9 #text/0-->\n        third\n        <!--M_*10 #text/0-->\n        <!--M_}1 #div/2 10 9 8-->\n      </div>\n      <div\n        class=\"by-unknown-function\"\n      >\n        first\n        <!--M_*11 #text/0-->\n        second\n        <!--M_*12 #text/0-->\n        third\n        <!--M_*13 #text/0-->\n        <!--M_}1 #div/3 13 12 11-->\n      </div>\n      <div\n        class=\"by-unknown-missing\"\n      >\n        first\n        <!--M_*14 #text/0-->\n        second\n        <!--M_*15 #text/0-->\n        third\n        <!--M_*16 #text/0-->\n        <!--M_}1 #div/4 16 15 14-->\n      </div>\n      <button>\n        Rotate\n      </button>\n      <!--M_*1 #button/5-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          items: [\n          {\n            id: 0,\n            text: \"first\"\n          },\n          {\n            id: 1,\n            text: \"second\"\n          },\n          {\n            id: 2,\n            text: \"third\"\n          }]\n        }]),\n        \"__tests__/template.marko_0_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/div0\nINSERT html/body/div/div0/#text0\nINSERT html/body/div/div0/#comment0\nINSERT html/body/div/div0/#text1\nINSERT html/body/div/div0/#comment1\nINSERT html/body/div/div0/#text2\nINSERT html/body/div/div0/#comment2\nINSERT html/body/div/div0/#comment3\nINSERT html/body/div/div1\nINSERT html/body/div/div1/#text0\nINSERT html/body/div/div1/#comment0\nINSERT html/body/div/div1/#text1\nINSERT html/body/div/div1/#comment1\nINSERT html/body/div/div1/#text2\nINSERT html/body/div/div1/#comment2\nINSERT html/body/div/div1/#comment3\nINSERT html/body/div/div2\nINSERT html/body/div/div2/#text0\nINSERT html/body/div/div2/#comment0\nINSERT html/body/div/div2/#text1\nINSERT html/body/div/div2/#comment1\nINSERT html/body/div/div2/#text2\nINSERT html/body/div/div2/#comment2\nINSERT html/body/div/div2/#comment3\nINSERT html/body/div/div3\nINSERT html/body/div/div3/#text0\nINSERT html/body/div/div3/#comment0\nINSERT html/body/div/div3/#text1\nINSERT html/body/div/div3/#comment1\nINSERT html/body/div/div3/#text2\nINSERT html/body/div/div3/#comment2\nINSERT html/body/div/div3/#comment3\nINSERT html/body/div/div4\nINSERT html/body/div/div4/#text0\nINSERT html/body/div/div4/#comment0\nINSERT html/body/div/div4/#text1\nINSERT html/body/div/div4/#comment1\nINSERT html/body/div/div4/#text2\nINSERT html/body/div/div4/#comment2\nINSERT html/body/div/div4/#comment3\nINSERT html/body/div/button\nINSERT html/body/div/button/#text\nINSERT html/body/div/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-by/template.marko",
    "content": "static function getStringBy() {\n  return \"id\";\n}\n\nstatic function getFunctionBy() {\n  return item => item.id;\n}\n\nstatic function getMissingBy() {\n  return undefined;\n}\n\n<div>\n  <let/items=[{ id:0, text: \"first\"}, { id:1, text: \"second\"}, { id:2, text: \"third\"}]/>\n\n  <div.by-string>\n    <for|{ text }| of=items by=\"id\">${text}</for>\n  </>\n\n  <div.by-function>\n    <for|{ text }| of=items by=item=> item.id>${text}</for>\n  </div>\n\n  <div.by-unknown-string>\n    <for|{ text }| of=items by=getStringBy()>${text}</for>\n  </div>\n\n  <div.by-unknown-function>\n    <for|{ text }| of=items by=getFunctionBy()>${text}</for>\n  </div>\n\n  <div.by-unknown-missing>\n    <for|{ text }| of=items by=getMissingBy()>${text}</for>\n  </div>\n\n  <button onClick() { items = [...items.slice(1), items[0]]; }>Rotate</button>\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-by/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  (container.querySelector(\"button\") as HTMLButtonElement).click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-by-use-index/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"o\",\n      \"$init\": \"t\",\n      \"$$if_content__last\": \"_\",\n      \"$$if_content__setup\": \"r\",\n      \"$$for_content__messages__OR__index__script\": \"i\",\n      \"$$for_content__messages__OR__index\": \"c\",\n      \"$$for_content__messages\": \"m\",\n      \"$$for_content__setup\": \"e\",\n      \"$$for_content__index\": \"l\",\n      \"$$for_content__$params\": \"n\",\n      \"$$for\": \"a\",\n      \"$$messages\": \"d\",\n      \"$$if\": \"f\",\n      \"$$last\": \"s\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-by-use-index/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <button>\n    hello\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div />\n<div>\n  0\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-by-use-index/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  <button>\n    hello\n  </button>\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT div, #text, #comment\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div />\n<div>\n  0\n</div>\n<!---->\n```\n\n# Mutations\n```\nREMOVE button in div0\nINSERT div1\nREMOVE #text after div1\nUPDATE div1/#text \" \" => \"0\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-by-use-index/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 425 (min) 274 (brotli)\nconst $if_content__last = _._if_closure(1, 0, ($scope) =>\n    _._text($scope.a, $scope._.d),\n  ),\n  $if_content__setup = $if_content__last,\n  $for_content__messages__OR__index__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      ($messages($scope._, $scope._.c.toSpliced($scope.e, 1)),\n        $last($scope._, $scope.e));\n    }),\n  ),\n  $for_content__messages__OR__index = _._or(\n    5,\n    $for_content__messages__OR__index__script,\n  ),\n  $for_content__messages = _._for_closure(0, $for_content__messages__OR__index),\n  $for_content__setup = $for_content__messages,\n  $for_content__index = _._const(4, $for_content__messages__OR__index),\n  $for_content__$params = ($scope, $params2) => {\n    ((($scope, message) => {\n      _._html($scope, message, \"b\");\n    })($scope, $params2[0]),\n      $for_content__index($scope, $params2[1]));\n  },\n  $for = _._for_of(\n    0,\n    \"<button> </button>\",\n    \" D l\",\n    $for_content__setup,\n    $for_content__$params,\n  ),\n  $messages = _._let(2, ($scope) => {\n    ($for($scope, [$scope.c, (f) => f]), $for_content__messages($scope));\n  }),\n  $if = _._if(1, \"<div> </div>\", \"D l\", $if_content__setup),\n  $last = _._let(3, ($scope) => {\n    ($if($scope, void 0 !== $scope.d ? 0 : 1), $if_content__last($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-by-use-index/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div></div><!><!>\";\nexport const $walks = /* get, over(1), replace, over(2) */\" b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content__last = /* @__PURE__ */_._if_closure(\"#text/1\", 0, $scope => _._text($scope[\"#text/0\"], $scope._.last));\nconst $if_content__setup = $if_content__last;\nconst $for_content__messages__OR__index__script = _._script(\"__tests__/template.marko_1_messages_index\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $messages($scope._, $scope._.messages.toSpliced($scope.index, 1));\n  $last($scope._, $scope.index);\n}));\nconst $for_content__messages__OR__index = /* @__PURE__ */_._or(5, $for_content__messages__OR__index__script);\nconst $for_content__messages = /* @__PURE__ */_._for_closure(\"#div/0\", $for_content__messages__OR__index);\nconst $for_content__setup = $for_content__messages;\nconst $for_content__index = /* @__PURE__ */_._const(\"index\", $for_content__messages__OR__index);\nconst $for_content__message = ($scope, message) => _._html($scope, message, \"#text/1\");\nconst $for_content__$params = ($scope, $params2) => {\n  $for_content__message($scope, $params2[0]);\n  $for_content__index($scope, $params2[1]);\n};\nconst $for = /* @__PURE__ */_._for_of(\"#div/0\", \"<button> </button>\", /* get, next(1), get, out(1) */\" D l\", $for_content__setup, $for_content__$params);\nconst $messages = /* @__PURE__ */_._let(\"messages/2\", $scope => {\n  $for($scope, [$scope.messages, f => f]);\n  $for_content__messages($scope);\n});\nconst $if = /* @__PURE__ */_._if(\"#text/1\", \"<div> </div>\", /* next(1), get, out(1) */\"D l\", $if_content__setup);\nconst $last = /* @__PURE__ */_._let(\"last/3\", $scope => {\n  $if($scope, $scope.last !== undefined ? 0 : 1);\n  $if_content__last($scope);\n});\nexport function $setup($scope) {\n  $messages($scope, [\"hello\"]);\n  $last($scope, undefined);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-by-use-index/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let messages = [\"hello\"];\n  let last = undefined;\n  _._html(\"<div>\");\n  _._for_of(messages, (message, index) => {\n    const $scope1_id = _._scope_id();\n    _._html(`<button>${_._unescaped(message)}${_._el_resume($scope1_id, \"#text/1\")}</button>${_._el_resume($scope1_id, \"#button/0\")}`);\n    _._script($scope1_id, \"__tests__/template.marko_1_messages_index\");\n    _._scope($scope1_id, {\n      index,\n      _: _._scope_with_id($scope0_id)\n    }, \"__tests__/template.marko\", \"4:4\", {\n      index: \"4:17\"\n    });\n  }, f => f, $scope0_id, \"#div/0\", /* messages */1, /* messages */1, /* messages */1, \"</div>\", 1);\n  _._if(() => {\n    if (last !== undefined) {\n      const $scope2_id = _._scope_id();\n      _._html(`<div>${_._escape(last)}${_._el_resume($scope2_id, \"#text/0\")}</div>`);\n      _._scope($scope2_id, {\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"15:2\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/1\", 1, /* last */1, /* last */1, 0, 1);\n  _._scope($scope0_id, {\n    messages,\n    last\n  }, \"__tests__/template.marko\", 0, {\n    messages: \"1:6\",\n    last: \"2:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-by-use-index/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <button>\n    hello\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div />\n<div>\n  0\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-by-use-index/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        hello\n        <!--M_*2 #text/1-->\n      </button>\n      <!--M_*2 #button/0-->\n      <!--M_}1 #div/0 2-->\n    </div>\n    <!--M_|1 #text/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          messages: [\"hello\"]\n        },\n        {\n          index: 0,\n          _: _.a,\n          \"#LoopKey\": \"hello\"\n        }]),\n        \"__tests__/template.marko_1_messages_index 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <div>\n      0\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          messages: [\"hello\"]\n        },\n        {\n          index: 0,\n          _: _.a,\n          \"#LoopKey\": \"hello\"\n        }]),\n        \"__tests__/template.marko_1_messages_index 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE button, #comment, #comment in html/body/div0\nINSERT html/body/div1\nREMOVE #comment after html/body/div1\nUPDATE html/body/div1/#text \" \" => \"0\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-by-use-index/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  <button>\n    hello\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-by-use-index/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><button>hello<!--M_*2 #text/1--></button><!--M_*2 #button/0--><!--M_}1 #div/0 2--></div><!--M_|1 #text/1--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={messages:[\"hello\"]},{index:0,_:_.a,\"#LoopKey\":\"hello\"}]),\"__tests__/template.marko_1_messages_index 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        hello\n        <!--M_*2 #text/1-->\n      </button>\n      <!--M_*2 #button/0-->\n      <!--M_}1 #div/0 2-->\n    </div>\n    <!--M_|1 #text/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          messages: [\"hello\"]\n        },\n        {\n          index: 0,\n          _: _.a,\n          \"#LoopKey\": \"hello\"\n        }]),\n        \"__tests__/template.marko_1_messages_index 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/button\nINSERT html/body/div/button/#text\nINSERT html/body/div/button/#comment\nINSERT html/body/div/#comment0\nINSERT html/body/div/#comment1\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-by-use-index/template.marko",
    "content": "<let/messages=[\"hello\"]>\n<let/last>\n<div>\n  <for|message, index| of=messages by=(f) => f>\n    <button\n      onClick() {\n        messages = messages.toSpliced(index, 1);\n        last = index;\n      }>\n      $!{message}\n    </button>\n  </for>\n</div>\n\n<if=last !== undefined>\n  <div>${last}</div>\n</if>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-by-use-index/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  (container.querySelector(\"button\") as HTMLButtonElement).click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-destructure/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"i\",\n      \"$$for_content__$params\": \"o\",\n      \"$$for_content__$temp\": \"c\",\n      \"$$for\": \"r\",\n      \"$$items__script\": \"a\",\n      \"$$items\": \"n\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-destructure/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <div>\n    Marko: HTML Reimagined\n  </div>\n  <button\n    id=\"add\"\n  >\n    Add\n  </button>\n  <button\n    id=\"remove\"\n  >\n    Remove\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#add\").click();\n```\n```html\n<div>\n  <div>\n    Marko: HTML Reimagined\n  </div>\n  <div>\n    JavaScript: Java, but scriptier\n  </div>\n  <button\n    id=\"add\"\n  >\n    Add\n  </button>\n  <button\n    id=\"remove\"\n  >\n    Remove\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#remove\").click();\n```\n```html\n<div>\n  <div>\n    Marko: HTML Reimagined\n  </div>\n  <button\n    id=\"add\"\n  >\n    Add\n  </button>\n  <button\n    id=\"remove\"\n  >\n    Remove\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#remove\").click();\n```\n```html\n<div>\n  <button\n    id=\"add\"\n  >\n    Add\n  </button>\n  <button\n    id=\"remove\"\n  >\n    Remove\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#add\").click();\n```\n```html\n<div>\n  <div>\n    JavaScript: Java, but scriptier\n  </div>\n  <button\n    id=\"add\"\n  >\n    Add\n  </button>\n  <button\n    id=\"remove\"\n  >\n    Remove\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-destructure/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  <div>\n    Marko: HTML Reimagined\n  </div>\n  <button\n    id=\"add\"\n  >\n    Add\n  </button>\n  <button\n    id=\"remove\"\n  >\n    Remove\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render\n```js\ncontainer.querySelector(\"#add\").click();\n```\n```html\n<div>\n  <div>\n    Marko: HTML Reimagined\n  </div>\n  <div>\n    JavaScript: Java, but scriptier\n  </div>\n  <button\n    id=\"add\"\n  >\n    Add\n  </button>\n  <button\n    id=\"remove\"\n  >\n    Remove\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT div/div1\n```\n\n# Render\n```js\ncontainer.querySelector(\"#remove\").click();\n```\n```html\n<div>\n  <div>\n    Marko: HTML Reimagined\n  </div>\n  <button\n    id=\"add\"\n  >\n    Add\n  </button>\n  <button\n    id=\"remove\"\n  >\n    Remove\n  </button>\n</div>\n```\n\n# Mutations\n```\nREMOVE div after div/div\n```\n\n# Render\n```js\ncontainer.querySelector(\"#remove\").click();\n```\n```html\n<div>\n  <button\n    id=\"add\"\n  >\n    Add\n  </button>\n  <button\n    id=\"remove\"\n  >\n    Remove\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT div/#text\nREMOVE div before div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"#add\").click();\n```\n```html\n<div>\n  <div>\n    JavaScript: Java, but scriptier\n  </div>\n  <button\n    id=\"add\"\n  >\n    Add\n  </button>\n  <button\n    id=\"remove\"\n  >\n    Remove\n  </button>\n</div>\n```\n\n# Mutations\n```\nREMOVE #text before div/button0\nINSERT div/div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-destructure/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 377 (min) 218 (brotli)\nconst $for_content__$params = ($scope, $params2) =>\n    $for_content__$temp($scope, $params2?.[0]),\n  $for_content__$temp = ($scope, $temp) => {\n    ((($scope, name) => {\n      _._text($scope.a, name);\n    })($scope, $temp.name),\n      (($scope, description) => {\n        _._text($scope.b, description);\n      })($scope, $temp.description));\n  },\n  $for = _._for_of(0, \"<div><!>: <!></div>\", \"D%c%l\", 0, $for_content__$params),\n  $items__script = _._script(\"a0\", ($scope) => {\n    (_._on($scope.b, \"click\", function () {\n      $items($scope, [\n        ...$scope.d,\n        { name: \"JavaScript\", description: \"Java, but scriptier\" },\n      ]);\n    }),\n      _._on($scope.c, \"click\", function () {\n        $items($scope, $scope.d.slice(0, -1));\n      }));\n  }),\n  $items = _._let(3, ($scope) => {\n    ($for($scope, [$scope.d]), $items__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-destructure/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div><!><button id=add>Add</button><button id=remove>Remove</button></div>\";\nexport const $walks = /* next(1), replace, over(1), get, over(1), get, out(1) */\"D%b b l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for_content__name = ($scope, name) => _._text($scope[\"#text/0\"], name);\nconst $for_content__description = ($scope, description) => _._text($scope[\"#text/1\"], description);\nconst $for_content__$params = ($scope, $params2) => $for_content__$temp($scope, $params2?.[0]);\nconst $for_content__$temp = ($scope, $temp) => {\n  $for_content__name($scope, $temp.name);\n  $for_content__description($scope, $temp.description);\n};\nconst $for = /* @__PURE__ */_._for_of(\"#text/0\", \"<div><!>: <!></div>\", /* next(1), replace, over(2), replace, out(1) */\"D%c%l\", 0, $for_content__$params);\nconst $items__script = _._script(\"__tests__/template.marko_0_items\", $scope => {\n  _._on($scope[\"#button/1\"], \"click\", function () {\n    $items($scope, [...$scope.items, {\n      name: \"JavaScript\",\n      description: \"Java, but scriptier\"\n    }]);\n  });\n  _._on($scope[\"#button/2\"], \"click\", function () {\n    $items($scope, $scope.items.slice(0, -1));\n  });\n});\nconst $items = /* @__PURE__ */_._let(\"items/3\", $scope => {\n  $for($scope, [$scope.items]);\n  $items__script($scope);\n});\nexport function $setup($scope) {\n  /* id */0;\n  $items($scope, [{\n    name: \"Marko\",\n    description: \"HTML Reimagined\"\n  }]);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-destructure/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let id = 0;\n  let items = [{\n    name: \"Marko\",\n    description: \"HTML Reimagined\"\n  }];\n  _._html(\"<div>\");\n  _._for_of(items, ({\n    name,\n    description\n  }) => {\n    const $scope1_id = _._scope_id();\n    _._html(`<div>${_._escape(name)}${_._el_resume($scope1_id, \"#text/0\")}: <!>${_._escape(description)}${_._el_resume($scope1_id, \"#text/1\")}</div>`);\n    _._scope($scope1_id, {}, \"__tests__/template.marko\", \"5:4\");\n  }, 0, $scope0_id, \"#text/0\", /* items */1, /* items */1, /* items */1, 0, 1);\n  _._html(`<button id=add>Add</button>${_._el_resume($scope0_id, \"#button/1\")}<button id=remove>Remove</button>${_._el_resume($scope0_id, \"#button/2\")}</div>`);\n  _._script($scope0_id, \"__tests__/template.marko_0_items\");\n  _._scope($scope0_id, {\n    items\n  }, \"__tests__/template.marko\", 0, {\n    items: \"3:8\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-destructure/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <div>\n    Marko: HTML Reimagined\n  </div>\n  <button\n    id=\"add\"\n  >\n    Add\n  </button>\n  <button\n    id=\"remove\"\n  >\n    Remove\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#add\").click();\n```\n```html\n<div>\n  <div>\n    Marko: HTML Reimagined\n  </div>\n  <div>\n    JavaScript: Java, but scriptier\n  </div>\n  <button\n    id=\"add\"\n  >\n    Add\n  </button>\n  <button\n    id=\"remove\"\n  >\n    Remove\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#remove\").click();\n```\n```html\n<div>\n  <div>\n    Marko: HTML Reimagined\n  </div>\n  <button\n    id=\"add\"\n  >\n    Add\n  </button>\n  <button\n    id=\"remove\"\n  >\n    Remove\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#remove\").click();\n```\n```html\n<div>\n  <button\n    id=\"add\"\n  >\n    Add\n  </button>\n  <button\n    id=\"remove\"\n  >\n    Remove\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#add\").click();\n```\n```html\n<div>\n  <div>\n    JavaScript: Java, but scriptier\n  </div>\n  <button\n    id=\"add\"\n  >\n    Add\n  </button>\n  <button\n    id=\"remove\"\n  >\n    Remove\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-destructure/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <div>\n        Marko\n        <!--M_*2 #text/0-->\n        : \n        <!---->\n        HTML Reimagined\n        <!--M_*2 #text/1-->\n      </div>\n      <!--M_|1 #text/0 2-->\n      <button\n        id=\"add\"\n      >\n        Add\n      </button>\n      <!--M_*1 #button/1-->\n      <button\n        id=\"remove\"\n      >\n        Remove\n      </button>\n      <!--M_*1 #button/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          items: [\n          {\n            name: \"Marko\",\n            description: \"HTML Reimagined\"\n          }]\n        }]),\n        \"__tests__/template.marko_0_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#add\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <div>\n        Marko\n        <!--M_*2 #text/0-->\n        : \n        <!---->\n        HTML Reimagined\n        <!--M_*2 #text/1-->\n      </div>\n      <div>\n        JavaScript: Java, but scriptier\n      </div>\n      <!--M_|1 #text/0 2-->\n      <button\n        id=\"add\"\n      >\n        Add\n      </button>\n      <!--M_*1 #button/1-->\n      <button\n        id=\"remove\"\n      >\n        Remove\n      </button>\n      <!--M_*1 #button/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          items: [\n          {\n            name: \"Marko\",\n            description: \"HTML Reimagined\"\n          }]\n        }]),\n        \"__tests__/template.marko_0_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/div1\n```\n\n# Render\n```js\ncontainer.querySelector(\"#remove\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <div>\n        Marko\n        <!--M_*2 #text/0-->\n        : \n        <!---->\n        HTML Reimagined\n        <!--M_*2 #text/1-->\n      </div>\n      <!--M_|1 #text/0 2-->\n      <button\n        id=\"add\"\n      >\n        Add\n      </button>\n      <!--M_*1 #button/1-->\n      <button\n        id=\"remove\"\n      >\n        Remove\n      </button>\n      <!--M_*1 #button/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          items: [\n          {\n            name: \"Marko\",\n            description: \"HTML Reimagined\"\n          }]\n        }]),\n        \"__tests__/template.marko_0_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE div after html/body/div/div\n```\n\n# Render\n```js\ncontainer.querySelector(\"#remove\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--M_|1 #text/0 2-->\n      <button\n        id=\"add\"\n      >\n        Add\n      </button>\n      <!--M_*1 #button/1-->\n      <button\n        id=\"remove\"\n      >\n        Remove\n      </button>\n      <!--M_*1 #button/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          items: [\n          {\n            name: \"Marko\",\n            description: \"HTML Reimagined\"\n          }]\n        }]),\n        \"__tests__/template.marko_0_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/div/#comment0 after div\nINSERT html/body/div/#comment0\nREMOVE div before html/body/div/#comment0\n```\n\n# Render\n```js\ncontainer.querySelector(\"#add\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <div>\n        JavaScript: Java, but scriptier\n      </div>\n      <button\n        id=\"add\"\n      >\n        Add\n      </button>\n      <!--M_*1 #button/1-->\n      <button\n        id=\"remove\"\n      >\n        Remove\n      </button>\n      <!--M_*1 #button/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          items: [\n          {\n            name: \"Marko\",\n            description: \"HTML Reimagined\"\n          }]\n        }]),\n        \"__tests__/template.marko_0_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #comment before html/body/div/button0\nINSERT html/body/div/div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-destructure/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  <div>\n    Marko: HTML Reimagined\n  </div>\n  <button\n    id=\"add\"\n  >\n    Add\n  </button>\n  <button\n    id=\"remove\"\n  >\n    Remove\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-destructure/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><div>Marko<!--M_*2 #text/0-->: <!>HTML Reimagined<!--M_*2 #text/1--></div><!--M_|1 #text/0 2--><button id=add>Add</button><!--M_*1 #button/1--><button id=remove>Remove</button><!--M_*1 #button/2--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{items:[{name:\"Marko\",description:\"HTML Reimagined\"}]}]),\"__tests__/template.marko_0_items 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <div>\n        Marko\n        <!--M_*2 #text/0-->\n        : \n        <!---->\n        HTML Reimagined\n        <!--M_*2 #text/1-->\n      </div>\n      <!--M_|1 #text/0 2-->\n      <button\n        id=\"add\"\n      >\n        Add\n      </button>\n      <!--M_*1 #button/1-->\n      <button\n        id=\"remove\"\n      >\n        Remove\n      </button>\n      <!--M_*1 #button/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          items: [\n          {\n            name: \"Marko\",\n            description: \"HTML Reimagined\"\n          }]\n        }]),\n        \"__tests__/template.marko_0_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/div\nINSERT html/body/div/div/#text0\nINSERT html/body/div/div/#comment0\nINSERT html/body/div/div/#text1\nINSERT html/body/div/div/#comment1\nINSERT html/body/div/div/#text2\nINSERT html/body/div/div/#comment2\nINSERT html/body/div/#comment0\nINSERT html/body/div/button0\nINSERT html/body/div/button0/#text\nINSERT html/body/div/#comment1\nINSERT html/body/div/button1\nINSERT html/body/div/button1/#text\nINSERT html/body/div/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-destructure/template.marko",
    "content": "<div>\n  <let/id=0/>\n  <let/items=[{ name: \"Marko\", description:\"HTML Reimagined\" }]/>\n\n  <for|{ name, description }| of=items>\n    <div>${name}: ${description}</div>\n  </for>\n\n  <button id=\"add\" onClick() { \n    items = [...items, { name: \"JavaScript\", description:\"Java, but scriptier\" }];\n  }>Add</button>\n  <button id=\"remove\" onClick() { items = items.slice(0, -1); }>Remove</button>\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-destructure/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction add(container: Element) {\n  (container.querySelector(\"#add\") as HTMLButtonElement).click();\n}\n\nfunction remove(container: Element) {\n  (container.querySelector(\"#remove\") as HTMLButtonElement).click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, add, remove, remove, add],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-event-handler/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"o\",\n      \"$init\": \"t\",\n      \"$$for_content__num__script\": \"r\",\n      \"$$for_content__num\": \"_\",\n      \"$$for_content__setup\": \"m\",\n      \"$$for\": \"n\",\n      \"$$num\": \"a\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-event-handler/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  0\n</button>\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  0\n</button>\n<button>\n  1\n</button>\n<button>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  0\n</button>\n<button>\n  1\n</button>\n<button>\n  2\n</button>\n<button>\n  3\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  0\n</button>\n<button>\n  1\n</button>\n<button>\n  2\n</button>\n<button>\n  3\n</button>\n<button>\n  4\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  0\n</button>\n<button>\n  1\n</button>\n<button>\n  2\n</button>\n<button>\n  3\n</button>\n<button>\n  4\n</button>\n<button>\n  5\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-event-handler/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<button>\n  0\n</button>\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, button, #comment1\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<button>\n  0\n</button>\n<button>\n  1\n</button>\n<!---->\n```\n\n# Mutations\n```\nINSERT button1\nUPDATE button1/#text \" \" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<button>\n  0\n</button>\n<button>\n  1\n</button>\n<button>\n  2\n</button>\n<!---->\n```\n\n# Mutations\n```\nINSERT button2\nUPDATE button2/#text \" \" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<button>\n  0\n</button>\n<button>\n  1\n</button>\n<button>\n  2\n</button>\n<button>\n  3\n</button>\n<!---->\n```\n\n# Mutations\n```\nINSERT button3\nUPDATE button3/#text \" \" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<button>\n  0\n</button>\n<button>\n  1\n</button>\n<button>\n  2\n</button>\n<button>\n  3\n</button>\n<button>\n  4\n</button>\n<!---->\n```\n\n# Mutations\n```\nINSERT button4\nUPDATE button4/#text \" \" => \"4\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<button>\n  0\n</button>\n<button>\n  1\n</button>\n<button>\n  2\n</button>\n<button>\n  3\n</button>\n<button>\n  4\n</button>\n<button>\n  5\n</button>\n<!---->\n```\n\n# Mutations\n```\nINSERT button5\nUPDATE button5/#text \" \" => \"5\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-event-handler/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 212 (min) 162 (brotli)\nconst $for_content__num__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $num($scope._, $scope._.b + 1);\n    }),\n  ),\n  $for_content__num = _._for_closure(0, $for_content__num__script),\n  $for_content__setup = ($scope) => {\n    ($for_content__num._($scope), _._text($scope.b, $scope.M));\n  },\n  $for = _._for_to(0, \"<button> </button>\", \" D l\", $for_content__setup),\n  $num = _._let(1, ($scope) => {\n    ($for($scope, [$scope.b, 0, 1]), $for_content__num($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-event-handler/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for_content__num__script = _._script(\"__tests__/template.marko_1_num\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $num($scope._, $scope._.num + 1);\n}));\nconst $for_content__num = /* @__PURE__ */_._for_closure(\"#text/0\", $for_content__num__script);\nconst $for_content__setup = $scope => {\n  $for_content__num._($scope);\n  _._text($scope[\"#text/1\"], $scope[\"#LoopKey\"]);\n};\nconst $for = /* @__PURE__ */_._for_to(\"#text/0\", \"<button> </button>\", /* get, next(1), get, out(1) */\" D l\", $for_content__setup);\nconst $num = /* @__PURE__ */_._let(\"num/1\", $scope => {\n  $for($scope, [$scope.num, 0, 1]);\n  $for_content__num($scope);\n});\nexport function $setup($scope) {\n  $num($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-event-handler/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let num = 0;\n  _._for_to(num, 0, 1, i => {\n    const $scope1_id = _._scope_id();\n    _._html(`<button>${_._escape(i)}</button>${_._el_resume($scope1_id, \"#button/0\")}`);\n    _._script($scope1_id, \"__tests__/template.marko_1_num\");\n    _._scope($scope1_id, {\n      _: _._scope_with_id($scope0_id)\n    }, \"__tests__/template.marko\", \"3:2\");\n  }, 0, $scope0_id, \"#text/0\", /* num */1, /* num */1, /* num */1, 0, 1);\n  _._scope($scope0_id, {\n    num\n  }, \"__tests__/template.marko\", 0, {\n    num: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-event-handler/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  0\n</button>\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  0\n</button>\n<button>\n  1\n</button>\n<button>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  0\n</button>\n<button>\n  1\n</button>\n<button>\n  2\n</button>\n<button>\n  3\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  0\n</button>\n<button>\n  1\n</button>\n<button>\n  2\n</button>\n<button>\n  3\n</button>\n<button>\n  4\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  0\n</button>\n<button>\n  1\n</button>\n<button>\n  2\n</button>\n<button>\n  3\n</button>\n<button>\n  4\n</button>\n<button>\n  5\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-event-handler/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n    </button>\n    <!--M_*2 #button/0-->\n    <!--M_|1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          num: 0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1_num 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n    </button>\n    <button>\n      1\n    </button>\n    <!--M_*2 #button/0-->\n    <!--M_|1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          num: 0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1_num 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/button1\nUPDATE html/body/button1/#text \" \" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n    </button>\n    <button>\n      1\n    </button>\n    <button>\n      2\n    </button>\n    <!--M_*2 #button/0-->\n    <!--M_|1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          num: 0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1_num 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/button2\nUPDATE html/body/button2/#text \" \" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n    </button>\n    <button>\n      1\n    </button>\n    <button>\n      2\n    </button>\n    <button>\n      3\n    </button>\n    <!--M_*2 #button/0-->\n    <!--M_|1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          num: 0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1_num 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/button3\nUPDATE html/body/button3/#text \" \" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n    </button>\n    <button>\n      1\n    </button>\n    <button>\n      2\n    </button>\n    <button>\n      3\n    </button>\n    <button>\n      4\n    </button>\n    <!--M_*2 #button/0-->\n    <!--M_|1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          num: 0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1_num 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/button4\nUPDATE html/body/button4/#text \" \" => \"4\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n    </button>\n    <button>\n      1\n    </button>\n    <button>\n      2\n    </button>\n    <button>\n      3\n    </button>\n    <button>\n      4\n    </button>\n    <button>\n      5\n    </button>\n    <!--M_*2 #button/0-->\n    <!--M_|1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          num: 0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1_num 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/button5\nUPDATE html/body/button5/#text \" \" => \"5\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-event-handler/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  0\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-event-handler/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>0</button><!--M_*2 #button/0--><!--M_|1 #text/0 2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={num:0},{_:_.a}]),\"__tests__/template.marko_1_num 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n    </button>\n    <!--M_*2 #button/0-->\n    <!--M_|1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          num: 0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1_num 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-event-handler/template.marko",
    "content": "<let/num = 0/>\n\n<for|i| to=num>\n  <button onClick() {\n    num++\n  }>${i}</>\n</for>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-event-handler/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-loop-closure-remove-all-items/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"o\",\n      \"$init\": \"t\",\n      \"$$for_content__items__script\": \"r\",\n      \"$$for_content__items\": \"n\",\n      \"$$for_content__setup\": \"m\",\n      \"$$for\": \"_\",\n      \"$$items\": \"c\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-loop-closure-remove-all-items/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <button>\n    Test\n  </button>\n  <div />\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <div>\n    hello\n  </div>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-loop-closure-remove-all-items/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  <button>\n    Test\n  </button>\n  <div />\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <div>\n    hello\n  </div>\n</div>\n```\n\n# Mutations\n```\nINSERT div/div/#text\nINSERT div/#text\nREMOVE button before div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-loop-closure-remove-all-items/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 212 (min) 152 (brotli)\nconst $for_content__items__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      (($scope._.b.textContent = $scope._.c.join(\", \")), $items($scope._, []));\n    }),\n  ),\n  $for_content__items = _._for_closure(0, $for_content__items__script),\n  $for_content__setup = $for_content__items,\n  $for = _._for_of(0, \"<button>Test</button>\", \" b\", $for_content__setup),\n  $items = _._let(2, ($scope) => {\n    ($for($scope, [$scope.c]), $for_content__items($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-loop-closure-remove-all-items/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div><!><div></div></div>\";\nexport const $walks = /* next(1), replace, over(1), get, out(1) */\"D%b l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for_content__items__script = _._script(\"__tests__/template.marko_1_items\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  _._el_read($scope._[\"#div/1\"]).textContent = $scope._.items.join(\", \");\n  $items($scope._, []);\n}));\nconst $for_content__items = /* @__PURE__ */_._for_closure(\"#text/0\", $for_content__items__script);\nconst $for_content__setup = $for_content__items;\nconst $for = /* @__PURE__ */_._for_of(\"#text/0\", \"<button>Test</button>\", /* get, over(1) */\" b\", $for_content__setup);\nconst $items = /* @__PURE__ */_._let(\"items/2\", $scope => {\n  $for($scope, [$scope.items]);\n  $for_content__items($scope);\n});\nexport function $setup($scope) {\n  $items($scope, [\"hello\"]);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-loop-closure-remove-all-items/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let items = [\"hello\"];\n  _._html(\"<div>\");\n  _._for_of(items, () => {\n    const $scope1_id = _._scope_id();\n    _._html(`<button>Test</button>${_._el_resume($scope1_id, \"#button/0\")}`);\n    _._script($scope1_id, \"__tests__/template.marko_1_items\");\n    _._scope($scope1_id, {\n      _: _._scope_with_id($scope0_id)\n    }, \"__tests__/template.marko\", \"4:4\");\n  }, 0, $scope0_id, \"#text/0\", /* items */1, /* items */1, /* items */1, 0, 1);\n  _._html(`<div></div>${_._el_resume($scope0_id, \"#div/1\")}</div>`);\n  _._scope($scope0_id, {\n    items\n  }, \"__tests__/template.marko\", 0, {\n    items: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-loop-closure-remove-all-items/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <button>\n    Test\n  </button>\n  <div />\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <div>\n    hello\n  </div>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-loop-closure-remove-all-items/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        Test\n      </button>\n      <!--M_*2 #button/0-->\n      <!--M_|1 #text/0 2-->\n      <div />\n      <!--M_*1 #div/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          items: [\"hello\"]\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1_items 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--M_|1 #text/0 2-->\n      <!--M_*2 #button/0-->\n      <div>\n        hello\n      </div>\n      <!--M_*1 #div/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          items: [\"hello\"]\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1_items 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/div/#text\nREMOVE html/body/div/#comment0 after html/body/div/#comment1\nINSERT html/body/div/#comment0\nREMOVE button before html/body/div/#comment0\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-loop-closure-remove-all-items/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  <button>\n    Test\n  </button>\n  <div />\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-loop-closure-remove-all-items/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><button>Test</button><!--M_*2 #button/0--><!--M_|1 #text/0 2--><div></div><!--M_*1 #div/1--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={items:[\"hello\"]},{_:_.a}]),\"__tests__/template.marko_1_items 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        Test\n      </button>\n      <!--M_*2 #button/0-->\n      <!--M_|1 #text/0 2-->\n      <div />\n      <!--M_*1 #div/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          items: [\"hello\"]\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1_items 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/button\nINSERT html/body/div/button/#text\nINSERT html/body/div/#comment0\nINSERT html/body/div/#comment1\nINSERT html/body/div/div\nINSERT html/body/div/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-loop-closure-remove-all-items/template.marko",
    "content": "<let/items=[\"hello\"]>\n\n<div>\n  <for of=items>\n    <button onClick() {\n      el().textContent = items.join(\", \");\n      items = [];\n    }>Test</button>\n  </for>\n  <div/el/>\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-loop-closure-remove-all-items/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-grow-shrink/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-grow-shrink/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"children\":[]}`\n\n```html\n<div />\n```\n\n\n# Render `{\"children\":[{\"id\":1,\"text\":\"a\"}]}`\n\n```html\n<div>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n</div>\n```\n\n\n# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"}]}`\n\n```html\n<div>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n</div>\n```\n\n\n# Render `{\"children\":[{\"id\":2,\"text\":\"b\"}]}`\n\n```html\n<div>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n</div>\n```\n\n\n# Render `{\"children\":[{\"id\":4,\"text\":\"d\"},{\"id\":2,\"text\":\"b\"},{\"id\":5,\"text\":\"e\"}]}`\n\n```html\n<div>\n  <span\n    id=\"4\"\n  >\n    d\n  </span>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n  <span\n    id=\"5\"\n  >\n    e\n  </span>\n</div>\n```\n\n\n# Render `{\"children\":[]}`\n\n```html\n<div />\n```\n\n\n# Render `{\"children\":[{\"id\":6,\"text\":\"f\"},{\"id\":7,\"text\":\"g\"}]}`\n\n```html\n<div>\n  <span\n    id=\"6\"\n  >\n    f\n  </span>\n  <span\n    id=\"7\"\n  >\n    g\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-grow-shrink/__snapshots__/csr.expected.md",
    "content": "# Render `{\"children\":[]}`\n\n```html\n<div />\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render `{\"children\":[{\"id\":1,\"text\":\"a\"}]}`\n\n```html\n<div>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n</div>\n```\n\n# Mutations\n```\nINSERT div/span\n```\n\n# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"}]}`\n\n```html\n<div>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n</div>\n```\n\n# Mutations\n```\nINSERT div/span1\nINSERT div/span2\n```\n\n# Render `{\"children\":[{\"id\":2,\"text\":\"b\"}]}`\n\n```html\n<div>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n</div>\n```\n\n# Mutations\n```\nREMOVE span before div/span\nREMOVE span after div/span\n```\n\n# Render `{\"children\":[{\"id\":4,\"text\":\"d\"},{\"id\":2,\"text\":\"b\"},{\"id\":5,\"text\":\"e\"}]}`\n\n```html\n<div>\n  <span\n    id=\"4\"\n  >\n    d\n  </span>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n  <span\n    id=\"5\"\n  >\n    e\n  </span>\n</div>\n```\n\n# Mutations\n```\nINSERT div/span2\nINSERT div/span0\n```\n\n# Render `{\"children\":[]}`\n\n```html\n<div />\n```\n\n# Mutations\n```\nREMOVE span, span, span in div\n```\n\n# Render `{\"children\":[{\"id\":6,\"text\":\"f\"},{\"id\":7,\"text\":\"g\"}]}`\n\n```html\n<div>\n  <span\n    id=\"6\"\n  >\n    f\n  </span>\n  <span\n    id=\"7\"\n  >\n    g\n  </span>\n</div>\n```\n\n# Mutations\n```\nINSERT div/span0\nINSERT div/span1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-grow-shrink/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-grow-shrink/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* get, over(1) */\" b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for_content__child_id = ($scope, child_id) => _._attr($scope[\"#span/0\"], \"id\", child_id);\nconst $for_content__child_text = ($scope, child_text) => _._text($scope[\"#text/1\"], child_text);\nconst $for_content__$params = ($scope, $params2) => $for_content__child($scope, $params2[0]);\nconst $for_content__child = ($scope, child) => {\n  $for_content__child_id($scope, child?.id);\n  $for_content__child_text($scope, child?.text);\n};\nconst $for = /* @__PURE__ */_._for_of(\"#div/0\", \"<span> </span>\", /* get, next(1), get, out(1) */\" D l\", 0, $for_content__$params);\nexport const $input_children = ($scope, input_children) => $for($scope, [input_children, \"id\"]);\nexport const $input = ($scope, input) => $input_children($scope, input.children);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-grow-shrink/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div>\");\n  _._for_of(input.children, child => {\n    const $scope1_id = _._scope_id();\n    _._html(`<span${_._attr(\"id\", child.id)}>${_._escape(child.text)}${_._el_resume($scope1_id, \"#text/1\", _._serialize_guard($scope0_reason, /* input.children */0))}</span>${_._el_resume($scope1_id, \"#span/0\", _._serialize_guard($scope0_reason, /* input.children */0))}`);\n    _._serialize_if($scope0_reason, /* input.children */0) && _._scope($scope1_id, {}, \"__tests__/template.marko\", \"2:4\");\n  }, \"id\", $scope0_id, \"#div/0\", _._serialize_guard($scope0_reason, /* input.children */0), _._serialize_guard($scope0_reason, /* input.children */0), _._serialize_guard($scope0_reason, /* input.children */0), \"</div>\", 1);\n  _._serialize_if($scope0_reason, /* input.children */0) && _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-grow-shrink/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"children\":[]}`\n\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-grow-shrink/__snapshots__/resume.expected.md",
    "content": "# Render `{\"children\":[]}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div />\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-grow-shrink/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-grow-shrink/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div></div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div />\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-grow-shrink/template.marko",
    "content": "<div>\n  <for|child| of=input.children by=\"id\">\n    <span id=child.id>${child.text}</span>\n  </for>\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-grow-shrink/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [\n    // Start empty\n    { children: [] as { id: number; text: string }[] },\n    // Grow to single item\n    { children: [{ id: 1, text: \"a\" }] },\n    // Grow to multiple\n    {\n      children: [\n        { id: 1, text: \"a\" },\n        { id: 2, text: \"b\" },\n        { id: 3, text: \"c\" },\n      ],\n    },\n    // Shrink to single (keep middle)\n    { children: [{ id: 2, text: \"b\" }] },\n    // Grow again with mix of old and new\n    {\n      children: [\n        { id: 4, text: \"d\" },\n        { id: 2, text: \"b\" },\n        { id: 5, text: \"e\" },\n      ],\n    },\n    // Shrink to empty\n    { children: [] as { id: number; text: string }[] },\n    // Grow from empty to multiple\n    {\n      children: [\n        { id: 6, text: \"f\" },\n        { id: 7, text: \"g\" },\n      ],\n    },\n  ],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-insert-middle/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-insert-middle/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"}]}`\n\n```html\n<div>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n</div>\n```\n\n\n# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":4,\"text\":\"x\"},{\"id\":2,\"text\":\"b\"},{\"id\":5,\"text\":\"y\"},{\"id\":3,\"text\":\"c\"}]}`\n\n```html\n<div>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n  <span\n    id=\"4\"\n  >\n    x\n  </span>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n  <span\n    id=\"5\"\n  >\n    y\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n</div>\n```\n\n\n# Render `{\"children\":[{\"id\":6,\"text\":\"!\"},{\"id\":1,\"text\":\"a\"},{\"id\":4,\"text\":\"x\"},{\"id\":2,\"text\":\"b\"},{\"id\":5,\"text\":\"y\"},{\"id\":3,\"text\":\"c\"},{\"id\":7,\"text\":\"?\"}]}`\n\n```html\n<div>\n  <span\n    id=\"6\"\n  >\n    !\n  </span>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n  <span\n    id=\"4\"\n  >\n    x\n  </span>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n  <span\n    id=\"5\"\n  >\n    y\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n  <span\n    id=\"7\"\n  >\n    ?\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-insert-middle/__snapshots__/csr.expected.md",
    "content": "# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"}]}`\n\n```html\n<div>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":4,\"text\":\"x\"},{\"id\":2,\"text\":\"b\"},{\"id\":5,\"text\":\"y\"},{\"id\":3,\"text\":\"c\"}]}`\n\n```html\n<div>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n  <span\n    id=\"4\"\n  >\n    x\n  </span>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n  <span\n    id=\"5\"\n  >\n    y\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n</div>\n```\n\n# Mutations\n```\nINSERT div/span3\nINSERT div/span1\n```\n\n# Render `{\"children\":[{\"id\":6,\"text\":\"!\"},{\"id\":1,\"text\":\"a\"},{\"id\":4,\"text\":\"x\"},{\"id\":2,\"text\":\"b\"},{\"id\":5,\"text\":\"y\"},{\"id\":3,\"text\":\"c\"},{\"id\":7,\"text\":\"?\"}]}`\n\n```html\n<div>\n  <span\n    id=\"6\"\n  >\n    !\n  </span>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n  <span\n    id=\"4\"\n  >\n    x\n  </span>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n  <span\n    id=\"5\"\n  >\n    y\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n  <span\n    id=\"7\"\n  >\n    ?\n  </span>\n</div>\n```\n\n# Mutations\n```\nINSERT div/span6\nINSERT div/span0\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-insert-middle/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-insert-middle/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* get, over(1) */\" b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for_content__child_id = ($scope, child_id) => _._attr($scope[\"#span/0\"], \"id\", child_id);\nconst $for_content__child_text = ($scope, child_text) => _._text($scope[\"#text/1\"], child_text);\nconst $for_content__$params = ($scope, $params2) => $for_content__child($scope, $params2[0]);\nconst $for_content__child = ($scope, child) => {\n  $for_content__child_id($scope, child?.id);\n  $for_content__child_text($scope, child?.text);\n};\nconst $for = /* @__PURE__ */_._for_of(\"#div/0\", \"<span> </span>\", /* get, next(1), get, out(1) */\" D l\", 0, $for_content__$params);\nexport const $input_children = ($scope, input_children) => $for($scope, [input_children, \"id\"]);\nexport const $input = ($scope, input) => $input_children($scope, input.children);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-insert-middle/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div>\");\n  _._for_of(input.children, child => {\n    const $scope1_id = _._scope_id();\n    _._html(`<span${_._attr(\"id\", child.id)}>${_._escape(child.text)}${_._el_resume($scope1_id, \"#text/1\", _._serialize_guard($scope0_reason, /* input.children */0))}</span>${_._el_resume($scope1_id, \"#span/0\", _._serialize_guard($scope0_reason, /* input.children */0))}`);\n    _._serialize_if($scope0_reason, /* input.children */0) && _._scope($scope1_id, {}, \"__tests__/template.marko\", \"2:4\");\n  }, \"id\", $scope0_id, \"#div/0\", _._serialize_guard($scope0_reason, /* input.children */0), _._serialize_guard($scope0_reason, /* input.children */0), _._serialize_guard($scope0_reason, /* input.children */0), \"</div>\", 1);\n  _._serialize_if($scope0_reason, /* input.children */0) && _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-insert-middle/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"}]}`\n\n```html\n<div>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-insert-middle/__snapshots__/resume.expected.md",
    "content": "# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"}]}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <span\n        id=\"1\"\n      >\n        a\n      </span>\n      <span\n        id=\"2\"\n      >\n        b\n      </span>\n      <span\n        id=\"3\"\n      >\n        c\n      </span>\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-insert-middle/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-insert-middle/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><span id=1>a</span><span id=2>b</span><span id=3>c</span></div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <span\n        id=\"1\"\n      >\n        a\n      </span>\n      <span\n        id=\"2\"\n      >\n        b\n      </span>\n      <span\n        id=\"3\"\n      >\n        c\n      </span>\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/span0\nINSERT html/body/div/span0/#text\nINSERT html/body/div/span1\nINSERT html/body/div/span1/#text\nINSERT html/body/div/span2\nINSERT html/body/div/span2/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-insert-middle/template.marko",
    "content": "<div>\n  <for|child| of=input.children by=\"id\">\n    <span id=child.id>${child.text}</span>\n  </for>\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-insert-middle/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [\n    {\n      children: [\n        { id: 1, text: \"a\" },\n        { id: 2, text: \"b\" },\n        { id: 3, text: \"c\" },\n      ],\n    },\n    // Insert in middle: no moves needed, only insert\n    {\n      children: [\n        { id: 1, text: \"a\" },\n        { id: 4, text: \"x\" },\n        { id: 2, text: \"b\" },\n        { id: 5, text: \"y\" },\n        { id: 3, text: \"c\" },\n      ],\n    },\n    // Insert at start and end\n    {\n      children: [\n        { id: 6, text: \"!\" },\n        { id: 1, text: \"a\" },\n        { id: 4, text: \"x\" },\n        { id: 2, text: \"b\" },\n        { id: 5, text: \"y\" },\n        { id: 3, text: \"c\" },\n        { id: 7, text: \"?\" },\n      ],\n    },\n  ],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-mixed/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-mixed/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"},{\"id\":4,\"text\":\"d\"},{\"id\":5,\"text\":\"e\"}]}`\n\n```html\n<div>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n  <span\n    id=\"4\"\n  >\n    d\n  </span>\n  <span\n    id=\"5\"\n  >\n    e\n  </span>\n</div>\n```\n\n\n# Render `{\"children\":[{\"id\":5,\"text\":\"e\"},{\"id\":6,\"text\":\"x\"},{\"id\":1,\"text\":\"a\"},{\"id\":3,\"text\":\"c\"}]}`\n\n```html\n<div>\n  <span\n    id=\"5\"\n  >\n    e\n  </span>\n  <span\n    id=\"6\"\n  >\n    x\n  </span>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n</div>\n```\n\n\n# Render `{\"children\":[{\"id\":7,\"text\":\"p\"},{\"id\":5,\"text\":\"e\"},{\"id\":8,\"text\":\"q\"},{\"id\":3,\"text\":\"c\"},{\"id\":9,\"text\":\"r\"},{\"id\":1,\"text\":\"a\"}]}`\n\n```html\n<div>\n  <span\n    id=\"7\"\n  >\n    p\n  </span>\n  <span\n    id=\"5\"\n  >\n    e\n  </span>\n  <span\n    id=\"8\"\n  >\n    q\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n  <span\n    id=\"9\"\n  >\n    r\n  </span>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-mixed/__snapshots__/csr.expected.md",
    "content": "# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"},{\"id\":4,\"text\":\"d\"},{\"id\":5,\"text\":\"e\"}]}`\n\n```html\n<div>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n  <span\n    id=\"4\"\n  >\n    d\n  </span>\n  <span\n    id=\"5\"\n  >\n    e\n  </span>\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render `{\"children\":[{\"id\":5,\"text\":\"e\"},{\"id\":6,\"text\":\"x\"},{\"id\":1,\"text\":\"a\"},{\"id\":3,\"text\":\"c\"}]}`\n\n```html\n<div>\n  <span\n    id=\"5\"\n  >\n    e\n  </span>\n  <span\n    id=\"6\"\n  >\n    x\n  </span>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n</div>\n```\n\n# Mutations\n```\nREMOVE span after div/span2\nREMOVE span after div/span3\nINSERT div/span1\nREMOVE div/span0 after div/span3\nINSERT div/span0\n```\n\n# Render `{\"children\":[{\"id\":7,\"text\":\"p\"},{\"id\":5,\"text\":\"e\"},{\"id\":8,\"text\":\"q\"},{\"id\":3,\"text\":\"c\"},{\"id\":9,\"text\":\"r\"},{\"id\":1,\"text\":\"a\"}]}`\n\n```html\n<div>\n  <span\n    id=\"7\"\n  >\n    p\n  </span>\n  <span\n    id=\"5\"\n  >\n    e\n  </span>\n  <span\n    id=\"8\"\n  >\n    q\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n  <span\n    id=\"9\"\n  >\n    r\n  </span>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n</div>\n```\n\n# Mutations\n```\nREMOVE span after div/span1\nINSERT div/span4\nREMOVE div/span3 after div/span5\nINSERT div/span3\nINSERT div/span2\nINSERT div/span0\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-mixed/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-mixed/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* get, over(1) */\" b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for_content__child_id = ($scope, child_id) => _._attr($scope[\"#span/0\"], \"id\", child_id);\nconst $for_content__child_text = ($scope, child_text) => _._text($scope[\"#text/1\"], child_text);\nconst $for_content__$params = ($scope, $params2) => $for_content__child($scope, $params2[0]);\nconst $for_content__child = ($scope, child) => {\n  $for_content__child_id($scope, child?.id);\n  $for_content__child_text($scope, child?.text);\n};\nconst $for = /* @__PURE__ */_._for_of(\"#div/0\", \"<span> </span>\", /* get, next(1), get, out(1) */\" D l\", 0, $for_content__$params);\nexport const $input_children = ($scope, input_children) => $for($scope, [input_children, \"id\"]);\nexport const $input = ($scope, input) => $input_children($scope, input.children);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-mixed/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div>\");\n  _._for_of(input.children, child => {\n    const $scope1_id = _._scope_id();\n    _._html(`<span${_._attr(\"id\", child.id)}>${_._escape(child.text)}${_._el_resume($scope1_id, \"#text/1\", _._serialize_guard($scope0_reason, /* input.children */0))}</span>${_._el_resume($scope1_id, \"#span/0\", _._serialize_guard($scope0_reason, /* input.children */0))}`);\n    _._serialize_if($scope0_reason, /* input.children */0) && _._scope($scope1_id, {}, \"__tests__/template.marko\", \"2:4\");\n  }, \"id\", $scope0_id, \"#div/0\", _._serialize_guard($scope0_reason, /* input.children */0), _._serialize_guard($scope0_reason, /* input.children */0), _._serialize_guard($scope0_reason, /* input.children */0), \"</div>\", 1);\n  _._serialize_if($scope0_reason, /* input.children */0) && _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-mixed/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"},{\"id\":4,\"text\":\"d\"},{\"id\":5,\"text\":\"e\"}]}`\n\n```html\n<div>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n  <span\n    id=\"4\"\n  >\n    d\n  </span>\n  <span\n    id=\"5\"\n  >\n    e\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-mixed/__snapshots__/resume.expected.md",
    "content": "# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"},{\"id\":4,\"text\":\"d\"},{\"id\":5,\"text\":\"e\"}]}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <span\n        id=\"1\"\n      >\n        a\n      </span>\n      <span\n        id=\"2\"\n      >\n        b\n      </span>\n      <span\n        id=\"3\"\n      >\n        c\n      </span>\n      <span\n        id=\"4\"\n      >\n        d\n      </span>\n      <span\n        id=\"5\"\n      >\n        e\n      </span>\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-mixed/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n  <span\n    id=\"4\"\n  >\n    d\n  </span>\n  <span\n    id=\"5\"\n  >\n    e\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-mixed/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><span id=1>a</span><span id=2>b</span><span id=3>c</span><span id=4>d</span><span id=5>e</span></div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <span\n        id=\"1\"\n      >\n        a\n      </span>\n      <span\n        id=\"2\"\n      >\n        b\n      </span>\n      <span\n        id=\"3\"\n      >\n        c\n      </span>\n      <span\n        id=\"4\"\n      >\n        d\n      </span>\n      <span\n        id=\"5\"\n      >\n        e\n      </span>\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/span0\nINSERT html/body/div/span0/#text\nINSERT html/body/div/span1\nINSERT html/body/div/span1/#text\nINSERT html/body/div/span2\nINSERT html/body/div/span2/#text\nINSERT html/body/div/span3\nINSERT html/body/div/span3/#text\nINSERT html/body/div/span4\nINSERT html/body/div/span4/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-mixed/template.marko",
    "content": "<div>\n  <for|child| of=input.children by=\"id\">\n    <span id=child.id>${child.text}</span>\n  </for>\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-mixed/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [\n    {\n      children: [\n        { id: 1, text: \"a\" },\n        { id: 2, text: \"b\" },\n        { id: 3, text: \"c\" },\n        { id: 4, text: \"d\" },\n        { id: 5, text: \"e\" },\n      ],\n    },\n    // Move + insert + remove: remove b,d; move e before a; insert x\n    {\n      children: [\n        { id: 5, text: \"e\" },\n        { id: 6, text: \"x\" },\n        { id: 1, text: \"a\" },\n        { id: 3, text: \"c\" },\n      ],\n    },\n    // Interleave old and new items\n    {\n      children: [\n        { id: 7, text: \"p\" },\n        { id: 5, text: \"e\" },\n        { id: 8, text: \"q\" },\n        { id: 3, text: \"c\" },\n        { id: 9, text: \"r\" },\n        { id: 1, text: \"a\" },\n      ],\n    },\n  ],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-replace/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-replace/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"}]}`\n\n```html\n<div>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n</div>\n```\n\n\n# Render `{\"children\":[{\"id\":10,\"text\":\"x\"},{\"id\":11,\"text\":\"y\"},{\"id\":12,\"text\":\"z\"}]}`\n\n```html\n<div>\n  <span\n    id=\"10\"\n  >\n    x\n  </span>\n  <span\n    id=\"11\"\n  >\n    y\n  </span>\n  <span\n    id=\"12\"\n  >\n    z\n  </span>\n</div>\n```\n\n\n# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"}]}`\n\n```html\n<div>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n</div>\n```\n\n\n# Render `{\"children\":[{\"id\":20,\"text\":\"only\"}]}`\n\n```html\n<div>\n  <span\n    id=\"20\"\n  >\n    only\n  </span>\n</div>\n```\n\n\n# Render `{\"children\":[{\"id\":30,\"text\":\"p\"},{\"id\":31,\"text\":\"q\"},{\"id\":32,\"text\":\"r\"},{\"id\":33,\"text\":\"s\"},{\"id\":34,\"text\":\"t\"}]}`\n\n```html\n<div>\n  <span\n    id=\"30\"\n  >\n    p\n  </span>\n  <span\n    id=\"31\"\n  >\n    q\n  </span>\n  <span\n    id=\"32\"\n  >\n    r\n  </span>\n  <span\n    id=\"33\"\n  >\n    s\n  </span>\n  <span\n    id=\"34\"\n  >\n    t\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-replace/__snapshots__/csr.expected.md",
    "content": "# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"}]}`\n\n```html\n<div>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render `{\"children\":[{\"id\":10,\"text\":\"x\"},{\"id\":11,\"text\":\"y\"},{\"id\":12,\"text\":\"z\"}]}`\n\n```html\n<div>\n  <span\n    id=\"10\"\n  >\n    x\n  </span>\n  <span\n    id=\"11\"\n  >\n    y\n  </span>\n  <span\n    id=\"12\"\n  >\n    z\n  </span>\n</div>\n```\n\n# Mutations\n```\nREMOVE span, span, span in div\nINSERT div/span0\nINSERT div/span1\nINSERT div/span2\n```\n\n# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"}]}`\n\n```html\n<div>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n</div>\n```\n\n# Mutations\n```\nREMOVE span, span, span in div\nINSERT div/span0\nINSERT div/span1\nINSERT div/span2\n```\n\n# Render `{\"children\":[{\"id\":20,\"text\":\"only\"}]}`\n\n```html\n<div>\n  <span\n    id=\"20\"\n  >\n    only\n  </span>\n</div>\n```\n\n# Mutations\n```\nREMOVE span, span, span in div\nINSERT div/span\n```\n\n# Render `{\"children\":[{\"id\":30,\"text\":\"p\"},{\"id\":31,\"text\":\"q\"},{\"id\":32,\"text\":\"r\"},{\"id\":33,\"text\":\"s\"},{\"id\":34,\"text\":\"t\"}]}`\n\n```html\n<div>\n  <span\n    id=\"30\"\n  >\n    p\n  </span>\n  <span\n    id=\"31\"\n  >\n    q\n  </span>\n  <span\n    id=\"32\"\n  >\n    r\n  </span>\n  <span\n    id=\"33\"\n  >\n    s\n  </span>\n  <span\n    id=\"34\"\n  >\n    t\n  </span>\n</div>\n```\n\n# Mutations\n```\nREMOVE span in div\nINSERT div/span0\nINSERT div/span1\nINSERT div/span2\nINSERT div/span3\nINSERT div/span4\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-replace/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-replace/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* get, over(1) */\" b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for_content__child_id = ($scope, child_id) => _._attr($scope[\"#span/0\"], \"id\", child_id);\nconst $for_content__child_text = ($scope, child_text) => _._text($scope[\"#text/1\"], child_text);\nconst $for_content__$params = ($scope, $params2) => $for_content__child($scope, $params2[0]);\nconst $for_content__child = ($scope, child) => {\n  $for_content__child_id($scope, child?.id);\n  $for_content__child_text($scope, child?.text);\n};\nconst $for = /* @__PURE__ */_._for_of(\"#div/0\", \"<span> </span>\", /* get, next(1), get, out(1) */\" D l\", 0, $for_content__$params);\nexport const $input_children = ($scope, input_children) => $for($scope, [input_children, \"id\"]);\nexport const $input = ($scope, input) => $input_children($scope, input.children);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-replace/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div>\");\n  _._for_of(input.children, child => {\n    const $scope1_id = _._scope_id();\n    _._html(`<span${_._attr(\"id\", child.id)}>${_._escape(child.text)}${_._el_resume($scope1_id, \"#text/1\", _._serialize_guard($scope0_reason, /* input.children */0))}</span>${_._el_resume($scope1_id, \"#span/0\", _._serialize_guard($scope0_reason, /* input.children */0))}`);\n    _._serialize_if($scope0_reason, /* input.children */0) && _._scope($scope1_id, {}, \"__tests__/template.marko\", \"2:4\");\n  }, \"id\", $scope0_id, \"#div/0\", _._serialize_guard($scope0_reason, /* input.children */0), _._serialize_guard($scope0_reason, /* input.children */0), _._serialize_guard($scope0_reason, /* input.children */0), \"</div>\", 1);\n  _._serialize_if($scope0_reason, /* input.children */0) && _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-replace/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"}]}`\n\n```html\n<div>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-replace/__snapshots__/resume.expected.md",
    "content": "# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"}]}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <span\n        id=\"1\"\n      >\n        a\n      </span>\n      <span\n        id=\"2\"\n      >\n        b\n      </span>\n      <span\n        id=\"3\"\n      >\n        c\n      </span>\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-replace/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-replace/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><span id=1>a</span><span id=2>b</span><span id=3>c</span></div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <span\n        id=\"1\"\n      >\n        a\n      </span>\n      <span\n        id=\"2\"\n      >\n        b\n      </span>\n      <span\n        id=\"3\"\n      >\n        c\n      </span>\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/span0\nINSERT html/body/div/span0/#text\nINSERT html/body/div/span1\nINSERT html/body/div/span1/#text\nINSERT html/body/div/span2\nINSERT html/body/div/span2/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-replace/template.marko",
    "content": "<div>\n  <for|child| of=input.children by=\"id\">\n    <span id=child.id>${child.text}</span>\n  </for>\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-replace/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [\n    {\n      children: [\n        { id: 1, text: \"a\" },\n        { id: 2, text: \"b\" },\n        { id: 3, text: \"c\" },\n      ],\n    },\n    // Replace all: entirely new keys\n    {\n      children: [\n        { id: 10, text: \"x\" },\n        { id: 11, text: \"y\" },\n        { id: 12, text: \"z\" },\n      ],\n    },\n    // Back to original\n    {\n      children: [\n        { id: 1, text: \"a\" },\n        { id: 2, text: \"b\" },\n        { id: 3, text: \"c\" },\n      ],\n    },\n    // Replace with fewer items\n    {\n      children: [{ id: 20, text: \"only\" }],\n    },\n    // Replace with more items\n    {\n      children: [\n        { id: 30, text: \"p\" },\n        { id: 31, text: \"q\" },\n        { id: 32, text: \"r\" },\n        { id: 33, text: \"s\" },\n        { id: 34, text: \"t\" },\n      ],\n    },\n  ],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-reverse/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-reverse/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"},{\"id\":4,\"text\":\"d\"},{\"id\":5,\"text\":\"e\"}]}`\n\n```html\n<div>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n  <span\n    id=\"4\"\n  >\n    d\n  </span>\n  <span\n    id=\"5\"\n  >\n    e\n  </span>\n</div>\n```\n\n\n# Render `{\"children\":[{\"id\":5,\"text\":\"e\"},{\"id\":4,\"text\":\"d\"},{\"id\":3,\"text\":\"c\"},{\"id\":2,\"text\":\"b\"},{\"id\":1,\"text\":\"a\"}]}`\n\n```html\n<div>\n  <span\n    id=\"5\"\n  >\n    e\n  </span>\n  <span\n    id=\"4\"\n  >\n    d\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n</div>\n```\n\n\n# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"},{\"id\":4,\"text\":\"d\"},{\"id\":5,\"text\":\"e\"}]}`\n\n```html\n<div>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n  <span\n    id=\"4\"\n  >\n    d\n  </span>\n  <span\n    id=\"5\"\n  >\n    e\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-reverse/__snapshots__/csr.expected.md",
    "content": "# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"},{\"id\":4,\"text\":\"d\"},{\"id\":5,\"text\":\"e\"}]}`\n\n```html\n<div>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n  <span\n    id=\"4\"\n  >\n    d\n  </span>\n  <span\n    id=\"5\"\n  >\n    e\n  </span>\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render `{\"children\":[{\"id\":5,\"text\":\"e\"},{\"id\":4,\"text\":\"d\"},{\"id\":3,\"text\":\"c\"},{\"id\":2,\"text\":\"b\"},{\"id\":1,\"text\":\"a\"}]}`\n\n```html\n<div>\n  <span\n    id=\"5\"\n  >\n    e\n  </span>\n  <span\n    id=\"4\"\n  >\n    d\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n</div>\n```\n\n# Mutations\n```\nREMOVE div/span3 after div/span4\nINSERT div/span3\nREMOVE div/span2 after div/span4\nINSERT div/span2\nREMOVE div/span1 after div/span4\nINSERT div/span1\nREMOVE div/span0 after div/span4\nINSERT div/span0\n```\n\n# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"},{\"id\":4,\"text\":\"d\"},{\"id\":5,\"text\":\"e\"}]}`\n\n```html\n<div>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n  <span\n    id=\"4\"\n  >\n    d\n  </span>\n  <span\n    id=\"5\"\n  >\n    e\n  </span>\n</div>\n```\n\n# Mutations\n```\nREMOVE div/span3 after div/span4\nINSERT div/span3\nREMOVE div/span2 after div/span4\nINSERT div/span2\nREMOVE div/span1 after div/span4\nINSERT div/span1\nREMOVE div/span0 after div/span4\nINSERT div/span0\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-reverse/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-reverse/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* get, over(1) */\" b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for_content__child_id = ($scope, child_id) => _._attr($scope[\"#span/0\"], \"id\", child_id);\nconst $for_content__child_text = ($scope, child_text) => _._text($scope[\"#text/1\"], child_text);\nconst $for_content__$params = ($scope, $params2) => $for_content__child($scope, $params2[0]);\nconst $for_content__child = ($scope, child) => {\n  $for_content__child_id($scope, child?.id);\n  $for_content__child_text($scope, child?.text);\n};\nconst $for = /* @__PURE__ */_._for_of(\"#div/0\", \"<span> </span>\", /* get, next(1), get, out(1) */\" D l\", 0, $for_content__$params);\nexport const $input_children = ($scope, input_children) => $for($scope, [input_children, \"id\"]);\nexport const $input = ($scope, input) => $input_children($scope, input.children);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-reverse/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div>\");\n  _._for_of(input.children, child => {\n    const $scope1_id = _._scope_id();\n    _._html(`<span${_._attr(\"id\", child.id)}>${_._escape(child.text)}${_._el_resume($scope1_id, \"#text/1\", _._serialize_guard($scope0_reason, /* input.children */0))}</span>${_._el_resume($scope1_id, \"#span/0\", _._serialize_guard($scope0_reason, /* input.children */0))}`);\n    _._serialize_if($scope0_reason, /* input.children */0) && _._scope($scope1_id, {}, \"__tests__/template.marko\", \"2:4\");\n  }, \"id\", $scope0_id, \"#div/0\", _._serialize_guard($scope0_reason, /* input.children */0), _._serialize_guard($scope0_reason, /* input.children */0), _._serialize_guard($scope0_reason, /* input.children */0), \"</div>\", 1);\n  _._serialize_if($scope0_reason, /* input.children */0) && _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-reverse/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"},{\"id\":4,\"text\":\"d\"},{\"id\":5,\"text\":\"e\"}]}`\n\n```html\n<div>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n  <span\n    id=\"4\"\n  >\n    d\n  </span>\n  <span\n    id=\"5\"\n  >\n    e\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-reverse/__snapshots__/resume.expected.md",
    "content": "# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"},{\"id\":4,\"text\":\"d\"},{\"id\":5,\"text\":\"e\"}]}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <span\n        id=\"1\"\n      >\n        a\n      </span>\n      <span\n        id=\"2\"\n      >\n        b\n      </span>\n      <span\n        id=\"3\"\n      >\n        c\n      </span>\n      <span\n        id=\"4\"\n      >\n        d\n      </span>\n      <span\n        id=\"5\"\n      >\n        e\n      </span>\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-reverse/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n  <span\n    id=\"4\"\n  >\n    d\n  </span>\n  <span\n    id=\"5\"\n  >\n    e\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-reverse/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><span id=1>a</span><span id=2>b</span><span id=3>c</span><span id=4>d</span><span id=5>e</span></div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <span\n        id=\"1\"\n      >\n        a\n      </span>\n      <span\n        id=\"2\"\n      >\n        b\n      </span>\n      <span\n        id=\"3\"\n      >\n        c\n      </span>\n      <span\n        id=\"4\"\n      >\n        d\n      </span>\n      <span\n        id=\"5\"\n      >\n        e\n      </span>\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/span0\nINSERT html/body/div/span0/#text\nINSERT html/body/div/span1\nINSERT html/body/div/span1/#text\nINSERT html/body/div/span2\nINSERT html/body/div/span2/#text\nINSERT html/body/div/span3\nINSERT html/body/div/span3/#text\nINSERT html/body/div/span4\nINSERT html/body/div/span4/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-reverse/template.marko",
    "content": "<div>\n  <for|child| of=input.children by=\"id\">\n    <span id=child.id>${child.text}</span>\n  </for>\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-reverse/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [\n    {\n      children: [\n        { id: 1, text: \"a\" },\n        { id: 2, text: \"b\" },\n        { id: 3, text: \"c\" },\n        { id: 4, text: \"d\" },\n        { id: 5, text: \"e\" },\n      ],\n    },\n    // Full reverse: optimal is to keep the longest subsequence in place\n    {\n      children: [\n        { id: 5, text: \"e\" },\n        { id: 4, text: \"d\" },\n        { id: 3, text: \"c\" },\n        { id: 2, text: \"b\" },\n        { id: 1, text: \"a\" },\n      ],\n    },\n    // Back to original\n    {\n      children: [\n        { id: 1, text: \"a\" },\n        { id: 2, text: \"b\" },\n        { id: 3, text: \"c\" },\n        { id: 4, text: \"d\" },\n        { id: 5, text: \"e\" },\n      ],\n    },\n  ],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-rotate/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-rotate/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"},{\"id\":4,\"text\":\"d\"},{\"id\":5,\"text\":\"e\"}]}`\n\n```html\n<div>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n  <span\n    id=\"4\"\n  >\n    d\n  </span>\n  <span\n    id=\"5\"\n  >\n    e\n  </span>\n</div>\n```\n\n\n# Render `{\"children\":[{\"id\":5,\"text\":\"e\"},{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"},{\"id\":4,\"text\":\"d\"}]}`\n\n```html\n<div>\n  <span\n    id=\"5\"\n  >\n    e\n  </span>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n  <span\n    id=\"4\"\n  >\n    d\n  </span>\n</div>\n```\n\n\n# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"},{\"id\":4,\"text\":\"d\"},{\"id\":5,\"text\":\"e\"}]}`\n\n```html\n<div>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n  <span\n    id=\"4\"\n  >\n    d\n  </span>\n  <span\n    id=\"5\"\n  >\n    e\n  </span>\n</div>\n```\n\n\n# Render `{\"children\":[{\"id\":4,\"text\":\"d\"},{\"id\":5,\"text\":\"e\"},{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"}]}`\n\n```html\n<div>\n  <span\n    id=\"4\"\n  >\n    d\n  </span>\n  <span\n    id=\"5\"\n  >\n    e\n  </span>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-rotate/__snapshots__/csr.expected.md",
    "content": "# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"},{\"id\":4,\"text\":\"d\"},{\"id\":5,\"text\":\"e\"}]}`\n\n```html\n<div>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n  <span\n    id=\"4\"\n  >\n    d\n  </span>\n  <span\n    id=\"5\"\n  >\n    e\n  </span>\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render `{\"children\":[{\"id\":5,\"text\":\"e\"},{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"},{\"id\":4,\"text\":\"d\"}]}`\n\n```html\n<div>\n  <span\n    id=\"5\"\n  >\n    e\n  </span>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n  <span\n    id=\"4\"\n  >\n    d\n  </span>\n</div>\n```\n\n# Mutations\n```\nREMOVE div/span0 after div/span4\nINSERT div/span0\n```\n\n# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"},{\"id\":4,\"text\":\"d\"},{\"id\":5,\"text\":\"e\"}]}`\n\n```html\n<div>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n  <span\n    id=\"4\"\n  >\n    d\n  </span>\n  <span\n    id=\"5\"\n  >\n    e\n  </span>\n</div>\n```\n\n# Mutations\n```\nREMOVE div/span4 before div/span0\nINSERT div/span4\n```\n\n# Render `{\"children\":[{\"id\":4,\"text\":\"d\"},{\"id\":5,\"text\":\"e\"},{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"}]}`\n\n```html\n<div>\n  <span\n    id=\"4\"\n  >\n    d\n  </span>\n  <span\n    id=\"5\"\n  >\n    e\n  </span>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n</div>\n```\n\n# Mutations\n```\nREMOVE div/span1 after div/span0\nINSERT div/span1\nREMOVE div/span0 after div/span4\nINSERT div/span0\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-rotate/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-rotate/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* get, over(1) */\" b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for_content__child_id = ($scope, child_id) => _._attr($scope[\"#span/0\"], \"id\", child_id);\nconst $for_content__child_text = ($scope, child_text) => _._text($scope[\"#text/1\"], child_text);\nconst $for_content__$params = ($scope, $params2) => $for_content__child($scope, $params2[0]);\nconst $for_content__child = ($scope, child) => {\n  $for_content__child_id($scope, child?.id);\n  $for_content__child_text($scope, child?.text);\n};\nconst $for = /* @__PURE__ */_._for_of(\"#div/0\", \"<span> </span>\", /* get, next(1), get, out(1) */\" D l\", 0, $for_content__$params);\nexport const $input_children = ($scope, input_children) => $for($scope, [input_children, \"id\"]);\nexport const $input = ($scope, input) => $input_children($scope, input.children);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-rotate/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div>\");\n  _._for_of(input.children, child => {\n    const $scope1_id = _._scope_id();\n    _._html(`<span${_._attr(\"id\", child.id)}>${_._escape(child.text)}${_._el_resume($scope1_id, \"#text/1\", _._serialize_guard($scope0_reason, /* input.children */0))}</span>${_._el_resume($scope1_id, \"#span/0\", _._serialize_guard($scope0_reason, /* input.children */0))}`);\n    _._serialize_if($scope0_reason, /* input.children */0) && _._scope($scope1_id, {}, \"__tests__/template.marko\", \"2:4\");\n  }, \"id\", $scope0_id, \"#div/0\", _._serialize_guard($scope0_reason, /* input.children */0), _._serialize_guard($scope0_reason, /* input.children */0), _._serialize_guard($scope0_reason, /* input.children */0), \"</div>\", 1);\n  _._serialize_if($scope0_reason, /* input.children */0) && _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-rotate/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"},{\"id\":4,\"text\":\"d\"},{\"id\":5,\"text\":\"e\"}]}`\n\n```html\n<div>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n  <span\n    id=\"4\"\n  >\n    d\n  </span>\n  <span\n    id=\"5\"\n  >\n    e\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-rotate/__snapshots__/resume.expected.md",
    "content": "# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"},{\"id\":4,\"text\":\"d\"},{\"id\":5,\"text\":\"e\"}]}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <span\n        id=\"1\"\n      >\n        a\n      </span>\n      <span\n        id=\"2\"\n      >\n        b\n      </span>\n      <span\n        id=\"3\"\n      >\n        c\n      </span>\n      <span\n        id=\"4\"\n      >\n        d\n      </span>\n      <span\n        id=\"5\"\n      >\n        e\n      </span>\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-rotate/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  <span\n    id=\"1\"\n  >\n    a\n  </span>\n  <span\n    id=\"2\"\n  >\n    b\n  </span>\n  <span\n    id=\"3\"\n  >\n    c\n  </span>\n  <span\n    id=\"4\"\n  >\n    d\n  </span>\n  <span\n    id=\"5\"\n  >\n    e\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-rotate/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><span id=1>a</span><span id=2>b</span><span id=3>c</span><span id=4>d</span><span id=5>e</span></div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <span\n        id=\"1\"\n      >\n        a\n      </span>\n      <span\n        id=\"2\"\n      >\n        b\n      </span>\n      <span\n        id=\"3\"\n      >\n        c\n      </span>\n      <span\n        id=\"4\"\n      >\n        d\n      </span>\n      <span\n        id=\"5\"\n      >\n        e\n      </span>\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/span0\nINSERT html/body/div/span0/#text\nINSERT html/body/div/span1\nINSERT html/body/div/span1/#text\nINSERT html/body/div/span2\nINSERT html/body/div/span2/#text\nINSERT html/body/div/span3\nINSERT html/body/div/span3/#text\nINSERT html/body/div/span4\nINSERT html/body/div/span4/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-rotate/template.marko",
    "content": "<div>\n  <for|child| of=input.children by=\"id\">\n    <span id=child.id>${child.text}</span>\n  </for>\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-rotate/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [\n    {\n      children: [\n        { id: 1, text: \"a\" },\n        { id: 2, text: \"b\" },\n        { id: 3, text: \"c\" },\n        { id: 4, text: \"d\" },\n        { id: 5, text: \"e\" },\n      ],\n    },\n    // Rotate right by 1: move last to first\n    {\n      children: [\n        { id: 5, text: \"e\" },\n        { id: 1, text: \"a\" },\n        { id: 2, text: \"b\" },\n        { id: 3, text: \"c\" },\n        { id: 4, text: \"d\" },\n      ],\n    },\n    // Rotate left by 1: move first to last\n    {\n      children: [\n        { id: 1, text: \"a\" },\n        { id: 2, text: \"b\" },\n        { id: 3, text: \"c\" },\n        { id: 4, text: \"d\" },\n        { id: 5, text: \"e\" },\n      ],\n    },\n    // Rotate right by 2\n    {\n      children: [\n        { id: 4, text: \"d\" },\n        { id: 5, text: \"e\" },\n        { id: 1, text: \"a\" },\n        { id: 2, text: \"b\" },\n        { id: 3, text: \"c\" },\n      ],\n    },\n  ],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-swap/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-swap/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"},{\"id\":4,\"text\":\"d\"}]}`\n\n```html\n<div>\n  <span>\n    a\n  </span>\n  <span>\n    b\n  </span>\n  <span>\n    c\n  </span>\n  <span>\n    d\n  </span>\n</div>\n```\n\n\n# Render `{\"children\":[{\"id\":4,\"text\":\"d\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"},{\"id\":1,\"text\":\"a\"}]}`\n\n```html\n<div>\n  <span>\n    d\n  </span>\n  <span>\n    b\n  </span>\n  <span>\n    c\n  </span>\n  <span>\n    a\n  </span>\n</div>\n```\n\n\n# Render `{\"children\":[{\"id\":4,\"text\":\"d\"},{\"id\":3,\"text\":\"c\"},{\"id\":2,\"text\":\"b\"},{\"id\":1,\"text\":\"a\"}]}`\n\n```html\n<div>\n  <span>\n    d\n  </span>\n  <span>\n    c\n  </span>\n  <span>\n    b\n  </span>\n  <span>\n    a\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-swap/__snapshots__/csr.expected.md",
    "content": "# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"},{\"id\":4,\"text\":\"d\"}]}`\n\n```html\n<div>\n  <span>\n    a\n  </span>\n  <span>\n    b\n  </span>\n  <span>\n    c\n  </span>\n  <span>\n    d\n  </span>\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render `{\"children\":[{\"id\":4,\"text\":\"d\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"},{\"id\":1,\"text\":\"a\"}]}`\n\n```html\n<div>\n  <span>\n    d\n  </span>\n  <span>\n    b\n  </span>\n  <span>\n    c\n  </span>\n  <span>\n    a\n  </span>\n</div>\n```\n\n# Mutations\n```\nREMOVE div/span3 before div/span1\nINSERT div/span3\nREMOVE div/span0 after div/span2\nINSERT div/span0\n```\n\n# Render `{\"children\":[{\"id\":4,\"text\":\"d\"},{\"id\":3,\"text\":\"c\"},{\"id\":2,\"text\":\"b\"},{\"id\":1,\"text\":\"a\"}]}`\n\n```html\n<div>\n  <span>\n    d\n  </span>\n  <span>\n    c\n  </span>\n  <span>\n    b\n  </span>\n  <span>\n    a\n  </span>\n</div>\n```\n\n# Mutations\n```\nREMOVE div/span1 after div/span2\nINSERT div/span1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-swap/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-swap/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* get, over(1) */\" b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for_content__child_text = ($scope, child_text) => _._text($scope[\"#text/0\"], child_text);\nconst $for_content__$params = ($scope, $params2) => $for_content__child($scope, $params2[0]);\nconst $for_content__child = ($scope, child) => $for_content__child_text($scope, child?.text);\nconst $for = /* @__PURE__ */_._for_of(\"#div/0\", \"<span> </span>\", /* next(1), get, out(1) */\"D l\", 0, $for_content__$params);\nexport const $input_children = ($scope, input_children) => $for($scope, [input_children, \"id\"]);\nexport const $input = ($scope, input) => $input_children($scope, input.children);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-swap/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div>\");\n  _._for_of(input.children, child => {\n    const $scope1_id = _._scope_id();\n    _._html(`<span>${_._escape(child.text)}${_._el_resume($scope1_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.children */0))}</span>`);\n    _._serialize_if($scope0_reason, /* input.children */0) && _._scope($scope1_id, {}, \"__tests__/template.marko\", \"2:4\");\n  }, \"id\", $scope0_id, \"#div/0\", _._serialize_guard($scope0_reason, /* input.children */0), _._serialize_guard($scope0_reason, /* input.children */0), _._serialize_guard($scope0_reason, /* input.children */0), \"</div>\", 1);\n  _._serialize_if($scope0_reason, /* input.children */0) && _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-swap/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"},{\"id\":4,\"text\":\"d\"}]}`\n\n```html\n<div>\n  <span>\n    a\n  </span>\n  <span>\n    b\n  </span>\n  <span>\n    c\n  </span>\n  <span>\n    d\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-swap/__snapshots__/resume.expected.md",
    "content": "# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"},{\"id\":4,\"text\":\"d\"}]}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <span>\n        a\n      </span>\n      <span>\n        b\n      </span>\n      <span>\n        c\n      </span>\n      <span>\n        d\n      </span>\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-swap/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  <span>\n    a\n  </span>\n  <span>\n    b\n  </span>\n  <span>\n    c\n  </span>\n  <span>\n    d\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-swap/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><span>a</span><span>b</span><span>c</span><span>d</span></div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <span>\n        a\n      </span>\n      <span>\n        b\n      </span>\n      <span>\n        c\n      </span>\n      <span>\n        d\n      </span>\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/span0\nINSERT html/body/div/span0/#text\nINSERT html/body/div/span1\nINSERT html/body/div/span1/#text\nINSERT html/body/div/span2\nINSERT html/body/div/span2/#text\nINSERT html/body/div/span3\nINSERT html/body/div/span3/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-swap/template.marko",
    "content": "<div>\n  <for|child| of=input.children by=\"id\">\n    <span>${child.text}</span>\n  </for>\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-reorder-swap/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [\n    {\n      children: [\n        { id: 1, text: \"a\" },\n        { id: 2, text: \"b\" },\n        { id: 3, text: \"c\" },\n        { id: 4, text: \"d\" },\n      ],\n    },\n    // Swap first and last: middle items stay, endpoints move\n    {\n      children: [\n        { id: 4, text: \"d\" },\n        { id: 2, text: \"b\" },\n        { id: 3, text: \"c\" },\n        { id: 1, text: \"a\" },\n      ],\n    },\n    // Swap adjacent: b <-> c\n    {\n      children: [\n        { id: 4, text: \"d\" },\n        { id: 3, text: \"c\" },\n        { id: 2, text: \"b\" },\n        { id: 1, text: \"a\" },\n      ],\n    },\n  ],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-serialize-key/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_2\": \"m\",\n      \"$init\": \"i\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-serialize-key/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"el\"\n/>\n<div>\n  <button>\n    Click\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div\n  id=\"el\"\n>\n  0\n</div>\n<div>\n  <button>\n    Click\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-serialize-key/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"el\"\n/>\n<div>\n  <button>\n    Click\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT div0, div1\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div\n  id=\"el\"\n>\n  0\n</div>\n<div>\n  <button>\n    Click\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT div0/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-serialize-key/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 127 (min) 89 (brotli)\n(_2._script(\"a0\", ($scope) =>\n  _2._on($scope.a, \"click\", function () {\n    document.getElementById(\"el\").innerHTML =\n      void 0 === $scope.M ? \"index missing\" : $scope.M;\n  }),\n),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-serialize-key/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div id=el></div><div></div>\";\nexport const $walks = /* over(1), get, over(1) */\"b b\";\nimport * as _2 from \"@marko/runtime-tags/debug/dom\";\nconst $for_content__setup__script = _2._script(\"__tests__/template.marko_1\", $scope => _2._on($scope[\"#button/0\"], \"click\", function () {\n  document.getElementById(\"el\").innerHTML = $scope[\"#LoopKey\"] === undefined ? 'index missing' : $scope[\"#LoopKey\"];\n}));\nconst $for_content__setup = $for_content__setup__script;\nconst $for = /* @__PURE__ */_2._for_of(\"#div/0\", \"<button>Click</button>\", /* get, over(1) */\" b\", $for_content__setup);\nexport function $setup($scope) {\n  $for($scope, [[\"hello\"]]);\n}\nexport default /* @__PURE__ */_2._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-serialize-key/__snapshots__/html.expected/template.js",
    "content": "import * as _2 from \"@marko/runtime-tags/debug/html\";\nexport default _2._template(\"__tests__/template.marko\", input => {\n  _2._scope_reason();\n  const $scope0_id = _2._scope_id();\n  _2._html(\"<div id=el></div><div>\");\n  _2.forOf([\"hello\"], (_, index) => {\n    const $scope1_id = _2._scope_id();\n    _2._html(`<button>Click</button>${_2._el_resume($scope1_id, \"#button/0\")}`);\n    _2._script($scope1_id, \"__tests__/template.marko_1\");\n    _2._scope($scope1_id, {\n      \"#LoopKey\": index\n    }, \"__tests__/template.marko\", \"3:4\", {\n      \"#LoopKey\": \"3:11\"\n    });\n  });\n  _2._html(\"</div>\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-serialize-key/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"el\"\n/>\n<div>\n  <button>\n    Click\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div\n  id=\"el\"\n>\n  0\n</div>\n<div>\n  <button>\n    Click\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-serialize-key/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"el\"\n    />\n    <div>\n      <button>\n        Click\n      </button>\n      <!--M_*2 #button/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 1,\n        {\n          \"#LoopKey\": 0\n        }]),\n        \"__tests__/template.marko_1 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"el\"\n    >\n      0\n    </div>\n    <div>\n      <button>\n        Click\n      </button>\n      <!--M_*2 #button/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 1,\n        {\n          \"#LoopKey\": 0\n        }]),\n        \"__tests__/template.marko_1 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div0/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-serialize-key/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div\n  id=\"el\"\n/>\n<div>\n  <button>\n    Click\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-serialize-key/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div id=el></div><div><button>Click</button><!--M_*2 #button/0--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,1,{\"#LoopKey\":0}]),\"__tests__/template.marko_1 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"el\"\n    />\n    <div>\n      <button>\n        Click\n      </button>\n      <!--M_*2 #button/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 1,\n        {\n          \"#LoopKey\": 0\n        }]),\n        \"__tests__/template.marko_1 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/div1\nINSERT html/body/div1/button\nINSERT html/body/div1/button/#text\nINSERT html/body/div1/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-serialize-key/template.marko",
    "content": "<div#el/>\n<div>\n  <for|_, index| of=[\"hello\"]>\n    <button\n      onClick() {\n        document.getElementById(\"el\").innerHTML = index === undefined ? 'index missing' : index\n      }>\n      Click\n    </button>\n  </for>\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-serialize-key/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  (container.querySelector(\"button\") as HTMLButtonElement).click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  0: 1\n</div>\n<div />\n<div />\n<div>\n  1: 2\n</div>\n<div />\n<div />\n<div>\n  2: 3\n</div>\n<div />\n<div />\n<div>\n  a: 1\n</div>\n<div />\n<div />\n<div>\n  b: 1\n</div>\n<div />\n<div />\n<div>\n  c: 1\n</div>\n<div />\n<div />\n<div>\n  to 3: 0123\n</div>\n<div>\n  until 3: 012\n</div>\n<div>\n  from 1 to 3: 123\n</div>\n<div>\n  from 1 until 3: 12\n</div>\n<div>\n  from 1 to 5 step 2: 135\n</div>\n<div>\n  from 1 until 5 step 2: 13\n</div>\n<div>\n  from 4 to 2 step -0.6: 4 3.4 2.8 2.2 \n</div>\n<div>\n  from 4 until 2 step -0.6: 4 3.4 2.8 2.2 \n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<div>\n  0: 1\n</div>\n<div />\n<div />\n<div>\n  1: 2\n</div>\n<div />\n<div />\n<div>\n  2: 3\n</div>\n<div />\n<div />\n<div>\n  a: 1\n</div>\n<div />\n<div />\n<div>\n  b: 1\n</div>\n<div />\n<div />\n<div>\n  c: 1\n</div>\n<div />\n<div />\n<div>\n  to 3: 0123\n</div>\n<div>\n  until 3: 012\n</div>\n<div>\n  from 1 to 3: 123\n</div>\n<div>\n  from 1 until 3: 12\n</div>\n<div>\n  from 1 to 5 step 2: 135\n</div>\n<div>\n  from 1 until 5 step 2: 13\n</div>\n<div>\n  from 4 to 2 step -0.6: 4 3.4 2.8 2.2 \n</div>\n<div>\n  from 4 until 2 step -0.6: 4 3.4 2.8 2.2 \n</div>\n```\n\n# Mutations\n```\nINSERT #comment, div0, div1, div2, div3, div4, div5, div6, div7, div8, div9, div10, div11, div12, div13, div14, div15, div16, div17, div18, div19, div20, div21, div22, div23, div24, div25\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><!><div>to 3: <!></div><div>until 3: <!></div><div>from 1 to 3: <!></div><div>from 1 until 3: <!></div><div>from 1 to 5 step 2: <!></div><div>from 1 until 5 step 2: <!></div><div>from 4 to 2 step -0.6: <!></div><div>from 4 until 2 step -0.6: <!></div>\";\nexport const $walks = /* over(1), replace, over(1), replace, over(1), next(1), over(1), replace, out(1), next(1), over(1), replace, out(1), next(1), over(1), replace, out(1), next(1), over(1), replace, out(1), next(1), over(1), replace, out(1), next(1), over(1), replace, out(1), next(1), over(1), replace, out(1), next(1), over(1), replace, out(1) */\"b%b%bDb%lDb%lDb%lDb%lDb%lDb%lDb%lDb%l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for_content10__setup = $scope => _._text($scope[\"#text/0\"], $scope[\"#LoopKey\"]);\nconst $for_content9__setup = $scope => _._text($scope[\"#text/0\"], $scope[\"#LoopKey\"]);\nconst $for_content8__setup = $scope => _._text($scope[\"#text/0\"], $scope[\"#LoopKey\"]);\nconst $for_content7__setup = $scope => _._text($scope[\"#text/0\"], $scope[\"#LoopKey\"]);\nconst $for_content6__setup = $scope => _._text($scope[\"#text/0\"], $scope[\"#LoopKey\"]);\nconst $for_content5__setup = $scope => _._text($scope[\"#text/0\"], $scope[\"#LoopKey\"]);\nconst $for_content4__setup = $scope => _._text($scope[\"#text/0\"], $scope[\"#LoopKey\"]);\nconst $for_content3__setup = $scope => _._text($scope[\"#text/0\"], $scope[\"#LoopKey\"]);\nconst $for_content2__setup = $scope => _._text($scope[\"#text/0\"], $scope[\"#LoopKey\"]);\nconst $for_content2__val = ($scope, val) => _._text($scope[\"#text/1\"], val);\nconst $for_content2__$params = ($scope, $params3) => $for_content2__val($scope, $params3[1]);\nconst $for_content__setup = $scope => _._text($scope[\"#text/0\"], $scope[\"#LoopKey\"]);\nconst $for_content__val = ($scope, val) => _._text($scope[\"#text/1\"], val);\nconst $for_content__$params = ($scope, $params2) => $for_content__val($scope, $params2[0]);\nconst $for = /* @__PURE__ */_._for_of(\"#text/0\", \"<div><!>: <!></div><div></div><div></div>\", /* next(1), replace, over(2), replace, out(1), over(2) */\"D%c%lc\", $for_content__setup, $for_content__$params);\nconst $arr = ($scope, arr) => $for($scope, [arr]);\nconst $for2 = /* @__PURE__ */_._for_in(\"#text/1\", \"<div><!>: <!></div><div></div><div></div>\", /* next(1), replace, over(2), replace, out(1), over(2) */\"D%c%lc\", $for_content2__setup, $for_content2__$params);\nconst $obj = ($scope, obj) => $for2($scope, [obj]);\nconst $for3 = /* @__PURE__ */_._for_to(\"#text/2\", \" \", /* get, over(1) */\" b\", $for_content3__setup);\nconst $for4 = /* @__PURE__ */_._for_until(\"#text/3\", \" \", /* get, over(1) */\" b\", $for_content4__setup);\nconst $for5 = /* @__PURE__ */_._for_to(\"#text/4\", \" \", /* get, over(1) */\" b\", $for_content5__setup);\nconst $for6 = /* @__PURE__ */_._for_until(\"#text/5\", \" \", /* get, over(1) */\" b\", $for_content6__setup);\nconst $for7 = /* @__PURE__ */_._for_to(\"#text/6\", \" \", /* get, over(1) */\" b\", $for_content7__setup);\nconst $for8 = /* @__PURE__ */_._for_until(\"#text/7\", \" \", /* get, over(1) */\" b\", $for_content8__setup);\nconst $for9 = /* @__PURE__ */_._for_to(\"#text/8\", \"<!> \", /* replace, over(2) */\"%c\", $for_content9__setup);\nconst $for10 = /* @__PURE__ */_._for_until(\"#text/9\", \"<!> \", /* replace, over(2) */\"%c\", $for_content10__setup);\nexport function $setup($scope) {\n  $arr($scope, [1, 2, 3]);\n  $obj($scope, {\n    a: 1,\n    b: 1,\n    c: 1\n  });\n  $for3($scope, [3, 0, 1]);\n  $for4($scope, [3, 0, 1]);\n  $for5($scope, [3, 1, 1]);\n  $for6($scope, [3, 1, 1]);\n  $for7($scope, [5, 1, 2]);\n  $for8($scope, [5, 1, 2]);\n  $for9($scope, [2, 4, -.6]);\n  $for10($scope, [2, 4, -.6]);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const arr = [1, 2, 3];\n  const obj = {\n    a: 1,\n    b: 1,\n    c: 1\n  };\n  _.forOf(arr, (val, i) => {\n    const $scope1_id = _._scope_id();\n    _._html(`<div>${_._escape(i)}: ${_._escape(val)}</div><div></div><div></div>`);\n  });\n  _.forIn(obj, (key, val) => {\n    const $scope2_id = _._scope_id();\n    _._html(`<div>${_._escape(key)}: ${_._escape(val)}</div><div></div><div></div>`);\n  });\n  _._html(\"<div>to 3: \");\n  _.forTo(3, 0, 1, i => {\n    const $scope3_id = _._scope_id();\n    _._html(_._escape(i));\n  });\n  _._html(\"</div><div>until 3: \");\n  _.forUntil(3, 0, 1, i => {\n    const $scope4_id = _._scope_id();\n    _._html(_._escape(i));\n  });\n  _._html(\"</div><div>from 1 to 3: \");\n  _.forTo(3, 1, 1, i => {\n    const $scope5_id = _._scope_id();\n    _._html(_._escape(i));\n  });\n  _._html(\"</div><div>from 1 until 3: \");\n  _.forUntil(3, 1, 1, i => {\n    const $scope6_id = _._scope_id();\n    _._html(_._escape(i));\n  });\n  _._html(\"</div><div>from 1 to 5 step 2: \");\n  _.forTo(5, 1, 2, i => {\n    const $scope7_id = _._scope_id();\n    _._html(_._escape(i));\n  });\n  _._html(\"</div><div>from 1 until 5 step 2: \");\n  _.forUntil(5, 1, 2, i => {\n    const $scope8_id = _._scope_id();\n    _._html(_._escape(i));\n  });\n  _._html(\"</div><div>from 4 to 2 step -0.6: \");\n  _.forTo(2, 4, -.6, i => {\n    const $scope9_id = _._scope_id();\n    _._html(`${_._escape(i)} `);\n  });\n  _._html(\"</div><div>from 4 until 2 step -0.6: \");\n  _.forUntil(2, 4, -.6, i => {\n    const $scope10_id = _._scope_id();\n    _._html(`${_._escape(i)} `);\n  });\n  _._html(\"</div>\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  0: 1\n</div>\n<div />\n<div />\n<div>\n  1: 2\n</div>\n<div />\n<div />\n<div>\n  2: 3\n</div>\n<div />\n<div />\n<div>\n  a: 1\n</div>\n<div />\n<div />\n<div>\n  b: 1\n</div>\n<div />\n<div />\n<div>\n  c: 1\n</div>\n<div />\n<div />\n<div>\n  to 3: 0123\n</div>\n<div>\n  until 3: 012\n</div>\n<div>\n  from 1 to 3: 123\n</div>\n<div>\n  from 1 until 3: 12\n</div>\n<div>\n  from 1 to 5 step 2: 135\n</div>\n<div>\n  from 1 until 5 step 2: 13\n</div>\n<div>\n  from 4 to 2 step -0.6: 4 3.4 2.8 2.2 \n</div>\n<div>\n  from 4 until 2 step -0.6: 4 3.4 2.8 2.2 \n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      0: 1\n    </div>\n    <div />\n    <div />\n    <div>\n      1: 2\n    </div>\n    <div />\n    <div />\n    <div>\n      2: 3\n    </div>\n    <div />\n    <div />\n    <div>\n      a: 1\n    </div>\n    <div />\n    <div />\n    <div>\n      b: 1\n    </div>\n    <div />\n    <div />\n    <div>\n      c: 1\n    </div>\n    <div />\n    <div />\n    <div>\n      to 3: 0123\n    </div>\n    <div>\n      until 3: 012\n    </div>\n    <div>\n      from 1 to 3: 123\n    </div>\n    <div>\n      from 1 until 3: 12\n    </div>\n    <div>\n      from 1 to 5 step 2: 135\n    </div>\n    <div>\n      from 1 until 5 step 2: 13\n    </div>\n    <div>\n      from 4 to 2 step -0.6: 4 3.4 2.8 2.2 \n    </div>\n    <div>\n      from 4 until 2 step -0.6: 4 3.4 2.8 2.2 \n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  0: 1\n</div>\n<div />\n<div />\n<div>\n  1: 2\n</div>\n<div />\n<div />\n<div>\n  2: 3\n</div>\n<div />\n<div />\n<div>\n  a: 1\n</div>\n<div />\n<div />\n<div>\n  b: 1\n</div>\n<div />\n<div />\n<div>\n  c: 1\n</div>\n<div />\n<div />\n<div>\n  to 3: 0123\n</div>\n<div>\n  until 3: 012\n</div>\n<div>\n  from 1 to 3: 123\n</div>\n<div>\n  from 1 until 3: 12\n</div>\n<div>\n  from 1 to 5 step 2: 135\n</div>\n<div>\n  from 1 until 5 step 2: 13\n</div>\n<div>\n  from 4 to 2 step -0.6: 4 3.4 2.8 2.2 \n</div>\n<div>\n  from 4 until 2 step -0.6: 4 3.4 2.8 2.2 \n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>0: 1</div><div></div><div></div><div>1: 2</div><div></div><div></div><div>2: 3</div><div></div><div></div><div>a: 1</div><div></div><div></div><div>b: 1</div><div></div><div></div><div>c: 1</div><div></div><div></div><div>to 3: 0123</div><div>until 3: 012</div><div>from 1 to 3: 123</div><div>from 1 until 3: 12</div><div>from 1 to 5 step 2: 135</div><div>from 1 until 5 step 2: 13</div><div>from 4 to 2 step -0.6: 4 3.4 2.8 2.2 </div><div>from 4 until 2 step -0.6: 4 3.4 2.8 2.2 </div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      0: 1\n    </div>\n    <div />\n    <div />\n    <div>\n      1: 2\n    </div>\n    <div />\n    <div />\n    <div>\n      2: 3\n    </div>\n    <div />\n    <div />\n    <div>\n      a: 1\n    </div>\n    <div />\n    <div />\n    <div>\n      b: 1\n    </div>\n    <div />\n    <div />\n    <div>\n      c: 1\n    </div>\n    <div />\n    <div />\n    <div>\n      to 3: 0123\n    </div>\n    <div>\n      until 3: 012\n    </div>\n    <div>\n      from 1 to 3: 123\n    </div>\n    <div>\n      from 1 until 3: 12\n    </div>\n    <div>\n      from 1 to 5 step 2: 135\n    </div>\n    <div>\n      from 1 until 5 step 2: 13\n    </div>\n    <div>\n      from 4 to 2 step -0.6: 4 3.4 2.8 2.2 \n    </div>\n    <div>\n      from 4 until 2 step -0.6: 4 3.4 2.8 2.2 \n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/div0/#text\nINSERT html/body/div1\nINSERT html/body/div2\nINSERT html/body/div3\nINSERT html/body/div3/#text\nINSERT html/body/div4\nINSERT html/body/div5\nINSERT html/body/div6\nINSERT html/body/div6/#text\nINSERT html/body/div7\nINSERT html/body/div8\nINSERT html/body/div9\nINSERT html/body/div9/#text\nINSERT html/body/div10\nINSERT html/body/div11\nINSERT html/body/div12\nINSERT html/body/div12/#text\nINSERT html/body/div13\nINSERT html/body/div14\nINSERT html/body/div15\nINSERT html/body/div15/#text\nINSERT html/body/div16\nINSERT html/body/div17\nINSERT html/body/div18\nINSERT html/body/div18/#text\nINSERT html/body/div19\nINSERT html/body/div19/#text\nINSERT html/body/div20\nINSERT html/body/div20/#text\nINSERT html/body/div21\nINSERT html/body/div21/#text\nINSERT html/body/div22\nINSERT html/body/div22/#text\nINSERT html/body/div23\nINSERT html/body/div23/#text\nINSERT html/body/div24\nINSERT html/body/div24/#text\nINSERT html/body/div25\nINSERT html/body/div25/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag/template.marko",
    "content": "<const/arr=[1,2,3]/>\n<const/obj={ a: 1, b: 1, c: 1 }/>\n\n<for|val, i| of=arr>\n  <div>${i}: ${val}</div>\n  <div/>\n  <div/>\n</for>\n\n<for|key, val| in=obj>\n  <div>${key}: ${val}</div>\n  <div/>\n  <div/>\n</for>\n\n<div>\n  to 3:\n  <for|i| to=3>\n    ${i}\n  </for>\n</div>\n\n<div>\n  until 3:\n  <for|i| until=3>\n    ${i}\n  </for>\n</div>\n\n<div>\n  from 1 to 3:\n  <for|i| from=1 to=3>\n    ${i}\n  </for>\n</div>\n\n<div>\n  from 1 until 3:\n  <for|i| from=1 until=3>\n    ${i}\n  </for>\n</div>\n\n<div>\n  from 1 to 5 step 2:\n  <for|i| from=1 to=5 step=2>\n    ${i}\n  </for>\n</div>\n\n<div>\n  from 1 until 5 step 2:\n  <for|i| from=1 until=5 step=2>\n    ${i}\n  </for>\n</div>\n\n<div>\n  from 4 to 2 step -0.6:\n  <for|i| from=4 to=2 step=-.6>\n    ${i}${\" \"}\n  </for>\n</div>\n\n<div>\n  from 4 until 2 step -0.6:\n  <for|i| from=4 until=2 step=-.6>\n    ${i}${\" \"}\n  </for>\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-siblings/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-siblings/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <div>\n    1\n  </div>\n  <div>\n    2\n  </div>\n  <div>\n    3\n  </div>\n</div>\n<div>\n  <div>\n    1\n  </div>\n  <div>\n    2\n  </div>\n  <div>\n    3\n  </div>\n  <div />\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-siblings/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  <div>\n    1\n  </div>\n  <div>\n    2\n  </div>\n  <div>\n    3\n  </div>\n</div>\n<div>\n  <div>\n    1\n  </div>\n  <div>\n    2\n  </div>\n  <div>\n    3\n  </div>\n  <div />\n</div>\n```\n\n# Mutations\n```\nINSERT div0, div1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-siblings/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-siblings/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div></div><div><!><div></div></div>\";\nexport const $walks = /* get, over(1), next(1), replace, out(1) */\" bD%l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for_content2__val = ($scope, val) => _._text($scope[\"#text/0\"], val);\nconst $for_content2__$params = ($scope, $params3) => $for_content2__val($scope, $params3[0]);\nconst $for_content__val = ($scope, val) => _._text($scope[\"#text/0\"], val);\nconst $for_content__$params = ($scope, $params2) => $for_content__val($scope, $params2[0]);\nconst $for = /* @__PURE__ */_._for_of(\"#div/0\", \"<div> </div>\", /* next(1), get, out(1) */\"D l\", 0, $for_content__$params);\nconst $for2 = /* @__PURE__ */_._for_of(\"#text/1\", \"<div> </div>\", /* next(1), get, out(1) */\"D l\", 0, $for_content2__$params);\nconst $arrA = ($scope, arrA) => {\n  $for($scope, [arrA]);\n  $for2($scope, [arrA]);\n};\nexport function $setup($scope) {\n  $arrA($scope, [1, 2, 3]);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-siblings/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const arrA = [1, 2, 3];\n  _._html(\"<div>\");\n  _.forOf(arrA, val => {\n    const $scope1_id = _._scope_id();\n    _._html(`<div>${_._escape(val)}</div>`);\n  });\n  _._html(\"</div><div>\");\n  _.forOf(arrA, val => {\n    const $scope2_id = _._scope_id();\n    _._html(`<div>${_._escape(val)}</div>`);\n  });\n  _._html(\"<div></div></div>\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-siblings/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <div>\n    1\n  </div>\n  <div>\n    2\n  </div>\n  <div>\n    3\n  </div>\n</div>\n<div>\n  <div>\n    1\n  </div>\n  <div>\n    2\n  </div>\n  <div>\n    3\n  </div>\n  <div />\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-siblings/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <div>\n        1\n      </div>\n      <div>\n        2\n      </div>\n      <div>\n        3\n      </div>\n    </div>\n    <div>\n      <div>\n        1\n      </div>\n      <div>\n        2\n      </div>\n      <div>\n        3\n      </div>\n      <div />\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-siblings/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  <div>\n    1\n  </div>\n  <div>\n    2\n  </div>\n  <div>\n    3\n  </div>\n</div>\n<div>\n  <div>\n    1\n  </div>\n  <div>\n    2\n  </div>\n  <div>\n    3\n  </div>\n  <div />\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-siblings/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><div>1</div><div>2</div><div>3</div></div><div><div>1</div><div>2</div><div>3</div><div></div></div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <div>\n        1\n      </div>\n      <div>\n        2\n      </div>\n      <div>\n        3\n      </div>\n    </div>\n    <div>\n      <div>\n        1\n      </div>\n      <div>\n        2\n      </div>\n      <div>\n        3\n      </div>\n      <div />\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/div0/div0\nINSERT html/body/div0/div0/#text\nINSERT html/body/div0/div1\nINSERT html/body/div0/div1/#text\nINSERT html/body/div0/div2\nINSERT html/body/div0/div2/#text\nINSERT html/body/div1\nINSERT html/body/div1/div0\nINSERT html/body/div1/div0/#text\nINSERT html/body/div1/div1\nINSERT html/body/div1/div1/#text\nINSERT html/body/div1/div2\nINSERT html/body/div1/div2/#text\nINSERT html/body/div1/div3\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-siblings/template.marko",
    "content": "<const/arrA=[1, 2, 3]/>\n\n<div>\n  <for|val| of=arrA>\n    <div>${val}</div>\n  </for>\n</div>\n\n<div>\n  <for|val| of=arrA>\n    <div>${val}</div>\n  </for>\n  <div />\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-single-node-only-child-in-parent/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$for\": \"r\",\n      \"$$children__script\": \"a\",\n      \"$$children\": \"m\",\n      \"$$children_length\": \"i\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-single-node-only-child-in-parent/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  data-children=\"1\"\n>\n  <div />\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div\n  data-children=\"2\"\n>\n  <div />\n  <div />\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-single-node-only-child-in-parent/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div\n  data-children=\"1\"\n>\n  <div />\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render ASYNC\n```html\n<div\n  data-children=\"2\"\n>\n  <div />\n  <div />\n</div>\n```\n\n# Mutations\n```\nUPDATE div[data-children] \"1\" => \"2\"\nINSERT div/div1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-single-node-only-child-in-parent/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 199 (min) 144 (brotli)\nconst $for = _._for_of(0, \"<div></div>\", \"b\"),\n  $children__script = _._script(\"a0\", ($scope) => {\n    1 === $scope.b?.length && $children($scope, [...$scope.b, 2]);\n  }),\n  $children = _._let(1, ($scope) => {\n    ($children_length($scope, $scope.b?.length),\n      $for($scope, [$scope.b]),\n      $children__script($scope));\n  }),\n  $children_length = _._const(2, ($scope) =>\n    _._attr($scope.a, \"data-children\", $scope.c),\n  );\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-single-node-only-child-in-parent/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* get, over(1) */\" b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for = /* @__PURE__ */_._for_of(\"#div/0\", \"<div></div>\", /* over(1) */\"b\");\nconst $children__script = _._script(\"__tests__/template.marko_0_children\", $scope => {\n  if ($scope.children?.length === 1) {\n    $children($scope, [...$scope.children, 2]);\n  }\n});\nconst $children = /* @__PURE__ */_._let(\"children/1\", $scope => {\n  $children_length($scope, $scope.children?.length);\n  $for($scope, [$scope.children]);\n  $children__script($scope);\n});\nconst $children_length = /* @__PURE__ */_._const(\"children_length\", $scope => _._attr($scope[\"#div/0\"], \"data-children\", $scope.children_length));\nexport function $setup($scope) {\n  $children($scope, [1]);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-single-node-only-child-in-parent/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let children = [1];\n  _._html(`<div${_._attr(\"data-children\", children.length)}>`);\n  _._for_of(children, () => {\n    const $scope1_id = _._scope_id();\n    _._html(\"<div></div>\");\n    _._scope($scope1_id, {}, \"__tests__/template.marko\", \"3:4\");\n  }, 0, $scope0_id, \"#div/0\", /* children */1, /* children */1, /* children */1, \"</div>\", 1);\n  _._script($scope0_id, \"__tests__/template.marko_0_children\");\n  _._scope($scope0_id, {\n    children\n  }, \"__tests__/template.marko\", 0, {\n    children: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-single-node-only-child-in-parent/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  data-children=\"1\"\n>\n  <div />\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div\n  data-children=\"2\"\n>\n  <div />\n  <div />\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-single-node-only-child-in-parent/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div\n      data-children=\"1\"\n    >\n      <div />\n      <!--M_}1 #div/0 2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          children: [1]\n        }]),\n        \"__tests__/template.marko_0_children 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render ASYNC\n```html\n<html>\n  <head />\n  <body>\n    <div\n      data-children=\"2\"\n    >\n      <div />\n      <!--M_}1 #div/0 2-->\n      <div />\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          children: [1]\n        }]),\n        \"__tests__/template.marko_0_children 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div[data-children] \"1\" => \"2\"\nINSERT html/body/div/div1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-single-node-only-child-in-parent/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div\n  data-children=\"1\"\n>\n  <div />\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-single-node-only-child-in-parent/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div data-children=1><div></div><!--M_}1 #div/0 2--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{children:[1]}]),\"__tests__/template.marko_0_children 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div\n      data-children=\"1\"\n    >\n      <div />\n      <!--M_}1 #div/0 2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          children: [1]\n        }]),\n        \"__tests__/template.marko_0_children 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/div\nINSERT html/body/div/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-single-node-only-child-in-parent/template.marko",
    "content": "<let/children = [1]/>\n<div data-children=children.length>\n  <for of=children>\n    <div/>\n  </for>\n</div>\n\n<script>\n  if (children.length === 1) {\n    children = [...children, 2];\n  }\n</>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-single-node-only-child-in-parent/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{}, wait],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-single-text-node-with-text-before/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$for\": \"r\",\n      \"$$children__script\": \"a\",\n      \"$$children\": \"m\",\n      \"$$children_length\": \"c\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-single-text-node-with-text-before/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  data-children=\"1\"\n>\n  Before Child\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div\n  data-children=\"2\"\n>\n  Before ChildChild\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-single-text-node-with-text-before/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div\n  data-children=\"1\"\n>\n  Before Child\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render ASYNC\n```html\n<div\n  data-children=\"2\"\n>\n  Before ChildChild\n</div>\n```\n\n# Mutations\n```\nUPDATE div[data-children] \"1\" => \"2\"\nINSERT div/#text2\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-single-text-node-with-text-before/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 193 (min) 139 (brotli)\nconst $for = _._for_of(1, \"Child\", \"b\"),\n  $children__script = _._script(\"a0\", ($scope) => {\n    1 === $scope.c?.length && $children($scope, [...$scope.c, 2]);\n  }),\n  $children = _._let(2, ($scope) => {\n    ($children_length($scope, $scope.c?.length),\n      $for($scope, [$scope.c]),\n      $children__script($scope));\n  }),\n  $children_length = _._const(3, ($scope) =>\n    _._attr($scope.a, \"data-children\", $scope.d),\n  );\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-single-text-node-with-text-before/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div>Before <!></div>\";\nexport const $walks = /* get, next(1), over(1), replace, out(1) */\" Db%l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for = /* @__PURE__ */_._for_of(\"#text/1\", \"Child\", /* over(1) */\"b\");\nconst $children__script = _._script(\"__tests__/template.marko_0_children\", $scope => {\n  if ($scope.children?.length === 1) {\n    $children($scope, [...$scope.children, 2]);\n  }\n});\nconst $children = /* @__PURE__ */_._let(\"children/2\", $scope => {\n  $children_length($scope, $scope.children?.length);\n  $for($scope, [$scope.children]);\n  $children__script($scope);\n});\nconst $children_length = /* @__PURE__ */_._const(\"children_length\", $scope => _._attr($scope[\"#div/0\"], \"data-children\", $scope.children_length));\nexport function $setup($scope) {\n  $children($scope, [1]);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-single-text-node-with-text-before/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let children = [1];\n  _._html(`<div${_._attr(\"data-children\", children.length)}>Before `);\n  _._for_of(children, () => {\n    const $scope1_id = _._scope_id();\n    _._html(\"Child\");\n    _._scope($scope1_id, {}, \"__tests__/template.marko\", \"4:4\");\n  }, 0, $scope0_id, \"#text/1\");\n  _._html(`</div>${_._el_resume($scope0_id, \"#div/0\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_children\");\n  _._scope($scope0_id, {\n    children\n  }, \"__tests__/template.marko\", 0, {\n    children: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-single-text-node-with-text-before/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  data-children=\"1\"\n>\n  Before Child\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div\n  data-children=\"2\"\n>\n  Before ChildChild\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-single-text-node-with-text-before/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div\n      data-children=\"1\"\n    >\n      Before \n      <!--M_[-->\n      Child\n      <!--M_]1 #text/1 2-->\n    </div>\n    <!--M_*1 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          children: [1]\n        }]),\n        \"__tests__/template.marko_0_children 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text2\n```\n\n# Render ASYNC\n```html\n<html>\n  <head />\n  <body>\n    <div\n      data-children=\"2\"\n    >\n      Before \n      <!--M_[-->\n      ChildChild\n      <!--M_]1 #text/1 2-->\n    </div>\n    <!--M_*1 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          children: [1]\n        }]),\n        \"__tests__/template.marko_0_children 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div[data-children] \"1\" => \"2\"\nINSERT html/body/div/#text3\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-single-text-node-with-text-before/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div\n  data-children=\"1\"\n>\n  Before Child\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-single-text-node-with-text-before/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div data-children=1>Before <!--M_[-->Child<!--M_]1 #text/1 2--></div><!--M_*1 #div/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{children:[1]}]),\"__tests__/template.marko_0_children 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div\n      data-children=\"1\"\n    >\n      Before \n      <!--M_[-->\n      Child\n      <!--M_]1 #text/1 2-->\n    </div>\n    <!--M_*1 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          children: [1]\n        }]),\n        \"__tests__/template.marko_0_children 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text0\nINSERT html/body/div/#comment0\nINSERT html/body/div/#text1\nINSERT html/body/div/#comment1\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-single-text-node-with-text-before/template.marko",
    "content": "<let/children = [1]/>\n<div data-children=children.length>\n  Before\n  <for of=children>\n    Child\n  </for>\n</div>\n\n<script>\n  if (children.length === 1) {\n    children = [...children, 2];\n  }\n</>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-single-text-node-with-text-before/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{}, wait],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-static-value-with-closure/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$for_content__count\": \"r\",\n      \"$$count__script\": \"m\",\n      \"$$count\": \"_\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-static-value-with-closure/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n0-01-02-03-0\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n0-11-12-13-1\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n0-21-22-23-2\n<button>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n0-31-32-33-3\n<button>\n  3\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-static-value-with-closure/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n0-01-02-03-0\n<button>\n  0\n</button>\n```\n\n# Mutations\n```\nINSERT #comment, #text0, #text1, #text2, #text3, #text4, #text5, #text6, #text7, #text8, #text9, #text10, #text11, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n0-11-12-13-1\n<button>\n  1\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"0\" => \"1\"\nUPDATE #text2 \"0\" => \"1\"\nUPDATE #text5 \"0\" => \"1\"\nUPDATE #text8 \"0\" => \"1\"\nUPDATE #text11 \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n0-21-22-23-2\n<button>\n  2\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"1\" => \"2\"\nUPDATE #text2 \"1\" => \"2\"\nUPDATE #text5 \"1\" => \"2\"\nUPDATE #text8 \"1\" => \"2\"\nUPDATE #text11 \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n0-31-32-33-3\n<button>\n  3\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"2\" => \"3\"\nUPDATE #text2 \"2\" => \"3\"\nUPDATE #text5 \"2\" => \"3\"\nUPDATE #text8 \"2\" => \"3\"\nUPDATE #text11 \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-static-value-with-closure/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 159 (min) 117 (brotli)\nconst $for_content__count = _._for_closure(0, ($scope) =>\n    _._text($scope.b, $scope._.d),\n  ),\n  $count__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.b, \"click\", function () {\n      $count($scope, $scope.d + 1);\n    }),\n  ),\n  $count = _._let(3, ($scope) => {\n    (_._text($scope.c, $scope.d),\n      $for_content__count($scope),\n      $count__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-static-value-with-closure/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><button> </button>\";\nexport const $walks = /* over(1), replace, over(1), get, next(1), get, out(1) */\"b%b D l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for_content__count = /* @__PURE__ */_._for_closure(\"#text/0\", $scope => _._text($scope[\"#text/1\"], $scope._.count));\nconst $for_content__setup = $scope => {\n  $for_content__count._($scope);\n  _._text($scope[\"#text/0\"], $scope[\"#LoopKey\"]);\n};\nconst $count__script = _._script(\"__tests__/template.marko_0_count\", $scope => _._on($scope[\"#button/1\"], \"click\", function () {\n  $count($scope, $scope.count + 1);\n}));\nconst $count = /* @__PURE__ */_._let(\"count/3\", $scope => {\n  _._text($scope[\"#text/2\"], $scope.count);\n  $for_content__count($scope);\n  $count__script($scope);\n});\nconst $for = /* @__PURE__ */_._for_to(\"#text/0\", \"<!>-<!>\", /* replace, over(2), replace, over(1) */\"%c%b\", $for_content__setup);\nexport function $setup($scope) {\n  $count($scope, 0);\n  $for($scope, [3, 0, 1]);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-static-value-with-closure/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let count = 0;\n  _._for_to(3, 0, 1, index => {\n    const $scope1_id = _._scope_id();\n    _._html(`${_._escape(index)}-<!>${_._escape(count)}${_._el_resume($scope1_id, \"#text/1\")}`);\n    _._scope($scope1_id, {\n      _: _._scope_with_id($scope0_id)\n    }, \"__tests__/template.marko\", \"3:2\");\n  }, 0, $scope0_id, \"#text/0\", /* count */1, 0, 0);\n  _._html(`<button>${_._escape(count)}${_._el_resume($scope0_id, \"#text/2\")}</button>${_._el_resume($scope0_id, \"#button/1\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_count\");\n  _._scope($scope0_id, {\n    count\n  }, \"__tests__/template.marko\", 0, {\n    count: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-static-value-with-closure/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n0-01-02-03-0\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n0-11-12-13-1\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n0-21-22-23-2\n<button>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n0-31-32-33-3\n<button>\n  3\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-static-value-with-closure/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    0-\n    <!---->\n    0\n    <!--M_*2 #text/1-->\n    1-\n    <!---->\n    0\n    <!--M_*3 #text/1-->\n    2-\n    <!---->\n    0\n    <!--M_*4 #text/1-->\n    3-\n    <!---->\n    0\n    <!--M_*5 #text/1-->\n    <button>\n      0\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.f = [0, _.a = {\n          \"BranchScopes:#text/0\": [_.b = {}, _.c = {}, _.d = {}, _\n            .e = {}],\n          count: 0\n        }, _.b, _.c, _.d, _.e], _.b._ = _.c._ = _.d._ = _.e._ = _.a, _.f),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    0-\n    <!---->\n    1\n    <!--M_*2 #text/1-->\n    1-\n    <!---->\n    1\n    <!--M_*3 #text/1-->\n    2-\n    <!---->\n    1\n    <!--M_*4 #text/1-->\n    3-\n    <!---->\n    1\n    <!--M_*5 #text/1-->\n    <button>\n      1\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.f = [0, _.a = {\n          \"BranchScopes:#text/0\": [_.b = {}, _.c = {}, _.d = {}, _\n            .e = {}],\n          count: 0\n        }, _.b, _.c, _.d, _.e], _.b._ = _.c._ = _.d._ = _.e._ = _.a, _.f),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"0\" => \"1\"\nUPDATE html/body/#text1 \"0\" => \"1\"\nUPDATE html/body/#text3 \"0\" => \"1\"\nUPDATE html/body/#text5 \"0\" => \"1\"\nUPDATE html/body/#text7 \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    0-\n    <!---->\n    2\n    <!--M_*2 #text/1-->\n    1-\n    <!---->\n    2\n    <!--M_*3 #text/1-->\n    2-\n    <!---->\n    2\n    <!--M_*4 #text/1-->\n    3-\n    <!---->\n    2\n    <!--M_*5 #text/1-->\n    <button>\n      2\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.f = [0, _.a = {\n          \"BranchScopes:#text/0\": [_.b = {}, _.c = {}, _.d = {}, _\n            .e = {}],\n          count: 0\n        }, _.b, _.c, _.d, _.e], _.b._ = _.c._ = _.d._ = _.e._ = _.a, _.f),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"1\" => \"2\"\nUPDATE html/body/#text1 \"1\" => \"2\"\nUPDATE html/body/#text3 \"1\" => \"2\"\nUPDATE html/body/#text5 \"1\" => \"2\"\nUPDATE html/body/#text7 \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    0-\n    <!---->\n    3\n    <!--M_*2 #text/1-->\n    1-\n    <!---->\n    3\n    <!--M_*3 #text/1-->\n    2-\n    <!---->\n    3\n    <!--M_*4 #text/1-->\n    3-\n    <!---->\n    3\n    <!--M_*5 #text/1-->\n    <button>\n      3\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.f = [0, _.a = {\n          \"BranchScopes:#text/0\": [_.b = {}, _.c = {}, _.d = {}, _\n            .e = {}],\n          count: 0\n        }, _.b, _.c, _.d, _.e], _.b._ = _.c._ = _.d._ = _.e._ = _.a, _.f),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"2\" => \"3\"\nUPDATE html/body/#text1 \"2\" => \"3\"\nUPDATE html/body/#text3 \"2\" => \"3\"\nUPDATE html/body/#text5 \"2\" => \"3\"\nUPDATE html/body/#text7 \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-static-value-with-closure/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n0-01-02-03-0\n<button>\n  0\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-static-value-with-closure/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  0-<!>0<!--M_*2 #text/1-->1-<!>0<!--M_*3 #text/1-->2-<!>0<!--M_*4 #text/1-->3-<!>0<!--M_*5 #text/1--><button>0<!--M_*1 #text/2--></button><!--M_*1 #button/1--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.f=[0,_.a={\"BranchScopes:#text/0\":[_.b={},_.c={},_.d={},_.e={}],count:0},_.b,_.c,_.d,_.e],_.b._=_.c._=_.d._=_.e._=_.a,_.f),\"__tests__/template.marko_0_count 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    0-\n    <!---->\n    0\n    <!--M_*2 #text/1-->\n    1-\n    <!---->\n    0\n    <!--M_*3 #text/1-->\n    2-\n    <!---->\n    0\n    <!--M_*4 #text/1-->\n    3-\n    <!---->\n    0\n    <!--M_*5 #text/1-->\n    <button>\n      0\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.f = [0, _.a = {\n          \"BranchScopes:#text/0\": [_.b = {}, _.c = {}, _.d = {}, _\n            .e = {}],\n          count: 0\n        }, _.b, _.c, _.d, _.e], _.b._ = _.c._ = _.d._ = _.e._ = _.a, _.f),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text0\nINSERT html/body/#comment0\nINSERT html/body/#text1\nINSERT html/body/#comment1\nINSERT html/body/#text2\nINSERT html/body/#comment2\nINSERT html/body/#text3\nINSERT html/body/#comment3\nINSERT html/body/#text4\nINSERT html/body/#comment4\nINSERT html/body/#text5\nINSERT html/body/#comment5\nINSERT html/body/#text6\nINSERT html/body/#comment6\nINSERT html/body/#text7\nINSERT html/body/#comment7\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment8\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-static-value-with-closure/template.marko",
    "content": "<let/count=0/>\n\n<for|index| to=3>\n  ${index}-${count}\n</for>\n\n<button onClick() { count++ }>${count}</>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-static-value-with-closure/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-with-state/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$for_content2__setup\": \"m\",\n      \"$$for_content2__$params\": \"r\",\n      \"$$for2\": \"a\",\n      \"$$arrB\": \"i\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-with-state/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  0: 1\n</div>\n<div>\n  1: 2\n</div>\n<div>\n  2: 3\n</div>\n<div>\n  0: 1\n</div>\n<div>\n  1: 2\n</div>\n<div>\n  2: 3\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div>\n  0: 1\n</div>\n<div>\n  1: 2\n</div>\n<div>\n  2: 3\n</div>\n<div>\n  0: 1\n</div>\n<div>\n  1: 2\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-with-state/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<div>\n  0: 1\n</div>\n<div>\n  1: 2\n</div>\n<div>\n  2: 3\n</div>\n<div>\n  0: 1\n</div>\n<div>\n  1: 2\n</div>\n<div>\n  2: 3\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, div0, div1, div2, div3, div4, div5, #comment1\n```\n\n# Render ASYNC\n```html\n<!---->\n<div>\n  0: 1\n</div>\n<div>\n  1: 2\n</div>\n<div>\n  2: 3\n</div>\n<div>\n  0: 1\n</div>\n<div>\n  1: 2\n</div>\n<!---->\n```\n\n# Mutations\n```\nREMOVE div after div4\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-with-state/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 178 (min) 150 (brotli)\nconst $for_content2__setup = ($scope) => _._text($scope.a, $scope.M),\n  $for_content2__$params = ($scope, $params3) =>\n    (($scope, val) => _._text($scope.b, val))($scope, $params3[0]),\n  $for2 = _._for_of(\n    1,\n    \"<div><!>: <!></div>\",\n    \"D%c%l\",\n    $for_content2__setup,\n    $for_content2__$params,\n  ),\n  $arrB = _._let(3, ($scope) => $for2($scope, [$scope.d]));\n(_._script(\"a0\", ($scope) => $arrB($scope, [1, 2])), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-with-state/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><!><!>\";\nexport const $walks = /* over(1), replace, over(1), replace, over(2) */\"b%b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for_content2__setup = $scope => _._text($scope[\"#text/0\"], $scope[\"#LoopKey\"]);\nconst $for_content2__val = ($scope, val) => _._text($scope[\"#text/1\"], val);\nconst $for_content2__$params = ($scope, $params3) => $for_content2__val($scope, $params3[0]);\nconst $for_content__setup = $scope => _._text($scope[\"#text/0\"], $scope[\"#LoopKey\"]);\nconst $for_content__val = ($scope, val) => _._text($scope[\"#text/1\"], val);\nconst $for_content__$params = ($scope, $params2) => $for_content__val($scope, $params2[0]);\nconst $for = /* @__PURE__ */_._for_of(\"#text/0\", \"<div><!>: <!></div>\", /* next(1), replace, over(2), replace, out(1) */\"D%c%l\", $for_content__setup, $for_content__$params);\nconst $arrA = ($scope, arrA) => $for($scope, [arrA]);\nconst $for2 = /* @__PURE__ */_._for_of(\"#text/1\", \"<div><!>: <!></div>\", /* next(1), replace, over(2), replace, out(1) */\"D%c%l\", $for_content2__setup, $for_content2__$params);\nconst $arrB = /* @__PURE__ */_._let(\"arrB/3\", $scope => $for2($scope, [$scope.arrB]));\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => $arrB($scope, [1, 2]));\nexport function $setup($scope) {\n  $arrA($scope, [1, 2, 3]);\n  $arrB($scope, [1, 2, 3]);\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-with-state/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const arrA = [1, 2, 3];\n  _.forOf(arrA, (val, i) => {\n    const $scope1_id = _._scope_id();\n    _._html(`<div>${_._escape(i)}: ${_._escape(val)}</div>`);\n  });\n  let arrB = [1, 2, 3];\n  _._for_of(arrB, (val, i) => {\n    const $scope2_id = _._scope_id();\n    _._html(`<div>${_._escape(i)}: <!>${_._escape(val)}${_._el_resume($scope2_id, \"#text/1\")}</div>`);\n    _._scope($scope2_id, {}, \"__tests__/template.marko\", \"9:2\");\n  }, 0, $scope0_id, \"#text/1\", /* arrB */1, /* arrB */1, /* arrB */1, 0, 1);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-with-state/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  0: 1\n</div>\n<div>\n  1: 2\n</div>\n<div>\n  2: 3\n</div>\n<div>\n  0: 1\n</div>\n<div>\n  1: 2\n</div>\n<div>\n  2: 3\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div>\n  0: 1\n</div>\n<div>\n  1: 2\n</div>\n<div>\n  2: 3\n</div>\n<div>\n  0: 1\n</div>\n<div>\n  1: 2\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-with-state/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      0: 1\n    </div>\n    <div>\n      1: 2\n    </div>\n    <div>\n      2: 3\n    </div>\n    <div>\n      0: \n      <!---->\n      1\n      <!--M_*5 #text/1-->\n    </div>\n    <div>\n      1: \n      <!---->\n      2\n      <!--M_*6 #text/1-->\n    </div>\n    <div>\n      2: \n      <!---->\n      3\n      <!--M_*7 #text/1-->\n    </div>\n    <!--M_|1 #text/1 7 6 5-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render ASYNC\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      0: 1\n    </div>\n    <div>\n      1: 2\n    </div>\n    <div>\n      2: 3\n    </div>\n    <div>\n      0: \n      <!---->\n      1\n      <!--M_*5 #text/1-->\n    </div>\n    <div>\n      1: \n      <!---->\n      2\n      <!--M_*6 #text/1-->\n    </div>\n    <!--M_|1 #text/1 7 6 5-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE div after html/body/div4\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-with-state/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  0: 1\n</div>\n<div>\n  1: 2\n</div>\n<div>\n  2: 3\n</div>\n<div>\n  0: 1\n</div>\n<div>\n  1: 2\n</div>\n<div>\n  2: 3\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-with-state/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>0: 1</div><div>1: 2</div><div>2: 3</div><div>0: <!>1<!--M_*5 #text/1--></div><div>1: <!>2<!--M_*6 #text/1--></div><div>2: <!>3<!--M_*7 #text/1--></div><!--M_|1 #text/1 7 6 5--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0]),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      0: 1\n    </div>\n    <div>\n      1: 2\n    </div>\n    <div>\n      2: 3\n    </div>\n    <div>\n      0: \n      <!---->\n      1\n      <!--M_*5 #text/1-->\n    </div>\n    <div>\n      1: \n      <!---->\n      2\n      <!--M_*6 #text/1-->\n    </div>\n    <div>\n      2: \n      <!---->\n      3\n      <!--M_*7 #text/1-->\n    </div>\n    <!--M_|1 #text/1 7 6 5-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/div0/#text\nINSERT html/body/div1\nINSERT html/body/div1/#text\nINSERT html/body/div2\nINSERT html/body/div2/#text\nINSERT html/body/div3\nINSERT html/body/div3/#text0\nINSERT html/body/div3/#comment0\nINSERT html/body/div3/#text1\nINSERT html/body/div3/#comment1\nINSERT html/body/div4\nINSERT html/body/div4/#text0\nINSERT html/body/div4/#comment0\nINSERT html/body/div4/#text1\nINSERT html/body/div4/#comment1\nINSERT html/body/div5\nINSERT html/body/div5/#text0\nINSERT html/body/div5/#comment0\nINSERT html/body/div5/#text1\nINSERT html/body/div5/#comment1\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-with-state/template.marko",
    "content": "<const/arrA=[1,2,3]/>\n\n<for|val, i| of=arrA>\n  <div>${i}: ${val}</div>\n</for>\n\n<let/arrB=[1,2,3]/>\n\n<for|val, i| of=arrB>\n  <div>${i}: ${val}</div>\n</for>\n\n<script>\n  arrB = [1, 2];\n</script>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/for-tag-with-state/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{}, wait],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-references-normalize/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"r\",\n      \"$init\": \"t\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-references-normalize/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  bar\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-references-normalize/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  bar\n</div>\n```\n\n# Mutations\n```\nINSERT div\nINSERT div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-references-normalize/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 97 (min) 81 (brotli)\n(_._script(\"a1\", ($scope) => ($scope.a.textContent = $scope.c.bar())),\n  _._resume(\"a0\", function ($scope) {\n    return () => $scope.b?.bar;\n  }),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-references-normalize/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* get, over(1) */\" b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $baz2__script = _._script(\"__tests__/template.marko_0_baz\", $scope => (_._el_read($scope[\"#div/0\"]).textContent = $scope.baz.bar()));\nconst $baz2 = /* @__PURE__ */_._const(\"baz\", $baz2__script);\nconst $foo = /* @__PURE__ */_._let(\"foo/1\", $scope => $baz2($scope, {\n  foo: $scope.foo,\n  bar: $baz($scope)\n}));\nexport function $setup($scope) {\n  $foo($scope, {\n    bar: \"bar\"\n  });\n}\nfunction $baz($scope) {\n  return () => $scope.foo?.bar;\n}\n_._resume(\"__tests__/template.marko_0/baz\", $baz);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-references-normalize/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let foo = {\n    bar: \"bar\"\n  };\n  const baz = {\n    foo,\n    bar: _._resume(() => foo.bar, \"__tests__/template.marko_0/baz\", $scope0_id)\n  };\n  _._html(`<div></div>${_._el_resume($scope0_id, \"#div/0\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_baz\");\n  _._scope($scope0_id, {\n    foo,\n    baz\n  }, \"__tests__/template.marko\", 0, {\n    foo: \"1:5\",\n    baz: \"2:7\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-references-normalize/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  bar\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-references-normalize/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      bar\n    </div>\n    <!--M_*1 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.d = {\n          foo: _.a = {\n            bar: \"bar\"\n          },\n          baz: _.b = {\n            foo: _.a\n          }\n        }], _.b.bar = _._[\n          \"__tests__/template.marko_0/baz\"\n          ](_.d), _.c),\n        \"__tests__/template.marko_0_baz 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-references-normalize/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-references-normalize/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div></div><!--M_*1 #div/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.d={foo:_.a={bar:\"bar\"},baz:_.b={foo:_.a}}],_.b.bar=_._[\"__tests__/template.marko_0/baz\"](_.d),_.c),\"__tests__/template.marko_0_baz 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*1 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.d = {\n          foo: _.a = {\n            bar: \"bar\"\n          },\n          baz: _.b = {\n            foo: _.a\n          }\n        }], _.b.bar = _._[\n          \"__tests__/template.marko_0/baz\"\n          ](_.d), _.c),\n        \"__tests__/template.marko_0_baz 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-references-normalize/template.marko",
    "content": "let/foo={ bar: \"bar\" }\nconst/baz={ foo, bar: () => foo.bar }\ndiv/el\nscript --\n  el().textContent = baz.bar();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-references-normalize/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{}, wait],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-references-optional-member-normalize/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-references-optional-member-normalize/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  missing a\n</div>\n<div>\n  missing b\n</div>\n<div>\n  missing c\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-references-optional-member-normalize/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  missing a\n</div>\n<div>\n  missing b\n</div>\n<div>\n  missing c\n</div>\n```\n\n# Mutations\n```\nINSERT div0, div1, div2\nINSERT div2/#text\nINSERT div0/#text\nINSERT div1/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-references-optional-member-normalize/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 326 (min) 129 (brotli)\n(_._script(\n  \"a3\",\n  ($scope) => ($scope.a.textContent = $scope.f.bar() || \"missing a\"),\n),\n  _._script(\n    \"a4\",\n    ($scope) => ($scope.b.textContent = $scope.g.baz() || \"missing b\"),\n  ),\n  _._script(\n    \"a5\",\n    ($scope) => ($scope.c.textContent = $scope.h.baz() || \"missing c\"),\n  ),\n  _._resume(\"a0\", function ($scope) {\n    return () => $scope.d?.bar;\n  }),\n  _._resume(\"a1\", function ($scope) {\n    return () => $scope.d?.bar.baz;\n  }),\n  _._resume(\"a2\", function ($scope) {\n    return () => $scope.e?.baz;\n  }),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-references-optional-member-normalize/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div></div><div></div><div></div>\";\nexport const $walks = /* get, over(1), get, over(1), get, over(1) */\" b b b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $a2__script = _._script(\"__tests__/template.marko_0_a\", $scope => (_._el_read($scope[\"#div/0\"]).textContent = $scope.a.bar() || \"missing a\"));\nconst $a2 = /* @__PURE__ */_._const(\"a\", $a2__script);\nconst $b2__script = _._script(\"__tests__/template.marko_0_b\", $scope => (_._el_read($scope[\"#div/1\"]).textContent = $scope.b.baz() || \"missing b\"));\nconst $b2 = /* @__PURE__ */_._const(\"b\", $b2__script);\nconst $foo = /* @__PURE__ */_._let(\"foo/3\", $scope => {\n  $foo_bar($scope, $scope.foo?.bar);\n  $a2($scope, {\n    foo: $scope.foo,\n    bar: $a($scope)\n  });\n  $b2($scope, {\n    foo: $scope.foo,\n    baz: $b($scope)\n  });\n});\nconst $c2__script = _._script(\"__tests__/template.marko_0_c\", $scope => (_._el_read($scope[\"#div/2\"]).textContent = $scope.c.baz() || \"missing c\"));\nconst $c2 = /* @__PURE__ */_._const(\"c\", $c2__script);\nconst $foo_bar = /* @__PURE__ */_._const(\"foo_bar\", $scope => $c2($scope, {\n  foo: $scope.foo_bar,\n  baz: $c($scope)\n}));\nexport function $setup($scope) {\n  $foo($scope, undefined);\n}\nfunction $a($scope) {\n  return () => $scope.foo?.bar;\n}\nfunction $b($scope) {\n  return () => $scope.foo?.bar.baz;\n}\nfunction $c($scope) {\n  return () => $scope.foo_bar?.baz;\n}\n_._resume(\"__tests__/template.marko_0/a\", $a);\n_._resume(\"__tests__/template.marko_0/b\", $b);\n_._resume(\"__tests__/template.marko_0/c\", $c);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-references-optional-member-normalize/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let foo = undefined;\n  const a = {\n    foo,\n    bar: _._resume(() => foo?.bar, \"__tests__/template.marko_0/a\", $scope0_id)\n  };\n  const b = {\n    foo,\n    baz: _._resume(() => foo?.bar.baz, \"__tests__/template.marko_0/b\", $scope0_id)\n  };\n  const c = {\n    foo: foo?.bar,\n    baz: _._resume(() => foo?.bar.baz, \"__tests__/template.marko_0/c\", $scope0_id)\n  };\n  _._html(`<div></div>${_._el_resume($scope0_id, \"#div/0\")}<div></div>${_._el_resume($scope0_id, \"#div/1\")}<div></div>${_._el_resume($scope0_id, \"#div/2\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_c\");\n  _._script($scope0_id, \"__tests__/template.marko_0_b\");\n  _._script($scope0_id, \"__tests__/template.marko_0_a\");\n  _._scope($scope0_id, {\n    foo,\n    foo_bar: foo?.bar,\n    a,\n    b,\n    c\n  }, \"__tests__/template.marko\", 0, {\n    foo: \"1:5\",\n    foo_bar: [\"foo.bar\", \"1:5\"],\n    a: \"2:7\",\n    b: \"7:7\",\n    c: \"12:7\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-references-optional-member-normalize/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  missing a\n</div>\n<div>\n  missing b\n</div>\n<div>\n  missing c\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-references-optional-member-normalize/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      missing a\n    </div>\n    <!--M_*1 #div/0-->\n    <div>\n      missing b\n    </div>\n    <!--M_*1 #div/1-->\n    <div>\n      missing c\n    </div>\n    <!--M_*1 #div/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.e = {\n          a: _.a = {},\n          b: _.b = {},\n          c: _.c = {}\n        }], _.a.bar = _._[\n          \"__tests__/template.marko_0/a\"\n          ](_.e), _.b.baz = _._[\n          \"__tests__/template.marko_0/b\"\n          ](_.e), _.c.baz = _._[\n          \"__tests__/template.marko_0/c\"\n          ](_.e), _.d),\n        \"__tests__/template.marko_0_c 1 __tests__/template.marko_0_b 1 __tests__/template.marko_0_a 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div2/#text\nINSERT html/body/div1/#text\nINSERT html/body/div0/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-references-optional-member-normalize/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n<div />\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-references-optional-member-normalize/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div></div><!--M_*1 #div/0--><div></div><!--M_*1 #div/1--><div></div><!--M_*1 #div/2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.d=[0,_.e={a:_.a={},b:_.b={},c:_.c={}}],_.a.bar=_._[\"__tests__/template.marko_0/a\"](_.e),_.b.baz=_._[\"__tests__/template.marko_0/b\"](_.e),_.c.baz=_._[\"__tests__/template.marko_0/c\"](_.e),_.d),\"__tests__/template.marko_0_c 1 __tests__/template.marko_0_b 1 __tests__/template.marko_0_a 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*1 #div/0-->\n    <div />\n    <!--M_*1 #div/1-->\n    <div />\n    <!--M_*1 #div/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.e = {\n          a: _.a = {},\n          b: _.b = {},\n          c: _.c = {}\n        }], _.a.bar = _._[\n          \"__tests__/template.marko_0/a\"\n          ](_.e), _.b.baz = _._[\n          \"__tests__/template.marko_0/b\"\n          ](_.e), _.c.baz = _._[\n          \"__tests__/template.marko_0/c\"\n          ](_.e), _.d),\n        \"__tests__/template.marko_0_c 1 __tests__/template.marko_0_b 1 __tests__/template.marko_0_a 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/#comment0\nINSERT html/body/div1\nINSERT html/body/#comment1\nINSERT html/body/div2\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-references-optional-member-normalize/template.marko",
    "content": "let/foo=undefined\nconst/a={ foo, bar: () => foo?.bar }\ndiv/elA\nscript --\n  elA().textContent = a.bar() || \"missing a\"\n\nconst/b={ foo, baz: () => foo?.bar.baz }\ndiv/elB\nscript --\n  elB().textContent = b.baz() || \"missing b\";\n\nconst/c={ foo: foo?.bar, baz: () => foo?.bar.baz }\ndiv/elC\nscript --\n  elC().textContent = c.baz() || \"missing c\";\n\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-references-optional-member-normalize/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{}, wait],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-registration/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$updateText\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-registration/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  3\n</div>\n<div>\n  4\n</div>\n<button>\n  before\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  3\n</div>\n<div>\n  4\n</div>\n<button>\n  after\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-registration/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  3\n</div>\n<div>\n  4\n</div>\n<button>\n  before\n</button>\n```\n\n# Mutations\n```\nINSERT div0, div1, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  3\n</div>\n<div>\n  4\n</div>\n<button>\n  after\n</button>\n```\n\n# Mutations\n```\nREMOVE #text in button\nINSERT button/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-registration/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 87 (min) 77 (brotli)\nfunction updateText(ev) {\n  ev.target.textContent = \"after\";\n}\n(_._script(\"a0\", ($scope) => _._on($scope.c, \"click\", updateText)), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-registration/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div> </div><div> </div><button>before</button>\";\nexport const $walks = /* next(1), get, out(1), next(1), get, out(1), get, over(1) */\"D lD l b\";\nfunction sum(a, b) {\n  return a + b;\n}\nconst add1 = v => (0, sum)(1, v);\nfunction updateText(ev) {\n  ev.target.textContent = \"after\";\n}\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => _._on($scope[\"#button/2\"], \"click\", updateText));\nexport function $setup($scope) {\n  _._text($scope[\"#text/0\"], sum(1, 2));\n  _._text($scope[\"#text/1\"], add1(3));\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-registration/__snapshots__/html.expected/template.js",
    "content": "function sum(a, b) {\n  return a + b;\n}\nconst add1 = v => (0, sum)(1, v);\nfunction updateText(ev) {\n  ev.target.textContent = \"after\";\n}\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div>${_._escape(sum(1, 2))}</div><div>${_._escape(add1(3))}</div><button>before</button>${_._el_resume($scope0_id, \"#button/2\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-registration/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  3\n</div>\n<div>\n  4\n</div>\n<button>\n  before\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  3\n</div>\n<div>\n  4\n</div>\n<button>\n  after\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-registration/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      3\n    </div>\n    <div>\n      4\n    </div>\n    <button>\n      before\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      3\n    </div>\n    <div>\n      4\n    </div>\n    <button>\n      after\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #text in html/body/button\nINSERT html/body/button/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-registration/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  3\n</div>\n<div>\n  4\n</div>\n<button>\n  before\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-registration/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>3</div><div>4</div><button>before</button><!--M_*1 #button/2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0]),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      3\n    </div>\n    <div>\n      4\n    </div>\n    <button>\n      before\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/div0/#text\nINSERT html/body/div1\nINSERT html/body/div1/#text\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-registration/template.marko",
    "content": "static function sum(a, b) {\n  return a + b;\n}\n\nstatic const add1 = v => (0, sum)(1, v);\n\nstatic function updateText(ev) {\n  ev.target.textContent = \"after\";\n}\n\ndiv -- ${sum(1, 2)}\ndiv -- ${add1(3)}\n\nbutton onClick=updateText -- before\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-registration/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-tag-var-default-registration/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  before\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  after\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-tag-var-default-registration/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  before\n</button>\n```\n\n# Mutations\n```\nINSERT button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  after\n</button>\n```\n\n# Mutations\n```\nREMOVE #text in button\nINSERT button/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-tag-var-default-registration/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button>before</button>\";\nexport const $walks = /* get, over(1) */\" b\";\nconst updateText = $updateText;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $pattern2 = ($scope, $pattern) => $onClick2($scope, $pattern.onClick);\nconst $onClick3__script = _._script(\"__tests__/template.marko_0_onClick\", $scope => _._on($scope[\"#button/0\"], \"click\", $scope.onClick));\nconst $onClick3 = /* @__PURE__ */_._const(\"onClick\", $onClick3__script);\nconst $onClick2 = ($scope, $onClick) => $onClick3($scope, void 0 !== $onClick ? $onClick : updateText);\nexport function $setup($scope) {\n  $pattern2($scope, {});\n}\nfunction $updateText(ev) {\n  ev.target.textContent = \"after\";\n}\n_._resume(\"__tests__/template.marko_0/updateText\", $updateText);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-tag-var-default-registration/__snapshots__/html.expected/template.js",
    "content": "function updateText(ev) {\n  ev.target.textContent = \"after\";\n}\n_._resume(updateText, \"__tests__/template.marko_0/updateText\");\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    onClick: $onClick\n  } = {};\n  const onClick = void 0 !== $onClick ? $onClick : updateText;\n  _._html(`<button>before</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_onClick\");\n  _._scope($scope0_id, {\n    onClick\n  }, \"__tests__/template.marko\", 0, {\n    onClick: \"6:3\"\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-tag-var-default-registration/template.marko",
    "content": "static function updateText(ev) {\n  ev.target.textContent = \"after\";\n}\n\nconst/{\n  onClick = updateText\n} = {}\n\nbutton onClick=onClick -- before\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-tag-var-default-registration/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n  skip_ssr: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-tag-var-registration/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-tag-var-registration/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  3\n</div>\n<button>\n  before\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  3\n</div>\n<button>\n  after\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-tag-var-registration/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  3\n</div>\n<button>\n  before\n</button>\n```\n\n# Mutations\n```\nINSERT div, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  3\n</div>\n<button>\n  after\n</button>\n```\n\n# Mutations\n```\nREMOVE #text in button\nINSERT button/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-tag-var-registration/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 104 (min) 91 (brotli)\n(_._script(\"a1\", ($scope) => _._on($scope.b, \"click\", $scope.d)),\n  _._resume(\"a0\", function (ev) {\n    ev.target.textContent = \"after\";\n  }),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-tag-var-registration/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div> </div><button>before</button>\";\nexport const $walks = /* next(1), get, out(1), get, over(1) */\"D l b\";\nconst updateText = $updateText;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $sum = ($scope, sum) => _._text($scope[\"#text/0\"], sum(1, 2));\nconst $onClick__script = _._script(\"__tests__/template.marko_0_onClick\", $scope => _._on($scope[\"#button/1\"], \"click\", $scope.onClick));\nconst $onClick = /* @__PURE__ */_._const(\"onClick\", $onClick__script);\nexport function $setup($scope) {\n  $sum($scope, function (a, b) {\n    return a + b;\n  });\n  $onClick($scope, updateText);\n}\nfunction $updateText(ev) {\n  ev.target.textContent = \"after\";\n}\n_._resume(\"__tests__/template.marko_0/updateText\", $updateText);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-tag-var-registration/__snapshots__/html.expected/template.js",
    "content": "function updateText(ev) {\n  ev.target.textContent = \"after\";\n}\n_._resume(updateText, \"__tests__/template.marko_0/updateText\");\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const sum = function (a, b) {\n    return a + b;\n  };\n  const onClick = updateText;\n  _._html(`<div>${_._escape(sum(1, 2))}</div><button>before</button>${_._el_resume($scope0_id, \"#button/1\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_onClick\");\n  _._scope($scope0_id, {\n    onClick\n  }, \"__tests__/template.marko\", 0, {\n    onClick: \"10:7\"\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-tag-var-registration/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  3\n</div>\n<button>\n  before\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  3\n</div>\n<button>\n  after\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-tag-var-registration/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      3\n    </div>\n    <button>\n      before\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          onClick: _._[\n            \"__tests__/template.marko_0/updateText\"\n            ]\n        }]),\n        \"__tests__/template.marko_0_onClick 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      3\n    </div>\n    <button>\n      after\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          onClick: _._[\n            \"__tests__/template.marko_0/updateText\"\n            ]\n        }]),\n        \"__tests__/template.marko_0_onClick 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #text in html/body/button\nINSERT html/body/button/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-tag-var-registration/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  3\n</div>\n<button>\n  before\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-tag-var-registration/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>3</div><button>before</button><!--M_*1 #button/1--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{onClick:_._[\"__tests__/template.marko_0/updateText\"]}]),\"__tests__/template.marko_0_onClick 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      3\n    </div>\n    <button>\n      before\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          onClick: _._[\n            \"__tests__/template.marko_0/updateText\"\n            ]\n        }]),\n        \"__tests__/template.marko_0_onClick 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-tag-var-registration/template.marko",
    "content": "static function updateText(ev) {\n  ev.target.textContent = \"after\";\n}\nconst/sum(a, b) {\n  return a + b;\n}\n\ndiv -- ${sum(1, 2)}\n\nconst/onClick=updateText\nbutton onClick=onClick -- before\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/function-tag-var-registration/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/getter-on-single-node-only-child/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"a\",\n      \"$$for_content__$params\": \"o\",\n      \"$$ul_getter\": \"c\",\n      \"$$for\": \"i\",\n      \"$$items__script\": \"r\",\n      \"$$items\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/getter-on-single-node-only-child/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button />\n<ul\n  class=\"attached\"\n>\n  <li>\n    0\n  </li>\n  <li>\n    1\n  </li>\n</ul>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<ul\n  class=\"attached\"\n>\n  <li>\n    0\n  </li>\n  <li>\n    1\n  </li>\n  <li>\n    2\n  </li>\n</ul>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<ul\n  class=\"attached\"\n>\n  <li>\n    0\n  </li>\n  <li>\n    1\n  </li>\n  <li>\n    2\n  </li>\n  <li>\n    3\n  </li>\n</ul>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<ul\n  class=\"attached\"\n>\n  <li>\n    0\n  </li>\n  <li>\n    1\n  </li>\n  <li>\n    2\n  </li>\n  <li>\n    3\n  </li>\n  <li>\n    4\n  </li>\n</ul>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/getter-on-single-node-only-child/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button />\n<ul\n  class=\"attached\"\n>\n  <li>\n    0\n  </li>\n  <li>\n    1\n  </li>\n</ul>\n```\n\n# Mutations\n```\nINSERT button, ul\nUPDATE ul[class] null => \"attached\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<ul\n  class=\"attached\"\n>\n  <li>\n    0\n  </li>\n  <li>\n    1\n  </li>\n  <li>\n    2\n  </li>\n</ul>\n```\n\n# Mutations\n```\nINSERT ul/li2\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<ul\n  class=\"attached\"\n>\n  <li>\n    0\n  </li>\n  <li>\n    1\n  </li>\n  <li>\n    2\n  </li>\n  <li>\n    3\n  </li>\n</ul>\n```\n\n# Mutations\n```\nINSERT ul/li3\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<ul\n  class=\"attached\"\n>\n  <li>\n    0\n  </li>\n  <li>\n    1\n  </li>\n  <li>\n    2\n  </li>\n  <li>\n    3\n  </li>\n  <li>\n    4\n  </li>\n</ul>\n```\n\n# Mutations\n```\nINSERT ul/li4\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/getter-on-single-node-only-child/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 270 (min) 184 (brotli)\nconst $for_content__$params = ($scope, $params2) =>\n    (($scope, item) => _._text($scope.a, item))($scope, $params2[0]),\n  $ul_getter = _._el(\"a0\", 1),\n  $for = _._for_of(1, \"<li> </li>\", \"D l\", 0, $for_content__$params),\n  $items__script = _._script(\"a1\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $items($scope, [...$scope.c, $scope.c?.length]);\n    }),\n  ),\n  $items = _._let(2, ($scope) => {\n    ($for($scope, [$scope.c]), $items__script($scope));\n  });\n(_._script(\"a2\", ($scope) => {\n  $ul_getter($scope)().classList.add(\"attached\");\n}),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/getter-on-single-node-only-child/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button></button><ul></ul>\";\nexport const $walks = /* get, over(1), get, over(1) */\" b b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for_content__item = ($scope, item) => _._text($scope[\"#text/0\"], item);\nconst $for_content__$params = ($scope, $params2) => $for_content__item($scope, $params2[0]);\nconst $ul_getter = _._el(\"__tests__/template.marko_0_#ul\", \"#ul/1\");\nconst $for = /* @__PURE__ */_._for_of(\"#ul/1\", \"<li> </li>\", /* next(1), get, out(1) */\"D l\", 0, $for_content__$params);\nconst $items__script = _._script(\"__tests__/template.marko_0_items\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $items($scope, [...$scope.items, $scope.items?.length]);\n}));\nconst $items = /* @__PURE__ */_._let(\"items/2\", $scope => {\n  $for($scope, [$scope.items]);\n  $items__script($scope);\n});\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => {\n  {\n    const getter = $ul_getter($scope);\n    getter().classList.add('attached');\n  }\n});\nexport function $setup($scope) {\n  $items($scope, [0, 1]);\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/getter-on-single-node-only-child/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $ul = _._el($scope0_id, \"__tests__/template.marko_0_#ul\");\n  let items = [0, 1];\n  _._html(`<button></button>${_._el_resume($scope0_id, \"#button/0\")}<ul>`);\n  _._for_of(items, item => {\n    const $scope1_id = _._scope_id();\n    _._html(`<li>${_._escape(item)}${_._el_resume($scope1_id, \"#text/0\")}</li>`);\n    _._scope($scope1_id, {}, \"__tests__/template.marko\", \"7:4\");\n  }, 0, $scope0_id, \"#ul/1\", /* items */1, 1, /* items */1, \"</ul>\", 1);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._script($scope0_id, \"__tests__/template.marko_0_items\");\n  _._scope($scope0_id, {\n    items\n  }, \"__tests__/template.marko\", 0, {\n    items: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/getter-on-single-node-only-child/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button />\n<ul\n  class=\"attached\"\n>\n  <li>\n    0\n  </li>\n  <li>\n    1\n  </li>\n</ul>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<ul\n  class=\"attached\"\n>\n  <li>\n    0\n  </li>\n  <li>\n    1\n  </li>\n  <li>\n    2\n  </li>\n</ul>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<ul\n  class=\"attached\"\n>\n  <li>\n    0\n  </li>\n  <li>\n    1\n  </li>\n  <li>\n    2\n  </li>\n  <li>\n    3\n  </li>\n</ul>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<ul\n  class=\"attached\"\n>\n  <li>\n    0\n  </li>\n  <li>\n    1\n  </li>\n  <li>\n    2\n  </li>\n  <li>\n    3\n  </li>\n  <li>\n    4\n  </li>\n</ul>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/getter-on-single-node-only-child/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <ul\n      class=\"attached\"\n    >\n      <li>\n        0\n        <!--M_*2 #text/0-->\n      </li>\n      <li>\n        1\n        <!--M_*3 #text/0-->\n      </li>\n      <!--M_}1 #ul/1 3 2-->\n    </ul>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          items: [0, 1]\n        }]),\n        \"__tests__/template.marko_0 1 __tests__/template.marko_0_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/ul[class] null => \"attached\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <ul\n      class=\"attached\"\n    >\n      <li>\n        0\n        <!--M_*2 #text/0-->\n      </li>\n      <li>\n        1\n        <!--M_*3 #text/0-->\n      </li>\n      <!--M_}1 #ul/1 3 2-->\n      <li>\n        2\n      </li>\n    </ul>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          items: [0, 1]\n        }]),\n        \"__tests__/template.marko_0 1 __tests__/template.marko_0_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/ul/li2\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <ul\n      class=\"attached\"\n    >\n      <li>\n        0\n        <!--M_*2 #text/0-->\n      </li>\n      <li>\n        1\n        <!--M_*3 #text/0-->\n      </li>\n      <!--M_}1 #ul/1 3 2-->\n      <li>\n        2\n      </li>\n      <li>\n        3\n      </li>\n    </ul>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          items: [0, 1]\n        }]),\n        \"__tests__/template.marko_0 1 __tests__/template.marko_0_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/ul/li3\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <ul\n      class=\"attached\"\n    >\n      <li>\n        0\n        <!--M_*2 #text/0-->\n      </li>\n      <li>\n        1\n        <!--M_*3 #text/0-->\n      </li>\n      <!--M_}1 #ul/1 3 2-->\n      <li>\n        2\n      </li>\n      <li>\n        3\n      </li>\n      <li>\n        4\n      </li>\n    </ul>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          items: [0, 1]\n        }]),\n        \"__tests__/template.marko_0 1 __tests__/template.marko_0_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/ul/li4\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/getter-on-single-node-only-child/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button />\n<ul>\n  <li>\n    0\n  </li>\n  <li>\n    1\n  </li>\n</ul>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/getter-on-single-node-only-child/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button></button><!--M_*1 #button/0--><ul><li>0<!--M_*2 #text/0--></li><li>1<!--M_*3 #text/0--></li><!--M_}1 #ul/1 3 2--></ul><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{items:[0,1]}]),\"__tests__/template.marko_0 1 __tests__/template.marko_0_items 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <ul>\n      <li>\n        0\n        <!--M_*2 #text/0-->\n      </li>\n      <li>\n        1\n        <!--M_*3 #text/0-->\n      </li>\n      <!--M_}1 #ul/1 3 2-->\n    </ul>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          items: [0, 1]\n        }]),\n        \"__tests__/template.marko_0 1 __tests__/template.marko_0_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/#comment\nINSERT html/body/ul\nINSERT html/body/ul/li0\nINSERT html/body/ul/li0/#text\nINSERT html/body/ul/li0/#comment\nINSERT html/body/ul/li1\nINSERT html/body/ul/li1/#text\nINSERT html/body/ul/li1/#comment\nINSERT html/body/ul/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/getter-on-single-node-only-child/template.marko",
    "content": "<let/items=[0,1]>\n<button onClick() {\n  items = [...items, items.length]\n} />\n\n<ul/$ul>\n  <for|item| of=items>\n    <li>${item}</li>\n  </for>\n</ul>\n\n<script>\n  const getter = $ul;\n  getter().classList.add('attached')\n</script>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/getter-on-single-node-only-child/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hello-dynamic/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hello-dynamic/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"name\":\"Marko\"}`\n\n```html\nHello Marko! Hello Marko! Hello !\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hello-dynamic/__snapshots__/csr.expected.md",
    "content": "# Render `{\"name\":\"Marko\"}`\n\n```html\nHello Marko! Hello Marko! Hello !\n```\n\n# Mutations\n```\nINSERT #text0, #text1, #text2, #text3, #text4, #text5, #text6\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hello-dynamic/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hello-dynamic/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"Hello <!>! Hello <!>! Hello <!>!\";\nexport const $walks = /* over(1), replace, over(2), replace, over(2), replace, over(2) */\"b%c%c%c\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $input_name = ($scope, input_name) => {\n  _._text($scope[\"#text/0\"], input_name);\n  _._html($scope, input_name, \"#text/1\");\n};\nexport const $input_missing = ($scope, input_missing) => _._html($scope, input_missing, \"#text/2\");\nexport const $input = ($scope, input) => {\n  $input_name($scope, input.name);\n  $input_missing($scope, input.missing);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hello-dynamic/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`Hello ${_._sep(_._serialize_guard($scope0_reason, /* input.name */1))}${_._escape(input.name)}${_._el_resume($scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.name */1))}! Hello ${_._sep(_._serialize_guard($scope0_reason, /* input.name */1))}${_._unescaped(input.name)}${_._el_resume($scope0_id, \"#text/1\", _._serialize_guard($scope0_reason, /* input.name */1))}! Hello ${_._sep(_._serialize_guard($scope0_reason, /* input.missing */2))}${_._unescaped(input.missing)}${_._el_resume($scope0_id, \"#text/2\", _._serialize_guard($scope0_reason, /* input.missing */2))}!`);\n  _._serialize_if($scope0_reason, /* input.name, input.missing */0) && _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hello-dynamic/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"name\":\"Marko\"}`\n\n```html\nHello Marko! Hello Marko! Hello !\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hello-dynamic/__snapshots__/resume.expected.md",
    "content": "# Render `{\"name\":\"Marko\"}`\n\n```html\n<html>\n  <head />\n  <body>\n    Hello Marko! Hello Marko! Hello !\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hello-dynamic/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\nHello Marko! Hello Marko! Hello !\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hello-dynamic/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  Hello Marko! Hello Marko! Hello !\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    Hello Marko! Hello Marko! Hello !\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hello-dynamic/template.marko",
    "content": "-- Hello ${input.name}! Hello $!{input.name}! Hello $!{input.missing}!"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hello-dynamic/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [{ name: \"Marko\" }],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"r\",\n      \"$init\": \"o\",\n      \"$$setHtml3_getter\": \"s\",\n      \"$$setHtml2_getter\": \"t\",\n      \"$$setHtml_getter\": \"c\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<div>\n  Hello world\n</div>\n<div>\n  Hello world\n</div>\n<div>\n  Hello world\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var/__snapshots__/csr.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<!---->\n<!---->\n<div>\n  Hello world\n</div>\n<!---->\n<div>\n  Hello world\n</div>\n<div>\n  Hello world\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, div0, #comment2, div1, div2, #text, #comment3\nINSERT div0/#text\nINSERT div1/#text\nINSERT div2/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* get, over(1) */\" b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport function $setup($scope) {\n  _._return($scope, $_return($scope));\n}\nfunction $_return($scope) {\n  return () => html => _._el_read($scope[\"#div/0\"]).innerHTML = html;\n}\n_._resume(\"__tests__/tags/child.marko_0/_return\", $_return);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var/__snapshots__/dom.expected/tags/thing.js",
    "content": "export const $template = \"\";\nexport const $walks = \"\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $input_value__script = _._script(\"__tests__/tags/thing.marko_0_input_value\", $scope => $scope.input_value);\nexport const $input_value = /* @__PURE__ */_._const(\"input_value\", $input_value__script);\nexport const $input = ($scope, input) => $input_value($scope, input.value);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/thing.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 381 (min) 167 (brotli)\n(_._resume(\"a0\", function ($scope) {\n  return () => (html) => ($scope.a.innerHTML = html);\n}),\n  _._script(\"b0\", ($scope) => $scope.c),\n  _._script(\"c0\", ($scope) => $setHtml3_getter($scope._)()(\"Hello world\")));\nconst $setHtml3_getter = _._hoist(2, \"Ad\");\n_._var_resume(\"c1\", _._const(2));\nconst $setHtml2_getter = _._hoist(2, \"Ac\");\n_._var_resume(\"c2\", _._const(2));\nconst $setHtml_getter = _._hoist_resume(\"c3\", 2, \"Aa\", \"Aa\");\n(_._var_resume(\"c4\", _._const(2)),\n  _._script(\"c5\", ($scope) => {\n    ($setHtml_getter($scope)()(\"Hello world\"),\n      $setHtml2_getter($scope)()(\"Hello world\"));\n  }),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<!><!>${_thing_template}<!><!><!><!>`;\nexport const $walks = /* over(1), replace, over(1), <thing>, replace, over(1), replace, over(1), replace, over(2) */`b%b/${_thing_walks}&%b%b%c`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _child, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nimport { $setup as _thing, $input_value as _thing_input_value, $template as _thing_template, $walks as _thing_walks } from \"./tags/thing.marko\";\nconst $if_content5__setup__script = _._script(\"__tests__/template.marko_5\", $scope => $setHtml3_getter($scope._)()(\"Hello world\"));\nconst $if_content5__setup = $if_content5__setup__script;\nconst $setHtml3_getter = _._hoist(\"setHtml3\", \"BranchScopes:#text/3\");\nconst $if_content4__setHtml = _._var_resume(\"__tests__/template.marko_4_setHtml3/var\", /* @__PURE__ */_._const(\"setHtml3\", $scope => _._assert_hoist($scope.setHtml3)));\nconst $if_content4__setup = $scope => {\n  _._var($scope, \"#childScope/0\", $if_content4__setHtml);\n  _child($scope[\"#childScope/0\"]);\n};\nconst $setHtml2_getter = _._hoist(\"setHtml2\", \"BranchScopes:#text/2\");\nconst $if_content3__setHtml = _._var_resume(\"__tests__/template.marko_3_setHtml2/var\", /* @__PURE__ */_._const(\"setHtml2\", $scope => _._assert_hoist($scope.setHtml2)));\nconst $if_content3__setup = $scope => {\n  _._var($scope, \"#childScope/0\", $if_content3__setHtml);\n  _child($scope[\"#childScope/0\"]);\n};\nconst $setHtml_getter = _._hoist_resume(\"__tests__/template.marko_0_setHtml/hoist\", \"setHtml\", \"BranchScopes:#text/0\", \"BranchScopes:#text/0\");\nconst $if_content2__setHtml = _._var_resume(\"__tests__/template.marko_2_setHtml/var\", /* @__PURE__ */_._const(\"setHtml\", $scope => _._assert_hoist($scope.setHtml)));\nconst $if_content2__setup = $scope => {\n  _._var($scope, \"#childScope/0\", $if_content2__setHtml);\n  _child($scope[\"#childScope/0\"]);\n};\nconst $if_content__if = /* @__PURE__ */_._if(\"#text/0\", _child_template, /* <child/var> */`0${_child_walks}&`, $if_content2__setup);\nconst $if_content__input_show = /* @__PURE__ */_._if_closure(\"#text/0\", 0, $scope => $if_content__if($scope, $scope._.input_show ? 0 : 1));\nconst $if_content__setup = $if_content__input_show;\nconst $if = /* @__PURE__ */_._if(\"#text/0\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", $if_content__setup);\nexport const $input_show = /* @__PURE__ */_._const(\"input_show\", $scope => {\n  $if($scope, $scope.input_show ? 0 : 1);\n  $if_content__input_show($scope);\n});\nconst $if2 = /* @__PURE__ */_._if(\"#text/2\", _child_template, /* <child/var> */`0${_child_walks}&`, $if_content3__setup);\nconst $if3 = /* @__PURE__ */_._if(\"#text/3\", _child_template, /* <child/var> */`0${_child_walks}&`, $if_content4__setup);\nconst $if4 = /* @__PURE__ */_._if(\"#text/4\", 0, 0, $if_content5__setup);\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => {\n  $setHtml_getter($scope)()(\"Hello world\");\n  $setHtml2_getter($scope)()(\"Hello world\");\n});\nexport function $setup($scope) {\n  _thing($scope[\"#childScope/1\"]);\n  _thing_input_value($scope[\"#childScope/1\"], $setHtml_getter($scope));\n  $if2($scope, true ? 0 : 1);\n  $if3($scope, true ? 0 : 1);\n  $if4($scope, true ? 0 : 1);\n  $setup__script($scope);\n}\nexport const $input = ($scope, input) => $input_show($scope, input.show);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div></div>${_._el_resume($scope0_id, \"#div/0\")}`);\n  const $return = _._resume(() => html => (el => el())(_._el_read_error).innerHTML = html, \"__tests__/tags/child.marko_0/_return\", $scope0_id);\n  _._scope($scope0_id, {}, \"__tests__/tags/child.marko\", 0);\n  return $return;\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var/__snapshots__/html.expected/tags/thing.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/thing.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._script($scope0_id, \"__tests__/tags/thing.marko_0_input_value\");\n  _._scope($scope0_id, {\n    input_value: input.value\n  }, \"__tests__/tags/thing.marko\", 0, {\n    input_value: [\"input.value\"]\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _child from \"./tags/child.marko\";\nimport _thing from \"./tags/thing.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $setHtml_getter = _._hoist($scope0_id, \"__tests__/template.marko_0_setHtml/hoist\");\n  _._if(() => {\n    if (input.show) {\n      const $scope1_id = _._scope_id();\n      _._if(() => {\n        if (input.show) {\n          const $scope2_id = _._scope_id();\n          let setHtml = _child({});\n          _._scope($scope2_id, {\n            setHtml\n          }, \"__tests__/template.marko\", \"2:4\", {\n            setHtml: \"3:12\"\n          });\n          _._assert_hoist(setHtml);\n          return 0;\n        }\n      }, $scope1_id, \"#text/0\", 1, _._serialize_guard($scope0_reason, /* input.show */0), _._serialize_guard($scope0_reason, /* input.show */0), 0, 1);\n      _._scope($scope1_id, {\n        _: _._serialize_if($scope0_reason, /* input.show */0) && _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"1:2\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/0\", 1, _._serialize_guard($scope0_reason, /* input.show */0), _._serialize_guard($scope0_reason, /* input.show */0));\n  _thing({\n    value: $setHtml_getter\n  });\n  _._if(() => {\n    if (true) {\n      const $scope3_id = _._scope_id();\n      let setHtml2 = _child({});\n      _._scope($scope3_id, {\n        setHtml2\n      }, \"__tests__/template.marko\", \"13:2\", {\n        setHtml2: \"14:10\"\n      });\n      _._assert_hoist(setHtml2);\n      return 0;\n    }\n  }, $scope0_id, \"#text/2\", 1, 0, _._serialize_guard($scope0_reason, /* input.show */0), 0, 1);\n  _._if(() => {\n    if (true) {\n      const $scope4_id = _._scope_id();\n      let setHtml3 = _child({});\n      _._scope($scope4_id, {\n        setHtml3\n      }, \"__tests__/template.marko\", \"22:2\", {\n        setHtml3: \"23:10\"\n      });\n      _._assert_hoist(setHtml3);\n      return 0;\n    }\n  }, $scope0_id, \"#text/3\", 1, 0, _._serialize_guard($scope0_reason, /* input.show */0), 0, 1);\n  if (true) {\n    const $scope5_id = _._scope_id();\n    _._script($scope5_id, \"__tests__/template.marko_5\");\n    _._scope($scope5_id, {\n      _: _._scope_with_id($scope0_id)\n    }, \"__tests__/template.marko\", \"26:2\");\n  }\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._serialize_if($scope0_reason, /* input.show */0) && _._scope($scope0_id, {\n    input_show: input.show\n  }, \"__tests__/template.marko\", 0, {\n    input_show: [\"input.show\"]\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<div>\n  Hello world\n</div>\n<div>\n  Hello world\n</div>\n<div>\n  Hello world\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var/__snapshots__/resume.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      Hello world\n    </div>\n    <!--M_*4 #div/0-->\n    <div>\n      Hello world\n    </div>\n    <!--M_*7 #div/0-->\n    <div>\n      Hello world\n    </div>\n    <!--M_*9 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.j = [0, _.i = {\n          \"BranchScopes:#text/0\": _.d = {\n            \"BranchScopes:#text/0\": _.a = {\n              setHtml: _.e = {}\n            }\n          },\n          \"BranchScopes:#text/2\": _.b = {\n            setHtml2: _.g = {}\n          },\n          \"BranchScopes:#text/3\": _.c = {\n            setHtml3: _.h = {}\n          }\n        }, _.d, _.a, _.e, _.f = {}, _.b, _.g, _.c, _.h,\n        {\n          _: _.i\n        }], _.f.input_value = _._[\n          \"__tests__/template.marko_0_setHtml/hoist\"\n          ](_.i), _.a.setHtml = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.e), _.b.setHtml2 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.g), _.c.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.h), _.j),\n        \"__tests__/tags/thing.marko_0_input_value 5 __tests__/template.marko_5 10 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div2/#text\nINSERT html/body/div0/#text\nINSERT html/body/div1/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n<div />\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div></div><!--M_*4 #div/0--><div></div><!--M_*7 #div/0--><div></div><!--M_*9 #div/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.j=[0,_.i={\"BranchScopes:#text/0\":_.d={\"BranchScopes:#text/0\":_.a={setHtml:_.e={}}},\"BranchScopes:#text/2\":_.b={setHtml2:_.g={}},\"BranchScopes:#text/3\":_.c={setHtml3:_.h={}}},_.d,_.a,_.e,_.f={},_.b,_.g,_.c,_.h,{_:_.i}],_.f.input_value=_._[\"__tests__/template.marko_0_setHtml/hoist\"](_.i),_.a.setHtml=_._[\"__tests__/tags/child.marko_0/_return\"](_.e),_.b.setHtml2=_._[\"__tests__/tags/child.marko_0/_return\"](_.g),_.c.setHtml3=_._[\"__tests__/tags/child.marko_0/_return\"](_.h),_.j),\"__tests__/tags/thing.marko_0_input_value 5 __tests__/template.marko_5 10 __tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*4 #div/0-->\n    <div />\n    <!--M_*7 #div/0-->\n    <div />\n    <!--M_*9 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.j = [0, _.i = {\n          \"BranchScopes:#text/0\": _.d = {\n            \"BranchScopes:#text/0\": _.a = {\n              setHtml: _.e = {}\n            }\n          },\n          \"BranchScopes:#text/2\": _.b = {\n            setHtml2: _.g = {}\n          },\n          \"BranchScopes:#text/3\": _.c = {\n            setHtml3: _.h = {}\n          }\n        }, _.d, _.a, _.e, _.f = {}, _.b, _.g, _.c, _.h,\n        {\n          _: _.i\n        }], _.f.input_value = _._[\n          \"__tests__/template.marko_0_setHtml/hoist\"\n          ](_.i), _.a.setHtml = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.e), _.b.setHtml2 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.g), _.c.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.h), _.j),\n        \"__tests__/tags/thing.marko_0_input_value 5 __tests__/template.marko_5 10 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/#comment0\nINSERT html/body/div1\nINSERT html/body/#comment1\nINSERT html/body/div2\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var/tags/child.marko",
    "content": "<div/el />\n<return=() => (html) => el().innerHTML = html />"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var/tags/thing.marko",
    "content": "<script>\n  input.value\n</script>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var/template.marko",
    "content": "<if=input.show>\n  <if=input.show>\n    <child/setHtml />\n  </if>\n</if>\n\n<thing=setHtml />\n\n<script>\n  setHtml()(\"Hello world\");\n</script>\n\n<if=true>\n  <child/setHtml2 />\n</if>\n\n<script>\n  setHtml2()(\"Hello world\");\n</script>\n\n\n<if=true>\n  <child/setHtml3 />\n</if>\n\n<if=true>\n  <script>\n    setHtml3()(\"Hello world\");\n  </script>\n</if>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [{ show: true }],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-attr-tag/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"o\",\n      \"$init\": \"r\",\n      \"$$setHtml_getter\": \"t\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-attr-tag/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<div>\n  Hoist from custom tag\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-attr-tag/__snapshots__/csr.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<!---->\n<!---->\n<div>\n  Hoist from custom tag\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, div, #comment2, #comment3\nINSERT div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-attr-tag/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* get, over(1) */\" b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport function $setup($scope) {\n  _._return($scope, $_return($scope));\n}\nfunction $_return($scope) {\n  return () => html => _._el_read($scope[\"#div/0\"]).innerHTML = html;\n}\n_._resume(\"__tests__/tags/child.marko_0/_return\", $_return);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-attr-tag/__snapshots__/dom.expected/tags/thing.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\");\nexport const $input_what = ($scope, input_what) => $dynamicTag($scope, input_what);\nexport const $input = ($scope, input) => $input_what($scope, input.what);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/thing.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-attr-tag/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 199 (min) 152 (brotli)\n_._resume(\"a0\", function ($scope) {\n  return () => (html) => ($scope.a.innerHTML = html);\n});\nconst $setHtml_getter = _._hoist_resume(\"c0\", 2, \"B1\");\n(_._var_resume(\"c1\", _._const(2)),\n  _._script(\"c3\", ($scope) => {\n    for (const fn of $setHtml_getter($scope)) fn(\"Hoist from custom tag\");\n  }),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-attr-tag/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<!>${_thing_template}<!>`;\nexport const $walks = /* over(1), <thing>, over(1) */`b/${_thing_walks}&b`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _child, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nimport { $setup as _thing, $input_what as _thing_input_what, $template as _thing_template, $walks as _thing_walks } from \"./tags/thing.marko\";\nconst $setHtml_getter = _._hoist_resume(\"__tests__/template.marko_0_setHtml/hoist\", \"setHtml\", \"ClosureScopes:1\");\nconst $what_content__setHtml = _._var_resume(\"__tests__/template.marko_1_setHtml/var\", /* @__PURE__ */_._const(\"setHtml\", $scope => _._assert_hoist($scope.setHtml)));\nconst $what_content__setup = $scope => {\n  _._var($scope, \"#childScope/0\", $what_content__setHtml);\n  _child($scope[\"#childScope/0\"]);\n};\nconst $what_content = /* @__PURE__ */_._content(\"__tests__/template.marko_1_content\", _child_template, /* <child/var> */`0${_child_walks}&`, $what_content__setup, 0, \"ClosureScopes:1\");\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => {\n  for (const fn of $setHtml_getter($scope)) {\n    fn('Hoist from custom tag');\n  }\n});\nexport function $setup($scope) {\n  _thing($scope[\"#childScope/0\"]);\n  _thing_input_what($scope[\"#childScope/0\"], _.attrTag({\n    content: $what_content($scope)\n  }));\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-attr-tag/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div></div>${_._el_resume($scope0_id, \"#div/0\")}`);\n  const $return = _._resume(() => html => (el => el())(_._el_read_error).innerHTML = html, \"__tests__/tags/child.marko_0/_return\", $scope0_id);\n  _._scope($scope0_id, {}, \"__tests__/tags/child.marko\", 0);\n  return $return;\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-attr-tag/__snapshots__/html.expected/tags/thing.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/thing.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._dynamic_tag($scope0_id, \"#text/0\", input.what, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.what */0));\n  _._serialize_if($scope0_reason, /* input.what */0) && _._scope($scope0_id, {}, \"__tests__/tags/thing.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-attr-tag/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _child from \"./tags/child.marko\";\nimport _thing from \"./tags/thing.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $setHtml_getter = _._hoist($scope0_id, \"__tests__/template.marko_0_setHtml/hoist\");\n  const $what_content__subscribers = new Set();\n  _thing({\n    what: _.attrTag({\n      content: _._content(\"__tests__/template.marko_1_content\", () => {\n        _._scope_reason();\n        const $scope1_id = _._scope_id();\n        let setHtml = _child({});\n        _._subscribe($what_content__subscribers, _._scope($scope1_id, {\n          setHtml\n        }, \"__tests__/template.marko\", \"3:4\", {\n          setHtml: \"4:12\"\n        }));\n        _._assert_hoist(setHtml);\n      })\n    })\n  });\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {\n    \"ClosureScopes:1\": $what_content__subscribers\n  }, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-attr-tag/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<div>\n  Hoist from custom tag\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-attr-tag/__snapshots__/resume.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      Hoist from custom tag\n    </div>\n    <!--M_*4 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0,\n        {\n          \"ClosureScopes:1\": _.d = new Set\n        }, 1, _.a = {\n          setHtml: _.b = {}\n        }, _.b], _.a.setHtml = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.b), (_.d).add(_.a), _.c),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-attr-tag/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-attr-tag/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div></div><!--M_*4 #div/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,{\"ClosureScopes:1\":_.d=new Set},1,_.a={setHtml:_.b={}},_.b],_.a.setHtml=_._[\"__tests__/tags/child.marko_0/_return\"](_.b),(_.d).add(_.a),_.c),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*4 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0,\n        {\n          \"ClosureScopes:1\": _.d = new Set\n        }, 1, _.a = {\n          setHtml: _.b = {}\n        }, _.b], _.a.setHtml = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.b), (_.d).add(_.a), _.c),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-attr-tag/tags/child.marko",
    "content": "<div/el />\n<return=() => (html) => el().innerHTML = html />"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-attr-tag/tags/thing.marko",
    "content": "<${input.what} />"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-attr-tag/template.marko",
    "content": "\n<thing>\n  <@what>\n    <child/setHtml />\n  </>\n</thing>\n\n<script>\n  for (const fn of setHtml) {\n    fn('Hoist from custom tag');\n  }\n</script>\n\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-attr-tag/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [{ show: true }],\n  skip_equivalent: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-from-dynamic/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$dynamicTag\": \"r\",\n      \"$$dynamicTag2\": \"c\",\n      \"$$setup\": \"n\",\n      \"$$_return\": \"_\",\n      \"$$setHtml3_getter\": \"s\",\n      \"$$inputshowsectionnull_content__setHtml\": \"a\",\n      \"$$setHtml2_getter\": \"m\",\n      \"$$thing_content2__setHtml\": \"e\",\n      \"$$thing_content2__setup\": \"i\",\n      \"$$thing_content2\": \"u\",\n      \"$$setHtml_getter\": \"d\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-from-dynamic/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<div>\n  Hoist from custom tag\n</div>\n<div>\n  Hoist from custom tag\n</div>\n<div>\n  Hoist from dynamic tag\n</div>\n<div />\n<div />\n<div />\n<section>\n  <div>\n    Hoist from dynamic tag\n  </div>\n</section>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-from-dynamic/__snapshots__/csr.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<!---->\n<!---->\n<div>\n  Hoist from custom tag\n</div>\n<div>\n  Hoist from custom tag\n</div>\n<!---->\n<!---->\n<!---->\n<!---->\n<div>\n  Hoist from dynamic tag\n</div>\n<div />\n<!---->\n<!---->\n<!---->\n<!---->\n<div />\n<div />\n<!---->\n<!---->\n<!---->\n<section>\n  <div>\n    Hoist from dynamic tag\n  </div>\n</section>\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, div0, div1, #comment2, #comment3, #comment4, #comment5, div2, div3, #comment6, #comment7, #comment8, #comment9, div4, div5, #comment10, #comment11, #comment12, section, #comment13\nINSERT div0/#text\nINSERT div1/#text\nINSERT div2/#text\nINSERT section/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-from-dynamic/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* get, over(1) */\" b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport function $setup($scope) {\n  _._return($scope, $_return($scope));\n}\nfunction $_return($scope) {\n  return () => html => _._el_read($scope[\"#div/0\"]).innerHTML = html;\n}\n_._resume(\"__tests__/tags/child.marko_0/_return\", $_return);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-from-dynamic/__snapshots__/dom.expected/tags/thing.js",
    "content": "export const $template = \"<!><!><!><!>\";\nexport const $walks = /* over(1), replace, over(1), replace, over(2) */\"b%b%c\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\");\nconst $dynamicTag2 = /* @__PURE__ */_._dynamic_tag(\"#text/1\");\nexport const $input_content = ($scope, input_content) => {\n  $dynamicTag($scope, input_content);\n  $dynamicTag2($scope, input_content);\n};\nexport const $input = ($scope, input) => $input_content($scope, input.content);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/thing.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-from-dynamic/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 732 (min) 329 (brotli)\nconst $dynamicTag = _._dynamic_tag(0),\n  $dynamicTag2 = _._dynamic_tag(1);\nfunction $setup($scope) {\n  _._return($scope, $_return($scope));\n}\nfunction $_return($scope) {\n  return () => (html) => ($scope.a.innerHTML = html);\n}\n_._resume(\"a0\", $_return);\nconst $setHtml3_getter = _._hoist(2, \"B4\"),\n  $inputshowsectionnull_content__setHtml = _._var_resume(\"c0\", _._const(2));\n_._content_resume(\n  \"c1\",\n  \"<div></div>\",\n  \"0 b&\",\n  ($scope) => {\n    (_._var($scope, 0, $inputshowsectionnull_content__setHtml),\n      $setup($scope.a));\n  },\n  0,\n  \"B4\",\n);\nconst $setHtml2_getter = _._hoist(2, \"B3\", \"B2\"),\n  $thing_content2__setHtml = _._var_resume(\"c2\", _._const(2)),\n  $thing_content2__setup = ($scope) => {\n    (_._var($scope, 0, $thing_content2__setHtml), $setup($scope.a));\n  },\n  $thing_content2 = _._content(\n    \"c3\",\n    \"<div></div>\",\n    \"0 b&\",\n    $thing_content2__setup,\n    0,\n    \"B3\",\n  );\n_._content_resume(\n  \"c4\",\n  \"<!><!><!><!><!><!>\",\n  \"b/b%b%c&b\",\n  ($scope) => {\n    ($scope.a,\n      (($scope, input_content) => {\n        ($dynamicTag($scope, input_content),\n          $dynamicTag2($scope, input_content));\n      })($scope.a, $thing_content2($scope)));\n  },\n  0,\n  \"B2\",\n);\nconst $setHtml_getter = _._hoist_resume(\"c5\", 2, \"B1\");\n(_._var_resume(\"c6\", _._const(2)),\n  _._script(\"c8\", ($scope) => {\n    for (const fn of $setHtml_getter($scope)) fn(\"Hoist from custom tag\");\n    ($setHtml2_getter($scope)()(\"Hoist from dynamic tag\"),\n      $setHtml3_getter($scope)()(\"Hoist from dynamic tag\"));\n  }),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-from-dynamic/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<!>${_thing_template}<!><!><!>`;\nexport const $walks = /* over(1), <thing>, replace, over(1), replace, over(2) */`b/${_thing_walks}&%b%c`;\nimport Thing from \"./tags/thing.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _child, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nimport { $setup as _thing, $input_content as _thing_input_content, $template as _thing_template, $walks as _thing_walks } from \"./tags/thing.marko\";\nconst $setHtml3_getter = _._hoist(\"setHtml3\", \"ClosureScopes:4\");\nconst $inputshowsectionnull_content__setHtml = _._var_resume(\"__tests__/template.marko_4_setHtml3/var\", /* @__PURE__ */_._const(\"setHtml3\", $scope => _._assert_hoist($scope.setHtml3)));\nconst $inputshowsectionnull_content__setup = $scope => {\n  _._var($scope, \"#childScope/0\", $inputshowsectionnull_content__setHtml);\n  _child($scope[\"#childScope/0\"]);\n};\nconst $inputshowsectionnull_content = _._content_resume(\"__tests__/template.marko_4_content\", _child_template, /* <child/var> */`0${_child_walks}&`, $inputshowsectionnull_content__setup, 0, \"ClosureScopes:4\");\nconst $setHtml2_getter = _._hoist(\"setHtml2\", \"ClosureScopes:3\", \"ClosureScopes:2\");\nconst $thing_content2__setHtml = _._var_resume(\"__tests__/template.marko_3_setHtml2/var\", /* @__PURE__ */_._const(\"setHtml2\", $scope => _._assert_hoist($scope.setHtml2)));\nconst $thing_content2__setup = $scope => {\n  _._var($scope, \"#childScope/0\", $thing_content2__setHtml);\n  _child($scope[\"#childScope/0\"]);\n};\nconst $thing_content2 = /* @__PURE__ */_._content(\"__tests__/template.marko_3_content\", _child_template, /* <child/var> */`0${_child_walks}&`, $thing_content2__setup, 0, \"ClosureScopes:3\");\nconst $inputshowThingnull_content__setup = $scope => {\n  _thing($scope[\"#childScope/0\"]);\n  _thing_input_content($scope[\"#childScope/0\"], $thing_content2($scope));\n};\nconst $inputshowThingnull_content = _._content_resume(\"__tests__/template.marko_2_content\", `<!>${_thing_template}<!>`, /* over(1), <thing>, over(1) */`b/${_thing_walks}&b`, $inputshowThingnull_content__setup, 0, \"ClosureScopes:2\");\nconst $setHtml_getter = _._hoist_resume(\"__tests__/template.marko_0_setHtml/hoist\", \"setHtml\", \"ClosureScopes:1\");\nconst $thing_content__setHtml = _._var_resume(\"__tests__/template.marko_1_setHtml/var\", /* @__PURE__ */_._const(\"setHtml\", $scope => _._assert_hoist($scope.setHtml)));\nconst $thing_content__setup = $scope => {\n  _._var($scope, \"#childScope/0\", $thing_content__setHtml);\n  _child($scope[\"#childScope/0\"]);\n};\nconst $thing_content = /* @__PURE__ */_._content(\"__tests__/template.marko_1_content\", _child_template, /* <child/var> */`0${_child_walks}&`, $thing_content__setup, 0, \"ClosureScopes:1\");\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => {\n  for (const fn of $setHtml_getter($scope)) {\n    fn('Hoist from custom tag');\n  }\n  $setHtml2_getter($scope)()('Hoist from dynamic tag');\n  $setHtml3_getter($scope)()('Hoist from dynamic tag');\n});\nexport function $setup($scope) {\n  _thing($scope[\"#childScope/0\"]);\n  _thing_input_content($scope[\"#childScope/0\"], $thing_content($scope));\n  $setup__script($scope);\n}\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/1\", $inputshowThingnull_content);\nconst $dynamicTag2 = /* @__PURE__ */_._dynamic_tag(\"#text/2\", $inputshowsectionnull_content);\nexport const $input_show = ($scope, input_show) => {\n  $dynamicTag($scope, input_show ? Thing : null);\n  $dynamicTag2($scope, input_show ? 'section' : null);\n};\nexport const $input = ($scope, input) => $input_show($scope, input.show);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-from-dynamic/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div></div>${_._el_resume($scope0_id, \"#div/0\")}`);\n  const $return = _._resume(() => html => (el => el())(_._el_read_error).innerHTML = html, \"__tests__/tags/child.marko_0/_return\", $scope0_id);\n  _._scope($scope0_id, {}, \"__tests__/tags/child.marko\", 0);\n  return $return;\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-from-dynamic/__snapshots__/html.expected/tags/thing.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/thing.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._dynamic_tag($scope0_id, \"#text/0\", input.content, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.content */0));\n  _._dynamic_tag($scope0_id, \"#text/1\", input.content, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.content */0));\n  _._serialize_if($scope0_reason, /* input.content */0) && _._scope($scope0_id, {}, \"__tests__/tags/thing.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-from-dynamic/__snapshots__/html.expected/template.js",
    "content": "import Thing from \"./tags/thing.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nimport _child from \"./tags/child.marko\";\nimport _thing from \"./tags/thing.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $setHtml_getter = _._hoist($scope0_id, \"__tests__/template.marko_0_setHtml/hoist\");\n  const $thing_content__subscribers = new Set();\n  const $inputshowThingnull_content__subscribers = new Set();\n  const $inputshowsectionnull_content__subscribers = new Set();\n  _thing({\n    content: _._content(\"__tests__/template.marko_1_content\", () => {\n      _._scope_reason();\n      const $scope1_id = _._scope_id();\n      let setHtml = _child({});\n      _._subscribe($thing_content__subscribers, _._scope($scope1_id, {\n        setHtml\n      }, \"__tests__/template.marko\", \"3:2\", {\n        setHtml: \"4:10\"\n      }));\n      _._assert_hoist(setHtml);\n    })\n  });\n  _._dynamic_tag($scope0_id, \"#text/1\", input.show ? Thing : null, {}, _._content_resume(\"__tests__/template.marko_2_content\", () => {\n    const $scope2_id = _._scope_id();\n    const $thing_content2__subscribers = new Set();\n    _._scope_reason();\n    _thing({\n      content: _._content(\"__tests__/template.marko_3_content\", () => {\n        _._scope_reason();\n        const $scope3_id = _._scope_id();\n        let setHtml2 = _child({});\n        _._subscribe($thing_content2__subscribers, _._scope($scope3_id, {\n          setHtml2\n        }, \"__tests__/template.marko\", \"16:4\", {\n          setHtml2: \"17:12\"\n        }));\n        _._assert_hoist(setHtml2);\n      })\n    });\n    _._subscribe($inputshowThingnull_content__subscribers, _._scope($scope2_id, {\n      \"ClosureScopes:3\": $thing_content2__subscribers\n    }, \"__tests__/template.marko\", \"15:4\"));\n  }, $scope0_id), 0, _._serialize_guard($scope0_reason, /* input.show */0));\n  _._dynamic_tag($scope0_id, \"#text/2\", input.show ? 'section' : null, {}, _._content_resume(\"__tests__/template.marko_4_content\", () => {\n    const $scope4_id = _._scope_id();\n    _._scope_reason();\n    let setHtml3 = _child({});\n    _._subscribe($inputshowsectionnull_content__subscribers, _._scope($scope4_id, {\n      setHtml3\n    }, \"__tests__/template.marko\", \"26:4\", {\n      setHtml3: \"27:10\"\n    }));\n    _._assert_hoist(setHtml3);\n  }, $scope0_id), 0, _._serialize_guard($scope0_reason, /* input.show */0));\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {\n    \"ClosureScopes:1\": $thing_content__subscribers,\n    \"ClosureScopes:2\": $inputshowThingnull_content__subscribers,\n    \"ClosureScopes:4\": $inputshowsectionnull_content__subscribers\n  }, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-from-dynamic/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<div>\n  Hoist from custom tag\n</div>\n<div>\n  Hoist from custom tag\n</div>\n<div>\n  Hoist from dynamic tag\n</div>\n<div />\n<div />\n<div />\n<section>\n  <div>\n    Hoist from dynamic tag\n  </div>\n</section>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-from-dynamic/__snapshots__/resume.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      Hoist from custom tag\n    </div>\n    <!--M_*4 #div/0-->\n    <div>\n      Hoist from custom tag\n    </div>\n    <!--M_*6 #div/0-->\n    <div>\n      Hoist from dynamic tag\n    </div>\n    <!--M_*11 #div/0-->\n    <div />\n    <!--M_*13 #div/0-->\n    <div />\n    <!--M_*17 #div/0-->\n    <div />\n    <!--M_*19 #div/0-->\n    <section>\n      <div>\n        Hoist from dynamic tag\n      </div>\n      <!--M_*22 #div/0-->\n    </section>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.o = [0,\n          {\n            \"ClosureScopes:1\": _.p = new Set,\n            \"ClosureScopes:2\": _.r = new Set,\n            \"ClosureScopes:4\": _.v = new Set\n          }, 1, _.a = {\n            setHtml: _.b = {}\n          }, _.b, _.c = {\n            setHtml: _.d = {}\n          }, _.d, 1, _.s = {\n            \"ClosureScopes:3\": _.q = new Set\n          }, 1, _.e = {\n            setHtml2: _.f = {}\n          }, _.f, _.g = {\n            setHtml2: _.h = {}\n          }, _.h, _.u = {\n            \"ClosureScopes:3\": _.t = new Set\n          }, 1, _.i = {\n            setHtml2: _.j = {}\n          }, _.j, _.k = {\n            setHtml2: _.l = {}\n          }, _.l, 1, _.m = {\n            setHtml3: _.n = {}\n          }, _.n], _.a.setHtml = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.b), _.c.setHtml = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.d), _.e.setHtml2 = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.f), _.g.setHtml2 = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.h), _.i.setHtml2 = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.j), _.k.setHtml2 = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.l), _.m.setHtml3 = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.n), (_.p).add(_.a), _.p.add(_.c), (_.q).add(_.e), _.q.add(_\n          .g), (_.r).add(_.s), (_.t).add(_.i), _.t.add(_.k), _.r.add(_.u), (_\n            .v).add(_.m), _.o),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div0/#text\nINSERT html/body/div1/#text\nINSERT html/body/div2/#text\nINSERT html/body/section/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-from-dynamic/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n<div />\n<div />\n<div />\n<div />\n<div />\n<section>\n  <div />\n</section>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-from-dynamic/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div></div><!--M_*4 #div/0--><div></div><!--M_*6 #div/0--><div></div><!--M_*11 #div/0--><div></div><!--M_*13 #div/0--><div></div><!--M_*17 #div/0--><div></div><!--M_*19 #div/0--><section><div></div><!--M_*22 #div/0--></section><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.o=[0,{\"ClosureScopes:1\":_.p=new Set,\"ClosureScopes:2\":_.r=new Set,\"ClosureScopes:4\":_.v=new Set},1,_.a={setHtml:_.b={}},_.b,_.c={setHtml:_.d={}},_.d,1,_.s={\"ClosureScopes:3\":_.q=new Set},1,_.e={setHtml2:_.f={}},_.f,_.g={setHtml2:_.h={}},_.h,_.u={\"ClosureScopes:3\":_.t=new Set},1,_.i={setHtml2:_.j={}},_.j,_.k={setHtml2:_.l={}},_.l,1,_.m={setHtml3:_.n={}},_.n],_.a.setHtml=_._[\"__tests__/tags/child.marko_0/_return\"](_.b),_.c.setHtml=_._[\"__tests__/tags/child.marko_0/_return\"](_.d),_.e.setHtml2=_._[\"__tests__/tags/child.marko_0/_return\"](_.f),_.g.setHtml2=_._[\"__tests__/tags/child.marko_0/_return\"](_.h),_.i.setHtml2=_._[\"__tests__/tags/child.marko_0/_return\"](_.j),_.k.setHtml2=_._[\"__tests__/tags/child.marko_0/_return\"](_.l),_.m.setHtml3=_._[\"__tests__/tags/child.marko_0/_return\"](_.n),(_.p).add(_.a),_.p.add(_.c),(_.q).add(_.e),_.q.add(_.g),(_.r).add(_.s),(_.t).add(_.i),_.t.add(_.k),_.r.add(_.u),(_.v).add(_.m),_.o),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*4 #div/0-->\n    <div />\n    <!--M_*6 #div/0-->\n    <div />\n    <!--M_*11 #div/0-->\n    <div />\n    <!--M_*13 #div/0-->\n    <div />\n    <!--M_*17 #div/0-->\n    <div />\n    <!--M_*19 #div/0-->\n    <section>\n      <div />\n      <!--M_*22 #div/0-->\n    </section>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.o = [0,\n          {\n            \"ClosureScopes:1\": _.p = new Set,\n            \"ClosureScopes:2\": _.r = new Set,\n            \"ClosureScopes:4\": _.v = new Set\n          }, 1, _.a = {\n            setHtml: _.b = {}\n          }, _.b, _.c = {\n            setHtml: _.d = {}\n          }, _.d, 1, _.s = {\n            \"ClosureScopes:3\": _.q = new Set\n          }, 1, _.e = {\n            setHtml2: _.f = {}\n          }, _.f, _.g = {\n            setHtml2: _.h = {}\n          }, _.h, _.u = {\n            \"ClosureScopes:3\": _.t = new Set\n          }, 1, _.i = {\n            setHtml2: _.j = {}\n          }, _.j, _.k = {\n            setHtml2: _.l = {}\n          }, _.l, 1, _.m = {\n            setHtml3: _.n = {}\n          }, _.n], _.a.setHtml = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.b), _.c.setHtml = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.d), _.e.setHtml2 = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.f), _.g.setHtml2 = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.h), _.i.setHtml2 = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.j), _.k.setHtml2 = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.l), _.m.setHtml3 = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.n), (_.p).add(_.a), _.p.add(_.c), (_.q).add(_.e), _.q.add(_\n          .g), (_.r).add(_.s), (_.t).add(_.i), _.t.add(_.k), _.r.add(_.u), (_\n            .v).add(_.m), _.o),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/#comment0\nINSERT html/body/div1\nINSERT html/body/#comment1\nINSERT html/body/div2\nINSERT html/body/#comment2\nINSERT html/body/div3\nINSERT html/body/#comment3\nINSERT html/body/div4\nINSERT html/body/#comment4\nINSERT html/body/div5\nINSERT html/body/#comment5\nINSERT html/body/section\nINSERT html/body/section/div\nINSERT html/body/section/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-from-dynamic/tags/child.marko",
    "content": "<div/el />\n<return=() => (html) => el().innerHTML = html />"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-from-dynamic/tags/thing.marko",
    "content": "<${input.content} />\n<${input.content} />"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-from-dynamic/template.marko",
    "content": "import Thing from '<thing>';\n\n<thing>\n  <child/setHtml />\n</thing>\n\n<script>\n  for (const fn of setHtml) {\n    fn('Hoist from custom tag');\n  }\n</script>\n\n\n\n<${input.show ? Thing : null}>\n  <thing>\n    <child/setHtml2 />\n  </thing>\n</>\n<script>\n  setHtml2()('Hoist from dynamic tag');\n</script>\n\n\n\n<${input.show ? 'section' : null}>\n  <child/setHtml3 />\n</>\n\n<script>\n  setHtml3()('Hoist from dynamic tag');\n</script>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-from-dynamic/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [{ show: true }],\n  skip_equivalent: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-many/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"r\",\n      \"$init\": \"t\",\n      \"$$setHtml3_getter\": \"o\",\n      \"$$setHtml2_getter\": \"s\",\n      \"$$setHtml_getter\": \"n\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-many/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<div>\n  First Only\n</div>\n<div />\n<div />\n<div />\n<div />\n<div />\n<hr />\n<div>\n  First Only\n</div>\n<div />\n<div />\n<div />\n<hr />\n<ul>\n  <div>\n    All (0)\n  </div>\n  <div>\n    All (1)\n  </div>\n  <div>\n    All (2)\n  </div>\n  <div>\n    All (3)\n  </div>\n</ul>\n<ul>\n  <div>\n    All (4)\n  </div>\n  <div>\n    All (5)\n  </div>\n  <div>\n    All (6)\n  </div>\n  <div>\n    All (7)\n  </div>\n</ul>\n<ul>\n  <div>\n    All (8)\n  </div>\n  <div>\n    All (9)\n  </div>\n  <div>\n    All (10)\n  </div>\n  <div>\n    All (11)\n  </div>\n</ul>\n<ul>\n  <div>\n    All (12)\n  </div>\n  <div>\n    All (13)\n  </div>\n  <div>\n    All (14)\n  </div>\n  <div>\n    All (15)\n  </div>\n</ul>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-many/__snapshots__/csr.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<!---->\n<div>\n  First Only\n</div>\n<div />\n<div />\n<div />\n<div />\n<div />\n<hr />\n<div>\n  First Only\n</div>\n<div />\n<div />\n<div />\n<hr />\n<ul>\n  <div>\n    All (0)\n  </div>\n  <div>\n    All (1)\n  </div>\n  <div>\n    All (2)\n  </div>\n  <div>\n    All (3)\n  </div>\n</ul>\n<ul>\n  <div>\n    All (4)\n  </div>\n  <div>\n    All (5)\n  </div>\n  <div>\n    All (6)\n  </div>\n  <div>\n    All (7)\n  </div>\n</ul>\n<ul>\n  <div>\n    All (8)\n  </div>\n  <div>\n    All (9)\n  </div>\n  <div>\n    All (10)\n  </div>\n  <div>\n    All (11)\n  </div>\n</ul>\n<ul>\n  <div>\n    All (12)\n  </div>\n  <div>\n    All (13)\n  </div>\n  <div>\n    All (14)\n  </div>\n  <div>\n    All (15)\n  </div>\n</ul>\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, div0, div1, div2, div3, div4, div5, hr0, div6, div7, div8, div9, hr1, ul0, ul1, ul2, ul3, #comment1\nINSERT div0/#text\nINSERT div6/#text\nINSERT ul0/div0/#text\nINSERT ul0/div1/#text\nINSERT ul0/div2/#text\nINSERT ul0/div3/#text\nINSERT ul1/div0/#text\nINSERT ul1/div1/#text\nINSERT ul1/div2/#text\nINSERT ul1/div3/#text\nINSERT ul2/div0/#text\nINSERT ul2/div1/#text\nINSERT ul2/div2/#text\nINSERT ul2/div3/#text\nINSERT ul3/div0/#text\nINSERT ul3/div1/#text\nINSERT ul3/div2/#text\nINSERT ul3/div3/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-many/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* get, over(1) */\" b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport function $setup($scope) {\n  _._return($scope, $_return($scope));\n}\nfunction $_return($scope) {\n  return () => html => _._el_read($scope[\"#div/0\"]).innerHTML = html;\n}\n_._resume(\"__tests__/tags/child.marko_0/_return\", $_return);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-many/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 361 (min) 186 (brotli)\n_._resume(\"a0\", function ($scope) {\n  return () => (html) => ($scope.a.innerHTML = html);\n});\nconst $setHtml3_getter = _._hoist_resume(\"b0\", 2, \"Aa\", \"Ac\");\n_._var_resume(\"b1\", _._const(2));\nconst $setHtml2_getter = _._hoist(2, \"Ab\");\n_._var_resume(\"b2\", _._const(2));\nconst $setHtml_getter = _._hoist(2, \"Aa\");\n(_._var_resume(\"b3\", _._const(2)),\n  _._script(\"b4\", ($scope) => {\n    ($setHtml_getter($scope)()(\"First Only\"),\n      $setHtml2_getter($scope)()(\"First Only\"));\n    {\n      let i = 0;\n      for (const fn of $setHtml3_getter($scope)) fn(`All (${i++})`);\n    }\n  }),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-many/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><hr><!><hr><!><!>\";\nexport const $walks = /* over(1), replace, over(2), replace, over(2), replace, over(2) */\"b%c%c%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _child, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nconst $setHtml3_getter = _._hoist_resume(\"__tests__/template.marko_0_setHtml3/hoist\", \"setHtml3\", \"BranchScopes:#ul/0\", \"BranchScopes:#text/2\");\nconst $for_content4__setHtml = _._var_resume(\"__tests__/template.marko_4_setHtml3/var\", /* @__PURE__ */_._const(\"setHtml3\", $scope => _._assert_hoist($scope.setHtml3)));\nconst $for_content4__setup = $scope => {\n  _._var($scope, \"#childScope/0\", $for_content4__setHtml);\n  _child($scope[\"#childScope/0\"]);\n};\nconst $for_content3__for = /* @__PURE__ */_._for_to(\"#ul/0\", _child_template, /* <child/var> */`0${_child_walks}&`, $for_content4__setup);\nconst $for_content3__setup = $scope => $for_content3__for($scope, [3, 0, 1]);\nconst $setHtml2_getter = _._hoist(\"setHtml2\", \"BranchScopes:#text/1\");\nconst $for_content2__setHtml = _._var_resume(\"__tests__/template.marko_2_setHtml2/var\", /* @__PURE__ */_._const(\"setHtml2\", $scope => _._assert_hoist($scope.setHtml2)));\nconst $for_content2__setup = $scope => {\n  _._var($scope, \"#childScope/0\", $for_content2__setHtml);\n  _child($scope[\"#childScope/0\"]);\n};\nconst $setHtml_getter = _._hoist(\"setHtml\", \"BranchScopes:#text/0\");\nconst $for_content__setHtml = _._var_resume(\"__tests__/template.marko_1_setHtml/var\", /* @__PURE__ */_._const(\"setHtml\", $scope => _._assert_hoist($scope.setHtml)));\nconst $for_content__setup = $scope => {\n  _._var($scope, \"#childScope/0\", $for_content__setHtml);\n  _child($scope[\"#childScope/0\"]);\n};\nconst $for = /* @__PURE__ */_._for_to(\"#text/0\", _child_template, /* <child/var> */`0${_child_walks}&`, $for_content__setup);\nconst $for2 = /* @__PURE__ */_._for_to(\"#text/1\", _child_template, /* <child/var> */`0${_child_walks}&`, $for_content2__setup);\nconst $to = /* @__PURE__ */_._let(\"to/3\", $scope => $for2($scope, [$scope.to, 0, 1]));\nconst $for3 = /* @__PURE__ */_._for_to(\"#text/2\", \"<ul></ul>\", /* get, over(1) */\" b\", $for_content3__setup);\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => {\n  $setHtml_getter($scope)()('First Only');\n  $setHtml2_getter($scope)()('First Only');\n  {\n    let i = 0;\n    for (const fn of $setHtml3_getter($scope)) {\n      fn(`All (${i++})`);\n    }\n  }\n});\nexport function $setup($scope) {\n  $for($scope, [5, 0, 1]);\n  $to($scope, 3);\n  $for3($scope, [3, 0, 1]);\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-many/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div></div>${_._el_resume($scope0_id, \"#div/0\")}`);\n  const $return = _._resume(() => html => (el => el())(_._el_read_error).innerHTML = html, \"__tests__/tags/child.marko_0/_return\", $scope0_id);\n  _._scope($scope0_id, {}, \"__tests__/tags/child.marko\", 0);\n  return $return;\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-many/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _child from \"./tags/child.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $setHtml3_getter = _._hoist($scope0_id, \"__tests__/template.marko_0_setHtml3/hoist\");\n  _._for_to(5, 0, 1, () => {\n    const $scope1_id = _._scope_id();\n    let setHtml = _child({});\n    _._scope($scope1_id, {\n      setHtml\n    }, \"__tests__/template.marko\", \"1:2\", {\n      setHtml: \"2:10\"\n    });\n    _._assert_hoist(setHtml);\n  }, 0, $scope0_id, \"#text/0\", 1, 0, 0, 0, 1);\n  let to = 3;\n  _._html(\"<hr>\");\n  _._for_to(to, 0, 1, () => {\n    const $scope2_id = _._scope_id();\n    let setHtml2 = _child({});\n    _._scope($scope2_id, {\n      setHtml2\n    }, \"__tests__/template.marko\", \"12:2\", {\n      setHtml2: \"13:10\"\n    });\n    _._assert_hoist(setHtml2);\n  }, 0, $scope0_id, \"#text/1\", 1, 0, 0, 0, 1);\n  _._html(\"<hr>\");\n  _._for_to(3, 0, 1, i => {\n    const $scope3_id = _._scope_id();\n    _._html(\"<ul>\");\n    _._for_to(3, 0, 1, j => {\n      const $scope4_id = _._scope_id();\n      let setHtml3 = _child({});\n      _._scope($scope4_id, {\n        setHtml3\n      }, \"__tests__/template.marko\", \"24:4\", {\n        setHtml3: \"25:12\"\n      });\n      _._assert_hoist(setHtml3);\n    }, 0, $scope3_id, \"#ul/0\", 1, 0, 0, 0, 1);\n    _._html(\"</ul>\");\n    _._scope($scope3_id, {}, \"__tests__/template.marko\", \"22:2\");\n  }, 0, $scope0_id, \"#text/2\", 1, 0, 0, 0, 1);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-many/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<div>\n  First Only\n</div>\n<div />\n<div />\n<div />\n<div />\n<div />\n<hr />\n<div>\n  First Only\n</div>\n<div />\n<div />\n<div />\n<hr />\n<ul>\n  <div>\n    All (0)\n  </div>\n  <div>\n    All (1)\n  </div>\n  <div>\n    All (2)\n  </div>\n  <div>\n    All (3)\n  </div>\n</ul>\n<ul>\n  <div>\n    All (4)\n  </div>\n  <div>\n    All (5)\n  </div>\n  <div>\n    All (6)\n  </div>\n  <div>\n    All (7)\n  </div>\n</ul>\n<ul>\n  <div>\n    All (8)\n  </div>\n  <div>\n    All (9)\n  </div>\n  <div>\n    All (10)\n  </div>\n  <div>\n    All (11)\n  </div>\n</ul>\n<ul>\n  <div>\n    All (12)\n  </div>\n  <div>\n    All (13)\n  </div>\n  <div>\n    All (14)\n  </div>\n  <div>\n    All (15)\n  </div>\n</ul>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-many/__snapshots__/resume.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      First Only\n    </div>\n    <!--M_*3 #div/0-->\n    <div />\n    <!--M_*5 #div/0-->\n    <div />\n    <!--M_*7 #div/0-->\n    <div />\n    <!--M_*9 #div/0-->\n    <div />\n    <!--M_*11 #div/0-->\n    <div />\n    <!--M_*13 #div/0-->\n    <hr />\n    <div>\n      First Only\n    </div>\n    <!--M_*15 #div/0-->\n    <div />\n    <!--M_*17 #div/0-->\n    <div />\n    <!--M_*19 #div/0-->\n    <div />\n    <!--M_*21 #div/0-->\n    <hr />\n    <ul>\n      <div>\n        All (0)\n      </div>\n      <!--M_*24 #div/0-->\n      <div>\n        All (1)\n      </div>\n      <!--M_*26 #div/0-->\n      <div>\n        All (2)\n      </div>\n      <!--M_*28 #div/0-->\n      <div>\n        All (3)\n      </div>\n      <!--M_*30 #div/0-->\n    </ul>\n    <ul>\n      <div>\n        All (4)\n      </div>\n      <!--M_*33 #div/0-->\n      <div>\n        All (5)\n      </div>\n      <!--M_*35 #div/0-->\n      <div>\n        All (6)\n      </div>\n      <!--M_*37 #div/0-->\n      <div>\n        All (7)\n      </div>\n      <!--M_*39 #div/0-->\n    </ul>\n    <ul>\n      <div>\n        All (8)\n      </div>\n      <!--M_*42 #div/0-->\n      <div>\n        All (9)\n      </div>\n      <!--M_*44 #div/0-->\n      <div>\n        All (10)\n      </div>\n      <!--M_*46 #div/0-->\n      <div>\n        All (11)\n      </div>\n      <!--M_*48 #div/0-->\n    </ul>\n    <ul>\n      <div>\n        All (12)\n      </div>\n      <!--M_*51 #div/0-->\n      <div>\n        All (13)\n      </div>\n      <!--M_*53 #div/0-->\n      <div>\n        All (14)\n      </div>\n      <!--M_*55 #div/0-->\n      <div>\n        All (15)\n      </div>\n      <!--M_*57 #div/0-->\n    </ul>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.db = [0,\n          {\n            \"BranchScopes:#text/0\": [_.a = {\n              setHtml: _.A = {}\n            }, _.b = {\n              setHtml: _.B = {}\n            }, _.c = {\n              setHtml: _.C = {}\n            }, _.d = {\n              setHtml: _.D = {}\n            }, _.e = {\n              setHtml: _.E = {}\n            }, _.f = {\n              setHtml: _.F = {}\n            }],\n            \"BranchScopes:#text/1\": [_.g = {\n              setHtml2: _.G = {}\n            }, _.h = {\n              setHtml2: _.H = {}\n            }, _.i = {\n              setHtml2: _.I = {}\n            }, _.j = {\n              setHtml2: _.J = {}\n            }],\n            \"BranchScopes:#text/2\": [_.K = {\n              \"BranchScopes:#ul/0\": [_.k = {\n                setHtml3: _.L = {}\n              }, _.l = {\n                setHtml3: _.M = {}\n              }, _.m = {\n                setHtml3: _.N = {}\n              }, _.n = {\n                setHtml3: _.O = {}\n              }]\n            }, _.P = {\n              \"BranchScopes:#ul/0\": [_.o = {\n                setHtml3: _.Q = {}\n              }, _.p = {\n                setHtml3: _.R = {}\n              }, _.q = {\n                setHtml3: _.S = {}\n              }, _.r = {\n                setHtml3: _.T = {}\n              }]\n            }, _.U = {\n              \"BranchScopes:#ul/0\": [_.s = {\n                setHtml3: _.V = {}\n              }, _.t = {\n                setHtml3: _.W = {}\n              }, _.u = {\n                setHtml3: _.X = {}\n              }, _.v = {\n                setHtml3: _.Y = {}\n              }]\n            }, _.Z = {\n              \"BranchScopes:#ul/0\": [_.w = {\n                setHtml3: _.$ = {}\n              }, _.x = {\n                setHtml3: _.ab = {}\n              }, _.y = {\n                setHtml3: _.bb = {}\n              }, _.z = {\n                setHtml3: _.cb = {}\n              }]\n            }]\n          }, _.a, _.A, _.b, _.B, _.c, _.C, _.d, _.D, _.e, _.E, _.f, _.F, _\n          .g, _.G, _.h, _.H, _.i, _.I, _.j, _.J, _.K, _.k, _.L, _.l, _.M, _\n          .m, _.N, _.n, _.O, _.P, _.o, _.Q, _.p, _.R, _.q, _.S, _.r, _.T, _\n          .U, _.s, _.V, _.t, _.W, _.u, _.X, _.v, _.Y, _.Z, _.w, _.$, _.x, _\n          .ab, _.y, _.bb, _.z, _.cb\n        ], _.a.setHtml = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.A), _.b.setHtml = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.B), _.c.setHtml = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.C), _.d.setHtml = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.D), _.e.setHtml = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.E), _.f.setHtml = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.F), _.g.setHtml2 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.G), _.h.setHtml2 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.H), _.i.setHtml2 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.I), _.j.setHtml2 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.J), _.k.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.L), _.l.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.M), _.m.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.N), _.n.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.O), _.o.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.Q), _.p.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.R), _.q.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.S), _.r.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.T), _.s.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.V), _.t.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.W), _.u.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.X), _.v.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.Y), _.w.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.$), _.x.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.ab), _.y.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.bb), _.z.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.cb), _.db),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div0/#text\nINSERT html/body/div6/#text\nINSERT html/body/ul0/div0/#text\nINSERT html/body/ul0/div1/#text\nINSERT html/body/ul0/div2/#text\nINSERT html/body/ul0/div3/#text\nINSERT html/body/ul1/div0/#text\nINSERT html/body/ul1/div1/#text\nINSERT html/body/ul1/div2/#text\nINSERT html/body/ul1/div3/#text\nINSERT html/body/ul2/div0/#text\nINSERT html/body/ul2/div1/#text\nINSERT html/body/ul2/div2/#text\nINSERT html/body/ul2/div3/#text\nINSERT html/body/ul3/div0/#text\nINSERT html/body/ul3/div1/#text\nINSERT html/body/ul3/div2/#text\nINSERT html/body/ul3/div3/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-many/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n<div />\n<div />\n<div />\n<div />\n<div />\n<hr />\n<div />\n<div />\n<div />\n<div />\n<hr />\n<ul>\n  <div />\n  <div />\n  <div />\n  <div />\n</ul>\n<ul>\n  <div />\n  <div />\n  <div />\n  <div />\n</ul>\n<ul>\n  <div />\n  <div />\n  <div />\n  <div />\n</ul>\n<ul>\n  <div />\n  <div />\n  <div />\n  <div />\n</ul>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-many/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div></div><!--M_*3 #div/0--><div></div><!--M_*5 #div/0--><div></div><!--M_*7 #div/0--><div></div><!--M_*9 #div/0--><div></div><!--M_*11 #div/0--><div></div><!--M_*13 #div/0--><hr><div></div><!--M_*15 #div/0--><div></div><!--M_*17 #div/0--><div></div><!--M_*19 #div/0--><div></div><!--M_*21 #div/0--><hr><ul><div></div><!--M_*24 #div/0--><div></div><!--M_*26 #div/0--><div></div><!--M_*28 #div/0--><div></div><!--M_*30 #div/0--></ul><ul><div></div><!--M_*33 #div/0--><div></div><!--M_*35 #div/0--><div></div><!--M_*37 #div/0--><div></div><!--M_*39 #div/0--></ul><ul><div></div><!--M_*42 #div/0--><div></div><!--M_*44 #div/0--><div></div><!--M_*46 #div/0--><div></div><!--M_*48 #div/0--></ul><ul><div></div><!--M_*51 #div/0--><div></div><!--M_*53 #div/0--><div></div><!--M_*55 #div/0--><div></div><!--M_*57 #div/0--></ul><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.db=[0,{\"BranchScopes:#text/0\":[_.a={setHtml:_.A={}},_.b={setHtml:_.B={}},_.c={setHtml:_.C={}},_.d={setHtml:_.D={}},_.e={setHtml:_.E={}},_.f={setHtml:_.F={}}],\"BranchScopes:#text/1\":[_.g={setHtml2:_.G={}},_.h={setHtml2:_.H={}},_.i={setHtml2:_.I={}},_.j={setHtml2:_.J={}}],\"BranchScopes:#text/2\":[_.K={\"BranchScopes:#ul/0\":[_.k={setHtml3:_.L={}},_.l={setHtml3:_.M={}},_.m={setHtml3:_.N={}},_.n={setHtml3:_.O={}}]},_.P={\"BranchScopes:#ul/0\":[_.o={setHtml3:_.Q={}},_.p={setHtml3:_.R={}},_.q={setHtml3:_.S={}},_.r={setHtml3:_.T={}}]},_.U={\"BranchScopes:#ul/0\":[_.s={setHtml3:_.V={}},_.t={setHtml3:_.W={}},_.u={setHtml3:_.X={}},_.v={setHtml3:_.Y={}}]},_.Z={\"BranchScopes:#ul/0\":[_.w={setHtml3:_.$={}},_.x={setHtml3:_.ab={}},_.y={setHtml3:_.bb={}},_.z={setHtml3:_.cb={}}]}]},_.a,_.A,_.b,_.B,_.c,_.C,_.d,_.D,_.e,_.E,_.f,_.F,_.g,_.G,_.h,_.H,_.i,_.I,_.j,_.J,_.K,_.k,_.L,_.l,_.M,_.m,_.N,_.n,_.O,_.P,_.o,_.Q,_.p,_.R,_.q,_.S,_.r,_.T,_.U,_.s,_.V,_.t,_.W,_.u,_.X,_.v,_.Y,_.Z,_.w,_.$,_.x,_.ab,_.y,_.bb,_.z,_.cb],_.a.setHtml=_._[\"__tests__/tags/child.marko_0/_return\"](_.A),_.b.setHtml=_._[\"__tests__/tags/child.marko_0/_return\"](_.B),_.c.setHtml=_._[\"__tests__/tags/child.marko_0/_return\"](_.C),_.d.setHtml=_._[\"__tests__/tags/child.marko_0/_return\"](_.D),_.e.setHtml=_._[\"__tests__/tags/child.marko_0/_return\"](_.E),_.f.setHtml=_._[\"__tests__/tags/child.marko_0/_return\"](_.F),_.g.setHtml2=_._[\"__tests__/tags/child.marko_0/_return\"](_.G),_.h.setHtml2=_._[\"__tests__/tags/child.marko_0/_return\"](_.H),_.i.setHtml2=_._[\"__tests__/tags/child.marko_0/_return\"](_.I),_.j.setHtml2=_._[\"__tests__/tags/child.marko_0/_return\"](_.J),_.k.setHtml3=_._[\"__tests__/tags/child.marko_0/_return\"](_.L),_.l.setHtml3=_._[\"__tests__/tags/child.marko_0/_return\"](_.M),_.m.setHtml3=_._[\"__tests__/tags/child.marko_0/_return\"](_.N),_.n.setHtml3=_._[\"__tests__/tags/child.marko_0/_return\"](_.O),_.o.setHtml3=_._[\"__tests__/tags/child.marko_0/_return\"](_.Q),_.p.setHtml3=_._[\"__tests__/tags/child.marko_0/_return\"](_.R),_.q.setHtml3=_._[\"__tests__/tags/child.marko_0/_return\"](_.S),_.r.setHtml3=_._[\"__tests__/tags/child.marko_0/_return\"](_.T),_.s.setHtml3=_._[\"__tests__/tags/child.marko_0/_return\"](_.V),_.t.setHtml3=_._[\"__tests__/tags/child.marko_0/_return\"](_.W),_.u.setHtml3=_._[\"__tests__/tags/child.marko_0/_return\"](_.X),_.v.setHtml3=_._[\"__tests__/tags/child.marko_0/_return\"](_.Y),_.w.setHtml3=_._[\"__tests__/tags/child.marko_0/_return\"](_.$),_.x.setHtml3=_._[\"__tests__/tags/child.marko_0/_return\"](_.ab),_.y.setHtml3=_._[\"__tests__/tags/child.marko_0/_return\"](_.bb),_.z.setHtml3=_._[\"__tests__/tags/child.marko_0/_return\"](_.cb),_.db),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*3 #div/0-->\n    <div />\n    <!--M_*5 #div/0-->\n    <div />\n    <!--M_*7 #div/0-->\n    <div />\n    <!--M_*9 #div/0-->\n    <div />\n    <!--M_*11 #div/0-->\n    <div />\n    <!--M_*13 #div/0-->\n    <hr />\n    <div />\n    <!--M_*15 #div/0-->\n    <div />\n    <!--M_*17 #div/0-->\n    <div />\n    <!--M_*19 #div/0-->\n    <div />\n    <!--M_*21 #div/0-->\n    <hr />\n    <ul>\n      <div />\n      <!--M_*24 #div/0-->\n      <div />\n      <!--M_*26 #div/0-->\n      <div />\n      <!--M_*28 #div/0-->\n      <div />\n      <!--M_*30 #div/0-->\n    </ul>\n    <ul>\n      <div />\n      <!--M_*33 #div/0-->\n      <div />\n      <!--M_*35 #div/0-->\n      <div />\n      <!--M_*37 #div/0-->\n      <div />\n      <!--M_*39 #div/0-->\n    </ul>\n    <ul>\n      <div />\n      <!--M_*42 #div/0-->\n      <div />\n      <!--M_*44 #div/0-->\n      <div />\n      <!--M_*46 #div/0-->\n      <div />\n      <!--M_*48 #div/0-->\n    </ul>\n    <ul>\n      <div />\n      <!--M_*51 #div/0-->\n      <div />\n      <!--M_*53 #div/0-->\n      <div />\n      <!--M_*55 #div/0-->\n      <div />\n      <!--M_*57 #div/0-->\n    </ul>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.db = [0,\n          {\n            \"BranchScopes:#text/0\": [_.a = {\n              setHtml: _.A = {}\n            }, _.b = {\n              setHtml: _.B = {}\n            }, _.c = {\n              setHtml: _.C = {}\n            }, _.d = {\n              setHtml: _.D = {}\n            }, _.e = {\n              setHtml: _.E = {}\n            }, _.f = {\n              setHtml: _.F = {}\n            }],\n            \"BranchScopes:#text/1\": [_.g = {\n              setHtml2: _.G = {}\n            }, _.h = {\n              setHtml2: _.H = {}\n            }, _.i = {\n              setHtml2: _.I = {}\n            }, _.j = {\n              setHtml2: _.J = {}\n            }],\n            \"BranchScopes:#text/2\": [_.K = {\n              \"BranchScopes:#ul/0\": [_.k = {\n                setHtml3: _.L = {}\n              }, _.l = {\n                setHtml3: _.M = {}\n              }, _.m = {\n                setHtml3: _.N = {}\n              }, _.n = {\n                setHtml3: _.O = {}\n              }]\n            }, _.P = {\n              \"BranchScopes:#ul/0\": [_.o = {\n                setHtml3: _.Q = {}\n              }, _.p = {\n                setHtml3: _.R = {}\n              }, _.q = {\n                setHtml3: _.S = {}\n              }, _.r = {\n                setHtml3: _.T = {}\n              }]\n            }, _.U = {\n              \"BranchScopes:#ul/0\": [_.s = {\n                setHtml3: _.V = {}\n              }, _.t = {\n                setHtml3: _.W = {}\n              }, _.u = {\n                setHtml3: _.X = {}\n              }, _.v = {\n                setHtml3: _.Y = {}\n              }]\n            }, _.Z = {\n              \"BranchScopes:#ul/0\": [_.w = {\n                setHtml3: _.$ = {}\n              }, _.x = {\n                setHtml3: _.ab = {}\n              }, _.y = {\n                setHtml3: _.bb = {}\n              }, _.z = {\n                setHtml3: _.cb = {}\n              }]\n            }]\n          }, _.a, _.A, _.b, _.B, _.c, _.C, _.d, _.D, _.e, _.E, _.f, _.F, _\n          .g, _.G, _.h, _.H, _.i, _.I, _.j, _.J, _.K, _.k, _.L, _.l, _.M, _\n          .m, _.N, _.n, _.O, _.P, _.o, _.Q, _.p, _.R, _.q, _.S, _.r, _.T, _\n          .U, _.s, _.V, _.t, _.W, _.u, _.X, _.v, _.Y, _.Z, _.w, _.$, _.x, _\n          .ab, _.y, _.bb, _.z, _.cb\n        ], _.a.setHtml = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.A), _.b.setHtml = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.B), _.c.setHtml = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.C), _.d.setHtml = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.D), _.e.setHtml = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.E), _.f.setHtml = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.F), _.g.setHtml2 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.G), _.h.setHtml2 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.H), _.i.setHtml2 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.I), _.j.setHtml2 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.J), _.k.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.L), _.l.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.M), _.m.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.N), _.n.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.O), _.o.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.Q), _.p.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.R), _.q.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.S), _.r.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.T), _.s.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.V), _.t.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.W), _.u.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.X), _.v.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.Y), _.w.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.$), _.x.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.ab), _.y.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.bb), _.z.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.cb), _.db),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/#comment0\nINSERT html/body/div1\nINSERT html/body/#comment1\nINSERT html/body/div2\nINSERT html/body/#comment2\nINSERT html/body/div3\nINSERT html/body/#comment3\nINSERT html/body/div4\nINSERT html/body/#comment4\nINSERT html/body/div5\nINSERT html/body/#comment5\nINSERT html/body/hr0\nINSERT html/body/div6\nINSERT html/body/#comment6\nINSERT html/body/div7\nINSERT html/body/#comment7\nINSERT html/body/div8\nINSERT html/body/#comment8\nINSERT html/body/div9\nINSERT html/body/#comment9\nINSERT html/body/hr1\nINSERT html/body/ul0\nINSERT html/body/ul0/div0\nINSERT html/body/ul0/#comment0\nINSERT html/body/ul0/div1\nINSERT html/body/ul0/#comment1\nINSERT html/body/ul0/div2\nINSERT html/body/ul0/#comment2\nINSERT html/body/ul0/div3\nINSERT html/body/ul0/#comment3\nINSERT html/body/ul1\nINSERT html/body/ul1/div0\nINSERT html/body/ul1/#comment0\nINSERT html/body/ul1/div1\nINSERT html/body/ul1/#comment1\nINSERT html/body/ul1/div2\nINSERT html/body/ul1/#comment2\nINSERT html/body/ul1/div3\nINSERT html/body/ul1/#comment3\nINSERT html/body/ul2\nINSERT html/body/ul2/div0\nINSERT html/body/ul2/#comment0\nINSERT html/body/ul2/div1\nINSERT html/body/ul2/#comment1\nINSERT html/body/ul2/div2\nINSERT html/body/ul2/#comment2\nINSERT html/body/ul2/div3\nINSERT html/body/ul2/#comment3\nINSERT html/body/ul3\nINSERT html/body/ul3/div0\nINSERT html/body/ul3/#comment0\nINSERT html/body/ul3/div1\nINSERT html/body/ul3/#comment1\nINSERT html/body/ul3/div2\nINSERT html/body/ul3/#comment2\nINSERT html/body/ul3/div3\nINSERT html/body/ul3/#comment3\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-many/tags/child.marko",
    "content": "<div/el />\n<return=() => (html) => el().innerHTML = html />"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-many/template.marko",
    "content": "<for to=5>\n  <child/setHtml />\n</for>\n\n<script>\n  setHtml()('First Only');\n</script>\n\n<hr />\n\n<let/to=3 />\n<for to=to>\n  <child/setHtml2 />\n</for>\n\n<script>\n  setHtml2()('First Only');\n</script>\n\n<hr />\n\n<for|i| to=3>\n  <ul>\n  <for|j| to=3>\n    <child/setHtml3 />\n  </for>\n  </ul>\n</for>\n\n<script>\n  let i = 0;\n  for (const fn of setHtml3) {\n    fn(`All (${i++})`);\n  }\n</script>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-many/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [{ show: true }],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-minimum-scope/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"r\",\n      \"$init\": \"t\",\n      \"$$ref_getter\": \"e\",\n      \"$$for_content__ref_getter\": \"n\",\n      \"$$for_content2__ref_getter\": \"s\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-minimum-scope/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<pre\n  id=\"root\"\n>\n  9; 0,0\n\t\n</pre>\n<pre\n  id=\"outer\"\n>\n  3; 0,0\n\t3; 1,0\n\t3; 2,0\n\t\n</pre>\n<pre\n  id=\"inner\"\n>\n  1; 0,0\n\t1; 0,1\n\t1; 0,2\n\t1; 1,0\n\t1; 1,1\n\t1; 1,2\n\t1; 2,0\n\t1; 2,1\n\t1; 2,2\n\t\n</pre>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-minimum-scope/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<pre\n  id=\"root\"\n>\n  9; 0,0\n\t\n</pre>\n<pre\n  id=\"outer\"\n>\n  3; 0,0\n\t3; 1,0\n\t3; 2,0\n\t\n</pre>\n<pre\n  id=\"inner\"\n>\n  1; 0,0\n\t1; 0,1\n\t1; 0,2\n\t1; 1,0\n\t1; 1,1\n\t1; 1,2\n\t1; 2,0\n\t1; 2,1\n\t1; 2,2\n\t\n</pre>\n<!---->\n<!---->\n<!---->\n<!---->\n<!---->\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT pre0, pre1, pre2, #comment0, #text0, #text1, #text2, #comment1, #comment2, #text3, #text4, #text5, #comment3, #comment4, #text6, #text7, #text8, #comment5, #comment6\nINSERT pre0/#text\nINSERT #text\nREMOVE #text in pre1\nINSERT #text\nREMOVE #text in pre1\nINSERT pre1/#text\nINSERT #text\nREMOVE #text in pre2\nINSERT #text\nREMOVE #text in pre2\nINSERT #text\nREMOVE #text in pre2\nINSERT #text\nREMOVE #text in pre2\nINSERT #text\nREMOVE #text in pre2\nINSERT #text\nREMOVE #text in pre2\nINSERT #text\nREMOVE #text in pre2\nINSERT #text\nREMOVE #text in pre2\nINSERT pre2/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-minimum-scope/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"\";\nexport const $walks = \"\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $input_value = /* @__PURE__ */_._const(\"input_value\", $scope => _._return($scope, $_return($scope)));\nexport const $input = ($scope, input) => $input_value($scope, input.value);\nfunction $_return($scope) {\n  return () => $scope.input_value;\n}\n_._resume(\"__tests__/tags/child.marko_0/_return\", $_return);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-minimum-scope/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 397 (min) 180 (brotli)\n_._resume(\"a0\", function ($scope) {\n  return () => $scope.c;\n});\nconst $ref_getter = _._hoist_resume(\"b0\", 3, \"Aa\", \"Ad\"),\n  $for_content__ref_getter = _._hoist_resume(\"b1\", 3, \"Aa\"),\n  $for_content2__ref_getter = _._hoist_resume(\"b2\", 3);\n(_._script(\n  \"b3\",\n  ($scope) =>\n    ($scope._._.c.innerHTML += `${[...$for_content2__ref_getter($scope)].length}; ${$for_content2__ref_getter($scope)()}\\n\\t`),\n),\n  _._var_resume(\"b4\", _._const(3)),\n  _._script(\n    \"b5\",\n    ($scope) =>\n      ($scope._.b.innerHTML += `${[...$for_content__ref_getter($scope)].length}; ${$for_content__ref_getter($scope)()}\\n\\t`),\n  ),\n  _._script(\n    \"b6\",\n    ($scope) =>\n      ($scope.a.innerHTML += `${[...$ref_getter($scope)].length}; ${$ref_getter($scope)()}\\n\\t`),\n  ),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-minimum-scope/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<pre id=root></pre><pre id=outer></pre><pre id=inner></pre><!><!>\";\nexport const $walks = /* get, over(1), get, over(1), get, over(1), replace, over(2) */\" b b b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _child, $input_value as _child_input_value, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nconst $ref_getter = _._hoist_resume(\"__tests__/template.marko_0_ref/hoist\", \"ref\", \"BranchScopes:#text/0\", \"BranchScopes:#text/3\");\nconst $for_content__ref_getter = _._hoist_resume(\"__tests__/template.marko_1_ref/hoist\", \"ref\", \"BranchScopes:#text/0\");\nconst $for_content2__ref_getter = _._hoist_resume(\"__tests__/template.marko_2_ref/hoist\", \"ref\");\nconst $for_content2__setup__script = _._script(\"__tests__/template.marko_2\", $scope => (_._el_read($scope._._[\"#pre/2\"]).innerHTML += `${[...$for_content2__ref_getter($scope)].length}; ${$for_content2__ref_getter($scope)()}\\n\\t`));\nconst $for_content2__setup = $scope => {\n  _._var($scope, \"#childScope/0\", $for_content2__ref);\n  _child($scope[\"#childScope/0\"]);\n  _child_input_value($scope[\"#childScope/0\"], `${$scope._[\"#LoopKey\"]},${$scope[\"#LoopKey\"]}`);\n  $for_content2__setup__script($scope);\n};\nconst $for_content2__ref = _._var_resume(\"__tests__/template.marko_2_ref/var\", /* @__PURE__ */_._const(\"ref\", $scope => _._assert_hoist($scope.ref)));\nconst $for_content__for = /* @__PURE__ */_._for_to(\"#text/0\", _child_template, /* <child/var> */`0${_child_walks}&`, $for_content2__setup);\nconst $for_content__setup__script = _._script(\"__tests__/template.marko_1\", $scope => (_._el_read($scope._[\"#pre/1\"]).innerHTML += `${[...$for_content__ref_getter($scope)].length}; ${$for_content__ref_getter($scope)()}\\n\\t`));\nconst $for_content__setup = $scope => {\n  $for_content__for($scope, [2, 0, 1]);\n  $for_content__setup__script($scope);\n};\nconst $for = /* @__PURE__ */_._for_to(\"#text/3\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", $for_content__setup);\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => (_._el_read($scope[\"#pre/0\"]).innerHTML += `${[...$ref_getter($scope)].length}; ${$ref_getter($scope)()}\\n\\t`));\nexport function $setup($scope) {\n  $for($scope, [2, 0, 1]);\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-minimum-scope/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $return = _._resume(() => input.value, \"__tests__/tags/child.marko_0/_return\", $scope0_id);\n  _._scope($scope0_id, {\n    input_value: input.value\n  }, \"__tests__/tags/child.marko\", 0, {\n    input_value: [\"input.value\"]\n  });\n  return $return;\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-minimum-scope/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _child from \"./tags/child.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $ref_getter = _._hoist($scope0_id, \"__tests__/template.marko_0_ref/hoist\");\n  _._html(`<pre id=root></pre>${_._el_resume($scope0_id, \"#pre/0\")}<pre id=outer></pre>${_._el_resume($scope0_id, \"#pre/1\")}<pre id=inner></pre>${_._el_resume($scope0_id, \"#pre/2\")}`);\n  _._for_to(2, 0, 1, i => {\n    const $scope1_id = _._scope_id();\n    const $for_content__ref_getter = _._hoist($scope1_id, \"__tests__/template.marko_1_ref/hoist\");\n    _._for_to(2, 0, 1, j => {\n      const $scope2_id = _._scope_id();\n      const $for_content2__ref_getter = _._hoist($scope2_id, \"__tests__/template.marko_2_ref/hoist\");\n      let ref = _child({\n        value: `${i},${j}`\n      });\n      _._script($scope2_id, \"__tests__/template.marko_2\");\n      _._scope($scope2_id, {\n        ref,\n        _: _._scope_with_id($scope1_id)\n      }, \"__tests__/template.marko\", \"7:4\", {\n        ref: \"9:12\"\n      });\n      _._assert_hoist(ref);\n    }, 0, $scope1_id, \"#text/0\", 1, 0, 0);\n    _._script($scope1_id, \"__tests__/template.marko_1\");\n    _._scope($scope1_id, {\n      _: _._scope_with_id($scope0_id)\n    }, \"__tests__/template.marko\", \"5:2\");\n  }, 0, $scope0_id, \"#text/3\", 1, 0, 0);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-minimum-scope/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<pre\n  id=\"root\"\n>\n  9; 0,0\n\t\n</pre>\n<pre\n  id=\"outer\"\n>\n  3; 0,0\n\t3; 1,0\n\t3; 2,0\n\t\n</pre>\n<pre\n  id=\"inner\"\n>\n  1; 0,0\n\t1; 0,1\n\t1; 0,2\n\t1; 1,0\n\t1; 1,1\n\t1; 1,2\n\t1; 2,0\n\t1; 2,1\n\t1; 2,2\n\t\n</pre>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-minimum-scope/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <pre\n      id=\"root\"\n    >\n      9; 0,0\n\t\n    </pre>\n    <!--M_*1 #pre/0-->\n    <pre\n      id=\"outer\"\n    >\n      3; 0,0\n\t3; 1,0\n\t3; 2,0\n\t\n    </pre>\n    <!--M_*1 #pre/1-->\n    <pre\n      id=\"inner\"\n    >\n      1; 0,0\n\t1; 0,1\n\t1; 0,2\n\t1; 1,0\n\t1; 1,1\n\t1; 1,2\n\t1; 2,0\n\t1; 2,1\n\t1; 2,2\n\t\n    </pre>\n    <!--M_*1 #pre/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.n = [0, _.e = {\n              \"BranchScopes:#text/3\": [_.b = {\n                \"BranchScopes:#text/0\": [_.a = {\n                  ref: _.o = {\n                    input_value: \"0,0\"\n                  }\n                }, _.c = {\n                  ref: _.p = {\n                    input_value: \"0,1\"\n                  }\n                }, _.d = {\n                  ref: _.q = {\n                    input_value: \"0,2\"\n                  }\n                }]\n              }, _.g = {\n                \"BranchScopes:#text/0\": [_.f = {\n                  ref: _.r = {\n                    input_value: \"1,0\"\n                  }\n                }, _.h = {\n                  ref: _.s = {\n                    input_value: \"1,1\"\n                  }\n                }, _.i = {\n                  ref: _.t = {\n                    input_value: \"1,2\"\n                  }\n                }]\n              }, _.k = {\n                \"BranchScopes:#text/0\": [_.j = {\n                  ref: _.u = {\n                    input_value: \"2,0\"\n                  }\n                }, _.l = {\n                  ref: _.v = {\n                    input_value: \"2,1\"\n                  }\n                }, _.m = {\n                  ref: _.w = {\n                    input_value: \"2,2\"\n                  }\n                }]\n              }]\n            }, , _.a, _.o, _.c, _.p, _.d, _.q, , _.f, _.r, _.h, _.s, _.i, _\n            .t, , _.j, _.u, _.l, _.v, _.m, _.w\n          ], _.a._ = _.c._ = _.d._ = _.n[2] = _.b, _.b._ = _.g._ = _.k._ = _\n          .e, _.f._ = _.h._ = _.i._ = _.n[9] = _.g, _.j._ = _.l._ = _.m._ = _\n          .n[16] = _.k, _.a.ref = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.o), _.c.ref = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.p), _.d.ref = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.q), _.f.ref = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.r), _.h.ref = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.s), _.i.ref = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.t), _.j.ref = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.u), _.l.ref = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.v), _.m.ref = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.w), _.n),\n        \"__tests__/template.marko_2 3 5 7 __tests__/template.marko_1 2 __tests__/template.marko_2 10 12 14 __tests__/template.marko_1 9 __tests__/template.marko_2 17 19 21 __tests__/template.marko_1 16 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE #text in html/body/pre2\nINSERT #text\nREMOVE #text in html/body/pre2\nINSERT #text\nINSERT #text\nREMOVE #text in html/body/pre2\nINSERT #text\nREMOVE #text in html/body/pre2\nINSERT #text\nREMOVE #text in html/body/pre2\nINSERT #text\nREMOVE #text in html/body/pre1\nINSERT #text\nREMOVE #text in html/body/pre2\nINSERT #text\nREMOVE #text in html/body/pre2\nINSERT #text\nREMOVE #text in html/body/pre2\nINSERT html/body/pre2/#text\nREMOVE #text in html/body/pre1\nINSERT html/body/pre1/#text\nINSERT html/body/pre0/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-minimum-scope/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<pre\n  id=\"root\"\n/>\n<pre\n  id=\"outer\"\n/>\n<pre\n  id=\"inner\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-minimum-scope/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <pre id=root></pre><!--M_*1 #pre/0--><pre id=outer></pre><!--M_*1 #pre/1--><pre id=inner></pre><!--M_*1 #pre/2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.n=[0,_.e={\"BranchScopes:#text/3\":[_.b={\"BranchScopes:#text/0\":[_.a={ref:_.o={input_value:\"0,0\"}},_.c={ref:_.p={input_value:\"0,1\"}},_.d={ref:_.q={input_value:\"0,2\"}}]},_.g={\"BranchScopes:#text/0\":[_.f={ref:_.r={input_value:\"1,0\"}},_.h={ref:_.s={input_value:\"1,1\"}},_.i={ref:_.t={input_value:\"1,2\"}}]},_.k={\"BranchScopes:#text/0\":[_.j={ref:_.u={input_value:\"2,0\"}},_.l={ref:_.v={input_value:\"2,1\"}},_.m={ref:_.w={input_value:\"2,2\"}}]}]},,_.a,_.o,_.c,_.p,_.d,_.q,,_.f,_.r,_.h,_.s,_.i,_.t,,_.j,_.u,_.l,_.v,_.m,_.w],_.a._=_.c._=_.d._=_.n[2]=_.b,_.b._=_.g._=_.k._=_.e,_.f._=_.h._=_.i._=_.n[9]=_.g,_.j._=_.l._=_.m._=_.n[16]=_.k,_.a.ref=_._[\"__tests__/tags/child.marko_0/_return\"](_.o),_.c.ref=_._[\"__tests__/tags/child.marko_0/_return\"](_.p),_.d.ref=_._[\"__tests__/tags/child.marko_0/_return\"](_.q),_.f.ref=_._[\"__tests__/tags/child.marko_0/_return\"](_.r),_.h.ref=_._[\"__tests__/tags/child.marko_0/_return\"](_.s),_.i.ref=_._[\"__tests__/tags/child.marko_0/_return\"](_.t),_.j.ref=_._[\"__tests__/tags/child.marko_0/_return\"](_.u),_.l.ref=_._[\"__tests__/tags/child.marko_0/_return\"](_.v),_.m.ref=_._[\"__tests__/tags/child.marko_0/_return\"](_.w),_.n),\"__tests__/template.marko_2 3 5 7 __tests__/template.marko_1 2 __tests__/template.marko_2 10 12 14 __tests__/template.marko_1 9 __tests__/template.marko_2 17 19 21 __tests__/template.marko_1 16 __tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <pre\n      id=\"root\"\n    />\n    <!--M_*1 #pre/0-->\n    <pre\n      id=\"outer\"\n    />\n    <!--M_*1 #pre/1-->\n    <pre\n      id=\"inner\"\n    />\n    <!--M_*1 #pre/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.n = [0, _.e = {\n              \"BranchScopes:#text/3\": [_.b = {\n                \"BranchScopes:#text/0\": [_.a = {\n                  ref: _.o = {\n                    input_value: \"0,0\"\n                  }\n                }, _.c = {\n                  ref: _.p = {\n                    input_value: \"0,1\"\n                  }\n                }, _.d = {\n                  ref: _.q = {\n                    input_value: \"0,2\"\n                  }\n                }]\n              }, _.g = {\n                \"BranchScopes:#text/0\": [_.f = {\n                  ref: _.r = {\n                    input_value: \"1,0\"\n                  }\n                }, _.h = {\n                  ref: _.s = {\n                    input_value: \"1,1\"\n                  }\n                }, _.i = {\n                  ref: _.t = {\n                    input_value: \"1,2\"\n                  }\n                }]\n              }, _.k = {\n                \"BranchScopes:#text/0\": [_.j = {\n                  ref: _.u = {\n                    input_value: \"2,0\"\n                  }\n                }, _.l = {\n                  ref: _.v = {\n                    input_value: \"2,1\"\n                  }\n                }, _.m = {\n                  ref: _.w = {\n                    input_value: \"2,2\"\n                  }\n                }]\n              }]\n            }, , _.a, _.o, _.c, _.p, _.d, _.q, , _.f, _.r, _.h, _.s, _.i, _\n            .t, , _.j, _.u, _.l, _.v, _.m, _.w\n          ], _.a._ = _.c._ = _.d._ = _.n[2] = _.b, _.b._ = _.g._ = _.k._ = _\n          .e, _.f._ = _.h._ = _.i._ = _.n[9] = _.g, _.j._ = _.l._ = _.m._ = _\n          .n[16] = _.k, _.a.ref = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.o), _.c.ref = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.p), _.d.ref = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.q), _.f.ref = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.r), _.h.ref = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.s), _.i.ref = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.t), _.j.ref = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.u), _.l.ref = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.v), _.m.ref = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.w), _.n),\n        \"__tests__/template.marko_2 3 5 7 __tests__/template.marko_1 2 __tests__/template.marko_2 10 12 14 __tests__/template.marko_1 9 __tests__/template.marko_2 17 19 21 __tests__/template.marko_1 16 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/pre0\nINSERT html/body/#comment0\nINSERT html/body/pre1\nINSERT html/body/#comment1\nINSERT html/body/pre2\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-minimum-scope/tags/child.marko",
    "content": "<return=() => input.value/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-minimum-scope/template.marko",
    "content": "<pre#root/$root />\n<pre#outer/$outer />\n<pre#inner/$inner />\n<script>$root().innerHTML += `${[...ref].length}; ${ref()}\\n\\t`</script>\n<for|i| to=2>\n  <script>$outer().innerHTML += `${[...ref].length}; ${ref()}\\n\\t`</script>\n  <for|j| to=2>\n    <script>$inner().innerHTML += `${[...ref].length}; ${ref()}\\n\\t`</script>\n    <child/ref=`${i},${j}` />\n  </for>\n</for>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-same-scope/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"r\",\n      \"$init\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-same-scope/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-same-scope/__snapshots__/csr.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<div />\n```\n\n# Mutations\n```\nINSERT div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-same-scope/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* get, over(1) */\" b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport function $setup($scope) {\n  _._return($scope, $_return($scope));\n}\nfunction $_return($scope) {\n  return () => html => _._el_read($scope[\"#div/0\"]).innerHTML = html;\n}\n_._resume(\"__tests__/tags/child.marko_0/_return\", $_return);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-same-scope/__snapshots__/dom.expected/tags/thing.js",
    "content": "export const $template = \"\";\nexport const $walks = \"\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $input_value__script = _._script(\"__tests__/tags/thing.marko_0_input_value\", $scope => $scope.input_value);\nexport const $input_value = /* @__PURE__ */_._const(\"input_value\", $input_value__script);\nexport const $input = ($scope, input) => $input_value($scope, input.value);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/thing.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-same-scope/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 141 (min) 115 (brotli)\n(_._script(\"b0\", ($scope) => $scope.c),\n  _._resume(\"a0\", function ($scope) {\n    return () => (html) => ($scope.a.innerHTML = html);\n  }),\n  _._hoist_resume(\"c0\", 3),\n  _._var_resume(\"c1\", _._const(3)),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-same-scope/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `${_thing_template}${_child_template}`;\nexport const $walks = /* <thing>, <child/var> */`/${_thing_walks}&0${_child_walks}&`;\nimport { $setup as _thing, $input_value as _thing_input_value, $template as _thing_template, $walks as _thing_walks } from \"./tags/thing.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _child, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nconst $setHtml_getter = _._hoist_resume(\"__tests__/template.marko_0_setHtml/hoist\", \"setHtml\");\nexport function $setup($scope) {\n  _thing($scope[\"#childScope/0\"]);\n  _thing_input_value($scope[\"#childScope/0\"], $setHtml_getter($scope));\n  _._var($scope, \"#childScope/1\", $setHtml);\n  _child($scope[\"#childScope/1\"]);\n}\nconst $setHtml = _._var_resume(\"__tests__/template.marko_0_setHtml/var\", /* @__PURE__ */_._const(\"setHtml\", $scope => _._assert_hoist($scope.setHtml)));\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-same-scope/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div></div>${_._el_resume($scope0_id, \"#div/0\")}`);\n  const $return = _._resume(() => html => (el => el())(_._el_read_error).innerHTML = html, \"__tests__/tags/child.marko_0/_return\", $scope0_id);\n  _._scope($scope0_id, {}, \"__tests__/tags/child.marko\", 0);\n  return $return;\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-same-scope/__snapshots__/html.expected/tags/thing.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/thing.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._script($scope0_id, \"__tests__/tags/thing.marko_0_input_value\");\n  _._scope($scope0_id, {\n    input_value: input.value\n  }, \"__tests__/tags/thing.marko\", 0, {\n    input_value: [\"input.value\"]\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-same-scope/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _thing from \"./tags/thing.marko\";\nimport _child from \"./tags/child.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $setHtml_getter = _._hoist($scope0_id, \"__tests__/template.marko_0_setHtml/hoist\");\n  _thing({\n    value: $setHtml_getter\n  });\n  let setHtml = _child({});\n  _._scope($scope0_id, {\n    setHtml\n  }, \"__tests__/template.marko\", 0, {\n    setHtml: \"2:8\"\n  });\n  _._assert_hoist(setHtml);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-same-scope/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-same-scope/__snapshots__/resume.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*3 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.a = {\n          setHtml: _.c = {}\n        }, _.b = {}, _.c], _.b.input_value = _._[\n          \"__tests__/template.marko_0_setHtml/hoist\"\n          ](_.a), _.a.setHtml = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.c), _.d),\n        \"__tests__/tags/thing.marko_0_input_value 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-same-scope/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-same-scope/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div></div><!--M_*3 #div/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.d=[0,_.a={setHtml:_.c={}},_.b={},_.c],_.b.input_value=_._[\"__tests__/template.marko_0_setHtml/hoist\"](_.a),_.a.setHtml=_._[\"__tests__/tags/child.marko_0/_return\"](_.c),_.d),\"__tests__/tags/thing.marko_0_input_value 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*3 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.a = {\n          setHtml: _.c = {}\n        }, _.b = {}, _.c], _.b.input_value = _._[\n          \"__tests__/template.marko_0_setHtml/hoist\"\n          ](_.a), _.a.setHtml = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.c), _.d),\n        \"__tests__/tags/thing.marko_0_input_value 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-same-scope/tags/child.marko",
    "content": "<div/el />\n<return=() => (html) => el().innerHTML = html />"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-same-scope/tags/thing.marko",
    "content": "<script>\n  input.value\n</script>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-same-scope/template.marko",
    "content": "<thing=setHtml />\n<child/setHtml />\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-same-scope/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [{ show: true }],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-same-scope-calls-only/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"s\",\n      \"$$api_getter\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-same-scope-calls-only/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<div\n  class=\"child\"\n>\n  works\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-same-scope-calls-only/__snapshots__/csr.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<div\n  class=\"child\"\n>\n  works\n</div>\n```\n\n# Mutations\n```\nINSERT div\nUPDATE div[class] null => \"child\"\nINSERT div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-same-scope-calls-only/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"\";\nexport const $walks = \"\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $input__script = _._script(\"__tests__/tags/child.marko_0_input\", $scope => $scope.input.action());\nexport const $input = /* @__PURE__ */_._const(\"input\", $input__script);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-same-scope-calls-only/__snapshots__/dom.expected/tags/source.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* get, over(1) */\" b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport function $setup($scope) {\n  _._return($scope, $_return($scope));\n}\nfunction $_return($scope) {\n  return () => ({\n    setHtml(value) {\n      _._el_read($scope[\"#div/0\"]).innerHTML = value;\n    },\n    addClass(value) {\n      _._el_read($scope[\"#div/0\"]).classList.add(value);\n    }\n  });\n}\n_._resume(\"__tests__/tags/source.marko_0/_return\", $_return);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/source.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-same-scope-calls-only/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 309 (min) 182 (brotli)\n(_._script(\"a0\", ($scope) => $scope.b.action()),\n  _._resume(\"b0\", function ($scope) {\n    return () => ({\n      setHtml(value) {\n        $scope.a.innerHTML = value;\n      },\n      addClass(value) {\n        $scope.a.classList.add(value);\n      },\n    });\n  }));\nconst $api_getter = _._hoist(3);\n(_._script(\"c1\", ($scope) => $api_getter($scope)().setHtml(\"works\")),\n  _._var_resume(\"c2\", _._const(3)),\n  _._resume(\"c0\", function ($scope) {\n    return function () {\n      $api_getter($scope)().addClass(\"child\");\n    };\n  }),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-same-scope-calls-only/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `${_child_template}${_source_template}`;\nexport const $walks = /* <child>, <source/var> */`/${_child_walks}&0${_source_walks}&`;\nimport { $setup as _child, $input as _child_input, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _source, $template as _source_template, $walks as _source_walks } from \"./tags/source.marko\";\nconst $api_getter = _._hoist(\"api\");\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => $api_getter($scope)().setHtml(\"works\"));\nexport function $setup($scope) {\n  _child($scope[\"#childScope/0\"]);\n  _child_input($scope[\"#childScope/0\"], {\n    action: $action($scope)\n  });\n  _._var($scope, \"#childScope/1\", $api);\n  _source($scope[\"#childScope/1\"]);\n  $setup__script($scope);\n}\nconst $api = _._var_resume(\"__tests__/template.marko_0_api/var\", /* @__PURE__ */_._const(\"api\", $scope => _._assert_hoist($scope.api)));\nfunction $action($scope) {\n  return function () {\n    $api_getter($scope)().addClass(\"child\");\n  };\n}\n_._resume(\"__tests__/template.marko_0/action\", $action);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-same-scope-calls-only/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._script($scope0_id, \"__tests__/tags/child.marko_0_input\");\n  _._scope($scope0_id, {\n    input\n  }, \"__tests__/tags/child.marko\", 0, {\n    input: 0\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-same-scope-calls-only/__snapshots__/html.expected/tags/source.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/source.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div></div>${_._el_resume($scope0_id, \"#div/0\")}`);\n  const $return = _._resume(() => ({\n    setHtml(value) {\n      (el => el())(_._el_read_error).innerHTML = value;\n    },\n    addClass(value) {\n      (el => el())(_._el_read_error).classList.add(value);\n    }\n  }), \"__tests__/tags/source.marko_0/_return\", $scope0_id);\n  _._scope($scope0_id, {}, \"__tests__/tags/source.marko\", 0);\n  return $return;\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-same-scope-calls-only/__snapshots__/html.expected/template.js",
    "content": "import _child from \"./tags/child.marko\";\nimport _source from \"./tags/source.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _child({\n    action: _._resume(function () {\n      (api => api())(_._hoist_read_error).addClass(\"child\");\n    }, \"__tests__/template.marko_0/action\", $scope0_id)\n  });\n  let api = _source({});\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {\n    api\n  }, \"__tests__/template.marko\", 0, {\n    api: \"3:9\"\n  });\n  _._assert_hoist(api);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-same-scope-calls-only/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<div\n  class=\"child\"\n>\n  works\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-same-scope-calls-only/__snapshots__/resume.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div\n      class=\"child\"\n    >\n      works\n    </div>\n    <!--M_*3 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.a = {\n          api: _.c = {}\n        },\n        {\n          input: _.b = {}\n        }, _.c], _.b.action = _._[\n          \"__tests__/template.marko_0/action\"\n          ](_.a), _.a.api = _._[\n          \"__tests__/tags/source.marko_0/_return\"\n          ](_.c), _.d),\n        \"__tests__/tags/child.marko_0_input 2 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div[class] null => \"child\"\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-same-scope-calls-only/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-same-scope-calls-only/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div></div><!--M_*3 #div/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.d=[0,_.a={api:_.c={}},{input:_.b={}},_.c],_.b.action=_._[\"__tests__/template.marko_0/action\"](_.a),_.a.api=_._[\"__tests__/tags/source.marko_0/_return\"](_.c),_.d),\"__tests__/tags/child.marko_0_input 2 __tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*3 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.a = {\n          api: _.c = {}\n        },\n        {\n          input: _.b = {}\n        }, _.c], _.b.action = _._[\n          \"__tests__/template.marko_0/action\"\n          ](_.a), _.a.api = _._[\n          \"__tests__/tags/source.marko_0/_return\"\n          ](_.c), _.d),\n        \"__tests__/tags/child.marko_0_input 2 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-same-scope-calls-only/tags/child.marko",
    "content": "<script>\n  input.action()\n</script>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-same-scope-calls-only/tags/source.marko",
    "content": "<div/el />\n<return=()=>({\n  setHtml(value) {\n    el().innerHTML = value;\n  },\n  addClass(value) {\n    el().classList.add(value);\n  }\n}) />"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-same-scope-calls-only/template.marko",
    "content": "<script>api().setHtml(\"works\")</script>\n<child action() { api().addClass(\"child\"); }/>\n<source/api />\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-same-scope-calls-only/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [{ show: true }],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"r\",\n      \"$init\": \"o\",\n      \"$$setHtml3_getter\": \"s\",\n      \"$$setHtml2_getter\": \"t\",\n      \"$$setHtml_getter\": \"c\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<div>\n  Hello world\n</div>\n<div>\n  Hello world\n</div>\n<div>\n  Hello world\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var/__snapshots__/csr.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<!---->\n<!---->\n<!---->\n<div>\n  Hello world\n</div>\n<!---->\n<!---->\n<!---->\n<div>\n  Hello world\n</div>\n<!---->\n<!---->\n<div>\n  Hello world\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, #comment2, div0, #comment3, #comment4, #comment5, div1, #comment6, #comment7, div2, #comment8, #text, #comment9\nINSERT div0/#text\nINSERT div1/#text\nINSERT div2/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* get, over(1) */\" b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport function $setup($scope) {\n  _._return($scope, $_return($scope));\n}\nfunction $_return($scope) {\n  return () => html => _._el_read($scope[\"#div/0\"]).innerHTML = html;\n}\n_._resume(\"__tests__/tags/child.marko_0/_return\", $_return);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var/__snapshots__/dom.expected/tags/thing.js",
    "content": "export const $template = \"\";\nexport const $walks = \"\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $input_value__script = _._script(\"__tests__/tags/thing.marko_0_input_value\", $scope => $scope.input_value);\nexport const $input_value = /* @__PURE__ */_._const(\"input_value\", $input_value__script);\nexport const $input = ($scope, input) => $input_value($scope, input.value);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/thing.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 381 (min) 167 (brotli)\n(_._resume(\"a0\", function ($scope) {\n  return () => (html) => ($scope.a.innerHTML = html);\n}),\n  _._script(\"b0\", ($scope) => $scope.c),\n  _._script(\"c0\", ($scope) => $setHtml3_getter($scope._)()(\"Hello world\")));\nconst $setHtml3_getter = _._hoist(2, \"Ad\");\n_._var_resume(\"c1\", _._const(2));\nconst $setHtml2_getter = _._hoist(2, \"Ac\");\n_._var_resume(\"c2\", _._const(2));\nconst $setHtml_getter = _._hoist_resume(\"c3\", 2, \"Aa\", \"Aa\");\n(_._var_resume(\"c4\", _._const(2)),\n  _._script(\"c5\", ($scope) => {\n    ($setHtml_getter($scope)()(\"Hello world\"),\n      $setHtml2_getter($scope)()(\"Hello world\"));\n  }),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<!><!>${_thing_template}<!><!><!><!>`;\nexport const $walks = /* over(1), replace, over(1), <thing>, replace, over(1), replace, over(1), replace, over(2) */`b%b/${_thing_walks}&%b%b%c`;\nimport Child from \"./tags/child.marko\";\nimport { $setup as _thing, $input_value as _thing_input_value, $template as _thing_template, $walks as _thing_walks } from \"./tags/thing.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content5__setup__script = _._script(\"__tests__/template.marko_5\", $scope => $setHtml3_getter($scope._)()(\"Hello world\"));\nconst $if_content5__setup = $if_content5__setup__script;\nconst $setHtml3_getter = _._hoist(\"setHtml3\", \"BranchScopes:#text/3\");\nconst $if_content4__dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\", 0, () => $if_content4__setHtml);\nconst $if_content4__setHtml = _._var_resume(\"__tests__/template.marko_4_setHtml3/var\", /* @__PURE__ */_._const(\"setHtml3\", $scope => _._assert_hoist($scope.setHtml3)));\nconst $if_content4__setup = $scope => $if_content4__dynamicTag($scope, 1 && Child);\nconst $setHtml2_getter = _._hoist(\"setHtml2\", \"BranchScopes:#text/2\");\nconst $if_content3__dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\", 0, () => $if_content3__setHtml);\nconst $if_content3__setHtml = _._var_resume(\"__tests__/template.marko_3_setHtml2/var\", /* @__PURE__ */_._const(\"setHtml2\", $scope => _._assert_hoist($scope.setHtml2)));\nconst $if_content3__setup = $scope => $if_content3__dynamicTag($scope, 1 && Child);\nconst $setHtml_getter = _._hoist_resume(\"__tests__/template.marko_0_setHtml/hoist\", \"setHtml\", \"BranchScopes:#text/0\", \"BranchScopes:#text/0\");\nconst $if_content2__dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\", 0, () => $if_content2__setHtml);\nconst $if_content2__setHtml = _._var_resume(\"__tests__/template.marko_2_setHtml/var\", /* @__PURE__ */_._const(\"setHtml\", $scope => _._assert_hoist($scope.setHtml)));\nconst $if_content2__setup = $scope => $if_content2__dynamicTag($scope, 1 && Child);\nconst $if_content__if = /* @__PURE__ */_._if(\"#text/0\", \"<!><!><!>\", /* over(1), dynamicTagWithVar, over(2) */\"b1c\", $if_content2__setup);\nconst $if_content__input_show = /* @__PURE__ */_._if_closure(\"#text/0\", 0, $scope => $if_content__if($scope, $scope._.input_show ? 0 : 1));\nconst $if_content__setup = $if_content__input_show;\nconst $if = /* @__PURE__ */_._if(\"#text/0\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", $if_content__setup);\nexport const $input_show = /* @__PURE__ */_._const(\"input_show\", $scope => {\n  $if($scope, $scope.input_show ? 0 : 1);\n  $if_content__input_show($scope);\n});\nconst $if2 = /* @__PURE__ */_._if(\"#text/2\", \"<!><!><!>\", /* over(1), dynamicTagWithVar, over(2) */\"b1c\", $if_content3__setup);\nconst $if3 = /* @__PURE__ */_._if(\"#text/3\", \"<!><!><!>\", /* over(1), dynamicTagWithVar, over(2) */\"b1c\", $if_content4__setup);\nconst $if4 = /* @__PURE__ */_._if(\"#text/4\", 0, 0, $if_content5__setup);\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => {\n  $setHtml_getter($scope)()(\"Hello world\");\n  $setHtml2_getter($scope)()(\"Hello world\");\n});\nexport function $setup($scope) {\n  _thing($scope[\"#childScope/1\"]);\n  _thing_input_value($scope[\"#childScope/1\"], $setHtml_getter($scope));\n  $if2($scope, true ? 0 : 1);\n  $if3($scope, true ? 0 : 1);\n  $if4($scope, true ? 0 : 1);\n  $setup__script($scope);\n}\nexport const $input = ($scope, input) => $input_show($scope, input.show);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div></div>${_._el_resume($scope0_id, \"#div/0\")}`);\n  const $return = _._resume(() => html => (el => el())(_._el_read_error).innerHTML = html, \"__tests__/tags/child.marko_0/_return\", $scope0_id);\n  _._scope($scope0_id, {}, \"__tests__/tags/child.marko\", 0);\n  return $return;\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var/__snapshots__/html.expected/tags/thing.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/thing.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._script($scope0_id, \"__tests__/tags/thing.marko_0_input_value\");\n  _._scope($scope0_id, {\n    input_value: input.value\n  }, \"__tests__/tags/thing.marko\", 0, {\n    input_value: [\"input.value\"]\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var/__snapshots__/html.expected/template.js",
    "content": "import Child from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nimport _thing from \"./tags/thing.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $setHtml_getter = _._hoist($scope0_id, \"__tests__/template.marko_0_setHtml/hoist\");\n  _._if(() => {\n    if (input.show) {\n      const $scope1_id = _._scope_id();\n      _._if(() => {\n        if (input.show) {\n          const $scope2_id = _._scope_id();\n          const $Child_scope = _._peek_scope_id();\n          let setHtml = _._dynamic_tag($scope2_id, \"#text/0\", 1 && Child, {});\n          _._var($scope2_id, \"#scopeOffset/1\", $Child_scope, \"__tests__/template.marko_2_setHtml/var\");\n          _._scope($scope2_id, {\n            setHtml\n          }, \"__tests__/template.marko\", \"4:4\", {\n            setHtml: \"5:20\"\n          });\n          _._assert_hoist(setHtml);\n          return 0;\n        }\n      }, $scope1_id, \"#text/0\", 1, _._serialize_guard($scope0_reason, /* input.show */0), _._serialize_guard($scope0_reason, /* input.show */0));\n      _._scope($scope1_id, {\n        _: _._serialize_if($scope0_reason, /* input.show */0) && _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"3:2\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/0\", 1, _._serialize_guard($scope0_reason, /* input.show */0), _._serialize_guard($scope0_reason, /* input.show */0));\n  _thing({\n    value: $setHtml_getter\n  });\n  _._if(() => {\n    if (true) {\n      const $scope3_id = _._scope_id();\n      const $Child_scope2 = _._peek_scope_id();\n      let setHtml2 = _._dynamic_tag($scope3_id, \"#text/0\", 1 && Child, {});\n      _._var($scope3_id, \"#scopeOffset/1\", $Child_scope2, \"__tests__/template.marko_3_setHtml2/var\");\n      _._scope($scope3_id, {\n        setHtml2\n      }, \"__tests__/template.marko\", \"15:2\", {\n        setHtml2: \"16:18\"\n      });\n      _._assert_hoist(setHtml2);\n      return 0;\n    }\n  }, $scope0_id, \"#text/2\", 1, 0, _._serialize_guard($scope0_reason, /* input.show */0));\n  _._if(() => {\n    if (true) {\n      const $scope4_id = _._scope_id();\n      const $Child_scope3 = _._peek_scope_id();\n      let setHtml3 = _._dynamic_tag($scope4_id, \"#text/0\", 1 && Child, {});\n      _._var($scope4_id, \"#scopeOffset/1\", $Child_scope3, \"__tests__/template.marko_4_setHtml3/var\");\n      _._scope($scope4_id, {\n        setHtml3\n      }, \"__tests__/template.marko\", \"24:2\", {\n        setHtml3: \"25:18\"\n      });\n      _._assert_hoist(setHtml3);\n      return 0;\n    }\n  }, $scope0_id, \"#text/3\", 1, 0, _._serialize_guard($scope0_reason, /* input.show */0));\n  if (true) {\n    const $scope5_id = _._scope_id();\n    _._script($scope5_id, \"__tests__/template.marko_5\");\n    _._scope($scope5_id, {\n      _: _._scope_with_id($scope0_id)\n    }, \"__tests__/template.marko\", \"28:2\");\n  }\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._serialize_if($scope0_reason, /* input.show */0) && _._scope($scope0_id, {\n    input_show: input.show\n  }, \"__tests__/template.marko\", 0, {\n    input_show: [\"input.show\"]\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<div>\n  Hello world\n</div>\n<div>\n  Hello world\n</div>\n<div>\n  Hello world\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var/__snapshots__/resume.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<html>\n  <head />\n  <body>\n    <!--M_[-->\n    <div>\n      Hello world\n    </div>\n    <!--M_*4 #div/0-->\n    <!--M_]3 #text/0 4-->\n    <!--M_[-->\n    <div>\n      Hello world\n    </div>\n    <!--M_*8 #div/0-->\n    <!--M_]7 #text/0 8-->\n    <!--M_[-->\n    <div>\n      Hello world\n    </div>\n    <!--M_*11 #div/0-->\n    <!--M_]10 #text/0 11-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.k = [0, _.j = {\n          \"BranchScopes:#text/0\": _.h = {\n            \"BranchScopes:#text/0\": _.a = {\n              \"ConditionalRenderer:#text/0\": _.c =\n                \"__tests__/tags/child.marko\",\n              \"#scopeOffset/1\": 5,\n              setHtml: _.b = {}\n            }\n          },\n          \"BranchScopes:#text/2\": _.d = {\n            \"ConditionalRenderer:#text/0\": _.c,\n            \"#scopeOffset/1\": 9,\n            setHtml2: _.e = {}\n          },\n          \"BranchScopes:#text/3\": _.f = {\n            \"ConditionalRenderer:#text/0\": _.c,\n            \"#scopeOffset/1\": 12,\n            setHtml3: _.g = {}\n          }\n        }, _.h, _.a, _.b, 1, _.i = {}, _.d, _.e, 1, _.f, _.g, 1,\n        {\n          _: _.j\n        }], _.i.input_value = _._[\n          \"__tests__/template.marko_0_setHtml/hoist\"\n          ](_.j), _.a.setHtml = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.b), _.b[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_2_setHtml/var\"\n          ](_.a), _.d.setHtml2 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.e), _.e[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_3_setHtml2/var\"\n          ](_.d), _.f.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.g), _.g[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_4_setHtml3/var\"\n          ](_.f), _.k),\n        \"__tests__/tags/thing.marko_0_input_value 6 __tests__/template.marko_5 13 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/#comment0 before html\nINSERT html/body/#comment0\nINSERT html/body/#text0\nINSERT html/body/#text1\nINSERT html/body/#text2\nINSERT html/body/div2/#text\nINSERT html/body/div0/#text\nINSERT html/body/div1/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n<div />\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <!--M_[--><div></div><!--M_*4 #div/0--><!--M_]3 #text/0 4--><!--M_[--><div></div><!--M_*8 #div/0--><!--M_]7 #text/0 8--><!--M_[--><div></div><!--M_*11 #div/0--><!--M_]10 #text/0 11--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.k=[0,_.j={\"BranchScopes:#text/0\":_.h={\"BranchScopes:#text/0\":_.a={\"ConditionalRenderer:#text/0\":_.c=\"__tests__/tags/child.marko\",\"#scopeOffset/1\":5,setHtml:_.b={}}},\"BranchScopes:#text/2\":_.d={\"ConditionalRenderer:#text/0\":_.c,\"#scopeOffset/1\":9,setHtml2:_.e={}},\"BranchScopes:#text/3\":_.f={\"ConditionalRenderer:#text/0\":_.c,\"#scopeOffset/1\":12,setHtml3:_.g={}}},_.h,_.a,_.b,1,_.i={},_.d,_.e,1,_.f,_.g,1,{_:_.j}],_.i.input_value=_._[\"__tests__/template.marko_0_setHtml/hoist\"](_.j),_.a.setHtml=_._[\"__tests__/tags/child.marko_0/_return\"](_.b),_.b[\"#TagVariable\"]=_._[\"__tests__/template.marko_2_setHtml/var\"](_.a),_.d.setHtml2=_._[\"__tests__/tags/child.marko_0/_return\"](_.e),_.e[\"#TagVariable\"]=_._[\"__tests__/template.marko_3_setHtml2/var\"](_.d),_.f.setHtml3=_._[\"__tests__/tags/child.marko_0/_return\"](_.g),_.g[\"#TagVariable\"]=_._[\"__tests__/template.marko_4_setHtml3/var\"](_.f),_.k),\"__tests__/tags/thing.marko_0_input_value 6 __tests__/template.marko_5 13 __tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<!--M_[-->\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*4 #div/0-->\n    <!--M_]3 #text/0 4-->\n    <!--M_[-->\n    <div />\n    <!--M_*8 #div/0-->\n    <!--M_]7 #text/0 8-->\n    <!--M_[-->\n    <div />\n    <!--M_*11 #div/0-->\n    <!--M_]10 #text/0 11-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.k = [0, _.j = {\n          \"BranchScopes:#text/0\": _.h = {\n            \"BranchScopes:#text/0\": _.a = {\n              \"ConditionalRenderer:#text/0\": _.c =\n                \"__tests__/tags/child.marko\",\n              \"#scopeOffset/1\": 5,\n              setHtml: _.b = {}\n            }\n          },\n          \"BranchScopes:#text/2\": _.d = {\n            \"ConditionalRenderer:#text/0\": _.c,\n            \"#scopeOffset/1\": 9,\n            setHtml2: _.e = {}\n          },\n          \"BranchScopes:#text/3\": _.f = {\n            \"ConditionalRenderer:#text/0\": _.c,\n            \"#scopeOffset/1\": 12,\n            setHtml3: _.g = {}\n          }\n        }, _.h, _.a, _.b, 1, _.i = {}, _.d, _.e, 1, _.f, _.g, 1,\n        {\n          _: _.j\n        }], _.i.input_value = _._[\n          \"__tests__/template.marko_0_setHtml/hoist\"\n          ](_.j), _.a.setHtml = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.b), _.b[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_2_setHtml/var\"\n          ](_.a), _.d.setHtml2 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.e), _.e[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_3_setHtml2/var\"\n          ](_.d), _.f.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.g), _.g[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_4_setHtml3/var\"\n          ](_.f), _.k),\n        \"__tests__/tags/thing.marko_0_input_value 6 __tests__/template.marko_5 13 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT #comment\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/#comment2\nINSERT html/body/div1\nINSERT html/body/#comment3\nINSERT html/body/#comment4\nINSERT html/body/#comment5\nINSERT html/body/div2\nINSERT html/body/#comment6\nINSERT html/body/#comment7\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var/tags/child.marko",
    "content": "<div/el />\n<return=() => (html) => el().innerHTML = html />"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var/tags/thing.marko",
    "content": "<script>\n  input.value\n</script>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var/template.marko",
    "content": "import Child from '<child>';\n\n<if=input.show>\n  <if=input.show>\n    <${1 && Child}/setHtml />\n  </if>\n</if>\n\n<thing=setHtml />\n\n<script>\n  setHtml()(\"Hello world\");\n</script>\n\n<if=true>\n  <${1 && Child}/setHtml2 />\n</if>\n\n<script>\n  setHtml2()(\"Hello world\");\n</script>\n\n\n<if=true>\n  <${1 && Child}/setHtml3 />\n</if>\n\n<if=true>\n  <script>\n    setHtml3()(\"Hello world\");\n  </script>\n</if>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [{ show: true }],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-from-dynamic/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$setup$1\": \"c\",\n      \"$$_return\": \"_\",\n      \"$Child\": \"n\",\n      \"$$dynamicTag\": \"r\",\n      \"$$dynamicTag2\": \"a\",\n      \"$$setHtml3_getter\": \"m\",\n      \"$$inputshowsectionnull_content__dynamicTag\": \"s\",\n      \"$$inputshowsectionnull_content__setHtml\": \"e\",\n      \"$$setHtml2_getter\": \"i\",\n      \"$$thing_content2__dynamicTag\": \"u\",\n      \"$$thing_content2__setHtml\": \"d\",\n      \"$$thing_content2__setup\": \"f\",\n      \"$$thing_content2\": \"g\",\n      \"$$setHtml_getter\": \"b\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-from-dynamic/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<div>\n  Hoist from custom tag\n</div>\n<div>\n  Hoist from custom tag\n</div>\n<div>\n  Hoist from dynamic tag\n</div>\n<div />\n<div />\n<div />\n<section>\n  <div>\n    Hoist from dynamic tag\n  </div>\n</section>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-from-dynamic/__snapshots__/csr.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<!---->\n<!---->\n<!---->\n<div>\n  Hoist from custom tag\n</div>\n<!---->\n<!---->\n<div>\n  Hoist from custom tag\n</div>\n<!---->\n<!---->\n<!---->\n<!---->\n<!---->\n<!---->\n<div>\n  Hoist from dynamic tag\n</div>\n<!---->\n<!---->\n<div />\n<!---->\n<!---->\n<!---->\n<!---->\n<!---->\n<!---->\n<div />\n<!---->\n<!---->\n<div />\n<!---->\n<!---->\n<!---->\n<!---->\n<section>\n  <!---->\n  <div>\n    Hoist from dynamic tag\n  </div>\n  <!---->\n</section>\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, #comment2, div0, #comment3, #comment4, div1, #comment5, #comment6, #comment7, #comment8, #comment9, #comment10, div2, #comment11, #comment12, div3, #comment13, #comment14, #comment15, #comment16, #comment17, #comment18, div4, #comment19, #comment20, div5, #comment21, #comment22, #comment23, #comment24, section, #comment25\nINSERT div0/#text\nINSERT div1/#text\nINSERT div2/#text\nINSERT section/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-from-dynamic/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* get, over(1) */\" b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport function $setup($scope) {\n  _._return($scope, $_return($scope));\n}\nfunction $_return($scope) {\n  return () => html => _._el_read($scope[\"#div/0\"]).innerHTML = html;\n}\n_._resume(\"__tests__/tags/child.marko_0/_return\", $_return);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-from-dynamic/__snapshots__/dom.expected/tags/thing.js",
    "content": "export const $template = \"<!><!><!><!>\";\nexport const $walks = /* over(1), replace, over(1), replace, over(2) */\"b%b%c\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\");\nconst $dynamicTag2 = /* @__PURE__ */_._dynamic_tag(\"#text/1\");\nexport const $input_content = ($scope, input_content) => {\n  $dynamicTag($scope, input_content);\n  $dynamicTag2($scope, input_content);\n};\nexport const $input = ($scope, input) => $input_content($scope, input.content);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/thing.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-from-dynamic/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 788 (min) 354 (brotli)\nfunction $setup$1($scope) {\n  _._return($scope, $_return($scope));\n}\nfunction $_return($scope) {\n  return () => (html) => ($scope.a.innerHTML = html);\n}\n_._resume(\"a0\", $_return);\nvar Child = _._template(\"a\", \"<div></div>\", \" b\", $setup$1);\nconst $dynamicTag = _._dynamic_tag(0),\n  $dynamicTag2 = _._dynamic_tag(1),\n  $setHtml3_getter = _._hoist(2, \"B4\"),\n  $inputshowsectionnull_content__dynamicTag = _._dynamic_tag(\n    0,\n    0,\n    () => $inputshowsectionnull_content__setHtml,\n  ),\n  $inputshowsectionnull_content__setHtml = _._var_resume(\"c0\", _._const(2));\n_._content_resume(\n  \"c1\",\n  \"<!><!><!>\",\n  \"b1c\",\n  ($scope) => $inputshowsectionnull_content__dynamicTag($scope, Child),\n  0,\n  \"B4\",\n);\nconst $setHtml2_getter = _._hoist(2, \"B3\", \"B2\"),\n  $thing_content2__dynamicTag = _._dynamic_tag(\n    0,\n    0,\n    () => $thing_content2__setHtml,\n  ),\n  $thing_content2__setHtml = _._var_resume(\"c2\", _._const(2)),\n  $thing_content2__setup = ($scope) =>\n    $thing_content2__dynamicTag($scope, Child),\n  $thing_content2 = _._content(\n    \"c3\",\n    \"<!><!><!>\",\n    \"b1c\",\n    $thing_content2__setup,\n    0,\n    \"B3\",\n  );\n_._content_resume(\n  \"c4\",\n  \"<!><!><!><!><!><!>\",\n  \"b/b%b%c&b\",\n  ($scope) => {\n    ($scope.a,\n      (($scope, input_content) => {\n        ($dynamicTag($scope, input_content),\n          $dynamicTag2($scope, input_content));\n      })($scope.a, $thing_content2($scope)));\n  },\n  0,\n  \"B2\",\n);\nconst $setHtml_getter = _._hoist_resume(\"c5\", 2, \"B1\");\n(_._var_resume(\"c6\", _._const(2)),\n  _._script(\"c8\", ($scope) => {\n    for (const fn of $setHtml_getter($scope)) fn(\"Hoist from custom tag\");\n    ($setHtml2_getter($scope)()(\"Hoist from dynamic tag\"),\n      $setHtml3_getter($scope)()(\"Hoist from dynamic tag\"));\n  }),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-from-dynamic/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<!>${_thing_template}<!><!><!>`;\nexport const $walks = /* over(1), <thing>, replace, over(1), replace, over(2) */`b/${_thing_walks}&%b%c`;\nimport Child from \"./tags/child.marko\";\nimport Thing from \"./tags/thing.marko\";\nimport { $setup as _thing, $input_content as _thing_input_content, $template as _thing_template, $walks as _thing_walks } from \"./tags/thing.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $setHtml3_getter = _._hoist(\"setHtml3\", \"ClosureScopes:4\");\nconst $inputshowsectionnull_content__dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\", 0, () => $inputshowsectionnull_content__setHtml);\nconst $inputshowsectionnull_content__setHtml = _._var_resume(\"__tests__/template.marko_4_setHtml3/var\", /* @__PURE__ */_._const(\"setHtml3\", $scope => _._assert_hoist($scope.setHtml3)));\nconst $inputshowsectionnull_content__setup = $scope => $inputshowsectionnull_content__dynamicTag($scope, 1 && Child);\nconst $inputshowsectionnull_content = _._content_resume(\"__tests__/template.marko_4_content\", \"<!><!><!>\", /* over(1), dynamicTagWithVar, over(2) */\"b1c\", $inputshowsectionnull_content__setup, 0, \"ClosureScopes:4\");\nconst $setHtml2_getter = _._hoist(\"setHtml2\", \"ClosureScopes:3\", \"ClosureScopes:2\");\nconst $thing_content2__dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\", 0, () => $thing_content2__setHtml);\nconst $thing_content2__setHtml = _._var_resume(\"__tests__/template.marko_3_setHtml2/var\", /* @__PURE__ */_._const(\"setHtml2\", $scope => _._assert_hoist($scope.setHtml2)));\nconst $thing_content2__setup = $scope => $thing_content2__dynamicTag($scope, 1 && Child);\nconst $thing_content2 = /* @__PURE__ */_._content(\"__tests__/template.marko_3_content\", \"<!><!><!>\", /* over(1), dynamicTagWithVar, over(2) */\"b1c\", $thing_content2__setup, 0, \"ClosureScopes:3\");\nconst $inputshowThingnull_content__setup = $scope => {\n  _thing($scope[\"#childScope/0\"]);\n  _thing_input_content($scope[\"#childScope/0\"], $thing_content2($scope));\n};\nconst $inputshowThingnull_content = _._content_resume(\"__tests__/template.marko_2_content\", `<!>${_thing_template}<!>`, /* over(1), <thing>, over(1) */`b/${_thing_walks}&b`, $inputshowThingnull_content__setup, 0, \"ClosureScopes:2\");\nconst $setHtml_getter = _._hoist_resume(\"__tests__/template.marko_0_setHtml/hoist\", \"setHtml\", \"ClosureScopes:1\");\nconst $thing_content__dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\", 0, () => $thing_content__setHtml);\nconst $thing_content__setHtml = _._var_resume(\"__tests__/template.marko_1_setHtml/var\", /* @__PURE__ */_._const(\"setHtml\", $scope => _._assert_hoist($scope.setHtml)));\nconst $thing_content__setup = $scope => $thing_content__dynamicTag($scope, 1 && Child);\nconst $thing_content = /* @__PURE__ */_._content(\"__tests__/template.marko_1_content\", \"<!><!><!>\", /* over(1), dynamicTagWithVar, over(2) */\"b1c\", $thing_content__setup, 0, \"ClosureScopes:1\");\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => {\n  for (const fn of $setHtml_getter($scope)) {\n    fn('Hoist from custom tag');\n  }\n  $setHtml2_getter($scope)()('Hoist from dynamic tag');\n  $setHtml3_getter($scope)()('Hoist from dynamic tag');\n});\nexport function $setup($scope) {\n  _thing($scope[\"#childScope/0\"]);\n  _thing_input_content($scope[\"#childScope/0\"], $thing_content($scope));\n  $setup__script($scope);\n}\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/1\", $inputshowThingnull_content);\nconst $dynamicTag2 = /* @__PURE__ */_._dynamic_tag(\"#text/2\", $inputshowsectionnull_content);\nexport const $input_show = ($scope, input_show) => {\n  $dynamicTag($scope, input_show ? Thing : null);\n  $dynamicTag2($scope, input_show ? 'section' : null);\n};\nexport const $input = ($scope, input) => $input_show($scope, input.show);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-from-dynamic/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div></div>${_._el_resume($scope0_id, \"#div/0\")}`);\n  const $return = _._resume(() => html => (el => el())(_._el_read_error).innerHTML = html, \"__tests__/tags/child.marko_0/_return\", $scope0_id);\n  _._scope($scope0_id, {}, \"__tests__/tags/child.marko\", 0);\n  return $return;\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-from-dynamic/__snapshots__/html.expected/tags/thing.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/thing.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._dynamic_tag($scope0_id, \"#text/0\", input.content, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.content */0));\n  _._dynamic_tag($scope0_id, \"#text/1\", input.content, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.content */0));\n  _._serialize_if($scope0_reason, /* input.content */0) && _._scope($scope0_id, {}, \"__tests__/tags/thing.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-from-dynamic/__snapshots__/html.expected/template.js",
    "content": "import Child from \"./tags/child.marko\";\nimport Thing from \"./tags/thing.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nimport _thing from \"./tags/thing.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $setHtml_getter = _._hoist($scope0_id, \"__tests__/template.marko_0_setHtml/hoist\");\n  const $thing_content__subscribers = new Set();\n  const $inputshowThingnull_content__subscribers = new Set();\n  const $inputshowsectionnull_content__subscribers = new Set();\n  _thing({\n    content: _._content(\"__tests__/template.marko_1_content\", () => {\n      _._scope_reason();\n      const $scope1_id = _._scope_id();\n      const $Child_scope = _._peek_scope_id();\n      let setHtml = _._dynamic_tag($scope1_id, \"#text/0\", 1 && Child, {});\n      _._var($scope1_id, \"#scopeOffset/1\", $Child_scope, \"__tests__/template.marko_1_setHtml/var\");\n      _._subscribe($thing_content__subscribers, _._scope($scope1_id, {\n        setHtml\n      }, \"__tests__/template.marko\", \"4:2\", {\n        setHtml: \"5:18\"\n      }));\n      _._assert_hoist(setHtml);\n    })\n  });\n  _._dynamic_tag($scope0_id, \"#text/1\", input.show ? Thing : null, {}, _._content_resume(\"__tests__/template.marko_2_content\", () => {\n    const $scope2_id = _._scope_id();\n    const $thing_content2__subscribers = new Set();\n    _._scope_reason();\n    _thing({\n      content: _._content(\"__tests__/template.marko_3_content\", () => {\n        _._scope_reason();\n        const $scope3_id = _._scope_id();\n        const $Child_scope2 = _._peek_scope_id();\n        let setHtml2 = _._dynamic_tag($scope3_id, \"#text/0\", 1 && Child, {});\n        _._var($scope3_id, \"#scopeOffset/1\", $Child_scope2, \"__tests__/template.marko_3_setHtml2/var\");\n        _._subscribe($thing_content2__subscribers, _._scope($scope3_id, {\n          setHtml2\n        }, \"__tests__/template.marko\", \"17:4\", {\n          setHtml2: \"18:20\"\n        }));\n        _._assert_hoist(setHtml2);\n      })\n    });\n    _._subscribe($inputshowThingnull_content__subscribers, _._scope($scope2_id, {\n      \"ClosureScopes:3\": $thing_content2__subscribers\n    }, \"__tests__/template.marko\", \"16:4\"));\n  }, $scope0_id), 0, _._serialize_guard($scope0_reason, /* input.show */0));\n  _._dynamic_tag($scope0_id, \"#text/2\", input.show ? 'section' : null, {}, _._content_resume(\"__tests__/template.marko_4_content\", () => {\n    const $scope4_id = _._scope_id();\n    _._scope_reason();\n    const $Child_scope3 = _._peek_scope_id();\n    let setHtml3 = _._dynamic_tag($scope4_id, \"#text/0\", 1 && Child, {});\n    _._var($scope4_id, \"#scopeOffset/1\", $Child_scope3, \"__tests__/template.marko_4_setHtml3/var\");\n    _._subscribe($inputshowsectionnull_content__subscribers, _._scope($scope4_id, {\n      setHtml3\n    }, \"__tests__/template.marko\", \"27:4\", {\n      setHtml3: \"28:18\"\n    }));\n    _._assert_hoist(setHtml3);\n  }, $scope0_id), 0, _._serialize_guard($scope0_reason, /* input.show */0));\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {\n    \"ClosureScopes:1\": $thing_content__subscribers,\n    \"ClosureScopes:2\": $inputshowThingnull_content__subscribers,\n    \"ClosureScopes:4\": $inputshowsectionnull_content__subscribers\n  }, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-from-dynamic/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<div>\n  Hoist from custom tag\n</div>\n<div>\n  Hoist from custom tag\n</div>\n<div>\n  Hoist from dynamic tag\n</div>\n<div />\n<div />\n<div />\n<section>\n  <div>\n    Hoist from dynamic tag\n  </div>\n</section>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-from-dynamic/__snapshots__/resume.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<html>\n  <head />\n  <body>\n    <!--M_[-->\n    <div>\n      Hoist from custom tag\n    </div>\n    <!--M_*4 #div/0-->\n    <!--M_]3 #text/0 4-->\n    <!--M_[-->\n    <div>\n      Hoist from custom tag\n    </div>\n    <!--M_*7 #div/0-->\n    <!--M_]6 #text/0 7-->\n    <!--M_[-->\n    <div>\n      Hoist from dynamic tag\n    </div>\n    <!--M_*13 #div/0-->\n    <!--M_]12 #text/0 13-->\n    <!--M_[-->\n    <div />\n    <!--M_*16 #div/0-->\n    <!--M_]15 #text/0 16-->\n    <!--M_[-->\n    <div />\n    <!--M_*21 #div/0-->\n    <!--M_]20 #text/0 21-->\n    <!--M_[-->\n    <div />\n    <!--M_*24 #div/0-->\n    <!--M_]23 #text/0 24-->\n    <section>\n      <!--M_[-->\n      <div>\n        Hoist from dynamic tag\n      </div>\n      <!--M_*28 #div/0-->\n      <!--M_]27 #text/0 28-->\n    </section>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.p = [0,\n          {\n            \"ClosureScopes:1\": _.q = new Set,\n            \"ClosureScopes:2\": _.s = new Set,\n            \"ClosureScopes:4\": _.w = new Set\n          }, 1, _.a = {\n            \"ConditionalRenderer:#text/0\": _.c =\n              \"__tests__/tags/child.marko\",\n            \"#scopeOffset/1\": 5,\n            setHtml: _.b = {}\n          }, _.b, 1, _.d = {\n            \"ConditionalRenderer:#text/0\": _.c,\n            \"#scopeOffset/1\": 8,\n            setHtml: _.e = {}\n          }, _.e, 2, _.t = {\n            \"ClosureScopes:3\": _.r = new Set\n          }, 1, _.f = {\n            \"ConditionalRenderer:#text/0\": _.c,\n            \"#scopeOffset/1\": 14,\n            setHtml2: _.g = {}\n          }, _.g, 1, _.h = {\n            \"ConditionalRenderer:#text/0\": _.c,\n            \"#scopeOffset/1\": 17,\n            setHtml2: _.i = {}\n          }, _.i, 1, _.v = {\n            \"ClosureScopes:3\": _.u = new Set\n          }, 1, _.j = {\n            \"ConditionalRenderer:#text/0\": _.c,\n            \"#scopeOffset/1\": 22,\n            setHtml2: _.k = {}\n          }, _.k, 1, _.l = {\n            \"ConditionalRenderer:#text/0\": _.c,\n            \"#scopeOffset/1\": 25,\n            setHtml2: _.m = {}\n          }, _.m, 2, _.n = {\n            \"ConditionalRenderer:#text/0\": _.c,\n            \"#scopeOffset/1\": 29,\n            setHtml3: _.o = {}\n          }, _.o], _.a.setHtml = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.b), _.b[\"#TagVariable\"] = _._[\n            \"__tests__/template.marko_1_setHtml/var\"\n            ](_.a), _.d.setHtml = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.e), _.e[\"#TagVariable\"] = _._[\n            \"__tests__/template.marko_1_setHtml/var\"\n            ](_.d), _.f.setHtml2 = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.g), _.g[\"#TagVariable\"] = _._[\n            \"__tests__/template.marko_3_setHtml2/var\"\n            ](_.f), _.h.setHtml2 = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.i), _.i[\"#TagVariable\"] = _._[\n            \"__tests__/template.marko_3_setHtml2/var\"\n            ](_.h), _.j.setHtml2 = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.k), _.k[\"#TagVariable\"] = _._[\n            \"__tests__/template.marko_3_setHtml2/var\"\n            ](_.j), _.l.setHtml2 = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.m), _.m[\"#TagVariable\"] = _._[\n            \"__tests__/template.marko_3_setHtml2/var\"\n            ](_.l), _.n.setHtml3 = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.o), _.o[\"#TagVariable\"] = _._[\n            \"__tests__/template.marko_4_setHtml3/var\"\n            ](_.n), (_.q).add(_.a), _.q.add(_.d), (_.r).add(_.f), _.r.add(_\n          .h), (_.s).add(_.t), (_.u).add(_.j), _.u.add(_.l), _.s.add(_.v), (_\n            .w).add(_.n), _.p),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/#comment0 before html\nINSERT html/body/#comment0\nINSERT html/body/#text0\nINSERT html/body/#text1\nINSERT html/body/#text2\nINSERT html/body/#text3\nINSERT html/body/#text4\nINSERT html/body/#text5\nINSERT html/body/section/#text\nINSERT html/body/div0/#text\nINSERT html/body/div1/#text\nINSERT html/body/div2/#text\nINSERT html/body/section/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-from-dynamic/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n<div />\n<div />\n<div />\n<div />\n<div />\n<section>\n  <div />\n</section>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-from-dynamic/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <!--M_[--><div></div><!--M_*4 #div/0--><!--M_]3 #text/0 4--><!--M_[--><div></div><!--M_*7 #div/0--><!--M_]6 #text/0 7--><!--M_[--><div></div><!--M_*13 #div/0--><!--M_]12 #text/0 13--><!--M_[--><div></div><!--M_*16 #div/0--><!--M_]15 #text/0 16--><!--M_[--><div></div><!--M_*21 #div/0--><!--M_]20 #text/0 21--><!--M_[--><div></div><!--M_*24 #div/0--><!--M_]23 #text/0 24--><section><!--M_[--><div></div><!--M_*28 #div/0--><!--M_]27 #text/0 28--></section><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.p=[0,{\"ClosureScopes:1\":_.q=new Set,\"ClosureScopes:2\":_.s=new Set,\"ClosureScopes:4\":_.w=new Set},1,_.a={\"ConditionalRenderer:#text/0\":_.c=\"__tests__/tags/child.marko\",\"#scopeOffset/1\":5,setHtml:_.b={}},_.b,1,_.d={\"ConditionalRenderer:#text/0\":_.c,\"#scopeOffset/1\":8,setHtml:_.e={}},_.e,2,_.t={\"ClosureScopes:3\":_.r=new Set},1,_.f={\"ConditionalRenderer:#text/0\":_.c,\"#scopeOffset/1\":14,setHtml2:_.g={}},_.g,1,_.h={\"ConditionalRenderer:#text/0\":_.c,\"#scopeOffset/1\":17,setHtml2:_.i={}},_.i,1,_.v={\"ClosureScopes:3\":_.u=new Set},1,_.j={\"ConditionalRenderer:#text/0\":_.c,\"#scopeOffset/1\":22,setHtml2:_.k={}},_.k,1,_.l={\"ConditionalRenderer:#text/0\":_.c,\"#scopeOffset/1\":25,setHtml2:_.m={}},_.m,2,_.n={\"ConditionalRenderer:#text/0\":_.c,\"#scopeOffset/1\":29,setHtml3:_.o={}},_.o],_.a.setHtml=_._[\"__tests__/tags/child.marko_0/_return\"](_.b),_.b[\"#TagVariable\"]=_._[\"__tests__/template.marko_1_setHtml/var\"](_.a),_.d.setHtml=_._[\"__tests__/tags/child.marko_0/_return\"](_.e),_.e[\"#TagVariable\"]=_._[\"__tests__/template.marko_1_setHtml/var\"](_.d),_.f.setHtml2=_._[\"__tests__/tags/child.marko_0/_return\"](_.g),_.g[\"#TagVariable\"]=_._[\"__tests__/template.marko_3_setHtml2/var\"](_.f),_.h.setHtml2=_._[\"__tests__/tags/child.marko_0/_return\"](_.i),_.i[\"#TagVariable\"]=_._[\"__tests__/template.marko_3_setHtml2/var\"](_.h),_.j.setHtml2=_._[\"__tests__/tags/child.marko_0/_return\"](_.k),_.k[\"#TagVariable\"]=_._[\"__tests__/template.marko_3_setHtml2/var\"](_.j),_.l.setHtml2=_._[\"__tests__/tags/child.marko_0/_return\"](_.m),_.m[\"#TagVariable\"]=_._[\"__tests__/template.marko_3_setHtml2/var\"](_.l),_.n.setHtml3=_._[\"__tests__/tags/child.marko_0/_return\"](_.o),_.o[\"#TagVariable\"]=_._[\"__tests__/template.marko_4_setHtml3/var\"](_.n),(_.q).add(_.a),_.q.add(_.d),(_.r).add(_.f),_.r.add(_.h),(_.s).add(_.t),(_.u).add(_.j),_.u.add(_.l),_.s.add(_.v),(_.w).add(_.n),_.p),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<!--M_[-->\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*4 #div/0-->\n    <!--M_]3 #text/0 4-->\n    <!--M_[-->\n    <div />\n    <!--M_*7 #div/0-->\n    <!--M_]6 #text/0 7-->\n    <!--M_[-->\n    <div />\n    <!--M_*13 #div/0-->\n    <!--M_]12 #text/0 13-->\n    <!--M_[-->\n    <div />\n    <!--M_*16 #div/0-->\n    <!--M_]15 #text/0 16-->\n    <!--M_[-->\n    <div />\n    <!--M_*21 #div/0-->\n    <!--M_]20 #text/0 21-->\n    <!--M_[-->\n    <div />\n    <!--M_*24 #div/0-->\n    <!--M_]23 #text/0 24-->\n    <section>\n      <!--M_[-->\n      <div />\n      <!--M_*28 #div/0-->\n      <!--M_]27 #text/0 28-->\n    </section>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.p = [0,\n          {\n            \"ClosureScopes:1\": _.q = new Set,\n            \"ClosureScopes:2\": _.s = new Set,\n            \"ClosureScopes:4\": _.w = new Set\n          }, 1, _.a = {\n            \"ConditionalRenderer:#text/0\": _.c =\n              \"__tests__/tags/child.marko\",\n            \"#scopeOffset/1\": 5,\n            setHtml: _.b = {}\n          }, _.b, 1, _.d = {\n            \"ConditionalRenderer:#text/0\": _.c,\n            \"#scopeOffset/1\": 8,\n            setHtml: _.e = {}\n          }, _.e, 2, _.t = {\n            \"ClosureScopes:3\": _.r = new Set\n          }, 1, _.f = {\n            \"ConditionalRenderer:#text/0\": _.c,\n            \"#scopeOffset/1\": 14,\n            setHtml2: _.g = {}\n          }, _.g, 1, _.h = {\n            \"ConditionalRenderer:#text/0\": _.c,\n            \"#scopeOffset/1\": 17,\n            setHtml2: _.i = {}\n          }, _.i, 1, _.v = {\n            \"ClosureScopes:3\": _.u = new Set\n          }, 1, _.j = {\n            \"ConditionalRenderer:#text/0\": _.c,\n            \"#scopeOffset/1\": 22,\n            setHtml2: _.k = {}\n          }, _.k, 1, _.l = {\n            \"ConditionalRenderer:#text/0\": _.c,\n            \"#scopeOffset/1\": 25,\n            setHtml2: _.m = {}\n          }, _.m, 2, _.n = {\n            \"ConditionalRenderer:#text/0\": _.c,\n            \"#scopeOffset/1\": 29,\n            setHtml3: _.o = {}\n          }, _.o], _.a.setHtml = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.b), _.b[\"#TagVariable\"] = _._[\n            \"__tests__/template.marko_1_setHtml/var\"\n            ](_.a), _.d.setHtml = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.e), _.e[\"#TagVariable\"] = _._[\n            \"__tests__/template.marko_1_setHtml/var\"\n            ](_.d), _.f.setHtml2 = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.g), _.g[\"#TagVariable\"] = _._[\n            \"__tests__/template.marko_3_setHtml2/var\"\n            ](_.f), _.h.setHtml2 = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.i), _.i[\"#TagVariable\"] = _._[\n            \"__tests__/template.marko_3_setHtml2/var\"\n            ](_.h), _.j.setHtml2 = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.k), _.k[\"#TagVariable\"] = _._[\n            \"__tests__/template.marko_3_setHtml2/var\"\n            ](_.j), _.l.setHtml2 = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.m), _.m[\"#TagVariable\"] = _._[\n            \"__tests__/template.marko_3_setHtml2/var\"\n            ](_.l), _.n.setHtml3 = _._[\n            \"__tests__/tags/child.marko_0/_return\"\n            ](_.o), _.o[\"#TagVariable\"] = _._[\n            \"__tests__/template.marko_4_setHtml3/var\"\n            ](_.n), (_.q).add(_.a), _.q.add(_.d), (_.r).add(_.f), _.r.add(_\n          .h), (_.s).add(_.t), (_.u).add(_.j), _.u.add(_.l), _.s.add(_.v), (_\n            .w).add(_.n), _.p),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT #comment\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/#comment2\nINSERT html/body/div1\nINSERT html/body/#comment3\nINSERT html/body/#comment4\nINSERT html/body/#comment5\nINSERT html/body/div2\nINSERT html/body/#comment6\nINSERT html/body/#comment7\nINSERT html/body/#comment8\nINSERT html/body/div3\nINSERT html/body/#comment9\nINSERT html/body/#comment10\nINSERT html/body/#comment11\nINSERT html/body/div4\nINSERT html/body/#comment12\nINSERT html/body/#comment13\nINSERT html/body/#comment14\nINSERT html/body/div5\nINSERT html/body/#comment15\nINSERT html/body/#comment16\nINSERT html/body/section\nINSERT html/body/section/#comment0\nINSERT html/body/section/div\nINSERT html/body/section/#comment1\nINSERT html/body/section/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-from-dynamic/tags/child.marko",
    "content": "<div/el />\n<return=() => (html) => el().innerHTML = html />"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-from-dynamic/tags/thing.marko",
    "content": "<${input.content} />\n<${input.content} />"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-from-dynamic/template.marko",
    "content": "import Child from '<child>';\nimport Thing from '<thing>';\n\n<thing>\n  <${1 && Child}/setHtml />\n</thing>\n\n<script>\n  for (const fn of setHtml) {\n    fn('Hoist from custom tag');\n  }\n</script>\n\n\n\n<${input.show ? Thing : null}>\n  <thing>\n    <${1 && Child}/setHtml2 />\n  </thing>\n</>\n<script>\n  setHtml2()('Hoist from dynamic tag');\n</script>\n\n\n\n<${input.show ? 'section' : null}>\n  <${1 && Child}/setHtml3 />\n</>\n\n<script>\n  setHtml3()('Hoist from dynamic tag');\n</script>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-from-dynamic/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [{ show: true }],\n  skip_equivalent: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-many/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"r\",\n      \"$init\": \"t\",\n      \"$$setHtml3_getter\": \"o\",\n      \"$$setHtml2_getter\": \"s\",\n      \"$$setHtml_getter\": \"n\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-many/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<div>\n  First Only\n</div>\n<div />\n<div />\n<div />\n<div />\n<div />\n<hr />\n<div>\n  First Only\n</div>\n<div />\n<div />\n<div />\n<hr />\n<ul>\n  <div>\n    All (0)\n  </div>\n  <div>\n    All (1)\n  </div>\n  <div>\n    All (2)\n  </div>\n  <div>\n    All (3)\n  </div>\n</ul>\n<ul>\n  <div>\n    All (4)\n  </div>\n  <div>\n    All (5)\n  </div>\n  <div>\n    All (6)\n  </div>\n  <div>\n    All (7)\n  </div>\n</ul>\n<ul>\n  <div>\n    All (8)\n  </div>\n  <div>\n    All (9)\n  </div>\n  <div>\n    All (10)\n  </div>\n  <div>\n    All (11)\n  </div>\n</ul>\n<ul>\n  <div>\n    All (12)\n  </div>\n  <div>\n    All (13)\n  </div>\n  <div>\n    All (14)\n  </div>\n  <div>\n    All (15)\n  </div>\n</ul>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-many/__snapshots__/csr.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<!---->\n<!---->\n<div>\n  First Only\n</div>\n<!---->\n<!---->\n<div />\n<!---->\n<!---->\n<div />\n<!---->\n<!---->\n<div />\n<!---->\n<!---->\n<div />\n<!---->\n<!---->\n<div />\n<!---->\n<hr />\n<!---->\n<div>\n  First Only\n</div>\n<!---->\n<!---->\n<div />\n<!---->\n<!---->\n<div />\n<!---->\n<!---->\n<div />\n<!---->\n<hr />\n<ul>\n  <!---->\n  <div>\n    All (0)\n  </div>\n  <!---->\n  <!---->\n  <div>\n    All (1)\n  </div>\n  <!---->\n  <!---->\n  <div>\n    All (2)\n  </div>\n  <!---->\n  <!---->\n  <div>\n    All (3)\n  </div>\n  <!---->\n</ul>\n<ul>\n  <!---->\n  <div>\n    All (4)\n  </div>\n  <!---->\n  <!---->\n  <div>\n    All (5)\n  </div>\n  <!---->\n  <!---->\n  <div>\n    All (6)\n  </div>\n  <!---->\n  <!---->\n  <div>\n    All (7)\n  </div>\n  <!---->\n</ul>\n<ul>\n  <!---->\n  <div>\n    All (8)\n  </div>\n  <!---->\n  <!---->\n  <div>\n    All (9)\n  </div>\n  <!---->\n  <!---->\n  <div>\n    All (10)\n  </div>\n  <!---->\n  <!---->\n  <div>\n    All (11)\n  </div>\n  <!---->\n</ul>\n<ul>\n  <!---->\n  <div>\n    All (12)\n  </div>\n  <!---->\n  <!---->\n  <div>\n    All (13)\n  </div>\n  <!---->\n  <!---->\n  <div>\n    All (14)\n  </div>\n  <!---->\n  <!---->\n  <div>\n    All (15)\n  </div>\n  <!---->\n</ul>\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, div0, #comment2, #comment3, div1, #comment4, #comment5, div2, #comment6, #comment7, div3, #comment8, #comment9, div4, #comment10, #comment11, div5, #comment12, hr0, #comment13, div6, #comment14, #comment15, div7, #comment16, #comment17, div8, #comment18, #comment19, div9, #comment20, hr1, ul0, ul1, ul2, ul3, #comment21\nINSERT div0/#text\nINSERT div6/#text\nINSERT ul0/div0/#text\nINSERT ul0/div1/#text\nINSERT ul0/div2/#text\nINSERT ul0/div3/#text\nINSERT ul1/div0/#text\nINSERT ul1/div1/#text\nINSERT ul1/div2/#text\nINSERT ul1/div3/#text\nINSERT ul2/div0/#text\nINSERT ul2/div1/#text\nINSERT ul2/div2/#text\nINSERT ul2/div3/#text\nINSERT ul3/div0/#text\nINSERT ul3/div1/#text\nINSERT ul3/div2/#text\nINSERT ul3/div3/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-many/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* get, over(1) */\" b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport function $setup($scope) {\n  _._return($scope, $_return($scope));\n}\nfunction $_return($scope) {\n  return () => html => _._el_read($scope[\"#div/0\"]).innerHTML = html;\n}\n_._resume(\"__tests__/tags/child.marko_0/_return\", $_return);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-many/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 361 (min) 186 (brotli)\n_._resume(\"a0\", function ($scope) {\n  return () => (html) => ($scope.a.innerHTML = html);\n});\nconst $setHtml3_getter = _._hoist_resume(\"b0\", 2, \"Aa\", \"Ac\");\n_._var_resume(\"b1\", _._const(2));\nconst $setHtml2_getter = _._hoist(2, \"Ab\");\n_._var_resume(\"b2\", _._const(2));\nconst $setHtml_getter = _._hoist(2, \"Aa\");\n(_._var_resume(\"b3\", _._const(2)),\n  _._script(\"b4\", ($scope) => {\n    ($setHtml_getter($scope)()(\"First Only\"),\n      $setHtml2_getter($scope)()(\"First Only\"));\n    {\n      let i = 0;\n      for (const fn of $setHtml3_getter($scope)) fn(`All (${i++})`);\n    }\n  }),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-many/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><hr><!><hr><!><!>\";\nexport const $walks = /* over(1), replace, over(2), replace, over(2), replace, over(2) */\"b%c%c%c\";\nimport Child from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $setHtml3_getter = _._hoist_resume(\"__tests__/template.marko_0_setHtml3/hoist\", \"setHtml3\", \"BranchScopes:#ul/0\", \"BranchScopes:#text/2\");\nconst $for_content4__dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\", 0, () => $for_content4__setHtml);\nconst $for_content4__setHtml = _._var_resume(\"__tests__/template.marko_4_setHtml3/var\", /* @__PURE__ */_._const(\"setHtml3\", $scope => _._assert_hoist($scope.setHtml3)));\nconst $for_content4__setup = $scope => $for_content4__dynamicTag($scope, 1 && Child);\nconst $for_content3__for = /* @__PURE__ */_._for_to(\"#ul/0\", \"<!><!><!>\", /* over(1), dynamicTagWithVar, over(2) */\"b1c\", $for_content4__setup);\nconst $for_content3__setup = $scope => $for_content3__for($scope, [3, 0, 1]);\nconst $setHtml2_getter = _._hoist(\"setHtml2\", \"BranchScopes:#text/1\");\nconst $for_content2__dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\", 0, () => $for_content2__setHtml);\nconst $for_content2__setHtml = _._var_resume(\"__tests__/template.marko_2_setHtml2/var\", /* @__PURE__ */_._const(\"setHtml2\", $scope => _._assert_hoist($scope.setHtml2)));\nconst $for_content2__setup = $scope => $for_content2__dynamicTag($scope, 1 && Child);\nconst $setHtml_getter = _._hoist(\"setHtml\", \"BranchScopes:#text/0\");\nconst $for_content__dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\", 0, () => $for_content__setHtml);\nconst $for_content__setHtml = _._var_resume(\"__tests__/template.marko_1_setHtml/var\", /* @__PURE__ */_._const(\"setHtml\", $scope => _._assert_hoist($scope.setHtml)));\nconst $for_content__setup = $scope => $for_content__dynamicTag($scope, 1 && Child);\nconst $for = /* @__PURE__ */_._for_to(\"#text/0\", \"<!><!><!>\", /* over(1), dynamicTagWithVar, over(2) */\"b1c\", $for_content__setup);\nconst $for2 = /* @__PURE__ */_._for_to(\"#text/1\", \"<!><!><!>\", /* over(1), dynamicTagWithVar, over(2) */\"b1c\", $for_content2__setup);\nconst $to = /* @__PURE__ */_._let(\"to/3\", $scope => $for2($scope, [$scope.to, 0, 1]));\nconst $for3 = /* @__PURE__ */_._for_to(\"#text/2\", \"<ul></ul>\", /* get, over(1) */\" b\", $for_content3__setup);\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => {\n  $setHtml_getter($scope)()('First Only');\n  $setHtml2_getter($scope)()('First Only');\n  {\n    let i = 0;\n    for (const fn of $setHtml3_getter($scope)) {\n      fn(`All (${i++})`);\n    }\n  }\n});\nexport function $setup($scope) {\n  $for($scope, [5, 0, 1]);\n  $to($scope, 3);\n  $for3($scope, [3, 0, 1]);\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-many/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div></div>${_._el_resume($scope0_id, \"#div/0\")}`);\n  const $return = _._resume(() => html => (el => el())(_._el_read_error).innerHTML = html, \"__tests__/tags/child.marko_0/_return\", $scope0_id);\n  _._scope($scope0_id, {}, \"__tests__/tags/child.marko\", 0);\n  return $return;\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-many/__snapshots__/html.expected/template.js",
    "content": "import Child from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $setHtml3_getter = _._hoist($scope0_id, \"__tests__/template.marko_0_setHtml3/hoist\");\n  _._for_to(5, 0, 1, () => {\n    const $scope1_id = _._scope_id();\n    const $Child_scope = _._peek_scope_id();\n    let setHtml = _._dynamic_tag($scope1_id, \"#text/0\", 1 && Child, {});\n    _._var($scope1_id, \"#scopeOffset/1\", $Child_scope, \"__tests__/template.marko_1_setHtml/var\");\n    _._scope($scope1_id, {\n      setHtml\n    }, \"__tests__/template.marko\", \"3:2\", {\n      setHtml: \"4:18\"\n    });\n    _._assert_hoist(setHtml);\n  }, 0, $scope0_id, \"#text/0\", 1, 0, 0);\n  let to = 3;\n  _._html(\"<hr>\");\n  _._for_to(to, 0, 1, () => {\n    const $scope2_id = _._scope_id();\n    const $Child_scope2 = _._peek_scope_id();\n    let setHtml2 = _._dynamic_tag($scope2_id, \"#text/0\", 1 && Child, {});\n    _._var($scope2_id, \"#scopeOffset/1\", $Child_scope2, \"__tests__/template.marko_2_setHtml2/var\");\n    _._scope($scope2_id, {\n      setHtml2\n    }, \"__tests__/template.marko\", \"14:2\", {\n      setHtml2: \"15:18\"\n    });\n    _._assert_hoist(setHtml2);\n  }, 0, $scope0_id, \"#text/1\", 1, 0, 0);\n  _._html(\"<hr>\");\n  _._for_to(3, 0, 1, i => {\n    const $scope3_id = _._scope_id();\n    _._html(\"<ul>\");\n    _._for_to(3, 0, 1, j => {\n      const $scope4_id = _._scope_id();\n      const $Child_scope3 = _._peek_scope_id();\n      let setHtml3 = _._dynamic_tag($scope4_id, \"#text/0\", 1 && Child, {});\n      _._var($scope4_id, \"#scopeOffset/1\", $Child_scope3, \"__tests__/template.marko_4_setHtml3/var\");\n      _._scope($scope4_id, {\n        setHtml3\n      }, \"__tests__/template.marko\", \"26:4\", {\n        setHtml3: \"27:20\"\n      });\n      _._assert_hoist(setHtml3);\n    }, 0, $scope3_id, \"#ul/0\", 1, 0, 0);\n    _._html(\"</ul>\");\n    _._scope($scope3_id, {}, \"__tests__/template.marko\", \"24:2\");\n  }, 0, $scope0_id, \"#text/2\", 1, 0, 0, 0, 1);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-many/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<div>\n  First Only\n</div>\n<div />\n<div />\n<div />\n<div />\n<div />\n<hr />\n<div>\n  First Only\n</div>\n<div />\n<div />\n<div />\n<hr />\n<ul>\n  <div>\n    All (0)\n  </div>\n  <div>\n    All (1)\n  </div>\n  <div>\n    All (2)\n  </div>\n  <div>\n    All (3)\n  </div>\n</ul>\n<ul>\n  <div>\n    All (4)\n  </div>\n  <div>\n    All (5)\n  </div>\n  <div>\n    All (6)\n  </div>\n  <div>\n    All (7)\n  </div>\n</ul>\n<ul>\n  <div>\n    All (8)\n  </div>\n  <div>\n    All (9)\n  </div>\n  <div>\n    All (10)\n  </div>\n  <div>\n    All (11)\n  </div>\n</ul>\n<ul>\n  <div>\n    All (12)\n  </div>\n  <div>\n    All (13)\n  </div>\n  <div>\n    All (14)\n  </div>\n  <div>\n    All (15)\n  </div>\n</ul>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-many/__snapshots__/resume.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<html>\n  <head />\n  <body>\n    <!--M_[-->\n    <div>\n      First Only\n    </div>\n    <!--M_*3 #div/0-->\n    <!--M_]2 #text/0 3-->\n    <!--M_[-->\n    <div />\n    <!--M_*6 #div/0-->\n    <!--M_]5 #text/0 6-->\n    <!--M_[-->\n    <div />\n    <!--M_*9 #div/0-->\n    <!--M_]8 #text/0 9-->\n    <!--M_[-->\n    <div />\n    <!--M_*12 #div/0-->\n    <!--M_]11 #text/0 12-->\n    <!--M_[-->\n    <div />\n    <!--M_*15 #div/0-->\n    <!--M_]14 #text/0 15-->\n    <!--M_[-->\n    <div />\n    <!--M_*18 #div/0-->\n    <!--M_]17 #text/0 18-->\n    <hr />\n    <!--M_[-->\n    <div>\n      First Only\n    </div>\n    <!--M_*21 #div/0-->\n    <!--M_]20 #text/0 21-->\n    <!--M_[-->\n    <div />\n    <!--M_*24 #div/0-->\n    <!--M_]23 #text/0 24-->\n    <!--M_[-->\n    <div />\n    <!--M_*27 #div/0-->\n    <!--M_]26 #text/0 27-->\n    <!--M_[-->\n    <div />\n    <!--M_*30 #div/0-->\n    <!--M_]29 #text/0 30-->\n    <hr />\n    <ul>\n      <!--M_[-->\n      <div>\n        All (0)\n      </div>\n      <!--M_*34 #div/0-->\n      <!--M_]33 #text/0 34-->\n      <!--M_[-->\n      <div>\n        All (1)\n      </div>\n      <!--M_*37 #div/0-->\n      <!--M_]36 #text/0 37-->\n      <!--M_[-->\n      <div>\n        All (2)\n      </div>\n      <!--M_*40 #div/0-->\n      <!--M_]39 #text/0 40-->\n      <!--M_[-->\n      <div>\n        All (3)\n      </div>\n      <!--M_*43 #div/0-->\n      <!--M_]42 #text/0 43-->\n    </ul>\n    <ul>\n      <!--M_[-->\n      <div>\n        All (4)\n      </div>\n      <!--M_*47 #div/0-->\n      <!--M_]46 #text/0 47-->\n      <!--M_[-->\n      <div>\n        All (5)\n      </div>\n      <!--M_*50 #div/0-->\n      <!--M_]49 #text/0 50-->\n      <!--M_[-->\n      <div>\n        All (6)\n      </div>\n      <!--M_*53 #div/0-->\n      <!--M_]52 #text/0 53-->\n      <!--M_[-->\n      <div>\n        All (7)\n      </div>\n      <!--M_*56 #div/0-->\n      <!--M_]55 #text/0 56-->\n    </ul>\n    <ul>\n      <!--M_[-->\n      <div>\n        All (8)\n      </div>\n      <!--M_*60 #div/0-->\n      <!--M_]59 #text/0 60-->\n      <!--M_[-->\n      <div>\n        All (9)\n      </div>\n      <!--M_*63 #div/0-->\n      <!--M_]62 #text/0 63-->\n      <!--M_[-->\n      <div>\n        All (10)\n      </div>\n      <!--M_*66 #div/0-->\n      <!--M_]65 #text/0 66-->\n      <!--M_[-->\n      <div>\n        All (11)\n      </div>\n      <!--M_*69 #div/0-->\n      <!--M_]68 #text/0 69-->\n    </ul>\n    <ul>\n      <!--M_[-->\n      <div>\n        All (12)\n      </div>\n      <!--M_*73 #div/0-->\n      <!--M_]72 #text/0 73-->\n      <!--M_[-->\n      <div>\n        All (13)\n      </div>\n      <!--M_*76 #div/0-->\n      <!--M_]75 #text/0 76-->\n      <!--M_[-->\n      <div>\n        All (14)\n      </div>\n      <!--M_*79 #div/0-->\n      <!--M_]78 #text/0 79-->\n      <!--M_[-->\n      <div>\n        All (15)\n      </div>\n      <!--M_*82 #div/0-->\n      <!--M_]81 #text/0 82-->\n    </ul>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.eb = [0,\n          {\n            \"BranchScopes:#text/0\": [_.a = {\n              \"ConditionalRenderer:#text/0\": _.c =\n                \"__tests__/tags/child.marko\",\n              \"#scopeOffset/1\": 4,\n              setHtml: _.b = {}\n            }, _.d = {\n              \"ConditionalRenderer:#text/0\": _.c,\n              \"#scopeOffset/1\": 7,\n              setHtml: _.e = {}\n            }, _.f = {\n              \"ConditionalRenderer:#text/0\": _.c,\n              \"#scopeOffset/1\": 10,\n              setHtml: _.g = {}\n            }, _.h = {\n              \"ConditionalRenderer:#text/0\": _.c,\n              \"#scopeOffset/1\": 13,\n              setHtml: _.i = {}\n            }, _.j = {\n              \"ConditionalRenderer:#text/0\": _.c,\n              \"#scopeOffset/1\": 16,\n              setHtml: _.k = {}\n            }, _.l = {\n              \"ConditionalRenderer:#text/0\": _.c,\n              \"#scopeOffset/1\": 19,\n              setHtml: _.m = {}\n            }],\n            \"BranchScopes:#text/1\": [_.n = {\n              \"ConditionalRenderer:#text/0\": _.c,\n              \"#scopeOffset/1\": 22,\n              setHtml2: _.o = {}\n            }, _.p = {\n              \"ConditionalRenderer:#text/0\": _.c,\n              \"#scopeOffset/1\": 25,\n              setHtml2: _.q = {}\n            }, _.r = {\n              \"ConditionalRenderer:#text/0\": _.c,\n              \"#scopeOffset/1\": 28,\n              setHtml2: _.s = {}\n            }, _.t = {\n              \"ConditionalRenderer:#text/0\": _.c,\n              \"#scopeOffset/1\": 31,\n              setHtml2: _.u = {}\n            }],\n            \"BranchScopes:#text/2\": [_.ab = {\n              \"BranchScopes:#ul/0\": [_.v = {\n                \"ConditionalRenderer:#text/0\": _.c,\n                \"#scopeOffset/1\": 35,\n                setHtml3: _.w = {}\n              }, _.x = {\n                \"ConditionalRenderer:#text/0\": _.c,\n                \"#scopeOffset/1\": 38,\n                setHtml3: _.y = {}\n              }, _.z = {\n                \"ConditionalRenderer:#text/0\": _.c,\n                \"#scopeOffset/1\": 41,\n                setHtml3: _.A = {}\n              }, _.B = {\n                \"ConditionalRenderer:#text/0\": _.c,\n                \"#scopeOffset/1\": 44,\n                setHtml3: _.C = {}\n              }]\n            }, _.bb = {\n              \"BranchScopes:#ul/0\": [_.D = {\n                \"ConditionalRenderer:#text/0\": _.c,\n                \"#scopeOffset/1\": 48,\n                setHtml3: _.E = {}\n              }, _.F = {\n                \"ConditionalRenderer:#text/0\": _.c,\n                \"#scopeOffset/1\": 51,\n                setHtml3: _.G = {}\n              }, _.H = {\n                \"ConditionalRenderer:#text/0\": _.c,\n                \"#scopeOffset/1\": 54,\n                setHtml3: _.I = {}\n              }, _.J = {\n                \"ConditionalRenderer:#text/0\": _.c,\n                \"#scopeOffset/1\": 57,\n                setHtml3: _.K = {}\n              }]\n            }, _.cb = {\n              \"BranchScopes:#ul/0\": [_.L = {\n                \"ConditionalRenderer:#text/0\": _.c,\n                \"#scopeOffset/1\": 61,\n                setHtml3: _.M = {}\n              }, _.N = {\n                \"ConditionalRenderer:#text/0\": _.c,\n                \"#scopeOffset/1\": 64,\n                setHtml3: _.O = {}\n              }, _.P = {\n                \"ConditionalRenderer:#text/0\": _.c,\n                \"#scopeOffset/1\": 67,\n                setHtml3: _.Q = {}\n              }, _.R = {\n                \"ConditionalRenderer:#text/0\": _.c,\n                \"#scopeOffset/1\": 70,\n                setHtml3: _.S = {}\n              }]\n            }, _.db = {\n              \"BranchScopes:#ul/0\": [_.T = {\n                \"ConditionalRenderer:#text/0\": _.c,\n                \"#scopeOffset/1\": 74,\n                setHtml3: _.U = {}\n              }, _.V = {\n                \"ConditionalRenderer:#text/0\": _.c,\n                \"#scopeOffset/1\": 77,\n                setHtml3: _.W = {}\n              }, _.X = {\n                \"ConditionalRenderer:#text/0\": _.c,\n                \"#scopeOffset/1\": 80,\n                setHtml3: _.Y = {}\n              }, _.Z = {\n                \"ConditionalRenderer:#text/0\": _.c,\n                \"#scopeOffset/1\": 83,\n                setHtml3: _.$ = {}\n              }]\n            }]\n          }, _.a, _.b, 1, _.d, _.e, 1, _.f, _.g, 1, _.h, _.i, 1, _.j, _.k,\n          1, _.l, _.m, 1, _.n, _.o, 1, _.p, _.q, 1, _.r, _.s, 1, _.t, _.u,\n          1, _.ab, _.v, _.w, 1, _.x, _.y, 1, _.z, _.A, 1, _.B, _.C, 1, _.bb,\n          _.D, _.E, 1, _.F, _.G, 1, _.H, _.I, 1, _.J, _.K, 1, _.cb, _.L, _\n          .M, 1, _.N, _.O, 1, _.P, _.Q, 1, _.R, _.S, 1, _.db, _.T, _.U, 1, _\n          .V, _.W, 1, _.X, _.Y, 1, _.Z, _.$\n        ], _.a.setHtml = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.b), _.b[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_1_setHtml/var\"\n          ](_.a), _.d.setHtml = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.e), _.e[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_1_setHtml/var\"\n          ](_.d), _.f.setHtml = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.g), _.g[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_1_setHtml/var\"\n          ](_.f), _.h.setHtml = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.i), _.i[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_1_setHtml/var\"\n          ](_.h), _.j.setHtml = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.k), _.k[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_1_setHtml/var\"\n          ](_.j), _.l.setHtml = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.m), _.m[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_1_setHtml/var\"\n          ](_.l), _.n.setHtml2 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.o), _.o[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_2_setHtml2/var\"\n          ](_.n), _.p.setHtml2 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.q), _.q[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_2_setHtml2/var\"\n          ](_.p), _.r.setHtml2 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.s), _.s[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_2_setHtml2/var\"\n          ](_.r), _.t.setHtml2 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.u), _.u[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_2_setHtml2/var\"\n          ](_.t), _.v.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.w), _.w[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_4_setHtml3/var\"\n          ](_.v), _.x.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.y), _.y[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_4_setHtml3/var\"\n          ](_.x), _.z.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.A), _.A[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_4_setHtml3/var\"\n          ](_.z), _.B.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.C), _.C[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_4_setHtml3/var\"\n          ](_.B), _.D.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.E), _.E[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_4_setHtml3/var\"\n          ](_.D), _.F.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.G), _.G[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_4_setHtml3/var\"\n          ](_.F), _.H.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.I), _.I[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_4_setHtml3/var\"\n          ](_.H), _.J.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.K), _.K[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_4_setHtml3/var\"\n          ](_.J), _.L.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.M), _.M[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_4_setHtml3/var\"\n          ](_.L), _.N.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.O), _.O[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_4_setHtml3/var\"\n          ](_.N), _.P.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.Q), _.Q[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_4_setHtml3/var\"\n          ](_.P), _.R.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.S), _.S[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_4_setHtml3/var\"\n          ](_.R), _.T.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.U), _.U[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_4_setHtml3/var\"\n          ](_.T), _.V.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.W), _.W[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_4_setHtml3/var\"\n          ](_.V), _.X.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.Y), _.Y[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_4_setHtml3/var\"\n          ](_.X), _.Z.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.$), _.$[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_4_setHtml3/var\"\n          ](_.Z), _.eb),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/#comment0 before html\nINSERT html/body/#comment0\nINSERT html/body/#text0\nINSERT html/body/#text1\nINSERT html/body/#text2\nINSERT html/body/#text3\nINSERT html/body/#text4\nINSERT html/body/#text5\nINSERT html/body/#text6\nINSERT html/body/#text7\nINSERT html/body/#text8\nINSERT html/body/#text9\nINSERT html/body/ul0/#text0\nINSERT html/body/ul0/#text1\nINSERT html/body/ul0/#text2\nINSERT html/body/ul0/#text3\nINSERT html/body/ul1/#text0\nINSERT html/body/ul1/#text1\nINSERT html/body/ul1/#text2\nINSERT html/body/ul1/#text3\nINSERT html/body/ul2/#text0\nINSERT html/body/ul2/#text1\nINSERT html/body/ul2/#text2\nINSERT html/body/ul2/#text3\nINSERT html/body/ul3/#text0\nINSERT html/body/ul3/#text1\nINSERT html/body/ul3/#text2\nINSERT html/body/ul3/#text3\nINSERT html/body/div0/#text\nINSERT html/body/div6/#text\nINSERT html/body/ul0/div0/#text\nINSERT html/body/ul0/div1/#text\nINSERT html/body/ul0/div2/#text\nINSERT html/body/ul0/div3/#text\nINSERT html/body/ul1/div0/#text\nINSERT html/body/ul1/div1/#text\nINSERT html/body/ul1/div2/#text\nINSERT html/body/ul1/div3/#text\nINSERT html/body/ul2/div0/#text\nINSERT html/body/ul2/div1/#text\nINSERT html/body/ul2/div2/#text\nINSERT html/body/ul2/div3/#text\nINSERT html/body/ul3/div0/#text\nINSERT html/body/ul3/div1/#text\nINSERT html/body/ul3/div2/#text\nINSERT html/body/ul3/div3/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-many/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n<div />\n<div />\n<div />\n<div />\n<div />\n<hr />\n<div />\n<div />\n<div />\n<div />\n<hr />\n<ul>\n  <div />\n  <div />\n  <div />\n  <div />\n</ul>\n<ul>\n  <div />\n  <div />\n  <div />\n  <div />\n</ul>\n<ul>\n  <div />\n  <div />\n  <div />\n  <div />\n</ul>\n<ul>\n  <div />\n  <div />\n  <div />\n  <div />\n</ul>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-many/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <!--M_[--><div></div><!--M_*3 #div/0--><!--M_]2 #text/0 3--><!--M_[--><div></div><!--M_*6 #div/0--><!--M_]5 #text/0 6--><!--M_[--><div></div><!--M_*9 #div/0--><!--M_]8 #text/0 9--><!--M_[--><div></div><!--M_*12 #div/0--><!--M_]11 #text/0 12--><!--M_[--><div></div><!--M_*15 #div/0--><!--M_]14 #text/0 15--><!--M_[--><div></div><!--M_*18 #div/0--><!--M_]17 #text/0 18--><hr><!--M_[--><div></div><!--M_*21 #div/0--><!--M_]20 #text/0 21--><!--M_[--><div></div><!--M_*24 #div/0--><!--M_]23 #text/0 24--><!--M_[--><div></div><!--M_*27 #div/0--><!--M_]26 #text/0 27--><!--M_[--><div></div><!--M_*30 #div/0--><!--M_]29 #text/0 30--><hr><ul><!--M_[--><div></div><!--M_*34 #div/0--><!--M_]33 #text/0 34--><!--M_[--><div></div><!--M_*37 #div/0--><!--M_]36 #text/0 37--><!--M_[--><div></div><!--M_*40 #div/0--><!--M_]39 #text/0 40--><!--M_[--><div></div><!--M_*43 #div/0--><!--M_]42 #text/0 43--></ul><ul><!--M_[--><div></div><!--M_*47 #div/0--><!--M_]46 #text/0 47--><!--M_[--><div></div><!--M_*50 #div/0--><!--M_]49 #text/0 50--><!--M_[--><div></div><!--M_*53 #div/0--><!--M_]52 #text/0 53--><!--M_[--><div></div><!--M_*56 #div/0--><!--M_]55 #text/0 56--></ul><ul><!--M_[--><div></div><!--M_*60 #div/0--><!--M_]59 #text/0 60--><!--M_[--><div></div><!--M_*63 #div/0--><!--M_]62 #text/0 63--><!--M_[--><div></div><!--M_*66 #div/0--><!--M_]65 #text/0 66--><!--M_[--><div></div><!--M_*69 #div/0--><!--M_]68 #text/0 69--></ul><ul><!--M_[--><div></div><!--M_*73 #div/0--><!--M_]72 #text/0 73--><!--M_[--><div></div><!--M_*76 #div/0--><!--M_]75 #text/0 76--><!--M_[--><div></div><!--M_*79 #div/0--><!--M_]78 #text/0 79--><!--M_[--><div></div><!--M_*82 #div/0--><!--M_]81 #text/0 82--></ul><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.eb=[0,{\"BranchScopes:#text/0\":[_.a={\"ConditionalRenderer:#text/0\":_.c=\"__tests__/tags/child.marko\",\"#scopeOffset/1\":4,setHtml:_.b={}},_.d={\"ConditionalRenderer:#text/0\":_.c,\"#scopeOffset/1\":7,setHtml:_.e={}},_.f={\"ConditionalRenderer:#text/0\":_.c,\"#scopeOffset/1\":10,setHtml:_.g={}},_.h={\"ConditionalRenderer:#text/0\":_.c,\"#scopeOffset/1\":13,setHtml:_.i={}},_.j={\"ConditionalRenderer:#text/0\":_.c,\"#scopeOffset/1\":16,setHtml:_.k={}},_.l={\"ConditionalRenderer:#text/0\":_.c,\"#scopeOffset/1\":19,setHtml:_.m={}}],\"BranchScopes:#text/1\":[_.n={\"ConditionalRenderer:#text/0\":_.c,\"#scopeOffset/1\":22,setHtml2:_.o={}},_.p={\"ConditionalRenderer:#text/0\":_.c,\"#scopeOffset/1\":25,setHtml2:_.q={}},_.r={\"ConditionalRenderer:#text/0\":_.c,\"#scopeOffset/1\":28,setHtml2:_.s={}},_.t={\"ConditionalRenderer:#text/0\":_.c,\"#scopeOffset/1\":31,setHtml2:_.u={}}],\"BranchScopes:#text/2\":[_.ab={\"BranchScopes:#ul/0\":[_.v={\"ConditionalRenderer:#text/0\":_.c,\"#scopeOffset/1\":35,setHtml3:_.w={}},_.x={\"ConditionalRenderer:#text/0\":_.c,\"#scopeOffset/1\":38,setHtml3:_.y={}},_.z={\"ConditionalRenderer:#text/0\":_.c,\"#scopeOffset/1\":41,setHtml3:_.A={}},_.B={\"ConditionalRenderer:#text/0\":_.c,\"#scopeOffset/1\":44,setHtml3:_.C={}}]},_.bb={\"BranchScopes:#ul/0\":[_.D={\"ConditionalRenderer:#text/0\":_.c,\"#scopeOffset/1\":48,setHtml3:_.E={}},_.F={\"ConditionalRenderer:#text/0\":_.c,\"#scopeOffset/1\":51,setHtml3:_.G={}},_.H={\"ConditionalRenderer:#text/0\":_.c,\"#scopeOffset/1\":54,setHtml3:_.I={}},_.J={\"ConditionalRenderer:#text/0\":_.c,\"#scopeOffset/1\":57,setHtml3:_.K={}}]},_.cb={\"BranchScopes:#ul/0\":[_.L={\"ConditionalRenderer:#text/0\":_.c,\"#scopeOffset/1\":61,setHtml3:_.M={}},_.N={\"ConditionalRenderer:#text/0\":_.c,\"#scopeOffset/1\":64,setHtml3:_.O={}},_.P={\"ConditionalRenderer:#text/0\":_.c,\"#scopeOffset/1\":67,setHtml3:_.Q={}},_.R={\"ConditionalRenderer:#text/0\":_.c,\"#scopeOffset/1\":70,setHtml3:_.S={}}]},_.db={\"BranchScopes:#ul/0\":[_.T={\"ConditionalRenderer:#text/0\":_.c,\"#scopeOffset/1\":74,setHtml3:_.U={}},_.V={\"ConditionalRenderer:#text/0\":_.c,\"#scopeOffset/1\":77,setHtml3:_.W={}},_.X={\"ConditionalRenderer:#text/0\":_.c,\"#scopeOffset/1\":80,setHtml3:_.Y={}},_.Z={\"ConditionalRenderer:#text/0\":_.c,\"#scopeOffset/1\":83,setHtml3:_.$={}}]}]},_.a,_.b,1,_.d,_.e,1,_.f,_.g,1,_.h,_.i,1,_.j,_.k,1,_.l,_.m,1,_.n,_.o,1,_.p,_.q,1,_.r,_.s,1,_.t,_.u,1,_.ab,_.v,_.w,1,_.x,_.y,1,_.z,_.A,1,_.B,_.C,1,_.bb,_.D,_.E,1,_.F,_.G,1,_.H,_.I,1,_.J,_.K,1,_.cb,_.L,_.M,1,_.N,_.O,1,_.P,_.Q,1,_.R,_.S,1,_.db,_.T,_.U,1,_.V,_.W,1,_.X,_.Y,1,_.Z,_.$],_.a.setHtml=_._[\"__tests__/tags/child.marko_0/_return\"](_.b),_.b[\"#TagVariable\"]=_._[\"__tests__/template.marko_1_setHtml/var\"](_.a),_.d.setHtml=_._[\"__tests__/tags/child.marko_0/_return\"](_.e),_.e[\"#TagVariable\"]=_._[\"__tests__/template.marko_1_setHtml/var\"](_.d),_.f.setHtml=_._[\"__tests__/tags/child.marko_0/_return\"](_.g),_.g[\"#TagVariable\"]=_._[\"__tests__/template.marko_1_setHtml/var\"](_.f),_.h.setHtml=_._[\"__tests__/tags/child.marko_0/_return\"](_.i),_.i[\"#TagVariable\"]=_._[\"__tests__/template.marko_1_setHtml/var\"](_.h),_.j.setHtml=_._[\"__tests__/tags/child.marko_0/_return\"](_.k),_.k[\"#TagVariable\"]=_._[\"__tests__/template.marko_1_setHtml/var\"](_.j),_.l.setHtml=_._[\"__tests__/tags/child.marko_0/_return\"](_.m),_.m[\"#TagVariable\"]=_._[\"__tests__/template.marko_1_setHtml/var\"](_.l),_.n.setHtml2=_._[\"__tests__/tags/child.marko_0/_return\"](_.o),_.o[\"#TagVariable\"]=_._[\"__tests__/template.marko_2_setHtml2/var\"](_.n),_.p.setHtml2=_._[\"__tests__/tags/child.marko_0/_return\"](_.q),_.q[\"#TagVariable\"]=_._[\"__tests__/template.marko_2_setHtml2/var\"](_.p),_.r.setHtml2=_._[\"__tests__/tags/child.marko_0/_return\"](_.s),_.s[\"#TagVariable\"]=_._[\"__tests__/template.marko_2_setHtml2/var\"](_.r),_.t.setHtml2=_._[\"__tests__/tags/child.marko_0/_return\"](_.u),_.u[\"#TagVariable\"]=_._[\"__tests__/template.marko_2_setHtml2/var\"](_.t),_.v.setHtml3=_._[\"__tests__/tags/child.marko_0/_return\"](_.w),_.w[\"#TagVariable\"]=_._[\"__tests__/template.marko_4_setHtml3/var\"](_.v),_.x.setHtml3=_._[\"__tests__/tags/child.marko_0/_return\"](_.y),_.y[\"#TagVariable\"]=_._[\"__tests__/template.marko_4_setHtml3/var\"](_.x),_.z.setHtml3=_._[\"__tests__/tags/child.marko_0/_return\"](_.A),_.A[\"#TagVariable\"]=_._[\"__tests__/template.marko_4_setHtml3/var\"](_.z),_.B.setHtml3=_._[\"__tests__/tags/child.marko_0/_return\"](_.C),_.C[\"#TagVariable\"]=_._[\"__tests__/template.marko_4_setHtml3/var\"](_.B),_.D.setHtml3=_._[\"__tests__/tags/child.marko_0/_return\"](_.E),_.E[\"#TagVariable\"]=_._[\"__tests__/template.marko_4_setHtml3/var\"](_.D),_.F.setHtml3=_._[\"__tests__/tags/child.marko_0/_return\"](_.G),_.G[\"#TagVariable\"]=_._[\"__tests__/template.marko_4_setHtml3/var\"](_.F),_.H.setHtml3=_._[\"__tests__/tags/child.marko_0/_return\"](_.I),_.I[\"#TagVariable\"]=_._[\"__tests__/template.marko_4_setHtml3/var\"](_.H),_.J.setHtml3=_._[\"__tests__/tags/child.marko_0/_return\"](_.K),_.K[\"#TagVariable\"]=_._[\"__tests__/template.marko_4_setHtml3/var\"](_.J),_.L.setHtml3=_._[\"__tests__/tags/child.marko_0/_return\"](_.M),_.M[\"#TagVariable\"]=_._[\"__tests__/template.marko_4_setHtml3/var\"](_.L),_.N.setHtml3=_._[\"__tests__/tags/child.marko_0/_return\"](_.O),_.O[\"#TagVariable\"]=_._[\"__tests__/template.marko_4_setHtml3/var\"](_.N),_.P.setHtml3=_._[\"__tests__/tags/child.marko_0/_return\"](_.Q),_.Q[\"#TagVariable\"]=_._[\"__tests__/template.marko_4_setHtml3/var\"](_.P),_.R.setHtml3=_._[\"__tests__/tags/child.marko_0/_return\"](_.S),_.S[\"#TagVariable\"]=_._[\"__tests__/template.marko_4_setHtml3/var\"](_.R),_.T.setHtml3=_._[\"__tests__/tags/child.marko_0/_return\"](_.U),_.U[\"#TagVariable\"]=_._[\"__tests__/template.marko_4_setHtml3/var\"](_.T),_.V.setHtml3=_._[\"__tests__/tags/child.marko_0/_return\"](_.W),_.W[\"#TagVariable\"]=_._[\"__tests__/template.marko_4_setHtml3/var\"](_.V),_.X.setHtml3=_._[\"__tests__/tags/child.marko_0/_return\"](_.Y),_.Y[\"#TagVariable\"]=_._[\"__tests__/template.marko_4_setHtml3/var\"](_.X),_.Z.setHtml3=_._[\"__tests__/tags/child.marko_0/_return\"](_.$),_.$[\"#TagVariable\"]=_._[\"__tests__/template.marko_4_setHtml3/var\"](_.Z),_.eb),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<!--M_[-->\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*3 #div/0-->\n    <!--M_]2 #text/0 3-->\n    <!--M_[-->\n    <div />\n    <!--M_*6 #div/0-->\n    <!--M_]5 #text/0 6-->\n    <!--M_[-->\n    <div />\n    <!--M_*9 #div/0-->\n    <!--M_]8 #text/0 9-->\n    <!--M_[-->\n    <div />\n    <!--M_*12 #div/0-->\n    <!--M_]11 #text/0 12-->\n    <!--M_[-->\n    <div />\n    <!--M_*15 #div/0-->\n    <!--M_]14 #text/0 15-->\n    <!--M_[-->\n    <div />\n    <!--M_*18 #div/0-->\n    <!--M_]17 #text/0 18-->\n    <hr />\n    <!--M_[-->\n    <div />\n    <!--M_*21 #div/0-->\n    <!--M_]20 #text/0 21-->\n    <!--M_[-->\n    <div />\n    <!--M_*24 #div/0-->\n    <!--M_]23 #text/0 24-->\n    <!--M_[-->\n    <div />\n    <!--M_*27 #div/0-->\n    <!--M_]26 #text/0 27-->\n    <!--M_[-->\n    <div />\n    <!--M_*30 #div/0-->\n    <!--M_]29 #text/0 30-->\n    <hr />\n    <ul>\n      <!--M_[-->\n      <div />\n      <!--M_*34 #div/0-->\n      <!--M_]33 #text/0 34-->\n      <!--M_[-->\n      <div />\n      <!--M_*37 #div/0-->\n      <!--M_]36 #text/0 37-->\n      <!--M_[-->\n      <div />\n      <!--M_*40 #div/0-->\n      <!--M_]39 #text/0 40-->\n      <!--M_[-->\n      <div />\n      <!--M_*43 #div/0-->\n      <!--M_]42 #text/0 43-->\n    </ul>\n    <ul>\n      <!--M_[-->\n      <div />\n      <!--M_*47 #div/0-->\n      <!--M_]46 #text/0 47-->\n      <!--M_[-->\n      <div />\n      <!--M_*50 #div/0-->\n      <!--M_]49 #text/0 50-->\n      <!--M_[-->\n      <div />\n      <!--M_*53 #div/0-->\n      <!--M_]52 #text/0 53-->\n      <!--M_[-->\n      <div />\n      <!--M_*56 #div/0-->\n      <!--M_]55 #text/0 56-->\n    </ul>\n    <ul>\n      <!--M_[-->\n      <div />\n      <!--M_*60 #div/0-->\n      <!--M_]59 #text/0 60-->\n      <!--M_[-->\n      <div />\n      <!--M_*63 #div/0-->\n      <!--M_]62 #text/0 63-->\n      <!--M_[-->\n      <div />\n      <!--M_*66 #div/0-->\n      <!--M_]65 #text/0 66-->\n      <!--M_[-->\n      <div />\n      <!--M_*69 #div/0-->\n      <!--M_]68 #text/0 69-->\n    </ul>\n    <ul>\n      <!--M_[-->\n      <div />\n      <!--M_*73 #div/0-->\n      <!--M_]72 #text/0 73-->\n      <!--M_[-->\n      <div />\n      <!--M_*76 #div/0-->\n      <!--M_]75 #text/0 76-->\n      <!--M_[-->\n      <div />\n      <!--M_*79 #div/0-->\n      <!--M_]78 #text/0 79-->\n      <!--M_[-->\n      <div />\n      <!--M_*82 #div/0-->\n      <!--M_]81 #text/0 82-->\n    </ul>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.eb = [0,\n          {\n            \"BranchScopes:#text/0\": [_.a = {\n              \"ConditionalRenderer:#text/0\": _.c =\n                \"__tests__/tags/child.marko\",\n              \"#scopeOffset/1\": 4,\n              setHtml: _.b = {}\n            }, _.d = {\n              \"ConditionalRenderer:#text/0\": _.c,\n              \"#scopeOffset/1\": 7,\n              setHtml: _.e = {}\n            }, _.f = {\n              \"ConditionalRenderer:#text/0\": _.c,\n              \"#scopeOffset/1\": 10,\n              setHtml: _.g = {}\n            }, _.h = {\n              \"ConditionalRenderer:#text/0\": _.c,\n              \"#scopeOffset/1\": 13,\n              setHtml: _.i = {}\n            }, _.j = {\n              \"ConditionalRenderer:#text/0\": _.c,\n              \"#scopeOffset/1\": 16,\n              setHtml: _.k = {}\n            }, _.l = {\n              \"ConditionalRenderer:#text/0\": _.c,\n              \"#scopeOffset/1\": 19,\n              setHtml: _.m = {}\n            }],\n            \"BranchScopes:#text/1\": [_.n = {\n              \"ConditionalRenderer:#text/0\": _.c,\n              \"#scopeOffset/1\": 22,\n              setHtml2: _.o = {}\n            }, _.p = {\n              \"ConditionalRenderer:#text/0\": _.c,\n              \"#scopeOffset/1\": 25,\n              setHtml2: _.q = {}\n            }, _.r = {\n              \"ConditionalRenderer:#text/0\": _.c,\n              \"#scopeOffset/1\": 28,\n              setHtml2: _.s = {}\n            }, _.t = {\n              \"ConditionalRenderer:#text/0\": _.c,\n              \"#scopeOffset/1\": 31,\n              setHtml2: _.u = {}\n            }],\n            \"BranchScopes:#text/2\": [_.ab = {\n              \"BranchScopes:#ul/0\": [_.v = {\n                \"ConditionalRenderer:#text/0\": _.c,\n                \"#scopeOffset/1\": 35,\n                setHtml3: _.w = {}\n              }, _.x = {\n                \"ConditionalRenderer:#text/0\": _.c,\n                \"#scopeOffset/1\": 38,\n                setHtml3: _.y = {}\n              }, _.z = {\n                \"ConditionalRenderer:#text/0\": _.c,\n                \"#scopeOffset/1\": 41,\n                setHtml3: _.A = {}\n              }, _.B = {\n                \"ConditionalRenderer:#text/0\": _.c,\n                \"#scopeOffset/1\": 44,\n                setHtml3: _.C = {}\n              }]\n            }, _.bb = {\n              \"BranchScopes:#ul/0\": [_.D = {\n                \"ConditionalRenderer:#text/0\": _.c,\n                \"#scopeOffset/1\": 48,\n                setHtml3: _.E = {}\n              }, _.F = {\n                \"ConditionalRenderer:#text/0\": _.c,\n                \"#scopeOffset/1\": 51,\n                setHtml3: _.G = {}\n              }, _.H = {\n                \"ConditionalRenderer:#text/0\": _.c,\n                \"#scopeOffset/1\": 54,\n                setHtml3: _.I = {}\n              }, _.J = {\n                \"ConditionalRenderer:#text/0\": _.c,\n                \"#scopeOffset/1\": 57,\n                setHtml3: _.K = {}\n              }]\n            }, _.cb = {\n              \"BranchScopes:#ul/0\": [_.L = {\n                \"ConditionalRenderer:#text/0\": _.c,\n                \"#scopeOffset/1\": 61,\n                setHtml3: _.M = {}\n              }, _.N = {\n                \"ConditionalRenderer:#text/0\": _.c,\n                \"#scopeOffset/1\": 64,\n                setHtml3: _.O = {}\n              }, _.P = {\n                \"ConditionalRenderer:#text/0\": _.c,\n                \"#scopeOffset/1\": 67,\n                setHtml3: _.Q = {}\n              }, _.R = {\n                \"ConditionalRenderer:#text/0\": _.c,\n                \"#scopeOffset/1\": 70,\n                setHtml3: _.S = {}\n              }]\n            }, _.db = {\n              \"BranchScopes:#ul/0\": [_.T = {\n                \"ConditionalRenderer:#text/0\": _.c,\n                \"#scopeOffset/1\": 74,\n                setHtml3: _.U = {}\n              }, _.V = {\n                \"ConditionalRenderer:#text/0\": _.c,\n                \"#scopeOffset/1\": 77,\n                setHtml3: _.W = {}\n              }, _.X = {\n                \"ConditionalRenderer:#text/0\": _.c,\n                \"#scopeOffset/1\": 80,\n                setHtml3: _.Y = {}\n              }, _.Z = {\n                \"ConditionalRenderer:#text/0\": _.c,\n                \"#scopeOffset/1\": 83,\n                setHtml3: _.$ = {}\n              }]\n            }]\n          }, _.a, _.b, 1, _.d, _.e, 1, _.f, _.g, 1, _.h, _.i, 1, _.j, _.k,\n          1, _.l, _.m, 1, _.n, _.o, 1, _.p, _.q, 1, _.r, _.s, 1, _.t, _.u,\n          1, _.ab, _.v, _.w, 1, _.x, _.y, 1, _.z, _.A, 1, _.B, _.C, 1, _.bb,\n          _.D, _.E, 1, _.F, _.G, 1, _.H, _.I, 1, _.J, _.K, 1, _.cb, _.L, _\n          .M, 1, _.N, _.O, 1, _.P, _.Q, 1, _.R, _.S, 1, _.db, _.T, _.U, 1, _\n          .V, _.W, 1, _.X, _.Y, 1, _.Z, _.$\n        ], _.a.setHtml = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.b), _.b[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_1_setHtml/var\"\n          ](_.a), _.d.setHtml = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.e), _.e[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_1_setHtml/var\"\n          ](_.d), _.f.setHtml = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.g), _.g[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_1_setHtml/var\"\n          ](_.f), _.h.setHtml = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.i), _.i[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_1_setHtml/var\"\n          ](_.h), _.j.setHtml = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.k), _.k[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_1_setHtml/var\"\n          ](_.j), _.l.setHtml = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.m), _.m[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_1_setHtml/var\"\n          ](_.l), _.n.setHtml2 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.o), _.o[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_2_setHtml2/var\"\n          ](_.n), _.p.setHtml2 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.q), _.q[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_2_setHtml2/var\"\n          ](_.p), _.r.setHtml2 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.s), _.s[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_2_setHtml2/var\"\n          ](_.r), _.t.setHtml2 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.u), _.u[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_2_setHtml2/var\"\n          ](_.t), _.v.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.w), _.w[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_4_setHtml3/var\"\n          ](_.v), _.x.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.y), _.y[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_4_setHtml3/var\"\n          ](_.x), _.z.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.A), _.A[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_4_setHtml3/var\"\n          ](_.z), _.B.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.C), _.C[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_4_setHtml3/var\"\n          ](_.B), _.D.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.E), _.E[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_4_setHtml3/var\"\n          ](_.D), _.F.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.G), _.G[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_4_setHtml3/var\"\n          ](_.F), _.H.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.I), _.I[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_4_setHtml3/var\"\n          ](_.H), _.J.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.K), _.K[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_4_setHtml3/var\"\n          ](_.J), _.L.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.M), _.M[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_4_setHtml3/var\"\n          ](_.L), _.N.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.O), _.O[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_4_setHtml3/var\"\n          ](_.N), _.P.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.Q), _.Q[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_4_setHtml3/var\"\n          ](_.P), _.R.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.S), _.S[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_4_setHtml3/var\"\n          ](_.R), _.T.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.U), _.U[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_4_setHtml3/var\"\n          ](_.T), _.V.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.W), _.W[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_4_setHtml3/var\"\n          ](_.V), _.X.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.Y), _.Y[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_4_setHtml3/var\"\n          ](_.X), _.Z.setHtml3 = _._[\n          \"__tests__/tags/child.marko_0/_return\"\n          ](_.$), _.$[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_4_setHtml3/var\"\n          ](_.Z), _.eb),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT #comment\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/#comment2\nINSERT html/body/div1\nINSERT html/body/#comment3\nINSERT html/body/#comment4\nINSERT html/body/#comment5\nINSERT html/body/div2\nINSERT html/body/#comment6\nINSERT html/body/#comment7\nINSERT html/body/#comment8\nINSERT html/body/div3\nINSERT html/body/#comment9\nINSERT html/body/#comment10\nINSERT html/body/#comment11\nINSERT html/body/div4\nINSERT html/body/#comment12\nINSERT html/body/#comment13\nINSERT html/body/#comment14\nINSERT html/body/div5\nINSERT html/body/#comment15\nINSERT html/body/#comment16\nINSERT html/body/hr0\nINSERT html/body/#comment17\nINSERT html/body/div6\nINSERT html/body/#comment18\nINSERT html/body/#comment19\nINSERT html/body/#comment20\nINSERT html/body/div7\nINSERT html/body/#comment21\nINSERT html/body/#comment22\nINSERT html/body/#comment23\nINSERT html/body/div8\nINSERT html/body/#comment24\nINSERT html/body/#comment25\nINSERT html/body/#comment26\nINSERT html/body/div9\nINSERT html/body/#comment27\nINSERT html/body/#comment28\nINSERT html/body/hr1\nINSERT html/body/ul0\nINSERT html/body/ul0/#comment0\nINSERT html/body/ul0/div0\nINSERT html/body/ul0/#comment1\nINSERT html/body/ul0/#comment2\nINSERT html/body/ul0/#comment3\nINSERT html/body/ul0/div1\nINSERT html/body/ul0/#comment4\nINSERT html/body/ul0/#comment5\nINSERT html/body/ul0/#comment6\nINSERT html/body/ul0/div2\nINSERT html/body/ul0/#comment7\nINSERT html/body/ul0/#comment8\nINSERT html/body/ul0/#comment9\nINSERT html/body/ul0/div3\nINSERT html/body/ul0/#comment10\nINSERT html/body/ul0/#comment11\nINSERT html/body/ul1\nINSERT html/body/ul1/#comment0\nINSERT html/body/ul1/div0\nINSERT html/body/ul1/#comment1\nINSERT html/body/ul1/#comment2\nINSERT html/body/ul1/#comment3\nINSERT html/body/ul1/div1\nINSERT html/body/ul1/#comment4\nINSERT html/body/ul1/#comment5\nINSERT html/body/ul1/#comment6\nINSERT html/body/ul1/div2\nINSERT html/body/ul1/#comment7\nINSERT html/body/ul1/#comment8\nINSERT html/body/ul1/#comment9\nINSERT html/body/ul1/div3\nINSERT html/body/ul1/#comment10\nINSERT html/body/ul1/#comment11\nINSERT html/body/ul2\nINSERT html/body/ul2/#comment0\nINSERT html/body/ul2/div0\nINSERT html/body/ul2/#comment1\nINSERT html/body/ul2/#comment2\nINSERT html/body/ul2/#comment3\nINSERT html/body/ul2/div1\nINSERT html/body/ul2/#comment4\nINSERT html/body/ul2/#comment5\nINSERT html/body/ul2/#comment6\nINSERT html/body/ul2/div2\nINSERT html/body/ul2/#comment7\nINSERT html/body/ul2/#comment8\nINSERT html/body/ul2/#comment9\nINSERT html/body/ul2/div3\nINSERT html/body/ul2/#comment10\nINSERT html/body/ul2/#comment11\nINSERT html/body/ul3\nINSERT html/body/ul3/#comment0\nINSERT html/body/ul3/div0\nINSERT html/body/ul3/#comment1\nINSERT html/body/ul3/#comment2\nINSERT html/body/ul3/#comment3\nINSERT html/body/ul3/div1\nINSERT html/body/ul3/#comment4\nINSERT html/body/ul3/#comment5\nINSERT html/body/ul3/#comment6\nINSERT html/body/ul3/div2\nINSERT html/body/ul3/#comment7\nINSERT html/body/ul3/#comment8\nINSERT html/body/ul3/#comment9\nINSERT html/body/ul3/div3\nINSERT html/body/ul3/#comment10\nINSERT html/body/ul3/#comment11\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-many/tags/child.marko",
    "content": "<div/el />\n<return=() => (html) => el().innerHTML = html />"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-many/template.marko",
    "content": "import Child from '<child>';\n\n<for to=5>\n  <${1 && Child}/setHtml />\n</for>\n\n<script>\n  setHtml()('First Only');\n</script>\n\n<hr />\n\n<let/to=3 />\n<for to=to>\n  <${1 && Child}/setHtml2 />\n</for>\n\n<script>\n  setHtml2()('First Only');\n</script>\n\n<hr />\n\n<for|i| to=3>\n  <ul>\n  <for|j| to=3>\n    <${1 && Child}/setHtml3 />\n  </for>\n  </ul>\n</for>\n\n<script>\n  let i = 0;\n  for (const fn of setHtml3) {\n    fn(`All (${i++})`);\n  }\n</script>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-many/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [{ show: true }],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-in-function/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"m\",\n      \"$init\": \"o\",\n      \"$$x_getter\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-in-function/__snapshots__/csr-sanitized.expected.md",
    "content": "Hoisted values must be functions, received type \"number\"."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-in-function/__snapshots__/csr.expected.md",
    "content": "Hoisted values must be functions, received type \"number\"."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-in-function/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<div> </div>\";\nexport const $walks = /* next(1), get, out(1) */\"D l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $input_fn = ($scope, input_fn) => _._text($scope[\"#text/0\"], typeof input_fn);\nexport const $input = ($scope, input) => $input_fn($scope, input.fn);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-in-function/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 50 (min) 54 (brotli)\nconst $x_getter = _._hoist(1);\n(_._script(\"b0\", ($scope) => $x_getter($scope)()), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-in-function/__snapshots__/dom.expected/template.js",
    "content": "export const $template = _child_template;\nexport const $walks = /* <child> */`/${_child_walks}&`;\nimport { $setup as _child, $input_fn as _child_input_fn, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $x_getter = _._hoist(\"x\");\nconst $x = /* @__PURE__ */_._const(\"x\", $scope => _._assert_hoist($scope.x));\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => $x_getter($scope)());\nexport function $setup($scope) {\n  _child($scope[\"#childScope/0\"]);\n  _child_input_fn($scope[\"#childScope/0\"], () => $x_getter($scope)());\n  $x($scope, 1);\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-in-function/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div>${_._escape(typeof input.fn)}${_._el_resume($scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.fn */0))}</div>`);\n  _._serialize_if($scope0_reason, /* input.fn */0) && _._scope($scope0_id, {}, \"__tests__/tags/child.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-in-function/__snapshots__/html.expected/template.js",
    "content": "import _child from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _child({\n    fn: () => (x => x())(_._hoist_read_error)\n  });\n  const x = 1;\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {\n    x\n  }, \"__tests__/template.marko\", 0, {\n    x: \"5:8\"\n  });\n  _._assert_hoist(x);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-in-function/__snapshots__/resume-sanitized.expected.md",
    "content": "Hoisted values must be functions, received type \"number\"."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-in-function/__snapshots__/resume.expected.md",
    "content": "Hoisted values must be functions, received type \"number\"."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-in-function/__snapshots__/ssr-sanitized.expected.md",
    "content": "Hoisted values must be functions, received type \"number\"."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-in-function/__snapshots__/ssr.expected.md",
    "content": "Hoisted values must be functions, received type \"number\"."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-in-function/tags/child.marko",
    "content": "<div>${typeof input.fn}</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-in-function/template.marko",
    "content": "<script>x()</script>\n<child fn=()=>x() />\n\n\n<const/x=1>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-in-function/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_runtime: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-script-read/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"r\",\n      \"$init\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-script-read/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  Hello World\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-script-read/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  Hello World\n</div>\n```\n\n# Mutations\n```\nINSERT div\nINSERT div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-script-read/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 51 (min) 54 (brotli)\n(_._script(\"a0\", ($scope) => ($scope.a.innerHTML = \"Hello World\")), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-script-read/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* get, over(1) */\" b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => (_._el_read($scope[\"#div/0\"]).innerHTML = 'Hello World'));\nexport const $setup = $setup__script;\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-script-read/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div></div>${_._el_resume($scope0_id, \"#div/0\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-script-read/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  Hello World\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-script-read/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      Hello World\n    </div>\n    <!--M_*1 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-script-read/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-script-read/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div></div><!--M_*1 #div/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0]),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*1 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-script-read/template.marko",
    "content": "<script>\n  el().innerHTML = 'Hello World';\n</script>\n\n<div/el/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"o\",\n      \"$init\": \"r\",\n      \"$id\": \"t\",\n      \"$$el2_getter\": \"s\",\n      \"$$el_getter\": \"i\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<div\n  class=\"child0 child1\"\n>\n  Hello World\n</div>\n<hr />\n<div>\n  Hello World\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var/__snapshots__/csr.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<!---->\n<!---->\n<div\n  class=\"child0 child1\"\n>\n  Hello World\n</div>\n<!---->\n<hr />\n<div>\n  Hello World\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, div0, #comment2, hr, div1, #comment3\nUPDATE div0[class] null => \"child0 child1\"\nINSERT div0/#text\nINSERT div1/#text\nUPDATE div0[class] \"child0\" => \"child0 child1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"\";\nexport const $walks = \"\";\nexport const $setup = () => {};\nlet id = 0;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $input__script = _._script(\"__tests__/tags/child.marko_0_input\", $scope => $scope.input.value()?.classList.add(`child${id++}`));\nexport const $input = /* @__PURE__ */_._const(\"input\", $input__script);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 262 (min) 159 (brotli)\nlet id = 0;\n_._script(\"a0\", ($scope) => $scope.b.value()?.classList.add(\"child\" + id++));\nconst $el2_getter = _._hoist(0, \"Ac\"),\n  $el_getter = _._hoist_resume(\"b0\", 0, \"Aa\", \"Aa\");\n(_._el(\"b1\", 0),\n  _._script(\"b2\", ($scope) => {\n    {\n      const el = $el_getter($scope)();\n      el && (el.innerHTML = \"Hello World\");\n    }\n    {\n      const el = $el2_getter($scope)();\n      el && (el.innerHTML = \"Hello World\");\n    }\n  }),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<!><!>${_child_template}<hr><!><!>`;\nexport const $walks = /* over(1), replace, over(1), <child>, over(1), replace, over(2) */`b%b/${_child_walks}&b%c`;\nimport { $setup as _child, $input as _child_input, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $el2_getter = _._hoist(\"#div/0\", \"BranchScopes:#text/2\");\nconst $el_getter = _._hoist_resume(\"__tests__/template.marko_0_#div/hoist\", \"#div/0\", \"BranchScopes:#text/0\", \"BranchScopes:#text/0\");\nconst $if_content2__$el_getter = _._el(\"__tests__/template.marko_2_#div\", \"#div/0\");\nconst $if_content2__setup = $scope => {\n  _child($scope[\"#childScope/1\"]);\n  _child_input($scope[\"#childScope/1\"], {\n    value: $if_content2__$el_getter($scope)\n  });\n};\nconst $if_content__if = /* @__PURE__ */_._if(\"#text/0\", `<div></div>${_child_template}`, /* get, over(1), <child> */` b/${_child_walks}&`, $if_content2__setup);\nconst $if_content__input_show = /* @__PURE__ */_._if_closure(\"#text/0\", 0, $scope => $if_content__if($scope, $scope._.input_show ? 0 : 1));\nconst $if_content__setup = $if_content__input_show;\nconst $if = /* @__PURE__ */_._if(\"#text/0\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", $if_content__setup);\nexport const $input_show = /* @__PURE__ */_._const(\"input_show\", $scope => {\n  $if($scope, $scope.input_show ? 0 : 1);\n  $if_content__input_show($scope);\n});\nconst $if2 = /* @__PURE__ */_._if(\"#text/2\", \"<div></div>\", /* get, over(1) */\" b\");\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => {\n  {\n    const el = $el_getter($scope)();\n    if (el) {\n      el.innerHTML = 'Hello World';\n    }\n  }\n  {\n    const el = $el2_getter($scope)();\n    if (el) {\n      el.innerHTML = 'Hello World';\n    }\n  }\n});\nexport function $setup($scope) {\n  _child($scope[\"#childScope/1\"]);\n  _child_input($scope[\"#childScope/1\"], {\n    value: $el_getter($scope)\n  });\n  $if2($scope, true ? 0 : 1);\n  $setup__script($scope);\n}\nexport const $input = ($scope, input) => $input_show($scope, input.show);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var/__snapshots__/html.expected/tags/child.js",
    "content": "let id = 0;\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._script($scope0_id, \"__tests__/tags/child.marko_0_input\");\n  _._scope($scope0_id, {\n    input\n  }, \"__tests__/tags/child.marko\", 0, {\n    input: 0\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _child from \"./tags/child.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $el_getter = _._hoist($scope0_id, \"__tests__/template.marko_0_#div/hoist\");\n  _._if(() => {\n    if (input.show) {\n      const $scope1_id = _._scope_id();\n      _._if(() => {\n        if (input.show) {\n          const $scope2_id = _._scope_id();\n          const $el = _._el($scope2_id, \"__tests__/template.marko_2_#div\");\n          _._html(`<div></div>${_._el_resume($scope2_id, \"#div/0\")}`);\n          _child({\n            value: $el\n          });\n          _._scope($scope2_id, {}, \"__tests__/template.marko\", \"2:4\");\n          return 0;\n        }\n      }, $scope1_id, \"#text/0\", 1, _._serialize_guard($scope0_reason, /* input.show */0), _._serialize_guard($scope0_reason, /* input.show */0), 0, 1);\n      _._scope($scope1_id, {\n        _: _._serialize_if($scope0_reason, /* input.show */0) && _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"1:2\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/0\", 1, _._serialize_guard($scope0_reason, /* input.show */0), _._serialize_guard($scope0_reason, /* input.show */0));\n  _child({\n    value: $el_getter\n  });\n  _._html(\"<hr>\");\n  _._if(() => {\n    if (true) {\n      const $scope3_id = _._scope_id();\n      _._html(`<div></div>${_._el_resume($scope3_id, \"#div/0\")}`);\n      _._scope($scope3_id, {}, \"__tests__/template.marko\", \"19:2\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/2\", 1, 0, _._serialize_guard($scope0_reason, /* input.show */0), 0, 1);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._serialize_if($scope0_reason, /* input.show */0) && _._scope($scope0_id, {\n    input_show: input.show\n  }, \"__tests__/template.marko\", 0, {\n    input_show: [\"input.show\"]\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<div\n  class=\"child0 child1\"\n>\n  Hello World\n</div>\n<hr />\n<div>\n  Hello World\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var/__snapshots__/resume.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div\n      class=\"child0 child1\"\n    >\n      Hello World\n    </div>\n    <!--M_*3 #div/0-->\n    <hr />\n    <div>\n      Hello World\n    </div>\n    <!--M_*6 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.f = [0, _.g = {\n          \"BranchScopes:#text/0\": _.a = {\n            \"BranchScopes:#text/0\": _.b = {}\n          },\n          \"BranchScopes:#text/2\": _.e = {}\n        }, _.a, _.b,\n        {\n          input: _.c = {}\n        },\n        {\n          input: _.d = {}\n        }, _.e], _.d.value = _._[\n          \"__tests__/template.marko_0_#div/hoist\"\n          ](_.g), _.c.value = _._[\n          \"__tests__/template.marko_2_#div\"\n          ](_.b), _.f),\n        \"__tests__/tags/child.marko_0_input 4 5 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div0[class] null => \"child0 child1\"\nUPDATE html/body/div0[class] \"child0\" => \"child0 child1\"\nINSERT html/body/div0/#text\nINSERT html/body/div1/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n<hr />\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div></div><!--M_*3 #div/0--><hr><div></div><!--M_*6 #div/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.f=[0,_.g={\"BranchScopes:#text/0\":_.a={\"BranchScopes:#text/0\":_.b={}},\"BranchScopes:#text/2\":_.e={}},_.a,_.b,{input:_.c={}},{input:_.d={}},_.e],_.d.value=_._[\"__tests__/template.marko_0_#div/hoist\"](_.g),_.c.value=_._[\"__tests__/template.marko_2_#div\"](_.b),_.f),\"__tests__/tags/child.marko_0_input 4 5 __tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*3 #div/0-->\n    <hr />\n    <div />\n    <!--M_*6 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.f = [0, _.g = {\n          \"BranchScopes:#text/0\": _.a = {\n            \"BranchScopes:#text/0\": _.b = {}\n          },\n          \"BranchScopes:#text/2\": _.e = {}\n        }, _.a, _.b,\n        {\n          input: _.c = {}\n        },\n        {\n          input: _.d = {}\n        }, _.e], _.d.value = _._[\n          \"__tests__/template.marko_0_#div/hoist\"\n          ](_.g), _.c.value = _._[\n          \"__tests__/template.marko_2_#div\"\n          ](_.b), _.f),\n        \"__tests__/tags/child.marko_0_input 4 5 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/#comment0\nINSERT html/body/hr\nINSERT html/body/div1\nINSERT html/body/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var/tags/child.marko",
    "content": "static let id = 0;\n<script>\n  input.value()?.classList.add(`child${id++}`);\n</script>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var/template.marko",
    "content": "<if=input.show>\n  <if=input.show>\n    <div/$el />\n    <child=$el />\n  </if>\n</if>\n\n<child=$el/>\n\n<script>\n  const el = $el()\n  if (el) {\n    el.innerHTML = 'Hello World';\n  }\n</script>\n\n<hr />\n\n<if=true>\n  <div/$el2 />\n</if>\n\n<script>\n  const el = $el2()\n  if (el) {\n    el.innerHTML = 'Hello World';\n  }\n</script>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [{ show: true }],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-from-dynamic/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$dynamicTag\": \"s\",\n      \"$$dynamicTag2\": \"n\",\n      \"$$el3_getter\": \"r\",\n      \"$$inputshowChildnull_content__$el2_getter\": \"i\",\n      \"$$el2_getter\": \"m\",\n      \"$$child_content2\": \"c\",\n      \"$$inputshowChildnull_content__setup__script\": \"e\",\n      \"$$el_getter\": \"a\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-from-dynamic/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<span>\n  Hoist from custom tag\n</span>\n<span>\n  Hoist from custom tag\n</span>\n<div\n  class=\"outer inner\"\n/>\n<div\n  class=\"outer inner\"\n/>\n<div\n  class=\"outer inner\"\n/>\n<div\n  class=\"outer inner\"\n/>\n<section>\n  <p>\n    Hoist from dynamic tag\n  </p>\n</section>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-from-dynamic/__snapshots__/csr.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<!---->\n<!---->\n<span>\n  Hoist from custom tag\n</span>\n<span>\n  Hoist from custom tag\n</span>\n<!---->\n<!---->\n<!---->\n<!---->\n<div\n  class=\"outer inner\"\n/>\n<div\n  class=\"outer inner\"\n/>\n<!---->\n<!---->\n<!---->\n<!---->\n<div\n  class=\"outer inner\"\n/>\n<div\n  class=\"outer inner\"\n/>\n<!---->\n<!---->\n<!---->\n<section>\n  <p>\n    Hoist from dynamic tag\n  </p>\n</section>\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, span0, span1, #comment2, #comment3, #comment4, #comment5, div0, div1, #comment6, #comment7, #comment8, #comment9, div2, div3, #comment10, #comment11, #comment12, section, #comment13\nINSERT span0/#text\nINSERT span1/#text\nUPDATE div0[class] null => \"outer inner\"\nUPDATE div1[class] null => \"outer inner\"\nUPDATE div2[class] null => \"outer inner\"\nUPDATE div3[class] null => \"outer inner\"\nINSERT section/p/#text\nUPDATE div0[class] \"outer\" => \"outer inner\"\nUPDATE div1[class] \"outer\" => \"outer inner\"\nUPDATE div2[class] \"outer\" => \"outer inner\"\nUPDATE div3[class] \"outer\" => \"outer inner\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-from-dynamic/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<!><!><!><!>\";\nexport const $walks = /* over(1), replace, over(1), replace, over(2) */\"b%b%c\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\");\nconst $dynamicTag2 = /* @__PURE__ */_._dynamic_tag(\"#text/1\");\nexport const $input_content = ($scope, input_content) => {\n  $dynamicTag($scope, input_content);\n  $dynamicTag2($scope, input_content);\n};\nexport const $input = ($scope, input) => $input_content($scope, input.content);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-from-dynamic/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 636 (min) 289 (brotli)\nconst $dynamicTag = _._dynamic_tag(0),\n  $dynamicTag2 = _._dynamic_tag(1),\n  $el3_getter = _._hoist(0, \"B4\");\n_._content_resume(\"b0\", \"<p></p>\", \" b\", 0, 0, \"B4\");\nconst $inputshowChildnull_content__$el2_getter = _._hoist_resume(\"b1\", 0, \"B3\"),\n  $el2_getter = _._hoist_resume(\"b2\", 0, \"B3\", \"B2\"),\n  $child_content2 = _._content(\"b3\", \"<div></div>\", \" b\", 0, 0, \"B3\"),\n  $inputshowChildnull_content__setup__script = _._script(\"b4\", ($scope) => {\n    for (const el of $inputshowChildnull_content__$el2_getter($scope))\n      el.classList.add(\"inner\");\n  });\n_._content_resume(\n  \"b5\",\n  \"<!><!><!><!><!><!>\",\n  \"b/b%b%c&b\",\n  ($scope) => {\n    ($scope.a,\n      (($scope, input_content) => {\n        ($dynamicTag($scope, input_content),\n          $dynamicTag2($scope, input_content));\n      })($scope.a, $child_content2($scope)),\n      $inputshowChildnull_content__setup__script($scope));\n  },\n  0,\n  \"B2\",\n);\nconst $el_getter = _._hoist_resume(\"b6\", 0, \"B1\");\n(_._script(\"b8\", ($scope) => {\n  for (const el of $el_getter($scope)) el.innerHTML = \"Hoist from custom tag\";\n  for (const el of $el2_getter($scope)) el.classList.add(\"outer\");\n  {\n    const el = $el3_getter($scope)();\n    el && (el.innerHTML = \"Hoist from dynamic tag\");\n  }\n}),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-from-dynamic/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<!>${_child_template}<!><!><!>`;\nexport const $walks = /* over(1), <child>, replace, over(1), replace, over(2) */`b/${_child_walks}&%b%c`;\nimport Child from \"./tags/child.marko\";\nimport { $setup as _child, $input_content as _child_input_content, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $el3_getter = _._hoist(\"#p/0\", \"ClosureScopes:4\");\nconst $inputshowsectionnull_content = _._content_resume(\"__tests__/template.marko_4_content\", \"<p></p>\", /* get, over(1) */\" b\", 0, 0, \"ClosureScopes:4\");\nconst $inputshowChildnull_content__$el2_getter = _._hoist_resume(\"__tests__/template.marko_2_#div/hoist\", \"#div/0\", \"ClosureScopes:3\");\nconst $el2_getter = _._hoist_resume(\"__tests__/template.marko_0_#div/hoist\", \"#div/0\", \"ClosureScopes:3\", \"ClosureScopes:2\");\nconst $child_content2 = /* @__PURE__ */_._content(\"__tests__/template.marko_3_content\", \"<div></div>\", /* get, over(1) */\" b\", 0, 0, \"ClosureScopes:3\");\nconst $inputshowChildnull_content__setup__script = _._script(\"__tests__/template.marko_2\", $scope => {\n  for (const el of $inputshowChildnull_content__$el2_getter($scope)) {\n    el.classList.add('inner');\n  }\n});\nconst $inputshowChildnull_content__setup = $scope => {\n  _child($scope[\"#childScope/0\"]);\n  _child_input_content($scope[\"#childScope/0\"], $child_content2($scope));\n  $inputshowChildnull_content__setup__script($scope);\n};\nconst $inputshowChildnull_content = _._content_resume(\"__tests__/template.marko_2_content\", `<!>${_child_template}<!>`, /* over(1), <child>, over(1) */`b/${_child_walks}&b`, $inputshowChildnull_content__setup, 0, \"ClosureScopes:2\");\nconst $el_getter = _._hoist_resume(\"__tests__/template.marko_0_#span/hoist\", \"#span/0\", \"ClosureScopes:1\");\nconst $child_content = /* @__PURE__ */_._content(\"__tests__/template.marko_1_content\", \"<span></span>\", /* get, over(1) */\" b\", 0, 0, \"ClosureScopes:1\");\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => {\n  for (const el of $el_getter($scope)) {\n    el.innerHTML = 'Hoist from custom tag';\n  }\n  for (const el of $el2_getter($scope)) {\n    el.classList.add('outer');\n  }\n  {\n    const el = $el3_getter($scope)();\n    if (el) {\n      el.innerHTML = 'Hoist from dynamic tag';\n    }\n  }\n});\nexport function $setup($scope) {\n  _child($scope[\"#childScope/0\"]);\n  _child_input_content($scope[\"#childScope/0\"], $child_content($scope));\n  $setup__script($scope);\n}\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/1\", $inputshowChildnull_content);\nconst $dynamicTag2 = /* @__PURE__ */_._dynamic_tag(\"#text/2\", $inputshowsectionnull_content);\nexport const $input_show = ($scope, input_show) => {\n  $dynamicTag($scope, input_show ? Child : null);\n  $dynamicTag2($scope, input_show ? 'section' : null);\n};\nexport const $input = ($scope, input) => $input_show($scope, input.show);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-from-dynamic/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._dynamic_tag($scope0_id, \"#text/0\", input.content, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.content */0));\n  _._dynamic_tag($scope0_id, \"#text/1\", input.content, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.content */0));\n  _._serialize_if($scope0_reason, /* input.content */0) && _._scope($scope0_id, {}, \"__tests__/tags/child.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-from-dynamic/__snapshots__/html.expected/template.js",
    "content": "import Child from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nimport _child from \"./tags/child.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $el_getter = _._hoist($scope0_id, \"__tests__/template.marko_0_#span/hoist\");\n  const $child_content__subscribers = new Set();\n  const $el2_getter = _._hoist($scope0_id, \"__tests__/template.marko_0_#div/hoist\");\n  const $inputshowChildnull_content__subscribers = new Set();\n  const $inputshowsectionnull_content__subscribers = new Set();\n  _child({\n    content: _._content(\"__tests__/template.marko_1_content\", () => {\n      _._scope_reason();\n      const $scope1_id = _._scope_id();\n      _._html(`<span></span>${_._el_resume($scope1_id, \"#span/0\")}`);\n      _._subscribe($child_content__subscribers, _._scope($scope1_id, {}, \"__tests__/template.marko\", \"3:2\"));\n    })\n  });\n  _._dynamic_tag($scope0_id, \"#text/1\", input.show ? Child : null, {}, _._content_resume(\"__tests__/template.marko_2_content\", () => {\n    const $scope2_id = _._scope_id();\n    const $inputshowChildnull_content__$el2_getter = _._hoist($scope2_id, \"__tests__/template.marko_2_#div/hoist\");\n    const $child_content2__subscribers = new Set();\n    _._scope_reason();\n    _child({\n      content: _._content(\"__tests__/template.marko_3_content\", () => {\n        _._scope_reason();\n        const $scope3_id = _._scope_id();\n        _._html(`<div></div>${_._el_resume($scope3_id, \"#div/0\")}`);\n        _._subscribe($child_content2__subscribers, _._scope($scope3_id, {}, \"__tests__/template.marko\", \"16:4\"));\n      })\n    });\n    _._script($scope2_id, \"__tests__/template.marko_2\");\n    _._subscribe($inputshowChildnull_content__subscribers, _._scope($scope2_id, {\n      _: _._scope_with_id($scope0_id),\n      \"ClosureScopes:3\": $child_content2__subscribers\n    }, \"__tests__/template.marko\", \"15:4\"));\n  }, $scope0_id), 0, _._serialize_guard($scope0_reason, /* input.show */0));\n  _._dynamic_tag($scope0_id, \"#text/2\", input.show ? 'section' : null, {}, _._content_resume(\"__tests__/template.marko_4_content\", () => {\n    const $scope4_id = _._scope_id();\n    _._scope_reason();\n    _._html(`<p></p>${_._el_resume($scope4_id, \"#p/0\")}`);\n    _._subscribe($inputshowsectionnull_content__subscribers, _._scope($scope4_id, {}, \"__tests__/template.marko\", \"34:4\"));\n  }, $scope0_id), 0, _._serialize_guard($scope0_reason, /* input.show */0));\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {\n    \"ClosureScopes:1\": $child_content__subscribers,\n    \"ClosureScopes:2\": $inputshowChildnull_content__subscribers,\n    \"ClosureScopes:4\": $inputshowsectionnull_content__subscribers\n  }, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-from-dynamic/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<span>\n  Hoist from custom tag\n</span>\n<span>\n  Hoist from custom tag\n</span>\n<div\n  class=\"inner outer\"\n/>\n<div\n  class=\"inner outer\"\n/>\n<div\n  class=\"inner outer\"\n/>\n<div\n  class=\"inner outer\"\n/>\n<section>\n  <p>\n    Hoist from dynamic tag\n  </p>\n</section>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-from-dynamic/__snapshots__/resume.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<html>\n  <head />\n  <body>\n    <span>\n      Hoist from custom tag\n    </span>\n    <!--M_*3 #span/0-->\n    <span>\n      Hoist from custom tag\n    </span>\n    <!--M_*4 #span/0-->\n    <div\n      class=\"inner outer\"\n    />\n    <!--M_*8 #div/0-->\n    <div\n      class=\"inner outer\"\n    />\n    <!--M_*9 #div/0-->\n    <div\n      class=\"inner outer\"\n    />\n    <!--M_*12 #div/0-->\n    <div\n      class=\"inner outer\"\n    />\n    <!--M_*13 #div/0-->\n    <section>\n      <p>\n        Hoist from dynamic tag\n      </p>\n      <!--M_*15 #p/0-->\n    </section>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n            \"ClosureScopes:1\": _.c = new Set,\n            \"ClosureScopes:2\": _.i = new Set,\n            \"ClosureScopes:4\": _.o = new Set\n          }, 1, _.d = {}, _.e = {}, 1, _.j = {\n            _: _.a,\n            \"ClosureScopes:3\": _.f = new Set\n          }, 1, _.g = {}, _.h = {}, _.n = {\n            _: _.a,\n            \"ClosureScopes:3\": _.k = new Set\n          }, 1, _.l = {}, _.m = {}, 1, _.p = {}], (_.c).add(_.d), _.c.add(_\n          .e), (_.f).add(_.g), _.f.add(_.h), (_.i).add(_.j), (_.k).add(_.l), _\n          .k.add(_.m), _.i.add(_.n), (_.o).add(_.p), _.b),\n        \"__tests__/template.marko_2 6 10 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div0[class] null => \"inner outer\"\nUPDATE html/body/div1[class] null => \"inner outer\"\nUPDATE html/body/div2[class] null => \"inner outer\"\nUPDATE html/body/div3[class] null => \"inner outer\"\nINSERT html/body/span0/#text\nINSERT html/body/span1/#text\nUPDATE html/body/div0[class] \"inner\" => \"inner outer\"\nUPDATE html/body/div1[class] \"inner\" => \"inner outer\"\nUPDATE html/body/div2[class] \"inner\" => \"inner outer\"\nUPDATE html/body/div3[class] \"inner\" => \"inner outer\"\nINSERT html/body/section/p/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-from-dynamic/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<span />\n<span />\n<div />\n<div />\n<div />\n<div />\n<section>\n  <p />\n</section>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-from-dynamic/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <span></span><!--M_*3 #span/0--><span></span><!--M_*4 #span/0--><div></div><!--M_*8 #div/0--><div></div><!--M_*9 #div/0--><div></div><!--M_*12 #div/0--><div></div><!--M_*13 #div/0--><section><p></p><!--M_*15 #p/0--></section><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={\"ClosureScopes:1\":_.c=new Set,\"ClosureScopes:2\":_.i=new Set,\"ClosureScopes:4\":_.o=new Set},1,_.d={},_.e={},1,_.j={_:_.a,\"ClosureScopes:3\":_.f=new Set},1,_.g={},_.h={},_.n={_:_.a,\"ClosureScopes:3\":_.k=new Set},1,_.l={},_.m={},1,_.p={}],(_.c).add(_.d),_.c.add(_.e),(_.f).add(_.g),_.f.add(_.h),(_.i).add(_.j),(_.k).add(_.l),_.k.add(_.m),_.i.add(_.n),(_.o).add(_.p),_.b),\"__tests__/template.marko_2 6 10 __tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <span />\n    <!--M_*3 #span/0-->\n    <span />\n    <!--M_*4 #span/0-->\n    <div />\n    <!--M_*8 #div/0-->\n    <div />\n    <!--M_*9 #div/0-->\n    <div />\n    <!--M_*12 #div/0-->\n    <div />\n    <!--M_*13 #div/0-->\n    <section>\n      <p />\n      <!--M_*15 #p/0-->\n    </section>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n            \"ClosureScopes:1\": _.c = new Set,\n            \"ClosureScopes:2\": _.i = new Set,\n            \"ClosureScopes:4\": _.o = new Set\n          }, 1, _.d = {}, _.e = {}, 1, _.j = {\n            _: _.a,\n            \"ClosureScopes:3\": _.f = new Set\n          }, 1, _.g = {}, _.h = {}, _.n = {\n            _: _.a,\n            \"ClosureScopes:3\": _.k = new Set\n          }, 1, _.l = {}, _.m = {}, 1, _.p = {}], (_.c).add(_.d), _.c.add(_\n          .e), (_.f).add(_.g), _.f.add(_.h), (_.i).add(_.j), (_.k).add(_.l), _\n          .k.add(_.m), _.i.add(_.n), (_.o).add(_.p), _.b),\n        \"__tests__/template.marko_2 6 10 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/span0\nINSERT html/body/#comment0\nINSERT html/body/span1\nINSERT html/body/#comment1\nINSERT html/body/div0\nINSERT html/body/#comment2\nINSERT html/body/div1\nINSERT html/body/#comment3\nINSERT html/body/div2\nINSERT html/body/#comment4\nINSERT html/body/div3\nINSERT html/body/#comment5\nINSERT html/body/section\nINSERT html/body/section/p\nINSERT html/body/section/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-from-dynamic/tags/child.marko",
    "content": "<${input.content} />\n<${input.content} />"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-from-dynamic/template.marko",
    "content": "import Child from '<child>';\n\n<child>\n  <span/$el></span>\n</child>\n\n<script>\n  for (const el of $el) {\n    el.innerHTML = 'Hoist from custom tag';\n  }\n</script>\n\n\n\n<${input.show ? Child : null}>\n  <child>\n    <div/$el2 />\n  </child>\n  \n  <script>\n    for (const el of $el2) {\n       el.classList.add('inner');\n    }\n  </script>\n</>\n<script>\n  for (const el of $el2) {\n    el.classList.add('outer');\n  }\n</script>\n\n\n\n<${input.show ? 'section' : null}>\n  <p/$el3 />\n</>\n\n<script>\n  const el = $el3()\n  if (el) {\n    el.innerHTML = 'Hoist from dynamic tag';\n  }\n</script>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-from-dynamic/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [{ show: true }],\n  skip_equivalent: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-many/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"o\",\n      \"$init\": \"t\",\n      \"$$el3_getter\": \"r\",\n      \"$$el2_getter\": \"n\",\n      \"$$el_getter\": \"s\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-many/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  First Only\n</div>\n<div />\n<div />\n<div />\n<div />\n<div />\n<hr />\n<div>\n  First Only\n</div>\n<div />\n<div />\n<div />\n<hr />\n<ul>\n  <li\n    data-index=\"0\"\n  >\n    All (0)\n  </li>\n  <li\n    data-index=\"1\"\n  >\n    All (1)\n  </li>\n  <li\n    data-index=\"2\"\n  >\n    All (2)\n  </li>\n  <li\n    data-index=\"3\"\n  >\n    All (3)\n  </li>\n</ul>\n<ul>\n  <li\n    data-index=\"4\"\n  >\n    All (4)\n  </li>\n  <li\n    data-index=\"5\"\n  >\n    All (5)\n  </li>\n  <li\n    data-index=\"6\"\n  >\n    All (6)\n  </li>\n  <li\n    data-index=\"7\"\n  >\n    All (7)\n  </li>\n</ul>\n<ul>\n  <li\n    data-index=\"8\"\n  >\n    All (8)\n  </li>\n  <li\n    data-index=\"9\"\n  >\n    All (9)\n  </li>\n  <li\n    data-index=\"10\"\n  >\n    All (10)\n  </li>\n  <li\n    data-index=\"11\"\n  >\n    All (11)\n  </li>\n</ul>\n<ul>\n  <li\n    data-index=\"12\"\n  >\n    All (12)\n  </li>\n  <li\n    data-index=\"13\"\n  >\n    All (13)\n  </li>\n  <li\n    data-index=\"14\"\n  >\n    All (14)\n  </li>\n  <li\n    data-index=\"15\"\n  >\n    All (15)\n  </li>\n</ul>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-many/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<div>\n  First Only\n</div>\n<div />\n<div />\n<div />\n<div />\n<div />\n<hr />\n<div>\n  First Only\n</div>\n<div />\n<div />\n<div />\n<hr />\n<ul>\n  <li\n    data-index=\"0\"\n  >\n    All (0)\n  </li>\n  <li\n    data-index=\"1\"\n  >\n    All (1)\n  </li>\n  <li\n    data-index=\"2\"\n  >\n    All (2)\n  </li>\n  <li\n    data-index=\"3\"\n  >\n    All (3)\n  </li>\n</ul>\n<ul>\n  <li\n    data-index=\"4\"\n  >\n    All (4)\n  </li>\n  <li\n    data-index=\"5\"\n  >\n    All (5)\n  </li>\n  <li\n    data-index=\"6\"\n  >\n    All (6)\n  </li>\n  <li\n    data-index=\"7\"\n  >\n    All (7)\n  </li>\n</ul>\n<ul>\n  <li\n    data-index=\"8\"\n  >\n    All (8)\n  </li>\n  <li\n    data-index=\"9\"\n  >\n    All (9)\n  </li>\n  <li\n    data-index=\"10\"\n  >\n    All (10)\n  </li>\n  <li\n    data-index=\"11\"\n  >\n    All (11)\n  </li>\n</ul>\n<ul>\n  <li\n    data-index=\"12\"\n  >\n    All (12)\n  </li>\n  <li\n    data-index=\"13\"\n  >\n    All (13)\n  </li>\n  <li\n    data-index=\"14\"\n  >\n    All (14)\n  </li>\n  <li\n    data-index=\"15\"\n  >\n    All (15)\n  </li>\n</ul>\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, div0, div1, div2, div3, div4, div5, hr0, div6, div7, div8, div9, hr1, ul0, ul1, ul2, ul3, #comment1\nINSERT div0/#text\nINSERT div6/#text\nINSERT ul0/li0/#text\nINSERT ul0/li1/#text\nINSERT ul0/li2/#text\nINSERT ul0/li3/#text\nINSERT ul1/li0/#text\nINSERT ul1/li1/#text\nINSERT ul1/li2/#text\nINSERT ul1/li3/#text\nINSERT ul2/li0/#text\nINSERT ul2/li1/#text\nINSERT ul2/li2/#text\nINSERT ul2/li3/#text\nINSERT ul3/li0/#text\nINSERT ul3/li1/#text\nINSERT ul3/li2/#text\nINSERT ul3/li3/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-many/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 254 (min) 154 (brotli)\nconst $el3_getter = _._hoist_resume(\"a0\", 0, \"Aa\", \"Ac\"),\n  $el2_getter = _._hoist(0, \"Ab\"),\n  $el_getter = _._hoist(0, \"Aa\");\n(_._script(\"a1\", ($scope) => {\n  {\n    const el = $el_getter($scope)();\n    el && (el.innerHTML = \"First Only\");\n  }\n  {\n    const el = $el2_getter($scope)();\n    el && (el.innerHTML = \"First Only\");\n  }\n  {\n    let i = 0;\n    for (const el of $el3_getter($scope)) el.innerHTML = `All (${i++})`;\n  }\n}),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-many/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><hr><!><hr><!><!>\";\nexport const $walks = /* over(1), replace, over(2), replace, over(2), replace, over(2) */\"b%c%c%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $el3_getter = _._hoist_resume(\"__tests__/template.marko_0_#li/hoist\", \"#li/0\", \"BranchScopes:#ul/0\", \"BranchScopes:#text/2\");\nconst $for_content4__setup = $scope => _._attr($scope[\"#li/0\"], \"data-index\", $scope._[\"#LoopKey\"] * 4 + $scope[\"#LoopKey\"]);\nconst $for_content3__for = /* @__PURE__ */_._for_to(\"#ul/0\", \"<li></li>\", /* get, over(1) */\" b\", $for_content4__setup);\nconst $for_content3__setup = $scope => $for_content3__for($scope, [3, 0, 1]);\nconst $el2_getter = _._hoist(\"#div/0\", \"BranchScopes:#text/1\");\nconst $el_getter = _._hoist(\"#div/0\", \"BranchScopes:#text/0\");\nconst $for = /* @__PURE__ */_._for_to(\"#text/0\", \"<div></div>\", /* get, over(1) */\" b\");\nconst $for2 = /* @__PURE__ */_._for_to(\"#text/1\", \"<div></div>\", /* get, over(1) */\" b\");\nconst $to = /* @__PURE__ */_._let(\"to/3\", $scope => $for2($scope, [$scope.to, 0, 1]));\nconst $for3 = /* @__PURE__ */_._for_to(\"#text/2\", \"<ul></ul>\", /* get, over(1) */\" b\", $for_content3__setup);\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => {\n  {\n    const el = $el_getter($scope)();\n    if (el) {\n      el.innerHTML = 'First Only';\n    }\n  }\n  {\n    const el = $el2_getter($scope)();\n    if (el) {\n      el.innerHTML = 'First Only';\n    }\n  }\n  {\n    let i = 0;\n    for (const el of $el3_getter($scope)) {\n      el.innerHTML = `All (${i++})`;\n    }\n  }\n});\nexport function $setup($scope) {\n  $for($scope, [5, 0, 1]);\n  $to($scope, 3);\n  $for3($scope, [3, 0, 1]);\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-many/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $el3_getter = _._hoist($scope0_id, \"__tests__/template.marko_0_#li/hoist\");\n  _._for_to(5, 0, 1, () => {\n    const $scope1_id = _._scope_id();\n    _._html(`<div></div>${_._el_resume($scope1_id, \"#div/0\")}`);\n    _._scope($scope1_id, {}, \"__tests__/template.marko\", \"1:2\");\n  }, 0, $scope0_id, \"#text/0\", 1, 0, 0, 0, 1);\n  let to = 3;\n  _._html(\"<hr>\");\n  _._for_to(to, 0, 1, () => {\n    const $scope2_id = _._scope_id();\n    _._html(`<div></div>${_._el_resume($scope2_id, \"#div/0\")}`);\n    _._scope($scope2_id, {}, \"__tests__/template.marko\", \"15:2\");\n  }, 0, $scope0_id, \"#text/1\", 1, 0, 0, 0, 1);\n  _._html(\"<hr>\");\n  _._for_to(3, 0, 1, i => {\n    const $scope3_id = _._scope_id();\n    _._html(\"<ul>\");\n    _._for_to(3, 0, 1, j => {\n      const $scope4_id = _._scope_id();\n      _._html(`<li${_._attr(\"data-index\", i * 4 + j)}></li>${_._el_resume($scope4_id, \"#li/0\")}`);\n      _._scope($scope4_id, {}, \"__tests__/template.marko\", \"30:4\");\n    }, 0, $scope3_id, \"#ul/0\", 1, 0, 0, 0, 1);\n    _._html(\"</ul>\");\n    _._scope($scope3_id, {}, \"__tests__/template.marko\", \"28:2\");\n  }, 0, $scope0_id, \"#text/2\", 1, 0, 0, 0, 1);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-many/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  First Only\n</div>\n<div />\n<div />\n<div />\n<div />\n<div />\n<hr />\n<div>\n  First Only\n</div>\n<div />\n<div />\n<div />\n<hr />\n<ul>\n  <li\n    data-index=\"0\"\n  >\n    All (0)\n  </li>\n  <li\n    data-index=\"1\"\n  >\n    All (1)\n  </li>\n  <li\n    data-index=\"2\"\n  >\n    All (2)\n  </li>\n  <li\n    data-index=\"3\"\n  >\n    All (3)\n  </li>\n</ul>\n<ul>\n  <li\n    data-index=\"4\"\n  >\n    All (4)\n  </li>\n  <li\n    data-index=\"5\"\n  >\n    All (5)\n  </li>\n  <li\n    data-index=\"6\"\n  >\n    All (6)\n  </li>\n  <li\n    data-index=\"7\"\n  >\n    All (7)\n  </li>\n</ul>\n<ul>\n  <li\n    data-index=\"8\"\n  >\n    All (8)\n  </li>\n  <li\n    data-index=\"9\"\n  >\n    All (9)\n  </li>\n  <li\n    data-index=\"10\"\n  >\n    All (10)\n  </li>\n  <li\n    data-index=\"11\"\n  >\n    All (11)\n  </li>\n</ul>\n<ul>\n  <li\n    data-index=\"12\"\n  >\n    All (12)\n  </li>\n  <li\n    data-index=\"13\"\n  >\n    All (13)\n  </li>\n  <li\n    data-index=\"14\"\n  >\n    All (14)\n  </li>\n  <li\n    data-index=\"15\"\n  >\n    All (15)\n  </li>\n</ul>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-many/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      First Only\n    </div>\n    <!--M_*2 #div/0-->\n    <div />\n    <!--M_*3 #div/0-->\n    <div />\n    <!--M_*4 #div/0-->\n    <div />\n    <!--M_*5 #div/0-->\n    <div />\n    <!--M_*6 #div/0-->\n    <div />\n    <!--M_*7 #div/0-->\n    <hr />\n    <div>\n      First Only\n    </div>\n    <!--M_*8 #div/0-->\n    <div />\n    <!--M_*9 #div/0-->\n    <div />\n    <!--M_*10 #div/0-->\n    <div />\n    <!--M_*11 #div/0-->\n    <hr />\n    <ul>\n      <li\n        data-index=\"0\"\n      >\n        All (0)\n      </li>\n      <!--M_*13 #li/0-->\n      <li\n        data-index=\"1\"\n      >\n        All (1)\n      </li>\n      <!--M_*14 #li/0-->\n      <li\n        data-index=\"2\"\n      >\n        All (2)\n      </li>\n      <!--M_*15 #li/0-->\n      <li\n        data-index=\"3\"\n      >\n        All (3)\n      </li>\n      <!--M_*16 #li/0-->\n    </ul>\n    <ul>\n      <li\n        data-index=\"4\"\n      >\n        All (4)\n      </li>\n      <!--M_*18 #li/0-->\n      <li\n        data-index=\"5\"\n      >\n        All (5)\n      </li>\n      <!--M_*19 #li/0-->\n      <li\n        data-index=\"6\"\n      >\n        All (6)\n      </li>\n      <!--M_*20 #li/0-->\n      <li\n        data-index=\"7\"\n      >\n        All (7)\n      </li>\n      <!--M_*21 #li/0-->\n    </ul>\n    <ul>\n      <li\n        data-index=\"8\"\n      >\n        All (8)\n      </li>\n      <!--M_*23 #li/0-->\n      <li\n        data-index=\"9\"\n      >\n        All (9)\n      </li>\n      <!--M_*24 #li/0-->\n      <li\n        data-index=\"10\"\n      >\n        All (10)\n      </li>\n      <!--M_*25 #li/0-->\n      <li\n        data-index=\"11\"\n      >\n        All (11)\n      </li>\n      <!--M_*26 #li/0-->\n    </ul>\n    <ul>\n      <li\n        data-index=\"12\"\n      >\n        All (12)\n      </li>\n      <!--M_*28 #li/0-->\n      <li\n        data-index=\"13\"\n      >\n        All (13)\n      </li>\n      <!--M_*29 #li/0-->\n      <li\n        data-index=\"14\"\n      >\n        All (14)\n      </li>\n      <!--M_*30 #li/0-->\n      <li\n        data-index=\"15\"\n      >\n        All (15)\n      </li>\n      <!--M_*31 #li/0-->\n    </ul>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.E = [0,\n          {\n            \"BranchScopes:#text/0\": [_.a = {}, _.b = {}, _.c = {}, _.d = {},\n              _.e = {},\n              _.f = {}\n            ],\n            \"BranchScopes:#text/1\": [_.g = {}, _.h = {}, _.i = {}, _\n              .j = {}],\n            \"BranchScopes:#text/2\": [_.k = {\n              \"BranchScopes:#ul/0\": [_.l = {}, _.m = {}, _.n = {}, _\n              .o = {}]\n            }, _.p = {\n              \"BranchScopes:#ul/0\": [_.q = {}, _.r = {}, _.s = {}, _\n              .t = {}]\n            }, _.u = {\n              \"BranchScopes:#ul/0\": [_.v = {}, _.w = {}, _.x = {}, _\n              .y = {}]\n            }, _.z = {\n              \"BranchScopes:#ul/0\": [_.A = {}, _.B = {}, _.C = {}, _\n              .D = {}]\n            }]\n          }, _.a, _.b, _.c, _.d, _.e, _.f, _.g, _.h, _.i, _.j, _.k, _.l, _\n          .m, _.n, _.o, _.p, _.q, _.r, _.s, _.t, _.u, _.v, _.w, _.x, _.y, _\n          .z, _.A, _.B, _.C, _.D\n        ]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div0/#text\nINSERT html/body/div6/#text\nINSERT html/body/ul0/li0/#text\nINSERT html/body/ul0/li1/#text\nINSERT html/body/ul0/li2/#text\nINSERT html/body/ul0/li3/#text\nINSERT html/body/ul1/li0/#text\nINSERT html/body/ul1/li1/#text\nINSERT html/body/ul1/li2/#text\nINSERT html/body/ul1/li3/#text\nINSERT html/body/ul2/li0/#text\nINSERT html/body/ul2/li1/#text\nINSERT html/body/ul2/li2/#text\nINSERT html/body/ul2/li3/#text\nINSERT html/body/ul3/li0/#text\nINSERT html/body/ul3/li1/#text\nINSERT html/body/ul3/li2/#text\nINSERT html/body/ul3/li3/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-many/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n<div />\n<div />\n<div />\n<div />\n<div />\n<hr />\n<div />\n<div />\n<div />\n<div />\n<hr />\n<ul>\n  <li\n    data-index=\"0\"\n  />\n  <li\n    data-index=\"1\"\n  />\n  <li\n    data-index=\"2\"\n  />\n  <li\n    data-index=\"3\"\n  />\n</ul>\n<ul>\n  <li\n    data-index=\"4\"\n  />\n  <li\n    data-index=\"5\"\n  />\n  <li\n    data-index=\"6\"\n  />\n  <li\n    data-index=\"7\"\n  />\n</ul>\n<ul>\n  <li\n    data-index=\"8\"\n  />\n  <li\n    data-index=\"9\"\n  />\n  <li\n    data-index=\"10\"\n  />\n  <li\n    data-index=\"11\"\n  />\n</ul>\n<ul>\n  <li\n    data-index=\"12\"\n  />\n  <li\n    data-index=\"13\"\n  />\n  <li\n    data-index=\"14\"\n  />\n  <li\n    data-index=\"15\"\n  />\n</ul>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-many/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div></div><!--M_*2 #div/0--><div></div><!--M_*3 #div/0--><div></div><!--M_*4 #div/0--><div></div><!--M_*5 #div/0--><div></div><!--M_*6 #div/0--><div></div><!--M_*7 #div/0--><hr><div></div><!--M_*8 #div/0--><div></div><!--M_*9 #div/0--><div></div><!--M_*10 #div/0--><div></div><!--M_*11 #div/0--><hr><ul><li data-index=0></li><!--M_*13 #li/0--><li data-index=1></li><!--M_*14 #li/0--><li data-index=2></li><!--M_*15 #li/0--><li data-index=3></li><!--M_*16 #li/0--></ul><ul><li data-index=4></li><!--M_*18 #li/0--><li data-index=5></li><!--M_*19 #li/0--><li data-index=6></li><!--M_*20 #li/0--><li data-index=7></li><!--M_*21 #li/0--></ul><ul><li data-index=8></li><!--M_*23 #li/0--><li data-index=9></li><!--M_*24 #li/0--><li data-index=10></li><!--M_*25 #li/0--><li data-index=11></li><!--M_*26 #li/0--></ul><ul><li data-index=12></li><!--M_*28 #li/0--><li data-index=13></li><!--M_*29 #li/0--><li data-index=14></li><!--M_*30 #li/0--><li data-index=15></li><!--M_*31 #li/0--></ul><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.E=[0,{\"BranchScopes:#text/0\":[_.a={},_.b={},_.c={},_.d={},_.e={},_.f={}],\"BranchScopes:#text/1\":[_.g={},_.h={},_.i={},_.j={}],\"BranchScopes:#text/2\":[_.k={\"BranchScopes:#ul/0\":[_.l={},_.m={},_.n={},_.o={}]},_.p={\"BranchScopes:#ul/0\":[_.q={},_.r={},_.s={},_.t={}]},_.u={\"BranchScopes:#ul/0\":[_.v={},_.w={},_.x={},_.y={}]},_.z={\"BranchScopes:#ul/0\":[_.A={},_.B={},_.C={},_.D={}]}]},_.a,_.b,_.c,_.d,_.e,_.f,_.g,_.h,_.i,_.j,_.k,_.l,_.m,_.n,_.o,_.p,_.q,_.r,_.s,_.t,_.u,_.v,_.w,_.x,_.y,_.z,_.A,_.B,_.C,_.D]),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*2 #div/0-->\n    <div />\n    <!--M_*3 #div/0-->\n    <div />\n    <!--M_*4 #div/0-->\n    <div />\n    <!--M_*5 #div/0-->\n    <div />\n    <!--M_*6 #div/0-->\n    <div />\n    <!--M_*7 #div/0-->\n    <hr />\n    <div />\n    <!--M_*8 #div/0-->\n    <div />\n    <!--M_*9 #div/0-->\n    <div />\n    <!--M_*10 #div/0-->\n    <div />\n    <!--M_*11 #div/0-->\n    <hr />\n    <ul>\n      <li\n        data-index=\"0\"\n      />\n      <!--M_*13 #li/0-->\n      <li\n        data-index=\"1\"\n      />\n      <!--M_*14 #li/0-->\n      <li\n        data-index=\"2\"\n      />\n      <!--M_*15 #li/0-->\n      <li\n        data-index=\"3\"\n      />\n      <!--M_*16 #li/0-->\n    </ul>\n    <ul>\n      <li\n        data-index=\"4\"\n      />\n      <!--M_*18 #li/0-->\n      <li\n        data-index=\"5\"\n      />\n      <!--M_*19 #li/0-->\n      <li\n        data-index=\"6\"\n      />\n      <!--M_*20 #li/0-->\n      <li\n        data-index=\"7\"\n      />\n      <!--M_*21 #li/0-->\n    </ul>\n    <ul>\n      <li\n        data-index=\"8\"\n      />\n      <!--M_*23 #li/0-->\n      <li\n        data-index=\"9\"\n      />\n      <!--M_*24 #li/0-->\n      <li\n        data-index=\"10\"\n      />\n      <!--M_*25 #li/0-->\n      <li\n        data-index=\"11\"\n      />\n      <!--M_*26 #li/0-->\n    </ul>\n    <ul>\n      <li\n        data-index=\"12\"\n      />\n      <!--M_*28 #li/0-->\n      <li\n        data-index=\"13\"\n      />\n      <!--M_*29 #li/0-->\n      <li\n        data-index=\"14\"\n      />\n      <!--M_*30 #li/0-->\n      <li\n        data-index=\"15\"\n      />\n      <!--M_*31 #li/0-->\n    </ul>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.E = [0,\n          {\n            \"BranchScopes:#text/0\": [_.a = {}, _.b = {}, _.c = {}, _.d = {},\n              _.e = {},\n              _.f = {}\n            ],\n            \"BranchScopes:#text/1\": [_.g = {}, _.h = {}, _.i = {}, _\n              .j = {}],\n            \"BranchScopes:#text/2\": [_.k = {\n              \"BranchScopes:#ul/0\": [_.l = {}, _.m = {}, _.n = {}, _\n              .o = {}]\n            }, _.p = {\n              \"BranchScopes:#ul/0\": [_.q = {}, _.r = {}, _.s = {}, _\n              .t = {}]\n            }, _.u = {\n              \"BranchScopes:#ul/0\": [_.v = {}, _.w = {}, _.x = {}, _\n              .y = {}]\n            }, _.z = {\n              \"BranchScopes:#ul/0\": [_.A = {}, _.B = {}, _.C = {}, _\n              .D = {}]\n            }]\n          }, _.a, _.b, _.c, _.d, _.e, _.f, _.g, _.h, _.i, _.j, _.k, _.l, _\n          .m, _.n, _.o, _.p, _.q, _.r, _.s, _.t, _.u, _.v, _.w, _.x, _.y, _\n          .z, _.A, _.B, _.C, _.D\n        ]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/#comment0\nINSERT html/body/div1\nINSERT html/body/#comment1\nINSERT html/body/div2\nINSERT html/body/#comment2\nINSERT html/body/div3\nINSERT html/body/#comment3\nINSERT html/body/div4\nINSERT html/body/#comment4\nINSERT html/body/div5\nINSERT html/body/#comment5\nINSERT html/body/hr0\nINSERT html/body/div6\nINSERT html/body/#comment6\nINSERT html/body/div7\nINSERT html/body/#comment7\nINSERT html/body/div8\nINSERT html/body/#comment8\nINSERT html/body/div9\nINSERT html/body/#comment9\nINSERT html/body/hr1\nINSERT html/body/ul0\nINSERT html/body/ul0/li0\nINSERT html/body/ul0/#comment0\nINSERT html/body/ul0/li1\nINSERT html/body/ul0/#comment1\nINSERT html/body/ul0/li2\nINSERT html/body/ul0/#comment2\nINSERT html/body/ul0/li3\nINSERT html/body/ul0/#comment3\nINSERT html/body/ul1\nINSERT html/body/ul1/li0\nINSERT html/body/ul1/#comment0\nINSERT html/body/ul1/li1\nINSERT html/body/ul1/#comment1\nINSERT html/body/ul1/li2\nINSERT html/body/ul1/#comment2\nINSERT html/body/ul1/li3\nINSERT html/body/ul1/#comment3\nINSERT html/body/ul2\nINSERT html/body/ul2/li0\nINSERT html/body/ul2/#comment0\nINSERT html/body/ul2/li1\nINSERT html/body/ul2/#comment1\nINSERT html/body/ul2/li2\nINSERT html/body/ul2/#comment2\nINSERT html/body/ul2/li3\nINSERT html/body/ul2/#comment3\nINSERT html/body/ul3\nINSERT html/body/ul3/li0\nINSERT html/body/ul3/#comment0\nINSERT html/body/ul3/li1\nINSERT html/body/ul3/#comment1\nINSERT html/body/ul3/li2\nINSERT html/body/ul3/#comment2\nINSERT html/body/ul3/li3\nINSERT html/body/ul3/#comment3\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-many/template.marko",
    "content": "<for to=5>\n  <div/$el />\n</for>\n\n<script>\n  const el = $el()\n  if (el) {\n    el.innerHTML = 'First Only';\n  }\n</script>\n\n<hr />\n\n<let/to=3 />\n<for to=to>\n  <div/$el2 />\n</for>\n\n<script>\n  const el = $el2()\n  if (el) {\n    el.innerHTML = 'First Only';\n  }\n</script>\n\n<hr />\n\n<for|i| to=3>\n  <ul>\n  <for|j| to=3>\n    <li/$el3 data-index=i*4+j />\n  </for>\n  </ul>\n</for>\n\n<script>\n  let i = 0;\n  for (const el of $el3) {\n    el.innerHTML = `All (${i++})`;\n  }\n</script>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-minimum-scope/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"s\",\n      \"$init\": \"t\",\n      \"$$el_getter\": \"e\",\n      \"$$for_content__$el_getter\": \"r\",\n      \"$$for_content2__$el_getter\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-minimum-scope/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<pre\n  id=\"root\"\n>\n  9; 0, 0\n\t\n</pre>\n<pre\n  id=\"outer\"\n>\n  3; 0, 0\n\t3; 1, 0\n\t3; 2, 0\n\t\n</pre>\n<pre\n  id=\"inner\"\n>\n  1; 0, 0\n\t1; 0, 1\n\t1; 0, 2\n\t1; 1, 0\n\t1; 1, 1\n\t1; 1, 2\n\t1; 2, 0\n\t1; 2, 1\n\t1; 2, 2\n\t\n</pre>\n<div\n  class=\"0, 0\"\n/>\n<div\n  class=\"0, 1\"\n/>\n<div\n  class=\"0, 2\"\n/>\n<div\n  class=\"1, 0\"\n/>\n<div\n  class=\"1, 1\"\n/>\n<div\n  class=\"1, 2\"\n/>\n<div\n  class=\"2, 0\"\n/>\n<div\n  class=\"2, 1\"\n/>\n<div\n  class=\"2, 2\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-minimum-scope/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<pre\n  id=\"root\"\n>\n  9; 0, 0\n\t\n</pre>\n<pre\n  id=\"outer\"\n>\n  3; 0, 0\n\t3; 1, 0\n\t3; 2, 0\n\t\n</pre>\n<pre\n  id=\"inner\"\n>\n  1; 0, 0\n\t1; 0, 1\n\t1; 0, 2\n\t1; 1, 0\n\t1; 1, 1\n\t1; 1, 2\n\t1; 2, 0\n\t1; 2, 1\n\t1; 2, 2\n\t\n</pre>\n<!---->\n<div\n  class=\"0, 0\"\n/>\n<div\n  class=\"0, 1\"\n/>\n<div\n  class=\"0, 2\"\n/>\n<!---->\n<!---->\n<div\n  class=\"1, 0\"\n/>\n<div\n  class=\"1, 1\"\n/>\n<div\n  class=\"1, 2\"\n/>\n<!---->\n<!---->\n<div\n  class=\"2, 0\"\n/>\n<div\n  class=\"2, 1\"\n/>\n<div\n  class=\"2, 2\"\n/>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT pre0, pre1, pre2, #comment0, div0, div1, div2, #comment1, #comment2, div3, div4, div5, #comment3, #comment4, div6, div7, div8, #comment5, #comment6\nINSERT pre0/#text\nINSERT #text\nREMOVE #text in pre1\nINSERT #text\nREMOVE #text in pre1\nINSERT pre1/#text\nINSERT #text\nREMOVE #text in pre2\nINSERT #text\nREMOVE #text in pre2\nINSERT #text\nREMOVE #text in pre2\nINSERT #text\nREMOVE #text in pre2\nINSERT #text\nREMOVE #text in pre2\nINSERT #text\nREMOVE #text in pre2\nINSERT #text\nREMOVE #text in pre2\nINSERT #text\nREMOVE #text in pre2\nINSERT pre2/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-minimum-scope/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"\";\nexport const $walks = \"\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $input_value = /* @__PURE__ */_._const(\"input_value\", $scope => _._return($scope, $_return($scope)));\nexport const $input = ($scope, input) => $input_value($scope, input.value);\nfunction $_return($scope) {\n  return () => $scope.input_value;\n}\n_._resume(\"__tests__/tags/child.marko_0/_return\", $_return);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-minimum-scope/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 349 (min) 145 (brotli)\nconst $el_getter = _._hoist_resume(\"b0\", 0, \"Aa\", \"Ad\"),\n  $for_content__$el_getter = _._hoist_resume(\"b1\", 0, \"Aa\"),\n  $for_content2__$el_getter = _._hoist_resume(\"b2\", 0);\n(_._script(\n  \"b3\",\n  ($scope) =>\n    ($scope._._.c.innerHTML += `${[...$for_content2__$el_getter($scope)].length}; ${$scope.a.className}\\n\\t`),\n),\n  _._script(\n    \"b4\",\n    ($scope) =>\n      ($scope._.b.innerHTML += `${[...$for_content__$el_getter($scope)].length}; ${$for_content__$el_getter($scope)().className}\\n\\t`),\n  ),\n  _._script(\n    \"b5\",\n    ($scope) =>\n      ($scope.a.innerHTML += `${[...$el_getter($scope)].length}; ${$el_getter($scope)().className}\\n\\t`),\n  ),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-minimum-scope/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<pre id=root></pre><pre id=outer></pre><pre id=inner></pre><!><!>\";\nexport const $walks = /* get, over(1), get, over(1), get, over(1), replace, over(2) */\" b b b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $el_getter = _._hoist_resume(\"__tests__/template.marko_0_#div/hoist\", \"#div/0\", \"BranchScopes:#text/0\", \"BranchScopes:#text/3\");\nconst $for_content__$el_getter = _._hoist_resume(\"__tests__/template.marko_1_#div/hoist\", \"#div/0\", \"BranchScopes:#text/0\");\nconst $for_content2__$el_getter = _._hoist_resume(\"__tests__/template.marko_2_#div/hoist\", \"#div/0\");\nconst $for_content2__setup__script = _._script(\"__tests__/template.marko_2\", $scope => (_._el_read($scope._._[\"#pre/2\"]).innerHTML += `${[...$for_content2__$el_getter($scope)].length}; ${_._el_read($scope[\"#div/0\"]).className}\\n\\t`));\nconst $for_content2__setup = $scope => {\n  _._attr_class($scope[\"#div/0\"], `${$scope._[\"#LoopKey\"]}, ${$scope[\"#LoopKey\"]}`);\n  $for_content2__setup__script($scope);\n};\nconst $for_content__for = /* @__PURE__ */_._for_to(\"#text/0\", \"<div></div>\", /* get, over(1) */\" b\", $for_content2__setup);\nconst $for_content__setup__script = _._script(\"__tests__/template.marko_1\", $scope => (_._el_read($scope._[\"#pre/1\"]).innerHTML += `${[...$for_content__$el_getter($scope)].length}; ${$for_content__$el_getter($scope)().className}\\n\\t`));\nconst $for_content__setup = $scope => {\n  $for_content__for($scope, [2, 0, 1]);\n  $for_content__setup__script($scope);\n};\nconst $for = /* @__PURE__ */_._for_to(\"#text/3\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", $for_content__setup);\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => (_._el_read($scope[\"#pre/0\"]).innerHTML += `${[...$el_getter($scope)].length}; ${$el_getter($scope)().className}\\n\\t`));\nexport function $setup($scope) {\n  $for($scope, [2, 0, 1]);\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-minimum-scope/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $return = _._resume(() => input.value, \"__tests__/tags/child.marko_0/_return\", $scope0_id);\n  _._scope($scope0_id, {\n    input_value: input.value\n  }, \"__tests__/tags/child.marko\", 0, {\n    input_value: [\"input.value\"]\n  });\n  return $return;\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-minimum-scope/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $el_getter = _._hoist($scope0_id, \"__tests__/template.marko_0_#div/hoist\");\n  _._html(`<pre id=root></pre>${_._el_resume($scope0_id, \"#pre/0\")}<pre id=outer></pre>${_._el_resume($scope0_id, \"#pre/1\")}<pre id=inner></pre>${_._el_resume($scope0_id, \"#pre/2\")}`);\n  _._for_to(2, 0, 1, i => {\n    const $scope1_id = _._scope_id();\n    const $for_content__$el_getter = _._hoist($scope1_id, \"__tests__/template.marko_1_#div/hoist\");\n    _._for_to(2, 0, 1, j => {\n      const $scope2_id = _._scope_id();\n      const $for_content2__$el_getter = _._hoist($scope2_id, \"__tests__/template.marko_2_#div/hoist\");\n      _._html(`<div${_._attr_class(`${i}, ${j}`)}></div>${_._el_resume($scope2_id, \"#div/0\")}`);\n      _._script($scope2_id, \"__tests__/template.marko_2\");\n      _._scope($scope2_id, {\n        _: _._scope_with_id($scope1_id)\n      }, \"__tests__/template.marko\", \"7:4\");\n    }, 0, $scope1_id, \"#text/0\", 1, 0, 0, 0, 1);\n    _._script($scope1_id, \"__tests__/template.marko_1\");\n    _._scope($scope1_id, {\n      _: _._scope_with_id($scope0_id)\n    }, \"__tests__/template.marko\", \"5:2\");\n  }, 0, $scope0_id, \"#text/3\", 1, 0, 0);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-minimum-scope/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<pre\n  id=\"root\"\n>\n  9; 0, 0\n\t\n</pre>\n<pre\n  id=\"outer\"\n>\n  3; 0, 0\n\t3; 1, 0\n\t3; 2, 0\n\t\n</pre>\n<pre\n  id=\"inner\"\n>\n  1; 0, 0\n\t1; 0, 1\n\t1; 0, 2\n\t1; 1, 0\n\t1; 1, 1\n\t1; 1, 2\n\t1; 2, 0\n\t1; 2, 1\n\t1; 2, 2\n\t\n</pre>\n<div\n  class=\"0, 0\"\n/>\n<div\n  class=\"0, 1\"\n/>\n<div\n  class=\"0, 2\"\n/>\n<div\n  class=\"1, 0\"\n/>\n<div\n  class=\"1, 1\"\n/>\n<div\n  class=\"1, 2\"\n/>\n<div\n  class=\"2, 0\"\n/>\n<div\n  class=\"2, 1\"\n/>\n<div\n  class=\"2, 2\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-minimum-scope/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <pre\n      id=\"root\"\n    >\n      9; 0, 0\n\t\n    </pre>\n    <!--M_*1 #pre/0-->\n    <pre\n      id=\"outer\"\n    >\n      3; 0, 0\n\t3; 1, 0\n\t3; 2, 0\n\t\n    </pre>\n    <!--M_*1 #pre/1-->\n    <pre\n      id=\"inner\"\n    >\n      1; 0, 0\n\t1; 0, 1\n\t1; 0, 2\n\t1; 1, 0\n\t1; 1, 1\n\t1; 1, 2\n\t1; 2, 0\n\t1; 2, 1\n\t1; 2, 2\n\t\n    </pre>\n    <!--M_*1 #pre/2-->\n    <div\n      class=\"0, 0\"\n    />\n    <!--M_*3 #div/0-->\n    <div\n      class=\"0, 1\"\n    />\n    <!--M_*4 #div/0-->\n    <div\n      class=\"0, 2\"\n    />\n    <!--M_*5 #div/0-->\n    <div\n      class=\"1, 0\"\n    />\n    <!--M_*7 #div/0-->\n    <div\n      class=\"1, 1\"\n    />\n    <!--M_*8 #div/0-->\n    <div\n      class=\"1, 2\"\n    />\n    <!--M_*9 #div/0-->\n    <div\n      class=\"2, 0\"\n    />\n    <!--M_*11 #div/0-->\n    <div\n      class=\"2, 1\"\n    />\n    <!--M_*12 #div/0-->\n    <div\n      class=\"2, 2\"\n    />\n    <!--M_*13 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.n = [0, _.e = {\n            \"BranchScopes:#text/3\": [_.a = {\n              \"BranchScopes:#text/0\": [_.b = {}, _.c = {}, _.d = {}]\n            }, _.f = {\n              \"BranchScopes:#text/0\": [_.g = {}, _.h = {}, _.i = {}]\n            }, _.j = {\n              \"BranchScopes:#text/0\": [_.k = {}, _.l = {}, _.m = {}]\n            }]\n          }, , _.b, _.c, _.d, , _.g, _.h, _.i, , _.k, _.l, _.m], _.b._ = _.c\n          ._ = _.d._ = _.n[2] = _.a, _.a._ = _.f._ = _.j._ = _.e, _.g._ = _.h\n          ._ = _.i._ = _.n[6] = _.f, _.k._ = _.l._ = _.m._ = _.n[10] = _.j, _\n          .n),\n        \"__tests__/template.marko_2 3 4 5 __tests__/template.marko_1 2 __tests__/template.marko_2 7 8 9 __tests__/template.marko_1 6 __tests__/template.marko_2 11 12 13 __tests__/template.marko_1 10 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE #text in html/body/pre2\nINSERT #text\nREMOVE #text in html/body/pre2\nINSERT #text\nINSERT #text\nREMOVE #text in html/body/pre2\nINSERT #text\nREMOVE #text in html/body/pre2\nINSERT #text\nREMOVE #text in html/body/pre2\nINSERT #text\nREMOVE #text in html/body/pre1\nINSERT #text\nREMOVE #text in html/body/pre2\nINSERT #text\nREMOVE #text in html/body/pre2\nINSERT #text\nREMOVE #text in html/body/pre2\nINSERT html/body/pre2/#text\nREMOVE #text in html/body/pre1\nINSERT html/body/pre1/#text\nINSERT html/body/pre0/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-minimum-scope/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<pre\n  id=\"root\"\n/>\n<pre\n  id=\"outer\"\n/>\n<pre\n  id=\"inner\"\n/>\n<div\n  class=\"0, 0\"\n/>\n<div\n  class=\"0, 1\"\n/>\n<div\n  class=\"0, 2\"\n/>\n<div\n  class=\"1, 0\"\n/>\n<div\n  class=\"1, 1\"\n/>\n<div\n  class=\"1, 2\"\n/>\n<div\n  class=\"2, 0\"\n/>\n<div\n  class=\"2, 1\"\n/>\n<div\n  class=\"2, 2\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-minimum-scope/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <pre id=root></pre><!--M_*1 #pre/0--><pre id=outer></pre><!--M_*1 #pre/1--><pre id=inner></pre><!--M_*1 #pre/2--><div class=\"0, 0\"></div><!--M_*3 #div/0--><div class=\"0, 1\"></div><!--M_*4 #div/0--><div class=\"0, 2\"></div><!--M_*5 #div/0--><div class=\"1, 0\"></div><!--M_*7 #div/0--><div class=\"1, 1\"></div><!--M_*8 #div/0--><div class=\"1, 2\"></div><!--M_*9 #div/0--><div class=\"2, 0\"></div><!--M_*11 #div/0--><div class=\"2, 1\"></div><!--M_*12 #div/0--><div class=\"2, 2\"></div><!--M_*13 #div/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.n=[0,_.e={\"BranchScopes:#text/3\":[_.a={\"BranchScopes:#text/0\":[_.b={},_.c={},_.d={}]},_.f={\"BranchScopes:#text/0\":[_.g={},_.h={},_.i={}]},_.j={\"BranchScopes:#text/0\":[_.k={},_.l={},_.m={}]}]},,_.b,_.c,_.d,,_.g,_.h,_.i,,_.k,_.l,_.m],_.b._=_.c._=_.d._=_.n[2]=_.a,_.a._=_.f._=_.j._=_.e,_.g._=_.h._=_.i._=_.n[6]=_.f,_.k._=_.l._=_.m._=_.n[10]=_.j,_.n),\"__tests__/template.marko_2 3 4 5 __tests__/template.marko_1 2 __tests__/template.marko_2 7 8 9 __tests__/template.marko_1 6 __tests__/template.marko_2 11 12 13 __tests__/template.marko_1 10 __tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <pre\n      id=\"root\"\n    />\n    <!--M_*1 #pre/0-->\n    <pre\n      id=\"outer\"\n    />\n    <!--M_*1 #pre/1-->\n    <pre\n      id=\"inner\"\n    />\n    <!--M_*1 #pre/2-->\n    <div\n      class=\"0, 0\"\n    />\n    <!--M_*3 #div/0-->\n    <div\n      class=\"0, 1\"\n    />\n    <!--M_*4 #div/0-->\n    <div\n      class=\"0, 2\"\n    />\n    <!--M_*5 #div/0-->\n    <div\n      class=\"1, 0\"\n    />\n    <!--M_*7 #div/0-->\n    <div\n      class=\"1, 1\"\n    />\n    <!--M_*8 #div/0-->\n    <div\n      class=\"1, 2\"\n    />\n    <!--M_*9 #div/0-->\n    <div\n      class=\"2, 0\"\n    />\n    <!--M_*11 #div/0-->\n    <div\n      class=\"2, 1\"\n    />\n    <!--M_*12 #div/0-->\n    <div\n      class=\"2, 2\"\n    />\n    <!--M_*13 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.n = [0, _.e = {\n            \"BranchScopes:#text/3\": [_.a = {\n              \"BranchScopes:#text/0\": [_.b = {}, _.c = {}, _.d = {}]\n            }, _.f = {\n              \"BranchScopes:#text/0\": [_.g = {}, _.h = {}, _.i = {}]\n            }, _.j = {\n              \"BranchScopes:#text/0\": [_.k = {}, _.l = {}, _.m = {}]\n            }]\n          }, , _.b, _.c, _.d, , _.g, _.h, _.i, , _.k, _.l, _.m], _.b._ = _.c\n          ._ = _.d._ = _.n[2] = _.a, _.a._ = _.f._ = _.j._ = _.e, _.g._ = _.h\n          ._ = _.i._ = _.n[6] = _.f, _.k._ = _.l._ = _.m._ = _.n[10] = _.j, _\n          .n),\n        \"__tests__/template.marko_2 3 4 5 __tests__/template.marko_1 2 __tests__/template.marko_2 7 8 9 __tests__/template.marko_1 6 __tests__/template.marko_2 11 12 13 __tests__/template.marko_1 10 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/pre0\nINSERT html/body/#comment0\nINSERT html/body/pre1\nINSERT html/body/#comment1\nINSERT html/body/pre2\nINSERT html/body/#comment2\nINSERT html/body/div0\nINSERT html/body/#comment3\nINSERT html/body/div1\nINSERT html/body/#comment4\nINSERT html/body/div2\nINSERT html/body/#comment5\nINSERT html/body/div3\nINSERT html/body/#comment6\nINSERT html/body/div4\nINSERT html/body/#comment7\nINSERT html/body/div5\nINSERT html/body/#comment8\nINSERT html/body/div6\nINSERT html/body/#comment9\nINSERT html/body/div7\nINSERT html/body/#comment10\nINSERT html/body/div8\nINSERT html/body/#comment11\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-minimum-scope/tags/child.marko",
    "content": "<return=() => input.value/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-minimum-scope/template.marko",
    "content": "<pre#root/$root />\n<pre#outer/$outer />\n<pre#inner/$inner />\n<script>$root().innerHTML += `${[...$el].length}; ${$el().className}\\n\\t`</script>\n<for|i| to=2>\n  <script>$outer().innerHTML += `${[...$el].length}; ${$el().className}\\n\\t`</script>\n  <for|j| to=2>\n    <script>$inner().innerHTML += `${[...$el].length}; ${$el().className}\\n\\t`</script>\n    <div/$el class=`${i}, ${j}` />\n  </for>\n</for>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-same-scope/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"m\",\n      \"$init\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-same-scope/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  mounted\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-same-scope/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  mounted\n</div>\n```\n\n# Mutations\n```\nINSERT div\nINSERT #text\nREMOVE #text in div\nINSERT div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-same-scope/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"\";\nexport const $walks = \"\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $input__script = _._script(\"__tests__/tags/child.marko_0_input\", $scope => ($scope.input.value().innerHTML = 'mounted'));\nexport const $input = /* @__PURE__ */_._const(\"input\", $input__script);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-same-scope/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 79 (min) 71 (brotli)\n(_._script(\"a0\", ($scope) => ($scope.b.value().innerHTML = \"mounted\")),\n  _._hoist_resume(\"b0\", 1),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-same-scope/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `${_child_template}<div></div>${_child_template}`;\nexport const $walks = /* <child>, get, over(1), <child> */`/${_child_walks}& b/${_child_walks}&`;\nimport { $setup as _child, $input as _child_input, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $el_getter = _._hoist_resume(\"__tests__/template.marko_0_#div/hoist\", \"#div/1\");\nexport function $setup($scope) {\n  _child($scope[\"#childScope/0\"]);\n  _child_input($scope[\"#childScope/0\"], {\n    value: $el_getter($scope)\n  });\n  _child($scope[\"#childScope/2\"]);\n  _child_input($scope[\"#childScope/2\"], {\n    value: $el_getter($scope)\n  });\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-same-scope/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._script($scope0_id, \"__tests__/tags/child.marko_0_input\");\n  _._scope($scope0_id, {\n    input\n  }, \"__tests__/tags/child.marko\", 0, {\n    input: 0\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-same-scope/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _child from \"./tags/child.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $el_getter = _._hoist($scope0_id, \"__tests__/template.marko_0_#div/hoist\");\n  _child({\n    value: $el_getter\n  });\n  _._html(`<div></div>${_._el_resume($scope0_id, \"#div/1\")}`);\n  _child({\n    value: $el_getter\n  });\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-same-scope/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  mounted\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-same-scope/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      mounted\n    </div>\n    <!--M_*1 #div/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.d = {},\n        {\n          input: _.a = {}\n        },\n        {\n          input: _.b = {}\n        }], _.a.value = _.b.value = _._[\n          \"__tests__/template.marko_0_#div/hoist\"\n          ](_.d), _.c),\n        \"__tests__/tags/child.marko_0_input 2 3\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE #text in html/body/div\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-same-scope/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-same-scope/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div></div><!--M_*1 #div/1--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.d={},{input:_.a={}},{input:_.b={}}],_.a.value=_.b.value=_._[\"__tests__/template.marko_0_#div/hoist\"](_.d),_.c),\"__tests__/tags/child.marko_0_input 2 3\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*1 #div/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.d = {},\n        {\n          input: _.a = {}\n        },\n        {\n          input: _.b = {}\n        }], _.a.value = _.b.value = _._[\n          \"__tests__/template.marko_0_#div/hoist\"\n          ](_.d), _.c),\n        \"__tests__/tags/child.marko_0_input 2 3\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-same-scope/tags/child.marko",
    "content": "<script>\n  input.value()!.innerHTML = 'mounted';\n</script>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-same-scope/template.marko",
    "content": "<child=$el />\n<div/$el />\n<child=$el />"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-same-scope-calls-only/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"r\",\n      \"$init\": \"t\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-same-scope-calls-only/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  class=\"child1 child2\"\n>\n  works\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-same-scope-calls-only/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div\n  class=\"child1 child2\"\n>\n  works\n</div>\n```\n\n# Mutations\n```\nINSERT div\nUPDATE div[class] null => \"child1 child2\"\nUPDATE div[class] \"child1\" => \"child1 child2\"\nINSERT div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-same-scope-calls-only/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"\";\nexport const $walks = \"\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $input__script = _._script(\"__tests__/tags/child.marko_0_input\", $scope => $scope.input.action());\nexport const $input = /* @__PURE__ */_._const(\"input\", $input__script);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-same-scope-calls-only/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 229 (min) 108 (brotli)\n(_._script(\"a0\", ($scope) => $scope.b.action()),\n  _._script(\"b2\", ($scope) => ($scope.b.innerHTML = \"works\")),\n  _._resume(\"b1\", function ($scope) {\n    return function () {\n      $scope.b.classList.add(\"child2\");\n    };\n  }),\n  _._resume(\"b0\", function ($scope) {\n    return function () {\n      $scope.b.classList.add(\"child1\");\n    };\n  }),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-same-scope-calls-only/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `${_child_template}<div></div>${_child_template}`;\nexport const $walks = /* <child>, get, over(1), <child> */`/${_child_walks}& b/${_child_walks}&`;\nimport { $setup as _child, $input as _child_input, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => (_._el_read($scope[\"#div/1\"]).innerHTML = \"works\"));\nexport function $setup($scope) {\n  _child($scope[\"#childScope/0\"]);\n  _child_input($scope[\"#childScope/0\"], {\n    action: $action($scope)\n  });\n  _child($scope[\"#childScope/2\"]);\n  _child_input($scope[\"#childScope/2\"], {\n    action: $action2($scope)\n  });\n  $setup__script($scope);\n}\nfunction $action2($scope) {\n  return function () {\n    _._el_read($scope[\"#div/1\"]).classList.add(\"child2\");\n  };\n}\nfunction $action($scope) {\n  return function () {\n    _._el_read($scope[\"#div/1\"]).classList.add(\"child1\");\n  };\n}\n_._resume(\"__tests__/template.marko_0/action2\", $action2);\n_._resume(\"__tests__/template.marko_0/action\", $action);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-same-scope-calls-only/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._script($scope0_id, \"__tests__/tags/child.marko_0_input\");\n  _._scope($scope0_id, {\n    input\n  }, \"__tests__/tags/child.marko\", 0, {\n    input: 0\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-same-scope-calls-only/__snapshots__/html.expected/template.js",
    "content": "import _child from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _child({\n    action: _._resume(function () {\n      ($el => $el())(_._el_read_error).classList.add(\"child1\");\n    }, \"__tests__/template.marko_0/action\", $scope0_id)\n  });\n  _._html(`<div></div>${_._el_resume($scope0_id, \"#div/1\")}`);\n  _child({\n    action: _._resume(function () {\n      ($el => $el())(_._el_read_error).classList.add(\"child2\");\n    }, \"__tests__/template.marko_0/action2\", $scope0_id)\n  });\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-same-scope-calls-only/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  class=\"child1 child2\"\n>\n  works\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-same-scope-calls-only/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div\n      class=\"child1 child2\"\n    >\n      works\n    </div>\n    <!--M_*1 #div/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.d = {},\n        {\n          input: _.a = {}\n        },\n        {\n          input: _.b = {}\n        }], _.a.action = _._[\n          \"__tests__/template.marko_0/action\"\n          ](_.d), _.b.action = _._[\n          \"__tests__/template.marko_0/action2\"\n          ](_.d), _.c),\n        \"__tests__/tags/child.marko_0_input 2 3 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div[class] null => \"child1 child2\"\nUPDATE html/body/div[class] \"child1\" => \"child1 child2\"\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-same-scope-calls-only/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-same-scope-calls-only/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div></div><!--M_*1 #div/1--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.d={},{input:_.a={}},{input:_.b={}}],_.a.action=_._[\"__tests__/template.marko_0/action\"](_.d),_.b.action=_._[\"__tests__/template.marko_0/action2\"](_.d),_.c),\"__tests__/tags/child.marko_0_input 2 3 __tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*1 #div/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.d = {},\n        {\n          input: _.a = {}\n        },\n        {\n          input: _.b = {}\n        }], _.a.action = _._[\n          \"__tests__/template.marko_0/action\"\n          ](_.d), _.b.action = _._[\n          \"__tests__/template.marko_0/action2\"\n          ](_.d), _.c),\n        \"__tests__/tags/child.marko_0_input 2 3 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-same-scope-calls-only/tags/child.marko",
    "content": "<script>\n  input.action()\n</script>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-same-scope-calls-only/template.marko",
    "content": "<script>$el().innerHTML = \"works\"</script>\n<child action() { $el().classList.add(\"child1\") } />\n<div/$el />\n<child action() { $el().classList.add(\"child2\") } />\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-only/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"r\",\n      \"$init\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-only/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-only/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<!---->\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, #text, #comment2, #comment3\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-only/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 142 (min) 80 (brotli)\n(_._hoist_resume(\"a2\", 0),\n  _._hoist_resume(\"a3\", 4),\n  _._resume(\"a1\", function ($scope) {\n    return () => $scope._._.d;\n  }),\n  _._resume(\"a0\", function ($scope) {\n    return () => $scope.d;\n  }),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-only/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content2__hoist3_getter = _._hoist_resume(\"__tests__/template.marko_2_hoist3/hoist\", \"hoist3\");\nconst $if_content2__hoist = /* @__PURE__ */_._const(\"hoist3\", $scope => _._assert_hoist($scope.hoist3));\nconst $if_content2__input_value = /* @__PURE__ */_._closure_get(\"input_value\", $scope => $if_content2__hoist($scope, $hoist2($scope)), $scope => $scope._._);\nconst $if_content2__setup = $scope => {\n  $if_content2__input_value($scope);\n  /* z */$if_content2__hoist3_getter($scope);\n};\nconst $if_content__input_value = /* @__PURE__ */_._if_closure(\"#text/0\", 0, $scope => /* hoist2 */() => $scope._.input_value);\nconst $if_content__if = /* @__PURE__ */_._if(\"#text/0\", 0, 0, $if_content2__setup);\nconst $if_content__setup = $scope => {\n  $if_content__input_value._($scope);\n  /* y */2;\n  $if_content__if($scope, 1 ? 0 : 1);\n};\nconst $hoist1_getter = _._hoist_resume(\"__tests__/template.marko_0_hoist1/hoist\", \"hoist1\");\nconst $if = /* @__PURE__ */_._if(\"#text/0\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", $if_content__setup);\nexport function $setup($scope) {\n  /* x */$hoist1_getter($scope);\n  $if($scope, 1 ? 0 : 1);\n}\nconst $hoist3 = /* @__PURE__ */_._const(\"hoist1\", $scope => _._assert_hoist($scope.hoist1));\nconst $input_value__closure = /* @__PURE__ */_._closure($if_content2__input_value);\nexport const $input_value = /* @__PURE__ */_._const(\"input_value\", $scope => {\n  $hoist3($scope, $hoist($scope));\n  $if_content__input_value($scope);\n  $input_value__closure($scope);\n});\nexport const $input = ($scope, input) => $input_value($scope, input.value);\nfunction $hoist2($scope) {\n  return () => $scope._._.input_value;\n}\nfunction $hoist($scope) {\n  return () => $scope.input_value;\n}\n_._resume(\"__tests__/template.marko_2/hoist2\", $hoist2);\n_._resume(\"__tests__/template.marko_0/hoist\", $hoist);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-only/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $hoist1_getter = _._hoist($scope0_id, \"__tests__/template.marko_0_hoist1/hoist\");\n  const $input_value__closures = new Set();\n  const x = $hoist1_getter;\n  const hoist1 = _._resume(() => input.value, \"__tests__/template.marko_0/hoist\", $scope0_id);\n  _._if(() => {\n    if (1) {\n      const $scope1_id = _._scope_id();\n      const y = 2;\n      const hoist2 = () => input.value;\n      _._if(() => {\n        if (1) {\n          const $scope2_id = _._scope_id();\n          const $if_content2__hoist3_getter = _._hoist($scope2_id, \"__tests__/template.marko_2_hoist3/hoist\");\n          const z = $if_content2__hoist3_getter;\n          const hoist3 = _._resume(() => input.value, \"__tests__/template.marko_2/hoist2\", $scope2_id);\n          _._subscribe($input_value__closures, _._scope($scope2_id, {\n            hoist3,\n            _: _._scope_with_id($scope1_id),\n            \"ClosureSignalIndex:input_value\": _._serialize_if($scope0_reason, /* input.value */0) && 0\n          }, \"__tests__/template.marko\", \"8:4\", {\n            hoist3: \"10:12\"\n          }));\n          _._assert_hoist(hoist3);\n          return 0;\n        }\n      }, $scope1_id, \"#text/0\", 1, 0, 0);\n      _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"4:2\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/0\", 1, 0, 0);\n  _._scope($scope0_id, {\n    input_value: input.value,\n    hoist1,\n    \"ClosureScopes:input_value\": _._serialize_if($scope0_reason, /* input.value */0) && $input_value__closures\n  }, \"__tests__/template.marko\", 0, {\n    input_value: [\"input.value\"],\n    hoist1: \"2:8\"\n  });\n  _._assert_hoist(hoist1);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-only/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-only/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.c = {\n        \"BranchScopes:#text/0\": _.b = {\n          \"BranchScopes:#text/0\": _.a = {}\n        }\n      }, , _.a], _.a._ = _.d[2] = _.b, _.b._ = _.c, _.c.hoist1 = _._[\n        \"__tests__/template.marko_0/hoist\"\n        ](_.c), _.a.hoist3 = _._[\n        \"__tests__/template.marko_2/hoist2\"\n        ](_.a), (_.e = new Set).add(_.a), _.d)];\n      M._.w()\n    </script>\n  </head>\n  <body />\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-only/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-only/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.d=[0,_.c={\"BranchScopes:#text/0\":_.b={\"BranchScopes:#text/0\":_.a={}}},,_.a],_.a._=_.d[2]=_.b,_.b._=_.c,_.c.hoist1=_._[\"__tests__/template.marko_0/hoist\"](_.c),_.a.hoist3=_._[\"__tests__/template.marko_2/hoist2\"](_.a),(_.e=new Set).add(_.a),_.d)];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.c = {\n        \"BranchScopes:#text/0\": _.b = {\n          \"BranchScopes:#text/0\": _.a = {}\n        }\n      }, , _.a], _.a._ = _.d[2] = _.b, _.b._ = _.c, _.c.hoist1 = _._[\n        \"__tests__/template.marko_0/hoist\"\n        ](_.c), _.a.hoist3 = _._[\n        \"__tests__/template.marko_2/hoist2\"\n        ](_.a), (_.e = new Set).add(_.a), _.d)];\n      M._.w()\n    </script>\n  </head>\n  <body />\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/head/script\nINSERT html/head/script/#text\nINSERT html/body\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-only/template.marko",
    "content": "<const/x=hoist1>\n<const/hoist1=()=>input.value>\n\n<if=1>\n  <const/y=2>\n  <const/hoist2=()=>input.value>\n\n  <if=1>\n    <const/z=hoist3>\n    <const/hoist3=()=>input.value>\n  </>\n</>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-return-ref/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"r\",\n      \"$init\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-return-ref/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  1\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-return-ref/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  1\n</div>\n```\n\n# Mutations\n```\nINSERT div\nINSERT div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-return-ref/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* get, over(1) */\" b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $input__script = _._script(\"__tests__/tags/child.marko_0_input\", $scope => (_._el_read($scope[\"#div/0\"]).innerHTML = $scope.input.y()));\nexport const $input = /* @__PURE__ */_._const(\"input\", $input__script);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-return-ref/__snapshots__/dom.expected/tags/source.js",
    "content": "export const $template = \"\";\nexport const $walks = \"\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport function $setup($scope) {\n  _._return($scope, $_return);\n}\nfunction $_return() {\n  return 1;\n}\n_._resume(\"__tests__/tags/source.marko_0/_return\", $_return);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/source.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-return-ref/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 138 (min) 108 (brotli)\n(_._script(\"a0\", ($scope) => ($scope.a.innerHTML = $scope.c.y())),\n  _._resume(\"b0\", function () {\n    return 1;\n  }),\n  _._hoist_resume(\"c0\", 3),\n  _._var_resume(\"c1\", _._const(3)),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-return-ref/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `${_child_template}${_source_template}`;\nexport const $walks = /* <child>, <source/var> */`/${_child_walks}&0${_source_walks}&`;\nimport { $setup as _child, $input as _child_input, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _source, $template as _source_template, $walks as _source_walks } from \"./tags/source.marko\";\nconst $x_getter = _._hoist_resume(\"__tests__/template.marko_0_x/hoist\", \"x\");\nexport function $setup($scope) {\n  _child($scope[\"#childScope/0\"]);\n  _child_input($scope[\"#childScope/0\"], {\n    y: $x_getter($scope)\n  });\n  _._var($scope, \"#childScope/1\", $x);\n  _source($scope[\"#childScope/1\"]);\n}\nconst $x = _._var_resume(\"__tests__/template.marko_0_x/var\", /* @__PURE__ */_._const(\"x\", $scope => _._assert_hoist($scope.x)));\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-return-ref/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div></div>${_._el_resume($scope0_id, \"#div/0\")}`);\n  _._script($scope0_id, \"__tests__/tags/child.marko_0_input\");\n  _._scope($scope0_id, {\n    input\n  }, \"__tests__/tags/child.marko\", 0, {\n    input: 0\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-return-ref/__snapshots__/html.expected/tags/source.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/source.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $return = _._resume(() => 1, \"__tests__/tags/source.marko_0/_return\");\n  return $return;\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-return-ref/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _child from \"./tags/child.marko\";\nimport _source from \"./tags/source.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $x_getter = _._hoist($scope0_id, \"__tests__/template.marko_0_x/hoist\");\n  _child({\n    y: $x_getter\n  });\n  let x = _source({});\n  _._scope($scope0_id, {\n    x\n  }, \"__tests__/template.marko\", 0, {\n    x: \"2:9\"\n  });\n  _._assert_hoist(x);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-return-ref/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  1\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-return-ref/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      1\n    </div>\n    <!--M_*2 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          x: _._[\n            \"__tests__/tags/source.marko_0/_return\"\n            ]\n        },\n        {\n          input: _.a = {}\n        }], _.a.y = _._[\n          \"__tests__/template.marko_0_x/hoist\"\n          ](_.c), _.b),\n        \"__tests__/tags/child.marko_0_input 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-return-ref/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-return-ref/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div></div><!--M_*2 #div/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.c={x:_._[\"__tests__/tags/source.marko_0/_return\"]},{input:_.a={}}],_.a.y=_._[\"__tests__/template.marko_0_x/hoist\"](_.c),_.b),\"__tests__/tags/child.marko_0_input 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*2 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          x: _._[\n            \"__tests__/tags/source.marko_0/_return\"\n            ]\n        },\n        {\n          input: _.a = {}\n        }], _.a.y = _._[\n          \"__tests__/template.marko_0_x/hoist\"\n          ](_.c), _.b),\n        \"__tests__/tags/child.marko_0_input 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-return-ref/tags/child.marko",
    "content": "<div/$el/>\n<script>\n  $el().innerHTML = input.y()\n</script>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-return-ref/tags/source.marko",
    "content": "<return=()=>1>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-return-ref/template.marko",
    "content": "<child y=x />\n<source/x/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-throws-in-render/__snapshots__/csr-sanitized.expected.md",
    "content": "Hoisted values can only be read in scripts and event handlers."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-throws-in-render/__snapshots__/csr.expected.md",
    "content": "Hoisted values can only be read in scripts and event handlers."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-throws-in-render/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><div> </div>\";\nexport const $walks = /* over(1), replace, over(1), next(1), get, out(1) */\"b%bD l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $x_getter = _._hoist(\"x\", \"BranchScopes:#text/0\");\nconst $if_content__x = /* @__PURE__ */_._const(\"x\", $scope => _._assert_hoist($scope.x));\nconst $if_content__setup = $scope => $if_content__x($scope, 1);\nconst $if = /* @__PURE__ */_._if(\"#text/0\", 0, 0, $if_content__setup);\nexport function $setup($scope) {\n  _._text($scope[\"#text/1\"], $x_getter($scope)());\n  $if($scope, 1 ? 0 : 1);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-throws-in-render/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._if(() => {\n    if (1) {\n      const $scope1_id = _._scope_id();\n      const x = 1;\n      _._scope($scope1_id, {\n        x\n      }, \"__tests__/template.marko\", \"1:2\", {\n        x: \"2:10\"\n      });\n      _._assert_hoist(x);\n      return 0;\n    }\n  }, $scope0_id, \"#text/0\", 1, 0, 0);\n  _._html(`<div>${_._escape((x => x())(_._hoist_read_error))}</div>`);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-throws-in-render/__snapshots__/ssr-sanitized.expected.md",
    "content": "Hoisted values must be functions, received type \"number\"."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-throws-in-render/__snapshots__/ssr.expected.md",
    "content": "Hoisted values must be functions, received type \"number\"."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-throws-in-render/template.marko",
    "content": "<if=1>\n  <const/x=1>\n</if>\n\n<div>${x()}</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/hoist-throws-in-render/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_runtime: true,\n  skip_resume: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-comment-counter/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$count__script\": \"_\",\n      \"$$count\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-comment-counter/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <button>\n    0\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    1\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    2\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    3\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-comment-counter/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  <button>\n    0\n  </button>\n  <!--0 + 0 = 0-->\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    1\n  </button>\n  <!--1 + 1 = 2-->\n</div>\n```\n\n# Mutations\n```\nUPDATE div/button/#text \"0\" => \"1\"\nUPDATE div/#comment \"0 + 0 = 0\" => \"1 + 1 = 2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    2\n  </button>\n  <!--2 + 2 = 4-->\n</div>\n```\n\n# Mutations\n```\nUPDATE div/button/#text \"1\" => \"2\"\nUPDATE div/#comment \"1 + 1 = 2\" => \"2 + 2 = 4\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    3\n  </button>\n  <!--3 + 3 = 6-->\n</div>\n```\n\n# Mutations\n```\nUPDATE div/button/#text \"2\" => \"3\"\nUPDATE div/#comment \"2 + 2 = 4\" => \"3 + 3 = 6\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-comment-counter/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 192 (min) 123 (brotli)\nconst $count__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $count($scope, $scope.d + 1);\n    }),\n  ),\n  $count = _._let(3, ($scope) => {\n    (_._text($scope.b, $scope.d),\n      _._text(\n        $scope.c,\n        `${_._to_text($scope.d)} + ${_._to_text($scope.d)} = ${_._to_text($scope.d + $scope.d)}`,\n      ),\n      $count__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-comment-counter/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div><button> </button><!----></div>\";\nexport const $walks = /* next(1), get, next(1), get, out(1), get, out(1) */\"D D l l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $count__script = _._script(\"__tests__/template.marko_0_count\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $count($scope, $scope.count + 1);\n}));\nconst $count = /* @__PURE__ */_._let(\"count/3\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.count);\n  _._text($scope[\"#comment/2\"], `${_._to_text($scope.count)} + ${_._to_text($scope.count)} = ${_._to_text($scope.count + $scope.count)}`);\n  $count__script($scope);\n});\nexport function $setup($scope) {\n  $count($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-comment-counter/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let count = 0;\n  _._html(`<div><button>${_._escape(count)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}<!--${_._escape_text(count)} + ${_._escape_text(count)} = ${_._escape_text(count + count)}-->${_._el_resume($scope0_id, \"#comment/2\")}</div>`);\n  _._script($scope0_id, \"__tests__/template.marko_0_count\");\n  _._scope($scope0_id, {\n    count\n  }, \"__tests__/template.marko\", 0, {\n    count: \"2:8\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-comment-counter/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <button>\n    0\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    1\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    2\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    3\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-comment-counter/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        0\n        <!--M_*1 #text/1-->\n      </button>\n      <!--M_*1 #button/0-->\n      <!--0 + 0 = 0-->\n      <!--M_*1 #comment/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        1\n        <!--M_*1 #text/1-->\n      </button>\n      <!--M_*1 #button/0-->\n      <!--1 + 1 = 2-->\n      <!--M_*1 #comment/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/button/#text \"0\" => \"1\"\nUPDATE html/body/div/#comment1 \"0 + 0 = 0\" => \"1 + 1 = 2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        2\n        <!--M_*1 #text/1-->\n      </button>\n      <!--M_*1 #button/0-->\n      <!--2 + 2 = 4-->\n      <!--M_*1 #comment/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/button/#text \"1\" => \"2\"\nUPDATE html/body/div/#comment1 \"1 + 1 = 2\" => \"2 + 2 = 4\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        3\n        <!--M_*1 #text/1-->\n      </button>\n      <!--M_*1 #button/0-->\n      <!--3 + 3 = 6-->\n      <!--M_*1 #comment/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/button/#text \"2\" => \"3\"\nUPDATE html/body/div/#comment1 \"2 + 2 = 4\" => \"3 + 3 = 6\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-comment-counter/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  <button>\n    0\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-comment-counter/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><button>0<!--M_*1 #text/1--></button><!--M_*1 #button/0--><!--0 + 0 = 0--><!--M_*1 #comment/2--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{count:0}]),\"__tests__/template.marko_0_count 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        0\n        <!--M_*1 #text/1-->\n      </button>\n      <!--M_*1 #button/0-->\n      <!--0 + 0 = 0-->\n      <!--M_*1 #comment/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/button\nINSERT html/body/div/button/#text\nINSERT html/body/div/button/#comment\nINSERT html/body/div/#comment0\nINSERT html/body/div/#comment1\nINSERT html/body/div/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-comment-counter/template.marko",
    "content": "<div>\n  <let/count = 0/>\n  <button onClick() {\n    count++\n  }>${count}</button>\n  <html-comment>${count} + ${count} = ${count + count}</html-comment>\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-comment-counter/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-comment-var/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"r\",\n      \"$$tagName\": \"e\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-comment-var/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  ‍\n</div>\n<span>\n  ‍\n</span>\n```\n\n\n# Render ASYNC\n```html\n<div>\n  DIV\n</div>\n<span>\n  SPAN\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-comment-var/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  <!--Body Text-->\n  ‍\n</div>\n<span>\n  <!--Body Text-->\n  ‍\n</span>\n```\n\n# Mutations\n```\nINSERT div, span\n```\n\n# Render ASYNC\n```html\n<div>\n  <!--Body Text-->\n  DIV\n</div>\n<span>\n  <!--Body Text-->\n  SPAN\n</span>\n```\n\n# Mutations\n```\nUPDATE div/#text \"‍\" => \"DIV\"\nUPDATE span/#text \"‍\" => \"SPAN\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-comment-var/__snapshots__/dom.expected/tags/parent-el.js",
    "content": "export const $template = \"<!--Body Text-->\";\nexport const $walks = /* get, over(1) */\" b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $tagName = /* @__PURE__ */_._let(\"tagName/1\", $scope => _._return($scope, $scope.tagName));\nconst $setup__script = _._script(\"__tests__/tags/parent-el.marko_0\", $scope => $tagName($scope, _._el_read($scope[\"#comment/0\"]).parentElement.tagName));\nexport function $setup($scope) {\n  $tagName($scope, undefined);\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/tags/parent-el.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-comment-var/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 176 (min) 111 (brotli)\nconst $tagName = _._let(1, ($scope) => _._return($scope, $scope.b));\n(_._script(\"a0\", ($scope) => $tagName($scope, $scope.a.parentElement.tagName)),\n  _._var_resume(\"b0\", ($scope, divName) => _._text($scope.c, divName)),\n  _._var_resume(\"b1\", ($scope, spanName) => _._text($scope.f, spanName)),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-comment-var/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<div>${_parentEl_template} </div><span>${_parentEl_template} </span>`;\nexport const $walks = /* next(1), <parent-el/var>, get, out(1), next(1), <parent-el/var>, get, out(1) */`D0${_parentEl_walks}& lD0${_parentEl_walks}& l`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _parentEl, $template as _parentEl_template, $walks as _parentEl_walks } from \"./tags/parent-el.marko\";\nconst $divName = _._var_resume(\"__tests__/template.marko_0_divName/var\", ($scope, divName) => _._text($scope[\"#text/2\"], divName));\nexport function $setup($scope) {\n  _._var($scope, \"#childScope/0\", $divName);\n  _parentEl($scope[\"#childScope/0\"]);\n  _._var($scope, \"#childScope/3\", $spanName);\n  _parentEl($scope[\"#childScope/3\"]);\n}\nconst $spanName = _._var_resume(\"__tests__/template.marko_0_spanName/var\", ($scope, spanName) => _._text($scope[\"#text/5\"], spanName));\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-comment-var/__snapshots__/html.expected/tags/parent-el.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/parent-el.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let tagName = undefined;\n  _._html(`<!--Body Text-->${_._el_resume($scope0_id, \"#comment/0\")}`);\n  const $return = tagName;\n  _._script($scope0_id, \"__tests__/tags/parent-el.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/tags/parent-el.marko\", 0);\n  _._resume_branch($scope0_id);\n  return $return;\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-comment-var/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _parentEl from \"./tags/parent-el.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div>\");\n  const $childScope = _._peek_scope_id();\n  let divName = _parentEl({});\n  _._var($scope0_id, \"#scopeOffset/1\", $childScope, \"__tests__/template.marko_0_divName/var\");\n  _._html(`${_._escape(divName)}${_._el_resume($scope0_id, \"#text/2\")}</div><span>`);\n  const $childScope2 = _._peek_scope_id();\n  let spanName = _parentEl({});\n  _._var($scope0_id, \"#scopeOffset/4\", $childScope2, \"__tests__/template.marko_0_spanName/var\");\n  _._html(`${_._escape(spanName)}${_._el_resume($scope0_id, \"#text/5\")}</span>`);\n  _._scope($scope0_id, {\n    \"#childScope/0\": _._existing_scope($childScope),\n    \"#childScope/3\": _._existing_scope($childScope2)\n  }, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-comment-var/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  ‍\n</div>\n<span>\n  ‍\n</span>\n```\n\n\n# Render ASYNC\n```html\n<div>\n  DIV\n</div>\n<span>\n  SPAN\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-comment-var/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--Body Text-->\n      <!--M_*2 #comment/0-->\n      ‍\n      <!--M_*1 #text/2-->\n    </div>\n    <span>\n      <!--Body Text-->\n      <!--M_*4 #comment/0-->\n      ‍\n      <!--M_*1 #text/5-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.d = {\n          \"#scopeOffset/1\": 3,\n          \"#scopeOffset/4\": 5,\n          \"#childScope/0\": _.a = {},\n          \"#childScope/3\": _.b = {}\n        }, _.a, 1, _.b], _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_divName/var\"\n          ](_.d), _.b[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_spanName/var\"\n          ](_.d), _.c),\n        \"__tests__/tags/parent-el.marko_0 2 4\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render ASYNC\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--Body Text-->\n      <!--M_*2 #comment/0-->\n      DIV\n      <!--M_*1 #text/2-->\n    </div>\n    <span>\n      <!--Body Text-->\n      <!--M_*4 #comment/0-->\n      SPAN\n      <!--M_*1 #text/5-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.d = {\n          \"#scopeOffset/1\": 3,\n          \"#scopeOffset/4\": 5,\n          \"#childScope/0\": _.a = {},\n          \"#childScope/3\": _.b = {}\n        }, _.a, 1, _.b], _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_divName/var\"\n          ](_.d), _.b[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_spanName/var\"\n          ](_.d), _.c),\n        \"__tests__/tags/parent-el.marko_0 2 4\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/#text \"‍\" => \"DIV\"\nUPDATE html/body/span/#text \"‍\" => \"SPAN\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-comment-var/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  ‍\n</div>\n<span>\n  ‍\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-comment-var/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><!--Body Text--><!--M_*2 #comment/0-->&zwj;<!--M_*1 #text/2--></div><span><!--Body Text--><!--M_*4 #comment/0-->&zwj;<!--M_*1 #text/5--></span><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.d={\"#scopeOffset/1\":3,\"#scopeOffset/4\":5,\"#childScope/0\":_.a={},\"#childScope/3\":_.b={}},_.a,1,_.b],_.a[\"#TagVariable\"]=_._[\"__tests__/template.marko_0_divName/var\"](_.d),_.b[\"#TagVariable\"]=_._[\"__tests__/template.marko_0_spanName/var\"](_.d),_.c),\"__tests__/tags/parent-el.marko_0 2 4\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--Body Text-->\n      <!--M_*2 #comment/0-->\n      ‍\n      <!--M_*1 #text/2-->\n    </div>\n    <span>\n      <!--Body Text-->\n      <!--M_*4 #comment/0-->\n      ‍\n      <!--M_*1 #text/5-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.d = {\n          \"#scopeOffset/1\": 3,\n          \"#scopeOffset/4\": 5,\n          \"#childScope/0\": _.a = {},\n          \"#childScope/3\": _.b = {}\n        }, _.a, 1, _.b], _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_divName/var\"\n          ](_.d), _.b[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_spanName/var\"\n          ](_.d), _.c),\n        \"__tests__/tags/parent-el.marko_0 2 4\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#comment0\nINSERT html/body/div/#comment1\nINSERT html/body/div/#text\nINSERT html/body/div/#comment2\nINSERT html/body/span\nINSERT html/body/span/#comment0\nINSERT html/body/span/#comment1\nINSERT html/body/span/#text\nINSERT html/body/span/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-comment-var/tags/parent-el.marko",
    "content": "<html-comment/ref>Body Text</html-comment>\n<let/tagName/>\n<script>\n  tagName = ref().parentElement.tagName\n</script>\n\n<return=tagName/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-comment-var/template.marko",
    "content": "<div>\n    <parent-el/divName/>\n    ${divName}\n</div>\n\n<span>\n    <parent-el/spanName/>\n    ${spanName}\n</span>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-comment-var/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{}, wait],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-entity/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-entity/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  &lt;div&gt;\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-entity/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  &lt;div&gt;\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-entity/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-entity/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div>&lt;div&gt;</div>\";\nexport const $walks = /* over(1) */\"b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-entity/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div>&lt;div&gt;</div>\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-entity/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  &lt;div&gt;\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-entity/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      &lt;div&gt;\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-entity/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  &lt;div&gt;\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-entity/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>&lt;div&gt;</div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      &lt;div&gt;\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-entity/template.marko",
    "content": "<div>&lt;div&gt;</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-script/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$count__script\": \"n\",\n      \"$$count\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-script/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  0\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"script\").click();\n```\n```html\n<div>\n  1\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"script\").click();\n```\n```html\n<div>\n  2\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"script\").click();\n```\n```html\n<div>\n  3\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-script/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<script\n  type=\"importmap\"\n>\n  {\n    \"imports\":\n    {\n      \"0\": \"https://markojs.com\",\n    }\n  }\n</script>\n<div>\n  0\n</div>\n```\n\n# Mutations\n```\nINSERT script, div\n```\n\n# Render\n```js\ncontainer.querySelector(\"script\").click();\n```\n```html\n<script\n  type=\"importmap\"\n>\n  {\n    \"imports\":\n    {\n      \"1\": \"https://markojs.com\",\n    }\n  }\n</script>\n<div>\n  1\n</div>\n```\n\n# Mutations\n```\nREMOVE #text in script\nINSERT script/#text\nUPDATE div/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"script\").click();\n```\n```html\n<script\n  type=\"importmap\"\n>\n  {\n    \"imports\":\n    {\n      \"2\": \"https://markojs.com\",\n    }\n  }\n</script>\n<div>\n  2\n</div>\n```\n\n# Mutations\n```\nREMOVE #text in script\nINSERT script/#text\nUPDATE div/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"script\").click();\n```\n```html\n<script\n  type=\"importmap\"\n>\n  {\n    \"imports\":\n    {\n      \"3\": \"https://markojs.com\",\n    }\n  }\n</script>\n<div>\n  3\n</div>\n```\n\n# Mutations\n```\nREMOVE #text in script\nINSERT script/#text\nUPDATE div/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-script/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 225 (min) 159 (brotli)\nconst $count__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $count($scope, $scope.c + 1);\n    }),\n  ),\n  $count = _._let(2, ($scope) => {\n    (_._text_content(\n      $scope.a,\n      `\\n  {\\n    \"imports\": {\\n      \"${_._to_text($scope.c)}\": \"https://markojs.com\",\\n    }\\n  }\\n`,\n    ),\n      _._text($scope.b, $scope.c),\n      $count__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-script/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<script type=importmap></script><div> </div>\";\nexport const $walks = /* get, over(1), next(1), get, out(1) */\" bD l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $count__script = _._script(\"__tests__/template.marko_0_count\", $scope => _._on($scope[\"#script/0\"], \"click\", function () {\n  $count($scope, $scope.count + 1);\n}));\nconst $count = /* @__PURE__ */_._let(\"count/2\", $scope => {\n  _._text_content($scope[\"#script/0\"], `\n  {\n    \"imports\": {\n      \"${_._to_text($scope.count)}\": \"https://markojs.com\",\n    }\n  }\n`);\n  _._text($scope[\"#text/1\"], $scope.count);\n  $count__script($scope);\n});\nexport function $setup($scope) {\n  _._attr_nonce($scope, \"#script/0\");\n  $count($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-script/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let count = 0;\n  _._html(`<script${_._attr_nonce()} type=importmap>\n  {\n    \"imports\": {\n      \"${_._escape_script(count)}\": \"https://markojs.com\",\n    }\n  }\n</script>${_._el_resume($scope0_id, \"#script/0\")}<div>${_._escape(count)}${_._el_resume($scope0_id, \"#text/1\")}</div>`);\n  _._script($scope0_id, \"__tests__/template.marko_0_count\");\n  _._scope($scope0_id, {\n    count\n  }, \"__tests__/template.marko\", 0, {\n    count: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-script/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  0\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"script\").click();\n```\n```html\n<div>\n  1\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"script\").click();\n```\n```html\n<div>\n  2\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"script\").click();\n```\n```html\n<div>\n  3\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-script/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head>\n    <script\n      type=\"importmap\"\n    >\n      {\n        \"imports\":\n        {\n          \"0\": \"https://markojs.com\",\n        }\n      }\n    </script>\n    <!--M_*1 #script/0-->\n  </head>\n  <body>\n    <div>\n      0\n      <!--M_*1 #text/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"script\").click();\n```\n```html\n<html>\n  <head>\n    <script\n      type=\"importmap\"\n    >\n      {\n        \"imports\":\n        {\n          \"1\": \"https://markojs.com\",\n        }\n      }\n    </script>\n    <!--M_*1 #script/0-->\n  </head>\n  <body>\n    <div>\n      1\n      <!--M_*1 #text/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #text in html/head/script\nINSERT html/head/script/#text\nUPDATE html/body/div/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"script\").click();\n```\n```html\n<html>\n  <head>\n    <script\n      type=\"importmap\"\n    >\n      {\n        \"imports\":\n        {\n          \"2\": \"https://markojs.com\",\n        }\n      }\n    </script>\n    <!--M_*1 #script/0-->\n  </head>\n  <body>\n    <div>\n      2\n      <!--M_*1 #text/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #text in html/head/script\nINSERT html/head/script/#text\nUPDATE html/body/div/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"script\").click();\n```\n```html\n<html>\n  <head>\n    <script\n      type=\"importmap\"\n    >\n      {\n        \"imports\":\n        {\n          \"3\": \"https://markojs.com\",\n        }\n      }\n    </script>\n    <!--M_*1 #script/0-->\n  </head>\n  <body>\n    <div>\n      3\n      <!--M_*1 #text/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #text in html/head/script\nINSERT html/head/script/#text\nUPDATE html/body/div/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-script/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  0\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-script/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <script type=importmap>\n    {\n      \"imports\": {\n        \"0\": \"https://markojs.com\",\n      }\n    }\n  </script><!--M_*1 #script/0--><div>0<!--M_*1 #text/1--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{count:0}]),\"__tests__/template.marko_0_count 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head>\n    <script\n      type=\"importmap\"\n    >\n      {\n        \"imports\":\n        {\n          \"0\": \"https://markojs.com\",\n        }\n      }\n    </script>\n    <!--M_*1 #script/0-->\n  </head>\n  <body>\n    <div>\n      0\n      <!--M_*1 #text/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/head/script\nINSERT html/head/script/#text\nINSERT html/head/#comment\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/div/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-script/template.marko",
    "content": "<let/count = 0/>\n<html-script type=\"importmap\" onClick() { count++ }>\n  {\n    \"imports\": {\n      \"${count}\": \"https://markojs.com\",\n    }\n  }\n</html-script>\n<div>${count}</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-script/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"script\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-script-nonce/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"r\",\n      \"$$if_content__setup\": \"a\",\n      \"$$if\": \"i\",\n      \"$$mounted\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-script-nonce/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"$global\":{\"cspNonce\":\"default-nonce\",\"serializedGlobals\":{\"cspNonce\":true}}}`\n\n\n\n# Render ASYNC\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-script-nonce/__snapshots__/csr.expected.md",
    "content": "# Render `{\"$global\":{\"cspNonce\":\"default-nonce\",\"serializedGlobals\":{\"cspNonce\":true}}}`\n\n```html\n<script\n  nonce=\"default-nonce\"\n  type=\"magic\"\n>\n  A\n</script>\n<script\n  nonce=\"override\"\n  type=\"magic\"\n>\n  B\n</script>\n<script\n  nonce=\"override-spread\"\n  type=\"magic\"\n>\n  C\n</script>\n<!---->\n```\n\n# Mutations\n```\nINSERT script0, script1, script2, #text, #comment\n```\n\n# Render ASYNC\n```html\n<script\n  nonce=\"default-nonce\"\n  type=\"magic\"\n>\n  A\n</script>\n<script\n  nonce=\"override\"\n  type=\"magic\"\n>\n  B\n</script>\n<script\n  nonce=\"override-spread\"\n  type=\"magic\"\n>\n  C\n</script>\n<script\n  nonce=\"default-nonce\"\n  type=\"magic\"\n>\n  D\n</script>\n<!---->\n```\n\n# Mutations\n```\nINSERT script3\nREMOVE #text after script3\nUPDATE script3[nonce] null => \"default-nonce\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-script-nonce/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 200 (min) 143 (brotli)\nconst $if_content__setup = ($scope) => _._attr_nonce($scope, \"a\");\n_._script(\"a0\", ($scope) => _._attrs_script($scope, \"b\"));\nconst $if = _._if(\n    2,\n    \"<script type=magic>\\n    D\\n  <\\/script>\",\n    \" b\",\n    $if_content__setup,\n  ),\n  $mounted = _._let(4, ($scope) => $if($scope, $scope.e ? 0 : 1));\n(_._script(\"a1\", ($scope) => $mounted($scope, !0)), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-script-nonce/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<script type=magic>\\n  A\\n</script><script type=magic nonce=override>\\n  B\\n</script><script>\\n  C\\n</script><!><!>\";\nexport const $walks = /* get, over(2), get, over(1), replace, over(2) */\" c b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content__setup = $scope => _._attr_nonce($scope, \"#script/0\");\nconst $spreadAttrs__script = _._script(\"__tests__/template.marko_0_spreadAttrs\", $scope => _._attrs_script($scope, \"#script/1\"));\nconst $spreadAttrs = /* @__PURE__ */_._const(\"spreadAttrs\", $scope => {\n  _._attrs($scope, \"#script/1\", {\n    nonce: $scope.$global.cspNonce,\n    type: \"magic\",\n    ...$scope.spreadAttrs\n  });\n  $spreadAttrs__script($scope);\n});\nconst $if = /* @__PURE__ */_._if(\"#text/2\", \"<script type=magic>\\n    D\\n  </script>\", /* get, over(1) */\" b\", $if_content__setup);\nconst $mounted = /* @__PURE__ */_._let(\"mounted/4\", $scope => $if($scope, $scope.mounted ? 0 : 1));\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => $mounted($scope, true));\nexport function $setup($scope) {\n  _._attr_nonce($scope, \"#script/0\");\n  $spreadAttrs($scope, {\n    nonce: \"override-spread\"\n  });\n  $mounted($scope, false);\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-script-nonce/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const spreadAttrs = {\n    nonce: \"override-spread\"\n  };\n  let mounted = false;\n  _._html(`<script${_._attr_nonce()} type=magic>\n  A\n</script><script type=magic nonce=override>\n  B\n</script><script${_._attrs({\n    nonce: _.$global().cspNonce,\n    type: \"magic\",\n    ...spreadAttrs\n  }, \"#script/1\", $scope0_id, \"script\")}>\n  C\n</script>${_._el_resume($scope0_id, \"#script/1\")}`);\n  _._if(() => {\n    if (mounted) {\n      const $scope1_id = _._scope_id();\n      _._html(`<script${_._attr_nonce()} type=magic>\n    D\n  </script>`);\n      _._scope($scope1_id, {}, \"__tests__/template.marko\", \"17:2\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/2\", 1, /* mounted */1, /* mounted */1, 0, 1);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._script($scope0_id, \"__tests__/template.marko_0_spreadAttrs\");\n  _._scope($scope0_id, {\n    spreadAttrs\n  }, \"__tests__/template.marko\", 0, {\n    spreadAttrs: \"10:8\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-script-nonce/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"$global\":{\"cspNonce\":\"default-nonce\",\"serializedGlobals\":{\"cspNonce\":true}}}`\n\n\n\n# Render ASYNC\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-script-nonce/__snapshots__/resume.expected.md",
    "content": "# Render `{\"$global\":{\"cspNonce\":\"default-nonce\",\"serializedGlobals\":{\"cspNonce\":true}}}`\n\n```html\n<html>\n  <head>\n    <script\n      nonce=\"default-nonce\"\n      type=\"magic\"\n    >\n      A\n    </script>\n    <script\n      nonce=\"override\"\n      type=\"magic\"\n    >\n      B\n    </script>\n    <script\n      nonce=\"override-spread\"\n      type=\"magic\"\n    >\n      C\n    </script>\n    <!--M_*1 #script/1-->\n    <!--M_|1 #text/2-->\n    <script\n      nonce=\"default-nonce\"\n    >\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [\n        {\n          cspNonce: \"default-nonce\"\n        },\n        {\n          spreadAttrs:\n          {\n            nonce: \"override-spread\"\n          }\n        }]),\n        \"__tests__/template.marko_0 1 __tests__/template.marko_0_spreadAttrs 1\"\n      ];\n      M._.w()\n    </script>\n  </head>\n  <body />\n</html>\n```\n\n\n# Render ASYNC\n```html\n<html>\n  <head>\n    <script\n      nonce=\"default-nonce\"\n      type=\"magic\"\n    >\n      A\n    </script>\n    <script\n      nonce=\"override\"\n      type=\"magic\"\n    >\n      B\n    </script>\n    <script\n      nonce=\"override-spread\"\n      type=\"magic\"\n    >\n      C\n    </script>\n    <!--M_*1 #script/1-->\n    <script\n      nonce=\"default-nonce\"\n      type=\"magic\"\n    >\n      D\n    </script>\n    <script\n      nonce=\"default-nonce\"\n    >\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [\n        {\n          cspNonce: \"default-nonce\"\n        },\n        {\n          spreadAttrs:\n          {\n            nonce: \"override-spread\"\n          }\n        }]),\n        \"__tests__/template.marko_0 1 __tests__/template.marko_0_spreadAttrs 1\"\n      ];\n      M._.w()\n    </script>\n  </head>\n  <body />\n</html>\n```\n\n# Mutations\n```\nINSERT html/head/script3\nREMOVE #comment after html/head/script3\nUPDATE html/head/script3[nonce] null => \"default-nonce\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-script-nonce/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-script-nonce/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <script nonce=default-nonce type=magic>\n    A\n  </script><script type=magic nonce=override>\n    B\n  </script><script nonce=override-spread type=magic>\n    C\n  </script><!--M_*1 #script/1--><!--M_|1 #text/2--><script nonce=default-nonce>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[{cspNonce:\"default-nonce\"},{spreadAttrs:{nonce:\"override-spread\"}}]),\"__tests__/template.marko_0 1 __tests__/template.marko_0_spreadAttrs 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head>\n    <script\n      nonce=\"default-nonce\"\n      type=\"magic\"\n    >\n      A\n    </script>\n    <script\n      nonce=\"override\"\n      type=\"magic\"\n    >\n      B\n    </script>\n    <script\n      nonce=\"override-spread\"\n      type=\"magic\"\n    >\n      C\n    </script>\n    <!--M_*1 #script/1-->\n    <!--M_|1 #text/2-->\n    <script\n      nonce=\"default-nonce\"\n    >\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [\n        {\n          cspNonce: \"default-nonce\"\n        },\n        {\n          spreadAttrs:\n          {\n            nonce: \"override-spread\"\n          }\n        }]),\n        \"__tests__/template.marko_0 1 __tests__/template.marko_0_spreadAttrs 1\"\n      ];\n      M._.w()\n    </script>\n  </head>\n  <body />\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/head/script0\nINSERT html/head/script0/#text\nINSERT html/head/script1\nINSERT html/head/script1/#text\nINSERT html/head/script2\nINSERT html/head/script2/#text\nINSERT html/head/#comment0\nINSERT html/head/#comment1\nINSERT html/head/script3\nINSERT html/head/script3/#text\nINSERT html/body\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-script-nonce/template.marko",
    "content": "<html-script type=\"magic\">\n  A\n</html-script>\n\n\n<html-script type=\"magic\" nonce=\"override\">\n  B\n</html-script>\n\n<const/spreadAttrs = { nonce: \"override-spread\" }>\n<html-script type=\"magic\" ...spreadAttrs>\n  C\n</html-script>\n\n<let/mounted=false>\n<script>mounted = true</script>\n<if=mounted>\n  <html-script type=\"magic\">\n    D\n  </html-script>\n</if>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-script-nonce/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [\n    {\n      $global: {\n        cspNonce: \"default-nonce\",\n        serializedGlobals: { cspNonce: true },\n      },\n    },\n    wait,\n  ],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-style/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"n\",\n      \"$$count__script\": \"o\",\n      \"$$count\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-style/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n\n\n# Render\n```js\ncontainer.querySelector(\"style\").click();\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"style\").click();\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"style\").click();\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-style/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<style>\n  \n  .test {\n    content: 0\n  }\n\n</style>\n```\n\n# Mutations\n```\nINSERT style\n```\n\n# Render\n```js\ncontainer.querySelector(\"style\").click();\n```\n```html\n<style>\n  \n  .test {\n    content: 1\n  }\n\n</style>\n```\n\n# Mutations\n```\nREMOVE #text in style\nINSERT style/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"style\").click();\n```\n```html\n<style>\n  \n  .test {\n    content: 2\n  }\n\n</style>\n```\n\n# Mutations\n```\nREMOVE #text in style\nINSERT style/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"style\").click();\n```\n```html\n<style>\n  \n  .test {\n    content: 3\n  }\n\n</style>\n```\n\n# Mutations\n```\nREMOVE #text in style\nINSERT style/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-style/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 170 (min) 125 (brotli)\nconst $count__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $count($scope, $scope.b + 1);\n    }),\n  ),\n  $count = _._let(1, ($scope) => {\n    (_._text_content(\n      $scope.a,\n      `\\n  .test {\\n    content: ${_._to_text($scope.b)}\\n  }\\n`,\n    ),\n      $count__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-style/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<style></style>\";\nexport const $walks = /* get, over(1) */\" b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $count__script = _._script(\"__tests__/template.marko_0_count\", $scope => _._on($scope[\"#style/0\"], \"click\", function () {\n  $count($scope, $scope.count + 1);\n}));\nconst $count = /* @__PURE__ */_._let(\"count/1\", $scope => {\n  _._text_content($scope[\"#style/0\"], `\n  .test {\n    content: ${_._to_text($scope.count)}\n  }\n`);\n  $count__script($scope);\n});\nexport function $setup($scope) {\n  _._attr_nonce($scope, \"#style/0\");\n  $count($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-style/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let count = 0;\n  _._html(`<style${_._attr_nonce()}>\n  .test {\n    content: ${_._escape_style(count)}\n  }\n</style>${_._el_resume($scope0_id, \"#style/0\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_count\");\n  _._scope($scope0_id, {\n    count\n  }, \"__tests__/template.marko\", 0, {\n    count: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-style/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n\n\n# Render\n```js\ncontainer.querySelector(\"style\").click();\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"style\").click();\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"style\").click();\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-style/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head>\n    <style>\n      \n  .test {\n    content: 0\n  }\n\n    </style>\n    <!--M_*1 #style/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </head>\n  <body />\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"style\").click();\n```\n```html\n<html>\n  <head>\n    <style>\n      \n  .test {\n    content: 1\n  }\n\n    </style>\n    <!--M_*1 #style/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </head>\n  <body />\n</html>\n```\n\n# Mutations\n```\nREMOVE #text in html/head/style\nINSERT html/head/style/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"style\").click();\n```\n```html\n<html>\n  <head>\n    <style>\n      \n  .test {\n    content: 2\n  }\n\n    </style>\n    <!--M_*1 #style/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </head>\n  <body />\n</html>\n```\n\n# Mutations\n```\nREMOVE #text in html/head/style\nINSERT html/head/style/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"style\").click();\n```\n```html\n<html>\n  <head>\n    <style>\n      \n  .test {\n    content: 3\n  }\n\n    </style>\n    <!--M_*1 #style/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </head>\n  <body />\n</html>\n```\n\n# Mutations\n```\nREMOVE #text in html/head/style\nINSERT html/head/style/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-style/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-style/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <style>\n    .test {\n      content: 0\n    }\n  </style><!--M_*1 #style/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{count:0}]),\"__tests__/template.marko_0_count 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head>\n    <style>\n      \n  .test {\n    content: 0\n  }\n\n    </style>\n    <!--M_*1 #style/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </head>\n  <body />\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/head/style\nINSERT html/head/style/#text\nINSERT html/head/#comment\nINSERT html/head/script\nINSERT html/head/script/#text\nINSERT html/body\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-style/template.marko",
    "content": "<let/count = 0/>\n\n<html-style onClick() { count++ }>\n  .test {\n    content: ${count}\n  }\n</html-style>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-style/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"style\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-style-nonce/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"r\",\n      \"$$if_content__setup\": \"o\",\n      \"$$if\": \"s\",\n      \"$$mounted\": \"a\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-style-nonce/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"$global\":{\"cspNonce\":\"default-nonce\",\"serializedGlobals\":{\"cspNonce\":true}}}`\n\n\n\n# Render ASYNC\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-style-nonce/__snapshots__/csr.expected.md",
    "content": "# Render `{\"$global\":{\"cspNonce\":\"default-nonce\",\"serializedGlobals\":{\"cspNonce\":true}}}`\n\n```html\n<style\n  nonce=\"default-nonce\"\n>\n  \n  A {}\n\n</style>\n<style\n  nonce=\"override\"\n>\n  \n  B {}\n\n</style>\n<style\n  nonce=\"override-spread\"\n>\n  \n  C {}\n\n</style>\n<!---->\n```\n\n# Mutations\n```\nINSERT style0, style1, style2, #text, #comment\n```\n\n# Render ASYNC\n```html\n<style\n  nonce=\"default-nonce\"\n>\n  \n  A {}\n\n</style>\n<style\n  nonce=\"override\"\n>\n  \n  B {}\n\n</style>\n<style\n  nonce=\"override-spread\"\n>\n  \n  C {}\n\n</style>\n<style\n  nonce=\"default-nonce\"\n>\n  \n    D {}\n  \n</style>\n<!---->\n```\n\n# Mutations\n```\nINSERT style3\nREMOVE #text after style3\nUPDATE style3[nonce] null => \"default-nonce\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-style-nonce/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 189 (min) 147 (brotli)\nconst $if_content__setup = ($scope) => _._attr_nonce($scope, \"a\");\n_._script(\"a0\", ($scope) => _._attrs_script($scope, \"b\"));\nconst $if = _._if(2, \"<style>\\n    D {}\\n  </style>\", \" b\", $if_content__setup),\n  $mounted = _._let(4, ($scope) => $if($scope, $scope.e ? 0 : 1));\n(_._script(\"a1\", ($scope) => $mounted($scope, !0)), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-style-nonce/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<style>\\n  A {}\\n</style><style nonce=override>\\n  B {}\\n</style><style>\\n  C {}\\n</style><!><!>\";\nexport const $walks = /* get, over(2), get, over(1), replace, over(2) */\" c b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content__setup = $scope => _._attr_nonce($scope, \"#style/0\");\nconst $spreadAttrs__script = _._script(\"__tests__/template.marko_0_spreadAttrs\", $scope => _._attrs_script($scope, \"#style/1\"));\nconst $spreadAttrs = /* @__PURE__ */_._const(\"spreadAttrs\", $scope => {\n  _._attrs($scope, \"#style/1\", {\n    nonce: $scope.$global.cspNonce,\n    ...$scope.spreadAttrs\n  });\n  $spreadAttrs__script($scope);\n});\nconst $if = /* @__PURE__ */_._if(\"#text/2\", \"<style>\\n    D {}\\n  </style>\", /* get, over(1) */\" b\", $if_content__setup);\nconst $mounted = /* @__PURE__ */_._let(\"mounted/4\", $scope => $if($scope, $scope.mounted ? 0 : 1));\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => $mounted($scope, true));\nexport function $setup($scope) {\n  _._attr_nonce($scope, \"#style/0\");\n  $spreadAttrs($scope, {\n    nonce: \"override-spread\"\n  });\n  $mounted($scope, false);\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-style-nonce/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const spreadAttrs = {\n    nonce: \"override-spread\"\n  };\n  let mounted = false;\n  _._html(`<style${_._attr_nonce()}>\n  A {}\n</style><style nonce=override>\n  B {}\n</style><style${_._attrs({\n    nonce: _.$global().cspNonce,\n    ...spreadAttrs\n  }, \"#style/1\", $scope0_id, \"style\")}>\n  C {}\n</style>${_._el_resume($scope0_id, \"#style/1\")}`);\n  _._if(() => {\n    if (mounted) {\n      const $scope1_id = _._scope_id();\n      _._html(`<style${_._attr_nonce()}>\n    D {}\n  </style>`);\n      _._scope($scope1_id, {}, \"__tests__/template.marko\", \"17:2\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/2\", 1, /* mounted */1, /* mounted */1, 0, 1);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._script($scope0_id, \"__tests__/template.marko_0_spreadAttrs\");\n  _._scope($scope0_id, {\n    spreadAttrs\n  }, \"__tests__/template.marko\", 0, {\n    spreadAttrs: \"10:8\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-style-nonce/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"$global\":{\"cspNonce\":\"default-nonce\",\"serializedGlobals\":{\"cspNonce\":true}}}`\n\n\n\n# Render ASYNC\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-style-nonce/__snapshots__/resume.expected.md",
    "content": "# Render `{\"$global\":{\"cspNonce\":\"default-nonce\",\"serializedGlobals\":{\"cspNonce\":true}}}`\n\n```html\n<html>\n  <head>\n    <style\n      nonce=\"default-nonce\"\n    >\n      \n  A {}\n\n    </style>\n    <style\n      nonce=\"override\"\n    >\n      \n  B {}\n\n    </style>\n    <style\n      nonce=\"override-spread\"\n    >\n      \n  C {}\n\n    </style>\n    <!--M_*1 #style/1-->\n    <!--M_|1 #text/2-->\n    <script\n      nonce=\"default-nonce\"\n    >\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [\n        {\n          cspNonce: \"default-nonce\"\n        },\n        {\n          spreadAttrs:\n          {\n            nonce: \"override-spread\"\n          }\n        }]),\n        \"__tests__/template.marko_0 1 __tests__/template.marko_0_spreadAttrs 1\"\n      ];\n      M._.w()\n    </script>\n  </head>\n  <body />\n</html>\n```\n\n\n# Render ASYNC\n```html\n<html>\n  <head>\n    <style\n      nonce=\"default-nonce\"\n    >\n      \n  A {}\n\n    </style>\n    <style\n      nonce=\"override\"\n    >\n      \n  B {}\n\n    </style>\n    <style\n      nonce=\"override-spread\"\n    >\n      \n  C {}\n\n    </style>\n    <!--M_*1 #style/1-->\n    <style\n      nonce=\"default-nonce\"\n    >\n      \n    D {}\n  \n    </style>\n    <script\n      nonce=\"default-nonce\"\n    >\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [\n        {\n          cspNonce: \"default-nonce\"\n        },\n        {\n          spreadAttrs:\n          {\n            nonce: \"override-spread\"\n          }\n        }]),\n        \"__tests__/template.marko_0 1 __tests__/template.marko_0_spreadAttrs 1\"\n      ];\n      M._.w()\n    </script>\n  </head>\n  <body />\n</html>\n```\n\n# Mutations\n```\nINSERT html/head/style3\nREMOVE #comment after html/head/style3\nUPDATE html/head/style3[nonce] null => \"default-nonce\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-style-nonce/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-style-nonce/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <style nonce=default-nonce>\n    A {}\n  </style><style nonce=override>\n    B {}\n  </style><style nonce=override-spread>\n    C {}\n  </style><!--M_*1 #style/1--><!--M_|1 #text/2--><script nonce=default-nonce>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[{cspNonce:\"default-nonce\"},{spreadAttrs:{nonce:\"override-spread\"}}]),\"__tests__/template.marko_0 1 __tests__/template.marko_0_spreadAttrs 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head>\n    <style\n      nonce=\"default-nonce\"\n    >\n      \n  A {}\n\n    </style>\n    <style\n      nonce=\"override\"\n    >\n      \n  B {}\n\n    </style>\n    <style\n      nonce=\"override-spread\"\n    >\n      \n  C {}\n\n    </style>\n    <!--M_*1 #style/1-->\n    <!--M_|1 #text/2-->\n    <script\n      nonce=\"default-nonce\"\n    >\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [\n        {\n          cspNonce: \"default-nonce\"\n        },\n        {\n          spreadAttrs:\n          {\n            nonce: \"override-spread\"\n          }\n        }]),\n        \"__tests__/template.marko_0 1 __tests__/template.marko_0_spreadAttrs 1\"\n      ];\n      M._.w()\n    </script>\n  </head>\n  <body />\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/head/style0\nINSERT html/head/style0/#text\nINSERT html/head/style1\nINSERT html/head/style1/#text\nINSERT html/head/style2\nINSERT html/head/style2/#text\nINSERT html/head/#comment0\nINSERT html/head/#comment1\nINSERT html/head/script\nINSERT html/head/script/#text\nINSERT html/body\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-style-nonce/template.marko",
    "content": "<html-style>\n  A {}\n</html-style>\n\n\n<html-style nonce=\"override\">\n  B {}\n</html-style>\n\n<const/spreadAttrs = { nonce: \"override-spread\" }>\n<html-style ...spreadAttrs>\n  C {}\n</html-style>\n\n<let/mounted=false>\n<script>mounted = true</script>\n<if=mounted>\n  <html-style>\n    D {}\n  </html-style>\n</if>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/html-style-nonce/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [\n    {\n      $global: {\n        cspNonce: \"default-nonce\",\n        serializedGlobals: { cspNonce: true },\n      },\n    },\n    wait,\n  ],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/id-tag/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/id-tag/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  cM_0 cM_1\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/id-tag/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  cM_0 cM_1\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/id-tag/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/id-tag/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div><!> <!></div>\";\nexport const $walks = /* next(1), replace, over(2), replace, out(1) */\"D%c%l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $x = ($scope, x) => _._text($scope[\"#text/0\"], x);\nconst $y = ($scope, y) => _._text($scope[\"#text/1\"], y);\nexport function $setup($scope) {\n  $x($scope, _._id($scope));\n  $y($scope, _._id($scope));\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/id-tag/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const x = _._id();\n  const y = _._id();\n  _._html(`<div>${_._escape(x)} ${_._escape(y)}</div>`);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/id-tag/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  sM_1 sM_2\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/id-tag/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      sM_1 sM_2\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/id-tag/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  sM_1 sM_2\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/id-tag/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>sM_1 sM_2</div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      sM_1 sM_2\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/id-tag/template.marko",
    "content": "<id/x/>\n<div>\n  <id/y/>\n  ${x} ${y}\n</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/id-tag-default/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"r\",\n      \"$$bar__OR__baz__script\": \"o\",\n      \"$$bar__OR__baz\": \"a\",\n      \"$$bar\": \"i\",\n      \"$$baz\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/id-tag-default/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  toggle\n</button>\n<div\n  id=\"foo\"\n>\n  foo\n</div>\n<div\n  id=\"cM_0\"\n>\n  bar\n</div>\n<div\n  id=\"baz\"\n>\n  baz\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  toggle\n</button>\n<div\n  id=\"foo\"\n>\n  foo\n</div>\n<div\n  id=\"bar\"\n>\n  bar\n</div>\n<div\n  id=\"cM_1\"\n>\n  baz\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  toggle\n</button>\n<div\n  id=\"foo\"\n>\n  foo\n</div>\n<div\n  id=\"cM_2\"\n>\n  bar\n</div>\n<div\n  id=\"baz\"\n>\n  baz\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/id-tag-default/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  toggle\n</button>\n<div\n  id=\"foo\"\n>\n  foo\n</div>\n<div\n  id=\"cM_0\"\n>\n  bar\n</div>\n<div\n  id=\"baz\"\n>\n  baz\n</div>\n```\n\n# Mutations\n```\nINSERT button, div0, div1, div2\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  toggle\n</button>\n<div\n  id=\"foo\"\n>\n  foo\n</div>\n<div\n  id=\"bar\"\n>\n  bar\n</div>\n<div\n  id=\"cM_1\"\n>\n  baz\n</div>\n```\n\n# Mutations\n```\nUPDATE div1[id] \"cM_0\" => \"bar\"\nUPDATE div2[id] \"baz\" => \"cM_1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  toggle\n</button>\n<div\n  id=\"foo\"\n>\n  foo\n</div>\n<div\n  id=\"cM_2\"\n>\n  bar\n</div>\n<div\n  id=\"baz\"\n>\n  baz\n</div>\n```\n\n# Mutations\n```\nUPDATE div1[id] \"bar\" => \"cM_2\"\nUPDATE div2[id] \"cM_1\" => \"baz\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/id-tag-default/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 255 (min) 157 (brotli)\nconst $bar__OR__baz__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      ($bar($scope, $scope.e ? null : \"bar\"),\n        $baz($scope, $scope.f ? null : \"baz\"));\n    }),\n  ),\n  $bar__OR__baz = _._or(6, $bar__OR__baz__script),\n  $bar = _._let(4, ($scope) => {\n    ((($scope, sometimesBar) => {\n      _._attr($scope.c, \"id\", sometimesBar);\n    })($scope, $scope.e || _._id($scope)),\n      $bar__OR__baz($scope));\n  }),\n  $baz = _._let(5, ($scope) => {\n    ((($scope, sometimesBaz) => {\n      _._attr($scope.d, \"id\", sometimesBaz);\n    })($scope, $scope.f || _._id($scope)),\n      $bar__OR__baz($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/id-tag-default/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button>toggle</button><div>foo</div><div>bar</div><div>baz</div>\";\nexport const $walks = /* get, over(1), get, over(1), get, over(1), get, over(1) */\" b b b b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $sometimesBar = ($scope, sometimesBar) => _._attr($scope[\"#div/2\"], \"id\", sometimesBar);\nconst $bar__OR__baz__script = _._script(\"__tests__/template.marko_0_bar_baz\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $bar($scope, $scope.bar ? null : \"bar\");\n  $baz($scope, $scope.baz ? null : \"baz\");\n}));\nconst $bar__OR__baz = /* @__PURE__ */_._or(6, $bar__OR__baz__script);\nconst $bar = /* @__PURE__ */_._let(\"bar/4\", $scope => {\n  $sometimesBar($scope, $scope.bar || _._id($scope));\n  $bar__OR__baz($scope);\n});\nconst $sometimesBaz = ($scope, sometimesBaz) => _._attr($scope[\"#div/3\"], \"id\", sometimesBaz);\nconst $baz = /* @__PURE__ */_._let(\"baz/5\", $scope => {\n  $sometimesBaz($scope, $scope.baz || _._id($scope));\n  $bar__OR__baz($scope);\n});\nconst $alwaysFoo = ($scope, alwaysFoo) => _._attr($scope[\"#div/1\"], \"id\", alwaysFoo);\nexport function $setup($scope) {\n  $bar($scope, undefined);\n  $baz($scope, \"baz\");\n  $alwaysFoo($scope, \"foo\" || _._id($scope));\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/id-tag-default/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let bar = undefined;\n  let baz = \"baz\";\n  const alwaysFoo = \"foo\" || _._id();\n  const sometimesBar = bar || _._id();\n  const sometimesBaz = baz || _._id();\n  _._html(`<button>toggle</button>${_._el_resume($scope0_id, \"#button/0\")}<div${_._attr(\"id\", alwaysFoo)}>foo</div><div${_._attr(\"id\", sometimesBar)}>bar</div>${_._el_resume($scope0_id, \"#div/2\")}<div${_._attr(\"id\", sometimesBaz)}>baz</div>${_._el_resume($scope0_id, \"#div/3\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_bar_baz\");\n  _._scope($scope0_id, {\n    bar,\n    baz\n  }, \"__tests__/template.marko\", 0, {\n    bar: \"1:5\",\n    baz: \"2:5\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/id-tag-default/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  toggle\n</button>\n<div\n  id=\"foo\"\n>\n  foo\n</div>\n<div\n  id=\"sM_1\"\n>\n  bar\n</div>\n<div\n  id=\"baz\"\n>\n  baz\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  toggle\n</button>\n<div\n  id=\"foo\"\n>\n  foo\n</div>\n<div\n  id=\"bar\"\n>\n  bar\n</div>\n<div\n  id=\"cM_0\"\n>\n  baz\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  toggle\n</button>\n<div\n  id=\"foo\"\n>\n  foo\n</div>\n<div\n  id=\"cM_1\"\n>\n  bar\n</div>\n<div\n  id=\"baz\"\n>\n  baz\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/id-tag-default/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      toggle\n    </button>\n    <!--M_*1 #button/0-->\n    <div\n      id=\"foo\"\n    >\n      foo\n    </div>\n    <div\n      id=\"sM_1\"\n    >\n      bar\n    </div>\n    <!--M_*1 #div/2-->\n    <div\n      id=\"baz\"\n    >\n      baz\n    </div>\n    <!--M_*1 #div/3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          baz: \"baz\"\n        }]),\n        \"__tests__/template.marko_0_bar_baz 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      toggle\n    </button>\n    <!--M_*1 #button/0-->\n    <div\n      id=\"foo\"\n    >\n      foo\n    </div>\n    <div\n      id=\"bar\"\n    >\n      bar\n    </div>\n    <!--M_*1 #div/2-->\n    <div\n      id=\"cM_0\"\n    >\n      baz\n    </div>\n    <!--M_*1 #div/3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          baz: \"baz\"\n        }]),\n        \"__tests__/template.marko_0_bar_baz 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div1[id] \"sM_1\" => \"bar\"\nUPDATE html/body/div2[id] \"baz\" => \"cM_0\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      toggle\n    </button>\n    <!--M_*1 #button/0-->\n    <div\n      id=\"foo\"\n    >\n      foo\n    </div>\n    <div\n      id=\"cM_1\"\n    >\n      bar\n    </div>\n    <!--M_*1 #div/2-->\n    <div\n      id=\"baz\"\n    >\n      baz\n    </div>\n    <!--M_*1 #div/3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          baz: \"baz\"\n        }]),\n        \"__tests__/template.marko_0_bar_baz 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div1[id] \"bar\" => \"cM_1\"\nUPDATE html/body/div2[id] \"cM_0\" => \"baz\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/id-tag-default/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  toggle\n</button>\n<div\n  id=\"foo\"\n>\n  foo\n</div>\n<div\n  id=\"sM_1\"\n>\n  bar\n</div>\n<div\n  id=\"baz\"\n>\n  baz\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/id-tag-default/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>toggle</button><!--M_*1 #button/0--><div id=foo>foo</div><div id=sM_1>bar</div><!--M_*1 #div/2--><div id=baz>baz</div><!--M_*1 #div/3--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{baz:\"baz\"}]),\"__tests__/template.marko_0_bar_baz 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      toggle\n    </button>\n    <!--M_*1 #button/0-->\n    <div\n      id=\"foo\"\n    >\n      foo\n    </div>\n    <div\n      id=\"sM_1\"\n    >\n      bar\n    </div>\n    <!--M_*1 #div/2-->\n    <div\n      id=\"baz\"\n    >\n      baz\n    </div>\n    <!--M_*1 #div/3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          baz: \"baz\"\n        }]),\n        \"__tests__/template.marko_0_bar_baz 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment0\nINSERT html/body/div0\nINSERT html/body/div0/#text\nINSERT html/body/div1\nINSERT html/body/div1/#text\nINSERT html/body/#comment1\nINSERT html/body/div2\nINSERT html/body/div2/#text\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/id-tag-default/template.marko",
    "content": "let/bar\nlet/baz=\"baz\"\n\nid/alwaysFoo=\"foo\"\nid/sometimesBar=bar\nid/sometimesBaz=baz\n\nbutton onClick() {\n  bar = bar ? null : \"bar\"\n  baz = baz ? null : \"baz\"\n} -- toggle\n\n\ndiv id=alwaysFoo -- foo\ndiv id=sometimesBar -- bar\ndiv id=sometimesBaz -- baz"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/id-tag-default/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/id-tag-hoist-error/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/id-tag-hoist-error/__snapshots__/csr-sanitized.expected.md",
    "content": "Hoisted values must be functions, received type \"string\"."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/id-tag-hoist-error/__snapshots__/csr.expected.md",
    "content": "Hoisted values must be functions, received type \"string\"."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/id-tag-hoist-error/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 24 (min) 28 (brotli)\n_._hoist_resume(\"a0\", 3);\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/id-tag-hoist-error/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div> </div><!>\";\nexport const $walks = /* next(1), get, out(1), replace, over(1) */\"D l%b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $y_getter = _._hoist_resume(\"__tests__/template.marko_0_y/hoist\", \"y\");\nconst $x = ($scope, x) => _._text($scope[\"#text/0\"], x);\nconst $y = /* @__PURE__ */_._const(\"y\", $scope => _._assert_hoist($scope.y));\nexport function $setup($scope) {\n  _._text($scope[\"#text/1\"], $y_getter($scope));\n  $x($scope, _._id($scope));\n  $y($scope, _._id($scope));\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/id-tag-hoist-error/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $y_getter = _._hoist($scope0_id, \"__tests__/template.marko_0_y/hoist\");\n  const x = _._id();\n  const y = _._id();\n  _._html(`<div>${_._escape(x)}</div>${_._escape($y_getter)}`);\n  _._scope($scope0_id, {\n    y\n  }, \"__tests__/template.marko\", 0, {\n    y: \"3:7\"\n  });\n  _._assert_hoist(y);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/id-tag-hoist-error/__snapshots__/resume-sanitized.expected.md",
    "content": "Hoisted values must be functions, received type \"string\"."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/id-tag-hoist-error/__snapshots__/resume.expected.md",
    "content": "Hoisted values must be functions, received type \"string\"."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/id-tag-hoist-error/__snapshots__/ssr-sanitized.expected.md",
    "content": "Hoisted values must be functions, received type \"string\"."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/id-tag-hoist-error/__snapshots__/ssr.expected.md",
    "content": "Hoisted values must be functions, received type \"string\"."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/id-tag-hoist-error/template.marko",
    "content": "<id/x/>\n<div>\n  <id/y/>\n  ${x}\n</div>\n\n-- ${y}"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/id-tag-hoist-error/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_runtime: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-default-false/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"o\",\n      \"$init\": \"m\",\n      \"$$if\": \"t\",\n      \"$$show__script\": \"i\",\n      \"$$show\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-default-false/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\nhi\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\nhi\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-default-false/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button />\n<!---->\n```\n\n# Mutations\n```\nINSERT button, #text, #comment\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\nhi\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE #text after #text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE #text after #text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\nhi\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE #text after #text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-default-false/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 127 (min) 112 (brotli)\nconst $if = _._if(1, \"hi\", \"b\"),\n  $show__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $show($scope, !$scope.c);\n    }),\n  ),\n  $show = _._let(2, ($scope) => {\n    ($if($scope, $scope.c ? 0 : 1), $show__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-default-false/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button></button><!><!>\";\nexport const $walks = /* get, over(1), replace, over(2) */\" b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if = /* @__PURE__ */_._if(\"#text/1\", \"hi\", /* over(1) */\"b\");\nconst $show__script = _._script(\"__tests__/template.marko_0_show\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $show($scope, !$scope.show);\n}));\nconst $show = /* @__PURE__ */_._let(\"show/2\", $scope => {\n  $if($scope, $scope.show ? 0 : 1);\n  $show__script($scope);\n});\nexport function $setup($scope) {\n  $show($scope, false);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-default-false/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let show = false;\n  _._html(`<button></button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._if(() => {\n    if (show) {\n      const $scope1_id = _._scope_id();\n      _._html(\"hi\");\n      _._scope($scope1_id, {}, \"__tests__/template.marko\", \"3:2\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/1\");\n  _._script($scope0_id, \"__tests__/template.marko_0_show\");\n  _._scope($scope0_id, {\n    show\n  }, \"__tests__/template.marko\", 0, {\n    show: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-default-false/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\nhi\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\nhi\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-default-false/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <!--M_]1 #text/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          show: !1\n        }]),\n        \"__tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    hi\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          show: !1\n        }]),\n        \"__tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text\nREMOVE #comment after html/body/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <!--M_]1 #text/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          show: !1\n        }]),\n        \"__tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#comment2\nREMOVE #text after html/body/#comment2\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    hi\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          show: !1\n        }]),\n        \"__tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text\nREMOVE #comment after html/body/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-default-false/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-default-false/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button></button><!--M_*1 #button/0--><!--M_[--><!--M_]1 #text/1--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{show:!1}]),\"__tests__/template.marko_0_show 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <!--M_]1 #text/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          show: !1\n        }]),\n        \"__tests__/template.marko_0_show 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-default-false/template.marko",
    "content": "<let/show = false/>\n<button onClick() { show = !show }/>\n<if=show>\n  hi\n</if>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-default-false/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-member-expression-intersection/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$if_content__text\": \"r\",\n      \"$$if_content__setup\": \"m\",\n      \"$$if\": \"_\",\n      \"$$hide__OR__text_length\": \"i\",\n      \"$$hide\": \"s\",\n      \"$$text\": \"a\",\n      \"$$text_length\": \"c\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-member-expression-intersection/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"cM_0\"\n/>\n<div\n  id=\"cM_1\"\n/>\n```\n\n\n# Render ASYNC\n```html\n<div\n  id=\"cM_0\"\n>\n  <div>\n    cM_0\n  </div>\n</div>\n<div\n  id=\"cM_1\"\n>\n  <div>\n    cM_1\n  </div>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-member-expression-intersection/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"cM_0\"\n/>\n<div\n  id=\"cM_1\"\n/>\n```\n\n# Mutations\n```\nINSERT div0, div1\n```\n\n# Render ASYNC\n```html\n<div\n  id=\"cM_0\"\n>\n  <div>\n    cM_0\n  </div>\n</div>\n<div\n  id=\"cM_1\"\n>\n  <div>\n    cM_1\n  </div>\n</div>\n```\n\n# Mutations\n```\nINSERT div0/div\nINSERT div1/div\nUPDATE div0/div/#text \" \" => \"cM_0\"\nUPDATE div1/div/#text \" \" => \"cM_1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-member-expression-intersection/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* get, over(1) */\" b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content__text = /* @__PURE__ */_._if_closure(\"#div/0\", 0, $scope => _._text($scope[\"#text/0\"], $scope._.text));\nconst $if_content__setup = $if_content__text;\nconst $if = /* @__PURE__ */_._if(\"#div/0\", \"<div> </div>\", /* next(1), get, out(1) */\"D l\", $if_content__setup);\nconst $hide__OR__text_length = /* @__PURE__ */_._or(4, $scope => $if($scope, !$scope.hide && $scope.text_length ? 0 : 1));\nconst $hide = /* @__PURE__ */_._let(\"hide/1\", $hide__OR__text_length);\nconst $text = /* @__PURE__ */_._let(\"text/2\", $scope => {\n  $text_length($scope, $scope.text?.length);\n  $if_content__text($scope);\n});\nconst $id__script = _._script(\"__tests__/tags/child.marko_0_id\", $scope => {\n  $text($scope, $scope.id);\n  $hide($scope, false);\n});\nconst $id = /* @__PURE__ */_._const(\"id\", $scope => {\n  _._attr($scope[\"#div/0\"], \"id\", $scope.id);\n  $id__script($scope);\n});\nexport function $setup($scope) {\n  $hide($scope, true);\n  $text($scope, \"\");\n  $id($scope, _._id($scope));\n}\nconst $text_length = /* @__PURE__ */_._const(\"text_length\", $hide__OR__text_length);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-member-expression-intersection/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 237 (min) 172 (brotli)\nconst $if_content__text = _._if_closure(0, 0, ($scope) =>\n    _._text($scope.a, $scope._.c),\n  ),\n  $if_content__setup = $if_content__text,\n  $if = _._if(0, \"<div> </div>\", \"D l\", $if_content__setup),\n  $hide__OR__text_length = _._or(4, ($scope) =>\n    $if($scope, !$scope.b && $scope.d ? 0 : 1),\n  ),\n  $hide = _._let(1, $hide__OR__text_length),\n  $text = _._let(2, ($scope) => {\n    ($text_length($scope, $scope.c?.length), $if_content__text($scope));\n  });\n_._script(\"a0\", ($scope) => {\n  ($text($scope, $scope.f), $hide($scope, !1));\n});\nconst $text_length = _._const(3, $hide__OR__text_length);\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-member-expression-intersection/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `${_child_template}${_child_template}`;\nexport const $walks = /* <child>, <child> */`/${_child_walks}&/${_child_walks}&`;\nimport { $setup as _child, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nexport function $setup($scope) {\n  _child($scope[\"#childScope/0\"]);\n  _child($scope[\"#childScope/1\"]);\n}\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-member-expression-intersection/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let hide = true;\n  let text = \"\";\n  const id = _._id();\n  _._html(`<div${_._attr(\"id\", id)}>`);\n  _._if(() => {\n    if (!hide && text.length) {\n      const $scope1_id = _._scope_id();\n      _._html(`<div>${_._escape(text)}${_._el_resume($scope1_id, \"#text/0\")}</div>`);\n      _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/tags/child.marko\", \"6:4\");\n      return 0;\n    }\n  }, $scope0_id, \"#div/0\", 1, /* hide, text */1, /* hide, text */1, \"</div>\", 1);\n  _._script($scope0_id, \"__tests__/tags/child.marko_0_id\");\n  _._scope($scope0_id, {\n    hide,\n    text,\n    text_length: text?.length,\n    id\n  }, \"__tests__/tags/child.marko\", 0, {\n    hide: \"1:6\",\n    text: \"2:6\",\n    text_length: [\"text.length\", \"2:6\"],\n    id: \"3:5\"\n  });\n  _._resume_branch($scope0_id);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-member-expression-intersection/__snapshots__/html.expected/template.js",
    "content": "import _child from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _child({});\n  _child({});\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-member-expression-intersection/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"sM_1\"\n/>\n<div\n  id=\"sM_2\"\n/>\n```\n\n\n# Render ASYNC\n```html\n<div\n  id=\"sM_1\"\n>\n  <div>\n    sM_1\n  </div>\n</div>\n<div\n  id=\"sM_2\"\n>\n  <div>\n    sM_2\n  </div>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-member-expression-intersection/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"sM_1\"\n    >\n      <!--M_}2 #div/0-->\n    </div>\n    <div\n      id=\"sM_2\"\n    >\n      <!--M_}3 #div/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 1,\n        {\n          hide: !0,\n          text: \"\",\n          text_length: 0,\n          id: \"sM_1\"\n        },\n        {\n          hide: !0,\n          text: \"\",\n          text_length: 0,\n          id: \"sM_2\"\n        }]),\n        \"__tests__/tags/child.marko_0_id 2 3\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render ASYNC\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"sM_1\"\n    >\n      <!--M_}2 #div/0-->\n      <div>\n        sM_1\n      </div>\n    </div>\n    <div\n      id=\"sM_2\"\n    >\n      <!--M_}3 #div/0-->\n      <div>\n        sM_2\n      </div>\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 1,\n        {\n          hide: !0,\n          text: \"\",\n          text_length: 0,\n          id: \"sM_1\"\n        },\n        {\n          hide: !0,\n          text: \"\",\n          text_length: 0,\n          id: \"sM_2\"\n        }]),\n        \"__tests__/tags/child.marko_0_id 2 3\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div0/div\nINSERT html/body/div1/div\nUPDATE html/body/div0/div/#text \" \" => \"sM_1\"\nUPDATE html/body/div1/div/#text \" \" => \"sM_2\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-member-expression-intersection/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div\n  id=\"sM_1\"\n/>\n<div\n  id=\"sM_2\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-member-expression-intersection/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div id=sM_1><!--M_}2 #div/0--></div><div id=sM_2><!--M_}3 #div/0--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,1,{hide:!0,text:\"\",text_length:0,id:\"sM_1\"},{hide:!0,text:\"\",text_length:0,id:\"sM_2\"}]),\"__tests__/tags/child.marko_0_id 2 3\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"sM_1\"\n    >\n      <!--M_}2 #div/0-->\n    </div>\n    <div\n      id=\"sM_2\"\n    >\n      <!--M_}3 #div/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 1,\n        {\n          hide: !0,\n          text: \"\",\n          text_length: 0,\n          id: \"sM_1\"\n        },\n        {\n          hide: !0,\n          text: \"\",\n          text_length: 0,\n          id: \"sM_2\"\n        }]),\n        \"__tests__/tags/child.marko_0_id 2 3\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/div0/#comment\nINSERT html/body/div1\nINSERT html/body/div1/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-member-expression-intersection/tags/child.marko",
    "content": "<let/hide=true>\n<let/text=\"\">\n<id/id>\n\n<div id=id>\n  <if=!hide && text.length>\n    <div>${text}</div>\n  </>\n</div>\n<script>\n  text = id;\n  hide = false;\n</script>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-member-expression-intersection/template.marko",
    "content": "<child/>\n<child/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-member-expression-intersection/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{}, wait],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-no-content-script/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$if_content__setup\": \"i\",\n      \"$$if\": \"m\",\n      \"$$count__script\": \"r\",\n      \"$$count\": \"e\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-no-content-script/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  Hit\n</div>\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Hit\n</div>\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Hit\n</div>\n<button>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Hit\n</div>\n<button>\n  3\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-no-content-script/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  Hit\n</div>\n<button>\n  0\n</button>\n<!---->\n```\n\n# Mutations\n```\nINSERT div, button, #text, #comment\nINSERT div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Hit\n</div>\n<button>\n  1\n</button>\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text \"0\" => \"1\"\nINSERT #text\nREMOVE #text after #text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Hit\n</div>\n<button>\n  2\n</button>\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Hit\n</div>\n<button>\n  3\n</button>\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-no-content-script/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 187 (min) 143 (brotli)\nconst $if_content__setup = _._script(\n    \"a0\",\n    ($scope) => ($scope._.a.textContent = \"Hit\"),\n  ),\n  $if = _._if(3, 0, 0, $if_content__setup),\n  $count__script = _._script(\"a1\", ($scope) =>\n    _._on($scope.b, \"click\", function () {\n      $count($scope, $scope.e + 1);\n    }),\n  ),\n  $count = _._let(4, ($scope) => {\n    (_._text($scope.c, $scope.e),\n      $if($scope, $scope.e ? 1 : 0),\n      $count__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-no-content-script/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div></div><button> </button><!><!>\";\nexport const $walks = /* get, over(1), get, next(1), get, out(1), replace, over(2) */\" b D l%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content__setup__script = _._script(\"__tests__/template.marko_1\", $scope => (_._el_read($scope._[\"#div/0\"]).textContent = \"Hit\"));\nconst $if_content__setup = $if_content__setup__script;\nconst $if = /* @__PURE__ */_._if(\"#text/3\", 0, 0, $if_content__setup);\nconst $count__script = _._script(\"__tests__/template.marko_0_count\", $scope => _._on($scope[\"#button/1\"], \"click\", function () {\n  $count($scope, $scope.count + 1);\n}));\nconst $count = /* @__PURE__ */_._let(\"count/4\", $scope => {\n  _._text($scope[\"#text/2\"], $scope.count);\n  $if($scope, !$scope.count ? 0 : 1);\n  $count__script($scope);\n});\nexport function $setup($scope) {\n  $count($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-no-content-script/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let count = 0;\n  _._html(`<div></div>${_._el_resume($scope0_id, \"#div/0\")}<button>${_._escape(count)}${_._el_resume($scope0_id, \"#text/2\")}</button>${_._el_resume($scope0_id, \"#button/1\")}`);\n  _._if(() => {\n    if (!count) {\n      const $scope1_id = _._scope_id();\n      _._script($scope1_id, \"__tests__/template.marko_1\");\n      _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"5:1\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/3\");\n  _._script($scope0_id, \"__tests__/template.marko_0_count\");\n  _._scope($scope0_id, {\n    count\n  }, \"__tests__/template.marko\", 0, {\n    count: \"1:5\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-no-content-script/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  Hit\n</div>\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Hit\n</div>\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Hit\n</div>\n<button>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  Hit\n</div>\n<button>\n  3\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-no-content-script/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      Hit\n    </div>\n    <!--M_*1 #div/0-->\n    <button>\n      0\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <!--M_[-->\n    <!--M_]1 #text/3 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          count: 0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1 2 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      Hit\n    </div>\n    <!--M_*1 #div/0-->\n    <button>\n      1\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <!--M_]1 #text/3 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          count: 0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1 2 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"0\" => \"1\"\nREMOVE html/body/#comment2 after #comment\nINSERT html/body/#comment2\nREMOVE #comment after html/body/#comment2\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      Hit\n    </div>\n    <!--M_*1 #div/0-->\n    <button>\n      2\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <!--M_]1 #text/3 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          count: 0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1 2 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      Hit\n    </div>\n    <!--M_*1 #div/0-->\n    <button>\n      3\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <!--M_]1 #text/3 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          count: 0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1 2 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-no-content-script/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n<button>\n  0\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-no-content-script/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div></div><!--M_*1 #div/0--><button>0<!--M_*1 #text/2--></button><!--M_*1 #button/1--><!--M_[--><!--M_]1 #text/3 2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={count:0},{_:_.a}]),\"__tests__/template.marko_1 2 __tests__/template.marko_0_count 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*1 #div/0-->\n    <button>\n      0\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/1-->\n    <!--M_[-->\n    <!--M_]1 #text/3 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          count: 0\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1 2 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/#comment0\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment1\nINSERT html/body/#comment2\nINSERT html/body/#comment3\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-no-content-script/template.marko",
    "content": "let/count=0\n\ndiv/el\nbutton onClick() { count++ } -- ${count}\nif=!count\n  script -- el().textContent = \"Hit\"\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-no-content-script/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-tag/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-tag/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"a\":1,\"b\":2,\"x\":false,\"y\":true}`\n\n```html\nHelloWorld\n<div>\n  B\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-tag/__snapshots__/csr.expected.md",
    "content": "# Render `{\"a\":1,\"b\":2,\"x\":false,\"y\":true}`\n\n```html\n<!---->\nHelloWorld\n<div>\n  B\n</div>\n```\n\n# Mutations\n```\nINSERT #comment, #text0, #text1, div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-tag/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-tag/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><!><div></div>\";\nexport const $walks = /* over(1), replace, over(1), replace, over(1), get, over(1) */\"b%b%b b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if = /* @__PURE__ */_._if(\"#text/0\", \"Hello\", /* over(1) */\"b\");\nconst $if2 = /* @__PURE__ */_._if(\"#text/1\", \"World\", /* over(1) */\"b\");\nconst $input_a__OR__input_b = /* @__PURE__ */_._or(7, $scope => {\n  $if($scope, $scope.input_a + $scope.input_b ? 0 : 1);\n  $if2($scope, ($scope.input_a, $scope.input_b) ? 0 : 1);\n});\nexport const $input_a = /* @__PURE__ */_._const(\"input_a\", $input_a__OR__input_b);\nexport const $input_b = /* @__PURE__ */_._const(\"input_b\", $input_a__OR__input_b);\nconst $if3 = /* @__PURE__ */_._if(\"#div/2\", \"A\", /* over(1) */\"b\", 0, \"B\", /* over(1) */\"b\", 0, \"C\", /* over(1) */\"b\");\nconst $input_x__OR__input_y = /* @__PURE__ */_._or(10, $scope => $if3($scope, $scope.input_x ? 0 : $scope.input_y ? 1 : 2));\nexport const $input_x = /* @__PURE__ */_._const(\"input_x\", $input_x__OR__input_y);\nexport const $input_y = /* @__PURE__ */_._const(\"input_y\", $input_x__OR__input_y);\nexport const $input = ($scope, input) => {\n  $input_a($scope, input.a);\n  $input_b($scope, input.b);\n  $input_x($scope, input.x);\n  $input_y($scope, input.y);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-tag/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._if(() => {\n    if (input.a + input.b) {\n      const $scope1_id = _._scope_id();\n      _._html(\"Hello\");\n      _._serialize_if($scope0_reason, /* input.a, input.b */0) && _._scope($scope1_id, {}, \"__tests__/template.marko\", \"1:2\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.a, input.b */0), _._serialize_guard($scope0_reason, /* input.a, input.b */0), _._serialize_guard($scope0_reason, /* input.a, input.b */0));\n  _._if(() => {\n    if (input.a, input.b) {\n      const $scope2_id = _._scope_id();\n      _._html(\"World\");\n      _._serialize_if($scope0_reason, /* input.a, input.b */0) && _._scope($scope2_id, {}, \"__tests__/template.marko\", \"5:2\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/1\", _._serialize_guard($scope0_reason, /* input.a, input.b */0), _._serialize_guard($scope0_reason, /* input.a, input.b */0), _._serialize_guard($scope0_reason, /* input.a, input.b */0));\n  _._html(\"<div>\");\n  _._if(() => {\n    if (input.x) {\n      const $scope3_id = _._scope_id();\n      _._html(\"A\");\n      _._serialize_if($scope0_reason, /* input.x, input.y */1) && _._scope($scope3_id, {}, \"__tests__/template.marko\", \"10:4\");\n      return 0;\n    } else if (input.y) {\n      const $scope4_id = _._scope_id();\n      _._html(\"B\");\n      _._serialize_if($scope0_reason, /* input.x, input.y */1) && _._scope($scope4_id, {}, \"__tests__/template.marko\", \"13:4\");\n      return 1;\n    } else {\n      const $scope5_id = _._scope_id();\n      _._html(\"C\");\n      _._serialize_if($scope0_reason, /* input.x, input.y */1) && _._scope($scope5_id, {}, \"__tests__/template.marko\", \"16:4\");\n      return 2;\n    }\n  }, $scope0_id, \"#div/2\", _._serialize_guard($scope0_reason, /* input.x, input.y */1), _._serialize_guard($scope0_reason, /* input.x, input.y */1), _._serialize_guard($scope0_reason, /* input.a, input.b */0), \"</div>\");\n  _._serialize_if($scope0_reason, /* input.a, input.b, input.x, input.y */2) && _._scope($scope0_id, {\n    input_a: _._serialize_if($scope0_reason, /* input.b */4) && input.a,\n    input_b: _._serialize_if($scope0_reason, /* input.a */3) && input.b,\n    input_x: _._serialize_if($scope0_reason, /* input.y */6) && input.x,\n    input_y: _._serialize_if($scope0_reason, /* input.x */5) && input.y\n  }, \"__tests__/template.marko\", 0, {\n    input_a: [\"input.a\"],\n    input_b: [\"input.b\"],\n    input_x: [\"input.x\"],\n    input_y: [\"input.y\"]\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-tag/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"a\":1,\"b\":2,\"x\":false,\"y\":true}`\n\n```html\nHelloWorld\n<div>\n  B\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-tag/__snapshots__/resume.expected.md",
    "content": "# Render `{\"a\":1,\"b\":2,\"x\":false,\"y\":true}`\n\n```html\n<html>\n  <head />\n  <body>\n    HelloWorld\n    <div>\n      B\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-tag/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\nHelloWorld\n<div>\n  B\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-tag/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  HelloWorld<div>B</div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    HelloWorld\n    <div>\n      B\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text\nINSERT html/body/div\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-tag/template.marko",
    "content": "<if=input.a + input.b>\n  Hello\n</if>\n\n<if=(input.a, input.b)>\n  World\n</if>\n\n<div>\n  <if=input.x>\n    A\n  </if>\n  <else-if=input.y>\n    B\n  </else-if>\n  <else>\n    C\n  </else>\n</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/if-tag/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [{ a: 1, b: 2, x: false, y: true }],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div />\n<div />\n<div />\nb\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<div />\n<div />\n<div />\nb\n```\n\n# Mutations\n```\nINSERT #comment, div0, div1, div2, #text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag/__snapshots__/dom.expected/tags/baz.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* over(1) */\"b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/tags/baz.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<!>${_Baz_template}${_Baz_template}${_Baz_template}<!>`;\nexport const $walks = /* over(1), <Baz>, <Baz>, <baz>, replace, over(1) */`b/${_Baz_walks}&/${_Baz_walks}&/${_Baz_walks}&%b`;\nimport \"./foo\";\nimport { b as c } from \"./bar\";\nimport Baz from \"./tags/baz.marko\";\nimport { $setup as _Baz, $template as _Baz_template, $walks as _Baz_walks } from \"./tags/baz.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport function $setup($scope) {\n  _Baz($scope[\"#childScope/0\"]);\n  _Baz($scope[\"#childScope/1\"]);\n  _Baz($scope[\"#childScope/2\"]);\n  _._text($scope[\"#text/3\"], c);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag/__snapshots__/html.expected/tags/baz.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/baz.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div></div>\");\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag/__snapshots__/html.expected/template.js",
    "content": "import \"./foo\";\nimport { b as c } from \"./bar\";\nimport Baz from \"./tags/baz.marko\";\nimport _baz from \"./tags/baz.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  Baz({});\n  Baz({});\n  _baz({});\n  _._html(_._escape(c));\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div />\n<div />\n<div />\nb\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <div />\n    <div />\n    b\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n<div />\n<div />\nb\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div></div><div></div><div></div>b\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <div />\n    <div />\n    b\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/div1\nINSERT html/body/div2\nINSERT html/body/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag/bar.ts",
    "content": "export const b = \"b\";\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag/foo.ts",
    "content": "export default 1;\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag/tags/baz.marko",
    "content": "<div/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag/template.marko",
    "content": "import \"./foo\";\nimport { b as c } from \"./bar\";\nimport Baz from \"./tags/baz.marko\";\n<${Baz}/>\n<Baz/>\n<baz />\n-- ${c}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport {};\n\nexport const config: TestConfig = {};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-conflict/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-conflict/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\na b\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-conflict/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\na b\n```\n\n# Mutations\n```\nINSERT #text0, #text1, #text2\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-conflict/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-conflict/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!> <!>\";\nexport const $walks = /* replace, over(2), replace, over(1) */\"%c%b\";\nimport { asset as asset1 } from \"./asset1\";\nimport { asset as asset2 } from \"./asset2\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport function $setup($scope) {\n  _._text($scope[\"#text/0\"], asset1);\n  _._text($scope[\"#text/1\"], asset2);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-conflict/__snapshots__/html.expected/template.js",
    "content": "import { asset as asset1 } from \"./asset1\";\nimport { asset as asset2 } from \"./asset2\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`${_._escape(asset1)} ${_._escape(asset2)}`);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-conflict/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\na b\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-conflict/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    a b\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-conflict/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\na b\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-conflict/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  a b\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    a b\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-conflict/asset1.ts",
    "content": "export const asset = \"a\";\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-conflict/asset2.ts",
    "content": "export const asset = \"b\";\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-conflict/template.marko",
    "content": "import { asset as asset1 } from \"./asset1\";\nimport { asset as asset2 } from \"./asset2\";\n\n-- ${asset1} ${asset2}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-shorthand/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-shorthand/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div />\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-shorthand/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<div />\n<div />\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, div0, div1, #comment1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-shorthand/__snapshots__/dom.expected/tags/baz.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* over(1) */\"b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/tags/baz.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-shorthand/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-shorthand/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<!>${_BazComp_template}${_BazComp_template}<!>`;\nexport const $walks = /* over(1), <BazComp>, <BazComp>, over(1) */`b/${_BazComp_walks}&/${_BazComp_walks}&b`;\nimport BazComp from \"./tags/baz.marko\";\nimport { $setup as _BazComp, $template as _BazComp_template, $walks as _BazComp_walks } from \"./tags/baz.marko\";\nexport function $setup($scope) {\n  _BazComp($scope[\"#childScope/0\"]);\n  _BazComp($scope[\"#childScope/1\"]);\n}\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-shorthand/__snapshots__/html.expected/tags/baz.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/baz.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div></div>\");\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-shorthand/__snapshots__/html.expected/template.js",
    "content": "import BazComp from \"./tags/baz.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  BazComp({});\n  BazComp({});\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-shorthand/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div />\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-shorthand/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <div />\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-shorthand/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-shorthand/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div></div><div></div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <div />\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/div1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-shorthand/bar.ts",
    "content": "export const b = \"b\";\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-shorthand/foo.ts",
    "content": "export default 1;\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-shorthand/tags/baz.marko",
    "content": "<div/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-shorthand/template.marko",
    "content": "import BazComp from \"<baz>\";\n<${BazComp}/>\n<BazComp/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-shorthand/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport {};\n\nexport const config: TestConfig = {};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-ternary/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-ternary/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  baz\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-ternary/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<div>\n  baz\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, div, #comment1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-ternary/__snapshots__/dom.expected/tags/baz.js",
    "content": "export const $template = \"<div>baz</div>\";\nexport const $walks = /* over(1) */\"b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/tags/baz.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-ternary/__snapshots__/dom.expected/tags/foo.js",
    "content": "export const $template = \"<div>foo</div>\";\nexport const $walks = /* over(1) */\"b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/tags/foo.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-ternary/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-ternary/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nimport baz from \"./tags/baz.marko\";\nimport foo from \"./tags/foo.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\");\nconst $x = /* @__PURE__ */_._let(\"x/1\", $scope => $dynamicTag($scope, $scope.x === 1 ? baz : foo));\nexport function $setup($scope) {\n  $x($scope, 1);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-ternary/__snapshots__/html.expected/tags/baz.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/baz.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div>baz</div>\");\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-ternary/__snapshots__/html.expected/tags/foo.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/foo.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div>foo</div>\");\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-ternary/__snapshots__/html.expected/template.js",
    "content": "import baz from \"./tags/baz.marko\";\nimport foo from \"./tags/foo.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let x = 1;\n  _._dynamic_tag($scope0_id, \"#text/0\", x === 1 ? baz : foo, {}, 0, 0, 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-ternary/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  baz\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-ternary/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      baz\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-ternary/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  baz\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-ternary/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>baz</div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      baz\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-ternary/tags/baz.marko",
    "content": "<div>baz</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-ternary/tags/foo.marko",
    "content": "<div>foo</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-ternary/template.marko",
    "content": "import baz from \"./tags/baz.marko\"\nimport foo from \"./tags/foo.marko\"\n<let/x=1 />\n<${x === 1 ? baz : foo} />\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-tag-ternary/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport {};\n\nexport const config: TestConfig = {};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-types/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-types/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  truetrue\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-types/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  truetrue\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-types/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-types/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div><!><!></div>\";\nexport const $walks = /* next(1), replace, over(1), replace, out(1) */\"D%b%l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $foo = ($scope, foo) => _._text($scope[\"#text/0\"], String(foo));\nconst $bar = ($scope, bar) => _._text($scope[\"#text/1\"], String(bar));\nexport function $setup($scope) {\n  $foo($scope, true);\n  $bar($scope, true);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-types/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const foo = true;\n  const bar = true;\n  _._html(`<div>${_._escape(String(foo))}${_._escape(String(bar))}</div>`);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-types/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  truetrue\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-types/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      truetrue\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-types/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  truetrue\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-types/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>truetrue</div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      truetrue\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-types/template.marko",
    "content": "server import type { Test } from \"./types\";\nserver import { type Test2 } from \"./types-specifier\";\n<const/foo:Test = true>\n<const/bar:Test2 = true>\n<div>${String(foo)}${String(bar)}</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-types/types-specifier.ts",
    "content": "export type Test2 = true;\nthrow new Error(\"Should not load\");\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/import-types/types.ts",
    "content": "export type Test = true;\nthrow new Error(\"Should not load\");\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-control-flow-only-child-event/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$for_content__selected\": \"r\",\n      \"$$selected__script\": \"a\",\n      \"$$selected\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-control-flow-only-child-event/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"target\"\n>\n  <span\n    data-selected=\"\"\n  >\n    0\n  </span>\n  <span>\n    1\n  </span>\n  <span>\n    2\n  </span>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#target\").click();\n```\n```html\n<div\n  id=\"target\"\n>\n  <span>\n    0\n  </span>\n  <span\n    data-selected=\"\"\n  >\n    1\n  </span>\n  <span>\n    2\n  </span>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#target\").click();\n```\n```html\n<div\n  id=\"target\"\n>\n  <span>\n    0\n  </span>\n  <span>\n    1\n  </span>\n  <span\n    data-selected=\"\"\n  >\n    2\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-control-flow-only-child-event/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"target\"\n>\n  <span\n    data-selected=\"\"\n  >\n    0\n  </span>\n  <span>\n    1\n  </span>\n  <span>\n    2\n  </span>\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render\n```js\ncontainer.querySelector(\"#target\").click();\n```\n```html\n<div\n  id=\"target\"\n>\n  <span>\n    0\n  </span>\n  <span\n    data-selected=\"\"\n  >\n    1\n  </span>\n  <span>\n    2\n  </span>\n</div>\n```\n\n# Mutations\n```\nUPDATE div/span0[data-selected] \"\" => null\nUPDATE div/span1[data-selected] null => \"\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#target\").click();\n```\n```html\n<div\n  id=\"target\"\n>\n  <span>\n    0\n  </span>\n  <span>\n    1\n  </span>\n  <span\n    data-selected=\"\"\n  >\n    2\n  </span>\n</div>\n```\n\n# Mutations\n```\nUPDATE div/span1[data-selected] \"\" => null\nUPDATE div/span2[data-selected] null => \"\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-control-flow-only-child-event/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 164 (min) 126 (brotli)\nconst $for_content__selected = _._for_closure(0, ($scope) =>\n    _._attr($scope.a, \"data-selected\", $scope._.b === $scope.M),\n  ),\n  $selected__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $selected($scope, $scope.b + 1);\n    }),\n  ),\n  $selected = _._let(1, ($scope) => {\n    ($for_content__selected($scope), $selected__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-control-flow-only-child-event/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div id=target></div>\";\nexport const $walks = /* get, over(1) */\" b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for_content__selected = /* @__PURE__ */_._for_closure(\"#div/0\", $scope => _._attr($scope[\"#span/0\"], \"data-selected\", $scope._.selected === $scope[\"#LoopKey\"]));\nconst $for_content__setup = $scope => {\n  $for_content__selected._($scope);\n  _._text($scope[\"#text/1\"], $scope[\"#LoopKey\"]);\n};\nconst $selected__script = _._script(\"__tests__/template.marko_0_selected\", $scope => _._on($scope[\"#div/0\"], \"click\", function () {\n  $selected($scope, $scope.selected + 1);\n}));\nconst $selected = /* @__PURE__ */_._let(\"selected/1\", $scope => {\n  $for_content__selected($scope);\n  $selected__script($scope);\n});\nconst $for = /* @__PURE__ */_._for_until(\"#div/0\", \"<span> </span>\", /* get, next(1), get, out(1) */\" D l\", $for_content__setup);\nexport function $setup($scope) {\n  $selected($scope, 0);\n  $for($scope, [3, 0, 1]);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-control-flow-only-child-event/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let selected = 0;\n  _._html(\"<div id=target>\");\n  _._for_until(3, 0, 1, i => {\n    const $scope1_id = _._scope_id();\n    _._html(`<span${_._attr(\"data-selected\", selected === i)}>${_._escape(i)}</span>${_._el_resume($scope1_id, \"#span/0\")}`);\n    _._scope($scope1_id, {\n      \"#LoopKey\": i,\n      _: _._scope_with_id($scope0_id)\n    }, \"__tests__/template.marko\", \"3:3\", {\n      \"#LoopKey\": \"3:7\"\n    });\n  }, 0, $scope0_id, \"#div/0\", /* selected */1, 1, 0, \"</div>\", 1);\n  _._script($scope0_id, \"__tests__/template.marko_0_selected\");\n  _._scope($scope0_id, {\n    selected\n  }, \"__tests__/template.marko\", 0, {\n    selected: \"1:5\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-control-flow-only-child-event/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"target\"\n>\n  <span\n    data-selected=\"\"\n  >\n    0\n  </span>\n  <span>\n    1\n  </span>\n  <span>\n    2\n  </span>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#target\").click();\n```\n```html\n<div\n  id=\"target\"\n>\n  <span>\n    0\n  </span>\n  <span\n    data-selected=\"\"\n  >\n    1\n  </span>\n  <span>\n    2\n  </span>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#target\").click();\n```\n```html\n<div\n  id=\"target\"\n>\n  <span>\n    0\n  </span>\n  <span>\n    1\n  </span>\n  <span\n    data-selected=\"\"\n  >\n    2\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-control-flow-only-child-event/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"target\"\n    >\n      <span\n        data-selected=\"\"\n      >\n        0\n      </span>\n      <!--M_*2 #span/0-->\n      <span>\n        1\n      </span>\n      <!--M_*3 #span/0-->\n      <span>\n        2\n      </span>\n      <!--M_*4 #span/0-->\n    </div>\n    <!--M_*1 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.a = {\n          \"BranchScopes:#div/0\": [_.b = {\n            \"#LoopKey\": 0\n          }, _.c = {\n            \"#LoopKey\": 1\n          }, _.d = {\n            \"#LoopKey\": 2\n          }],\n          selected: 0\n        }, _.b, _.c, _.d], _.b._ = _.c._ = _.d._ = _.a, _.e),\n        \"__tests__/template.marko_0_selected 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#target\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"target\"\n    >\n      <span>\n        0\n      </span>\n      <!--M_*2 #span/0-->\n      <span\n        data-selected=\"\"\n      >\n        1\n      </span>\n      <!--M_*3 #span/0-->\n      <span>\n        2\n      </span>\n      <!--M_*4 #span/0-->\n    </div>\n    <!--M_*1 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.a = {\n          \"BranchScopes:#div/0\": [_.b = {\n            \"#LoopKey\": 0\n          }, _.c = {\n            \"#LoopKey\": 1\n          }, _.d = {\n            \"#LoopKey\": 2\n          }],\n          selected: 0\n        }, _.b, _.c, _.d], _.b._ = _.c._ = _.d._ = _.a, _.e),\n        \"__tests__/template.marko_0_selected 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/span0[data-selected] \"\" => null\nUPDATE html/body/div/span1[data-selected] null => \"\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#target\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"target\"\n    >\n      <span>\n        0\n      </span>\n      <!--M_*2 #span/0-->\n      <span>\n        1\n      </span>\n      <!--M_*3 #span/0-->\n      <span\n        data-selected=\"\"\n      >\n        2\n      </span>\n      <!--M_*4 #span/0-->\n    </div>\n    <!--M_*1 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.a = {\n          \"BranchScopes:#div/0\": [_.b = {\n            \"#LoopKey\": 0\n          }, _.c = {\n            \"#LoopKey\": 1\n          }, _.d = {\n            \"#LoopKey\": 2\n          }],\n          selected: 0\n        }, _.b, _.c, _.d], _.b._ = _.c._ = _.d._ = _.a, _.e),\n        \"__tests__/template.marko_0_selected 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/span1[data-selected] \"\" => null\nUPDATE html/body/div/span2[data-selected] null => \"\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-control-flow-only-child-event/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div\n  id=\"target\"\n>\n  <span\n    data-selected=\"\"\n  >\n    0\n  </span>\n  <span>\n    1\n  </span>\n  <span>\n    2\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-control-flow-only-child-event/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div id=target><span data-selected>0</span><!--M_*2 #span/0--><span>1</span><!--M_*3 #span/0--><span>2</span><!--M_*4 #span/0--></div><!--M_*1 #div/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.e=[0,_.a={\"BranchScopes:#div/0\":[_.b={\"#LoopKey\":0},_.c={\"#LoopKey\":1},_.d={\"#LoopKey\":2}],selected:0},_.b,_.c,_.d],_.b._=_.c._=_.d._=_.a,_.e),\"__tests__/template.marko_0_selected 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"target\"\n    >\n      <span\n        data-selected=\"\"\n      >\n        0\n      </span>\n      <!--M_*2 #span/0-->\n      <span>\n        1\n      </span>\n      <!--M_*3 #span/0-->\n      <span>\n        2\n      </span>\n      <!--M_*4 #span/0-->\n    </div>\n    <!--M_*1 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.a = {\n          \"BranchScopes:#div/0\": [_.b = {\n            \"#LoopKey\": 0\n          }, _.c = {\n            \"#LoopKey\": 1\n          }, _.d = {\n            \"#LoopKey\": 2\n          }],\n          selected: 0\n        }, _.b, _.c, _.d], _.b._ = _.c._ = _.d._ = _.a, _.e),\n        \"__tests__/template.marko_0_selected 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/span0\nINSERT html/body/div/span0/#text\nINSERT html/body/div/#comment0\nINSERT html/body/div/span1\nINSERT html/body/div/span1/#text\nINSERT html/body/div/#comment1\nINSERT html/body/div/span2\nINSERT html/body/div/span2/#text\nINSERT html/body/div/#comment2\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-control-flow-only-child-event/template.marko",
    "content": "let/selected=0\ndiv#target onClick() { selected++ }\n  for|i| until=3\n    span data-selected=selected === i\n      -- ${i}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-control-flow-only-child-event/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector<HTMLDivElement>(\"#target\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-control-flow-only-child-select-event/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$for_content__selected\": \"r\",\n      \"$$selected\": \"a\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-control-flow-only-child-select-event/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<select>\n  <option\n    selected=\"\"\n  >\n    0\n  </option>\n  <option>\n    1\n  </option>\n  <option>\n    2\n  </option>\n</select>\n```\n\n\n# Render\n```js\nconst select = container.querySelector(\"select\");\nselect.value = select.options[2].value;\nselect.dispatchEvent(new select.ownerDocument.defaultView.Event(\"change\", {\n  bubbles: true\n}));\n```\n```html\n<select>\n  <option>\n    0\n  </option>\n  <option>\n    1\n  </option>\n  <option\n    selected=\"\"\n  >\n    2\n  </option>\n</select>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-control-flow-only-child-select-event/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<select>\n  <option\n    selected=\"\"\n  >\n    0\n  </option>\n  <option>\n    1\n  </option>\n  <option>\n    2\n  </option>\n</select>\n```\n\n# Mutations\n```\nINSERT select\n```\n\n# Render\n```js\nconst select = container.querySelector(\"select\");\nselect.value = select.options[2].value;\nselect.dispatchEvent(new select.ownerDocument.defaultView.Event(\"change\", {\n  bubbles: true\n}));\n```\n```html\n<select>\n  <option>\n    0\n  </option>\n  <option>\n    1\n  </option>\n  <option\n    selected=\"\"\n  >\n    2\n  </option>\n</select>\n```\n\n# Mutations\n```\nUPDATE select/option0[selected] \"\" => null\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-control-flow-only-child-select-event/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 155 (min) 120 (brotli)\nconst $for_content__selected = _._for_closure(0, ($scope) =>\n    _._attr($scope.a, \"selected\", $scope._.b === $scope.M),\n  ),\n  $selected = _._let(1, $for_content__selected);\n(_._script(\"a0\", ($scope) =>\n  _._on($scope.a, \"change\", function (e) {\n    $selected($scope, e.target.value);\n  }),\n),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-control-flow-only-child-select-event/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<select></select>\";\nexport const $walks = /* get, over(1) */\" b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for_content__selected = /* @__PURE__ */_._for_closure(\"#select/0\", $scope => _._attr($scope[\"#option/0\"], \"selected\", $scope._.selected === $scope[\"#LoopKey\"]));\nconst $for_content__setup = $scope => {\n  $for_content__selected._($scope);\n  _._text($scope[\"#text/1\"], $scope[\"#LoopKey\"]);\n};\nconst $selected = /* @__PURE__ */_._let(\"selected/1\", $for_content__selected);\nconst $for = /* @__PURE__ */_._for_until(\"#select/0\", \"<option> </option>\", /* get, next(1), get, out(1) */\" D l\", $for_content__setup);\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => _._on($scope[\"#select/0\"], \"change\", function (e) {\n  $selected($scope, e.target.value);\n}));\nexport function $setup($scope) {\n  $selected($scope, 0);\n  $for($scope, [3, 0, 1]);\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-control-flow-only-child-select-event/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let selected = 0;\n  _._html(\"<select>\");\n  _._for_until(3, 0, 1, i => {\n    const $scope1_id = _._scope_id();\n    _._html(`<option${_._attr(\"selected\", selected === i)}>${_._escape(i)}</option>${_._el_resume($scope1_id, \"#option/0\")}`);\n    _._scope($scope1_id, {\n      \"#LoopKey\": i,\n      _: _._scope_with_id($scope0_id)\n    }, \"__tests__/template.marko\", \"3:3\", {\n      \"#LoopKey\": \"3:7\"\n    });\n  }, 0, $scope0_id, \"#select/0\", /* selected */1, 1, 0, \"</select>\", 1);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-control-flow-only-child-select-event/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<select>\n  <option\n    selected=\"\"\n  >\n    0\n  </option>\n  <option>\n    1\n  </option>\n  <option>\n    2\n  </option>\n</select>\n```\n\n\n# Render\n```js\nconst select = container.querySelector(\"select\");\nselect.value = select.options[2].value;\nselect.dispatchEvent(new select.ownerDocument.defaultView.Event(\"change\", {\n  bubbles: true\n}));\n```\n```html\n<select>\n  <option>\n    0\n  </option>\n  <option>\n    1\n  </option>\n  <option\n    selected=\"\"\n  >\n    2\n  </option>\n</select>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-control-flow-only-child-select-event/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <select>\n      <option\n        selected=\"\"\n      >\n        0\n      </option>\n      <!--M_*2 #option/0-->\n      <option>\n        1\n      </option>\n      <!--M_*3 #option/0-->\n      <option>\n        2\n      </option>\n      <!--M_*4 #option/0-->\n    </select>\n    <!--M_*1 #select/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.a = {\n          \"BranchScopes:#select/0\": [_.b = {\n            \"#LoopKey\": 0\n          }, _.c = {\n            \"#LoopKey\": 1\n          }, _.d = {\n            \"#LoopKey\": 2\n          }]\n        }, _.b, _.c, _.d], _.b._ = _.c._ = _.d._ = _.a, _.e),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\nconst select = container.querySelector(\"select\");\nselect.value = select.options[2].value;\nselect.dispatchEvent(new select.ownerDocument.defaultView.Event(\"change\", {\n  bubbles: true\n}));\n```\n```html\n<html>\n  <head />\n  <body>\n    <select>\n      <option>\n        0\n      </option>\n      <!--M_*2 #option/0-->\n      <option>\n        1\n      </option>\n      <!--M_*3 #option/0-->\n      <option\n        selected=\"\"\n      >\n        2\n      </option>\n      <!--M_*4 #option/0-->\n    </select>\n    <!--M_*1 #select/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.a = {\n          \"BranchScopes:#select/0\": [_.b = {\n            \"#LoopKey\": 0\n          }, _.c = {\n            \"#LoopKey\": 1\n          }, _.d = {\n            \"#LoopKey\": 2\n          }]\n        }, _.b, _.c, _.d], _.b._ = _.c._ = _.d._ = _.a, _.e),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/select/option0[selected] \"\" => null\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-control-flow-only-child-select-event/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<select>\n  <option\n    selected=\"\"\n  >\n    0\n  </option>\n  <option>\n    1\n  </option>\n  <option>\n    2\n  </option>\n</select>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-control-flow-only-child-select-event/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <select><option selected>0</option><!--M_*2 #option/0--><option>1</option><!--M_*3 #option/0--><option>2</option><!--M_*4 #option/0--></select><!--M_*1 #select/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.e=[0,_.a={\"BranchScopes:#select/0\":[_.b={\"#LoopKey\":0},_.c={\"#LoopKey\":1},_.d={\"#LoopKey\":2}]},_.b,_.c,_.d],_.b._=_.c._=_.d._=_.a,_.e),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <select>\n      <option\n        selected=\"\"\n      >\n        0\n      </option>\n      <!--M_*2 #option/0-->\n      <option>\n        1\n      </option>\n      <!--M_*3 #option/0-->\n      <option>\n        2\n      </option>\n      <!--M_*4 #option/0-->\n    </select>\n    <!--M_*1 #select/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.a = {\n          \"BranchScopes:#select/0\": [_.b = {\n            \"#LoopKey\": 0\n          }, _.c = {\n            \"#LoopKey\": 1\n          }, _.d = {\n            \"#LoopKey\": 2\n          }]\n        }, _.b, _.c, _.d], _.b._ = _.c._ = _.d._ = _.a, _.e),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/select\nINSERT html/body/select/option0\nINSERT html/body/select/option0/#text\nINSERT html/body/select/#comment0\nINSERT html/body/select/option1\nINSERT html/body/select/option1/#text\nINSERT html/body/select/#comment1\nINSERT html/body/select/option2\nINSERT html/body/select/option2/#text\nINSERT html/body/select/#comment2\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-control-flow-only-child-select-event/template.marko",
    "content": "let/selected=0\nselect onChange(e) { selected = e.target.value }\n  for|i| until=3\n    option selected=selected === i\n      -- ${i}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-control-flow-only-child-select-event/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction selectLast(container: Element) {\n  const select = container.querySelector<HTMLSelectElement>(\"select\")!;\n  select.value = select.options[2].value;\n  select.dispatchEvent(\n    new select.ownerDocument.defaultView!.Event(\"change\", { bubbles: true }),\n  );\n}\n\nexport const config: TestConfig = {\n  steps: [{}, selectLast],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-if-closure-update-active/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"o\",\n      \"$init\": \"t\",\n      \"$$if_content__value\": \"m\",\n      \"$$value\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-if-closure-update-active/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n0\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n1\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-if-closure-update-active/__snapshots__/csr.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<!---->\n0\n<button>\n  Update\n</button>\n```\n\n# Mutations\n```\nINSERT #comment, #text, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n1\n<button>\n  Update\n</button>\n```\n\n# Mutations\n```\nUPDATE #text \"0\" => \"1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-if-closure-update-active/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 124 (min) 102 (brotli)\nconst $if_content__value = _._if_closure(0, 0, ($scope) =>\n    _._text($scope.a, $scope._.f),\n  ),\n  $value = _._let(5, $if_content__value);\n(_._script(\"a0\", ($scope) =>\n  _._on($scope.b, \"click\", function () {\n    $value($scope, 1);\n  }),\n),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-if-closure-update-active/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><button>Update</button>\";\nexport const $walks = /* over(1), replace, over(1), get, over(1) */\"b%b b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content__value = /* @__PURE__ */_._if_closure(\"#text/0\", 0, $scope => _._text($scope[\"#text/0\"], $scope._.value));\nconst $if_content__setup = $if_content__value;\nconst $value = /* @__PURE__ */_._let(\"value/5\", $if_content__value);\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => _._on($scope[\"#button/1\"], \"click\", function () {\n  $value($scope, 1);\n}));\nexport function $setup($scope) {\n  $value($scope, 0);\n  $setup__script($scope);\n}\nconst $if = /* @__PURE__ */_._if(\"#text/0\", \" \", /* get, over(1) */\" b\", $if_content__setup);\nexport const $input_show = ($scope, input_show) => $if($scope, input_show ? 0 : 1);\nexport const $input = ($scope, input) => $input_show($scope, input.show);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-if-closure-update-active/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let value = 0;\n  _._if(() => {\n    if (input.show) {\n      const $scope1_id = _._scope_id();\n      _._html(`${_._escape(value)}${_._el_resume($scope1_id, \"#text/0\")}`);\n      _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"2:2\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/0\", 1, _._serialize_guard($scope0_reason, /* input.show */0), _._serialize_guard($scope0_reason, /* input.show */0), 0, 1);\n  _._html(`<button>Update</button>${_._el_resume($scope0_id, \"#button/1\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {\n    value: _._serialize_if($scope0_reason, /* input.show */0) && value\n  }, \"__tests__/template.marko\", 0, {\n    value: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-if-closure-update-active/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n0\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n1\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-if-closure-update-active/__snapshots__/resume.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<html>\n  <head />\n  <body>\n    0\n    <!--M_*2 #text/0-->\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"BranchScopes:#text/0\": _.b = {}\n        }, _.b], _.b._ = _.a, _.c),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    1\n    <!--M_*2 #text/0-->\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"BranchScopes:#text/0\": _.b = {}\n        }, _.b], _.b._ = _.a, _.c),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/#text \"0\" => \"1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-if-closure-update-active/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n0\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-if-closure-update-active/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  0<!--M_*2 #text/0--><button>Update</button><!--M_*1 #button/1--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.a={\"BranchScopes:#text/0\":_.b={}},_.b],_.b._=_.a,_.c),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    0\n    <!--M_*2 #text/0-->\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"BranchScopes:#text/0\": _.b = {}\n        }, _.b], _.b._ = _.a, _.c),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text\nINSERT html/body/#comment0\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-if-closure-update-active/template.marko",
    "content": "<let/value=0>\n<if=input.show>\n  ${value}\n</if>\n\n<button onClick() {\n  value = 1\n}>\n  Update\n</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-if-closure-update-active/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{ show: true }, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-if-closure-update-inactive/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"o\",\n      \"$init\": \"t\",\n      \"$$if_content__value\": \"m\",\n      \"$$value\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-if-closure-update-inactive/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"show\":false}`\n\n```html\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-if-closure-update-inactive/__snapshots__/csr.expected.md",
    "content": "# Render `{\"show\":false}`\n\n```html\n<!---->\n<button>\n  Update\n</button>\n```\n\n# Mutations\n```\nINSERT #comment, #text, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-if-closure-update-inactive/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 124 (min) 102 (brotli)\nconst $if_content__value = _._if_closure(0, 0, ($scope) =>\n    _._text($scope.a, $scope._.f),\n  ),\n  $value = _._let(5, $if_content__value);\n(_._script(\"a0\", ($scope) =>\n  _._on($scope.b, \"click\", function () {\n    $value($scope, 1);\n  }),\n),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-if-closure-update-inactive/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><button>Update</button>\";\nexport const $walks = /* over(1), replace, over(1), get, over(1) */\"b%b b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content__value = /* @__PURE__ */_._if_closure(\"#text/0\", 0, $scope => _._text($scope[\"#text/0\"], $scope._.value));\nconst $if_content__setup = $if_content__value;\nconst $value = /* @__PURE__ */_._let(\"value/5\", $if_content__value);\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => _._on($scope[\"#button/1\"], \"click\", function () {\n  $value($scope, 1);\n}));\nexport function $setup($scope) {\n  $value($scope, 0);\n  $setup__script($scope);\n}\nconst $if = /* @__PURE__ */_._if(\"#text/0\", \" \", /* get, over(1) */\" b\", $if_content__setup);\nexport const $input_show = ($scope, input_show) => $if($scope, input_show ? 0 : 1);\nexport const $input = ($scope, input) => $input_show($scope, input.show);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-if-closure-update-inactive/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let value = 0;\n  _._if(() => {\n    if (input.show) {\n      const $scope1_id = _._scope_id();\n      _._html(`${_._escape(value)}${_._el_resume($scope1_id, \"#text/0\")}`);\n      _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"2:2\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/0\", 1, _._serialize_guard($scope0_reason, /* input.show */0), _._serialize_guard($scope0_reason, /* input.show */0), 0, 1);\n  _._html(`<button>Update</button>${_._el_resume($scope0_id, \"#button/1\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {\n    value: _._serialize_if($scope0_reason, /* input.show */0) && value\n  }, \"__tests__/template.marko\", 0, {\n    value: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-if-closure-update-inactive/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"show\":false}`\n\n```html\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-if-closure-update-inactive/__snapshots__/resume.expected.md",
    "content": "# Render `{\"show\":false}`\n\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {}]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {}]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-if-closure-update-inactive/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-if-closure-update-inactive/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>Update</button><!--M_*1 #button/1--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{}]),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {}]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-if-closure-update-inactive/template.marko",
    "content": "<let/value=0>\n<if=input.show>\n  ${value}\n</if>\n\n<button onClick() {\n  value = 1\n}>\n  Update\n</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-if-closure-update-inactive/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{ show: false }, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-params-no-serialize/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-params-no-serialize/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\nHi\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-params-no-serialize/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<!---->\nHi\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, #text, #comment2, #comment3\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-params-no-serialize/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\", 0, 0, 1);\nconst $input_content__OR__input_value = /* @__PURE__ */_._or(5, $scope => $dynamicTag($scope, $scope.input_content, () => [$scope.input_value]));\nexport const $input_content = /* @__PURE__ */_._const(\"input_content\", $input_content__OR__input_value);\nexport const $input_value = /* @__PURE__ */_._const(\"input_value\", $input_content__OR__input_value);\nexport const $input = ($scope, input) => {\n  $input_content($scope, input.content);\n  $input_value($scope, input.value);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-params-no-serialize/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 74 (min) 78 (brotli)\n_._content_resume(\"b0\", \" \", \" b\", 0, ($scope, $params2) =>\n  (($scope, x) => _._text($scope.a, x))($scope, $params2[0]),\n);\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-params-no-serialize/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<!>${_child_template}<!>`;\nexport const $walks = /* over(1), <child>, over(1) */`b/${_child_walks}&b`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _child, $input_content as _child_input_content, $input_value as _child_input_value, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nconst $child_content__x = ($scope, x) => _._text($scope[\"#text/0\"], x);\nconst $child_content__$params = ($scope, $params2) => $child_content__x($scope, $params2[0]);\nconst $child_content = _._content_resume(\"__tests__/template.marko_1_content\", \" \", /* get, over(1) */\" b\", 0, $child_content__$params);\nexport function $setup($scope) {\n  _child($scope[\"#childScope/0\"]);\n  _child_input_content($scope[\"#childScope/0\"], $child_content($scope));\n  _child_input_value($scope[\"#childScope/0\"], \"Hi\");\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-params-no-serialize/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._dynamic_tag($scope0_id, \"#text/0\", input.content, [input.value], 0, 1, _._serialize_guard($scope0_reason, /* input.content, input.value */0));\n  _._serialize_if($scope0_reason, /* input.content, input.value */0) && _._scope($scope0_id, {\n    input_content: _._serialize_if($scope0_reason, /* input.value */2) && input.content,\n    input_value: _._serialize_if($scope0_reason, /* input.content */1) && input.value\n  }, \"__tests__/tags/child.marko\", 0, {\n    input_content: [\"input.content\"],\n    input_value: [\"input.value\"]\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-params-no-serialize/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _child from \"./tags/child.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _child({\n    value: \"Hi\",\n    content: _._content_resume(\"__tests__/template.marko_1_content\", x => {\n      const $scope1_reason = _._scope_reason();\n      const $scope1_id = _._scope_id();\n      _._html(`${_._escape(x)}${_._el_resume($scope1_id, \"#text/0\", _._serialize_guard($scope1_reason, /* x */0))}`);\n      _._serialize_if($scope1_reason, /* x */0) && _._scope($scope1_id, {}, \"__tests__/template.marko\", \"1:2\");\n    }, $scope0_id)\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-params-no-serialize/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\nHi\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-params-no-serialize/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    Hi\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-params-no-serialize/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\nHi\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-params-no-serialize/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  Hi\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    Hi\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-params-no-serialize/tags/child.marko",
    "content": "<${input.content}(input.value) />"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/inert-params-no-serialize/template.marko",
    "content": "<child|x|=\"Hi\">\n  ${x}\n</child>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-destructure/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-destructure/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"a\":\"a\",\"b\":\"b\"}`\n\n```html\na b\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-destructure/__snapshots__/csr.expected.md",
    "content": "# Render `{\"a\":\"a\",\"b\":\"b\"}`\n\n```html\na b\n```\n\n# Mutations\n```\nINSERT #text0, #text1, #text2\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-destructure/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-destructure/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!> <!>\";\nexport const $walks = /* replace, over(2), replace, over(1) */\"%c%b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $a = ($scope, a) => _._text($scope[\"#text/0\"], a);\nexport const $b = ($scope, b) => _._text($scope[\"#text/1\"], b);\nexport const $input = ($scope, input) => {\n  $a($scope, input.a);\n  $b($scope, input.b);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-destructure/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    a,\n    b\n  } = input;\n  _._html(`${_._sep(_._serialize_guard($scope0_reason, /* input.a */1))}${_._escape(a)}${_._el_resume($scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.a */1))} ${_._sep(_._serialize_guard($scope0_reason, /* input.b */2))}${_._escape(b)}${_._el_resume($scope0_id, \"#text/1\", _._serialize_guard($scope0_reason, /* input.b */2))}`);\n  _._serialize_if($scope0_reason, /* input.a, input.b */0) && _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-destructure/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"a\":\"a\",\"b\":\"b\"}`\n\n```html\na b\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-destructure/__snapshots__/resume.expected.md",
    "content": "# Render `{\"a\":\"a\",\"b\":\"b\"}`\n\n```html\n<html>\n  <head />\n  <body>\n    a b\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-destructure/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\na b\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-destructure/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  a b\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    a b\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-destructure/template.marko",
    "content": "<const/{ a, b }=input/>\n\n-- ${a} ${b}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-destructure/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [{ a: \"a\", b: \"b\" }],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-integer-reference/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-integer-reference/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"value\":[1,2]}`\n\n```html\n1,2 1\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-integer-reference/__snapshots__/csr.expected.md",
    "content": "# Render `{\"value\":[1,2]}`\n\n```html\n1,2 1\n```\n\n# Mutations\n```\nINSERT #text0, #text1, #text2\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-integer-reference/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-integer-reference/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!> <!>\";\nexport const $walks = /* replace, over(2), replace, over(1) */\"%c%b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $input_value = ($scope, input_value) => {\n  _._text($scope[\"#text/0\"], input_value);\n  $input_value_($scope, input_value?.[0]);\n};\nconst $input_value_ = ($scope, input_value_0) => _._text($scope[\"#text/1\"], input_value_0);\nexport const $input = ($scope, input) => $input_value($scope, input.value);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-integer-reference/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`${_._sep(_._serialize_guard($scope0_reason, /* input.value */0))}${_._escape(input.value)}${_._el_resume($scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.value */0))} ${_._sep(_._serialize_guard($scope0_reason, /* input.value[0] */1))}${_._escape(input.value[0])}${_._el_resume($scope0_id, \"#text/1\", _._serialize_guard($scope0_reason, /* input.value[0] */1))}`);\n  _._serialize_if($scope0_reason, /* input.value */0) && _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-integer-reference/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"value\":[1,2]}`\n\n```html\n1,2 1\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-integer-reference/__snapshots__/resume.expected.md",
    "content": "# Render `{\"value\":[1,2]}`\n\n```html\n<html>\n  <head />\n  <body>\n    1,2 1\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-integer-reference/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n1,2 1\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-integer-reference/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  1,2 1\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    1,2 1\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-integer-reference/template.marko",
    "content": "-- ${input.value} ${input.value[0]}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-integer-reference/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [{ value: [1, 2] }],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-missing-property/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"_\",\n      \"$$if_content2__setup\": \"o\",\n      \"$$if_content__if\": \"i\",\n      \"$$if_content__setup\": \"a\",\n      \"$$Child_content__if\": \"m\",\n      \"$$count__script\": \"r\",\n      \"$$count\": \"c\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-missing-property/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n<div>\n  Fallback\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n<div>\n  Fallback\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n<div>\n  Fallback\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-missing-property/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n<!---->\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT button, #comment0, #text, #comment1, #comment2\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n<!---->\n<!---->\n<div>\n  Fallback\n</div>\n<!---->\n<!---->\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text \"0\" => \"1\"\nINSERT #comment1, #text, #comment2\nREMOVE #text after #comment2\nINSERT div\nREMOVE #text after div\nUPDATE div/#text \" \" => \"Fallback\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n<!---->\n<!---->\n<div>\n  Fallback\n</div>\n<!---->\n<!---->\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n<!---->\n<!---->\n<div>\n  Fallback\n</div>\n<!---->\n<!---->\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-missing-property/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 285 (min) 197 (brotli)\nconst $if_content2__setup = _._closure_get(\n    4,\n    ($scope) => _._text($scope.a, $scope._._.e || \"Fallback\"),\n    ($scope) => $scope._._,\n  ),\n  $if_content__if = _._if(0, \"<div> </div>\", \"D l\", $if_content2__setup),\n  $if_content__setup = ($scope) => $if_content__if($scope, 0),\n  $Child_content__if = _._if(0, \"<!><!><!>\", \"b%c\", $if_content__setup),\n  $count__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $count($scope, $scope.d + 1);\n    }),\n  ),\n  $count = _._let(3, ($scope) => {\n    (_._text($scope.b, $scope.d),\n      (($scope, input_count) => {\n        $Child_content__if($scope, input_count ? 0 : 1);\n      })($scope.c, $scope.d),\n      $count__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-missing-property/__snapshots__/dom.expected/template.js",
    "content": "const $Child_content__walks = /* over(1), replace, over(2) */\"b%c\",\n  $Child_content__template = \"<!><!><!>\";\nexport const $template = `<button> </button>${$Child_content__template}<!>`;\nexport const $walks = /* get, next(1), get, out(1), <Child>, over(1) */` D l/${$Child_content__walks}&b`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content2__input_name = /* @__PURE__ */_._closure_get(\"input_name\", $scope => _._text($scope[\"#text/0\"], $scope._._.input_name || \"Fallback\"), $scope => $scope._._);\nconst $if_content2__setup = $if_content2__input_name;\nconst $if_content__if = /* @__PURE__ */_._if(\"#text/0\", \"<div> </div>\", /* next(1), get, out(1) */\"D l\", $if_content2__setup);\nconst $if_content__setup = $scope => $if_content__if($scope, true ? 0 : 1);\nconst $Child_content__if = /* @__PURE__ */_._if(\"#text/0\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", $if_content__setup);\nconst $Child_content__input_count = ($scope, input_count) => $Child_content__if($scope, input_count ? 0 : 1);\nconst $Child_content__tag_input_name__closure = /* @__PURE__ */_._closure($if_content2__input_name);\nconst $Child_content__tag_input_name = /* @__PURE__ */_._const(\"input_name\", $Child_content__tag_input_name__closure);\nconst $Child_content__$params = ($scope, $params2) => $Child_content__input($scope, $params2[0]);\nconst $Child_content__input = ($scope, input) => {\n  $Child_content__input_count($scope, input.count);\n  $Child_content__tag_input_name($scope, input.name);\n};\nconst $count__script = _._script(\"__tests__/template.marko_0_count\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $count($scope, $scope.count + 1);\n}));\nconst $count = /* @__PURE__ */_._let(\"count/3\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.count);\n  $Child_content__input_count($scope[\"#childScope/2\"], $scope.count);\n  $count__script($scope);\n});\nexport function $setup($scope) {\n  $Child_content__tag_input_name($scope[\"#childScope/2\"]);\n  $count($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-missing-property/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let count = 0;\n  _._html(`<button>${_._escape(count)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  const Child = {\n    content: _._content(\"__tests__/template.marko_1_content\", input => {\n      const $scope1_id = _._scope_id();\n      const $Child_content__input_name__closures = new Set();\n      const $scope1_reason = _._scope_reason();\n      _._if(() => {\n        if (input.count) {\n          const $scope2_id = _._scope_id();\n          if (true) {\n            const $scope3_id = _._scope_id();\n            _._html(`<div>${_._escape(input.name || \"Fallback\")}${_._el_resume($scope3_id, \"#text/0\", _._serialize_guard($scope1_reason, /* input.name */2))}</div>`);\n            _._serialize_if($scope1_reason, /* input.count, input.name */0) && _._subscribe($Child_content__input_name__closures, _._scope($scope3_id, {\n              _: _._scope_with_id($scope2_id),\n              \"ClosureSignalIndex:input_name\": _._serialize_if($scope1_reason, /* input.name */2) && 0\n            }, \"__tests__/template.marko\", \"8:6\"));\n          }\n          _._serialize_if($scope1_reason, /* input.count, input.name */0) && _._scope($scope2_id, {\n            _: _._scope_with_id($scope1_id)\n          }, \"__tests__/template.marko\", \"7:4\");\n          return 0;\n        }\n      }, $scope1_id, \"#text/0\", _._serialize_guard($scope1_reason, /* input.count */1), _._serialize_guard($scope1_reason, /* input.count */1), _._serialize_guard($scope1_reason, /* input.count */1));\n      _._serialize_if($scope1_reason, /* input.count, input.name */0) && _._scope($scope1_id, {\n        input_name: _._serialize_if($scope1_reason, /* input.count */1) && input.name,\n        \"ClosureScopes:input_name\": _._serialize_if($scope1_reason, /* input.name */2) && $Child_content__input_name__closures\n      }, \"__tests__/template.marko\", \"6:2\", {\n        input_name: [\"input.name\", \"6:15\"]\n      });\n    })\n  };\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason({\n    /* input.count, input.name */0: /* count */1,\n    /* input.count */1: /* count */1\n  });\n  Child.content({\n    count: count\n  });\n  _._script($scope0_id, \"__tests__/template.marko_0_count\");\n  _._scope($scope0_id, {\n    count,\n    \"#childScope/2\": _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0, {\n    count: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-missing-property/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n<div>\n  Fallback\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n<div>\n  Fallback\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n<div>\n  Fallback\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-missing-property/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <!--M_]2 #text/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0,\n        {\n          count: 0,\n          \"#childScope/2\": _.a = {}\n        }, _.a]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <!---->\n    <div>\n      Fallback\n    </div>\n    <!---->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0,\n        {\n          count: 0,\n          \"#childScope/2\": _.a = {}\n        }, _.a]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"0\" => \"1\"\nINSERT html/body/#comment2, #text, html/body/#comment3\nREMOVE #comment after html/body/#comment3\nINSERT html/body/div\nREMOVE #text after html/body/div\nUPDATE html/body/div/#text \" \" => \"Fallback\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      2\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <!---->\n    <div>\n      Fallback\n    </div>\n    <!---->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0,\n        {\n          count: 0,\n          \"#childScope/2\": _.a = {}\n        }, _.a]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      3\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <!---->\n    <div>\n      Fallback\n    </div>\n    <!---->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0,\n        {\n          count: 0,\n          \"#childScope/2\": _.a = {}\n        }, _.a]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-missing-property/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  0\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-missing-property/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>0<!--M_*1 #text/1--></button><!--M_*1 #button/0--><!--M_[--><!--M_]2 #text/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,{count:0,\"#childScope/2\":_.a={}},_.a]),\"__tests__/template.marko_0_count 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <!--M_]2 #text/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0,\n        {\n          count: 0,\n          \"#childScope/2\": _.a = {}\n        }, _.a]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-missing-property/template.marko",
    "content": "<let/count=0>\n<button onClick() { count++ }>\n  ${count}\n</button>\n\n<define/Child|input|>\n  <if=input.count>\n    <if=true>\n      <div>${input.name || \"Fallback\"}</div>\n    </>\n  </>\n</define>\n<Child count=count />"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-missing-property/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-property-alias-closure/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-property-alias-closure/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"text\":\"foo\"}`\n\n```html\nfoo and foo\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-property-alias-closure/__snapshots__/csr.expected.md",
    "content": "# Render `{\"text\":\"foo\"}`\n\n```html\n<!---->\nfoo and foo\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #text0, #text1, #text2, #comment1, #comment2\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-property-alias-closure/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-property-alias-closure/__snapshots__/dom.expected/template.js",
    "content": "const $Child_content__walks = /* replace, over(2), replace, over(2) */\"%c%c\",\n  $Child_content__template = \"<!> and <!><!>\";\nexport const $template = `<!>${$Child_content__template}<!>`;\nexport const $walks = /* over(1), <Child>, over(1) */`b/${$Child_content__walks}&b`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $Child_content2__input_text = /* @__PURE__ */_._closure_get(\"input_text\", $scope => _._text($scope[\"#text/0\"], $scope._.input_text));\nconst $Child_content2__setup = $Child_content2__input_text;\nconst $Child_content2 = /* @__PURE__ */_._content(\"__tests__/template.marko_2_content\", \" \", /* get, over(1) */\" b\", $Child_content2__setup);\nconst $Child_content__input_text = ($scope, input_text) => _._text($scope[\"#text/0\"], input_text);\nconst $Child_content__dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/1\");\nconst $Child_content__input_content = ($scope, input_content) => $Child_content__dynamicTag($scope, input_content);\nconst $Child_content__$params = ($scope, $params2) => $Child_content__input($scope, $params2[0]);\nconst $Child_content__input = ($scope, input) => {\n  $Child_content__input_text($scope, input.text);\n  $Child_content__input_content($scope, input.content);\n};\nexport function $setup($scope) {\n  $Child_content__input_content($scope[\"#childScope/0\"], $Child_content2($scope));\n}\nconst $input_text__closure = /* @__PURE__ */_._closure($Child_content2__input_text);\nexport const $input_text = /* @__PURE__ */_._const(\"input_text\", $scope => {\n  $Child_content__input_text($scope[\"#childScope/0\"], $scope.input_text);\n  $input_text__closure($scope);\n});\nexport const $input = ($scope, input) => $input_text($scope, input.text);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-property-alias-closure/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $input_text__closures = new Set();\n  const Child = {\n    content: _._content(\"__tests__/template.marko_1_content\", input => {\n      const $scope1_id = _._scope_id();\n      const $scope1_reason = _._scope_reason();\n      _._html(`${_._escape(input.text)}${_._el_resume($scope1_id, \"#text/0\", _._serialize_guard($scope1_reason, /* input.text */1))} and `);\n      _._dynamic_tag($scope1_id, \"#text/1\", input.content, {}, 0, 0, _._serialize_guard($scope1_reason, /* input.content */2));\n      _._serialize_if($scope1_reason, /* input.text, input.content */0) && _._scope($scope1_id, {}, \"__tests__/template.marko\", \"1:1\");\n    })\n  };\n  const {\n    text\n  } = input;\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason({\n    /* input.text, input.content */0: _._serialize_guard($scope0_reason, /* input.text */0),\n    /* input.text */1: _._serialize_guard($scope0_reason, /* input.text */0)\n  });\n  Child.content({\n    text: input.text,\n    content: _._content(\"__tests__/template.marko_2_content\", () => {\n      const $scope2_reason = _._scope_reason();\n      const $scope2_id = _._scope_id();\n      _._html(`${_._escape(text)}${_._el_resume($scope2_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.text */0))}`);\n      _._serialize_if($scope0_reason, /* input.text */0) && _._subscribe($input_text__closures, _._scope($scope2_id, {\n        _: _._scope_with_id($scope0_id),\n        \"ClosureSignalIndex:input_text\": _._serialize_if($scope0_reason, /* input.text */0) && 0\n      }, \"__tests__/template.marko\", \"7:1\"));\n      _._resume_branch($scope2_id);\n    })\n  });\n  _._serialize_if($scope0_reason, /* input.text */0) && _._scope($scope0_id, {\n    \"ClosureScopes:input_text\": _._serialize_if($scope0_reason, /* input.text */0) && $input_text__closures,\n    \"#childScope/0\": _._serialize_if($scope0_reason, /* input.text */0) && _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-property-alias-closure/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"text\":\"foo\"}`\n\n```html\nfoo and foo\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-property-alias-closure/__snapshots__/resume.expected.md",
    "content": "# Render `{\"text\":\"foo\"}`\n\n```html\n<html>\n  <head />\n  <body>\n    foo and foo\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-property-alias-closure/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\nfoo and foo\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-property-alias-closure/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  foo and foo\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    foo and foo\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-property-alias-closure/template.marko",
    "content": "define/Child|input|\n  -- ${input.text}\n  --  and \n  ${input.content}\n\nconst/{ text }=input\nChild text=input.text\n  -- ${text}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/input-property-alias-closure/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [{ text: \"foo\" }],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/isolated-known-tag-param-serialize-groups/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/isolated-known-tag-param-serialize-groups/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"a\":\"a\",\"b\":\"b\"}`\n\n```html\n<div>\n  a\n</div>\n<div>\n  b\n</div>\n<div>\n  a\n</div>\n<div>\n  b\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/isolated-known-tag-param-serialize-groups/__snapshots__/csr.expected.md",
    "content": "# Render `{\"a\":\"a\",\"b\":\"b\"}`\n\n```html\n<div>\n  a\n</div>\n<div>\n  b\n</div>\n<div>\n  a\n</div>\n<div>\n  b\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT div0, div1, div2, div3, #comment\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/isolated-known-tag-param-serialize-groups/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<div> </div><div> </div>\";\nexport const $walks = /* next(1), get, out(1), next(1), get, out(1) */\"D lD l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $input_a = ($scope, input_a) => _._text($scope[\"#text/0\"], input_a);\nexport const $input_b = ($scope, input_b) => _._text($scope[\"#text/1\"], input_b);\nexport const $input = ($scope, input) => {\n  $input_a($scope, input.a);\n  $input_b($scope, input.b);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/isolated-known-tag-param-serialize-groups/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/isolated-known-tag-param-serialize-groups/__snapshots__/dom.expected/template.js",
    "content": "const $Child_content__walks = /* next(1), get, out(1), next(1), get, out(1) */\"D lD l\",\n  $Child_content__template = \"<div> </div><div> </div>\";\nexport const $template = `${_child_template}${$Child_content__template}<!>`;\nexport const $walks = /* <child>, <Child>, over(1) */`/${_child_walks}&/${$Child_content__walks}&b`;\nimport { $setup as _child, $input_a as _child_input_a, $input_b as _child_input_b, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $Child_content__input_a = ($scope, input_a) => _._text($scope[\"#text/0\"], input_a);\nconst $Child_content__input_b = ($scope, input_b) => _._text($scope[\"#text/1\"], input_b);\nconst $Child_content__$params = ($scope, $params2) => $Child_content__input($scope, $params2[0]);\nconst $Child_content__input = ($scope, input) => {\n  $Child_content__input_a($scope, input.a);\n  $Child_content__input_b($scope, input.b);\n};\nexport function $setup($scope) {\n  _child($scope[\"#childScope/0\"]);\n}\nexport const $input_a = ($scope, input_a) => {\n  _child_input_a($scope[\"#childScope/0\"], input_a);\n  $Child_content__input_a($scope[\"#childScope/1\"], input_a);\n};\nexport const $input_b = ($scope, input_b) => {\n  _child_input_b($scope[\"#childScope/0\"], input_b);\n  $Child_content__input_b($scope[\"#childScope/1\"], input_b);\n};\nexport const $input = ($scope, input) => {\n  $input_a($scope, input.a);\n  $input_b($scope, input.b);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/isolated-known-tag-param-serialize-groups/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div>${_._escape(input.a)}${_._el_resume($scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.a */1))}</div><div>${_._escape(input.b)}${_._el_resume($scope0_id, \"#text/1\", _._serialize_guard($scope0_reason, /* input.b */2))}</div>`);\n  _._serialize_if($scope0_reason, /* input.a, input.b */0) && _._scope($scope0_id, {}, \"__tests__/tags/child.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/isolated-known-tag-param-serialize-groups/__snapshots__/html.expected/template.js",
    "content": "import _child from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason({\n    /* input.a, input.b */0: _._serialize_guard($scope0_reason, /* input.a, input.b */0),\n    /* input.a */1: _._serialize_guard($scope0_reason, /* input.a */1),\n    /* input.b */2: _._serialize_guard($scope0_reason, /* input.b */2)\n  });\n  _child({\n    a: input.a,\n    b: input.b\n  });\n  const Child = {\n    content: _._content(\"__tests__/template.marko_1_content\", input => {\n      const $scope1_id = _._scope_id();\n      const $scope1_reason = _._scope_reason();\n      _._html(`<div>${_._escape(input.a)}${_._el_resume($scope1_id, \"#text/0\", _._serialize_guard($scope1_reason, /* input.a */1))}</div><div>${_._escape(input.b)}${_._el_resume($scope1_id, \"#text/1\", _._serialize_guard($scope1_reason, /* input.b */2))}</div>`);\n      _._serialize_if($scope1_reason, /* input.a, input.b */0) && _._scope($scope1_id, {}, \"__tests__/template.marko\", \"3:2\");\n    })\n  };\n  const $childScope2 = _._peek_scope_id();\n  _._set_serialize_reason({\n    /* input.a, input.b */0: _._serialize_guard($scope0_reason, /* input.a, input.b */0),\n    /* input.a */1: _._serialize_guard($scope0_reason, /* input.a */1),\n    /* input.b */2: _._serialize_guard($scope0_reason, /* input.b */2)\n  });\n  Child.content({\n    a: input.a,\n    b: input.b\n  });\n  _._serialize_if($scope0_reason, /* input.a, input.b */0) && _._scope($scope0_id, {\n    \"#childScope/0\": _._serialize_if($scope0_reason, /* input.a, input.b */0) && _._existing_scope($childScope),\n    \"#childScope/1\": _._serialize_if($scope0_reason, /* input.a, input.b */0) && _._existing_scope($childScope2)\n  }, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/isolated-known-tag-param-serialize-groups/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"a\":\"a\",\"b\":\"b\"}`\n\n```html\n<div>\n  a\n</div>\n<div>\n  b\n</div>\n<div>\n  a\n</div>\n<div>\n  b\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/isolated-known-tag-param-serialize-groups/__snapshots__/resume.expected.md",
    "content": "# Render `{\"a\":\"a\",\"b\":\"b\"}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      a\n    </div>\n    <div>\n      b\n    </div>\n    <div>\n      a\n    </div>\n    <div>\n      b\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/isolated-known-tag-param-serialize-groups/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  a\n</div>\n<div>\n  b\n</div>\n<div>\n  a\n</div>\n<div>\n  b\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/isolated-known-tag-param-serialize-groups/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>a</div><div>b</div><div>a</div><div>b</div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      a\n    </div>\n    <div>\n      b\n    </div>\n    <div>\n      a\n    </div>\n    <div>\n      b\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/div0/#text\nINSERT html/body/div1\nINSERT html/body/div1/#text\nINSERT html/body/div2\nINSERT html/body/div2/#text\nINSERT html/body/div3\nINSERT html/body/div3/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/isolated-known-tag-param-serialize-groups/tags/child.marko",
    "content": "<div>${input.a}</div>\n<div>${input.b}</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/isolated-known-tag-param-serialize-groups/template.marko",
    "content": "<child a=input.a b=input.b/>\n\n<define/Child|input|>\n  <div>${input.a}</div>\n  <div>${input.b}</div>\n</>\n<Child a=input.a b=input.b/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/isolated-known-tag-param-serialize-groups/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [{ a: \"a\", b: \"b\" }],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-define-tag-empty-section-closure/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$if_content__setup$1\": \"_\",\n      \"$$Tag_content__if\": \"i\",\n      \"$$count\": \"m\",\n      \"$$setup\": \"r\",\n      \"$$if_content__setup\": \"a\",\n      \"$$if\": \"b\",\n      \"$$m\": \"s\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-define-tag-empty-section-closure/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div />\n```\n\n\n# Render ASYNC\n```html\n<div>\n  <div>\n    123\n  </div>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-define-tag-empty-section-closure/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div />\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render ASYNC\n```html\n<div>\n  <!---->\n  <!---->\n  <!---->\n  <div>\n    123\n  </div>\n  <!---->\n  <!---->\n  <!---->\n</div>\n```\n\n# Mutations\n```\nINSERT div/#comment0, div/#comment1, div/#comment2, #text, div/#comment3, div/#comment4, div/#comment5\nREMOVE #text after div/#comment5\nINSERT div/div\nREMOVE #text after div/div\nUPDATE div/div/#text \" \" => \"123\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-define-tag-empty-section-closure/__snapshots__/dom.expected/tags/test.js",
    "content": "const $Tag_content__walks = /* over(1), replace, over(2) */\"b%c\",\n  $Tag_content__template = \"<!><!><!>\";\nexport const $template = `<!>${$Tag_content__template}<!>`;\nexport const $walks = /* over(1), <Tag>, over(1) */`b/${$Tag_content__walks}&b`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content__count = /* @__PURE__ */_._closure_get(\"count\", $scope => _._text($scope[\"#text/0\"], $scope._._.count), $scope => $scope._._);\nconst $if_content__setup = $if_content__count;\nconst $Tag_content__if = /* @__PURE__ */_._if(\"#text/0\", \"<div> </div>\", /* next(1), get, out(1) */\"D l\", $if_content__setup);\nconst $Tag_content__input_x = ($scope, input_x) => $Tag_content__if($scope, input_x ? 0 : 1);\nconst $Tag_content__$params = ($scope, $params2) => $Tag_content__input($scope, $params2[0]);\nconst $Tag_content__input = ($scope, input) => $Tag_content__input_x($scope, input.x);\nconst $count = /* @__PURE__ */_._const(\"count\");\nexport function $setup($scope) {\n  $scope[\"#childScope/0\"]._ = $scope;\n  $Tag_content__input_x($scope[\"#childScope/0\"], 1);\n  $count($scope, 123);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/tags/test.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-define-tag-empty-section-closure/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 286 (min) 197 (brotli)\nconst $if_content__setup$1 = _._closure_get(\n    1,\n    ($scope) => _._text($scope.a, $scope._._.b),\n    ($scope) => $scope._._,\n  ),\n  $Tag_content__if = _._if(0, \"<div> </div>\", \"D l\", $if_content__setup$1),\n  $count = _._const(1);\nfunction $setup($scope) {\n  (($scope.a._ = $scope),\n    (($scope) => {\n      $Tag_content__if($scope, 0);\n    })($scope.a),\n    $count($scope, 123));\n}\nconst $if_content__setup = ($scope) => {\n    $setup($scope.a);\n  },\n  $if = _._if(0, \"<!><!><!><!><!><!><!>\", \"b/b/b%c&b&b\", $if_content__setup),\n  $m = _._let(1, ($scope) => $if($scope, $scope.b ? 0 : 1));\n(_._script(\"b0\", ($scope) => $m($scope, 1)), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-define-tag-empty-section-closure/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div><!></div>\";\nexport const $walks = /* next(1), replace, out(1) */\"D%l\";\nimport { $setup as _test, $template as _test_template, $walks as _test_walks } from \"./tags/test.marko\";\nconst $if_content__setup = $scope => {\n  _test($scope[\"#childScope/0\"]);\n};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if = /* @__PURE__ */_._if(\"#text/0\", `<!>${_test_template}<!>`, /* over(1), <test>, over(1) */`b/${_test_walks}&b`, $if_content__setup);\nconst $m = /* @__PURE__ */_._let(\"m/1\", $scope => $if($scope, $scope.m ? 0 : 1));\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => $m($scope, 1));\nexport function $setup($scope) {\n  $m($scope, undefined);\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-define-tag-empty-section-closure/__snapshots__/html.expected/tags/test.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/test.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const count = 123;\n  const Tag = {\n    content: _._content(\"__tests__/tags/test.marko_1_content\", input => {\n      const $scope1_id = _._scope_id();\n      const $scope1_reason = _._scope_reason();\n      _._if(() => {\n        if (input.x) {\n          const $scope2_id = _._scope_id();\n          _._html(`<div>${_._escape(count)}</div>`);\n          _._serialize_if($scope1_reason, /* input.x */0) && _._scope($scope2_id, {\n            _: _._scope_with_id($scope1_id)\n          }, \"__tests__/tags/test.marko\", \"3:4\");\n          return 0;\n        }\n      }, $scope1_id, \"#text/0\", _._serialize_guard($scope1_reason, /* input.x */0), _._serialize_guard($scope1_reason, /* input.x */0), _._serialize_guard($scope1_reason, /* input.x */0), 0, 1);\n      _._serialize_if($scope1_reason, /* input.x */0) && _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/tags/test.marko\", \"2:2\");\n    })\n  };\n  Tag.content({\n    x: 1\n  });\n  _._scope($scope0_id, {\n    count\n  }, \"__tests__/tags/test.marko\", 0, {\n    count: \"1:8\"\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-define-tag-empty-section-closure/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _test from \"./tags/test.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let m = undefined;\n  _._html(\"<div>\");\n  _._if(() => {\n    if (m) {\n      const $scope1_id = _._scope_id();\n      _test({});\n      _._scope($scope1_id, {}, \"__tests__/template.marko\", \"3:4\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/0\");\n  _._html(\"</div>\");\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-define-tag-empty-section-closure/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div />\n```\n\n\n# Render ASYNC\n```html\n<div>\n  <div>\n    123\n  </div>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-define-tag-empty-section-closure/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--M_[-->\n      <!--M_]1 #text/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render ASYNC\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--M_[-->\n      <!---->\n      <!---->\n      <!---->\n      <div>\n        123\n      </div>\n      <!---->\n      <!---->\n      <!---->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#comment1, html/body/div/#comment2, html/body/div/#comment3, #text, html/body/div/#comment4, html/body/div/#comment5, html/body/div/#comment6\nREMOVE #comment after html/body/div/#comment6\nINSERT html/body/div/div\nREMOVE #text after html/body/div/div\nUPDATE html/body/div/div/#text \" \" => \"123\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-define-tag-empty-section-closure/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-define-tag-empty-section-closure/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><!--M_[--><!--M_]1 #text/0--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0]),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--M_[-->\n      <!--M_]1 #text/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#comment0\nINSERT html/body/div/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-define-tag-empty-section-closure/tags/test.marko",
    "content": "<const/count=123>\n<define/Tag|input|>\n  <if=input.x>\n    <div>${count}</div>\n  </if>\n</>\n<Tag x=1 />\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-define-tag-empty-section-closure/template.marko",
    "content": "<div>\n  <let/m>\n  <if=m>\n    <test/>\n  </if>\n  <script>m=1</script>\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-define-tag-empty-section-closure/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { flush, wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{}, flush, wait],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-define-tag-empty-section-fn-closure-element-reference/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"o\",\n      \"$init\": \"t\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-define-tag-empty-section-fn-closure-element-reference/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div />\n<button />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  [onClick(hello)]\n</div>\n<button />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  [onClick(hello)][onClick(hello)]\n</div>\n<button />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  [onClick(hello)][onClick(hello)][onClick(hello)]\n</div>\n<button />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-define-tag-empty-section-fn-closure-element-reference/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div />\n<button />\n<!---->\n```\n\n# Mutations\n```\nINSERT div, button, #text, #comment\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  [onClick(hello)]\n</div>\n<button />\n<!---->\n```\n\n# Mutations\n```\nINSERT div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  [onClick(hello)][onClick(hello)]\n</div>\n<button />\n<!---->\n```\n\n# Mutations\n```\nREMOVE #text in div\nINSERT div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  [onClick(hello)][onClick(hello)][onClick(hello)]\n</div>\n<button />\n<!---->\n```\n\n# Mutations\n```\nREMOVE #text in div\nINSERT div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-define-tag-empty-section-fn-closure-element-reference/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 93 (min) 86 (brotli)\n(_._script(\"a0\", ($scope) =>\n  _._on($scope.a, \"click\", function () {\n    $scope._.a.textContent += `[onClick(${$scope.d})]`;\n  }),\n),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-define-tag-empty-section-fn-closure-element-reference/__snapshots__/dom.expected/template.js",
    "content": "const $MyButton_content__walks = /* get, over(2) */\" c\",\n  $MyButton_content__template = \"<button></button> \";\nexport const $template = `<div></div>${$MyButton_content__template}<!>`;\nexport const $walks = /* get, over(1), <MyButton>, over(1) */` b/${$MyButton_content__walks}&b`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $MyButton_content__input_message__script = _._script(\"__tests__/template.marko_1_input_message\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  _._el_read($scope._[\"#div/0\"]).textContent += `[onClick(${$scope.input_message})]`;\n}));\nconst $MyButton_content__input_message = /* @__PURE__ */_._const(\"input_message\", $MyButton_content__input_message__script);\nconst $MyButton_content__$params = ($scope, $params2) => $MyButton_content__input($scope, $params2[0]);\nconst $MyButton_content__input = ($scope, input) => $MyButton_content__input_message($scope, input.message);\nexport function $setup($scope) {\n  $scope[\"#childScope/1\"]._ = $scope;\n  $MyButton_content__input_message($scope[\"#childScope/1\"], \"hello\");\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-define-tag-empty-section-fn-closure-element-reference/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div></div>${_._el_resume($scope0_id, \"#div/0\")}`);\n  const MyButton = {\n    content: _._content(\"__tests__/template.marko_1_content\", input => {\n      const $scope1_id = _._scope_id();\n      _._scope_reason();\n      _._html(`<button></button>${_._el_resume($scope1_id, \"#button/0\")} `);\n      _._script($scope1_id, \"__tests__/template.marko_1_input_message\");\n      _._scope($scope1_id, {\n        input_message: input.message,\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"2:2\", {\n        input_message: [\"input.message\", \"2:18\"]\n      });\n    })\n  };\n  MyButton.content({\n    message: \"hello\"\n  });\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-define-tag-empty-section-fn-closure-element-reference/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div />\n<button />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  [onClick(hello)]\n</div>\n<button />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  [onClick(hello)][onClick(hello)]\n</div>\n<button />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  [onClick(hello)][onClick(hello)][onClick(hello)]\n</div>\n<button />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-define-tag-empty-section-fn-closure-element-reference/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*1 #div/0-->\n    <button />\n    <!--M_*2 #button/0-->\n     \n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {},\n        {\n          input_message: \"hello\",\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1_input_message 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      [onClick(hello)]\n    </div>\n    <!--M_*1 #div/0-->\n    <button />\n    <!--M_*2 #button/0-->\n     \n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {},\n        {\n          input_message: \"hello\",\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1_input_message 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      [onClick(hello)][onClick(hello)]\n    </div>\n    <!--M_*1 #div/0-->\n    <button />\n    <!--M_*2 #button/0-->\n     \n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {},\n        {\n          input_message: \"hello\",\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1_input_message 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #text in html/body/div\nINSERT html/body/div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      [onClick(hello)][onClick(hello)][onClick(hello)]\n    </div>\n    <!--M_*1 #div/0-->\n    <button />\n    <!--M_*2 #button/0-->\n     \n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {},\n        {\n          input_message: \"hello\",\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1_input_message 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #text in html/body/div\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-define-tag-empty-section-fn-closure-element-reference/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n<button />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-define-tag-empty-section-fn-closure-element-reference/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div></div><!--M_*1 #div/0--><button></button><!--M_*2 #button/0--> <script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={},{input_message:\"hello\",_:_.a}]),\"__tests__/template.marko_1_input_message 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*1 #div/0-->\n    <button />\n    <!--M_*2 #button/0-->\n     \n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {},\n        {\n          input_message: \"hello\",\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1_input_message 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/#comment0\nINSERT html/body/button\nINSERT html/body/#comment1\nINSERT html/body/#text\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-define-tag-empty-section-fn-closure-element-reference/template.marko",
    "content": "<div/$el/>\n<define/MyButton|input|>\n  <button onClick() {\n    $el().textContent += `[onClick(${input.message})]`;\n  }/> \n</define>\n\n<MyButton message=\"hello\">\n  Click Me\n</>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-define-tag-empty-section-fn-closure-element-reference/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-rest-attr-tag/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"r\",\n      \"$init\": \"t\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-rest-attr-tag/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  one\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-rest-attr-tag/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  <!---->\n  <!---->\n  one\n  <!---->\n  <!---->\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-rest-attr-tag/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* get, over(1) */\" b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content__dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\");\nconst $if_content__button = /* @__PURE__ */_._if_closure(\"#text/0\", 0, $scope => $if_content__dynamicTag($scope, $scope._.button));\nconst $if_content__setup = $if_content__button;\nconst $for_content__if = /* @__PURE__ */_._if(\"#text/0\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", $if_content__setup);\nconst $for_content__button = /* @__PURE__ */_._const(\"button\", $scope => {\n  $for_content__if($scope, $scope.button ? 0 : 1);\n  $if_content__button($scope);\n});\nconst $for_content__$params = ($scope, $params2) => $for_content__button($scope, $params2[0]);\nconst $htmlInput__script = _._script(\"__tests__/tags/child.marko_0_htmlInput\", $scope => _._attrs_script($scope, \"#div/0\"));\nexport const $htmlInput = /* @__PURE__ */_._const(\"htmlInput\", $scope => {\n  _._attrs($scope, \"#div/0\", $scope.htmlInput);\n  $htmlInput__script($scope);\n});\nconst $for = /* @__PURE__ */_._for_of(\"#div/0\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", 0, $for_content__$params);\nexport const $buttons = ($scope, buttons) => $for($scope, [buttons]);\nexport const $input = ($scope, input) => {\n  (({\n    button,\n    ...htmlInput\n  }) => $htmlInput($scope, htmlInput))(input);\n  $buttons($scope, input.button);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-rest-attr-tag/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 109 (min) 86 (brotli)\n(_._script(\"a0\", ($scope) => _._attrs_script($scope, \"a\")),\n  _._content_resume(\"b1\", \"one\", \"b\"),\n  _._resume(\"b0\", function () {}),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-rest-attr-tag/__snapshots__/dom.expected/template.js",
    "content": "export const $template = _child_template;\nexport const $walks = /* <child> */`/${_child_walks}&`;\nimport { $setup as _child, $buttons as _child_input_button, $htmlInput as _child_input_$rest, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $button_content = _._content_resume(\"__tests__/template.marko_1_content\", \"one\", /* over(1) */\"b\");\nexport function $setup($scope) {\n  _child($scope[\"#childScope/0\"]);\n  _child_input_button($scope[\"#childScope/0\"], _.attrTag({\n    onClick: $onClick,\n    content: $button_content($scope)\n  }));\n  _child_input_$rest($scope[\"#childScope/0\"], {});\n}\nfunction $onClick() {}\n_._resume(\"__tests__/template.marko_0/onClick\", $onClick);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-rest-attr-tag/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    button: buttons,\n    ...htmlInput\n  } = input;\n  _._html(`<div${_._attrs(htmlInput, \"#div/0\", $scope0_id, \"div\")}>`);\n  _._for_of(buttons, button => {\n    const $scope1_id = _._scope_id();\n    _._if(() => {\n      if (button) {\n        const $scope2_id = _._scope_id();\n        _._dynamic_tag($scope2_id, \"#text/0\", button, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.button */0));\n        _._serialize_if($scope0_reason, /* input.button */0) && _._scope($scope2_id, {\n          _: _._scope_with_id($scope1_id)\n        }, \"__tests__/tags/child.marko\", \"4:8\");\n        return 0;\n      }\n    }, $scope1_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.button */0), _._serialize_guard($scope0_reason, /* input.button */0), _._serialize_guard($scope0_reason, /* input.button */0));\n    _._serialize_if($scope0_reason, /* input.button */0) && _._scope($scope1_id, {\n      button\n    }, \"__tests__/tags/child.marko\", \"3:4\", {\n      button: \"3:8\"\n    });\n  }, 0, $scope0_id, \"#div/0\", _._serialize_guard($scope0_reason, /* input.button */0), 1, _._serialize_guard($scope0_reason, /* input.button */0), \"</div>\");\n  _._script($scope0_id, \"__tests__/tags/child.marko_0_htmlInput\");\n  _._scope($scope0_id, {\n    htmlInput\n  }, \"__tests__/tags/child.marko\", 0, {\n    htmlInput: \"1:30\"\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-rest-attr-tag/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _child from \"./tags/child.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _child({\n    button: _.attrTag({\n      onClick: _._resume(function () {}, \"__tests__/template.marko_0/onClick\"),\n      content: _._content_resume(\"__tests__/template.marko_1_content\", () => {\n        _._scope_reason();\n        const $scope1_id = _._scope_id();\n        _._html(\"one\");\n      }, $scope0_id)\n    })\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-rest-attr-tag/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  one\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-rest-attr-tag/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      one\n    </div>\n    <!--M_*2 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 1,\n        {\n          htmlInput:\n          {}\n        }]),\n        \"__tests__/tags/child.marko_0_htmlInput 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-rest-attr-tag/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  one\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-rest-attr-tag/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>one</div><!--M_*2 #div/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,1,{htmlInput:{}}]),\"__tests__/tags/child.marko_0_htmlInput 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      one\n    </div>\n    <!--M_*2 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 1,\n        {\n          htmlInput:\n          {}\n        }]),\n        \"__tests__/tags/child.marko_0_htmlInput 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-rest-attr-tag/tags/child.marko",
    "content": "<const/{ button: buttons, ...htmlInput }=input>\n<div ...htmlInput>\n  <for|button| of=buttons>\n      <if=button>\n        <${button}/>\n      </if>\n  </for>\n</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-rest-attr-tag/template.marko",
    "content": "<child>\n  <@button onClick() { }>one</>\n</child>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-tag-param-serialize-alias/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"r\",\n      \"$init\": \"i\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-tag-param-serialize-alias/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"a\":\"a\",\"b\":\"b\"}`\n\n```html\n<div>\n  a\n</div>\n<div>\n  b\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-tag-param-serialize-alias/__snapshots__/csr.expected.md",
    "content": "# Render `{\"a\":\"a\",\"b\":\"b\"}`\n\n```html\n<!---->\n<div>\n  a\n</div>\n<div>\n  b\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, div0, div1, #comment1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-tag-param-serialize-alias/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 156 (min) 92 (brotli)\n(_._script(\"a0\", ($scope) => {\n  if (\"a\" !== $scope.e) throw new Error(\"did not serialize a\");\n}),\n  _._script(\"a1\", ($scope) => {\n    if (\"a\" !== $scope.e) throw new Error(\"did not serialize input.a\");\n  }),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-tag-param-serialize-alias/__snapshots__/dom.expected/template.js",
    "content": "const $Child_content__walks = /* next(1), get, out(1), next(1), get, out(1) */\"D lD l\",\n  $Child_content__template = \"<div> </div><div> </div>\";\nexport const $template = `<!>${$Child_content__template}<!>`;\nexport const $walks = /* over(1), <Child>, over(1) */`b/${$Child_content__walks}&b`;\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $Child_content__a__script = _._script(\"__tests__/template.marko_1_a\", $scope => {\n  if ($scope.input_a !== \"a\") throw new Error(\"did not serialize a\");\n});\nconst $Child_content__a = $scope => {\n  _._text($scope[\"#text/0\"], $scope.input_a);\n  $Child_content__a__script($scope);\n};\nconst $Child_content__b = ($scope, b) => _._text($scope[\"#text/1\"], b);\nconst $Child_content__input_a__script = _._script(\"__tests__/template.marko_1_input_a\", $scope => {\n  if ($scope.input_a !== \"a\") throw new Error(\"did not serialize input.a\");\n});\nconst $Child_content__input_a = /* @__PURE__ */_._const(\"input_a\", $scope => {\n  $Child_content__a($scope, $scope.input_a);\n  $Child_content__input_a__script($scope);\n});\nconst $Child_content__$params = ($scope, $params2) => $Child_content__input($scope, $params2[0]);\nconst $Child_content__input = ($scope, input) => {\n  $Child_content__input_a($scope, input.a);\n  $Child_content__b($scope, input.b);\n};\nexport const $input_a = ($scope, input_a) => $Child_content__input_a($scope[\"#childScope/0\"], input_a);\nexport const $input_b = ($scope, input_b) => $Child_content__b($scope[\"#childScope/0\"], input_b);\nexport const $input = ($scope, input) => {\n  $input_a($scope, input.a);\n  $input_b($scope, input.b);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-tag-param-serialize-alias/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const Child = {\n    content: _._content(\"__tests__/template.marko_1_content\", input => {\n      const $scope1_id = _._scope_id();\n      const $scope1_reason = _._scope_reason();\n      const {\n        a,\n        b\n      } = input;\n      _._html(`<div>${_._escape(a)}${_._el_resume($scope1_id, \"#text/0\", _._serialize_guard($scope1_reason, /* input.a */0))}</div><div>${_._escape(b)}${_._el_resume($scope1_id, \"#text/1\", _._serialize_guard($scope1_reason, /* b */1))}</div>`);\n      _._script($scope1_id, \"__tests__/template.marko_1_input_a\");\n      _._script($scope1_id, \"__tests__/template.marko_1_a\");\n      _._scope($scope1_id, {\n        input_a: input.a\n      }, \"__tests__/template.marko\", \"1:2\", {\n        input_a: [\"input.a\", \"1:15\"]\n      });\n    })\n  };\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason({\n    /* input.a */0: _._serialize_guard($scope0_reason, /* input.a */1),\n    /* b */1: _._serialize_guard($scope0_reason, /* input.b */2)\n  });\n  Child.content({\n    a: input.a,\n    b: input.b\n  });\n  _._serialize_if($scope0_reason, /* input.a, input.b */0) && _._scope($scope0_id, {\n    \"#childScope/0\": _._serialize_if($scope0_reason, /* input.a, input.b */0) && _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-tag-param-serialize-alias/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"a\":\"a\",\"b\":\"b\"}`\n\n```html\n<div>\n  a\n</div>\n<div>\n  b\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-tag-param-serialize-alias/__snapshots__/resume.expected.md",
    "content": "# Render `{\"a\":\"a\",\"b\":\"b\"}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      a\n    </div>\n    <div>\n      b\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 1,\n        {\n          input_a: \"a\"\n        }]),\n        \"__tests__/template.marko_1_input_a 2 __tests__/template.marko_1_a 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-tag-param-serialize-alias/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  a\n</div>\n<div>\n  b\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-tag-param-serialize-alias/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>a</div><div>b</div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,1,{input_a:\"a\"}]),\"__tests__/template.marko_1_input_a 2 __tests__/template.marko_1_a 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      a\n    </div>\n    <div>\n      b\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 1,\n        {\n          input_a: \"a\"\n        }]),\n        \"__tests__/template.marko_1_input_a 2 __tests__/template.marko_1_a 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/div0/#text\nINSERT html/body/div1\nINSERT html/body/div1/#text\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-tag-param-serialize-alias/template.marko",
    "content": "<define/Child|input|>\n  <const/{ a, b } = input>\n  <div>${a}</div>\n  <div>${b}</div>\n  <script>if (a !== \"a\") throw new Error(\"did not serialize a\")</>\n  <script>if (input.a !== \"a\") throw new Error(\"did not serialize input.a\")</>\n</>\n<Child a=input.a b=input.b/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-tag-param-serialize-alias/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [{ a: \"a\", b: \"b\" }],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-tag-spread-unused/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-tag-spread-unused/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\nfallback\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-tag-spread-unused/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<!---->\nfallback\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, #text, #comment2, #comment3\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-tag-spread-unused/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-tag-spread-unused/__snapshots__/dom.expected/template.js",
    "content": "const $Foo_content__walks = /* get, over(1) */\" b\",\n  $Foo_content__template = \" \",\n  $Bar_content__walks = /* over(1), <Foo>, over(1) */`b/${$Foo_content__walks}&b`,\n  $Bar_content__template = `<!>${$Foo_content__template}<!>`;\nexport const $template = `<!>${$Bar_content__template}<!>`;\nexport const $walks = /* over(1), <Bar>, over(1) */`b/${$Bar_content__walks}&b`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $Bar_content__input_foo = ($scope, input_foo) => $Foo_content__input_foo($scope[\"#childScope/0\"], input_foo);\nconst $Bar_content__$params = ($scope, $params3) => $Bar_content__input($scope, $params3[0]);\nconst $Bar_content__input = ($scope, input) => $Bar_content__input_foo($scope, input.foo);\nconst $Foo_content__input_foo = ($scope, input_foo) => _._text($scope[\"#text/0\"], input_foo || \"fallback\");\nconst $Foo_content__$params = ($scope, $params2) => $Foo_content__input($scope, $params2[0]);\nconst $Foo_content__input = ($scope, input) => $Foo_content__input_foo($scope, input.foo);\nexport function $setup($scope) {\n  $Bar_content__input_foo($scope[\"#childScope/0\"]);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-tag-spread-unused/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const Foo = {\n    content: _._content(\"__tests__/template.marko_1_content\", input => {\n      const $scope1_id = _._scope_id();\n      const $scope1_reason = _._scope_reason();\n      _._html(`${_._escape(input.foo || \"fallback\")}${_._el_resume($scope1_id, \"#text/0\", _._serialize_guard($scope1_reason, /* input.foo */0))}`);\n      _._serialize_if($scope1_reason, /* input.foo */0) && _._scope($scope1_id, {}, \"__tests__/template.marko\", \"1:2\");\n    })\n  };\n  const Bar = {\n    content: _._content(\"__tests__/template.marko_2_content\", input => {\n      const $scope2_id = _._scope_id();\n      const $scope2_reason = _._scope_reason();\n      const $childScope = _._peek_scope_id();\n      _._set_serialize_reason(_._serialize_guard($scope2_reason, /* input.foo */0));\n      Foo.content(input);\n      _._serialize_if($scope2_reason, /* input.foo */0) && _._scope($scope2_id, {\n        \"#childScope/0\": _._serialize_if($scope2_reason, /* input.foo */0) && _._existing_scope($childScope)\n      }, \"__tests__/template.marko\", \"5:2\");\n    })\n  };\n  Bar.content({});\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-tag-spread-unused/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\nfallback\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-tag-spread-unused/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    fallback\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-tag-spread-unused/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\nfallback\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-tag-spread-unused/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  fallback\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    fallback\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/known-tag-spread-unused/template.marko",
    "content": "<define/Foo|input|>\n  ${input.foo || \"fallback\"}\n</define>\n\n<define/Bar|input|>\n  <Foo ...input/>\n</define>\n\n<Bar>\n  Unused\n</Bar>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-basic-member-expression-never-update/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$user\": \"m\",\n      \"$$index__script\": \"c\",\n      \"$$index\": \"i\",\n      \"$$user_id\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-basic-member-expression-never-update/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  ‍\n</div>\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  ‍\n</div>\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-basic-member-expression-never-update/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  ‍\n</div>\n<button>\n  Update\n</button>\n```\n\n# Mutations\n```\nINSERT div, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  ‍\n</div>\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-basic-member-expression-never-update/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 181 (min) 138 (brotli)\nconst $user = _._let(3, ($scope) => $user_id($scope, $scope.d?.id)),\n  $index__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.b, \"click\", function () {\n      $index($scope, $scope.c + 1);\n    }),\n  ),\n  $index = _._let(2, ($scope) => {\n    ($user($scope, -1 !== $scope.c && { id: $scope.c }),\n      $index__script($scope));\n  }),\n  $user_id = _._const(4, ($scope) => _._text($scope.a, $scope.e));\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-basic-member-expression-never-update/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div> </div><button>Update</button>\";\nexport const $walks = /* next(1), get, out(1), get, over(1) */\"D l b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $user = /* @__PURE__ */_._let(\"user/3\", $scope => $user_id($scope, $scope.user?.id));\nconst $index__script = _._script(\"__tests__/template.marko_0_index\", $scope => _._on($scope[\"#button/1\"], \"click\", function () {\n  $index($scope, $scope.index + 1);\n}));\nconst $index = /* @__PURE__ */_._let(\"index/2\", $scope => {\n  $user($scope, $scope.index !== -1 && {\n    id: $scope.index\n  });\n  $index__script($scope);\n});\nexport function $setup($scope) {\n  $index($scope, -1);\n}\nconst $user_id = /* @__PURE__ */_._const(\"user_id\", $scope => _._text($scope[\"#text/0\"], $scope.user_id));\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-basic-member-expression-never-update/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let index = -1;\n  let user = index !== -1 && {\n    id: index\n  };\n  _._html(`<div>${_._escape(user?.id)}</div><button>Update</button>${_._el_resume($scope0_id, \"#button/1\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_index\");\n  _._scope($scope0_id, {\n    index\n  }, \"__tests__/template.marko\", 0, {\n    index: \"1:5\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-basic-member-expression-never-update/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  ‍\n</div>\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  ‍\n</div>\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-basic-member-expression-never-update/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      ‍\n    </div>\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          index: -1\n        }]),\n        \"__tests__/template.marko_0_index 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      ‍\n    </div>\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          index: -1\n        }]),\n        \"__tests__/template.marko_0_index 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-basic-member-expression-never-update/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  ‍\n</div>\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-basic-member-expression-never-update/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>&zwj;</div><button>Update</button><!--M_*1 #button/1--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{index:-1}]),\"__tests__/template.marko_0_index 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      ‍\n    </div>\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          index: -1\n        }]),\n        \"__tests__/template.marko_0_index 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-basic-member-expression-never-update/template.marko",
    "content": "let/index=-1\nlet/user=index !== -1 && {\n  id: index,\n}\n\ndiv -- ${user?.id}\n\nbutton onClick() {\n  index++;\n} -- Update\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-basic-member-expression-never-update/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-bind-stateful-upstream-alias/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"r\",\n      \"$$list$1\": \"n\",\n      \"$$_return2\": \"o\",\n      \"$$_return\": \"e\",\n      \"$$for_content__$params\": \"i\",\n      \"$$for\": \"s\",\n      \"$$list\": \"c\",\n      \"$$store_list__OR__store_listChange\": \"_\",\n      \"$$store_list\": \"a\",\n      \"$$store_listChange\": \"m\",\n      \"$$store_clear__script\": \"l\",\n      \"$$store_clear\": \"u\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-bind-stateful-upstream-alias/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Clear\n</button>\n<ul>\n  <li>\n    Learn Marko\n  </li>\n  <li>\n    Make a Website\n  </li>\n</ul>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Clear\n</button>\n<ul />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-bind-stateful-upstream-alias/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  Clear\n</button>\n<ul>\n  <li>\n    Learn Marko\n  </li>\n  <li>\n    Make a Website\n  </li>\n</ul>\n```\n\n# Mutations\n```\nINSERT button, ul\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Clear\n</button>\n<ul />\n```\n\n# Mutations\n```\nREMOVE li, li in ul\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-bind-stateful-upstream-alias/__snapshots__/dom.expected/tags/store.js",
    "content": "export const $template = \"\";\nexport const $walks = \"\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $list = /* @__PURE__ */_._let(\"list/3\", $scope => _._return($scope, {\n  list: $scope.list,\n  listChange: $_return($scope),\n  clear: $_return2($scope)\n}));\nexport const $input_value = ($scope, input_value) => $list($scope, input_value);\nexport const $input = ($scope, input) => $input_value($scope, input.value);\nfunction $_return2($scope) {\n  return function () {\n    $list($scope, []);\n  };\n}\nfunction $_return($scope) {\n  return function (v) {\n    $list($scope, v);\n  };\n}\n_._resume(\"__tests__/tags/store.marko_0/_return2\", $_return2);\n_._resume(\"__tests__/tags/store.marko_0/_return\", $_return);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/store.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-bind-stateful-upstream-alias/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 509 (min) 296 (brotli)\nconst $list$1 = _._let(3, ($scope) =>\n  _._return($scope, {\n    list: $scope.d,\n    listChange: $_return($scope),\n    clear: $_return2($scope),\n  }),\n);\nfunction $_return2($scope) {\n  return function () {\n    $list$1($scope, []);\n  };\n}\nfunction $_return($scope) {\n  return function (v) {\n    $list$1($scope, v);\n  };\n}\n(_._resume(\"a1\", $_return2), _._resume(\"a0\", $_return));\nconst $for_content__$params = ($scope, $params2) =>\n  (($scope, item) => _._text($scope.a, item))($scope, $params2[0]);\n_._var_resume(\"b0\", ($scope, store) => {\n  ($store_list($scope, store?.list),\n    $store_listChange($scope, store?.listChange),\n    $store_clear($scope, store?.clear));\n});\nconst $for = _._for_of(3, \"<li> </li>\", \"D l\", 0, $for_content__$params),\n  $list = _._let(9, ($scope) => $for($scope, [$scope.j])),\n  $store_list__OR__store_listChange = _._or(\n    7,\n    ($scope) => $list($scope, $scope.f, $scope.g),\n    1,\n    1,\n  ),\n  $store_list = _._const(5, $store_list__OR__store_listChange),\n  $store_listChange = _._const(6, $store_list__OR__store_listChange),\n  $store_clear__script = _._script(\"b1\", ($scope) =>\n    _._on($scope.c, \"click\", $scope.i),\n  ),\n  $store_clear = _._const(8, $store_clear__script);\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-bind-stateful-upstream-alias/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `${_store_template}<button>Clear</button><ul></ul>`;\nexport const $walks = /* <store/var>, get, over(1), get, over(1) */`0${_store_walks}& b b`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _store, $input_value as _store_input_value, $template as _store_template, $walks as _store_walks } from \"./tags/store.marko\";\nconst $for_content__item = ($scope, item) => _._text($scope[\"#text/0\"], item);\nconst $for_content__$params = ($scope, $params2) => $for_content__item($scope, $params2[0]);\nconst $store = _._var_resume(\"__tests__/template.marko_0_store/var\", ($scope, store) => {\n  $store_list($scope, store?.list);\n  $store_listChange($scope, store?.listChange);\n  $store_clear($scope, store?.clear);\n});\nconst $for = /* @__PURE__ */_._for_of(\"#ul/3\", \"<li> </li>\", /* next(1), get, out(1) */\"D l\", 0, $for_content__$params);\nconst $list = /* @__PURE__ */_._let(\"list/9\", $scope => $for($scope, [$scope.list]));\nconst $store_list__OR__store_listChange = /* @__PURE__ */_._or(7, $scope => $list($scope, $scope.store_list, $scope.store_listChange), 1, \"#scopeOffset/1\");\nconst $store_list = /* @__PURE__ */_._const(\"store_list\", $store_list__OR__store_listChange);\nconst $store_listChange = /* @__PURE__ */_._const(\"store_listChange\", $store_list__OR__store_listChange);\nconst $store_clear__script = _._script(\"__tests__/template.marko_0_store_clear\", $scope => _._on($scope[\"#button/2\"], \"click\", $scope.store_clear));\nconst $store_clear = /* @__PURE__ */_._const(\"store_clear\", $store_clear__script);\nexport function $setup($scope) {\n  _._var($scope, \"#childScope/0\", $store);\n  _store($scope[\"#childScope/0\"]);\n  _store_input_value($scope[\"#childScope/0\"], [\"Learn Marko\", \"Make a Website\"]);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-bind-stateful-upstream-alias/__snapshots__/html.expected/tags/store.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/store.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let list = input.value;\n  const $return = {\n    list,\n    listChange: _._resume(function (v) {\n      list = v;\n    }, \"__tests__/tags/store.marko_0/_return\", $scope0_id),\n    clear: _._resume(function () {\n      list = [];\n    }, \"__tests__/tags/store.marko_0/_return2\", $scope0_id)\n  };\n  _._resume_branch($scope0_id);\n  return $return;\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-bind-stateful-upstream-alias/__snapshots__/html.expected/template.js",
    "content": "import _store from \"./tags/store.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $childScope = _._peek_scope_id();\n  let store = _store({\n    value: [\"Learn Marko\", \"Make a Website\"]\n  });\n  _._var($scope0_id, \"#scopeOffset/1\", $childScope, \"__tests__/template.marko_0_store/var\");\n  let list = store.list;\n  _._html(`<button>Clear</button>${_._el_resume($scope0_id, \"#button/2\")}<ul>`);\n  _._for_of(list, item => {\n    const $scope1_id = _._scope_id();\n    _._html(`<li>${_._escape(item)}${_._el_resume($scope1_id, \"#text/0\")}</li>`);\n    _._scope($scope1_id, {}, \"__tests__/template.marko\", \"10:4\");\n  }, 0, $scope0_id, \"#ul/3\", /* store */1, /* store */1, /* store */1, \"</ul>\", 1);\n  _._script($scope0_id, \"__tests__/template.marko_0_store_clear\");\n  _._scope($scope0_id, {\n    store_clear: store?.clear,\n    \"#childScope/0\": _._existing_scope($childScope),\n    \"TagVariableChange:list\": store.listChange || void 0\n  }, \"__tests__/template.marko\", 0, {\n    store_clear: [\"store.clear\", \"1:8\"]\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-bind-stateful-upstream-alias/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Clear\n</button>\n<ul>\n  <li>\n    Learn Marko\n  </li>\n  <li>\n    Make a Website\n  </li>\n</ul>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Clear\n</button>\n<ul />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-bind-stateful-upstream-alias/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Clear\n    </button>\n    <!--M_*1 #button/2-->\n    <ul>\n      <li>\n        Learn Marko\n        <!--M_*4 #text/0-->\n      </li>\n      <li>\n        Make a Website\n        <!--M_*5 #text/0-->\n      </li>\n      <!--M_}1 #ul/3 5 4-->\n    </ul>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"#scopeOffset/1\": 3,\n          store_clear: _.b = {},\n          \"#childScope/0\": _.b\n        }, _.b], _.a[\"TagVariableChange:list\"] = _._[\n          \"__tests__/tags/store.marko_0/_return\"\n          ](_.b), _.a.store_clear = _._[\n          \"__tests__/tags/store.marko_0/_return2\"\n          ](_.b), _.b[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_store/var\"\n          ](_.a), _.c),\n        \"__tests__/template.marko_0_store_clear 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Clear\n    </button>\n    <!--M_*1 #button/2-->\n    <ul />\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"#scopeOffset/1\": 3,\n          store_clear: _.b = {},\n          \"#childScope/0\": _.b\n        }, _.b], _.a[\"TagVariableChange:list\"] = _._[\n          \"__tests__/tags/store.marko_0/_return\"\n          ](_.b), _.a.store_clear = _._[\n          \"__tests__/tags/store.marko_0/_return2\"\n          ](_.b), _.b[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_store/var\"\n          ](_.a), _.c),\n        \"__tests__/template.marko_0_store_clear 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE li, li, #comment in html/body/ul\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-bind-stateful-upstream-alias/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  Clear\n</button>\n<ul>\n  <li>\n    Learn Marko\n  </li>\n  <li>\n    Make a Website\n  </li>\n</ul>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-bind-stateful-upstream-alias/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>Clear</button><!--M_*1 #button/2--><ul><li>Learn Marko<!--M_*4 #text/0--></li><li>Make a Website<!--M_*5 #text/0--></li><!--M_}1 #ul/3 5 4--></ul><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.a={\"#scopeOffset/1\":3,store_clear:_.b={},\"#childScope/0\":_.b},_.b],_.a[\"TagVariableChange:list\"]=_._[\"__tests__/tags/store.marko_0/_return\"](_.b),_.a.store_clear=_._[\"__tests__/tags/store.marko_0/_return2\"](_.b),_.b[\"#TagVariable\"]=_._[\"__tests__/template.marko_0_store/var\"](_.a),_.c),\"__tests__/template.marko_0_store_clear 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Clear\n    </button>\n    <!--M_*1 #button/2-->\n    <ul>\n      <li>\n        Learn Marko\n        <!--M_*4 #text/0-->\n      </li>\n      <li>\n        Make a Website\n        <!--M_*5 #text/0-->\n      </li>\n      <!--M_}1 #ul/3 5 4-->\n    </ul>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"#scopeOffset/1\": 3,\n          store_clear: _.b = {},\n          \"#childScope/0\": _.b\n        }, _.b], _.a[\"TagVariableChange:list\"] = _._[\n          \"__tests__/tags/store.marko_0/_return\"\n          ](_.b), _.a.store_clear = _._[\n          \"__tests__/tags/store.marko_0/_return2\"\n          ](_.b), _.b[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_store/var\"\n          ](_.a), _.c),\n        \"__tests__/template.marko_0_store_clear 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment\nINSERT html/body/ul\nINSERT html/body/ul/li0\nINSERT html/body/ul/li0/#text\nINSERT html/body/ul/li0/#comment\nINSERT html/body/ul/li1\nINSERT html/body/ul/li1/#text\nINSERT html/body/ul/li1/#comment\nINSERT html/body/ul/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-bind-stateful-upstream-alias/tags/store.marko",
    "content": "<let/list=input.value>\n<return={\n  list,\n  listChange(v) { list = v },\n  clear() { list = [] }\n}>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-bind-stateful-upstream-alias/template.marko",
    "content": "<store/store=[\n  \"Learn Marko\",\n  \"Make a Website\",\n]/>\n\n<let/list:=store.list>\n\n<button onClick=store.clear>Clear</>\n<ul>\n  <for|item| of=list>\n    <li>\n      ${item}\n    </li>\n  </for>\n</ul>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-bind-stateful-upstream-alias/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-intersection-child-var-custom-tag/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"r\",\n      \"$init\": \"t\",\n      \"$$Let_content__internal\": \"o\",\n      \"$$a__OR__b__script\": \"e\",\n      \"$$a__OR__b\": \"a\",\n      \"$$b\": \"n\",\n      \"$$internal\": \"_\",\n      \"$subsByKey\": \"c\",\n      \"$$value\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-intersection-child-var-custom-tag/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"$global\":{\"count\":0}}`\n\n```html\n<div>\n  0\n</div>\n<div>\n  1\n</div>\n<button>\n  0,1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  2\n</div>\n<div>\n  2\n</div>\n<button>\n  2,2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  2\n</div>\n<div>\n  2\n</div>\n<button>\n  2,2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  2\n</div>\n<div>\n  2\n</div>\n<button>\n  2,2\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-intersection-child-var-custom-tag/__snapshots__/csr.expected.md",
    "content": "# Render `{\"$global\":{\"count\":0}}`\n\n```html\n<div>\n  0\n</div>\n<div>\n  1\n</div>\n<button>\n  0,1\n</button>\n```\n\n# Mutations\n```\nINSERT div0, div1, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  2\n</div>\n<div>\n  2\n</div>\n<button>\n  2,2\n</button>\n```\n\n# Mutations\n```\nUPDATE div1/#text \"1\" => \"2\"\nUPDATE div0/#text \"0\" => \"2\"\nUPDATE button/#text \"0,1\" => \"2,2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  2\n</div>\n<div>\n  2\n</div>\n<button>\n  2,2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  2\n</div>\n<div>\n  2\n</div>\n<button>\n  2,2\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-intersection-child-var-custom-tag/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"\";\nexport const $walks = \"\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $internal = /* @__PURE__ */_._let(\"internal/3\", $scope => _._return($scope, $scope.internal));\nexport const $input_value = ($scope, input_value) => $internal($scope, input_value);\nexport function $setup($scope) {\n  _._return_change($scope, $valueChange($scope));\n}\nexport const $input = ($scope, input) => $input_value($scope, input.value);\nfunction $valueChange($scope) {\n  return _new_internal => {\n    $internal($scope, _new_internal);\n  };\n}\n_._resume(\"__tests__/tags/child.marko_0/valueChange\", $valueChange);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-intersection-child-var-custom-tag/__snapshots__/dom.expected/tags/let-global.js",
    "content": "export const $template = \"\";\nexport const $walks = \"\";\nexport const $setup = () => {};\nconst subsByKey = {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $value = /* @__PURE__ */_._let(\"value/3\", $scope => _._return($scope, $scope.value));\nconst $input_value__script = _._script(\"__tests__/tags/let-global.marko_0_input_value\", $scope => {\n  {\n    const subs = subsByKey[$scope.input_value] ??= new Set();\n    const sub = () => $value($scope, $scope.$global[$scope.input_value]);\n    _.$signal($scope, 0).onabort = () => subs.delete(sub);\n    subs.add(sub);\n  }\n});\nexport const $input_value = /* @__PURE__ */_._const(\"input_value\", $scope => {\n  _.$signalReset($scope, 0);\n  _._return_change($scope, $valueChange($scope));\n  $value($scope, $scope.$global[$scope.input_value]);\n  $input_value__script($scope);\n});\nexport const $input = ($scope, input) => $input_value($scope, input.value);\nfunction $valueChange($scope) {\n  return function (next) {\n    $scope.$global[$scope.input_value] = next;\n    subsByKey[$scope.input_value]?.forEach(cb => cb());\n  };\n}\n_._resume(\"__tests__/tags/let-global.marko_0/valueChange\", $valueChange);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/let-global.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-intersection-child-var-custom-tag/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 487 (min) 291 (brotli)\nconst subsByKey = {},\n  $value = _._let(3, ($scope) => _._return($scope, $scope.d));\n(_._script(\"b1\", ($scope) => {\n  {\n    const subs = (subsByKey[$scope.c] ??= new Set()),\n      sub = () => $value($scope, $scope.$[$scope.c]);\n    ((_.$signal($scope, 0).onabort = () => subs.delete(sub)), subs.add(sub));\n  }\n}),\n  _._resume(\"b0\", function ($scope) {\n    return function (next) {\n      (($scope.$[$scope.c] = next), subsByKey[$scope.c]?.forEach((cb) => cb()));\n    };\n  }));\nconst $a__OR__b = _._or(\n    8,\n    ($scope) => _._text($scope.f, `${$scope.g},${$scope.h}`),\n    1,\n    1,\n  ),\n  $b = _._let(7, ($scope) => {\n    (_._text($scope.d, $scope.h), $a__OR__b($scope));\n  });\n(_._var_resume(\n  \"c0\",\n  _._const(6, ($scope) => {\n    (_._text($scope.c, $scope.g), $b($scope, $scope.g + 1), $a__OR__b($scope));\n  }),\n),\n  _._script(\"c1\", ($scope) =>\n    _._on($scope.e, \"click\", function () {\n      (_._var_change($scope.a, 2), $b($scope, 2));\n    }),\n  ),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-intersection-child-var-custom-tag/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `${_letGlobal_template}<div> </div><div> </div><button> </button>`;\nexport const $walks = /* <let-global/var>, next(1), get, out(1), next(1), get, out(1), get, next(1), get, out(1) */`0${_letGlobal_walks}&D lD l D l`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _letGlobal, $input_value as _letGlobal_input_value, $template as _letGlobal_template, $walks as _letGlobal_walks } from \"./tags/let-global.marko\";\nconst $a__OR__b = /* @__PURE__ */_._or(8, $scope => _._text($scope[\"#text/5\"], `${$scope.a},${$scope.b}`), 1, \"#scopeOffset/1\");\nconst $b = /* @__PURE__ */_._let(\"b/7\", $scope => {\n  _._text($scope[\"#text/3\"], $scope.b);\n  $a__OR__b($scope);\n});\nconst $a = _._var_resume(\"__tests__/template.marko_0_a/var\", /* @__PURE__ */_._const(\"a\", $scope => {\n  _._text($scope[\"#text/2\"], $scope.a);\n  $b($scope, $scope.a + 1);\n  $a__OR__b($scope);\n}));\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => _._on($scope[\"#button/4\"], \"click\", function () {\n  _._var_change($scope[\"#childScope/0\"], 2, \"a\");\n  $b($scope, 2);\n}));\nexport function $setup($scope) {\n  _._var($scope, \"#childScope/0\", $a);\n  _letGlobal($scope[\"#childScope/0\"]);\n  _letGlobal_input_value($scope[\"#childScope/0\"], \"count\");\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-intersection-child-var-custom-tag/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let internal = input.value;\n  const $return = internal;\n  _._scope($scope0_id, {\n    \"#TagVariableChange\": _._resume(_new_internal => {\n      internal = _new_internal;\n    }, \"__tests__/tags/child.marko_0/valueChange\", $scope0_id) || void 0\n  }, \"__tests__/tags/child.marko\", 0);\n  _._resume_branch($scope0_id);\n  return $return;\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-intersection-child-var-custom-tag/__snapshots__/html.expected/tags/let-global.js",
    "content": "var subsByKey;\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/let-global.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let value = _.$global()[input.value];\n  const $return = value;\n  _._script($scope0_id, \"__tests__/tags/let-global.marko_0_input_value\");\n  _._scope($scope0_id, {\n    input_value: input.value,\n    \"#TagVariableChange\": _._resume(function (next) {\n      _.$global()[input.value] = next;\n      subsByKey[input.value]?.forEach(cb => cb());\n    }, \"__tests__/tags/let-global.marko_0/valueChange\", $scope0_id) || void 0\n  }, \"__tests__/tags/let-global.marko\", 0, {\n    input_value: [\"input.value\"]\n  });\n  _._resume_branch($scope0_id);\n  return $return;\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-intersection-child-var-custom-tag/__snapshots__/html.expected/template.js",
    "content": "import _letGlobal from \"./tags/let-global.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $childScope = _._peek_scope_id();\n  let a = _letGlobal({\n    value: \"count\"\n  });\n  _._var($scope0_id, \"#scopeOffset/1\", $childScope, \"__tests__/template.marko_0_a/var\");\n  let b = a + 1;\n  _._html(`<div>${_._escape(a)}${_._el_resume($scope0_id, \"#text/2\")}</div><div>${_._escape(b)}${_._el_resume($scope0_id, \"#text/3\")}</div><button>${_._escape(`${a},${b}`)}${_._el_resume($scope0_id, \"#text/5\")}</button>${_._el_resume($scope0_id, \"#button/4\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {\n    a,\n    b,\n    \"#childScope/0\": _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0, {\n    a: \"1:13\",\n    b: \"2:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-intersection-child-var-custom-tag/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"$global\":{\"count\":0}}`\n\n```html\n<div>\n  0\n</div>\n<div>\n  1\n</div>\n<button>\n  0,1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  2\n</div>\n<div>\n  2\n</div>\n<button>\n  2,2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  2\n</div>\n<div>\n  2\n</div>\n<button>\n  2,2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  2\n</div>\n<div>\n  2\n</div>\n<button>\n  2,2\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-intersection-child-var-custom-tag/__snapshots__/resume.expected.md",
    "content": "# Render `{\"$global\":{\"count\":0}}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      0\n      <!--M_*1 #text/2-->\n    </div>\n    <div>\n      1\n      <!--M_*1 #text/3-->\n    </div>\n    <button>\n      0,1\n      <!--M_*1 #text/5-->\n    </button>\n    <!--M_*1 #button/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"#scopeOffset/1\": 3,\n          a: 0,\n          b: 1,\n          \"#childScope/0\": _.a = {\n            input_value: \"count\"\n          }\n        }, _.a], _.a[\"#TagVariableChange\"] = _._[\n          \"__tests__/tags/let-global.marko_0/valueChange\"\n          ](_.a), _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_a/var\"\n          ](_.c), _.b),\n        \"__tests__/tags/let-global.marko_0_input_value 2 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      2\n      <!--M_*1 #text/2-->\n    </div>\n    <div>\n      2\n      <!--M_*1 #text/3-->\n    </div>\n    <button>\n      2,2\n      <!--M_*1 #text/5-->\n    </button>\n    <!--M_*1 #button/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"#scopeOffset/1\": 3,\n          a: 0,\n          b: 1,\n          \"#childScope/0\": _.a = {\n            input_value: \"count\"\n          }\n        }, _.a], _.a[\"#TagVariableChange\"] = _._[\n          \"__tests__/tags/let-global.marko_0/valueChange\"\n          ](_.a), _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_a/var\"\n          ](_.c), _.b),\n        \"__tests__/tags/let-global.marko_0_input_value 2 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div1/#text \"1\" => \"2\"\nUPDATE html/body/div0/#text \"0\" => \"2\"\nUPDATE html/body/button/#text \"0,1\" => \"2,2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      2\n      <!--M_*1 #text/2-->\n    </div>\n    <div>\n      2\n      <!--M_*1 #text/3-->\n    </div>\n    <button>\n      2,2\n      <!--M_*1 #text/5-->\n    </button>\n    <!--M_*1 #button/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"#scopeOffset/1\": 3,\n          a: 0,\n          b: 1,\n          \"#childScope/0\": _.a = {\n            input_value: \"count\"\n          }\n        }, _.a], _.a[\"#TagVariableChange\"] = _._[\n          \"__tests__/tags/let-global.marko_0/valueChange\"\n          ](_.a), _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_a/var\"\n          ](_.c), _.b),\n        \"__tests__/tags/let-global.marko_0_input_value 2 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      2\n      <!--M_*1 #text/2-->\n    </div>\n    <div>\n      2\n      <!--M_*1 #text/3-->\n    </div>\n    <button>\n      2,2\n      <!--M_*1 #text/5-->\n    </button>\n    <!--M_*1 #button/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"#scopeOffset/1\": 3,\n          a: 0,\n          b: 1,\n          \"#childScope/0\": _.a = {\n            input_value: \"count\"\n          }\n        }, _.a], _.a[\"#TagVariableChange\"] = _._[\n          \"__tests__/tags/let-global.marko_0/valueChange\"\n          ](_.a), _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_a/var\"\n          ](_.c), _.b),\n        \"__tests__/tags/let-global.marko_0_input_value 2 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-intersection-child-var-custom-tag/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  0\n</div>\n<div>\n  1\n</div>\n<button>\n  0,1\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-intersection-child-var-custom-tag/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>0<!--M_*1 #text/2--></div><div>1<!--M_*1 #text/3--></div><button>0,1<!--M_*1 #text/5--></button><!--M_*1 #button/4--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.c={\"#scopeOffset/1\":3,a:0,b:1,\"#childScope/0\":_.a={input_value:\"count\"}},_.a],_.a[\"#TagVariableChange\"]=_._[\"__tests__/tags/let-global.marko_0/valueChange\"](_.a),_.a[\"#TagVariable\"]=_._[\"__tests__/template.marko_0_a/var\"](_.c),_.b),\"__tests__/tags/let-global.marko_0_input_value 2 __tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      0\n      <!--M_*1 #text/2-->\n    </div>\n    <div>\n      1\n      <!--M_*1 #text/3-->\n    </div>\n    <button>\n      0,1\n      <!--M_*1 #text/5-->\n    </button>\n    <!--M_*1 #button/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"#scopeOffset/1\": 3,\n          a: 0,\n          b: 1,\n          \"#childScope/0\": _.a = {\n            input_value: \"count\"\n          }\n        }, _.a], _.a[\"#TagVariableChange\"] = _._[\n          \"__tests__/tags/let-global.marko_0/valueChange\"\n          ](_.a), _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_a/var\"\n          ](_.c), _.b),\n        \"__tests__/tags/let-global.marko_0_input_value 2 __tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/div0/#text\nINSERT html/body/div0/#comment\nINSERT html/body/div1\nINSERT html/body/div1/#text\nINSERT html/body/div1/#comment\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-intersection-child-var-custom-tag/tags/child.marko",
    "content": "<let/internal=input.value>\n<return:=internal>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-intersection-child-var-custom-tag/tags/let-global.marko",
    "content": "client const subsByKey: Record<string, Set<() => void>> = {};\n\n<let/value=$global[input.value]>\n<script>\n  const subs = subsByKey[input.value] ??= new Set();\n  const sub = () => value = $global[input.value];\n  $signal.onabort = () => subs.delete(sub);\n  subs.add(sub);\n</script>\n\n<return=value valueChange(next) {\n  $global[input.value] = next;\n  subsByKey[input.value]?.forEach(cb => cb());\n}>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-intersection-child-var-custom-tag/template.marko",
    "content": "<let-global/a=\"count\"/>\n<let/b=a + 1>\n\n<div>${a}</div>\n<div>${b}</div>\n\n<button onClick() {\n  a = 2;\n  b = 2;\n}>${`${a},${b}`}</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-intersection-child-var-custom-tag/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  (container.querySelector(\"button\") as HTMLButtonElement).click();\n}\n\nexport const config: TestConfig = {\n  steps: [\n    {\n      $global: { count: 0 },\n    },\n    click,\n    click,\n    click,\n  ],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-intersection-child-var-define/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"r\",\n      \"$init\": \"t\",\n      \"$$Let_content__internal\": \"o\",\n      \"$$a__OR__b__script\": \"e\",\n      \"$$a__OR__b\": \"a\",\n      \"$$b\": \"n\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-intersection-child-var-define/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0,0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  0,1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1,2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2,3\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-intersection-child-var-define/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<button>\n  0,0\n</button>\n```\n\n# Mutations\n```\nINSERT #comment, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<button>\n  0,1\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"0,0\" => \"0,1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<button>\n  1,2\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"0,1\" => \"1,2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<button>\n  2,3\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"1,2\" => \"2,3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-intersection-child-var-define/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 282 (min) 184 (brotli)\nconst $Let_content__internal = _._let(0, ($scope) =>\n    _._return($scope, $scope.a),\n  ),\n  $a__OR__b__script = _._script(\"a1\", ($scope) =>\n    _._on($scope.c, \"click\", function () {\n      (_._var_change($scope.a, $scope.e + 1), $b($scope, $scope.f + 1));\n    }),\n  ),\n  $a__OR__b = _._or(6, ($scope) => {\n    (_._text($scope.d, `${$scope.e},${$scope.f}`), $a__OR__b__script($scope));\n  });\n_._var_resume(\"a2\", _._const(4, $a__OR__b));\nconst $b = _._let(5, $a__OR__b);\n(_._resume(\"a0\", function ($scope) {\n  return (_new_internal) => {\n    $Let_content__internal($scope, _new_internal);\n  };\n}),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-intersection-child-var-define/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><button> </button>\";\nexport const $walks = /* over(1), <Let/var>, get, next(1), get, out(1) */\"b0& D l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $Let_content__internal = /* @__PURE__ */_._let(\"internal/0\", $scope => _._return($scope, $scope.internal));\nconst $Let_content__setup = /* @__PURE__ */_._child_setup($scope => {\n  _._return_change($scope, $valueChange($scope));\n  $Let_content__internal($scope, 0);\n});\nconst $a__OR__b__script = _._script(\"__tests__/template.marko_0_a_b\", $scope => _._on($scope[\"#button/2\"], \"click\", function () {\n  _._var_change($scope[\"#childScope/0\"], $scope.a + 1, \"a\");\n  $b($scope, $scope.b + 1);\n}));\nconst $a__OR__b = /* @__PURE__ */_._or(6, $scope => {\n  _._text($scope[\"#text/3\"], `${$scope.a},${$scope.b}`);\n  $a__OR__b__script($scope);\n});\nconst $a = _._var_resume(\"__tests__/template.marko_0_a/var\", /* @__PURE__ */_._const(\"a\", $a__OR__b));\nconst $b = /* @__PURE__ */_._let(\"b/5\", $a__OR__b);\nexport function $setup($scope) {\n  _._var($scope, \"#childScope/0\", $a);\n  $Let_content__setup._($scope[\"#childScope/0\"], $scope);\n  $b($scope, 0);\n}\nfunction $valueChange($scope) {\n  return _new_internal => {\n    $Let_content__internal($scope, _new_internal);\n  };\n}\n_._resume(\"__tests__/template.marko_1/valueChange\", $valueChange);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-intersection-child-var-define/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const Let = {\n    content: _._content(\"__tests__/template.marko_1_content\", () => {\n      const $scope1_id = _._scope_id();\n      _._scope_reason();\n      let internal = 0;\n      const $return = internal;\n      _._scope($scope1_id, {\n        \"#TagVariableChange\": _._resume(_new_internal => {\n          internal = _new_internal;\n        }, \"__tests__/template.marko_1/valueChange\", $scope1_id) || void 0\n      }, \"__tests__/template.marko\", \"1:2\");\n      _._resume_branch($scope1_id);\n      return $return;\n    })\n  };\n  const $childScope = _._peek_scope_id();\n  let a = Let.content({});\n  _._var($scope0_id, \"#scopeOffset/1\", $childScope, \"__tests__/template.marko_0_a/var\");\n  let b = 0;\n  _._html(`<button>${_._escape(`${a},${b}`)}${_._el_resume($scope0_id, \"#text/3\")}</button>${_._el_resume($scope0_id, \"#button/2\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_a_b\");\n  _._scope($scope0_id, {\n    a,\n    b,\n    \"#childScope/0\": _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0, {\n    a: \"6:6\",\n    b: \"7:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-intersection-child-var-define/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0,0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  0,1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1,2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2,3\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-intersection-child-var-define/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0,0\n      <!--M_*1 #text/3-->\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"#scopeOffset/1\": 3,\n          a: 0,\n          b: 0,\n          \"#childScope/0\": _.a = {}\n        }, _.a], _.a[\"#TagVariableChange\"] = _._[\n          \"__tests__/template.marko_1/valueChange\"\n          ](_.a), _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_a/var\"\n          ](_.c), _.b),\n        \"__tests__/template.marko_0_a_b 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0,1\n      <!--M_*1 #text/3-->\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"#scopeOffset/1\": 3,\n          a: 0,\n          b: 0,\n          \"#childScope/0\": _.a = {}\n        }, _.a], _.a[\"#TagVariableChange\"] = _._[\n          \"__tests__/template.marko_1/valueChange\"\n          ](_.a), _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_a/var\"\n          ](_.c), _.b),\n        \"__tests__/template.marko_0_a_b 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"0,0\" => \"0,1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1,2\n      <!--M_*1 #text/3-->\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"#scopeOffset/1\": 3,\n          a: 0,\n          b: 0,\n          \"#childScope/0\": _.a = {}\n        }, _.a], _.a[\"#TagVariableChange\"] = _._[\n          \"__tests__/template.marko_1/valueChange\"\n          ](_.a), _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_a/var\"\n          ](_.c), _.b),\n        \"__tests__/template.marko_0_a_b 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"0,1\" => \"1,2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      2,3\n      <!--M_*1 #text/3-->\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"#scopeOffset/1\": 3,\n          a: 0,\n          b: 0,\n          \"#childScope/0\": _.a = {}\n        }, _.a], _.a[\"#TagVariableChange\"] = _._[\n          \"__tests__/template.marko_1/valueChange\"\n          ](_.a), _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_a/var\"\n          ](_.c), _.b),\n        \"__tests__/template.marko_0_a_b 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"1,2\" => \"2,3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-intersection-child-var-define/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  0,0\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-intersection-child-var-define/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>0,0<!--M_*1 #text/3--></button><!--M_*1 #button/2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.c={\"#scopeOffset/1\":3,a:0,b:0,\"#childScope/0\":_.a={}},_.a],_.a[\"#TagVariableChange\"]=_._[\"__tests__/template.marko_1/valueChange\"](_.a),_.a[\"#TagVariable\"]=_._[\"__tests__/template.marko_0_a/var\"](_.c),_.b),\"__tests__/template.marko_0_a_b 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0,0\n      <!--M_*1 #text/3-->\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"#scopeOffset/1\": 3,\n          a: 0,\n          b: 0,\n          \"#childScope/0\": _.a = {}\n        }, _.a], _.a[\"#TagVariableChange\"] = _._[\n          \"__tests__/template.marko_1/valueChange\"\n          ](_.a), _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_a/var\"\n          ](_.c), _.b),\n        \"__tests__/template.marko_0_a_b 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-intersection-child-var-define/template.marko",
    "content": "<define/Let>\n  <let/internal=0>\n  <return:=internal>\n</define>\n\n<Let/a/>\n<let/b=0>\n\n<button onClick() {\n  a++;\n  b++;\n}>${`${a},${b}`}</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-intersection-child-var-define/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  (container.querySelector(\"button\") as HTMLButtonElement).click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$x__OR__y__script\": \"m\",\n      \"$$x__OR__y\": \"r\",\n      \"$$x\": \"e\",\n      \"$$y\": \"a\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  1\n</button>\n1\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n2\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  4\n</button>\n4\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  8\n</button>\n8\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  1\n</button>\n1\n```\n\n# Mutations\n```\nINSERT button, #text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n2\n```\n\n# Mutations\n```\nUPDATE button/#text \"1\" => \"2\"\nUPDATE #text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  4\n</button>\n4\n```\n\n# Mutations\n```\nUPDATE button/#text \"2\" => \"4\"\nUPDATE #text \"2\" => \"4\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  8\n</button>\n8\n```\n\n# Mutations\n```\nUPDATE button/#text \"4\" => \"8\"\nUPDATE #text \"4\" => \"8\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 163 (min) 122 (brotli)\nconst $x__OR__y__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", () => $x($scope, $y($scope, $scope.d + $scope.e))),\n  ),\n  $x__OR__y = _._or(5, $x__OR__y__script),\n  $x = _._let(3, ($scope) => {\n    (_._text($scope.b, $scope.d), $x__OR__y($scope));\n  }),\n  $y = _._let(4, ($scope) => {\n    (_._text($scope.c, $scope.e), $x__OR__y($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button> </button><!>\";\nexport const $walks = /* get, next(1), get, out(1), replace, over(1) */\" D l%b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $x__OR__y__script = _._script(\"__tests__/template.marko_0_x_y\", $scope => _._on($scope[\"#button/0\"], \"click\", () => $x($scope, $y($scope, $scope.x + $scope.y))));\nconst $x__OR__y = /* @__PURE__ */_._or(5, $x__OR__y__script);\nconst $x = /* @__PURE__ */_._let(\"x/3\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.x);\n  $x__OR__y($scope);\n});\nconst $y = /* @__PURE__ */_._let(\"y/4\", $scope => {\n  _._text($scope[\"#text/2\"], $scope.y);\n  $x__OR__y($scope);\n});\nexport function $setup($scope) {\n  $x($scope, 1);\n  $y($scope, 1, false);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let x = 1;\n  let y = 1;\n  _._html(`<button>${_._escape(x)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}${_._escape(y)}${_._el_resume($scope0_id, \"#text/2\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_x_y\");\n  _._scope($scope0_id, {\n    x,\n    y,\n    \"TagVariableChange:y\": false || void 0\n  }, \"__tests__/template.marko\", 0, {\n    x: \"1:6\",\n    y: \"2:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  1\n</button>\n1\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n2\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  4\n</button>\n4\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  8\n</button>\n8\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    1\n    <!--M_*1 #text/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 1,\n          y: 1\n        }]),\n        \"__tests__/template.marko_0_x_y 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      2\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    2\n    <!--M_*1 #text/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 1,\n          y: 1\n        }]),\n        \"__tests__/template.marko_0_x_y 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"1\" => \"2\"\nUPDATE html/body/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      4\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    4\n    <!--M_*1 #text/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 1,\n          y: 1\n        }]),\n        \"__tests__/template.marko_0_x_y 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"2\" => \"4\"\nUPDATE html/body/#text \"2\" => \"4\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      8\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    8\n    <!--M_*1 #text/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 1,\n          y: 1\n        }]),\n        \"__tests__/template.marko_0_x_y 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"4\" => \"8\"\nUPDATE html/body/#text \"4\" => \"8\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  1\n</button>\n1\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>1<!--M_*1 #text/1--></button><!--M_*1 #button/0-->1<!--M_*1 #text/2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{x:1,y:1}]),\"__tests__/template.marko_0_x_y 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    1\n    <!--M_*1 #text/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 1,\n          y: 1\n        }]),\n        \"__tests__/template.marko_0_x_y 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment0\nINSERT html/body/#text\nINSERT html/body/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag/template.marko",
    "content": "<let/x=1/>\n<let/y=1 valueChange=false/>\n\n<button onClick=(() => x = y = x + y)>\n  ${x}\n</button>\n\n-- ${y}"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-child/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"e\",\n      \"$$state__script\": \"o\",\n      \"$$state\": \"_\",\n      \"$$thirdState__script\": \"n\",\n      \"$$thirdState\": \"a\",\n      \"$$input_value__OR__input_valueChange\": \"c\",\n      \"$$input_value\": \"l\",\n      \"$$input_valueChange\": \"i\",\n      \"$$otherState__script\": \"r\",\n      \"$$otherState\": \"u\",\n      \"$$source\": \"m\",\n      \"$$valueChange\": \"s\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-child/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  1|1\n</button>\n<button>\n  1|1\n</button>\n<button>\n  1|1\n</button>\nsource=1\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\").forEach(item => item.click());\n```\n```html\n<button>\n  2|2\n</button>\n<button>\n  2|2\n</button>\n<button>\n  2|2\n</button>\nsource=2\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\").forEach(item => item.click());\n```\n```html\n<button>\n  3|3\n</button>\n<button>\n  3|3\n</button>\n<button>\n  3|3\n</button>\nsource=3\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\").forEach(item => item.click());\n```\n```html\n<button>\n  4|4\n</button>\n<button>\n  4|4\n</button>\n<button>\n  4|4\n</button>\nsource=4\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-child/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  1|1\n</button>\n<button>\n  1|1\n</button>\n<button>\n  1|1\n</button>\nsource=1\n```\n\n# Mutations\n```\nINSERT button0, button1, button2, #text0, #text1\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\").forEach(item => item.click());\n```\n```html\n<button>\n  2|2\n</button>\n<button>\n  2|2\n</button>\n<button>\n  2|2\n</button>\nsource=2\n```\n\n# Mutations\n```\nUPDATE button0/#text0 \"1\" => \"2\"\nUPDATE button1/#text0 \"1\" => \"2\"\nUPDATE button2/#text0 \"1\" => \"2\"\nUPDATE button1/#text2 \"1\" => \"2\"\nUPDATE #text1 \"1\" => \"2\"\nUPDATE button0/#text2 \"1\" => \"2\"\nUPDATE button2/#text2 \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\").forEach(item => item.click());\n```\n```html\n<button>\n  3|3\n</button>\n<button>\n  3|3\n</button>\n<button>\n  3|3\n</button>\nsource=3\n```\n\n# Mutations\n```\nUPDATE button0/#text0 \"2\" => \"3\"\nUPDATE button1/#text0 \"2\" => \"3\"\nUPDATE button2/#text0 \"2\" => \"3\"\nUPDATE button1/#text2 \"2\" => \"3\"\nUPDATE #text1 \"2\" => \"3\"\nUPDATE button0/#text2 \"2\" => \"3\"\nUPDATE button2/#text2 \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\").forEach(item => item.click());\n```\n```html\n<button>\n  4|4\n</button>\n<button>\n  4|4\n</button>\n<button>\n  4|4\n</button>\nsource=4\n```\n\n# Mutations\n```\nUPDATE button0/#text0 \"3\" => \"4\"\nUPDATE button1/#text0 \"3\" => \"4\"\nUPDATE button2/#text0 \"3\" => \"4\"\nUPDATE button1/#text2 \"3\" => \"4\"\nUPDATE #text1 \"3\" => \"4\"\nUPDATE button0/#text2 \"3\" => \"4\"\nUPDATE button2/#text2 \"3\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-child/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<button><!>|<!></button><button><!>|<!></button><button><!>|<!></button>\";\nexport const $walks = /* get, next(1), replace, over(2), replace, out(1), get, next(1), replace, over(2), replace, out(1), get, next(1), replace, over(2), replace, out(1) */\" D%c%l D%c%l D%c%l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $state__script = _._script(\"__tests__/tags/child.marko_0_state\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $state($scope, $scope.state + 1);\n}));\nconst $state = /* @__PURE__ */_._let(\"state/14\", $scope => {\n  _._text($scope[\"#text/2\"], $scope.state);\n  $state__script($scope);\n});\nconst $thirdState__script = _._script(\"__tests__/tags/child.marko_0_thirdState\", $scope => _._on($scope[\"#button/6\"], \"click\", function () {\n  $thirdState($scope, $scope.thirdState + 1);\n}));\nconst $thirdState = /* @__PURE__ */_._let(\"thirdState/16\", $scope => {\n  _._text($scope[\"#text/8\"], $scope.thirdState);\n  $thirdState__script($scope);\n});\nconst $input_value__OR__input_valueChange = /* @__PURE__ */_._or(13, $scope => {\n  $state($scope, $scope.input_value, $scope.input_valueChange);\n  $thirdState($scope, $scope.input_value, $scope.input_valueChange);\n});\nconst $input_value = /* @__PURE__ */_._const(\"input_value\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.input_value);\n  _._text($scope[\"#text/4\"], $scope.input_value);\n  _._text($scope[\"#text/7\"], $scope.input_value);\n  $input_value__OR__input_valueChange($scope);\n});\nconst $input_valueChange = /* @__PURE__ */_._const(\"input_valueChange\", $input_value__OR__input_valueChange);\nconst $otherState__script = _._script(\"__tests__/tags/child.marko_0_otherState\", $scope => _._on($scope[\"#button/3\"], \"click\", function () {\n  $otherState($scope, $scope.otherState + 1);\n}));\nconst $otherState = /* @__PURE__ */_._let(\"otherState/15\", $scope => {\n  _._text($scope[\"#text/5\"], $scope.otherState);\n  $otherState__script($scope);\n});\nexport const $input = ($scope, input) => {\n  $input_value($scope, input.value);\n  $input_valueChange($scope, input.valueChange);\n  $otherState($scope, input[\"value\"], input[\"value\" + \"Change\"]);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-child/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 644 (min) 262 (brotli)\nconst $state__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $state($scope, $scope.o + 1);\n    }),\n  ),\n  $state = _._let(14, ($scope) => {\n    (_._text($scope.c, $scope.o), $state__script($scope));\n  }),\n  $thirdState__script = _._script(\"a1\", ($scope) =>\n    _._on($scope.g, \"click\", function () {\n      $thirdState($scope, $scope.q + 1);\n    }),\n  ),\n  $thirdState = _._let(16, ($scope) => {\n    (_._text($scope.i, $scope.q), $thirdState__script($scope));\n  }),\n  $input_value__OR__input_valueChange = _._or(13, ($scope) => {\n    ($state($scope, $scope.l, $scope.m),\n      $thirdState($scope, $scope.l, $scope.m));\n  }),\n  $input_value = _._const(11, ($scope) => {\n    (_._text($scope.b, $scope.l),\n      _._text($scope.e, $scope.l),\n      _._text($scope.h, $scope.l),\n      $input_value__OR__input_valueChange($scope));\n  }),\n  $input_valueChange = _._const(12, $input_value__OR__input_valueChange),\n  $otherState__script = _._script(\"a2\", ($scope) =>\n    _._on($scope.d, \"click\", function () {\n      $otherState($scope, $scope.p + 1);\n    }),\n  ),\n  $otherState = _._let(15, ($scope) => {\n    (_._text($scope.f, $scope.p), $otherState__script($scope));\n  }),\n  $source = _._let(2, ($scope) => {\n    ((($scope, input) => {\n      ($input_value($scope, input.value),\n        $input_valueChange($scope, input.valueChange),\n        $otherState($scope, input.value, input.valueChange));\n    })($scope.a, { value: $scope.c, valueChange: $valueChange($scope) }),\n      _._text($scope.b, $scope.c));\n  });\nfunction $valueChange($scope) {\n  return (_new_source) => {\n    $source($scope, _new_source);\n  };\n}\n(_._resume(\"b0\", $valueChange), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-child/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `${_child_template}source=<!>`;\nexport const $walks = /* <child>, over(1), replace, over(1) */`/${_child_walks}&b%b`;\nimport { $setup as _child, $input as _child_input, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $source = /* @__PURE__ */_._let(\"source/2\", $scope => {\n  _child_input($scope[\"#childScope/0\"], {\n    value: $scope.source,\n    valueChange: $valueChange($scope)\n  });\n  _._text($scope[\"#text/1\"], $scope.source);\n});\nexport function $setup($scope) {\n  _child($scope[\"#childScope/0\"]);\n  $source($scope, 1);\n}\nfunction $valueChange($scope) {\n  return _new_source => {\n    $source($scope, _new_source);\n  };\n}\n_._resume(\"__tests__/template.marko_0/valueChange\", $valueChange);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-child/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let state = input.value;\n  let otherState = input[\"value\"];\n  let thirdState = input.value;\n  _._html(`<button>${_._escape(input.value)}${_._el_resume($scope0_id, \"#text/1\", _._serialize_guard($scope0_reason, /* input.value */0))}|<!>${_._escape(state)}${_._el_resume($scope0_id, \"#text/2\")}</button>${_._el_resume($scope0_id, \"#button/0\")}<button>${_._escape(input.value)}${_._el_resume($scope0_id, \"#text/4\", _._serialize_guard($scope0_reason, /* input.value */0))}|<!>${_._escape(otherState)}${_._el_resume($scope0_id, \"#text/5\")}</button>${_._el_resume($scope0_id, \"#button/3\")}<button>${_._escape(input.value)}${_._el_resume($scope0_id, \"#text/7\", _._serialize_guard($scope0_reason, /* input.value */0))}|<!>${_._escape(thirdState)}${_._el_resume($scope0_id, \"#text/8\")}</button>${_._el_resume($scope0_id, \"#button/6\")}`);\n  _._script($scope0_id, \"__tests__/tags/child.marko_0_thirdState\");\n  _._script($scope0_id, \"__tests__/tags/child.marko_0_otherState\");\n  _._script($scope0_id, \"__tests__/tags/child.marko_0_state\");\n  _._scope($scope0_id, {\n    input_value: _._serialize_if($scope0_reason, /* input.valueChange */1) && input.value,\n    input_valueChange: _._serialize_if($scope0_reason, /* input.value */0) && input.valueChange,\n    state,\n    otherState,\n    thirdState,\n    \"TagVariableChange:state\": input.valueChange || void 0,\n    \"TagVariableChange:otherState\": input[\"value\" + \"Change\"] || void 0,\n    \"TagVariableChange:thirdState\": input.valueChange || void 0\n  }, \"__tests__/tags/child.marko\", 0, {\n    input_value: [\"input.value\"],\n    input_valueChange: [\"input.valueChange\"],\n    state: \"1:6\",\n    otherState: \"6:6\",\n    thirdState: \"11:6\"\n  });\n  _._resume_branch($scope0_id);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-child/__snapshots__/html.expected/template.js",
    "content": "import _child from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let source = 1;\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason(1);\n  _child({\n    value: source,\n    valueChange: _._resume(_new_source => {\n      source = _new_source;\n    }, \"__tests__/template.marko_0/valueChange\", $scope0_id)\n  });\n  _._html(`source=<!>${_._escape(source)}${_._el_resume($scope0_id, \"#text/1\")}`);\n  _._scope($scope0_id, {\n    \"#childScope/0\": _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-child/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  1|1\n</button>\n<button>\n  1|1\n</button>\n<button>\n  1|1\n</button>\nsource=1\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\").forEach(item => item.click());\n```\n```html\n<button>\n  2|2\n</button>\n<button>\n  2|2\n</button>\n<button>\n  2|2\n</button>\nsource=2\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\").forEach(item => item.click());\n```\n```html\n<button>\n  3|3\n</button>\n<button>\n  3|3\n</button>\n<button>\n  3|3\n</button>\nsource=3\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\").forEach(item => item.click());\n```\n```html\n<button>\n  4|4\n</button>\n<button>\n  4|4\n</button>\n<button>\n  4|4\n</button>\nsource=4\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-child/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*2 #text/1-->\n      |\n      <!---->\n      1\n      <!--M_*2 #text/2-->\n    </button>\n    <!--M_*2 #button/0-->\n    <button>\n      1\n      <!--M_*2 #text/4-->\n      |\n      <!---->\n      1\n      <!--M_*2 #text/5-->\n    </button>\n    <!--M_*2 #button/3-->\n    <button>\n      1\n      <!--M_*2 #text/7-->\n      |\n      <!---->\n      1\n      <!--M_*2 #text/8-->\n    </button>\n    <!--M_*2 #button/6-->\n    source=\n    <!---->\n    1\n    <!--M_*1 #text/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n            \"#childScope/0\": _.a = {\n              input_value: 1,\n              state: 1,\n              otherState: 1,\n              thirdState: 1\n            }\n          }, _.a], _.a.input_valueChange = _.a[\"TagVariableChange:state\"] = _\n          .a[\"TagVariableChange:otherState\"] = _.a[\n            \"TagVariableChange:thirdState\"] = _._[\n            \"__tests__/template.marko_0/valueChange\"\n            ](_.c), _.b),\n        \"__tests__/tags/child.marko_0_thirdState 2 __tests__/tags/child.marko_0_otherState 2 __tests__/tags/child.marko_0_state 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\").forEach(item => item.click());\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      2\n      <!--M_*2 #text/1-->\n      |\n      <!---->\n      2\n      <!--M_*2 #text/2-->\n    </button>\n    <!--M_*2 #button/0-->\n    <button>\n      2\n      <!--M_*2 #text/4-->\n      |\n      <!---->\n      2\n      <!--M_*2 #text/5-->\n    </button>\n    <!--M_*2 #button/3-->\n    <button>\n      2\n      <!--M_*2 #text/7-->\n      |\n      <!---->\n      2\n      <!--M_*2 #text/8-->\n    </button>\n    <!--M_*2 #button/6-->\n    source=\n    <!---->\n    2\n    <!--M_*1 #text/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n            \"#childScope/0\": _.a = {\n              input_value: 1,\n              state: 1,\n              otherState: 1,\n              thirdState: 1\n            }\n          }, _.a], _.a.input_valueChange = _.a[\"TagVariableChange:state\"] = _\n          .a[\"TagVariableChange:otherState\"] = _.a[\n            \"TagVariableChange:thirdState\"] = _._[\n            \"__tests__/template.marko_0/valueChange\"\n            ](_.c), _.b),\n        \"__tests__/tags/child.marko_0_thirdState 2 __tests__/tags/child.marko_0_otherState 2 __tests__/tags/child.marko_0_state 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button0/#text0 \"1\" => \"2\"\nUPDATE html/body/button1/#text0 \"1\" => \"2\"\nUPDATE html/body/button2/#text0 \"1\" => \"2\"\nUPDATE html/body/button1/#text2 \"1\" => \"2\"\nUPDATE html/body/#text1 \"1\" => \"2\"\nUPDATE html/body/button0/#text2 \"1\" => \"2\"\nUPDATE html/body/button2/#text2 \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\").forEach(item => item.click());\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      3\n      <!--M_*2 #text/1-->\n      |\n      <!---->\n      3\n      <!--M_*2 #text/2-->\n    </button>\n    <!--M_*2 #button/0-->\n    <button>\n      3\n      <!--M_*2 #text/4-->\n      |\n      <!---->\n      3\n      <!--M_*2 #text/5-->\n    </button>\n    <!--M_*2 #button/3-->\n    <button>\n      3\n      <!--M_*2 #text/7-->\n      |\n      <!---->\n      3\n      <!--M_*2 #text/8-->\n    </button>\n    <!--M_*2 #button/6-->\n    source=\n    <!---->\n    3\n    <!--M_*1 #text/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n            \"#childScope/0\": _.a = {\n              input_value: 1,\n              state: 1,\n              otherState: 1,\n              thirdState: 1\n            }\n          }, _.a], _.a.input_valueChange = _.a[\"TagVariableChange:state\"] = _\n          .a[\"TagVariableChange:otherState\"] = _.a[\n            \"TagVariableChange:thirdState\"] = _._[\n            \"__tests__/template.marko_0/valueChange\"\n            ](_.c), _.b),\n        \"__tests__/tags/child.marko_0_thirdState 2 __tests__/tags/child.marko_0_otherState 2 __tests__/tags/child.marko_0_state 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button0/#text0 \"2\" => \"3\"\nUPDATE html/body/button1/#text0 \"2\" => \"3\"\nUPDATE html/body/button2/#text0 \"2\" => \"3\"\nUPDATE html/body/button1/#text2 \"2\" => \"3\"\nUPDATE html/body/#text1 \"2\" => \"3\"\nUPDATE html/body/button0/#text2 \"2\" => \"3\"\nUPDATE html/body/button2/#text2 \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\").forEach(item => item.click());\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      4\n      <!--M_*2 #text/1-->\n      |\n      <!---->\n      4\n      <!--M_*2 #text/2-->\n    </button>\n    <!--M_*2 #button/0-->\n    <button>\n      4\n      <!--M_*2 #text/4-->\n      |\n      <!---->\n      4\n      <!--M_*2 #text/5-->\n    </button>\n    <!--M_*2 #button/3-->\n    <button>\n      4\n      <!--M_*2 #text/7-->\n      |\n      <!---->\n      4\n      <!--M_*2 #text/8-->\n    </button>\n    <!--M_*2 #button/6-->\n    source=\n    <!---->\n    4\n    <!--M_*1 #text/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n            \"#childScope/0\": _.a = {\n              input_value: 1,\n              state: 1,\n              otherState: 1,\n              thirdState: 1\n            }\n          }, _.a], _.a.input_valueChange = _.a[\"TagVariableChange:state\"] = _\n          .a[\"TagVariableChange:otherState\"] = _.a[\n            \"TagVariableChange:thirdState\"] = _._[\n            \"__tests__/template.marko_0/valueChange\"\n            ](_.c), _.b),\n        \"__tests__/tags/child.marko_0_thirdState 2 __tests__/tags/child.marko_0_otherState 2 __tests__/tags/child.marko_0_state 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button0/#text0 \"3\" => \"4\"\nUPDATE html/body/button1/#text0 \"3\" => \"4\"\nUPDATE html/body/button2/#text0 \"3\" => \"4\"\nUPDATE html/body/button1/#text2 \"3\" => \"4\"\nUPDATE html/body/#text1 \"3\" => \"4\"\nUPDATE html/body/button0/#text2 \"3\" => \"4\"\nUPDATE html/body/button2/#text2 \"3\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-child/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  1|1\n</button>\n<button>\n  1|1\n</button>\n<button>\n  1|1\n</button>\nsource=1\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-child/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>1<!--M_*2 #text/1-->|<!>1<!--M_*2 #text/2--></button><!--M_*2 #button/0--><button>1<!--M_*2 #text/4-->|<!>1<!--M_*2 #text/5--></button><!--M_*2 #button/3--><button>1<!--M_*2 #text/7-->|<!>1<!--M_*2 #text/8--></button><!--M_*2 #button/6-->source=<!>1<!--M_*1 #text/1--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.c={\"#childScope/0\":_.a={input_value:1,state:1,otherState:1,thirdState:1}},_.a],_.a.input_valueChange=_.a[\"TagVariableChange:state\"]=_.a[\"TagVariableChange:otherState\"]=_.a[\"TagVariableChange:thirdState\"]=_._[\"__tests__/template.marko_0/valueChange\"](_.c),_.b),\"__tests__/tags/child.marko_0_thirdState 2 __tests__/tags/child.marko_0_otherState 2 __tests__/tags/child.marko_0_state 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*2 #text/1-->\n      |\n      <!---->\n      1\n      <!--M_*2 #text/2-->\n    </button>\n    <!--M_*2 #button/0-->\n    <button>\n      1\n      <!--M_*2 #text/4-->\n      |\n      <!---->\n      1\n      <!--M_*2 #text/5-->\n    </button>\n    <!--M_*2 #button/3-->\n    <button>\n      1\n      <!--M_*2 #text/7-->\n      |\n      <!---->\n      1\n      <!--M_*2 #text/8-->\n    </button>\n    <!--M_*2 #button/6-->\n    source=\n    <!---->\n    1\n    <!--M_*1 #text/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n            \"#childScope/0\": _.a = {\n              input_value: 1,\n              state: 1,\n              otherState: 1,\n              thirdState: 1\n            }\n          }, _.a], _.a.input_valueChange = _.a[\"TagVariableChange:state\"] = _\n          .a[\"TagVariableChange:otherState\"] = _.a[\n            \"TagVariableChange:thirdState\"] = _._[\n            \"__tests__/template.marko_0/valueChange\"\n            ](_.c), _.b),\n        \"__tests__/tags/child.marko_0_thirdState 2 __tests__/tags/child.marko_0_otherState 2 __tests__/tags/child.marko_0_state 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button0\nINSERT html/body/button0/#text0\nINSERT html/body/button0/#comment0\nINSERT html/body/button0/#text1\nINSERT html/body/button0/#comment1\nINSERT html/body/button0/#text2\nINSERT html/body/button0/#comment2\nINSERT html/body/#comment0\nINSERT html/body/button1\nINSERT html/body/button1/#text0\nINSERT html/body/button1/#comment0\nINSERT html/body/button1/#text1\nINSERT html/body/button1/#comment1\nINSERT html/body/button1/#text2\nINSERT html/body/button1/#comment2\nINSERT html/body/#comment1\nINSERT html/body/button2\nINSERT html/body/button2/#text0\nINSERT html/body/button2/#comment0\nINSERT html/body/button2/#text1\nINSERT html/body/button2/#comment1\nINSERT html/body/button2/#text2\nINSERT html/body/button2/#comment2\nINSERT html/body/#comment2\nINSERT html/body/#text0\nINSERT html/body/#comment3\nINSERT html/body/#text1\nINSERT html/body/#comment4\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-child/tags/child.marko",
    "content": "<let/state:=input.value/>\n<button onClick() { state++; }>\n  ${input.value}|${state}\n</button>\n\n<let/otherState:=input[\"value\"]/>\n<button onClick() { otherState++; }>\n  ${input.value}|${otherState}\n</button>\n\n<let/thirdState:=((input.value))>\n<button onClick() { thirdState++; }>\n  ${input.value}|${thirdState}\n</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-child/template.marko",
    "content": "<let/source=1/>\n<child value:=source />\n-- source=${source}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-child/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelectorAll(\"button\")!.forEach((item) => item.click());\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-compile-error/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-compile-error/template.marko:2:22\n      1 | <let/x=1/>\n    > 2 | <let/y=x valueChange=5 />\n        |                      ^ The [`<let>` tag](https://markojs.com/docs/reference/core-tag#let) [`valueChange=` attribute](https://markojs.com/docs/reference/core-tag#controllable-let) must be a function.\n      3 | <button onClick() { y++; }>\n      4 |   ${x}|${y}\n      5 | </button>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-compile-error/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-compile-error/template.marko:2:22\n      1 | <let/x=1/>\n    > 2 | <let/y=x valueChange=5 />\n        |                      ^ The [`<let>` tag](https://markojs.com/docs/reference/core-tag#let) [`valueChange=` attribute](https://markojs.com/docs/reference/core-tag#controllable-let) must be a function.\n      3 | <button onClick() { y++; }>\n      4 |   ${x}|${y}\n      5 | </button>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-compile-error/template.marko",
    "content": "<let/x=1/>\n<let/y=x valueChange=5 />\n<button onClick() { y++; }>\n  ${x}|${y}\n</button>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-compile-error/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n  skip_resume: true,\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-dynamic-change-handler/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$y__script\": \"n\",\n      \"$$y\": \"r\",\n      \"$$x__OR__yChange\": \"c\",\n      \"$$x\": \"e\",\n      \"$$yChange2\": \"i\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-dynamic-change-handler/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  id=\"inc\"\n>\n  1|1\n</button>\n<button\n  id=\"toggle\"\n>\n  toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#inc\").click();\n```\n```html\n<button\n  id=\"inc\"\n>\n  3|3\n</button>\n<button\n  id=\"toggle\"\n>\n  toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#inc\").click();\n```\n```html\n<button\n  id=\"inc\"\n>\n  5|5\n</button>\n<button\n  id=\"toggle\"\n>\n  toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#toggle\").click();\n```\n```html\n<button\n  id=\"inc\"\n>\n  5|5\n</button>\n<button\n  id=\"toggle\"\n>\n  toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#inc\").click();\n```\n```html\n<button\n  id=\"inc\"\n>\n  5|6\n</button>\n<button\n  id=\"toggle\"\n>\n  toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#inc\").click();\n```\n```html\n<button\n  id=\"inc\"\n>\n  5|7\n</button>\n<button\n  id=\"toggle\"\n>\n  toggle\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-dynamic-change-handler/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button\n  id=\"inc\"\n>\n  1|1\n</button>\n<button\n  id=\"toggle\"\n>\n  toggle\n</button>\n```\n\n# Mutations\n```\nINSERT button0, button1\n```\n\n# Render\n```js\ncontainer.querySelector(\"#inc\").click();\n```\n```html\n<button\n  id=\"inc\"\n>\n  3|3\n</button>\n<button\n  id=\"toggle\"\n>\n  toggle\n</button>\n```\n\n# Mutations\n```\nUPDATE button0/#text0 \"1\" => \"3\"\nUPDATE button0/#text2 \"1\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#inc\").click();\n```\n```html\n<button\n  id=\"inc\"\n>\n  5|5\n</button>\n<button\n  id=\"toggle\"\n>\n  toggle\n</button>\n```\n\n# Mutations\n```\nUPDATE button0/#text0 \"3\" => \"5\"\nUPDATE button0/#text2 \"3\" => \"5\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#toggle\").click();\n```\n```html\n<button\n  id=\"inc\"\n>\n  5|5\n</button>\n<button\n  id=\"toggle\"\n>\n  toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#inc\").click();\n```\n```html\n<button\n  id=\"inc\"\n>\n  5|6\n</button>\n<button\n  id=\"toggle\"\n>\n  toggle\n</button>\n```\n\n# Mutations\n```\nUPDATE button0/#text2 \"5\" => \"6\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#inc\").click();\n```\n```html\n<button\n  id=\"inc\"\n>\n  5|7\n</button>\n<button\n  id=\"toggle\"\n>\n  toggle\n</button>\n```\n\n# Mutations\n```\nUPDATE button0/#text2 \"6\" => \"7\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-dynamic-change-handler/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 310 (min) 167 (brotli)\nconst $y__script = _._script(\"a1\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $y($scope, $scope.h + 1);\n    }),\n  ),\n  $y = _._let(7, ($scope) => {\n    (_._text($scope.c, $scope.h), $y__script($scope));\n  }),\n  $x__OR__yChange = _._or(6, ($scope) => $y($scope, $scope.e, $scope.f)),\n  $x = _._let(4, ($scope) => {\n    (_._text($scope.b, $scope.e), $x__OR__yChange($scope));\n  }),\n  $yChange2 = _._let(5, $x__OR__yChange);\n(_._script(\"a2\", ($scope) =>\n  _._on($scope.d, \"click\", function () {\n    $yChange2($scope, null);\n  }),\n),\n  _._resume(\"a0\", function ($scope) {\n    return function (newValue) {\n      $x($scope, newValue + 1);\n    };\n  }),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-dynamic-change-handler/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button id=inc><!>|<!></button><button id=toggle>toggle</button>\";\nexport const $walks = /* get, next(1), replace, over(2), replace, out(1), get, over(1) */\" D%c%l b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $y__script = _._script(\"__tests__/template.marko_0_y\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $y($scope, $scope.y + 1);\n}));\nconst $y = /* @__PURE__ */_._let(\"y/7\", $scope => {\n  _._text($scope[\"#text/2\"], $scope.y);\n  $y__script($scope);\n});\nconst $x__OR__yChange = /* @__PURE__ */_._or(6, $scope => $y($scope, $scope.x, $scope.yChange));\nconst $x = /* @__PURE__ */_._let(\"x/4\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.x);\n  $x__OR__yChange($scope);\n});\nconst $yChange2 = /* @__PURE__ */_._let(\"yChange/5\", $x__OR__yChange);\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => _._on($scope[\"#button/3\"], \"click\", function () {\n  $yChange2($scope, null);\n}));\nexport function $setup($scope) {\n  $x($scope, 1);\n  $yChange2($scope, $yChange($scope));\n  $setup__script($scope);\n}\nfunction $yChange($scope) {\n  return function (newValue) {\n    $x($scope, newValue + 1);\n  };\n}\n_._resume(\"__tests__/template.marko_0/yChange\", $yChange);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-dynamic-change-handler/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let x = 1;\n  let yChange = _._resume(function (newValue) {\n    x = newValue + 1;\n  }, \"__tests__/template.marko_0/yChange\", $scope0_id);\n  let y = x;\n  _._html(`<button id=inc>${_._escape(x)}${_._el_resume($scope0_id, \"#text/1\")}|<!>${_._escape(y)}${_._el_resume($scope0_id, \"#text/2\")}</button>${_._el_resume($scope0_id, \"#button/0\")}<button id=toggle>toggle</button>${_._el_resume($scope0_id, \"#button/3\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._script($scope0_id, \"__tests__/template.marko_0_y\");\n  _._scope($scope0_id, {\n    x,\n    yChange,\n    y,\n    \"TagVariableChange:y\": yChange || void 0\n  }, \"__tests__/template.marko\", 0, {\n    x: \"1:6\",\n    yChange: \"2:6\",\n    y: \"3:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-dynamic-change-handler/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  id=\"inc\"\n>\n  1|1\n</button>\n<button\n  id=\"toggle\"\n>\n  toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#inc\").click();\n```\n```html\n<button\n  id=\"inc\"\n>\n  3|3\n</button>\n<button\n  id=\"toggle\"\n>\n  toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#inc\").click();\n```\n```html\n<button\n  id=\"inc\"\n>\n  5|5\n</button>\n<button\n  id=\"toggle\"\n>\n  toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#toggle\").click();\n```\n```html\n<button\n  id=\"inc\"\n>\n  5|5\n</button>\n<button\n  id=\"toggle\"\n>\n  toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#inc\").click();\n```\n```html\n<button\n  id=\"inc\"\n>\n  5|6\n</button>\n<button\n  id=\"toggle\"\n>\n  toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#inc\").click();\n```\n```html\n<button\n  id=\"inc\"\n>\n  5|7\n</button>\n<button\n  id=\"toggle\"\n>\n  toggle\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-dynamic-change-handler/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"inc\"\n    >\n      1\n      <!--M_*1 #text/1-->\n      |\n      <!---->\n      1\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      id=\"toggle\"\n    >\n      toggle\n    </button>\n    <!--M_*1 #button/3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          x: 1,\n          y: 1\n        }], _.a.yChange = _.a[\"TagVariableChange:y\"] = _._[\n          \"__tests__/template.marko_0/yChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1 __tests__/template.marko_0_y 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#inc\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"inc\"\n    >\n      3\n      <!--M_*1 #text/1-->\n      |\n      <!---->\n      3\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      id=\"toggle\"\n    >\n      toggle\n    </button>\n    <!--M_*1 #button/3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          x: 1,\n          y: 1\n        }], _.a.yChange = _.a[\"TagVariableChange:y\"] = _._[\n          \"__tests__/template.marko_0/yChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1 __tests__/template.marko_0_y 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button0/#text0 \"1\" => \"3\"\nUPDATE html/body/button0/#text2 \"1\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#inc\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"inc\"\n    >\n      5\n      <!--M_*1 #text/1-->\n      |\n      <!---->\n      5\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      id=\"toggle\"\n    >\n      toggle\n    </button>\n    <!--M_*1 #button/3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          x: 1,\n          y: 1\n        }], _.a.yChange = _.a[\"TagVariableChange:y\"] = _._[\n          \"__tests__/template.marko_0/yChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1 __tests__/template.marko_0_y 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button0/#text0 \"3\" => \"5\"\nUPDATE html/body/button0/#text2 \"3\" => \"5\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#toggle\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"inc\"\n    >\n      5\n      <!--M_*1 #text/1-->\n      |\n      <!---->\n      5\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      id=\"toggle\"\n    >\n      toggle\n    </button>\n    <!--M_*1 #button/3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          x: 1,\n          y: 1\n        }], _.a.yChange = _.a[\"TagVariableChange:y\"] = _._[\n          \"__tests__/template.marko_0/yChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1 __tests__/template.marko_0_y 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#inc\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"inc\"\n    >\n      5\n      <!--M_*1 #text/1-->\n      |\n      <!---->\n      6\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      id=\"toggle\"\n    >\n      toggle\n    </button>\n    <!--M_*1 #button/3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          x: 1,\n          y: 1\n        }], _.a.yChange = _.a[\"TagVariableChange:y\"] = _._[\n          \"__tests__/template.marko_0/yChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1 __tests__/template.marko_0_y 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button0/#text2 \"5\" => \"6\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#inc\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"inc\"\n    >\n      5\n      <!--M_*1 #text/1-->\n      |\n      <!---->\n      7\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      id=\"toggle\"\n    >\n      toggle\n    </button>\n    <!--M_*1 #button/3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          x: 1,\n          y: 1\n        }], _.a.yChange = _.a[\"TagVariableChange:y\"] = _._[\n          \"__tests__/template.marko_0/yChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1 __tests__/template.marko_0_y 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button0/#text2 \"6\" => \"7\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-dynamic-change-handler/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button\n  id=\"inc\"\n>\n  1|1\n</button>\n<button\n  id=\"toggle\"\n>\n  toggle\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-dynamic-change-handler/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button id=inc>1<!--M_*1 #text/1-->|<!>1<!--M_*1 #text/2--></button><!--M_*1 #button/0--><button id=toggle>toggle</button><!--M_*1 #button/3--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={x:1,y:1}],_.a.yChange=_.a[\"TagVariableChange:y\"]=_._[\"__tests__/template.marko_0/yChange\"](_.a),_.b),\"__tests__/template.marko_0 1 __tests__/template.marko_0_y 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"inc\"\n    >\n      1\n      <!--M_*1 #text/1-->\n      |\n      <!---->\n      1\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      id=\"toggle\"\n    >\n      toggle\n    </button>\n    <!--M_*1 #button/3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          x: 1,\n          y: 1\n        }], _.a.yChange = _.a[\"TagVariableChange:y\"] = _._[\n          \"__tests__/template.marko_0/yChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1 __tests__/template.marko_0_y 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button0\nINSERT html/body/button0/#text0\nINSERT html/body/button0/#comment0\nINSERT html/body/button0/#text1\nINSERT html/body/button0/#comment1\nINSERT html/body/button0/#text2\nINSERT html/body/button0/#comment2\nINSERT html/body/#comment0\nINSERT html/body/button1\nINSERT html/body/button1/#text\nINSERT html/body/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-dynamic-change-handler/template.marko",
    "content": "<let/x=1/>\n<let/yChange(newValue) { x = newValue + 1; }/>\n<let/y=x valueChange=yChange/>\n<button id=\"inc\" onClick() { y++; }>\n  ${x}|${y}\n</button>\n<button id=\"toggle\" onClick() { yChange = null; }>\n  toggle\n</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-dynamic-change-handler/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction increment(container: Element) {\n  container.querySelector<HTMLButtonElement>(\"#inc\")!.click();\n}\n\nfunction toggle(container: Element) {\n  container.querySelector<HTMLButtonElement>(\"#toggle\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, increment, increment, toggle, increment, increment],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-id/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$y__script\": \"r\",\n      \"$$y\": \"m\",\n      \"$$x__OR__handler\": \"n\",\n      \"$$x\": \"e\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-id/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  1|1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3|3\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  5|5\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  7|7\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-id/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  1|1\n</button>\n```\n\n# Mutations\n```\nINSERT button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3|3\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text0 \"1\" => \"3\"\nUPDATE button/#text2 \"1\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  5|5\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text0 \"3\" => \"5\"\nUPDATE button/#text2 \"3\" => \"5\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  7|7\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text0 \"5\" => \"7\"\nUPDATE button/#text2 \"5\" => \"7\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-id/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 236 (min) 161 (brotli)\nconst $y__script = _._script(\"a1\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $y($scope, $scope.g + 1);\n    }),\n  ),\n  $y = _._let(6, ($scope) => {\n    (_._text($scope.c, $scope.g), $y__script($scope));\n  }),\n  $x__OR__handler = _._or(5, ($scope) => $y($scope, $scope.d, $scope.e)),\n  $x = _._let(3, ($scope) => {\n    (_._text($scope.b, $scope.d), $x__OR__handler($scope));\n  });\n(_._resume(\"a0\", function ($scope) {\n  return function (newValue) {\n    $x($scope, newValue + 1);\n  };\n}),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-id/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button><!>|<!></button>\";\nexport const $walks = /* get, next(1), replace, over(2), replace, out(1) */\" D%c%l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $y__script = _._script(\"__tests__/template.marko_0_y\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $y($scope, $scope.y + 1);\n}));\nconst $y = /* @__PURE__ */_._let(\"y/6\", $scope => {\n  _._text($scope[\"#text/2\"], $scope.y);\n  $y__script($scope);\n});\nconst $x__OR__handler = /* @__PURE__ */_._or(5, $scope => $y($scope, $scope.x, $scope.handler));\nconst $x = /* @__PURE__ */_._let(\"x/3\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.x);\n  $x__OR__handler($scope);\n});\nconst $handler2 = /* @__PURE__ */_._let(\"handler/4\", $x__OR__handler);\nexport function $setup($scope) {\n  $x($scope, 1);\n  $handler2($scope, $handler($scope));\n}\nfunction $handler($scope) {\n  return function (newValue) {\n    $x($scope, newValue + 1);\n  };\n}\n_._resume(\"__tests__/template.marko_0/handler\", $handler);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-id/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let x = 1;\n  let handler = _._resume(function (newValue) {\n    x = newValue + 1;\n  }, \"__tests__/template.marko_0/handler\", $scope0_id);\n  let y = x;\n  _._html(`<button>${_._escape(x)}${_._el_resume($scope0_id, \"#text/1\")}|<!>${_._escape(y)}${_._el_resume($scope0_id, \"#text/2\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_y\");\n  _._scope($scope0_id, {\n    handler,\n    y,\n    \"TagVariableChange:y\": handler || void 0\n  }, \"__tests__/template.marko\", 0, {\n    handler: \"2:6\",\n    y: \"3:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-id/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  1|1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3|3\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  5|5\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  7|7\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-id/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*1 #text/1-->\n      |\n      <!---->\n      1\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          y: 1\n        }], _.a.handler = _.a[\"TagVariableChange:y\"] = _._[\n          \"__tests__/template.marko_0/handler\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_y 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      3\n      <!--M_*1 #text/1-->\n      |\n      <!---->\n      3\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          y: 1\n        }], _.a.handler = _.a[\"TagVariableChange:y\"] = _._[\n          \"__tests__/template.marko_0/handler\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_y 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text0 \"1\" => \"3\"\nUPDATE html/body/button/#text2 \"1\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      5\n      <!--M_*1 #text/1-->\n      |\n      <!---->\n      5\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          y: 1\n        }], _.a.handler = _.a[\"TagVariableChange:y\"] = _._[\n          \"__tests__/template.marko_0/handler\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_y 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text0 \"3\" => \"5\"\nUPDATE html/body/button/#text2 \"3\" => \"5\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      7\n      <!--M_*1 #text/1-->\n      |\n      <!---->\n      7\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          y: 1\n        }], _.a.handler = _.a[\"TagVariableChange:y\"] = _._[\n          \"__tests__/template.marko_0/handler\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_y 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text0 \"5\" => \"7\"\nUPDATE html/body/button/#text2 \"5\" => \"7\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-id/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  1|1\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-id/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>1<!--M_*1 #text/1-->|<!>1<!--M_*1 #text/2--></button><!--M_*1 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={y:1}],_.a.handler=_.a[\"TagVariableChange:y\"]=_._[\"__tests__/template.marko_0/handler\"](_.a),_.b),\"__tests__/template.marko_0_y 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*1 #text/1-->\n      |\n      <!---->\n      1\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          y: 1\n        }], _.a.handler = _.a[\"TagVariableChange:y\"] = _._[\n          \"__tests__/template.marko_0/handler\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_y 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text0\nINSERT html/body/button/#comment0\nINSERT html/body/button/#text1\nINSERT html/body/button/#comment1\nINSERT html/body/button/#text2\nINSERT html/body/button/#comment2\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-id/template.marko",
    "content": "<let/x=1/>\n<let/handler(newValue) { x = newValue + 1; }/>\n<let/y=x valueChange=handler/>\n<button onClick() { y++; }>\n  ${x}|${y}\n</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-id/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-static/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$y__script\": \"r\",\n      \"$$y\": \"e\",\n      \"$$x\": \"m\",\n      \"$$valueChange\": \"n\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-static/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  1|1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3|3\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  5|5\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  7|7\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-static/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  1|1\n</button>\n```\n\n# Mutations\n```\nINSERT button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3|3\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text0 \"1\" => \"3\"\nUPDATE button/#text2 \"1\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  5|5\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text0 \"3\" => \"5\"\nUPDATE button/#text2 \"3\" => \"5\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  7|7\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text0 \"5\" => \"7\"\nUPDATE button/#text2 \"5\" => \"7\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-static/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 221 (min) 149 (brotli)\nconst $y__script = _._script(\"a1\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $y($scope, $scope.e + 1);\n    }),\n  ),\n  $y = _._let(4, ($scope) => {\n    (_._text($scope.c, $scope.e), $y__script($scope));\n  }),\n  $x = _._let(3, ($scope) => {\n    (_._text($scope.b, $scope.d), $y($scope, $scope.d, $valueChange($scope)));\n  });\nfunction $valueChange($scope) {\n  return function (newValue) {\n    $x($scope, newValue + 1);\n  };\n}\n(_._resume(\"a0\", $valueChange), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-static/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button><!>|<!></button>\";\nexport const $walks = /* get, next(1), replace, over(2), replace, out(1) */\" D%c%l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $y__script = _._script(\"__tests__/template.marko_0_y\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $y($scope, $scope.y + 1);\n}));\nconst $y = /* @__PURE__ */_._let(\"y/4\", $scope => {\n  _._text($scope[\"#text/2\"], $scope.y);\n  $y__script($scope);\n});\nconst $x = /* @__PURE__ */_._let(\"x/3\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.x);\n  $y($scope, $scope.x, $valueChange($scope));\n});\nexport function $setup($scope) {\n  $x($scope, 1);\n}\nfunction $valueChange($scope) {\n  return function (newValue) {\n    $x($scope, newValue + 1);\n  };\n}\n_._resume(\"__tests__/template.marko_0/valueChange\", $valueChange);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-static/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let x = 1;\n  let y = x;\n  _._html(`<button>${_._escape(x)}${_._el_resume($scope0_id, \"#text/1\")}|<!>${_._escape(y)}${_._el_resume($scope0_id, \"#text/2\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_y\");\n  _._scope($scope0_id, {\n    y,\n    \"TagVariableChange:y\": _._resume(function (newValue) {\n      x = newValue + 1;\n    }, \"__tests__/template.marko_0/valueChange\", $scope0_id) || void 0\n  }, \"__tests__/template.marko\", 0, {\n    y: \"2:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-static/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  1|1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3|3\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  5|5\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  7|7\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-static/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*1 #text/1-->\n      |\n      <!---->\n      1\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          y: 1\n        }], _.a[\"TagVariableChange:y\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_y 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      3\n      <!--M_*1 #text/1-->\n      |\n      <!---->\n      3\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          y: 1\n        }], _.a[\"TagVariableChange:y\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_y 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text0 \"1\" => \"3\"\nUPDATE html/body/button/#text2 \"1\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      5\n      <!--M_*1 #text/1-->\n      |\n      <!---->\n      5\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          y: 1\n        }], _.a[\"TagVariableChange:y\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_y 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text0 \"3\" => \"5\"\nUPDATE html/body/button/#text2 \"3\" => \"5\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      7\n      <!--M_*1 #text/1-->\n      |\n      <!---->\n      7\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          y: 1\n        }], _.a[\"TagVariableChange:y\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_y 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text0 \"5\" => \"7\"\nUPDATE html/body/button/#text2 \"5\" => \"7\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-static/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  1|1\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-static/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>1<!--M_*1 #text/1-->|<!>1<!--M_*1 #text/2--></button><!--M_*1 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={y:1}],_.a[\"TagVariableChange:y\"]=_._[\"__tests__/template.marko_0/valueChange\"](_.a),_.b),\"__tests__/template.marko_0_y 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*1 #text/1-->\n      |\n      <!---->\n      1\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          y: 1\n        }], _.a[\"TagVariableChange:y\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_y 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text0\nINSERT html/body/button/#comment0\nINSERT html/body/button/#text1\nINSERT html/body/button/#comment1\nINSERT html/body/button/#text2\nINSERT html/body/button/#comment2\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-static/template.marko",
    "content": "<let/x=1/>\n<let/y=x valueChange(newValue) { x = newValue + 1; }/>\n<button onClick() { y++; }>\n  ${x}|${y}\n</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-controllable-static/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-derived/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"m\",\n      \"$$b__script\": \"o\",\n      \"$$b\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-derived/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"a\":2}`\n\n```html\n<button>\n  Increment\n</button>\n2 4\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Increment\n</button>\n2 5\n```\n\n\n# Render `{\"a\":3}`\n\n```html\n<button>\n  Increment\n</button>\n3 5\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Increment\n</button>\n3 6\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-derived/__snapshots__/csr.expected.md",
    "content": "# Render `{\"a\":2}`\n\n```html\n<button>\n  Increment\n</button>\n2 4\n```\n\n# Mutations\n```\nINSERT button, #text0, #text1, #text2\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Increment\n</button>\n2 5\n```\n\n# Mutations\n```\nUPDATE #text2 \"4\" => \"5\"\n```\n\n# Render `{\"a\":3}`\n\n```html\n<button>\n  Increment\n</button>\n3 5\n```\n\n# Mutations\n```\nUPDATE #text0 \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Increment\n</button>\n3 6\n```\n\n# Mutations\n```\nUPDATE #text2 \"5\" => \"6\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-derived/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 106 (min) 106 (brotli)\nconst $b__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", () => $b($scope, $scope.g + 1) - 1),\n  ),\n  $b = _._let(6, ($scope) => {\n    (_._text($scope.c, $scope.g), $b__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-derived/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button>Increment</button><!> <!>\";\nexport const $walks = /* get, over(1), replace, over(2), replace, over(1) */\" b%c%b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $b__script = _._script(\"__tests__/template.marko_0_b\", $scope => _._on($scope[\"#button/0\"], \"click\", () => $b($scope, $scope.b + 1) - 1));\nconst $b = /* @__PURE__ */_._let(\"b/6\", $scope => {\n  _._text($scope[\"#text/2\"], $scope.b);\n  $b__script($scope);\n});\nexport const $a = ($scope, a) => {\n  _._text($scope[\"#text/1\"], a);\n  $b($scope, a * 2);\n};\nexport const $input = ($scope, input) => $a($scope, input.a);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-derived/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    a\n  } = input;\n  let b = a * 2;\n  _._html(`<button>Increment</button>${_._el_resume($scope0_id, \"#button/0\")}${_._escape(a)}${_._el_resume($scope0_id, \"#text/1\", _._serialize_guard($scope0_reason, /* input.a */0))} <!>${_._escape(b)}${_._el_resume($scope0_id, \"#text/2\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_b\");\n  _._scope($scope0_id, {\n    b\n  }, \"__tests__/template.marko\", 0, {\n    b: \"2:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-derived/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"a\":2}`\n\n```html\n<button>\n  Increment\n</button>\n2 4\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Increment\n</button>\n2 5\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-derived/__snapshots__/resume.expected.md",
    "content": "# Render `{\"a\":2}`\n\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Increment\n    </button>\n    <!--M_*1 #button/0-->\n    2 \n    <!---->\n    4\n    <!--M_*1 #text/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          b: 4\n        }]),\n        \"__tests__/template.marko_0_b 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Increment\n    </button>\n    <!--M_*1 #button/0-->\n    2 \n    <!---->\n    5\n    <!--M_*1 #text/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          b: 4\n        }]),\n        \"__tests__/template.marko_0_b 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/#text1 \"4\" => \"5\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-derived/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  Increment\n</button>\n2 4\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-derived/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>Increment</button><!--M_*1 #button/0-->2 <!>4<!--M_*1 #text/2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{b:4}]),\"__tests__/template.marko_0_b 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Increment\n    </button>\n    <!--M_*1 #button/0-->\n    2 \n    <!---->\n    4\n    <!--M_*1 #text/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          b: 4\n        }]),\n        \"__tests__/template.marko_0_b 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment0\nINSERT html/body/#text0\nINSERT html/body/#comment1\nINSERT html/body/#text1\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-derived/template.marko",
    "content": "<const/{ a }=input/>\n<let/b = a * 2/>\n\n<button onClick=(() => b++)>\n  Increment\n</button>\n\n-- ${a} ${b}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-derived/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{ a: 2 }, click, { a: 3 }, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-set-in-effect/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"m\",\n      \"$$x__script\": \"o\",\n      \"$$x\": \"r\",\n      \"$$y\": \"a\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-set-in-effect/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<span>\n  1\n</span>\n<span>\n  0\n</span>\n```\n\n\n# Render ASYNC\n```html\n<span>\n  2\n</span>\n<span>\n  1\n</span>\n```\n\n\n# Render ASYNC\n```html\n<span>\n  2\n</span>\n<span>\n  2\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-set-in-effect/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<span>\n  1\n</span>\n<span>\n  0\n</span>\n```\n\n# Mutations\n```\nINSERT span0, span1\n```\n\n# Render ASYNC\n```html\n<span>\n  2\n</span>\n<span>\n  1\n</span>\n```\n\n# Mutations\n```\nUPDATE span0/#text \"1\" => \"2\"\nUPDATE span1/#text \"0\" => \"1\"\n```\n\n# Render ASYNC\n```html\n<span>\n  2\n</span>\n<span>\n  2\n</span>\n```\n\n# Mutations\n```\nUPDATE span1/#text \"1\" => \"2\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-set-in-effect/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 120 (min) 99 (brotli)\nconst $x__script = _._script(\"a0\", ($scope) => {\n    ($y($scope, $scope.c), $x($scope, 2));\n  }),\n  $x = _._let(2, ($scope) => {\n    (_._text($scope.a, $scope.c), $x__script($scope));\n  }),\n  $y = _._let(3, ($scope) => _._text($scope.b, $scope.d));\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-set-in-effect/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<span> </span><span> </span>\";\nexport const $walks = /* next(1), get, out(1), next(1), get, out(1) */\"D lD l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $x__script = _._script(\"__tests__/template.marko_0_x\", $scope => {\n  $y($scope, $scope.x);\n  $x($scope, 2);\n});\nconst $x = /* @__PURE__ */_._let(\"x/2\", $scope => {\n  _._text($scope[\"#text/0\"], $scope.x);\n  $x__script($scope);\n});\nconst $y = /* @__PURE__ */_._let(\"y/3\", $scope => _._text($scope[\"#text/1\"], $scope.y));\nexport function $setup($scope) {\n  $x($scope, 1);\n  $y($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-set-in-effect/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let x = 1;\n  let y = 0;\n  _._html(`<span>${_._escape(x)}${_._el_resume($scope0_id, \"#text/0\")}</span><span>${_._escape(y)}${_._el_resume($scope0_id, \"#text/1\")}</span>`);\n  _._script($scope0_id, \"__tests__/template.marko_0_x\");\n  _._scope($scope0_id, {\n    x\n  }, \"__tests__/template.marko\", 0, {\n    x: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-set-in-effect/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<span>\n  1\n</span>\n<span>\n  0\n</span>\n```\n\n\n# Render ASYNC\n```html\n<span>\n  2\n</span>\n<span>\n  1\n</span>\n```\n\n\n# Render ASYNC\n```html\n<span>\n  2\n</span>\n<span>\n  2\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-set-in-effect/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <span>\n      1\n      <!--M_*1 #text/0-->\n    </span>\n    <span>\n      0\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 1\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render ASYNC\n```html\n<html>\n  <head />\n  <body>\n    <span>\n      2\n      <!--M_*1 #text/0-->\n    </span>\n    <span>\n      1\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 1\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span0/#text \"1\" => \"2\"\nUPDATE html/body/span1/#text \"0\" => \"1\"\n```\n\n# Render ASYNC\n```html\n<html>\n  <head />\n  <body>\n    <span>\n      2\n      <!--M_*1 #text/0-->\n    </span>\n    <span>\n      2\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 1\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/span1/#text \"1\" => \"2\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-set-in-effect/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<span>\n  1\n</span>\n<span>\n  0\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-set-in-effect/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <span>1<!--M_*1 #text/0--></span><span>0<!--M_*1 #text/1--></span><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{x:1}]),\"__tests__/template.marko_0_x 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <span>\n      1\n      <!--M_*1 #text/0-->\n    </span>\n    <span>\n      0\n      <!--M_*1 #text/1-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 1\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/span0\nINSERT html/body/span0/#text\nINSERT html/body/span0/#comment\nINSERT html/body/span1\nINSERT html/body/span1/#text\nINSERT html/body/span1/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-set-in-effect/template.marko",
    "content": "<let/x=1/>\n<let/y=0/>\n\n<script>\n  y = x;\n  x = 2;\n</script>\n\n<span>${x}</span>\n<span>${y}</span>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-set-in-effect/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{}, wait],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-with-intersection/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$y__OR__z\": \"m\",\n      \"$$y\": \"r\",\n      \"$$z\": \"_\",\n      \"$$x__script\": \"e\",\n      \"$$x\": \"a\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-with-intersection/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  1\n</button>\n2 3 5\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n3 4 7\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n4 5 9\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  4\n</button>\n5 6 11\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-with-intersection/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  1\n</button>\n2 3 5\n```\n\n# Mutations\n```\nINSERT button, #text0, #text1, #text2, #text3, #text4\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n3 4 7\n```\n\n# Mutations\n```\nUPDATE button/#text \"1\" => \"2\"\nUPDATE #text0 \"2\" => \"3\"\nUPDATE #text2 \"3\" => \"4\"\nUPDATE #text4 \"5\" => \"7\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n4 5 9\n```\n\n# Mutations\n```\nUPDATE button/#text \"2\" => \"3\"\nUPDATE #text0 \"3\" => \"4\"\nUPDATE #text2 \"4\" => \"5\"\nUPDATE #text4 \"7\" => \"9\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  4\n</button>\n5 6 11\n```\n\n# Mutations\n```\nUPDATE button/#text \"3\" => \"4\"\nUPDATE #text0 \"4\" => \"5\"\nUPDATE #text2 \"5\" => \"6\"\nUPDATE #text4 \"9\" => \"11\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-with-intersection/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 259 (min) 154 (brotli)\nconst $y__OR__z = _._or(8, ($scope) =>\n    (($scope, a) => _._text($scope.e, a))($scope, $scope.g + $scope.h),\n  ),\n  $y = _._const(6, ($scope) => {\n    (_._text($scope.c, $scope.g), $y__OR__z($scope));\n  }),\n  $z = _._const(7, ($scope) => {\n    (_._text($scope.d, $scope.h), $y__OR__z($scope));\n  }),\n  $x__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", () => $x($scope, $scope.f + 1) - 1),\n  ),\n  $x = _._let(5, ($scope) => {\n    (_._text($scope.b, $scope.f),\n      $y($scope, $scope.f + 1),\n      $z($scope, $scope.f + 2),\n      $x__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-with-intersection/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button> </button><!> <!> <!>\";\nexport const $walks = /* get, next(1), get, out(1), replace, over(2), replace, over(2), replace, over(1) */\" D l%c%c%b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $a = ($scope, a) => _._text($scope[\"#text/4\"], a);\nconst $y__OR__z = /* @__PURE__ */_._or(8, $scope => $a($scope, $scope.y + $scope.z));\nconst $y = /* @__PURE__ */_._const(\"y\", $scope => {\n  _._text($scope[\"#text/2\"], $scope.y);\n  $y__OR__z($scope);\n});\nconst $z = /* @__PURE__ */_._const(\"z\", $scope => {\n  _._text($scope[\"#text/3\"], $scope.z);\n  $y__OR__z($scope);\n});\nconst $x__script = _._script(\"__tests__/template.marko_0_x\", $scope => _._on($scope[\"#button/0\"], \"click\", () => $x($scope, $scope.x + 1) - 1));\nconst $x = /* @__PURE__ */_._let(\"x/5\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.x);\n  $y($scope, $scope.x + 1);\n  $z($scope, $scope.x + 2);\n  $x__script($scope);\n});\nexport function $setup($scope) {\n  $x($scope, 1);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-with-intersection/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let x = 1;\n  const y = x + 1;\n  const z = x + 2;\n  const a = y + z;\n  _._html(`<button>${_._escape(x)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}${_._escape(y)}${_._el_resume($scope0_id, \"#text/2\")} <!>${_._escape(z)}${_._el_resume($scope0_id, \"#text/3\")} <!>${_._escape(a)}${_._el_resume($scope0_id, \"#text/4\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_x\");\n  _._scope($scope0_id, {\n    x\n  }, \"__tests__/template.marko\", 0, {\n    x: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-with-intersection/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  1\n</button>\n2 3 5\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n3 4 7\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n4 5 9\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  4\n</button>\n5 6 11\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-with-intersection/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    2\n    <!--M_*1 #text/2-->\n     \n    <!---->\n    3\n    <!--M_*1 #text/3-->\n     \n    <!---->\n    5\n    <!--M_*1 #text/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 1\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      2\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    3\n    <!--M_*1 #text/2-->\n     \n    <!---->\n    4\n    <!--M_*1 #text/3-->\n     \n    <!---->\n    7\n    <!--M_*1 #text/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 1\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"1\" => \"2\"\nUPDATE html/body/#text0 \"2\" => \"3\"\nUPDATE html/body/#text2 \"3\" => \"4\"\nUPDATE html/body/#text4 \"5\" => \"7\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      3\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    4\n    <!--M_*1 #text/2-->\n     \n    <!---->\n    5\n    <!--M_*1 #text/3-->\n     \n    <!---->\n    9\n    <!--M_*1 #text/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 1\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"2\" => \"3\"\nUPDATE html/body/#text0 \"3\" => \"4\"\nUPDATE html/body/#text2 \"4\" => \"5\"\nUPDATE html/body/#text4 \"7\" => \"9\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      4\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    5\n    <!--M_*1 #text/2-->\n     \n    <!---->\n    6\n    <!--M_*1 #text/3-->\n     \n    <!---->\n    11\n    <!--M_*1 #text/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 1\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"3\" => \"4\"\nUPDATE html/body/#text0 \"4\" => \"5\"\nUPDATE html/body/#text2 \"5\" => \"6\"\nUPDATE html/body/#text4 \"9\" => \"11\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-with-intersection/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  1\n</button>\n2 3 5\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-with-intersection/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>1<!--M_*1 #text/1--></button><!--M_*1 #button/0-->2<!--M_*1 #text/2--> <!>3<!--M_*1 #text/3--> <!>5<!--M_*1 #text/4--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{x:1}]),\"__tests__/template.marko_0_x 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    2\n    <!--M_*1 #text/2-->\n     \n    <!---->\n    3\n    <!--M_*1 #text/3-->\n     \n    <!---->\n    5\n    <!--M_*1 #text/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 1\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment0\nINSERT html/body/#text0\nINSERT html/body/#comment1\nINSERT html/body/#text1\nINSERT html/body/#comment2\nINSERT html/body/#text2\nINSERT html/body/#comment3\nINSERT html/body/#text3\nINSERT html/body/#comment4\nINSERT html/body/#text4\nINSERT html/body/#comment5\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-with-intersection/template.marko",
    "content": "<let/x=1/>\n<const/y = x + 1/>\n<const/z = x + 2/>\n<const/a = y + z/>\n<button onClick=(() => x++)>\n  ${x}\n</button>\n\n-- ${y} ${z} ${a}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-tag-with-intersection/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-undefined-until-dom/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"m\",\n      \"$$x\": \"o\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-undefined-until-dom/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  ‍\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div>\n  Client Only\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-undefined-until-dom/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  ‍\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render ASYNC\n```html\n<div>\n  Client Only\n</div>\n```\n\n# Mutations\n```\nUPDATE div/#text \"‍\" => \"Client Only\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-undefined-until-dom/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 80 (min) 77 (brotli)\nconst $x = _._let(1, ($scope) => _._text($scope.a, $scope.b));\n(_._script(\"a0\", ($scope) => $x($scope, \"Client Only\")), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-undefined-until-dom/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div> </div>\";\nexport const $walks = /* next(1), get, out(1) */\"D l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $x = /* @__PURE__ */_._let(\"x/1\", $scope => _._text($scope[\"#text/0\"], $scope.x));\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => $x($scope, \"Client Only\"));\nexport function $setup($scope) {\n  $x($scope, undefined);\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-undefined-until-dom/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let x = undefined;\n  _._html(`<div>${_._escape(x)}${_._el_resume($scope0_id, \"#text/0\")}</div>`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-undefined-until-dom/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  ‍\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div>\n  Client Only\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-undefined-until-dom/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      ‍\n      <!--M_*1 #text/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render ASYNC\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      Client Only\n      <!--M_*1 #text/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/#text \"‍\" => \"Client Only\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-undefined-until-dom/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  ‍\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-undefined-until-dom/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>&zwj;<!--M_*1 #text/0--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0]),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      ‍\n      <!--M_*1 #text/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/div/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-undefined-until-dom/template.marko",
    "content": "<let/x/>\n<script>\n  x = \"Client Only\"\n</script>\n\n<div>${x}</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-undefined-until-dom/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{}, wait],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-without-assignments/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"m\",\n      \"$init\": \"a\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-without-assignments/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<ul\n  class=\"mounted\"\n>\n  <li>\n    0\n  </li>\n</ul>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-without-assignments/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<ul\n  class=\"mounted\"\n>\n  <li>\n    0\n  </li>\n</ul>\n```\n\n# Mutations\n```\nINSERT ul\nUPDATE ul[class] null => \"mounted\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-without-assignments/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 52 (min) 52 (brotli)\n(_._script(\"a0\", ($scope) => $scope.a.classList.add(\"mounted\")), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-without-assignments/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<ul></ul>\";\nexport const $walks = /* get, over(1) */\" b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for_content__setup = $scope => _._text($scope[\"#text/0\"], $scope[\"#LoopKey\"]);\nconst $for = /* @__PURE__ */_._for_until(\"#ul/0\", \"<li> </li>\", /* next(1), get, out(1) */\"D l\", $for_content__setup);\nconst $count = /* @__PURE__ */_._let(\"count/1\", $scope => $for($scope, [$scope.count, 0, 1]));\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => _._el_read($scope[\"#ul/0\"]).classList.add(\"mounted\"));\nexport function $setup($scope) {\n  $count($scope, 1);\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-without-assignments/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let count = 1;\n  _._html(\"<ul>\");\n  _.forUntil(count, 0, 1, i => {\n    const $scope1_id = _._scope_id();\n    _._html(`<li>${_._escape(i)}</li>`);\n  });\n  _._html(`</ul>${_._el_resume($scope0_id, \"#ul/0\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-without-assignments/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<ul\n  class=\"mounted\"\n>\n  <li>\n    0\n  </li>\n</ul>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-without-assignments/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <ul\n      class=\"mounted\"\n    >\n      <li>\n        0\n      </li>\n    </ul>\n    <!--M_*1 #ul/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/ul[class] null => \"mounted\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-without-assignments/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<ul>\n  <li>\n    0\n  </li>\n</ul>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-without-assignments/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <ul><li>0</li></ul><!--M_*1 #ul/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0]),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <ul>\n      <li>\n        0\n      </li>\n    </ul>\n    <!--M_*1 #ul/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/ul\nINSERT html/body/ul/li\nINSERT html/body/ul/li/#text\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/let-without-assignments/template.marko",
    "content": "<let/count=1>\n<ul/el>\n  <for|i| until=count>\n    <li>${i}</li>\n  </for>\n</ul>\n\n<script>\n  el().classList.add(\"mounted\");\n</script>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"n\",\n      \"$$x__script\": \"e\",\n      \"$$x\": \"o\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"ref\"\n>\n  Mount 0\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#increment\")?.click();\n```\n```html\n<div\n  id=\"ref\"\n>\n  Update 1\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#increment\")?.click();\n```\n```html\n<div\n  id=\"ref\"\n>\n  Update 2\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"ref\"\n>\n  Mount 0\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n```\n\n# Mutations\n```\nINSERT div, button\nINSERT div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"#increment\")?.click();\n```\n```html\n<div\n  id=\"ref\"\n>\n  Update 1\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n```\n\n# Mutations\n```\nREMOVE #text in div\nINSERT div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"#increment\")?.click();\n```\n```html\n<div\n  id=\"ref\"\n>\n  Update 2\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n```\n\n# Mutations\n```\nREMOVE #text in div\nINSERT div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 261 (min) 139 (brotli)\nconst $x__script = _._script(\"a0\", ($scope) => {\n    (_._lifecycle($scope, {\n      onMount: function () {\n        document.getElementById(\"ref\").textContent = \"Mount \" + $scope.b;\n      },\n      onUpdate: function () {\n        document.getElementById(\"ref\").textContent = \"Update \" + $scope.b;\n      },\n    }),\n      _._on($scope.a, \"click\", function () {\n        $x($scope, $scope.b + 1);\n      }));\n  }),\n  $x = _._let(1, $x__script);\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div id=ref></div><button id=increment>Increment</button>\";\nexport const $walks = /* over(1), get, over(1) */\"b b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $x__script = _._script(\"__tests__/template.marko_0_x\", $scope => {\n  _._lifecycle($scope, {\n    onMount: function () {\n      document.getElementById(\"ref\").textContent = \"Mount \" + $scope.x;\n    },\n    onUpdate: function () {\n      document.getElementById(\"ref\").textContent = \"Update \" + $scope.x;\n    }\n  });\n  _._on($scope[\"#button/0\"], \"click\", function () {\n    $x($scope, $scope.x + 1);\n  });\n});\nconst $x = /* @__PURE__ */_._let(\"x/1\", $x__script);\nexport function $setup($scope) {\n  $x($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let x = 0;\n  _._html(`<div id=ref></div><button id=increment>Increment</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_x\");\n  _._scope($scope0_id, {\n    x\n  }, \"__tests__/template.marko\", 0, {\n    x: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"ref\"\n>\n  Mount 0\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#increment\")?.click();\n```\n```html\n<div\n  id=\"ref\"\n>\n  Update 1\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#increment\")?.click();\n```\n```html\n<div\n  id=\"ref\"\n>\n  Update 2\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"ref\"\n    >\n      Mount 0\n    </div>\n    <button\n      id=\"increment\"\n    >\n      Increment\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 0\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"#increment\")?.click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"ref\"\n    >\n      Update 1\n    </div>\n    <button\n      id=\"increment\"\n    >\n      Increment\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 0\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #text in html/body/div\nINSERT html/body/div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"#increment\")?.click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"ref\"\n    >\n      Update 2\n    </div>\n    <button\n      id=\"increment\"\n    >\n      Increment\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 0\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #text in html/body/div\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div\n  id=\"ref\"\n/>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div id=ref></div><button id=increment>Increment</button><!--M_*1 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{x:0}]),\"__tests__/template.marko_0_x 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"ref\"\n    />\n    <button\n      id=\"increment\"\n    >\n      Increment\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 0\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag/template.marko",
    "content": "<let/x=0/>\n<lifecycle\n  onMount() { document.getElementById(\"ref\").textContent = \"Mount \" + x; }\n  onUpdate() { document.getElementById(\"ref\").textContent = \"Update \" + x; }\n/>\n<div#ref/>\n<button#increment onClick() { x++ }>Increment</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction increment(container: Element) {\n  container.querySelector<HTMLButtonElement>(\"#increment\")?.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, increment, increment],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-assignment/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$x__script\": \"c\",\n      \"$$x\": \"i\",\n      \"$$prev\": \"n\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-assignment/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  x=\n  <span>\n    0\n  </span>\n  , was=‍\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#increment\")?.click();\n```\n```html\n<div>\n  x=\n  <span>\n    1\n  </span>\n  , was=0\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#increment\")?.click();\n```\n```html\n<div>\n  x=\n  <span>\n    2\n  </span>\n  , was=0\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n```\n\n\n# Render ASYNC\n```html\n<div>\n  x=\n  <span>\n    2\n  </span>\n  , was=1\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-assignment/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  x=\n  <span>\n    0\n  </span>\n  , was=‍\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n```\n\n# Mutations\n```\nINSERT div, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"#increment\")?.click();\n```\n```html\n<div>\n  x=\n  <span>\n    1\n  </span>\n  , was=0\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n```\n\n# Mutations\n```\nUPDATE div/span/#text \"0\" => \"1\"\nUPDATE div/#text2 \"‍\" => \"0\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#increment\")?.click();\n```\n```html\n<div>\n  x=\n  <span>\n    2\n  </span>\n  , was=0\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n```\n\n# Mutations\n```\nUPDATE div/span/#text \"1\" => \"2\"\n```\n\n# Render ASYNC\n```html\n<div>\n  x=\n  <span>\n    2\n  </span>\n  , was=1\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n```\n\n# Mutations\n```\nUPDATE div/#text2 \"0\" => \"1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-assignment/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 245 (min) 159 (brotli)\nconst $x__script = _._script(\"a0\", ($scope) => {\n    (_._lifecycle($scope, {\n      onMount: function () {\n        this.cur = $scope.d;\n      },\n      onUpdate: function () {\n        ($prev($scope, this.cur), (this.cur = $scope.d));\n      },\n    }),\n      _._on($scope.c, \"click\", function () {\n        $x($scope, $scope.d + 1);\n      }));\n  }),\n  $x = _._let(3, ($scope) => {\n    (_._text($scope.a, $scope.d), $x__script($scope));\n  }),\n  $prev = _._let(4, ($scope) => _._text($scope.b, $scope.e));\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-assignment/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div>x=<span> </span>, was=<!></div><button id=increment>Increment</button>\";\nexport const $walks = /* next(1), over(1), next(1), get, out(1), over(1), replace, out(1), get, over(1) */\"DbD lb%l b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $x__script = _._script(\"__tests__/template.marko_0_x\", $scope => {\n  _._lifecycle($scope, {\n    onMount: function () {\n      this.cur = $scope.x;\n    },\n    onUpdate: function () {\n      $prev($scope, this.cur);\n      this.cur = $scope.x;\n    }\n  });\n  _._on($scope[\"#button/2\"], \"click\", function () {\n    $x($scope, $scope.x + 1);\n  });\n});\nconst $x = /* @__PURE__ */_._let(\"x/3\", $scope => {\n  _._text($scope[\"#text/0\"], $scope.x);\n  $x__script($scope);\n});\nconst $prev = /* @__PURE__ */_._let(\"prev/4\", $scope => _._text($scope[\"#text/1\"], $scope.prev));\nexport function $setup($scope) {\n  $x($scope, 0);\n  $prev($scope, false);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-assignment/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let x = 0;\n  let prev = false;\n  _._html(`<div>x=<span>${_._escape(x)}${_._el_resume($scope0_id, \"#text/0\")}</span>, was=<!>${_._escape(prev)}${_._el_resume($scope0_id, \"#text/1\")}</div><button id=increment>Increment</button>${_._el_resume($scope0_id, \"#button/2\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_x\");\n  _._scope($scope0_id, {\n    x\n  }, \"__tests__/template.marko\", 0, {\n    x: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-assignment/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  x=\n  <span>\n    0\n  </span>\n  , was=‍\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#increment\")?.click();\n```\n```html\n<div>\n  x=\n  <span>\n    1\n  </span>\n  , was=0\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#increment\")?.click();\n```\n```html\n<div>\n  x=\n  <span>\n    2\n  </span>\n  , was=0\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n```\n\n\n# Render ASYNC\n```html\n<div>\n  x=\n  <span>\n    2\n  </span>\n  , was=1\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-assignment/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      x=\n      <span>\n        0\n        <!--M_*1 #text/0-->\n      </span>\n      , was=\n      <!---->\n      ‍\n      <!--M_*1 #text/1-->\n    </div>\n    <button\n      id=\"increment\"\n    >\n      Increment\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 0\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#increment\")?.click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      x=\n      <span>\n        1\n        <!--M_*1 #text/0-->\n      </span>\n      , was=\n      <!---->\n      0\n      <!--M_*1 #text/1-->\n    </div>\n    <button\n      id=\"increment\"\n    >\n      Increment\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 0\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/span/#text \"0\" => \"1\"\nUPDATE html/body/div/#text2 \"‍\" => \"0\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#increment\")?.click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      x=\n      <span>\n        2\n        <!--M_*1 #text/0-->\n      </span>\n      , was=\n      <!---->\n      0\n      <!--M_*1 #text/1-->\n    </div>\n    <button\n      id=\"increment\"\n    >\n      Increment\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 0\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/span/#text \"1\" => \"2\"\n```\n\n# Render ASYNC\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      x=\n      <span>\n        2\n        <!--M_*1 #text/0-->\n      </span>\n      , was=\n      <!---->\n      1\n      <!--M_*1 #text/1-->\n    </div>\n    <button\n      id=\"increment\"\n    >\n      Increment\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 0\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/#text2 \"0\" => \"1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-assignment/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  x=\n  <span>\n    0\n  </span>\n  , was=‍\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-assignment/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>x=<span>0<!--M_*1 #text/0--></span>, was=<!>&zwj;<!--M_*1 #text/1--></div><button id=increment>Increment</button><!--M_*1 #button/2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{x:0}]),\"__tests__/template.marko_0_x 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      x=\n      <span>\n        0\n        <!--M_*1 #text/0-->\n      </span>\n      , was=\n      <!---->\n      ‍\n      <!--M_*1 #text/1-->\n    </div>\n    <button\n      id=\"increment\"\n    >\n      Increment\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 0\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text0\nINSERT html/body/div/span\nINSERT html/body/div/span/#text\nINSERT html/body/div/span/#comment\nINSERT html/body/div/#text1\nINSERT html/body/div/#comment0\nINSERT html/body/div/#text2\nINSERT html/body/div/#comment1\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-assignment/template.marko",
    "content": "<let/x=0/>\n<let/prev=false/>\n<lifecycle\n  onMount() { this.cur = x; }\n  onUpdate() {\n    prev = this.cur;\n    this.cur = x;\n  }\n/>\n<div>x=<span>${x}</span>, was=${prev}</div>\n<button#increment onClick() { x++; }>Increment</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-assignment/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { wait } from \"../../utils/resolve\";\n\nfunction increment(container: Element) {\n  container.querySelector<HTMLButtonElement>(\"#increment\")?.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, increment, increment, wait],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-conditional/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"ref\"\n>\n  Mount 0\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n<button\n  id=\"toggle\"\n>\n  Toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#increment\")?.click();\n```\n```html\n<div\n  id=\"ref\"\n>\n  Update 1\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n<button\n  id=\"toggle\"\n>\n  Toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#toggle\")?.click();\n```\n```html\n<div\n  id=\"ref\"\n>\n  Destroy\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n<button\n  id=\"toggle\"\n>\n  Toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#increment\")?.click();\n```\n```html\n<div\n  id=\"ref\"\n>\n  Destroy\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n<button\n  id=\"toggle\"\n>\n  Toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#toggle\")?.click();\n```\n```html\n<div\n  id=\"ref\"\n>\n  Mount 2\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n<button\n  id=\"toggle\"\n>\n  Toggle\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-conditional/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<div\n  id=\"ref\"\n>\n  Mount 0\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n<button\n  id=\"toggle\"\n>\n  Toggle\n</button>\n```\n\n# Mutations\n```\nINSERT #comment, #text, div, button0, button1\nINSERT div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"#increment\")?.click();\n```\n```html\n<!---->\n<div\n  id=\"ref\"\n>\n  Update 1\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n<button\n  id=\"toggle\"\n>\n  Toggle\n</button>\n```\n\n# Mutations\n```\nREMOVE #text in div\nINSERT div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"#toggle\")?.click();\n```\n```html\n<!---->\n<div\n  id=\"ref\"\n>\n  Destroy\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n<button\n  id=\"toggle\"\n>\n  Toggle\n</button>\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE #text after #text\nREMOVE #text in div\nINSERT div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"#increment\")?.click();\n```\n```html\n<!---->\n<div\n  id=\"ref\"\n>\n  Destroy\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n<button\n  id=\"toggle\"\n>\n  Toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#toggle\")?.click();\n```\n```html\n<!---->\n<div\n  id=\"ref\"\n>\n  Mount 2\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n<button\n  id=\"toggle\"\n>\n  Toggle\n</button>\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE #text after #text\nREMOVE #text in div\nINSERT div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-conditional/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><div id=ref></div><button id=increment>Increment</button><button id=toggle>Toggle</button>\";\nexport const $walks = /* over(1), replace, over(2), get, over(1), get, over(1) */\"b%c b b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content__x__script = _._script(\"__tests__/template.marko_1_x\", $scope => _._lifecycle($scope, {\n  onMount: function () {\n    document.getElementById(\"ref\").textContent = \"Mount \" + $scope._.x;\n  },\n  onUpdate: function () {\n    document.getElementById(\"ref\").textContent = \"Update \" + $scope._.x;\n  },\n  onDestroy: function () {\n    document.getElementById(\"ref\").textContent = \"Destroy\";\n  }\n}));\nconst $if_content__x = /* @__PURE__ */_._if_closure(\"#text/0\", 0, $if_content__x__script);\nconst $if_content__setup = $if_content__x;\nconst $x__script = _._script(\"__tests__/template.marko_0_x\", $scope => _._on($scope[\"#button/1\"], \"click\", function () {\n  $x($scope, $scope.x + 1);\n}));\nconst $x = /* @__PURE__ */_._let(\"x/3\", $scope => {\n  $if_content__x($scope);\n  $x__script($scope);\n});\nconst $if = /* @__PURE__ */_._if(\"#text/0\", 0, 0, $if_content__setup);\nconst $show__script = _._script(\"__tests__/template.marko_0_show\", $scope => _._on($scope[\"#button/2\"], \"click\", function () {\n  $show($scope, !$scope.show);\n}));\nconst $show = /* @__PURE__ */_._let(\"show/4\", $scope => {\n  $if($scope, $scope.show ? 0 : 1);\n  $show__script($scope);\n});\nexport function $setup($scope) {\n  $x($scope, 0);\n  $show($scope, true);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-conditional/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let x = 0;\n  let show = true;\n  _._if(() => {\n    if (show) {\n      const $scope1_id = _._scope_id();\n      _._script($scope1_id, \"__tests__/template.marko_1_x\");\n      _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"3:2\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/0\");\n  _._html(`<div id=ref></div><button id=increment>Increment</button>${_._el_resume($scope0_id, \"#button/1\")}<button id=toggle>Toggle</button>${_._el_resume($scope0_id, \"#button/2\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_show\");\n  _._script($scope0_id, \"__tests__/template.marko_0_x\");\n  _._scope($scope0_id, {\n    x,\n    show\n  }, \"__tests__/template.marko\", 0, {\n    x: \"1:6\",\n    show: \"2:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-conditional/template.marko",
    "content": "<let/x=0/>\n<let/show=true/>\n<if=show>\n  <lifecycle\n    onMount() { document.getElementById(\"ref\").textContent = \"Mount \" + x; }\n    onUpdate() { document.getElementById(\"ref\").textContent = \"Update \" + x; }\n    onDestroy() { document.getElementById(\"ref\").textContent = \"Destroy\"; }\n  />\n</if>\n<div#ref/>\n<button#increment on-click() { x++ }>Increment</button>\n<button#toggle on-click() { show = !show }>Toggle</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-conditional/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction increment(container: Element) {\n  container.querySelector<HTMLButtonElement>(\"#increment\")?.click();\n}\n\nfunction toggle(container: Element) {\n  container.querySelector<HTMLButtonElement>(\"#toggle\")?.click();\n}\n\nexport const config: TestConfig = {\n  skip_ssr: true,\n  steps: [{}, increment, toggle, increment, toggle],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-this/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$x__script\": \"n\",\n      \"$$x\": \"e\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-this/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"ref\"\n>\n  x=0, was=undefined\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#increment\")?.click();\n```\n```html\n<div\n  id=\"ref\"\n>\n  x=1, was=0\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#increment\")?.click();\n```\n```html\n<div\n  id=\"ref\"\n>\n  x=2, was=1\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-this/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"ref\"\n>\n  x=0, was=undefined\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n```\n\n# Mutations\n```\nINSERT div, button\nINSERT div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"#increment\")?.click();\n```\n```html\n<div\n  id=\"ref\"\n>\n  x=1, was=0\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n```\n\n# Mutations\n```\nREMOVE #text in div\nINSERT div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"#increment\")?.click();\n```\n```html\n<div\n  id=\"ref\"\n>\n  x=2, was=1\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n```\n\n# Mutations\n```\nREMOVE #text in div\nINSERT div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-this/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 248 (min) 158 (brotli)\nconst $x__script = _._script(\"a0\", ($scope) => {\n    (_._lifecycle($scope, {\n      onMount: function () {\n        this.onUpdate();\n      },\n      onUpdate: function () {\n        ((document.getElementById(\"ref\").textContent =\n          `x=${$scope.b}, was=${this.cur}`),\n          (this.cur = $scope.b));\n      },\n    }),\n      _._on($scope.a, \"click\", function () {\n        $x($scope, $scope.b + 1);\n      }));\n  }),\n  $x = _._let(1, $x__script);\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-this/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div id=ref></div><button id=increment>Increment</button>\";\nexport const $walks = /* over(1), get, over(1) */\"b b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $x__script = _._script(\"__tests__/template.marko_0_x\", $scope => {\n  _._lifecycle($scope, {\n    onMount: function () {\n      this.onUpdate();\n    },\n    onUpdate: function () {\n      document.getElementById(\"ref\").textContent = `x=${$scope.x}, was=${this.cur}`;\n      this.cur = $scope.x;\n    }\n  });\n  _._on($scope[\"#button/0\"], \"click\", function () {\n    $x($scope, $scope.x + 1);\n  });\n});\nconst $x = /* @__PURE__ */_._let(\"x/1\", $x__script);\nexport function $setup($scope) {\n  $x($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-this/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let x = 0;\n  _._html(`<div id=ref></div><button id=increment>Increment</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_x\");\n  _._scope($scope0_id, {\n    x\n  }, \"__tests__/template.marko\", 0, {\n    x: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-this/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"ref\"\n>\n  x=0, was=undefined\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#increment\")?.click();\n```\n```html\n<div\n  id=\"ref\"\n>\n  x=1, was=0\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#increment\")?.click();\n```\n```html\n<div\n  id=\"ref\"\n>\n  x=2, was=1\n</div>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-this/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"ref\"\n    >\n      x=0, was=undefined\n    </div>\n    <button\n      id=\"increment\"\n    >\n      Increment\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 0\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"#increment\")?.click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"ref\"\n    >\n      x=1, was=0\n    </div>\n    <button\n      id=\"increment\"\n    >\n      Increment\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 0\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #text in html/body/div\nINSERT html/body/div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"#increment\")?.click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"ref\"\n    >\n      x=2, was=1\n    </div>\n    <button\n      id=\"increment\"\n    >\n      Increment\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 0\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #text in html/body/div\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-this/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div\n  id=\"ref\"\n/>\n<button\n  id=\"increment\"\n>\n  Increment\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-this/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div id=ref></div><button id=increment>Increment</button><!--M_*1 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{x:0}]),\"__tests__/template.marko_0_x 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"ref\"\n    />\n    <button\n      id=\"increment\"\n    >\n      Increment\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 0\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-this/template.marko",
    "content": "<let/x=0/>\n<lifecycle\n  onMount() {\n    this.onUpdate();\n    }\n  onUpdate() {\n    document.getElementById(\"ref\").textContent = `x=${x}, was=${this.cur}`;\n    this.cur = x;\n  }\n/>\n<div#ref/>\n<button#increment onClick() { x++; }>Increment</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-this/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction increment(container: Element) {\n  container.querySelector<HTMLButtonElement>(\"#increment\")?.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, increment, increment],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-this-attrs/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$x\": \"i\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-this-attrs/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  0\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div>\n  1\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-this-attrs/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  0\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render ASYNC\n```html\n<div>\n  1\n</div>\n```\n\n# Mutations\n```\nUPDATE div/#text \"0\" => \"1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-this-attrs/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 146 (min) 117 (brotli)\nconst $x = _._let(1, ($scope) => _._text($scope.a, $scope.b));\n(_._script(\"a0\", ($scope) =>\n  _._lifecycle($scope, {\n    x: 1,\n    setX: function (value) {\n      $x($scope, value);\n    },\n    onMount: function () {\n      this.setX(this.x);\n    },\n  }),\n),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-this-attrs/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div> </div>\";\nexport const $walks = /* next(1), get, out(1) */\"D l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $x = /* @__PURE__ */_._let(\"x/1\", $scope => _._text($scope[\"#text/0\"], $scope.x));\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => _._lifecycle($scope, {\n  x: 1,\n  setX: function (value) {\n    $x($scope, value);\n  },\n  onMount: function () {\n    this.setX(this.x);\n  }\n}));\nexport function $setup($scope) {\n  $x($scope, 0);\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-this-attrs/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let x = 0;\n  _._html(`<div>${_._escape(x)}${_._el_resume($scope0_id, \"#text/0\")}</div>`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-this-attrs/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  0\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div>\n  1\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-this-attrs/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      0\n      <!--M_*1 #text/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render ASYNC\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      1\n      <!--M_*1 #text/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/#text \"0\" => \"1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-this-attrs/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  0\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-this-attrs/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>0<!--M_*1 #text/0--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0]),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      0\n      <!--M_*1 #text/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/div/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-this-attrs/template.marko",
    "content": "<let/x=0/>\n<lifecycle\n  x=1\n  setX(value) {\n    x = value;\n  }\n  onMount() {\n    this.setX(this.x)\n  }\n/>\n\n<div>${x}</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-this-attrs/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{}, wait],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/local-closure-script/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"m\",\n      \"$init\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/local-closure-script/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  1\n</div>\n<div>\n  2\n</div>\n<div>\n  3\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/local-closure-script/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<!---->\n<!---->\n<div>\n  1\n</div>\n<!---->\n<!---->\n<div>\n  2\n</div>\n<!---->\n<!---->\n<div>\n  3\n</div>\n<!---->\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, #comment2, div0, #comment3, #comment4, div1, #comment5, #comment6, div2, #comment7, #comment8, #comment9\nINSERT div0/#text\nINSERT div1/#text\nINSERT div2/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/local-closure-script/__snapshots__/dom.expected/tags/list/index.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for_content__dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\");\nconst $for_content__item_content = ($scope, item_content) => $for_content__dynamicTag($scope, item_content);\nconst $for_content__$params = ($scope, $params2) => $for_content__item($scope, $params2[0]);\nconst $for_content__item = ($scope, item) => $for_content__item_content($scope, item?.content);\nconst $for = /* @__PURE__ */_._for_of(\"#text/0\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", 0, $for_content__$params);\nexport const $input_item = ($scope, input_item) => $for($scope, [input_item]);\nexport const $input = ($scope, input) => $input_item($scope, input.item);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/list/index.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/local-closure-script/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 41 (min) 43 (brotli)\n(_._script(\"b0\", ($scope) => ($scope.a.innerHTML = $scope.c)), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/local-closure-script/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<!>${_list_template}<!>`;\nexport const $walks = /* over(1), <list>, over(1) */`b/${_list_walks}&b`;\nimport { $setup as _list, $input_item as _list_input_item, $template as _list_template, $walks as _list_walks } from \"./tags/list/index.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $item_content__item__script = _._script(\"__tests__/template.marko_1_item\", $scope => (_._el_read($scope[\"#div/0\"]).innerHTML = $scope.item));\nconst $item_content = /* @__PURE__ */_._content_closures(/* @__PURE__ */_._content(\"__tests__/template.marko_1_content\", \"<div></div>\", /* get, over(1) */\" b\"), {\n  item: $item_content__item__script\n});\nexport function $setup($scope) {\n  _list($scope[\"#childScope/0\"]);\n  let $item;\n  _.forOf([1, 2, 3], item => {\n    $item = _.attrTags($item, {\n      content: $item_content($scope, {\n        item\n      })\n    });\n  });\n  _list_input_item($scope[\"#childScope/0\"], $item);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/local-closure-script/__snapshots__/html.expected/tags/list/index.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/list/index.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._for_of(input.item, item => {\n    const $scope1_id = _._scope_id();\n    _._dynamic_tag($scope1_id, \"#text/0\", item.content, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.item */0));\n    _._serialize_if($scope0_reason, /* input.item */0) && _._scope($scope1_id, {}, \"__tests__/tags/list/index.marko\", \"1:1\");\n  }, 0, $scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.item */0), _._serialize_guard($scope0_reason, /* input.item */0), _._serialize_guard($scope0_reason, /* input.item */0));\n  _._serialize_if($scope0_reason, /* input.item */0) && _._scope($scope0_id, {}, \"__tests__/tags/list/index.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/local-closure-script/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _list from \"./tags/list/index.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let $item;\n  _.forOf([1, 2, 3], item => {\n    $item = _.attrTags($item, {\n      content: _._content(\"__tests__/template.marko_1_content\", () => {\n        _._scope_reason();\n        const $scope1_id = _._scope_id();\n        _._html(`<div></div>${_._el_resume($scope1_id, \"#div/0\")}`);\n        _._script($scope1_id, \"__tests__/template.marko_1_item\");\n        _._scope($scope1_id, {\n          item\n        }, \"__tests__/template.marko\", \"3:5\", {\n          item: \"2:7\"\n        });\n      })\n    });\n  });\n  _list({\n    item: $item\n  });\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/local-closure-script/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  1\n</div>\n<div>\n  2\n</div>\n<div>\n  3\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/local-closure-script/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      1\n    </div>\n    <!--M_*4 #div/0-->\n    <div>\n      2\n    </div>\n    <!--M_*6 #div/0-->\n    <div>\n      3\n    </div>\n    <!--M_*8 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 3,\n        {\n          item: 1\n        }, 1,\n        {\n          item: 2\n        }, 1,\n        {\n          item: 3\n        }]),\n        \"__tests__/template.marko_1_item 4 6 8\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div0/#text\nINSERT html/body/div1/#text\nINSERT html/body/div2/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/local-closure-script/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n<div />\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/local-closure-script/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div></div><!--M_*4 #div/0--><div></div><!--M_*6 #div/0--><div></div><!--M_*8 #div/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,3,{item:1},1,{item:2},1,{item:3}]),\"__tests__/template.marko_1_item 4 6 8\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*4 #div/0-->\n    <div />\n    <!--M_*6 #div/0-->\n    <div />\n    <!--M_*8 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 3,\n        {\n          item: 1\n        }, 1,\n        {\n          item: 2\n        }, 1,\n        {\n          item: 3\n        }]),\n        \"__tests__/template.marko_1_item 4 6 8\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/#comment0\nINSERT html/body/div1\nINSERT html/body/#comment1\nINSERT html/body/div2\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/local-closure-script/tags/list/index.marko",
    "content": "for|item| of=input.item\n  ${item.content}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/local-closure-script/template.marko",
    "content": "list\n  for|item| of=[1, 2, 3]\n    @item\n      div/$el\n      script -- $el().innerHTML = item\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/local-closure-script/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{}, wait],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/log-tag/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/log-tag/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n# Console\n```\nLOG \"identifier\"\nLOG \"static var\"\nLOG \"tag var\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/log-tag/__snapshots__/csr.expected.md",
    "content": "# Render\n# Mutations\n```\nINSERT #text\n```\n# Console\n```\nLOG \"identifier\"\nLOG \"static var\"\nLOG \"tag var\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/log-tag/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/log-tag/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"\";\nexport const $walks = \"\";\nconst staticVar = \"static var\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $tagVar = /* @__PURE__ */_._const(\"tagVar\", $scope => console.log($scope.tagVar));\nexport function $setup($scope) {\n  console.log(\"identifier\");\n  console.log(staticVar);\n  $tagVar($scope, \"tag var\");\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/log-tag/__snapshots__/html.expected/template.js",
    "content": "const staticVar = \"static var\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  console.log(\"identifier\");\n  const tagVar = \"tag var\";\n  console.log(tagVar);\n  console.log(staticVar);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/log-tag/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n# Console\n```\nLOG \"identifier\"\nLOG \"tag var\"\nLOG \"static var\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/log-tag/__snapshots__/resume.expected.md",
    "content": "# Render\n# Console\n```\nLOG \"identifier\"\nLOG \"tag var\"\nLOG \"static var\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/log-tag/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n# Console\n```\nLOG \"identifier\"\nLOG \"tag var\"\nLOG \"static var\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/log-tag/__snapshots__/ssr.expected.md",
    "content": "# Render End\n# Console\n```\nLOG \"identifier\"\nLOG \"tag var\"\nLOG \"static var\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/log-tag/template.marko",
    "content": "<log=\"identifier\"/>\n<const/tagVar=\"tag var\"/>\n<log=tagVar/>\nstatic const staticVar = \"static var\";\n<log=staticVar/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/log-tag/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  skip_equivalent: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/merged-define-tag-templates/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"m\",\n      \"$$B_content__tag_input_value\": \"o\",\n      \"$$A_content__value\": \"a\",\n      \"$$value\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/merged-define-tag-templates/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n0\n```\n\n\n# Render ASYNC\n```html\n5\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/merged-define-tag-templates/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<!---->\n0\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, #text, #comment2, #comment3\n```\n\n# Render ASYNC\n```html\n<!---->\n<!---->\n5\n<!---->\n<!---->\n```\n\n# Mutations\n```\nUPDATE #text \"0\" => \"5\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/merged-define-tag-templates/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 132 (min) 104 (brotli)\nconst $B_content__tag_input_value = ($scope, value) =>\n    (($scope, value_length) => $A_content__value($scope.a, value_length))(\n      $scope,\n      value?.length,\n    ),\n  $A_content__value = ($scope, value) => _._text($scope.a, value),\n  $value = _._let(1, ($scope) =>\n    $B_content__tag_input_value($scope.a, $scope.b),\n  );\n(_._script(\"a0\", ($scope) => $value($scope, \"hello\")), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/merged-define-tag-templates/__snapshots__/dom.expected/template.js",
    "content": "const $A_content__walks = /* get, over(1) */\" b\",\n  $A_content__template = \" \",\n  $B_content__walks = /* over(1), <A>, over(1) */`b/${$A_content__walks}&b`,\n  $B_content__template = `<!>${$A_content__template}<!>`;\nexport const $template = `<!>${$B_content__template}<!>`;\nexport const $walks = /* over(1), <B>, over(1) */`b/${$B_content__walks}&b`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $B_content__value_length = ($scope, value_length) => $A_content__value($scope[\"#childScope/0\"], value_length);\nconst $B_content__tag_input_value = ($scope, value) => $B_content__value_length($scope, value?.length);\nconst $B_content__$params = ($scope, $params3) => $B_content__$temp($scope, $params3?.[0]);\nconst $B_content__$temp = ($scope, $temp2) => $B_content__tag_input_value($scope, $temp2.value);\nconst $A_content__value = ($scope, value) => _._text($scope[\"#text/0\"], value);\nconst $A_content__$params = ($scope, $params2) => $A_content__$temp($scope, $params2?.[0]);\nconst $A_content__$temp = ($scope, $temp) => $A_content__value($scope, $temp.value);\nconst $value = /* @__PURE__ */_._let(\"value/1\", $scope => $B_content__tag_input_value($scope[\"#childScope/0\"], $scope.value));\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => $value($scope, \"hello\"));\nexport function $setup($scope) {\n  $value($scope, \"\");\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/merged-define-tag-templates/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const A = {\n    content: _._content(\"__tests__/template.marko_1_content\", ({\n      value\n    }) => {\n      const $scope1_id = _._scope_id();\n      const $scope1_reason = _._scope_reason();\n      _._html(`${_._escape(value)}${_._el_resume($scope1_id, \"#text/0\", _._serialize_guard($scope1_reason, /* value */0))}`);\n      _._serialize_if($scope1_reason, /* value */0) && _._scope($scope1_id, {}, \"__tests__/template.marko\", \"1:1\");\n    })\n  };\n  const B = {\n    content: _._content(\"__tests__/template.marko_2_content\", ({\n      value\n    }) => {\n      const $scope2_id = _._scope_id();\n      const $scope2_reason = _._scope_reason();\n      const $childScope = _._peek_scope_id();\n      _._set_serialize_reason(_._serialize_guard($scope2_reason, /* value.length */0));\n      A.content({\n        value: value.length\n      });\n      _._serialize_if($scope2_reason, /* value.length */0) && _._scope($scope2_id, {\n        \"#childScope/0\": _._serialize_if($scope2_reason, /* value.length */0) && _._existing_scope($childScope)\n      }, \"__tests__/template.marko\", \"4:1\");\n    })\n  };\n  let value = \"\";\n  const $childScope2 = _._peek_scope_id();\n  _._set_serialize_reason(/* value */1);\n  B.content({\n    value: value\n  });\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {\n    \"#childScope/0\": _._existing_scope($childScope2)\n  }, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/merged-define-tag-templates/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n0\n```\n\n\n# Render ASYNC\n```html\n5\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/merged-define-tag-templates/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    0\n    <!--M_*3 #text/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0,\n        {\n          \"#childScope/0\": _.a = {\n            \"#childScope/0\": _.b = {}\n          }\n        }, _.a, _.b]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render ASYNC\n```html\n<html>\n  <head />\n  <body>\n    5\n    <!--M_*3 #text/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0,\n        {\n          \"#childScope/0\": _.a = {\n            \"#childScope/0\": _.b = {}\n          }\n        }, _.a, _.b]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/#text \"0\" => \"5\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/merged-define-tag-templates/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n0\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/merged-define-tag-templates/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  0<!--M_*3 #text/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,{\"#childScope/0\":_.a={\"#childScope/0\":_.b={}}},_.a,_.b]),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    0\n    <!--M_*3 #text/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0,\n        {\n          \"#childScope/0\": _.a = {\n            \"#childScope/0\": _.b = {}\n          }\n        }, _.a, _.b]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/merged-define-tag-templates/template.marko",
    "content": "define/A|{ value }|\n  -- ${value}\n\ndefine/B|{ value }|\n  A=value.length\n\nlet/value=\"\"\nscript -- value = \"hello\"\nB=value\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/merged-define-tag-templates/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{}, wait],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/migrate-effect-tag/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"m\",\n      \"$$x\": \"o\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/migrate-effect-tag/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  1\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div>\n  2\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/migrate-effect-tag/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  1\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render ASYNC\n```html\n<div>\n  2\n</div>\n```\n\n# Mutations\n```\nUPDATE div/#text \"1\" => \"2\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/migrate-effect-tag/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 68 (min) 66 (brotli)\nconst $x = _._let(1, ($scope) => _._text($scope.a, $scope.b));\n(_._script(\"a0\", ($scope) => $x($scope, 2)), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/migrate-effect-tag/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div> </div>\";\nexport const $walks = /* next(1), get, out(1) */\"D l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $x = /* @__PURE__ */_._let(\"x/1\", $scope => _._text($scope[\"#text/0\"], $scope.x));\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => $x($scope, 2));\nexport function $setup($scope) {\n  $x($scope, 1);\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/migrate-effect-tag/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let x = 1;\n  _._html(`<div>${_._escape(x)}${_._el_resume($scope0_id, \"#text/0\")}</div>`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/migrate-effect-tag/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  1\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div>\n  2\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/migrate-effect-tag/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      1\n      <!--M_*1 #text/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render ASYNC\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      2\n      <!--M_*1 #text/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/#text \"1\" => \"2\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/migrate-effect-tag/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  1\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/migrate-effect-tag/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>1<!--M_*1 #text/0--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0]),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      1\n      <!--M_*1 #text/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/div/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/migrate-effect-tag/template.marko",
    "content": "<let/x = 1>\n\n<effect() {\n  x = 2\n}/>\n\n<div>${x}</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/migrate-effect-tag/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{}, wait],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/migrate-input/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/migrate-input/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"x\":1}`\n\n```html\n<div>\n  <span>\n    1\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/migrate-input/__snapshots__/csr.expected.md",
    "content": "# Render `{\"x\":1}`\n\n```html\n<div>\n  <span>\n    1\n  </span>\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/migrate-input/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/migrate-input/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div><span> </span></div>\";\nexport const $walks = /* next(2), get, out(2) */\"E m\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $input_x = ($scope, input_x) => _._text($scope[\"#text/0\"], input_x);\nexport const $input = ($scope, input) => $input_x($scope, input.x);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/migrate-input/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div><span>${_._escape(input.x)}${_._el_resume($scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.x */0))}</span></div>`);\n  _._serialize_if($scope0_reason, /* input.x */0) && _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/migrate-input/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"x\":1}`\n\n```html\n<div>\n  <span>\n    1\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/migrate-input/__snapshots__/resume.expected.md",
    "content": "# Render `{\"x\":1}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <span>\n        1\n      </span>\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/migrate-input/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  <span>\n    1\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/migrate-input/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><span>1</span></div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <span>\n        1\n      </span>\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/span\nINSERT html/body/div/span/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/migrate-input/template.marko",
    "content": "<div>\n  <span>\n    ${input.x}\n  </span>\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/migrate-input/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [{ x: 1 }],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/migrate-out-global/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/migrate-out-global/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"$global\":{\"x\":1}}`\n\n```html\n<div>\n  <span>\n    1\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/migrate-out-global/__snapshots__/csr.expected.md",
    "content": "# Render `{\"$global\":{\"x\":1}}`\n\n```html\n<div>\n  <span>\n    1\n  </span>\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/migrate-out-global/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/migrate-out-global/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div><span> </span></div>\";\nexport const $walks = /* next(2), get, out(2) */\"E m\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport function $setup($scope) {\n  _._text($scope[\"#text/0\"], $scope.$global.x);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/migrate-out-global/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div><span>${_._escape(_.$global().x)}</span></div>`);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/migrate-out-global/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"$global\":{\"x\":1}}`\n\n```html\n<div>\n  <span>\n    1\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/migrate-out-global/__snapshots__/resume.expected.md",
    "content": "# Render `{\"$global\":{\"x\":1}}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <span>\n        1\n      </span>\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/migrate-out-global/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  <span>\n    1\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/migrate-out-global/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><span>1</span></div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <span>\n        1\n      </span>\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/span\nINSERT html/body/div/span/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/migrate-out-global/template.marko",
    "content": "<div>\n  <span>\n    ${out.global.x}\n  </span>\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/migrate-out-global/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [{ $global: { x: 1 } }],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/move-and-clear-children/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/move-and-clear-children/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"}]}`\n\n```html\n<div>\n  abc\n</div>\n```\n\n\n# Render `{\"children\":[{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"},{\"id\":1,\"text\":\"a\"}]}`\n\n```html\n<div>\n  bca\n</div>\n```\n\n\n# Render `{\"children\":[]}`\n\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/move-and-clear-children/__snapshots__/csr.expected.md",
    "content": "# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"}]}`\n\n```html\n<div>\n  abc\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render `{\"children\":[{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"},{\"id\":1,\"text\":\"a\"}]}`\n\n```html\n<div>\n  bca\n</div>\n```\n\n# Mutations\n```\nREMOVE div/#text2 before div/#text0\nINSERT div/#text2\n```\n\n# Render `{\"children\":[]}`\n\n```html\n<div />\n```\n\n# Mutations\n```\nREMOVE #text, #text, #text in div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/move-and-clear-children/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/move-and-clear-children/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* get, over(1) */\" b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for_content__child_text = ($scope, child_text) => _._text($scope[\"#text/0\"], child_text);\nconst $for_content__$params = ($scope, $params2) => $for_content__child($scope, $params2[0]);\nconst $for_content__child = ($scope, child) => $for_content__child_text($scope, child?.text);\nconst $for = /* @__PURE__ */_._for_of(\"#div/0\", \" \", /* get, over(1) */\" b\", 0, $for_content__$params);\nexport const $children = ($scope, children) => $for($scope, [children, function (c) {\n  return c.id;\n}]);\nexport const $input = ($scope, input) => $children($scope, input.children);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/move-and-clear-children/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    children\n  } = input;\n  _._html(\"<div>\");\n  _._for_of(children, child => {\n    const $scope1_id = _._scope_id();\n    _._html(`${_._escape(child.text)}${_._el_resume($scope1_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.children */0))}`);\n    _._serialize_if($scope0_reason, /* input.children */0) && _._scope($scope1_id, {}, \"__tests__/template.marko\", \"3:4\");\n  }, function (c) {\n    return c.id;\n  }, $scope0_id, \"#div/0\", _._serialize_guard($scope0_reason, /* input.children */0), _._serialize_guard($scope0_reason, /* input.children */0), _._serialize_guard($scope0_reason, /* input.children */0), \"</div>\", 1);\n  _._serialize_if($scope0_reason, /* input.children */0) && _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/move-and-clear-children/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"}]}`\n\n```html\n<div>\n  abc\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/move-and-clear-children/__snapshots__/resume.expected.md",
    "content": "# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"}]}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      abc\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/move-and-clear-children/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  abc\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/move-and-clear-children/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>abc</div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      abc\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/move-and-clear-children/template.marko",
    "content": "<attrs/{ children }/>\n<div>\n  <for|child| of=children by(c) { return c.id }>\n    ${child.text}\n  </for>\n</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/move-and-clear-children/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [\n    {\n      children: [\n        {\n          id: 1,\n          text: \"a\",\n        },\n        {\n          id: 2,\n          text: \"b\",\n        },\n        {\n          id: 3,\n          text: \"c\",\n        },\n      ],\n    },\n    {\n      children: [\n        {\n          id: 2,\n          text: \"b\",\n        },\n        {\n          id: 3,\n          text: \"c\",\n        },\n        {\n          id: 1,\n          text: \"a\",\n        },\n      ],\n    },\n    {\n      children: [],\n    },\n  ],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/move-and-clear-top-level/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/move-and-clear-top-level/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"}]}`\n\n```html\nabc\n```\n\n\n# Render `{\"children\":[]}`\n\n\n\n# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"}]}`\n\n```html\nabc\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/move-and-clear-top-level/__snapshots__/csr.expected.md",
    "content": "# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"}]}`\n\n```html\n<!---->\nabc\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #text0, #text1, #text2, #comment1\n```\n\n# Render `{\"children\":[]}`\n\n```html\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE #text after #comment0\nREMOVE #text after #comment0\nREMOVE #text after #comment0\n```\n\n# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"}]}`\n\n```html\n<!---->\nabc\n<!---->\n```\n\n# Mutations\n```\nREMOVE #text after #comment0\nINSERT #text0\nINSERT #text1\nINSERT #text2\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/move-and-clear-top-level/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/move-and-clear-top-level/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for_content__child_text = ($scope, child_text) => _._text($scope[\"#text/0\"], child_text);\nconst $for_content__$params = ($scope, $params2) => $for_content__child($scope, $params2[0]);\nconst $for_content__child = ($scope, child) => $for_content__child_text($scope, child?.text);\nconst $for = /* @__PURE__ */_._for_of(\"#text/0\", \" \", /* get, over(1) */\" b\", 0, $for_content__$params);\nexport const $input_children = ($scope, input_children) => $for($scope, [input_children, function (c) {\n  return c.id;\n}]);\nexport const $input = ($scope, input) => $input_children($scope, input.children);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/move-and-clear-top-level/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._for_of(input.children, child => {\n    const $scope1_id = _._scope_id();\n    _._html(`${_._escape(child.text)}${_._el_resume($scope1_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.children */0))}`);\n    _._serialize_if($scope0_reason, /* input.children */0) && _._scope($scope1_id, {}, \"__tests__/template.marko\", \"1:2\");\n  }, function (c) {\n    return c.id;\n  }, $scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.children */0), _._serialize_guard($scope0_reason, /* input.children */0), _._serialize_guard($scope0_reason, /* input.children */0), 0, 1);\n  _._serialize_if($scope0_reason, /* input.children */0) && _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/move-and-clear-top-level/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"}]}`\n\n```html\nabc\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/move-and-clear-top-level/__snapshots__/resume.expected.md",
    "content": "# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"}]}`\n\n```html\n<html>\n  <head />\n  <body>\n    abc\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/move-and-clear-top-level/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\nabc\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/move-and-clear-top-level/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  abc\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    abc\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/move-and-clear-top-level/template.marko",
    "content": "<for|child| of=input.children by(c) { return c.id }>\n  ${child.text}\n</for>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/move-and-clear-top-level/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [\n    {\n      children: [\n        {\n          id: 1,\n          text: \"a\",\n        },\n        {\n          id: 2,\n          text: \"b\",\n        },\n        {\n          id: 3,\n          text: \"c\",\n        },\n      ],\n    },\n    {\n      children: [],\n    },\n    {\n      children: [\n        {\n          id: 1,\n          text: \"a\",\n        },\n        {\n          id: 2,\n          text: \"b\",\n        },\n        {\n          id: 3,\n          text: \"c\",\n        },\n      ],\n    },\n  ],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/multi-class-toggle/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"a\",\n      \"$$count__script\": \"o\",\n      \"$$count\": \"c\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/multi-class-toggle/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  class=\"a b c\"\n>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button\n  class=\"a b c d e f\"\n>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button\n  class=\"a b c\"\n>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button\n  class=\"a b c d e f\"\n>\n  3\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/multi-class-toggle/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button\n  class=\"a b c\"\n>\n  0\n</button>\n```\n\n# Mutations\n```\nINSERT button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button\n  class=\"a b c d e f\"\n>\n  1\n</button>\n```\n\n# Mutations\n```\nUPDATE button[class] \"a b c\" => \"a b c d e f\"\nUPDATE button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button\n  class=\"a b c\"\n>\n  2\n</button>\n```\n\n# Mutations\n```\nUPDATE button[class] \"a b c d e f\" => \"a b c\"\nUPDATE button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button\n  class=\"a b c d e f\"\n>\n  3\n</button>\n```\n\n# Mutations\n```\nUPDATE button[class] \"a b c\" => \"a b c d e f\"\nUPDATE button/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/multi-class-toggle/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 158 (min) 130 (brotli)\nconst $count__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $count($scope, $scope.c + 1);\n    }),\n  ),\n  $count = _._let(2, ($scope) => {\n    (_._attr_class($scope.a, { \"a b c\": !0, \"d e f\": $scope.c % 2 }),\n      _._text($scope.b, $scope.c),\n      $count__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/multi-class-toggle/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button> </button>\";\nexport const $walks = /* get, next(1), get, out(1) */\" D l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $count__script = _._script(\"__tests__/template.marko_0_count\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $count($scope, $scope.count + 1);\n}));\nconst $count = /* @__PURE__ */_._let(\"count/2\", $scope => {\n  _._attr_class($scope[\"#button/0\"], {\n    \"a b c\": true,\n    \"d e f\": $scope.count % 2\n  });\n  _._text($scope[\"#text/1\"], $scope.count);\n  $count__script($scope);\n});\nexport function $setup($scope) {\n  $count($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/multi-class-toggle/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let count = 0;\n  _._html(`<button${_._attr_class({\n    \"a b c\": true,\n    \"d e f\": count % 2\n  })}>${_._escape(count)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_count\");\n  _._scope($scope0_id, {\n    count\n  }, \"__tests__/template.marko\", 0, {\n    count: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/multi-class-toggle/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  class=\"a b c\"\n>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button\n  class=\"a b c d e f\"\n>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button\n  class=\"a b c\"\n>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button\n  class=\"a b c d e f\"\n>\n  3\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/multi-class-toggle/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"a b c\"\n    >\n      0\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"a b c d e f\"\n    >\n      1\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button[class] \"a b c\" => \"a b c d e f\"\nUPDATE html/body/button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"a b c\"\n    >\n      2\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button[class] \"a b c d e f\" => \"a b c\"\nUPDATE html/body/button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"a b c d e f\"\n    >\n      3\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button[class] \"a b c\" => \"a b c d e f\"\nUPDATE html/body/button/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/multi-class-toggle/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button\n  class=\"a b c\"\n>\n  0\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/multi-class-toggle/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button class=\"a b c\">0<!--M_*1 #text/1--></button><!--M_*1 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{count:0}]),\"__tests__/template.marko_0_count 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"a b c\"\n    >\n      0\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/multi-class-toggle/template.marko",
    "content": "<let/count=0>\n<button class={\n  \"a b c\": true,\n  \"d e f\": count % 2,\n} onClick() { count++ }>\n  ${count}\n</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/multi-class-toggle/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/multiple-binds/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"r\",\n      \"$$count__OR__valueChange\": \"_\",\n      \"$$count__script\": \"a\",\n      \"$$count\": \"i\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/multiple-binds/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  <input\n    value=\"0\"\n  />\n  <input\n    value=\"0\"\n  />\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  <input\n    default-value=\"0\"\n    value=\"1\"\n  />\n  <input\n    default-value=\"0\"\n    value=\"1\"\n  />\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  <input\n    default-value=\"0\"\n    value=\"2\"\n  />\n  <input\n    default-value=\"0\"\n    value=\"2\"\n  />\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/multiple-binds/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  <input\n    value=\"0\"\n  />\n  <input\n    value=\"0\"\n  />\n</button>\n```\n\n# Mutations\n```\nINSERT button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  <input\n    default-value=\"0\"\n    value=\"1\"\n  />\n  <input\n    default-value=\"0\"\n    value=\"1\"\n  />\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  <input\n    default-value=\"0\"\n    value=\"2\"\n  />\n  <input\n    default-value=\"0\"\n    value=\"2\"\n  />\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/multiple-binds/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 323 (min) 188 (brotli)\nconst $count__OR__valueChange = _._or(5, ($scope) => {\n    (_._attr_input_value($scope, \"b\", $scope.d, $scope.e),\n      _._attr_input_value($scope, \"c\", $scope.d, $scope.e));\n  }),\n  $count__script = _._script(\"a1\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $count($scope, $scope.d + 1);\n    }),\n  ),\n  $count = _._let(3, ($scope) => {\n    ($count__OR__valueChange($scope), $count__script($scope));\n  });\n(_._script(\"a2\", ($scope) => {\n  (_._attr_input_value_script($scope, \"b\"),\n    _._attr_input_value_script($scope, \"c\"));\n}),\n  _._resume(\"a0\", function ($scope) {\n    return (_new_count) => {\n      $count($scope, _new_count);\n    };\n  }),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/multiple-binds/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button><input><input></button>\";\nexport const $walks = /* get, next(1), get, over(1), get, out(1) */\" D b l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $count__OR__valueChange = /* @__PURE__ */_._or(5, $scope => {\n  _._attr_input_value($scope, \"#input/1\", $scope.count, $scope.$valueChange);\n  _._attr_input_value($scope, \"#input/2\", $scope.count, $scope.$valueChange);\n});\nconst $count__script = _._script(\"__tests__/template.marko_0_count\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $count($scope, $scope.count + 1);\n}));\nconst $count = /* @__PURE__ */_._let(\"count/3\", $scope => {\n  $count__OR__valueChange($scope);\n  $count__script($scope);\n});\nconst $valueChange3 = /* @__PURE__ */_._const(\"$valueChange\", $count__OR__valueChange);\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => {\n  _._attr_input_value_script($scope, \"#input/1\");\n  _._attr_input_value_script($scope, \"#input/2\");\n});\nexport function $setup($scope) {\n  $count($scope, 0);\n  $valueChange3($scope, $valueChange2($scope));\n  $setup__script($scope);\n}\nfunction $valueChange2($scope) {\n  return _new_count => {\n    $count($scope, _new_count);\n  };\n}\n_._resume(\"__tests__/template.marko_0/valueChange2\", $valueChange2);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/multiple-binds/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let count = 0;\n  const $valueChange = _._resume(_new_count => {\n    count = _new_count;\n  }, \"__tests__/template.marko_0/valueChange2\", $scope0_id);\n  _._html(`<button><input${_._attr_input_value($scope0_id, \"#input/1\", count, $valueChange)}>${_._el_resume($scope0_id, \"#input/1\")}<input${_._attr_input_value($scope0_id, \"#input/2\", count, $valueChange)}>${_._el_resume($scope0_id, \"#input/2\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._script($scope0_id, \"__tests__/template.marko_0_count\");\n  _._scope($scope0_id, {\n    count,\n    $valueChange\n  }, \"__tests__/template.marko\", 0, {\n    count: \"1:5\",\n    $valueChange: 0\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/multiple-binds/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  <input\n    value=\"0\"\n  />\n  <input\n    value=\"0\"\n  />\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  <input\n    default-value=\"0\"\n    value=\"1\"\n  />\n  <input\n    default-value=\"0\"\n    value=\"1\"\n  />\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  <input\n    default-value=\"0\"\n    value=\"2\"\n  />\n  <input\n    default-value=\"0\"\n    value=\"2\"\n  />\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/multiple-binds/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      <input\n        value=\"0\"\n      />\n      <!--M_*1 #input/1-->\n      <input\n        value=\"0\"\n      />\n      <!--M_*1 #input/2-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#input/1\": 2,\n          \"ControlledType:#input/2\": 2,\n          count: 0\n        }], _.a[\"ControlledHandler:#input/1\"] = _.a[\n          \"ControlledHandler:#input/2\"] = _.a.$valueChange = _._[\n          \"__tests__/template.marko_0/valueChange2\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      <input\n        default-value=\"0\"\n        value=\"1\"\n      />\n      <!--M_*1 #input/1-->\n      <input\n        default-value=\"0\"\n        value=\"1\"\n      />\n      <!--M_*1 #input/2-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#input/1\": 2,\n          \"ControlledType:#input/2\": 2,\n          count: 0\n        }], _.a[\"ControlledHandler:#input/1\"] = _.a[\n          \"ControlledHandler:#input/2\"] = _.a.$valueChange = _._[\n          \"__tests__/template.marko_0/valueChange2\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      <input\n        default-value=\"0\"\n        value=\"2\"\n      />\n      <!--M_*1 #input/1-->\n      <input\n        default-value=\"0\"\n        value=\"2\"\n      />\n      <!--M_*1 #input/2-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#input/1\": 2,\n          \"ControlledType:#input/2\": 2,\n          count: 0\n        }], _.a[\"ControlledHandler:#input/1\"] = _.a[\n          \"ControlledHandler:#input/2\"] = _.a.$valueChange = _._[\n          \"__tests__/template.marko_0/valueChange2\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/multiple-binds/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  <input\n    value=\"0\"\n  />\n  <input\n    value=\"0\"\n  />\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/multiple-binds/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button><input value=0><!--M_*1 #input/1--><input value=0><!--M_*1 #input/2--></button><!--M_*1 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={\"ControlledType:#input/1\":2,\"ControlledType:#input/2\":2,count:0}],_.a[\"ControlledHandler:#input/1\"]=_.a[\"ControlledHandler:#input/2\"]=_.a.$valueChange=_._[\"__tests__/template.marko_0/valueChange2\"](_.a),_.b),\"__tests__/template.marko_0 1 __tests__/template.marko_0_count 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      <input\n        value=\"0\"\n      />\n      <!--M_*1 #input/1-->\n      <input\n        value=\"0\"\n      />\n      <!--M_*1 #input/2-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#input/1\": 2,\n          \"ControlledType:#input/2\": 2,\n          count: 0\n        }], _.a[\"ControlledHandler:#input/1\"] = _.a[\n          \"ControlledHandler:#input/2\"] = _.a.$valueChange = _._[\n          \"__tests__/template.marko_0/valueChange2\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/input0\nINSERT html/body/button/#comment0\nINSERT html/body/button/input1\nINSERT html/body/button/#comment1\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/multiple-binds/template.marko",
    "content": "let/count=0\nbutton onClick() {\n  count++;\n}\n  input value:=count\n  input value:=count\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/multiple-binds/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction increment(container: Element) {\n  container.querySelector<HTMLButtonElement>(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, increment, increment],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/multiple-bound-values/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"n\",\n      \"$$count__script\": \"o\",\n      \"$$count$1\": \"e\",\n      \"$$input_count1__OR__input_count1Change\": \"r\",\n      \"$$input_count\": \"_\",\n      \"$$count2__script\": \"c\",\n      \"$$count2$1\": \"m\",\n      \"$$input_count2__OR__input_count2Change\": \"i\",\n      \"$$input_count2\": \"a\",\n      \"$$count\": \"s\",\n      \"$$count2\": \"u\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/multiple-bound-values/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n<button>\n  0\n</button>\n<div>\n  0 0\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\").forEach(item => item.click());\n```\n```html\n<button>\n  1\n</button>\n<button>\n  1\n</button>\n<div>\n  1 1\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\").forEach(item => item.click());\n```\n```html\n<button>\n  2\n</button>\n<button>\n  2\n</button>\n<div>\n  2 2\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\").forEach(item => item.click());\n```\n```html\n<button>\n  3\n</button>\n<button>\n  3\n</button>\n<div>\n  3 3\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/multiple-bound-values/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n<button>\n  0\n</button>\n<div>\n  0 0\n</div>\n```\n\n# Mutations\n```\nINSERT button0, button1, div\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\").forEach(item => item.click());\n```\n```html\n<button>\n  1\n</button>\n<button>\n  1\n</button>\n<div>\n  1 1\n</div>\n```\n\n# Mutations\n```\nUPDATE div/#text0 \"0\" => \"1\"\nUPDATE div/#text2 \"0\" => \"1\"\nUPDATE button0/#text \"0\" => \"1\"\nUPDATE button1/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\").forEach(item => item.click());\n```\n```html\n<button>\n  2\n</button>\n<button>\n  2\n</button>\n<div>\n  2 2\n</div>\n```\n\n# Mutations\n```\nUPDATE div/#text0 \"1\" => \"2\"\nUPDATE div/#text2 \"1\" => \"2\"\nUPDATE button0/#text \"1\" => \"2\"\nUPDATE button1/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\").forEach(item => item.click());\n```\n```html\n<button>\n  3\n</button>\n<button>\n  3\n</button>\n<div>\n  3 3\n</div>\n```\n\n# Mutations\n```\nUPDATE div/#text0 \"2\" => \"3\"\nUPDATE div/#text2 \"2\" => \"3\"\nUPDATE button0/#text \"2\" => \"3\"\nUPDATE button1/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/multiple-bound-values/__snapshots__/dom.expected/tags/2counters.js",
    "content": "export const $template = \"<button> </button><button> </button>\";\nexport const $walks = /* get, next(1), get, out(1), get, next(1), get, out(1) */\" D l D l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $count__script = _._script(\"__tests__/tags/2counters.marko_0_count1\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $count($scope, $scope.count1 + 1);\n}));\nconst $count = /* @__PURE__ */_._let(\"count1/12\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.count1);\n  $count__script($scope);\n});\nconst $input_count1__OR__input_count1Change = /* @__PURE__ */_._or(8, $scope => $count($scope, $scope.input_count1, $scope.input_count1Change));\nexport const $input_count = /* @__PURE__ */_._const(\"input_count1\", $input_count1__OR__input_count1Change);\nexport const $input_count1Change = /* @__PURE__ */_._const(\"input_count1Change\", $input_count1__OR__input_count1Change);\nconst $count2__script = _._script(\"__tests__/tags/2counters.marko_0_count2\", $scope => _._on($scope[\"#button/2\"], \"click\", function () {\n  $count2($scope, $scope.count2 + 1);\n}));\nconst $count2 = /* @__PURE__ */_._let(\"count2/13\", $scope => {\n  _._text($scope[\"#text/3\"], $scope.count2);\n  $count2__script($scope);\n});\nconst $input_count2__OR__input_count2Change = /* @__PURE__ */_._or(11, $scope => $count2($scope, $scope.input_count2, $scope.input_count2Change));\nexport const $input_count2 = /* @__PURE__ */_._const(\"input_count2\", $input_count2__OR__input_count2Change);\nexport const $input_count2Change = /* @__PURE__ */_._const(\"input_count2Change\", $input_count2__OR__input_count2Change);\nexport const $input = ($scope, input) => {\n  $input_count($scope, input.count1);\n  $input_count1Change($scope, input.count1Change);\n  $input_count2($scope, input.count2);\n  $input_count2Change($scope, input.count2Change);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/2counters.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/multiple-bound-values/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 489 (min) 219 (brotli)\nconst $count__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $count$1($scope, $scope.m + 1);\n    }),\n  ),\n  $count$1 = _._let(12, ($scope) => {\n    (_._text($scope.b, $scope.m), $count__script($scope));\n  }),\n  $input_count1__OR__input_count1Change = _._or(8, ($scope) =>\n    $count$1($scope, $scope.g, $scope.h),\n  ),\n  $input_count = _._const(6, $input_count1__OR__input_count1Change),\n  $count2__script = _._script(\"a1\", ($scope) =>\n    _._on($scope.c, \"click\", function () {\n      $count2$1($scope, $scope.n + 1);\n    }),\n  ),\n  $count2$1 = _._let(13, ($scope) => {\n    (_._text($scope.d, $scope.n), $count2__script($scope));\n  }),\n  $input_count2__OR__input_count2Change = _._or(11, ($scope) =>\n    $count2$1($scope, $scope.j, $scope.k),\n  ),\n  $input_count2 = _._const(9, $input_count2__OR__input_count2Change),\n  $count = _._let(3, ($scope) => {\n    ($input_count($scope.a, $scope.d), _._text($scope.b, $scope.d));\n  }),\n  $count2 = _._let(4, ($scope) => {\n    ($input_count2($scope.a, $scope.e), _._text($scope.c, $scope.e));\n  });\n(_._resume(\"b1\", function ($scope) {\n  return (_new_count2) => {\n    $count2($scope, _new_count2);\n  };\n}),\n  _._resume(\"b0\", function ($scope) {\n    return (_new_count1) => {\n      $count($scope, _new_count1);\n    };\n  }),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/multiple-bound-values/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `${_counters_template}<div><!> <!></div>`;\nexport const $walks = /* <2counters>, next(1), replace, over(2), replace, out(1) */`/${_counters_walks}&D%c%l`;\nimport { $setup as _counters, $input_count as _counters_input_count, $input_count1Change as _counters_input_count1Change, $input_count2 as _counters_input_count2, $input_count2Change as _counters_input_count2Change, $template as _counters_template, $walks as _counters_walks } from \"./tags/2counters.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $count = /* @__PURE__ */_._let(\"count1/3\", $scope => {\n  _counters_input_count($scope[\"#childScope/0\"], $scope.count1);\n  _._text($scope[\"#text/1\"], $scope.count1);\n});\nconst $count2 = /* @__PURE__ */_._let(\"count2/4\", $scope => {\n  _counters_input_count2($scope[\"#childScope/0\"], $scope.count2);\n  _._text($scope[\"#text/2\"], $scope.count2);\n});\nexport function $setup($scope) {\n  _counters($scope[\"#childScope/0\"]);\n  _counters_input_count1Change($scope[\"#childScope/0\"], $count1Change($scope));\n  _counters_input_count2Change($scope[\"#childScope/0\"], $count2Change($scope));\n  $count($scope, 0);\n  $count2($scope, 0);\n}\nfunction $count2Change($scope) {\n  return _new_count2 => {\n    $count2($scope, _new_count2);\n  };\n}\nfunction $count1Change($scope) {\n  return _new_count1 => {\n    $count($scope, _new_count1);\n  };\n}\n_._resume(\"__tests__/template.marko_0/count2Change\", $count2Change);\n_._resume(\"__tests__/template.marko_0/count1Change\", $count1Change);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/multiple-bound-values/__snapshots__/html.expected/tags/2counters.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/2counters.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let count1 = input.count1;\n  let count2 = input.count2;\n  _._html(`<button>${_._escape(count1)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}<button>${_._escape(count2)}${_._el_resume($scope0_id, \"#text/3\")}</button>${_._el_resume($scope0_id, \"#button/2\")}`);\n  _._script($scope0_id, \"__tests__/tags/2counters.marko_0_count2\");\n  _._script($scope0_id, \"__tests__/tags/2counters.marko_0_count1\");\n  _._scope($scope0_id, {\n    input_count1: _._serialize_if($scope0_reason, /* input.count1Change */1) && input.count1,\n    input_count1Change: _._serialize_if($scope0_reason, /* input.count1 */0) && input.count1Change,\n    input_count2: _._serialize_if($scope0_reason, /* input.count2Change */3) && input.count2,\n    input_count2Change: _._serialize_if($scope0_reason, /* input.count2 */2) && input.count2Change,\n    count1,\n    count2,\n    \"TagVariableChange:count1\": input.count1Change || void 0,\n    \"TagVariableChange:count2\": input.count2Change || void 0\n  }, \"__tests__/tags/2counters.marko\", 0, {\n    input_count1: [\"input.count1\"],\n    input_count1Change: [\"input.count1Change\"],\n    input_count2: [\"input.count2\"],\n    input_count2Change: [\"input.count2Change\"],\n    count1: \"1:6\",\n    count2: \"2:6\"\n  });\n  _._resume_branch($scope0_id);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/multiple-bound-values/__snapshots__/html.expected/template.js",
    "content": "import _counters from \"./tags/2counters.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let count1 = 0;\n  let count2 = 0;\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason({\n    /* input.count1 */0: /* count1 */1,\n    /* input.count2 */2: /* count2 */1\n  });\n  _counters({\n    count1: count1,\n    count1Change: _._resume(_new_count1 => {\n      count1 = _new_count1;\n    }, \"__tests__/template.marko_0/count1Change\", $scope0_id),\n    count2: count2,\n    count2Change: _._resume(_new_count2 => {\n      count2 = _new_count2;\n    }, \"__tests__/template.marko_0/count2Change\", $scope0_id)\n  });\n  _._html(`<div>${_._escape(count1)}${_._el_resume($scope0_id, \"#text/1\")} <!>${_._escape(count2)}${_._el_resume($scope0_id, \"#text/2\")}</div>`);\n  _._scope($scope0_id, {\n    \"#childScope/0\": _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/multiple-bound-values/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n<button>\n  0\n</button>\n<div>\n  0 0\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\").forEach(item => item.click());\n```\n```html\n<button>\n  1\n</button>\n<button>\n  1\n</button>\n<div>\n  1 1\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\").forEach(item => item.click());\n```\n```html\n<button>\n  2\n</button>\n<button>\n  2\n</button>\n<div>\n  2 2\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\").forEach(item => item.click());\n```\n```html\n<button>\n  3\n</button>\n<button>\n  3\n</button>\n<div>\n  3 3\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/multiple-bound-values/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <button>\n      0\n      <!--M_*2 #text/3-->\n    </button>\n    <!--M_*2 #button/2-->\n    <div>\n      0\n      <!--M_*1 #text/1-->\n       \n      <!---->\n      0\n      <!--M_*1 #text/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n            \"#childScope/0\": _.a = {\n              count1: 0,\n              count2: 0\n            }\n          }, _.a], _.a.input_count1Change = _.a[\"TagVariableChange:count1\"] =\n          _._[\n            \"__tests__/template.marko_0/count1Change\"\n            ](_.c), _.a.input_count2Change = _.a[\"TagVariableChange:count2\"] =\n          _._[\n            \"__tests__/template.marko_0/count2Change\"\n            ](_.c), _.b),\n        \"__tests__/tags/2counters.marko_0_count2 2 __tests__/tags/2counters.marko_0_count1 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\").forEach(item => item.click());\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <button>\n      1\n      <!--M_*2 #text/3-->\n    </button>\n    <!--M_*2 #button/2-->\n    <div>\n      1\n      <!--M_*1 #text/1-->\n       \n      <!---->\n      1\n      <!--M_*1 #text/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n            \"#childScope/0\": _.a = {\n              count1: 0,\n              count2: 0\n            }\n          }, _.a], _.a.input_count1Change = _.a[\"TagVariableChange:count1\"] =\n          _._[\n            \"__tests__/template.marko_0/count1Change\"\n            ](_.c), _.a.input_count2Change = _.a[\"TagVariableChange:count2\"] =\n          _._[\n            \"__tests__/template.marko_0/count2Change\"\n            ](_.c), _.b),\n        \"__tests__/tags/2counters.marko_0_count2 2 __tests__/tags/2counters.marko_0_count1 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/#text0 \"0\" => \"1\"\nUPDATE html/body/div/#text2 \"0\" => \"1\"\nUPDATE html/body/button0/#text \"0\" => \"1\"\nUPDATE html/body/button1/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\").forEach(item => item.click());\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      2\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <button>\n      2\n      <!--M_*2 #text/3-->\n    </button>\n    <!--M_*2 #button/2-->\n    <div>\n      2\n      <!--M_*1 #text/1-->\n       \n      <!---->\n      2\n      <!--M_*1 #text/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n            \"#childScope/0\": _.a = {\n              count1: 0,\n              count2: 0\n            }\n          }, _.a], _.a.input_count1Change = _.a[\"TagVariableChange:count1\"] =\n          _._[\n            \"__tests__/template.marko_0/count1Change\"\n            ](_.c), _.a.input_count2Change = _.a[\"TagVariableChange:count2\"] =\n          _._[\n            \"__tests__/template.marko_0/count2Change\"\n            ](_.c), _.b),\n        \"__tests__/tags/2counters.marko_0_count2 2 __tests__/tags/2counters.marko_0_count1 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/#text0 \"1\" => \"2\"\nUPDATE html/body/div/#text2 \"1\" => \"2\"\nUPDATE html/body/button0/#text \"1\" => \"2\"\nUPDATE html/body/button1/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\").forEach(item => item.click());\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      3\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <button>\n      3\n      <!--M_*2 #text/3-->\n    </button>\n    <!--M_*2 #button/2-->\n    <div>\n      3\n      <!--M_*1 #text/1-->\n       \n      <!---->\n      3\n      <!--M_*1 #text/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n            \"#childScope/0\": _.a = {\n              count1: 0,\n              count2: 0\n            }\n          }, _.a], _.a.input_count1Change = _.a[\"TagVariableChange:count1\"] =\n          _._[\n            \"__tests__/template.marko_0/count1Change\"\n            ](_.c), _.a.input_count2Change = _.a[\"TagVariableChange:count2\"] =\n          _._[\n            \"__tests__/template.marko_0/count2Change\"\n            ](_.c), _.b),\n        \"__tests__/tags/2counters.marko_0_count2 2 __tests__/tags/2counters.marko_0_count1 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/#text0 \"2\" => \"3\"\nUPDATE html/body/div/#text2 \"2\" => \"3\"\nUPDATE html/body/button0/#text \"2\" => \"3\"\nUPDATE html/body/button1/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/multiple-bound-values/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  0\n</button>\n<button>\n  0\n</button>\n<div>\n  0 0\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/multiple-bound-values/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>0<!--M_*2 #text/1--></button><!--M_*2 #button/0--><button>0<!--M_*2 #text/3--></button><!--M_*2 #button/2--><div>0<!--M_*1 #text/1--> <!>0<!--M_*1 #text/2--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.c={\"#childScope/0\":_.a={count1:0,count2:0}},_.a],_.a.input_count1Change=_.a[\"TagVariableChange:count1\"]=_._[\"__tests__/template.marko_0/count1Change\"](_.c),_.a.input_count2Change=_.a[\"TagVariableChange:count2\"]=_._[\"__tests__/template.marko_0/count2Change\"](_.c),_.b),\"__tests__/tags/2counters.marko_0_count2 2 __tests__/tags/2counters.marko_0_count1 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*2 #text/1-->\n    </button>\n    <!--M_*2 #button/0-->\n    <button>\n      0\n      <!--M_*2 #text/3-->\n    </button>\n    <!--M_*2 #button/2-->\n    <div>\n      0\n      <!--M_*1 #text/1-->\n       \n      <!---->\n      0\n      <!--M_*1 #text/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n            \"#childScope/0\": _.a = {\n              count1: 0,\n              count2: 0\n            }\n          }, _.a], _.a.input_count1Change = _.a[\"TagVariableChange:count1\"] =\n          _._[\n            \"__tests__/template.marko_0/count1Change\"\n            ](_.c), _.a.input_count2Change = _.a[\"TagVariableChange:count2\"] =\n          _._[\n            \"__tests__/template.marko_0/count2Change\"\n            ](_.c), _.b),\n        \"__tests__/tags/2counters.marko_0_count2 2 __tests__/tags/2counters.marko_0_count1 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button0\nINSERT html/body/button0/#text\nINSERT html/body/button0/#comment\nINSERT html/body/#comment0\nINSERT html/body/button1\nINSERT html/body/button1/#text\nINSERT html/body/button1/#comment\nINSERT html/body/#comment1\nINSERT html/body/div\nINSERT html/body/div/#text0\nINSERT html/body/div/#comment0\nINSERT html/body/div/#text1\nINSERT html/body/div/#comment1\nINSERT html/body/div/#text2\nINSERT html/body/div/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/multiple-bound-values/tags/2counters.marko",
    "content": "<let/count1:=input.count1>\n<let/count2:=input.count2>\n\n<button onClick() { count1++ }>${count1}</button>\n<button onClick() { count2++ }>${count2}</button>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/multiple-bound-values/template.marko",
    "content": "<let/count1=0>\n<let/count2=0>\n\n<2counters count1:=count1 count2:=count2 />\n\n<div>\n  ${count1} ${count2}\n</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/multiple-bound-values/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction clickAllButtons(container: Element) {\n  container.querySelectorAll(\"button\")!.forEach((item) => item.click());\n}\n\nexport const config: TestConfig = {\n  steps: [{}, clickAllButtons, clickAllButtons, clickAllButtons],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/my-for-to/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/my-for-to/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n012345\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/my-for-to/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<!---->\n<!---->\n0\n<!---->\n<!---->\n1\n<!---->\n<!---->\n2\n<!---->\n<!---->\n3\n<!---->\n<!---->\n4\n<!---->\n<!---->\n5\n<!---->\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, #comment2, #text0, #comment3, #comment4, #text1, #comment5, #comment6, #text2, #comment7, #comment8, #text3, #comment9, #comment10, #text4, #comment11, #comment12, #text5, #comment13, #comment14, #comment15\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/my-for-to/__snapshots__/dom.expected/tags/my-for.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for_content__dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\", 0, 0, 1);\nconst $for_content__input_content__OR__args = /* @__PURE__ */_._or(2, $scope => $for_content__dynamicTag($scope, $scope._.input_content, () => [...$scope.$params2]));\nconst $for_content__input_content = /* @__PURE__ */_._for_closure(\"#text/0\", $for_content__input_content__OR__args);\nconst $for_content__setup = $for_content__input_content;\nconst $for_content__$params = /* @__PURE__ */_._const(\"$params2\", $for_content__input_content__OR__args);\nconst $for = /* @__PURE__ */_._for_to(\"#text/0\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", $for_content__setup, $for_content__$params);\nexport const $input_to = ($scope, input_to) => $for($scope, [input_to, 0, 1]);\nexport const $input = ($scope, input) => {\n  $input_to($scope, input.to);\n  $input_content($scope, input.content);\n};\nexport const $input_content = /* @__PURE__ */_._const(\"input_content\", $for_content__input_content);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/my-for.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/my-for-to/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 74 (min) 78 (brotli)\n_._content_resume(\"b0\", \" \", \" b\", 0, ($scope, $params2) =>\n  (($scope, i) => _._text($scope.a, i))($scope, $params2[0]),\n);\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/my-for-to/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<!>${_myFor_template}<!>`;\nexport const $walks = /* over(1), <my-for>, over(1) */`b/${_myFor_walks}&b`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _myFor, $input_content as _myFor_input_content, $input_to as _myFor_input_to, $template as _myFor_template, $walks as _myFor_walks } from \"./tags/my-for.marko\";\nconst $myfor_content__i = ($scope, i) => _._text($scope[\"#text/0\"], i);\nconst $myfor_content__$params = ($scope, $params2) => $myfor_content__i($scope, $params2[0]);\nconst $myfor_content = _._content_resume(\"__tests__/template.marko_1_content\", \" \", /* get, over(1) */\" b\", 0, $myfor_content__$params);\nexport function $setup($scope) {\n  _myFor($scope[\"#childScope/0\"]);\n  _myFor_input_content($scope[\"#childScope/0\"], $myfor_content($scope));\n  _myFor_input_to($scope[\"#childScope/0\"], 5);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/my-for-to/__snapshots__/html.expected/tags/my-for.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/my-for.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._for_to(input.to, 0, 1, (...args) => {\n    const $scope1_id = _._scope_id();\n    _._dynamic_tag($scope1_id, \"#text/0\", input.content, [...args], 0, 1, _._serialize_guard($scope0_reason, /* input.to, input.content */0));\n    _._serialize_if($scope0_reason, /* input.to, input.content */0) && _._scope($scope1_id, {\n      $params2: _._serialize_if($scope0_reason, /* input.content */2) && $params2,\n      _: _._scope_with_id($scope0_id)\n    }, \"__tests__/tags/my-for.marko\", \"1:2\", {\n      $params2: \"1:6\"\n    });\n  }, 0, $scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.to, input.content */0), _._serialize_guard($scope0_reason, /* input.to */1), _._serialize_guard($scope0_reason, /* input.to */1));\n  _._serialize_if($scope0_reason, /* input.to */1) && _._scope($scope0_id, {\n    input_content: input.content\n  }, \"__tests__/tags/my-for.marko\", 0, {\n    input_content: [\"input.content\"]\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/my-for-to/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _myFor from \"./tags/my-for.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _myFor({\n    to: 5,\n    content: _._content_resume(\"__tests__/template.marko_1_content\", i => {\n      const $scope1_reason = _._scope_reason();\n      const $scope1_id = _._scope_id();\n      _._html(`${_._escape(i)}${_._el_resume($scope1_id, \"#text/0\", _._serialize_guard($scope1_reason, /* i */0))}`);\n      _._serialize_if($scope1_reason, /* i */0) && _._scope($scope1_id, {}, \"__tests__/template.marko\", \"1:2\");\n    }, $scope0_id)\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/my-for-to/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n012345\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/my-for-to/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    012345\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/my-for-to/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n012345\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/my-for-to/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  012345\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    012345\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/my-for-to/tags/my-for.marko",
    "content": "<for|...args| to=input.to>\n  <${input.content}(...args) />\n</>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/my-for-to/template.marko",
    "content": "<my-for|i| to=5>\n  ${i}\n</my-for>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/namespaced-tags/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"a\",\n      \"$$Child_content2\": \"e\",\n      \"$$Child_content\": \"r\",\n      \"$$Parent_content__setup\": \"n\",\n      \"$$Parent_content\": \"_\",\n      \"$$dynamicTag3\": \"m\",\n      \"$$Parent__OR__Child__script\": \"o\",\n      \"$$Parent__OR__Child\": \"c\",\n      \"$$Parent__script\": \"i\",\n      \"$$Parent\": \"s\",\n      \"$$dynamicTag\": \"l\",\n      \"$$dynamicTag2\": \"u\",\n      \"$$Child__script\": \"g\",\n      \"$$Child\": \"f\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/namespaced-tags/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"value\":\"<a href=#></a>\"}`\n\n```html\n<div>\n  <svg>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/2000/svg\"\n    />\n    <a\n      href=\"#bar\"\n      ns=\"http://www.w3.org/2000/svg\"\n    >\n      Hi\n    </a>\n  </svg>\n  <math>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/1998/Math/MathML\"\n    />\n    <a\n      href=\"#bar\"\n      ns=\"http://www.w3.org/1998/Math/MathML\"\n    >\n      Hi\n    </a>\n  </math>\n  <div>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/1999/xhtml\"\n    />\n  </div>\n  <button\n    class=\"toggle-parent\"\n  >\n    Toggle Parent\n  </button>\n  <button\n    class=\"toggle-child\"\n  >\n    Toggle Child\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".toggle-parent\").click();\n```\n```html\n<div>\n  <svg>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/2000/svg\"\n    />\n    <a\n      href=\"#bar\"\n      ns=\"http://www.w3.org/2000/svg\"\n    >\n      Hi\n    </a>\n  </svg>\n  <math>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/1998/Math/MathML\"\n    />\n    <a\n      href=\"#bar\"\n      ns=\"http://www.w3.org/1998/Math/MathML\"\n    >\n      Hi\n    </a>\n  </math>\n  <svg>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/2000/svg\"\n    />\n  </svg>\n  <button\n    class=\"toggle-parent\"\n  >\n    Toggle Parent\n  </button>\n  <button\n    class=\"toggle-child\"\n  >\n    Toggle Child\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".toggle-parent\").click();\n```\n```html\n<div>\n  <svg>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/2000/svg\"\n    />\n    <a\n      href=\"#bar\"\n      ns=\"http://www.w3.org/2000/svg\"\n    >\n      Hi\n    </a>\n  </svg>\n  <math>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/1998/Math/MathML\"\n    />\n    <a\n      href=\"#bar\"\n      ns=\"http://www.w3.org/1998/Math/MathML\"\n    >\n      Hi\n    </a>\n  </math>\n  <div>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/1999/xhtml\"\n    />\n  </div>\n  <button\n    class=\"toggle-parent\"\n  >\n    Toggle Parent\n  </button>\n  <button\n    class=\"toggle-child\"\n  >\n    Toggle Child\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".toggle-parent\").click();\n```\n```html\n<div>\n  <svg>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/2000/svg\"\n    />\n    <a\n      href=\"#bar\"\n      ns=\"http://www.w3.org/2000/svg\"\n    >\n      Hi\n    </a>\n  </svg>\n  <math>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/1998/Math/MathML\"\n    />\n    <a\n      href=\"#bar\"\n      ns=\"http://www.w3.org/1998/Math/MathML\"\n    >\n      Hi\n    </a>\n  </math>\n  <svg>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/2000/svg\"\n    />\n  </svg>\n  <button\n    class=\"toggle-parent\"\n  >\n    Toggle Parent\n  </button>\n  <button\n    class=\"toggle-child\"\n  >\n    Toggle Child\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".toggle-child\").click();\n```\n```html\n<div>\n  <svg>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/2000/svg\"\n    />\n    Hi\n  </svg>\n  <math>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/1998/Math/MathML\"\n    />\n    Hi\n  </math>\n  <svg>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/2000/svg\"\n    />\n  </svg>\n  <button\n    class=\"toggle-parent\"\n  >\n    Toggle Parent\n  </button>\n  <button\n    class=\"toggle-child\"\n  >\n    Toggle Child\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".toggle-child\").click();\n```\n```html\n<div>\n  <svg>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/2000/svg\"\n    />\n    <a\n      href=\"#bar\"\n      ns=\"http://www.w3.org/2000/svg\"\n    >\n      Hi\n    </a>\n  </svg>\n  <math>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/1998/Math/MathML\"\n    />\n    <a\n      href=\"#bar\"\n      ns=\"http://www.w3.org/1998/Math/MathML\"\n    >\n      Hi\n    </a>\n  </math>\n  <svg>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/2000/svg\"\n    />\n  </svg>\n  <button\n    class=\"toggle-parent\"\n  >\n    Toggle Parent\n  </button>\n  <button\n    class=\"toggle-child\"\n  >\n    Toggle Child\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".toggle-child\").click();\n```\n```html\n<div>\n  <svg>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/2000/svg\"\n    />\n    Hi\n  </svg>\n  <math>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/1998/Math/MathML\"\n    />\n    Hi\n  </math>\n  <svg>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/2000/svg\"\n    />\n  </svg>\n  <button\n    class=\"toggle-parent\"\n  >\n    Toggle Parent\n  </button>\n  <button\n    class=\"toggle-child\"\n  >\n    Toggle Child\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/namespaced-tags/__snapshots__/csr.expected.md",
    "content": "# Render `{\"value\":\"<a href=#></a>\"}`\n\n```html\n<div>\n  <svg>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/2000/svg\"\n    />\n    <a\n      href=\"#bar\"\n      ns=\"http://www.w3.org/2000/svg\"\n    >\n      Hi\n    </a>\n  </svg>\n  <math>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/1998/Math/MathML\"\n    />\n    <a\n      href=\"#bar\"\n      ns=\"http://www.w3.org/1998/Math/MathML\"\n    >\n      Hi\n    </a>\n  </math>\n  <div>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/1999/xhtml\"\n    />\n  </div>\n  <button\n    class=\"toggle-parent\"\n  >\n    Toggle Parent\n  </button>\n  <button\n    class=\"toggle-child\"\n  >\n    Toggle Child\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT div\nUPDATE div/svg/a0[ns] null => \"http://www.w3.org/2000/svg\"\nUPDATE div/svg/a1[ns] null => \"http://www.w3.org/2000/svg\"\nUPDATE div/math/a0[ns] null => \"http://www.w3.org/1998/Math/MathML\"\nUPDATE div/math/a1[ns] null => \"http://www.w3.org/1998/Math/MathML\"\nUPDATE div/div/a[ns] null => \"http://www.w3.org/1999/xhtml\"\n```\n\n# Render\n```js\ncontainer.querySelector(\".toggle-parent\").click();\n```\n```html\n<div>\n  <svg>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/2000/svg\"\n    />\n    <a\n      href=\"#bar\"\n      ns=\"http://www.w3.org/2000/svg\"\n    >\n      Hi\n    </a>\n  </svg>\n  <math>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/1998/Math/MathML\"\n    />\n    <a\n      href=\"#bar\"\n      ns=\"http://www.w3.org/1998/Math/MathML\"\n    >\n      Hi\n    </a>\n  </math>\n  <svg>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/2000/svg\"\n    />\n  </svg>\n  <button\n    class=\"toggle-parent\"\n  >\n    Toggle Parent\n  </button>\n  <button\n    class=\"toggle-child\"\n  >\n    Toggle Child\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT div/svg1\nREMOVE div after div/svg1\nINSERT #text\nINSERT div/svg1/a\nREMOVE #text after div/svg1/a\nUPDATE div/svg1/a[ns] null => \"http://www.w3.org/2000/svg\"\n```\n\n# Render\n```js\ncontainer.querySelector(\".toggle-parent\").click();\n```\n```html\n<div>\n  <svg>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/2000/svg\"\n    />\n    <a\n      href=\"#bar\"\n      ns=\"http://www.w3.org/2000/svg\"\n    >\n      Hi\n    </a>\n  </svg>\n  <math>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/1998/Math/MathML\"\n    />\n    <a\n      href=\"#bar\"\n      ns=\"http://www.w3.org/1998/Math/MathML\"\n    >\n      Hi\n    </a>\n  </math>\n  <div>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/1999/xhtml\"\n    />\n  </div>\n  <button\n    class=\"toggle-parent\"\n  >\n    Toggle Parent\n  </button>\n  <button\n    class=\"toggle-child\"\n  >\n    Toggle Child\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT div/div\nREMOVE svg after div/div\nINSERT #text\nINSERT div/div/a\nREMOVE #text after div/div/a\nUPDATE div/div/a[ns] null => \"http://www.w3.org/1999/xhtml\"\n```\n\n# Render\n```js\ncontainer.querySelector(\".toggle-parent\").click();\n```\n```html\n<div>\n  <svg>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/2000/svg\"\n    />\n    <a\n      href=\"#bar\"\n      ns=\"http://www.w3.org/2000/svg\"\n    >\n      Hi\n    </a>\n  </svg>\n  <math>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/1998/Math/MathML\"\n    />\n    <a\n      href=\"#bar\"\n      ns=\"http://www.w3.org/1998/Math/MathML\"\n    >\n      Hi\n    </a>\n  </math>\n  <svg>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/2000/svg\"\n    />\n  </svg>\n  <button\n    class=\"toggle-parent\"\n  >\n    Toggle Parent\n  </button>\n  <button\n    class=\"toggle-child\"\n  >\n    Toggle Child\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT div/svg1\nREMOVE div after div/svg1\nINSERT #text\nINSERT div/svg1/a\nREMOVE #text after div/svg1/a\nUPDATE div/svg1/a[ns] null => \"http://www.w3.org/2000/svg\"\n```\n\n# Render\n```js\ncontainer.querySelector(\".toggle-child\").click();\n```\n```html\n<div>\n  <svg>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/2000/svg\"\n    />\n    Hi\n  </svg>\n  <math>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/1998/Math/MathML\"\n    />\n    Hi\n  </math>\n  <svg>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/2000/svg\"\n    />\n  </svg>\n  <button\n    class=\"toggle-parent\"\n  >\n    Toggle Parent\n  </button>\n  <button\n    class=\"toggle-child\"\n  >\n    Toggle Child\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT div/svg0/#text\nREMOVE a after div/svg0/#text\nINSERT div/math/#text\nREMOVE a after div/math/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\".toggle-child\").click();\n```\n```html\n<div>\n  <svg>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/2000/svg\"\n    />\n    <a\n      href=\"#bar\"\n      ns=\"http://www.w3.org/2000/svg\"\n    >\n      Hi\n    </a>\n  </svg>\n  <math>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/1998/Math/MathML\"\n    />\n    <a\n      href=\"#bar\"\n      ns=\"http://www.w3.org/1998/Math/MathML\"\n    >\n      Hi\n    </a>\n  </math>\n  <svg>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/2000/svg\"\n    />\n  </svg>\n  <button\n    class=\"toggle-parent\"\n  >\n    Toggle Parent\n  </button>\n  <button\n    class=\"toggle-child\"\n  >\n    Toggle Child\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT div/svg0/a1\nREMOVE #text after div/svg0/a1\nINSERT div/svg0/a1/#text\nUPDATE div/svg0/a1[href] null => \"#bar\"\nINSERT div/math/a1\nREMOVE #text after div/math/a1\nINSERT div/math/a1/#text\nUPDATE div/math/a1[href] null => \"#bar\"\nUPDATE div/svg0/a1[ns] null => \"http://www.w3.org/2000/svg\"\nUPDATE div/math/a1[ns] null => \"http://www.w3.org/1998/Math/MathML\"\n```\n\n# Render\n```js\ncontainer.querySelector(\".toggle-child\").click();\n```\n```html\n<div>\n  <svg>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/2000/svg\"\n    />\n    Hi\n  </svg>\n  <math>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/1998/Math/MathML\"\n    />\n    Hi\n  </math>\n  <svg>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/2000/svg\"\n    />\n  </svg>\n  <button\n    class=\"toggle-parent\"\n  >\n    Toggle Parent\n  </button>\n  <button\n    class=\"toggle-child\"\n  >\n    Toggle Child\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT div/svg0/#text\nREMOVE a after div/svg0/#text\nINSERT div/math/#text\nREMOVE a after div/math/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/namespaced-tags/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 669 (min) 326 (brotli)\nconst $Child_content2 = _._content_resume(\"a0\", \"Hi\", \"b\"),\n  $Child_content = _._content_resume(\"a1\", \"Hi\", \"b\"),\n  $Parent_content__setup = _._closure_get(10, ($scope) =>\n    _._html($scope, $scope._.k, \"a\"),\n  ),\n  $Parent_content = _._content_resume(\"a2\", \" \", \" b\", $Parent_content__setup),\n  $dynamicTag3 = _._dynamic_tag(5, $Parent_content),\n  $Parent__OR__Child__script = _._script(\"a3\", ($scope) => {\n    ($scope.l, $scope.m);\n    for (const node of $scope.a.querySelectorAll(\"a\"))\n      node.getAttribute(\"ns\") !== node.namespaceURI &&\n        node.setAttribute(\"ns\", node.namespaceURI);\n  }),\n  $Parent__OR__Child = _._or(13, $Parent__OR__Child__script),\n  $Parent__script = _._script(\"a4\", ($scope) =>\n    _._on($scope.g, \"click\", function () {\n      $Parent($scope, \"div\" === $scope.l ? \"svg\" : \"div\");\n    }),\n  ),\n  $Parent = _._let(11, ($scope) => {\n    ($dynamicTag3($scope, $scope.l),\n      $Parent__OR__Child($scope),\n      $Parent__script($scope));\n  }),\n  $dynamicTag = _._dynamic_tag(2, $Child_content),\n  $dynamicTag2 = _._dynamic_tag(4, $Child_content2),\n  $Child__script = _._script(\"a5\", ($scope) =>\n    _._on($scope.h, \"click\", function () {\n      $Child($scope, \"a\" === $scope.m ? null : \"a\");\n    }),\n  ),\n  $Child = _._let(12, ($scope) => {\n    ($dynamicTag($scope, $scope.m, () => ({ href: \"#bar\" })),\n      $dynamicTag2($scope, $scope.m, () => ({ href: \"#bar\" })),\n      $Parent__OR__Child($scope),\n      $Child__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/namespaced-tags/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div><svg><!><!></svg><math><!><!></math><!><button class=toggle-parent>Toggle Parent</button><button class=toggle-child>Toggle Child</button></div>\";\nexport const $walks = /* get, next(2), replace, over(1), replace, out(1), next(1), replace, over(1), replace, out(1), replace, over(1), get, over(1), get, out(1) */\" E%b%lD%b%l%b b l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $Child_content2 = _._content_resume(\"__tests__/template.marko_3_content\", \"Hi\", /* over(1) */\"b\");\nconst $Child_content = _._content_resume(\"__tests__/template.marko_2_content\", \"Hi\", /* over(1) */\"b\");\nconst $Parent_content__input_value = /* @__PURE__ */_._closure_get(\"input_value\", $scope => _._html($scope, $scope._.input_value, \"#text/0\"));\nconst $Parent_content__setup = $Parent_content__input_value;\nconst $Parent_content = _._content_resume(\"__tests__/template.marko_1_content\", \" \", /* get, over(1) */\" b\", $Parent_content__setup);\nconst $dynamicTag3 = /* @__PURE__ */_._dynamic_tag(\"#text/5\", $Parent_content);\nconst $Parent__OR__Child__script = _._script(\"__tests__/template.marko_0_Parent_Child\", $scope => {\n  $scope.Parent;\n  $scope.Child;\n  for (const node of _._el_read($scope[\"#div/0\"]).querySelectorAll(\"a\")) {\n    if (node.getAttribute(\"ns\") !== node.namespaceURI) {\n      node.setAttribute(\"ns\", node.namespaceURI);\n    }\n  }\n});\nconst $Parent__OR__Child = /* @__PURE__ */_._or(13, $Parent__OR__Child__script);\nconst $Parent__script = _._script(\"__tests__/template.marko_0_Parent\", $scope => _._on($scope[\"#button/6\"], \"click\", function () {\n  $Parent($scope, $scope.Parent === \"div\" ? \"svg\" : \"div\");\n}));\nconst $Parent = /* @__PURE__ */_._let(\"Parent/11\", $scope => {\n  $dynamicTag3($scope, $scope.Parent);\n  $Parent__OR__Child($scope);\n  $Parent__script($scope);\n});\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/2\", $Child_content);\nconst $dynamicTag2 = /* @__PURE__ */_._dynamic_tag(\"#text/4\", $Child_content2);\nconst $Child__script = _._script(\"__tests__/template.marko_0_Child\", $scope => _._on($scope[\"#button/7\"], \"click\", function () {\n  $Child($scope, $scope.Child === \"a\" ? null : \"a\");\n}));\nconst $Child = /* @__PURE__ */_._let(\"Child/12\", $scope => {\n  $dynamicTag($scope, $scope.Child, () => ({\n    href: \"#bar\"\n  }));\n  $dynamicTag2($scope, $scope.Child, () => ({\n    href: \"#bar\"\n  }));\n  $Parent__OR__Child($scope);\n  $Child__script($scope);\n});\nexport function $setup($scope) {\n  $Parent($scope, \"div\");\n  $Child($scope, \"a\");\n}\nconst $input_value__closure = /* @__PURE__ */_._closure($Parent_content__input_value);\nexport const $input_value = /* @__PURE__ */_._const(\"input_value\", $scope => {\n  _._html($scope, $scope.input_value, \"#text/1\");\n  _._html($scope, $scope.input_value, \"#text/3\");\n  $input_value__closure($scope);\n});\nexport const $input = ($scope, input) => $input_value($scope, input.value);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/namespaced-tags/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $input_value__closures = new Set();\n  let Parent = \"div\";\n  let Child = \"a\";\n  _._html(`<div><svg>${_._unescaped(input.value)}${_._el_resume($scope0_id, \"#text/1\", _._serialize_guard($scope0_reason, /* input.value */0))}`);\n  _._dynamic_tag($scope0_id, \"#text/2\", Child, {\n    href: \"#bar\"\n  }, _._content_resume(\"__tests__/template.marko_2_content\", () => {\n    const $scope2_id = _._scope_id();\n    _._scope_reason();\n    _._html(\"Hi\");\n  }, $scope0_id));\n  _._html(`</svg><math>${_._unescaped(input.value)}${_._el_resume($scope0_id, \"#text/3\", _._serialize_guard($scope0_reason, /* input.value */0))}`);\n  _._dynamic_tag($scope0_id, \"#text/4\", Child, {\n    href: \"#bar\"\n  }, _._content_resume(\"__tests__/template.marko_3_content\", () => {\n    const $scope3_id = _._scope_id();\n    _._scope_reason();\n    _._html(\"Hi\");\n  }, $scope0_id));\n  _._html(\"</math>\");\n  _._dynamic_tag($scope0_id, \"#text/5\", Parent, {}, _._content_resume(\"__tests__/template.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    const $scope1_reason = _._scope_reason();\n    _._html(`${_._unescaped(input.value)}${_._el_resume($scope1_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.value */0))}`);\n    _._subscribe($input_value__closures, _._scope($scope1_id, {\n      _: _._scope_with_id($scope0_id),\n      \"ClosureSignalIndex:input_value\": _._serialize_if($scope0_reason, /* input.value */0) && 0\n    }, \"__tests__/template.marko\", \"12:3\"));\n    _._resume_branch($scope1_id);\n  }, $scope0_id));\n  _._html(`<button class=toggle-parent>Toggle Parent</button>${_._el_resume($scope0_id, \"#button/6\")}<button class=toggle-child>Toggle Child</button>${_._el_resume($scope0_id, \"#button/7\")}</div>${_._el_resume($scope0_id, \"#div/0\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_Parent_Child\");\n  _._script($scope0_id, \"__tests__/template.marko_0_Child\");\n  _._script($scope0_id, \"__tests__/template.marko_0_Parent\");\n  _._scope($scope0_id, {\n    input_value: input.value,\n    Parent,\n    Child,\n    \"ClosureScopes:input_value\": _._serialize_if($scope0_reason, /* input.value */0) && $input_value__closures\n  }, \"__tests__/template.marko\", 0, {\n    input_value: [\"input.value\"],\n    Parent: \"1:5\",\n    Child: \"2:5\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/namespaced-tags/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"value\":\"<a href=#></a>\"}`\n\n```html\n<div>\n  <svg>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/2000/svg\"\n    />\n    <a\n      href=\"#bar\"\n      ns=\"http://www.w3.org/2000/svg\"\n    >\n      Hi\n    </a>\n  </svg>\n  <math>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/1998/Math/MathML\"\n    />\n    <a\n      href=\"#bar\"\n      ns=\"http://www.w3.org/1998/Math/MathML\"\n    >\n      Hi\n    </a>\n  </math>\n  <div>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/1999/xhtml\"\n    />\n  </div>\n  <button\n    class=\"toggle-parent\"\n  >\n    Toggle Parent\n  </button>\n  <button\n    class=\"toggle-child\"\n  >\n    Toggle Child\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".toggle-parent\").click();\n```\n```html\n<div>\n  <svg>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/2000/svg\"\n    />\n    <a\n      href=\"#bar\"\n      ns=\"http://www.w3.org/2000/svg\"\n    >\n      Hi\n    </a>\n  </svg>\n  <math>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/1998/Math/MathML\"\n    />\n    <a\n      href=\"#bar\"\n      ns=\"http://www.w3.org/1998/Math/MathML\"\n    >\n      Hi\n    </a>\n  </math>\n  <svg>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/2000/svg\"\n    />\n  </svg>\n  <button\n    class=\"toggle-parent\"\n  >\n    Toggle Parent\n  </button>\n  <button\n    class=\"toggle-child\"\n  >\n    Toggle Child\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".toggle-parent\").click();\n```\n```html\n<div>\n  <svg>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/2000/svg\"\n    />\n    <a\n      href=\"#bar\"\n      ns=\"http://www.w3.org/2000/svg\"\n    >\n      Hi\n    </a>\n  </svg>\n  <math>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/1998/Math/MathML\"\n    />\n    <a\n      href=\"#bar\"\n      ns=\"http://www.w3.org/1998/Math/MathML\"\n    >\n      Hi\n    </a>\n  </math>\n  <div>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/1999/xhtml\"\n    />\n  </div>\n  <button\n    class=\"toggle-parent\"\n  >\n    Toggle Parent\n  </button>\n  <button\n    class=\"toggle-child\"\n  >\n    Toggle Child\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".toggle-parent\").click();\n```\n```html\n<div>\n  <svg>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/2000/svg\"\n    />\n    <a\n      href=\"#bar\"\n      ns=\"http://www.w3.org/2000/svg\"\n    >\n      Hi\n    </a>\n  </svg>\n  <math>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/1998/Math/MathML\"\n    />\n    <a\n      href=\"#bar\"\n      ns=\"http://www.w3.org/1998/Math/MathML\"\n    >\n      Hi\n    </a>\n  </math>\n  <svg>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/2000/svg\"\n    />\n  </svg>\n  <button\n    class=\"toggle-parent\"\n  >\n    Toggle Parent\n  </button>\n  <button\n    class=\"toggle-child\"\n  >\n    Toggle Child\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".toggle-child\").click();\n```\n```html\n<div>\n  <svg>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/2000/svg\"\n    />\n    Hi\n  </svg>\n  <math>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/1998/Math/MathML\"\n    />\n    Hi\n  </math>\n  <svg>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/2000/svg\"\n    />\n  </svg>\n  <button\n    class=\"toggle-parent\"\n  >\n    Toggle Parent\n  </button>\n  <button\n    class=\"toggle-child\"\n  >\n    Toggle Child\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".toggle-child\").click();\n```\n```html\n<div>\n  <svg>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/2000/svg\"\n    />\n    <a\n      href=\"#bar\"\n      ns=\"http://www.w3.org/2000/svg\"\n    >\n      Hi\n    </a>\n  </svg>\n  <math>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/1998/Math/MathML\"\n    />\n    <a\n      href=\"#bar\"\n      ns=\"http://www.w3.org/1998/Math/MathML\"\n    >\n      Hi\n    </a>\n  </math>\n  <svg>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/2000/svg\"\n    />\n  </svg>\n  <button\n    class=\"toggle-parent\"\n  >\n    Toggle Parent\n  </button>\n  <button\n    class=\"toggle-child\"\n  >\n    Toggle Child\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\".toggle-child\").click();\n```\n```html\n<div>\n  <svg>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/2000/svg\"\n    />\n    Hi\n  </svg>\n  <math>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/1998/Math/MathML\"\n    />\n    Hi\n  </math>\n  <svg>\n    <a\n      href=\"#\"\n      ns=\"http://www.w3.org/2000/svg\"\n    />\n  </svg>\n  <button\n    class=\"toggle-parent\"\n  >\n    Toggle Parent\n  </button>\n  <button\n    class=\"toggle-child\"\n  >\n    Toggle Child\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/namespaced-tags/__snapshots__/resume.expected.md",
    "content": "# Render `{\"value\":\"<a href=#></a>\"}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <svg>\n        <a\n          href=\"#\"\n          ns=\"http://www.w3.org/2000/svg\"\n        />\n        <a\n          href=\"#bar\"\n          ns=\"http://www.w3.org/2000/svg\"\n        >\n          <!--M_[-->\n          Hi\n          <!--M_]2 #a/0 3-->\n        </a>\n        <!--M_'1 #text/2 2-->\n      </svg>\n      <math>\n        <a\n          href=\"#\"\n          ns=\"http://www.w3.org/1998/Math/MathML\"\n        />\n        <a\n          href=\"#bar\"\n          ns=\"http://www.w3.org/1998/Math/MathML\"\n        >\n          <!--M_[-->\n          Hi\n          <!--M_]4 #a/0 5-->\n        </a>\n        <!--M_'1 #text/4 4-->\n      </math>\n      <div>\n        <!--M_[-->\n        <a\n          href=\"#\"\n          ns=\"http://www.w3.org/1999/xhtml\"\n        />\n        <!--M_]6 #div/0 7-->\n      </div>\n      <!--M_'1 #text/5 6-->\n      <button\n        class=\"toggle-parent\"\n      >\n        Toggle Parent\n      </button>\n      <!--M_*1 #button/6-->\n      <button\n        class=\"toggle-child\"\n      >\n        Toggle Child\n      </button>\n      <!--M_*1 #button/7-->\n    </div>\n    <!--M_*1 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ConditionalRenderer:#text/2\": \"a\",\n          \"ConditionalRenderer:#text/4\": \"a\",\n          \"ConditionalRenderer:#text/5\": \"div\",\n          input_value: \"\\x3Ca href=#&gt;\\x3C/a&gt;\",\n          Parent: \"div\",\n          Child: \"a\"\n        },\n        {\n          \"ConditionalRenderer:#a/0\": \"__tests__/template.marko_2_content\"\n        }, 1,\n        {\n          \"ConditionalRenderer:#a/0\": \"__tests__/template.marko_3_content\"\n        }, 1,\n        {\n          \"ConditionalRenderer:#div/0\": \"__tests__/template.marko_1_content\"\n        }, _.d = {\n          _: _.a\n        }], (_.c = new Set).add(_.d), _.b),\n        \"__tests__/template.marko_0_Parent_Child 1 __tests__/template.marko_0_Child 1 __tests__/template.marko_0_Parent 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/svg/a1/#text1\nINSERT html/body/div/math/a1/#text1\nINSERT html/body/div/div/#text\nUPDATE html/body/div/svg/a0[ns] null => \"http://www.w3.org/2000/svg\"\nUPDATE html/body/div/svg/a1[ns] null => \"http://www.w3.org/2000/svg\"\nUPDATE html/body/div/math/a0[ns] null => \"http://www.w3.org/1998/Math/MathML\"\nUPDATE html/body/div/math/a1[ns] null => \"http://www.w3.org/1998/Math/MathML\"\nUPDATE html/body/div/div/a[ns] null => \"http://www.w3.org/1999/xhtml\"\n```\n\n# Render\n```js\ncontainer.querySelector(\".toggle-parent\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <svg>\n        <a\n          href=\"#\"\n          ns=\"http://www.w3.org/2000/svg\"\n        />\n        <a\n          href=\"#bar\"\n          ns=\"http://www.w3.org/2000/svg\"\n        >\n          <!--M_[-->\n          Hi\n          <!--M_]2 #a/0 3-->\n        </a>\n        <!--M_'1 #text/2 2-->\n      </svg>\n      <math>\n        <a\n          href=\"#\"\n          ns=\"http://www.w3.org/1998/Math/MathML\"\n        />\n        <a\n          href=\"#bar\"\n          ns=\"http://www.w3.org/1998/Math/MathML\"\n        >\n          <!--M_[-->\n          Hi\n          <!--M_]4 #a/0 5-->\n        </a>\n        <!--M_'1 #text/4 4-->\n      </math>\n      <svg>\n        <a\n          href=\"#\"\n          ns=\"http://www.w3.org/2000/svg\"\n        />\n      </svg>\n      <!--M_'1 #text/5 6-->\n      <button\n        class=\"toggle-parent\"\n      >\n        Toggle Parent\n      </button>\n      <!--M_*1 #button/6-->\n      <button\n        class=\"toggle-child\"\n      >\n        Toggle Child\n      </button>\n      <!--M_*1 #button/7-->\n    </div>\n    <!--M_*1 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ConditionalRenderer:#text/2\": \"a\",\n          \"ConditionalRenderer:#text/4\": \"a\",\n          \"ConditionalRenderer:#text/5\": \"div\",\n          input_value: \"\\x3Ca href=#&gt;\\x3C/a&gt;\",\n          Parent: \"div\",\n          Child: \"a\"\n        },\n        {\n          \"ConditionalRenderer:#a/0\": \"__tests__/template.marko_2_content\"\n        }, 1,\n        {\n          \"ConditionalRenderer:#a/0\": \"__tests__/template.marko_3_content\"\n        }, 1,\n        {\n          \"ConditionalRenderer:#div/0\": \"__tests__/template.marko_1_content\"\n        }, _.d = {\n          _: _.a\n        }], (_.c = new Set).add(_.d), _.b),\n        \"__tests__/template.marko_0_Parent_Child 1 __tests__/template.marko_0_Child 1 __tests__/template.marko_0_Parent 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/svg1\nREMOVE div after html/body/div/svg1\nINSERT #text\nINSERT html/body/div/svg1/a\nREMOVE #text after html/body/div/svg1/a\nUPDATE html/body/div/svg1/a[ns] null => \"http://www.w3.org/2000/svg\"\n```\n\n# Render\n```js\ncontainer.querySelector(\".toggle-parent\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <svg>\n        <a\n          href=\"#\"\n          ns=\"http://www.w3.org/2000/svg\"\n        />\n        <a\n          href=\"#bar\"\n          ns=\"http://www.w3.org/2000/svg\"\n        >\n          <!--M_[-->\n          Hi\n          <!--M_]2 #a/0 3-->\n        </a>\n        <!--M_'1 #text/2 2-->\n      </svg>\n      <math>\n        <a\n          href=\"#\"\n          ns=\"http://www.w3.org/1998/Math/MathML\"\n        />\n        <a\n          href=\"#bar\"\n          ns=\"http://www.w3.org/1998/Math/MathML\"\n        >\n          <!--M_[-->\n          Hi\n          <!--M_]4 #a/0 5-->\n        </a>\n        <!--M_'1 #text/4 4-->\n      </math>\n      <div>\n        <a\n          href=\"#\"\n          ns=\"http://www.w3.org/1999/xhtml\"\n        />\n      </div>\n      <!--M_'1 #text/5 6-->\n      <button\n        class=\"toggle-parent\"\n      >\n        Toggle Parent\n      </button>\n      <!--M_*1 #button/6-->\n      <button\n        class=\"toggle-child\"\n      >\n        Toggle Child\n      </button>\n      <!--M_*1 #button/7-->\n    </div>\n    <!--M_*1 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ConditionalRenderer:#text/2\": \"a\",\n          \"ConditionalRenderer:#text/4\": \"a\",\n          \"ConditionalRenderer:#text/5\": \"div\",\n          input_value: \"\\x3Ca href=#&gt;\\x3C/a&gt;\",\n          Parent: \"div\",\n          Child: \"a\"\n        },\n        {\n          \"ConditionalRenderer:#a/0\": \"__tests__/template.marko_2_content\"\n        }, 1,\n        {\n          \"ConditionalRenderer:#a/0\": \"__tests__/template.marko_3_content\"\n        }, 1,\n        {\n          \"ConditionalRenderer:#div/0\": \"__tests__/template.marko_1_content\"\n        }, _.d = {\n          _: _.a\n        }], (_.c = new Set).add(_.d), _.b),\n        \"__tests__/template.marko_0_Parent_Child 1 __tests__/template.marko_0_Child 1 __tests__/template.marko_0_Parent 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/div\nREMOVE svg after html/body/div/div\nINSERT #text\nINSERT html/body/div/div/a\nREMOVE #text after html/body/div/div/a\nUPDATE html/body/div/div/a[ns] null => \"http://www.w3.org/1999/xhtml\"\n```\n\n# Render\n```js\ncontainer.querySelector(\".toggle-parent\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <svg>\n        <a\n          href=\"#\"\n          ns=\"http://www.w3.org/2000/svg\"\n        />\n        <a\n          href=\"#bar\"\n          ns=\"http://www.w3.org/2000/svg\"\n        >\n          <!--M_[-->\n          Hi\n          <!--M_]2 #a/0 3-->\n        </a>\n        <!--M_'1 #text/2 2-->\n      </svg>\n      <math>\n        <a\n          href=\"#\"\n          ns=\"http://www.w3.org/1998/Math/MathML\"\n        />\n        <a\n          href=\"#bar\"\n          ns=\"http://www.w3.org/1998/Math/MathML\"\n        >\n          <!--M_[-->\n          Hi\n          <!--M_]4 #a/0 5-->\n        </a>\n        <!--M_'1 #text/4 4-->\n      </math>\n      <svg>\n        <a\n          href=\"#\"\n          ns=\"http://www.w3.org/2000/svg\"\n        />\n      </svg>\n      <!--M_'1 #text/5 6-->\n      <button\n        class=\"toggle-parent\"\n      >\n        Toggle Parent\n      </button>\n      <!--M_*1 #button/6-->\n      <button\n        class=\"toggle-child\"\n      >\n        Toggle Child\n      </button>\n      <!--M_*1 #button/7-->\n    </div>\n    <!--M_*1 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ConditionalRenderer:#text/2\": \"a\",\n          \"ConditionalRenderer:#text/4\": \"a\",\n          \"ConditionalRenderer:#text/5\": \"div\",\n          input_value: \"\\x3Ca href=#&gt;\\x3C/a&gt;\",\n          Parent: \"div\",\n          Child: \"a\"\n        },\n        {\n          \"ConditionalRenderer:#a/0\": \"__tests__/template.marko_2_content\"\n        }, 1,\n        {\n          \"ConditionalRenderer:#a/0\": \"__tests__/template.marko_3_content\"\n        }, 1,\n        {\n          \"ConditionalRenderer:#div/0\": \"__tests__/template.marko_1_content\"\n        }, _.d = {\n          _: _.a\n        }], (_.c = new Set).add(_.d), _.b),\n        \"__tests__/template.marko_0_Parent_Child 1 __tests__/template.marko_0_Child 1 __tests__/template.marko_0_Parent 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/svg1\nREMOVE div after html/body/div/svg1\nINSERT #text\nINSERT html/body/div/svg1/a\nREMOVE #text after html/body/div/svg1/a\nUPDATE html/body/div/svg1/a[ns] null => \"http://www.w3.org/2000/svg\"\n```\n\n# Render\n```js\ncontainer.querySelector(\".toggle-child\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <svg>\n        <a\n          href=\"#\"\n          ns=\"http://www.w3.org/2000/svg\"\n        />\n        Hi\n        <!--M_'1 #text/2 2-->\n      </svg>\n      <math>\n        <a\n          href=\"#\"\n          ns=\"http://www.w3.org/1998/Math/MathML\"\n        />\n        Hi\n        <!--M_'1 #text/4 4-->\n      </math>\n      <svg>\n        <a\n          href=\"#\"\n          ns=\"http://www.w3.org/2000/svg\"\n        />\n      </svg>\n      <!--M_'1 #text/5 6-->\n      <button\n        class=\"toggle-parent\"\n      >\n        Toggle Parent\n      </button>\n      <!--M_*1 #button/6-->\n      <button\n        class=\"toggle-child\"\n      >\n        Toggle Child\n      </button>\n      <!--M_*1 #button/7-->\n    </div>\n    <!--M_*1 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ConditionalRenderer:#text/2\": \"a\",\n          \"ConditionalRenderer:#text/4\": \"a\",\n          \"ConditionalRenderer:#text/5\": \"div\",\n          input_value: \"\\x3Ca href=#&gt;\\x3C/a&gt;\",\n          Parent: \"div\",\n          Child: \"a\"\n        },\n        {\n          \"ConditionalRenderer:#a/0\": \"__tests__/template.marko_2_content\"\n        }, 1,\n        {\n          \"ConditionalRenderer:#a/0\": \"__tests__/template.marko_3_content\"\n        }, 1,\n        {\n          \"ConditionalRenderer:#div/0\": \"__tests__/template.marko_1_content\"\n        }, _.d = {\n          _: _.a\n        }], (_.c = new Set).add(_.d), _.b),\n        \"__tests__/template.marko_0_Parent_Child 1 __tests__/template.marko_0_Child 1 __tests__/template.marko_0_Parent 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/svg0/#text\nREMOVE a after html/body/div/svg0/#text\nINSERT html/body/div/math/#text\nREMOVE a after html/body/div/math/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\".toggle-child\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <svg>\n        <a\n          href=\"#\"\n          ns=\"http://www.w3.org/2000/svg\"\n        />\n        <a\n          href=\"#bar\"\n          ns=\"http://www.w3.org/2000/svg\"\n        >\n          Hi\n        </a>\n        <!--M_'1 #text/2 2-->\n      </svg>\n      <math>\n        <a\n          href=\"#\"\n          ns=\"http://www.w3.org/1998/Math/MathML\"\n        />\n        <a\n          href=\"#bar\"\n          ns=\"http://www.w3.org/1998/Math/MathML\"\n        >\n          Hi\n        </a>\n        <!--M_'1 #text/4 4-->\n      </math>\n      <svg>\n        <a\n          href=\"#\"\n          ns=\"http://www.w3.org/2000/svg\"\n        />\n      </svg>\n      <!--M_'1 #text/5 6-->\n      <button\n        class=\"toggle-parent\"\n      >\n        Toggle Parent\n      </button>\n      <!--M_*1 #button/6-->\n      <button\n        class=\"toggle-child\"\n      >\n        Toggle Child\n      </button>\n      <!--M_*1 #button/7-->\n    </div>\n    <!--M_*1 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ConditionalRenderer:#text/2\": \"a\",\n          \"ConditionalRenderer:#text/4\": \"a\",\n          \"ConditionalRenderer:#text/5\": \"div\",\n          input_value: \"\\x3Ca href=#&gt;\\x3C/a&gt;\",\n          Parent: \"div\",\n          Child: \"a\"\n        },\n        {\n          \"ConditionalRenderer:#a/0\": \"__tests__/template.marko_2_content\"\n        }, 1,\n        {\n          \"ConditionalRenderer:#a/0\": \"__tests__/template.marko_3_content\"\n        }, 1,\n        {\n          \"ConditionalRenderer:#div/0\": \"__tests__/template.marko_1_content\"\n        }, _.d = {\n          _: _.a\n        }], (_.c = new Set).add(_.d), _.b),\n        \"__tests__/template.marko_0_Parent_Child 1 __tests__/template.marko_0_Child 1 __tests__/template.marko_0_Parent 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/svg0/a1\nREMOVE #text after html/body/div/svg0/a1\nINSERT html/body/div/svg0/a1/#text\nUPDATE html/body/div/svg0/a1[href] null => \"#bar\"\nINSERT html/body/div/math/a1\nREMOVE #text after html/body/div/math/a1\nINSERT html/body/div/math/a1/#text\nUPDATE html/body/div/math/a1[href] null => \"#bar\"\nUPDATE html/body/div/svg0/a1[ns] null => \"http://www.w3.org/2000/svg\"\nUPDATE html/body/div/math/a1[ns] null => \"http://www.w3.org/1998/Math/MathML\"\n```\n\n# Render\n```js\ncontainer.querySelector(\".toggle-child\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <svg>\n        <a\n          href=\"#\"\n          ns=\"http://www.w3.org/2000/svg\"\n        />\n        Hi\n        <!--M_'1 #text/2 2-->\n      </svg>\n      <math>\n        <a\n          href=\"#\"\n          ns=\"http://www.w3.org/1998/Math/MathML\"\n        />\n        Hi\n        <!--M_'1 #text/4 4-->\n      </math>\n      <svg>\n        <a\n          href=\"#\"\n          ns=\"http://www.w3.org/2000/svg\"\n        />\n      </svg>\n      <!--M_'1 #text/5 6-->\n      <button\n        class=\"toggle-parent\"\n      >\n        Toggle Parent\n      </button>\n      <!--M_*1 #button/6-->\n      <button\n        class=\"toggle-child\"\n      >\n        Toggle Child\n      </button>\n      <!--M_*1 #button/7-->\n    </div>\n    <!--M_*1 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ConditionalRenderer:#text/2\": \"a\",\n          \"ConditionalRenderer:#text/4\": \"a\",\n          \"ConditionalRenderer:#text/5\": \"div\",\n          input_value: \"\\x3Ca href=#&gt;\\x3C/a&gt;\",\n          Parent: \"div\",\n          Child: \"a\"\n        },\n        {\n          \"ConditionalRenderer:#a/0\": \"__tests__/template.marko_2_content\"\n        }, 1,\n        {\n          \"ConditionalRenderer:#a/0\": \"__tests__/template.marko_3_content\"\n        }, 1,\n        {\n          \"ConditionalRenderer:#div/0\": \"__tests__/template.marko_1_content\"\n        }, _.d = {\n          _: _.a\n        }], (_.c = new Set).add(_.d), _.b),\n        \"__tests__/template.marko_0_Parent_Child 1 __tests__/template.marko_0_Child 1 __tests__/template.marko_0_Parent 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/svg0/#text\nREMOVE a after html/body/div/svg0/#text\nINSERT html/body/div/math/#text\nREMOVE a after html/body/div/math/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/namespaced-tags/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  <svg>\n    <a\n      href=\"#\"\n    />\n    <a\n      href=\"#bar\"\n    >\n      Hi\n    </a>\n  </svg>\n  <math>\n    <a\n      href=\"#\"\n    />\n    <a\n      href=\"#bar\"\n    >\n      Hi\n    </a>\n  </math>\n  <div>\n    <a\n      href=\"#\"\n    />\n  </div>\n  <button\n    class=\"toggle-parent\"\n  >\n    Toggle Parent\n  </button>\n  <button\n    class=\"toggle-child\"\n  >\n    Toggle Child\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/namespaced-tags/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><svg><a href=#></a><a href=#bar><!--M_[-->Hi<!--M_]2 #a/0 3--></a><!--M_'1 #text/2 2--></svg><math><a href=#></a><a href=#bar><!--M_[-->Hi<!--M_]4 #a/0 5--></a><!--M_'1 #text/4 4--></math><div><!--M_[--><a href=#></a><!--M_]6 #div/0 7--></div><!--M_'1 #text/5 6--><button class=toggle-parent>Toggle Parent</button><!--M_*1 #button/6--><button class=toggle-child>Toggle Child</button><!--M_*1 #button/7--></div><!--M_*1 #div/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={\"ConditionalRenderer:#text/2\":\"a\",\"ConditionalRenderer:#text/4\":\"a\",\"ConditionalRenderer:#text/5\":\"div\",input_value:\"\\x3Ca href=#>\\x3C/a>\",Parent:\"div\",Child:\"a\"},{\"ConditionalRenderer:#a/0\":\"__tests__/template.marko_2_content\"},1,{\"ConditionalRenderer:#a/0\":\"__tests__/template.marko_3_content\"},1,{\"ConditionalRenderer:#div/0\":\"__tests__/template.marko_1_content\"},_.d={_:_.a}],(_.c=new Set).add(_.d),_.b),\"__tests__/template.marko_0_Parent_Child 1 __tests__/template.marko_0_Child 1 __tests__/template.marko_0_Parent 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <svg>\n        <a\n          href=\"#\"\n        />\n        <a\n          href=\"#bar\"\n        >\n          <!--M_[-->\n          Hi\n          <!--M_]2 #a/0 3-->\n        </a>\n        <!--M_'1 #text/2 2-->\n      </svg>\n      <math>\n        <a\n          href=\"#\"\n        />\n        <a\n          href=\"#bar\"\n        >\n          <!--M_[-->\n          Hi\n          <!--M_]4 #a/0 5-->\n        </a>\n        <!--M_'1 #text/4 4-->\n      </math>\n      <div>\n        <!--M_[-->\n        <a\n          href=\"#\"\n        />\n        <!--M_]6 #div/0 7-->\n      </div>\n      <!--M_'1 #text/5 6-->\n      <button\n        class=\"toggle-parent\"\n      >\n        Toggle Parent\n      </button>\n      <!--M_*1 #button/6-->\n      <button\n        class=\"toggle-child\"\n      >\n        Toggle Child\n      </button>\n      <!--M_*1 #button/7-->\n    </div>\n    <!--M_*1 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ConditionalRenderer:#text/2\": \"a\",\n          \"ConditionalRenderer:#text/4\": \"a\",\n          \"ConditionalRenderer:#text/5\": \"div\",\n          input_value: \"\\x3Ca href=#&gt;\\x3C/a&gt;\",\n          Parent: \"div\",\n          Child: \"a\"\n        },\n        {\n          \"ConditionalRenderer:#a/0\": \"__tests__/template.marko_2_content\"\n        }, 1,\n        {\n          \"ConditionalRenderer:#a/0\": \"__tests__/template.marko_3_content\"\n        }, 1,\n        {\n          \"ConditionalRenderer:#div/0\": \"__tests__/template.marko_1_content\"\n        }, _.d = {\n          _: _.a\n        }], (_.c = new Set).add(_.d), _.b),\n        \"__tests__/template.marko_0_Parent_Child 1 __tests__/template.marko_0_Child 1 __tests__/template.marko_0_Parent 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/svg\nINSERT html/body/div/svg/a0\nINSERT html/body/div/svg/a1\nINSERT html/body/div/svg/a1/#comment0\nINSERT html/body/div/svg/a1/#text\nINSERT html/body/div/svg/a1/#comment1\nINSERT html/body/div/svg/#comment\nINSERT html/body/div/math\nINSERT html/body/div/math/a0\nINSERT html/body/div/math/a1\nINSERT html/body/div/math/a1/#comment0\nINSERT html/body/div/math/a1/#text\nINSERT html/body/div/math/a1/#comment1\nINSERT html/body/div/math/#comment\nINSERT html/body/div/div\nINSERT html/body/div/div/#comment0\nINSERT html/body/div/div/a\nINSERT html/body/div/div/#comment1\nINSERT html/body/div/#comment0\nINSERT html/body/div/button0\nINSERT html/body/div/button0/#text\nINSERT html/body/div/#comment1\nINSERT html/body/div/button1\nINSERT html/body/div/button1/#text\nINSERT html/body/div/#comment2\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/namespaced-tags/template.marko",
    "content": "let/Parent = \"div\"\nlet/Child = \"a\"\ndiv/el\n  svg\n    -- $!{input.value}\n    Child href=\"#bar\" -- Hi\n\n  math\n    -- $!{input.value}\n    Child href=\"#bar\" -- Hi\n\n  Parent --\n    $!{input.value}\n\n  button.toggle-parent onClick() {\n    Parent = Parent === \"div\" ? \"svg\" : \"div\";\n  } -- Toggle Parent\n\n  button.toggle-child onClick() {\n    Child = Child === \"a\" ? null : \"a\";\n  } -- Toggle Child\n\nscript --\n  Parent;\n  Child;\n  for (const node of el().querySelectorAll(\"a\")) {\n    if (node.getAttribute(\"ns\") !== node.namespaceURI) {\n      node.setAttribute(\"ns\", node.namespaceURI!);\n    }\n  }\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/namespaced-tags/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction clickParent(container: Element) {\n  (container.querySelector(\".toggle-parent\") as HTMLButtonElement).click();\n}\n\nfunction clickChild(container: Element) {\n  (container.querySelector(\".toggle-child\") as HTMLButtonElement).click();\n}\n\nexport const config: TestConfig = {\n  steps: [\n    {\n      value: \"<a href=#></a>\",\n    },\n    clickParent,\n    clickParent,\n    clickParent,\n    clickChild,\n    clickChild,\n    clickChild,\n  ],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-duplicate-attrs/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-duplicate-attrs/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  type=\"button\"\n>\n  Whoops\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-duplicate-attrs/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button\n  type=\"button\"\n>\n  Whoops\n</button>\n```\n\n# Mutations\n```\nINSERT button\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-duplicate-attrs/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-duplicate-attrs/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button type=button>Whoops</button>\";\nexport const $walks = /* over(1) */\"b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-duplicate-attrs/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<button type=button>Whoops</button>\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-duplicate-attrs/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  type=\"button\"\n>\n  Whoops\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-duplicate-attrs/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button\n      type=\"button\"\n    >\n      Whoops\n    </button>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-duplicate-attrs/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button\n  type=\"button\"\n>\n  Whoops\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-duplicate-attrs/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button type=button>Whoops</button>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button\n      type=\"button\"\n    >\n      Whoops\n    </button>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-duplicate-attrs/template.marko",
    "content": "<button\n    type=\"button\"\n    type=\"button\"\n>Whoops</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-local-closures/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$item_content\": \"r\",\n      \"$$for_content__item__script\": \"a\",\n      \"$$for_content__item\": \"c\",\n      \"$$for_content__$params\": \"n\",\n      \"$$Child_content__for\": \"_\",\n      \"$$size__script\": \"s\",\n      \"$$size\": \"e\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-local-closures/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  0\n</div>\n<button>\n  Add\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  0\n</div>\n<div>\n  1\n</div>\n<button>\n  Add\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  0\n</div>\n<div>\n  1\n</div>\n<div>\n  2\n</div>\n<button>\n  Add\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  0\n</div>\n<div>\n  1\n</div>\n<div>\n  2\n</div>\n<div>\n  3\n</div>\n<button>\n  Add\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-local-closures/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<!---->\n<div>\n  0\n</div>\n<!---->\n<button>\n  Add\n</button>\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, div, #comment2, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<!---->\n<div>\n  0\n</div>\n<div>\n  1\n</div>\n<!---->\n<button>\n  Add\n</button>\n```\n\n# Mutations\n```\nINSERT div1\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<!---->\n<div>\n  0\n</div>\n<div>\n  1\n</div>\n<div>\n  2\n</div>\n<!---->\n<button>\n  Add\n</button>\n```\n\n# Mutations\n```\nINSERT div2\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<!---->\n<div>\n  0\n</div>\n<div>\n  1\n</div>\n<div>\n  2\n</div>\n<div>\n  3\n</div>\n<!---->\n<button>\n  Add\n</button>\n```\n\n# Mutations\n```\nINSERT div3\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-local-closures/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 424 (min) 249 (brotli)\nconst $item_content = _._content_closures(_._content_resume(\"a0\", \" \", \" b\"), {\n    4($scope) {\n      _._text($scope.a, $scope.e);\n    },\n  }),\n  $for_content__item__script = _._script(\"a1\", ($scope) =>\n    _._attrs_script($scope, \"a\"),\n  ),\n  $for_content__item = _._const(2, ($scope) => {\n    (_._attrs_content($scope, \"a\", $scope.c),\n      $for_content__item__script($scope));\n  }),\n  $for_content__$params = ($scope, $params3) =>\n    $for_content__item($scope, $params3[0]),\n  $Child_content__for = _._for_of(\n    0,\n    \"<div></div>\",\n    \" b\",\n    0,\n    $for_content__$params,\n  ),\n  $size__script = _._script(\"a2\", ($scope) =>\n    _._on($scope.b, \"click\", function () {\n      $size($scope, $scope.c + 1);\n    }),\n  ),\n  $size = _._let(2, ($scope) => {\n    let $item;\n    (_.forUntil($scope.c, 0, 1, (i) => {\n      $item = _.attrTags($item, { content: $item_content($scope, { 4: i }) });\n    }),\n      (($scope, input_item) => {\n        $Child_content__for($scope, [input_item]);\n      })($scope.a, $item),\n      $size__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-local-closures/__snapshots__/dom.expected/template.js",
    "content": "const $Child_content__walks = /* over(1), replace, over(2) */\"b%c\",\n  $Child_content__template = \"<!><!><!>\";\nexport const $template = `<!>${$Child_content__template}<button>Add</button>`;\nexport const $walks = /* over(1), <Child>, get, over(1) */`b/${$Child_content__walks}& b`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $item_content = /* @__PURE__ */_._content_closures(_._content_resume(\"__tests__/template.marko_3_content\", \" \", /* get, over(1) */\" b\"), {\n  i($scope) {\n    _._text($scope[\"#text/0\"], $scope.i);\n  }\n});\nconst $for_content__item__script = _._script(\"__tests__/template.marko_2_item\", $scope => _._attrs_script($scope, \"#div/0\"));\nconst $for_content__item = /* @__PURE__ */_._const(\"item\", $scope => {\n  _._attrs_content($scope, \"#div/0\", $scope.item);\n  $for_content__item__script($scope);\n});\nconst $for_content__$params = ($scope, $params3) => $for_content__item($scope, $params3[0]);\nconst $Child_content__for = /* @__PURE__ */_._for_of(\"#text/0\", \"<div></div>\", /* get, over(1) */\" b\", 0, $for_content__$params);\nconst $Child_content__input_item = ($scope, input_item) => $Child_content__for($scope, [input_item]);\nconst $Child_content__$params = ($scope, $params2) => $Child_content__input($scope, $params2[0]);\nconst $Child_content__input = ($scope, input) => $Child_content__input_item($scope, input.item);\nconst $size__script = _._script(\"__tests__/template.marko_0_size\", $scope => _._on($scope[\"#button/1\"], \"click\", function () {\n  $size($scope, $scope.size + 1);\n}));\nconst $size = /* @__PURE__ */_._let(\"size/2\", $scope => {\n  let $item;\n  _.forUntil($scope.size, 0, 1, i => {\n    $item = _.attrTags($item, {\n      content: $item_content($scope, {\n        i\n      })\n    });\n  });\n  $Child_content__input_item($scope[\"#childScope/0\"], $item);\n  $size__script($scope);\n});\nexport function $setup($scope) {\n  $size($scope, 1);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-local-closures/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let size = 1;\n  const Child = {\n    content: _._content(\"__tests__/template.marko_1_content\", input => {\n      const $scope1_id = _._scope_id();\n      const $scope1_reason = _._scope_reason();\n      _._for_of(input.item, item => {\n        const $scope2_id = _._scope_id();\n        _._html(\"<div\");\n        _._attrs_content(item, \"#div/0\", $scope2_id, \"div\");\n        _._html(`</div>${_._el_resume($scope2_id, \"#div/0\")}`);\n        _._script($scope2_id, \"__tests__/template.marko_2_item\");\n        _._scope($scope2_id, {\n          item\n        }, \"__tests__/template.marko\", \"4:4\", {\n          item: \"4:8\"\n        });\n      }, 0, $scope1_id, \"#text/0\", _._serialize_guard($scope1_reason, /* input.item */0), _._serialize_guard($scope1_reason, /* input.item */0), _._serialize_guard($scope1_reason, /* input.item */0), 0, 1);\n      _._serialize_if($scope1_reason, /* input.item */0) && _._scope($scope1_id, {}, \"__tests__/template.marko\", \"3:2\");\n    })\n  };\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason(/* size */1);\n  let $item;\n  _.forUntil(size, 0, 1, i => {\n    $item = _.attrTags($item, {\n      content: _._content_resume(\"__tests__/template.marko_3_content\", () => {\n        _._scope_reason();\n        const $scope3_id = _._scope_id();\n        _._html(`${_._escape(i)}${_._el_resume($scope3_id, \"#text/0\")}`);\n        _._scope($scope3_id, {}, \"__tests__/template.marko\", \"11:6\");\n      }, $scope0_id)\n    });\n  });\n  Child.content({\n    item: $item\n  });\n  _._html(`<button>Add</button>${_._el_resume($scope0_id, \"#button/1\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_size\");\n  _._scope($scope0_id, {\n    size,\n    \"#childScope/0\": _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0, {\n    size: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-local-closures/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  0\n</div>\n<button>\n  Add\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  0\n</div>\n<div>\n  1\n</div>\n<button>\n  Add\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  0\n</div>\n<div>\n  1\n</div>\n<div>\n  2\n</div>\n<button>\n  Add\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  0\n</div>\n<div>\n  1\n</div>\n<div>\n  2\n</div>\n<div>\n  3\n</div>\n<button>\n  Add\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-local-closures/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      0\n      <!--M_*4 #text/0-->\n    </div>\n    <!--M_*3 #div/0-->\n    <!--M_|2 #text/0 3-->\n    <button>\n      Add\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.e = {\n          size: 1,\n          \"#childScope/0\": _.a = {}\n        }, _.a,\n        {\n          \"BranchScopes:#div/0\": _.c = {},\n          \"ConditionalRenderer:#div/0\": \"__tests__/template.marko_3_content\",\n          item: _.b = {\n            *[Symbol.iterator]()\n            {\n              yield this\n            }\n          }\n        }, _.c], _.b.content = _._[\n          \"__tests__/template.marko_3_content\"\n          ](_.e), _.d),\n        \"__tests__/template.marko_2_item 3 __tests__/template.marko_0_size 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      0\n      <!--M_*4 #text/0-->\n    </div>\n    <div>\n      1\n    </div>\n    <!--M_*3 #div/0-->\n    <!--M_|2 #text/0 3-->\n    <button>\n      Add\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.e = {\n          size: 1,\n          \"#childScope/0\": _.a = {}\n        }, _.a,\n        {\n          \"BranchScopes:#div/0\": _.c = {},\n          \"ConditionalRenderer:#div/0\": \"__tests__/template.marko_3_content\",\n          item: _.b = {\n            *[Symbol.iterator]()\n            {\n              yield this\n            }\n          }\n        }, _.c], _.b.content = _._[\n          \"__tests__/template.marko_3_content\"\n          ](_.e), _.d),\n        \"__tests__/template.marko_2_item 3 __tests__/template.marko_0_size 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div1\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      0\n      <!--M_*4 #text/0-->\n    </div>\n    <div>\n      1\n    </div>\n    <div>\n      2\n    </div>\n    <!--M_*3 #div/0-->\n    <!--M_|2 #text/0 3-->\n    <button>\n      Add\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.e = {\n          size: 1,\n          \"#childScope/0\": _.a = {}\n        }, _.a,\n        {\n          \"BranchScopes:#div/0\": _.c = {},\n          \"ConditionalRenderer:#div/0\": \"__tests__/template.marko_3_content\",\n          item: _.b = {\n            *[Symbol.iterator]()\n            {\n              yield this\n            }\n          }\n        }, _.c], _.b.content = _._[\n          \"__tests__/template.marko_3_content\"\n          ](_.e), _.d),\n        \"__tests__/template.marko_2_item 3 __tests__/template.marko_0_size 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div2\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      0\n      <!--M_*4 #text/0-->\n    </div>\n    <div>\n      1\n    </div>\n    <div>\n      2\n    </div>\n    <div>\n      3\n    </div>\n    <!--M_*3 #div/0-->\n    <!--M_|2 #text/0 3-->\n    <button>\n      Add\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.e = {\n          size: 1,\n          \"#childScope/0\": _.a = {}\n        }, _.a,\n        {\n          \"BranchScopes:#div/0\": _.c = {},\n          \"ConditionalRenderer:#div/0\": \"__tests__/template.marko_3_content\",\n          item: _.b = {\n            *[Symbol.iterator]()\n            {\n              yield this\n            }\n          }\n        }, _.c], _.b.content = _._[\n          \"__tests__/template.marko_3_content\"\n          ](_.e), _.d),\n        \"__tests__/template.marko_2_item 3 __tests__/template.marko_0_size 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div3\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-local-closures/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  0\n</div>\n<button>\n  Add\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-local-closures/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>0<!--M_*4 #text/0--></div><!--M_*3 #div/0--><!--M_|2 #text/0 3--><button>Add</button><!--M_*1 #button/1--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.d=[0,_.e={size:1,\"#childScope/0\":_.a={}},_.a,{\"BranchScopes:#div/0\":_.c={},\"ConditionalRenderer:#div/0\":\"__tests__/template.marko_3_content\",item:_.b={*[Symbol.iterator](){yield this}}},_.c],_.b.content=_._[\"__tests__/template.marko_3_content\"](_.e),_.d),\"__tests__/template.marko_2_item 3 __tests__/template.marko_0_size 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      0\n      <!--M_*4 #text/0-->\n    </div>\n    <!--M_*3 #div/0-->\n    <!--M_|2 #text/0 3-->\n    <button>\n      Add\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.e = {\n          size: 1,\n          \"#childScope/0\": _.a = {}\n        }, _.a,\n        {\n          \"BranchScopes:#div/0\": _.c = {},\n          \"ConditionalRenderer:#div/0\": \"__tests__/template.marko_3_content\",\n          item: _.b = {\n            *[Symbol.iterator]()\n            {\n              yield this\n            }\n          }\n        }, _.c], _.b.content = _._[\n          \"__tests__/template.marko_3_content\"\n          ](_.e), _.d),\n        \"__tests__/template.marko_2_item 3 __tests__/template.marko_0_size 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/div/#comment\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-local-closures/template.marko",
    "content": "<let/size=1>\n\n<define/Child|input|>\n  <for|item| of=input.item>\n    <div ...item/>\n  </>\n</>\n\n<Child>\n  <for|i| until=size>\n    <@item>${i}</@item>\n  </for>\n</Child>\n\n<button onClick() { size++ }>\n  Add\n</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-local-closures/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-name/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-name/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<span />\n<div />\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-name/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<span />\n<div />\n<div />\n```\n\n# Mutations\n```\nINSERT #comment, span, div0, div1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-name/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-name/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><span></span><div></div><div></div>\";\nexport const $walks = /* over(4) */\"e\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-name/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<span></span><div></div><div></div>\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-name/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<span />\n<div />\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-name/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <span />\n    <div />\n    <div />\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-name/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<span />\n<div />\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-name/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <span></span><div></div><div></div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <span />\n    <div />\n    <div />\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/span\nINSERT html/body/div0\nINSERT html/body/div1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-name/template.marko",
    "content": "<${'span'}/>\n<${`div`}/>\n<div />\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-and-update/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"m\",\n      \"$$btn_getter\": \"o\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-and-update/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  data-count=\"0\"\n>\n  after\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-and-update/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button\n  data-count=\"0\"\n>\n  after\n</button>\n```\n\n# Mutations\n```\nINSERT button\nREMOVE #text in button\nINSERT button/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-and-update/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 72 (min) 73 (brotli)\nconst $btn_getter = _._el(\"a0\", 0);\n(_._script(\"a1\", ($scope) => ($btn_getter($scope)().textContent = \"after\")),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-and-update/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button>Initial</button>\";\nexport const $walks = /* get, over(1) */\" b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $btn_getter = _._el(\"__tests__/template.marko_0_#button\", \"#button/0\");\nconst $count = /* @__PURE__ */_._let(\"count/1\", $scope => _._attr($scope[\"#button/0\"], \"data-count\", $scope.count));\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => ((0, $btn_getter($scope))().textContent = \"after\"));\nexport function $setup($scope) {\n  $count($scope, 0);\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-and-update/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const btn = _._el($scope0_id, \"__tests__/template.marko_0_#button\");\n  let count = 0;\n  _._html(`<button${_._attr(\"data-count\", count)}>Initial</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-and-update/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  data-count=\"0\"\n>\n  after\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-and-update/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button\n      data-count=\"0\"\n    >\n      after\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {}]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #text in html/body/button\nINSERT html/body/button/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-and-update/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button\n  data-count=\"0\"\n>\n  Initial\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-and-update/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button data-count=0>Initial</button><!--M_*1 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{}]),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button\n      data-count=\"0\"\n    >\n      Initial\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {}]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-and-update/template.marko",
    "content": "<let/count=0>\n<button/btn data-count=count>\n  Initial\n</button>\n<script>(0, btn)().textContent = \"after\"</script>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-downstream-effect/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-downstream-effect/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  hello\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-downstream-effect/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  hello\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT div, #text, #comment\nINSERT div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-downstream-effect/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 49 (min) 53 (brotli)\n(_._script(\"a0\", ($scope) => ($scope._.a.textContent = \"hello\")), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-downstream-effect/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div></div><!><!>\";\nexport const $walks = /* get, over(1), replace, over(2) */\" b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content__setup__script = _._script(\"__tests__/template.marko_1\", $scope => (_._el_read($scope._[\"#div/0\"]).textContent = \"hello\"));\nconst $if_content__setup = $if_content__setup__script;\nconst $if = /* @__PURE__ */_._if(\"#text/1\", 0, 0, $if_content__setup);\nexport function $setup($scope) {\n  $if($scope, true ? 0 : 1);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-downstream-effect/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div></div>${_._el_resume($scope0_id, \"#div/0\")}`);\n  if (true) {\n    const $scope1_id = _._scope_id();\n    _._script($scope1_id, \"__tests__/template.marko_1\");\n    _._scope($scope1_id, {\n      _: _._scope_with_id($scope0_id)\n    }, \"__tests__/template.marko\", \"2:2\");\n  }\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-downstream-effect/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  hello\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-downstream-effect/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      hello\n    </div>\n    <!--M_*1 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {},\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-downstream-effect/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-downstream-effect/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div></div><!--M_*1 #div/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={},{_:_.a}]),\"__tests__/template.marko_1 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*1 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {},\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-downstream-effect/template.marko",
    "content": "<div/el/>\n<if=true>\n  <script>\n    el().textContent = \"hello\"\n  </script>\n</if>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-effect/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-effect/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  hello\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-effect/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  hello\n</div>\n```\n\n# Mutations\n```\nINSERT div\nINSERT div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-effect/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 47 (min) 51 (brotli)\n(_._script(\"a0\", ($scope) => ($scope.a.textContent = \"hello\")), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-effect/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* get, over(1) */\" b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => (_._el_read($scope[\"#div/0\"]).textContent = \"hello\"));\nexport const $setup = $setup__script;\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-effect/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div></div>${_._el_resume($scope0_id, \"#div/0\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-effect/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  hello\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-effect/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      hello\n    </div>\n    <!--M_*1 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-effect/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-effect/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div></div><!--M_*1 #div/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0]),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*1 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-effect/template.marko",
    "content": "<div/el/>\n<script>\n  el().textContent = \"hello\"\n</script>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-effect-child/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-effect-child/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  hello\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-effect-child/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  hello\n</div>\n```\n\n# Mutations\n```\nINSERT div\nINSERT div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-effect-child/__snapshots__/dom.expected/tags/hello-setter.js",
    "content": "export const $template = \"\";\nexport const $walks = \"\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $el__script = _._script(\"__tests__/tags/hello-setter.marko_0_el\", $scope => ($scope.el().textContent = \"hello\"));\nexport const $el = /* @__PURE__ */_._const(\"el\", $el__script);\nexport const $input = ($scope, input) => $el($scope, input.el);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/hello-setter.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-effect-child/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 63 (min) 67 (brotli)\n(_._script(\"a0\", ($scope) => ($scope.c().textContent = \"hello\")),\n  _._el(\"b0\", 0),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-effect-child/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<div></div>${_helloSetter_template}`;\nexport const $walks = /* get, over(1), <hello-setter> */` b/${_helloSetter_walks}&`;\nimport { $setup as _helloSetter, $el as _helloSetter_input_el, $template as _helloSetter_template, $walks as _helloSetter_walks } from \"./tags/hello-setter.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $el_getter = _._el(\"__tests__/template.marko_0_#div\", \"#div/0\");\nexport function $setup($scope) {\n  _helloSetter($scope[\"#childScope/1\"]);\n  _helloSetter_input_el($scope[\"#childScope/1\"], $el_getter($scope));\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-effect-child/__snapshots__/html.expected/tags/hello-setter.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/hello-setter.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    el\n  } = input;\n  _._script($scope0_id, \"__tests__/tags/hello-setter.marko_0_el\");\n  _._scope($scope0_id, {\n    el\n  }, \"__tests__/tags/hello-setter.marko\", 0, {\n    el: \"1:10\"\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-effect-child/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _helloSetter from \"./tags/hello-setter.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const el = _._el($scope0_id, \"__tests__/template.marko_0_#div\");\n  _._html(`<div></div>${_._el_resume($scope0_id, \"#div/0\")}`);\n  _helloSetter({\n    el: el\n  });\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-effect-child/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  hello\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-effect-child/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      hello\n    </div>\n    <!--M_*1 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {}, _.a = {}], _.a.el = _._[\n          \"__tests__/template.marko_0_#div\"\n          ](_.c), _.b),\n        \"__tests__/tags/hello-setter.marko_0_el 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-effect-child/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-effect-child/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div></div><!--M_*1 #div/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.c={},_.a={}],_.a.el=_._[\"__tests__/template.marko_0_#div\"](_.c),_.b),\"__tests__/tags/hello-setter.marko_0_el 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*1 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {}, _.a = {}], _.a.el = _._[\n          \"__tests__/template.marko_0_#div\"\n          ](_.c), _.b),\n        \"__tests__/tags/hello-setter.marko_0_el 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-effect-child/tags/hello-setter.marko",
    "content": "<attrs/{ el }/>\n<script>\n  el().textContent = \"hello\";\n</script>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-effect-child/template.marko",
    "content": "<div/el/>\n<hello-setter el=el/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-throws-in-render/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-throws-in-render/__snapshots__/csr-sanitized.expected.md",
    "content": "Element references can only be read in scripts and event handlers."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-throws-in-render/__snapshots__/csr.expected.md",
    "content": "Element references can only be read in scripts and event handlers."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-throws-in-render/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-throws-in-render/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div></div><div> </div>\";\nexport const $walks = /* get, over(1), next(1), get, out(1) */\" bD l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport function $setup($scope) {\n  _._text($scope[\"#text/1\"], _._el_read($scope[\"#div/0\"]));\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-throws-in-render/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div></div>${_._el_resume($scope0_id, \"#div/0\")}<div>${_._escape(($el => $el())(_._el_read_error))}</div>`);\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-throws-in-render/__snapshots__/resume-sanitized.expected.md",
    "content": "Element references can only be read in scripts and event handlers."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-throws-in-render/__snapshots__/resume.expected.md",
    "content": "Element references can only be read in scripts and event handlers."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-throws-in-render/__snapshots__/ssr-sanitized.expected.md",
    "content": "Element references can only be read in scripts and event handlers."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-throws-in-render/__snapshots__/ssr.expected.md",
    "content": "Element references can only be read in scripts and event handlers."
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-throws-in-render/template.marko",
    "content": "<div/$el/>\n\n<div>${$el()}</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-ref-throws-in-render/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_runtime: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  Hello\n</div>\n<button\n  foo=\"1\"\n>\n  Hello\n</button>\n<span>\n  Overridden\n</span>\n<output />\n<strong>\n  Custom content\n</strong>\n<p>\n  Hello\n</p>\n<em>\n  Custom content\n</em>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  Hello\n</div>\n<button\n  foo=\"1\"\n>\n  Hello\n</button>\n<span>\n  Overridden\n</span>\n<output />\n<strong>\n  Custom content\n</strong>\n<p>\n  Hello\n</p>\n<em>\n  Custom content\n</em>\n```\n\n# Mutations\n```\nINSERT div, button, span, output, strong, p, em\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content/__snapshots__/dom.expected/tags/my-div.js",
    "content": "export const $template = \"<div></div><button></button><span>Overridden</span><output></output><strong></strong><p></p><em></em>\";\nexport const $walks = /* get, over(1), get, over(1), get, over(1), get, over(1), get, over(1), get, over(1), get, over(1) */\" b b b b b b b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $CustomContent_content = _._content_resume(\"__tests__/tags/my-div.marko_1_content\", \"Custom content\", /* over(1) */\"b\");\nconst $input__OR__CustomContent_content__script = _._script(\"__tests__/tags/my-div.marko_0_input_CustomContent_content\", $scope => _._attrs_script($scope, \"#p/5\"));\nconst $input__OR__CustomContent_content = /* @__PURE__ */_._or(11, $scope => {\n  _._attrs_content($scope, \"#p/5\", {\n    content: $scope.CustomContent_content,\n    ...$scope.input\n  });\n  $input__OR__CustomContent_content__script($scope);\n});\nconst $input__script = _._script(\"__tests__/tags/my-div.marko_0_input\", $scope => {\n  _._attrs_script($scope, \"#div/0\");\n  _._attrs_script($scope, \"#button/1\");\n  _._attrs_script($scope, \"#span/2\");\n  _._attrs_script($scope, \"#output/3\");\n  _._attrs_script($scope, \"#strong/4\");\n});\nexport const $input = /* @__PURE__ */_._const(\"input\", $scope => {\n  _._attrs_content($scope, \"#div/0\", $scope.input);\n  _._attrs_content($scope, \"#button/1\", {\n    foo: 1,\n    ...$scope.input\n  });\n  _._attrs($scope, \"#span/2\", $scope.input);\n  _._attrs($scope, \"#output/3\", $scope.input);\n  _._attrs($scope, \"#strong/4\", $scope.input);\n  $input__OR__CustomContent_content($scope);\n  $input__script($scope);\n});\nconst $CustomContent = ($scope, CustomContent) => {\n  _._attr_content($scope, \"#em/6\", CustomContent);\n  $CustomContent_content2($scope, CustomContent?.content);\n};\nexport function $setup($scope) {\n  _._attr_content($scope, \"#output/3\", undefined);\n  $CustomContent($scope, {\n    content: $CustomContent_content($scope)\n  });\n}\nconst $CustomContent_content2 = /* @__PURE__ */_._const(\"CustomContent_content\", $scope => {\n  _._attr_content($scope, \"#strong/4\", $scope.CustomContent_content);\n  $input__OR__CustomContent_content($scope);\n});\nexport default /* @__PURE__ */_._template(\"__tests__/tags/my-div.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 263 (min) 107 (brotli)\n(_._content_resume(\"a0\", \"Custom content\", \"b\"),\n  _._script(\"a1\", ($scope) => _._attrs_script($scope, \"f\")),\n  _._script(\"a2\", ($scope) => {\n    (_._attrs_script($scope, \"a\"),\n      _._attrs_script($scope, \"b\"),\n      _._attrs_script($scope, \"c\"),\n      _._attrs_script($scope, \"d\"),\n      _._attrs_script($scope, \"e\"));\n  }),\n  _._content_resume(\"b0\", \"Hello\", \"b\"),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content/__snapshots__/dom.expected/template.js",
    "content": "export const $template = _myDiv_template;\nexport const $walks = /* <my-div> */`/${_myDiv_walks}&`;\nimport { $setup as _myDiv, $input as _myDiv_input, $template as _myDiv_template, $walks as _myDiv_walks } from \"./tags/my-div.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $mydiv_content = _._content_resume(\"__tests__/template.marko_1_content\", \"Hello\", /* over(1) */\"b\");\nexport function $setup($scope) {\n  _myDiv($scope[\"#childScope/0\"]);\n  _myDiv_input($scope[\"#childScope/0\"], {\n    content: $mydiv_content($scope)\n  });\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content/__snapshots__/html.expected/tags/my-div.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/my-div.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div\");\n  _._attrs_content(input, \"#div/0\", $scope0_id, \"div\");\n  _._html(`</div>${_._el_resume($scope0_id, \"#div/0\")}<button`);\n  _._attrs_content({\n    foo: 1,\n    ...input\n  }, \"#button/1\", $scope0_id, \"button\");\n  _._html(`</button>${_._el_resume($scope0_id, \"#button/1\")}<span${_._attrs(input, \"#span/2\", $scope0_id, \"span\")}>Overridden</span>${_._el_resume($scope0_id, \"#span/2\")}<output${_._attrs(input, \"#output/3\", $scope0_id, \"output\")}>`);\n  _._attr_content(\"#output/3\", $scope0_id, undefined);\n  _._html(`</output>${_._el_resume($scope0_id, \"#output/3\")}`);\n  const CustomContent = {\n    content: _._content_resume(\"__tests__/tags/my-div.marko_1_content\", () => {\n      const $scope1_id = _._scope_id();\n      _._scope_reason();\n      _._html(\"Custom content\");\n    }, $scope0_id)\n  };\n  _._html(`<strong${_._attrs(input, \"#strong/4\", $scope0_id, \"strong\")}>`);\n  _._attr_content(\"#strong/4\", $scope0_id, CustomContent.content);\n  _._html(`</strong>${_._el_resume($scope0_id, \"#strong/4\")}<p`);\n  _._attrs_content({\n    content: CustomContent.content,\n    ...input\n  }, \"#p/5\", $scope0_id, \"p\");\n  _._html(`</p>${_._el_resume($scope0_id, \"#p/5\")}<em>`);\n  _._attr_content(\"#em/6\", $scope0_id, CustomContent, 0);\n  _._html(\"</em>\");\n  _._script($scope0_id, \"__tests__/tags/my-div.marko_0_input_CustomContent_content\");\n  _._script($scope0_id, \"__tests__/tags/my-div.marko_0_input\");\n  _._scope($scope0_id, {\n    input,\n    CustomContent_content: CustomContent?.content\n  }, \"__tests__/tags/my-div.marko\", 0, {\n    input: 0,\n    CustomContent_content: [\"CustomContent.content\", \"10:8\"]\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content/__snapshots__/html.expected/template.js",
    "content": "import _myDiv from \"./tags/my-div.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _myDiv({\n    content: _._content_resume(\"__tests__/template.marko_1_content\", () => {\n      _._scope_reason();\n      const $scope1_id = _._scope_id();\n      _._html(\"Hello\");\n    }, $scope0_id)\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  Hello\n</div>\n<button\n  foo=\"1\"\n>\n  Hello\n</button>\n<span>\n  Overridden\n</span>\n<output />\n<strong>\n  Custom content\n</strong>\n<p>\n  Hello\n</p>\n<em>\n  Custom content\n</em>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      Hello\n    </div>\n    <!--M_*2 #div/0-->\n    <button\n      foo=\"1\"\n    >\n      Hello\n    </button>\n    <!--M_*2 #button/1-->\n    <span>\n      Overridden\n    </span>\n    <!--M_*2 #span/2-->\n    <output />\n    <!--M_*2 #output/3-->\n    <strong>\n      Custom content\n    </strong>\n    <!--M_*2 #strong/4-->\n    <p>\n      Hello\n    </p>\n    <!--M_*2 #p/5-->\n    <em>\n      Custom content\n    </em>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.h = [0, 1, _.c = {\n          \"BranchScopes:#div/0\": _.d = {},\n          \"ConditionalRenderer:#div/0\": _.a =\n            \"__tests__/template.marko_1_content\",\n          \"BranchScopes:#button/1\": _.e = {},\n          \"ConditionalRenderer:#button/1\": _.a,\n          \"BranchScopes:#strong/4\": _.f = {},\n          \"ConditionalRenderer:#strong/4\": \"__tests__/tags/my-div.marko_1_content\",\n          \"BranchScopes:#p/5\": _.g = {},\n          \"ConditionalRenderer:#p/5\": _.a,\n          input: _.b = {\n            content: _.i = {}\n          }\n        }, _.d, _.e, 1, _.f, _.g], _.b.content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.i), _.c.CustomContent_content = _._[\n          \"__tests__/tags/my-div.marko_1_content\"\n          ](_.c), _.h),\n        \"__tests__/tags/my-div.marko_0_input_CustomContent_content 2 __tests__/tags/my-div.marko_0_input 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  Hello\n</div>\n<button\n  foo=\"1\"\n>\n  Hello\n</button>\n<span>\n  Overridden\n</span>\n<output />\n<strong>\n  Custom content\n</strong>\n<p>\n  Hello\n</p>\n<em>\n  Custom content\n</em>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>Hello</div><!--M_*2 #div/0--><button foo=1>Hello</button><!--M_*2 #button/1--><span>Overridden</span><!--M_*2 #span/2--><output></output><!--M_*2 #output/3--><strong>Custom content</strong><!--M_*2 #strong/4--><p>Hello</p><!--M_*2 #p/5--><em>Custom content</em><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.h=[0,1,_.c={\"BranchScopes:#div/0\":_.d={},\"ConditionalRenderer:#div/0\":_.a=\"__tests__/template.marko_1_content\",\"BranchScopes:#button/1\":_.e={},\"ConditionalRenderer:#button/1\":_.a,\"BranchScopes:#strong/4\":_.f={},\"ConditionalRenderer:#strong/4\":\"__tests__/tags/my-div.marko_1_content\",\"BranchScopes:#p/5\":_.g={},\"ConditionalRenderer:#p/5\":_.a,input:_.b={content:_.i={}}},_.d,_.e,1,_.f,_.g],_.b.content=_._[\"__tests__/template.marko_1_content\"](_.i),_.c.CustomContent_content=_._[\"__tests__/tags/my-div.marko_1_content\"](_.c),_.h),\"__tests__/tags/my-div.marko_0_input_CustomContent_content 2 __tests__/tags/my-div.marko_0_input 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      Hello\n    </div>\n    <!--M_*2 #div/0-->\n    <button\n      foo=\"1\"\n    >\n      Hello\n    </button>\n    <!--M_*2 #button/1-->\n    <span>\n      Overridden\n    </span>\n    <!--M_*2 #span/2-->\n    <output />\n    <!--M_*2 #output/3-->\n    <strong>\n      Custom content\n    </strong>\n    <!--M_*2 #strong/4-->\n    <p>\n      Hello\n    </p>\n    <!--M_*2 #p/5-->\n    <em>\n      Custom content\n    </em>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.h = [0, 1, _.c = {\n          \"BranchScopes:#div/0\": _.d = {},\n          \"ConditionalRenderer:#div/0\": _.a =\n            \"__tests__/template.marko_1_content\",\n          \"BranchScopes:#button/1\": _.e = {},\n          \"ConditionalRenderer:#button/1\": _.a,\n          \"BranchScopes:#strong/4\": _.f = {},\n          \"ConditionalRenderer:#strong/4\": \"__tests__/tags/my-div.marko_1_content\",\n          \"BranchScopes:#p/5\": _.g = {},\n          \"ConditionalRenderer:#p/5\": _.a,\n          input: _.b = {\n            content: _.i = {}\n          }\n        }, _.d, _.e, 1, _.f, _.g], _.b.content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.i), _.c.CustomContent_content = _._[\n          \"__tests__/tags/my-div.marko_1_content\"\n          ](_.c), _.h),\n        \"__tests__/tags/my-div.marko_0_input_CustomContent_content 2 __tests__/tags/my-div.marko_0_input 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/#comment0\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment1\nINSERT html/body/span\nINSERT html/body/span/#text\nINSERT html/body/#comment2\nINSERT html/body/output\nINSERT html/body/#comment3\nINSERT html/body/strong\nINSERT html/body/strong/#text\nINSERT html/body/#comment4\nINSERT html/body/p\nINSERT html/body/p/#text\nINSERT html/body/#comment5\nINSERT html/body/em\nINSERT html/body/em/#text\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content/tags/my-div.marko",
    "content": "div ...input\n\nbutton foo=1 ...input\n\nspan ...input\n  -- Overridden\n\noutput ...input content=undefined\n\ndefine/CustomContent\n  -- Custom content\n\nstrong ...input content=CustomContent.content\n\np content=CustomContent.content ...input\n\nem content=CustomContent\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content/template.marko",
    "content": "my-div\n  -- Hello"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-var-in-body/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"r\",\n      \"$init\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-var-in-body/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<div>\n  Hello World\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-var-in-body/__snapshots__/csr.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<div>\n  Hello World\n</div>\n```\n\n# Mutations\n```\nINSERT div\nINSERT div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-var-in-body/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 52 (min) 56 (brotli)\n(_._script(\"a0\", ($scope) => ($scope.a.innerHTML += \"Hello World\")), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-var-in-body/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* get, over(1) */\" b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => (_._el_read($scope[\"#div/0\"]).innerHTML += 'Hello World'));\nexport const $setup = $setup__script;\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-var-in-body/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div></div>${_._el_resume($scope0_id, \"#div/0\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-var-in-body/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<div>\n  Hello World\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-var-in-body/__snapshots__/resume.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      Hello World\n    </div>\n    <!--M_*1 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-var-in-body/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-var-in-body/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div></div><!--M_*1 #div/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0]),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*1 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-var-in-body/template.marko",
    "content": "<div/$el>\n  <script>$el().innerHTML += 'Hello World'</script>\n</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/native-tag-var-in-body/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [{ show: true }],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/nested-assignment-expression/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$clickCount__script\": \"e\",\n      \"$$clickCount\": \"m\",\n      \"$$lastCount\": \"r\",\n      \"$$lastCount2\": \"_\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/nested-assignment-expression/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\nused to be\n<span>\n  0\n</span>\nwhich should be the same as\n<span>\n  0\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\nused to be\n<span>\n  0\n</span>\nwhich should be the same as\n<span>\n  0\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\nused to be\n<span>\n  1\n</span>\nwhich should be the same as\n<span>\n  1\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\nused to be\n<span>\n  2\n</span>\nwhich should be the same as\n<span>\n  2\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/nested-assignment-expression/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\nused to be\n<span>\n  0\n</span>\nwhich should be the same as\n<span>\n  0\n</span>\n```\n\n# Mutations\n```\nINSERT button, #text0, span0, #text1, span1\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\nused to be\n<span>\n  0\n</span>\nwhich should be the same as\n<span>\n  0\n</span>\n```\n\n# Mutations\n```\nUPDATE button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\nused to be\n<span>\n  1\n</span>\nwhich should be the same as\n<span>\n  1\n</span>\n```\n\n# Mutations\n```\nUPDATE button/#text \"1\" => \"2\"\nUPDATE span0/#text \"0\" => \"1\"\nUPDATE span1/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\nused to be\n<span>\n  2\n</span>\nwhich should be the same as\n<span>\n  2\n</span>\n```\n\n# Mutations\n```\nUPDATE button/#text \"2\" => \"3\"\nUPDATE span0/#text \"1\" => \"2\"\nUPDATE span1/#text \"1\" => \"2\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/nested-assignment-expression/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 198 (min) 132 (brotli)\nconst $clickCount__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      const last = $lastCount($scope, $clickCount($scope, $scope.e + 1) - 1);\n      $lastCount2($scope, last);\n    }),\n  ),\n  $clickCount = _._let(4, ($scope) => {\n    (_._text($scope.b, $scope.e), $clickCount__script($scope));\n  }),\n  $lastCount = _._let(5, ($scope) => _._text($scope.c, $scope.f)),\n  $lastCount2 = _._let(6, ($scope) => _._text($scope.d, $scope.g));\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/nested-assignment-expression/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button> </button>used to be <span> </span> which should be the same as <span> </span>\";\nexport const $walks = /* get, next(1), get, out(1), over(1), next(1), get, out(1), over(1), next(1), get, out(1) */\" D lbD lbD l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $clickCount__script = _._script(\"__tests__/template.marko_0_clickCount\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  const last = $lastCount($scope, $clickCount($scope, $scope.clickCount + 1) - 1);\n  $lastCount2($scope, last);\n}));\nconst $clickCount = /* @__PURE__ */_._let(\"clickCount/4\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.clickCount);\n  $clickCount__script($scope);\n});\nconst $lastCount = /* @__PURE__ */_._let(\"lastCount/5\", $scope => _._text($scope[\"#text/2\"], $scope.lastCount));\nconst $lastCount2 = /* @__PURE__ */_._let(\"lastCount2/6\", $scope => _._text($scope[\"#text/3\"], $scope.lastCount2));\nexport function $setup($scope) {\n  $clickCount($scope, 0);\n  $lastCount($scope, 0);\n  $lastCount2($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/nested-assignment-expression/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let clickCount = 0;\n  let lastCount = 0;\n  let lastCount2 = 0;\n  _._html(`<button>${_._escape(clickCount)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}used to be <span>${_._escape(lastCount)}${_._el_resume($scope0_id, \"#text/2\")}</span> which should be the same as <span>${_._escape(lastCount2)}${_._el_resume($scope0_id, \"#text/3\")}</span>`);\n  _._script($scope0_id, \"__tests__/template.marko_0_clickCount\");\n  _._scope($scope0_id, {\n    clickCount\n  }, \"__tests__/template.marko\", 0, {\n    clickCount: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/nested-assignment-expression/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\nused to be\n<span>\n  0\n</span>\nwhich should be the same as\n<span>\n  0\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\nused to be\n<span>\n  0\n</span>\nwhich should be the same as\n<span>\n  0\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\nused to be\n<span>\n  1\n</span>\nwhich should be the same as\n<span>\n  1\n</span>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\nused to be\n<span>\n  2\n</span>\nwhich should be the same as\n<span>\n  2\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/nested-assignment-expression/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    used to be \n    <span>\n      0\n      <!--M_*1 #text/2-->\n    </span>\n     which should be the same as \n    <span>\n      0\n      <!--M_*1 #text/3-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          clickCount: 0\n        }]),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    used to be \n    <span>\n      0\n      <!--M_*1 #text/2-->\n    </span>\n     which should be the same as \n    <span>\n      0\n      <!--M_*1 #text/3-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          clickCount: 0\n        }]),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      2\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    used to be \n    <span>\n      1\n      <!--M_*1 #text/2-->\n    </span>\n     which should be the same as \n    <span>\n      1\n      <!--M_*1 #text/3-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          clickCount: 0\n        }]),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"1\" => \"2\"\nUPDATE html/body/span0/#text \"0\" => \"1\"\nUPDATE html/body/span1/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      3\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    used to be \n    <span>\n      2\n      <!--M_*1 #text/2-->\n    </span>\n     which should be the same as \n    <span>\n      2\n      <!--M_*1 #text/3-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          clickCount: 0\n        }]),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"2\" => \"3\"\nUPDATE html/body/span0/#text \"1\" => \"2\"\nUPDATE html/body/span1/#text \"1\" => \"2\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/nested-assignment-expression/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  0\n</button>\nused to be\n<span>\n  0\n</span>\nwhich should be the same as\n<span>\n  0\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/nested-assignment-expression/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>0<!--M_*1 #text/1--></button><!--M_*1 #button/0-->used to be <span>0<!--M_*1 #text/2--></span> which should be the same as <span>0<!--M_*1 #text/3--></span><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{clickCount:0}]),\"__tests__/template.marko_0_clickCount 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    used to be \n    <span>\n      0\n      <!--M_*1 #text/2-->\n    </span>\n     which should be the same as \n    <span>\n      0\n      <!--M_*1 #text/3-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          clickCount: 0\n        }]),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment\nINSERT html/body/#text0\nINSERT html/body/span0\nINSERT html/body/span0/#text\nINSERT html/body/span0/#comment\nINSERT html/body/#text1\nINSERT html/body/span1\nINSERT html/body/span1/#text\nINSERT html/body/span1/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/nested-assignment-expression/template.marko",
    "content": "<let/clickCount = 0/>\n<let/lastCount = 0/>\n<let/lastCount2 = 0/>\n\n<button onClick() {\n  const last = lastCount = clickCount++;\n  lastCount2 = last;\n}>\n  ${clickCount}\n</button>\n-- used to be <span>${lastCount}</span> which should be the same as <span>${lastCount2}</span>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/nested-assignment-expression/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/nested-for-if-stateful/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"_\",\n      \"$init\": \"t\",\n      \"$$else_content__count\": \"o\",\n      \"$$else_content__setup__script\": \"c\",\n      \"$$else_content__setup\": \"r\",\n      \"$$if_content__counts__OR__count__script\": \"n\",\n      \"$$if_content__counts__OR__count\": \"e\",\n      \"$$if_content__counts\": \"i\",\n      \"$$if_content__setup\": \"s\",\n      \"$$if_content__count\": \"b\",\n      \"$$for_content__if\": \"l\",\n      \"$$for_content__editing\": \"m\",\n      \"$$for_content__setup\": \"u\",\n      \"$$for_content__$params\": \"f\",\n      \"$$for_content__count\": \"a\",\n      \"$$for\": \"k\",\n      \"$$counts__closure\": \"p\",\n      \"$$counts\": \"g\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/nested-for-if-stateful/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Increment 0\n</button>\n<button>\n  Increment 0\n</button>\n<button>\n  Increment 0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonIndex].click();\nbuttonIndex = (buttonIndex + 1) % 3;\n```\n```html\n<button>\n  Confirm 1\n</button>\n<button>\n  Increment 0\n</button>\n<button>\n  Increment 0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonIndex].click();\nbuttonIndex = (buttonIndex + 1) % 3;\n```\n```html\n<button>\n  Confirm 1\n</button>\n<button>\n  Confirm 1\n</button>\n<button>\n  Increment 0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonIndex].click();\nbuttonIndex = (buttonIndex + 1) % 3;\n```\n```html\n<button>\n  Confirm 1\n</button>\n<button>\n  Confirm 1\n</button>\n<button>\n  Confirm 1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonIndex].click();\nbuttonIndex = (buttonIndex + 1) % 3;\n```\n```html\n<button>\n  Increment 1\n</button>\n<button>\n  Confirm 1\n</button>\n<button>\n  Confirm 1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonIndex].click();\nbuttonIndex = (buttonIndex + 1) % 3;\n```\n```html\n<button>\n  Increment 1\n</button>\n<button>\n  Increment 1\n</button>\n<button>\n  Confirm 1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonIndex].click();\nbuttonIndex = (buttonIndex + 1) % 3;\n```\n```html\n<button>\n  Increment 1\n</button>\n<button>\n  Increment 1\n</button>\n<button>\n  Increment 1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonIndex].click();\nbuttonIndex = (buttonIndex + 1) % 3;\n```\n```html\n<button>\n  Confirm 2\n</button>\n<button>\n  Increment 1\n</button>\n<button>\n  Increment 1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonIndex].click();\nbuttonIndex = (buttonIndex + 1) % 3;\n```\n```html\n<button>\n  Confirm 2\n</button>\n<button>\n  Confirm 2\n</button>\n<button>\n  Increment 1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonIndex].click();\nbuttonIndex = (buttonIndex + 1) % 3;\n```\n```html\n<button>\n  Confirm 2\n</button>\n<button>\n  Confirm 2\n</button>\n<button>\n  Confirm 2\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/nested-for-if-stateful/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<!---->\n<button>\n  Increment 0\n</button>\n<!---->\n<!---->\n<button>\n  Increment 0\n</button>\n<!---->\n<!---->\n<button>\n  Increment 0\n</button>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, button0, #comment2, #comment3, button1, #comment4, #comment5, button2, #comment6, #comment7\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonIndex].click();\nbuttonIndex = (buttonIndex + 1) % 3;\n```\n```html\n<!---->\n<!---->\n<button>\n  Confirm 1\n</button>\n<!---->\n<!---->\n<button>\n  Increment 0\n</button>\n<!---->\n<!---->\n<button>\n  Increment 0\n</button>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT button0\nREMOVE button after button0\nUPDATE button0/#text1 \"\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonIndex].click();\nbuttonIndex = (buttonIndex + 1) % 3;\n```\n```html\n<!---->\n<!---->\n<button>\n  Confirm 1\n</button>\n<!---->\n<!---->\n<button>\n  Confirm 1\n</button>\n<!---->\n<!---->\n<button>\n  Increment 0\n</button>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT button1\nREMOVE button after button1\nUPDATE button1/#text1 \"\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonIndex].click();\nbuttonIndex = (buttonIndex + 1) % 3;\n```\n```html\n<!---->\n<!---->\n<button>\n  Confirm 1\n</button>\n<!---->\n<!---->\n<button>\n  Confirm 1\n</button>\n<!---->\n<!---->\n<button>\n  Confirm 1\n</button>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT button2\nREMOVE button after button2\nUPDATE button2/#text1 \"\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonIndex].click();\nbuttonIndex = (buttonIndex + 1) % 3;\n```\n```html\n<!---->\n<!---->\n<button>\n  Increment 1\n</button>\n<!---->\n<!---->\n<button>\n  Confirm 1\n</button>\n<!---->\n<!---->\n<button>\n  Confirm 1\n</button>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT button0\nREMOVE button after button0\nUPDATE button0/#text1 \"\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonIndex].click();\nbuttonIndex = (buttonIndex + 1) % 3;\n```\n```html\n<!---->\n<!---->\n<button>\n  Increment 1\n</button>\n<!---->\n<!---->\n<button>\n  Increment 1\n</button>\n<!---->\n<!---->\n<button>\n  Confirm 1\n</button>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT button1\nREMOVE button after button1\nUPDATE button1/#text1 \"\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonIndex].click();\nbuttonIndex = (buttonIndex + 1) % 3;\n```\n```html\n<!---->\n<!---->\n<button>\n  Increment 1\n</button>\n<!---->\n<!---->\n<button>\n  Increment 1\n</button>\n<!---->\n<!---->\n<button>\n  Increment 1\n</button>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT button2\nREMOVE button after button2\nUPDATE button2/#text1 \"\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonIndex].click();\nbuttonIndex = (buttonIndex + 1) % 3;\n```\n```html\n<!---->\n<!---->\n<button>\n  Confirm 2\n</button>\n<!---->\n<!---->\n<button>\n  Increment 1\n</button>\n<!---->\n<!---->\n<button>\n  Increment 1\n</button>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT button0\nREMOVE button after button0\nUPDATE button0/#text1 \"\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonIndex].click();\nbuttonIndex = (buttonIndex + 1) % 3;\n```\n```html\n<!---->\n<!---->\n<button>\n  Confirm 2\n</button>\n<!---->\n<!---->\n<button>\n  Confirm 2\n</button>\n<!---->\n<!---->\n<button>\n  Increment 1\n</button>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT button1\nREMOVE button after button1\nUPDATE button1/#text1 \"\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonIndex].click();\nbuttonIndex = (buttonIndex + 1) % 3;\n```\n```html\n<!---->\n<!---->\n<button>\n  Confirm 2\n</button>\n<!---->\n<!---->\n<button>\n  Confirm 2\n</button>\n<!---->\n<!---->\n<button>\n  Confirm 2\n</button>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT button2\nREMOVE button after button2\nUPDATE button2/#text1 \"\" => \"2\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/nested-for-if-stateful/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 652 (min) 342 (brotli)\nconst $else_content__count = _._if_closure(0, 1, ($scope) =>\n    _._text($scope.b, $scope._.c),\n  ),\n  $else_content__setup__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $for_content__editing($scope._, !0);\n    }),\n  ),\n  $else_content__setup = ($scope) => {\n    ($else_content__count._($scope), $else_content__setup__script($scope));\n  },\n  $if_content__counts__OR__count__script = _._script(\"a1\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      ($counts($scope._._, [\n        ...$scope._._.b.slice(0, $scope._.M),\n        $scope._.c + 1,\n        ...$scope._._.b.slice($scope._.M + 1),\n      ]),\n        $for_content__editing($scope._, !1));\n    }),\n  ),\n  $if_content__counts__OR__count = _._or(\n    2,\n    $if_content__counts__OR__count__script,\n  ),\n  $if_content__counts = _._closure_get(\n    1,\n    $if_content__counts__OR__count,\n    ($scope) => $scope._._,\n  ),\n  $if_content__setup = ($scope) => {\n    ($if_content__counts($scope), $if_content__count._($scope));\n  },\n  $if_content__count = _._if_closure(0, 0, ($scope) => {\n    (_._text($scope.b, $scope._.c + 1), $if_content__counts__OR__count($scope));\n  }),\n  $for_content__if = _._if(\n    0,\n    \"<button>Confirm <!></button>\",\n    \" Db%l\",\n    $if_content__setup,\n    \"<button>Increment <!></button>\",\n    \" Db%l\",\n    $else_content__setup,\n  ),\n  $for_content__editing = _._let(4, ($scope) =>\n    $for_content__if($scope, $scope.e ? 0 : 1),\n  ),\n  $for_content__setup = ($scope) => $for_content__editing($scope, !1),\n  $for_content__$params = ($scope, $params2) =>\n    $for_content__count($scope, $params2[0]),\n  $for_content__count = _._const(2, ($scope) => {\n    ($if_content__count($scope), $else_content__count($scope));\n  }),\n  $for = _._for_of(\n    0,\n    \"<!><!><!>\",\n    \"b%c\",\n    $for_content__setup,\n    $for_content__$params,\n  ),\n  $counts__closure = _._closure($if_content__counts),\n  $counts = _._let(1, ($scope) => {\n    ($for($scope, [$scope.b]), $counts__closure($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/nested-for-if-stateful/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $else_content__count = /* @__PURE__ */_._if_closure(\"#text/0\", 1, $scope => _._text($scope[\"#text/1\"], $scope._.count));\nconst $else_content__setup__script = _._script(\"__tests__/template.marko_3\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $for_content__editing($scope._, true);\n}));\nconst $else_content__setup = $scope => {\n  $else_content__count._($scope);\n  $else_content__setup__script($scope);\n};\nconst $if_content__counts__OR__count__script = _._script(\"__tests__/template.marko_2_counts_count\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $counts($scope._._, [...$scope._._.counts.slice(0, $scope._[\"#LoopKey\"]), $scope._.count + 1, ...$scope._._.counts.slice($scope._[\"#LoopKey\"] + 1)]);\n  $for_content__editing($scope._, false);\n}));\nconst $if_content__counts__OR__count = /* @__PURE__ */_._or(2, $if_content__counts__OR__count__script);\nconst $if_content__counts = /* @__PURE__ */_._closure_get(\"counts\", $if_content__counts__OR__count, $scope => $scope._._);\nconst $if_content__setup = $scope => {\n  $if_content__counts($scope);\n  $if_content__count._($scope);\n};\nconst $if_content__count = /* @__PURE__ */_._if_closure(\"#text/0\", 0, $scope => {\n  _._text($scope[\"#text/1\"], $scope._.count + 1);\n  $if_content__counts__OR__count($scope);\n});\nconst $for_content__if = /* @__PURE__ */_._if(\"#text/0\", \"<button>Confirm <!></button>\", /* get, next(1), over(1), replace, out(1) */\" Db%l\", $if_content__setup, \"<button>Increment <!></button>\", /* get, next(1), over(1), replace, out(1) */\" Db%l\", $else_content__setup);\nconst $for_content__editing = /* @__PURE__ */_._let(\"editing/4\", $scope => $for_content__if($scope, $scope.editing ? 0 : 1));\nconst $for_content__setup = $scope => $for_content__editing($scope, false);\nconst $for_content__$params = ($scope, $params2) => $for_content__count($scope, $params2[0]);\nconst $for_content__count = /* @__PURE__ */_._const(\"count\", $scope => {\n  $if_content__count($scope);\n  $else_content__count($scope);\n});\nconst $for = /* @__PURE__ */_._for_of(\"#text/0\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", $for_content__setup, $for_content__$params);\nconst $counts__closure = /* @__PURE__ */_._closure($if_content__counts);\nconst $counts = /* @__PURE__ */_._let(\"counts/1\", $scope => {\n  $for($scope, [$scope.counts]);\n  $counts__closure($scope);\n});\nexport function $setup($scope) {\n  $counts($scope, [0, 0, 0]);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/nested-for-if-stateful/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $counts__closures = new Set();\n  let counts = [0, 0, 0];\n  _._for_of(counts, (count, i) => {\n    const $scope1_id = _._scope_id();\n    let editing = false;\n    _._if(() => {\n      if (editing) {\n        const $scope2_id = _._scope_id();\n        _._html(`<button>Confirm <!>${_._escape(count + 1)}${_._el_resume($scope2_id, \"#text/1\")}</button>${_._el_resume($scope2_id, \"#button/0\")}`);\n        _._script($scope2_id, \"__tests__/template.marko_2_counts_count\");\n        _._subscribe($counts__closures, _._scope($scope2_id, {\n          _: _._scope_with_id($scope1_id),\n          \"ClosureSignalIndex:counts\": 0\n        }, \"__tests__/template.marko\", \"4:4\"));\n        return 0;\n      } else {\n        const $scope3_id = _._scope_id();\n        _._html(`<button>Increment <!>${_._escape(count)}${_._el_resume($scope3_id, \"#text/1\")}</button>${_._el_resume($scope3_id, \"#button/0\")}`);\n        _._script($scope3_id, \"__tests__/template.marko_3\");\n        _._scope($scope3_id, {\n          _: _._scope_with_id($scope1_id)\n        }, \"__tests__/template.marko\", \"12:4\");\n        return 1;\n      }\n    }, $scope1_id, \"#text/0\", 1, /* editing */1, /* editing */1, 0, 1);\n    _._scope($scope1_id, {\n      count,\n      \"#LoopKey\": i,\n      _: _._scope_with_id($scope0_id)\n    }, \"__tests__/template.marko\", \"2:2\", {\n      count: \"2:6\",\n      \"#LoopKey\": \"2:13\"\n    });\n  }, 0, $scope0_id, \"#text/0\");\n  _._scope($scope0_id, {\n    counts,\n    \"ClosureScopes:counts\": $counts__closures\n  }, \"__tests__/template.marko\", 0, {\n    counts: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/nested-for-if-stateful/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Increment 0\n</button>\n<button>\n  Increment 0\n</button>\n<button>\n  Increment 0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonIndex].click();\nbuttonIndex = (buttonIndex + 1) % 3;\n```\n```html\n<button>\n  Confirm 1\n</button>\n<button>\n  Increment 0\n</button>\n<button>\n  Increment 0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonIndex].click();\nbuttonIndex = (buttonIndex + 1) % 3;\n```\n```html\n<button>\n  Confirm 1\n</button>\n<button>\n  Confirm 1\n</button>\n<button>\n  Increment 0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonIndex].click();\nbuttonIndex = (buttonIndex + 1) % 3;\n```\n```html\n<button>\n  Confirm 1\n</button>\n<button>\n  Confirm 1\n</button>\n<button>\n  Confirm 1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonIndex].click();\nbuttonIndex = (buttonIndex + 1) % 3;\n```\n```html\n<button>\n  Increment 1\n</button>\n<button>\n  Confirm 1\n</button>\n<button>\n  Confirm 1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonIndex].click();\nbuttonIndex = (buttonIndex + 1) % 3;\n```\n```html\n<button>\n  Increment 1\n</button>\n<button>\n  Increment 1\n</button>\n<button>\n  Confirm 1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonIndex].click();\nbuttonIndex = (buttonIndex + 1) % 3;\n```\n```html\n<button>\n  Increment 1\n</button>\n<button>\n  Increment 1\n</button>\n<button>\n  Increment 1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonIndex].click();\nbuttonIndex = (buttonIndex + 1) % 3;\n```\n```html\n<button>\n  Confirm 2\n</button>\n<button>\n  Increment 1\n</button>\n<button>\n  Increment 1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonIndex].click();\nbuttonIndex = (buttonIndex + 1) % 3;\n```\n```html\n<button>\n  Confirm 2\n</button>\n<button>\n  Confirm 2\n</button>\n<button>\n  Increment 1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonIndex].click();\nbuttonIndex = (buttonIndex + 1) % 3;\n```\n```html\n<button>\n  Confirm 2\n</button>\n<button>\n  Confirm 2\n</button>\n<button>\n  Confirm 2\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/nested-for-if-stateful/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <!--M_[-->\n    <button>\n      Increment \n      <!---->\n      0\n      <!--M_*3 #text/1-->\n    </button>\n    <!--M_*3 #button/0-->\n    <!--M_|2 #text/0 3-->\n    <!--M_[2-->\n    <button>\n      Increment \n      <!---->\n      0\n      <!--M_*5 #text/1-->\n    </button>\n    <!--M_*5 #button/0-->\n    <!--M_|4 #text/0 5-->\n    <!--M_[4-->\n    <button>\n      Increment \n      <!---->\n      0\n      <!--M_*7 #text/1-->\n    </button>\n    <!--M_*7 #button/0-->\n    <!--M_|6 #text/0 7-->\n    <!--M_]1 #text/0 6-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.a = {\n          counts: [0, 0, 0],\n          \"ClosureScopes:counts\": new Set\n        }, _.b = {\n          \"ConditionalRenderer:#text/0\": 1,\n          count: 0,\n          \"#LoopKey\": 0,\n          _: _.a\n        },\n        {\n          _: _.b\n        }, _.c = {\n          \"ConditionalRenderer:#text/0\": 1,\n          count: 0,\n          \"#LoopKey\": 1,\n          _: _.a\n        },\n        {\n          _: _.c\n        }, _.d = {\n          \"ConditionalRenderer:#text/0\": 1,\n          count: 0,\n          \"#LoopKey\": 2,\n          _: _.a\n        },\n        {\n          _: _.d\n        }]),\n        \"__tests__/template.marko_3 3 5 7\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/#comment0 before html\nINSERT html/body/#comment0\nINSERT html/body/#text0\nINSERT html/body/#text1\nINSERT html/body/#text2\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonIndex].click();\nbuttonIndex = (buttonIndex + 1) % 3;\n```\n```html\n<html>\n  <head />\n  <body>\n    <!--M_[-->\n    <button>\n      Confirm 1\n    </button>\n    <!--M_*3 #button/0-->\n    <!--M_|2 #text/0 3-->\n    <!--M_[2-->\n    <button>\n      Increment \n      <!---->\n      0\n      <!--M_*5 #text/1-->\n    </button>\n    <!--M_*5 #button/0-->\n    <!--M_|4 #text/0 5-->\n    <!--M_[4-->\n    <button>\n      Increment \n      <!---->\n      0\n      <!--M_*7 #text/1-->\n    </button>\n    <!--M_*7 #button/0-->\n    <!--M_|6 #text/0 7-->\n    <!--M_]1 #text/0 6-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.a = {\n          counts: [0, 0, 0],\n          \"ClosureScopes:counts\": new Set\n        }, _.b = {\n          \"ConditionalRenderer:#text/0\": 1,\n          count: 0,\n          \"#LoopKey\": 0,\n          _: _.a\n        },\n        {\n          _: _.b\n        }, _.c = {\n          \"ConditionalRenderer:#text/0\": 1,\n          count: 0,\n          \"#LoopKey\": 1,\n          _: _.a\n        },\n        {\n          _: _.c\n        }, _.d = {\n          \"ConditionalRenderer:#text/0\": 1,\n          count: 0,\n          \"#LoopKey\": 2,\n          _: _.a\n        },\n        {\n          _: _.d\n        }]),\n        \"__tests__/template.marko_3 3 5 7\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/button0\nREMOVE button after html/body/button0\nUPDATE html/body/button0/#text1 \"\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonIndex].click();\nbuttonIndex = (buttonIndex + 1) % 3;\n```\n```html\n<html>\n  <head />\n  <body>\n    <!--M_[-->\n    <button>\n      Confirm 1\n    </button>\n    <!--M_*3 #button/0-->\n    <!--M_|2 #text/0 3-->\n    <!--M_[2-->\n    <button>\n      Confirm 1\n    </button>\n    <!--M_*5 #button/0-->\n    <!--M_|4 #text/0 5-->\n    <!--M_[4-->\n    <button>\n      Increment \n      <!---->\n      0\n      <!--M_*7 #text/1-->\n    </button>\n    <!--M_*7 #button/0-->\n    <!--M_|6 #text/0 7-->\n    <!--M_]1 #text/0 6-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.a = {\n          counts: [0, 0, 0],\n          \"ClosureScopes:counts\": new Set\n        }, _.b = {\n          \"ConditionalRenderer:#text/0\": 1,\n          count: 0,\n          \"#LoopKey\": 0,\n          _: _.a\n        },\n        {\n          _: _.b\n        }, _.c = {\n          \"ConditionalRenderer:#text/0\": 1,\n          count: 0,\n          \"#LoopKey\": 1,\n          _: _.a\n        },\n        {\n          _: _.c\n        }, _.d = {\n          \"ConditionalRenderer:#text/0\": 1,\n          count: 0,\n          \"#LoopKey\": 2,\n          _: _.a\n        },\n        {\n          _: _.d\n        }]),\n        \"__tests__/template.marko_3 3 5 7\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/button1\nREMOVE button after html/body/button1\nUPDATE html/body/button1/#text1 \"\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonIndex].click();\nbuttonIndex = (buttonIndex + 1) % 3;\n```\n```html\n<html>\n  <head />\n  <body>\n    <!--M_[-->\n    <button>\n      Confirm 1\n    </button>\n    <!--M_*3 #button/0-->\n    <!--M_|2 #text/0 3-->\n    <!--M_[2-->\n    <button>\n      Confirm 1\n    </button>\n    <!--M_*5 #button/0-->\n    <!--M_|4 #text/0 5-->\n    <!--M_[4-->\n    <button>\n      Confirm 1\n    </button>\n    <!--M_*7 #button/0-->\n    <!--M_|6 #text/0 7-->\n    <!--M_]1 #text/0 6-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.a = {\n          counts: [0, 0, 0],\n          \"ClosureScopes:counts\": new Set\n        }, _.b = {\n          \"ConditionalRenderer:#text/0\": 1,\n          count: 0,\n          \"#LoopKey\": 0,\n          _: _.a\n        },\n        {\n          _: _.b\n        }, _.c = {\n          \"ConditionalRenderer:#text/0\": 1,\n          count: 0,\n          \"#LoopKey\": 1,\n          _: _.a\n        },\n        {\n          _: _.c\n        }, _.d = {\n          \"ConditionalRenderer:#text/0\": 1,\n          count: 0,\n          \"#LoopKey\": 2,\n          _: _.a\n        },\n        {\n          _: _.d\n        }]),\n        \"__tests__/template.marko_3 3 5 7\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/button2\nREMOVE button after html/body/button2\nUPDATE html/body/button2/#text1 \"\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonIndex].click();\nbuttonIndex = (buttonIndex + 1) % 3;\n```\n```html\n<html>\n  <head />\n  <body>\n    <!--M_[-->\n    <button>\n      Increment 1\n    </button>\n    <!--M_*3 #button/0-->\n    <!--M_|2 #text/0 3-->\n    <!--M_[2-->\n    <button>\n      Confirm 1\n    </button>\n    <!--M_*5 #button/0-->\n    <!--M_|4 #text/0 5-->\n    <!--M_[4-->\n    <button>\n      Confirm 1\n    </button>\n    <!--M_*7 #button/0-->\n    <!--M_|6 #text/0 7-->\n    <!--M_]1 #text/0 6-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.a = {\n          counts: [0, 0, 0],\n          \"ClosureScopes:counts\": new Set\n        }, _.b = {\n          \"ConditionalRenderer:#text/0\": 1,\n          count: 0,\n          \"#LoopKey\": 0,\n          _: _.a\n        },\n        {\n          _: _.b\n        }, _.c = {\n          \"ConditionalRenderer:#text/0\": 1,\n          count: 0,\n          \"#LoopKey\": 1,\n          _: _.a\n        },\n        {\n          _: _.c\n        }, _.d = {\n          \"ConditionalRenderer:#text/0\": 1,\n          count: 0,\n          \"#LoopKey\": 2,\n          _: _.a\n        },\n        {\n          _: _.d\n        }]),\n        \"__tests__/template.marko_3 3 5 7\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/button0\nREMOVE button after html/body/button0\nUPDATE html/body/button0/#text1 \"\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonIndex].click();\nbuttonIndex = (buttonIndex + 1) % 3;\n```\n```html\n<html>\n  <head />\n  <body>\n    <!--M_[-->\n    <button>\n      Increment 1\n    </button>\n    <!--M_*3 #button/0-->\n    <!--M_|2 #text/0 3-->\n    <!--M_[2-->\n    <button>\n      Increment 1\n    </button>\n    <!--M_*5 #button/0-->\n    <!--M_|4 #text/0 5-->\n    <!--M_[4-->\n    <button>\n      Confirm 1\n    </button>\n    <!--M_*7 #button/0-->\n    <!--M_|6 #text/0 7-->\n    <!--M_]1 #text/0 6-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.a = {\n          counts: [0, 0, 0],\n          \"ClosureScopes:counts\": new Set\n        }, _.b = {\n          \"ConditionalRenderer:#text/0\": 1,\n          count: 0,\n          \"#LoopKey\": 0,\n          _: _.a\n        },\n        {\n          _: _.b\n        }, _.c = {\n          \"ConditionalRenderer:#text/0\": 1,\n          count: 0,\n          \"#LoopKey\": 1,\n          _: _.a\n        },\n        {\n          _: _.c\n        }, _.d = {\n          \"ConditionalRenderer:#text/0\": 1,\n          count: 0,\n          \"#LoopKey\": 2,\n          _: _.a\n        },\n        {\n          _: _.d\n        }]),\n        \"__tests__/template.marko_3 3 5 7\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/button1\nREMOVE button after html/body/button1\nUPDATE html/body/button1/#text1 \"\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonIndex].click();\nbuttonIndex = (buttonIndex + 1) % 3;\n```\n```html\n<html>\n  <head />\n  <body>\n    <!--M_[-->\n    <button>\n      Increment 1\n    </button>\n    <!--M_*3 #button/0-->\n    <!--M_|2 #text/0 3-->\n    <!--M_[2-->\n    <button>\n      Increment 1\n    </button>\n    <!--M_*5 #button/0-->\n    <!--M_|4 #text/0 5-->\n    <!--M_[4-->\n    <button>\n      Increment 1\n    </button>\n    <!--M_*7 #button/0-->\n    <!--M_|6 #text/0 7-->\n    <!--M_]1 #text/0 6-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.a = {\n          counts: [0, 0, 0],\n          \"ClosureScopes:counts\": new Set\n        }, _.b = {\n          \"ConditionalRenderer:#text/0\": 1,\n          count: 0,\n          \"#LoopKey\": 0,\n          _: _.a\n        },\n        {\n          _: _.b\n        }, _.c = {\n          \"ConditionalRenderer:#text/0\": 1,\n          count: 0,\n          \"#LoopKey\": 1,\n          _: _.a\n        },\n        {\n          _: _.c\n        }, _.d = {\n          \"ConditionalRenderer:#text/0\": 1,\n          count: 0,\n          \"#LoopKey\": 2,\n          _: _.a\n        },\n        {\n          _: _.d\n        }]),\n        \"__tests__/template.marko_3 3 5 7\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/button2\nREMOVE button after html/body/button2\nUPDATE html/body/button2/#text1 \"\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonIndex].click();\nbuttonIndex = (buttonIndex + 1) % 3;\n```\n```html\n<html>\n  <head />\n  <body>\n    <!--M_[-->\n    <button>\n      Confirm 2\n    </button>\n    <!--M_*3 #button/0-->\n    <!--M_|2 #text/0 3-->\n    <!--M_[2-->\n    <button>\n      Increment 1\n    </button>\n    <!--M_*5 #button/0-->\n    <!--M_|4 #text/0 5-->\n    <!--M_[4-->\n    <button>\n      Increment 1\n    </button>\n    <!--M_*7 #button/0-->\n    <!--M_|6 #text/0 7-->\n    <!--M_]1 #text/0 6-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.a = {\n          counts: [0, 0, 0],\n          \"ClosureScopes:counts\": new Set\n        }, _.b = {\n          \"ConditionalRenderer:#text/0\": 1,\n          count: 0,\n          \"#LoopKey\": 0,\n          _: _.a\n        },\n        {\n          _: _.b\n        }, _.c = {\n          \"ConditionalRenderer:#text/0\": 1,\n          count: 0,\n          \"#LoopKey\": 1,\n          _: _.a\n        },\n        {\n          _: _.c\n        }, _.d = {\n          \"ConditionalRenderer:#text/0\": 1,\n          count: 0,\n          \"#LoopKey\": 2,\n          _: _.a\n        },\n        {\n          _: _.d\n        }]),\n        \"__tests__/template.marko_3 3 5 7\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/button0\nREMOVE button after html/body/button0\nUPDATE html/body/button0/#text1 \"\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonIndex].click();\nbuttonIndex = (buttonIndex + 1) % 3;\n```\n```html\n<html>\n  <head />\n  <body>\n    <!--M_[-->\n    <button>\n      Confirm 2\n    </button>\n    <!--M_*3 #button/0-->\n    <!--M_|2 #text/0 3-->\n    <!--M_[2-->\n    <button>\n      Confirm 2\n    </button>\n    <!--M_*5 #button/0-->\n    <!--M_|4 #text/0 5-->\n    <!--M_[4-->\n    <button>\n      Increment 1\n    </button>\n    <!--M_*7 #button/0-->\n    <!--M_|6 #text/0 7-->\n    <!--M_]1 #text/0 6-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.a = {\n          counts: [0, 0, 0],\n          \"ClosureScopes:counts\": new Set\n        }, _.b = {\n          \"ConditionalRenderer:#text/0\": 1,\n          count: 0,\n          \"#LoopKey\": 0,\n          _: _.a\n        },\n        {\n          _: _.b\n        }, _.c = {\n          \"ConditionalRenderer:#text/0\": 1,\n          count: 0,\n          \"#LoopKey\": 1,\n          _: _.a\n        },\n        {\n          _: _.c\n        }, _.d = {\n          \"ConditionalRenderer:#text/0\": 1,\n          count: 0,\n          \"#LoopKey\": 2,\n          _: _.a\n        },\n        {\n          _: _.d\n        }]),\n        \"__tests__/template.marko_3 3 5 7\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/button1\nREMOVE button after html/body/button1\nUPDATE html/body/button1/#text1 \"\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonIndex].click();\nbuttonIndex = (buttonIndex + 1) % 3;\n```\n```html\n<html>\n  <head />\n  <body>\n    <!--M_[-->\n    <button>\n      Confirm 2\n    </button>\n    <!--M_*3 #button/0-->\n    <!--M_|2 #text/0 3-->\n    <!--M_[2-->\n    <button>\n      Confirm 2\n    </button>\n    <!--M_*5 #button/0-->\n    <!--M_|4 #text/0 5-->\n    <!--M_[4-->\n    <button>\n      Confirm 2\n    </button>\n    <!--M_*7 #button/0-->\n    <!--M_|6 #text/0 7-->\n    <!--M_]1 #text/0 6-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.a = {\n          counts: [0, 0, 0],\n          \"ClosureScopes:counts\": new Set\n        }, _.b = {\n          \"ConditionalRenderer:#text/0\": 1,\n          count: 0,\n          \"#LoopKey\": 0,\n          _: _.a\n        },\n        {\n          _: _.b\n        }, _.c = {\n          \"ConditionalRenderer:#text/0\": 1,\n          count: 0,\n          \"#LoopKey\": 1,\n          _: _.a\n        },\n        {\n          _: _.c\n        }, _.d = {\n          \"ConditionalRenderer:#text/0\": 1,\n          count: 0,\n          \"#LoopKey\": 2,\n          _: _.a\n        },\n        {\n          _: _.d\n        }]),\n        \"__tests__/template.marko_3 3 5 7\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/button2\nREMOVE button after html/body/button2\nUPDATE html/body/button2/#text1 \"\" => \"2\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/nested-for-if-stateful/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  Increment 0\n</button>\n<button>\n  Increment 0\n</button>\n<button>\n  Increment 0\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/nested-for-if-stateful/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <!--M_[--><button>Increment <!>0<!--M_*3 #text/1--></button><!--M_*3 #button/0--><!--M_|2 #text/0 3--><!--M_[2--><button>Increment <!>0<!--M_*5 #text/1--></button><!--M_*5 #button/0--><!--M_|4 #text/0 5--><!--M_[4--><button>Increment <!>0<!--M_*7 #text/1--></button><!--M_*7 #button/0--><!--M_|6 #text/0 7--><!--M_]1 #text/0 6--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.e=[0,_.a={counts:[0,0,0],\"ClosureScopes:counts\":new Set},_.b={\"ConditionalRenderer:#text/0\":1,count:0,\"#LoopKey\":0,_:_.a},{_:_.b},_.c={\"ConditionalRenderer:#text/0\":1,count:0,\"#LoopKey\":1,_:_.a},{_:_.c},_.d={\"ConditionalRenderer:#text/0\":1,count:0,\"#LoopKey\":2,_:_.a},{_:_.d}]),\"__tests__/template.marko_3 3 5 7\"];M._.w()</script>\n```\n\n# Render End\n```html\n<!--M_[-->\n<html>\n  <head />\n  <body>\n    <button>\n      Increment \n      <!---->\n      0\n      <!--M_*3 #text/1-->\n    </button>\n    <!--M_*3 #button/0-->\n    <!--M_|2 #text/0 3-->\n    <!--M_[2-->\n    <button>\n      Increment \n      <!---->\n      0\n      <!--M_*5 #text/1-->\n    </button>\n    <!--M_*5 #button/0-->\n    <!--M_|4 #text/0 5-->\n    <!--M_[4-->\n    <button>\n      Increment \n      <!---->\n      0\n      <!--M_*7 #text/1-->\n    </button>\n    <!--M_*7 #button/0-->\n    <!--M_|6 #text/0 7-->\n    <!--M_]1 #text/0 6-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, _.a = {\n          counts: [0, 0, 0],\n          \"ClosureScopes:counts\": new Set\n        }, _.b = {\n          \"ConditionalRenderer:#text/0\": 1,\n          count: 0,\n          \"#LoopKey\": 0,\n          _: _.a\n        },\n        {\n          _: _.b\n        }, _.c = {\n          \"ConditionalRenderer:#text/0\": 1,\n          count: 0,\n          \"#LoopKey\": 1,\n          _: _.a\n        },\n        {\n          _: _.c\n        }, _.d = {\n          \"ConditionalRenderer:#text/0\": 1,\n          count: 0,\n          \"#LoopKey\": 2,\n          _: _.a\n        },\n        {\n          _: _.d\n        }]),\n        \"__tests__/template.marko_3 3 5 7\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT #comment\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button0\nINSERT html/body/button0/#text0\nINSERT html/body/button0/#comment0\nINSERT html/body/button0/#text1\nINSERT html/body/button0/#comment1\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/#comment2\nINSERT html/body/button1\nINSERT html/body/button1/#text0\nINSERT html/body/button1/#comment0\nINSERT html/body/button1/#text1\nINSERT html/body/button1/#comment1\nINSERT html/body/#comment3\nINSERT html/body/#comment4\nINSERT html/body/#comment5\nINSERT html/body/button2\nINSERT html/body/button2/#text0\nINSERT html/body/button2/#comment0\nINSERT html/body/button2/#text1\nINSERT html/body/button2/#comment1\nINSERT html/body/#comment6\nINSERT html/body/#comment7\nINSERT html/body/#comment8\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/nested-for-if-stateful/template.marko",
    "content": "<let/counts = [0, 0, 0]/>\n<for|count, i| of=counts>\n  <let/editing=false/>\n  <if=editing>\n    <button onClick() {\n      counts = [...counts.slice(0, i), count + 1, ...counts.slice(i + 1)];\n      editing = false;\n    }>\n      Confirm ${count + 1}\n    </button>\n  </if>\n  <else>\n    <button onClick() { editing = true; }>\n      Increment ${count}\n    </button>\n  </else>\n</for>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/nested-for-if-stateful/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nlet buttonIndex = 0;\n\nfunction click(container: Element) {\n  container.querySelectorAll(\"button\")[buttonIndex].click();\n  buttonIndex = (buttonIndex + 1) % 3;\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click, click, click, click, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/no-render-content-conditional/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"r\",\n      \"$init\": \"o\",\n      \"$$input__OR__x__script\": \"m\",\n      \"$$input__OR__x\": \"t\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/no-render-content-conditional/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"foo\":\"bar\"}`\n\n```html\n<div>\n  bar\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/no-render-content-conditional/__snapshots__/csr.expected.md",
    "content": "# Render `{\"foo\":\"bar\"}`\n\n```html\n<div>\n  bar\n</div>\n```\n\n# Mutations\n```\nINSERT div\nINSERT div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/no-render-content-conditional/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = _myConst_template;\nexport const $walks = /* <my-const/var> */`0${_myConst_walks}&`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _myConst, $input_value as _myConst_input_value, $template as _myConst_template, $walks as _myConst_walks } from \"./my-const.marko\";\nconst $input__OR__x__script = _._script(\"__tests__/tags/child.marko_0_input_x\", $scope => ($scope.input.output().innerHTML = $scope.x));\nconst $input__OR__x = /* @__PURE__ */_._or(6, $input__OR__x__script);\nconst $x = _._var_resume(\"__tests__/tags/child.marko_0_x/var\", /* @__PURE__ */_._const(\"x\", $input__OR__x));\nexport function $setup($scope) {\n  _._var($scope, \"#childScope/0\", $x);\n  _myConst($scope[\"#childScope/0\"]);\n}\nconst $input_foo = ($scope, input_foo) => _myConst_input_value($scope[\"#childScope/0\"], input_foo);\nexport const $input = /* @__PURE__ */_._const(\"input\", $scope => {\n  $input_foo($scope, $scope.input.foo);\n  $input__OR__x($scope);\n});\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/no-render-content-conditional/__snapshots__/dom.expected/tags/my-const.js",
    "content": "export const $template = \"\";\nexport const $walks = \"\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $input_value = /* @__PURE__ */_._const(\"input_value\", $scope => _._return($scope, $scope.input_value));\nexport const $input = ($scope, input) => $input_value($scope, input.value);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/my-const.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/no-render-content-conditional/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 119 (min) 110 (brotli)\nconst $input__OR__x__script = _._script(\n    \"a0\",\n    ($scope) => ($scope.d.output().innerHTML = $scope.f),\n  ),\n  $input__OR__x = _._or(6, $input__OR__x__script);\n(_._var_resume(\"a1\", _._const(5, $input__OR__x)), _._el(\"c0\", 0), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/no-render-content-conditional/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<div></div>${_child_template}`;\nexport const $walks = /* get, over(1), <child> */` b/${_child_walks}&`;\nimport { $setup as _child, $input as _child_input, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $output_getter = _._el(\"__tests__/template.marko_0_#div\", \"#div/0\");\nexport function $setup($scope) {\n  _child($scope[\"#childScope/1\"]);\n}\nexport const $input_foo = ($scope, input_foo) => _child_input($scope[\"#childScope/1\"], {\n  foo: input_foo,\n  output: $output_getter($scope)\n});\nexport const $input = ($scope, input) => $input_foo($scope, input.foo);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/no-render-content-conditional/__snapshots__/html.expected/tags/child.js",
    "content": "import _myConst from \"./my-const.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $childScope = _._peek_scope_id();\n  let x = _myConst({\n    value: input.foo\n  });\n  _._var($scope0_id, \"#scopeOffset/1\", $childScope, \"__tests__/tags/child.marko_0_x/var\");\n  _._script($scope0_id, \"__tests__/tags/child.marko_0_input_x\");\n  _._scope($scope0_id, {\n    input,\n    x,\n    \"#childScope/0\": _._serialize_if($scope0_reason, /* input.foo */0) && _._existing_scope($childScope)\n  }, \"__tests__/tags/child.marko\", 0, {\n    input: 0,\n    x: \"1:10\"\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/no-render-content-conditional/__snapshots__/html.expected/tags/my-const.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/my-const.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $return = input.value;\n  return $return;\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/no-render-content-conditional/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _child from \"./tags/child.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const output = _._el($scope0_id, \"__tests__/template.marko_0_#div\");\n  _._html(`<div></div>${_._el_resume($scope0_id, \"#div/0\")}`);\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason(_._serialize_guard($scope0_reason, /* input.foo */0));\n  _child({\n    foo: input.foo,\n    output: output\n  });\n  _._scope($scope0_id, {\n    \"#childScope/1\": _._serialize_if($scope0_reason, /* input.foo */0) && _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/no-render-content-conditional/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"foo\":\"bar\"}`\n\n```html\n<div>\n  bar\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/no-render-content-conditional/__snapshots__/resume.expected.md",
    "content": "# Render `{\"foo\":\"bar\"}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      bar\n    </div>\n    <!--M_*1 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {},\n        {\n          \"#scopeOffset/1\": 4,\n          input: _.a = {\n            foo: \"bar\"\n          },\n          x: \"bar\"\n        }], _.a.output = _._[\n          \"__tests__/template.marko_0_#div\"\n          ](_.c), _.b),\n        \"__tests__/tags/child.marko_0_input_x 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/no-render-content-conditional/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/no-render-content-conditional/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div></div><!--M_*1 #div/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.c={},{\"#scopeOffset/1\":4,input:_.a={foo:\"bar\"},x:\"bar\"}],_.a.output=_._[\"__tests__/template.marko_0_#div\"](_.c),_.b),\"__tests__/tags/child.marko_0_input_x 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*1 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {},\n        {\n          \"#scopeOffset/1\": 4,\n          input: _.a = {\n            foo: \"bar\"\n          },\n          x: \"bar\"\n        }], _.a.output = _._[\n          \"__tests__/template.marko_0_#div\"\n          ](_.c), _.b),\n        \"__tests__/tags/child.marko_0_input_x 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/no-render-content-conditional/tags/child.marko",
    "content": "my-const/x=input.foo\nscript -- input.output().innerHTML = x\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/no-render-content-conditional/tags/my-const.marko",
    "content": "return=input.value\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/no-render-content-conditional/template.marko",
    "content": "div/output\nchild foo=input.foo output=output\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/no-render-content-conditional/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [{ foo: \"bar\" }],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/no-render-content-subtree/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"r\",\n      \"$init\": \"o\",\n      \"$$input__OR__x__script\": \"m\",\n      \"$$input__OR__x\": \"t\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/no-render-content-subtree/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<div>\n  bar\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/no-render-content-subtree/__snapshots__/csr.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<div>\n  bar\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT div, #text, #comment\nINSERT div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/no-render-content-subtree/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = _myConst_template;\nexport const $walks = /* <my-const/var> */`0${_myConst_walks}&`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _myConst, $input_value as _myConst_input_value, $template as _myConst_template, $walks as _myConst_walks } from \"./my-const.marko\";\nconst $input__OR__x__script = _._script(\"__tests__/tags/child.marko_0_input_x\", $scope => ($scope.input.output().innerHTML = $scope.x));\nconst $input__OR__x = /* @__PURE__ */_._or(6, $input__OR__x__script);\nconst $x = _._var_resume(\"__tests__/tags/child.marko_0_x/var\", /* @__PURE__ */_._const(\"x\", $input__OR__x));\nexport function $setup($scope) {\n  _._var($scope, \"#childScope/0\", $x);\n  _myConst($scope[\"#childScope/0\"]);\n}\nconst $input_foo = ($scope, input_foo) => _myConst_input_value($scope[\"#childScope/0\"], input_foo);\nexport const $input = /* @__PURE__ */_._const(\"input\", $scope => {\n  $input_foo($scope, $scope.input.foo);\n  $input__OR__x($scope);\n});\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/no-render-content-subtree/__snapshots__/dom.expected/tags/my-const.js",
    "content": "export const $template = \"\";\nexport const $walks = \"\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $input_value = /* @__PURE__ */_._const(\"input_value\", $scope => _._return($scope, $scope.input_value));\nexport const $input = ($scope, input) => $input_value($scope, input.value);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/my-const.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/no-render-content-subtree/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 119 (min) 110 (brotli)\nconst $input__OR__x__script = _._script(\n    \"a0\",\n    ($scope) => ($scope.d.output().innerHTML = $scope.f),\n  ),\n  $input__OR__x = _._or(6, $input__OR__x__script);\n(_._var_resume(\"a1\", _._const(5, $input__OR__x)), _._el(\"c0\", 0), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/no-render-content-subtree/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div></div><!><!>\";\nexport const $walks = /* get, over(1), replace, over(2) */\" b%c\";\nexport const $setup = () => {};\nimport { $setup as _child, $input as _child_input, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nconst $if_content__setup = $scope => {\n  _child($scope[\"#childScope/0\"]);\n  _child_input($scope[\"#childScope/0\"], {\n    foo: \"bar\",\n    output: $output_getter($scope._)\n  });\n};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $output_getter = _._el(\"__tests__/template.marko_0_#div\", \"#div/0\");\nconst $if = /* @__PURE__ */_._if(\"#text/1\", _child_template, /* <child> */`/${_child_walks}&`, $if_content__setup);\nexport const $input_show = ($scope, input_show) => $if($scope, input_show ? 0 : 1);\nexport const $input = ($scope, input) => $input_show($scope, input.show);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/no-render-content-subtree/__snapshots__/html.expected/tags/child.js",
    "content": "import _myConst from \"./my-const.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $childScope = _._peek_scope_id();\n  let x = _myConst({\n    value: input.foo\n  });\n  _._var($scope0_id, \"#scopeOffset/1\", $childScope, \"__tests__/tags/child.marko_0_x/var\");\n  _._script($scope0_id, \"__tests__/tags/child.marko_0_input_x\");\n  _._scope($scope0_id, {\n    input,\n    x,\n    \"#childScope/0\": _._serialize_if($scope0_reason, /* input.foo */0) && _._existing_scope($childScope)\n  }, \"__tests__/tags/child.marko\", 0, {\n    input: 0,\n    x: \"1:10\"\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/no-render-content-subtree/__snapshots__/html.expected/tags/my-const.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/my-const.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $return = input.value;\n  return $return;\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/no-render-content-subtree/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _child from \"./tags/child.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const output = _._el($scope0_id, \"__tests__/template.marko_0_#div\");\n  _._html(`<div></div>${_._el_resume($scope0_id, \"#div/0\")}`);\n  _._if(() => {\n    if (input.show) {\n      const $scope1_id = _._scope_id();\n      _child({\n        foo: \"bar\",\n        output: output\n      });\n      _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"3:1\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/1\", _._serialize_guard($scope0_reason, /* input.show */0), _._serialize_guard($scope0_reason, /* input.show */0), _._serialize_guard($scope0_reason, /* input.show */0));\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/no-render-content-subtree/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<div>\n  bar\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/no-render-content-subtree/__snapshots__/resume.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      bar\n    </div>\n    <!--M_*1 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {},\n        {\n          _: _.a\n        },\n        {\n          \"#scopeOffset/1\": 5,\n          input: _.b = {\n            foo: \"bar\"\n          },\n          x: \"bar\"\n        }], _.b.output = _._[\n          \"__tests__/template.marko_0_#div\"\n          ](_.a), _.c),\n        \"__tests__/tags/child.marko_0_input_x 3\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/no-render-content-subtree/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/no-render-content-subtree/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div></div><!--M_*1 #div/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.a={},{_:_.a},{\"#scopeOffset/1\":5,input:_.b={foo:\"bar\"},x:\"bar\"}],_.b.output=_._[\"__tests__/template.marko_0_#div\"](_.a),_.c),\"__tests__/tags/child.marko_0_input_x 3\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*1 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {},\n        {\n          _: _.a\n        },\n        {\n          \"#scopeOffset/1\": 5,\n          input: _.b = {\n            foo: \"bar\"\n          },\n          x: \"bar\"\n        }], _.b.output = _._[\n          \"__tests__/template.marko_0_#div\"\n          ](_.a), _.c),\n        \"__tests__/tags/child.marko_0_input_x 3\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/no-render-content-subtree/tags/child.marko",
    "content": "my-const/x=input.foo\n\nscript -- input.output().innerHTML = x\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/no-render-content-subtree/tags/my-const.marko",
    "content": "return=input.value\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/no-render-content-subtree/template.marko",
    "content": "div/output\n\nif=input.show\n  child foo=\"bar\" output=output\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/no-render-content-subtree/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [{ show: true }],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-closure-alias-const/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-closure-alias-const/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\nfoo\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-closure-alias-const/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<!---->\nfoo\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, #text, #comment2, #comment3\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-closure-alias-const/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-closure-alias-const/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content__foo = /* @__PURE__ */_._if_closure(\"#text/0\", 0, $scope => _._text($scope[\"#text/0\"], $scope._.foo));\nconst $if_content__setup = $if_content__foo;\nconst $for_content__if = /* @__PURE__ */_._if(\"#text/0\", \" \", /* get, over(1) */\" b\", $if_content__setup);\nconst $for_content__setup = $scope => $for_content__if($scope, true ? 0 : 1);\nconst $for_content__$params = ($scope, $params2) => $for_content__foo($scope, $params2[0]);\nconst $for_content__foo = /* @__PURE__ */_._const(\"foo\");\nconst $for = /* @__PURE__ */_._for_of(\"#text/0\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", $for_content__setup, $for_content__$params);\nexport function $setup($scope) {\n  $for($scope, [[\"foo\"]]);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-closure-alias-const/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _.forOf([\"foo\"], foo => {\n    const $scope1_id = _._scope_id();\n    if (true) {\n      const $scope2_id = _._scope_id();\n      const baz = foo;\n      _._html(_._escape(baz));\n    }\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-closure-alias-const/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\nfoo\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-closure-alias-const/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    foo\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-closure-alias-const/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\nfoo\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-closure-alias-const/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  foo\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    foo\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-closure-alias-const/template.marko",
    "content": "for|foo| of=[\"foo\"]\n  if=true\n    const/baz=foo\n    -- ${baz}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-closure-alias-let/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-closure-alias-let/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\nfoo\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-closure-alias-let/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<!---->\nfoo\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, #text, #comment2, #comment3\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-closure-alias-let/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-closure-alias-let/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content__baz = /* @__PURE__ */_._let(\"baz/1\", $scope => _._text($scope[\"#text/0\"], $scope.baz));\nconst $if_content__foo = /* @__PURE__ */_._if_closure(\"#text/0\", 0, $scope => $if_content__baz($scope, $scope._.foo));\nconst $if_content__setup = $if_content__foo;\nconst $for_content__if = /* @__PURE__ */_._if(\"#text/0\", \" \", /* get, over(1) */\" b\", $if_content__setup);\nconst $for_content__setup = $scope => $for_content__if($scope, true ? 0 : 1);\nconst $for_content__$params = ($scope, $params2) => $for_content__foo($scope, $params2[0]);\nconst $for_content__foo = /* @__PURE__ */_._const(\"foo\");\nconst $for = /* @__PURE__ */_._for_of(\"#text/0\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", $for_content__setup, $for_content__$params);\nexport function $setup($scope) {\n  $for($scope, [[\"foo\"]]);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-closure-alias-let/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _.forOf([\"foo\"], foo => {\n    const $scope1_id = _._scope_id();\n    if (true) {\n      const $scope2_id = _._scope_id();\n      let baz = foo;\n      _._html(_._escape(baz));\n    }\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-closure-alias-let/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\nfoo\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-closure-alias-let/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    foo\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-closure-alias-let/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\nfoo\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-closure-alias-let/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  foo\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    foo\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-closure-alias-let/template.marko",
    "content": "for|foo| of=[\"foo\"]\n  if=true\n    let/baz=foo\n    -- ${baz}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-destructure-default/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-destructure-default/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  class=\"a\"\n>\n  0 object\n</div>\n<div\n  class=\"a\"\n>\n  1 object\n</div>\n<div\n  class=\"a\"\n>\n  2 undefined\n</div>\n<div\n  class=\"b\"\n>\n  0 object\n</div>\n<div\n  class=\"b\"\n>\n  1 object\n</div>\n<div\n  class=\"b\"\n>\n  2 undefined\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-destructure-default/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<div\n  class=\"a\"\n>\n  0 object\n</div>\n<div\n  class=\"a\"\n>\n  1 object\n</div>\n<div\n  class=\"a\"\n>\n  2 undefined\n</div>\n<div\n  class=\"b\"\n>\n  0 object\n</div>\n<div\n  class=\"b\"\n>\n  1 object\n</div>\n<div\n  class=\"b\"\n>\n  2 undefined\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, div0, div1, div2, div3, div4, div5, #comment1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-destructure-default/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-destructure-default/__snapshots__/dom.expected/template.js",
    "content": "const $ChildA_content__walks = /* next(1), replace, over(2), replace, out(1) */\"D%c%l\",\n  $ChildA_content__template = \"<div class=a><!> <!></div>\",\n  $ChildB_content__walks = /* next(1), replace, over(2), replace, out(1) */\"D%c%l\",\n  $ChildB_content__template = \"<div class=b><!> <!></div>\";\nexport const $template = `<!>${$ChildA_content__template}${$ChildA_content__template}${$ChildA_content__template}${$ChildB_content__template}${$ChildB_content__template}${$ChildB_content__template}<!>`;\nexport const $walks = /* over(1), <ChildA>, <ChildA>, <ChildA>, <ChildB>, <ChildB>, <ChildB>, over(1) */`b/${$ChildA_content__walks}&/${$ChildA_content__walks}&/${$ChildA_content__walks}&/${$ChildB_content__walks}&/${$ChildB_content__walks}&/${$ChildB_content__walks}&b`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $ChildB_content__$pattern = ($scope, $pattern2) => $ChildB_content__$bar($scope, $pattern2.bar);\nconst $ChildB_content__bar = ($scope, bar) => _._text($scope[\"#text/0\"], bar);\nconst $ChildB_content__$bar = ($scope, $bar2) => $ChildB_content__bar($scope, void 0 !== $bar2 ? $bar2 : 1);\nconst $ChildB_content__$foo = ($scope, foo) => $ChildB_content__$pattern($scope, void 0 !== foo ? foo : {\n  bar: 2\n});\nconst $ChildB_content__foo = ($scope, foo) => {\n  _._text($scope[\"#text/1\"], typeof foo);\n  $ChildB_content__$foo($scope, foo);\n};\nconst $ChildB_content__$params = ($scope, $params3) => $ChildB_content__input($scope, $params3[0]);\nconst $ChildB_content__input = ($scope, input) => $ChildB_content__foo($scope, input.foo);\nconst $ChildA_content__$pattern = ($scope, $pattern) => $ChildA_content__$bar($scope, $pattern.bar);\nconst $ChildA_content__bar = ($scope, bar) => _._text($scope[\"#text/0\"], bar);\nconst $ChildA_content__$bar = ($scope, $bar) => $ChildA_content__bar($scope, void 0 !== $bar ? $bar : 1);\nconst $ChildA_content__$foo = ($scope, foo) => $ChildA_content__$pattern($scope, void 0 !== foo ? foo : {\n  bar: 2\n});\nconst $ChildA_content__foo = ($scope, foo) => {\n  _._text($scope[\"#text/1\"], typeof foo);\n  $ChildA_content__$foo($scope, foo);\n};\nconst $ChildA_content__$params = ($scope, $params2) => $ChildA_content__$temp($scope, $params2?.[0]);\nconst $ChildA_content__$temp = ($scope, $temp) => $ChildA_content__foo($scope, $temp.foo);\nexport function $setup($scope) {\n  $ChildA_content__foo($scope[\"#childScope/0\"], {\n    bar: 0\n  });\n  $ChildA_content__foo($scope[\"#childScope/1\"], {});\n  $ChildA_content__foo($scope[\"#childScope/2\"]);\n  $ChildB_content__foo($scope[\"#childScope/3\"], {\n    bar: 0\n  });\n  $ChildB_content__foo($scope[\"#childScope/4\"], {});\n  $ChildB_content__foo($scope[\"#childScope/5\"]);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-destructure-default/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const ChildA = {\n    content: _._content(\"__tests__/template.marko_1_content\", ({\n      foo,\n      foo: $foo\n    }) => {\n      const $scope1_id = _._scope_id();\n      const $scope1_reason = _._scope_reason();\n      const {\n        bar: $bar\n      } = void 0 !== $foo ? $foo : {\n        bar: 2\n      };\n      const bar = void 0 !== $bar ? $bar : 1;\n      _._html(`<div class=a>${_._escape(bar)}${_._el_resume($scope1_id, \"#text/0\", _._serialize_guard($scope1_reason, /* foo */0))} ${_._sep(_._serialize_guard($scope1_reason, /* foo */0))}${_._escape(typeof foo)}${_._el_resume($scope1_id, \"#text/1\", _._serialize_guard($scope1_reason, /* foo */0))}</div>`);\n      _._serialize_if($scope1_reason, /* foo */0) && _._scope($scope1_id, {}, \"__tests__/template.marko\", \"1:1\");\n    })\n  };\n  ChildA.content({\n    foo: {\n      bar: 0\n    }\n  });\n  ChildA.content({\n    foo: {}\n  });\n  ChildA.content({});\n  const ChildB = {\n    content: _._content(\"__tests__/template.marko_2_content\", input => {\n      const $scope2_id = _._scope_id();\n      const $scope2_reason = _._scope_reason();\n      const {\n        foo,\n        foo: $foo2\n      } = input;\n      const {\n        bar: $bar2\n      } = void 0 !== $foo2 ? $foo2 : {\n        bar: 2\n      };\n      const bar = void 0 !== $bar2 ? $bar2 : 1;\n      _._html(`<div class=b>${_._escape(bar)}${_._el_resume($scope2_id, \"#text/0\", _._serialize_guard($scope2_reason, /* foo */0))} ${_._sep(_._serialize_guard($scope2_reason, /* foo */0))}${_._escape(typeof foo)}${_._el_resume($scope2_id, \"#text/1\", _._serialize_guard($scope2_reason, /* foo */0))}</div>`);\n      _._serialize_if($scope2_reason, /* foo */0) && _._scope($scope2_id, {}, \"__tests__/template.marko\", \"8:1\");\n    })\n  };\n  ChildB.content({\n    foo: {\n      bar: 0\n    }\n  });\n  ChildB.content({\n    foo: {}\n  });\n  ChildB.content({});\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-destructure-default/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  class=\"a\"\n>\n  0 object\n</div>\n<div\n  class=\"a\"\n>\n  1 object\n</div>\n<div\n  class=\"a\"\n>\n  2 undefined\n</div>\n<div\n  class=\"b\"\n>\n  0 object\n</div>\n<div\n  class=\"b\"\n>\n  1 object\n</div>\n<div\n  class=\"b\"\n>\n  2 undefined\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-destructure-default/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div\n      class=\"a\"\n    >\n      0 object\n    </div>\n    <div\n      class=\"a\"\n    >\n      1 object\n    </div>\n    <div\n      class=\"a\"\n    >\n      2 undefined\n    </div>\n    <div\n      class=\"b\"\n    >\n      0 object\n    </div>\n    <div\n      class=\"b\"\n    >\n      1 object\n    </div>\n    <div\n      class=\"b\"\n    >\n      2 undefined\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-destructure-default/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div\n  class=\"a\"\n>\n  0 object\n</div>\n<div\n  class=\"a\"\n>\n  1 object\n</div>\n<div\n  class=\"a\"\n>\n  2 undefined\n</div>\n<div\n  class=\"b\"\n>\n  0 object\n</div>\n<div\n  class=\"b\"\n>\n  1 object\n</div>\n<div\n  class=\"b\"\n>\n  2 undefined\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-destructure-default/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div class=a>0 object</div><div class=a>1 object</div><div class=a>2 undefined</div><div class=b>0 object</div><div class=b>1 object</div><div class=b>2 undefined</div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div\n      class=\"a\"\n    >\n      0 object\n    </div>\n    <div\n      class=\"a\"\n    >\n      1 object\n    </div>\n    <div\n      class=\"a\"\n    >\n      2 undefined\n    </div>\n    <div\n      class=\"b\"\n    >\n      0 object\n    </div>\n    <div\n      class=\"b\"\n    >\n      1 object\n    </div>\n    <div\n      class=\"b\"\n    >\n      2 undefined\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/div0/#text\nINSERT html/body/div1\nINSERT html/body/div1/#text\nINSERT html/body/div2\nINSERT html/body/div2/#text\nINSERT html/body/div3\nINSERT html/body/div3/#text\nINSERT html/body/div4\nINSERT html/body/div4/#text\nINSERT html/body/div5\nINSERT html/body/div5/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-destructure-default/template.marko",
    "content": "define/ChildA|{ foo, foo: { bar = 1 } = { bar: 2 } }|\n  div.a -- ${bar} ${typeof foo}\n\nChildA foo={ bar: 0 }\nChildA foo={}\nChildA\n\ndefine/ChildB|input|\n  const/{ foo, foo: { bar = 1 } = { bar: 2 } }=input\n  div.b -- ${bar} ${typeof foo}\n\nChildB foo={ bar: 0 }\nChildB foo={}\nChildB\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-destructure-dynamic-default/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"o\",\n      \"$init\": \"r\",\n      \"$$ChildB_content__count__OR__foo\": \"_\",\n      \"$$ChildB_content__count__OR__bar\": \"t\",\n      \"$$ChildB_content__count\": \"i\",\n      \"$$ChildB_content__$bar\": \"a\",\n      \"$$ChildA_content__count__OR__foo\": \"c\",\n      \"$$ChildA_content__count__OR__bar\": \"e\",\n      \"$$ChildA_content__count\": \"m\",\n      \"$$ChildA_content__$bar\": \"s\",\n      \"$$count__closure\": \"g\",\n      \"$$count__script\": \"n\",\n      \"$$count\": \"b\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-destructure-dynamic-default/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  class=\"a\"\n  id=\"a\"\n>\n  0 object\n</div>\n<div\n  class=\"a\"\n  id=\"b\"\n>\n  1 object\n</div>\n<div\n  class=\"a\"\n  id=\"c\"\n>\n  2 undefined\n</div>\n<div\n  class=\"b\"\n  id=\"d\"\n>\n  0 object\n</div>\n<div\n  class=\"b\"\n  id=\"e\"\n>\n  1 object\n</div>\n<div\n  class=\"b\"\n  id=\"f\"\n>\n  2 undefined\n</div>\n<button>\n  Increment default\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\")?.click();\n```\n```html\n<div\n  class=\"a\"\n  id=\"a\"\n>\n  0 object\n</div>\n<div\n  class=\"a\"\n  id=\"b\"\n>\n  2 object\n</div>\n<div\n  class=\"a\"\n  id=\"c\"\n>\n  3 undefined\n</div>\n<div\n  class=\"b\"\n  id=\"d\"\n>\n  0 object\n</div>\n<div\n  class=\"b\"\n  id=\"e\"\n>\n  2 object\n</div>\n<div\n  class=\"b\"\n  id=\"f\"\n>\n  3 undefined\n</div>\n<button>\n  Increment default\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\")?.click();\n```\n```html\n<div\n  class=\"a\"\n  id=\"a\"\n>\n  0 object\n</div>\n<div\n  class=\"a\"\n  id=\"b\"\n>\n  3 object\n</div>\n<div\n  class=\"a\"\n  id=\"c\"\n>\n  4 undefined\n</div>\n<div\n  class=\"b\"\n  id=\"d\"\n>\n  0 object\n</div>\n<div\n  class=\"b\"\n  id=\"e\"\n>\n  3 object\n</div>\n<div\n  class=\"b\"\n  id=\"f\"\n>\n  4 undefined\n</div>\n<button>\n  Increment default\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-destructure-dynamic-default/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<div\n  class=\"a\"\n  id=\"a\"\n>\n  0 object\n</div>\n<div\n  class=\"a\"\n  id=\"b\"\n>\n  1 object\n</div>\n<div\n  class=\"a\"\n  id=\"c\"\n>\n  2 undefined\n</div>\n<div\n  class=\"b\"\n  id=\"d\"\n>\n  0 object\n</div>\n<div\n  class=\"b\"\n  id=\"e\"\n>\n  1 object\n</div>\n<div\n  class=\"b\"\n  id=\"f\"\n>\n  2 undefined\n</div>\n<button>\n  Increment default\n</button>\n```\n\n# Mutations\n```\nINSERT #comment, div0, div1, div2, div3, div4, div5, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\")?.click();\n```\n```html\n<!---->\n<div\n  class=\"a\"\n  id=\"a\"\n>\n  0 object\n</div>\n<div\n  class=\"a\"\n  id=\"b\"\n>\n  2 object\n</div>\n<div\n  class=\"a\"\n  id=\"c\"\n>\n  3 undefined\n</div>\n<div\n  class=\"b\"\n  id=\"d\"\n>\n  0 object\n</div>\n<div\n  class=\"b\"\n  id=\"e\"\n>\n  2 object\n</div>\n<div\n  class=\"b\"\n  id=\"f\"\n>\n  3 undefined\n</div>\n<button>\n  Increment default\n</button>\n```\n\n# Mutations\n```\nUPDATE div1/#text0 \"1\" => \"2\"\nUPDATE div2/#text0 \"2\" => \"3\"\nUPDATE div4/#text0 \"1\" => \"2\"\nUPDATE div5/#text0 \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\")?.click();\n```\n```html\n<!---->\n<div\n  class=\"a\"\n  id=\"a\"\n>\n  0 object\n</div>\n<div\n  class=\"a\"\n  id=\"b\"\n>\n  3 object\n</div>\n<div\n  class=\"a\"\n  id=\"c\"\n>\n  4 undefined\n</div>\n<div\n  class=\"b\"\n  id=\"d\"\n>\n  0 object\n</div>\n<div\n  class=\"b\"\n  id=\"e\"\n>\n  3 object\n</div>\n<div\n  class=\"b\"\n  id=\"f\"\n>\n  4 undefined\n</div>\n<button>\n  Increment default\n</button>\n```\n\n# Mutations\n```\nUPDATE div1/#text0 \"2\" => \"3\"\nUPDATE div2/#text0 \"3\" => \"4\"\nUPDATE div4/#text0 \"2\" => \"3\"\nUPDATE div5/#text0 \"3\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-destructure-dynamic-default/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 492 (min) 210 (brotli)\nconst $ChildB_content__count__OR__foo = _._or(10, ($scope) =>\n    (($scope, $pattern2) => $ChildB_content__$bar($scope, $pattern2.bar))(\n      $scope,\n      void 0 !== $scope.g ? $scope.g : { bar: $scope._.h + 2 },\n    ),\n  ),\n  $ChildB_content__count__OR__bar = _._or(11, ($scope) =>\n    (($scope, bar) => _._text($scope.b, bar))(\n      $scope,\n      void 0 !== $scope.i ? $scope.i : $scope._.h + 1,\n    ),\n  ),\n  $ChildB_content__count = _._closure_get(7, ($scope) => {\n    ($ChildB_content__count__OR__foo($scope),\n      $ChildB_content__count__OR__bar($scope));\n  }),\n  $ChildB_content__$bar = _._const(8, $ChildB_content__count__OR__bar),\n  $ChildA_content__count__OR__foo = _._or(10, ($scope) =>\n    (($scope, $pattern) => $ChildA_content__$bar($scope, $pattern.bar))(\n      $scope,\n      void 0 !== $scope.g ? $scope.g : { bar: $scope._.h + 2 },\n    ),\n  ),\n  $ChildA_content__count__OR__bar = _._or(11, ($scope) =>\n    (($scope, bar) => _._text($scope.b, bar))(\n      $scope,\n      void 0 !== $scope.i ? $scope.i : $scope._.h + 1,\n    ),\n  ),\n  $ChildA_content__count = _._closure_get(7, ($scope) => {\n    ($ChildA_content__count__OR__foo($scope),\n      $ChildA_content__count__OR__bar($scope));\n  }),\n  $ChildA_content__$bar = _._const(8, $ChildA_content__count__OR__bar),\n  $count__closure = _._closure($ChildA_content__count, $ChildB_content__count),\n  $count__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.g, \"click\", function () {\n      $count($scope, $scope.h + 1);\n    }),\n  ),\n  $count = _._let(7, ($scope) => {\n    ($count__closure($scope), $count__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-destructure-dynamic-default/__snapshots__/dom.expected/template.js",
    "content": "const $ChildA_content__walks = /* get, next(1), replace, over(2), replace, out(1) */\" D%c%l\",\n  $ChildA_content__template = \"<div class=a><!> <!></div>\",\n  $ChildB_content__walks = /* get, next(1), replace, over(2), replace, out(1) */\" D%c%l\",\n  $ChildB_content__template = \"<div class=b><!> <!></div>\";\nexport const $template = `<!>${$ChildA_content__template}${$ChildA_content__template}${$ChildA_content__template}${$ChildB_content__template}${$ChildB_content__template}${$ChildB_content__template}<button>Increment default</button>`;\nexport const $walks = /* over(1), <ChildA>, <ChildA>, <ChildA>, <ChildB>, <ChildB>, <ChildB>, get, over(1) */`b/${$ChildA_content__walks}&/${$ChildA_content__walks}&/${$ChildA_content__walks}&/${$ChildB_content__walks}&/${$ChildB_content__walks}&/${$ChildB_content__walks}& b`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $ChildB_content__$pattern = ($scope, $pattern2) => $ChildB_content__$bar($scope, $pattern2.bar);\nconst $ChildB_content__count__OR__foo = /* @__PURE__ */_._or(10, $scope => $ChildB_content__$pattern($scope, void 0 !== $scope.foo ? $scope.foo : {\n  bar: $scope._.count + 2\n}));\nconst $ChildB_content__bar = ($scope, bar) => _._text($scope[\"#text/1\"], bar);\nconst $ChildB_content__count__OR__bar = /* @__PURE__ */_._or(11, $scope => $ChildB_content__bar($scope, void 0 !== $scope.$bar2 ? $scope.$bar2 : $scope._.count + 1));\nconst $ChildB_content__count = /* @__PURE__ */_._closure_get(\"count\", $scope => {\n  $ChildB_content__count__OR__foo($scope);\n  $ChildB_content__count__OR__bar($scope);\n});\nconst $ChildB_content__setup = /* @__PURE__ */_._child_setup($ChildB_content__count);\nconst $ChildB_content__$bar = /* @__PURE__ */_._const(\"$bar2\", $ChildB_content__count__OR__bar);\nconst $ChildB_content__foo = /* @__PURE__ */_._const(\"foo\", $scope => {\n  _._text($scope[\"#text/2\"], typeof $scope.foo);\n  $ChildB_content__count__OR__foo($scope);\n});\nconst $ChildB_content__input_id = ($scope, input_id) => _._attr($scope[\"#div/0\"], \"id\", input_id);\nconst $ChildB_content__$params = ($scope, $params3) => $ChildB_content__input($scope, $params3[0]);\nconst $ChildB_content__input = ($scope, input) => {\n  $ChildB_content__input_id($scope, input.id);\n  $ChildB_content__foo($scope, input.foo);\n};\nconst $ChildA_content__$pattern = ($scope, $pattern) => $ChildA_content__$bar($scope, $pattern.bar);\nconst $ChildA_content__count__OR__foo = /* @__PURE__ */_._or(10, $scope => $ChildA_content__$pattern($scope, void 0 !== $scope.foo ? $scope.foo : {\n  bar: $scope._.count + 2\n}));\nconst $ChildA_content__bar = ($scope, bar) => _._text($scope[\"#text/1\"], bar);\nconst $ChildA_content__count__OR__bar = /* @__PURE__ */_._or(11, $scope => $ChildA_content__bar($scope, void 0 !== $scope.$bar ? $scope.$bar : $scope._.count + 1));\nconst $ChildA_content__count = /* @__PURE__ */_._closure_get(\"count\", $scope => {\n  $ChildA_content__count__OR__foo($scope);\n  $ChildA_content__count__OR__bar($scope);\n});\nconst $ChildA_content__setup = /* @__PURE__ */_._child_setup($ChildA_content__count);\nconst $ChildA_content__$bar = /* @__PURE__ */_._const(\"$bar\", $ChildA_content__count__OR__bar);\nconst $ChildA_content__foo = /* @__PURE__ */_._const(\"foo\", $scope => {\n  _._text($scope[\"#text/2\"], typeof $scope.foo);\n  $ChildA_content__count__OR__foo($scope);\n});\nconst $ChildA_content__id = ($scope, id) => _._attr($scope[\"#div/0\"], \"id\", id);\nconst $ChildA_content__$params = ($scope, $params2) => $ChildA_content__$temp($scope, $params2?.[0]);\nconst $ChildA_content__$temp = ($scope, $temp) => {\n  $ChildA_content__id($scope, $temp.id);\n  $ChildA_content__foo($scope, $temp.foo);\n};\nconst $count__closure = /* @__PURE__ */_._closure($ChildA_content__count, $ChildB_content__count);\nconst $count__script = _._script(\"__tests__/template.marko_0_count\", $scope => _._on($scope[\"#button/6\"], \"click\", function () {\n  $count($scope, $scope.count + 1);\n}));\nconst $count = /* @__PURE__ */_._let(\"count/7\", $scope => {\n  $count__closure($scope);\n  $count__script($scope);\n});\nexport function $setup($scope) {\n  $ChildA_content__setup._($scope[\"#childScope/0\"], $scope);\n  $ChildA_content__foo($scope[\"#childScope/0\"], {\n    bar: 0\n  });\n  $ChildA_content__id($scope[\"#childScope/0\"], \"a\");\n  $ChildA_content__setup._($scope[\"#childScope/1\"], $scope);\n  $ChildA_content__foo($scope[\"#childScope/1\"], {});\n  $ChildA_content__id($scope[\"#childScope/1\"], \"b\");\n  $ChildA_content__setup._($scope[\"#childScope/2\"], $scope);\n  $ChildA_content__id($scope[\"#childScope/2\"], \"c\");\n  $ChildA_content__foo($scope[\"#childScope/2\"]);\n  $ChildB_content__setup._($scope[\"#childScope/3\"], $scope);\n  $ChildB_content__foo($scope[\"#childScope/3\"], {\n    bar: 0\n  });\n  $ChildB_content__input_id($scope[\"#childScope/3\"], \"d\");\n  $ChildB_content__setup._($scope[\"#childScope/4\"], $scope);\n  $ChildB_content__foo($scope[\"#childScope/4\"], {});\n  $ChildB_content__input_id($scope[\"#childScope/4\"], \"e\");\n  $ChildB_content__setup._($scope[\"#childScope/5\"], $scope);\n  $ChildB_content__input_id($scope[\"#childScope/5\"], \"f\");\n  $ChildB_content__foo($scope[\"#childScope/5\"]);\n  $count($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-destructure-dynamic-default/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $count__closures = new Set();\n  let count = 0;\n  const ChildA = {\n    content: _._content(\"__tests__/template.marko_1_content\", ({\n      id,\n      foo,\n      foo: $foo\n    }) => {\n      const $scope1_id = _._scope_id();\n      const $scope1_reason = _._scope_reason();\n      const {\n        bar: $bar\n      } = void 0 !== $foo ? $foo : {\n        bar: count + 2\n      };\n      const bar = void 0 !== $bar ? $bar : count + 1;\n      _._html(`<div${_._attr(\"id\", id)} class=a>${_._escape(bar)}${_._el_resume($scope1_id, \"#text/1\")} ${_._sep(_._serialize_guard($scope1_reason, /* foo */1))}${_._escape(typeof foo)}${_._el_resume($scope1_id, \"#text/2\", _._serialize_guard($scope1_reason, /* foo */1))}</div>${_._el_resume($scope1_id, \"#div/0\", _._serialize_guard($scope1_reason, /* id */0))}`);\n      _._subscribe($count__closures, _._scope($scope1_id, {\n        foo,\n        _: _._scope_with_id($scope0_id),\n        \"ClosureSignalIndex:count\": 0\n      }, \"__tests__/template.marko\", \"2:1\", {\n        foo: \"2:21\"\n      }));\n      _._resume_branch($scope1_id);\n    })\n  };\n  ChildA.content({\n    foo: {\n      bar: 0\n    },\n    id: \"a\"\n  });\n  ChildA.content({\n    foo: {},\n    id: \"b\"\n  });\n  ChildA.content({\n    id: \"c\"\n  });\n  const ChildB = {\n    content: _._content(\"__tests__/template.marko_2_content\", input => {\n      const $scope2_id = _._scope_id();\n      const $scope2_reason = _._scope_reason();\n      const {\n        foo,\n        foo: $foo2\n      } = input;\n      const {\n        bar: $bar2\n      } = void 0 !== $foo2 ? $foo2 : {\n        bar: count + 2\n      };\n      const bar = void 0 !== $bar2 ? $bar2 : count + 1;\n      _._html(`<div${_._attr(\"id\", input.id)} class=b>${_._escape(bar)}${_._el_resume($scope2_id, \"#text/1\")} ${_._sep(_._serialize_guard($scope2_reason, /* foo */1))}${_._escape(typeof foo)}${_._el_resume($scope2_id, \"#text/2\", _._serialize_guard($scope2_reason, /* foo */1))}</div>${_._el_resume($scope2_id, \"#div/0\", _._serialize_guard($scope2_reason, /* input.id */0))}`);\n      _._subscribe($count__closures, _._scope($scope2_id, {\n        foo,\n        _: _._scope_with_id($scope0_id),\n        \"ClosureSignalIndex:count\": 1\n      }, \"__tests__/template.marko\", \"9:1\", {\n        foo: \"10:11\"\n      }));\n      _._resume_branch($scope2_id);\n    })\n  };\n  ChildB.content({\n    foo: {\n      bar: 0\n    },\n    id: \"d\"\n  });\n  ChildB.content({\n    foo: {},\n    id: \"e\"\n  });\n  ChildB.content({\n    id: \"f\"\n  });\n  _._html(`<button>Increment default</button>${_._el_resume($scope0_id, \"#button/6\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_count\");\n  _._scope($scope0_id, {\n    count,\n    \"ClosureScopes:count\": $count__closures\n  }, \"__tests__/template.marko\", 0, {\n    count: \"1:5\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-destructure-dynamic-default/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  class=\"a\"\n  id=\"a\"\n>\n  0 object\n</div>\n<div\n  class=\"a\"\n  id=\"b\"\n>\n  1 object\n</div>\n<div\n  class=\"a\"\n  id=\"c\"\n>\n  2 undefined\n</div>\n<div\n  class=\"b\"\n  id=\"d\"\n>\n  0 object\n</div>\n<div\n  class=\"b\"\n  id=\"e\"\n>\n  1 object\n</div>\n<div\n  class=\"b\"\n  id=\"f\"\n>\n  2 undefined\n</div>\n<button>\n  Increment default\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\")?.click();\n```\n```html\n<div\n  class=\"a\"\n  id=\"a\"\n>\n  0 object\n</div>\n<div\n  class=\"a\"\n  id=\"b\"\n>\n  2 object\n</div>\n<div\n  class=\"a\"\n  id=\"c\"\n>\n  3 undefined\n</div>\n<div\n  class=\"b\"\n  id=\"d\"\n>\n  0 object\n</div>\n<div\n  class=\"b\"\n  id=\"e\"\n>\n  2 object\n</div>\n<div\n  class=\"b\"\n  id=\"f\"\n>\n  3 undefined\n</div>\n<button>\n  Increment default\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\")?.click();\n```\n```html\n<div\n  class=\"a\"\n  id=\"a\"\n>\n  0 object\n</div>\n<div\n  class=\"a\"\n  id=\"b\"\n>\n  3 object\n</div>\n<div\n  class=\"a\"\n  id=\"c\"\n>\n  4 undefined\n</div>\n<div\n  class=\"b\"\n  id=\"d\"\n>\n  0 object\n</div>\n<div\n  class=\"b\"\n  id=\"e\"\n>\n  3 object\n</div>\n<div\n  class=\"b\"\n  id=\"f\"\n>\n  4 undefined\n</div>\n<button>\n  Increment default\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-destructure-dynamic-default/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div\n      class=\"a\"\n      id=\"a\"\n    >\n      0\n      <!--M_*2 #text/1-->\n       object\n    </div>\n    <div\n      class=\"a\"\n      id=\"b\"\n    >\n      1\n      <!--M_*3 #text/1-->\n       object\n    </div>\n    <div\n      class=\"a\"\n      id=\"c\"\n    >\n      2\n      <!--M_*4 #text/1-->\n       undefined\n    </div>\n    <div\n      class=\"b\"\n      id=\"d\"\n    >\n      0\n      <!--M_*5 #text/1-->\n       object\n    </div>\n    <div\n      class=\"b\"\n      id=\"e\"\n    >\n      1\n      <!--M_*6 #text/1-->\n       object\n    </div>\n    <div\n      class=\"b\"\n      id=\"f\"\n    >\n      2\n      <!--M_*7 #text/1-->\n       undefined\n    </div>\n    <button>\n      Increment default\n    </button>\n    <!--M_*1 #button/6-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n            count: 0,\n            \"ClosureScopes:count\": _.c = new Set\n          }, _.d = {\n            foo:\n            {\n              bar: 0\n            },\n            _: _.a,\n            \"ClosureSignalIndex:count\": 0\n          }, _.e = {\n            foo:\n            {},\n            _: _.a,\n            \"ClosureSignalIndex:count\": 0\n          }, _.f = {\n            _: _.a,\n            \"ClosureSignalIndex:count\": 0\n          }, _.g = {\n            foo:\n            {\n              bar: 0\n            },\n            _: _.a,\n            \"ClosureSignalIndex:count\": 1\n          }, _.h = {\n            foo:\n            {},\n            _: _.a,\n            \"ClosureSignalIndex:count\": 1\n          }, _.i = {\n            _: _.a,\n            \"ClosureSignalIndex:count\": 1\n          }], (_.c).add(_.d), _.c.add(_.e), _.c.add(_.f), _.c.add(_.g), _.c\n          .add(_.h), _.c.add(_.i), _.b),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\")?.click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div\n      class=\"a\"\n      id=\"a\"\n    >\n      0\n      <!--M_*2 #text/1-->\n       object\n    </div>\n    <div\n      class=\"a\"\n      id=\"b\"\n    >\n      2\n      <!--M_*3 #text/1-->\n       object\n    </div>\n    <div\n      class=\"a\"\n      id=\"c\"\n    >\n      3\n      <!--M_*4 #text/1-->\n       undefined\n    </div>\n    <div\n      class=\"b\"\n      id=\"d\"\n    >\n      0\n      <!--M_*5 #text/1-->\n       object\n    </div>\n    <div\n      class=\"b\"\n      id=\"e\"\n    >\n      2\n      <!--M_*6 #text/1-->\n       object\n    </div>\n    <div\n      class=\"b\"\n      id=\"f\"\n    >\n      3\n      <!--M_*7 #text/1-->\n       undefined\n    </div>\n    <button>\n      Increment default\n    </button>\n    <!--M_*1 #button/6-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n            count: 0,\n            \"ClosureScopes:count\": _.c = new Set\n          }, _.d = {\n            foo:\n            {\n              bar: 0\n            },\n            _: _.a,\n            \"ClosureSignalIndex:count\": 0\n          }, _.e = {\n            foo:\n            {},\n            _: _.a,\n            \"ClosureSignalIndex:count\": 0\n          }, _.f = {\n            _: _.a,\n            \"ClosureSignalIndex:count\": 0\n          }, _.g = {\n            foo:\n            {\n              bar: 0\n            },\n            _: _.a,\n            \"ClosureSignalIndex:count\": 1\n          }, _.h = {\n            foo:\n            {},\n            _: _.a,\n            \"ClosureSignalIndex:count\": 1\n          }, _.i = {\n            _: _.a,\n            \"ClosureSignalIndex:count\": 1\n          }], (_.c).add(_.d), _.c.add(_.e), _.c.add(_.f), _.c.add(_.g), _.c\n          .add(_.h), _.c.add(_.i), _.b),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div1/#text0 \"1\" => \"2\"\nUPDATE html/body/div2/#text0 \"2\" => \"3\"\nUPDATE html/body/div4/#text0 \"1\" => \"2\"\nUPDATE html/body/div5/#text0 \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\")?.click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div\n      class=\"a\"\n      id=\"a\"\n    >\n      0\n      <!--M_*2 #text/1-->\n       object\n    </div>\n    <div\n      class=\"a\"\n      id=\"b\"\n    >\n      3\n      <!--M_*3 #text/1-->\n       object\n    </div>\n    <div\n      class=\"a\"\n      id=\"c\"\n    >\n      4\n      <!--M_*4 #text/1-->\n       undefined\n    </div>\n    <div\n      class=\"b\"\n      id=\"d\"\n    >\n      0\n      <!--M_*5 #text/1-->\n       object\n    </div>\n    <div\n      class=\"b\"\n      id=\"e\"\n    >\n      3\n      <!--M_*6 #text/1-->\n       object\n    </div>\n    <div\n      class=\"b\"\n      id=\"f\"\n    >\n      4\n      <!--M_*7 #text/1-->\n       undefined\n    </div>\n    <button>\n      Increment default\n    </button>\n    <!--M_*1 #button/6-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n            count: 0,\n            \"ClosureScopes:count\": _.c = new Set\n          }, _.d = {\n            foo:\n            {\n              bar: 0\n            },\n            _: _.a,\n            \"ClosureSignalIndex:count\": 0\n          }, _.e = {\n            foo:\n            {},\n            _: _.a,\n            \"ClosureSignalIndex:count\": 0\n          }, _.f = {\n            _: _.a,\n            \"ClosureSignalIndex:count\": 0\n          }, _.g = {\n            foo:\n            {\n              bar: 0\n            },\n            _: _.a,\n            \"ClosureSignalIndex:count\": 1\n          }, _.h = {\n            foo:\n            {},\n            _: _.a,\n            \"ClosureSignalIndex:count\": 1\n          }, _.i = {\n            _: _.a,\n            \"ClosureSignalIndex:count\": 1\n          }], (_.c).add(_.d), _.c.add(_.e), _.c.add(_.f), _.c.add(_.g), _.c\n          .add(_.h), _.c.add(_.i), _.b),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div1/#text0 \"2\" => \"3\"\nUPDATE html/body/div2/#text0 \"3\" => \"4\"\nUPDATE html/body/div4/#text0 \"2\" => \"3\"\nUPDATE html/body/div5/#text0 \"3\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-destructure-dynamic-default/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div\n  class=\"a\"\n  id=\"a\"\n>\n  0 object\n</div>\n<div\n  class=\"a\"\n  id=\"b\"\n>\n  1 object\n</div>\n<div\n  class=\"a\"\n  id=\"c\"\n>\n  2 undefined\n</div>\n<div\n  class=\"b\"\n  id=\"d\"\n>\n  0 object\n</div>\n<div\n  class=\"b\"\n  id=\"e\"\n>\n  1 object\n</div>\n<div\n  class=\"b\"\n  id=\"f\"\n>\n  2 undefined\n</div>\n<button>\n  Increment default\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-destructure-dynamic-default/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div id=a class=a>0<!--M_*2 #text/1--> object</div><div id=b class=a>1<!--M_*3 #text/1--> object</div><div id=c class=a>2<!--M_*4 #text/1--> undefined</div><div id=d class=b>0<!--M_*5 #text/1--> object</div><div id=e class=b>1<!--M_*6 #text/1--> object</div><div id=f class=b>2<!--M_*7 #text/1--> undefined</div><button>Increment default</button><!--M_*1 #button/6--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={count:0,\"ClosureScopes:count\":_.c=new Set},_.d={foo:{bar:0},_:_.a,\"ClosureSignalIndex:count\":0},_.e={foo:{},_:_.a,\"ClosureSignalIndex:count\":0},_.f={_:_.a,\"ClosureSignalIndex:count\":0},_.g={foo:{bar:0},_:_.a,\"ClosureSignalIndex:count\":1},_.h={foo:{},_:_.a,\"ClosureSignalIndex:count\":1},_.i={_:_.a,\"ClosureSignalIndex:count\":1}],(_.c).add(_.d),_.c.add(_.e),_.c.add(_.f),_.c.add(_.g),_.c.add(_.h),_.c.add(_.i),_.b),\"__tests__/template.marko_0_count 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div\n      class=\"a\"\n      id=\"a\"\n    >\n      0\n      <!--M_*2 #text/1-->\n       object\n    </div>\n    <div\n      class=\"a\"\n      id=\"b\"\n    >\n      1\n      <!--M_*3 #text/1-->\n       object\n    </div>\n    <div\n      class=\"a\"\n      id=\"c\"\n    >\n      2\n      <!--M_*4 #text/1-->\n       undefined\n    </div>\n    <div\n      class=\"b\"\n      id=\"d\"\n    >\n      0\n      <!--M_*5 #text/1-->\n       object\n    </div>\n    <div\n      class=\"b\"\n      id=\"e\"\n    >\n      1\n      <!--M_*6 #text/1-->\n       object\n    </div>\n    <div\n      class=\"b\"\n      id=\"f\"\n    >\n      2\n      <!--M_*7 #text/1-->\n       undefined\n    </div>\n    <button>\n      Increment default\n    </button>\n    <!--M_*1 #button/6-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n            count: 0,\n            \"ClosureScopes:count\": _.c = new Set\n          }, _.d = {\n            foo:\n            {\n              bar: 0\n            },\n            _: _.a,\n            \"ClosureSignalIndex:count\": 0\n          }, _.e = {\n            foo:\n            {},\n            _: _.a,\n            \"ClosureSignalIndex:count\": 0\n          }, _.f = {\n            _: _.a,\n            \"ClosureSignalIndex:count\": 0\n          }, _.g = {\n            foo:\n            {\n              bar: 0\n            },\n            _: _.a,\n            \"ClosureSignalIndex:count\": 1\n          }, _.h = {\n            foo:\n            {},\n            _: _.a,\n            \"ClosureSignalIndex:count\": 1\n          }, _.i = {\n            _: _.a,\n            \"ClosureSignalIndex:count\": 1\n          }], (_.c).add(_.d), _.c.add(_.e), _.c.add(_.f), _.c.add(_.g), _.c\n          .add(_.h), _.c.add(_.i), _.b),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/div0/#text0\nINSERT html/body/div0/#comment\nINSERT html/body/div0/#text1\nINSERT html/body/div1\nINSERT html/body/div1/#text0\nINSERT html/body/div1/#comment\nINSERT html/body/div1/#text1\nINSERT html/body/div2\nINSERT html/body/div2/#text0\nINSERT html/body/div2/#comment\nINSERT html/body/div2/#text1\nINSERT html/body/div3\nINSERT html/body/div3/#text0\nINSERT html/body/div3/#comment\nINSERT html/body/div3/#text1\nINSERT html/body/div4\nINSERT html/body/div4/#text0\nINSERT html/body/div4/#comment\nINSERT html/body/div4/#text1\nINSERT html/body/div5\nINSERT html/body/div5/#text0\nINSERT html/body/div5/#comment\nINSERT html/body/div5/#text1\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-destructure-dynamic-default/template.marko",
    "content": "let/count = 0\ndefine/ChildA|{ id, foo, foo: { bar = count + 1 } = { bar: count + 2 } }|\n  div.a id=id -- ${bar} ${typeof foo}\n\nChildA#a foo={ bar: 0 }\nChildA#b foo={}\nChildA#c\n\ndefine/ChildB|input|\n  const/{ foo, foo: { bar = count + 1 } = { bar: count + 2 } }=input\n  div.b id=input.id -- ${bar} ${typeof foo}\n\nChildB#d foo={ bar: 0 }\nChildB#e foo={}\nChildB#f\n\nbutton onClick() {\n  count++\n} -- Increment default\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/param-destructure-dynamic-default/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction increment(container: Element) {\n  container.querySelector<HTMLButtonElement>(\"button\")?.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, increment, increment],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"a\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\nabdeg\n```\n\n\n# Render ASYNC\n```html\na_A_eg\n```\n\n\n# Render ASYNC\n```html\na_A_efg\n```\n\n\n# Render ASYNC\n```html\nabcdefg\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\nabdeg\n```\n\n# Mutations\n```\nINSERT #text0, #text1, #text2, #text3, #text4, #text5, #text6\n```\n\n# Render ASYNC\n```html\na_A_eg\n```\n\n# Mutations\n```\nINSERT #text1\nREMOVE #document-fragment/#text0 after #text1\nREMOVE #document-fragment/#text1 after #text1\nREMOVE #document-fragment/#text2 after #text1\n```\n\n# Render ASYNC\n```html\na_A_efg\n```\n\n# Mutations\n```\nINSERT #text3\nREMOVE #text after #text3\nUPDATE #text3 \" \" => \"f\"\n```\n\n# Render ASYNC\n```html\nabcdefg\n```\n\n# Mutations\n```\nINSERT #text1, #text2, #text3\nREMOVE #text after #text3\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 52 (min) 56 (brotli)\n(_._enable_catch(), _._content_resume(\"a0\", \"_A_\", \"b\"));\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"a<!>e<!>g\";\nexport const $walks = /* over(1), replace, over(2), replace, over(2) */\"b%c%c\";\nimport { resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\n_._enable_catch();\nconst $await_content2__data = ($scope, data) => _._text($scope[\"#text/0\"], data);\nconst $await_content2__$params = ($scope, $params3) => $await_content2__data($scope, $params3[0]);\nconst $await_content__data = ($scope, data) => _._text($scope[\"#text/0\"], data);\nconst $await_content__$params = ($scope, $params2) => $await_content__data($scope, $params2[0]);\nconst $placeholder_content = _._content_resume(\"__tests__/template.marko_2_content\", \"_A_\", /* over(1) */\"b\");\nconst $await_content = /* @__PURE__ */_._await_content(\"#text/0\", \" \", /* get, over(1) */\" b\");\nconst $try_content__await_promise = /* @__PURE__ */_._await_promise(\"#text/0\", $await_content__$params);\nconst $try_content__setup = $scope => {\n  $await_content($scope);\n  $try_content__await_promise($scope, resolveAfter(\"c\", 2));\n};\nconst $try = /* @__PURE__ */_._try(\"#text/0\", \"b<!>d\", /* over(1), replace, over(2) */\"b%c\", $try_content__setup);\nconst $await_content2 = /* @__PURE__ */_._await_content(\"#text/1\", \" \", /* get, over(1) */\" b\");\nconst $await_promise = /* @__PURE__ */_._await_promise(\"#text/1\", $await_content2__$params);\nexport function $setup($scope) {\n  $await_content2($scope);\n  $try($scope, {\n    placeholder: _.attrTag({\n      content: $placeholder_content($scope)\n    })\n  });\n  $await_promise($scope, resolveAfter(\"f\", 1));\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/html.expected/template.js",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"a\");\n  _._try($scope0_id, \"#text/0\", _._content_resume(\"__tests__/template.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    _._scope_reason();\n    _._html(\"b\");\n    _._await($scope1_id, \"#text/0\", resolveAfter(\"c\", 2), data => {\n      const $scope3_id = _._scope_id();\n      _._html(_._escape(data));\n    }, 0);\n    _._html(\"d\");\n  }, $scope0_id), {\n    placeholder: _.attrTag({\n      content: _._content_resume(\"__tests__/template.marko_2_content\", () => {\n        _._scope_reason();\n        const $scope2_id = _._scope_id();\n        _._html(\"_A_\");\n      }, $scope0_id)\n    })\n  });\n  _._html(\"e\");\n  _._await($scope0_id, \"#text/1\", resolveAfter(\"f\", 1), data => {\n    const $scope4_id = _._scope_id();\n    _._html(_._escape(data));\n  }, 0);\n  _._html(\"g\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\na_A_e\n```\n\n\n# Render FLUSH\n```html\na_A_efg\n```\n\n\n# Render FLUSH\n```html\nabcdefg\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    a\n    <!--M_[-->\n    <!--M_!^2-->\n    _A_\n    <!--M_!2-->\n    <!--M_]1 #text/0 2-->\n    e\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#PlaceholderContent\": _.c = {}\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.c), _.b)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text2\n```\n\n# Render FLUSH\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    a\n    <!--M_[-->\n    <!--M_!^2-->\n    _A_\n    <!--M_!2-->\n    <!--M_]1 #text/0 2-->\n    e\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#PlaceholderContent\": _.c = {}\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.c), _.b)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    fg\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text4\n```\n\n# Render FLUSH\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    a\n    <!--M_[-->\n    bcd\n    <!--M_]1 #text/0 2-->\n    e\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#PlaceholderContent\": _.c = {}\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.c), _.b)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    fg\n    <script>\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT t\nINSERT html/body/#text2\nREMOVE t after html/body/#text6\nREMOVE #text after #comment\nREMOVE #comment after html/body/#comment0\nREMOVE #comment after html/body/#comment0\nINSERT html/body/#text1, html/body/#text2, html/body/#text3\nINSERT html/body/script1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render ASYNC\n```html\na_A_e\n```\n\n\n# Render ASYNC\n```html\na_A_efg\n```\n\n\n# Render End\n```html\nabcdefg\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  a<!--M_[--><!--M_!^2-->_A_<!--M_!2--><!--M_]1 #text/0 2-->e<style M_>t{display:none}</style><t M_=2>b<!--M_#b-->d</t><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,1,_.a={\"#BranchAccessor\":\"#text/0\",\"#PlaceholderContent\":_.c={}}],_.a[\"#PlaceholderContent\"]=_._[\"__tests__/template.marko_2_content\"](_.c),_.b)];REORDER_RUNTIME(M._);M._.w()</script>\n```\n\n# Write\n```html\n  fg\n```\n\n# Write\n```html\n  <t M_=b>c</t><script>M._.w()</script>\n```\n\n# Render ASYNC\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    a\n    <!--M_[-->\n    <!--M_!^2-->\n    _A_\n    <!--M_!2-->\n    <!--M_]1 #text/0 2-->\n    e\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#PlaceholderContent\": _.c = {}\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.c), _.b)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text0\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/#text1\nINSERT html/body/#comment2\nINSERT html/body/#comment3\nINSERT html/body/#text2\nINSERT html/head/style\nINSERT html/head/style/#text\nINSERT t\nINSERT t/#text0\nINSERT t/#comment\nINSERT t/#text1\nREMOVE html/head/style after html/body/#text2\nINSERT html/head/style\nREMOVE t after html/body/#text2\nINSERT html/body/script\n```\n\n# Render ASYNC\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    a\n    <!--M_[-->\n    <!--M_!^2-->\n    _A_\n    <!--M_!2-->\n    <!--M_]1 #text/0 2-->\n    e\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#PlaceholderContent\": _.c = {}\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.c), _.b)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    fg\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text3\n```\n\n# Render End\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    a\n    <!--M_[-->\n    bcd\n    <!--M_]1 #text/0 2-->\n    e\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#PlaceholderContent\": _.c = {}\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.c), _.b)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    fg\n    <script>\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT t\nINSERT html/body/#text2\nREMOVE t after html/body/#text5\nREMOVE #text after #comment\nREMOVE #comment after html/body/#comment0\nREMOVE #comment after html/body/#comment0\nINSERT html/body/#text1, html/body/#text2, html/body/#text3\nINSERT html/body/script1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholder-single/template.marko",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\n\n-- a\n<try>\n  b<await|data|=resolveAfter(\"c\", 2)>\n    ${data}\n  </await>d\n  <@placeholder>\n    _A_\n  </@placeholder>\n</try>\n-- e\n<await|data|=resolveAfter(\"f\", 1)>\n  ${data}\n</await>\n-- g"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholder-single/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { flush, wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{}, flush, flush, wait],\n  skip_equivalent: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"a\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\nabce\n```\n\n\n# Render ASYNC\n```html\nabcde\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\nabce\n```\n\n# Mutations\n```\nINSERT #text0, #text1, #text2, #text3, #text4\n```\n\n# Render ASYNC\n```html\nabcde\n```\n\n# Mutations\n```\nINSERT #text3\nREMOVE #text after #text3\nUPDATE #text3 \" \" => \"d\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 52 (min) 56 (brotli)\n(_._enable_catch(), _._content_resume(\"a0\", \"_A_\", \"b\"));\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"a<!>c<!>e\";\nexport const $walks = /* over(1), replace, over(2), replace, over(2) */\"b%c%c\";\nimport { resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\n_._enable_catch();\nconst $await_content__data = ($scope, data) => _._text($scope[\"#text/0\"], data);\nconst $await_content__$params = ($scope, $params2) => $await_content__data($scope, $params2[0]);\nconst $placeholder_content = _._content_resume(\"__tests__/template.marko_2_content\", \"_A_\", /* over(1) */\"b\");\nconst $try = /* @__PURE__ */_._try(\"#text/0\", \"b\", /* over(1) */\"b\");\nconst $await_content = /* @__PURE__ */_._await_content(\"#text/1\", \" \", /* get, over(1) */\" b\");\nconst $await_promise = /* @__PURE__ */_._await_promise(\"#text/1\", $await_content__$params);\nexport function $setup($scope) {\n  $await_content($scope);\n  $try($scope, {\n    placeholder: _.attrTag({\n      content: $placeholder_content($scope)\n    })\n  });\n  $await_promise($scope, resolveAfter(\"d\", 1));\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/html.expected/template.js",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"a\");\n  _._try($scope0_id, \"#text/0\", _._content_resume(\"__tests__/template.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    _._scope_reason();\n    _._html(\"b\");\n  }, $scope0_id), {\n    placeholder: _.attrTag({\n      content: _._content_resume(\"__tests__/template.marko_2_content\", () => {\n        _._scope_reason();\n        const $scope2_id = _._scope_id();\n        _._html(\"_A_\");\n      }, $scope0_id)\n    })\n  });\n  _._html(\"c\");\n  _._await($scope0_id, \"#text/1\", resolveAfter(\"d\", 1), data => {\n    const $scope3_id = _._scope_id();\n    _._html(_._escape(data));\n  }, 0);\n  _._html(\"e\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\nabc\n```\n\n\n# Render FLUSH\n```html\nabcde\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    a\n    <!--M_[-->\n    b\n    <!--M_]1 #text/0 2-->\n    c\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#PlaceholderContent\": _.c = {}\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.c), _.b)]\n    </script>\n  </body>\n</html>\n```\n\n\n# Render FLUSH\n```html\n<html>\n  <head />\n  <body>\n    a\n    <!--M_[-->\n    b\n    <!--M_]1 #text/0 2-->\n    c\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#PlaceholderContent\": _.c = {}\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.c), _.b)]\n    </script>\n    de\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text3\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render ASYNC\n```html\nabc\n```\n\n\n# Render End\n```html\nabcde\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  a<!--M_[-->b<!--M_]1 #text/0 2-->c<script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,1,_.a={\"#BranchAccessor\":\"#text/0\",\"#PlaceholderContent\":_.c={}}],_.a[\"#PlaceholderContent\"]=_._[\"__tests__/template.marko_2_content\"](_.c),_.b)]</script>\n```\n\n# Write\n```html\n  de\n```\n\n# Render ASYNC\n```html\n<html>\n  <head />\n  <body>\n    a\n    <!--M_[-->\n    b\n    <!--M_]1 #text/0 2-->\n    c\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#PlaceholderContent\": _.c = {}\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.c), _.b)]\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text0\nINSERT html/body/#comment0\nINSERT html/body/#text1\nINSERT html/body/#comment1\nINSERT html/body/#text2\nINSERT html/body/script\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    a\n    <!--M_[-->\n    b\n    <!--M_]1 #text/0 2-->\n    c\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#PlaceholderContent\": _.c = {}\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.c), _.b)]\n    </script>\n    de\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text3\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/template.marko",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\n\n-- a\n<try>\n  b\n  <@placeholder>\n    _A_\n  </@placeholder>\n</try>\n-- c\n<await|data|=resolveAfter(\"d\", 1)>\n  ${data}\n</await>\n-- e"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { flush, wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{}, flush, wait],\n  skip_equivalent: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholder-static-multiple/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"m\",\n      \"$$if_content__mounted\": \"o\",\n      \"$$if_content__setup\": \"r\",\n      \"$$if\": \"a\",\n      \"$$mounted\": \"i\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholder-static-multiple/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div />\n```\n\n\n# Render ASYNC\n```html\n<div>\n  ABCD\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholder-static-multiple/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div />\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render ASYNC\n```html\n<div>\n  ABCD\n</div>\n```\n\n# Mutations\n```\nINSERT div/#text0, div/#text1, div/#text2\nUPDATE div/#text1 \"\" => \"C\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholder-static-multiple/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 152 (min) 139 (brotli)\nconst $if_content__mounted = _._if_closure(0, 0, ($scope) =>\n    _._text($scope.a, $scope._.b && \"C\"),\n  ),\n  $if_content__setup = $if_content__mounted,\n  $if = _._if(0, \"AB<!>D\", \"b%c\", $if_content__setup),\n  $mounted = _._let(1, ($scope) => {\n    ($if($scope, $scope.b ? 0 : 1), $if_content__mounted($scope));\n  });\n(_._script(\"a0\", ($scope) => $mounted($scope, !0)), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholder-static-multiple/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* get, over(1) */\" b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content__mounted = /* @__PURE__ */_._if_closure(\"#div/0\", 0, $scope => _._text($scope[\"#text/0\"], $scope._.mounted && \"C\"));\nconst $if_content__setup = $if_content__mounted;\nconst $if = /* @__PURE__ */_._if(\"#div/0\", \"AB<!>D\", /* over(1), replace, over(2) */\"b%c\", $if_content__setup);\nconst $mounted = /* @__PURE__ */_._let(\"mounted/1\", $scope => {\n  $if($scope, $scope.mounted ? 0 : 1);\n  $if_content__mounted($scope);\n});\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => $mounted($scope, true));\nexport function $setup($scope) {\n  $mounted($scope, undefined);\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholder-static-multiple/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let mounted = undefined;\n  _._html(\"<div>\");\n  _._if(() => {\n    if (mounted) {\n      const $scope1_id = _._scope_id();\n      _._html(`AB<!>${_._escape(mounted && \"C\")}${_._el_resume($scope1_id, \"#text/0\")}D`);\n      _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"4:3\");\n      return 0;\n    }\n  }, $scope0_id, \"#div/0\", 1, /* mounted */1, /* mounted */1, \"</div>\");\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {\n    mounted\n  }, \"__tests__/template.marko\", 0, {\n    mounted: \"1:5\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholder-static-multiple/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div />\n```\n\n\n# Render ASYNC\n```html\n<div>\n  ABCD\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholder-static-multiple/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--M_[-->\n      <!--M_)1 #div/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {}]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render ASYNC\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--M_[-->\n      <!--M_)1 #div/0-->\n      ABCD\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {}]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text0, html/body/div/#text1, html/body/div/#text2\nUPDATE html/body/div/#text1 \"\" => \"C\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholder-static-multiple/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholder-static-multiple/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><!--M_[--><!--M_)1 #div/0--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{}]),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--M_[-->\n      <!--M_)1 #div/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {}]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#comment0\nINSERT html/body/div/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholder-static-multiple/template.marko",
    "content": "let/mounted\nscript -- mounted = true\ndiv\n  if=mounted\n    -- ${\"A\"}B${mounted && \"C\"}D"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholder-static-multiple/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{}, wait],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholders/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholders/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"x\":\"replaced\"}`\n\n```html\nreplaced\n<span>\n  replaced\n  <div />\n</span>\n<div>\n  <div>\n    a\n  </div>\n  replacedHello Text &lt;a/&gt;replacedHello HTML \n  <span>\n    hi\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholders/__snapshots__/csr.expected.md",
    "content": "# Render `{\"x\":\"replaced\"}`\n\n```html\nreplaced\n<span>\n  replaced\n  <div />\n</span>\n<div>\n  <div>\n    a\n  </div>\n  replacedHello Text &lt;a/&gt;replacedHello HTML \n  <span>\n    hi\n  </span>\n  <script>\n    'Hello &lt;b&gt; &lt;/script&gt;'\n  </script>\n  <style>\n    \n    .test { content: 'Hello &lt;b&gt; &lt;/style&gt;' }\n  \n  </style>\n</div>\n```\n\n# Mutations\n```\nINSERT #text, span, div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholders/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholders/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><span> <div></div></span><div><div>a</div><!>Hello Text &lt;a/><!><!><script></script><style></style></div>\";\nexport const $walks = /* replace, over(1), next(1), get, out(1), next(1), over(1), replace, over(2), replace, over(1), replace, over(1), get, over(1), get, out(1) */\"%bD lDb%c%b%b b l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $input_x = ($scope, input_x) => {\n  _._text($scope[\"#text/0\"], input_x);\n  _._text($scope[\"#text/1\"], input_x);\n  _._text($scope[\"#text/2\"], input_x);\n  _._html($scope, input_x, \"#text/3\");\n};\nexport function $setup($scope) {\n  _._html($scope, \"Hello HTML <span>hi</span>\", \"#text/4\");\n  _._attr_nonce($scope, \"#script/5\");\n  _._text_content($scope[\"#script/5\"], `\n    ${_._to_text(\"'Hello <b> </script>'\")}\n  `);\n  _._attr_nonce($scope, \"#style/6\");\n  _._text_content($scope[\"#style/6\"], `\n    ${_._to_text(\".test { content: 'Hello <b> </style>' }\")}\n  `);\n}\nexport const $input = ($scope, input) => $input_x($scope, input.x);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholders/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`${_._sep(_._serialize_guard($scope0_reason, /* input.x */0))}${_._escape(input.x)}${_._el_resume($scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.x */0))}<span>${_._escape(input.x)}${_._el_resume($scope0_id, \"#text/1\", _._serialize_guard($scope0_reason, /* input.x */0))}<div></div></span><div><div>a</div>${_._escape(input.x)}${_._el_resume($scope0_id, \"#text/2\", _._serialize_guard($scope0_reason, /* input.x */0))}Hello Text &lt;a/>${_._sep(_._serialize_guard($scope0_reason, /* input.x */0))}${_._unescaped(input.x)}${_._el_resume($scope0_id, \"#text/3\", _._serialize_guard($scope0_reason, /* input.x */0))}Hello HTML <span>hi</span><script${_._attr_nonce()}>\n    ${_._escape_script(\"'Hello <b> </script>'\")}\n  </script><style${_._attr_nonce()}>\n    ${_._escape_style(\".test { content: 'Hello <b> </style>' }\")}\n  </style></div>`);\n  _._serialize_if($scope0_reason, /* input.x */0) && _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholders/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"x\":\"replaced\"}`\n\n```html\nreplaced\n<span>\n  replaced\n  <div />\n</span>\n<div>\n  <div>\n    a\n  </div>\n  replacedHello Text &lt;a/&gt;replacedHello HTML \n  <span>\n    hi\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholders/__snapshots__/resume.expected.md",
    "content": "# Render `{\"x\":\"replaced\"}`\n\n```html\n<html>\n  <head />\n  <body>\n    replaced\n    <span>\n      replaced\n      <div />\n    </span>\n    <div>\n      <div>\n        a\n      </div>\n      replacedHello Text &lt;a/&gt;replacedHello HTML \n      <span>\n        hi\n      </span>\n      <script>\n        'Hello &lt;b&gt; \\x3C/script&gt;'\n      </script>\n      <style>\n        \n    .test { content: 'Hello &lt;b&gt; \\3C/style&gt;' }\n  \n      </style>\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholders/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\nreplaced\n<span>\n  replaced\n  <div />\n</span>\n<div>\n  <div>\n    a\n  </div>\n  replacedHello Text &lt;a/&gt;replacedHello HTML \n  <span>\n    hi\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholders/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  replaced<span>replaced<div></div></span><div><div>a</div>replacedHello Text &lt;a/>replacedHello HTML <span>hi</span><script>\n      'Hello <b> \\x3C/script>'\n    </script><style>\n      .test { content: 'Hello <b> \\3C/style>' }\n    </style></div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    replaced\n    <span>\n      replaced\n      <div />\n    </span>\n    <div>\n      <div>\n        a\n      </div>\n      replacedHello Text &lt;a/&gt;replacedHello HTML \n      <span>\n        hi\n      </span>\n      <script>\n        'Hello &lt;b&gt; \\x3C/script&gt;'\n      </script>\n      <style>\n        \n    .test { content: 'Hello &lt;b&gt; \\3C/style&gt;' }\n  \n      </style>\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text\nINSERT html/body/span\nINSERT html/body/span/#text\nINSERT html/body/span/div\nINSERT html/body/div\nINSERT html/body/div/div\nINSERT html/body/div/div/#text\nINSERT html/body/div/#text\nINSERT html/body/div/span\nINSERT html/body/div/span/#text\nINSERT html/body/div/script\nINSERT html/body/div/script/#text\nINSERT html/body/div/style\nINSERT html/body/div/style/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholders/template.marko",
    "content": "-- ${input.x}\n<span>${input.x}<div /></span>\n<div>\n  <div>\n    a\n  </div>\n  ${input.x}\n  ${\"Hello Text <a/>\"}\n  $!{input.x}\n  $!{null}\n  $!{\"Hello HTML <span>hi</span>\"}\n  <html-script>\n    ${\"'Hello <b> </script>'\"}\n  </html-script>\n  <html-style>\n    ${\".test { content: 'Hello <b> </style>' }\"}\n  </html-style>\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholders/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [{ x: \"replaced\" }],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"_\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\nabdeghj\n```\n\n\n# Render ASYNC\n```html\na_B_hj\n```\n\n\n# Render ASYNC\n```html\na_B_hij\n```\n\n\n# Render ASYNC\n```html\nabcd_A_hij\n```\n\n\n# Render ASYNC\n```html\nabcdefghij\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\nabdeg\n<!---->\nhj\n```\n\n# Mutations\n```\nINSERT #text0, #text1, #text2, #text3, #text4, #text5, #text6, #comment, #text7, #text8, #text9\n```\n\n# Render ASYNC\n```html\na_B_hj\n```\n\n# Mutations\n```\nINSERT #text1\nREMOVE #document-fragment/#text0 after #text1\nREMOVE #document-fragment/#text1 after #text1\nREMOVE #document-fragment/#text2 after #text1\nREMOVE #document-fragment/#text0 after #text1\nREMOVE #document-fragment/#text1 after #text1\nREMOVE #document-fragment/#text2 after #text1\nREMOVE #document-fragment/#comment after #text1\n```\n\n# Render ASYNC\n```html\na_B_hij\n```\n\n# Mutations\n```\nINSERT #text3\nREMOVE #text after #text3\nUPDATE #text3 \" \" => \"i\"\n```\n\n# Render ASYNC\n```html\nabcd_A_\n<!---->\nhij\n```\n\n# Mutations\n```\nINSERT #text1, #text2, #text3, #text4, #comment\nREMOVE #text after #comment\n```\n\n# Render ASYNC\n```html\nabcdefg\n<!---->\nhij\n```\n\n# Mutations\n```\nINSERT #text4, #text5, #text6\nREMOVE #text after #text6\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 86 (min) 65 (brotli)\n(_._enable_catch(),\n  _._content_resume(\"a0\", \"_A_\", \"b\"),\n  _._content_resume(\"a1\", \"_B_\", \"b\"));\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"a<!>h<!>j\";\nexport const $walks = /* over(1), replace, over(2), replace, over(2) */\"b%c%c\";\nimport { resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\n_._enable_catch();\nconst $await_content3__data = ($scope, data) => _._text($scope[\"#text/0\"], data);\nconst $await_content3__$params = ($scope, $params4) => $await_content3__data($scope, $params4[0]);\nconst $await_content2__data = ($scope, data) => _._text($scope[\"#text/0\"], data);\nconst $await_content2__$params = ($scope, $params3) => $await_content2__data($scope, $params3[0]);\nconst $placeholder_content2 = _._content_resume(\"__tests__/template.marko_5_content\", \"_A_\", /* over(1) */\"b\");\nconst $await_content2 = /* @__PURE__ */_._await_content(\"#text/0\", \" \", /* get, over(1) */\" b\");\nconst $try_content2__await_promise = /* @__PURE__ */_._await_promise(\"#text/0\", $await_content2__$params);\nconst $try_content2__setup = $scope => {\n  $await_content2($scope);\n  $try_content2__await_promise($scope, resolveAfter(\"f\", 3));\n};\nconst $await_content__data = ($scope, data) => _._text($scope[\"#text/0\"], data);\nconst $await_content__$params = ($scope, $params2) => $await_content__data($scope, $params2[0]);\nconst $placeholder_content = _._content_resume(\"__tests__/template.marko_2_content\", \"_B_\", /* over(1) */\"b\");\nconst $await_content = /* @__PURE__ */_._await_content(\"#text/0\", \" \", /* get, over(1) */\" b\");\nconst $try_content__await_promise = /* @__PURE__ */_._await_promise(\"#text/0\", $await_content__$params);\nconst $try_content__try = /* @__PURE__ */_._try(\"#text/1\", \"e<!>g\", /* over(1), replace, over(2) */\"b%c\", $try_content2__setup);\nconst $try_content__setup = $scope => {\n  $await_content($scope);\n  $try_content__await_promise($scope, resolveAfter(\"c\", 2));\n  $try_content__try($scope, {\n    placeholder: _.attrTag({\n      content: $placeholder_content2($scope)\n    })\n  });\n};\nconst $try = /* @__PURE__ */_._try(\"#text/0\", \"b<!>d<!><!>\", /* over(1), replace, over(2), replace, over(2) */\"b%c%c\", $try_content__setup);\nconst $await_content3 = /* @__PURE__ */_._await_content(\"#text/1\", \" \", /* get, over(1) */\" b\");\nconst $await_promise = /* @__PURE__ */_._await_promise(\"#text/1\", $await_content3__$params);\nexport function $setup($scope) {\n  $await_content3($scope);\n  $try($scope, {\n    placeholder: _.attrTag({\n      content: $placeholder_content($scope)\n    })\n  });\n  $await_promise($scope, resolveAfter(\"i\", 1));\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/html.expected/template.js",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"a\");\n  _._try($scope0_id, \"#text/0\", _._content_resume(\"__tests__/template.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    _._scope_reason();\n    _._html(\"b\");\n    _._await($scope1_id, \"#text/0\", resolveAfter(\"c\", 2), data => {\n      const $scope3_id = _._scope_id();\n      _._html(_._escape(data));\n    }, 0);\n    _._html(\"d\");\n    _._try($scope1_id, \"#text/1\", _._content_resume(\"__tests__/template.marko_4_content\", () => {\n      const $scope4_id = _._scope_id();\n      _._scope_reason();\n      _._html(\"e\");\n      _._await($scope4_id, \"#text/0\", resolveAfter(\"f\", 3), data => {\n        const $scope6_id = _._scope_id();\n        _._html(_._escape(data));\n      }, 0);\n      _._html(\"g\");\n    }, $scope1_id), {\n      placeholder: _.attrTag({\n        content: _._content_resume(\"__tests__/template.marko_5_content\", () => {\n          _._scope_reason();\n          const $scope5_id = _._scope_id();\n          _._html(\"_A_\");\n        }, $scope1_id)\n      })\n    });\n  }, $scope0_id), {\n    placeholder: _.attrTag({\n      content: _._content_resume(\"__tests__/template.marko_2_content\", () => {\n        _._scope_reason();\n        const $scope2_id = _._scope_id();\n        _._html(\"_B_\");\n      }, $scope0_id)\n    })\n  });\n  _._html(\"h\");\n  _._await($scope0_id, \"#text/1\", resolveAfter(\"i\", 1), data => {\n    const $scope7_id = _._scope_id();\n    _._html(_._escape(data));\n  }, 0);\n  _._html(\"j\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\na_B_h\n```\n\n\n# Render FLUSH\n```html\na_B_hij\n```\n\n\n# Render FLUSH\n```html\nabcd_A_hij\n```\n\n\n# Render FLUSH\n```html\nabcdefghij\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    a\n    <!--M_[-->\n    <!--M_!^2-->\n    _B_\n    <!--M_!2-->\n    <!--M_]1 #text/0 2-->\n    h\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#PlaceholderContent\": _.d = {}\n      }, _.b = {\n        \"#BranchAccessor\": \"#text/1\"\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.d), _.b[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_5_content\"\n        ](_.a), _.c)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text2\n```\n\n# Render FLUSH\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    a\n    <!--M_[-->\n    <!--M_!^2-->\n    _B_\n    <!--M_!2-->\n    <!--M_]1 #text/0 2-->\n    h\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#PlaceholderContent\": _.d = {}\n      }, _.b = {\n        \"#BranchAccessor\": \"#text/1\"\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.d), _.b[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_5_content\"\n        ](_.a), _.c)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    ij\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text4\n```\n\n# Render FLUSH\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    a\n    <!--M_[-->\n    bcd\n    <!--M_[-->\n    <!--M_!^3-->\n    _A_\n    <!--M_!3-->\n    <!--M_]2 #text/1 3-->\n    <!--M_]1 #text/0 2-->\n    h\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#PlaceholderContent\": _.d = {}\n      }, _.b = {\n        \"#BranchAccessor\": \"#text/1\"\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.d), _.b[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_5_content\"\n        ](_.a), _.c)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    ij\n    <script>\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT t\nINSERT html/body/#text2\nREMOVE t after html/body/#text8\nREMOVE #text after #comment\nREMOVE #comment after html/body/#comment0\nREMOVE #comment after html/body/#comment0\nINSERT html/body/#text1, html/body/#text2, html/body/#text3, html/body/#comment1, html/body/#comment2, html/body/#text4, html/body/#comment3, html/body/#text5, html/body/#comment4\nINSERT html/body/script1\n```\n\n# Render FLUSH\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    a\n    <!--M_[-->\n    bcd\n    <!--M_[-->\n    efg\n    <!--M_]2 #text/1 3-->\n    <!--M_]1 #text/0 2-->\n    h\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#PlaceholderContent\": _.d = {}\n      }, _.b = {\n        \"#BranchAccessor\": \"#text/1\"\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.d), _.b[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_5_content\"\n        ](_.a), _.c)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    ij\n    <script>\n      M._.w()\n    </script>\n    <script>\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT t\nINSERT html/body/#text5\nREMOVE t after html/body/script1\nREMOVE #text after #comment\nREMOVE #comment after html/body/#comment1\nREMOVE #comment after html/body/#comment1\nINSERT html/body/#text4, html/body/#text5, html/body/#text6\nINSERT html/body/script2\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render ASYNC\n```html\na_B_h\n```\n\n\n# Render ASYNC\n```html\na_B_hij\n```\n\n\n# Render ASYNC\n```html\nabcd_A_hij\n```\n\n\n# Render End\n```html\nabcdefghij\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  a<!--M_[--><!--M_!^2-->_B_<!--M_!2--><!--M_]1 #text/0 2-->h<style M_>t{display:none}</style><t M_=2>b<!--M_#b-->d<!--M_[--><!--M_!^3-->_A_<!--M_!3--><!--M_]2 #text/1 3--></t><t M_=3>e<!--M_#c-->g</t><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,1,_.a={\"#BranchAccessor\":\"#text/0\",\"#PlaceholderContent\":_.d={}},_.b={\"#BranchAccessor\":\"#text/1\"}],_.a[\"#PlaceholderContent\"]=_._[\"__tests__/template.marko_2_content\"](_.d),_.b[\"#PlaceholderContent\"]=_._[\"__tests__/template.marko_5_content\"](_.a),_.c)];REORDER_RUNTIME(M._);M._.w()</script>\n```\n\n# Write\n```html\n  ij\n```\n\n# Write\n```html\n  <t M_=b>c</t><script>M._.w()</script>\n```\n\n# Write\n```html\n  <t M_=c>f</t><script>M._.w()</script>\n```\n\n# Render ASYNC\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    a\n    <!--M_[-->\n    <!--M_!^2-->\n    _B_\n    <!--M_!2-->\n    <!--M_]1 #text/0 2-->\n    h\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#PlaceholderContent\": _.d = {}\n      }, _.b = {\n        \"#BranchAccessor\": \"#text/1\"\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.d), _.b[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_5_content\"\n        ](_.a), _.c)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text0\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/#text1\nINSERT html/body/#comment2\nINSERT html/body/#comment3\nINSERT html/body/#text2\nINSERT html/head/style\nINSERT html/head/style/#text\nINSERT t\nINSERT t/#text0\nINSERT t/#comment0\nINSERT t/#text1\nINSERT t/#comment1\nINSERT t/#comment2\nINSERT t/#text2\nINSERT t/#comment3\nINSERT t/#comment4\nINSERT t\nINSERT t/#text0\nINSERT t/#comment\nINSERT t/#text1\nREMOVE html/head/style after html/body/#text2\nINSERT html/head/style\nREMOVE t after html/body/#text2\nREMOVE t after html/body/#text2\nINSERT html/body/script\n```\n\n# Render ASYNC\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    a\n    <!--M_[-->\n    <!--M_!^2-->\n    _B_\n    <!--M_!2-->\n    <!--M_]1 #text/0 2-->\n    h\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#PlaceholderContent\": _.d = {}\n      }, _.b = {\n        \"#BranchAccessor\": \"#text/1\"\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.d), _.b[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_5_content\"\n        ](_.a), _.c)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    ij\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text3\n```\n\n# Render ASYNC\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    a\n    <!--M_[-->\n    bcd\n    <!--M_[-->\n    <!--M_!^3-->\n    _A_\n    <!--M_!3-->\n    <!--M_]2 #text/1 3-->\n    <!--M_]1 #text/0 2-->\n    h\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#PlaceholderContent\": _.d = {}\n      }, _.b = {\n        \"#BranchAccessor\": \"#text/1\"\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.d), _.b[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_5_content\"\n        ](_.a), _.c)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    ij\n    <script>\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT t\nINSERT html/body/#text2\nREMOVE t after html/body/#text6\nREMOVE #text after #comment\nREMOVE #comment after html/body/#comment0\nREMOVE #comment after html/body/#comment0\nINSERT html/body/#text1, html/body/#text2, html/body/#text3, html/body/#comment1, html/body/#comment2, html/body/#text4, html/body/#comment3, html/body/#comment4\nINSERT html/body/script1\n```\n\n# Render End\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    a\n    <!--M_[-->\n    bcd\n    <!--M_[-->\n    efg\n    <!--M_]2 #text/1 3-->\n    <!--M_]1 #text/0 2-->\n    h\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#PlaceholderContent\": _.d = {}\n      }, _.b = {\n        \"#BranchAccessor\": \"#text/1\"\n      }], _.a[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.d), _.b[\"#PlaceholderContent\"] = _._[\n        \"__tests__/template.marko_5_content\"\n        ](_.a), _.c)];\n      REORDER_RUNTIME(M._);\n      M._.w()\n    </script>\n    ij\n    <script>\n      M._.w()\n    </script>\n    <script>\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT t\nINSERT html/body/#text5\nREMOVE t after html/body/script1\nREMOVE #text after #comment\nREMOVE #comment after html/body/#comment1\nREMOVE #comment after html/body/#comment1\nINSERT html/body/#text4, html/body/#text5, html/body/#text6\nINSERT html/body/script2\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/template.marko",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\n\n-- a\n<try>\n  b<await|data|=resolveAfter(\"c\", 2)>\n    ${data}\n  </await>d<try>\n    e<await|data|=resolveAfter(\"f\", 3)>\n      ${data}\n    </await>g\n    <@placeholder>\n      _A_\n    </@placeholder>\n  </try>\n  <@placeholder>\n    _B_\n  </@placeholder>\n</try>\n-- h\n<await|data|=resolveAfter(\"i\", 1)>\n  ${data}\n</await>\n-- j"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { flush, wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{}, flush, flush, flush, wait],\n  skip_equivalent: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/pure-signal/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$count__script\": \"m\",\n      \"$$count\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/pure-signal/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  4\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  6\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/pure-signal/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n# Mutations\n```\nINSERT button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"0\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  4\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"2\" => \"4\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  6\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"4\" => \"6\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/pure-signal/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 130 (min) 113 (brotli)\nconst $count__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $count($scope, $scope.c + 1);\n    }),\n  ),\n  $count = _._let(2, ($scope) => {\n    ((($scope, double) => {\n      _._text($scope.b, double);\n    })($scope, 2 * $scope.c),\n      $count__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/pure-signal/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button> </button>\";\nexport const $walks = /* get, next(1), get, out(1) */\" D l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $double = ($scope, double) => _._text($scope[\"#text/1\"], double);\nconst $count__script = _._script(\"__tests__/template.marko_0_count\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $count($scope, $scope.count + 1);\n}));\nconst $count = /* @__PURE__ */_._let(\"count/2\", $scope => {\n  $double($scope, $scope.count * 2);\n  $count__script($scope);\n});\nexport function $setup($scope) {\n  $count($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/pure-signal/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let count = 0;\n  const double = count * 2;\n  _._html(`<button>${_._escape(double)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_count\");\n  _._scope($scope0_id, {\n    count\n  }, \"__tests__/template.marko\", 0, {\n    count: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/pure-signal/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  4\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  6\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/pure-signal/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      2\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"0\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      4\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"2\" => \"4\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      6\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"4\" => \"6\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/pure-signal/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  0\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/pure-signal/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>0<!--M_*1 #text/1--></button><!--M_*1 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{count:0}]),\"__tests__/template.marko_0_count 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/pure-signal/template.marko",
    "content": "<let/count = 0/>\n<const/double=count * 2>\n<button onClick() {\n  count++\n}>${double}</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/pure-signal/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/pure-signal-resume-function/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"r\",\n      \"$init\": \"t\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/pure-signal-resume-function/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Click\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Click\n</button>\n```\n# Console\n```\nLOG \"foo\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Click\n</button>\n```\n# Console\n```\nLOG \"foo\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Click\n</button>\n```\n# Console\n```\nLOG \"foo\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/pure-signal-resume-function/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  Click\n</button>\n```\n\n# Mutations\n```\nINSERT button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Click\n</button>\n```\n# Console\n```\nLOG \"foo\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Click\n</button>\n```\n# Console\n```\nLOG \"foo\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Click\n</button>\n```\n# Console\n```\nLOG \"foo\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/pure-signal-resume-function/__snapshots__/dom.expected/tags/my-button.js",
    "content": "export const $template = \"<button></button>\";\nexport const $walks = /* get, over(1) */\" b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $input__script = _._script(\"__tests__/tags/my-button.marko_0_input\", $scope => _._attrs_script($scope, \"#button/0\"));\nexport const $input = /* @__PURE__ */_._const(\"input\", $scope => {\n  _._attrs_content($scope, \"#button/0\", $scope.input);\n  $input__script($scope);\n});\nexport default /* @__PURE__ */_._template(\"__tests__/tags/my-button.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/pure-signal-resume-function/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 147 (min) 95 (brotli)\n(_._script(\"a0\", ($scope) => _._attrs_script($scope, \"a\")),\n  _._content_resume(\"b1\", \"Click\", \"b\"),\n  _._resume(\"b0\", function ($scope) {\n    return function () {\n      console.log($scope.b);\n    };\n  }),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/pure-signal-resume-function/__snapshots__/dom.expected/template.js",
    "content": "export const $template = _myButton_template;\nexport const $walks = /* <my-button> */`/${_myButton_walks}&`;\nimport { $setup as _myButton, $input as _myButton_input, $template as _myButton_template, $walks as _myButton_walks } from \"./tags/my-button.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $mybutton_content = _._content_resume(\"__tests__/template.marko_1_content\", \"Click\", /* over(1) */\"b\");\nconst $test = /* @__PURE__ */_._const(\"test\", $scope => _myButton_input($scope[\"#childScope/0\"], {\n  onClick: $onClick($scope),\n  content: $mybutton_content($scope)\n}));\nexport function $setup($scope) {\n  _myButton($scope[\"#childScope/0\"]);\n  $test($scope, \"foo\");\n}\nfunction $onClick($scope) {\n  return function () {\n    console.log($scope.test);\n  };\n}\n_._resume(\"__tests__/template.marko_0/onClick\", $onClick);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/pure-signal-resume-function/__snapshots__/html.expected/tags/my-button.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/my-button.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<button\");\n  _._attrs_content(input, \"#button/0\", $scope0_id, \"button\");\n  _._html(`</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/tags/my-button.marko_0_input\");\n  _._scope($scope0_id, {\n    input\n  }, \"__tests__/tags/my-button.marko\", 0, {\n    input: 0\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/pure-signal-resume-function/__snapshots__/html.expected/template.js",
    "content": "import _myButton from \"./tags/my-button.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const test = \"foo\";\n  _myButton({\n    onClick: _._resume(function () {\n      console.log(test);\n    }, \"__tests__/template.marko_0/onClick\", $scope0_id),\n    content: _._content_resume(\"__tests__/template.marko_1_content\", () => {\n      _._scope_reason();\n      const $scope1_id = _._scope_id();\n      _._html(\"Click\");\n    }, $scope0_id)\n  });\n  _._scope($scope0_id, {\n    test\n  }, \"__tests__/template.marko\", 0, {\n    test: \"1:7\"\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/pure-signal-resume-function/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Click\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Click\n</button>\n```\n# Console\n```\nLOG \"foo\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Click\n</button>\n```\n# Console\n```\nLOG \"foo\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Click\n</button>\n```\n# Console\n```\nLOG \"foo\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/pure-signal-resume-function/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Click\n    </button>\n    <!--M_*2 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.e = {\n          test: \"foo\"\n        },\n        {\n          \"EventAttributes:#button/0\": _.a = {},\n          \"BranchScopes:#button/0\": _.c = {},\n          \"ConditionalRenderer:#button/0\": \"__tests__/template.marko_1_content\",\n          input: _.b = {}\n        }, _.c], _.a.click = _.b.onClick = _._[\n          \"__tests__/template.marko_0/onClick\"\n          ](_.e), _.b.content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.e), _.d),\n        \"__tests__/tags/my-button.marko_0_input 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Click\n    </button>\n    <!--M_*2 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.e = {\n          test: \"foo\"\n        },\n        {\n          \"EventAttributes:#button/0\": _.a = {},\n          \"BranchScopes:#button/0\": _.c = {},\n          \"ConditionalRenderer:#button/0\": \"__tests__/template.marko_1_content\",\n          input: _.b = {}\n        }, _.c], _.a.click = _.b.onClick = _._[\n          \"__tests__/template.marko_0/onClick\"\n          ](_.e), _.b.content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.e), _.d),\n        \"__tests__/tags/my-button.marko_0_input 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n# Console\n```\nLOG \"foo\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Click\n    </button>\n    <!--M_*2 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.e = {\n          test: \"foo\"\n        },\n        {\n          \"EventAttributes:#button/0\": _.a = {},\n          \"BranchScopes:#button/0\": _.c = {},\n          \"ConditionalRenderer:#button/0\": \"__tests__/template.marko_1_content\",\n          input: _.b = {}\n        }, _.c], _.a.click = _.b.onClick = _._[\n          \"__tests__/template.marko_0/onClick\"\n          ](_.e), _.b.content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.e), _.d),\n        \"__tests__/tags/my-button.marko_0_input 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n# Console\n```\nLOG \"foo\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Click\n    </button>\n    <!--M_*2 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.e = {\n          test: \"foo\"\n        },\n        {\n          \"EventAttributes:#button/0\": _.a = {},\n          \"BranchScopes:#button/0\": _.c = {},\n          \"ConditionalRenderer:#button/0\": \"__tests__/template.marko_1_content\",\n          input: _.b = {}\n        }, _.c], _.a.click = _.b.onClick = _._[\n          \"__tests__/template.marko_0/onClick\"\n          ](_.e), _.b.content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.e), _.d),\n        \"__tests__/tags/my-button.marko_0_input 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n# Console\n```\nLOG \"foo\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/pure-signal-resume-function/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  Click\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/pure-signal-resume-function/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>Click</button><!--M_*2 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.d=[0,_.e={test:\"foo\"},{\"EventAttributes:#button/0\":_.a={},\"BranchScopes:#button/0\":_.c={},\"ConditionalRenderer:#button/0\":\"__tests__/template.marko_1_content\",input:_.b={}},_.c],_.a.click=_.b.onClick=_._[\"__tests__/template.marko_0/onClick\"](_.e),_.b.content=_._[\"__tests__/template.marko_1_content\"](_.e),_.d),\"__tests__/tags/my-button.marko_0_input 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Click\n    </button>\n    <!--M_*2 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.e = {\n          test: \"foo\"\n        },\n        {\n          \"EventAttributes:#button/0\": _.a = {},\n          \"BranchScopes:#button/0\": _.c = {},\n          \"ConditionalRenderer:#button/0\": \"__tests__/template.marko_1_content\",\n          input: _.b = {}\n        }, _.c], _.a.click = _.b.onClick = _._[\n          \"__tests__/template.marko_0/onClick\"\n          ](_.e), _.b.content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.e), _.d),\n        \"__tests__/tags/my-button.marko_0_input 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/pure-signal-resume-function/tags/my-button.marko",
    "content": "button ...input\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/pure-signal-resume-function/template.marko",
    "content": "const/test=\"foo\"\nmy-button onClick() {\n  console.log(test)\n} -- Click\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/pure-signal-resume-function/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/read-proposed-tag-variable-after-write/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$clickCount__script\": \"r\",\n      \"$$clickCount\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/read-proposed-tag-variable-after-write/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <button>\n    0\n  </button>\n  <div />\n  <div />\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    1\n  </button>\n  <div>\n    0\n  </div>\n  <div>\n    1\n  </div>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    2\n  </button>\n  <div>\n    1\n  </div>\n  <div>\n    2\n  </div>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    3\n  </button>\n  <div>\n    2\n  </div>\n  <div>\n    3\n  </div>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/read-proposed-tag-variable-after-write/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  <button>\n    0\n  </button>\n  <div />\n  <div />\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    1\n  </button>\n  <div>\n    0\n  </div>\n  <div>\n    1\n  </div>\n</div>\n```\n\n# Mutations\n```\nINSERT div/div0/#text\nINSERT div/div1/#text\nUPDATE div/button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    2\n  </button>\n  <div>\n    1\n  </div>\n  <div>\n    2\n  </div>\n</div>\n```\n\n# Mutations\n```\nREMOVE #text in div/div0\nINSERT div/div0/#text\nREMOVE #text in div/div1\nINSERT div/div1/#text\nUPDATE div/button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    3\n  </button>\n  <div>\n    2\n  </div>\n  <div>\n    3\n  </div>\n</div>\n```\n\n# Mutations\n```\nREMOVE #text in div/div0\nINSERT div/div0/#text\nREMOVE #text in div/div1\nINSERT div/div1/#text\nUPDATE div/button/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/read-proposed-tag-variable-after-write/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 146 (min) 114 (brotli)\nconst $clickCount__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      (($scope.c.innerHTML = $clickCount($scope, $scope.e + 1) - 1),\n        ($scope.d.innerHTML = $scope.e));\n    }),\n  ),\n  $clickCount = _._let(4, ($scope) => {\n    (_._text($scope.b, $scope.e), $clickCount__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/read-proposed-tag-variable-after-write/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div><button> </button><div></div><div></div></div>\";\nexport const $walks = /* next(1), get, next(1), get, out(1), get, over(1), get, out(1) */\"D D l b l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $clickCount__script = _._script(\"__tests__/template.marko_0_clickCount\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  _._el_read($scope[\"#div/2\"]).innerHTML = $clickCount($scope, $scope.clickCount + 1) - 1;\n  _._el_read($scope[\"#div/3\"]).innerHTML = $scope.clickCount;\n}));\nconst $clickCount = /* @__PURE__ */_._let(\"clickCount/4\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.clickCount);\n  $clickCount__script($scope);\n});\nexport function $setup($scope) {\n  $clickCount($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/read-proposed-tag-variable-after-write/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let clickCount = 0;\n  _._html(`<div><button>${_._escape(clickCount)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}<div></div>${_._el_resume($scope0_id, \"#div/2\")}<div></div>${_._el_resume($scope0_id, \"#div/3\")}</div>`);\n  _._script($scope0_id, \"__tests__/template.marko_0_clickCount\");\n  _._scope($scope0_id, {\n    clickCount\n  }, \"__tests__/template.marko\", 0, {\n    clickCount: \"2:8\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/read-proposed-tag-variable-after-write/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <button>\n    0\n  </button>\n  <div />\n  <div />\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    1\n  </button>\n  <div>\n    0\n  </div>\n  <div>\n    1\n  </div>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    2\n  </button>\n  <div>\n    1\n  </div>\n  <div>\n    2\n  </div>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button>\n    3\n  </button>\n  <div>\n    2\n  </div>\n  <div>\n    3\n  </div>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/read-proposed-tag-variable-after-write/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        0\n        <!--M_*1 #text/1-->\n      </button>\n      <!--M_*1 #button/0-->\n      <div />\n      <!--M_*1 #div/2-->\n      <div />\n      <!--M_*1 #div/3-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          clickCount: 0\n        }]),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        1\n        <!--M_*1 #text/1-->\n      </button>\n      <!--M_*1 #button/0-->\n      <div>\n        0\n      </div>\n      <!--M_*1 #div/2-->\n      <div>\n        1\n      </div>\n      <!--M_*1 #div/3-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          clickCount: 0\n        }]),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/div0/#text\nINSERT html/body/div/div1/#text\nUPDATE html/body/div/button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        2\n        <!--M_*1 #text/1-->\n      </button>\n      <!--M_*1 #button/0-->\n      <div>\n        1\n      </div>\n      <!--M_*1 #div/2-->\n      <div>\n        2\n      </div>\n      <!--M_*1 #div/3-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          clickCount: 0\n        }]),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #text in html/body/div/div0\nINSERT html/body/div/div0/#text\nREMOVE #text in html/body/div/div1\nINSERT html/body/div/div1/#text\nUPDATE html/body/div/button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        3\n        <!--M_*1 #text/1-->\n      </button>\n      <!--M_*1 #button/0-->\n      <div>\n        2\n      </div>\n      <!--M_*1 #div/2-->\n      <div>\n        3\n      </div>\n      <!--M_*1 #div/3-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          clickCount: 0\n        }]),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #text in html/body/div/div0\nINSERT html/body/div/div0/#text\nREMOVE #text in html/body/div/div1\nINSERT html/body/div/div1/#text\nUPDATE html/body/div/button/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/read-proposed-tag-variable-after-write/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  <button>\n    0\n  </button>\n  <div />\n  <div />\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/read-proposed-tag-variable-after-write/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><button>0<!--M_*1 #text/1--></button><!--M_*1 #button/0--><div></div><!--M_*1 #div/2--><div></div><!--M_*1 #div/3--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{clickCount:0}]),\"__tests__/template.marko_0_clickCount 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        0\n        <!--M_*1 #text/1-->\n      </button>\n      <!--M_*1 #button/0-->\n      <div />\n      <!--M_*1 #div/2-->\n      <div />\n      <!--M_*1 #div/3-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          clickCount: 0\n        }]),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/button\nINSERT html/body/div/button/#text\nINSERT html/body/div/button/#comment\nINSERT html/body/div/#comment0\nINSERT html/body/div/div0\nINSERT html/body/div/#comment1\nINSERT html/body/div/div1\nINSERT html/body/div/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/read-proposed-tag-variable-after-write/template.marko",
    "content": "<div>\n  <let/clickCount = 0/>\n  <button onClick() {\n    $a().innerHTML = clickCount++;\n    $b().innerHTML = clickCount;\n  }>${clickCount}</button>\n\n  <div/$a/>\n  <div/$b/>\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/read-proposed-tag-variable-after-write/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/reassignment-expression-counter/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$count__script\": \"c\",\n      \"$$count\": \"n\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/reassignment-expression-counter/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  id=\"addTwo\"\n>\n  0\n</button>\n<button\n  id=\"triple\"\n>\n  0\n</button>\n<button\n  id=\"cube\"\n>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#addTwo\").click();\n```\n```html\n<button\n  id=\"addTwo\"\n>\n  2\n</button>\n<button\n  id=\"triple\"\n>\n  2\n</button>\n<button\n  id=\"cube\"\n>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#triple\").click();\n```\n```html\n<button\n  id=\"addTwo\"\n>\n  6\n</button>\n<button\n  id=\"triple\"\n>\n  6\n</button>\n<button\n  id=\"cube\"\n>\n  6\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#cube\").click();\n```\n```html\n<button\n  id=\"addTwo\"\n>\n  216\n</button>\n<button\n  id=\"triple\"\n>\n  216\n</button>\n<button\n  id=\"cube\"\n>\n  216\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/reassignment-expression-counter/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button\n  id=\"addTwo\"\n>\n  0\n</button>\n<button\n  id=\"triple\"\n>\n  0\n</button>\n<button\n  id=\"cube\"\n>\n  0\n</button>\n```\n\n# Mutations\n```\nINSERT button0, button1, button2\n```\n\n# Render\n```js\ncontainer.querySelector(\"#addTwo\").click();\n```\n```html\n<button\n  id=\"addTwo\"\n>\n  2\n</button>\n<button\n  id=\"triple\"\n>\n  2\n</button>\n<button\n  id=\"cube\"\n>\n  2\n</button>\n```\n\n# Mutations\n```\nUPDATE button0/#text \"0\" => \"2\"\nUPDATE button1/#text \"0\" => \"2\"\nUPDATE button2/#text \"0\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#triple\").click();\n```\n```html\n<button\n  id=\"addTwo\"\n>\n  6\n</button>\n<button\n  id=\"triple\"\n>\n  6\n</button>\n<button\n  id=\"cube\"\n>\n  6\n</button>\n```\n\n# Mutations\n```\nUPDATE button0/#text \"2\" => \"6\"\nUPDATE button1/#text \"2\" => \"6\"\nUPDATE button2/#text \"2\" => \"6\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#cube\").click();\n```\n```html\n<button\n  id=\"addTwo\"\n>\n  216\n</button>\n<button\n  id=\"triple\"\n>\n  216\n</button>\n<button\n  id=\"cube\"\n>\n  216\n</button>\n```\n\n# Mutations\n```\nUPDATE button0/#text \"6\" => \"216\"\nUPDATE button1/#text \"6\" => \"216\"\nUPDATE button2/#text \"6\" => \"216\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/reassignment-expression-counter/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 233 (min) 122 (brotli)\nconst $count__script = _._script(\"a0\", ($scope) => {\n    (_._on($scope.a, \"click\", function () {\n      $count($scope, $scope.g + 2);\n    }),\n      _._on($scope.c, \"click\", function () {\n        $count($scope, 3 * $scope.g);\n      }),\n      _._on($scope.e, \"click\", function () {\n        $count($scope, $scope.g ** 3);\n      }));\n  }),\n  $count = _._let(6, ($scope) => {\n    (_._text($scope.b, $scope.g),\n      _._text($scope.d, $scope.g),\n      _._text($scope.f, $scope.g),\n      $count__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/reassignment-expression-counter/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button id=addTwo> </button><button id=triple> </button><button id=cube> </button>\";\nexport const $walks = /* get, next(1), get, out(1), get, next(1), get, out(1), get, next(1), get, out(1) */\" D l D l D l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $count__script = _._script(\"__tests__/template.marko_0_count\", $scope => {\n  _._on($scope[\"#button/0\"], \"click\", function () {\n    $count($scope, $scope.count + 2);\n  });\n  _._on($scope[\"#button/2\"], \"click\", function () {\n    $count($scope, $scope.count * 3);\n  });\n  _._on($scope[\"#button/4\"], \"click\", function () {\n    $count($scope, $scope.count ** 3);\n  });\n});\nconst $count = /* @__PURE__ */_._let(\"count/6\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.count);\n  _._text($scope[\"#text/3\"], $scope.count);\n  _._text($scope[\"#text/5\"], $scope.count);\n  $count__script($scope);\n});\nexport function $setup($scope) {\n  $count($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/reassignment-expression-counter/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let count = 0;\n  _._html(`<button id=addTwo>${_._escape(count)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}<button id=triple>${_._escape(count)}${_._el_resume($scope0_id, \"#text/3\")}</button>${_._el_resume($scope0_id, \"#button/2\")}<button id=cube>${_._escape(count)}${_._el_resume($scope0_id, \"#text/5\")}</button>${_._el_resume($scope0_id, \"#button/4\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_count\");\n  _._scope($scope0_id, {\n    count\n  }, \"__tests__/template.marko\", 0, {\n    count: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/reassignment-expression-counter/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  id=\"addTwo\"\n>\n  0\n</button>\n<button\n  id=\"triple\"\n>\n  0\n</button>\n<button\n  id=\"cube\"\n>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#addTwo\").click();\n```\n```html\n<button\n  id=\"addTwo\"\n>\n  2\n</button>\n<button\n  id=\"triple\"\n>\n  2\n</button>\n<button\n  id=\"cube\"\n>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#triple\").click();\n```\n```html\n<button\n  id=\"addTwo\"\n>\n  6\n</button>\n<button\n  id=\"triple\"\n>\n  6\n</button>\n<button\n  id=\"cube\"\n>\n  6\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#cube\").click();\n```\n```html\n<button\n  id=\"addTwo\"\n>\n  216\n</button>\n<button\n  id=\"triple\"\n>\n  216\n</button>\n<button\n  id=\"cube\"\n>\n  216\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/reassignment-expression-counter/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"addTwo\"\n    >\n      0\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      id=\"triple\"\n    >\n      0\n      <!--M_*1 #text/3-->\n    </button>\n    <!--M_*1 #button/2-->\n    <button\n      id=\"cube\"\n    >\n      0\n      <!--M_*1 #text/5-->\n    </button>\n    <!--M_*1 #button/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#addTwo\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"addTwo\"\n    >\n      2\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      id=\"triple\"\n    >\n      2\n      <!--M_*1 #text/3-->\n    </button>\n    <!--M_*1 #button/2-->\n    <button\n      id=\"cube\"\n    >\n      2\n      <!--M_*1 #text/5-->\n    </button>\n    <!--M_*1 #button/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button0/#text \"0\" => \"2\"\nUPDATE html/body/button1/#text \"0\" => \"2\"\nUPDATE html/body/button2/#text \"0\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#triple\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"addTwo\"\n    >\n      6\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      id=\"triple\"\n    >\n      6\n      <!--M_*1 #text/3-->\n    </button>\n    <!--M_*1 #button/2-->\n    <button\n      id=\"cube\"\n    >\n      6\n      <!--M_*1 #text/5-->\n    </button>\n    <!--M_*1 #button/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button0/#text \"2\" => \"6\"\nUPDATE html/body/button1/#text \"2\" => \"6\"\nUPDATE html/body/button2/#text \"2\" => \"6\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#cube\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"addTwo\"\n    >\n      216\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      id=\"triple\"\n    >\n      216\n      <!--M_*1 #text/3-->\n    </button>\n    <!--M_*1 #button/2-->\n    <button\n      id=\"cube\"\n    >\n      216\n      <!--M_*1 #text/5-->\n    </button>\n    <!--M_*1 #button/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button0/#text \"6\" => \"216\"\nUPDATE html/body/button1/#text \"6\" => \"216\"\nUPDATE html/body/button2/#text \"6\" => \"216\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/reassignment-expression-counter/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button\n  id=\"addTwo\"\n>\n  0\n</button>\n<button\n  id=\"triple\"\n>\n  0\n</button>\n<button\n  id=\"cube\"\n>\n  0\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/reassignment-expression-counter/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button id=addTwo>0<!--M_*1 #text/1--></button><!--M_*1 #button/0--><button id=triple>0<!--M_*1 #text/3--></button><!--M_*1 #button/2--><button id=cube>0<!--M_*1 #text/5--></button><!--M_*1 #button/4--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{count:0}]),\"__tests__/template.marko_0_count 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"addTwo\"\n    >\n      0\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <button\n      id=\"triple\"\n    >\n      0\n      <!--M_*1 #text/3-->\n    </button>\n    <!--M_*1 #button/2-->\n    <button\n      id=\"cube\"\n    >\n      0\n      <!--M_*1 #text/5-->\n    </button>\n    <!--M_*1 #button/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button0\nINSERT html/body/button0/#text\nINSERT html/body/button0/#comment\nINSERT html/body/#comment0\nINSERT html/body/button1\nINSERT html/body/button1/#text\nINSERT html/body/button1/#comment\nINSERT html/body/#comment1\nINSERT html/body/button2\nINSERT html/body/button2/#text\nINSERT html/body/button2/#comment\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/reassignment-expression-counter/template.marko",
    "content": "<let/count = 0/>\n<button#addTwo onClick() {\n  count += 2;\n}>${count}</button>\n\n<button#triple onClick() {\n  count *= 3;\n}>${count}</button>\n\n<button#cube onClick() {\n  count **= 3;\n}>${count}</button>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/reassignment-expression-counter/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction addTwo(container: Element) {\n  container.querySelector<HTMLButtonElement>(\"#addTwo\")!.click();\n}\n\nfunction triple(container: Element) {\n  container.querySelector<HTMLButtonElement>(\"#triple\")!.click();\n}\n\nfunction cube(container: Element) {\n  container.querySelector<HTMLButtonElement>(\"#cube\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, addTwo, triple, cube],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/reference-in-own-body/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"m\",\n      \"$init\": \"r\",\n      \"$$name__script\": \"o\",\n      \"$$Tag_content2__name__script\": \"s\",\n      \"$$Tag_content2__name\": \"t\",\n      \"$$name__closure\": \"_\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/reference-in-own-body/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n# Console\n```\nLOG \"A\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/reference-in-own-body/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<!---->\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, #text, #comment2, #comment3\n```\n# Console\n```\nLOG \"A\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/reference-in-own-body/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 92 (min) 85 (brotli)\n(_._script(\"a0\", ($scope) => console.log(_._assert_init($scope._, \"c\"))),\n  _._var_resume(\"a2\", _._const(2)),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/reference-in-own-body/__snapshots__/dom.expected/template.js",
    "content": "const $Tag_content__walks = /* over(1), replace, over(2) */\"b%c\",\n  $Tag_content__template = \"<!><!><!>\";\nexport const $template = `<!>${$Tag_content__template}<!>`;\nexport const $walks = /* over(1), <Tag/var>, over(1) */`b0${$Tag_content__walks}&b`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $Tag_content2__name__script = _._script(\"__tests__/template.marko_2_name\", $scope => console.log(_._assert_init($scope._, \"name\")));\nconst $Tag_content2__name = /* @__PURE__ */_._closure_get(\"name\", $Tag_content2__name__script);\nconst $Tag_content2__setup = $Tag_content2__name;\nconst $Tag_content2 = /* @__PURE__ */_._content(\"__tests__/template.marko_2_content\", 0, 0, $Tag_content2__setup);\nconst $Tag_content__dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\");\nconst $Tag_content__input_content = ($scope, input_content) => $Tag_content__dynamicTag($scope, input_content);\nconst $Tag_content__setup = /* @__PURE__ */_._child_setup($scope => _._return($scope, \"A\"));\nconst $Tag_content__$params = ($scope, $params2) => $Tag_content__input($scope, $params2[0]);\nconst $Tag_content__input = ($scope, input) => $Tag_content__input_content($scope, input.content);\nconst $name = _._var_resume(\"__tests__/template.marko_0_name/var\", /* @__PURE__ */_._const(\"name\"));\nexport function $setup($scope) {\n  _._var($scope, \"#childScope/0\", $name);\n  $Tag_content__setup._($scope[\"#childScope/0\"], $scope);\n  $Tag_content__input_content($scope[\"#childScope/0\"], $Tag_content2($scope));\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/reference-in-own-body/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const Tag = {\n    content: _._content(\"__tests__/template.marko_1_content\", input => {\n      const $scope1_id = _._scope_id();\n      const $scope1_reason = _._scope_reason();\n      _._dynamic_tag($scope1_id, \"#text/0\", input.content, {}, 0, 0, _._serialize_guard($scope1_reason, /* input.content */0));\n      const $return = \"A\";\n      _._serialize_if($scope1_reason, /* input.content */0) && _._scope($scope1_id, {}, \"__tests__/template.marko\", \"1:2\");\n      return $return;\n    })\n  };\n  let name = Tag.content({\n    content: _._content(\"__tests__/template.marko_2_content\", () => {\n      _._scope_reason();\n      const $scope2_id = _._scope_id();\n      _._script($scope2_id, \"__tests__/template.marko_2_name\");\n      _._scope($scope2_id, {\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"6:2\");\n      _._resume_branch($scope2_id);\n    })\n  });\n  _._scope($scope0_id, {\n    name\n  }, \"__tests__/template.marko\", 0, {\n    name: \"6:6\"\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/reference-in-own-body/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n# Console\n```\nLOG \"A\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/reference-in-own-body/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          name: \"A\"\n        }, 1,\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_2_name 3\"\n      ];\n      M._.w()\n    </script>\n  </head>\n  <body />\n</html>\n```\n# Console\n```\nLOG \"A\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/reference-in-own-body/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/reference-in-own-body/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={name:\"A\"},1,{_:_.a}]),\"__tests__/template.marko_2_name 3\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          name: \"A\"\n        }, 1,\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_2_name 3\"\n      ];\n      M._.w()\n    </script>\n  </head>\n  <body />\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/head/script\nINSERT html/head/script/#text\nINSERT html/body\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/reference-in-own-body/template.marko",
    "content": "<define/Tag|input|>\n  <${input.content}/>\n  <return=\"A\">\n</define>\n\n<Tag/name>\n  <script>console.log(name)</script>\n</>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/remove-and-add-rows/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/remove-and-add-rows/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"}]}`\n\n```html\n<div>\n  abc\n</div>\n```\n\n\n# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":3,\"text\":\"c\"}]}`\n\n```html\n<div>\n  ac\n</div>\n```\n\n\n# Render `{\"children\":[{\"id\":4,\"text\":\"d\"},{\"id\":3,\"text\":\"c\"}]}`\n\n```html\n<div>\n  dc\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/remove-and-add-rows/__snapshots__/csr.expected.md",
    "content": "# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"}]}`\n\n```html\n<div>\n  abc\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":3,\"text\":\"c\"}]}`\n\n```html\n<div>\n  ac\n</div>\n```\n\n# Mutations\n```\nREMOVE #text after div/#text0\n```\n\n# Render `{\"children\":[{\"id\":4,\"text\":\"d\"},{\"id\":3,\"text\":\"c\"}]}`\n\n```html\n<div>\n  dc\n</div>\n```\n\n# Mutations\n```\nREMOVE #text before div/#text1\nINSERT div/#text0\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/remove-and-add-rows/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/remove-and-add-rows/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* get, over(1) */\" b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for_content__child_text = ($scope, child_text) => _._text($scope[\"#text/0\"], child_text);\nconst $for_content__$params = ($scope, $params2) => $for_content__child($scope, $params2[0]);\nconst $for_content__child = ($scope, child) => $for_content__child_text($scope, child?.text);\nconst $for = /* @__PURE__ */_._for_of(\"#div/0\", \" \", /* get, over(1) */\" b\", 0, $for_content__$params);\nexport const $children = ($scope, children) => $for($scope, [children, function (c) {\n  return c.id;\n}]);\nexport const $input = ($scope, input) => $children($scope, input.children);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/remove-and-add-rows/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    children\n  } = input;\n  _._html(\"<div>\");\n  _._for_of(children, child => {\n    const $scope1_id = _._scope_id();\n    _._html(`${_._escape(child.text)}${_._el_resume($scope1_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.children */0))}`);\n    _._serialize_if($scope0_reason, /* input.children */0) && _._scope($scope1_id, {}, \"__tests__/template.marko\", \"3:4\");\n  }, function (c) {\n    return c.id;\n  }, $scope0_id, \"#div/0\", _._serialize_guard($scope0_reason, /* input.children */0), _._serialize_guard($scope0_reason, /* input.children */0), _._serialize_guard($scope0_reason, /* input.children */0), \"</div>\", 1);\n  _._serialize_if($scope0_reason, /* input.children */0) && _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/remove-and-add-rows/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"}]}`\n\n```html\n<div>\n  abc\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/remove-and-add-rows/__snapshots__/resume.expected.md",
    "content": "# Render `{\"children\":[{\"id\":1,\"text\":\"a\"},{\"id\":2,\"text\":\"b\"},{\"id\":3,\"text\":\"c\"}]}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      abc\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/remove-and-add-rows/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  abc\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/remove-and-add-rows/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>abc</div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      abc\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/remove-and-add-rows/template.marko",
    "content": "<attrs/{ children }/>\n<div>\n  <for|child| of=children by(c) { return c.id }>\n    ${child.text}\n  </for>\n</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/remove-and-add-rows/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [\n    {\n      children: [\n        {\n          id: 1,\n          text: \"a\",\n        },\n        {\n          id: 2,\n          text: \"b\",\n        },\n        {\n          id: 3,\n          text: \"c\",\n        },\n      ],\n    },\n    {\n      children: [\n        {\n          id: 1,\n          text: \"a\",\n        },\n        {\n          id: 3,\n          text: \"c\",\n        },\n      ],\n    },\n    {\n      children: [\n        {\n          id: 4,\n          text: \"d\",\n        },\n        {\n          id: 3,\n          text: \"c\",\n        },\n      ],\n    },\n  ],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/render-effect/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/render-effect/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/render-effect/__snapshots__/csr.expected.md",
    "content": "# Render\n# Mutations\n```\nINSERT #text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/render-effect/__snapshots__/dom.expected/tags/render-effect.js",
    "content": "export const $template = \"\";\nexport const $walks = \"\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $input = /* @__PURE__ */_._const(\"input\", $scope => _._return($scope, $scope.input.value()));\nexport default /* @__PURE__ */_._template(\"__tests__/tags/render-effect.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/render-effect/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/render-effect/__snapshots__/dom.expected/template.js",
    "content": "export const $template = _renderEffect_template;\nexport const $walks = /* <render-effect> */`/${_renderEffect_walks}&`;\nimport { $setup as _renderEffect, $input as _renderEffect_input, $template as _renderEffect_template, $walks as _renderEffect_walks } from \"./tags/render-effect.marko\";\nexport function $setup($scope) {\n  _renderEffect($scope[\"#childScope/0\"]);\n  _renderEffect_input($scope[\"#childScope/0\"], {\n    value: function () {}\n  });\n}\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/render-effect/__snapshots__/html.expected/tags/render-effect.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/render-effect.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $return = input.value();\n  return $return;\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/render-effect/__snapshots__/html.expected/template.js",
    "content": "import _renderEffect from \"./tags/render-effect.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _renderEffect({\n    value: function () {}\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/render-effect/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/render-effect/__snapshots__/resume.expected.md",
    "content": "# Render\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/render-effect/__snapshots__/ssr-sanitized.expected.md",
    "content": ""
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/render-effect/__snapshots__/ssr.expected.md",
    "content": ""
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/render-effect/tags/render-effect.marko",
    "content": "<return=input.value()/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/render-effect/template.marko",
    "content": "<render-effect () {} />\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/rest-alias-nested-scope/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"r\",\n      \"$init\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/rest-alias-nested-scope/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"value\":{\"foo\":\"bar\",\"class\":\"test\"}}`\n\n```html\n-- bar\n<span\n  class=\"test\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/rest-alias-nested-scope/__snapshots__/csr.expected.md",
    "content": "# Render `{\"value\":{\"foo\":\"bar\",\"class\":\"test\"}}`\n\n```html\n<!---->\n-- bar\n<span\n  class=\"test\"\n/>\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #text0, #text1, span, #comment1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/rest-alias-nested-scope/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 46 (min) 50 (brotli)\n(_._script(\"a0\", ($scope) => _._attrs_script($scope, \"b\")), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/rest-alias-nested-scope/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content__foo = /* @__PURE__ */_._if_closure(\"#text/0\", 0, $scope => _._text($scope[\"#text/0\"], $scope._.foo));\nconst $if_content__setup = $scope => {\n  $if_content__foo._($scope);\n  $if_content__rest._($scope);\n};\nconst $if_content__rest__script = _._script(\"__tests__/template.marko_1_rest\", $scope => _._attrs_script($scope, \"#span/1\"));\nconst $if_content__rest = /* @__PURE__ */_._if_closure(\"#text/0\", 0, $scope => {\n  _._attrs_content($scope, \"#span/1\", $scope._.rest);\n  $if_content__rest__script($scope);\n});\nconst $if = /* @__PURE__ */_._if(\"#text/0\", \" -- <!><span></span>\", /* over(1), replace, over(1), get, over(1) */\"b%b b\", $if_content__setup);\nexport const $value = ($scope, value) => {\n  (({\n    foo,\n    ...rest\n  }) => $rest($scope, rest))(value || {});\n  $foo($scope, value?.foo);\n  $if($scope, value ? 0 : 1);\n};\nexport const $input = ($scope, input) => $value($scope, input.value);\nconst $rest = /* @__PURE__ */_._const(\"rest\", $if_content__rest);\nconst $foo = /* @__PURE__ */_._const(\"foo\", $if_content__foo);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/rest-alias-nested-scope/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    value\n  } = input;\n  const {\n    foo: $foo,\n    ...rest\n  } = value || {};\n  _._if(() => {\n    if (value) {\n      const $scope1_id = _._scope_id();\n      const {\n        foo\n      } = value;\n      _._html(` -- ${_._sep(_._serialize_guard($scope0_reason, /* input.value.foo */1))}${_._escape(foo)}${_._el_resume($scope1_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.value.foo */1))}<span`);\n      _._attrs_content(rest, \"#span/1\", $scope1_id, \"span\");\n      _._html(`</span>${_._el_resume($scope1_id, \"#span/1\")}`);\n      _._script($scope1_id, \"__tests__/template.marko_1_rest\");\n      _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"3:2\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.value */0), _._serialize_guard($scope0_reason, /* input.value */0), _._serialize_guard($scope0_reason, /* input.value */0));\n  _._scope($scope0_id, {\n    foo: _._serialize_if($scope0_reason, /* input.value */0) && value?.foo,\n    rest\n  }, \"__tests__/template.marko\", 0, {\n    foo: \"4:12\",\n    rest: \"4:20\"\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/rest-alias-nested-scope/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"value\":{\"foo\":\"bar\",\"class\":\"test\"}}`\n\n```html\n-- bar\n<span\n  class=\"test\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/rest-alias-nested-scope/__snapshots__/resume.expected.md",
    "content": "# Render `{\"value\":{\"foo\":\"bar\",\"class\":\"test\"}}`\n\n```html\n<html>\n  <head />\n  <body>\n    -- bar\n    <span\n      class=\"test\"\n    />\n    <!--M_*2 #span/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          rest:\n          {\n            class: \"test\"\n          }\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1_rest 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/rest-alias-nested-scope/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n-- bar\n<span\n  class=\"test\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/rest-alias-nested-scope/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n   -- bar<span class=test></span><!--M_*2 #span/1--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={rest:{class:\"test\"}},{_:_.a}]),\"__tests__/template.marko_1_rest 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    -- bar\n    <span\n      class=\"test\"\n    />\n    <!--M_*2 #span/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          rest:\n          {\n            class: \"test\"\n          }\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_1_rest 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text\nINSERT html/body/span\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/rest-alias-nested-scope/template.marko",
    "content": "<const/{ value }=input>\n\n<if=value>\n  <const/{ foo, ...rest }=value>\n  -- ${foo}\n  <span ...rest/>\n</>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/rest-alias-nested-scope/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [{ value: { foo: \"bar\", class: \"test\" } }],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/rest-tag-var/index.marko",
    "content": ""
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/rest-tag-var/test.js",
    "content": ""
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/resume-single-node/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"o\",\n      \"$init\": \"r\",\n      \"$$for_content__if\": \"t\",\n      \"$$for_content__items_length\": \"i\",\n      \"$$for_content__setup\": \"_\",\n      \"$$itemId__OR__items__script\": \"m\",\n      \"$$itemId__OR__items\": \"c\",\n      \"$$itemId\": \"d\",\n      \"$$for\": \"f\",\n      \"$$items\": \"n\",\n      \"$$items_length\": \"a\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/resume-single-node/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  a\n</div>\n<button>\n  More\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  a\n</div>\n<div>\n  b\n</div>\n<div>\n  a\n</div>\n<div>\n  b\n</div>\n<button>\n  More\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  a\n</div>\n<div>\n  b\n</div>\n<div>\n  a\n</div>\n<div>\n  b\n</div>\n<div>\n  a\n</div>\n<div>\n  b\n</div>\n<button>\n  More\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/resume-single-node/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<div>\n  a\n</div>\n<!---->\n<button>\n  More\n</button>\n```\n\n# Mutations\n```\nINSERT #comment0, div, #text, #comment1, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<div>\n  a\n</div>\n<div>\n  b\n</div>\n<!---->\n<div>\n  a\n</div>\n<div>\n  b\n</div>\n<!---->\n<button>\n  More\n</button>\n```\n\n# Mutations\n```\nINSERT div2, #text, #comment2\nINSERT div1\nREMOVE #text after div1\nINSERT div3\nREMOVE #text after div3\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<div>\n  a\n</div>\n<div>\n  b\n</div>\n<!---->\n<div>\n  a\n</div>\n<div>\n  b\n</div>\n<!---->\n<div>\n  a\n</div>\n<div>\n  b\n</div>\n<!---->\n<button>\n  More\n</button>\n```\n\n# Mutations\n```\nINSERT div4, #text, #comment3\nINSERT div5\nREMOVE #text after div5\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/resume-single-node/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 298 (min) 215 (brotli)\nconst $for_content__if = _._if(0, \"<div>b</div>\", \"b\"),\n  $for_content__items_length = _._for_closure(0, ($scope) =>\n    $for_content__if($scope, $scope._.f > 1 ? 0 : 1),\n  ),\n  $for_content__setup = $for_content__items_length,\n  $itemId__OR__items__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.b, \"click\", function () {\n      $items($scope, [...$scope.d, $itemId($scope, $scope.c + 1)]);\n    }),\n  ),\n  $itemId__OR__items = _._or(4, $itemId__OR__items__script),\n  $itemId = _._let(2, $itemId__OR__items),\n  $for = _._for_of(0, \"<div>a</div><!><!>\", \"b%c\", $for_content__setup),\n  $items = _._let(3, ($scope) => {\n    ($items_length($scope, $scope.d?.length),\n      $for($scope, [$scope.d]),\n      $itemId__OR__items($scope));\n  }),\n  $items_length = _._const(5, $for_content__items_length);\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/resume-single-node/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><button>More</button>\";\nexport const $walks = /* over(1), replace, over(1), get, over(1) */\"b%b b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for_content__if = /* @__PURE__ */_._if(\"#text/0\", \"<div>b</div>\", /* over(1) */\"b\");\nconst $for_content__items_length = /* @__PURE__ */_._for_closure(\"#text/0\", $scope => $for_content__if($scope, $scope._.items_length > 1 ? 0 : 1));\nconst $for_content__setup = $for_content__items_length;\nconst $itemId__OR__items__script = _._script(\"__tests__/template.marko_0_itemId_items\", $scope => _._on($scope[\"#button/1\"], \"click\", function () {\n  $items($scope, [...$scope.items, $itemId($scope, $scope.itemId + 1)]);\n}));\nconst $itemId__OR__items = /* @__PURE__ */_._or(4, $itemId__OR__items__script);\nconst $itemId = /* @__PURE__ */_._let(\"itemId/2\", $itemId__OR__items);\nconst $for = /* @__PURE__ */_._for_of(\"#text/0\", \"<div>a</div><!><!>\", /* over(1), replace, over(2) */\"b%c\", $for_content__setup);\nconst $items = /* @__PURE__ */_._let(\"items/3\", $scope => {\n  $items_length($scope, $scope.items?.length);\n  $for($scope, [$scope.items]);\n  $itemId__OR__items($scope);\n});\nexport function $setup($scope) {\n  $itemId($scope, 0);\n  $items($scope, [0]);\n}\nconst $items_length = /* @__PURE__ */_._const(\"items_length\", $for_content__items_length);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/resume-single-node/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let itemId = 0;\n  let items = [0];\n  _._for_of(items, () => {\n    const $scope1_id = _._scope_id();\n    _._html(\"<div>a</div>\");\n    _._if(() => {\n      if (items.length > 1) {\n        const $scope2_id = _._scope_id();\n        _._html(\"<div>b</div>\");\n        _._scope($scope2_id, {}, \"__tests__/template.marko\", \"6:4\");\n        return 0;\n      }\n    }, $scope1_id, \"#text/0\", 1, /* items */1, /* items */1, 0, 1);\n    _._scope($scope1_id, {\n      _: _._scope_with_id($scope0_id)\n    }, \"__tests__/template.marko\", \"4:2\");\n  }, 0, $scope0_id, \"#text/0\");\n  _._html(`<button>More</button>${_._el_resume($scope0_id, \"#button/1\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_itemId_items\");\n  _._scope($scope0_id, {\n    itemId,\n    items,\n    items_length: items?.length\n  }, \"__tests__/template.marko\", 0, {\n    itemId: \"1:6\",\n    items: \"2:6\",\n    items_length: [\"items.length\", \"2:6\"]\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/resume-single-node/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  a\n</div>\n<button>\n  More\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  a\n</div>\n<div>\n  b\n</div>\n<div>\n  a\n</div>\n<div>\n  b\n</div>\n<button>\n  More\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  a\n</div>\n<div>\n  b\n</div>\n<div>\n  a\n</div>\n<div>\n  b\n</div>\n<div>\n  a\n</div>\n<div>\n  b\n</div>\n<button>\n  More\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/resume-single-node/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <!--M_[-->\n    <div>\n      a\n    </div>\n    <!--M_|2 #text/0-->\n    <!--M_]1 #text/0 2-->\n    <button>\n      More\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          itemId: 0,\n          items: [0],\n          items_length: 1\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_0_itemId_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/#comment0 before html\nINSERT html/body/#comment0\nINSERT html/body/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <!--M_[-->\n    <div>\n      a\n    </div>\n    <div>\n      b\n    </div>\n    <div>\n      a\n    </div>\n    <div>\n      b\n    </div>\n    <!---->\n    <!--M_]1 #text/0 2-->\n    <button>\n      More\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          itemId: 0,\n          items: [0],\n          items_length: 1\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_0_itemId_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div2, #text, html/body/#comment1\nINSERT html/body/div1\nREMOVE #comment after html/body/div1\nINSERT html/body/div3\nREMOVE #text after html/body/div3\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <!--M_[-->\n    <div>\n      a\n    </div>\n    <div>\n      b\n    </div>\n    <div>\n      a\n    </div>\n    <div>\n      b\n    </div>\n    <!---->\n    <div>\n      a\n    </div>\n    <div>\n      b\n    </div>\n    <!---->\n    <!--M_]1 #text/0 2-->\n    <button>\n      More\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          itemId: 0,\n          items: [0],\n          items_length: 1\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_0_itemId_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div4, #text, html/body/#comment2\nINSERT html/body/div5\nREMOVE #text after html/body/div5\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/resume-single-node/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  a\n</div>\n<button>\n  More\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/resume-single-node/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <!--M_[--><div>a</div><!--M_|2 #text/0--><!--M_]1 #text/0 2--><button>More</button><!--M_*1 #button/1--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={itemId:0,items:[0],items_length:1},{_:_.a}]),\"__tests__/template.marko_0_itemId_items 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<!--M_[-->\n<html>\n  <head />\n  <body>\n    <div>\n      a\n    </div>\n    <!--M_|2 #text/0-->\n    <!--M_]1 #text/0 2-->\n    <button>\n      More\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          itemId: 0,\n          items: [0],\n          items_length: 1\n        },\n        {\n          _: _.a\n        }]),\n        \"__tests__/template.marko_0_itemId_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT #comment\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/resume-single-node/template.marko",
    "content": "<let/itemId=0>\n<let/items=[0]>\n\n<for of=items>\n  <div>a</div>\n  <if=(items.length > 1)>\n    <div>b</div>\n  </if>\n</for>\n\n<button onClick() { items = [...items, ++itemId] }>\n  More\n</button>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/resume-single-node/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nconst click = (container: Element) => {\n  container.querySelector<HTMLButtonElement>(\"button\")!.click();\n};\n\nexport const config: TestConfig = {\n  steps: [{}, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"r\",\n      \"$init\": \"t\",\n      \"$$input_value__OR__setter\": \"o\",\n      \"$$input_value\": \"e\",\n      \"$$count\": \"n\",\n      \"$$setCount__script\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  0\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div>\n  1\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  0\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render ASYNC\n```html\n<div>\n  1\n</div>\n```\n\n# Mutations\n```\nUPDATE div/#text \"0\" => \"1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/dom.expected/tags/setter.js",
    "content": "export const $template = \"\";\nexport const $walks = \"\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $input_value__OR__setter = /* @__PURE__ */_._or(5, $scope => _._return($scope, ($scope.input_value, $scope.setter)));\nconst $setter2 = /* @__PURE__ */_._const(\"setter\", $input_value__OR__setter);\nexport const $input_valueChange = /* @__PURE__ */_._const(\"input_valueChange\", $scope => $setter2($scope, $setter($scope)));\nexport const $input_value = /* @__PURE__ */_._const(\"input_value\", $input_value__OR__setter);\nexport const $input = ($scope, input) => {\n  $input_valueChange($scope, input.valueChange);\n  $input_value($scope, input.value);\n};\nfunction $setter($scope) {\n  return function () {\n    $scope.input_valueChange(1);\n  };\n}\n_._resume(\"__tests__/tags/setter.marko_0/setter\", $setter);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/setter.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 278 (min) 171 (brotli)\nconst $input_value__OR__setter = _._or(5, ($scope) =>\n    _._return($scope, ($scope.d, $scope.e)),\n  ),\n  $input_value = _._const(3, $input_value__OR__setter);\n_._resume(\"a0\", function ($scope) {\n  return function () {\n    $scope.c(1);\n  };\n});\nconst $count = _._let(3, ($scope) => {\n    ($input_value($scope.a, $scope.d), _._text($scope.c, $scope.d));\n  }),\n  $setCount__script = _._script(\"b1\", ($scope) => $scope.e());\n(_._var_resume(\"b2\", _._const(4, $setCount__script)),\n  _._resume(\"b0\", function ($scope) {\n    return (_new_count) => {\n      $count($scope, _new_count);\n    };\n  }),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `${_setter_template}<div> </div>`;\nexport const $walks = /* <setter/var>, next(1), get, out(1) */`0${_setter_walks}&D l`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _setter, $input_value as _setter_input_value, $input_valueChange as _setter_input_valueChange, $template as _setter_template, $walks as _setter_walks } from \"./tags/setter.marko\";\nconst $count = /* @__PURE__ */_._let(\"count/3\", $scope => {\n  _setter_input_value($scope[\"#childScope/0\"], $scope.count);\n  _._text($scope[\"#text/2\"], $scope.count);\n});\nexport function $setup($scope) {\n  _._var($scope, \"#childScope/0\", $setCount);\n  _setter($scope[\"#childScope/0\"]);\n  _setter_input_valueChange($scope[\"#childScope/0\"], $valueChange($scope));\n  $count($scope, 0);\n}\nconst $setCount__script = _._script(\"__tests__/template.marko_0_setCount\", $scope => $scope.setCount());\nconst $setCount = _._var_resume(\"__tests__/template.marko_0_setCount/var\", /* @__PURE__ */_._const(\"setCount\", $setCount__script));\nfunction $valueChange($scope) {\n  return _new_count => {\n    $count($scope, _new_count);\n  };\n}\n_._resume(\"__tests__/template.marko_0/valueChange\", $valueChange);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/html.expected/tags/setter.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/setter.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const setter = _._resume(function () {\n    input.valueChange(1);\n  }, \"__tests__/tags/setter.marko_0/setter\", $scope0_id);\n  const $return = (input.value, setter);\n  _._scope($scope0_id, {\n    input_valueChange: input.valueChange,\n    input_value: _._serialize_if($scope0_reason, /* input.valueChange */0) && input.value,\n    setter: _._serialize_if($scope0_reason, /* input.value */1) && setter\n  }, \"__tests__/tags/setter.marko\", 0, {\n    input_valueChange: [\"input.valueChange\"],\n    input_value: [\"input.value\"],\n    setter: \"1:8\"\n  });\n  return $return;\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/html.expected/template.js",
    "content": "import _setter from \"./tags/setter.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let count = 0;\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason({\n    /* input.value */1: /* count */1\n  });\n  let setCount = _setter({\n    value: count,\n    valueChange: _._resume(_new_count => {\n      count = _new_count;\n    }, \"__tests__/template.marko_0/valueChange\", $scope0_id)\n  });\n  _._var($scope0_id, \"#scopeOffset/1\", $childScope, \"__tests__/template.marko_0_setCount/var\");\n  _._html(`<div>${_._escape(count)}${_._el_resume($scope0_id, \"#text/2\")}</div>`);\n  _._script($scope0_id, \"__tests__/template.marko_0_setCount\");\n  _._scope($scope0_id, {\n    setCount,\n    \"#childScope/0\": _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0, {\n    setCount: \"2:9\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  0\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div>\n  1\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      0\n      <!--M_*1 #text/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"#scopeOffset/1\": 3,\n          setCount: _.b = {},\n          \"#childScope/0\": _.b\n        }, _.b], _.b.input_valueChange = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.a.setCount = _.b.setter = _._[\n          \"__tests__/tags/setter.marko_0/setter\"\n          ](_.b), _.b[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_setCount/var\"\n          ](_.a), _.c),\n        \"__tests__/template.marko_0_setCount 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render ASYNC\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      1\n      <!--M_*1 #text/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"#scopeOffset/1\": 3,\n          setCount: _.b = {},\n          \"#childScope/0\": _.b\n        }, _.b], _.b.input_valueChange = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.a.setCount = _.b.setter = _._[\n          \"__tests__/tags/setter.marko_0/setter\"\n          ](_.b), _.b[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_setCount/var\"\n          ](_.a), _.c),\n        \"__tests__/template.marko_0_setCount 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/#text \"0\" => \"1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  0\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>0<!--M_*1 #text/2--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.a={\"#scopeOffset/1\":3,setCount:_.b={},\"#childScope/0\":_.b},_.b],_.b.input_valueChange=_._[\"__tests__/template.marko_0/valueChange\"](_.a),_.a.setCount=_.b.setter=_._[\"__tests__/tags/setter.marko_0/setter\"](_.b),_.b[\"#TagVariable\"]=_._[\"__tests__/template.marko_0_setCount/var\"](_.a),_.c),\"__tests__/template.marko_0_setCount 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      0\n      <!--M_*1 #text/2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"#scopeOffset/1\": 3,\n          setCount: _.b = {},\n          \"#childScope/0\": _.b\n        }, _.b], _.b.input_valueChange = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.a.setCount = _.b.setter = _._[\n          \"__tests__/tags/setter.marko_0/setter\"\n          ](_.b), _.b[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_setCount/var\"\n          ](_.a), _.c),\n        \"__tests__/template.marko_0_setCount 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/div/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/tags/setter.marko",
    "content": "<const/setter() { input.valueChange(1) }>\n<return=(input.value,setter)>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/template.marko",
    "content": "<let/count=0>\n<setter/setCount:=count/>\n<script>setCount()</script>\n<div>${count}</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{}, wait],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-bind-type-casting/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"r\",\n      \"$init\": \"t\",\n      \"$$value\": \"_\",\n      \"$$mytag_content__count__script\": \"o\",\n      \"$$mytag_content__count\": \"e\",\n      \"$$count__closure\": \"c\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-bind-type-casting/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-bind-type-casting/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<!---->\n<button>\n  0\n</button>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, button, #comment2, #comment3\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<!---->\n<button>\n  1\n</button>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<!---->\n<button>\n  2\n</button>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<!---->\n<button>\n  3\n</button>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-bind-type-casting/__snapshots__/dom.expected/tags/my-let.js",
    "content": "export const $template = \"\";\nexport const $walks = \"\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $value = /* @__PURE__ */_._let(\"value/3\", $scope => _._return($scope, $scope.value));\nexport const $input_value = ($scope, input_value) => $value($scope, input_value);\nexport function $setup($scope) {\n  _._return_change($scope, $valueChange($scope));\n}\nexport const $input = ($scope, input) => $input_value($scope, input.value);\nfunction $valueChange($scope) {\n  return _new_value => {\n    $value($scope, _new_value);\n  };\n}\n_._resume(\"__tests__/tags/my-let.marko_0/valueChange\", $valueChange);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/my-let.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-bind-type-casting/__snapshots__/dom.expected/tags/my-tag.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\");\nexport const $input_content = ($scope, input_content) => $dynamicTag($scope, input_content);\nexport const $input = ($scope, input) => $input_content($scope, input.content);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/my-tag.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-bind-type-casting/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 276 (min) 177 (brotli)\nconst $value = _._let(3, ($scope) => _._return($scope, $scope.d));\n_._resume(\"a0\", function ($scope) {\n  return (_new_value) => {\n    $value($scope, _new_value);\n  };\n});\nconst $mytag_content__count__script = _._script(\"c0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      _._var_change($scope._.a, $scope._.d + 1);\n    }),\n  ),\n  $mytag_content__count = _._closure_get(3, ($scope) => {\n    (_._text($scope.b, $scope._.d), $mytag_content__count__script($scope));\n  }),\n  $count__closure = _._closure($mytag_content__count);\n(_._var_resume(\"c2\", _._const(3, $count__closure)), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-bind-type-casting/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<!>${_myLet_template}${_myTag_template}<!>`;\nexport const $walks = /* over(1), <my-let/var>, <my-tag>, over(1) */`b0${_myLet_walks}&/${_myTag_walks}&b`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _myLet, $input_value as _myLet_input_value, $template as _myLet_template, $walks as _myLet_walks } from \"./tags/my-let.marko\";\nimport { $setup as _myTag, $input_content as _myTag_input_content, $template as _myTag_template, $walks as _myTag_walks } from \"./tags/my-tag.marko\";\nconst $mytag_content__count__script = _._script(\"__tests__/template.marko_1_count\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  _._var_change($scope._[\"#childScope/0\"], $scope._.count + 1, \"count\");\n}));\nconst $mytag_content__count = /* @__PURE__ */_._closure_get(\"count\", $scope => {\n  _._text($scope[\"#text/1\"], $scope._.count);\n  $mytag_content__count__script($scope);\n});\nconst $mytag_content__setup = $mytag_content__count;\nconst $mytag_content = /* @__PURE__ */_._content(\"__tests__/template.marko_1_content\", \"<button> </button>\", /* get, next(1), get, out(1) */\" D l\", $mytag_content__setup);\nconst $count__closure = /* @__PURE__ */_._closure($mytag_content__count);\nconst $count = _._var_resume(\"__tests__/template.marko_0_count/var\", /* @__PURE__ */_._const(\"count\", $count__closure));\nexport function $setup($scope) {\n  _._var($scope, \"#childScope/0\", $count);\n  _myLet($scope[\"#childScope/0\"]);\n  _myLet_input_value($scope[\"#childScope/0\"], 0);\n  _myTag($scope[\"#childScope/2\"]);\n  _myTag_input_content($scope[\"#childScope/2\"], $mytag_content($scope));\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-bind-type-casting/__snapshots__/html.expected/tags/my-let.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/my-let.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let value = input.value;\n  const $return = value;\n  _._scope($scope0_id, {\n    \"#TagVariableChange\": _._resume(_new_value => {\n      value = _new_value;\n    }, \"__tests__/tags/my-let.marko_0/valueChange\", $scope0_id) || void 0\n  }, \"__tests__/tags/my-let.marko\", 0);\n  _._resume_branch($scope0_id);\n  return $return;\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-bind-type-casting/__snapshots__/html.expected/tags/my-tag.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/my-tag.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._dynamic_tag($scope0_id, \"#text/0\", input.content, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.content */0));\n  _._serialize_if($scope0_reason, /* input.content */0) && _._scope($scope0_id, {}, \"__tests__/tags/my-tag.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-bind-type-casting/__snapshots__/html.expected/template.js",
    "content": "import _myLet from \"./tags/my-let.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nimport _myTag from \"./tags/my-tag.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $count__closures = new Set();\n  const $childScope = _._peek_scope_id();\n  let count = _myLet({\n    value: 0\n  });\n  _._var($scope0_id, \"#scopeOffset/1\", $childScope, \"__tests__/template.marko_0_count/var\");\n  _myTag({\n    content: _._content(\"__tests__/template.marko_1_content\", () => {\n      _._scope_reason();\n      const $scope1_id = _._scope_id();\n      _._html(`<button>${_._escape(count)}${_._el_resume($scope1_id, \"#text/1\")}</button>${_._el_resume($scope1_id, \"#button/0\")}`);\n      _._script($scope1_id, \"__tests__/template.marko_1_count\");\n      _._subscribe($count__closures, _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id),\n        \"ClosureSignalIndex:count\": 0\n      }, \"__tests__/template.marko\", \"2:1\"));\n      _._resume_branch($scope1_id);\n    })\n  });\n  _._scope($scope0_id, {\n    count,\n    \"#childScope/0\": _._existing_scope($childScope),\n    \"ClosureScopes:count\": $count__closures\n  }, \"__tests__/template.marko\", 0, {\n    count: \"1:8\"\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-bind-type-casting/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-bind-type-casting/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*5 #text/1-->\n    </button>\n    <!--M_*5 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.b = {\n          \"#scopeOffset/1\": 3,\n          count: 0,\n          \"#childScope/0\": _.a = {},\n          \"ClosureScopes:count\": _.d = new Set\n        }, _.a, 2, _.e = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 0\n        }], _.a[\"#TagVariableChange\"] = _._[\n          \"__tests__/tags/my-let.marko_0/valueChange\"\n          ](_.a), _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_count/var\"\n          ](_.b), (_.d).add(_.e), _.c),\n        \"__tests__/template.marko_1_count 5\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*5 #text/1-->\n    </button>\n    <!--M_*5 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.b = {\n          \"#scopeOffset/1\": 3,\n          count: 0,\n          \"#childScope/0\": _.a = {},\n          \"ClosureScopes:count\": _.d = new Set\n        }, _.a, 2, _.e = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 0\n        }], _.a[\"#TagVariableChange\"] = _._[\n          \"__tests__/tags/my-let.marko_0/valueChange\"\n          ](_.a), _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_count/var\"\n          ](_.b), (_.d).add(_.e), _.c),\n        \"__tests__/template.marko_1_count 5\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      2\n      <!--M_*5 #text/1-->\n    </button>\n    <!--M_*5 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.b = {\n          \"#scopeOffset/1\": 3,\n          count: 0,\n          \"#childScope/0\": _.a = {},\n          \"ClosureScopes:count\": _.d = new Set\n        }, _.a, 2, _.e = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 0\n        }], _.a[\"#TagVariableChange\"] = _._[\n          \"__tests__/tags/my-let.marko_0/valueChange\"\n          ](_.a), _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_count/var\"\n          ](_.b), (_.d).add(_.e), _.c),\n        \"__tests__/template.marko_1_count 5\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      3\n      <!--M_*5 #text/1-->\n    </button>\n    <!--M_*5 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.b = {\n          \"#scopeOffset/1\": 3,\n          count: 0,\n          \"#childScope/0\": _.a = {},\n          \"ClosureScopes:count\": _.d = new Set\n        }, _.a, 2, _.e = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 0\n        }], _.a[\"#TagVariableChange\"] = _._[\n          \"__tests__/tags/my-let.marko_0/valueChange\"\n          ](_.a), _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_count/var\"\n          ](_.b), (_.d).add(_.e), _.c),\n        \"__tests__/template.marko_1_count 5\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-bind-type-casting/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  0\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-bind-type-casting/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>0<!--M_*5 #text/1--></button><!--M_*5 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.b={\"#scopeOffset/1\":3,count:0,\"#childScope/0\":_.a={},\"ClosureScopes:count\":_.d=new Set},_.a,2,_.e={_:_.b,\"ClosureSignalIndex:count\":0}],_.a[\"#TagVariableChange\"]=_._[\"__tests__/tags/my-let.marko_0/valueChange\"](_.a),_.a[\"#TagVariable\"]=_._[\"__tests__/template.marko_0_count/var\"](_.b),(_.d).add(_.e),_.c),\"__tests__/template.marko_1_count 5\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*5 #text/1-->\n    </button>\n    <!--M_*5 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.b = {\n          \"#scopeOffset/1\": 3,\n          count: 0,\n          \"#childScope/0\": _.a = {},\n          \"ClosureScopes:count\": _.d = new Set\n        }, _.a, 2, _.e = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 0\n        }], _.a[\"#TagVariableChange\"] = _._[\n          \"__tests__/tags/my-let.marko_0/valueChange\"\n          ](_.a), _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_count/var\"\n          ](_.b), (_.d).add(_.e), _.c),\n        \"__tests__/template.marko_1_count 5\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-bind-type-casting/tags/my-let.marko",
    "content": "let/value=input.value\n\nreturn:=value as number\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-bind-type-casting/tags/my-tag.marko",
    "content": "${input.content}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-bind-type-casting/template.marko",
    "content": "my-let/count=0\nmy-tag\n  button onClick() { count++ } -- ${count}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-bind-type-casting/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-no-state/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-no-state/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<span>\n  child\n</span>\n<div>\n  parent 1\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-no-state/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<span>\n  child\n</span>\n<div>\n  parent 1\n</div>\n```\n\n# Mutations\n```\nINSERT span, div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-no-state/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<span>child</span>\";\nexport const $walks = /* over(1) */\"b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $x = /* @__PURE__ */_._const(\"x\", $scope => _._return($scope, $scope.x));\nexport function $setup($scope) {\n  $x($scope, 1);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-no-state/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 42 (min) 46 (brotli)\n_._var_resume(\"b0\", ($scope, value) => _._text($scope.c, value));\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-no-state/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `${_child_template}<div>parent <!></div>`;\nexport const $walks = /* <child/var>, next(1), over(1), replace, out(1) */`0${_child_walks}&Db%l`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _child, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nconst $value = _._var_resume(\"__tests__/template.marko_0_value/var\", ($scope, value) => _._text($scope[\"#text/2\"], value));\nexport function $setup($scope) {\n  _._var($scope, \"#childScope/0\", $value);\n  _child($scope[\"#childScope/0\"]);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-no-state/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const x = 1;\n  _._html(\"<span>child</span>\");\n  const $return = x;\n  return $return;\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-no-state/__snapshots__/html.expected/template.js",
    "content": "import _child from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let value = _child({});\n  _._html(`<div>parent ${_._escape(value)}</div>`);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-no-state/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<span>\n  child\n</span>\n<div>\n  parent 1\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-no-state/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <span>\n      child\n    </span>\n    <div>\n      parent 1\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-no-state/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<span>\n  child\n</span>\n<div>\n  parent 1\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-no-state/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <span>child</span><div>parent 1</div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <span>\n      child\n    </span>\n    <div>\n      parent 1\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/span\nINSERT html/body/span/#text\nINSERT html/body/div\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-no-state/tags/child.marko",
    "content": "<const/x = 1/>\n<span>child</span>\n<return=x/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-no-state/template.marko",
    "content": "<child/value/>\n<div>parent ${value}</div>\n\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-no-var/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-no-var/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<span>\n  child\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-no-var/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<span>\n  child\n</span>\n```\n\n# Mutations\n```\nINSERT span\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-no-var/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<span>child</span>\";\nexport const $walks = /* over(1) */\"b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $x = /* @__PURE__ */_._let(\"x/0\", $scope => _._return($scope, $scope.x));\nexport function $setup($scope) {\n  $x($scope, 1);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-no-var/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-no-var/__snapshots__/dom.expected/template.js",
    "content": "export const $template = _child_template;\nexport const $walks = /* <child> */`/${_child_walks}&`;\nimport { $setup as _child, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nexport function $setup($scope) {\n  _child($scope[\"#childScope/0\"]);\n}\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-no-var/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let x = 1;\n  _._html(\"<span>child</span>\");\n  const $return = x;\n  _._resume_branch($scope0_id);\n  return $return;\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-no-var/__snapshots__/html.expected/template.js",
    "content": "import _child from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _child({});\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-no-var/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<span>\n  child\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-no-var/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <span>\n      child\n    </span>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-no-var/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<span>\n  child\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-no-var/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <span>child</span>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <span>\n      child\n    </span>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/span\nINSERT html/body/span/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-no-var/tags/child.marko",
    "content": "<let/x = 1/>\n<span>child</span>\n<return=x/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-tag-no-var/template.marko",
    "content": "<child/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-value-registered/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"r\",\n      \"$$get__script\": \"o\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-value-registered/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  hello\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-value-registered/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  hello\n</div>\n```\n\n# Mutations\n```\nINSERT div\nINSERT div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-value-registered/__snapshots__/dom.expected/tags/getter.js",
    "content": "export const $template = \"\";\nexport const $walks = \"\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $getter2 = /* @__PURE__ */_._const(\"getter\", $scope => _._return($scope, $scope.getter));\nexport function $setup($scope) {\n  $getter2($scope, $getter);\n}\nfunction $getter() {\n  return \"hello\";\n}\n_._resume(\"__tests__/tags/getter.marko_0/getter\", $getter);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/getter.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-value-registered/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 129 (min) 103 (brotli)\n_._resume(\"a0\", function () {\n  return \"hello\";\n});\nconst $get__script = _._script(\n  \"b0\",\n  ($scope) => ($scope.c.textContent = $scope.d()),\n);\n(_._var_resume(\"b1\", _._const(3, $get__script)), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-value-registered/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `${_getter_template}<div></div>`;\nexport const $walks = /* <getter/var>, get, over(1) */`0${_getter_walks}& b`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _getter, $template as _getter_template, $walks as _getter_walks } from \"./tags/getter.marko\";\nconst $get__script = _._script(\"__tests__/template.marko_0_get\", $scope => (_._el_read($scope[\"#div/2\"]).textContent = $scope.get()));\nconst $get = _._var_resume(\"__tests__/template.marko_0_get/var\", /* @__PURE__ */_._const(\"get\", $get__script));\nexport function $setup($scope) {\n  _._var($scope, \"#childScope/0\", $get);\n  _getter($scope[\"#childScope/0\"]);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-value-registered/__snapshots__/html.expected/tags/getter.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/getter.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const getter = _._resume(() => {\n    return \"hello\";\n  }, \"__tests__/tags/getter.marko_0/getter\");\n  const $return = getter;\n  return $return;\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-value-registered/__snapshots__/html.expected/template.js",
    "content": "import _getter from \"./tags/getter.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let get = _getter({});\n  _._html(`<div></div>${_._el_resume($scope0_id, \"#div/2\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_get\");\n  _._scope($scope0_id, {\n    get\n  }, \"__tests__/template.marko\", 0, {\n    get: \"1:9\"\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-value-registered/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  hello\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-value-registered/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      hello\n    </div>\n    <!--M_*1 #div/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          get: _._[\n            \"__tests__/tags/getter.marko_0/getter\"\n            ]\n        }]),\n        \"__tests__/template.marko_0_get 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-value-registered/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-value-registered/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div></div><!--M_*1 #div/2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{get:_._[\"__tests__/tags/getter.marko_0/getter\"]}]),\"__tests__/template.marko_0_get 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*1 #div/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          get: _._[\n            \"__tests__/tags/getter.marko_0/getter\"\n            ]\n        }]),\n        \"__tests__/template.marko_0_get 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-value-registered/tags/getter.marko",
    "content": "<const/getter=() => {\n  return \"hello\";\n}>\n\n<return=getter>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-value-registered/template.marko",
    "content": "<getter/get/>\n<div/el/>\n<script>\n  el().textContent = get();\n</script>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/return-value-registered/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{}, wait],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/returns-within-define-tag/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"n\",\n      \"$$Twice_content__value__OR__call\": \"r\",\n      \"$$Twice_content__call\": \"e\",\n      \"$$Twice_content__value\": \"o\",\n      \"$$Once_content__value__OR__call\": \"_\",\n      \"$$Once_content__call\": \"c\",\n      \"$$Once_content__value\": \"u\",\n      \"$$clickOnceCount\": \"i\",\n      \"$$clickTwiceCount\": \"s\",\n      \"$$onClickOnce2__script\": \"a\",\n      \"$$onClickTwice2__script\": \"m\",\n      \"$$_return2\": \"f\",\n      \"$$_return\": \"d\",\n      \"$$onClickOnce\": \"l\",\n      \"$$onClickTwice\": \"k\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/returns-within-define-tag/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  class=\"once\"\n>\n  0\n</button>\n<button\n  class=\"twice\"\n>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.once\").click();\n```\n```html\n<button\n  class=\"once\"\n>\n  1\n</button>\n<button\n  class=\"twice\"\n>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.once\").click();\n```\n```html\n<button\n  class=\"once\"\n>\n  1\n</button>\n<button\n  class=\"twice\"\n>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.twice\").click();\n```\n```html\n<button\n  class=\"once\"\n>\n  1\n</button>\n<button\n  class=\"twice\"\n>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.twice\").click();\n```\n```html\n<button\n  class=\"once\"\n>\n  1\n</button>\n<button\n  class=\"twice\"\n>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.twice\").click();\n```\n```html\n<button\n  class=\"once\"\n>\n  1\n</button>\n<button\n  class=\"twice\"\n>\n  2\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/returns-within-define-tag/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<button\n  class=\"once\"\n>\n  0\n</button>\n<button\n  class=\"twice\"\n>\n  0\n</button>\n```\n\n# Mutations\n```\nINSERT #comment, button0, button1\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.once\").click();\n```\n```html\n<!---->\n<button\n  class=\"once\"\n>\n  1\n</button>\n<button\n  class=\"twice\"\n>\n  0\n</button>\n```\n\n# Mutations\n```\nUPDATE button0/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.once\").click();\n```\n```html\n<!---->\n<button\n  class=\"once\"\n>\n  1\n</button>\n<button\n  class=\"twice\"\n>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.twice\").click();\n```\n```html\n<!---->\n<button\n  class=\"once\"\n>\n  1\n</button>\n<button\n  class=\"twice\"\n>\n  1\n</button>\n```\n\n# Mutations\n```\nUPDATE button1/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.twice\").click();\n```\n```html\n<!---->\n<button\n  class=\"once\"\n>\n  1\n</button>\n<button\n  class=\"twice\"\n>\n  2\n</button>\n```\n\n# Mutations\n```\nUPDATE button1/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.twice\").click();\n```\n```html\n<!---->\n<button\n  class=\"once\"\n>\n  1\n</button>\n<button\n  class=\"twice\"\n>\n  2\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/returns-within-define-tag/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 664 (min) 262 (brotli)\nconst $Twice_content__value__OR__call = _._or(4, ($scope) =>\n    _._return($scope, $_return2($scope)),\n  ),\n  $Twice_content__call = _._let(3, $Twice_content__value__OR__call),\n  $Twice_content__value = _._const(2, $Twice_content__value__OR__call),\n  $Once_content__value__OR__call = _._or(4, ($scope) =>\n    _._return($scope, $_return($scope)),\n  ),\n  $Once_content__call = _._let(3, $Once_content__value__OR__call),\n  $Once_content__value = _._const(2, $Once_content__value__OR__call),\n  $clickOnceCount = _._let(8, ($scope) => {\n    ($Once_content__value($scope.a, $onClickOnce($scope)),\n      _._text($scope.d, $scope.i));\n  }),\n  $clickTwiceCount = _._let(10, ($scope) => {\n    ($Twice_content__value($scope.e, $onClickTwice($scope)),\n      _._text($scope.h, $scope.k));\n  }),\n  $onClickOnce2__script = _._script(\"a4\", ($scope) =>\n    _._on($scope.c, \"click\", $scope.j),\n  );\n_._var_resume(\"a5\", _._const(9, $onClickOnce2__script));\nconst $onClickTwice2__script = _._script(\"a6\", ($scope) =>\n  _._on($scope.g, \"click\", $scope.l),\n);\nfunction $_return2($scope) {\n  return function () {\n    $scope.d && ($Twice_content__call($scope, $scope.d - 1), $scope.c());\n  };\n}\nfunction $_return($scope) {\n  return function () {\n    $scope.d && ($Once_content__call($scope, $scope.d - 1), $scope.c());\n  };\n}\nfunction $onClickOnce($scope) {\n  return function () {\n    $clickOnceCount($scope, $scope.i + 1);\n  };\n}\nfunction $onClickTwice($scope) {\n  return function () {\n    $clickTwiceCount($scope, $scope.k + 1);\n  };\n}\n(_._var_resume(\"a7\", _._const(11, $onClickTwice2__script)),\n  _._resume(\"a2\", $_return2),\n  _._resume(\"a0\", $_return),\n  _._resume(\"a1\", $onClickOnce),\n  _._resume(\"a3\", $onClickTwice),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/returns-within-define-tag/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><button class=once> </button><button class=twice> </button>\";\nexport const $walks = /* over(1), <Once/var>, get, next(1), get, out(1), <Twice/var>, get, next(1), get, out(1) */\"b0& D l0& D l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $Twice_content__value__OR__call = /* @__PURE__ */_._or(4, $scope => _._return($scope, $_return2($scope)));\nconst $Twice_content__call = /* @__PURE__ */_._let(\"call/3\", $Twice_content__value__OR__call);\nconst $Twice_content__setup = /* @__PURE__ */_._child_setup($scope => $Twice_content__call($scope, 2));\nconst $Twice_content__value = /* @__PURE__ */_._const(\"value\", $Twice_content__value__OR__call);\nconst $Twice_content__$params = ($scope, $params3) => $Twice_content__$temp($scope, $params3?.[0]);\nconst $Twice_content__$temp = ($scope, $temp2) => $Twice_content__value($scope, $temp2.value);\nconst $Once_content__value__OR__call = /* @__PURE__ */_._or(4, $scope => _._return($scope, $_return($scope)));\nconst $Once_content__call = /* @__PURE__ */_._let(\"call/3\", $Once_content__value__OR__call);\nconst $Once_content__setup = /* @__PURE__ */_._child_setup($scope => $Once_content__call($scope, 1));\nconst $Once_content__value = /* @__PURE__ */_._const(\"value\", $Once_content__value__OR__call);\nconst $Once_content__$params = ($scope, $params2) => $Once_content__$temp($scope, $params2?.[0]);\nconst $Once_content__$temp = ($scope, $temp) => $Once_content__value($scope, $temp.value);\nconst $clickOnceCount = /* @__PURE__ */_._let(\"clickOnceCount/8\", $scope => {\n  $Once_content__value($scope[\"#childScope/0\"], $onClickOnce($scope));\n  _._text($scope[\"#text/3\"], $scope.clickOnceCount);\n});\nconst $clickTwiceCount = /* @__PURE__ */_._let(\"clickTwiceCount/10\", $scope => {\n  $Twice_content__value($scope[\"#childScope/4\"], $onClickTwice($scope));\n  _._text($scope[\"#text/7\"], $scope.clickTwiceCount);\n});\nexport function $setup($scope) {\n  _._var($scope, \"#childScope/0\", $onClickOnce2);\n  $Once_content__setup._($scope[\"#childScope/0\"], $scope);\n  _._var($scope, \"#childScope/4\", $onClickTwice2);\n  $Twice_content__setup._($scope[\"#childScope/4\"], $scope);\n  $clickOnceCount($scope, 0);\n  $clickTwiceCount($scope, 0);\n}\nconst $onClickOnce2__script = _._script(\"__tests__/template.marko_0_onClickOnce\", $scope => _._on($scope[\"#button/2\"], \"click\", $scope.onClickOnce));\nconst $onClickOnce2 = _._var_resume(\"__tests__/template.marko_0_onClickOnce/var\", /* @__PURE__ */_._const(\"onClickOnce\", $onClickOnce2__script));\nconst $onClickTwice2__script = _._script(\"__tests__/template.marko_0_onClickTwice\", $scope => _._on($scope[\"#button/6\"], \"click\", $scope.onClickTwice));\nconst $onClickTwice2 = _._var_resume(\"__tests__/template.marko_0_onClickTwice/var\", /* @__PURE__ */_._const(\"onClickTwice\", $onClickTwice2__script));\nfunction $_return2($scope) {\n  return function () {\n    if ($scope.call) {\n      $Twice_content__call($scope, $scope.call - 1);\n      $scope.value();\n    }\n  };\n}\nfunction $_return($scope) {\n  return function () {\n    if ($scope.call) {\n      $Once_content__call($scope, $scope.call - 1);\n      $scope.value();\n    }\n  };\n}\nfunction $onClickOnce($scope) {\n  return function () {\n    $clickOnceCount($scope, $scope.clickOnceCount + 1);\n  };\n}\nfunction $onClickTwice($scope) {\n  return function () {\n    $clickTwiceCount($scope, $scope.clickTwiceCount + 1);\n  };\n}\n_._resume(\"__tests__/template.marko_2/_return2\", $_return2);\n_._resume(\"__tests__/template.marko_1/_return\", $_return);\n_._resume(\"__tests__/template.marko_0/onClickOnce\", $onClickOnce);\n_._resume(\"__tests__/template.marko_0/onClickTwice\", $onClickTwice);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/returns-within-define-tag/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const Once = {\n    content: _._content(\"__tests__/template.marko_1_content\", ({\n      value\n    }) => {\n      const $scope1_id = _._scope_id();\n      _._scope_reason();\n      let call = 1;\n      const $return = _._resume(function () {\n        if (call) {\n          call--;\n          value();\n        }\n      }, \"__tests__/template.marko_1/_return\", $scope1_id);\n      _._scope($scope1_id, {\n        value,\n        call\n      }, \"__tests__/template.marko\", \"1:1\", {\n        value: \"1:15\",\n        call: \"2:7\"\n      });\n      _._resume_branch($scope1_id);\n      return $return;\n    })\n  };\n  let clickOnceCount = 0;\n  const $childScope = _._peek_scope_id();\n  let onClickOnce = Once.content({\n    value: _._resume(function () {\n      clickOnceCount++;\n    }, \"__tests__/template.marko_0/onClickOnce\", $scope0_id)\n  });\n  _._var($scope0_id, \"#scopeOffset/1\", $childScope, \"__tests__/template.marko_0_onClickOnce/var\");\n  _._html(`<button class=once>${_._escape(clickOnceCount)}${_._el_resume($scope0_id, \"#text/3\")}</button>${_._el_resume($scope0_id, \"#button/2\")}`);\n  const Twice = {\n    content: _._content(\"__tests__/template.marko_2_content\", ({\n      value\n    }) => {\n      const $scope2_id = _._scope_id();\n      _._scope_reason();\n      let call = 2;\n      const $return2 = _._resume(function () {\n        if (call) {\n          call--;\n          value();\n        }\n      }, \"__tests__/template.marko_2/_return2\", $scope2_id);\n      _._scope($scope2_id, {\n        value,\n        call\n      }, \"__tests__/template.marko\", \"15:1\", {\n        value: \"15:16\",\n        call: \"16:7\"\n      });\n      _._resume_branch($scope2_id);\n      return $return2;\n    })\n  };\n  let clickTwiceCount = 0;\n  const $childScope2 = _._peek_scope_id();\n  let onClickTwice = Twice.content({\n    value: _._resume(function () {\n      clickTwiceCount++;\n    }, \"__tests__/template.marko_0/onClickTwice\", $scope0_id)\n  });\n  _._var($scope0_id, \"#scopeOffset/5\", $childScope2, \"__tests__/template.marko_0_onClickTwice/var\");\n  _._html(`<button class=twice>${_._escape(clickTwiceCount)}${_._el_resume($scope0_id, \"#text/7\")}</button>${_._el_resume($scope0_id, \"#button/6\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_onClickTwice\");\n  _._script($scope0_id, \"__tests__/template.marko_0_onClickOnce\");\n  _._scope($scope0_id, {\n    clickOnceCount,\n    onClickOnce,\n    clickTwiceCount,\n    onClickTwice,\n    \"#childScope/0\": _._existing_scope($childScope),\n    \"#childScope/4\": _._existing_scope($childScope2)\n  }, \"__tests__/template.marko\", 0, {\n    clickOnceCount: \"9:5\",\n    onClickOnce: \"10:6\",\n    clickTwiceCount: \"23:5\",\n    onClickTwice: \"24:7\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/returns-within-define-tag/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button\n  class=\"once\"\n>\n  0\n</button>\n<button\n  class=\"twice\"\n>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.once\").click();\n```\n```html\n<button\n  class=\"once\"\n>\n  1\n</button>\n<button\n  class=\"twice\"\n>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.once\").click();\n```\n```html\n<button\n  class=\"once\"\n>\n  1\n</button>\n<button\n  class=\"twice\"\n>\n  0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.twice\").click();\n```\n```html\n<button\n  class=\"once\"\n>\n  1\n</button>\n<button\n  class=\"twice\"\n>\n  1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.twice\").click();\n```\n```html\n<button\n  class=\"once\"\n>\n  1\n</button>\n<button\n  class=\"twice\"\n>\n  2\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.twice\").click();\n```\n```html\n<button\n  class=\"once\"\n>\n  1\n</button>\n<button\n  class=\"twice\"\n>\n  2\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/returns-within-define-tag/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"once\"\n    >\n      0\n      <!--M_*1 #text/3-->\n    </button>\n    <!--M_*1 #button/2-->\n    <button\n      class=\"twice\"\n    >\n      0\n      <!--M_*1 #text/7-->\n    </button>\n    <!--M_*1 #button/6-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.a = {\n          \"#scopeOffset/1\": 3,\n          \"#scopeOffset/5\": 5,\n          clickOnceCount: 0,\n          onClickOnce: _.b = {\n            call: 1\n          },\n          clickTwiceCount: 0,\n          onClickTwice: _.c = {\n            call: 2\n          },\n          \"#childScope/0\": _.b,\n          \"#childScope/4\": _.c\n        }, _.b, 1, _.c], _.b.value = _._[\n          \"__tests__/template.marko_0/onClickOnce\"\n          ](_.a), _.a.onClickOnce = _._[\n          \"__tests__/template.marko_1/_return\"\n          ](_.b), _.b[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_onClickOnce/var\"\n          ](_.a), _.c.value = _._[\n          \"__tests__/template.marko_0/onClickTwice\"\n          ](_.a), _.a.onClickTwice = _._[\n          \"__tests__/template.marko_2/_return2\"\n          ](_.c), _.c[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_onClickTwice/var\"\n          ](_.a), _.d),\n        \"__tests__/template.marko_0_onClickTwice 1 __tests__/template.marko_0_onClickOnce 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.once\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"once\"\n    >\n      1\n      <!--M_*1 #text/3-->\n    </button>\n    <!--M_*1 #button/2-->\n    <button\n      class=\"twice\"\n    >\n      0\n      <!--M_*1 #text/7-->\n    </button>\n    <!--M_*1 #button/6-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.a = {\n          \"#scopeOffset/1\": 3,\n          \"#scopeOffset/5\": 5,\n          clickOnceCount: 0,\n          onClickOnce: _.b = {\n            call: 1\n          },\n          clickTwiceCount: 0,\n          onClickTwice: _.c = {\n            call: 2\n          },\n          \"#childScope/0\": _.b,\n          \"#childScope/4\": _.c\n        }, _.b, 1, _.c], _.b.value = _._[\n          \"__tests__/template.marko_0/onClickOnce\"\n          ](_.a), _.a.onClickOnce = _._[\n          \"__tests__/template.marko_1/_return\"\n          ](_.b), _.b[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_onClickOnce/var\"\n          ](_.a), _.c.value = _._[\n          \"__tests__/template.marko_0/onClickTwice\"\n          ](_.a), _.a.onClickTwice = _._[\n          \"__tests__/template.marko_2/_return2\"\n          ](_.c), _.c[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_onClickTwice/var\"\n          ](_.a), _.d),\n        \"__tests__/template.marko_0_onClickTwice 1 __tests__/template.marko_0_onClickOnce 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button0/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.once\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"once\"\n    >\n      1\n      <!--M_*1 #text/3-->\n    </button>\n    <!--M_*1 #button/2-->\n    <button\n      class=\"twice\"\n    >\n      0\n      <!--M_*1 #text/7-->\n    </button>\n    <!--M_*1 #button/6-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.a = {\n          \"#scopeOffset/1\": 3,\n          \"#scopeOffset/5\": 5,\n          clickOnceCount: 0,\n          onClickOnce: _.b = {\n            call: 1\n          },\n          clickTwiceCount: 0,\n          onClickTwice: _.c = {\n            call: 2\n          },\n          \"#childScope/0\": _.b,\n          \"#childScope/4\": _.c\n        }, _.b, 1, _.c], _.b.value = _._[\n          \"__tests__/template.marko_0/onClickOnce\"\n          ](_.a), _.a.onClickOnce = _._[\n          \"__tests__/template.marko_1/_return\"\n          ](_.b), _.b[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_onClickOnce/var\"\n          ](_.a), _.c.value = _._[\n          \"__tests__/template.marko_0/onClickTwice\"\n          ](_.a), _.a.onClickTwice = _._[\n          \"__tests__/template.marko_2/_return2\"\n          ](_.c), _.c[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_onClickTwice/var\"\n          ](_.a), _.d),\n        \"__tests__/template.marko_0_onClickTwice 1 __tests__/template.marko_0_onClickOnce 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button.twice\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"once\"\n    >\n      1\n      <!--M_*1 #text/3-->\n    </button>\n    <!--M_*1 #button/2-->\n    <button\n      class=\"twice\"\n    >\n      1\n      <!--M_*1 #text/7-->\n    </button>\n    <!--M_*1 #button/6-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.a = {\n          \"#scopeOffset/1\": 3,\n          \"#scopeOffset/5\": 5,\n          clickOnceCount: 0,\n          onClickOnce: _.b = {\n            call: 1\n          },\n          clickTwiceCount: 0,\n          onClickTwice: _.c = {\n            call: 2\n          },\n          \"#childScope/0\": _.b,\n          \"#childScope/4\": _.c\n        }, _.b, 1, _.c], _.b.value = _._[\n          \"__tests__/template.marko_0/onClickOnce\"\n          ](_.a), _.a.onClickOnce = _._[\n          \"__tests__/template.marko_1/_return\"\n          ](_.b), _.b[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_onClickOnce/var\"\n          ](_.a), _.c.value = _._[\n          \"__tests__/template.marko_0/onClickTwice\"\n          ](_.a), _.a.onClickTwice = _._[\n          \"__tests__/template.marko_2/_return2\"\n          ](_.c), _.c[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_onClickTwice/var\"\n          ](_.a), _.d),\n        \"__tests__/template.marko_0_onClickTwice 1 __tests__/template.marko_0_onClickOnce 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button1/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.twice\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"once\"\n    >\n      1\n      <!--M_*1 #text/3-->\n    </button>\n    <!--M_*1 #button/2-->\n    <button\n      class=\"twice\"\n    >\n      2\n      <!--M_*1 #text/7-->\n    </button>\n    <!--M_*1 #button/6-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.a = {\n          \"#scopeOffset/1\": 3,\n          \"#scopeOffset/5\": 5,\n          clickOnceCount: 0,\n          onClickOnce: _.b = {\n            call: 1\n          },\n          clickTwiceCount: 0,\n          onClickTwice: _.c = {\n            call: 2\n          },\n          \"#childScope/0\": _.b,\n          \"#childScope/4\": _.c\n        }, _.b, 1, _.c], _.b.value = _._[\n          \"__tests__/template.marko_0/onClickOnce\"\n          ](_.a), _.a.onClickOnce = _._[\n          \"__tests__/template.marko_1/_return\"\n          ](_.b), _.b[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_onClickOnce/var\"\n          ](_.a), _.c.value = _._[\n          \"__tests__/template.marko_0/onClickTwice\"\n          ](_.a), _.a.onClickTwice = _._[\n          \"__tests__/template.marko_2/_return2\"\n          ](_.c), _.c[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_onClickTwice/var\"\n          ](_.a), _.d),\n        \"__tests__/template.marko_0_onClickTwice 1 __tests__/template.marko_0_onClickOnce 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button1/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button.twice\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"once\"\n    >\n      1\n      <!--M_*1 #text/3-->\n    </button>\n    <!--M_*1 #button/2-->\n    <button\n      class=\"twice\"\n    >\n      2\n      <!--M_*1 #text/7-->\n    </button>\n    <!--M_*1 #button/6-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.a = {\n          \"#scopeOffset/1\": 3,\n          \"#scopeOffset/5\": 5,\n          clickOnceCount: 0,\n          onClickOnce: _.b = {\n            call: 1\n          },\n          clickTwiceCount: 0,\n          onClickTwice: _.c = {\n            call: 2\n          },\n          \"#childScope/0\": _.b,\n          \"#childScope/4\": _.c\n        }, _.b, 1, _.c], _.b.value = _._[\n          \"__tests__/template.marko_0/onClickOnce\"\n          ](_.a), _.a.onClickOnce = _._[\n          \"__tests__/template.marko_1/_return\"\n          ](_.b), _.b[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_onClickOnce/var\"\n          ](_.a), _.c.value = _._[\n          \"__tests__/template.marko_0/onClickTwice\"\n          ](_.a), _.a.onClickTwice = _._[\n          \"__tests__/template.marko_2/_return2\"\n          ](_.c), _.c[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_onClickTwice/var\"\n          ](_.a), _.d),\n        \"__tests__/template.marko_0_onClickTwice 1 __tests__/template.marko_0_onClickOnce 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/returns-within-define-tag/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button\n  class=\"once\"\n>\n  0\n</button>\n<button\n  class=\"twice\"\n>\n  0\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/returns-within-define-tag/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button class=once>0<!--M_*1 #text/3--></button><!--M_*1 #button/2--><button class=twice>0<!--M_*1 #text/7--></button><!--M_*1 #button/6--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.d=[0,_.a={\"#scopeOffset/1\":3,\"#scopeOffset/5\":5,clickOnceCount:0,onClickOnce:_.b={call:1},clickTwiceCount:0,onClickTwice:_.c={call:2},\"#childScope/0\":_.b,\"#childScope/4\":_.c},_.b,1,_.c],_.b.value=_._[\"__tests__/template.marko_0/onClickOnce\"](_.a),_.a.onClickOnce=_._[\"__tests__/template.marko_1/_return\"](_.b),_.b[\"#TagVariable\"]=_._[\"__tests__/template.marko_0_onClickOnce/var\"](_.a),_.c.value=_._[\"__tests__/template.marko_0/onClickTwice\"](_.a),_.a.onClickTwice=_._[\"__tests__/template.marko_2/_return2\"](_.c),_.c[\"#TagVariable\"]=_._[\"__tests__/template.marko_0_onClickTwice/var\"](_.a),_.d),\"__tests__/template.marko_0_onClickTwice 1 __tests__/template.marko_0_onClickOnce 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"once\"\n    >\n      0\n      <!--M_*1 #text/3-->\n    </button>\n    <!--M_*1 #button/2-->\n    <button\n      class=\"twice\"\n    >\n      0\n      <!--M_*1 #text/7-->\n    </button>\n    <!--M_*1 #button/6-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.d = [0, _.a = {\n          \"#scopeOffset/1\": 3,\n          \"#scopeOffset/5\": 5,\n          clickOnceCount: 0,\n          onClickOnce: _.b = {\n            call: 1\n          },\n          clickTwiceCount: 0,\n          onClickTwice: _.c = {\n            call: 2\n          },\n          \"#childScope/0\": _.b,\n          \"#childScope/4\": _.c\n        }, _.b, 1, _.c], _.b.value = _._[\n          \"__tests__/template.marko_0/onClickOnce\"\n          ](_.a), _.a.onClickOnce = _._[\n          \"__tests__/template.marko_1/_return\"\n          ](_.b), _.b[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_onClickOnce/var\"\n          ](_.a), _.c.value = _._[\n          \"__tests__/template.marko_0/onClickTwice\"\n          ](_.a), _.a.onClickTwice = _._[\n          \"__tests__/template.marko_2/_return2\"\n          ](_.c), _.c[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_onClickTwice/var\"\n          ](_.a), _.d),\n        \"__tests__/template.marko_0_onClickTwice 1 __tests__/template.marko_0_onClickOnce 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button0\nINSERT html/body/button0/#text\nINSERT html/body/button0/#comment\nINSERT html/body/#comment0\nINSERT html/body/button1\nINSERT html/body/button1/#text\nINSERT html/body/button1/#comment\nINSERT html/body/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/returns-within-define-tag/template.marko",
    "content": "define/Once|{ value }|\n  let/call = 1\n  return() {\n    if (call) {\n      call--;\n      value();\n    }\n  }\nlet/clickOnceCount = 0;\nOnce/onClickOnce() {\n  clickOnceCount++;\n}\nbutton.once onClick=onClickOnce -- ${clickOnceCount}\n\ndefine/Twice|{ value }|\n  let/call = 2\n  return() {\n    if (call) {\n      call--;\n      value();\n    }\n  }\nlet/clickTwiceCount = 0;\nTwice/onClickTwice() {\n  clickTwiceCount++;\n}\nbutton.twice onClick=onClickTwice -- ${clickTwiceCount}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/returns-within-define-tag/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nconst clickOnce = (container: Element) => {\n  container.querySelector<HTMLButtonElement>(\"button.once\")!.click();\n};\n\nconst clickTwice = (container: Element) => {\n  container.querySelector<HTMLButtonElement>(\"button.twice\")!.click();\n};\n\nexport const config: TestConfig = {\n  steps: [{}, clickOnce, clickOnce, clickTwice, clickTwice, clickTwice],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/same-source-alias-pattern-and-identifier/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/same-source-alias-pattern-and-identifier/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"a\":{\"b\":1}}`\n\n```html\n<button>\n  1 1\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/same-source-alias-pattern-and-identifier/__snapshots__/csr.expected.md",
    "content": "# Render `{\"a\":{\"b\":1}}`\n\n```html\n<button>\n  1 1\n</button>\n```\n\n# Mutations\n```\nINSERT button\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/same-source-alias-pattern-and-identifier/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/same-source-alias-pattern-and-identifier/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button><!> <!></button>\";\nexport const $walks = /* next(1), replace, over(2), replace, out(1) */\"D%c%l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $b = ($scope, b) => {\n  _._text($scope[\"#text/0\"], b);\n  $c($scope, b);\n};\nconst $c = ($scope, b) => _._text($scope[\"#text/1\"], b);\nexport const $input = ($scope, input) => $a2($scope, input.a);\nexport const $a2 = ($scope, $a) => $b($scope, $a.b);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/same-source-alias-pattern-and-identifier/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    a: {\n      b\n    }\n  } = input;\n  const {\n    a\n  } = input;\n  const {\n    b: c\n  } = a;\n  _._html(`<button>${_._escape(b)}${_._el_resume($scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.a.b */0))} ${_._sep(_._serialize_guard($scope0_reason, /* input.a.b */0))}${_._escape(c)}${_._el_resume($scope0_id, \"#text/1\", _._serialize_guard($scope0_reason, /* input.a.b */0))}</button>`);\n  _._serialize_if($scope0_reason, /* input.a.b */0) && _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/same-source-alias-pattern-and-identifier/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"a\":{\"b\":1}}`\n\n```html\n<button>\n  1 1\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/same-source-alias-pattern-and-identifier/__snapshots__/resume.expected.md",
    "content": "# Render `{\"a\":{\"b\":1}}`\n\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1 1\n    </button>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/same-source-alias-pattern-and-identifier/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  1 1\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/same-source-alias-pattern-and-identifier/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>1 1</button>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1 1\n    </button>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/same-source-alias-pattern-and-identifier/template.marko",
    "content": "<const/{ a: { b } }=input/>\n<const/{ a }=input/>\n<const/{ b: c }=a/>\n<button>\n  ${b} ${c}\n</button>\n\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/same-source-alias-pattern-and-identifier/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [\n    {\n      a: {\n        b: 1,\n      },\n    },\n  ],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/same-source-non-alias/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$count__script\": \"m\",\n      \"$$count\": \"a\",\n      \"$$a\": \"r\",\n      \"$$b\": \"i\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/same-source-non-alias/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0 0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1 1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2 2\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/same-source-non-alias/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  0 0\n</button>\n```\n\n# Mutations\n```\nINSERT button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1 1\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text0 \"0\" => \"1\"\nUPDATE button/#text2 \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2 2\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text0 \"1\" => \"2\"\nUPDATE button/#text2 \"1\" => \"2\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/same-source-non-alias/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 183 (min) 134 (brotli)\nconst $count__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $count($scope, $scope.d + 1);\n    }),\n  ),\n  $count = _._let(3, ($scope) => {\n    ((($scope, $pattern) => {\n      $a($scope, $pattern.a);\n    })($scope, { a: $scope.d }),\n      $count__script($scope));\n  }),\n  $a = ($scope, a) => {\n    (_._text($scope.b, a), $b($scope, a));\n  },\n  $b = ($scope, a) => _._text($scope.c, a);\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/same-source-non-alias/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button><!> <!></button>\";\nexport const $walks = /* get, next(1), replace, over(2), replace, out(1) */\" D%c%l\";\nfunction createWrapper(a) {\n  return {\n    a\n  };\n}\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $pattern2 = ($scope, $pattern) => $a($scope, $pattern.a);\nconst $count__script = _._script(\"__tests__/template.marko_0_count\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $count($scope, $scope.count + 1);\n}));\nconst $count = /* @__PURE__ */_._let(\"count/3\", $scope => {\n  $pattern2($scope, createWrapper($scope.count));\n  $count__script($scope);\n});\nexport function $setup($scope) {\n  $count($scope, 0);\n}\nconst $a = ($scope, a) => {\n  _._text($scope[\"#text/1\"], a);\n  $b($scope, a);\n};\nconst $b = ($scope, a) => _._text($scope[\"#text/2\"], a);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/same-source-non-alias/__snapshots__/html.expected/template.js",
    "content": "function createWrapper(a) {\n  return {\n    a\n  };\n}\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let count = 0;\n  const {\n    a,\n    a: b\n  } = createWrapper(count);\n  _._html(`<button>${_._escape(a)}${_._el_resume($scope0_id, \"#text/1\")} <!>${_._escape(b)}${_._el_resume($scope0_id, \"#text/2\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_count\");\n  _._scope($scope0_id, {\n    count\n  }, \"__tests__/template.marko\", 0, {\n    count: \"5:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/same-source-non-alias/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  0 0\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1 1\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2 2\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/same-source-non-alias/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*1 #text/1-->\n       \n      <!---->\n      0\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*1 #text/1-->\n       \n      <!---->\n      1\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text0 \"0\" => \"1\"\nUPDATE html/body/button/#text2 \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      2\n      <!--M_*1 #text/1-->\n       \n      <!---->\n      2\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text0 \"1\" => \"2\"\nUPDATE html/body/button/#text2 \"1\" => \"2\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/same-source-non-alias/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  0 0\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/same-source-non-alias/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>0<!--M_*1 #text/1--> <!>0<!--M_*1 #text/2--></button><!--M_*1 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{count:0}]),\"__tests__/template.marko_0_count 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      0\n      <!--M_*1 #text/1-->\n       \n      <!---->\n      0\n      <!--M_*1 #text/2-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text0\nINSERT html/body/button/#comment0\nINSERT html/body/button/#text1\nINSERT html/body/button/#comment1\nINSERT html/body/button/#text2\nINSERT html/body/button/#comment2\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/same-source-non-alias/template.marko",
    "content": "static function createWrapper(a: string) {\n  return { a };\n}\n\n<let/count = 0/>\n<const/{ a, a: b } = createWrapper(count)/>\n\n<button onClick() { count++ }>\n  ${a} ${b}\n</button>\n\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/same-source-non-alias/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-no-references/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"o\",\n      \"$init\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-no-references/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"foo\"\n>\n  foo\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-no-references/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"foo\"\n>\n  foo\n</div>\n```\n\n# Mutations\n```\nINSERT div\nINSERT div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-no-references/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 126 (min) 87 (brotli)\n(_._script(\"a0\", ($scope) => {\n  {\n    const el = document.getElementById(\"foo\");\n    ((el.innerHTML = \"foo\"),\n      (_.$signal($scope, 0).onabort = () => (el.innerHTML = \"\")));\n  }\n}),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-no-references/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div id=foo></div>\";\nexport const $walks = /* over(1) */\"b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => {\n  {\n    const el = document.getElementById(\"foo\");\n    el.innerHTML = \"foo\";\n    _.$signal($scope, 0).onabort = () => el.innerHTML = \"\";\n  }\n});\nexport function $setup($scope) {\n  _.$signalReset($scope, 0);\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-no-references/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div id=foo></div>\");\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-no-references/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"foo\"\n>\n  foo\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-no-references/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"foo\"\n    >\n      foo\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-no-references/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div\n  id=\"foo\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-no-references/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div id=foo></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"foo\"\n    />\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-no-references/template.marko",
    "content": "<div#foo/>\n<script>\n  const el = document.getElementById(\"foo\")!;\n  el.innerHTML = \"foo\";\n  $signal.onabort = () => el.innerHTML = \"\";\n</script>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-tag/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-tag/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"ref\"\n>\n  1\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-tag/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"ref\"\n>\n  1\n</div>\n```\n\n# Mutations\n```\nINSERT div\nREMOVE #text in div\nINSERT div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-tag/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 70 (min) 69 (brotli)\n(_._script(\n  \"a0\",\n  ($scope) => (document.getElementById(\"ref\").textContent = $scope.a),\n),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-tag/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div id=ref>0</div>\";\nexport const $walks = /* over(1) */\"b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $x__script = _._script(\"__tests__/template.marko_0_x\", $scope => (document.getElementById(\"ref\").textContent = $scope.x));\nconst $x = /* @__PURE__ */_._let(\"x/0\", $x__script);\nexport function $setup($scope) {\n  $x($scope, 1);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-tag/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let x = 1;\n  _._html(\"<div id=ref>0</div>\");\n  _._script($scope0_id, \"__tests__/template.marko_0_x\");\n  _._scope($scope0_id, {\n    x\n  }, \"__tests__/template.marko\", 0, {\n    x: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-tag/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"ref\"\n>\n  1\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-tag/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"ref\"\n    >\n      1\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 1\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #text in html/body/div\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-tag/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div\n  id=\"ref\"\n>\n  0\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-tag/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div id=ref>0</div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{x:1}]),\"__tests__/template.marko_0_x 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"ref\"\n    >\n      0\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          x: 1\n        }]),\n        \"__tests__/template.marko_0_x 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-tag/template.marko",
    "content": "<let/x = 1 />\n<script>\n  document.getElementById(\"ref\").textContent = x;\n</script>\n<div id=\"ref\">0</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-tag-empty/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-tag-empty/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-tag-empty/__snapshots__/csr.expected.md",
    "content": "# Render\n# Mutations\n```\nINSERT #text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-tag-empty/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-tag-empty/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"\";\nexport const $walks = \"\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-tag-empty/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-tag-empty/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-tag-empty/__snapshots__/resume.expected.md",
    "content": "# Render\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-tag-empty/__snapshots__/ssr-sanitized.expected.md",
    "content": ""
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-tag-empty/__snapshots__/ssr.expected.md",
    "content": ""
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-tag-empty/template.marko",
    "content": "<script>\n\n</script>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-tag-value-no-scope/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"e\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-tag-value-no-scope/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  undefined\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-tag-value-no-scope/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  undefined\n</div>\n```\n\n# Mutations\n```\nINSERT div\nINSERT div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-tag-value-no-scope/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 190 (min) 121 (brotli)\n(_._script(\"a1\", ($scope) => $scope.b()),\n  _._resume(\"a0\", function ($scope) {\n    return function (arg) {\n      if (arg)\n        throw new Error(\n          `Expected no argument to be passed, but received \"${typeof arg}\".`,\n        );\n      $scope.a.textContent = typeof arg;\n    };\n  }),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-tag-value-no-scope/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* get, over(1) */\" b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $setText2__script = _._script(\"__tests__/template.marko_0_setText\", $scope => $scope.setText());\nconst $setText2 = /* @__PURE__ */_._const(\"setText\", $setText2__script);\nexport function $setup($scope) {\n  $setText2($scope, $setText($scope));\n}\nfunction $setText($scope) {\n  return function (arg) {\n    if (arg) {\n      throw new Error(`Expected no argument to be passed, but received \"${typeof arg}\".`);\n    }\n    _._el_read($scope[\"#div/0\"]).textContent = typeof arg;\n  };\n}\n_._resume(\"__tests__/template.marko_0/setText\", $setText);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-tag-value-no-scope/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const setText = _._resume(function (arg) {\n    if (arg) {\n      throw new Error(`Expected no argument to be passed, but received \"${typeof arg}\".`);\n    }\n    (el => el())(_._el_read_error).textContent = typeof arg;\n  }, \"__tests__/template.marko_0/setText\", $scope0_id);\n  _._html(`<div></div>${_._el_resume($scope0_id, \"#div/0\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_setText\");\n  _._scope($scope0_id, {\n    setText\n  }, \"__tests__/template.marko\", 0, {\n    setText: \"2:8\"\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-tag-value-no-scope/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  undefined\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-tag-value-no-scope/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      undefined\n    </div>\n    <!--M_*1 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {}], _.a.setText = _._[\n          \"__tests__/template.marko_0/setText\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_setText 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-tag-value-no-scope/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-tag-value-no-scope/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div></div><!--M_*1 #div/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={}],_.a.setText=_._[\"__tests__/template.marko_0/setText\"](_.a),_.b),\"__tests__/template.marko_0_setText 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*1 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {}], _.a.setText = _._[\n          \"__tests__/template.marko_0/setText\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0_setText 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/script-tag-value-no-scope/template.marko",
    "content": "<div/el/>\n<const/setText(arg) {\n  if (arg) {\n    throw new Error(`Expected no argument to be passed, but received \"${typeof arg}\".`);\n  }\n  el().textContent = typeof arg\n}>\n<script=setText/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/self-reference-custom-tag/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/self-reference-custom-tag/template.marko:6:24\n      4 | </define>\n      5 |\n    > 6 | <Child/foo onClick() { foo().innerHTML = 'clicked' } />\n        |                        ^^^ Tag variable circular references are not supported.\n      7 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/self-reference-custom-tag/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/self-reference-custom-tag/template.marko:6:24\n      4 | </define>\n      5 |\n    > 6 | <Child/foo onClick() { foo().innerHTML = 'clicked' } />\n        |                        ^^^ Tag variable circular references are not supported.\n      7 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/self-reference-custom-tag/template.marko",
    "content": "<define/Child|input|>\n  <button/$el onClick=input.onClick />\n  <return=$el >\n</define>\n\n<Child/foo onClick() { foo().innerHTML = 'clicked' } />\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/self-reference-custom-tag/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/self-reference-error/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/self-reference-error/template.marko:1:10\n    > 1 | <const/x=x + 1>\n        |          ^ Tag variable circular references are not supported.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/self-reference-error/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/self-reference-error/template.marko:1:10\n    > 1 | <const/x=x + 1>\n        |          ^ Tag variable circular references are not supported.\n      2 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/self-reference-error/template.marko",
    "content": "<const/x=x + 1>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/self-reference-error/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/self-reference-function-error/__snapshots__/dom.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/self-reference-function-error/template.marko:4:61\n      2 | <button onClick() { items = [...items, items.length] }/>\n      3 |\n    > 4 | <const/sum = (i = 0) => (i >= items.length ? 0 : items[i] + sum(i + 1))>\n        |                                                             ^^^ Tag variable circular references are not supported.\n      5 | <div>${sum()}</div>\n      6 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/self-reference-function-error/__snapshots__/html.expected/template.error.txt",
    "content": "\n    at packages/runtime-tags/src/__tests__/fixtures/self-reference-function-error/template.marko:4:61\n      2 | <button onClick() { items = [...items, items.length] }/>\n      3 |\n    > 4 | <const/sum = (i = 0) => (i >= items.length ? 0 : items[i] + sum(i + 1))>\n        |                                                             ^^^ Tag variable circular references are not supported.\n      5 | <div>${sum()}</div>\n      6 |"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/self-reference-function-error/template.marko",
    "content": "<let/items=[0, 1, 2]/>\n<button onClick() { items = [...items, items.length] }/>\n\n<const/sum = (i = 0) => (i >= items.length ? 0 : items[i] + sum(i + 1))>\n<div>${sum()}</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/self-reference-function-error/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  error_compiler: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/self-reference-function-named/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$items__script\": \"n\",\n      \"$$items\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/self-reference-function-named/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button />\n<div>\n  3\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<div>\n  6\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<div>\n  10\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<div>\n  15\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/self-reference-function-named/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button />\n<div>\n  3\n</div>\n```\n\n# Mutations\n```\nINSERT button, div\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<div>\n  6\n</div>\n```\n\n# Mutations\n```\nUPDATE div/#text \"3\" => \"6\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<div>\n  10\n</div>\n```\n\n# Mutations\n```\nUPDATE div/#text \"6\" => \"10\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<div>\n  15\n</div>\n```\n\n# Mutations\n```\nUPDATE div/#text \"10\" => \"15\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/self-reference-function-named/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 196 (min) 145 (brotli)\nconst $items__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $items($scope, [...$scope.c, $scope.c?.length]);\n    }),\n  ),\n  $items = _._let(2, ($scope) => {\n    ((($scope, sum) => {\n      _._text($scope.b, sum());\n    })($scope, function sum(i = 0) {\n      return i >= $scope.c?.length ? 0 : $scope.c[i] + sum(i + 1);\n    }),\n      $items__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/self-reference-function-named/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button></button><div> </div>\";\nexport const $walks = /* get, over(1), next(1), get, out(1) */\" bD l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $sum = ($scope, sum) => _._text($scope[\"#text/1\"], sum());\nconst $items__script = _._script(\"__tests__/template.marko_0_items\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $items($scope, [...$scope.items, $scope.items?.length]);\n}));\nconst $items = /* @__PURE__ */_._let(\"items/2\", $scope => {\n  $sum($scope, function sum(i = 0) {\n    return i >= $scope.items?.length ? 0 : $scope.items[i] + sum(i + 1);\n  });\n  $items__script($scope);\n});\nexport function $setup($scope) {\n  $items($scope, [0, 1, 2]);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/self-reference-function-named/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let items = [0, 1, 2];\n  const sum = function sum(i = 0) {\n    return i >= items.length ? 0 : items[i] + sum(i + 1);\n  };\n  _._html(`<button></button>${_._el_resume($scope0_id, \"#button/0\")}<div>${_._escape(sum())}${_._el_resume($scope0_id, \"#text/1\")}</div>`);\n  _._script($scope0_id, \"__tests__/template.marko_0_items\");\n  _._scope($scope0_id, {\n    items\n  }, \"__tests__/template.marko\", 0, {\n    items: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/self-reference-function-named/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button />\n<div>\n  3\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<div>\n  6\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<div>\n  10\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<div>\n  15\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/self-reference-function-named/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <div>\n      3\n      <!--M_*1 #text/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          items: [0, 1, 2]\n        }]),\n        \"__tests__/template.marko_0_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <div>\n      6\n      <!--M_*1 #text/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          items: [0, 1, 2]\n        }]),\n        \"__tests__/template.marko_0_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/#text \"3\" => \"6\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <div>\n      10\n      <!--M_*1 #text/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          items: [0, 1, 2]\n        }]),\n        \"__tests__/template.marko_0_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/#text \"6\" => \"10\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <div>\n      15\n      <!--M_*1 #text/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          items: [0, 1, 2]\n        }]),\n        \"__tests__/template.marko_0_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/#text \"10\" => \"15\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/self-reference-function-named/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button />\n<div>\n  3\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/self-reference-function-named/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button></button><!--M_*1 #button/0--><div>3<!--M_*1 #text/1--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{items:[0,1,2]}]),\"__tests__/template.marko_0_items 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <div>\n      3\n      <!--M_*1 #text/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          items: [0, 1, 2]\n        }]),\n        \"__tests__/template.marko_0_items 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/#comment\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/div/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/self-reference-function-named/template.marko",
    "content": "<let/items=[0, 1, 2]/>\n<button onClick() { items = [...items, items.length] }/>\n\n<const/sum = function sum(i = 0) {\n  return i >= items.length ? 0 : items[i] + sum(i + 1)\n}>\n<div>${sum()}</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/self-reference-function-named/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/self-reference-native-tag/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"m\",\n      \"$init\": \"o\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/self-reference-native-tag/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  clicked\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/self-reference-native-tag/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button />\n```\n\n# Mutations\n```\nINSERT button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  clicked\n</button>\n```\n\n# Mutations\n```\nINSERT button/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/self-reference-native-tag/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 78 (min) 71 (brotli)\n(_._script(\"a0\", ($scope) =>\n  _._on($scope.a, \"click\", function () {\n    $scope.a.innerHTML = \"clicked\";\n  }),\n),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/self-reference-native-tag/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button></button>\";\nexport const $walks = /* get, over(1) */\" b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  _._el_read($scope[\"#button/0\"]).innerHTML = 'clicked';\n}));\nexport const $setup = $setup__script;\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/self-reference-native-tag/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<button></button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/self-reference-native-tag/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  clicked\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/self-reference-native-tag/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      clicked\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/button/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/self-reference-native-tag/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/self-reference-native-tag/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button></button><!--M_*1 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0]),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/self-reference-native-tag/template.marko",
    "content": "<button/$el onClick() { $el().innerHTML = 'clicked' } />"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/self-reference-native-tag/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/serialize-promise/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/serialize-promise/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"ref\"\n>\n  0\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div\n  id=\"ref\"\n>\n  hello\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/serialize-promise/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"ref\"\n>\n  0\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render ASYNC\n```html\n<div\n  id=\"ref\"\n>\n  hello\n</div>\n```\n\n# Mutations\n```\nREMOVE #text in div\nINSERT div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/serialize-promise/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 91 (min) 70 (brotli)\n(_._script(\"a0\", ($scope) =>\n  (async () => {\n    document.getElementById(\"ref\").textContent = await $scope.a;\n  })(),\n),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/serialize-promise/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div id=ref>0</div>\";\nexport const $walks = /* over(1) */\"b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $promise__script = _._script(\"__tests__/template.marko_0_promise\", $scope => (async () => {\n  document.getElementById(\"ref\").textContent = await $scope.promise;\n})());\nconst $promise = /* @__PURE__ */_._const(\"promise\", $promise__script);\nexport function $setup($scope) {\n  $promise($scope, Promise.resolve(\"hello\"));\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/serialize-promise/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const promise = Promise.resolve(\"hello\");\n  _._html(\"<div id=ref>0</div>\");\n  _._script($scope0_id, \"__tests__/template.marko_0_promise\");\n  _._scope($scope0_id, {\n    promise\n  }, \"__tests__/template.marko\", 0, {\n    promise: \"1:8\"\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/serialize-promise/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"ref\"\n>\n  0\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/serialize-promise/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"ref\"\n    >\n      0\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0,\n        {\n          promise: (p =&gt; p = new Promise((f, r) =&gt; _.a = {\n            f,\n            r(e)\n            {\n              p.catch(_ =&gt; 0);\n              r(e)\n            }\n          }))()\n        }]),\n        \"__tests__/template.marko_0_promise 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/serialize-promise/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div\n  id=\"ref\"\n>\n  0\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/serialize-promise/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div id=ref>0</div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,{promise:(p=>p=new Promise((f,r)=>_.a={f,r(e){p.catch(_=>0);r(e)}}))()}]),\"__tests__/template.marko_0_promise 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"ref\"\n    >\n      0\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0,\n        {\n          promise: (p =&gt; p = new Promise((f, r) =&gt; _.a = {\n            f,\n            r(e)\n            {\n              p.catch(_ =&gt; 0);\n              r(e)\n            }\n          }))()\n        }]),\n        \"__tests__/template.marko_0_promise 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/serialize-promise/template.marko",
    "content": "<const/promise = Promise.resolve(\"hello\")/>\n<script>\n  document.getElementById(\"ref\").textContent = await promise;\n</script>\n<div id=\"ref\">0</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/serialize-promise/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{}, wait],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/server-client/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$init\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/server-client/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <span>\n    2\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/server-client/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  <span>\n    2\n  </span>\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/server-client/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 4 (min) 8 (brotli)\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/server-client/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div><span> </span></div>\";\nexport const $walks = /* next(2), get, out(2) */\"E m\";\nvar server_x;\nconst client_x = 2;\nconst x = typeof server_x === \"undefined\" ? client_x : server_x;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport function $setup($scope) {\n  _._text($scope[\"#text/0\"], x);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/server-client/__snapshots__/html.expected/template.js",
    "content": "const server_x = 1;\nvar client_x;\nconst x = typeof server_x === \"undefined\" ? client_x : server_x;\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div><span>${_._escape(x)}</span></div>`);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/server-client/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <span>\n    1\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/server-client/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <span>\n        1\n      </span>\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/server-client/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  <span>\n    1\n  </span>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/server-client/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><span>1</span></div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <span>\n        1\n      </span>\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/span\nINSERT html/body/div/span/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/server-client/template.marko",
    "content": "server const server_x = 1;\nclient const client_x = 2;\nstatic const x = typeof server_x === \"undefined\" ? client_x : server_x;\n<div>\n  <span>\n    ${x}\n  </span>\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/server-client/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  skip_equivalent: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/shadow-same-scope/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"c\",\n      \"$$count4__script\": \"i\",\n      \"$$count4\": \"o\",\n      \"$$count5__script\": \"_\",\n      \"$$count5\": \"n\",\n      \"$$count6__script\": \"r\",\n      \"$$count6\": \"e\",\n      \"$$count7__script\": \"a\",\n      \"$$count7\": \"l\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/shadow-same-scope/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <button>\n    0\n  </button>\n  <div>\n    <button>\n      0\n    </button>\n    <div>\n      <button>\n        0\n      </button>\n    </div>\n  </div>\n</div>\n<div>\n  <button>\n    0\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonNum++].click();\n```\n```html\n<div>\n  <button>\n    1\n  </button>\n  <div>\n    <button>\n      0\n    </button>\n    <div>\n      <button>\n        0\n      </button>\n    </div>\n  </div>\n</div>\n<div>\n  <button>\n    0\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonNum++].click();\n```\n```html\n<div>\n  <button>\n    1\n  </button>\n  <div>\n    <button>\n      1\n    </button>\n    <div>\n      <button>\n        0\n      </button>\n    </div>\n  </div>\n</div>\n<div>\n  <button>\n    0\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonNum++].click();\n```\n```html\n<div>\n  <button>\n    1\n  </button>\n  <div>\n    <button>\n      1\n    </button>\n    <div>\n      <button>\n        1\n      </button>\n    </div>\n  </div>\n</div>\n<div>\n  <button>\n    0\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonNum++].click();\n```\n```html\n<div>\n  <button>\n    1\n  </button>\n  <div>\n    <button>\n      1\n    </button>\n    <div>\n      <button>\n        1\n      </button>\n    </div>\n  </div>\n</div>\n<div>\n  <button>\n    1\n  </button>\n</div>\n```\n\n\n# Render\n```js\nbuttonNum = 0;\n```\n```html\n<div>\n  <button>\n    1\n  </button>\n  <div>\n    <button>\n      1\n    </button>\n    <div>\n      <button>\n        1\n      </button>\n    </div>\n  </div>\n</div>\n<div>\n  <button>\n    1\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/shadow-same-scope/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  <button>\n    0\n  </button>\n  <div>\n    <button>\n      0\n    </button>\n    <div>\n      <button>\n        0\n      </button>\n    </div>\n  </div>\n</div>\n<div>\n  <button>\n    0\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT div0, div1\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonNum++].click();\n```\n```html\n<div>\n  <button>\n    1\n  </button>\n  <div>\n    <button>\n      0\n    </button>\n    <div>\n      <button>\n        0\n      </button>\n    </div>\n  </div>\n</div>\n<div>\n  <button>\n    0\n  </button>\n</div>\n```\n\n# Mutations\n```\nUPDATE div0/button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonNum++].click();\n```\n```html\n<div>\n  <button>\n    1\n  </button>\n  <div>\n    <button>\n      1\n    </button>\n    <div>\n      <button>\n        0\n      </button>\n    </div>\n  </div>\n</div>\n<div>\n  <button>\n    0\n  </button>\n</div>\n```\n\n# Mutations\n```\nUPDATE div0/div/button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonNum++].click();\n```\n```html\n<div>\n  <button>\n    1\n  </button>\n  <div>\n    <button>\n      1\n    </button>\n    <div>\n      <button>\n        1\n      </button>\n    </div>\n  </div>\n</div>\n<div>\n  <button>\n    0\n  </button>\n</div>\n```\n\n# Mutations\n```\nUPDATE div0/div/div/button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonNum++].click();\n```\n```html\n<div>\n  <button>\n    1\n  </button>\n  <div>\n    <button>\n      1\n    </button>\n    <div>\n      <button>\n        1\n      </button>\n    </div>\n  </div>\n</div>\n<div>\n  <button>\n    1\n  </button>\n</div>\n```\n\n# Mutations\n```\nUPDATE div1/button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\nbuttonNum = 0;\n```\n```html\n<div>\n  <button>\n    1\n  </button>\n  <div>\n    <button>\n      1\n    </button>\n    <div>\n      <button>\n        1\n      </button>\n    </div>\n  </div>\n</div>\n<div>\n  <button>\n    1\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/shadow-same-scope/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 420 (min) 153 (brotli)\nconst $count4__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $count4($scope, $scope.i + 1);\n    }),\n  ),\n  $count4 = _._let(8, ($scope) => {\n    (_._text($scope.b, $scope.i), $count4__script($scope));\n  }),\n  $count5__script = _._script(\"a1\", ($scope) =>\n    _._on($scope.c, \"click\", function () {\n      $count5($scope, $scope.j + 1);\n    }),\n  ),\n  $count5 = _._let(9, ($scope) => {\n    (_._text($scope.d, $scope.j), $count5__script($scope));\n  }),\n  $count6__script = _._script(\"a2\", ($scope) =>\n    _._on($scope.e, \"click\", function () {\n      $count6($scope, $scope.k + 1);\n    }),\n  ),\n  $count6 = _._let(10, ($scope) => {\n    (_._text($scope.f, $scope.k), $count6__script($scope));\n  }),\n  $count7__script = _._script(\"a3\", ($scope) =>\n    _._on($scope.g, \"click\", function () {\n      $count7($scope, $scope.l + 1);\n    }),\n  ),\n  $count7 = _._let(11, ($scope) => {\n    (_._text($scope.h, $scope.l), $count7__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/shadow-same-scope/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div><button> </button><div><button> </button><div><button> </button></div></div></div><div><button> </button></div>\";\nexport const $walks = /* next(1), get, next(1), get, out(1), next(1), get, next(1), get, out(1), next(1), get, next(1), get, out(4), next(1), get, next(1), get, out(2) */\"D D lD D lD D oD D m\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $count4__script = _._script(\"__tests__/template.marko_0_count\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $count4($scope, $scope.count + 1);\n}));\nconst $count4 = /* @__PURE__ */_._let(\"count/8\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.count);\n  $count4__script($scope);\n});\nconst $count5__script = _._script(\"__tests__/template.marko_0_$count\", $scope => _._on($scope[\"#button/2\"], \"click\", function () {\n  $count5($scope, $scope.$count + 1);\n}));\nconst $count5 = /* @__PURE__ */_._let(\"$count/9\", $scope => {\n  _._text($scope[\"#text/3\"], $scope.$count);\n  $count5__script($scope);\n});\nconst $count6__script = _._script(\"__tests__/template.marko_0_$count2\", $scope => _._on($scope[\"#button/4\"], \"click\", function () {\n  $count6($scope, $scope.$count2 + 1);\n}));\nconst $count6 = /* @__PURE__ */_._let(\"$count2/10\", $scope => {\n  _._text($scope[\"#text/5\"], $scope.$count2);\n  $count6__script($scope);\n});\nconst $count7__script = _._script(\"__tests__/template.marko_0_$count3\", $scope => _._on($scope[\"#button/6\"], \"click\", function () {\n  $count7($scope, $scope.$count3 + 1);\n}));\nconst $count7 = /* @__PURE__ */_._let(\"$count3/11\", $scope => {\n  _._text($scope[\"#text/7\"], $scope.$count3);\n  $count7__script($scope);\n});\nexport function $setup($scope) {\n  $count4($scope, 0);\n  $count5($scope, 0);\n  $count6($scope, 0);\n  $count7($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/shadow-same-scope/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let count = 0;\n  let $count = 0;\n  let $count2 = 0;\n  let $count3 = 0;\n  _._html(`<div><button>${_._escape(count)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}<div><button>${_._escape($count)}${_._el_resume($scope0_id, \"#text/3\")}</button>${_._el_resume($scope0_id, \"#button/2\")}<div><button>${_._escape($count2)}${_._el_resume($scope0_id, \"#text/5\")}</button>${_._el_resume($scope0_id, \"#button/4\")}</div></div></div><div><button>${_._escape($count3)}${_._el_resume($scope0_id, \"#text/7\")}</button>${_._el_resume($scope0_id, \"#button/6\")}</div>`);\n  _._script($scope0_id, \"__tests__/template.marko_0_$count3\");\n  _._script($scope0_id, \"__tests__/template.marko_0_$count2\");\n  _._script($scope0_id, \"__tests__/template.marko_0_$count\");\n  _._script($scope0_id, \"__tests__/template.marko_0_count\");\n  _._scope($scope0_id, {\n    count,\n    $count,\n    $count2,\n    $count3\n  }, \"__tests__/template.marko\", 0, {\n    count: \"1:6\",\n    $count: \"5:10\",\n    $count2: \"8:12\",\n    $count3: \"14:8\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/shadow-same-scope/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <button>\n    0\n  </button>\n  <div>\n    <button>\n      0\n    </button>\n    <div>\n      <button>\n        0\n      </button>\n    </div>\n  </div>\n</div>\n<div>\n  <button>\n    0\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonNum++].click();\n```\n```html\n<div>\n  <button>\n    1\n  </button>\n  <div>\n    <button>\n      0\n    </button>\n    <div>\n      <button>\n        0\n      </button>\n    </div>\n  </div>\n</div>\n<div>\n  <button>\n    0\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonNum++].click();\n```\n```html\n<div>\n  <button>\n    1\n  </button>\n  <div>\n    <button>\n      1\n    </button>\n    <div>\n      <button>\n        0\n      </button>\n    </div>\n  </div>\n</div>\n<div>\n  <button>\n    0\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonNum++].click();\n```\n```html\n<div>\n  <button>\n    1\n  </button>\n  <div>\n    <button>\n      1\n    </button>\n    <div>\n      <button>\n        1\n      </button>\n    </div>\n  </div>\n</div>\n<div>\n  <button>\n    0\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonNum++].click();\n```\n```html\n<div>\n  <button>\n    1\n  </button>\n  <div>\n    <button>\n      1\n    </button>\n    <div>\n      <button>\n        1\n      </button>\n    </div>\n  </div>\n</div>\n<div>\n  <button>\n    1\n  </button>\n</div>\n```\n\n\n# Render\n```js\nbuttonNum = 0;\n```\n```html\n<div>\n  <button>\n    1\n  </button>\n  <div>\n    <button>\n      1\n    </button>\n    <div>\n      <button>\n        1\n      </button>\n    </div>\n  </div>\n</div>\n<div>\n  <button>\n    1\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/shadow-same-scope/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        0\n        <!--M_*1 #text/1-->\n      </button>\n      <!--M_*1 #button/0-->\n      <div>\n        <button>\n          0\n          <!--M_*1 #text/3-->\n        </button>\n        <!--M_*1 #button/2-->\n        <div>\n          <button>\n            0\n            <!--M_*1 #text/5-->\n          </button>\n          <!--M_*1 #button/4-->\n        </div>\n      </div>\n    </div>\n    <div>\n      <button>\n        0\n        <!--M_*1 #text/7-->\n      </button>\n      <!--M_*1 #button/6-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0,\n          $count: 0,\n          $count2: 0,\n          $count3: 0\n        }]),\n        \"__tests__/template.marko_0_$count3 1 __tests__/template.marko_0_$count2 1 __tests__/template.marko_0_$count 1 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonNum++].click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        1\n        <!--M_*1 #text/1-->\n      </button>\n      <!--M_*1 #button/0-->\n      <div>\n        <button>\n          0\n          <!--M_*1 #text/3-->\n        </button>\n        <!--M_*1 #button/2-->\n        <div>\n          <button>\n            0\n            <!--M_*1 #text/5-->\n          </button>\n          <!--M_*1 #button/4-->\n        </div>\n      </div>\n    </div>\n    <div>\n      <button>\n        0\n        <!--M_*1 #text/7-->\n      </button>\n      <!--M_*1 #button/6-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0,\n          $count: 0,\n          $count2: 0,\n          $count3: 0\n        }]),\n        \"__tests__/template.marko_0_$count3 1 __tests__/template.marko_0_$count2 1 __tests__/template.marko_0_$count 1 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div0/button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonNum++].click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        1\n        <!--M_*1 #text/1-->\n      </button>\n      <!--M_*1 #button/0-->\n      <div>\n        <button>\n          1\n          <!--M_*1 #text/3-->\n        </button>\n        <!--M_*1 #button/2-->\n        <div>\n          <button>\n            0\n            <!--M_*1 #text/5-->\n          </button>\n          <!--M_*1 #button/4-->\n        </div>\n      </div>\n    </div>\n    <div>\n      <button>\n        0\n        <!--M_*1 #text/7-->\n      </button>\n      <!--M_*1 #button/6-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0,\n          $count: 0,\n          $count2: 0,\n          $count3: 0\n        }]),\n        \"__tests__/template.marko_0_$count3 1 __tests__/template.marko_0_$count2 1 __tests__/template.marko_0_$count 1 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div0/div/button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonNum++].click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        1\n        <!--M_*1 #text/1-->\n      </button>\n      <!--M_*1 #button/0-->\n      <div>\n        <button>\n          1\n          <!--M_*1 #text/3-->\n        </button>\n        <!--M_*1 #button/2-->\n        <div>\n          <button>\n            1\n            <!--M_*1 #text/5-->\n          </button>\n          <!--M_*1 #button/4-->\n        </div>\n      </div>\n    </div>\n    <div>\n      <button>\n        0\n        <!--M_*1 #text/7-->\n      </button>\n      <!--M_*1 #button/6-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0,\n          $count: 0,\n          $count2: 0,\n          $count3: 0\n        }]),\n        \"__tests__/template.marko_0_$count3 1 __tests__/template.marko_0_$count2 1 __tests__/template.marko_0_$count 1 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div0/div/div/button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelectorAll(\"button\")[buttonNum++].click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        1\n        <!--M_*1 #text/1-->\n      </button>\n      <!--M_*1 #button/0-->\n      <div>\n        <button>\n          1\n          <!--M_*1 #text/3-->\n        </button>\n        <!--M_*1 #button/2-->\n        <div>\n          <button>\n            1\n            <!--M_*1 #text/5-->\n          </button>\n          <!--M_*1 #button/4-->\n        </div>\n      </div>\n    </div>\n    <div>\n      <button>\n        1\n        <!--M_*1 #text/7-->\n      </button>\n      <!--M_*1 #button/6-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0,\n          $count: 0,\n          $count2: 0,\n          $count3: 0\n        }]),\n        \"__tests__/template.marko_0_$count3 1 __tests__/template.marko_0_$count2 1 __tests__/template.marko_0_$count 1 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div1/button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\nbuttonNum = 0;\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        1\n        <!--M_*1 #text/1-->\n      </button>\n      <!--M_*1 #button/0-->\n      <div>\n        <button>\n          1\n          <!--M_*1 #text/3-->\n        </button>\n        <!--M_*1 #button/2-->\n        <div>\n          <button>\n            1\n            <!--M_*1 #text/5-->\n          </button>\n          <!--M_*1 #button/4-->\n        </div>\n      </div>\n    </div>\n    <div>\n      <button>\n        1\n        <!--M_*1 #text/7-->\n      </button>\n      <!--M_*1 #button/6-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0,\n          $count: 0,\n          $count2: 0,\n          $count3: 0\n        }]),\n        \"__tests__/template.marko_0_$count3 1 __tests__/template.marko_0_$count2 1 __tests__/template.marko_0_$count 1 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/shadow-same-scope/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  <button>\n    0\n  </button>\n  <div>\n    <button>\n      0\n    </button>\n    <div>\n      <button>\n        0\n      </button>\n    </div>\n  </div>\n</div>\n<div>\n  <button>\n    0\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/shadow-same-scope/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><button>0<!--M_*1 #text/1--></button><!--M_*1 #button/0--><div><button>0<!--M_*1 #text/3--></button><!--M_*1 #button/2--><div><button>0<!--M_*1 #text/5--></button><!--M_*1 #button/4--></div></div></div><div><button>0<!--M_*1 #text/7--></button><!--M_*1 #button/6--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{count:0,$count:0,$count2:0,$count3:0}]),\"__tests__/template.marko_0_$count3 1 __tests__/template.marko_0_$count2 1 __tests__/template.marko_0_$count 1 __tests__/template.marko_0_count 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button>\n        0\n        <!--M_*1 #text/1-->\n      </button>\n      <!--M_*1 #button/0-->\n      <div>\n        <button>\n          0\n          <!--M_*1 #text/3-->\n        </button>\n        <!--M_*1 #button/2-->\n        <div>\n          <button>\n            0\n            <!--M_*1 #text/5-->\n          </button>\n          <!--M_*1 #button/4-->\n        </div>\n      </div>\n    </div>\n    <div>\n      <button>\n        0\n        <!--M_*1 #text/7-->\n      </button>\n      <!--M_*1 #button/6-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0,\n          $count: 0,\n          $count2: 0,\n          $count3: 0\n        }]),\n        \"__tests__/template.marko_0_$count3 1 __tests__/template.marko_0_$count2 1 __tests__/template.marko_0_$count 1 __tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/div0/button\nINSERT html/body/div0/button/#text\nINSERT html/body/div0/button/#comment\nINSERT html/body/div0/#comment\nINSERT html/body/div0/div\nINSERT html/body/div0/div/button\nINSERT html/body/div0/div/button/#text\nINSERT html/body/div0/div/button/#comment\nINSERT html/body/div0/div/#comment\nINSERT html/body/div0/div/div\nINSERT html/body/div0/div/div/button\nINSERT html/body/div0/div/div/button/#text\nINSERT html/body/div0/div/div/button/#comment\nINSERT html/body/div0/div/div/#comment\nINSERT html/body/div1\nINSERT html/body/div1/button\nINSERT html/body/div1/button/#text\nINSERT html/body/div1/button/#comment\nINSERT html/body/div1/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/shadow-same-scope/template.marko",
    "content": "<let/count = 0/>\n<div>\n  <button onClick() { count++ }>${count}</button>\n  <div>\n    <let/count = 0/>\n    <button onClick() { count++ }>${count}</button>\n    <div>\n      <let/count = 0/>\n      <button onClick() { count++ }>${count}</button>\n    </div>\n  </div>\n</div>\n<div>\n  <let/count = 0/>\n  <button onClick() { count++ }>${count}</button>\n</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/shadow-same-scope/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nlet buttonNum = 0;\n\nfunction click(container: Element) {\n  container.querySelectorAll(\"button\")![buttonNum++].click();\n}\n\nfunction reset() {\n  buttonNum = 0;\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click, click, reset],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-attr-tag-effect/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"m\",\n      \"$init\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-attr-tag-effect/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  content\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-attr-tag-effect/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  content\n</div>\n```\n\n# Mutations\n```\nINSERT div\nINSERT div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-attr-tag-effect/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* get, over(1) */\" b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $input_option__script = _._script(\"__tests__/tags/child.marko_0_input_option\", $scope => (_._el_read($scope[\"#div/0\"]).innerHTML = Object.keys($scope.input_option).join(',')));\nexport const $input_option = /* @__PURE__ */_._const(\"input_option\", $input_option__script);\nexport const $input = ($scope, input) => $input_option($scope, input.option);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-attr-tag-effect/__snapshots__/dom.expected/tags/wrap.js",
    "content": "export const $template = _child_template;\nexport const $walks = /* <child> */`/${_child_walks}&`;\nimport { $setup as _child, $input_option as _child_input_option, $template as _child_template, $walks as _child_walks } from \"./child.marko\";\nexport function $setup($scope) {\n  _child($scope[\"#childScope/0\"]);\n}\nexport const $input_option = ($scope, input_option) => _child_input_option($scope[\"#childScope/0\"], input_option);\nexport const $input = ($scope, input) => $input_option($scope, input.option);\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/tags/wrap.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-attr-tag-effect/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 96 (min) 75 (brotli)\n(_._script(\n  \"a0\",\n  ($scope) => ($scope.a.innerHTML = Object.keys($scope.d).join(\",\")),\n),\n  _._content_resume(\"c0\", \"1\", \"b\"),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-attr-tag-effect/__snapshots__/dom.expected/template.js",
    "content": "export const $template = _wrap_template;\nexport const $walks = /* <wrap> */`/${_wrap_walks}&`;\nimport { $setup as _wrap, $input_option as _wrap_input_option, $template as _wrap_template, $walks as _wrap_walks } from \"./tags/wrap.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $option_content = _._content_resume(\"__tests__/template.marko_1_content\", \"1\", /* over(1) */\"b\");\nexport function $setup($scope) {\n  _wrap($scope[\"#childScope/0\"]);\n  _wrap_input_option($scope[\"#childScope/0\"], _.attrTag({\n    content: $option_content($scope)\n  }));\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-attr-tag-effect/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div></div>${_._el_resume($scope0_id, \"#div/0\")}`);\n  _._script($scope0_id, \"__tests__/tags/child.marko_0_input_option\");\n  _._scope($scope0_id, {\n    input_option: input.option\n  }, \"__tests__/tags/child.marko\", 0, {\n    input_option: [\"input.option\"]\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-attr-tag-effect/__snapshots__/html.expected/tags/wrap.js",
    "content": "import _child from \"./child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/wrap.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $childScope = _._peek_scope_id();\n  _child(input);\n  _._serialize_if($scope0_reason, /* input.option */0) && _._scope($scope0_id, {\n    \"#childScope/0\": _._serialize_if($scope0_reason, /* input.option */0) && _._existing_scope($childScope)\n  }, \"__tests__/tags/wrap.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-attr-tag-effect/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _wrap from \"./tags/wrap.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _wrap({\n    option: _.attrTag({\n      content: _._content_resume(\"__tests__/template.marko_1_content\", () => {\n        _._scope_reason();\n        const $scope1_id = _._scope_id();\n        _._html(\"1\");\n      }, $scope0_id)\n    })\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-attr-tag-effect/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  content\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-attr-tag-effect/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      content\n    </div>\n    <!--M_*3 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 2,\n        {\n          input_option: _.a = {\n            content: _.c = {},\n            *[Symbol.iterator]()\n            {\n              yield this\n            }\n          }\n        }], _.a.content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.c), _.b),\n        \"__tests__/tags/child.marko_0_input_option 3\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-attr-tag-effect/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-attr-tag-effect/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div></div><!--M_*3 #div/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,2,{input_option:_.a={content:_.c={},*[Symbol.iterator](){yield this}}}],_.a.content=_._[\"__tests__/template.marko_1_content\"](_.c),_.b),\"__tests__/tags/child.marko_0_input_option 3\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*3 #div/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 2,\n        {\n          input_option: _.a = {\n            content: _.c = {},\n            *[Symbol.iterator]()\n            {\n              yield this\n            }\n          }\n        }], _.a.content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.c), _.b),\n        \"__tests__/tags/child.marko_0_input_option 3\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-attr-tag-effect/tags/child.marko",
    "content": "<div/$el/>\n<script>$el().innerHTML = Object.keys(input.option).join(',')</script>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-attr-tag-effect/tags/wrap.marko",
    "content": "child ...input"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-attr-tag-effect/template.marko",
    "content": "wrap\n    @option -- 1\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-input/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-input/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"known\"\n>\n  <input\n    class=\"foo\"\n  />\n</div>\n<div\n  id=\"dynamic\"\n>\n  <input\n    class=\"bar\"\n  />\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-input/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"known\"\n>\n  <input\n    class=\"foo\"\n  />\n</div>\n<div\n  id=\"dynamic\"\n>\n  <input\n    class=\"bar\"\n  />\n</div>\n```\n\n# Mutations\n```\nINSERT div0, div1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-input/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<input>\";\nexport const $walks = /* get, over(1) */\" b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $input_value = /* @__PURE__ */_._const(\"input_value\", $scope => _._attr_input_value_default($scope, \"#input/0\", $scope.input_value));\nexport const $input_class = ($scope, input_class) => _._attr_class($scope[\"#input/0\"], input_class);\nexport const $input = ($scope, input) => {\n  $input_class($scope, input.class);\n  $input_value($scope, input.value);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-input/__snapshots__/dom.expected/tags/wrap.js",
    "content": "export const $template = _child_template;\nexport const $walks = /* <child> */`/${_child_walks}&`;\nimport { $setup as _child, $input_class as _child_input_class, $input_value as _child_input_value, $template as _child_template, $walks as _child_walks } from \"./child.marko\";\nexport function $setup($scope) {\n  _child($scope[\"#childScope/0\"]);\n}\nexport const $input_class = ($scope, input_class) => _child_input_class($scope[\"#childScope/0\"], input_class);\nexport const $input_value = ($scope, input_value) => _child_input_value($scope[\"#childScope/0\"], input_value);\nexport const $input = ($scope, input) => {\n  $input_class($scope, input.class);\n  $input_value($scope, input.value);\n};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/tags/wrap.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-input/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-input/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<div id=known>${_wrap_template}</div><div id=dynamic><!></div>`;\nexport const $walks = /* next(1), <wrap>, out(1), next(1), replace, out(1) */`D/${_wrap_walks}&lD%l`;\nimport wrapTag from \"./tags/wrap.marko\";\nconst Wrap = wrapTag;\nimport { $setup as _wrap, $input_class as _wrap_input_class, $input_value as _wrap_input_value, $template as _wrap_template, $walks as _wrap_walks } from \"./tags/wrap.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/1\");\nexport function $setup($scope) {\n  _wrap($scope[\"#childScope/0\"]);\n  _wrap_input_class($scope[\"#childScope/0\"], \"foo\");\n  _wrap_input_value($scope[\"#childScope/0\"]);\n  $dynamicTag($scope, Wrap, () => ({\n    class: \"bar\"\n  }));\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-input/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<input${_._attr_input_value($scope0_id, \"#input/0\", input.value)}${_._attr_class(input.class)}>${_._el_resume($scope0_id, \"#input/0\", _._serialize_guard($scope0_reason, /* input.class, input.value */0))}`);\n  _._serialize_if($scope0_reason, /* input.class, input.value */0) && _._scope($scope0_id, {}, \"__tests__/tags/child.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-input/__snapshots__/html.expected/tags/wrap.js",
    "content": "import _child from \"./child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/wrap.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason(_._serialize_guard($scope0_reason, /* input.class, input.value */0));\n  _child(input);\n  _._serialize_if($scope0_reason, /* input.class, input.value */0) && _._scope($scope0_id, {\n    \"#childScope/0\": _._serialize_if($scope0_reason, /* input.class, input.value */0) && _._existing_scope($childScope)\n  }, \"__tests__/tags/wrap.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-input/__snapshots__/html.expected/template.js",
    "content": "import wrapTag from \"./tags/wrap.marko\";\nconst Wrap = wrapTag;\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nimport _wrap from \"./tags/wrap.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div id=known>\");\n  _wrap({\n    class: \"foo\"\n  });\n  _._html(\"</div><div id=dynamic>\");\n  _._dynamic_tag($scope0_id, \"#text/1\", Wrap, {\n    class: \"bar\"\n  }, 0, 0, 0);\n  _._html(\"</div>\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-input/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"known\"\n>\n  <input\n    class=\"foo\"\n  />\n</div>\n<div\n  id=\"dynamic\"\n>\n  <input\n    class=\"bar\"\n  />\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-input/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"known\"\n    >\n      <input\n        class=\"foo\"\n      />\n    </div>\n    <div\n      id=\"dynamic\"\n    >\n      <input\n        class=\"bar\"\n      />\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-input/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div\n  id=\"known\"\n>\n  <input\n    class=\"foo\"\n  />\n</div>\n<div\n  id=\"dynamic\"\n>\n  <input\n    class=\"bar\"\n  />\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-input/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div id=known><input class=foo></div><div id=dynamic><input class=bar></div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"known\"\n    >\n      <input\n        class=\"foo\"\n      />\n    </div>\n    <div\n      id=\"dynamic\"\n    >\n      <input\n        class=\"bar\"\n      />\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/div0/input\nINSERT html/body/div1\nINSERT html/body/div1/input\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-input/tags/child.marko",
    "content": "<input class=input.class value=input.value>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-input/tags/wrap.marko",
    "content": "<child ...input/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-input/template.marko",
    "content": "import wrapTag from \"<wrap>\";\nstatic const Wrap = wrapTag\n\n<div#known>\n  <wrap class=\"foo\" />\n</div>\n\n<div#dynamic>\n  <${Wrap} class=\"bar\" />\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-native-event-handler-multi-alias/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"e\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-native-event-handler-multi-alias/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"el\"\n/>\n<button>\n  Click Me\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div\n  id=\"el\"\n>\n  [onClick(child)][onClick(parent)]\n</div>\n<button>\n  Click Me\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-native-event-handler-multi-alias/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"el\"\n/>\n<button>\n  Click Me\n</button>\n<!---->\n```\n\n# Mutations\n```\nINSERT div, button, #text, #comment\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div\n  id=\"el\"\n>\n  [onClick(child)][onClick(parent)]\n</div>\n<button>\n  Click Me\n</button>\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE #text in div\nINSERT div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-native-event-handler-multi-alias/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 365 (min) 163 (brotli)\n(_._content_resume(\"a2\", \"Click Me\", \"b\"),\n  _._script(\"a3\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      ((document.getElementById(\"el\").textContent += \"[onClick(child)]\"),\n        $scope.d());\n    }),\n  ),\n  _._script(\"a4\", ($scope) => _._attrs_script($scope, \"a\")),\n  _._resume(\"a1\", function () {\n    document.getElementById(\"el\").textContent += \"[onClick(parent)]\";\n  }),\n  _._resume(\"a0\", function () {\n    throw new Error(\"Should never be called.\");\n  }),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-native-event-handler-multi-alias/__snapshots__/dom.expected/template.js",
    "content": "const $MyButton_content__walks = /* get, over(2) */\" c\",\n  $MyButton_content__template = \"<button></button> \";\nexport const $template = `<div id=el></div>${$MyButton_content__template}<!>`;\nexport const $walks = /* over(1), <MyButton>, over(1) */`b/${$MyButton_content__walks}&b`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $MyButton_content2 = _._content_resume(\"__tests__/template.marko_2_content\", \"Click Me\", /* over(1) */\"b\");\nconst $MyButton_content__input_onClick__script = _._script(\"__tests__/template.marko_1_input_onClick\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  document.getElementById(\"el\").textContent += \"[onClick(child)]\";\n  $scope.input_onClick();\n}));\nconst $MyButton_content__input_onClick = /* @__PURE__ */_._const(\"input_onClick\", $MyButton_content__input_onClick__script);\nconst $MyButton_content__input__script = _._script(\"__tests__/template.marko_1_input\", $scope => _._attrs_script($scope, \"#button/0\"));\nconst $MyButton_content__input = /* @__PURE__ */_._const(\"input\", $scope => {\n  _._attrs_partial_content($scope, \"#button/0\", $scope.input, {\n    \"on-click\": 1\n  });\n  $MyButton_content__input_onClick($scope, $scope.input.onClick);\n  $MyButton_content__input__script($scope);\n});\nconst $MyButton_content__$params = ($scope, $params2) => $MyButton_content__input($scope, $params2[0]);\nexport function $setup($scope) {\n  $MyButton_content__input($scope[\"#childScope/0\"], {\n    \"on-click\": $onclick,\n    onClick: $onClick,\n    content: $MyButton_content2($scope)\n  });\n}\nfunction $onClick() {\n  document.getElementById(\"el\").textContent += \"[onClick(parent)]\";\n}\nfunction $onclick() {\n  throw new Error(\"Should never be called.\");\n}\n_._resume(\"__tests__/template.marko_0/onClick\", $onClick);\n_._resume(\"__tests__/template.marko_0/onclick\", $onclick);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-native-event-handler-multi-alias/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div id=el></div>\");\n  const MyButton = {\n    content: _._content(\"__tests__/template.marko_1_content\", input => {\n      const $scope1_id = _._scope_id();\n      _._scope_reason();\n      _._html(\"<button\");\n      _._attrs_partial_content(input, {\n        \"on-click\": 1\n      }, \"#button/0\", $scope1_id, \"button\");\n      _._html(`</button>${_._el_resume($scope1_id, \"#button/0\")} `);\n      _._script($scope1_id, \"__tests__/template.marko_1_input\");\n      _._script($scope1_id, \"__tests__/template.marko_1_input_onClick\");\n      _._scope($scope1_id, {\n        input,\n        input_onClick: input.onClick\n      }, \"__tests__/template.marko\", \"2:2\", {\n        input: \"2:18\",\n        input_onClick: [\"input.onClick\", \"2:18\"]\n      });\n    })\n  };\n  MyButton.content({\n    \"on-click\": _._resume(function () {\n      throw new Error(\"Should never be called.\");\n    }, \"__tests__/template.marko_0/onclick\"),\n    onClick: _._resume(function () {\n      document.getElementById(\"el\").textContent += \"[onClick(parent)]\";\n    }, \"__tests__/template.marko_0/onClick\"),\n    content: _._content_resume(\"__tests__/template.marko_2_content\", () => {\n      _._scope_reason();\n      const $scope2_id = _._scope_id();\n      _._html(\"Click Me\");\n    }, $scope0_id)\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-native-event-handler-multi-alias/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"el\"\n/>\n<button>\n  Click Me\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div\n  id=\"el\"\n>\n  [onClick(child)][onClick(parent)]\n</div>\n<button>\n  Click Me\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-native-event-handler-multi-alias/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"el\"\n    />\n    <button>\n      Click Me\n    </button>\n    <!--M_*2 #button/0-->\n     \n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, 1,\n        {\n          \"BranchScopes:#button/0\": _.b = {},\n          \"ConditionalRenderer:#button/0\": \"__tests__/template.marko_2_content\",\n          input: _.a = {\n            \"on-click\": _._[\n              \"__tests__/template.marko_0/onclick\"\n              ],\n            onClick: _._[\n              \"__tests__/template.marko_0/onClick\"\n              ],\n            content: _.d = {}\n          },\n          input_onClick: _._[\n            \"__tests__/template.marko_0/onClick\"\n            ]\n        }, _.b], _.a.content = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.d), _.c),\n        \"__tests__/template.marko_1_input 2 __tests__/template.marko_1_input_onClick 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"el\"\n    >\n      [onClick(child)][onClick(parent)]\n    </div>\n    <button>\n      Click Me\n    </button>\n    <!--M_*2 #button/0-->\n     \n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, 1,\n        {\n          \"BranchScopes:#button/0\": _.b = {},\n          \"ConditionalRenderer:#button/0\": \"__tests__/template.marko_2_content\",\n          input: _.a = {\n            \"on-click\": _._[\n              \"__tests__/template.marko_0/onclick\"\n              ],\n            onClick: _._[\n              \"__tests__/template.marko_0/onClick\"\n              ],\n            content: _.d = {}\n          },\n          input_onClick: _._[\n            \"__tests__/template.marko_0/onClick\"\n            ]\n        }, _.b], _.a.content = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.d), _.c),\n        \"__tests__/template.marko_1_input 2 __tests__/template.marko_1_input_onClick 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE #text in html/body/div\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-native-event-handler-multi-alias/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div\n  id=\"el\"\n/>\n<button>\n  Click Me\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-native-event-handler-multi-alias/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div id=el></div><button>Click Me</button><!--M_*2 #button/0--> <script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,1,{\"BranchScopes:#button/0\":_.b={},\"ConditionalRenderer:#button/0\":\"__tests__/template.marko_2_content\",input:_.a={\"on-click\":_._[\"__tests__/template.marko_0/onclick\"],onClick:_._[\"__tests__/template.marko_0/onClick\"],content:_.d={}},input_onClick:_._[\"__tests__/template.marko_0/onClick\"]},_.b],_.a.content=_._[\"__tests__/template.marko_2_content\"](_.d),_.c),\"__tests__/template.marko_1_input 2 __tests__/template.marko_1_input_onClick 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"el\"\n    />\n    <button>\n      Click Me\n    </button>\n    <!--M_*2 #button/0-->\n     \n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, 1,\n        {\n          \"BranchScopes:#button/0\": _.b = {},\n          \"ConditionalRenderer:#button/0\": \"__tests__/template.marko_2_content\",\n          input: _.a = {\n            \"on-click\": _._[\n              \"__tests__/template.marko_0/onclick\"\n              ],\n            onClick: _._[\n              \"__tests__/template.marko_0/onClick\"\n              ],\n            content: _.d = {}\n          },\n          input_onClick: _._[\n            \"__tests__/template.marko_0/onClick\"\n            ]\n        }, _.b], _.a.content = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.d), _.c),\n        \"__tests__/template.marko_1_input 2 __tests__/template.marko_1_input_onClick 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment\nINSERT html/body/#text\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-native-event-handler-multi-alias/template.marko",
    "content": "<div#el/>\n<define/MyButton|input|>\n  <button ...input onClick() {\n    document.getElementById(\"el\").textContent += \"[onClick(child)]\";\n    input.onClick();\n  }/> \n</define>\n\n<MyButton\n  on-click() { throw new Error(\"Should never be called.\") }\n  onClick() { document.getElementById(\"el\").textContent += \"[onClick(parent)]\"; }\n>\n  Click Me\n</>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-native-event-handler-multi-alias/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"known\"\n>\n  <input\n    class=\"foo\"\n  />\n</div>\n<div\n  id=\"dynamic\"\n>\n  <input\n    class=\"bar\"\n  />\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"known\"\n>\n  <input\n    class=\"foo\"\n  />\n</div>\n<div\n  id=\"dynamic\"\n>\n  <input\n    class=\"bar\"\n  />\n</div>\n```\n\n# Mutations\n```\nINSERT div0, div1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<input>\";\nexport const $walks = /* get, over(1) */\" b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $input_value = /* @__PURE__ */_._const(\"input_value\", $scope => _._attr_input_value_default($scope, \"#input/0\", $scope.input_value));\nexport const $input_class = ($scope, input_class) => _._attr_class($scope[\"#input/0\"], input_class);\nexport const $input = ($scope, input) => {\n  $input_class($scope, input.class);\n  $input_value($scope, input.value);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known/__snapshots__/dom.expected/tags/wrap.js",
    "content": "export const $template = _child_template;\nexport const $walks = /* <child> */`/${_child_walks}&`;\nimport { $setup as _child, $input_class as _child_input_class, $input_value as _child_input_value, $template as _child_template, $walks as _child_walks } from \"./child.marko\";\nexport function $setup($scope) {\n  _child($scope[\"#childScope/0\"]);\n}\nexport const $input_class = ($scope, input_class) => _child_input_class($scope[\"#childScope/0\"], input_class);\nexport const $input_value = ($scope, input_value) => _child_input_value($scope[\"#childScope/0\"], input_value);\nexport const $input = ($scope, input) => {\n  $input_class($scope, input.class);\n  $input_value($scope, input.value);\n};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/tags/wrap.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<div id=known>${_wrap_template}</div><div id=dynamic><!></div>`;\nexport const $walks = /* next(1), <wrap>, out(1), next(1), replace, out(1) */`D/${_wrap_walks}&lD%l`;\nimport wrapTag from \"./tags/wrap.marko\";\nconst Wrap = wrapTag;\nimport { $setup as _wrap, $input_class as _wrap_input_class, $input_value as _wrap_input_value, $template as _wrap_template, $walks as _wrap_walks } from \"./tags/wrap.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/1\");\nexport function $setup($scope) {\n  _wrap($scope[\"#childScope/0\"]);\n  _wrap_input_class($scope[\"#childScope/0\"], \"foo\");\n  _wrap_input_value($scope[\"#childScope/0\"]);\n  $dynamicTag($scope, Wrap, () => ({\n    class: \"bar\"\n  }));\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<input${_._attr_input_value($scope0_id, \"#input/0\", input.value)}${_._attr_class(input.class)}>${_._el_resume($scope0_id, \"#input/0\", _._serialize_guard($scope0_reason, /* input.class, input.value */0))}`);\n  _._serialize_if($scope0_reason, /* input.class, input.value */0) && _._scope($scope0_id, {}, \"__tests__/tags/child.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known/__snapshots__/html.expected/tags/wrap.js",
    "content": "import _child from \"./child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/wrap.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason(_._serialize_guard($scope0_reason, /* input.class, input.value */0));\n  _child(input);\n  _._serialize_if($scope0_reason, /* input.class, input.value */0) && _._scope($scope0_id, {\n    \"#childScope/0\": _._serialize_if($scope0_reason, /* input.class, input.value */0) && _._existing_scope($childScope)\n  }, \"__tests__/tags/wrap.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known/__snapshots__/html.expected/template.js",
    "content": "import wrapTag from \"./tags/wrap.marko\";\nconst Wrap = wrapTag;\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nimport _wrap from \"./tags/wrap.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div id=known>\");\n  _wrap({\n    class: \"foo\"\n  });\n  _._html(\"</div><div id=dynamic>\");\n  _._dynamic_tag($scope0_id, \"#text/1\", Wrap, {\n    class: \"bar\"\n  }, 0, 0, 0);\n  _._html(\"</div>\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"known\"\n>\n  <input\n    class=\"foo\"\n  />\n</div>\n<div\n  id=\"dynamic\"\n>\n  <input\n    class=\"bar\"\n  />\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"known\"\n    >\n      <input\n        class=\"foo\"\n      />\n    </div>\n    <div\n      id=\"dynamic\"\n    >\n      <input\n        class=\"bar\"\n      />\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div\n  id=\"known\"\n>\n  <input\n    class=\"foo\"\n  />\n</div>\n<div\n  id=\"dynamic\"\n>\n  <input\n    class=\"bar\"\n  />\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div id=known><input class=foo></div><div id=dynamic><input class=bar></div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"known\"\n    >\n      <input\n        class=\"foo\"\n      />\n    </div>\n    <div\n      id=\"dynamic\"\n    >\n      <input\n        class=\"bar\"\n      />\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/div0/input\nINSERT html/body/div1\nINSERT html/body/div1/input\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known/tags/child.marko",
    "content": "<input class=input.class value=input.value>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known/tags/wrap.marko",
    "content": "<child ...input/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known/template.marko",
    "content": "import wrapTag from \"<wrap>\";\nstatic const Wrap = wrapTag\n\n<div#known>\n  <wrap class=\"foo\" />\n</div>\n\n<div#dynamic>\n  <${Wrap} class=\"bar\" />\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-custom-tag/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-custom-tag/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<select\n  class=\"foo\"\n>\n  <option\n    selected=\"\"\n    value=\"1\"\n  >\n    One\n  </option>\n  <option\n    value=\"2\"\n  >\n    Two\n  </option>\n  <option\n    value=\"3\"\n  >\n    Three\n  </option>\n</select>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-custom-tag/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<select\n  class=\"foo\"\n>\n  <option\n    selected=\"\"\n    value=\"1\"\n  >\n    One\n  </option>\n  <option\n    value=\"2\"\n  >\n    Two\n  </option>\n  <option\n    value=\"3\"\n  >\n    Three\n  </option>\n</select>\n```\n\n# Mutations\n```\nINSERT select\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-custom-tag/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<select></select>\";\nexport const $walks = /* get, over(1) */\" b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for_content__option__script = _._script(\"__tests__/tags/child.marko_1_option\", $scope => _._attrs_script($scope, \"#option/0\"));\nconst $for_content__option = /* @__PURE__ */_._const(\"option\", $scope => {\n  _._attrs_content($scope, \"#option/0\", $scope.option);\n  $for_content__option__script($scope);\n});\nconst $for_content__$params = ($scope, $params2) => $for_content__option($scope, $params2[0]);\nexport const $input_class = ($scope, input_class) => _._attr_class($scope[\"#select/0\"], input_class);\nconst $for = /* @__PURE__ */_._for_of(\"#select/0\", \"<option></option>\", /* get, over(1) */\" b\", 0, $for_content__$params);\nexport const $input_option = ($scope, input_option) => $for($scope, [input_option]);\nexport const $input = ($scope, input) => {\n  $input_class($scope, input.class);\n  $input_option($scope, input.option);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-custom-tag/__snapshots__/dom.expected/tags/wrap.js",
    "content": "export const $template = _child_template;\nexport const $walks = /* <child> */`/${_child_walks}&`;\nimport { $setup as _child, $input_class as _child_input_class, $input_option as _child_input_option, $template as _child_template, $walks as _child_walks } from \"./child.marko\";\nexport function $setup($scope) {\n  _child($scope[\"#childScope/0\"]);\n}\nexport const $_class = ($scope, _class) => _child_input_class($scope[\"#childScope/0\"], _class);\nexport const $rest_option = ($scope, rest_option) => _child_input_option($scope[\"#childScope/0\"], rest_option);\nexport const $input = ($scope, input) => {\n  (({\n    class: $class,\n    ...rest\n  }) => $rest($scope, rest))(input);\n  $_class($scope, input.class);\n};\nexport const $rest = ($scope, rest) => $rest_option($scope, rest.option);\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/tags/wrap.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-custom-tag/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 150 (min) 90 (brotli)\n(_._script(\"a0\", ($scope) => _._attrs_script($scope, \"a\")),\n  _._content_resume(\"c0\", \"Three\", \"b\"),\n  _._content_resume(\"c1\", \"Two\", \"b\"),\n  _._content_resume(\"c2\", \"One\", \"b\"),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-custom-tag/__snapshots__/dom.expected/template.js",
    "content": "export const $template = _wrap_template;\nexport const $walks = /* <wrap> */`/${_wrap_walks}&`;\nimport { $setup as _wrap, $rest_option as _wrap_input_option, $_class as _wrap_input_class, $template as _wrap_template, $walks as _wrap_walks } from \"./tags/wrap.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $option_content3 = _._content_resume(\"__tests__/template.marko_3_content\", \"Three\", /* over(1) */\"b\");\nconst $option_content2 = _._content_resume(\"__tests__/template.marko_2_content\", \"Two\", /* over(1) */\"b\");\nconst $option_content = _._content_resume(\"__tests__/template.marko_1_content\", \"One\", /* over(1) */\"b\");\nexport function $setup($scope) {\n  _wrap($scope[\"#childScope/0\"]);\n  _wrap_input_option($scope[\"#childScope/0\"], (_.attrTags(_.attrTags(_.attrTag({\n    value: 1,\n    content: $option_content($scope)\n  }), {\n    value: 2,\n    content: $option_content2($scope)\n  }), {\n    value: 3,\n    content: $option_content3($scope)\n  })));\n  _wrap_input_class($scope[\"#childScope/0\"], \"foo\");\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-custom-tag/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<select${_._attr_class(input.class)}>`);\n  _._for_of(input.option, option => {\n    const $scope1_id = _._scope_id();\n    _._html(\"<option\");\n    _._attrs_content(option, \"#option/0\", $scope1_id, \"option\");\n    _._html(`</option>${_._el_resume($scope1_id, \"#option/0\")}`);\n    _._script($scope1_id, \"__tests__/tags/child.marko_1_option\");\n    _._scope($scope1_id, {\n      option\n    }, \"__tests__/tags/child.marko\", \"2:4\", {\n      option: \"2:8\"\n    });\n  }, 0, $scope0_id, \"#select/0\", _._serialize_guard($scope0_reason, /* input.option */1), _._serialize_guard($scope0_reason, /* input.class, input.option */0), _._serialize_guard($scope0_reason, /* input.option */1), \"</select>\", 1);\n  _._serialize_if($scope0_reason, /* input.class, input.option */0) && _._scope($scope0_id, {}, \"__tests__/tags/child.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-custom-tag/__snapshots__/html.expected/tags/wrap.js",
    "content": "import _child from \"./child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/wrap.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    class: _class,\n    ...rest\n  } = input;\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason({\n    /* input.class, input.option */0: _._serialize_guard($scope0_reason, /* input.class, rest.option */0),\n    /* input.option */1: _._serialize_guard($scope0_reason, /* rest.option */1)\n  });\n  _child({\n    class: _class,\n    ...rest\n  });\n  _._serialize_if($scope0_reason, /* input.class, rest.option */0) && _._scope($scope0_id, {\n    \"#childScope/0\": _._serialize_if($scope0_reason, /* input.class, rest.option */0) && _._existing_scope($childScope)\n  }, \"__tests__/tags/wrap.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-custom-tag/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _wrap from \"./tags/wrap.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _wrap({\n    class: \"foo\",\n    option: _.attrTags(_.attrTags(_.attrTag({\n      value: 1,\n      content: _._content_resume(\"__tests__/template.marko_1_content\", () => {\n        _._scope_reason();\n        const $scope1_id = _._scope_id();\n        _._html(\"One\");\n      }, $scope0_id)\n    }), {\n      value: 2,\n      content: _._content_resume(\"__tests__/template.marko_2_content\", () => {\n        _._scope_reason();\n        const $scope2_id = _._scope_id();\n        _._html(\"Two\");\n      }, $scope0_id)\n    }), {\n      value: 3,\n      content: _._content_resume(\"__tests__/template.marko_3_content\", () => {\n        _._scope_reason();\n        const $scope3_id = _._scope_id();\n        _._html(\"Three\");\n      }, $scope0_id)\n    })\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-custom-tag/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<select\n  class=\"foo\"\n>\n  <option\n    selected=\"\"\n    value=\"1\"\n  >\n    One\n  </option>\n  <option\n    value=\"2\"\n  >\n    Two\n  </option>\n  <option\n    value=\"3\"\n  >\n    Three\n  </option>\n</select>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-custom-tag/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <select\n      class=\"foo\"\n    >\n      <option\n        selected=\"\"\n        value=\"1\"\n      >\n        One\n      </option>\n      <!--M_*4 #option/0-->\n      <option\n        value=\"2\"\n      >\n        Two\n      </option>\n      <!--M_*6 #option/0-->\n      <option\n        value=\"3\"\n      >\n        Three\n      </option>\n      <!--M_*8 #option/0-->\n    </select>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.h = [0, 3,\n        {\n          \"BranchScopes:#option/0\": _.e = {},\n          \"ConditionalRenderer:#option/0\": \"__tests__/template.marko_1_content\",\n          option: _.a = {\n            value: 1,\n            content: _.i = {},\n            *[(_.b = [, _.c = {\n              value: 2\n            }, _.d = {\n              value: 3\n            }], Symbol.iterator)]()\n            {\n              yield* _.b\n            }\n          }\n        }, _.e,\n        {\n          \"BranchScopes:#option/0\": _.f = {},\n          \"ConditionalRenderer:#option/0\": \"__tests__/template.marko_2_content\",\n          option: _.c\n        }, _.f,\n        {\n          \"BranchScopes:#option/0\": _.g = {},\n          \"ConditionalRenderer:#option/0\": \"__tests__/template.marko_3_content\",\n          option: _.d\n        }, _.g], _.b[0] = _.a, _.a.content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.i), _.c.content = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.i), _.d.content = _._[\n          \"__tests__/template.marko_3_content\"\n          ](_.i), _.h),\n        \"__tests__/tags/child.marko_1_option 4 6 8\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-custom-tag/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<select\n  class=\"foo\"\n>\n  <option\n    selected=\"\"\n    value=\"1\"\n  >\n    One\n  </option>\n  <option\n    value=\"2\"\n  >\n    Two\n  </option>\n  <option\n    value=\"3\"\n  >\n    Three\n  </option>\n</select>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-custom-tag/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <select class=foo><option value=1>One</option><!--M_*4 #option/0--><option value=2>Two</option><!--M_*6 #option/0--><option value=3>Three</option><!--M_*8 #option/0--></select><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.h=[0,3,{\"BranchScopes:#option/0\":_.e={},\"ConditionalRenderer:#option/0\":\"__tests__/template.marko_1_content\",option:_.a={value:1,content:_.i={},*[(_.b=[,_.c={value:2},_.d={value:3}],Symbol.iterator)](){yield*_.b}}},_.e,{\"BranchScopes:#option/0\":_.f={},\"ConditionalRenderer:#option/0\":\"__tests__/template.marko_2_content\",option:_.c},_.f,{\"BranchScopes:#option/0\":_.g={},\"ConditionalRenderer:#option/0\":\"__tests__/template.marko_3_content\",option:_.d},_.g],_.b[0]=_.a,_.a.content=_._[\"__tests__/template.marko_1_content\"](_.i),_.c.content=_._[\"__tests__/template.marko_2_content\"](_.i),_.d.content=_._[\"__tests__/template.marko_3_content\"](_.i),_.h),\"__tests__/tags/child.marko_1_option 4 6 8\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <select\n      class=\"foo\"\n    >\n      <option\n        selected=\"\"\n        value=\"1\"\n      >\n        One\n      </option>\n      <!--M_*4 #option/0-->\n      <option\n        value=\"2\"\n      >\n        Two\n      </option>\n      <!--M_*6 #option/0-->\n      <option\n        value=\"3\"\n      >\n        Three\n      </option>\n      <!--M_*8 #option/0-->\n    </select>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.h = [0, 3,\n        {\n          \"BranchScopes:#option/0\": _.e = {},\n          \"ConditionalRenderer:#option/0\": \"__tests__/template.marko_1_content\",\n          option: _.a = {\n            value: 1,\n            content: _.i = {},\n            *[(_.b = [, _.c = {\n              value: 2\n            }, _.d = {\n              value: 3\n            }], Symbol.iterator)]()\n            {\n              yield* _.b\n            }\n          }\n        }, _.e,\n        {\n          \"BranchScopes:#option/0\": _.f = {},\n          \"ConditionalRenderer:#option/0\": \"__tests__/template.marko_2_content\",\n          option: _.c\n        }, _.f,\n        {\n          \"BranchScopes:#option/0\": _.g = {},\n          \"ConditionalRenderer:#option/0\": \"__tests__/template.marko_3_content\",\n          option: _.d\n        }, _.g], _.b[0] = _.a, _.a.content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.i), _.c.content = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.i), _.d.content = _._[\n          \"__tests__/template.marko_3_content\"\n          ](_.i), _.h),\n        \"__tests__/tags/child.marko_1_option 4 6 8\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/select\nINSERT html/body/select/option0\nINSERT html/body/select/option0/#text\nINSERT html/body/select/#comment0\nINSERT html/body/select/option1\nINSERT html/body/select/option1/#text\nINSERT html/body/select/#comment1\nINSERT html/body/select/option2\nINSERT html/body/select/option2/#text\nINSERT html/body/select/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-custom-tag/tags/child.marko",
    "content": "<select class=input.class>\n  <for|option| of=input.option>\n    <option ...option />\n  </for>\n</select>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-custom-tag/tags/wrap.marko",
    "content": "<const/{ class: _class, ...rest }=input>\n<child class=_class ...rest />\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-custom-tag/template.marko",
    "content": "<wrap class=\"foo\">\n  <@option value=1>One</>\n  <@option value=2>Two</>\n  <@option value=3>Three</>\n</wrap>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-define-tag/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-define-tag/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<select\n  class=\"foo\"\n>\n  <option\n    selected=\"\"\n    value=\"1\"\n  >\n    One\n  </option>\n  <option\n    value=\"2\"\n  >\n    Two\n  </option>\n  <option\n    value=\"3\"\n  >\n    Three\n  </option>\n</select>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-define-tag/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<!---->\n<select\n  class=\"foo\"\n>\n  <option\n    selected=\"\"\n    value=\"1\"\n  >\n    One\n  </option>\n  <option\n    value=\"2\"\n  >\n    Two\n  </option>\n  <option\n    value=\"3\"\n  >\n    Three\n  </option>\n</select>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, select, #comment2, #comment3\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-define-tag/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 150 (min) 92 (brotli)\n(_._content_resume(\"a0\", \"Three\", \"b\"),\n  _._content_resume(\"a1\", \"Two\", \"b\"),\n  _._content_resume(\"a2\", \"One\", \"b\"),\n  _._script(\"a3\", ($scope) => _._attrs_script($scope, \"a\")),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-define-tag/__snapshots__/dom.expected/template.js",
    "content": "const $Child_content__walks = /* get, over(1) */\" b\",\n  $Child_content__template = \"<select></select>\",\n  $Wrap_content__walks = /* over(1), <Child>, over(1) */`b/${$Child_content__walks}&b`,\n  $Wrap_content__template = `<!>${$Child_content__template}<!>`;\nexport const $template = `<!>${$Wrap_content__template}<!>`;\nexport const $walks = /* over(1), <Wrap>, over(1) */`b/${$Wrap_content__walks}&b`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $option_content3 = _._content_resume(\"__tests__/template.marko_6_content\", \"Three\", /* over(1) */\"b\");\nconst $option_content2 = _._content_resume(\"__tests__/template.marko_5_content\", \"Two\", /* over(1) */\"b\");\nconst $option_content = _._content_resume(\"__tests__/template.marko_4_content\", \"One\", /* over(1) */\"b\");\nconst $for_content__option__script = _._script(\"__tests__/template.marko_3_option\", $scope => _._attrs_script($scope, \"#option/0\"));\nconst $for_content__option = /* @__PURE__ */_._const(\"option\", $scope => {\n  _._attrs_content($scope, \"#option/0\", $scope.option);\n  $for_content__option__script($scope);\n});\nconst $for_content__$params = ($scope, $params3) => $for_content__option($scope, $params3[0]);\nconst $Wrap_content___class = ($scope, _class) => $Child_content__input_class($scope[\"#childScope/0\"], _class);\nconst $Wrap_content__rest_option = ($scope, rest_option) => $Child_content__input_option($scope[\"#childScope/0\"], rest_option);\nconst $Wrap_content__$params = ($scope, $params4) => $Wrap_content__$temp($scope, $params4?.[0]);\nconst $Wrap_content__$temp = ($scope, $temp) => {\n  (({\n    class: $class,\n    ...rest\n  }) => $Wrap_content__rest($scope, rest))($temp);\n  $Wrap_content___class($scope, $temp.class);\n};\nconst $Wrap_content__rest = ($scope, rest) => $Wrap_content__rest_option($scope, rest.option);\nconst $Child_content__input_class = ($scope, input_class) => _._attr_class($scope[\"#select/0\"], input_class);\nconst $Child_content__for = /* @__PURE__ */_._for_of(\"#select/0\", \"<option></option>\", /* get, over(1) */\" b\", 0, $for_content__$params);\nconst $Child_content__input_option = ($scope, input_option) => $Child_content__for($scope, [input_option]);\nconst $Child_content__$params = ($scope, $params2) => $Child_content__input($scope, $params2[0]);\nconst $Child_content__input = ($scope, input) => {\n  $Child_content__input_class($scope, input.class);\n  $Child_content__input_option($scope, input.option);\n};\nexport function $setup($scope) {\n  $Wrap_content__rest_option($scope[\"#childScope/0\"], (_.attrTags(_.attrTags(_.attrTag({\n    value: 1,\n    content: $option_content($scope)\n  }), {\n    value: 2,\n    content: $option_content2($scope)\n  }), {\n    value: 3,\n    content: $option_content3($scope)\n  })));\n  $Wrap_content___class($scope[\"#childScope/0\"], \"foo\");\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-define-tag/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const Child = {\n    content: _._content(\"__tests__/template.marko_1_content\", input => {\n      const $scope1_id = _._scope_id();\n      const $scope1_reason = _._scope_reason();\n      _._html(`<select${_._attr_class(input.class)}>`);\n      _._for_of(input.option, option => {\n        const $scope3_id = _._scope_id();\n        _._html(\"<option\");\n        _._attrs_content(option, \"#option/0\", $scope3_id, \"option\");\n        _._html(`</option>${_._el_resume($scope3_id, \"#option/0\")}`);\n        _._script($scope3_id, \"__tests__/template.marko_3_option\");\n        _._scope($scope3_id, {\n          option\n        }, \"__tests__/template.marko\", \"3:6\", {\n          option: \"3:10\"\n        });\n      }, 0, $scope1_id, \"#select/0\", _._serialize_guard($scope1_reason, /* input.option */1), _._serialize_guard($scope1_reason, /* input.class, input.option */0), _._serialize_guard($scope1_reason, /* input.option */1), \"</select>\", 1);\n      _._serialize_if($scope1_reason, /* input.class, input.option */0) && _._scope($scope1_id, {}, \"__tests__/template.marko\", \"1:2\");\n    })\n  };\n  const Wrap = {\n    content: _._content(\"__tests__/template.marko_2_content\", ({\n      class: _class,\n      ...rest\n    }) => {\n      const $scope2_id = _._scope_id();\n      const $scope2_reason = _._scope_reason();\n      const $childScope = _._peek_scope_id();\n      _._set_serialize_reason({\n        /* input.class, input.option */0: _._serialize_guard($scope2_reason, /* _class, rest.option */0),\n        /* input.option */1: _._serialize_guard($scope2_reason, /* rest.option */1)\n      });\n      Child.content({\n        class: _class,\n        ...rest\n      });\n      _._serialize_if($scope2_reason, /* _class, rest.option */0) && _._scope($scope2_id, {\n        \"#childScope/0\": _._serialize_if($scope2_reason, /* _class, rest.option */0) && _._existing_scope($childScope)\n      }, \"__tests__/template.marko\", \"9:2\");\n    })\n  };\n  Wrap.content({\n    class: \"foo\",\n    option: _.attrTags(_.attrTags(_.attrTag({\n      value: 1,\n      content: _._content_resume(\"__tests__/template.marko_4_content\", () => {\n        _._scope_reason();\n        const $scope4_id = _._scope_id();\n        _._html(\"One\");\n      }, $scope0_id)\n    }), {\n      value: 2,\n      content: _._content_resume(\"__tests__/template.marko_5_content\", () => {\n        _._scope_reason();\n        const $scope5_id = _._scope_id();\n        _._html(\"Two\");\n      }, $scope0_id)\n    }), {\n      value: 3,\n      content: _._content_resume(\"__tests__/template.marko_6_content\", () => {\n        _._scope_reason();\n        const $scope6_id = _._scope_id();\n        _._html(\"Three\");\n      }, $scope0_id)\n    })\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-define-tag/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<select\n  class=\"foo\"\n>\n  <option\n    selected=\"\"\n    value=\"1\"\n  >\n    One\n  </option>\n  <option\n    value=\"2\"\n  >\n    Two\n  </option>\n  <option\n    value=\"3\"\n  >\n    Three\n  </option>\n</select>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-define-tag/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <select\n      class=\"foo\"\n    >\n      <option\n        selected=\"\"\n        value=\"1\"\n      >\n        One\n      </option>\n      <!--M_*4 #option/0-->\n      <option\n        value=\"2\"\n      >\n        Two\n      </option>\n      <!--M_*6 #option/0-->\n      <option\n        value=\"3\"\n      >\n        Three\n      </option>\n      <!--M_*8 #option/0-->\n    </select>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.h = [0, 3,\n        {\n          \"BranchScopes:#option/0\": _.e = {},\n          \"ConditionalRenderer:#option/0\": \"__tests__/template.marko_4_content\",\n          option: _.a = {\n            value: 1,\n            content: _.i = {},\n            *[(_.b = [, _.c = {\n              value: 2\n            }, _.d = {\n              value: 3\n            }], Symbol.iterator)]()\n            {\n              yield* _.b\n            }\n          }\n        }, _.e,\n        {\n          \"BranchScopes:#option/0\": _.f = {},\n          \"ConditionalRenderer:#option/0\": \"__tests__/template.marko_5_content\",\n          option: _.c\n        }, _.f,\n        {\n          \"BranchScopes:#option/0\": _.g = {},\n          \"ConditionalRenderer:#option/0\": \"__tests__/template.marko_6_content\",\n          option: _.d\n        }, _.g], _.b[0] = _.a, _.a.content = _._[\n          \"__tests__/template.marko_4_content\"\n          ](_.i), _.c.content = _._[\n          \"__tests__/template.marko_5_content\"\n          ](_.i), _.d.content = _._[\n          \"__tests__/template.marko_6_content\"\n          ](_.i), _.h),\n        \"__tests__/template.marko_3_option 4 6 8\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-define-tag/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<select\n  class=\"foo\"\n>\n  <option\n    selected=\"\"\n    value=\"1\"\n  >\n    One\n  </option>\n  <option\n    value=\"2\"\n  >\n    Two\n  </option>\n  <option\n    value=\"3\"\n  >\n    Three\n  </option>\n</select>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-define-tag/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <select class=foo><option value=1>One</option><!--M_*4 #option/0--><option value=2>Two</option><!--M_*6 #option/0--><option value=3>Three</option><!--M_*8 #option/0--></select><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.h=[0,3,{\"BranchScopes:#option/0\":_.e={},\"ConditionalRenderer:#option/0\":\"__tests__/template.marko_4_content\",option:_.a={value:1,content:_.i={},*[(_.b=[,_.c={value:2},_.d={value:3}],Symbol.iterator)](){yield*_.b}}},_.e,{\"BranchScopes:#option/0\":_.f={},\"ConditionalRenderer:#option/0\":\"__tests__/template.marko_5_content\",option:_.c},_.f,{\"BranchScopes:#option/0\":_.g={},\"ConditionalRenderer:#option/0\":\"__tests__/template.marko_6_content\",option:_.d},_.g],_.b[0]=_.a,_.a.content=_._[\"__tests__/template.marko_4_content\"](_.i),_.c.content=_._[\"__tests__/template.marko_5_content\"](_.i),_.d.content=_._[\"__tests__/template.marko_6_content\"](_.i),_.h),\"__tests__/template.marko_3_option 4 6 8\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <select\n      class=\"foo\"\n    >\n      <option\n        selected=\"\"\n        value=\"1\"\n      >\n        One\n      </option>\n      <!--M_*4 #option/0-->\n      <option\n        value=\"2\"\n      >\n        Two\n      </option>\n      <!--M_*6 #option/0-->\n      <option\n        value=\"3\"\n      >\n        Three\n      </option>\n      <!--M_*8 #option/0-->\n    </select>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.h = [0, 3,\n        {\n          \"BranchScopes:#option/0\": _.e = {},\n          \"ConditionalRenderer:#option/0\": \"__tests__/template.marko_4_content\",\n          option: _.a = {\n            value: 1,\n            content: _.i = {},\n            *[(_.b = [, _.c = {\n              value: 2\n            }, _.d = {\n              value: 3\n            }], Symbol.iterator)]()\n            {\n              yield* _.b\n            }\n          }\n        }, _.e,\n        {\n          \"BranchScopes:#option/0\": _.f = {},\n          \"ConditionalRenderer:#option/0\": \"__tests__/template.marko_5_content\",\n          option: _.c\n        }, _.f,\n        {\n          \"BranchScopes:#option/0\": _.g = {},\n          \"ConditionalRenderer:#option/0\": \"__tests__/template.marko_6_content\",\n          option: _.d\n        }, _.g], _.b[0] = _.a, _.a.content = _._[\n          \"__tests__/template.marko_4_content\"\n          ](_.i), _.c.content = _._[\n          \"__tests__/template.marko_5_content\"\n          ](_.i), _.d.content = _._[\n          \"__tests__/template.marko_6_content\"\n          ](_.i), _.h),\n        \"__tests__/template.marko_3_option 4 6 8\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/select\nINSERT html/body/select/option0\nINSERT html/body/select/option0/#text\nINSERT html/body/select/#comment0\nINSERT html/body/select/option1\nINSERT html/body/select/option1/#text\nINSERT html/body/select/#comment1\nINSERT html/body/select/option2\nINSERT html/body/select/option2/#text\nINSERT html/body/select/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-define-tag/template.marko",
    "content": "<define/Child|input|>\n  <select class=input.class>\n    <for|option| of=input.option>\n      <option ...option />\n    </for>\n  </select>\n</>\n\n<define/Wrap|{ class: _class, ...rest }|>\n  <Child class=_class ...rest />\n</>\n\n<Wrap class=\"foo\">\n  <@option value=1>One</>\n  <@option value=2>Two</>\n  <@option value=3>Three</>\n</Wrap>\n\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"o\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"content-missing\"\n>\n  <p\n    class=\"foo\"\n  />\n</div>\n<div\n  id=\"content-undefined\"\n>\n  <p\n    class=\"foo\"\n  />\n</div>\n<div\n  id=\"content-set\"\n>\n  <p\n    class=\"foo\"\n  >\n    Hello World\n  </p>\n</div>\n<div\n  id=\"dynamic\"\n>\n  <p\n    class=\"bar\"\n  >\n    Hello World\n  </p>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"content-missing\"\n>\n  <p\n    class=\"foo\"\n  />\n</div>\n<div\n  id=\"content-undefined\"\n>\n  <p\n    class=\"foo\"\n  />\n</div>\n<div\n  id=\"content-set\"\n>\n  <p\n    class=\"foo\"\n  >\n    Hello World\n  </p>\n</div>\n<div\n  id=\"dynamic\"\n>\n  <p\n    class=\"bar\"\n  >\n    Hello World\n  </p>\n</div>\n```\n\n# Mutations\n```\nINSERT div0, div1, div2, div3\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<p><!></p>\";\nexport const $walks = /* get, next(1), replace, out(1) */\" D%l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $input_class = ($scope, input_class) => _._attr_class($scope[\"#p/0\"], input_class);\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/1\");\nexport const $input_content = ($scope, input_content) => $dynamicTag($scope, input_content);\nexport const $input = ($scope, input) => {\n  $input_class($scope, input.class);\n  $input_content($scope, input.content);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content/__snapshots__/dom.expected/tags/wrap.js",
    "content": "export const $template = _child_template;\nexport const $walks = /* <child> */`/${_child_walks}&`;\nimport { $setup as _child, $input_class as _child_input_class, $input_content as _child_input_content, $template as _child_template, $walks as _child_walks } from \"./child.marko\";\nexport function $setup($scope) {\n  _child($scope[\"#childScope/0\"]);\n}\nexport const $_class = ($scope, _class) => _child_input_class($scope[\"#childScope/0\"], _class);\nexport const $rest_content = ($scope, rest_content) => _child_input_content($scope[\"#childScope/0\"], rest_content);\nexport const $input = ($scope, input) => {\n  (({\n    class: $class,\n    ...rest\n  }) => $rest($scope, rest))(input);\n  $_class($scope, input.class);\n};\nexport const $rest = ($scope, rest) => $rest_content($scope, rest.content);\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/tags/wrap.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 42 (min) 46 (brotli)\n_._content_resume(\"c0\", \"Hello World\", \"b\");\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<div id=content-missing>${_wrap_template}</div><div id=content-undefined>${_wrap_template}</div><div id=content-set>${_wrap_template}</div><div id=dynamic><!></div>`;\nexport const $walks = /* next(1), <wrap>, out(1), next(1), <wrap>, out(1), next(1), <wrap>, out(1), next(1), replace, out(1) */`D/${_wrap_walks}&lD/${_wrap_walks}&lD/${_wrap_walks}&lD%l`;\nimport wrapTag from \"./tags/wrap.marko\";\nconst Wrap = wrapTag;\nimport { $setup as _wrap, $_class as _wrap_input_class, $rest_content as _wrap_input_content, $template as _wrap_template, $walks as _wrap_walks } from \"./tags/wrap.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $Wrap_content = _._content_resume(\"__tests__/template.marko_2_content\", \"Hello World\", /* over(1) */\"b\");\nconst $wrap_content = /* @__PURE__ */_._content(\"__tests__/template.marko_1_content\", \"Hello World\", /* over(1) */\"b\");\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/3\", $Wrap_content);\nexport function $setup($scope) {\n  _wrap($scope[\"#childScope/0\"]);\n  _wrap_input_class($scope[\"#childScope/0\"], \"foo\");\n  _wrap_input_content($scope[\"#childScope/0\"]);\n  _wrap($scope[\"#childScope/1\"]);\n  _wrap_input_class($scope[\"#childScope/1\"], \"foo\");\n  _wrap_input_content($scope[\"#childScope/1\"], undefined);\n  _wrap($scope[\"#childScope/2\"]);\n  _wrap_input_content($scope[\"#childScope/2\"], $wrap_content($scope));\n  _wrap_input_class($scope[\"#childScope/2\"], \"foo\");\n  $dynamicTag($scope, Wrap, () => ({\n    class: \"bar\"\n  }));\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<p${_._attr_class(input.class)}>`);\n  _._dynamic_tag($scope0_id, \"#text/1\", input.content, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.content */2));\n  _._html(`</p>${_._el_resume($scope0_id, \"#p/0\", _._serialize_guard($scope0_reason, /* input.class */1))}`);\n  _._serialize_if($scope0_reason, /* input.class, input.content */0) && _._scope($scope0_id, {}, \"__tests__/tags/child.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content/__snapshots__/html.expected/tags/wrap.js",
    "content": "import _child from \"./child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/wrap.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    class: _class,\n    ...rest\n  } = input;\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason({\n    /* input.class, input.content */0: _._serialize_guard($scope0_reason, /* input.class, rest.content */0),\n    /* input.class */1: _._serialize_guard($scope0_reason, /* input.class */1),\n    /* input.content */2: _._serialize_guard($scope0_reason, /* rest.content */2)\n  });\n  _child({\n    class: _class,\n    ...rest\n  });\n  _._serialize_if($scope0_reason, /* input.class, rest.content */0) && _._scope($scope0_id, {\n    \"#childScope/0\": _._serialize_if($scope0_reason, /* input.class, rest.content */0) && _._existing_scope($childScope)\n  }, \"__tests__/tags/wrap.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content/__snapshots__/html.expected/template.js",
    "content": "import wrapTag from \"./tags/wrap.marko\";\nconst Wrap = wrapTag;\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nimport _wrap from \"./tags/wrap.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div id=content-missing>\");\n  _wrap({\n    class: \"foo\"\n  });\n  _._html(\"</div><div id=content-undefined>\");\n  _wrap({\n    class: \"foo\",\n    content: undefined\n  });\n  _._html(\"</div><div id=content-set>\");\n  _wrap({\n    class: \"foo\",\n    content: _._content(\"__tests__/template.marko_1_content\", () => {\n      _._scope_reason();\n      const $scope1_id = _._scope_id();\n      _._html(\"Hello World\");\n    })\n  });\n  _._html(\"</div><div id=dynamic>\");\n  _._dynamic_tag($scope0_id, \"#text/3\", Wrap, {\n    class: \"bar\"\n  }, _._content_resume(\"__tests__/template.marko_2_content\", () => {\n    const $scope2_id = _._scope_id();\n    _._scope_reason();\n    _._html(\"Hello World\");\n  }, $scope0_id), 0, 0);\n  _._html(\"</div>\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"content-missing\"\n>\n  <p\n    class=\"foo\"\n  />\n</div>\n<div\n  id=\"content-undefined\"\n>\n  <p\n    class=\"foo\"\n  />\n</div>\n<div\n  id=\"content-set\"\n>\n  <p\n    class=\"foo\"\n  >\n    Hello World\n  </p>\n</div>\n<div\n  id=\"dynamic\"\n>\n  <p\n    class=\"bar\"\n  >\n    Hello World\n  </p>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"content-missing\"\n    >\n      <p\n        class=\"foo\"\n      />\n    </div>\n    <div\n      id=\"content-undefined\"\n    >\n      <p\n        class=\"foo\"\n      />\n    </div>\n    <div\n      id=\"content-set\"\n    >\n      <p\n        class=\"foo\"\n      >\n        Hello World\n      </p>\n    </div>\n    <div\n      id=\"dynamic\"\n    >\n      <p\n        class=\"bar\"\n      >\n        Hello World\n      </p>\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div\n  id=\"content-missing\"\n>\n  <p\n    class=\"foo\"\n  />\n</div>\n<div\n  id=\"content-undefined\"\n>\n  <p\n    class=\"foo\"\n  />\n</div>\n<div\n  id=\"content-set\"\n>\n  <p\n    class=\"foo\"\n  >\n    Hello World\n  </p>\n</div>\n<div\n  id=\"dynamic\"\n>\n  <p\n    class=\"bar\"\n  >\n    Hello World\n  </p>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div id=content-missing><p class=foo></p></div><div id=content-undefined><p class=foo></p></div><div id=content-set><p class=foo>Hello World</p></div><div id=dynamic><p class=bar>Hello World</p></div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"content-missing\"\n    >\n      <p\n        class=\"foo\"\n      />\n    </div>\n    <div\n      id=\"content-undefined\"\n    >\n      <p\n        class=\"foo\"\n      />\n    </div>\n    <div\n      id=\"content-set\"\n    >\n      <p\n        class=\"foo\"\n      >\n        Hello World\n      </p>\n    </div>\n    <div\n      id=\"dynamic\"\n    >\n      <p\n        class=\"bar\"\n      >\n        Hello World\n      </p>\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/div0/p\nINSERT html/body/div1\nINSERT html/body/div1/p\nINSERT html/body/div2\nINSERT html/body/div2/p\nINSERT html/body/div2/p/#text\nINSERT html/body/div3\nINSERT html/body/div3/p\nINSERT html/body/div3/p/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content/tags/child.marko",
    "content": "<p class=input.class>\n  <${input.content} />\n</p>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content/tags/wrap.marko",
    "content": "<const/{ class: _class, ...rest }=input>\n<child class=_class ...rest />\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content/template.marko",
    "content": "import wrapTag from \"<wrap>\";\nstatic const Wrap = wrapTag\n\n<div#content-missing>\n  <wrap class=\"foo\" />\n</div>\n\n<div#content-undefined>\n  <wrap class=\"foo\" content=undefined />\n</div>\n\n<div#content-set>\n  <wrap class=\"foo\">Hello World</wrap>\n</div>\n\n<div#dynamic>\n  <${Wrap} class=\"bar\">Hello World</>\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content-rest/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"r\",\n      \"$init\": \"o\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content-rest/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"content-missing\"\n>\n  <p\n    class=\"foo\"\n  />\n</div>\n<div\n  id=\"content-undefined\"\n>\n  <p\n    class=\"foo\"\n  />\n</div>\n<div\n  id=\"content-set\"\n>\n  <p\n    class=\"foo\"\n  >\n    Hello World\n  </p>\n</div>\n<div\n  id=\"dynamic\"\n>\n  <p\n    class=\"bar\"\n  >\n    Hello World\n  </p>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content-rest/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"content-missing\"\n>\n  <p\n    class=\"foo\"\n  />\n</div>\n<div\n  id=\"content-undefined\"\n>\n  <p\n    class=\"foo\"\n  />\n</div>\n<div\n  id=\"content-set\"\n>\n  <p\n    class=\"foo\"\n  >\n    Hello World\n  </p>\n</div>\n<div\n  id=\"dynamic\"\n>\n  <p\n    class=\"bar\"\n  >\n    Hello World\n  </p>\n</div>\n```\n\n# Mutations\n```\nINSERT div0, div1, div2, div3\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content-rest/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<p></p>\";\nexport const $walks = /* get, over(1) */\" b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $input_class__OR__rest__script = _._script(\"__tests__/tags/child.marko_0_input_class_rest\", $scope => _._attrs_script($scope, \"#p/0\"));\nconst $input_class__OR__rest = /* @__PURE__ */_._or(5, $scope => {\n  _._attrs_content($scope, \"#p/0\", {\n    class: $scope.input_class,\n    ...$scope.rest\n  });\n  $input_class__OR__rest__script($scope);\n});\nexport const $input_class = /* @__PURE__ */_._const(\"input_class\", $input_class__OR__rest);\nexport const $rest = /* @__PURE__ */_._const(\"rest\", $input_class__OR__rest);\nexport const $input = ($scope, input) => {\n  (({\n    class: $class,\n    ...rest\n  }) => $rest($scope, rest))(input);\n  $input_class($scope, input.class);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content-rest/__snapshots__/dom.expected/tags/wrap.js",
    "content": "export const $template = _child_template;\nexport const $walks = /* <child> */`/${_child_walks}&`;\nimport { $setup as _child, $input_class as _child_input_class, $rest as _child_input_$rest, $template as _child_template, $walks as _child_walks } from \"./child.marko\";\nexport function $setup($scope) {\n  _child($scope[\"#childScope/0\"]);\n}\nexport const $_class = ($scope, _class) => _child_input_class($scope[\"#childScope/0\"], _class);\nexport const $rest = ($scope, rest) => _child_input_$rest($scope[\"#childScope/0\"], (({\n  class: $class,\n  ...rest\n}) => rest)(rest));\nexport const $input = ($scope, input) => {\n  (({\n    class: $class2,\n    ...rest\n  }) => $rest($scope, rest))(input);\n  $_class($scope, input.class);\n};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/tags/wrap.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content-rest/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 130 (min) 77 (brotli)\n(_._script(\"a0\", ($scope) => _._attrs_script($scope, \"a\")),\n  _._content_resume(\"c0\", \"Hello World\", \"b\"),\n  _._content_resume(\"c1\", \"Hello World\", \"b\"),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content-rest/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<div id=content-missing>${_wrap_template}</div><div id=content-undefined>${_wrap_template}</div><div id=content-set>${_wrap_template}</div><div id=dynamic><!></div>`;\nexport const $walks = /* next(1), <wrap>, out(1), next(1), <wrap>, out(1), next(1), <wrap>, out(1), next(1), replace, out(1) */`D/${_wrap_walks}&lD/${_wrap_walks}&lD/${_wrap_walks}&lD%l`;\nimport wrapTag from \"./tags/wrap.marko\";\nconst Wrap = wrapTag;\nimport { $setup as _wrap, $_class as _wrap_input_class, $rest as _wrap_input_$rest, $template as _wrap_template, $walks as _wrap_walks } from \"./tags/wrap.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $Wrap_content = _._content_resume(\"__tests__/template.marko_2_content\", \"Hello World\", /* over(1) */\"b\");\nconst $wrap_content = _._content_resume(\"__tests__/template.marko_1_content\", \"Hello World\", /* over(1) */\"b\");\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/3\", $Wrap_content);\nexport function $setup($scope) {\n  _wrap($scope[\"#childScope/0\"]);\n  _wrap_input_class($scope[\"#childScope/0\"], \"foo\");\n  _wrap_input_$rest($scope[\"#childScope/0\"], {});\n  _wrap($scope[\"#childScope/1\"]);\n  _wrap_input_class($scope[\"#childScope/1\"], \"foo\");\n  _wrap_input_$rest($scope[\"#childScope/1\"], {\n    content: undefined\n  });\n  _wrap($scope[\"#childScope/2\"]);\n  _wrap_input_class($scope[\"#childScope/2\"], \"foo\");\n  _wrap_input_$rest($scope[\"#childScope/2\"], {\n    content: $wrap_content($scope)\n  });\n  $dynamicTag($scope, Wrap, () => ({\n    class: \"bar\"\n  }));\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content-rest/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    class: _class,\n    ...rest\n  } = input;\n  _._html(\"<p\");\n  _._attrs_content({\n    class: input.class,\n    ...rest\n  }, \"#p/0\", $scope0_id, \"p\");\n  _._html(`</p>${_._el_resume($scope0_id, \"#p/0\")}`);\n  _._script($scope0_id, \"__tests__/tags/child.marko_0_input_class_rest\");\n  _._scope($scope0_id, {\n    input_class: input.class,\n    rest\n  }, \"__tests__/tags/child.marko\", 0, {\n    input_class: [\"input.class\"],\n    rest: \"1:28\"\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content-rest/__snapshots__/html.expected/tags/wrap.js",
    "content": "import _child from \"./child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/wrap.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    class: _class,\n    ...rest\n  } = input;\n  const $childScope = _._peek_scope_id();\n  _child({\n    ...rest,\n    class: _class\n  });\n  _._serialize_if($scope0_reason, /* input.class, rest */0) && _._scope($scope0_id, {\n    \"#childScope/0\": _._serialize_if($scope0_reason, /* input.class, rest */0) && _._existing_scope($childScope)\n  }, \"__tests__/tags/wrap.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content-rest/__snapshots__/html.expected/template.js",
    "content": "import wrapTag from \"./tags/wrap.marko\";\nconst Wrap = wrapTag;\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nimport _wrap from \"./tags/wrap.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div id=content-missing>\");\n  _wrap({\n    class: \"foo\"\n  });\n  _._html(\"</div><div id=content-undefined>\");\n  _wrap({\n    class: \"foo\",\n    content: undefined\n  });\n  _._html(\"</div><div id=content-set>\");\n  _wrap({\n    class: \"foo\",\n    content: _._content_resume(\"__tests__/template.marko_1_content\", () => {\n      _._scope_reason();\n      const $scope1_id = _._scope_id();\n      _._html(\"Hello World\");\n    }, $scope0_id)\n  });\n  _._html(\"</div><div id=dynamic>\");\n  _._dynamic_tag($scope0_id, \"#text/3\", Wrap, {\n    class: \"bar\"\n  }, _._content_resume(\"__tests__/template.marko_2_content\", () => {\n    const $scope2_id = _._scope_id();\n    _._scope_reason();\n    _._html(\"Hello World\");\n  }, $scope0_id), 0, 0);\n  _._html(\"</div>\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content-rest/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"content-missing\"\n>\n  <p\n    class=\"foo\"\n  />\n</div>\n<div\n  id=\"content-undefined\"\n>\n  <p\n    class=\"foo\"\n  />\n</div>\n<div\n  id=\"content-set\"\n>\n  <p\n    class=\"foo\"\n  >\n    Hello World\n  </p>\n</div>\n<div\n  id=\"dynamic\"\n>\n  <p\n    class=\"bar\"\n  >\n    Hello World\n  </p>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content-rest/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"content-missing\"\n    >\n      <p\n        class=\"foo\"\n      />\n      <!--M_*3 #p/0-->\n    </div>\n    <div\n      id=\"content-undefined\"\n    >\n      <p\n        class=\"foo\"\n      />\n      <!--M_*6 #p/0-->\n    </div>\n    <div\n      id=\"content-set\"\n    >\n      <p\n        class=\"foo\"\n      >\n        Hello World\n      </p>\n      <!--M_*9 #p/0-->\n    </div>\n    <div\n      id=\"dynamic\"\n    >\n      <p\n        class=\"bar\"\n      >\n        Hello World\n      </p>\n      <!--M_*12 #p/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, 2,\n        {\n          input_class: \"foo\",\n          rest:\n          {}\n        }, 2,\n        {\n          input_class: \"foo\",\n          rest:\n          {}\n        }, 2,\n        {\n          \"BranchScopes:#p/0\": _.b = {},\n          \"ConditionalRenderer:#p/0\": \"__tests__/template.marko_1_content\",\n          input_class: \"foo\",\n          rest: _.a = {\n            content: _.f = {}\n          }\n        }, _.b, 1,\n        {\n          \"BranchScopes:#p/0\": _.d = {},\n          \"ConditionalRenderer:#p/0\": \"__tests__/template.marko_2_content\",\n          input_class: \"bar\",\n          rest: _.c = {}\n        }, _.d], _.a.content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.f), _.c.content = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.f), _.e),\n        \"__tests__/tags/child.marko_0_input_class_rest 3 6 9 12\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content-rest/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div\n  id=\"content-missing\"\n>\n  <p\n    class=\"foo\"\n  />\n</div>\n<div\n  id=\"content-undefined\"\n>\n  <p\n    class=\"foo\"\n  />\n</div>\n<div\n  id=\"content-set\"\n>\n  <p\n    class=\"foo\"\n  >\n    Hello World\n  </p>\n</div>\n<div\n  id=\"dynamic\"\n>\n  <p\n    class=\"bar\"\n  >\n    Hello World\n  </p>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content-rest/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div id=content-missing><p class=foo></p><!--M_*3 #p/0--></div><div id=content-undefined><p class=foo></p><!--M_*6 #p/0--></div><div id=content-set><p class=foo>Hello World</p><!--M_*9 #p/0--></div><div id=dynamic><p class=bar>Hello World</p><!--M_*12 #p/0--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.e=[0,2,{input_class:\"foo\",rest:{}},2,{input_class:\"foo\",rest:{}},2,{\"BranchScopes:#p/0\":_.b={},\"ConditionalRenderer:#p/0\":\"__tests__/template.marko_1_content\",input_class:\"foo\",rest:_.a={content:_.f={}}},_.b,1,{\"BranchScopes:#p/0\":_.d={},\"ConditionalRenderer:#p/0\":\"__tests__/template.marko_2_content\",input_class:\"bar\",rest:_.c={}},_.d],_.a.content=_._[\"__tests__/template.marko_1_content\"](_.f),_.c.content=_._[\"__tests__/template.marko_2_content\"](_.f),_.e),\"__tests__/tags/child.marko_0_input_class_rest 3 6 9 12\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"content-missing\"\n    >\n      <p\n        class=\"foo\"\n      />\n      <!--M_*3 #p/0-->\n    </div>\n    <div\n      id=\"content-undefined\"\n    >\n      <p\n        class=\"foo\"\n      />\n      <!--M_*6 #p/0-->\n    </div>\n    <div\n      id=\"content-set\"\n    >\n      <p\n        class=\"foo\"\n      >\n        Hello World\n      </p>\n      <!--M_*9 #p/0-->\n    </div>\n    <div\n      id=\"dynamic\"\n    >\n      <p\n        class=\"bar\"\n      >\n        Hello World\n      </p>\n      <!--M_*12 #p/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.e = [0, 2,\n        {\n          input_class: \"foo\",\n          rest:\n          {}\n        }, 2,\n        {\n          input_class: \"foo\",\n          rest:\n          {}\n        }, 2,\n        {\n          \"BranchScopes:#p/0\": _.b = {},\n          \"ConditionalRenderer:#p/0\": \"__tests__/template.marko_1_content\",\n          input_class: \"foo\",\n          rest: _.a = {\n            content: _.f = {}\n          }\n        }, _.b, 1,\n        {\n          \"BranchScopes:#p/0\": _.d = {},\n          \"ConditionalRenderer:#p/0\": \"__tests__/template.marko_2_content\",\n          input_class: \"bar\",\n          rest: _.c = {}\n        }, _.d], _.a.content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.f), _.c.content = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.f), _.e),\n        \"__tests__/tags/child.marko_0_input_class_rest 3 6 9 12\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/div0/p\nINSERT html/body/div0/#comment\nINSERT html/body/div1\nINSERT html/body/div1/p\nINSERT html/body/div1/#comment\nINSERT html/body/div2\nINSERT html/body/div2/p\nINSERT html/body/div2/p/#text\nINSERT html/body/div2/#comment\nINSERT html/body/div3\nINSERT html/body/div3/p\nINSERT html/body/div3/p/#text\nINSERT html/body/div3/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content-rest/tags/child.marko",
    "content": "<const/{ class: _class, ...rest }=input>\n<p class=input.class ...rest />\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content-rest/tags/wrap.marko",
    "content": "<const/{ class: _class, ...rest }=input>\n<child ...rest class=_class />\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content-rest/template.marko",
    "content": "import wrapTag from \"<wrap>\";\nstatic const Wrap = wrapTag\n\n<div#content-missing>\n  <wrap class=\"foo\" />\n</div>\n\n<div#content-undefined>\n  <wrap class=\"foo\" content=undefined />\n</div>\n\n<div#content-set>\n  <wrap class=\"foo\">Hello World</wrap>\n</div>\n\n<div#dynamic>\n  <${Wrap} class=\"bar\">Hello World</>\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-defaults/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-defaults/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"value-missing\"\n>\n  <input\n    class=\"foo\"\n    value=\"override\"\n  />\n  <input\n    class=\"foo\"\n    value=\"default\"\n  />\n</div>\n<div\n  id=\"value-undefined\"\n>\n  <input\n    value=\"override\"\n  />\n  <input />\n</div>\n<div\n  id=\"dynamic-value-set\"\n>\n  <input\n    class=\"bar\"\n    value=\"override\"\n  />\n  <input\n    class=\"bar\"\n    value=\"abcd\"\n  />\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-defaults/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"value-missing\"\n>\n  <input\n    class=\"foo\"\n    value=\"override\"\n  />\n  <input\n    class=\"foo\"\n    value=\"default\"\n  />\n</div>\n<div\n  id=\"value-undefined\"\n>\n  <input\n    value=\"override\"\n  />\n  <input />\n</div>\n<div\n  id=\"dynamic-value-set\"\n>\n  <input\n    class=\"bar\"\n    value=\"override\"\n  />\n  <input\n    class=\"bar\"\n    value=\"abcd\"\n  />\n</div>\n```\n\n# Mutations\n```\nINSERT div0, div1, div2\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-defaults/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<input>\";\nexport const $walks = /* get, over(1) */\" b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $input_value = /* @__PURE__ */_._const(\"input_value\", $scope => _._attr_input_value_default($scope, \"#input/0\", $scope.input_value));\nexport const $input_class = ($scope, input_class) => _._attr_class($scope[\"#input/0\"], input_class);\nexport const $input = ($scope, input) => {\n  $input_class($scope, input.class);\n  $input_value($scope, input.value);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-defaults/__snapshots__/dom.expected/tags/wrap.js",
    "content": "export const $template = `${_child_template}${_child_template}`;\nexport const $walks = /* <child>, <child> */`/${_child_walks}&/${_child_walks}&`;\nimport { $setup as _child, $input_value as _child_input_value, $input_class as _child_input_class, $template as _child_template, $walks as _child_walks } from \"./child.marko\";\nexport function $setup($scope) {\n  _child($scope[\"#childScope/0\"]);\n  _child_input_value($scope[\"#childScope/0\"], \"override\");\n  _child($scope[\"#childScope/1\"]);\n}\nconst $input_class = ($scope, input_class) => _child_input_class($scope[\"#childScope/0\"], input_class);\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $input = /* @__PURE__ */_._const(\"input\", $scope => {\n  const $child_input_spread = {\n    value: \"default\",\n    ...$scope.input\n  };\n  _child_input_class($scope[\"#childScope/1\"], $child_input_spread.class);\n  _child_input_value($scope[\"#childScope/1\"], $child_input_spread.value);\n  $input_class($scope, $scope.input.class);\n});\nexport default /* @__PURE__ */_._template(\"__tests__/tags/wrap.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-defaults/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-defaults/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<div id=value-missing>${_wrap_template}</div><div id=value-undefined>${_wrap_template}</div><div id=dynamic-value-set><!></div>`;\nexport const $walks = /* next(1), <wrap>, out(1), next(1), <wrap>, out(1), next(1), replace, out(1) */`D/${_wrap_walks}&lD/${_wrap_walks}&lD%l`;\nimport wrapTag from \"./tags/wrap.marko\";\nconst Wrap = wrapTag;\nimport { $setup as _wrap, $input as _wrap_input, $template as _wrap_template, $walks as _wrap_walks } from \"./tags/wrap.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/2\");\nexport function $setup($scope) {\n  _wrap($scope[\"#childScope/0\"]);\n  _wrap_input($scope[\"#childScope/0\"], {\n    class: \"foo\"\n  });\n  _wrap($scope[\"#childScope/1\"]);\n  _wrap_input($scope[\"#childScope/1\"], {\n    value: undefined\n  });\n  $dynamicTag($scope, Wrap, () => ({\n    class: \"bar\",\n    value: \"abcd\"\n  }));\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-defaults/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<input${_._attr_input_value($scope0_id, \"#input/0\", input.value)}${_._attr_class(input.class)}>${_._el_resume($scope0_id, \"#input/0\", _._serialize_guard($scope0_reason, /* input.class, input.value */0))}`);\n  _._serialize_if($scope0_reason, /* input.class, input.value */0) && _._scope($scope0_id, {}, \"__tests__/tags/child.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-defaults/__snapshots__/html.expected/tags/wrap.js",
    "content": "import _child from \"./child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/wrap.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason(_._serialize_guard($scope0_reason, /* input.class */1));\n  _child({\n    ...input,\n    value: \"override\"\n  });\n  const $childScope2 = _._peek_scope_id();\n  _._set_serialize_reason(_._serialize_guard($scope0_reason, /* input */0));\n  _child({\n    value: \"default\",\n    ...input\n  });\n  _._serialize_if($scope0_reason, /* input */0) && _._scope($scope0_id, {\n    \"#childScope/0\": _._serialize_if($scope0_reason, /* input.class */1) && _._existing_scope($childScope),\n    \"#childScope/1\": _._serialize_if($scope0_reason, /* input */0) && _._existing_scope($childScope2)\n  }, \"__tests__/tags/wrap.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-defaults/__snapshots__/html.expected/template.js",
    "content": "import wrapTag from \"./tags/wrap.marko\";\nconst Wrap = wrapTag;\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nimport _wrap from \"./tags/wrap.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div id=value-missing>\");\n  _wrap({\n    class: \"foo\"\n  });\n  _._html(\"</div><div id=value-undefined>\");\n  _wrap({\n    value: undefined\n  });\n  _._html(\"</div><div id=dynamic-value-set>\");\n  _._dynamic_tag($scope0_id, \"#text/2\", Wrap, {\n    class: \"bar\",\n    value: \"abcd\"\n  }, 0, 0, 0);\n  _._html(\"</div>\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-defaults/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"value-missing\"\n>\n  <input\n    class=\"foo\"\n    value=\"override\"\n  />\n  <input\n    class=\"foo\"\n    value=\"default\"\n  />\n</div>\n<div\n  id=\"value-undefined\"\n>\n  <input\n    value=\"override\"\n  />\n  <input />\n</div>\n<div\n  id=\"dynamic-value-set\"\n>\n  <input\n    class=\"bar\"\n    value=\"override\"\n  />\n  <input\n    class=\"bar\"\n    value=\"abcd\"\n  />\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-defaults/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"value-missing\"\n    >\n      <input\n        class=\"foo\"\n        value=\"override\"\n      />\n      <input\n        class=\"foo\"\n        value=\"default\"\n      />\n    </div>\n    <div\n      id=\"value-undefined\"\n    >\n      <input\n        value=\"override\"\n      />\n      <input />\n    </div>\n    <div\n      id=\"dynamic-value-set\"\n    >\n      <input\n        class=\"bar\"\n        value=\"override\"\n      />\n      <input\n        class=\"bar\"\n        value=\"abcd\"\n      />\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-defaults/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div\n  id=\"value-missing\"\n>\n  <input\n    class=\"foo\"\n    value=\"override\"\n  />\n  <input\n    class=\"foo\"\n    value=\"default\"\n  />\n</div>\n<div\n  id=\"value-undefined\"\n>\n  <input\n    value=\"override\"\n  />\n  <input />\n</div>\n<div\n  id=\"dynamic-value-set\"\n>\n  <input\n    class=\"bar\"\n    value=\"override\"\n  />\n  <input\n    class=\"bar\"\n    value=\"abcd\"\n  />\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-defaults/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div id=value-missing><input value=override class=foo><input value=default class=foo></div><div id=value-undefined><input value=override><input></div><div id=dynamic-value-set><input value=override class=bar><input value=abcd class=bar></div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"value-missing\"\n    >\n      <input\n        class=\"foo\"\n        value=\"override\"\n      />\n      <input\n        class=\"foo\"\n        value=\"default\"\n      />\n    </div>\n    <div\n      id=\"value-undefined\"\n    >\n      <input\n        value=\"override\"\n      />\n      <input />\n    </div>\n    <div\n      id=\"dynamic-value-set\"\n    >\n      <input\n        class=\"bar\"\n        value=\"override\"\n      />\n      <input\n        class=\"bar\"\n        value=\"abcd\"\n      />\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/div0/input0\nINSERT html/body/div0/input1\nINSERT html/body/div1\nINSERT html/body/div1/input0\nINSERT html/body/div1/input1\nINSERT html/body/div2\nINSERT html/body/div2/input0\nINSERT html/body/div2/input1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-defaults/tags/child.marko",
    "content": "<input class=input.class value=input.value>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-defaults/tags/wrap.marko",
    "content": "<child ...input value=\"override\" />\n<child value=\"default\" ...input  />\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-defaults/template.marko",
    "content": "import wrapTag from \"<wrap>\";\nstatic const Wrap = wrapTag\n<div#value-missing>\n  <wrap class=\"foo\" />\n</div>\n<div#value-undefined>\n  <wrap value=undefined />\n</div>\n<div#dynamic-value-set>\n  <${Wrap} class=\"bar\" value=\"abcd\" />\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-multiple-children/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-multiple-children/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"known\"\n>\n  <input\n    class=\"foo\"\n  />\n  <input\n    class=\"foo\"\n  />\n</div>\n<div\n  id=\"dynamic\"\n>\n  <input\n    class=\"bar\"\n  />\n  <input\n    class=\"bar\"\n  />\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-multiple-children/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"known\"\n>\n  <input\n    class=\"foo\"\n  />\n  <input\n    class=\"foo\"\n  />\n</div>\n<div\n  id=\"dynamic\"\n>\n  <input\n    class=\"bar\"\n  />\n  <input\n    class=\"bar\"\n  />\n</div>\n```\n\n# Mutations\n```\nINSERT div0, div1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-multiple-children/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<input>\";\nexport const $walks = /* get, over(1) */\" b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $input_value = /* @__PURE__ */_._const(\"input_value\", $scope => _._attr_input_value_default($scope, \"#input/0\", $scope.input_value));\nexport const $input_class = ($scope, input_class) => _._attr_class($scope[\"#input/0\"], input_class);\nexport const $input = ($scope, input) => {\n  $input_class($scope, input.class);\n  $input_value($scope, input.value);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-multiple-children/__snapshots__/dom.expected/tags/wrap.js",
    "content": "export const $template = `${_child_template}${_child_template}`;\nexport const $walks = /* <child>, <child> */`/${_child_walks}&/${_child_walks}&`;\nimport { $setup as _child, $input_class as _child_input_class, $input_value as _child_input_value, $template as _child_template, $walks as _child_walks } from \"./child.marko\";\nexport function $setup($scope) {\n  _child($scope[\"#childScope/0\"]);\n  _child($scope[\"#childScope/1\"]);\n}\nexport const $input_class = ($scope, input_class) => {\n  _child_input_class($scope[\"#childScope/0\"], input_class);\n  _child_input_class($scope[\"#childScope/1\"], input_class);\n};\nexport const $input_value = ($scope, input_value) => {\n  _child_input_value($scope[\"#childScope/0\"], input_value);\n  _child_input_value($scope[\"#childScope/1\"], input_value);\n};\nexport const $input = ($scope, input) => {\n  $input_class($scope, input.class);\n  $input_value($scope, input.value);\n};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/tags/wrap.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-multiple-children/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-multiple-children/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<div id=known>${_wrap_template}</div><div id=dynamic><!></div>`;\nexport const $walks = /* next(1), <wrap>, out(1), next(1), replace, out(1) */`D/${_wrap_walks}&lD%l`;\nimport wrapTag from \"./tags/wrap.marko\";\nconst Wrap = wrapTag;\nimport { $setup as _wrap, $input_class as _wrap_input_class, $input_value as _wrap_input_value, $template as _wrap_template, $walks as _wrap_walks } from \"./tags/wrap.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/1\");\nexport function $setup($scope) {\n  _wrap($scope[\"#childScope/0\"]);\n  _wrap_input_class($scope[\"#childScope/0\"], \"foo\");\n  _wrap_input_value($scope[\"#childScope/0\"]);\n  $dynamicTag($scope, Wrap, () => ({\n    class: \"bar\"\n  }));\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-multiple-children/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<input${_._attr_input_value($scope0_id, \"#input/0\", input.value)}${_._attr_class(input.class)}>${_._el_resume($scope0_id, \"#input/0\", _._serialize_guard($scope0_reason, /* input.class, input.value */0))}`);\n  _._serialize_if($scope0_reason, /* input.class, input.value */0) && _._scope($scope0_id, {}, \"__tests__/tags/child.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-multiple-children/__snapshots__/html.expected/tags/wrap.js",
    "content": "import _child from \"./child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/wrap.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason(_._serialize_guard($scope0_reason, /* input.class, input.value */0));\n  _child(input);\n  const $childScope2 = _._peek_scope_id();\n  _._set_serialize_reason(_._serialize_guard($scope0_reason, /* input.class, input.value */0));\n  _child(input);\n  _._serialize_if($scope0_reason, /* input.class, input.value */0) && _._scope($scope0_id, {\n    \"#childScope/0\": _._serialize_if($scope0_reason, /* input.class, input.value */0) && _._existing_scope($childScope),\n    \"#childScope/1\": _._serialize_if($scope0_reason, /* input.class, input.value */0) && _._existing_scope($childScope2)\n  }, \"__tests__/tags/wrap.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-multiple-children/__snapshots__/html.expected/template.js",
    "content": "import wrapTag from \"./tags/wrap.marko\";\nconst Wrap = wrapTag;\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nimport _wrap from \"./tags/wrap.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div id=known>\");\n  _wrap({\n    class: \"foo\"\n  });\n  _._html(\"</div><div id=dynamic>\");\n  _._dynamic_tag($scope0_id, \"#text/1\", Wrap, {\n    class: \"bar\"\n  }, 0, 0, 0);\n  _._html(\"</div>\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-multiple-children/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"known\"\n>\n  <input\n    class=\"foo\"\n  />\n  <input\n    class=\"foo\"\n  />\n</div>\n<div\n  id=\"dynamic\"\n>\n  <input\n    class=\"bar\"\n  />\n  <input\n    class=\"bar\"\n  />\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-multiple-children/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"known\"\n    >\n      <input\n        class=\"foo\"\n      />\n      <input\n        class=\"foo\"\n      />\n    </div>\n    <div\n      id=\"dynamic\"\n    >\n      <input\n        class=\"bar\"\n      />\n      <input\n        class=\"bar\"\n      />\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-multiple-children/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div\n  id=\"known\"\n>\n  <input\n    class=\"foo\"\n  />\n  <input\n    class=\"foo\"\n  />\n</div>\n<div\n  id=\"dynamic\"\n>\n  <input\n    class=\"bar\"\n  />\n  <input\n    class=\"bar\"\n  />\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-multiple-children/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div id=known><input class=foo><input class=foo></div><div id=dynamic><input class=bar><input class=bar></div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"known\"\n    >\n      <input\n        class=\"foo\"\n      />\n      <input\n        class=\"foo\"\n      />\n    </div>\n    <div\n      id=\"dynamic\"\n    >\n      <input\n        class=\"bar\"\n      />\n      <input\n        class=\"bar\"\n      />\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/div0/input0\nINSERT html/body/div0/input1\nINSERT html/body/div1\nINSERT html/body/div1/input0\nINSERT html/body/div1/input1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-multiple-children/tags/child.marko",
    "content": "<input class=input.class value=input.value>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-multiple-children/tags/wrap.marko",
    "content": "<child ...input/>\n<child ...input/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-multiple-children/template.marko",
    "content": "import wrapTag from \"<wrap>\";\nstatic const Wrap = wrapTag\n\n<div#known>\n  <wrap class=\"foo\" />\n</div>\n\n<div#dynamic>\n  <${Wrap} class=\"bar\" />\n</div>\n\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-multiple-spread-exprs/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-multiple-spread-exprs/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  class=\"foo\"\n  data-a=\"1\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-multiple-spread-exprs/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<input\n  class=\"foo\"\n  data-a=\"1\"\n/>\n```\n\n# Mutations\n```\nINSERT input\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-multiple-spread-exprs/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<input>\";\nexport const $walks = /* get, over(1) */\" b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $input_value = /* @__PURE__ */_._const(\"input_value\", $scope => _._attr_input_value_default($scope, \"#input/0\", $scope.input_value));\nexport const $input_class = ($scope, input_class) => _._attr_class($scope[\"#input/0\"], input_class);\nexport const $input_a = ($scope, input_a) => _._attr($scope[\"#input/0\"], \"data-a\", input_a);\nexport const $input = ($scope, input) => {\n  $input_class($scope, input.class);\n  $input_value($scope, input.value);\n  $input_a($scope, input.a);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-multiple-spread-exprs/__snapshots__/dom.expected/tags/wrap.js",
    "content": "export const $template = _child_template;\nexport const $walks = /* <child> */`/${_child_walks}&`;\nimport { $setup as _child, $input_class as _child_input_class, $input_value as _child_input_value, $input_a as _child_input_a, $template as _child_template, $walks as _child_walks } from \"./child.marko\";\nexport function $setup($scope) {\n  _child($scope[\"#childScope/0\"]);\n}\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $input = /* @__PURE__ */_._const(\"input\", $scope => {\n  const $child_input_spread = {\n    ...$scope.input,\n    ...{\n      a: 1\n    }\n  };\n  _child_input_class($scope[\"#childScope/0\"], $child_input_spread.class);\n  _child_input_value($scope[\"#childScope/0\"], $child_input_spread.value);\n  _child_input_a($scope[\"#childScope/0\"], $child_input_spread.a);\n});\nexport default /* @__PURE__ */_._template(\"__tests__/tags/wrap.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-multiple-spread-exprs/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-multiple-spread-exprs/__snapshots__/dom.expected/template.js",
    "content": "export const $template = _wrap_template;\nexport const $walks = /* <wrap> */`/${_wrap_walks}&`;\nimport { $setup as _wrap, $input as _wrap_input, $template as _wrap_template, $walks as _wrap_walks } from \"./tags/wrap.marko\";\nexport function $setup($scope) {\n  _wrap($scope[\"#childScope/0\"]);\n  _wrap_input($scope[\"#childScope/0\"], {\n    class: \"foo\"\n  });\n}\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-multiple-spread-exprs/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<input${_._attr_input_value($scope0_id, \"#input/0\", input.value)}${_._attr_class(input.class)}${_._attr(\"data-a\", input.a)}>${_._el_resume($scope0_id, \"#input/0\", _._serialize_guard($scope0_reason, /* input.class, input.value, input.a */0))}`);\n  _._serialize_if($scope0_reason, /* input.class, input.value, input.a */0) && _._scope($scope0_id, {}, \"__tests__/tags/child.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-multiple-spread-exprs/__snapshots__/html.expected/tags/wrap.js",
    "content": "import _child from \"./child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/wrap.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason(_._serialize_guard($scope0_reason, /* input */0));\n  _child({\n    ...input,\n    ...{\n      a: 1\n    }\n  });\n  _._serialize_if($scope0_reason, /* input */0) && _._scope($scope0_id, {\n    \"#childScope/0\": _._serialize_if($scope0_reason, /* input */0) && _._existing_scope($childScope)\n  }, \"__tests__/tags/wrap.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-multiple-spread-exprs/__snapshots__/html.expected/template.js",
    "content": "import _wrap from \"./tags/wrap.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _wrap({\n    class: \"foo\"\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-multiple-spread-exprs/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  class=\"foo\"\n  data-a=\"1\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-multiple-spread-exprs/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <input\n      class=\"foo\"\n      data-a=\"1\"\n    />\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-multiple-spread-exprs/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<input\n  class=\"foo\"\n  data-a=\"1\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-multiple-spread-exprs/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <input class=foo data-a=1>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <input\n      class=\"foo\"\n      data-a=\"1\"\n    />\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/input\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-multiple-spread-exprs/tags/child.marko",
    "content": "<input class=input.class value=input.value data-a=input.a>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-multiple-spread-exprs/tags/wrap.marko",
    "content": "<child ...input ...{ a: 1 } />\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-multiple-spread-exprs/template.marko",
    "content": "<wrap class=\"foo\" />\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"value-missing\"\n>\n  <input\n    class=\"foo\"\n  />\n</div>\n<div\n  id=\"value-undefined\"\n>\n  <input\n    class=\"foo\"\n  />\n</div>\n<div\n  id=\"value-set\"\n>\n  <input\n    class=\"foo\"\n    value=\"abcd\"\n  />\n</div>\n<div\n  id=\"dynamic\"\n>\n  <input\n    class=\"bar\"\n  />\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"value-missing\"\n>\n  <input\n    class=\"foo\"\n  />\n</div>\n<div\n  id=\"value-undefined\"\n>\n  <input\n    class=\"foo\"\n  />\n</div>\n<div\n  id=\"value-set\"\n>\n  <input\n    class=\"foo\"\n    value=\"abcd\"\n  />\n</div>\n<div\n  id=\"dynamic\"\n>\n  <input\n    class=\"bar\"\n  />\n</div>\n```\n\n# Mutations\n```\nINSERT div0, div1, div2, div3\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<input>\";\nexport const $walks = /* get, over(1) */\" b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $input_value = /* @__PURE__ */_._const(\"input_value\", $scope => _._attr_input_value_default($scope, \"#input/0\", $scope.input_value));\nexport const $input_class = ($scope, input_class) => _._attr_class($scope[\"#input/0\"], input_class);\nexport const $input = ($scope, input) => {\n  $input_class($scope, input.class);\n  $input_value($scope, input.value);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest/__snapshots__/dom.expected/tags/wrap.js",
    "content": "export const $template = _child_template;\nexport const $walks = /* <child> */`/${_child_walks}&`;\nimport { $setup as _child, $input_value as _child_input_value, $input_class as _child_input_class, $template as _child_template, $walks as _child_walks } from \"./child.marko\";\nexport function $setup($scope) {\n  _child($scope[\"#childScope/0\"]);\n}\nexport const $value = ($scope, value) => _child_input_value($scope[\"#childScope/0\"], value);\nexport const $rest_class = ($scope, rest_class) => _child_input_class($scope[\"#childScope/0\"], rest_class);\nexport const $input = ($scope, input) => {\n  (({\n    value,\n    ...rest\n  }) => $rest($scope, rest))(input);\n  $value($scope, input.value);\n};\nexport const $rest = ($scope, rest) => $rest_class($scope, rest.class);\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/tags/wrap.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<div id=value-missing>${_wrap_template}</div><div id=value-undefined>${_wrap_template}</div><div id=value-set>${_wrap_template}</div><div id=dynamic><!></div>`;\nexport const $walks = /* next(1), <wrap>, out(1), next(1), <wrap>, out(1), next(1), <wrap>, out(1), next(1), replace, out(1) */`D/${_wrap_walks}&lD/${_wrap_walks}&lD/${_wrap_walks}&lD%l`;\nimport wrapTag from \"./tags/wrap.marko\";\nconst Wrap = wrapTag;\nimport { $setup as _wrap, $rest_class as _wrap_input_class, $value as _wrap_input_value, $template as _wrap_template, $walks as _wrap_walks } from \"./tags/wrap.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/3\");\nexport function $setup($scope) {\n  _wrap($scope[\"#childScope/0\"]);\n  _wrap_input_class($scope[\"#childScope/0\"], \"foo\");\n  _wrap_input_value($scope[\"#childScope/0\"]);\n  _wrap($scope[\"#childScope/1\"]);\n  _wrap_input_class($scope[\"#childScope/1\"], \"foo\");\n  _wrap_input_value($scope[\"#childScope/1\"], undefined);\n  _wrap($scope[\"#childScope/2\"]);\n  _wrap_input_class($scope[\"#childScope/2\"], \"foo\");\n  _wrap_input_value($scope[\"#childScope/2\"], \"abcd\");\n  $dynamicTag($scope, Wrap, () => ({\n    class: \"bar\"\n  }));\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<input${_._attr_input_value($scope0_id, \"#input/0\", input.value)}${_._attr_class(input.class)}>${_._el_resume($scope0_id, \"#input/0\", _._serialize_guard($scope0_reason, /* input.class, input.value */0))}`);\n  _._serialize_if($scope0_reason, /* input.class, input.value */0) && _._scope($scope0_id, {}, \"__tests__/tags/child.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest/__snapshots__/html.expected/tags/wrap.js",
    "content": "import _child from \"./child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/wrap.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    value,\n    ...rest\n  } = input;\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason(_._serialize_guard($scope0_reason, /* input.value, rest.class */0));\n  _child({\n    value: value,\n    ...rest\n  });\n  _._serialize_if($scope0_reason, /* input.value, rest.class */0) && _._scope($scope0_id, {\n    \"#childScope/0\": _._serialize_if($scope0_reason, /* input.value, rest.class */0) && _._existing_scope($childScope)\n  }, \"__tests__/tags/wrap.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest/__snapshots__/html.expected/template.js",
    "content": "import wrapTag from \"./tags/wrap.marko\";\nconst Wrap = wrapTag;\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nimport _wrap from \"./tags/wrap.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div id=value-missing>\");\n  _wrap({\n    class: \"foo\"\n  });\n  _._html(\"</div><div id=value-undefined>\");\n  _wrap({\n    class: \"foo\",\n    value: undefined\n  });\n  _._html(\"</div><div id=value-set>\");\n  _wrap({\n    class: \"foo\",\n    value: \"abcd\"\n  });\n  _._html(\"</div><div id=dynamic>\");\n  _._dynamic_tag($scope0_id, \"#text/3\", Wrap, {\n    class: \"bar\"\n  }, 0, 0, 0);\n  _._html(\"</div>\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  id=\"value-missing\"\n>\n  <input\n    class=\"foo\"\n  />\n</div>\n<div\n  id=\"value-undefined\"\n>\n  <input\n    class=\"foo\"\n  />\n</div>\n<div\n  id=\"value-set\"\n>\n  <input\n    class=\"foo\"\n    value=\"abcd\"\n  />\n</div>\n<div\n  id=\"dynamic\"\n>\n  <input\n    class=\"bar\"\n  />\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"value-missing\"\n    >\n      <input\n        class=\"foo\"\n      />\n    </div>\n    <div\n      id=\"value-undefined\"\n    >\n      <input\n        class=\"foo\"\n      />\n    </div>\n    <div\n      id=\"value-set\"\n    >\n      <input\n        class=\"foo\"\n        value=\"abcd\"\n      />\n    </div>\n    <div\n      id=\"dynamic\"\n    >\n      <input\n        class=\"bar\"\n      />\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div\n  id=\"value-missing\"\n>\n  <input\n    class=\"foo\"\n  />\n</div>\n<div\n  id=\"value-undefined\"\n>\n  <input\n    class=\"foo\"\n  />\n</div>\n<div\n  id=\"value-set\"\n>\n  <input\n    class=\"foo\"\n    value=\"abcd\"\n  />\n</div>\n<div\n  id=\"dynamic\"\n>\n  <input\n    class=\"bar\"\n  />\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div id=value-missing><input class=foo></div><div id=value-undefined><input class=foo></div><div id=value-set><input value=abcd class=foo></div><div id=dynamic><input class=bar></div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"value-missing\"\n    >\n      <input\n        class=\"foo\"\n      />\n    </div>\n    <div\n      id=\"value-undefined\"\n    >\n      <input\n        class=\"foo\"\n      />\n    </div>\n    <div\n      id=\"value-set\"\n    >\n      <input\n        class=\"foo\"\n        value=\"abcd\"\n      />\n    </div>\n    <div\n      id=\"dynamic\"\n    >\n      <input\n        class=\"bar\"\n      />\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/div0/input\nINSERT html/body/div1\nINSERT html/body/div1/input\nINSERT html/body/div2\nINSERT html/body/div2/input\nINSERT html/body/div3\nINSERT html/body/div3/input\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest/tags/child.marko",
    "content": "<input class=input.class value=input.value>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest/tags/wrap.marko",
    "content": "<const/{ value, ...rest }=input>\n<child value=value ...rest />\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest/template.marko",
    "content": "import wrapTag from \"<wrap>\";\nstatic const Wrap = wrapTag\n\n<div#value-missing>\n  <wrap class=\"foo\" />\n</div>\n\n<div#value-undefined>\n  <wrap class=\"foo\" value=undefined />\n</div>\n\n<div#value-set>\n  <wrap class=\"foo\" value=\"abcd\" />\n</div>\n\n<div#dynamic>\n  <${Wrap} class=\"bar\" />\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-deep/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-deep/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  class=\"foo\"\n  value=\"abcd\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-deep/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<input\n  class=\"foo\"\n  value=\"abcd\"\n/>\n```\n\n# Mutations\n```\nINSERT input\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-deep/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<input>\";\nexport const $walks = /* get, over(1) */\" b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $input_value = /* @__PURE__ */_._const(\"input_value\", $scope => _._attr_input_value_default($scope, \"#input/0\", $scope.input_value));\nexport const $input_class = ($scope, input_class) => _._attr_class($scope[\"#input/0\"], input_class);\nexport const $input = ($scope, input) => {\n  $input_class($scope, input.class);\n  $input_value($scope, input.value);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-deep/__snapshots__/dom.expected/tags/wrap-outer.js",
    "content": "export const $template = _wrap_template;\nexport const $walks = /* <wrap> */`/${_wrap_walks}&`;\nimport { $setup as _wrap, $value as _wrap_input_value, $rest_class as _wrap_input_class, $template as _wrap_template, $walks as _wrap_walks } from \"./wrap.marko\";\nexport function $setup($scope) {\n  _wrap($scope[\"#childScope/0\"]);\n  _wrap_input_value($scope[\"#childScope/0\"], \"abcd\");\n}\nexport const $rest_class = ($scope, rest_class) => _wrap_input_class($scope[\"#childScope/0\"], rest_class);\nexport const $input = ($scope, input) => (({\n  value,\n  ...rest\n}) => $rest($scope, rest))(input);\nexport const $rest = ($scope, rest) => $rest_class($scope, rest.class);\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/tags/wrap-outer.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-deep/__snapshots__/dom.expected/tags/wrap.js",
    "content": "export const $template = _child_template;\nexport const $walks = /* <child> */`/${_child_walks}&`;\nimport { $setup as _child, $input_value as _child_input_value, $input_class as _child_input_class, $template as _child_template, $walks as _child_walks } from \"./child.marko\";\nexport function $setup($scope) {\n  _child($scope[\"#childScope/0\"]);\n}\nexport const $value = ($scope, value) => _child_input_value($scope[\"#childScope/0\"], value);\nexport const $rest_class = ($scope, rest_class) => _child_input_class($scope[\"#childScope/0\"], rest_class);\nexport const $input = ($scope, input) => {\n  (({\n    value,\n    ...rest\n  }) => $rest($scope, rest))(input);\n  $value($scope, input.value);\n};\nexport const $rest = ($scope, rest) => $rest_class($scope, rest.class);\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/tags/wrap.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-deep/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-deep/__snapshots__/dom.expected/template.js",
    "content": "export const $template = _wrapOuter_template;\nexport const $walks = /* <wrap-outer> */`/${_wrapOuter_walks}&`;\nimport { $setup as _wrapOuter, $rest_class as _wrapOuter_input_class, $template as _wrapOuter_template, $walks as _wrapOuter_walks } from \"./tags/wrap-outer.marko\";\nexport function $setup($scope) {\n  _wrapOuter($scope[\"#childScope/0\"]);\n  _wrapOuter_input_class($scope[\"#childScope/0\"], \"foo\");\n}\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-deep/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<input${_._attr_input_value($scope0_id, \"#input/0\", input.value)}${_._attr_class(input.class)}>${_._el_resume($scope0_id, \"#input/0\", _._serialize_guard($scope0_reason, /* input.class, input.value */0))}`);\n  _._serialize_if($scope0_reason, /* input.class, input.value */0) && _._scope($scope0_id, {}, \"__tests__/tags/child.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-deep/__snapshots__/html.expected/tags/wrap-outer.js",
    "content": "import _wrap from \"./wrap.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/wrap-outer.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    value,\n    ...rest\n  } = input;\n  const $childScope = _._peek_scope_id();\n  _wrap({\n    value: \"abcd\",\n    ...rest\n  });\n  _._serialize_if($scope0_reason, /* rest.class */0) && _._scope($scope0_id, {\n    \"#childScope/0\": _._serialize_if($scope0_reason, /* rest.class */0) && _._existing_scope($childScope)\n  }, \"__tests__/tags/wrap-outer.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-deep/__snapshots__/html.expected/tags/wrap.js",
    "content": "import _child from \"./child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/wrap.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    value,\n    ...rest\n  } = input;\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason(_._serialize_guard($scope0_reason, /* input.value, rest.class */0));\n  _child({\n    value: value,\n    ...rest\n  });\n  _._serialize_if($scope0_reason, /* input.value, rest.class */0) && _._scope($scope0_id, {\n    \"#childScope/0\": _._serialize_if($scope0_reason, /* input.value, rest.class */0) && _._existing_scope($childScope)\n  }, \"__tests__/tags/wrap.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-deep/__snapshots__/html.expected/template.js",
    "content": "import _wrapOuter from \"./tags/wrap-outer.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _wrapOuter({\n    class: \"foo\"\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-deep/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  class=\"foo\"\n  value=\"abcd\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-deep/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <input\n      class=\"foo\"\n      value=\"abcd\"\n    />\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-deep/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<input\n  class=\"foo\"\n  value=\"abcd\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-deep/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <input value=abcd class=foo>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <input\n      class=\"foo\"\n      value=\"abcd\"\n    />\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/input\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-deep/tags/child.marko",
    "content": "<input class=input.class value=input.value>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-deep/tags/wrap-outer.marko",
    "content": "<const/{ value, ...rest }=input>\n<wrap value=\"abcd\" ...rest />"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-deep/tags/wrap.marko",
    "content": "<const/{ value, ...rest }=input>\n<child value=value ...rest />\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-deep/template.marko",
    "content": "<wrap-outer class=\"foo\" />\n\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"m\",\n      \"$init\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"class\":\"success\",\"data-rest\":1}`\n\n```html\n<div\n  id=\"known\"\n>\n   \n  <span\n    class=\"success\"\n    data-rest=\"1\"\n  />\n</div>\n<div\n  id=\"dynamic\"\n>\n   \n  <span\n    class=\"success\"\n    data-rest=\"1\"\n  />\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input/__snapshots__/csr.expected.md",
    "content": "# Render `{\"class\":\"success\",\"data-rest\":1}`\n\n```html\n<div\n  id=\"known\"\n>\n   \n  <span\n    class=\"success\"\n    data-rest=\"1\"\n  />\n</div>\n<div\n  id=\"dynamic\"\n>\n   \n  <span\n    class=\"success\"\n    data-rest=\"1\"\n  />\n</div>\n```\n\n# Mutations\n```\nINSERT div0, div1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \" <span></span>\";\nexport const $walks = /* over(1), get, over(1) */\"b b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $_class__OR__rest__script = _._script(\"__tests__/tags/child.marko_0__class_rest\", $scope => _._attrs_script($scope, \"#span/0\"));\nconst $_class__OR__rest = /* @__PURE__ */_._or(5, $scope => {\n  _._attrs_content($scope, \"#span/0\", {\n    class: $scope._class,\n    ...$scope.rest\n  });\n  $_class__OR__rest__script($scope);\n});\nexport const $_class = /* @__PURE__ */_._const(\"_class\", $_class__OR__rest);\nexport const $rest = /* @__PURE__ */_._const(\"rest\", $_class__OR__rest);\nexport const $input = ($scope, input) => {\n  (({\n    class: $class,\n    ...rest\n  }) => $rest($scope, rest))(input);\n  $_class($scope, input.class);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 70 (min) 62 (brotli)\n(_._script(\"a0\", ($scope) => _._attrs_script($scope, \"a\")),\n  _._resume_dynamic_tag(),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<div id=known>${_child_template}</div><div id=dynamic><!></div>`;\nexport const $walks = /* next(1), <child>, out(1), next(1), replace, out(1) */`D/${_child_walks}&lD%l`;\nimport childTag from \"./tags/child.marko\";\nconst Child = childTag;\nimport { $setup as _child, $_class as _child_input_class, $rest as _child_input_$rest, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\n_._resume_dynamic_tag();\nexport function $setup($scope) {\n  _child($scope[\"#childScope/0\"]);\n}\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/1\");\nexport const $input = /* @__PURE__ */_._const(\"input\", $scope => {\n  _child_input_class($scope[\"#childScope/0\"], $scope.input.class);\n  _child_input_$rest($scope[\"#childScope/0\"], (({\n    class: $class,\n    ...rest\n  }) => rest)($scope.input));\n  $dynamicTag($scope, Child, () => $scope.input);\n});\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    class: _class,\n    ...rest\n  } = input;\n  _._html(\" <span\");\n  _._attrs_content({\n    class: _class,\n    ...rest\n  }, \"#span/0\", $scope0_id, \"span\");\n  _._html(`</span>${_._el_resume($scope0_id, \"#span/0\")}`);\n  _._script($scope0_id, \"__tests__/tags/child.marko_0__class_rest\");\n  _._scope($scope0_id, {\n    _class,\n    rest\n  }, \"__tests__/tags/child.marko\", 0, {\n    _class: \"1:17\",\n    rest: \"1:28\"\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input/__snapshots__/html.expected/template.js",
    "content": "import childTag from \"./tags/child.marko\";\nconst Child = childTag;\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nimport _child from \"./tags/child.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div id=known>\");\n  const $childScope = _._peek_scope_id();\n  _child(input);\n  _._html(\"</div><div id=dynamic>\");\n  _._dynamic_tag($scope0_id, \"#text/1\", Child, input, 0, 0, _._serialize_guard($scope0_reason, /* input */0));\n  _._html(\"</div>\");\n  _._serialize_if($scope0_reason, /* input */0) && _._scope($scope0_id, {\n    \"#childScope/0\": _._serialize_if($scope0_reason, /* input */0) && _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"class\":\"success\",\"data-rest\":1}`\n\n```html\n<div\n  id=\"known\"\n>\n   \n  <span\n    class=\"success\"\n    data-rest=\"1\"\n  />\n</div>\n<div\n  id=\"dynamic\"\n>\n   \n  <span\n    class=\"success\"\n    data-rest=\"1\"\n  />\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input/__snapshots__/resume.expected.md",
    "content": "# Render `{\"class\":\"success\",\"data-rest\":1}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"known\"\n    >\n       \n      <span\n        class=\"success\"\n        data-rest=\"1\"\n      />\n      <!--M_*2 #span/0-->\n    </div>\n    <div\n      id=\"dynamic\"\n    >\n       \n      <span\n        class=\"success\"\n        data-rest=\"1\"\n      />\n      <!--M_*4 #span/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 1,\n        {\n          _class: \"success\",\n          rest:\n          {\n            \"data-rest\": 1\n          }\n        }, 1,\n        {\n          _class: \"success\",\n          rest:\n          {\n            \"data-rest\": 1\n          }\n        }]),\n        \"__tests__/tags/child.marko_0__class_rest 2 4\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div\n  id=\"known\"\n>\n   \n  <span\n    class=\"success\"\n    data-rest=\"1\"\n  />\n</div>\n<div\n  id=\"dynamic\"\n>\n   \n  <span\n    class=\"success\"\n    data-rest=\"1\"\n  />\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div id=known> <span class=success data-rest=1></span><!--M_*2 #span/0--></div><div id=dynamic> <span class=success data-rest=1></span><!--M_*4 #span/0--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,1,{_class:\"success\",rest:{\"data-rest\":1}},1,{_class:\"success\",rest:{\"data-rest\":1}}]),\"__tests__/tags/child.marko_0__class_rest 2 4\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div\n      id=\"known\"\n    >\n       \n      <span\n        class=\"success\"\n        data-rest=\"1\"\n      />\n      <!--M_*2 #span/0-->\n    </div>\n    <div\n      id=\"dynamic\"\n    >\n       \n      <span\n        class=\"success\"\n        data-rest=\"1\"\n      />\n      <!--M_*4 #span/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 1,\n        {\n          _class: \"success\",\n          rest:\n          {\n            \"data-rest\": 1\n          }\n        }, 1,\n        {\n          _class: \"success\",\n          rest:\n          {\n            \"data-rest\": 1\n          }\n        }]),\n        \"__tests__/tags/child.marko_0__class_rest 2 4\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/div0/#text\nINSERT html/body/div0/span\nINSERT html/body/div0/#comment\nINSERT html/body/div1\nINSERT html/body/div1/#text\nINSERT html/body/div1/span\nINSERT html/body/div1/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input/tags/child.marko",
    "content": "<const/{ class: _class, ...rest }=input> \n<span class=_class ...rest />\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input/template.marko",
    "content": "import childTag from \"<child>\";\nstatic const Child = childTag\n<div#known>\n  <child ...input />\n</div>\n\n<div#dynamic>\n  <${Child} ...input />\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [{ class: \"success\", [\"data-rest\"]: 1 }],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input-deopt/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"r\",\n      \"$init\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input-deopt/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"class\":\"success\",\"data-rest\":1}`\n\n```html\n<span\n  class=\"success\"\n  data-foo=\"1\"\n  data-rest=\"1\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input-deopt/__snapshots__/csr.expected.md",
    "content": "# Render `{\"class\":\"success\",\"data-rest\":1}`\n\n```html\n<span\n  class=\"success\"\n  data-foo=\"1\"\n  data-rest=\"1\"\n/>\n```\n\n# Mutations\n```\nINSERT #text, span\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input-deopt/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \" <span></span>\";\nexport const $walks = /* over(1), get, over(1) */\"b b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $_class__OR__rest__script = _._script(\"__tests__/tags/child.marko_0__class_rest\", $scope => _._attrs_script($scope, \"#span/0\"));\nconst $_class__OR__rest = /* @__PURE__ */_._or(5, $scope => {\n  _._attrs_content($scope, \"#span/0\", {\n    class: $scope._class,\n    ...$scope.rest\n  });\n  $_class__OR__rest__script($scope);\n});\nexport const $_class = /* @__PURE__ */_._const(\"_class\", $_class__OR__rest);\nexport const $rest = /* @__PURE__ */_._const(\"rest\", $_class__OR__rest);\nexport const $input = ($scope, input) => {\n  (({\n    class: $class,\n    ...rest\n  }) => $rest($scope, rest))(input);\n  $_class($scope, input.class);\n};\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input-deopt/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 46 (min) 50 (brotli)\n(_._script(\"a0\", ($scope) => _._attrs_script($scope, \"a\")), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input-deopt/__snapshots__/dom.expected/template.js",
    "content": "export const $template = _child_template;\nexport const $walks = /* <child> */`/${_child_walks}&`;\nimport { $setup as _child, $_class as _child_input_class, $rest as _child_input_$rest, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nexport function $setup($scope) {\n  _child($scope[\"#childScope/0\"]);\n}\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $input = /* @__PURE__ */_._const(\"input\", $scope => {\n  const $child_input_spread = {\n    \"data-foo\": 1,\n    ...$scope.input\n  };\n  _child_input_class($scope[\"#childScope/0\"], $child_input_spread.class);\n  _child_input_$rest($scope[\"#childScope/0\"], (({\n    class: $class,\n    ...rest\n  }) => rest)($child_input_spread));\n});\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input-deopt/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    class: _class,\n    ...rest\n  } = input;\n  _._html(\" <span\");\n  _._attrs_content({\n    class: _class,\n    ...rest\n  }, \"#span/0\", $scope0_id, \"span\");\n  _._html(`</span>${_._el_resume($scope0_id, \"#span/0\")}`);\n  _._script($scope0_id, \"__tests__/tags/child.marko_0__class_rest\");\n  _._scope($scope0_id, {\n    _class,\n    rest\n  }, \"__tests__/tags/child.marko\", 0, {\n    _class: \"1:17\",\n    rest: \"1:28\"\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input-deopt/__snapshots__/html.expected/template.js",
    "content": "import _child from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $childScope = _._peek_scope_id();\n  _child({\n    \"data-foo\": 1,\n    ...input\n  });\n  _._serialize_if($scope0_reason, /* input */0) && _._scope($scope0_id, {\n    \"#childScope/0\": _._serialize_if($scope0_reason, /* input */0) && _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input-deopt/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"class\":\"success\",\"data-rest\":1}`\n\n```html\n<span\n  class=\"success\"\n  data-foo=\"1\"\n  data-rest=\"1\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input-deopt/__snapshots__/resume.expected.md",
    "content": "# Render `{\"class\":\"success\",\"data-rest\":1}`\n\n```html\n<html>\n  <head />\n  <body>\n    <span\n      class=\"success\"\n      data-foo=\"1\"\n      data-rest=\"1\"\n    />\n    <!--M_*2 #span/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 1,\n        {\n          _class: \"success\",\n          rest:\n          {\n            \"data-foo\": 1,\n            \"data-rest\": 1\n          }\n        }]),\n        \"__tests__/tags/child.marko_0__class_rest 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input-deopt/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<span\n  class=\"success\"\n  data-foo=\"1\"\n  data-rest=\"1\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input-deopt/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n   <span class=success data-foo=1 data-rest=1></span><!--M_*2 #span/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,1,{_class:\"success\",rest:{\"data-foo\":1,\"data-rest\":1}}]),\"__tests__/tags/child.marko_0__class_rest 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <span\n      class=\"success\"\n      data-foo=\"1\"\n      data-rest=\"1\"\n    />\n    <!--M_*2 #span/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 1,\n        {\n          _class: \"success\",\n          rest:\n          {\n            \"data-foo\": 1,\n            \"data-rest\": 1\n          }\n        }]),\n        \"__tests__/tags/child.marko_0__class_rest 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/span\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input-deopt/tags/child.marko",
    "content": "<const/{ class: _class, ...rest }=input> \n<span class=_class ...rest />\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input-deopt/template.marko",
    "content": "<child data-foo=1 ...input />\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input-deopt/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [{ class: \"success\", [\"data-rest\"]: 1 }],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input-with-attr-tags-deopt/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"_\",\n      \"$$for_content__item__script\": \"s\",\n      \"$$for_content__item\": \"a\",\n      \"$$for_content__dynamicTag\": \"e\",\n      \"$$for_content__$params\": \"o\",\n      \"$$for_content__$temp\": \"r\",\n      \"$$for\": \"c\",\n      \"$$_classspandiv_content__input_foo\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input-with-attr-tags-deopt/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"class\":\"success\",\"data-rest\":1}`\n\n```html\n<span\n  class=\"success\"\n  data-foo=\"1\"\n  data-one=\"2\"\n  data-rest=\"1\"\n>\n  <span\n    value=\"1\"\n  >\n    One\n  </span>\n  <span\n    value=\"1\"\n  >\n    Two\n  </span>\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input-with-attr-tags-deopt/__snapshots__/csr.expected.md",
    "content": "# Render `{\"class\":\"success\",\"data-rest\":1}`\n\n```html\n<span\n  class=\"success\"\n  data-foo=\"1\"\n  data-one=\"2\"\n  data-rest=\"1\"\n>\n  <!---->\n  <!---->\n  <span\n    value=\"1\"\n  >\n    One\n  </span>\n  <span\n    value=\"1\"\n  >\n    Two\n  </span>\n  <!---->\n  <!---->\n</span>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #text, span, #comment0, #comment1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input-with-attr-tags-deopt/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $for_content__item__script = _._script(\"__tests__/tags/child.marko_1_item\", $scope => _._attrs_script($scope, \"#span/0\"));\nconst $for_content__item = /* @__PURE__ */_._const(\"item\", $scope => {\n  _._attrs($scope, \"#span/0\", $scope.item);\n  $for_content__item__script($scope);\n});\nconst $for_content__dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/1\");\nconst $for_content__desc = ($scope, desc) => $for_content__dynamicTag($scope, desc);\nconst $for_content__$params = ($scope, $params2) => $for_content__$temp($scope, $params2?.[0]);\nconst $for_content__$temp = ($scope, $temp) => {\n  (({\n    desc,\n    ...item\n  }) => $for_content__item($scope, item))($temp);\n  $for_content__desc($scope, $temp.desc);\n};\nconst $for = /* @__PURE__ */_._for_of(\"#text/0\", \"<span><!></span>\", /* get, next(1), replace, out(1) */\" D%l\", 0, $for_content__$params);\nexport const $foo = ($scope, foo) => $for($scope, [foo]);\nexport const $input = ($scope, input) => $foo($scope, input.foo);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input-with-attr-tags-deopt/__snapshots__/dom.expected/tags/wrap.js",
    "content": "export const $template = \" <!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nexport const $setup = () => {};\nimport { $setup as _child, $foo as _child_input_foo, $template as _child_template, $walks as _child_walks } from \"./child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\n_._resume_dynamic_tag();\nconst $_classspandiv_content__input_foo = /* @__PURE__ */_._closure_get(\"input_foo\", $scope => _child_input_foo($scope[\"#childScope/0\"], $scope._.input_foo));\nconst $_classspandiv_content__setup = $scope => {\n  $_classspandiv_content__input_foo($scope);\n  _child($scope[\"#childScope/0\"]);\n};\nconst $_classspandiv_content = _._content_resume(\"__tests__/tags/wrap.marko_1_content\", `<!>${_child_template}<!>`, /* over(1), <child>, over(1) */`b/${_child_walks}&b`, $_classspandiv_content__setup);\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\", $_classspandiv_content);\nconst $_class__OR__rest = /* @__PURE__ */_._or(6, $scope => $dynamicTag($scope, $scope._class ? 'span' : 'div', () => ({\n  ...$scope.rest,\n  class: $scope._class\n})));\nexport const $_class = /* @__PURE__ */_._const(\"_class\", $_class__OR__rest);\nexport const $rest = /* @__PURE__ */_._const(\"rest\", $_class__OR__rest);\nexport const $input = ($scope, input) => {\n  (({\n    class: $class,\n    foo,\n    ...rest\n  }) => $rest($scope, rest))(input);\n  $input_foo($scope, input.foo);\n  $_class($scope, input.class);\n};\nconst $input_foo__closure = /* @__PURE__ */_._closure($_classspandiv_content__input_foo);\nexport const $input_foo = /* @__PURE__ */_._const(\"input_foo\", $input_foo__closure);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/wrap.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input-with-attr-tags-deopt/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 470 (min) 272 (brotli)\nconst $for_content__item__script = _._script(\"a0\", ($scope) =>\n    _._attrs_script($scope, \"a\"),\n  ),\n  $for_content__item = _._const(5, ($scope) => {\n    (_._attrs($scope, \"a\", $scope.f), $for_content__item__script($scope));\n  }),\n  $for_content__dynamicTag = _._dynamic_tag(1),\n  $for_content__$params = ($scope, $params2) =>\n    $for_content__$temp($scope, $params2?.[0]),\n  $for_content__$temp = ($scope, $temp) => {\n    ((({ desc: desc, ...item }) => {\n      $for_content__item($scope, item);\n    })($temp),\n      (($scope, desc) => {\n        $for_content__dynamicTag($scope, desc);\n      })($scope, $temp.desc));\n  },\n  $for = _._for_of(0, \"<span><!></span>\", \" D%l\", 0, $for_content__$params);\n_._resume_dynamic_tag();\nconst $_classspandiv_content__input_foo = _._closure_get(3, ($scope) =>\n  (($scope, foo) => $for($scope, [foo]))($scope.a, $scope._.d),\n);\n(_._content_resume(\"b0\", \"<!><!><!><!><!>\", \"b/b%c&b\", ($scope) => {\n  ($_classspandiv_content__input_foo($scope), $scope.a);\n}),\n  _._content_resume(\"c0\", \"Two\", \"b\"),\n  _._content_resume(\"c1\", \"One\", \"b\"),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input-with-attr-tags-deopt/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `${_wrap_template}<!>`;\nexport const $walks = /* <wrap>, over(1) */`/${_wrap_walks}&b`;\nimport { $setup as _wrap, $input_foo as _wrap_input_foo, $_class as _wrap_input_class, $rest as _wrap_input_$rest, $template as _wrap_template, $walks as _wrap_walks } from \"./tags/wrap.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $desc_content2 = _._content_resume(\"__tests__/template.marko_2_content\", \"Two\", /* over(1) */\"b\");\nconst $desc_content = _._content_resume(\"__tests__/template.marko_1_content\", \"One\", /* over(1) */\"b\");\nexport function $setup($scope) {\n  _wrap($scope[\"#childScope/0\"]);\n  _wrap_input_foo($scope[\"#childScope/0\"], (_.attrTags(_.attrTag({\n    value: 1,\n    desc: _.attrTag({\n      content: $desc_content($scope)\n    })\n  }), {\n    value: 1,\n    desc: _.attrTag({\n      content: $desc_content2($scope)\n    })\n  })));\n}\nexport const $input = /* @__PURE__ */_._const(\"input\", $scope => {\n  const $wrap_input_spread = {\n    \"data-one\": 2,\n    \"data-foo\": 1,\n    ...$scope.input\n  };\n  _wrap_input_class($scope[\"#childScope/0\"], $wrap_input_spread.class);\n  _wrap_input_$rest($scope[\"#childScope/0\"], (({\n    class: $class,\n    foo,\n    ...rest\n  }) => rest)($wrap_input_spread));\n});\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input-with-attr-tags-deopt/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    foo\n  } = input;\n  _._for_of(foo, ({\n    desc,\n    ...item\n  }) => {\n    const $scope1_id = _._scope_id();\n    _._html(`<span${_._attrs(item, \"#span/0\", $scope1_id, \"span\")}>`);\n    _._dynamic_tag($scope1_id, \"#text/1\", desc, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.foo */0));\n    _._html(`</span>${_._el_resume($scope1_id, \"#span/0\")}`);\n    _._script($scope1_id, \"__tests__/tags/child.marko_1_item\");\n    _._scope($scope1_id, {\n      item\n    }, \"__tests__/tags/child.marko\", \"2:2\", {\n      item: \"2:17\"\n    });\n  }, 0, $scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.foo */0), _._serialize_guard($scope0_reason, /* input.foo */0), _._serialize_guard($scope0_reason, /* input.foo */0), 0, 1);\n  _._serialize_if($scope0_reason, /* input.foo */0) && _._scope($scope0_id, {}, \"__tests__/tags/child.marko\", 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input-with-attr-tags-deopt/__snapshots__/html.expected/tags/wrap.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _child from \"./child.marko\";\nexport default _._template(\"__tests__/tags/wrap.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $input_foo__closures = new Set();\n  const {\n    class: _class,\n    foo,\n    ...rest\n  } = input;\n  _._html(\" \");\n  _._dynamic_tag($scope0_id, \"#text/0\", _class ? 'span' : 'div', {\n    ...rest,\n    class: _class\n  }, _._content_resume(\"__tests__/tags/wrap.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    const $scope1_reason = _._scope_reason();\n    const $childScope = _._peek_scope_id();\n    _._set_serialize_reason(_._serialize_guard($scope0_reason, /* input.foo */1));\n    _child({\n      foo: input.foo\n    });\n    _._subscribe($input_foo__closures, _._scope($scope1_id, {\n      _: _._scope_with_id($scope0_id),\n      \"#childScope/0\": _._serialize_if($scope0_reason, /* input.foo */1) && _._existing_scope($childScope),\n      \"ClosureSignalIndex:input_foo\": _._serialize_if($scope0_reason, /* input.foo */1) && 0\n    }, \"__tests__/tags/wrap.marko\", \"2:4\"));\n    _._resume_branch($scope1_id);\n  }, $scope0_id), 0, _._serialize_guard($scope0_reason, /* input.class, rest */0));\n  _._scope($scope0_id, {\n    input_foo: input.foo,\n    _class: _._serialize_if($scope0_reason, /* rest */3) && _class,\n    rest: _._serialize_if($scope0_reason, /* input.class */2) && rest,\n    \"ClosureScopes:input_foo\": _._serialize_if($scope0_reason, /* input.foo */1) && $input_foo__closures\n  }, \"__tests__/tags/wrap.marko\", 0, {\n    input_foo: [\"input.foo\"],\n    _class: \"1:17\",\n    rest: \"1:33\"\n  });\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input-with-attr-tags-deopt/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _wrap from \"./tags/wrap.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason({\n    /* input.class, rest */0: _._serialize_guard($scope0_reason, /* input */0),\n    /* input.class */2: _._serialize_guard($scope0_reason, /* input */0)\n  });\n  _wrap({\n    \"data-one\": 2,\n    \"data-foo\": 1,\n    ...input,\n    foo: _.attrTags(_.attrTag({\n      value: 1,\n      desc: _.attrTag({\n        content: _._content_resume(\"__tests__/template.marko_1_content\", () => {\n          _._scope_reason();\n          const $scope1_id = _._scope_id();\n          _._html(\"One\");\n        }, $scope0_id)\n      })\n    }), {\n      value: 1,\n      desc: _.attrTag({\n        content: _._content_resume(\"__tests__/template.marko_2_content\", () => {\n          _._scope_reason();\n          const $scope2_id = _._scope_id();\n          _._html(\"Two\");\n        }, $scope0_id)\n      })\n    })\n  });\n  _._serialize_if($scope0_reason, /* input */0) && _._scope($scope0_id, {\n    \"#childScope/0\": _._serialize_if($scope0_reason, /* input */0) && _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input-with-attr-tags-deopt/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"class\":\"success\",\"data-rest\":1}`\n\n```html\n<span\n  class=\"success\"\n  data-foo=\"1\"\n  data-one=\"2\"\n  data-rest=\"1\"\n>\n  <span\n    value=\"1\"\n  >\n    One\n  </span>\n  <span\n    value=\"1\"\n  >\n    Two\n  </span>\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input-with-attr-tags-deopt/__snapshots__/resume.expected.md",
    "content": "# Render `{\"class\":\"success\",\"data-rest\":1}`\n\n```html\n<html>\n  <head />\n  <body>\n    <span\n      class=\"success\"\n      data-foo=\"1\"\n      data-one=\"2\"\n      data-rest=\"1\"\n    >\n      <span\n        value=\"1\"\n      >\n        One\n      </span>\n      <!--M_*6 #span/0-->\n      <span\n        value=\"1\"\n      >\n        Two\n      </span>\n      <!--M_*8 #span/0-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.i = [0, 1, _.e = {\n          input_foo: _.c = {\n            value: 1,\n            desc: _.a = {\n              content: _.j = {},\n              *[Symbol.iterator]()\n              {\n                yield this\n              }\n            },\n            *[(_.b = [, _.h = {\n              value: 1,\n              desc: _.d = {\n                *[Symbol.iterator]()\n                {\n                  yield this\n                }\n              }\n            }], Symbol.iterator)]()\n            {\n              yield* _.b\n            }\n          }\n        }, 1, _.l = {\n          _: _.e\n        }, 1,\n        {\n          item: _.g = {\n            value: 1,\n            *[(_.f = [, _.h], Symbol.iterator)]()\n            {\n              yield* _.f\n            }\n          }\n        }, 1,\n        {\n          item:\n          {\n            value: 1\n          }\n        }], _.b[0] = _.c, _.f[0] = _.g, _.a.content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.j), _.d.content = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.j), (_.k = new Set).add(_.l), _.i),\n        \"__tests__/tags/child.marko_1_item 6 8\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input-with-attr-tags-deopt/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<span\n  class=\"success\"\n  data-foo=\"1\"\n  data-one=\"2\"\n  data-rest=\"1\"\n>\n  <span\n    value=\"1\"\n  >\n    One\n  </span>\n  <span\n    value=\"1\"\n  >\n    Two\n  </span>\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input-with-attr-tags-deopt/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n   <span data-one=2 data-foo=1 data-rest=1 class=success><span value=1>One</span><!--M_*6 #span/0--><span value=1>Two</span><!--M_*8 #span/0--></span><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.i=[0,1,_.e={input_foo:_.c={value:1,desc:_.a={content:_.j={},*[Symbol.iterator](){yield this}},*[(_.b=[,_.h={value:1,desc:_.d={*[Symbol.iterator](){yield this}}}],Symbol.iterator)](){yield*_.b}}},1,_.l={_:_.e},1,{item:_.g={value:1,*[(_.f=[,_.h],Symbol.iterator)](){yield*_.f}}},1,{item:{value:1}}],_.b[0]=_.c,_.f[0]=_.g,_.a.content=_._[\"__tests__/template.marko_1_content\"](_.j),_.d.content=_._[\"__tests__/template.marko_2_content\"](_.j),(_.k=new Set).add(_.l),_.i),\"__tests__/tags/child.marko_1_item 6 8\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <span\n      class=\"success\"\n      data-foo=\"1\"\n      data-one=\"2\"\n      data-rest=\"1\"\n    >\n      <span\n        value=\"1\"\n      >\n        One\n      </span>\n      <!--M_*6 #span/0-->\n      <span\n        value=\"1\"\n      >\n        Two\n      </span>\n      <!--M_*8 #span/0-->\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.i = [0, 1, _.e = {\n          input_foo: _.c = {\n            value: 1,\n            desc: _.a = {\n              content: _.j = {},\n              *[Symbol.iterator]()\n              {\n                yield this\n              }\n            },\n            *[(_.b = [, _.h = {\n              value: 1,\n              desc: _.d = {\n                *[Symbol.iterator]()\n                {\n                  yield this\n                }\n              }\n            }], Symbol.iterator)]()\n            {\n              yield* _.b\n            }\n          }\n        }, 1, _.l = {\n          _: _.e\n        }, 1,\n        {\n          item: _.g = {\n            value: 1,\n            *[(_.f = [, _.h], Symbol.iterator)]()\n            {\n              yield* _.f\n            }\n          }\n        }, 1,\n        {\n          item:\n          {\n            value: 1\n          }\n        }], _.b[0] = _.c, _.f[0] = _.g, _.a.content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.j), _.d.content = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.j), (_.k = new Set).add(_.l), _.i),\n        \"__tests__/tags/child.marko_1_item 6 8\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/span\nINSERT html/body/span/span0\nINSERT html/body/span/span0/#text\nINSERT html/body/span/#comment0\nINSERT html/body/span/span1\nINSERT html/body/span/span1/#text\nINSERT html/body/span/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input-with-attr-tags-deopt/tags/child.marko",
    "content": "<const/{ foo }=input>\n<for|{ desc, ...item }| of=foo>\n  <span ...item><${desc}/></span>\n</for>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input-with-attr-tags-deopt/tags/wrap.marko",
    "content": "<const/{ class: _class, foo, ...rest }=input> \n<${_class ? 'span' : 'div'} ...rest class=_class>\n  <child foo=input.foo />\n</>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input-with-attr-tags-deopt/template.marko",
    "content": "<wrap data-one=2 data-foo=1 ...input>\n  <@foo value=1><@desc>One</></>\n  <@foo value=1><@desc>Two</></>\n</wrap>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input-with-attr-tags-deopt/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [{ class: \"success\", [\"data-rest\"]: 1 }],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-trailing-native-tag-default-function/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_2\": \"t\",\n      \"$init\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-trailing-native-tag-default-function/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  clicked\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-trailing-native-tag-default-function/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button />\n```\n\n# Mutations\n```\nINSERT button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  clicked\n</button>\n```\n\n# Mutations\n```\nINSERT button/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-trailing-native-tag-default-function/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 101 (min) 87 (brotli)\n(_2._script(\"a1\", ($scope) => _2._attrs_script($scope, \"a\")),\n  _2._resume(\"a0\", function (_, el) {\n    el.textContent = \"clicked\";\n  }),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-trailing-native-tag-default-function/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button></button>\";\nexport const $walks = /* get, over(1) */\" b\";\nexport const $setup = () => {};\nimport * as _2 from \"@marko/runtime-tags/debug/dom\";\nconst $rest__script = _2._script(\"__tests__/template.marko_0_rest\", $scope => _2._attrs_script($scope, \"#button/0\"));\nexport const $rest = /* @__PURE__ */_2._const(\"rest\", $scope => {\n  _2._attrs_content($scope, \"#button/0\", {\n    onClick: $onClick,\n    ...$scope.rest\n  });\n  $rest__script($scope);\n});\nexport const $input = ($scope, input) => (({\n  onClick,\n  ...rest\n}) => $rest($scope, rest))(input);\nfunction $onClick(_, el) {\n  el.textContent = \"clicked\";\n}\n_2._resume(\"__tests__/template.marko_0/onClick\", $onClick);\nexport default /* @__PURE__ */_2._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-trailing-native-tag-default-function/__snapshots__/html.expected/template.js",
    "content": "import * as _2 from \"@marko/runtime-tags/debug/html\";\nexport default _2._template(\"__tests__/template.marko\", input => {\n  _2._scope_reason();\n  const $scope0_id = _2._scope_id();\n  const {\n    onClick,\n    ...rest\n  } = input;\n  _2._html(\"<button\");\n  _2._attrs_content({\n    onClick: _2._resume(function (_, el) {\n      el.textContent = \"clicked\";\n    }, \"__tests__/template.marko_0/onClick\"),\n    ...rest\n  }, \"#button/0\", $scope0_id, \"button\");\n  _2._html(`</button>${_2._el_resume($scope0_id, \"#button/0\")}`);\n  _2._script($scope0_id, \"__tests__/template.marko_0_rest\");\n  _2._scope($scope0_id, {\n    rest\n  }, \"__tests__/template.marko\", 0, {\n    rest: \"1:22\"\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-trailing-native-tag-default-function/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  clicked\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-trailing-native-tag-default-function/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          \"EventAttributes:#button/0\":\n          {\n            click: _._[\n              \"__tests__/template.marko_0/onClick\"\n              ]\n          },\n          rest:\n          {}\n        }]),\n        \"__tests__/template.marko_0_rest 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      clicked\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          \"EventAttributes:#button/0\":\n          {\n            click: _._[\n              \"__tests__/template.marko_0/onClick\"\n              ]\n          },\n          rest:\n          {}\n        }]),\n        \"__tests__/template.marko_0_rest 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/button/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-trailing-native-tag-default-function/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-trailing-native-tag-default-function/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button></button><!--M_*1 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{\"EventAttributes:#button/0\":{click:_._[\"__tests__/template.marko_0/onClick\"]},rest:{}}]),\"__tests__/template.marko_0_rest 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          \"EventAttributes:#button/0\":\n          {\n            click: _._[\n              \"__tests__/template.marko_0/onClick\"\n              ]\n          },\n          rest:\n          {}\n        }]),\n        \"__tests__/template.marko_0_rest 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-trailing-native-tag-default-function/template.marko",
    "content": "<const/{ onClick, ...rest }=input>\n<button onClick(_, el) { el.textContent = \"clicked\" } ...rest/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/spread-trailing-native-tag-default-function/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/static-function-invoked-render-reference/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/static-function-invoked-render-reference/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  42\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/static-function-invoked-render-reference/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  42\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/static-function-invoked-render-reference/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/static-function-invoked-render-reference/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div> </div>\";\nexport const $walks = /* next(1), get, out(1) */\"D l\";\nexport function getAnswer() {\n  return 42;\n}\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport function $setup($scope) {\n  _._text($scope[\"#text/0\"], getAnswer());\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/static-function-invoked-render-reference/__snapshots__/html.expected/template.js",
    "content": "export function getAnswer() {\n  return 42;\n}\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div>${_._escape(getAnswer())}</div>`);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/static-function-invoked-render-reference/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  42\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/static-function-invoked-render-reference/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      42\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/static-function-invoked-render-reference/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  42\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/static-function-invoked-render-reference/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>42</div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      42\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/static-function-invoked-render-reference/template.marko",
    "content": "export function getAnswer() {\n  return 42;\n}\n\n<div>${getAnswer()}</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/static-text-followed-by-placeholder/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$count__script\": \"m\",\n      \"$$count\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/static-text-followed-by-placeholder/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n= 0\n<button>\n  Inc\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n= 1\n<button>\n  Inc\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n= 2\n<button>\n  Inc\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/static-text-followed-by-placeholder/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n= 0\n<button>\n  Inc\n</button>\n```\n\n# Mutations\n```\nINSERT #text0, #text1, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n= 1\n<button>\n  Inc\n</button>\n```\n\n# Mutations\n```\nUPDATE #text1 \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n= 2\n<button>\n  Inc\n</button>\n```\n\n# Mutations\n```\nUPDATE #text1 \"1\" => \"2\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/static-text-followed-by-placeholder/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 112 (min) 94 (brotli)\nconst $count__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.b, \"click\", function () {\n      $count($scope, $scope.c + 1);\n    }),\n  ),\n  $count = _._let(2, ($scope) => {\n    (_._text($scope.a, $scope.c), $count__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/static-text-followed-by-placeholder/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"= <!><button>Inc</button>\";\nexport const $walks = /* over(1), replace, over(1), get, over(1) */\"b%b b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $count__script = _._script(\"__tests__/template.marko_0_count\", $scope => _._on($scope[\"#button/1\"], \"click\", function () {\n  $count($scope, $scope.count + 1);\n}));\nconst $count = /* @__PURE__ */_._let(\"count/2\", $scope => {\n  _._text($scope[\"#text/0\"], $scope.count);\n  $count__script($scope);\n});\nexport function $setup($scope) {\n  $count($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/static-text-followed-by-placeholder/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let count = 0;\n  _._html(`= <!>${_._escape(count)}${_._el_resume($scope0_id, \"#text/0\")}<button>Inc</button>${_._el_resume($scope0_id, \"#button/1\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_count\");\n  _._scope($scope0_id, {\n    count\n  }, \"__tests__/template.marko\", 0, {\n    count: \"1:5\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/static-text-followed-by-placeholder/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n= 0\n<button>\n  Inc\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n= 1\n<button>\n  Inc\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n= 2\n<button>\n  Inc\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/static-text-followed-by-placeholder/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    = \n    <!---->\n    0\n    <!--M_*1 #text/0-->\n    <button>\n      Inc\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    = \n    <!---->\n    1\n    <!--M_*1 #text/0-->\n    <button>\n      Inc\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/#text1 \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    = \n    <!---->\n    2\n    <!--M_*1 #text/0-->\n    <button>\n      Inc\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/#text1 \"1\" => \"2\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/static-text-followed-by-placeholder/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n= 0\n<button>\n  Inc\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/static-text-followed-by-placeholder/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  = <!>0<!--M_*1 #text/0--><button>Inc</button><!--M_*1 #button/1--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{count:0}]),\"__tests__/template.marko_0_count 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    = \n    <!---->\n    0\n    <!--M_*1 #text/0-->\n    <button>\n      Inc\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text0\nINSERT html/body/#comment0\nINSERT html/body/#text1\nINSERT html/body/#comment1\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/static-text-followed-by-placeholder/template.marko",
    "content": "let/count = 0\n-- =${\" \"}\n-- ${count}\nbutton onClick() { count++ } -- Inc\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/static-text-followed-by-placeholder/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-attr-toggle-with-static-content/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$open__script\": \"m\",\n      \"$$open\": \"i\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-attr-toggle-with-static-content/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button />\n<div\n  style=\"border:1px solid black\"\n>\n  foo bar\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<div\n  style=\"border:1px solid black;display:none\"\n>\n  foo bar\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<div\n  style=\"border:1px solid black\"\n>\n  foo bar\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<div\n  style=\"border:1px solid black;display:none\"\n>\n  foo bar\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-attr-toggle-with-static-content/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button />\n<div\n  style=\"border:1px solid black\"\n>\n  foo bar\n</div>\n```\n\n# Mutations\n```\nINSERT button, div\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<div\n  style=\"border:1px solid black;display:none\"\n>\n  foo bar\n</div>\n```\n\n# Mutations\n```\nUPDATE div[style] \"border:1px solid black\" => \"border: 1px solid black; display: none;\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<div\n  style=\"border:1px solid black\"\n>\n  foo bar\n</div>\n```\n\n# Mutations\n```\nUPDATE div[style] \"border: 1px solid black; display: none;\" => \"border: 1px solid black;\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<div\n  style=\"border:1px solid black;display:none\"\n>\n  foo bar\n</div>\n```\n\n# Mutations\n```\nUPDATE div[style] \"border: 1px solid black;\" => \"border: 1px solid black; display: none;\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-attr-toggle-with-static-content/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 146 (min) 119 (brotli)\nconst $open__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $open($scope, !$scope.c);\n    }),\n  ),\n  $open = _._let(2, ($scope) => {\n    (_._attr_style_item($scope.b, \"display\", $scope.c ? void 0 : \"none\"),\n      $open__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-attr-toggle-with-static-content/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button></button><div style=\\\"border:1px solid black\\\">foo bar</div>\";\nexport const $walks = /* get, over(1), get, over(1) */\" b b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $open__script = _._script(\"__tests__/template.marko_0_open\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $open($scope, !$scope.open);\n}));\nconst $open = /* @__PURE__ */_._let(\"open/2\", $scope => {\n  _._attr_style_item($scope[\"#div/1\"], \"display\", $scope.open ? undefined : \"none\");\n  $open__script($scope);\n});\nexport function $setup($scope) {\n  $open($scope, true);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-attr-toggle-with-static-content/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let open = true;\n  _._html(`<button></button>${_._el_resume($scope0_id, \"#button/0\")}<div${_._attr_style({\n    display: open ? undefined : \"none\",\n    border: \"1px solid black\"\n  })}>foo bar</div>${_._el_resume($scope0_id, \"#div/1\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_open\");\n  _._scope($scope0_id, {\n    open\n  }, \"__tests__/template.marko\", 0, {\n    open: \"1:5\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-attr-toggle-with-static-content/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button />\n<div\n  style=\"border:1px solid black\"\n>\n  foo bar\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<div\n  style=\"border:1px solid black;display:none\"\n>\n  foo bar\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<div\n  style=\"border:1px solid black\"\n>\n  foo bar\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button />\n<div\n  style=\"border:1px solid black;display:none\"\n>\n  foo bar\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-attr-toggle-with-static-content/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <div\n      style=\"border:1px solid black\"\n    >\n      foo bar\n    </div>\n    <!--M_*1 #div/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          open: !0\n        }]),\n        \"__tests__/template.marko_0_open 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <div\n      style=\"border:1px solid black;display:none\"\n    >\n      foo bar\n    </div>\n    <!--M_*1 #div/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          open: !0\n        }]),\n        \"__tests__/template.marko_0_open 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div[style] \"border:1px solid black\" => \"border: 1px solid black; display: none;\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <div\n      style=\"border:1px solid black\"\n    >\n      foo bar\n    </div>\n    <!--M_*1 #div/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          open: !0\n        }]),\n        \"__tests__/template.marko_0_open 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div[style] \"border: 1px solid black; display: none;\" => \"border: 1px solid black;\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <div\n      style=\"border:1px solid black;display:none\"\n    >\n      foo bar\n    </div>\n    <!--M_*1 #div/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          open: !0\n        }]),\n        \"__tests__/template.marko_0_open 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div[style] \"border: 1px solid black;\" => \"border: 1px solid black; display: none;\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-attr-toggle-with-static-content/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button />\n<div\n  style=\"border:1px solid black\"\n>\n  foo bar\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-attr-toggle-with-static-content/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button></button><!--M_*1 #button/0--><div style=\"border:1px solid black\">foo bar</div><!--M_*1 #div/1--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{open:!0}]),\"__tests__/template.marko_0_open 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button />\n    <!--M_*1 #button/0-->\n    <div\n      style=\"border:1px solid black\"\n    >\n      foo bar\n    </div>\n    <!--M_*1 #div/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          open: !0\n        }]),\n        \"__tests__/template.marko_0_open 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/#comment0\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-attr-toggle-with-static-content/template.marko",
    "content": "let/open=true\nbutton onClick() {\n  open = !open;\n}\n\ndiv style={\n  display: open ? undefined : \"none\",\n  border: \"1px solid black\"\n} -- foo bar\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-attr-toggle-with-static-content/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  class=\"content\"\n>\n  Hello\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div\n  class=\"content\"\n>\n  Hello\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div class=content>Hello</div>\";\nexport const $walks = /* over(1) */\"b\";\nexport const $setup = () => {};\nimport \"virtual:./template.marko.css \\n  .content {\\n    color: green;\\n  }\\n\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag/__snapshots__/html.expected/template.js",
    "content": "import \"virtual:./template.marko.css \\n  .content {\\n    color: green;\\n  }\\n\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div class=content>Hello</div>\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  class=\"content\"\n>\n  Hello\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div\n      class=\"content\"\n    >\n      Hello\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div\n  class=\"content\"\n>\n  Hello\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div class=content>Hello</div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div\n      class=\"content\"\n    >\n      Hello\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag/template.marko",
    "content": "<style>\n  .content {\n    color: green;\n  }\n</style>\n\n<div class=\"content\">Hello</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag-concise/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag-concise/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag-concise/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div />\n```\n\n# Mutations\n```\nINSERT div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag-concise/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag-concise/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* over(1) */\"b\";\nexport const $setup = () => {};\nimport \"virtual:./template.marko.css button {\\n  background-color: yellow;\\n}\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag-concise/__snapshots__/html.expected/template.js",
    "content": "import \"virtual:./template.marko.css button {\\n  background-color: yellow;\\n}\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div></div>\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag-concise/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag-concise/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div />\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag-concise/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag-concise/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div></div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div />\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag-concise/template.marko",
    "content": "div\n  style --\n    button {\n      background-color: yellow;\n    }\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag-modules-default/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div>Hello</div>\";\nexport const $walks = /* get, over(1) */\" b\";\nimport * as myStyles from \"virtual:./template.marko.module.css \\n  .content {\\n    color: green;\\n  }\\n\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport function $setup($scope) {\n  _._attr_class($scope[\"#div/0\"], myStyles.content);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag-modules-default/__snapshots__/html.expected/template.js",
    "content": "import * as myStyles from \"virtual:./template.marko.module.css \\n  .content {\\n    color: green;\\n  }\\n\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div${_._attr_class(myStyles.content)}>Hello</div>`);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag-modules-default/template.marko",
    "content": "<style/myStyles>\n  .content {\n    color: green;\n  }\n</style>\n\n<div class=myStyles.content>Hello</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag-modules-default/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  skip_csr: true,\n  skip_ssr: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag-modules-destructured/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div>Hello</div>\";\nexport const $walks = /* get, over(1) */\" b\";\nimport * as _style from \"virtual:./template.marko.module.css \\n  .content {\\n    color: green;\\n  }\\n\";\nconst {\n  content\n} = _style;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport function $setup($scope) {\n  _._attr_class($scope[\"#div/0\"], content);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag-modules-destructured/__snapshots__/html.expected/template.js",
    "content": "import * as _style from \"virtual:./template.marko.module.css \\n  .content {\\n    color: green;\\n  }\\n\";\nconst {\n  content\n} = _style;\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div${_._attr_class(content)}>Hello</div>`);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag-modules-destructured/template.marko",
    "content": "<style/{content}>\n  .content {\n    color: green;\n  }\n</style>\n\n<div class=content>Hello</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag-modules-destructured/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  skip_csr: true,\n  skip_ssr: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag-type/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag-type/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  class=\"content\"\n>\n  Hello\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag-type/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div\n  class=\"content\"\n>\n  Hello\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag-type/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag-type/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div class=content>Hello</div>\";\nexport const $walks = /* over(1) */\"b\";\nexport const $setup = () => {};\nimport \"virtual:./template.marko.less \\n  .content {\\n    color: green;\\n  }\\n\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag-type/__snapshots__/html.expected/template.js",
    "content": "import \"virtual:./template.marko.less \\n  .content {\\n    color: green;\\n  }\\n\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div class=content>Hello</div>\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag-type/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  class=\"content\"\n>\n  Hello\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag-type/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div\n      class=\"content\"\n    >\n      Hello\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag-type/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div\n  class=\"content\"\n>\n  Hello\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag-type/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div class=content>Hello</div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div\n      class=\"content\"\n    >\n      Hello\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/style-tag-type/template.marko",
    "content": "<style.less>\n  .content {\n    color: green;\n  }\n</style>\n\n<div class=\"content\">Hello</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-param-if-closure/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"_\",\n      \"$$Foo_content2__dynamicTag\": \"o\",\n      \"$$Foo_content2__input_content__OR__input_value\": \"c\",\n      \"$$Foo_content2__input_value\": \"m\",\n      \"$$if_content__setup\": \"r\",\n      \"$$Foo_content__if\": \"a\",\n      \"$$count__script\": \"n\",\n      \"$$count\": \"e\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-param-if-closure/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Increment\n</button>\n```\n\n\n# Render\n```js\ncontainer?.querySelector(\"button\").click();\n```\n```html\n<button>\n  Increment\n</button>\nabc\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-param-if-closure/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  Increment\n</button>\n<!---->\n<!---->\n<!---->\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT button, #comment0, #comment1, #text, #comment2, #comment3, #comment4\n```\n\n# Render\n```js\ncontainer?.querySelector(\"button\").click();\n```\n```html\n<button>\n  Increment\n</button>\n<!---->\n<!---->\nabc\n<!---->\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE #text after #text\nUPDATE #text \" \" => \"abc\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-param-if-closure/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 341 (min) 228 (brotli)\nconst $Foo_content2__dynamicTag = _._dynamic_tag(0, 0, 0, 1),\n  $Foo_content2__input_content__OR__input_value = _._or(5, ($scope) =>\n    $Foo_content2__dynamicTag($scope, $scope.d, () => [$scope.e]),\n  ),\n  $Foo_content2__input_value = _._const(\n    4,\n    $Foo_content2__input_content__OR__input_value,\n  ),\n  $if_content__setup = _._closure_get(\n    3,\n    ($scope) => _._text($scope.a, $scope._._.d),\n    ($scope) => $scope._._,\n  ),\n  $Foo_content__if = _._if(0, \" \", \" b\", $if_content__setup);\n_._content_resume(\"a0\", \"<!><!><!>\", \"b%c\", 0, ($scope, $params3) =>\n  (($scope, v) => $Foo_content__if($scope, v ? 0 : 1))($scope, $params3[0]),\n);\nconst $count__script = _._script(\"a1\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $count($scope, $scope.c + 1);\n    }),\n  ),\n  $count = _._let(2, ($scope) => {\n    ($Foo_content2__input_value($scope.b, $scope.c), $count__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-param-if-closure/__snapshots__/dom.expected/template.js",
    "content": "const $Foo_content2__walks = /* over(1), replace, over(2) */\"b%c\",\n  $Foo_content2__template = \"<!><!><!>\";\nexport const $template = `<button>Increment</button>${$Foo_content2__template}<!>`;\nexport const $walks = /* get, over(1), <Foo>, over(1) */` b/${$Foo_content2__walks}&b`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $Foo_content2__dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\", 0, 0, 1);\nconst $Foo_content2__input_content__OR__input_value = /* @__PURE__ */_._or(5, $scope => $Foo_content2__dynamicTag($scope, $scope.input_content, () => [$scope.input_value]));\nconst $Foo_content2__input_content = /* @__PURE__ */_._const(\"input_content\", $Foo_content2__input_content__OR__input_value);\nconst $Foo_content2__input_value = /* @__PURE__ */_._const(\"input_value\", $Foo_content2__input_content__OR__input_value);\nconst $Foo_content2__$params = ($scope, $params2) => $Foo_content2__input($scope, $params2[0]);\nconst $Foo_content2__input = ($scope, input) => {\n  $Foo_content2__input_content($scope, input.content);\n  $Foo_content2__input_value($scope, input.value);\n};\nconst $if_content__a = /* @__PURE__ */_._closure_get(\"a\", $scope => _._text($scope[\"#text/0\"], $scope._._.a), $scope => $scope._._);\nconst $if_content__setup = $if_content__a;\nconst $Foo_content__if = /* @__PURE__ */_._if(\"#text/0\", \" \", /* get, over(1) */\" b\", $if_content__setup);\nconst $Foo_content__v = ($scope, v) => $Foo_content__if($scope, v ? 0 : 1);\nconst $Foo_content__$params = ($scope, $params3) => $Foo_content__v($scope, $params3[0]);\nconst $Foo_content = _._content_resume(\"__tests__/template.marko_1_content\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", 0, $Foo_content__$params);\nconst $count__script = _._script(\"__tests__/template.marko_0_count\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $count($scope, $scope.count + 1);\n}));\nconst $count = /* @__PURE__ */_._let(\"count/2\", $scope => {\n  $Foo_content2__input_value($scope[\"#childScope/1\"], $scope.count);\n  $count__script($scope);\n});\nconst $a = /* @__PURE__ */_._const(\"a\");\nexport function $setup($scope) {\n  $Foo_content2__input_content($scope[\"#childScope/1\"], $Foo_content($scope));\n  $count($scope, 0);\n  $a($scope, \"abc\");\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-param-if-closure/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let count = 0;\n  const a = \"abc\";\n  const Foo = {\n    content: _._content(\"__tests__/template.marko_3_content\", input => {\n      const $scope3_id = _._scope_id();\n      const $scope3_reason = _._scope_reason();\n      _._dynamic_tag($scope3_id, \"#text/0\", input.content, [input.value], 0, 1, _._serialize_guard($scope3_reason, /* input.content, input.value */0));\n      _._serialize_if($scope3_reason, /* input.content, input.value */0) && _._scope($scope3_id, {\n        input_content: _._serialize_if($scope3_reason, /* input.value */2) && input.content,\n        input_value: _._serialize_if($scope3_reason, /* input.content */1) && input.value\n      }, \"__tests__/template.marko\", \"3:2\", {\n        input_content: [\"input.content\", \"3:13\"],\n        input_value: [\"input.value\", \"3:13\"]\n      });\n    })\n  };\n  _._html(`<button>Increment</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason({\n    /* input.content, input.value */0: /* count */1,\n    /* input.value */2: /* count */1\n  });\n  Foo.content({\n    value: count,\n    content: _._content_resume(\"__tests__/template.marko_1_content\", v => {\n      const $scope1_reason = _._scope_reason();\n      const $scope1_id = _._scope_id();\n      _._if(() => {\n        if (v) {\n          const $scope2_id = _._scope_id();\n          _._html(_._escape(a));\n          _._scope($scope2_id, {\n            _: _._scope_with_id($scope1_id)\n          }, \"__tests__/template.marko\", \"10:4\");\n          return 0;\n        }\n      }, $scope1_id, \"#text/0\", _._serialize_guard($scope1_reason, /* v */0), _._serialize_guard($scope1_reason, /* v */0), _._serialize_guard($scope1_reason, /* v */0), 0, 1);\n      _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"9:2\");\n    }, $scope0_id)\n  });\n  _._script($scope0_id, \"__tests__/template.marko_0_count\");\n  _._scope($scope0_id, {\n    count,\n    a,\n    \"#childScope/1\": _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0, {\n    count: \"1:6\",\n    a: \"2:8\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-param-if-closure/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Increment\n</button>\n```\n\n\n# Render\n```js\ncontainer?.querySelector(\"button\").click();\n```\n```html\n<button>\n  Increment\n</button>\nabc\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-param-if-closure/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Increment\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <!--M_|3 #text/0-->\n    <!--M_]2 #text/0 3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.b = {\n          count: 0,\n          a: \"abc\",\n          \"#childScope/1\": _.a = {\n            \"ConditionalRenderer:#text/0\": \"__tests__/template.marko_1_content\"\n          }\n        }, _.a,\n        {\n          _: _.b\n        }], _.a.input_content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.b), _.c),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text\n```\n\n# Render\n```js\ncontainer?.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Increment\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    abc\n    <!--M_]2 #text/0 3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.b = {\n          count: 0,\n          a: \"abc\",\n          \"#childScope/1\": _.a = {\n            \"ConditionalRenderer:#text/0\": \"__tests__/template.marko_1_content\"\n          }\n        }, _.a,\n        {\n          _: _.b\n        }], _.a.input_content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.b), _.c),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text0\nREMOVE #comment after html/body/#text0\nUPDATE html/body/#text0 \" \" => \"abc\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-param-if-closure/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  Increment\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-param-if-closure/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>Increment</button><!--M_*1 #button/0--><!--M_[--><!--M_|3 #text/0--><!--M_]2 #text/0 3--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.b={count:0,a:\"abc\",\"#childScope/1\":_.a={\"ConditionalRenderer:#text/0\":\"__tests__/template.marko_1_content\"}},_.a,{_:_.b}],_.a.input_content=_._[\"__tests__/template.marko_1_content\"](_.b),_.c),\"__tests__/template.marko_0_count 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Increment\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <!--M_|3 #text/0-->\n    <!--M_]2 #text/0 3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.b = {\n          count: 0,\n          a: \"abc\",\n          \"#childScope/1\": _.a = {\n            \"ConditionalRenderer:#text/0\": \"__tests__/template.marko_1_content\"\n          }\n        }, _.a,\n        {\n          _: _.b\n        }], _.a.input_content = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.b), _.c),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/#comment2\nINSERT html/body/#comment3\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-param-if-closure/template.marko",
    "content": "<let/count=0>\n<const/a=\"abc\">\n<define/Foo|input|>\n  <${input.content}(input.value)/>\n</define>\n<button onClick() { count++ }>\n  Increment\n</button>\n<Foo|v|=count>\n  <if=v>\n    ${a}\n  </if>\n</>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-param-if-closure/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container?.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-resolution-priority/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-resolution-priority/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div />\n<span />\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-resolution-priority/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div />\n<span />\n<div />\n<!---->\n```\n\n# Mutations\n```\nINSERT div0, span, div1, #comment\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-resolution-priority/__snapshots__/dom.expected/tags/Bar.js",
    "content": "export const $template = \"<span></span>\";\nexport const $walks = /* over(1) */\"b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/tags/Bar.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-resolution-priority/__snapshots__/dom.expected/tags/foo.js",
    "content": "export const $template = \"<span></span>\";\nexport const $walks = /* over(1) */\"b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/tags/foo.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-resolution-priority/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-resolution-priority/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<div></div>${_foo_template}<!><!>`;\nexport const $walks = /* over(1), <foo>, replace, over(2) */`b/${_foo_walks}&%c`;\nconst div = \"span\";\nconst foo = \"div\";\nconst Bar = \"div\";\nimport { $setup as _foo, $template as _foo_template, $walks as _foo_walks } from \"./tags/foo.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/1\");\nexport function $setup($scope) {\n  _foo($scope[\"#childScope/0\"]);\n  $dynamicTag($scope, Bar);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-resolution-priority/__snapshots__/html.expected/tags/Bar.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/Bar.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<span></span>\");\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-resolution-priority/__snapshots__/html.expected/tags/foo.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/foo.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<span></span>\");\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-resolution-priority/__snapshots__/html.expected/template.js",
    "content": "const div = \"span\";\nconst foo = \"div\";\nconst Bar = \"div\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nimport _foo from \"./tags/foo.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<div></div>\");\n  _foo({});\n  _._dynamic_tag($scope0_id, \"#text/1\", Bar, {}, 0, 0, 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-resolution-priority/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div />\n<span />\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-resolution-priority/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <span />\n    <div />\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-resolution-priority/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n<span />\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-resolution-priority/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div></div><span></span><div></div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <span />\n    <div />\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/span\nINSERT html/body/div1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-resolution-priority/tags/Bar.marko",
    "content": "<span/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-resolution-priority/tags/foo.marko",
    "content": "<span/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-resolution-priority/template.marko",
    "content": "static const div = \"span\";\nstatic const foo = \"div\";\nstatic const Bar = \"div\";\n\n<div />\n<foo />\n<Bar />\n\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-resolution-priority/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport {};\n\nexport const config: TestConfig = {};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-destructure/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_2\": \"t\",\n      \"$init\": \"r\",\n      \"$$a\": \"_\",\n      \"$$b\": \"e\",\n      \"$$c\": \"a\",\n      \"$$d\": \"o\",\n      \"$$e\": \"i\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-destructure/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  <pre>\n    a    1    0\n  </pre>\n  <pre>\n    b    2    0\n  </pre>\n  <pre>\n    c  {c:4}  {}\n  </pre>\n  <pre>\n    d    7    0\n  </pre>\n  <pre>\n    f   [9]   []\n  </pre>\n</button>\n```\n\n\n# Render\n```js\ncontainer?.querySelector(\"button\").click();\n```\n```html\n<button>\n  <pre>\n    a    1    1\n  </pre>\n  <pre>\n    b    2    2\n  </pre>\n  <pre>\n    c  {c:4}  {\"c\":4}\n  </pre>\n  <pre>\n    d    7    7\n  </pre>\n  <pre>\n    f   [9]   [9]\n  </pre>\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-destructure/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  <pre>\n    a    1    0\n  </pre>\n  <pre>\n    b    2    0\n  </pre>\n  <pre>\n    c  {c:4}  {}\n  </pre>\n  <pre>\n    d    7    0\n  </pre>\n  <pre>\n    f   [9]   []\n  </pre>\n</button>\n```\n\n# Mutations\n```\nINSERT button\n```\n\n# Render\n```js\ncontainer?.querySelector(\"button\").click();\n```\n```html\n<button>\n  <pre>\n    a    1    1\n  </pre>\n  <pre>\n    b    2    2\n  </pre>\n  <pre>\n    c  {c:4}  {\"c\":4}\n  </pre>\n  <pre>\n    d    7    7\n  </pre>\n  <pre>\n    f   [9]   [9]\n  </pre>\n</button>\n```\n\n# Mutations\n```\nUPDATE button/pre0/#text1 \"0\" => \"1\"\nUPDATE button/pre1/#text1 \"0\" => \"2\"\nUPDATE button/pre2/#text1 \"{}\" => \"{\\\"c\\\":4}\"\nUPDATE button/pre3/#text1 \"0\" => \"7\"\nUPDATE button/pre4/#text1 \"[]\" => \"[9]\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-destructure/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 428 (min) 245 (brotli)\nconst $a = _2._let(6, ($scope) => _2._text($scope.b, $scope.g)),\n  $b = _2._let(7, ($scope) => _2._text($scope.c, $scope.h)),\n  $c = _2._let(8, ($scope) => _2._text($scope.d, JSON.stringify($scope.i))),\n  $d = _2._let(9, ($scope) => _2._text($scope.e, $scope.j)),\n  $e = _2._let(10, ($scope) => _2._text($scope.f, JSON.stringify($scope.k)));\n(_2._script(\"a0\", ($scope) =>\n  _2._on($scope.a, \"click\", function () {\n    let local;\n    var $result2, $a2, $b2, unused, $c2, $result, $d2, $e2;\n    (($result2 = { a: 1, _b: { _b: 2 }, local: 3, c: 4 }),\n      ({\n        a: $a2,\n        _b: { _b: $b2 },\n        local: local,\n        unused: unused,\n        ...$c2\n      } = $result2),\n      $a($scope, $a2),\n      $b($scope, $b2),\n      $c($scope, $c2),\n      ($result = [{ arr: [6, 7, 8, 9] }]),\n      ([\n        {\n          arr: [local, $d2, , ...$e2],\n        },\n      ] = $result),\n      $d($scope, $d2),\n      $e($scope, $e2));\n  }),\n),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-destructure/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button><pre>a    1    <!></pre><pre>b    2    <!></pre><pre>c  {c:4}  <!></pre><pre>d    7    <!></pre><pre>f   [9]   <!></pre></button>\";\nexport const $walks = /* get, next(2), over(1), replace, out(1), next(1), over(1), replace, out(1), next(1), over(1), replace, out(1), next(1), over(1), replace, out(1), next(1), over(1), replace, out(2) */\" Eb%lDb%lDb%lDb%lDb%m\";\nfunction noop(_) {}\nimport * as _2 from \"@marko/runtime-tags/debug/dom\";\nconst $a = /* @__PURE__ */_2._let(\"a/6\", $scope => _2._text($scope[\"#text/1\"], $scope.a));\nconst $b = /* @__PURE__ */_2._let(\"b/7\", $scope => _2._text($scope[\"#text/2\"], $scope.b));\nconst $c = /* @__PURE__ */_2._let(\"c/8\", $scope => _2._text($scope[\"#text/3\"], JSON.stringify($scope.c)));\nconst $d = /* @__PURE__ */_2._let(\"d/9\", $scope => _2._text($scope[\"#text/4\"], $scope.d));\nconst $e = /* @__PURE__ */_2._let(\"e/10\", $scope => _2._text($scope[\"#text/5\"], JSON.stringify($scope.e)));\nconst $setup__script = _2._script(\"__tests__/template.marko_0\", $scope => _2._on($scope[\"#button/0\"], \"click\", function () {\n  let local;\n  (($result2, $a2, $b2, unused, $c2) => ({\n    a: $a2,\n    _b: {\n      _b: $b2\n    },\n    local,\n    unused,\n    ...$c2\n  } = $result2, $a($scope, $a2), $b($scope, $b2), $c($scope, $c2), $result2))({\n    a: 1,\n    _b: {\n      _b: 2\n    },\n    local: 3,\n    c: 4\n  });\n  noop((($result, $d2, $e2) => ([{\n    arr: [local, $d2,, ...$e2]\n  }] = $result, $d($scope, $d2), $e($scope, $e2), $result))([{\n    arr: [6, 7, 8, 9]\n  }]));\n}));\nexport function $setup($scope) {\n  $a($scope, 0);\n  $b($scope, 0);\n  $c($scope, {});\n  $d($scope, 0);\n  $e($scope, []);\n  /* unused */0;\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_2._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-destructure/__snapshots__/html.expected/template.js",
    "content": "function noop(_) {}\nimport * as _2 from \"@marko/runtime-tags/debug/html\";\nexport default _2._template(\"__tests__/template.marko\", input => {\n  _2._scope_reason();\n  const $scope0_id = _2._scope_id();\n  let a = 0;\n  let b = 0;\n  let c = {};\n  let d = 0;\n  let e = [];\n  let unused = 0;\n  _2._html(`<button><pre>a    1    <!>${_2._escape(a)}${_2._el_resume($scope0_id, \"#text/1\")}</pre><pre>b    2    <!>${_2._escape(b)}${_2._el_resume($scope0_id, \"#text/2\")}</pre><pre>c  {c:4}  <!>${_2._escape(JSON.stringify(c))}${_2._el_resume($scope0_id, \"#text/3\")}</pre><pre>d    7    <!>${_2._escape(d)}${_2._el_resume($scope0_id, \"#text/4\")}</pre><pre>f   [9]   <!>${_2._escape(JSON.stringify(e))}${_2._el_resume($scope0_id, \"#text/5\")}</pre></button>${_2._el_resume($scope0_id, \"#button/0\")}`);\n  _2._script($scope0_id, \"__tests__/template.marko_0\");\n  _2._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n  _2._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-destructure/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  <pre>\n    a    1    0\n  </pre>\n  <pre>\n    b    2    0\n  </pre>\n  <pre>\n    c  {c:4}  {}\n  </pre>\n  <pre>\n    d    7    0\n  </pre>\n  <pre>\n    f   [9]   []\n  </pre>\n</button>\n```\n\n\n# Render\n```js\ncontainer?.querySelector(\"button\").click();\n```\n```html\n<button>\n  <pre>\n    a    1    1\n  </pre>\n  <pre>\n    b    2    2\n  </pre>\n  <pre>\n    c  {c:4}  {\"c\":4}\n  </pre>\n  <pre>\n    d    7    7\n  </pre>\n  <pre>\n    f   [9]   [9]\n  </pre>\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-destructure/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      <pre>\n        a    1    \n        <!---->\n        0\n        <!--M_*1 #text/1-->\n      </pre>\n      <pre>\n        b    2    \n        <!---->\n        0\n        <!--M_*1 #text/2-->\n      </pre>\n      <pre>\n        c  {c:4}  \n        <!---->\n        {}\n        <!--M_*1 #text/3-->\n      </pre>\n      <pre>\n        d    7    \n        <!---->\n        0\n        <!--M_*1 #text/4-->\n      </pre>\n      <pre>\n        f   [9]   \n        <!---->\n        []\n        <!--M_*1 #text/5-->\n      </pre>\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer?.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      <pre>\n        a    1    \n        <!---->\n        1\n        <!--M_*1 #text/1-->\n      </pre>\n      <pre>\n        b    2    \n        <!---->\n        2\n        <!--M_*1 #text/2-->\n      </pre>\n      <pre>\n        c  {c:4}  \n        <!---->\n        {\"c\":4}\n        <!--M_*1 #text/3-->\n      </pre>\n      <pre>\n        d    7    \n        <!---->\n        7\n        <!--M_*1 #text/4-->\n      </pre>\n      <pre>\n        f   [9]   \n        <!---->\n        [9]\n        <!--M_*1 #text/5-->\n      </pre>\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/pre0/#text1 \"0\" => \"1\"\nUPDATE html/body/button/pre1/#text1 \"0\" => \"2\"\nUPDATE html/body/button/pre2/#text1 \"{}\" => \"{\\\"c\\\":4}\"\nUPDATE html/body/button/pre3/#text1 \"0\" => \"7\"\nUPDATE html/body/button/pre4/#text1 \"[]\" => \"[9]\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-destructure/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  <pre>\n    a    1    0\n  </pre>\n  <pre>\n    b    2    0\n  </pre>\n  <pre>\n    c  {c:4}  {}\n  </pre>\n  <pre>\n    d    7    0\n  </pre>\n  <pre>\n    f   [9]   []\n  </pre>\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-destructure/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button><pre>a    1    <!>0<!--M_*1 #text/1--></pre><pre>b    2    <!>0<!--M_*1 #text/2--></pre><pre>c  {c:4}  <!>{}<!--M_*1 #text/3--></pre><pre>d    7    <!>0<!--M_*1 #text/4--></pre><pre>f   [9]   <!>[]<!--M_*1 #text/5--></pre></button><!--M_*1 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0]),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      <pre>\n        a    1    \n        <!---->\n        0\n        <!--M_*1 #text/1-->\n      </pre>\n      <pre>\n        b    2    \n        <!---->\n        0\n        <!--M_*1 #text/2-->\n      </pre>\n      <pre>\n        c  {c:4}  \n        <!---->\n        {}\n        <!--M_*1 #text/3-->\n      </pre>\n      <pre>\n        d    7    \n        <!---->\n        0\n        <!--M_*1 #text/4-->\n      </pre>\n      <pre>\n        f   [9]   \n        <!---->\n        []\n        <!--M_*1 #text/5-->\n      </pre>\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/pre0\nINSERT html/body/button/pre0/#text0\nINSERT html/body/button/pre0/#comment0\nINSERT html/body/button/pre0/#text1\nINSERT html/body/button/pre0/#comment1\nINSERT html/body/button/pre1\nINSERT html/body/button/pre1/#text0\nINSERT html/body/button/pre1/#comment0\nINSERT html/body/button/pre1/#text1\nINSERT html/body/button/pre1/#comment1\nINSERT html/body/button/pre2\nINSERT html/body/button/pre2/#text0\nINSERT html/body/button/pre2/#comment0\nINSERT html/body/button/pre2/#text1\nINSERT html/body/button/pre2/#comment1\nINSERT html/body/button/pre3\nINSERT html/body/button/pre3/#text0\nINSERT html/body/button/pre3/#comment0\nINSERT html/body/button/pre3/#text1\nINSERT html/body/button/pre3/#comment1\nINSERT html/body/button/pre4\nINSERT html/body/button/pre4/#text0\nINSERT html/body/button/pre4/#comment0\nINSERT html/body/button/pre4/#text1\nINSERT html/body/button/pre4/#comment1\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-destructure/template.marko",
    "content": "static function noop(_) {}\n\n<let/a=0/>\n<let/b=0/>\n<let/c={}/>\n<let/d=0/>\n<let/e=[]/>\n<let/unused=0>\n<button onClick() {\n  let local;\n  ({\n    a,\n    _b: { _b: b },\n    local,\n    unused,\n    ...c\n  } = { a: 1, _b: { _b: 2 }, local: 3, c: 4 });\n  noop([\n    {\n      arr: [local, d, , ...e],\n    },\n  ] = [{ arr: [6, 7, 8, 9] }]);\n}>\n  <pre>a    1    ${a}</pre>\n  <pre>b    2    ${b}</pre>\n  <pre>c  {c:4}  ${JSON.stringify(c)}</pre>\n  <pre>d    7    ${d}</pre>\n  <pre>f   [9]   ${JSON.stringify(e)}</pre>\n</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-destructure/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container?.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-destructure-rest-chain/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-destructure-rest-chain/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  class=\"abc\"\n>\n  1 2 3\n</div>\n<div\n  class=\"rest\"\n>\n  {\"b\":2,\"c\":3,\"d\":4}\n</div>\n<div\n  class=\"rest2\"\n>\n  {\"c\":3,\"d\":4}\n</div>\n<div\n  class=\"rest3\"\n>\n  {\"d\":4}\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-destructure-rest-chain/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div\n  class=\"abc\"\n>\n  1 2 3\n</div>\n<div\n  class=\"rest\"\n>\n  {\"b\":2,\"c\":3,\"d\":4}\n</div>\n<div\n  class=\"rest2\"\n>\n  {\"c\":3,\"d\":4}\n</div>\n<div\n  class=\"rest3\"\n>\n  {\"d\":4}\n</div>\n```\n\n# Mutations\n```\nINSERT div0, div1, div2, div3\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-destructure-rest-chain/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-destructure-rest-chain/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div class=abc><!> <!> <!></div><div class=rest> </div><div class=rest2> </div><div class=rest3> </div>\";\nexport const $walks = /* next(1), replace, over(2), replace, over(2), replace, out(1), next(1), get, out(1), next(1), get, out(1), next(1), get, out(1) */\"D%c%c%lD lD lD l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $pattern2 = ($scope, $pattern) => {\n  (({\n    a,\n    ...rest\n  }) => $rest($scope, rest))($pattern);\n  (({\n    a,\n    b,\n    ...rest2\n  }) => $rest2($scope, rest2))($pattern);\n  (({\n    a,\n    b,\n    c,\n    ...rest3\n  }) => $rest3($scope, rest3))($pattern);\n  $a($scope, $pattern.a);\n  $b($scope, $pattern.b);\n  $c($scope, $pattern.c);\n};\nconst $rest = ($scope, rest) => _._text($scope[\"#text/3\"], JSON.stringify(rest));\nconst $rest2 = ($scope, rest2) => _._text($scope[\"#text/4\"], JSON.stringify(rest2));\nconst $rest3 = ($scope, rest3) => _._text($scope[\"#text/5\"], JSON.stringify(rest3));\nconst $a = ($scope, a) => _._text($scope[\"#text/0\"], a);\nconst $b = ($scope, b) => _._text($scope[\"#text/1\"], b);\nconst $c = ($scope, c) => _._text($scope[\"#text/2\"], c);\nexport function $setup($scope) {\n  $pattern2($scope, {\n    a: 1,\n    b: 2,\n    c: 3,\n    d: 4\n  });\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-destructure-rest-chain/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    a,\n    ...rest\n  } = {\n    a: 1,\n    b: 2,\n    c: 3,\n    d: 4\n  };\n  const {\n    b,\n    ...rest2\n  } = rest;\n  const {\n    c,\n    ...rest3\n  } = rest2;\n  _._html(`<div class=abc>${_._escape(a)} ${_._escape(b)} ${_._escape(c)}</div><div class=rest>${_._escape(JSON.stringify(rest))}</div><div class=rest2>${_._escape(JSON.stringify(rest2))}</div><div class=rest3>${_._escape(JSON.stringify(rest3))}</div>`);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-destructure-rest-chain/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  class=\"abc\"\n>\n  1 2 3\n</div>\n<div\n  class=\"rest\"\n>\n  {\"b\":2,\"c\":3,\"d\":4}\n</div>\n<div\n  class=\"rest2\"\n>\n  {\"c\":3,\"d\":4}\n</div>\n<div\n  class=\"rest3\"\n>\n  {\"d\":4}\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-destructure-rest-chain/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div\n      class=\"abc\"\n    >\n      1 2 3\n    </div>\n    <div\n      class=\"rest\"\n    >\n      {\"b\":2,\"c\":3,\"d\":4}\n    </div>\n    <div\n      class=\"rest2\"\n    >\n      {\"c\":3,\"d\":4}\n    </div>\n    <div\n      class=\"rest3\"\n    >\n      {\"d\":4}\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-destructure-rest-chain/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div\n  class=\"abc\"\n>\n  1 2 3\n</div>\n<div\n  class=\"rest\"\n>\n  {\"b\":2,\"c\":3,\"d\":4}\n</div>\n<div\n  class=\"rest2\"\n>\n  {\"c\":3,\"d\":4}\n</div>\n<div\n  class=\"rest3\"\n>\n  {\"d\":4}\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-destructure-rest-chain/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div class=abc>1 2 3</div><div class=rest>{\"b\":2,\"c\":3,\"d\":4}</div><div class=rest2>{\"c\":3,\"d\":4}</div><div class=rest3>{\"d\":4}</div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div\n      class=\"abc\"\n    >\n      1 2 3\n    </div>\n    <div\n      class=\"rest\"\n    >\n      {\"b\":2,\"c\":3,\"d\":4}\n    </div>\n    <div\n      class=\"rest2\"\n    >\n      {\"c\":3,\"d\":4}\n    </div>\n    <div\n      class=\"rest3\"\n    >\n      {\"d\":4}\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/div0/#text\nINSERT html/body/div1\nINSERT html/body/div1/#text\nINSERT html/body/div2\nINSERT html/body/div2/#text\nINSERT html/body/div3\nINSERT html/body/div3/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-destructure-rest-chain/template.marko",
    "content": "const/{ a, ...rest }={ a: 1, b: 2, c: 3, d: 4 }\nconst/{ b, ...rest2 }=rest\nconst/{ c, ...rest3 }=rest2\n.abc -- ${a} ${b} ${c}\n.rest -- ${JSON.stringify(rest)}\n.rest2 -- ${JSON.stringify(rest2)}\n.rest3 -- ${JSON.stringify(rest3)}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-rest/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$obj\": \"i\",\n      \"$$partialObj\": \"a\",\n      \"$$partialObj_a\": \"e\",\n      \"$$a\": \"n\",\n      \"$$obj_b\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-rest/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  class=\"obj\"\n>\n  {\"a\":1,\"b\":2,\"c\":3}\n</div>\n<div\n  class=\"partialObj\"\n>\n  {\"b\":2,\"c\":3}\n</div>\n<div\n  class=\"a\"\n>\n  1\n</div>\n<div\n  class=\"b\"\n>\n  2\n</div>\n<div\n  class=\"a\"\n>\n  removed a\n</div>\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div\n  class=\"obj\"\n>\n  {\"a\":4,\"b\":5,\"d\":6}\n</div>\n<div\n  class=\"partialObj\"\n>\n  {\"b\":5,\"d\":6}\n</div>\n<div\n  class=\"a\"\n>\n  4\n</div>\n<div\n  class=\"b\"\n>\n  5\n</div>\n<div\n  class=\"a\"\n>\n  removed a\n</div>\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-rest/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div\n  class=\"obj\"\n>\n  {\"a\":1,\"b\":2,\"c\":3}\n</div>\n<div\n  class=\"partialObj\"\n>\n  {\"b\":2,\"c\":3}\n</div>\n<div\n  class=\"a\"\n>\n  1\n</div>\n<div\n  class=\"b\"\n>\n  2\n</div>\n<div\n  class=\"a\"\n>\n  removed a\n</div>\n<button>\n  Update\n</button>\n```\n\n# Mutations\n```\nINSERT div0, div1, div2, div3, div4, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div\n  class=\"obj\"\n>\n  {\"a\":4,\"b\":5,\"d\":6}\n</div>\n<div\n  class=\"partialObj\"\n>\n  {\"b\":5,\"d\":6}\n</div>\n<div\n  class=\"a\"\n>\n  4\n</div>\n<div\n  class=\"b\"\n>\n  5\n</div>\n<div\n  class=\"a\"\n>\n  removed a\n</div>\n<button>\n  Update\n</button>\n```\n\n# Mutations\n```\nUPDATE div0/#text \"{\\\"a\\\":1,\\\"b\\\":2,\\\"c\\\":3}\" => \"{\\\"a\\\":4,\\\"b\\\":5,\\\"d\\\":6}\"\nUPDATE div1/#text \"{\\\"b\\\":2,\\\"c\\\":3}\" => \"{\\\"b\\\":5,\\\"d\\\":6}\"\nUPDATE div2/#text \"1\" => \"4\"\nUPDATE div3/#text \"2\" => \"5\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-rest/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 386 (min) 214 (brotli)\nconst $obj = _._let(6, ($scope) => {\n    (_._text($scope.a, JSON.stringify($scope.g)),\n      (({ a: a, ...partialObj }) => {\n        $partialObj($scope, partialObj);\n      })($scope.g),\n      $a($scope, $scope.g.a),\n      $obj_b($scope, $scope.g.b));\n  }),\n  $partialObj = _._const(8, ($scope) => {\n    (_._text($scope.b, JSON.stringify($scope.i)),\n      $partialObj_a($scope, $scope.i.a));\n  }),\n  $partialObj_a = _._const(10, ($scope) =>\n    _._text($scope.e, void 0 === $scope.k ? \"removed a\" : \"didn't remove a\"),\n  ),\n  $a = _._const(7, ($scope) => _._text($scope.c, $scope.h)),\n  $obj_b = _._const(9, ($scope) => _._text($scope.d, $scope.j));\n(_._script(\"a0\", ($scope) =>\n  _._on($scope.f, \"click\", function () {\n    $obj($scope, { a: 4, b: 5, d: 6 });\n  }),\n),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-rest/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div class=obj> </div><div class=partialObj> </div><div class=a> </div><div class=b> </div><div class=a> </div><button>Update</button>\";\nexport const $walks = /* next(1), get, out(1), next(1), get, out(1), next(1), get, out(1), next(1), get, out(1), next(1), get, out(1), get, over(1) */\"D lD lD lD lD l b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $obj = /* @__PURE__ */_._let(\"obj/6\", $scope => {\n  _._text($scope[\"#text/0\"], JSON.stringify($scope.obj));\n  (({\n    a,\n    ...partialObj\n  }) => $partialObj($scope, partialObj))($scope.obj);\n  $a($scope, $scope.obj.a);\n  $obj_b($scope, $scope.obj.b);\n});\nconst $partialObj = /* @__PURE__ */_._const(\"partialObj\", $scope => {\n  _._text($scope[\"#text/1\"], JSON.stringify($scope.partialObj));\n  $partialObj_a($scope, $scope.partialObj.a);\n});\nconst $partialObj_a = /* @__PURE__ */_._const(\"partialObj_a\", $scope => _._text($scope[\"#text/4\"], $scope.partialObj_a === undefined ? \"removed a\" : \"didn't remove a\"));\nconst $a = /* @__PURE__ */_._const(\"a\", $scope => _._text($scope[\"#text/2\"], $scope.a));\nconst $obj_b = /* @__PURE__ */_._const(\"obj_b\", $scope => _._text($scope[\"#text/3\"], $scope.obj_b));\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => _._on($scope[\"#button/5\"], \"click\", function () {\n  $obj($scope, {\n    a: 4,\n    b: 5,\n    d: 6\n  });\n}));\nexport function $setup($scope) {\n  $obj($scope, {\n    a: 1,\n    b: 2,\n    c: 3\n  });\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-rest/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let obj = {\n    a: 1,\n    b: 2,\n    c: 3\n  };\n  const {\n    a,\n    ...partialObj\n  } = obj;\n  _._html(`<div class=obj>${_._escape(JSON.stringify(obj))}${_._el_resume($scope0_id, \"#text/0\")}</div><div class=partialObj>${_._escape(JSON.stringify(partialObj))}${_._el_resume($scope0_id, \"#text/1\")}</div><div class=a>${_._escape(a)}${_._el_resume($scope0_id, \"#text/2\")}</div><div class=b>${_._escape(partialObj.b)}${_._el_resume($scope0_id, \"#text/3\")}</div><div class=a>${_._escape(partialObj.a === undefined ? \"removed a\" : \"didn't remove a\")}${_._el_resume($scope0_id, \"#text/4\")}</div><button>Update</button>${_._el_resume($scope0_id, \"#button/5\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-rest/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div\n  class=\"obj\"\n>\n  {\"a\":1,\"b\":2,\"c\":3}\n</div>\n<div\n  class=\"partialObj\"\n>\n  {\"b\":2,\"c\":3}\n</div>\n<div\n  class=\"a\"\n>\n  1\n</div>\n<div\n  class=\"b\"\n>\n  2\n</div>\n<div\n  class=\"a\"\n>\n  removed a\n</div>\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div\n  class=\"obj\"\n>\n  {\"a\":4,\"b\":5,\"d\":6}\n</div>\n<div\n  class=\"partialObj\"\n>\n  {\"b\":5,\"d\":6}\n</div>\n<div\n  class=\"a\"\n>\n  4\n</div>\n<div\n  class=\"b\"\n>\n  5\n</div>\n<div\n  class=\"a\"\n>\n  removed a\n</div>\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-rest/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div\n      class=\"obj\"\n    >\n      {\"a\":1,\"b\":2,\"c\":3}\n      <!--M_*1 #text/0-->\n    </div>\n    <div\n      class=\"partialObj\"\n    >\n      {\"b\":2,\"c\":3}\n      <!--M_*1 #text/1-->\n    </div>\n    <div\n      class=\"a\"\n    >\n      1\n      <!--M_*1 #text/2-->\n    </div>\n    <div\n      class=\"b\"\n    >\n      2\n      <!--M_*1 #text/3-->\n    </div>\n    <div\n      class=\"a\"\n    >\n      removed a\n      <!--M_*1 #text/4-->\n    </div>\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/5-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div\n      class=\"obj\"\n    >\n      {\"a\":4,\"b\":5,\"d\":6}\n      <!--M_*1 #text/0-->\n    </div>\n    <div\n      class=\"partialObj\"\n    >\n      {\"b\":5,\"d\":6}\n      <!--M_*1 #text/1-->\n    </div>\n    <div\n      class=\"a\"\n    >\n      4\n      <!--M_*1 #text/2-->\n    </div>\n    <div\n      class=\"b\"\n    >\n      5\n      <!--M_*1 #text/3-->\n    </div>\n    <div\n      class=\"a\"\n    >\n      removed a\n      <!--M_*1 #text/4-->\n    </div>\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/5-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div0/#text \"{\\\"a\\\":1,\\\"b\\\":2,\\\"c\\\":3}\" => \"{\\\"a\\\":4,\\\"b\\\":5,\\\"d\\\":6}\"\nUPDATE html/body/div1/#text \"{\\\"b\\\":2,\\\"c\\\":3}\" => \"{\\\"b\\\":5,\\\"d\\\":6}\"\nUPDATE html/body/div2/#text \"1\" => \"4\"\nUPDATE html/body/div3/#text \"2\" => \"5\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-rest/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div\n  class=\"obj\"\n>\n  {\"a\":1,\"b\":2,\"c\":3}\n</div>\n<div\n  class=\"partialObj\"\n>\n  {\"b\":2,\"c\":3}\n</div>\n<div\n  class=\"a\"\n>\n  1\n</div>\n<div\n  class=\"b\"\n>\n  2\n</div>\n<div\n  class=\"a\"\n>\n  removed a\n</div>\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-rest/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div class=obj>{\"a\":1,\"b\":2,\"c\":3}<!--M_*1 #text/0--></div><div class=partialObj>{\"b\":2,\"c\":3}<!--M_*1 #text/1--></div><div class=a>1<!--M_*1 #text/2--></div><div class=b>2<!--M_*1 #text/3--></div><div class=a>removed a<!--M_*1 #text/4--></div><button>Update</button><!--M_*1 #button/5--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0]),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div\n      class=\"obj\"\n    >\n      {\"a\":1,\"b\":2,\"c\":3}\n      <!--M_*1 #text/0-->\n    </div>\n    <div\n      class=\"partialObj\"\n    >\n      {\"b\":2,\"c\":3}\n      <!--M_*1 #text/1-->\n    </div>\n    <div\n      class=\"a\"\n    >\n      1\n      <!--M_*1 #text/2-->\n    </div>\n    <div\n      class=\"b\"\n    >\n      2\n      <!--M_*1 #text/3-->\n    </div>\n    <div\n      class=\"a\"\n    >\n      removed a\n      <!--M_*1 #text/4-->\n    </div>\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/5-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/div0/#text\nINSERT html/body/div0/#comment\nINSERT html/body/div1\nINSERT html/body/div1/#text\nINSERT html/body/div1/#comment\nINSERT html/body/div2\nINSERT html/body/div2/#text\nINSERT html/body/div2/#comment\nINSERT html/body/div3\nINSERT html/body/div3/#text\nINSERT html/body/div3/#comment\nINSERT html/body/div4\nINSERT html/body/div4/#text\nINSERT html/body/div4/#comment\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-rest/template.marko",
    "content": "let/obj={\n  a: 1,\n  b: 2,\n  c: 3,\n}\n\nconst/{\n  a,\n  ...partialObj\n}=obj\n\n.obj -- ${JSON.stringify(obj)}\n.partialObj -- ${JSON.stringify(partialObj)}\n.a -- ${a}\n.b -- ${partialObj.b}\n.a -- ${partialObj.a === undefined ? \"removed a\" : \"didn't remove a\"}\n\nbutton onClick() {\n  obj = {\n    a: 4,\n    b: 5,\n    d: 6\n  }\n} -- Update\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-rest/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-with-serialize-reason/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"m\",\n      \"$$if\": \"o\",\n      \"$$count__script\": \"r\",\n      \"$$count\": \"a\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-with-serialize-reason/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  1\n</button>\n<span />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n<span />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n<span />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  4\n</button>\n<span />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-with-serialize-reason/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  1\n</button>\n<!---->\n<span />\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT button, #comment0, span, #comment1, #comment2\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n<!---->\n<span />\n<!---->\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n<!---->\n<span />\n<!---->\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  4\n</button>\n<!---->\n<span />\n<!---->\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text \"3\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-with-serialize-reason/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if = /* @__PURE__ */_._if(\"#text/0\", \"<span></span>\", /* over(1) */\"b\");\nexport const $input_value = ($scope, input_value) => $if($scope, input_value ? 0 : 1);\nexport function $setup($scope) {\n  _._return($scope, 1);\n}\nexport const $input = ($scope, input) => $input_value($scope, input.value);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-with-serialize-reason/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 204 (min) 149 (brotli)\nconst $if = _._if(0, \"<span></span>\", \"b\"),\n  $count__script = _._script(\"b0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $count($scope, $scope.e + 1);\n    }),\n  ),\n  $count = _._let(4, ($scope) => {\n    (_._text($scope.b, $scope.e),\n      (($scope, input_value) => {\n        $if($scope, input_value ? 0 : 1);\n      })($scope.c, $scope.e),\n      $count__script($scope));\n  });\n(_._var_resume(\"b1\", ($scope, x) => {}), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-with-serialize-reason/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<button> </button>${_child_template}<!>`;\nexport const $walks = /* get, next(1), get, out(1), <child/var>, over(1) */` D l0${_child_walks}&b`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport { $setup as _child, $input_value as _child_input_value, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nconst $count__script = _._script(\"__tests__/template.marko_0_count\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $count($scope, $scope.count + 1);\n}));\nconst $count = /* @__PURE__ */_._let(\"count/4\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.count);\n  _child_input_value($scope[\"#childScope/2\"], $scope.count);\n  $count__script($scope);\n});\nexport function $setup($scope) {\n  _._var($scope, \"#childScope/2\", $x);\n  _child($scope[\"#childScope/2\"]);\n  $count($scope, 1);\n}\nconst $x = _._var_resume(\"__tests__/template.marko_0_x/var\", ($scope, x) => {});\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-with-serialize-reason/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._if(() => {\n    if (input.value) {\n      const $scope1_id = _._scope_id();\n      _._html(\"<span></span>\");\n      _._serialize_if($scope0_reason, /* input.value */0) && _._scope($scope1_id, {}, \"__tests__/tags/child.marko\", \"1:2\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.value */0), _._serialize_guard($scope0_reason, /* input.value */0), _._serialize_guard($scope0_reason, /* input.value */0), 0, 1);\n  const $return = 1;\n  _._serialize_if($scope0_reason, /* input.value */0) && _._scope($scope0_id, {}, \"__tests__/tags/child.marko\", 0);\n  return $return;\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-with-serialize-reason/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _child from \"./tags/child.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let count = 1;\n  _._html(`<button>${_._escape(count)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason(/* count */1);\n  let x = _child({\n    value: count\n  });\n  _._var($scope0_id, \"#scopeOffset/3\", $childScope, \"__tests__/template.marko_0_x/var\");\n  _._script($scope0_id, \"__tests__/template.marko_0_count\");\n  _._scope($scope0_id, {\n    count,\n    \"#childScope/2\": _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0, {\n    count: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-with-serialize-reason/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  1\n</button>\n<span />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n<span />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n<span />\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  4\n</button>\n<span />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-with-serialize-reason/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <span />\n    <!--M_|2 #text/0 3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"#scopeOffset/3\": 4,\n          count: 1,\n          \"#childScope/2\": _.a = {}\n        }, _.a], _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_x/var\"\n          ](_.c), _.b),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      2\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <span />\n    <!--M_|2 #text/0 3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"#scopeOffset/3\": 4,\n          count: 1,\n          \"#childScope/2\": _.a = {}\n        }, _.a], _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_x/var\"\n          ](_.c), _.b),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"1\" => \"2\"\nINSERT html/body/span\nREMOVE span after html/body/span\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      3\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <span />\n    <!--M_|2 #text/0 3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"#scopeOffset/3\": 4,\n          count: 1,\n          \"#childScope/2\": _.a = {}\n        }, _.a], _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_x/var\"\n          ](_.c), _.b),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      4\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <span />\n    <!--M_|2 #text/0 3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"#scopeOffset/3\": 4,\n          count: 1,\n          \"#childScope/2\": _.a = {}\n        }, _.a], _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_x/var\"\n          ](_.c), _.b),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"3\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-with-serialize-reason/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  1\n</button>\n<span />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-with-serialize-reason/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>1<!--M_*1 #text/1--></button><!--M_*1 #button/0--><span></span><!--M_|2 #text/0 3--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.c={\"#scopeOffset/3\":4,count:1,\"#childScope/2\":_.a={}},_.a],_.a[\"#TagVariable\"]=_._[\"__tests__/template.marko_0_x/var\"](_.c),_.b),\"__tests__/template.marko_0_count 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      1\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <span />\n    <!--M_|2 #text/0 3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {\n          \"#scopeOffset/3\": 4,\n          count: 1,\n          \"#childScope/2\": _.a = {}\n        }, _.a], _.a[\"#TagVariable\"] = _._[\n          \"__tests__/template.marko_0_x/var\"\n          ](_.c), _.b),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment0\nINSERT html/body/span\nINSERT html/body/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-with-serialize-reason/tags/child.marko",
    "content": "<if=input.value>\n  <span />\n</if>\n<return=1>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-with-serialize-reason/template.marko",
    "content": "<let/count=1>\n<button onClick() { count++ }>${count}</button>\n<child/x=count />\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/tag-var-with-serialize-reason/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/text-content-counter/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$clickCount__script\": \"m\",\n      \"$$clickCount\": \"n\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/text-content-counter/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <button\n    id=\"button\"\n  >\n    0\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button\n    id=\"button\"\n  >\n    1\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button\n    id=\"button\"\n  >\n    2\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button\n    id=\"button\"\n  >\n    3\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/text-content-counter/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  <button\n    id=\"button\"\n  >\n    0\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT div\nREMOVE #text in div/button\nINSERT div/button/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button\n    id=\"button\"\n  >\n    1\n  </button>\n</div>\n```\n\n# Mutations\n```\nREMOVE #text in div/button\nINSERT div/button/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button\n    id=\"button\"\n  >\n    2\n  </button>\n</div>\n```\n\n# Mutations\n```\nREMOVE #text in div/button\nINSERT div/button/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button\n    id=\"button\"\n  >\n    3\n  </button>\n</div>\n```\n\n# Mutations\n```\nREMOVE #text in div/button\nINSERT div/button/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/text-content-counter/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 139 (min) 102 (brotli)\nconst $clickCount__script = _._script(\"a0\", ($scope) => {\n    ((document.getElementById(\"button\").textContent = $scope.b),\n      _._on($scope.a, \"click\", function () {\n        $clickCount($scope, $scope.b + 1);\n      }));\n  }),\n  $clickCount = _._let(1, $clickCount__script);\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/text-content-counter/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div><button id=button>0</button></div>\";\nexport const $walks = /* next(1), get, out(1) */\"D l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $clickCount__script = _._script(\"__tests__/template.marko_0_clickCount\", $scope => {\n  document.getElementById(\"button\").textContent = $scope.clickCount;\n  _._on($scope[\"#button/0\"], \"click\", function () {\n    $clickCount($scope, $scope.clickCount + 1);\n  });\n});\nconst $clickCount = /* @__PURE__ */_._let(\"clickCount/1\", $clickCount__script);\nexport function $setup($scope) {\n  $clickCount($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/text-content-counter/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let clickCount = 0;\n  _._html(`<div><button id=button>0</button>${_._el_resume($scope0_id, \"#button/0\")}</div>`);\n  _._script($scope0_id, \"__tests__/template.marko_0_clickCount\");\n  _._scope($scope0_id, {\n    clickCount\n  }, \"__tests__/template.marko\", 0, {\n    clickCount: \"2:8\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/text-content-counter/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <button\n    id=\"button\"\n  >\n    0\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button\n    id=\"button\"\n  >\n    1\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button\n    id=\"button\"\n  >\n    2\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  <button\n    id=\"button\"\n  >\n    3\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/text-content-counter/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button\n        id=\"button\"\n      >\n        0\n      </button>\n      <!--M_*1 #button/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          clickCount: 0\n        }]),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #text in html/body/div/button\nINSERT html/body/div/button/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button\n        id=\"button\"\n      >\n        1\n      </button>\n      <!--M_*1 #button/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          clickCount: 0\n        }]),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #text in html/body/div/button\nINSERT html/body/div/button/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button\n        id=\"button\"\n      >\n        2\n      </button>\n      <!--M_*1 #button/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          clickCount: 0\n        }]),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #text in html/body/div/button\nINSERT html/body/div/button/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button\n        id=\"button\"\n      >\n        3\n      </button>\n      <!--M_*1 #button/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          clickCount: 0\n        }]),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #text in html/body/div/button\nINSERT html/body/div/button/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/text-content-counter/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  <button\n    id=\"button\"\n  >\n    0\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/text-content-counter/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><button id=button>0</button><!--M_*1 #button/0--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{clickCount:0}]),\"__tests__/template.marko_0_clickCount 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button\n        id=\"button\"\n      >\n        0\n      </button>\n      <!--M_*1 #button/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          clickCount: 0\n        }]),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/button\nINSERT html/body/div/button/#text\nINSERT html/body/div/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/text-content-counter/template.marko",
    "content": "<div>\n  <let/clickCount = 0/>\n  <script>\n    document.getElementById(\"button\").textContent = clickCount;\n  </script>\n  <button#button onClick() {\n    clickCount++\n  }>0</button>\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/text-content-counter/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/textarea-dynamic-text/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"a\",\n      \"$$value\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/textarea-dynamic-text/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<textarea>\n  before\n</textarea>\n<button>\n  update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<textarea\n  default-value=\"after\"\n>\n  before\n</textarea>\n<button>\n  update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/textarea-dynamic-text/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<textarea>\n  before\n</textarea>\n<button>\n  update\n</button>\n```\n\n# Mutations\n```\nINSERT textarea, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<textarea\n  default-value=\"after\"\n>\n  before\n</textarea>\n<button>\n  update\n</button>\n```\n\n# Mutations\n```\nREMOVE #text in textarea\nINSERT textarea/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/textarea-dynamic-text/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 130 (min) 97 (brotli)\nconst $value = _._let(2, ($scope) =>\n  _._attr_textarea_value_default($scope, \"a\", $scope.c),\n);\n(_._script(\"a0\", ($scope) =>\n  _._on($scope.b, \"click\", function () {\n    $value($scope, \"after\");\n  }),\n),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/textarea-dynamic-text/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<textarea></textarea><button>update</button>\";\nexport const $walks = /* get, over(1), get, over(1) */\" b b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $value = /* @__PURE__ */_._let(\"value/2\", $scope => _._attr_textarea_value_default($scope, \"#textarea/0\", $scope.value));\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => _._on($scope[\"#button/1\"], \"click\", function () {\n  $value($scope, \"after\");\n}));\nexport function $setup($scope) {\n  $value($scope, \"before\");\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/textarea-dynamic-text/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let value = \"before\";\n  _._html(`<textarea>${_._escape_text(value)}</textarea>${_._el_resume($scope0_id, \"#textarea/0\")}<button>update</button>${_._el_resume($scope0_id, \"#button/1\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/textarea-dynamic-text/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<textarea>\n  before\n</textarea>\n<button>\n  update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<textarea\n  default-value=\"after\"\n>\n  before\n</textarea>\n<button>\n  update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/textarea-dynamic-text/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <textarea>\n      before\n    </textarea>\n    <!--M_*1 #textarea/0-->\n    <button>\n      update\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <textarea\n      default-value=\"after\"\n    >\n      before\n    </textarea>\n    <!--M_*1 #textarea/0-->\n    <button>\n      update\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #text in html/body/textarea\nINSERT html/body/textarea/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/textarea-dynamic-text/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<textarea>\n  before\n</textarea>\n<button>\n  update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/textarea-dynamic-text/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <textarea>before</textarea><!--M_*1 #textarea/0--><button>update</button><!--M_*1 #button/1--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0]),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <textarea>\n      before\n    </textarea>\n    <!--M_*1 #textarea/0-->\n    <button>\n      update\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/textarea\nINSERT html/body/textarea/#text\nINSERT html/body/#comment0\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/textarea-dynamic-text/template.marko",
    "content": "<let/value = \"before\"/>\n<textarea>${value}</textarea>\n<button onClick() { value = \"after\" }>update</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/textarea-dynamic-text/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/textarea-spread/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"r\",\n      \"$init\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/textarea-spread/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"value\":\"foo\"}`\n\n```html\n<textarea>\n  foo\n</textarea>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/textarea-spread/__snapshots__/csr.expected.md",
    "content": "# Render `{\"value\":\"foo\"}`\n\n```html\n<textarea>\n  foo\n</textarea>\n```\n\n# Mutations\n```\nINSERT textarea\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/textarea-spread/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 46 (min) 50 (brotli)\n(_._script(\"a0\", ($scope) => _._attrs_script($scope, \"a\")), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/textarea-spread/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<textarea></textarea>\";\nexport const $walks = /* get, over(1) */\" b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $input__script = _._script(\"__tests__/template.marko_0_input\", $scope => _._attrs_script($scope, \"#textarea/0\"));\nexport const $input = /* @__PURE__ */_._const(\"input\", $scope => {\n  _._attrs($scope, \"#textarea/0\", $scope.input);\n  $input__script($scope);\n});\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/textarea-spread/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $textarea_input = input;\n  _._html(`<textarea${_._attrs($textarea_input, \"#textarea/0\", $scope0_id, \"textarea\")}>${_._attr_textarea_value($scope0_id, \"#textarea/0\", $textarea_input.value, $textarea_input.valueChange)}</textarea>${_._el_resume($scope0_id, \"#textarea/0\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_input\");\n  _._scope($scope0_id, {\n    input\n  }, \"__tests__/template.marko\", 0, {\n    input: 0\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/textarea-spread/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"value\":\"foo\"}`\n\n```html\n<textarea>\n  foo\n</textarea>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/textarea-spread/__snapshots__/resume.expected.md",
    "content": "# Render `{\"value\":\"foo\"}`\n\n```html\n<html>\n  <head />\n  <body>\n    <textarea>\n      foo\n    </textarea>\n    <!--M_*1 #textarea/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          input:\n          {\n            value: \"foo\"\n          }\n        }]),\n        \"__tests__/template.marko_0_input 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/textarea-spread/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<textarea>\n  foo\n</textarea>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/textarea-spread/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <textarea>foo</textarea><!--M_*1 #textarea/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{input:{value:\"foo\"}}]),\"__tests__/template.marko_0_input 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <textarea>\n      foo\n    </textarea>\n    <!--M_*1 #textarea/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          input:\n          {\n            value: \"foo\"\n          }\n        }]),\n        \"__tests__/template.marko_0_input 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/textarea\nINSERT html/body/textarea/#text\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/textarea-spread/template.marko",
    "content": "<textarea ...input/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/textarea-spread/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [{ value: \"foo\" }],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/title-counter/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$count__script\": \"n\",\n      \"$$count\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/title-counter/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  +\n</button>\n<div>\n  Count is 0\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  +\n</button>\n<div>\n  Count is 1\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  +\n</button>\n<div>\n  Count is 2\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  +\n</button>\n<div>\n  Count is 3\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/title-counter/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<title>\n  Count is 0\n</title>\n<button>\n  +\n</button>\n<div>\n  Count is 0\n</div>\n```\n\n# Mutations\n```\nINSERT title, button, div\nINSERT div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<title>\n  Count is 1\n</title>\n<button>\n  +\n</button>\n<div>\n  Count is 1\n</div>\n```\n\n# Mutations\n```\nREMOVE #text in title\nINSERT title/#text\nREMOVE #text in div\nINSERT div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<title>\n  Count is 2\n</title>\n<button>\n  +\n</button>\n<div>\n  Count is 2\n</div>\n```\n\n# Mutations\n```\nREMOVE #text in title\nINSERT title/#text\nREMOVE #text in div\nINSERT div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<title>\n  Count is 3\n</title>\n<button>\n  +\n</button>\n<div>\n  Count is 3\n</div>\n```\n\n# Mutations\n```\nREMOVE #text in title\nINSERT title/#text\nREMOVE #text in div\nINSERT div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/title-counter/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 183 (min) 127 (brotli)\nconst $count__script = _._script(\"a0\", ($scope) => {\n    (_._on($scope.b, \"click\", function () {\n      $count($scope, $scope.d + 1);\n    }),\n      $scope.d,\n      ($scope.c.textContent = document.title));\n  }),\n  $count = _._let(3, ($scope) => {\n    (_._text_content($scope.a, `Count is ${_._to_text($scope.d)}`),\n      $count__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/title-counter/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<title></title><button>+</button><div></div>\";\nexport const $walks = /* get, over(1), get, over(1), get, over(1) */\" b b b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $count__script = _._script(\"__tests__/template.marko_0_count\", $scope => {\n  _._on($scope[\"#button/1\"], \"click\", function () {\n    $count($scope, $scope.count + 1);\n  });\n  $scope.count;\n  _._el_read($scope[\"#div/2\"]).textContent = document.title;\n});\nconst $count = /* @__PURE__ */_._let(\"count/3\", $scope => {\n  _._text_content($scope[\"#title/0\"], `Count is ${_._to_text($scope.count)}`);\n  $count__script($scope);\n});\nexport function $setup($scope) {\n  $count($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/title-counter/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let count = 0;\n  _._html(`<title>Count is ${_._escape_text(count)}</title>${_._el_resume($scope0_id, \"#title/0\")}<button>+</button>${_._el_resume($scope0_id, \"#button/1\")}<div></div>${_._el_resume($scope0_id, \"#div/2\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_count\");\n  _._scope($scope0_id, {\n    count\n  }, \"__tests__/template.marko\", 0, {\n    count: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/title-counter/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  +\n</button>\n<div>\n  Count is 0\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  +\n</button>\n<div>\n  Count is 1\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  +\n</button>\n<div>\n  Count is 2\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  +\n</button>\n<div>\n  Count is 3\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/title-counter/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head>\n    <title>\n      Count is 0\n    </title>\n    <!--M_*1 #title/0-->\n  </head>\n  <body>\n    <button>\n      +\n    </button>\n    <!--M_*1 #button/1-->\n    <div>\n      Count is 0\n    </div>\n    <!--M_*1 #div/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head>\n    <title>\n      Count is 1\n    </title>\n    <!--M_*1 #title/0-->\n  </head>\n  <body>\n    <button>\n      +\n    </button>\n    <!--M_*1 #button/1-->\n    <div>\n      Count is 1\n    </div>\n    <!--M_*1 #div/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #text in html/head/title\nINSERT html/head/title/#text\nREMOVE #text in html/body/div\nINSERT html/body/div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head>\n    <title>\n      Count is 2\n    </title>\n    <!--M_*1 #title/0-->\n  </head>\n  <body>\n    <button>\n      +\n    </button>\n    <!--M_*1 #button/1-->\n    <div>\n      Count is 2\n    </div>\n    <!--M_*1 #div/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #text in html/head/title\nINSERT html/head/title/#text\nREMOVE #text in html/body/div\nINSERT html/body/div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head>\n    <title>\n      Count is 3\n    </title>\n    <!--M_*1 #title/0-->\n  </head>\n  <body>\n    <button>\n      +\n    </button>\n    <!--M_*1 #button/1-->\n    <div>\n      Count is 3\n    </div>\n    <!--M_*1 #div/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #text in html/head/title\nINSERT html/head/title/#text\nREMOVE #text in html/body/div\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/title-counter/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  +\n</button>\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/title-counter/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <title>Count is 0</title><!--M_*1 #title/0--><button>+</button><!--M_*1 #button/1--><div></div><!--M_*1 #div/2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{count:0}]),\"__tests__/template.marko_0_count 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head>\n    <title>\n      Count is 0\n    </title>\n    <!--M_*1 #title/0-->\n  </head>\n  <body>\n    <button>\n      +\n    </button>\n    <!--M_*1 #button/1-->\n    <div />\n    <!--M_*1 #div/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          count: 0\n        }]),\n        \"__tests__/template.marko_0_count 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/head/title\nINSERT html/head/title/#text\nINSERT html/head/#comment\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment0\nINSERT html/body/div\nINSERT html/body/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/title-counter/template.marko",
    "content": "<let/count=0>\n<title>Count is ${count}</title>\n<button onClick() { count++ }>+</button>\n<div/el/>\n<script>\n  count;\n  el().textContent = document.title;\n</script>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/title-counter/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-first-child/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-first-child/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"value\":\"Hello\"}`\n\n```html\n<div>\n  <span>\n    Hello\n  </span>\n  <span />\n  <span />\n</div>\n```\n\n\n# Render `{\"value\":false}`\n\n```html\n<div>\n  <span />\n  <span />\n</div>\n```\n\n\n# Render `{\"value\":\"World\"}`\n\n```html\n<div>\n  <span>\n    World\n  </span>\n  <span />\n  <span />\n</div>\n```\n\n\n# Render `{\"value\":\"!\"}`\n\n```html\n<div>\n  <span>\n    !\n  </span>\n  <span />\n  <span />\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-first-child/__snapshots__/csr.expected.md",
    "content": "# Render `{\"value\":\"Hello\"}`\n\n```html\n<div>\n  <span>\n    Hello\n  </span>\n  <span />\n  <span />\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render `{\"value\":false}`\n\n```html\n<div>\n  <span />\n  <span />\n</div>\n```\n\n# Mutations\n```\nINSERT div/#text\nREMOVE span after div/#text\n```\n\n# Render `{\"value\":\"World\"}`\n\n```html\n<div>\n  <span>\n    World\n  </span>\n  <span />\n  <span />\n</div>\n```\n\n# Mutations\n```\nINSERT div/span0\nREMOVE #text after div/span0\nUPDATE div/span0/#text \" \" => \"World\"\n```\n\n# Render `{\"value\":\"!\"}`\n\n```html\n<div>\n  <span>\n    !\n  </span>\n  <span />\n  <span />\n</div>\n```\n\n# Mutations\n```\nUPDATE div/span0/#text \"World\" => \"!\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-first-child/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-first-child/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div><!><span></span><span></span></div>\";\nexport const $walks = /* next(1), replace, out(1) */\"D%l\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content__value = /* @__PURE__ */_._if_closure(\"#text/0\", 0, $scope => _._text($scope[\"#text/0\"], $scope._.value));\nconst $if_content__setup = $if_content__value;\nconst $if = /* @__PURE__ */_._if(\"#text/0\", \"<span> </span>\", /* next(1), get, out(1) */\"D l\", $if_content__setup);\nexport const $value = /* @__PURE__ */_._const(\"value\", $scope => {\n  $if($scope, $scope.value ? 0 : 1);\n  $if_content__value($scope);\n});\nexport const $input = ($scope, input) => $value($scope, input.value);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-first-child/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    value\n  } = input;\n  _._html(\"<div>\");\n  _._if(() => {\n    if (value) {\n      const $scope1_id = _._scope_id();\n      _._html(`<span>${_._escape(value)}${_._el_resume($scope1_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.value */0))}</span>`);\n      _._serialize_if($scope0_reason, /* input.value */0) && _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"3:4\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.value */0), _._serialize_guard($scope0_reason, /* input.value */0), _._serialize_guard($scope0_reason, /* input.value */0), 0, 1);\n  _._html(\"<span></span><span></span></div>\");\n  _._serialize_if($scope0_reason, /* input.value */0) && _._scope($scope0_id, {\n    value\n  }, \"__tests__/template.marko\", 0, {\n    value: \"1:10\"\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-first-child/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"value\":\"Hello\"}`\n\n```html\n<div>\n  <span>\n    Hello\n  </span>\n  <span />\n  <span />\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-first-child/__snapshots__/resume.expected.md",
    "content": "# Render `{\"value\":\"Hello\"}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <span>\n        Hello\n      </span>\n      <span />\n      <span />\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-first-child/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  <span>\n    Hello\n  </span>\n  <span />\n  <span />\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-first-child/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><span>Hello</span><span></span><span></span></div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <span>\n        Hello\n      </span>\n      <span />\n      <span />\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/span0\nINSERT html/body/div/span0/#text\nINSERT html/body/div/span1\nINSERT html/body/div/span2\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-first-child/template.marko",
    "content": "<attrs/{ value }/>\n<div>\n  <if=value>\n    <span>${value}</span>\n  </if>\n  <span/>\n  <span/>\n</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-first-child/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [\n    {\n      value: \"Hello\",\n    },\n    {\n      value: false,\n    },\n    {\n      value: \"World\",\n    },\n    {\n      value: \"!\",\n    },\n  ],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-nested/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-nested/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"show\":false,\"value1\":\"Hello\",\"value2\":\"World\"}`\n\n```html\n<div />\n```\n\n\n# Render `{\"show\":true,\"value1\":\"Hello\",\"value2\":\"World\"}`\n\n```html\n<div>\n  <span>\n    Hello\n  </span>\n  <span>\n    World\n  </span>\n</div>\n```\n\n\n# Render `{\"show\":true,\"value1\":false,\"value2\":\"World\"}`\n\n```html\n<div>\n  <span>\n    World\n  </span>\n</div>\n```\n\n\n# Render `{\"show\":true,\"value1\":\"Goodbye\",\"value2\":\"World\"}`\n\n```html\n<div>\n  <span>\n    Goodbye\n  </span>\n  <span>\n    World\n  </span>\n</div>\n```\n\n\n# Render `{\"show\":false,\"value1\":\"Goodbye\",\"value2\":\"World\"}`\n\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-nested/__snapshots__/csr.expected.md",
    "content": "# Render `{\"show\":false,\"value1\":\"Hello\",\"value2\":\"World\"}`\n\n```html\n<div />\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render `{\"show\":true,\"value1\":\"Hello\",\"value2\":\"World\"}`\n\n```html\n<div>\n  <!---->\n  <span>\n    Hello\n  </span>\n  <span>\n    World\n  </span>\n  <!---->\n</div>\n```\n\n# Mutations\n```\nINSERT div/#comment0, #text, #text, div/#comment1\nINSERT div/span0\nREMOVE #text after div/span0\nINSERT div/span1\nREMOVE #text after div/span1\nUPDATE div/span0/#text \" \" => \"Hello\"\nUPDATE div/span1/#text \" \" => \"World\"\n```\n\n# Render `{\"show\":true,\"value1\":false,\"value2\":\"World\"}`\n\n```html\n<div>\n  <!---->\n  <span>\n    World\n  </span>\n  <!---->\n</div>\n```\n\n# Mutations\n```\nINSERT div/#text\nREMOVE span after div/#text\n```\n\n# Render `{\"show\":true,\"value1\":\"Goodbye\",\"value2\":\"World\"}`\n\n```html\n<div>\n  <!---->\n  <span>\n    Goodbye\n  </span>\n  <span>\n    World\n  </span>\n  <!---->\n</div>\n```\n\n# Mutations\n```\nINSERT div/span0\nREMOVE #text after div/span0\nUPDATE div/span0/#text \" \" => \"Goodbye\"\n```\n\n# Render `{\"show\":false,\"value1\":\"Goodbye\",\"value2\":\"World\"}`\n\n```html\n<div />\n```\n\n# Mutations\n```\nREMOVE #comment, span, span, #comment in div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-nested/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-nested/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* get, over(1) */\" b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content3__value = /* @__PURE__ */_._closure_get(\"value2\", $scope => _._text($scope[\"#text/0\"], $scope._._.value2), $scope => $scope._._);\nconst $if_content3__setup = $if_content3__value;\nconst $if_content2__value = /* @__PURE__ */_._closure_get(\"value1\", $scope => _._text($scope[\"#text/0\"], $scope._._.value1), $scope => $scope._._);\nconst $if_content2__setup = $if_content2__value;\nconst $if_content__if = /* @__PURE__ */_._if(\"#text/0\", \"<span> </span>\", /* next(1), get, out(1) */\"D l\", $if_content2__setup);\nconst $if_content__value = /* @__PURE__ */_._if_closure(\"#div/0\", 0, $scope => $if_content__if($scope, $scope._.value1 ? 0 : 1));\nconst $if_content__setup = $scope => {\n  $if_content__value._($scope);\n  $if_content__value2._($scope);\n};\nconst $if_content__if2 = /* @__PURE__ */_._if(\"#text/1\", \"<span> </span>\", /* next(1), get, out(1) */\"D l\", $if_content3__setup);\nconst $if_content__value2 = /* @__PURE__ */_._if_closure(\"#div/0\", 0, $scope => $if_content__if2($scope, $scope._.value2 ? 0 : 1));\nconst $if = /* @__PURE__ */_._if(\"#div/0\", \"<!><!><!><!>\", /* over(1), replace, over(1), replace, over(2) */\"b%b%c\", $if_content__setup);\nexport const $show = ($scope, show) => $if($scope, show ? 0 : 1);\nexport const $input = ($scope, input) => {\n  $show($scope, input.show);\n  $value($scope, input.value1);\n  $value2($scope, input.value2);\n};\nconst $value__closure = /* @__PURE__ */_._closure($if_content2__value);\nexport const $value = /* @__PURE__ */_._const(\"value1\", $scope => {\n  $if_content__value($scope);\n  $value__closure($scope);\n});\nconst $value2__closure = /* @__PURE__ */_._closure($if_content3__value);\nexport const $value2 = /* @__PURE__ */_._const(\"value2\", $scope => {\n  $if_content__value2($scope);\n  $value2__closure($scope);\n});\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-nested/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $value__closures = new Set();\n  const $value2__closures = new Set();\n  const {\n    show,\n    value1,\n    value2\n  } = input;\n  _._html(\"<div>\");\n  _._if(() => {\n    if (show) {\n      const $scope1_id = _._scope_id();\n      _._if(() => {\n        if (value1) {\n          const $scope2_id = _._scope_id();\n          _._html(`<span>${_._escape(value1)}${_._el_resume($scope2_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.value1 */5))}</span>`);\n          _._serialize_if($scope0_reason, /* input.show, input.value1 */0) && _._subscribe($value__closures, _._scope($scope2_id, {\n            _: _._scope_with_id($scope1_id),\n            \"ClosureSignalIndex:value1\": _._serialize_if($scope0_reason, /* input.value1 */5) && 0\n          }, \"__tests__/template.marko\", \"4:6\"));\n          return 0;\n        }\n      }, $scope1_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.value1 */5), _._serialize_guard($scope0_reason, /* input.value1 */5), _._serialize_guard($scope0_reason, /* input.value1, input.value2 */2), 0, 1);\n      _._if(() => {\n        if (value2) {\n          const $scope3_id = _._scope_id();\n          _._html(`<span>${_._escape(value2)}${_._el_resume($scope3_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.value2 */6))}</span>`);\n          _._serialize_if($scope0_reason, /* input.show, input.value2 */1) && _._subscribe($value2__closures, _._scope($scope3_id, {\n            _: _._scope_with_id($scope1_id),\n            \"ClosureSignalIndex:value2\": _._serialize_if($scope0_reason, /* input.value2 */6) && 0\n          }, \"__tests__/template.marko\", \"5:6\"));\n          return 0;\n        }\n      }, $scope1_id, \"#text/1\", _._serialize_guard($scope0_reason, /* input.value2 */6), _._serialize_guard($scope0_reason, /* input.value2 */6), _._serialize_guard($scope0_reason, /* input.value1, input.value2 */2), 0, 1);\n      _._serialize_if($scope0_reason, /* input.show, input.value1, input.value2 */3) && _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"3:4\");\n      return 0;\n    }\n  }, $scope0_id, \"#div/0\", _._serialize_guard($scope0_reason, /* input.show, input.value1, input.value2 */3), _._serialize_guard($scope0_reason, /* input.show */4), _._serialize_guard($scope0_reason, /* input.show */4), \"</div>\");\n  _._serialize_if($scope0_reason, /* input.show, input.value1, input.value2 */3) && _._scope($scope0_id, {\n    value1: _._serialize_if($scope0_reason, /* input.show, input.value1 */0) && value1,\n    value2: _._serialize_if($scope0_reason, /* input.show, input.value2 */1) && value2,\n    \"ClosureScopes:value1\": _._serialize_if($scope0_reason, /* input.value1 */5) && $value__closures,\n    \"ClosureScopes:value2\": _._serialize_if($scope0_reason, /* input.value2 */6) && $value2__closures\n  }, \"__tests__/template.marko\", 0, {\n    value1: \"1:15\",\n    value2: \"1:23\"\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-nested/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"show\":false,\"value1\":\"Hello\",\"value2\":\"World\"}`\n\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-nested/__snapshots__/resume.expected.md",
    "content": "# Render `{\"show\":false,\"value1\":\"Hello\",\"value2\":\"World\"}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div />\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-nested/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-nested/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div></div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div />\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-nested/template.marko",
    "content": "<const/{show, value1, value2} = input/>\n<div>\n  <if=show>\n    <if=value1><span>${value1}</span></if>\n    <if=value2><span>${value2}</span></if>\n  </if>\n</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-nested/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [\n    {\n      show: false,\n      value1: \"Hello\",\n      value2: \"World\",\n    },\n    {\n      show: true,\n      value1: \"Hello\",\n      value2: \"World\",\n    },\n    {\n      show: true,\n      value1: false,\n      value2: \"World\",\n    },\n    {\n      show: true,\n      value1: \"Goodbye\",\n      value2: \"World\",\n    },\n    {\n      show: false,\n      value1: \"Goodbye\",\n      value2: \"World\",\n    },\n  ],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-nested-2/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"_\",\n      \"$$if_content2__count__script\": \"o\",\n      \"$$if_content2__count\": \"c\",\n      \"$$if_content2__setup\": \"i\",\n      \"$$if_content__if\": \"n\",\n      \"$$if_content__inner__script\": \"r\",\n      \"$$if_content__inner\": \"e\",\n      \"$$if_content__setup\": \"u\",\n      \"$$if\": \"a\",\n      \"$$outer__script\": \"l\",\n      \"$$outer\": \"m\",\n      \"$$inner\": \"s\",\n      \"$$count__closure\": \"f\",\n      \"$$count\": \"b\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-nested-2/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    0\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#count\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    1\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#count\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    2\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#inner\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#inner\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    2\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#count\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    3\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#outer\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#outer\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    3\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#count\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    4\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-nested-2/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    0\n  </button>\n  <!---->\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render\n```js\ncontainer.querySelector(\"#count\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    1\n  </button>\n  <!---->\n</div>\n```\n\n# Mutations\n```\nUPDATE div/button2/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#count\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    2\n  </button>\n  <!---->\n</div>\n```\n\n# Mutations\n```\nUPDATE div/button2/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#inner\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <!---->\n</div>\n```\n\n# Mutations\n```\nINSERT div/#text\nREMOVE button after div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"#inner\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    2\n  </button>\n  <!---->\n</div>\n```\n\n# Mutations\n```\nINSERT div/button2\nREMOVE #text after div/button2\nUPDATE div/button2/#text \" \" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#count\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    3\n  </button>\n  <!---->\n</div>\n```\n\n# Mutations\n```\nUPDATE div/button2/#text \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#outer\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n</div>\n```\n\n# Mutations\n```\nINSERT div/#text\nREMOVE button after div/#text\nREMOVE button after div/#text\nREMOVE #comment after div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"#outer\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    3\n  </button>\n  <!---->\n</div>\n```\n\n# Mutations\n```\nINSERT div/button1, #text, div/#comment\nREMOVE #text after div/#comment\nINSERT div/button2\nREMOVE #text after div/button2\nUPDATE div/button2/#text \" \" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#count\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    4\n  </button>\n  <!---->\n</div>\n```\n\n# Mutations\n```\nUPDATE div/button2/#text \"3\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-nested-2/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 507 (min) 245 (brotli)\nconst $if_content2__count__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $count($scope._._, $scope._._.e + 1);\n    }),\n  ),\n  $if_content2__count = _._closure_get(\n    4,\n    ($scope) => {\n      (_._text($scope.b, $scope._._.e), $if_content2__count__script($scope));\n    },\n    ($scope) => $scope._._,\n  ),\n  $if_content2__setup = $if_content2__count,\n  $if_content__if = _._if(\n    1,\n    \"<button id=count> </button>\",\n    \" D l\",\n    $if_content2__setup,\n  ),\n  $if_content__inner__script = _._script(\"a1\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $inner($scope._, !$scope._.d);\n    }),\n  ),\n  $if_content__inner = _._if_closure(1, 0, ($scope) => {\n    ($if_content__if($scope, $scope._.d ? 0 : 1),\n      $if_content__inner__script($scope));\n  }),\n  $if_content__setup = $if_content__inner,\n  $if = _._if(\n    1,\n    \"<button id=inner></button><!><!>\",\n    \" b%c\",\n    $if_content__setup,\n  ),\n  $outer__script = _._script(\"a2\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $outer($scope, !$scope.c);\n    }),\n  ),\n  $outer = _._let(2, ($scope) => {\n    ($if($scope, $scope.c ? 0 : 1), $outer__script($scope));\n  }),\n  $inner = _._let(3, $if_content__inner),\n  $count__closure = _._closure($if_content2__count),\n  $count = _._let(4, $count__closure);\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-nested-2/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div><button id=outer></button><!></div>\";\nexport const $walks = /* next(1), get, over(1), replace, out(1) */\"D b%l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content2__count__script = _._script(\"__tests__/template.marko_2_count\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $count($scope._._, $scope._._.count + 1);\n}));\nconst $if_content2__count = /* @__PURE__ */_._closure_get(\"count\", $scope => {\n  _._text($scope[\"#text/1\"], $scope._._.count);\n  $if_content2__count__script($scope);\n}, $scope => $scope._._);\nconst $if_content2__setup = $if_content2__count;\nconst $if_content__if = /* @__PURE__ */_._if(\"#text/1\", \"<button id=count> </button>\", /* get, next(1), get, out(1) */\" D l\", $if_content2__setup);\nconst $if_content__inner__script = _._script(\"__tests__/template.marko_1_inner\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $inner($scope._, !$scope._.inner);\n}));\nconst $if_content__inner = /* @__PURE__ */_._if_closure(\"#text/1\", 0, $scope => {\n  $if_content__if($scope, $scope._.inner ? 0 : 1);\n  $if_content__inner__script($scope);\n});\nconst $if_content__setup = $if_content__inner;\nconst $if = /* @__PURE__ */_._if(\"#text/1\", \"<button id=inner></button><!><!>\", /* get, over(1), replace, over(2) */\" b%c\", $if_content__setup);\nconst $outer__script = _._script(\"__tests__/template.marko_0_outer\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $outer($scope, !$scope.outer);\n}));\nconst $outer = /* @__PURE__ */_._let(\"outer/2\", $scope => {\n  $if($scope, $scope.outer ? 0 : 1);\n  $outer__script($scope);\n});\nconst $inner = /* @__PURE__ */_._let(\"inner/3\", $if_content__inner);\nconst $count__closure = /* @__PURE__ */_._closure($if_content2__count);\nconst $count = /* @__PURE__ */_._let(\"count/4\", $count__closure);\nexport function $setup($scope) {\n  $outer($scope, true);\n  $inner($scope, true);\n  $count($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-nested-2/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $count__closures = new Set();\n  let outer = true;\n  let inner = true;\n  let count = 0;\n  _._html(`<div><button id=outer></button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._if(() => {\n    if (outer) {\n      const $scope1_id = _._scope_id();\n      _._html(`<button id=inner></button>${_._el_resume($scope1_id, \"#button/0\")}`);\n      _._if(() => {\n        if (inner) {\n          const $scope2_id = _._scope_id();\n          _._html(`<button id=count>${_._escape(count)}${_._el_resume($scope2_id, \"#text/1\")}</button>${_._el_resume($scope2_id, \"#button/0\")}`);\n          _._script($scope2_id, \"__tests__/template.marko_2_count\");\n          _._subscribe($count__closures, _._scope($scope2_id, {\n            _: _._scope_with_id($scope1_id),\n            \"ClosureSignalIndex:count\": 0\n          }, \"__tests__/template.marko\", \"8:6\"));\n          return 0;\n        }\n      }, $scope1_id, \"#text/1\", 1, /* inner */1, /* inner */1, 0, 1);\n      _._script($scope1_id, \"__tests__/template.marko_1_inner\");\n      _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"6:4\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/1\");\n  _._html(\"</div>\");\n  _._script($scope0_id, \"__tests__/template.marko_0_outer\");\n  _._scope($scope0_id, {\n    outer,\n    inner,\n    count,\n    \"ClosureScopes:count\": $count__closures\n  }, \"__tests__/template.marko\", 0, {\n    outer: \"1:6\",\n    inner: \"2:6\",\n    count: \"3:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-nested-2/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    0\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#count\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    1\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#count\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    2\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#inner\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#inner\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    2\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#count\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    3\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#outer\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#outer\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    3\n  </button>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#count\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    4\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-nested-2/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button\n        id=\"outer\"\n      />\n      <!--M_*1 #button/0-->\n      <!--M_[-->\n      <button\n        id=\"inner\"\n      />\n      <!--M_*2 #button/0-->\n      <button\n        id=\"count\"\n      >\n        0\n        <!--M_*3 #text/1-->\n      </button>\n      <!--M_*3 #button/0-->\n      <!--M_|2 #text/1 3-->\n      <!--M_]1 #text/1 2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          outer: !0,\n          inner: !0,\n          count: 0,\n          \"ClosureScopes:count\": _.d = new Set\n        }, _.b = {\n          _: _.a\n        }, _.e = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 0\n        }], (_.d).add(_.e), _.c),\n        \"__tests__/template.marko_2_count 3 __tests__/template.marko_1_inner 2 __tests__/template.marko_0_outer 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"#count\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button\n        id=\"outer\"\n      />\n      <!--M_*1 #button/0-->\n      <!--M_[-->\n      <button\n        id=\"inner\"\n      />\n      <!--M_*2 #button/0-->\n      <button\n        id=\"count\"\n      >\n        1\n        <!--M_*3 #text/1-->\n      </button>\n      <!--M_*3 #button/0-->\n      <!--M_|2 #text/1 3-->\n      <!--M_]1 #text/1 2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          outer: !0,\n          inner: !0,\n          count: 0,\n          \"ClosureScopes:count\": _.d = new Set\n        }, _.b = {\n          _: _.a\n        }, _.e = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 0\n        }], (_.d).add(_.e), _.c),\n        \"__tests__/template.marko_2_count 3 __tests__/template.marko_1_inner 2 __tests__/template.marko_0_outer 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/button2/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#count\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button\n        id=\"outer\"\n      />\n      <!--M_*1 #button/0-->\n      <!--M_[-->\n      <button\n        id=\"inner\"\n      />\n      <!--M_*2 #button/0-->\n      <button\n        id=\"count\"\n      >\n        2\n        <!--M_*3 #text/1-->\n      </button>\n      <!--M_*3 #button/0-->\n      <!--M_|2 #text/1 3-->\n      <!--M_]1 #text/1 2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          outer: !0,\n          inner: !0,\n          count: 0,\n          \"ClosureScopes:count\": _.d = new Set\n        }, _.b = {\n          _: _.a\n        }, _.e = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 0\n        }], (_.d).add(_.e), _.c),\n        \"__tests__/template.marko_2_count 3 __tests__/template.marko_1_inner 2 __tests__/template.marko_0_outer 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/button2/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#inner\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button\n        id=\"outer\"\n      />\n      <!--M_*1 #button/0-->\n      <!--M_[-->\n      <button\n        id=\"inner\"\n      />\n      <!--M_*2 #button/0-->\n      <!--M_|2 #text/1 3-->\n      <!--M_*3 #button/0-->\n      <!--M_]1 #text/1 2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          outer: !0,\n          inner: !0,\n          count: 0,\n          \"ClosureScopes:count\": _.d = new Set\n        }, _.b = {\n          _: _.a\n        }, _.e = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 0\n        }], (_.d).add(_.e), _.c),\n        \"__tests__/template.marko_2_count 3 __tests__/template.marko_1_inner 2 __tests__/template.marko_0_outer 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/div/#comment3 after html/body/div/#comment4\nINSERT html/body/div/#comment3\nREMOVE button after html/body/div/#comment3\n```\n\n# Render\n```js\ncontainer.querySelector(\"#inner\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button\n        id=\"outer\"\n      />\n      <!--M_*1 #button/0-->\n      <!--M_[-->\n      <button\n        id=\"inner\"\n      />\n      <!--M_*2 #button/0-->\n      <button\n        id=\"count\"\n      >\n        2\n      </button>\n      <!--M_*3 #button/0-->\n      <!--M_]1 #text/1 2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          outer: !0,\n          inner: !0,\n          count: 0,\n          \"ClosureScopes:count\": _.d = new Set\n        }, _.b = {\n          _: _.a\n        }, _.e = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 0\n        }], (_.d).add(_.e), _.c),\n        \"__tests__/template.marko_2_count 3 __tests__/template.marko_1_inner 2 __tests__/template.marko_0_outer 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/button2\nREMOVE #comment after html/body/div/button2\nUPDATE html/body/div/button2/#text \" \" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#count\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button\n        id=\"outer\"\n      />\n      <!--M_*1 #button/0-->\n      <!--M_[-->\n      <button\n        id=\"inner\"\n      />\n      <!--M_*2 #button/0-->\n      <button\n        id=\"count\"\n      >\n        3\n      </button>\n      <!--M_*3 #button/0-->\n      <!--M_]1 #text/1 2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          outer: !0,\n          inner: !0,\n          count: 0,\n          \"ClosureScopes:count\": _.d = new Set\n        }, _.b = {\n          _: _.a\n        }, _.e = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 0\n        }], (_.d).add(_.e), _.c),\n        \"__tests__/template.marko_2_count 3 __tests__/template.marko_1_inner 2 __tests__/template.marko_0_outer 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/button2/#text \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#outer\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button\n        id=\"outer\"\n      />\n      <!--M_*1 #button/0-->\n      <!--M_]1 #text/1 2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          outer: !0,\n          inner: !0,\n          count: 0,\n          \"ClosureScopes:count\": _.d = new Set\n        }, _.b = {\n          _: _.a\n        }, _.e = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 0\n        }], (_.d).add(_.e), _.c),\n        \"__tests__/template.marko_2_count 3 __tests__/template.marko_1_inner 2 __tests__/template.marko_0_outer 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/div/#comment1 after #text\nINSERT html/body/div/#comment1\nREMOVE #comment after html/body/div/#comment1\nREMOVE button after html/body/div/#comment1\nREMOVE #comment after html/body/div/#comment1\nREMOVE button after html/body/div/#comment1\nREMOVE #comment after html/body/div/#comment1\nREMOVE #text after html/body/div/#comment1\n```\n\n# Render\n```js\ncontainer.querySelector(\"#outer\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button\n        id=\"outer\"\n      />\n      <!--M_*1 #button/0-->\n      <button\n        id=\"inner\"\n      />\n      <button\n        id=\"count\"\n      >\n        3\n      </button>\n      <!---->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          outer: !0,\n          inner: !0,\n          count: 0,\n          \"ClosureScopes:count\": _.d = new Set\n        }, _.b = {\n          _: _.a\n        }, _.e = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 0\n        }], (_.d).add(_.e), _.c),\n        \"__tests__/template.marko_2_count 3 __tests__/template.marko_1_inner 2 __tests__/template.marko_0_outer 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/button1, #text, html/body/div/#comment1\nREMOVE #comment after html/body/div/#comment1\nINSERT html/body/div/button2\nREMOVE #text after html/body/div/button2\nUPDATE html/body/div/button2/#text \" \" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#count\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button\n        id=\"outer\"\n      />\n      <!--M_*1 #button/0-->\n      <button\n        id=\"inner\"\n      />\n      <button\n        id=\"count\"\n      >\n        4\n      </button>\n      <!---->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          outer: !0,\n          inner: !0,\n          count: 0,\n          \"ClosureScopes:count\": _.d = new Set\n        }, _.b = {\n          _: _.a\n        }, _.e = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 0\n        }], (_.d).add(_.e), _.c),\n        \"__tests__/template.marko_2_count 3 __tests__/template.marko_1_inner 2 __tests__/template.marko_0_outer 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/button2/#text \"3\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-nested-2/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    0\n  </button>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-nested-2/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><button id=outer></button><!--M_*1 #button/0--><!--M_[--><button id=inner></button><!--M_*2 #button/0--><button id=count>0<!--M_*3 #text/1--></button><!--M_*3 #button/0--><!--M_|2 #text/1 3--><!--M_]1 #text/1 2--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.a={outer:!0,inner:!0,count:0,\"ClosureScopes:count\":_.d=new Set},_.b={_:_.a},_.e={_:_.b,\"ClosureSignalIndex:count\":0}],(_.d).add(_.e),_.c),\"__tests__/template.marko_2_count 3 __tests__/template.marko_1_inner 2 __tests__/template.marko_0_outer 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button\n        id=\"outer\"\n      />\n      <!--M_*1 #button/0-->\n      <!--M_[-->\n      <button\n        id=\"inner\"\n      />\n      <!--M_*2 #button/0-->\n      <button\n        id=\"count\"\n      >\n        0\n        <!--M_*3 #text/1-->\n      </button>\n      <!--M_*3 #button/0-->\n      <!--M_|2 #text/1 3-->\n      <!--M_]1 #text/1 2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          outer: !0,\n          inner: !0,\n          count: 0,\n          \"ClosureScopes:count\": _.d = new Set\n        }, _.b = {\n          _: _.a\n        }, _.e = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 0\n        }], (_.d).add(_.e), _.c),\n        \"__tests__/template.marko_2_count 3 __tests__/template.marko_1_inner 2 __tests__/template.marko_0_outer 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/button0\nINSERT html/body/div/#comment0\nINSERT html/body/div/#comment1\nINSERT html/body/div/button1\nINSERT html/body/div/#comment2\nINSERT html/body/div/button2\nINSERT html/body/div/button2/#text\nINSERT html/body/div/button2/#comment\nINSERT html/body/div/#comment3\nINSERT html/body/div/#comment4\nINSERT html/body/div/#comment5\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-nested-2/template.marko",
    "content": "<let/outer = true/>\n<let/inner = true/>\n<let/count = 0/>\n<div>\n  <button id=\"outer\" onClick(){ outer = !outer }/>\n  <if=outer>\n    <button id=\"inner\" onClick(){ inner = !inner }/>\n    <if=inner>\n      <button id=\"count\" onClick(){ count++ }>\n        ${count}\n      </button>\n    </if>\n  </if>\n</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-nested-2/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nconst clickOuter = (container: Element) => {\n  container.querySelector<HTMLButtonElement>(\"#outer\")!.click();\n};\n\nconst clickInner = (container: Element) => {\n  container.querySelector<HTMLButtonElement>(\"#inner\")!.click();\n};\n\nconst clickCount = (container: Element) => {\n  container.querySelector<HTMLButtonElement>(\"#count\")!.click();\n};\n\nexport const config: TestConfig = {\n  steps: [\n    {},\n    clickCount,\n    clickCount,\n    clickInner,\n    clickInner,\n    clickCount,\n    clickOuter,\n    clickOuter,\n    clickCount,\n  ],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-nested-3/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"_\",\n      \"$$if_content2__count__script\": \"o\",\n      \"$$if_content2__count\": \"c\",\n      \"$$if_content2__setup\": \"i\",\n      \"$$if_content__if\": \"n\",\n      \"$$if_content__inner__script\": \"r\",\n      \"$$if_content__inner\": \"e\",\n      \"$$if_content__setup\": \"u\",\n      \"$$if\": \"a\",\n      \"$$outer__script\": \"l\",\n      \"$$outer\": \"m\",\n      \"$$inner\": \"s\",\n      \"$$count__closure\": \"f\",\n      \"$$count\": \"b\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-nested-3/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    0\n  </button>\n   hello\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#count\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    1\n  </button>\n   hello\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#count\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    2\n  </button>\n   hello\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#inner\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n   hello\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#inner\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    2\n  </button>\n   hello\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#count\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    3\n  </button>\n   hello\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#outer\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n   hello\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#outer\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    3\n  </button>\n   hello\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#count\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    4\n  </button>\n   hello\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-nested-3/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    0\n  </button>\n  <!---->\n   hello\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render\n```js\ncontainer.querySelector(\"#count\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    1\n  </button>\n  <!---->\n   hello\n</div>\n```\n\n# Mutations\n```\nUPDATE div/button2/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#count\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    2\n  </button>\n  <!---->\n   hello\n</div>\n```\n\n# Mutations\n```\nUPDATE div/button2/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#inner\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <!---->\n   hello\n</div>\n```\n\n# Mutations\n```\nINSERT div/#text0\nREMOVE button after div/#text0\n```\n\n# Render\n```js\ncontainer.querySelector(\"#inner\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    2\n  </button>\n  <!---->\n   hello\n</div>\n```\n\n# Mutations\n```\nINSERT div/button2\nREMOVE #text after div/button2\nUPDATE div/button2/#text \" \" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#count\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    3\n  </button>\n  <!---->\n   hello\n</div>\n```\n\n# Mutations\n```\nUPDATE div/button2/#text \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#outer\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n   hello\n</div>\n```\n\n# Mutations\n```\nINSERT div/#text0\nREMOVE button after div/#text0\nREMOVE button after div/#text0\nREMOVE #comment after div/#text0\n```\n\n# Render\n```js\ncontainer.querySelector(\"#outer\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    3\n  </button>\n  <!---->\n   hello\n</div>\n```\n\n# Mutations\n```\nINSERT div/button1, #text, div/#comment\nREMOVE #text after div/#comment\nINSERT div/button2\nREMOVE #text after div/button2\nUPDATE div/button2/#text \" \" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#count\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    4\n  </button>\n  <!---->\n   hello\n</div>\n```\n\n# Mutations\n```\nUPDATE div/button2/#text \"3\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-nested-3/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 507 (min) 245 (brotli)\nconst $if_content2__count__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $count($scope._._, $scope._._.e + 1);\n    }),\n  ),\n  $if_content2__count = _._closure_get(\n    4,\n    ($scope) => {\n      (_._text($scope.b, $scope._._.e), $if_content2__count__script($scope));\n    },\n    ($scope) => $scope._._,\n  ),\n  $if_content2__setup = $if_content2__count,\n  $if_content__if = _._if(\n    1,\n    \"<button id=count> </button>\",\n    \" D l\",\n    $if_content2__setup,\n  ),\n  $if_content__inner__script = _._script(\"a1\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $inner($scope._, !$scope._.d);\n    }),\n  ),\n  $if_content__inner = _._if_closure(1, 0, ($scope) => {\n    ($if_content__if($scope, $scope._.d ? 0 : 1),\n      $if_content__inner__script($scope));\n  }),\n  $if_content__setup = $if_content__inner,\n  $if = _._if(\n    1,\n    \"<button id=inner></button><!><!>\",\n    \" b%c\",\n    $if_content__setup,\n  ),\n  $outer__script = _._script(\"a2\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $outer($scope, !$scope.c);\n    }),\n  ),\n  $outer = _._let(2, ($scope) => {\n    ($if($scope, $scope.c ? 0 : 1), $outer__script($scope));\n  }),\n  $inner = _._let(3, $if_content__inner),\n  $count__closure = _._closure($if_content2__count),\n  $count = _._let(4, $count__closure);\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-nested-3/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div><button id=outer></button><!> hello</div>\";\nexport const $walks = /* next(1), get, over(1), replace, out(1) */\"D b%l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content2__count__script = _._script(\"__tests__/template.marko_2_count\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $count($scope._._, $scope._._.count + 1);\n}));\nconst $if_content2__count = /* @__PURE__ */_._closure_get(\"count\", $scope => {\n  _._text($scope[\"#text/1\"], $scope._._.count);\n  $if_content2__count__script($scope);\n}, $scope => $scope._._);\nconst $if_content2__setup = $if_content2__count;\nconst $if_content__if = /* @__PURE__ */_._if(\"#text/1\", \"<button id=count> </button>\", /* get, next(1), get, out(1) */\" D l\", $if_content2__setup);\nconst $if_content__inner__script = _._script(\"__tests__/template.marko_1_inner\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $inner($scope._, !$scope._.inner);\n}));\nconst $if_content__inner = /* @__PURE__ */_._if_closure(\"#text/1\", 0, $scope => {\n  $if_content__if($scope, $scope._.inner ? 0 : 1);\n  $if_content__inner__script($scope);\n});\nconst $if_content__setup = $if_content__inner;\nconst $if = /* @__PURE__ */_._if(\"#text/1\", \"<button id=inner></button><!><!>\", /* get, over(1), replace, over(2) */\" b%c\", $if_content__setup);\nconst $outer__script = _._script(\"__tests__/template.marko_0_outer\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $outer($scope, !$scope.outer);\n}));\nconst $outer = /* @__PURE__ */_._let(\"outer/2\", $scope => {\n  $if($scope, $scope.outer ? 0 : 1);\n  $outer__script($scope);\n});\nconst $inner = /* @__PURE__ */_._let(\"inner/3\", $if_content__inner);\nconst $count__closure = /* @__PURE__ */_._closure($if_content2__count);\nconst $count = /* @__PURE__ */_._let(\"count/4\", $count__closure);\nexport function $setup($scope) {\n  $outer($scope, true);\n  $inner($scope, true);\n  $count($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-nested-3/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $count__closures = new Set();\n  let outer = true;\n  let inner = true;\n  let count = 0;\n  _._html(`<div><button id=outer></button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._if(() => {\n    if (outer) {\n      const $scope1_id = _._scope_id();\n      _._html(`<button id=inner></button>${_._el_resume($scope1_id, \"#button/0\")}`);\n      _._if(() => {\n        if (inner) {\n          const $scope2_id = _._scope_id();\n          _._html(`<button id=count>${_._escape(count)}${_._el_resume($scope2_id, \"#text/1\")}</button>${_._el_resume($scope2_id, \"#button/0\")}`);\n          _._script($scope2_id, \"__tests__/template.marko_2_count\");\n          _._subscribe($count__closures, _._scope($scope2_id, {\n            _: _._scope_with_id($scope1_id),\n            \"ClosureSignalIndex:count\": 0\n          }, \"__tests__/template.marko\", \"8:6\"));\n          return 0;\n        }\n      }, $scope1_id, \"#text/1\", 1, /* inner */1, /* inner */1, 0, 1);\n      _._script($scope1_id, \"__tests__/template.marko_1_inner\");\n      _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"6:4\");\n      return 0;\n    }\n  }, $scope0_id, \"#text/1\");\n  _._html(\" hello</div>\");\n  _._script($scope0_id, \"__tests__/template.marko_0_outer\");\n  _._scope($scope0_id, {\n    outer,\n    inner,\n    count,\n    \"ClosureScopes:count\": $count__closures\n  }, \"__tests__/template.marko\", 0, {\n    outer: \"1:6\",\n    inner: \"2:6\",\n    count: \"3:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-nested-3/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    0\n  </button>\n   hello\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#count\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    1\n  </button>\n   hello\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#count\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    2\n  </button>\n   hello\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#inner\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n   hello\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#inner\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    2\n  </button>\n   hello\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#count\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    3\n  </button>\n   hello\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#outer\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n   hello\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#outer\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    3\n  </button>\n   hello\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"#count\").click();\n```\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    4\n  </button>\n   hello\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-nested-3/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button\n        id=\"outer\"\n      />\n      <!--M_*1 #button/0-->\n      <!--M_[-->\n      <button\n        id=\"inner\"\n      />\n      <!--M_*2 #button/0-->\n      <button\n        id=\"count\"\n      >\n        0\n        <!--M_*3 #text/1-->\n      </button>\n      <!--M_*3 #button/0-->\n      <!--M_|2 #text/1 3-->\n      <!--M_]1 #text/1 2-->\n       hello\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          outer: !0,\n          inner: !0,\n          count: 0,\n          \"ClosureScopes:count\": _.d = new Set\n        }, _.b = {\n          _: _.a\n        }, _.e = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 0\n        }], (_.d).add(_.e), _.c),\n        \"__tests__/template.marko_2_count 3 __tests__/template.marko_1_inner 2 __tests__/template.marko_0_outer 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text0\n```\n\n# Render\n```js\ncontainer.querySelector(\"#count\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button\n        id=\"outer\"\n      />\n      <!--M_*1 #button/0-->\n      <!--M_[-->\n      <button\n        id=\"inner\"\n      />\n      <!--M_*2 #button/0-->\n      <button\n        id=\"count\"\n      >\n        1\n        <!--M_*3 #text/1-->\n      </button>\n      <!--M_*3 #button/0-->\n      <!--M_|2 #text/1 3-->\n      <!--M_]1 #text/1 2-->\n       hello\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          outer: !0,\n          inner: !0,\n          count: 0,\n          \"ClosureScopes:count\": _.d = new Set\n        }, _.b = {\n          _: _.a\n        }, _.e = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 0\n        }], (_.d).add(_.e), _.c),\n        \"__tests__/template.marko_2_count 3 __tests__/template.marko_1_inner 2 __tests__/template.marko_0_outer 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/button2/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#count\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button\n        id=\"outer\"\n      />\n      <!--M_*1 #button/0-->\n      <!--M_[-->\n      <button\n        id=\"inner\"\n      />\n      <!--M_*2 #button/0-->\n      <button\n        id=\"count\"\n      >\n        2\n        <!--M_*3 #text/1-->\n      </button>\n      <!--M_*3 #button/0-->\n      <!--M_|2 #text/1 3-->\n      <!--M_]1 #text/1 2-->\n       hello\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          outer: !0,\n          inner: !0,\n          count: 0,\n          \"ClosureScopes:count\": _.d = new Set\n        }, _.b = {\n          _: _.a\n        }, _.e = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 0\n        }], (_.d).add(_.e), _.c),\n        \"__tests__/template.marko_2_count 3 __tests__/template.marko_1_inner 2 __tests__/template.marko_0_outer 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/button2/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#inner\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button\n        id=\"outer\"\n      />\n      <!--M_*1 #button/0-->\n      <!--M_[-->\n      <button\n        id=\"inner\"\n      />\n      <!--M_*2 #button/0-->\n      <!--M_|2 #text/1 3-->\n      <!--M_*3 #button/0-->\n      <!--M_]1 #text/1 2-->\n       hello\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          outer: !0,\n          inner: !0,\n          count: 0,\n          \"ClosureScopes:count\": _.d = new Set\n        }, _.b = {\n          _: _.a\n        }, _.e = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 0\n        }], (_.d).add(_.e), _.c),\n        \"__tests__/template.marko_2_count 3 __tests__/template.marko_1_inner 2 __tests__/template.marko_0_outer 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/div/#comment3 after html/body/div/#comment4\nINSERT html/body/div/#comment3\nREMOVE button after html/body/div/#comment3\n```\n\n# Render\n```js\ncontainer.querySelector(\"#inner\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button\n        id=\"outer\"\n      />\n      <!--M_*1 #button/0-->\n      <!--M_[-->\n      <button\n        id=\"inner\"\n      />\n      <!--M_*2 #button/0-->\n      <button\n        id=\"count\"\n      >\n        2\n      </button>\n      <!--M_*3 #button/0-->\n      <!--M_]1 #text/1 2-->\n       hello\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          outer: !0,\n          inner: !0,\n          count: 0,\n          \"ClosureScopes:count\": _.d = new Set\n        }, _.b = {\n          _: _.a\n        }, _.e = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 0\n        }], (_.d).add(_.e), _.c),\n        \"__tests__/template.marko_2_count 3 __tests__/template.marko_1_inner 2 __tests__/template.marko_0_outer 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/button2\nREMOVE #comment after html/body/div/button2\nUPDATE html/body/div/button2/#text \" \" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#count\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button\n        id=\"outer\"\n      />\n      <!--M_*1 #button/0-->\n      <!--M_[-->\n      <button\n        id=\"inner\"\n      />\n      <!--M_*2 #button/0-->\n      <button\n        id=\"count\"\n      >\n        3\n      </button>\n      <!--M_*3 #button/0-->\n      <!--M_]1 #text/1 2-->\n       hello\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          outer: !0,\n          inner: !0,\n          count: 0,\n          \"ClosureScopes:count\": _.d = new Set\n        }, _.b = {\n          _: _.a\n        }, _.e = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 0\n        }], (_.d).add(_.e), _.c),\n        \"__tests__/template.marko_2_count 3 __tests__/template.marko_1_inner 2 __tests__/template.marko_0_outer 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/button2/#text \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#outer\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button\n        id=\"outer\"\n      />\n      <!--M_*1 #button/0-->\n      <!--M_]1 #text/1 2-->\n       hello\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          outer: !0,\n          inner: !0,\n          count: 0,\n          \"ClosureScopes:count\": _.d = new Set\n        }, _.b = {\n          _: _.a\n        }, _.e = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 0\n        }], (_.d).add(_.e), _.c),\n        \"__tests__/template.marko_2_count 3 __tests__/template.marko_1_inner 2 __tests__/template.marko_0_outer 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE html/body/div/#comment1 after #text\nINSERT html/body/div/#comment1\nREMOVE #comment after html/body/div/#comment1\nREMOVE button after html/body/div/#comment1\nREMOVE #comment after html/body/div/#comment1\nREMOVE button after html/body/div/#comment1\nREMOVE #comment after html/body/div/#comment1\nREMOVE #text after html/body/div/#comment1\n```\n\n# Render\n```js\ncontainer.querySelector(\"#outer\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button\n        id=\"outer\"\n      />\n      <!--M_*1 #button/0-->\n      <button\n        id=\"inner\"\n      />\n      <button\n        id=\"count\"\n      >\n        3\n      </button>\n      <!---->\n       hello\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          outer: !0,\n          inner: !0,\n          count: 0,\n          \"ClosureScopes:count\": _.d = new Set\n        }, _.b = {\n          _: _.a\n        }, _.e = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 0\n        }], (_.d).add(_.e), _.c),\n        \"__tests__/template.marko_2_count 3 __tests__/template.marko_1_inner 2 __tests__/template.marko_0_outer 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/button1, #text, html/body/div/#comment1\nREMOVE #comment after html/body/div/#comment1\nINSERT html/body/div/button2\nREMOVE #text after html/body/div/button2\nUPDATE html/body/div/button2/#text \" \" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#count\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button\n        id=\"outer\"\n      />\n      <!--M_*1 #button/0-->\n      <button\n        id=\"inner\"\n      />\n      <button\n        id=\"count\"\n      >\n        4\n      </button>\n      <!---->\n       hello\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          outer: !0,\n          inner: !0,\n          count: 0,\n          \"ClosureScopes:count\": _.d = new Set\n        }, _.b = {\n          _: _.a\n        }, _.e = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 0\n        }], (_.d).add(_.e), _.c),\n        \"__tests__/template.marko_2_count 3 __tests__/template.marko_1_inner 2 __tests__/template.marko_0_outer 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/button2/#text \"3\" => \"4\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-nested-3/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  <button\n    id=\"outer\"\n  />\n  <button\n    id=\"inner\"\n  />\n  <button\n    id=\"count\"\n  >\n    0\n  </button>\n   hello\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-nested-3/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><button id=outer></button><!--M_*1 #button/0--><!--M_[--><button id=inner></button><!--M_*2 #button/0--><button id=count>0<!--M_*3 #text/1--></button><!--M_*3 #button/0--><!--M_|2 #text/1 3--><!--M_]1 #text/1 2--> hello</div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.a={outer:!0,inner:!0,count:0,\"ClosureScopes:count\":_.d=new Set},_.b={_:_.a},_.e={_:_.b,\"ClosureSignalIndex:count\":0}],(_.d).add(_.e),_.c),\"__tests__/template.marko_2_count 3 __tests__/template.marko_1_inner 2 __tests__/template.marko_0_outer 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <button\n        id=\"outer\"\n      />\n      <!--M_*1 #button/0-->\n      <!--M_[-->\n      <button\n        id=\"inner\"\n      />\n      <!--M_*2 #button/0-->\n      <button\n        id=\"count\"\n      >\n        0\n        <!--M_*3 #text/1-->\n      </button>\n      <!--M_*3 #button/0-->\n      <!--M_|2 #text/1 3-->\n      <!--M_]1 #text/1 2-->\n       hello\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          outer: !0,\n          inner: !0,\n          count: 0,\n          \"ClosureScopes:count\": _.d = new Set\n        }, _.b = {\n          _: _.a\n        }, _.e = {\n          _: _.b,\n          \"ClosureSignalIndex:count\": 0\n        }], (_.d).add(_.e), _.c),\n        \"__tests__/template.marko_2_count 3 __tests__/template.marko_1_inner 2 __tests__/template.marko_0_outer 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/button0\nINSERT html/body/div/#comment0\nINSERT html/body/div/#comment1\nINSERT html/body/div/button1\nINSERT html/body/div/#comment2\nINSERT html/body/div/button2\nINSERT html/body/div/button2/#text\nINSERT html/body/div/button2/#comment\nINSERT html/body/div/#comment3\nINSERT html/body/div/#comment4\nINSERT html/body/div/#comment5\nINSERT html/body/div/#text\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-nested-3/template.marko",
    "content": "<let/outer = true/>\n<let/inner = true/>\n<let/count = 0/>\n<div>\n  <button id=\"outer\" onClick(){ outer = !outer }/>\n  <if=outer>\n    <button id=\"inner\" onClick(){ inner = !inner }/>\n    <if=inner>\n      <button id=\"count\" onClick(){ count++ }>\n        ${count}\n      </button>\n    </if>\n  </if>\n  hello\n</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-nested-3/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nconst clickOuter = (container: Element) => {\n  container.querySelector<HTMLButtonElement>(\"#outer\")!.click();\n};\n\nconst clickInner = (container: Element) => {\n  container.querySelector<HTMLButtonElement>(\"#inner\")!.click();\n};\n\nconst clickCount = (container: Element) => {\n  container.querySelector<HTMLButtonElement>(\"#count\")!.click();\n};\n\nexport const config: TestConfig = {\n  steps: [\n    {},\n    clickCount,\n    clickCount,\n    clickInner,\n    clickInner,\n    clickCount,\n    clickOuter,\n    clickOuter,\n    clickCount,\n  ],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-only-child/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"r\",\n      \"$$if_content__value\": \"_\",\n      \"$$if_content__setup\": \"a\",\n      \"$$if\": \"i\",\n      \"$$value\": \"m\",\n      \"$$valueChange\": \"o\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-only-child/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"value\":\"Hello\"}`\n\n```html\n<div>\n  <span>\n    Hello\n  </span>\n</div>\n<input\n  value=\"Hello\"\n/>\n```\n\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\ninput.value = value;\ninput.dispatchEvent(new input.ownerDocument.defaultView.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<div />\n<input\n  default-value=\"Hello\"\n/>\n```\n\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\ninput.value = value;\ninput.dispatchEvent(new input.ownerDocument.defaultView.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<div>\n  <span>\n    World\n  </span>\n</div>\n<input\n  default-value=\"Hello\"\n  value=\"World\"\n/>\n```\n\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\ninput.value = value;\ninput.dispatchEvent(new input.ownerDocument.defaultView.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<div>\n  <span>\n    !\n  </span>\n</div>\n<input\n  default-value=\"Hello\"\n  value=\"!\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-only-child/__snapshots__/csr.expected.md",
    "content": "# Render `{\"value\":\"Hello\"}`\n\n```html\n<div>\n  <span>\n    Hello\n  </span>\n</div>\n<input\n  value=\"Hello\"\n/>\n```\n\n# Mutations\n```\nINSERT div, input\n```\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\ninput.value = value;\ninput.dispatchEvent(new input.ownerDocument.defaultView.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<div />\n<input\n  default-value=\"Hello\"\n/>\n```\n\n# Mutations\n```\nREMOVE span in div\n```\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\ninput.value = value;\ninput.dispatchEvent(new input.ownerDocument.defaultView.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<div>\n  <span>\n    World\n  </span>\n</div>\n<input\n  default-value=\"Hello\"\n  value=\"World\"\n/>\n```\n\n# Mutations\n```\nINSERT div/span\nUPDATE div/span/#text \" \" => \"World\"\n```\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\ninput.value = value;\ninput.dispatchEvent(new input.ownerDocument.defaultView.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<div>\n  <span>\n    !\n  </span>\n</div>\n<input\n  default-value=\"Hello\"\n  value=\"!\"\n/>\n```\n\n# Mutations\n```\nUPDATE div/span/#text \"World\" => \"!\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-only-child/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 268 (min) 173 (brotli)\nconst $if_content__value = _._if_closure(0, 0, ($scope) =>\n    _._text($scope.a, $scope._.f),\n  ),\n  $if_content__setup = $if_content__value,\n  $if = _._if(0, \"<span> </span>\", \"D l\", $if_content__setup),\n  $value = _._let(5, ($scope) => {\n    (_._attr_input_value($scope, \"b\", $scope.f, $valueChange($scope)),\n      $if($scope, $scope.f ? 0 : 1),\n      $if_content__value($scope));\n  });\nfunction $valueChange($scope) {\n  return (_new_value) => {\n    $value($scope, _new_value);\n  };\n}\n(_._script(\"a1\", ($scope) => _._attr_input_value_script($scope, \"b\")),\n  _._resume(\"a0\", $valueChange),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-only-child/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div></div><input>\";\nexport const $walks = /* get, over(1), get, over(1) */\" b b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content__value = /* @__PURE__ */_._if_closure(\"#div/0\", 0, $scope => _._text($scope[\"#text/0\"], $scope._.value));\nconst $if_content__setup = $if_content__value;\nconst $if = /* @__PURE__ */_._if(\"#div/0\", \"<span> </span>\", /* next(1), get, out(1) */\"D l\", $if_content__setup);\nconst $value = /* @__PURE__ */_._let(\"value/5\", $scope => {\n  _._attr_input_value($scope, \"#input/1\", $scope.value, $valueChange($scope));\n  $if($scope, $scope.value ? 0 : 1);\n  $if_content__value($scope);\n});\nexport const $input_value = ($scope, input_value) => $value($scope, input_value);\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => _._attr_input_value_script($scope, \"#input/1\"));\nexport const $setup = $setup__script;\nexport const $input = ($scope, input) => $input_value($scope, input.value);\nfunction $valueChange($scope) {\n  return _new_value => {\n    $value($scope, _new_value);\n  };\n}\n_._resume(\"__tests__/template.marko_0/valueChange\", $valueChange);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-only-child/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let value = input.value;\n  _._html(\"<div>\");\n  _._if(() => {\n    if (value) {\n      const $scope1_id = _._scope_id();\n      _._html(`<span>${_._escape(value)}${_._el_resume($scope1_id, \"#text/0\")}</span>`);\n      _._scope($scope1_id, {\n        _: _._scope_with_id($scope0_id)\n      }, \"__tests__/template.marko\", \"4:4\");\n      return 0;\n    }\n  }, $scope0_id, \"#div/0\", 1, /* value */1, /* value */1, \"</div>\", 1);\n  _._html(`<input${_._attr_input_value($scope0_id, \"#input/1\", value, _._resume(_new_value => {\n    value = _new_value;\n  }, \"__tests__/template.marko_0/valueChange\", $scope0_id))}>${_._el_resume($scope0_id, \"#input/1\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {\n    value\n  }, \"__tests__/template.marko\", 0, {\n    value: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-only-child/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"value\":\"Hello\"}`\n\n```html\n<div>\n  <span>\n    Hello\n  </span>\n</div>\n<input\n  value=\"Hello\"\n/>\n```\n\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\ninput.value = value;\ninput.dispatchEvent(new input.ownerDocument.defaultView.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<div />\n<input\n  default-value=\"Hello\"\n/>\n```\n\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\ninput.value = value;\ninput.dispatchEvent(new input.ownerDocument.defaultView.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<div>\n  <span>\n    World\n  </span>\n</div>\n<input\n  default-value=\"Hello\"\n  value=\"World\"\n/>\n```\n\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\ninput.value = value;\ninput.dispatchEvent(new input.ownerDocument.defaultView.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<div>\n  <span>\n    !\n  </span>\n</div>\n<input\n  default-value=\"Hello\"\n  value=\"!\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-only-child/__snapshots__/resume.expected.md",
    "content": "# Render `{\"value\":\"Hello\"}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <span>\n        Hello\n        <!--M_*2 #text/0-->\n      </span>\n      <!--M_}1 #div/0 2-->\n    </div>\n    <input\n      value=\"Hello\"\n    />\n    <!--M_*1 #input/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#input/1\": 2,\n          value: \"Hello\"\n        },\n        {\n          _: _.a\n        }], _.a[\"ControlledHandler:#input/1\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\ninput.value = value;\ninput.dispatchEvent(new input.ownerDocument.defaultView.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <input\n      default-value=\"Hello\"\n    />\n    <!--M_*1 #input/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#input/1\": 2,\n          value: \"Hello\"\n        },\n        {\n          _: _.a\n        }], _.a[\"ControlledHandler:#input/1\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE span, #comment in html/body/div\n```\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\ninput.value = value;\ninput.dispatchEvent(new input.ownerDocument.defaultView.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <span>\n        World\n      </span>\n    </div>\n    <input\n      default-value=\"Hello\"\n      value=\"World\"\n    />\n    <!--M_*1 #input/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#input/1\": 2,\n          value: \"Hello\"\n        },\n        {\n          _: _.a\n        }], _.a[\"ControlledHandler:#input/1\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/span\nUPDATE html/body/div/span/#text \" \" => \"World\"\n```\n\n# Render\n```js\nconst input = container.querySelector(\"input\");\ninput.value = value;\ninput.dispatchEvent(new input.ownerDocument.defaultView.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <span>\n        !\n      </span>\n    </div>\n    <input\n      default-value=\"Hello\"\n      value=\"!\"\n    />\n    <!--M_*1 #input/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#input/1\": 2,\n          value: \"Hello\"\n        },\n        {\n          _: _.a\n        }], _.a[\"ControlledHandler:#input/1\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/span/#text \"World\" => \"!\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-only-child/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  <span>\n    Hello\n  </span>\n</div>\n<input\n  value=\"Hello\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-only-child/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><span>Hello<!--M_*2 #text/0--></span><!--M_}1 #div/0 2--></div><input value=Hello><!--M_*1 #input/1--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={\"ControlledType:#input/1\":2,value:\"Hello\"},{_:_.a}],_.a[\"ControlledHandler:#input/1\"]=_._[\"__tests__/template.marko_0/valueChange\"](_.a),_.b),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <span>\n        Hello\n        <!--M_*2 #text/0-->\n      </span>\n      <!--M_}1 #div/0 2-->\n    </div>\n    <input\n      value=\"Hello\"\n    />\n    <!--M_*1 #input/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n          \"ControlledType:#input/1\": 2,\n          value: \"Hello\"\n        },\n        {\n          _: _.a\n        }], _.a[\"ControlledHandler:#input/1\"] = _._[\n          \"__tests__/template.marko_0/valueChange\"\n          ](_.a), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/span\nINSERT html/body/div/span/#text\nINSERT html/body/div/span/#comment\nINSERT html/body/div/#comment\nINSERT html/body/input\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-only-child/template.marko",
    "content": "<let/value=input.value>\n<div>\n  // This comment shouldn't count as a child!\n  <if=value>\n    <span>${value}</span>\n  </if>\n</div>\n\n<input value:=value>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-only-child/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction type(value: string) {\n  return (container: Element) => {\n    const input = container.querySelector(\"input\")!;\n    input.value = value;\n    input.dispatchEvent(\n      new input.ownerDocument.defaultView!.Event(\"input\", { bubbles: true }),\n    );\n  };\n}\n\nexport const config: TestConfig = {\n  steps: [{ value: \"Hello\" }, type(\"\"), type(\"World\"), type(\"!\")],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-only-child-with-marker/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-only-child-with-marker/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<button>\n  <span\n    id=\"count\"\n  >\n    0\n  </span>\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  <span\n    id=\"count\"\n  >\n    1\n  </span>\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  <span\n    id=\"count\"\n  >\n    2\n  </span>\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-only-child-with-marker/__snapshots__/csr.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<button>\n  <span\n    id=\"count\"\n  >\n    0\n  </span>\n</button>\n```\n\n# Mutations\n```\nINSERT button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  <span\n    id=\"count\"\n  >\n    1\n  </span>\n</button>\n```\n\n# Mutations\n```\nREMOVE #text in button/span\nINSERT button/span/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  <span\n    id=\"count\"\n  >\n    2\n  </span>\n</button>\n```\n\n# Mutations\n```\nREMOVE #text in button/span\nINSERT button/span/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-only-child-with-marker/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 101 (min) 71 (brotli)\n(_._script(\"a0\", ($scope) =>\n  _._on($scope.a, \"click\", function () {\n    document.getElementById(\"count\").textContent++;\n  }),\n),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-only-child-with-marker/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button></button>\";\nexport const $walks = /* get, over(1) */\" b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  document.getElementById(\"count\").textContent++;\n}));\nexport const $setup = $setup__script;\nconst $if = /* @__PURE__ */_._if(\"#button/0\", \"<span id=count>0</span>\", /* over(1) */\"b\");\nexport const $input_show = ($scope, input_show) => $if($scope, input_show ? 0 : 1);\nexport const $input = ($scope, input) => $input_show($scope, input.show);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-only-child-with-marker/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<button>\");\n  _._if(() => {\n    if (input.show) {\n      const $scope1_id = _._scope_id();\n      _._html(\"<span id=count>0</span>\");\n      _._serialize_if($scope0_reason, /* input.show */0) && _._scope($scope1_id, {}, \"__tests__/template.marko\", \"2:4\");\n      return 0;\n    }\n  }, $scope0_id, \"#button/0\", _._serialize_guard($scope0_reason, /* input.show */0), 1, _._serialize_guard($scope0_reason, /* input.show */0), \"</button>\", 1);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-only-child-with-marker/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<button>\n  <span\n    id=\"count\"\n  >\n    0\n  </span>\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  <span\n    id=\"count\"\n  >\n    1\n  </span>\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  <span\n    id=\"count\"\n  >\n    2\n  </span>\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-only-child-with-marker/__snapshots__/resume.expected.md",
    "content": "# Render `{\"show\":true}`\n\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      <span\n        id=\"count\"\n      >\n        0\n      </span>\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      <span\n        id=\"count\"\n      >\n        1\n      </span>\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #text in html/body/button/span\nINSERT html/body/button/span/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      <span\n        id=\"count\"\n      >\n        2\n      </span>\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #text in html/body/button/span\nINSERT html/body/button/span/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-only-child-with-marker/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  <span\n    id=\"count\"\n  >\n    0\n  </span>\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-only-child-with-marker/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button><span id=count>0</span></button><!--M_*1 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0]),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      <span\n        id=\"count\"\n      >\n        0\n      </span>\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/span\nINSERT html/body/button/span/#text\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-only-child-with-marker/template.marko",
    "content": "<button onClick() { document.getElementById(\"count\").textContent++ }>\n  <if=input.show>\n    <span#count>0</span>\n  </if>\n</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-only-child-with-marker/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nconst click = (container: Element) => {\n  container.querySelector<HTMLButtonElement>(\"button\")!.click();\n};\n\nexport const config: TestConfig = {\n  steps: [{ show: true }, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-stateful-component/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$input_onCount__OR__clickCount__script\": \"e\",\n      \"$$input_onCount__OR__clickCount\": \"n\",\n      \"$$clickCount\": \"r\",\n      \"$$input_onCount\": \"i\",\n      \"$$if_content__onCount\": \"c\",\n      \"$$if_content__setup\": \"s\",\n      \"$$if\": \"u\",\n      \"$$show\": \"a\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-stateful-component/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <div>\n    <button>\n      0\n    </button>\n  </div>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-stateful-component/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  <div>\n    <button>\n      0\n    </button>\n  </div>\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div />\n```\n\n# Mutations\n```\nREMOVE div in div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-stateful-component/__snapshots__/dom.expected/tags/counter.js",
    "content": "export const $template = \"<button> </button>\";\nexport const $walks = /* get, next(1), get, out(1) */\" D l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $input_onCount__OR__clickCount__script = _._script(\"__tests__/tags/counter.marko_0_input_onCount_clickCount\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $scope.input_onCount($clickCount($scope, $scope.clickCount + 1));\n}));\nconst $input_onCount__OR__clickCount = /* @__PURE__ */_._or(6, $input_onCount__OR__clickCount__script);\nconst $clickCount = /* @__PURE__ */_._let(\"clickCount/5\", $scope => {\n  _._text($scope[\"#text/1\"], ((() => {\n    if ($scope.clickCount > 0) throw new Error(\"This should not have executed since the parent removes this component when the count is greater than 0\");\n  })(), $scope.clickCount));\n  $input_onCount__OR__clickCount($scope);\n});\nexport function $setup($scope) {\n  $clickCount($scope, 0);\n}\nexport const $input_onCount = /* @__PURE__ */_._const(\"input_onCount\", $input_onCount__OR__clickCount);\nexport const $input = ($scope, input) => $input_onCount($scope, input.onCount);\nexport default /* @__PURE__ */_._template(\"__tests__/tags/counter.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-stateful-component/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 507 (min) 304 (brotli)\nconst $input_onCount__OR__clickCount__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $scope.e($clickCount($scope, $scope.f + 1));\n    }),\n  ),\n  $input_onCount__OR__clickCount = _._or(\n    6,\n    $input_onCount__OR__clickCount__script,\n  ),\n  $clickCount = _._let(5, ($scope) => {\n    (_._text(\n      $scope.b,\n      ((() => {\n        if ($scope.f > 0)\n          throw new Error(\n            \"This should not have executed since the parent removes this component when the count is greater than 0\",\n          );\n      })(),\n      $scope.f),\n    ),\n      $input_onCount__OR__clickCount($scope));\n  });\nconst $input_onCount = _._const(4, $input_onCount__OR__clickCount),\n  $if_content__onCount = _._if_closure(0, 0, ($scope) =>\n    $input_onCount($scope.a, $scope._.c),\n  ),\n  $if_content__setup = ($scope) => {\n    ($if_content__onCount._($scope),\n      (function ($scope) {\n        $clickCount($scope, 0);\n      })($scope.a));\n  },\n  $if = _._if(\n    0,\n    \"<div><button> </button></div>\",\n    \"D/ D l&l\",\n    $if_content__setup,\n  ),\n  $show = _._let(1, ($scope) => $if($scope, $scope.b ? 0 : 1));\n(_._resume(\"b0\", function ($scope) {\n  return function (count) {\n    $show($scope, count < 1);\n  };\n}),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-stateful-component/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div></div>\";\nexport const $walks = /* get, over(1) */\" b\";\nimport { $setup as _counter, $input_onCount as _counter_input_onCount, $template as _counter_template, $walks as _counter_walks } from \"./tags/counter.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $if_content__onCount = /* @__PURE__ */_._if_closure(\"#div/0\", 0, $scope => _counter_input_onCount($scope[\"#childScope/0\"], $scope._.onCount));\nconst $if_content__setup = $scope => {\n  $if_content__onCount._($scope);\n  _counter($scope[\"#childScope/0\"]);\n};\nconst $if = /* @__PURE__ */_._if(\"#div/0\", `<div>${_counter_template}</div>`, /* next(1), <counter>, out(1) */`D/${_counter_walks}&l`, $if_content__setup);\nconst $show = /* @__PURE__ */_._let(\"show/1\", $scope => $if($scope, $scope.show ? 0 : 1));\nconst $onCount2 = /* @__PURE__ */_._const(\"onCount\");\nexport function $setup($scope) {\n  $show($scope, true);\n  $onCount2($scope, $onCount($scope));\n}\nfunction $onCount($scope) {\n  return function (count) {\n    $show($scope, count < 1);\n  };\n}\n_._resume(\"__tests__/template.marko_0/onCount\", $onCount);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-stateful-component/__snapshots__/html.expected/tags/counter.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/counter.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let clickCount = 0;\n  _._html(`<button>${_._escape(((() => {\n    if (clickCount > 0) throw new Error(\"This should not have executed since the parent removes this component when the count is greater than 0\");\n  })(), clickCount))}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/tags/counter.marko_0_input_onCount_clickCount\");\n  _._scope($scope0_id, {\n    input_onCount: input.onCount,\n    clickCount\n  }, \"__tests__/tags/counter.marko\", 0, {\n    input_onCount: [\"input.onCount\"],\n    clickCount: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-stateful-component/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _counter from \"./tags/counter.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let show = true;\n  const onCount = _._resume(function (count) {\n    show = count < 1;\n  }, \"__tests__/template.marko_0/onCount\", $scope0_id);\n  _._html(\"<div>\");\n  _._if(() => {\n    if (show) {\n      const $scope1_id = _._scope_id();\n      _._html(\"<div>\");\n      _counter({\n        onCount: onCount\n      });\n      _._html(\"</div>\");\n      _._scope($scope1_id, {}, \"__tests__/template.marko\", \"6:4\");\n      return 0;\n    }\n  }, $scope0_id, \"#div/0\", 1, /* show */1, /* show */1, \"</div>\", 1);\n  _._scope($scope0_id, {\n    onCount\n  }, \"__tests__/template.marko\", 0, {\n    onCount: \"2:8\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-stateful-component/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  <div>\n    <button>\n      0\n    </button>\n  </div>\n</div>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-stateful-component/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <div>\n        <button>\n          0\n          <!--M_*3 #text/1-->\n        </button>\n        <!--M_*3 #button/0-->\n      </div>\n      <!--M_}1 #div/0 2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {}, 1, _.b = {\n          clickCount: 0,\n          \"#ClosestBranchId\": 2\n        }], _.a.onCount = _.b.input_onCount = _._[\n          \"__tests__/template.marko_0/onCount\"\n          ](_.a), _.c),\n        \"__tests__/tags/counter.marko_0_input_onCount_clickCount 3\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {}, 1, _.b = {\n          clickCount: 0,\n          \"#ClosestBranchId\": 2\n        }], _.a.onCount = _.b.input_onCount = _._[\n          \"__tests__/template.marko_0/onCount\"\n          ](_.a), _.c),\n        \"__tests__/tags/counter.marko_0_input_onCount_clickCount 3\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE div, #comment in html/body/div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-stateful-component/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  <div>\n    <button>\n      0\n    </button>\n  </div>\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-stateful-component/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><div><button>0<!--M_*3 #text/1--></button><!--M_*3 #button/0--></div><!--M_}1 #div/0 2--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.a={},1,_.b={clickCount:0,\"#ClosestBranchId\":2}],_.a.onCount=_.b.input_onCount=_._[\"__tests__/template.marko_0/onCount\"](_.a),_.c),\"__tests__/tags/counter.marko_0_input_onCount_clickCount 3\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <div>\n        <button>\n          0\n          <!--M_*3 #text/1-->\n        </button>\n        <!--M_*3 #button/0-->\n      </div>\n      <!--M_}1 #div/0 2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {}, 1, _.b = {\n          clickCount: 0,\n          \"#ClosestBranchId\": 2\n        }], _.a.onCount = _.b.input_onCount = _._[\n          \"__tests__/template.marko_0/onCount\"\n          ](_.a), _.c),\n        \"__tests__/tags/counter.marko_0_input_onCount_clickCount 3\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/div\nINSERT html/body/div/div/button\nINSERT html/body/div/div/button/#text\nINSERT html/body/div/div/button/#comment\nINSERT html/body/div/div/#comment\nINSERT html/body/div/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-stateful-component/tags/counter.marko",
    "content": "<let/clickCount = 0/>\n<button onClick() {\n  input.onCount(++clickCount)\n}>${(() => {\n  if (clickCount > 0) throw new Error(\"This should not have executed since the parent removes this component when the count is greater than 0\")\n})(), clickCount}</button>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-stateful-component/template.marko",
    "content": "<let/show=true/>\n<const/onCount(count) {\nshow = count < 1 \n}/>\n<div>\n  <if=show>\n    <div>\n      <counter onCount=onCount />\n    </div>\n  </if>\n</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/toggle-stateful-component/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/trailing-tag-dynamic-attr/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$toggle__script\": \"a\",\n      \"$$toggle\": \"m\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/trailing-tag-dynamic-attr/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 125 (min) 114 (brotli)\nconst $toggle__script = _._script(\"a0\", ($scope) =>\n    _._on($scope.b, \"click\", function () {\n      $toggle($scope, !$scope.c);\n    }),\n  ),\n  $toggle = _._let(2, ($scope) => {\n    (_._attr($scope.a, \"data-toggle\", $scope.c), $toggle__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/trailing-tag-dynamic-attr/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<html><body><button>Toggle</button></body></html>\";\nexport const $walks = /* next(1), get, next(1), get, out(2) */\"D D m\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $toggle__script = _._script(\"__tests__/template.marko_0_toggle\", $scope => _._on($scope[\"#button/1\"], \"click\", function () {\n  $toggle($scope, !$scope.toggle);\n}));\nconst $toggle = /* @__PURE__ */_._let(\"toggle/2\", $scope => {\n  _._attr($scope[\"#body/0\"], \"data-toggle\", $scope.toggle);\n  $toggle__script($scope);\n});\nexport function $setup($scope) {\n  $toggle($scope, false);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/trailing-tag-dynamic-attr/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let toggle = false;\n  _._html(`<html><body${_._attr(\"data-toggle\", toggle)}><button>Toggle</button>${_._el_resume($scope0_id, \"#button/1\")}</body>${_._el_resume($scope0_id, \"#body/0\")}`), _._trailers(\"</html>\");\n  _._script($scope0_id, \"__tests__/template.marko_0_toggle\");\n  _._scope($scope0_id, {\n    toggle\n  }, \"__tests__/template.marko\", 0, {\n    toggle: \"1:5\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/trailing-tag-dynamic-attr/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\")?.click();\n```\n```html\n<button>\n  Toggle\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\")?.click();\n```\n```html\n<button>\n  Toggle\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/trailing-tag-dynamic-attr/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          toggle: !1\n        }]),\n        \"__tests__/template.marko_0_toggle 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n  <!--M_*1 #body/0-->\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\")?.click();\n```\n```html\n<html>\n  <head />\n  <body\n    data-toggle=\"\"\n  >\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          toggle: !1\n        }]),\n        \"__tests__/template.marko_0_toggle 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n  <!--M_*1 #body/0-->\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body[data-toggle] null => \"\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\")?.click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          toggle: !1\n        }]),\n        \"__tests__/template.marko_0_toggle 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n  <!--M_*1 #body/0-->\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body[data-toggle] \"\" => null\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/trailing-tag-dynamic-attr/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  Toggle\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/trailing-tag-dynamic-attr/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <html><body><button>Toggle</button><!--M_*1 #button/1--></body><!--M_*1 #body/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{toggle:!1}]),\"__tests__/template.marko_0_toggle 1\"];M._.w()</script></html>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Toggle\n    </button>\n    <!--M_*1 #button/1-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          toggle: !1\n        }]),\n        \"__tests__/template.marko_0_toggle 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n  <!--M_*1 #body/0-->\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment\nINSERT html/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/trailing-tag-dynamic-attr/template.marko",
    "content": "let/toggle=false\n\nhtml\n  body data-toggle=toggle\n    button onClick() { toggle = !toggle } -- Toggle"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/trailing-tag-dynamic-attr/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")?.click();\n}\n\nexport const config: TestConfig = {\n  skip_csr: true,\n  skip_resume: false,\n  steps: [{}, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$resolveAfter\": \"e\",\n      \"$$await_content__$params\": \"r\",\n      \"$$try_content__await_promise\": \"_\",\n      \"$$try_content__clickCount__script\": \"a\",\n      \"$$try_content__clickCount\": \"m\",\n      \"$$clickCount__closure\": \"n\",\n      \"$$clickCount__script\": \"s\",\n      \"$$clickCount\": \"c\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  inc\n</button>\n<div />\n```\n\n\n# Render ASYNC\n```html\n<button>\n  inc\n</button>\n<div />\nLOADING...\n```\n\n\n# Render ASYNC\n```html\n<button>\n  inc\n</button>\n<div>\n  0\n</div>\nAsync: 0\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  inc\n</button>\n<div>\n  0\n</div>\nAsync: 0\n```\n\n\n# Render ASYNC\n```html\n<button>\n  inc\n</button>\n<div>\n  0\n</div>\nLOADING...\n```\n\n\n# Render ASYNC\n```html\n<button>\n  inc\n</button>\n<div>\n  1\n</div>\nAsync: 1\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  inc\n</button>\n<div>\n  1\n</div>\nAsync: 1\n```\n\n\n# Render ASYNC\n```html\n<button>\n  inc\n</button>\n<div>\n  1\n</div>\nLOADING...\n```\n\n\n# Render ASYNC\n```html\n<button>\n  inc\n</button>\n<div>\n  1\n</div>\nError: ERROR!\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  inc\n</button>\n<div />\n<!---->\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT button, div, #comment0, #text, #comment1, #comment2\n```\n\n# Render ASYNC\n```html\n<button>\n  inc\n</button>\n<div />\nLOADING...\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE #document-fragment/#comment0 after #text\nREMOVE #document-fragment/#text after #text\nREMOVE #document-fragment/#comment1 after #text\n```\n\n# Render ASYNC\n```html\n<button>\n  inc\n</button>\n<div>\n  0\n</div>\n<!---->\nAsync: 0\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #text0, #text1, #comment1\nREMOVE #text after #comment1\nINSERT div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  inc\n</button>\n<div>\n  0\n</div>\n<!---->\nAsync: 0\n<!---->\n<!---->\n```\n\n\n# Render ASYNC\n```html\n<button>\n  inc\n</button>\n<div>\n  0\n</div>\nLOADING...\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE #document-fragment/#comment0 after #text\nREMOVE #document-fragment/#text0 after #text\nREMOVE #document-fragment/#text1 after #text\nREMOVE #document-fragment/#comment1 after #text\n```\n\n# Render ASYNC\n```html\n<button>\n  inc\n</button>\n<div>\n  1\n</div>\n<!---->\nAsync: 1\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #text0, #text1, #comment1\nREMOVE #text after #comment1\nREMOVE #text in div\nINSERT div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  inc\n</button>\n<div>\n  1\n</div>\n<!---->\nAsync: 1\n<!---->\n<!---->\n```\n\n\n# Render ASYNC\n```html\n<button>\n  inc\n</button>\n<div>\n  1\n</div>\nLOADING...\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE #document-fragment/#comment0 after #text\nREMOVE #document-fragment/#text0 after #text\nREMOVE #document-fragment/#text1 after #text\nREMOVE #document-fragment/#comment1 after #text\n```\n\n# Render ASYNC\n```html\n<button>\n  inc\n</button>\n<div>\n  1\n</div>\nError: ERROR!\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE #text after #text\nUPDATE #text \" \" => \"Error: ERROR!\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 449 (min) 243 (brotli)\n_._enable_catch();\nconst $await_content__$params = ($scope, $params3) =>\n  (($scope, value) =>\n    _._text(\n      $scope.a,\n      value > 1\n        ? (() => {\n            throw new Error(\"ERROR!\");\n          })()\n        : value,\n    ))($scope, $params3[0]);\n(_._content_resume(\"a0\", \" \", \" b\", 0, ($scope, $params2) =>\n  (($scope, err) => _._text($scope.a, err))($scope, $params2[0]),\n),\n  _._content_resume(\"a1\", \"LOADING...\", \"b\"));\nconst $try_content__await_promise = _._await_promise(\n    0,\n    $await_content__$params,\n  ),\n  $try_content__clickCount__script = _._script(\n    \"a2\",\n    ($scope) => ($scope._.b.textContent = $scope._.d),\n  ),\n  $try_content__clickCount = _._closure_get(3, ($scope) => {\n    ($try_content__await_promise($scope, resolveAfter($scope._.d)),\n      $try_content__clickCount__script($scope));\n  }),\n  $clickCount__closure = _._closure($try_content__clickCount),\n  $clickCount__script = _._script(\"a3\", ($scope) =>\n    _._on($scope.a, \"click\", function () {\n      $clickCount($scope, $scope.d + 1);\n    }),\n  ),\n  $clickCount = _._let(3, ($scope) => {\n    ($clickCount__closure($scope), $clickCount__script($scope));\n  });\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button>inc</button><div></div><!><!>\";\nexport const $walks = /* get, over(1), get, over(1), replace, over(2) */\" b b%c\";\nimport { resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\n_._enable_catch();\nconst $await_content__value = ($scope, value) => _._text($scope[\"#text/0\"], value > 1 ? (() => {\n  throw new Error(\"ERROR!\");\n})() : value);\nconst $await_content__$params = ($scope, $params3) => $await_content__value($scope, $params3[0]);\nconst $catch_content__err = ($scope, err) => _._text($scope[\"#text/0\"], err);\nconst $catch_content__$params = ($scope, $params2) => $catch_content__err($scope, $params2[0]);\nconst $catch_content = _._content_resume(\"__tests__/template.marko_3_content\", \" \", /* get, over(1) */\" b\", 0, $catch_content__$params);\nconst $placeholder_content = _._content_resume(\"__tests__/template.marko_2_content\", \"LOADING...\", /* over(1) */\"b\");\nconst $await_content = /* @__PURE__ */_._await_content(\"#text/0\", \"Async: <!>\", /* over(1), replace, over(1) */\"b%b\");\nconst $try_content__await_promise = /* @__PURE__ */_._await_promise(\"#text/0\", $await_content__$params);\nconst $try_content__clickCount__script = _._script(\"__tests__/template.marko_1_clickCount\", $scope => (_._el_read($scope._[\"#div/1\"]).textContent = $scope._.clickCount));\nconst $try_content__clickCount = /* @__PURE__ */_._closure_get(\"clickCount\", $scope => {\n  $try_content__await_promise($scope, resolveAfter($scope._.clickCount));\n  $try_content__clickCount__script($scope);\n});\nconst $try_content__setup = $scope => {\n  $try_content__clickCount($scope);\n  $await_content($scope);\n};\nconst $clickCount__closure = /* @__PURE__ */_._closure($try_content__clickCount);\nconst $clickCount__script = _._script(\"__tests__/template.marko_0_clickCount\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $clickCount($scope, $scope.clickCount + 1);\n}));\nconst $clickCount = /* @__PURE__ */_._let(\"clickCount/3\", $scope => {\n  $clickCount__closure($scope);\n  $clickCount__script($scope);\n});\nconst $try = /* @__PURE__ */_._try(\"#text/2\", \"<!><!><!>\", /* over(1), replace, over(2) */\"b%c\", $try_content__setup);\nexport function $setup($scope) {\n  $clickCount($scope, 0);\n  $try($scope, {\n    catch: _.attrTag({\n      content: $catch_content($scope)\n    }),\n    placeholder: _.attrTag({\n      content: $placeholder_content($scope)\n    })\n  });\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/html.expected/template.js",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $clickCount__closures = new Set();\n  let clickCount = 0;\n  _._html(`<button>inc</button>${_._el_resume($scope0_id, \"#button/0\")}<div></div>${_._el_resume($scope0_id, \"#div/1\")}`);\n  _._try($scope0_id, \"#text/2\", _._content_resume(\"__tests__/template.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    _._scope_reason();\n    _._await($scope1_id, \"#text/0\", resolveAfter(clickCount), value => {\n      const $scope4_id = _._scope_id();\n      _._html(`Async: <!>${_._escape(value > 1 ? (() => {\n        throw new Error(\"ERROR!\");\n      })() : value)}${_._el_resume($scope4_id, \"#text/0\")}`);\n      _._scope($scope4_id, {}, \"__tests__/template.marko\", \"11:4\");\n    });\n    _._script($scope1_id, \"__tests__/template.marko_1_clickCount\");\n    _._subscribe($clickCount__closures, _._scope($scope1_id, {\n      _: _._scope_with_id($scope0_id),\n      \"ClosureSignalIndex:clickCount\": 0\n    }, \"__tests__/template.marko\", \"7:2\"));\n    _._resume_branch($scope1_id);\n  }, $scope0_id), {\n    catch: _.attrTag({\n      content: _._content_resume(\"__tests__/template.marko_3_content\", err => {\n        const $scope3_reason = _._scope_reason();\n        const $scope3_id = _._scope_id();\n        _._html(`${_._escape(err)}${_._el_resume($scope3_id, \"#text/0\", _._serialize_guard($scope3_reason, /* err */0))}`);\n        _._serialize_if($scope3_reason, /* err */0) && _._scope($scope3_id, {}, \"__tests__/template.marko\", \"17:4\");\n      }, $scope0_id)\n    }),\n    placeholder: _.attrTag({\n      content: _._content_resume(\"__tests__/template.marko_2_content\", () => {\n        _._scope_reason();\n        const $scope2_id = _._scope_id();\n        _._html(\"LOADING...\");\n      }, $scope0_id)\n    })\n  });\n  _._script($scope0_id, \"__tests__/template.marko_0_clickCount\");\n  _._scope($scope0_id, {\n    clickCount,\n    \"ClosureScopes:clickCount\": $clickCount__closures\n  }, \"__tests__/template.marko\", 0, {\n    clickCount: \"2:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  inc\n</button>\n<div />\nLOADING...\n```\n\n\n# Render FLUSH\n```html\n<button>\n  inc\n</button>\n<div>\n  0\n</div>\nAsync: 0\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  inc\n</button>\n<div>\n  0\n</div>\nAsync: 0\n```\n\n\n# Render ASYNC\n```html\n<button>\n  inc\n</button>\n<div>\n  0\n</div>\nLOADING...\n```\n\n\n# Render ASYNC\n```html\n<button>\n  inc\n</button>\n<div>\n  1\n</div>\nAsync: 1\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  inc\n</button>\n<div>\n  1\n</div>\nAsync: 1\n```\n\n\n# Render ASYNC\n```html\n<button>\n  inc\n</button>\n<div>\n  1\n</div>\nLOADING...\n```\n\n\n# Render ASYNC\n```html\n<button>\n  inc\n</button>\n<div>\n  1\n</div>\nError: ERROR!\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <button>\n      inc\n    </button>\n    <!--M_*1 #button/0-->\n    <div />\n    <!--M_*1 #div/1-->\n    <!--M_[-->\n    <!--M_!^b-->\n    <!--M_!^2-->\n    LOADING...\n    <!--M_!2-->\n    <!--M_!b-->\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          clickCount: 0,\n          \"ClosureScopes:clickCount\": _.d = new Set\n        }, _.b = {\n          _: _.a,\n          \"ClosureSignalIndex:clickCount\": 0,\n          \"#BranchAccessor\": \"#text/2\"\n        }], _.b[\"#CatchContent\"] = _._[\n          \"__tests__/template.marko_3_content\"\n          ](_.a), _.b[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.a), (_.d).add(_.b), _.c),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.j[2] = _ =&gt;\n      {\n        _.push(\n          \"__tests__/template.marko_1_clickCount 2\"\n          )\n      };\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text1\n```\n\n# Render FLUSH\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <button>\n      inc\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      0\n    </div>\n    <!--M_*1 #div/1-->\n    <!--M_[-->\n    <!--M_!^b-->\n    <!--M_[-->\n    Async: \n    <!---->\n    0\n    <!--M_*4 #text/0-->\n    <!--M_]2 #text/0 4-->\n    <!--M_!b-->\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          clickCount: 0,\n          \"ClosureScopes:clickCount\": _.d = new Set\n        }, _.b = {\n          _: _.a,\n          \"ClosureSignalIndex:clickCount\": 0,\n          \"#BranchAccessor\": \"#text/2\"\n        }], _.b[\"#CatchContent\"] = _._[\n          \"__tests__/template.marko_3_content\"\n          ](_.a), _.b[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.a), (_.d).add(_.b), _.c),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.j[2] = _ =&gt;\n      {\n        _.push(\n          \"__tests__/template.marko_1_clickCount 2\"\n          )\n      };\n      M._.w()\n    </script>\n    <script>\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT t\nINSERT html/body/#comment4\nINSERT html/body/#text0\nINSERT html/body/#comment5\nINSERT html/body/#text1\nINSERT html/body/#comment6\nINSERT html/body/#comment7\nREMOVE t after html/body/script0\nREMOVE #text after #comment\nREMOVE #comment after html/body/#comment3\nREMOVE #comment after html/body/#comment3\nINSERT html/body/#comment4, html/body/#text0, html/body/#comment5, html/body/#text1, html/body/#comment6, html/body/#comment7\nINSERT html/body/#text2\nINSERT html/body/div/#text\nINSERT html/body/script1\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <button>\n      inc\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      0\n    </div>\n    <!--M_*1 #div/1-->\n    <!--M_[-->\n    <!--M_!^b-->\n    <!--M_[-->\n    Async: \n    <!---->\n    0\n    <!--M_*4 #text/0-->\n    <!--M_]2 #text/0 4-->\n    <!--M_!b-->\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          clickCount: 0,\n          \"ClosureScopes:clickCount\": _.d = new Set\n        }, _.b = {\n          _: _.a,\n          \"ClosureSignalIndex:clickCount\": 0,\n          \"#BranchAccessor\": \"#text/2\"\n        }], _.b[\"#CatchContent\"] = _._[\n          \"__tests__/template.marko_3_content\"\n          ](_.a), _.b[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.a), (_.d).add(_.b), _.c),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.j[2] = _ =&gt;\n      {\n        _.push(\n          \"__tests__/template.marko_1_clickCount 2\"\n          )\n      };\n      M._.w()\n    </script>\n    <script>\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render ASYNC\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <button>\n      inc\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      0\n    </div>\n    <!--M_*1 #div/1-->\n    LOADING...\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          clickCount: 0,\n          \"ClosureScopes:clickCount\": _.d = new Set\n        }, _.b = {\n          _: _.a,\n          \"ClosureSignalIndex:clickCount\": 0,\n          \"#BranchAccessor\": \"#text/2\"\n        }], _.b[\"#CatchContent\"] = _._[\n          \"__tests__/template.marko_3_content\"\n          ](_.a), _.b[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.a), (_.d).add(_.b), _.c),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.j[2] = _ =&gt;\n      {\n        _.push(\n          \"__tests__/template.marko_1_clickCount 2\"\n          )\n      };\n      M._.w()\n    </script>\n    <script>\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text\nREMOVE #document-fragment/#comment0 after html/body/#text\nREMOVE #document-fragment/#comment1 after html/body/#text\nREMOVE #document-fragment/#comment2 after html/body/#text\nREMOVE #document-fragment/#text0 after html/body/#text\nREMOVE #document-fragment/#comment3 after html/body/#text\nREMOVE #document-fragment/#text1 after html/body/#text\nREMOVE #document-fragment/#comment4 after html/body/#text\nREMOVE #document-fragment/#text2 after html/body/#text\nREMOVE #document-fragment/#comment5 after html/body/#text\nREMOVE #document-fragment/#comment6 after html/body/#text\nREMOVE #document-fragment/#text3 after html/body/#text\n```\n\n# Render ASYNC\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <button>\n      inc\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      1\n    </div>\n    <!--M_*1 #div/1-->\n    <!--M_[-->\n    <!--M_!^b-->\n    <!--M_[-->\n    Async: \n    <!---->\n    1\n    <!--M_*4 #text/0-->\n    <!--M_]2 #text/0 4-->\n    <!--M_!b-->\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          clickCount: 0,\n          \"ClosureScopes:clickCount\": _.d = new Set\n        }, _.b = {\n          _: _.a,\n          \"ClosureSignalIndex:clickCount\": 0,\n          \"#BranchAccessor\": \"#text/2\"\n        }], _.b[\"#CatchContent\"] = _._[\n          \"__tests__/template.marko_3_content\"\n          ](_.a), _.b[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.a), (_.d).add(_.b), _.c),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.j[2] = _ =&gt;\n      {\n        _.push(\n          \"__tests__/template.marko_1_clickCount 2\"\n          )\n      };\n      M._.w()\n    </script>\n    <script>\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#comment2, html/body/#comment3, html/body/#comment4, html/body/#text0, html/body/#comment5, html/body/#text1, html/body/#comment6, html/body/#text2, html/body/#comment7, html/body/#comment8, html/body/#text3\nREMOVE #text after html/body/#text3\nREMOVE #text in html/body/div\nINSERT html/body/div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <button>\n      inc\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      1\n    </div>\n    <!--M_*1 #div/1-->\n    <!--M_[-->\n    <!--M_!^b-->\n    <!--M_[-->\n    Async: \n    <!---->\n    1\n    <!--M_*4 #text/0-->\n    <!--M_]2 #text/0 4-->\n    <!--M_!b-->\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          clickCount: 0,\n          \"ClosureScopes:clickCount\": _.d = new Set\n        }, _.b = {\n          _: _.a,\n          \"ClosureSignalIndex:clickCount\": 0,\n          \"#BranchAccessor\": \"#text/2\"\n        }], _.b[\"#CatchContent\"] = _._[\n          \"__tests__/template.marko_3_content\"\n          ](_.a), _.b[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.a), (_.d).add(_.b), _.c),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.j[2] = _ =&gt;\n      {\n        _.push(\n          \"__tests__/template.marko_1_clickCount 2\"\n          )\n      };\n      M._.w()\n    </script>\n    <script>\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render ASYNC\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <button>\n      inc\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      1\n    </div>\n    <!--M_*1 #div/1-->\n    LOADING...\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          clickCount: 0,\n          \"ClosureScopes:clickCount\": _.d = new Set\n        }, _.b = {\n          _: _.a,\n          \"ClosureSignalIndex:clickCount\": 0,\n          \"#BranchAccessor\": \"#text/2\"\n        }], _.b[\"#CatchContent\"] = _._[\n          \"__tests__/template.marko_3_content\"\n          ](_.a), _.b[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.a), (_.d).add(_.b), _.c),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.j[2] = _ =&gt;\n      {\n        _.push(\n          \"__tests__/template.marko_1_clickCount 2\"\n          )\n      };\n      M._.w()\n    </script>\n    <script>\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text\nREMOVE #document-fragment/#comment0 after html/body/#text\nREMOVE #document-fragment/#comment1 after html/body/#text\nREMOVE #document-fragment/#comment2 after html/body/#text\nREMOVE #document-fragment/#text0 after html/body/#text\nREMOVE #document-fragment/#comment3 after html/body/#text\nREMOVE #document-fragment/#text1 after html/body/#text\nREMOVE #document-fragment/#comment4 after html/body/#text\nREMOVE #document-fragment/#text2 after html/body/#text\nREMOVE #document-fragment/#comment5 after html/body/#text\nREMOVE #document-fragment/#comment6 after html/body/#text\nREMOVE #document-fragment/#text3 after html/body/#text\n```\n\n# Render ASYNC\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <button>\n      inc\n    </button>\n    <!--M_*1 #button/0-->\n    <div>\n      1\n    </div>\n    <!--M_*1 #div/1-->\n    Error: ERROR!\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          clickCount: 0,\n          \"ClosureScopes:clickCount\": _.d = new Set\n        }, _.b = {\n          _: _.a,\n          \"ClosureSignalIndex:clickCount\": 0,\n          \"#BranchAccessor\": \"#text/2\"\n        }], _.b[\"#CatchContent\"] = _._[\n          \"__tests__/template.marko_3_content\"\n          ](_.a), _.b[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.a), (_.d).add(_.b), _.c),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.j[2] = _ =&gt;\n      {\n        _.push(\n          \"__tests__/template.marko_1_clickCount 2\"\n          )\n      };\n      M._.w()\n    </script>\n    <script>\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text\nREMOVE #text after html/body/#text\nUPDATE html/body/#text \" \" => \"Error: ERROR!\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render ASYNC\n```html\n<button>\n  inc\n</button>\n<div />\nLOADING...\n```\n\n\n# Render End\n```html\n<button>\n  inc\n</button>\n<div />\nAsync: 0\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>inc</button><!--M_*1 #button/0--><div></div><!--M_*1 #div/1--><!--M_[--><!--M_!^b--><!--M_!^2-->LOADING...<!--M_!2--><!--M_!b--><!--M_]1 #text/2 2--><style M_>t{display:none}</style><t M_=2><!--M_#c--></t><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.a={clickCount:0,\"ClosureScopes:clickCount\":_.d=new Set},_.b={_:_.a,\"ClosureSignalIndex:clickCount\":0,\"#BranchAccessor\":\"#text/2\"}],_.b[\"#CatchContent\"]=_._[\"__tests__/template.marko_3_content\"](_.a),_.b[\"#PlaceholderContent\"]=_._[\"__tests__/template.marko_2_content\"](_.a),(_.d).add(_.b),_.c),\"__tests__/template.marko_0_clickCount 1\"];REORDER_RUNTIME(M._);M._.j[2]=_=>{_.push(\"__tests__/template.marko_1_clickCount 2\")};M._.w()</script>\n```\n\n# Write\n```html\n  <t M_=c><!--M_[-->Async: <!>0<!--M_*4 #text/0--><!--M_]2 #text/0 4--></t><script>M._.w()</script>\n```\n\n# Render ASYNC\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <button>\n      inc\n    </button>\n    <!--M_*1 #button/0-->\n    <div />\n    <!--M_*1 #div/1-->\n    <!--M_[-->\n    <!--M_!^b-->\n    <!--M_!^2-->\n    LOADING...\n    <!--M_!2-->\n    <!--M_!b-->\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          clickCount: 0,\n          \"ClosureScopes:clickCount\": _.d = new Set\n        }, _.b = {\n          _: _.a,\n          \"ClosureSignalIndex:clickCount\": 0,\n          \"#BranchAccessor\": \"#text/2\"\n        }], _.b[\"#CatchContent\"] = _._[\n          \"__tests__/template.marko_3_content\"\n          ](_.a), _.b[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.a), (_.d).add(_.b), _.c),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.j[2] = _ =&gt;\n      {\n        _.push(\n          \"__tests__/template.marko_1_clickCount 2\"\n          )\n      };\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment0\nINSERT html/body/div\nINSERT html/body/#comment1\nINSERT html/body/#comment2\nINSERT html/body/#comment3\nINSERT html/body/#comment4\nINSERT html/body/#text\nINSERT html/body/#comment5\nINSERT html/body/#comment6\nINSERT html/body/#comment7\nINSERT html/head/style\nINSERT html/head/style/#text\nINSERT t\nINSERT t/#comment\nREMOVE html/head/style after html/body/#comment7\nINSERT html/head/style\nREMOVE t after html/body/#comment7\nINSERT html/body/script\n```\n\n# Render End\n```html\n<html>\n  <head>\n    <style\n      m_=\"\"\n    >\n      t{display:none}\n    </style>\n  </head>\n  <body>\n    <button>\n      inc\n    </button>\n    <!--M_*1 #button/0-->\n    <div />\n    <!--M_*1 #div/1-->\n    <!--M_[-->\n    <!--M_!^b-->\n    <!--M_[-->\n    Async: \n    <!---->\n    0\n    <!--M_*4 #text/0-->\n    <!--M_]2 #text/0 4-->\n    <!--M_!b-->\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          clickCount: 0,\n          \"ClosureScopes:clickCount\": _.d = new Set\n        }, _.b = {\n          _: _.a,\n          \"ClosureSignalIndex:clickCount\": 0,\n          \"#BranchAccessor\": \"#text/2\"\n        }], _.b[\"#CatchContent\"] = _._[\n          \"__tests__/template.marko_3_content\"\n          ](_.a), _.b[\"#PlaceholderContent\"] = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.a), (_.d).add(_.b), _.c),\n        \"__tests__/template.marko_0_clickCount 1\"\n      ];\n      REORDER_RUNTIME(M._);\n      M._.j[2] = _ =&gt;\n      {\n        _.push(\n          \"__tests__/template.marko_1_clickCount 2\"\n          )\n      };\n      M._.w()\n    </script>\n    <script>\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT t\nINSERT html/body/#comment4\nINSERT html/body/#text0\nINSERT html/body/#comment5\nINSERT html/body/#text1\nINSERT html/body/#comment6\nINSERT html/body/#comment7\nREMOVE t after html/body/script0\nREMOVE #text after #comment\nREMOVE #comment after html/body/#comment3\nREMOVE #comment after html/body/#comment3\nINSERT html/body/#comment4, html/body/#text0, html/body/#comment5, html/body/#text1, html/body/#comment6, html/body/#comment7\nINSERT html/body/script1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-effects-async/template.marko",
    "content": "import { resolveAfter } from \"../../utils/resolve\";\n<let/clickCount = 0/>\n<button onClick() {\n  clickCount++\n}>inc</button>\n<div/el/>\n<try>\n  <script>\n    el().textContent = clickCount;\n  </script>\n  <await|value|=resolveAfter(clickCount)>\n    Async: ${value > 1 ? (() => { throw new Error(\"ERROR!\")})() : value}\n  </await>\n  <@placeholder>\n    LOADING...\n  </@placeholder>\n  <@catch|err|>\n    ${err}\n  </@catch>\n</try>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-effects-async/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { flush, wait } from \"../../utils/resolve\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, flush, wait, click, wait, click, wait],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-effects-catch/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"e\",\n      \"$$catch_content__err\": \"o\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-effects-catch/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div />\nERROR!\n<div>\n  This is good\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-effects-catch/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div />\nERROR!\n<div>\n  This is good\n</div>\n```\n\n# Mutations\n```\nINSERT div0, #text, div1\nINSERT div1/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-effects-catch/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 238 (min) 139 (brotli)\n_._enable_catch();\nconst $catch_content__err = ($scope, err) =>\n  (($scope, err_message) => _._text($scope.a, err_message))(\n    $scope,\n    err?.message,\n  );\n(_._content_resume(\"a0\", \" \", \" b\", 0, ($scope, $params2) =>\n  $catch_content__err($scope, $params2[0]),\n),\n  _._script(\n    \"a1\",\n    ($scope) => ($scope._.a.textContent = \"This shouldn't happen\"),\n  ),\n  _._script(\"a2\", ($scope) => ($scope.c.textContent = \"This is good\")),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-effects-catch/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div></div><!><div></div>\";\nexport const $walks = /* get, over(1), replace, over(1), get, over(1) */\" b%b b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\n_._enable_catch();\nconst $catch_content__err_message = ($scope, err_message) => _._text($scope[\"#text/0\"], err_message);\nconst $catch_content__$params = ($scope, $params2) => $catch_content__err($scope, $params2[0]);\nconst $catch_content__err = ($scope, err) => $catch_content__err_message($scope, err?.message);\nconst $catch_content = _._content_resume(\"__tests__/template.marko_2_content\", \" \", /* get, over(1) */\" b\", 0, $catch_content__$params);\nconst $try_content__setup__script = _._script(\"__tests__/template.marko_1\", $scope => (_._el_read($scope._[\"#div/0\"]).textContent = \"This shouldn't happen\"));\nconst $try_content__setup = $scope => {\n  _._text($scope[\"#text/0\"], (() => {\n    throw new Error(\"ERROR!\");\n  })());\n  $try_content__setup__script($scope);\n};\nconst $try = /* @__PURE__ */_._try(\"#text/1\", \" \", /* get, over(1) */\" b\", $try_content__setup);\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => (_._el_read($scope[\"#div/2\"]).textContent = \"This is good\"));\nexport function $setup($scope) {\n  $try($scope, {\n    catch: _.attrTag({\n      content: $catch_content($scope)\n    })\n  });\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-effects-catch/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div></div>${_._el_resume($scope0_id, \"#div/0\")}`);\n  _._try($scope0_id, \"#text/1\", _._content_resume(\"__tests__/template.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    _._scope_reason();\n    _._html(_._escape((() => {\n      throw new Error(\"ERROR!\");\n    })()));\n    _._script($scope1_id, \"__tests__/template.marko_1\");\n    _._scope($scope1_id, {\n      _: _._scope_with_id($scope0_id)\n    }, \"__tests__/template.marko\", \"2:2\");\n  }, $scope0_id), {\n    catch: _.attrTag({\n      content: _._content_resume(\"__tests__/template.marko_2_content\", err => {\n        const $scope2_reason = _._scope_reason();\n        const $scope2_id = _._scope_id();\n        _._html(`${_._escape(err.message)}${_._el_resume($scope2_id, \"#text/0\", _._serialize_guard($scope2_reason, /* err.message */0))}`);\n        _._serialize_if($scope2_reason, /* err.message */0) && _._scope($scope2_id, {}, \"__tests__/template.marko\", \"7:4\");\n      }, $scope0_id)\n    })\n  });\n  _._html(`<div></div>${_._el_resume($scope0_id, \"#div/2\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-effects-catch/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div />\nERROR!\n<div>\n  This is good\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-effects-catch/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*1 #div/0-->\n    <!--M_[-->\n    ERROR!\n    <!--M_]1 #text/1 2-->\n    <div>\n      This is good\n    </div>\n    <!--M_*1 #div/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {}, _.a = {\n          \"#BranchAccessor\": \"#text/1\"\n        }], _.a[\"#CatchContent\"] = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.c), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text1\nINSERT html/body/div1/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-effects-catch/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\nERROR!\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-effects-catch/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div></div><!--M_*1 #div/0--><!--M_[-->ERROR!<!--M_]1 #text/1 2--><div></div><!--M_*1 #div/2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.c={},_.a={\"#BranchAccessor\":\"#text/1\"}],_.a[\"#CatchContent\"]=_._[\"__tests__/template.marko_2_content\"](_.c),_.b),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*1 #div/0-->\n    <!--M_[-->\n    ERROR!\n    <!--M_]1 #text/1 2-->\n    <div />\n    <!--M_*1 #div/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.c = {}, _.a = {\n          \"#BranchAccessor\": \"#text/1\"\n        }], _.a[\"#CatchContent\"] = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.c), _.b),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/#text\nINSERT html/body/#comment2\nINSERT html/body/div1\nINSERT html/body/#comment3\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-effects-catch/template.marko",
    "content": "<div/el/>\n<try>\n  <script>\n    el().textContent = \"This shouldn't happen\"\n  </script>\n  ${(() => { throw new Error(\"ERROR!\") })()}\n  <@catch|err|>\n    ${err.message}\n  </@catch>\n</try>\n<div/el2/>\n<script>\n  el2().textContent = \"This is good\"\n</script>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-effects-catch/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-effects-catch-state/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$try_content__clickCount__script\": \"_\",\n      \"$$try_content__clickCount\": \"e\",\n      \"$$clickCount__closure\": \"r\",\n      \"$$clickCount\": \"c\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-effects-catch-state/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  0\n</div>\n<button>\n  inc\n</button>\n-- ‍\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  1\n</div>\n<button>\n  inc\n</button>\n-- ‍\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  1\n</div>\nError: ERROR!\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-effects-catch-state/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<div>\n  0\n</div>\n<button>\n  inc\n</button>\n-- ‍\n<!---->\n```\n\n# Mutations\n```\nINSERT div, button, #text0, #text1, #comment\nINSERT div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  1\n</div>\n<button>\n  inc\n</button>\n-- ‍\n<!---->\n```\n\n# Mutations\n```\nREMOVE #text in div\nINSERT div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  1\n</div>\nError: ERROR!\n<!---->\n```\n\n# Mutations\n```\nINSERT #text\nREMOVE button after #text\nREMOVE #text after #text\nREMOVE #text after #text\nUPDATE #text \" \" => \"Error: ERROR!\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-effects-catch-state/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 315 (min) 199 (brotli)\n_._enable_catch();\n_._content_resume(\"a0\", \" \", \" b\", 0, ($scope, $params2) =>\n  (($scope, err) => _._text($scope.a, err))($scope, $params2[0]),\n);\nconst $try_content__clickCount__script = _._script(\"a1\", ($scope) => {\n    (_._on($scope.a, \"click\", function () {\n      $clickCount($scope._, $scope._.c + 1);\n    }),\n      ($scope._.a.textContent = $scope._.c));\n  }),\n  $try_content__clickCount = _._closure_get(2, ($scope) => {\n    (_._text(\n      $scope.b,\n      (() => {\n        if ($scope._.c > 1) throw new Error(\"ERROR!\");\n      })(),\n    ),\n      $try_content__clickCount__script($scope));\n  }),\n  $clickCount__closure = _._closure($try_content__clickCount),\n  $clickCount = _._let(2, $clickCount__closure);\ninit();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-effects-catch-state/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div></div><!><!>\";\nexport const $walks = /* get, over(1), replace, over(2) */\" b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\n_._enable_catch();\nconst $catch_content__err = ($scope, err) => _._text($scope[\"#text/0\"], err);\nconst $catch_content__$params = ($scope, $params2) => $catch_content__err($scope, $params2[0]);\nconst $catch_content = _._content_resume(\"__tests__/template.marko_2_content\", \" \", /* get, over(1) */\" b\", 0, $catch_content__$params);\nconst $try_content__clickCount__script = _._script(\"__tests__/template.marko_1_clickCount\", $scope => {\n  _._on($scope[\"#button/0\"], \"click\", function () {\n    $clickCount($scope._, $scope._.clickCount + 1);\n  });\n  _._el_read($scope._[\"#div/0\"]).textContent = $scope._.clickCount;\n});\nconst $try_content__clickCount = /* @__PURE__ */_._closure_get(\"clickCount\", $scope => {\n  _._text($scope[\"#text/1\"], (() => {\n    if ($scope._.clickCount > 1) throw new Error(\"ERROR!\");\n  })());\n  $try_content__clickCount__script($scope);\n});\nconst $try_content__setup = $try_content__clickCount;\nconst $clickCount__closure = /* @__PURE__ */_._closure($try_content__clickCount);\nconst $clickCount = /* @__PURE__ */_._let(\"clickCount/2\", $clickCount__closure);\nconst $try = /* @__PURE__ */_._try(\"#text/1\", \"<button>inc</button> -- <!>\", /* get, over(2), replace, over(1) */\" c%b\", $try_content__setup);\nexport function $setup($scope) {\n  $clickCount($scope, 0);\n  $try($scope, {\n    catch: _.attrTag({\n      content: $catch_content($scope)\n    })\n  });\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-effects-catch-state/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $clickCount__closures = new Set();\n  let clickCount = 0;\n  _._html(`<div></div>${_._el_resume($scope0_id, \"#div/0\")}`);\n  _._try($scope0_id, \"#text/1\", _._content_resume(\"__tests__/template.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    _._scope_reason();\n    _._html(`<button>inc</button>${_._el_resume($scope1_id, \"#button/0\")} -- <!>${_._escape((() => {\n      if (clickCount > 1) throw new Error(\"ERROR!\");\n    })())}${_._el_resume($scope1_id, \"#text/1\")}`);\n    _._script($scope1_id, \"__tests__/template.marko_1_clickCount\");\n    _._subscribe($clickCount__closures, _._scope($scope1_id, {\n      _: _._scope_with_id($scope0_id),\n      \"ClosureSignalIndex:clickCount\": 0\n    }, \"__tests__/template.marko\", \"4:2\"));\n    _._resume_branch($scope1_id);\n  }, $scope0_id), {\n    catch: _.attrTag({\n      content: _._content_resume(\"__tests__/template.marko_2_content\", err => {\n        const $scope2_reason = _._scope_reason();\n        const $scope2_id = _._scope_id();\n        _._html(`${_._escape(err)}${_._el_resume($scope2_id, \"#text/0\", _._serialize_guard($scope2_reason, /* err */0))}`);\n        _._serialize_if($scope2_reason, /* err */0) && _._scope($scope2_id, {}, \"__tests__/template.marko\", \"12:4\");\n      }, $scope0_id)\n    })\n  });\n  _._scope($scope0_id, {\n    clickCount,\n    \"ClosureScopes:clickCount\": $clickCount__closures\n  }, \"__tests__/template.marko\", 0, {\n    clickCount: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-effects-catch-state/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  0\n</div>\n<button>\n  inc\n</button>\n-- ‍\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  1\n</div>\n<button>\n  inc\n</button>\n-- ‍\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<div>\n  1\n</div>\nError: ERROR!\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-effects-catch-state/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      0\n    </div>\n    <!--M_*1 #div/0-->\n    <!--M_[-->\n    <button>\n      inc\n    </button>\n    <!--M_*2 #button/0-->\n     -- \n    <!---->\n    ‍\n    <!--M_*2 #text/1-->\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          clickCount: 0,\n          \"ClosureScopes:clickCount\": _.d = new Set\n        }, _.b = {\n          _: _.a,\n          \"ClosureSignalIndex:clickCount\": 0,\n          \"#BranchAccessor\": \"#text/1\"\n        }], _.b[\"#CatchContent\"] = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.a), (_.d).add(_.b), _.c),\n        \"__tests__/template.marko_1_clickCount 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text2\nINSERT html/body/div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      1\n    </div>\n    <!--M_*1 #div/0-->\n    <!--M_[-->\n    <button>\n      inc\n    </button>\n    <!--M_*2 #button/0-->\n     -- \n    <!---->\n    ‍\n    <!--M_*2 #text/1-->\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          clickCount: 0,\n          \"ClosureScopes:clickCount\": _.d = new Set\n        }, _.b = {\n          _: _.a,\n          \"ClosureSignalIndex:clickCount\": 0,\n          \"#BranchAccessor\": \"#text/1\"\n        }], _.b[\"#CatchContent\"] = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.a), (_.d).add(_.b), _.c),\n        \"__tests__/template.marko_1_clickCount 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #text in html/body/div\nINSERT html/body/div/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      1\n    </div>\n    <!--M_*1 #div/0-->\n    Error: ERROR!\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          clickCount: 0,\n          \"ClosureScopes:clickCount\": _.d = new Set\n        }, _.b = {\n          _: _.a,\n          \"ClosureSignalIndex:clickCount\": 0,\n          \"#BranchAccessor\": \"#text/1\"\n        }], _.b[\"#CatchContent\"] = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.a), (_.d).add(_.b), _.c),\n        \"__tests__/template.marko_1_clickCount 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text\nREMOVE #comment after html/body/#text\nREMOVE button after html/body/#text\nREMOVE #comment after html/body/#text\nREMOVE #text after html/body/#text\nREMOVE #comment after html/body/#text\nREMOVE #text after html/body/#text\nREMOVE #comment after html/body/#text\nREMOVE #text after html/body/#text\nUPDATE html/body/#text \" \" => \"Error: ERROR!\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-effects-catch-state/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div />\n<button>\n  inc\n</button>\n-- ‍\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-effects-catch-state/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div></div><!--M_*1 #div/0--><!--M_[--><button>inc</button><!--M_*2 #button/0--> -- <!>&zwj;<!--M_*2 #text/1--><!--M_]1 #text/1 2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.a={clickCount:0,\"ClosureScopes:clickCount\":_.d=new Set},_.b={_:_.a,\"ClosureSignalIndex:clickCount\":0,\"#BranchAccessor\":\"#text/1\"}],_.b[\"#CatchContent\"]=_._[\"__tests__/template.marko_2_content\"](_.a),(_.d).add(_.b),_.c),\"__tests__/template.marko_1_clickCount 2\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div />\n    <!--M_*1 #div/0-->\n    <!--M_[-->\n    <button>\n      inc\n    </button>\n    <!--M_*2 #button/0-->\n     -- \n    <!---->\n    ‍\n    <!--M_*2 #text/1-->\n    <!--M_]1 #text/1 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          clickCount: 0,\n          \"ClosureScopes:clickCount\": _.d = new Set\n        }, _.b = {\n          _: _.a,\n          \"ClosureSignalIndex:clickCount\": 0,\n          \"#BranchAccessor\": \"#text/1\"\n        }], _.b[\"#CatchContent\"] = _._[\n          \"__tests__/template.marko_2_content\"\n          ](_.a), (_.d).add(_.b), _.c),\n        \"__tests__/template.marko_1_clickCount 2\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment2\nINSERT html/body/#text0\nINSERT html/body/#comment3\nINSERT html/body/#text1\nINSERT html/body/#comment4\nINSERT html/body/#comment5\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-effects-catch-state/template.marko",
    "content": "<let/clickCount = 0/>\n\n<div/el/>\n<try>\n  <button onClick() {\n    clickCount++\n  }>inc</button>\n  <script>\n    el().textContent = clickCount;\n  </script>\n  -- ${(() => { if (clickCount > 1) throw new Error(\"ERROR!\")})()}\n  <@catch|err|>\n    ${err}\n  </@catch>\n</try>\n\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-effects-catch-state/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-single-throw-sync/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"e\",\n      \"$$catch_content__err\": \"t\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-single-throw-sync/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\nBeforeERROR!After\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-single-throw-sync/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\nBeforeERROR!After\n```\n\n# Mutations\n```\nINSERT #text0, #text1, #text2\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-single-throw-sync/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 123 (min) 88 (brotli)\n_._enable_catch();\nconst $catch_content__err = ($scope, err) =>\n  (($scope, err_message) => _._text($scope.a, err_message))(\n    $scope,\n    err?.message,\n  );\n_._content_resume(\"a0\", \" \", \" b\", 0, ($scope, $params2) =>\n  $catch_content__err($scope, $params2[0]),\n);\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-single-throw-sync/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"Before<!>After\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\n_._enable_catch();\nconst $catch_content__err_message = ($scope, err_message) => _._text($scope[\"#text/0\"], err_message);\nconst $catch_content__$params = ($scope, $params2) => $catch_content__err($scope, $params2[0]);\nconst $catch_content__err = ($scope, err) => $catch_content__err_message($scope, err?.message);\nconst $catch_content = _._content_resume(\"__tests__/template.marko_2_content\", \" \", /* get, over(1) */\" b\", 0, $catch_content__$params);\nconst $try_content__setup = $scope => _._text($scope[\"#text/0\"], (() => {\n  throw new Error(\"ERROR!\");\n})());\nconst $try = /* @__PURE__ */_._try(\"#text/0\", \"Inside<!>\", /* over(1), replace, over(1) */\"b%b\", $try_content__setup);\nexport function $setup($scope) {\n  $try($scope, {\n    catch: _.attrTag({\n      content: $catch_content($scope)\n    })\n  });\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-single-throw-sync/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"Before\");\n  _._try($scope0_id, \"#text/0\", _._content_resume(\"__tests__/template.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    _._scope_reason();\n    _._html(`Inside${_._escape((() => {\n      throw new Error(\"ERROR!\");\n    })())}`);\n  }, $scope0_id), {\n    catch: _.attrTag({\n      content: _._content_resume(\"__tests__/template.marko_2_content\", err => {\n        const $scope2_reason = _._scope_reason();\n        const $scope2_id = _._scope_id();\n        _._html(`${_._escape(err.message)}${_._el_resume($scope2_id, \"#text/0\", _._serialize_guard($scope2_reason, /* err.message */0))}`);\n        _._serialize_if($scope2_reason, /* err.message */0) && _._scope($scope2_id, {}, \"__tests__/template.marko\", \"5:3\");\n      }, $scope0_id)\n    })\n  });\n  _._html(\"After\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-single-throw-sync/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\nBeforeERROR!After\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-single-throw-sync/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    Before\n    <!--M_[-->\n    ERROR!\n    <!--M_]1 #text/0 2-->\n    After\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#CatchContent\": _.c = {}\n      }], _.a[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.c), _.b)]\n    </script>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-single-throw-sync/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\nBeforeERROR!After\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-single-throw-sync/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  Before<!--M_[-->ERROR!<!--M_]1 #text/0 2-->After<script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,1,_.a={\"#BranchAccessor\":\"#text/0\",\"#CatchContent\":_.c={}}],_.a[\"#CatchContent\"]=_._[\"__tests__/template.marko_2_content\"](_.c),_.b)]</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    Before\n    <!--M_[-->\n    ERROR!\n    <!--M_]1 #text/0 2-->\n    After\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1, _.a = {\n        \"#BranchAccessor\": \"#text/0\",\n        \"#CatchContent\": _.c = {}\n      }], _.a[\"#CatchContent\"] = _._[\n        \"__tests__/template.marko_2_content\"\n        ](_.c), _.b)]\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text0\nINSERT html/body/#comment0\nINSERT html/body/#text1\nINSERT html/body/#comment1\nINSERT html/body/#text2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-single-throw-sync/template.marko",
    "content": "-- Before\ntry\n  -- Inside\n  -- ${(() => { throw new Error(\"ERROR!\") })()}\n  @catch|err|\n    -- ${err.message}\n\n-- After\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-single-throw-sync/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-tag-closure/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"a\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-tag-closure/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\nHello\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-tag-closure/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\nHello\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #text, #comment1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-tag-closure/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 18 (min) 22 (brotli)\n_._enable_catch();\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-tag-closure/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\n_._enable_catch();\nconst $try_content__value = /* @__PURE__ */_._closure_get(\"value\", $scope => _._text($scope[\"#text/0\"], $scope._.value));\nconst $try_content__setup = $try_content__value;\nconst $value = /* @__PURE__ */_._const(\"value\");\nconst $try = /* @__PURE__ */_._try(\"#text/0\", \" \", /* get, over(1) */\" b\", $try_content__setup);\nexport function $setup($scope) {\n  $value($scope, \"Hello\");\n  $try($scope, {});\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-tag-closure/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const value = \"Hello\";\n  _._try($scope0_id, \"#text/0\", _._content_resume(\"__tests__/template.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    _._scope_reason();\n    _._html(_._escape(value));\n    _._resume_branch($scope1_id);\n  }, $scope0_id), {});\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-tag-closure/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\nHello\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-tag-closure/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<!--M_[-->\n<html>\n  <head />\n  <body>\n    Hello\n    <!--M_]1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 1,\n      {\n        \"#BranchAccessor\": \"#text/0\"\n      }])]\n    </script>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-tag-closure/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\nHello\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-tag-closure/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <!--M_[-->Hello<!--M_]1 #text/0 2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,1,{\"#BranchAccessor\":\"#text/0\"}])]</script>\n```\n\n# Render End\n```html\n<!--M_[-->\n<html>\n  <head />\n  <body>\n    Hello\n    <!--M_]1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 1,\n      {\n        \"#BranchAccessor\": \"#text/0\"\n      }])]\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT #comment\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/try-tag-closure/template.marko",
    "content": "const/value=\"Hello\"\ntry -- ${value}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/typescript-with-tag-variable/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/typescript-with-tag-variable/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\nhello\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/typescript-with-tag-variable/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\nhello\n```\n\n# Mutations\n```\nINSERT #text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/typescript-with-tag-variable/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/typescript-with-tag-variable/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!>\";\nexport const $walks = /* replace, over(1) */\"%b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $x = /* @__PURE__ */_._let(\"x/1\", $scope => $x_y($scope, $scope.x?.y));\nconst $x_y = /* @__PURE__ */_._const(\"x_y\", $scope => _._text($scope[\"#text/0\"], $scope.x_y));\nexport function $setup($scope) {\n  $x($scope, {\n    y: \"hello\"\n  });\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/typescript-with-tag-variable/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let x = {\n    y: \"hello\"\n  };\n  _._html(_._escape(x.y));\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/typescript-with-tag-variable/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\nhello\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/typescript-with-tag-variable/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    hello\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/typescript-with-tag-variable/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\nhello\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/typescript-with-tag-variable/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  hello\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    hello\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/typescript-with-tag-variable/template.marko",
    "content": "<let/x:{ y: string } = { y: \"hello\" }/>\n\n-- ${x.y}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-details-open-default-update/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$open\": \"a\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-details-open-default-update/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<details />\n<details />\n<details />\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<details />\n<details />\n<details />\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-details-open-default-update/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<details />\n<details />\n<details />\n<button>\n  Update\n</button>\n```\n\n# Mutations\n```\nINSERT details0, details1, details2, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<details />\n<details />\n<details />\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-details-open-default-update/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 201 (min) 124 (brotli)\nconst $open = _._let(3, ($scope) => {\n  (_._attr_details_open_default($scope, \"a\", $scope.d),\n    _._attr_details_open($scope, \"b\", $scope.d, void 0));\n});\n(_._script(\"a0\", ($scope) => {\n  (_._attr_details_open_script($scope, \"b\"),\n    _._on($scope.c, \"click\", function () {\n      $open($scope, !0);\n    }));\n}),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-details-open-default-update/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<details></details><details></details><details></details><button>Update</button>\";\nexport const $walks = /* over(1), get, over(1), get, over(1), get, over(1) */\"b b b b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $open = /* @__PURE__ */_._let(\"open/3\", $scope => {\n  _._attr_details_open_default($scope, \"#details/0\", $scope.open);\n  _._attr_details_open($scope, \"#details/1\", $scope.open, undefined);\n});\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => {\n  _._attr_details_open_script($scope, \"#details/1\");\n  _._on($scope[\"#button/2\"], \"click\", function () {\n    $open($scope, true);\n  });\n});\nexport function $setup($scope) {\n  $open($scope, false);\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-details-open-default-update/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let open = false;\n  _._html(`<details></details><details${_._attr_details_open($scope0_id, \"#details/0\", open)}></details>${_._el_resume($scope0_id, \"#details/0\")}<details${_._attr_details_open($scope0_id, \"#details/1\", open, undefined)}></details>${_._el_resume($scope0_id, \"#details/1\")}<button>Update</button>${_._el_resume($scope0_id, \"#button/2\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-details-open-default-update/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<details />\n<details />\n<details />\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<details />\n<details />\n<details />\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-details-open-default-update/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <details />\n    <details />\n    <!--M_*1 #details/0-->\n    <details />\n    <!--M_*1 #details/1-->\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <details />\n    <details />\n    <!--M_*1 #details/0-->\n    <details />\n    <!--M_*1 #details/1-->\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-details-open-default-update/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<details />\n<details />\n<details />\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-details-open-default-update/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <details></details><details></details><!--M_*1 #details/0--><details></details><!--M_*1 #details/1--><button>Update</button><!--M_*1 #button/2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0]),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <details />\n    <details />\n    <!--M_*1 #details/0-->\n    <details />\n    <!--M_*1 #details/1-->\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/details0\nINSERT html/body/details1\nINSERT html/body/#comment0\nINSERT html/body/details2\nINSERT html/body/#comment1\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-details-open-default-update/template.marko",
    "content": "<let/open = false/>\n<details open=false/>\n<details open=open/>\n<details open=open openChange=undefined/>\n<button onClick() { open = true }>\n  Update\n</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-details-open-default-update/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-dialog-open-default-update/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"o\",\n      \"$init\": \"t\",\n      \"$$open\": \"a\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-dialog-open-default-update/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<dialog />\n<dialog />\n<dialog />\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<dialog />\n<dialog />\n<dialog />\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-dialog-open-default-update/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<dialog />\n<dialog />\n<dialog />\n<button>\n  Update\n</button>\n```\n\n# Mutations\n```\nINSERT dialog0, dialog1, dialog2, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<dialog />\n<dialog />\n<dialog />\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-dialog-open-default-update/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 198 (min) 119 (brotli)\nconst $open = _._let(3, ($scope) => {\n  (_._attr_dialog_open_default($scope, \"a\", $scope.d),\n    _._attr_dialog_open($scope, \"b\", $scope.d, void 0));\n});\n(_._script(\"a0\", ($scope) => {\n  (_._attr_dialog_open_script($scope, \"b\"),\n    _._on($scope.c, \"click\", function () {\n      $open($scope, !0);\n    }));\n}),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-dialog-open-default-update/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<dialog></dialog><dialog></dialog><dialog></dialog><button>Update</button>\";\nexport const $walks = /* over(1), get, over(1), get, over(1), get, over(1) */\"b b b b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $open = /* @__PURE__ */_._let(\"open/3\", $scope => {\n  _._attr_dialog_open_default($scope, \"#dialog/0\", $scope.open);\n  _._attr_dialog_open($scope, \"#dialog/1\", $scope.open, undefined);\n});\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => {\n  _._attr_dialog_open_script($scope, \"#dialog/1\");\n  _._on($scope[\"#button/2\"], \"click\", function () {\n    $open($scope, true);\n  });\n});\nexport function $setup($scope) {\n  $open($scope, false);\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-dialog-open-default-update/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let open = false;\n  _._html(`<dialog></dialog><dialog${_._attr_dialog_open($scope0_id, \"#dialog/0\", open)}></dialog>${_._el_resume($scope0_id, \"#dialog/0\")}<dialog${_._attr_dialog_open($scope0_id, \"#dialog/1\", open, undefined)}></dialog>${_._el_resume($scope0_id, \"#dialog/1\")}<button>Update</button>${_._el_resume($scope0_id, \"#button/2\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-dialog-open-default-update/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<dialog />\n<dialog />\n<dialog />\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<dialog />\n<dialog />\n<dialog />\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-dialog-open-default-update/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <dialog />\n    <dialog />\n    <!--M_*1 #dialog/0-->\n    <dialog />\n    <!--M_*1 #dialog/1-->\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <dialog />\n    <dialog />\n    <!--M_*1 #dialog/0-->\n    <dialog />\n    <!--M_*1 #dialog/1-->\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-dialog-open-default-update/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<dialog />\n<dialog />\n<dialog />\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-dialog-open-default-update/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <dialog></dialog><dialog></dialog><!--M_*1 #dialog/0--><dialog></dialog><!--M_*1 #dialog/1--><button>Update</button><!--M_*1 #button/2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0]),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <dialog />\n    <dialog />\n    <!--M_*1 #dialog/0-->\n    <dialog />\n    <!--M_*1 #dialog/1-->\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/dialog0\nINSERT html/body/dialog1\nINSERT html/body/#comment0\nINSERT html/body/dialog2\nINSERT html/body/#comment1\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-dialog-open-default-update/template.marko",
    "content": "<let/open = false/>\n<dialog open=false/>\n<dialog open=open/>\n<dialog open=open openChange=undefined/>\n<button onClick() { open = true }>\n  Update\n</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-dialog-open-default-update/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-checkbox-checkedValue-default-update/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"a\",\n      \"$$value\": \"e\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-checkbox-checkedValue-default-update/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"a\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"a\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<input\n  default-checked=\"\"\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<input\n  default-checked=\"\"\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-checkbox-checkedValue-default-update/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"a\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<button>\n  Update\n</button>\n```\n\n# Mutations\n```\nINSERT input0, input1, input2, input3, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"a\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<input\n  default-checked=\"\"\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<input\n  default-checked=\"\"\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<button>\n  Update\n</button>\n```\n\n# Mutations\n```\nUPDATE input2[checked] null => \"\"\nUPDATE input3[checked] null => \"\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-checkbox-checkedValue-default-update/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 234 (min) 127 (brotli)\nconst $value = _._let(5, ($scope) => {\n  (_._attr_input_checkedValue_default($scope, \"c\", $scope.f, \"b\"),\n    _._attr_input_checkedValue($scope, \"d\", $scope.f, void 0, \"b\"));\n});\n(_._script(\"a0\", ($scope) => {\n  (_._attr_input_checkedValue_script($scope, \"d\"),\n    _._on($scope.e, \"click\", function () {\n      $value($scope, [\"a\", \"b\"]);\n    }));\n}),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-checkbox-checkedValue-default-update/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<input type=checkbox><input type=checkbox><input type=checkbox><input type=checkbox><button>Update</button>\";\nexport const $walks = /* get, over(1), get, over(1), get, over(1), get, over(1), get, over(1) */\" b b b b b\";\nconst initialValue = [\"a\"];\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $value = /* @__PURE__ */_._let(\"value/5\", $scope => {\n  _._attr_input_checkedValue_default($scope, \"#input/2\", $scope.value, \"b\");\n  _._attr_input_checkedValue($scope, \"#input/3\", $scope.value, undefined, \"b\");\n});\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => {\n  _._attr_input_checkedValue_script($scope, \"#input/3\");\n  _._on($scope[\"#button/4\"], \"click\", function () {\n    $value($scope, [\"a\", \"b\"]);\n  });\n});\nexport function $setup($scope) {\n  _._attr_input_checkedValue_default($scope, \"#input/0\", initialValue, \"a\");\n  _._attr_input_checkedValue_default($scope, \"#input/1\", initialValue, \"b\");\n  $value($scope, initialValue);\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-checkbox-checkedValue-default-update/__snapshots__/html.expected/template.js",
    "content": "const initialValue = [\"a\"];\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let value = initialValue;\n  _._html(`<input${_._attr_input_checkedValue($scope0_id, \"#input/0\", initialValue, void 0, \"a\")} type=checkbox><input${_._attr_input_checkedValue($scope0_id, \"#input/1\", initialValue, void 0, \"b\")} type=checkbox><input${_._attr_input_checkedValue($scope0_id, \"#input/2\", value, void 0, \"b\")} type=checkbox>${_._el_resume($scope0_id, \"#input/2\")}<input${_._attr_input_checkedValue($scope0_id, \"#input/3\", value, undefined, \"b\")} type=checkbox>${_._el_resume($scope0_id, \"#input/3\")}<button>Update</button>${_._el_resume($scope0_id, \"#button/4\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-checkbox-checkedValue-default-update/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"a\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"a\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<input\n  default-checked=\"\"\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<input\n  default-checked=\"\"\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-checkbox-checkedValue-default-update/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <input\n      checked=\"\"\n      type=\"checkbox\"\n      value=\"a\"\n    />\n    <input\n      type=\"checkbox\"\n      value=\"b\"\n    />\n    <input\n      type=\"checkbox\"\n      value=\"b\"\n    />\n    <!--M_*1 #input/2-->\n    <input\n      type=\"checkbox\"\n      value=\"b\"\n    />\n    <!--M_*1 #input/3-->\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      checked=\"\"\n      type=\"checkbox\"\n      value=\"a\"\n    />\n    <input\n      type=\"checkbox\"\n      value=\"b\"\n    />\n    <input\n      default-checked=\"\"\n      type=\"checkbox\"\n      value=\"b\"\n    />\n    <!--M_*1 #input/2-->\n    <input\n      default-checked=\"\"\n      type=\"checkbox\"\n      value=\"b\"\n    />\n    <!--M_*1 #input/3-->\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/input2[checked] null => \"\"\nUPDATE html/body/input3[checked] null => \"\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-checkbox-checkedValue-default-update/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<input\n  checked=\"\"\n  type=\"checkbox\"\n  value=\"a\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<input\n  type=\"checkbox\"\n  value=\"b\"\n/>\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-checkbox-checkedValue-default-update/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <input value=a checked type=checkbox><input value=b type=checkbox><input value=b type=checkbox><!--M_*1 #input/2--><input value=b type=checkbox><!--M_*1 #input/3--><button>Update</button><!--M_*1 #button/4--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0]),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <input\n      checked=\"\"\n      type=\"checkbox\"\n      value=\"a\"\n    />\n    <input\n      type=\"checkbox\"\n      value=\"b\"\n    />\n    <input\n      type=\"checkbox\"\n      value=\"b\"\n    />\n    <!--M_*1 #input/2-->\n    <input\n      type=\"checkbox\"\n      value=\"b\"\n    />\n    <!--M_*1 #input/3-->\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/input0\nINSERT html/body/input1\nINSERT html/body/input2\nINSERT html/body/#comment0\nINSERT html/body/input3\nINSERT html/body/#comment1\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-checkbox-checkedValue-default-update/template.marko",
    "content": "static const initialValue = [\"a\"];\n<let/value = initialValue/>\n<input type=\"checkbox\" checkedValue=initialValue value=\"a\">\n<input type=\"checkbox\" checkedValue=initialValue value=\"b\">\n<input type=\"checkbox\" checkedValue=value value=\"b\">\n<input type=\"checkbox\" checkedValue=value value=\"b\" checkedValueChange=undefined>\n<button onClick() { value = [\"a\", \"b\"] }>\n  Update\n</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-checkbox-checkedValue-default-update/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-checked-default-update/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"_\",\n      \"$$checked\": \"c\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-checked-default-update/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  type=\"checkbox\"\n/>\n<input\n  type=\"checkbox\"\n/>\n<input\n  type=\"checkbox\"\n/>\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<input\n  type=\"checkbox\"\n/>\n<input\n  default-checked=\"\"\n  type=\"checkbox\"\n/>\n<input\n  default-checked=\"\"\n  type=\"checkbox\"\n/>\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-checked-default-update/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<input\n  type=\"checkbox\"\n/>\n<input\n  type=\"checkbox\"\n/>\n<input\n  type=\"checkbox\"\n/>\n<button>\n  Update\n</button>\n```\n\n# Mutations\n```\nINSERT input0, input1, input2, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<input\n  type=\"checkbox\"\n/>\n<input\n  default-checked=\"\"\n  type=\"checkbox\"\n/>\n<input\n  default-checked=\"\"\n  type=\"checkbox\"\n/>\n<button>\n  Update\n</button>\n```\n\n# Mutations\n```\nUPDATE input1[checked] null => \"\"\nUPDATE input2[checked] null => \"\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-checked-default-update/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 204 (min) 119 (brotli)\nconst $checked = _._let(3, ($scope) => {\n  (_._attr_input_checked_default($scope, \"a\", $scope.d),\n    _._attr_input_checked($scope, \"b\", $scope.d, void 0));\n});\n(_._script(\"a0\", ($scope) => {\n  (_._attr_input_checked_script($scope, \"b\"),\n    _._on($scope.c, \"click\", function () {\n      $checked($scope, !0);\n    }));\n}),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-checked-default-update/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<input type=checkbox><input type=checkbox><input type=checkbox><button>Update</button>\";\nexport const $walks = /* over(1), get, over(1), get, over(1), get, over(1) */\"b b b b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $checked = /* @__PURE__ */_._let(\"checked/3\", $scope => {\n  _._attr_input_checked_default($scope, \"#input/0\", $scope.checked);\n  _._attr_input_checked($scope, \"#input/1\", $scope.checked, undefined);\n});\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => {\n  _._attr_input_checked_script($scope, \"#input/1\");\n  _._on($scope[\"#button/2\"], \"click\", function () {\n    $checked($scope, true);\n  });\n});\nexport function $setup($scope) {\n  $checked($scope, false);\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-checked-default-update/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let checked = false;\n  _._html(`<input type=checkbox><input${_._attr_input_checked($scope0_id, \"#input/0\", checked)} type=checkbox>${_._el_resume($scope0_id, \"#input/0\")}<input${_._attr_input_checked($scope0_id, \"#input/1\", checked, undefined)} type=checkbox>${_._el_resume($scope0_id, \"#input/1\")}<button>Update</button>${_._el_resume($scope0_id, \"#button/2\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-checked-default-update/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  type=\"checkbox\"\n/>\n<input\n  type=\"checkbox\"\n/>\n<input\n  type=\"checkbox\"\n/>\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<input\n  type=\"checkbox\"\n/>\n<input\n  default-checked=\"\"\n  type=\"checkbox\"\n/>\n<input\n  default-checked=\"\"\n  type=\"checkbox\"\n/>\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-checked-default-update/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <input\n      type=\"checkbox\"\n    />\n    <input\n      type=\"checkbox\"\n    />\n    <!--M_*1 #input/0-->\n    <input\n      type=\"checkbox\"\n    />\n    <!--M_*1 #input/1-->\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      type=\"checkbox\"\n    />\n    <input\n      default-checked=\"\"\n      type=\"checkbox\"\n    />\n    <!--M_*1 #input/0-->\n    <input\n      default-checked=\"\"\n      type=\"checkbox\"\n    />\n    <!--M_*1 #input/1-->\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/input1[checked] null => \"\"\nUPDATE html/body/input2[checked] null => \"\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-checked-default-update/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<input\n  type=\"checkbox\"\n/>\n<input\n  type=\"checkbox\"\n/>\n<input\n  type=\"checkbox\"\n/>\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-checked-default-update/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <input type=checkbox><input type=checkbox><!--M_*1 #input/0--><input type=checkbox><!--M_*1 #input/1--><button>Update</button><!--M_*1 #button/2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0]),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <input\n      type=\"checkbox\"\n    />\n    <input\n      type=\"checkbox\"\n    />\n    <!--M_*1 #input/0-->\n    <input\n      type=\"checkbox\"\n    />\n    <!--M_*1 #input/1-->\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/input0\nINSERT html/body/input1\nINSERT html/body/#comment0\nINSERT html/body/input2\nINSERT html/body/#comment1\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-checked-default-update/template.marko",
    "content": "<let/checked = false/>\n<input type=\"checkbox\" checked=false>\n<input type=\"checkbox\" checked=checked>\n<input type=\"checkbox\" checked=checked checkedChange=undefined>\n<button onClick() { checked = true }>\n  Update\n</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-checked-default-update/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-radio-checkedValue-default-update/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"e\",\n      \"$$value\": \"_\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-radio-checkedValue-default-update/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"b\"\n/>\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  default-checked=\"\"\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  default-checked=\"\"\n  type=\"radio\"\n  value=\"b\"\n/>\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-radio-checkedValue-default-update/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"b\"\n/>\n<button>\n  Update\n</button>\n```\n\n# Mutations\n```\nINSERT input0, input1, input2, input3, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  default-checked=\"\"\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  default-checked=\"\"\n  type=\"radio\"\n  value=\"b\"\n/>\n<button>\n  Update\n</button>\n```\n\n# Mutations\n```\nUPDATE input2[checked] null => \"\"\nUPDATE input3[checked] null => \"\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-radio-checkedValue-default-update/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 228 (min) 124 (brotli)\nconst $value = _._let(5, ($scope) => {\n  (_._attr_input_checkedValue_default($scope, \"c\", $scope.f, \"b\"),\n    _._attr_input_checkedValue($scope, \"d\", $scope.f, void 0, \"b\"));\n});\n(_._script(\"a0\", ($scope) => {\n  (_._attr_input_checkedValue_script($scope, \"d\"),\n    _._on($scope.e, \"click\", function () {\n      $value($scope, \"b\");\n    }));\n}),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-radio-checkedValue-default-update/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<input type=radio><input type=radio><input type=radio><input type=radio><button>Update</button>\";\nexport const $walks = /* get, over(1), get, over(1), get, over(1), get, over(1), get, over(1) */\" b b b b b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $value = /* @__PURE__ */_._let(\"value/5\", $scope => {\n  _._attr_input_checkedValue_default($scope, \"#input/2\", $scope.value, \"b\");\n  _._attr_input_checkedValue($scope, \"#input/3\", $scope.value, undefined, \"b\");\n});\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => {\n  _._attr_input_checkedValue_script($scope, \"#input/3\");\n  _._on($scope[\"#button/4\"], \"click\", function () {\n    $value($scope, \"b\");\n  });\n});\nexport function $setup($scope) {\n  _._attr_input_checkedValue_default($scope, \"#input/0\", \"a\", \"a\");\n  _._attr_input_checkedValue_default($scope, \"#input/1\", \"a\", \"b\");\n  $value($scope, \"a\");\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-radio-checkedValue-default-update/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let value = \"a\";\n  _._html(`<input${_._attr_input_checkedValue($scope0_id, \"#input/0\", \"a\", void 0, \"a\")} type=radio><input${_._attr_input_checkedValue($scope0_id, \"#input/1\", \"a\", void 0, \"b\")} type=radio><input${_._attr_input_checkedValue($scope0_id, \"#input/2\", value, void 0, \"b\")} type=radio>${_._el_resume($scope0_id, \"#input/2\")}<input${_._attr_input_checkedValue($scope0_id, \"#input/3\", value, undefined, \"b\")} type=radio>${_._el_resume($scope0_id, \"#input/3\")}<button>Update</button>${_._el_resume($scope0_id, \"#button/4\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-radio-checkedValue-default-update/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"b\"\n/>\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  default-checked=\"\"\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  default-checked=\"\"\n  type=\"radio\"\n  value=\"b\"\n/>\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-radio-checkedValue-default-update/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <input\n      checked=\"\"\n      type=\"radio\"\n      value=\"a\"\n    />\n    <input\n      type=\"radio\"\n      value=\"b\"\n    />\n    <input\n      type=\"radio\"\n      value=\"b\"\n    />\n    <!--M_*1 #input/2-->\n    <input\n      type=\"radio\"\n      value=\"b\"\n    />\n    <!--M_*1 #input/3-->\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      checked=\"\"\n      type=\"radio\"\n      value=\"a\"\n    />\n    <input\n      type=\"radio\"\n      value=\"b\"\n    />\n    <input\n      default-checked=\"\"\n      type=\"radio\"\n      value=\"b\"\n    />\n    <!--M_*1 #input/2-->\n    <input\n      default-checked=\"\"\n      type=\"radio\"\n      value=\"b\"\n    />\n    <!--M_*1 #input/3-->\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/input2[checked] null => \"\"\nUPDATE html/body/input3[checked] null => \"\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-radio-checkedValue-default-update/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<input\n  checked=\"\"\n  type=\"radio\"\n  value=\"a\"\n/>\n<input\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"b\"\n/>\n<input\n  type=\"radio\"\n  value=\"b\"\n/>\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-radio-checkedValue-default-update/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <input value=a checked type=radio><input value=b type=radio><input value=b type=radio><!--M_*1 #input/2--><input value=b type=radio><!--M_*1 #input/3--><button>Update</button><!--M_*1 #button/4--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0]),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <input\n      checked=\"\"\n      type=\"radio\"\n      value=\"a\"\n    />\n    <input\n      type=\"radio\"\n      value=\"b\"\n    />\n    <input\n      type=\"radio\"\n      value=\"b\"\n    />\n    <!--M_*1 #input/2-->\n    <input\n      type=\"radio\"\n      value=\"b\"\n    />\n    <!--M_*1 #input/3-->\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/input0\nINSERT html/body/input1\nINSERT html/body/input2\nINSERT html/body/#comment0\nINSERT html/body/input3\nINSERT html/body/#comment1\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-radio-checkedValue-default-update/template.marko",
    "content": "<let/value = \"a\"/>\n<input type=\"radio\" checkedValue=\"a\" value=\"a\">\n<input type=\"radio\" checkedValue=\"a\" value=\"b\">\n<input type=\"radio\" checkedValue=value value=\"b\">\n<input type=\"radio\" checkedValue=value value=\"b\" checkedValueChange=undefined>\n<button onClick() { value = \"b\" }>\n  Update\n</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-radio-checkedValue-default-update/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-value-default-update/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"a\",\n      \"$$value\": \"_\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-value-default-update/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  value=\"a\"\n/>\n<input\n  value=\"a\"\n/>\n<input\n  value=\"a\"\n/>\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<input\n  value=\"a\"\n/>\n<input\n  default-value=\"b\"\n  value=\"a\"\n/>\n<input\n  default-value=\"b\"\n  value=\"a\"\n/>\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-value-default-update/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<input\n  value=\"a\"\n/>\n<input\n  value=\"a\"\n/>\n<input\n  value=\"a\"\n/>\n<button>\n  Update\n</button>\n```\n\n# Mutations\n```\nINSERT input0, input1, input2, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<input\n  value=\"a\"\n/>\n<input\n  default-value=\"b\"\n  value=\"a\"\n/>\n<input\n  default-value=\"b\"\n  value=\"a\"\n/>\n<button>\n  Update\n</button>\n```\n\n# Mutations\n```\nUPDATE input1[value] \"a\" => \"b\"\nUPDATE input2[value] \"a\" => \"b\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-value-default-update/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 199 (min) 120 (brotli)\nconst $value = _._let(3, ($scope) => {\n  (_._attr_input_value_default($scope, \"a\", $scope.d),\n    _._attr_input_value($scope, \"b\", $scope.d, void 0));\n});\n(_._script(\"a0\", ($scope) => {\n  (_._attr_input_value_script($scope, \"b\"),\n    _._on($scope.c, \"click\", function () {\n      $value($scope, \"b\");\n    }));\n}),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-value-default-update/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<input value=a><input><input><button>Update</button>\";\nexport const $walks = /* over(1), get, over(1), get, over(1), get, over(1) */\"b b b b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $value = /* @__PURE__ */_._let(\"value/3\", $scope => {\n  _._attr_input_value_default($scope, \"#input/0\", $scope.value);\n  _._attr_input_value($scope, \"#input/1\", $scope.value, undefined);\n});\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => {\n  _._attr_input_value_script($scope, \"#input/1\");\n  _._on($scope[\"#button/2\"], \"click\", function () {\n    $value($scope, \"b\");\n  });\n});\nexport function $setup($scope) {\n  $value($scope, \"a\");\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-value-default-update/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let value = \"a\";\n  _._html(`<input value=a><input${_._attr_input_value($scope0_id, \"#input/0\", value)}>${_._el_resume($scope0_id, \"#input/0\")}<input${_._attr_input_value($scope0_id, \"#input/1\", value, undefined)}>${_._el_resume($scope0_id, \"#input/1\")}<button>Update</button>${_._el_resume($scope0_id, \"#button/2\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-value-default-update/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<input\n  value=\"a\"\n/>\n<input\n  value=\"a\"\n/>\n<input\n  value=\"a\"\n/>\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<input\n  value=\"a\"\n/>\n<input\n  default-value=\"b\"\n  value=\"a\"\n/>\n<input\n  default-value=\"b\"\n  value=\"a\"\n/>\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-value-default-update/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <input\n      value=\"a\"\n    />\n    <input\n      value=\"a\"\n    />\n    <!--M_*1 #input/0-->\n    <input\n      value=\"a\"\n    />\n    <!--M_*1 #input/1-->\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <input\n      value=\"a\"\n    />\n    <input\n      default-value=\"b\"\n      value=\"a\"\n    />\n    <!--M_*1 #input/0-->\n    <input\n      default-value=\"b\"\n      value=\"a\"\n    />\n    <!--M_*1 #input/1-->\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/input1[value] \"a\" => \"b\"\nUPDATE html/body/input2[value] \"a\" => \"b\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-value-default-update/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<input\n  value=\"a\"\n/>\n<input\n  value=\"a\"\n/>\n<input\n  value=\"a\"\n/>\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-value-default-update/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <input value=a><input value=a><!--M_*1 #input/0--><input value=a><!--M_*1 #input/1--><button>Update</button><!--M_*1 #button/2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0]),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <input\n      value=\"a\"\n    />\n    <input\n      value=\"a\"\n    />\n    <!--M_*1 #input/0-->\n    <input\n      value=\"a\"\n    />\n    <!--M_*1 #input/1-->\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/input0\nINSERT html/body/input1\nINSERT html/body/#comment0\nINSERT html/body/input2\nINSERT html/body/#comment1\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-value-default-update/template.marko",
    "content": "<let/value = \"a\"/>\n<input value=\"a\">\n<input value=value>\n<input value=value valueChange=undefined>\n<button onClick() { value = \"b\" }>\n  Update\n</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-input-value-default-update/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-select-value/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-select-value/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<select>\n  <option\n    value=\"a\"\n  >\n    A\n  </option>\n  <option\n    selected=\"\"\n    value=\"b\"\n  >\n    B\n  </option>\n  <option\n    value=\"c\"\n  >\n    C\n  </option>\n</select>\n```\n\n\n# Render\n```js\nconst select = container.querySelector(\"select\");\nselect.value = select.options[2].value;\nselect.dispatchEvent(new select.ownerDocument.defaultView.Event(\"change\", {\n  bubbles: true\n}));\n```\n```html\n<select>\n  <option\n    value=\"a\"\n  >\n    A\n  </option>\n  <option\n    default-selected=\"\"\n    value=\"b\"\n  >\n    B\n  </option>\n  <option\n    selected=\"\"\n    value=\"c\"\n  >\n    C\n  </option>\n</select>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-select-value/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<select>\n  <option\n    value=\"a\"\n  >\n    A\n  </option>\n  <option\n    selected=\"\"\n    value=\"b\"\n  >\n    B\n  </option>\n  <option\n    value=\"c\"\n  >\n    C\n  </option>\n</select>\n```\n\n# Mutations\n```\nINSERT select\nUPDATE select/option1[selected] null => \"\"\n```\n\n# Render\n```js\nconst select = container.querySelector(\"select\");\nselect.value = select.options[2].value;\nselect.dispatchEvent(new select.ownerDocument.defaultView.Event(\"change\", {\n  bubbles: true\n}));\n```\n```html\n<select>\n  <option\n    value=\"a\"\n  >\n    A\n  </option>\n  <option\n    default-selected=\"\"\n    value=\"b\"\n  >\n    B\n  </option>\n  <option\n    selected=\"\"\n    value=\"c\"\n  >\n    C\n  </option>\n</select>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-select-value/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-select-value/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<select><option value=a>A</option><option value=b>B</option><option value=c>C</option></select>\";\nexport const $walks = /* get, over(1) */\" b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport function $setup($scope) {\n  _._attr_select_value_default($scope, \"#select/0\", \"b\");\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-select-value/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._attr_select_value($scope0_id, \"#select/0\", \"b\", void 0, () => {\n    _._html(`<select><option${_._attr_option_value(\"a\")}>A</option><option${_._attr_option_value(\"b\")}>B</option><option${_._attr_option_value(\"c\")}>C</option></select>`);\n  });\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-select-value/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<select>\n  <option\n    value=\"a\"\n  >\n    A\n  </option>\n  <option\n    selected=\"\"\n    value=\"b\"\n  >\n    B\n  </option>\n  <option\n    value=\"c\"\n  >\n    C\n  </option>\n</select>\n```\n\n\n# Render\n```js\nconst select = container.querySelector(\"select\");\nselect.value = select.options[2].value;\nselect.dispatchEvent(new select.ownerDocument.defaultView.Event(\"change\", {\n  bubbles: true\n}));\n```\n```html\n<select>\n  <option\n    value=\"a\"\n  >\n    A\n  </option>\n  <option\n    default-selected=\"\"\n    value=\"b\"\n  >\n    B\n  </option>\n  <option\n    selected=\"\"\n    value=\"c\"\n  >\n    C\n  </option>\n</select>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-select-value/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <select>\n      <option\n        value=\"a\"\n      >\n        A\n      </option>\n      <option\n        selected=\"\"\n        value=\"b\"\n      >\n        B\n      </option>\n      <option\n        value=\"c\"\n      >\n        C\n      </option>\n    </select>\n  </body>\n</html>\n```\n\n\n# Render\n```js\nconst select = container.querySelector(\"select\");\nselect.value = select.options[2].value;\nselect.dispatchEvent(new select.ownerDocument.defaultView.Event(\"change\", {\n  bubbles: true\n}));\n```\n```html\n<html>\n  <head />\n  <body>\n    <select>\n      <option\n        value=\"a\"\n      >\n        A\n      </option>\n      <option\n        default-selected=\"\"\n        value=\"b\"\n      >\n        B\n      </option>\n      <option\n        selected=\"\"\n        value=\"c\"\n      >\n        C\n      </option>\n    </select>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-select-value/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<select>\n  <option\n    value=\"a\"\n  >\n    A\n  </option>\n  <option\n    selected=\"\"\n    value=\"b\"\n  >\n    B\n  </option>\n  <option\n    value=\"c\"\n  >\n    C\n  </option>\n</select>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-select-value/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <select><option value=a>A</option><option value=b selected>B</option><option value=c>C</option></select>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <select>\n      <option\n        value=\"a\"\n      >\n        A\n      </option>\n      <option\n        selected=\"\"\n        value=\"b\"\n      >\n        B\n      </option>\n      <option\n        value=\"c\"\n      >\n        C\n      </option>\n    </select>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/select\nINSERT html/body/select/option0\nINSERT html/body/select/option0/#text\nINSERT html/body/select/option1\nINSERT html/body/select/option1/#text\nINSERT html/body/select/option2\nINSERT html/body/select/option2/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-select-value/template.marko",
    "content": "<select value=\"b\">\n  <option value=\"a\">A</>\n  <option value=\"b\">B</>\n  <option value=\"c\">C</>\n</>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-select-value/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction selectLast(container: Element) {\n  const select = container.querySelector<HTMLSelectElement>(\"select\")!;\n  select.value = select.options[2].value;\n  select.dispatchEvent(\n    new select.ownerDocument.defaultView!.Event(\"change\", { bubbles: true }),\n  );\n}\n\nexport const config: TestConfig = {\n  steps: [{}, selectLast],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-select-value-default-update/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"e\",\n      \"$$value\": \"_\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-select-value-default-update/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<select>\n  <option />\n  <option\n    selected=\"\"\n    value=\"a\"\n  />\n</select>\n<select>\n  <option\n    selected=\"\"\n  />\n  <option\n    value=\"b\"\n  />\n</select>\n<select>\n  <option\n    selected=\"\"\n  />\n  <option\n    value=\"b\"\n  />\n</select>\n<select>\n  <option\n    selected=\"\"\n  />\n  <option\n    value=\"b\"\n  />\n</select>\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<select>\n  <option />\n  <option\n    selected=\"\"\n    value=\"a\"\n  />\n</select>\n<select>\n  <option\n    selected=\"\"\n  />\n  <option\n    value=\"b\"\n  />\n</select>\n<select>\n  <option\n    selected=\"\"\n  />\n  <option\n    default-selected=\"\"\n    value=\"b\"\n  />\n</select>\n<select>\n  <option\n    selected=\"\"\n  />\n  <option\n    default-selected=\"\"\n    value=\"b\"\n  />\n</select>\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-select-value-default-update/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<select>\n  <option />\n  <option\n    selected=\"\"\n    value=\"a\"\n  />\n</select>\n<select>\n  <option\n    selected=\"\"\n  />\n  <option\n    value=\"b\"\n  />\n</select>\n<select>\n  <option\n    selected=\"\"\n  />\n  <option\n    value=\"b\"\n  />\n</select>\n<select>\n  <option\n    selected=\"\"\n  />\n  <option\n    value=\"b\"\n  />\n</select>\n<button>\n  Update\n</button>\n```\n\n# Mutations\n```\nINSERT select0, select1, select2, select3, button\nUPDATE select0/option1[selected] null => \"\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<select>\n  <option />\n  <option\n    selected=\"\"\n    value=\"a\"\n  />\n</select>\n<select>\n  <option\n    selected=\"\"\n  />\n  <option\n    value=\"b\"\n  />\n</select>\n<select>\n  <option\n    selected=\"\"\n  />\n  <option\n    default-selected=\"\"\n    value=\"b\"\n  />\n</select>\n<select>\n  <option\n    selected=\"\"\n  />\n  <option\n    default-selected=\"\"\n    value=\"b\"\n  />\n</select>\n<button>\n  Update\n</button>\n```\n\n# Mutations\n```\nUPDATE select3/option1[selected] null => \"\"\nUPDATE select2/option1[selected] null => \"\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-select-value-default-update/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 202 (min) 123 (brotli)\nconst $value = _._let(5, ($scope) => {\n  (_._attr_select_value_default($scope, \"c\", $scope.f),\n    _._attr_select_value($scope, \"d\", $scope.f, void 0));\n});\n(_._script(\"a0\", ($scope) => {\n  (_._attr_select_value_script($scope, \"d\"),\n    _._on($scope.e, \"click\", function () {\n      $value($scope, \"b\");\n    }));\n}),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-select-value-default-update/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<select><option></option><option value=a></option></select><select><option></option><option value=b></option></select><select><option></option><option value=b></option></select><select><option></option><option value=b></option></select><button>Update</button>\";\nexport const $walks = /* get, over(1), get, over(1), get, over(1), get, over(1), get, over(1) */\" b b b b b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $value = /* @__PURE__ */_._let(\"value/5\", $scope => {\n  _._attr_select_value_default($scope, \"#select/2\", $scope.value);\n  _._attr_select_value($scope, \"#select/3\", $scope.value, undefined);\n});\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => {\n  _._attr_select_value_script($scope, \"#select/3\");\n  _._on($scope[\"#button/4\"], \"click\", function () {\n    $value($scope, \"b\");\n  });\n});\nexport function $setup($scope) {\n  _._attr_select_value_default($scope, \"#select/0\", \"a\");\n  _._attr_select_value_default($scope, \"#select/1\", \"a\");\n  $value($scope, \"a\");\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-select-value-default-update/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let value = \"a\";\n  _._attr_select_value($scope0_id, \"#select/0\", \"a\", void 0, () => {\n    _._html(`<select><option></option><option${_._attr_option_value(\"a\")}></option></select>`);\n  });\n  _._attr_select_value($scope0_id, \"#select/1\", \"a\", void 0, () => {\n    _._html(`<select><option></option><option${_._attr_option_value(\"b\")}></option></select>`);\n  });\n  _._attr_select_value($scope0_id, \"#select/2\", value, void 0, () => {\n    _._html(`<select><option></option><option${_._attr_option_value(\"b\")}></option></select>`);\n  });\n  _._attr_select_value($scope0_id, \"#select/3\", value, undefined, () => {\n    _._html(`${_._el_resume($scope0_id, \"#select/2\")}<select><option></option><option${_._attr_option_value(\"b\")}></option></select>`);\n  });\n  _._html(`${_._el_resume($scope0_id, \"#select/3\")}<button>Update</button>${_._el_resume($scope0_id, \"#button/4\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-select-value-default-update/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<select>\n  <option />\n  <option\n    selected=\"\"\n    value=\"a\"\n  />\n</select>\n<select>\n  <option\n    selected=\"\"\n  />\n  <option\n    value=\"b\"\n  />\n</select>\n<select>\n  <option\n    selected=\"\"\n  />\n  <option\n    value=\"b\"\n  />\n</select>\n<select>\n  <option\n    selected=\"\"\n  />\n  <option\n    value=\"b\"\n  />\n</select>\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<select>\n  <option />\n  <option\n    selected=\"\"\n    value=\"a\"\n  />\n</select>\n<select>\n  <option\n    selected=\"\"\n  />\n  <option\n    value=\"b\"\n  />\n</select>\n<select>\n  <option\n    selected=\"\"\n  />\n  <option\n    default-selected=\"\"\n    value=\"b\"\n  />\n</select>\n<select>\n  <option\n    selected=\"\"\n  />\n  <option\n    default-selected=\"\"\n    value=\"b\"\n  />\n</select>\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-select-value-default-update/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <select>\n      <option />\n      <option\n        selected=\"\"\n        value=\"a\"\n      />\n    </select>\n    <select>\n      <option\n        selected=\"\"\n      />\n      <option\n        value=\"b\"\n      />\n    </select>\n    <select>\n      <option\n        selected=\"\"\n      />\n      <option\n        value=\"b\"\n      />\n    </select>\n    <!--M_*1 #select/2-->\n    <select>\n      <option\n        selected=\"\"\n      />\n      <option\n        value=\"b\"\n      />\n    </select>\n    <!--M_*1 #select/3-->\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <select>\n      <option />\n      <option\n        selected=\"\"\n        value=\"a\"\n      />\n    </select>\n    <select>\n      <option\n        selected=\"\"\n      />\n      <option\n        value=\"b\"\n      />\n    </select>\n    <select>\n      <option\n        selected=\"\"\n      />\n      <option\n        default-selected=\"\"\n        value=\"b\"\n      />\n    </select>\n    <!--M_*1 #select/2-->\n    <select>\n      <option\n        selected=\"\"\n      />\n      <option\n        default-selected=\"\"\n        value=\"b\"\n      />\n    </select>\n    <!--M_*1 #select/3-->\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/select3/option1[selected] null => \"\"\nUPDATE html/body/select2/option1[selected] null => \"\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-select-value-default-update/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<select>\n  <option />\n  <option\n    selected=\"\"\n    value=\"a\"\n  />\n</select>\n<select>\n  <option\n    selected=\"\"\n  />\n  <option\n    value=\"b\"\n  />\n</select>\n<select>\n  <option\n    selected=\"\"\n  />\n  <option\n    value=\"b\"\n  />\n</select>\n<select>\n  <option\n    selected=\"\"\n  />\n  <option\n    value=\"b\"\n  />\n</select>\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-select-value-default-update/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <select><option></option><option value=a selected></option></select><select><option></option><option value=b></option></select><select><option></option><option value=b></option></select><!--M_*1 #select/2--><select><option></option><option value=b></option></select><!--M_*1 #select/3--><button>Update</button><!--M_*1 #button/4--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0]),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <select>\n      <option />\n      <option\n        selected=\"\"\n        value=\"a\"\n      />\n    </select>\n    <select>\n      <option\n        selected=\"\"\n      />\n      <option\n        value=\"b\"\n      />\n    </select>\n    <select>\n      <option\n        selected=\"\"\n      />\n      <option\n        value=\"b\"\n      />\n    </select>\n    <!--M_*1 #select/2-->\n    <select>\n      <option\n        selected=\"\"\n      />\n      <option\n        value=\"b\"\n      />\n    </select>\n    <!--M_*1 #select/3-->\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/select0\nINSERT html/body/select0/option0\nINSERT html/body/select0/option1\nINSERT html/body/select1\nINSERT html/body/select1/option0\nINSERT html/body/select1/option1\nINSERT html/body/select2\nINSERT html/body/select2/option0\nINSERT html/body/select2/option1\nINSERT html/body/#comment0\nINSERT html/body/select3\nINSERT html/body/select3/option0\nINSERT html/body/select3/option1\nINSERT html/body/#comment1\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-select-value-default-update/template.marko",
    "content": "<let/value = \"a\"/>\n\n<select value=\"a\">\n  <option/>\n  <option value=\"a\"/>\n</select>\n\n<select value=\"a\">\n  <option/>\n  <option value=\"b\"/>\n</select>\n\n<select value=value>\n  <option/>\n  <option value=\"b\"/>\n</select>\n\n<select value=value valueChange=undefined>\n  <option/>\n  <option value=\"b\"/>\n</select>\n\n<button onClick() { value = \"b\" }>\n  Update\n</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-select-value-default-update/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-select-value-multiple-default-update/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"a\",\n      \"$$value\": \"e\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-select-value-multiple-default-update/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<select\n  multiple=\"\"\n>\n  <option />\n  <option\n    selected=\"\"\n    value=\"a\"\n  />\n</select>\n<select\n  multiple=\"\"\n>\n  <option />\n  <option\n    value=\"b\"\n  />\n</select>\n<select\n  multiple=\"\"\n>\n  <option />\n  <option\n    value=\"b\"\n  />\n</select>\n<select\n  multiple=\"\"\n>\n  <option />\n  <option\n    value=\"b\"\n  />\n</select>\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<select\n  multiple=\"\"\n>\n  <option />\n  <option\n    selected=\"\"\n    value=\"a\"\n  />\n</select>\n<select\n  multiple=\"\"\n>\n  <option />\n  <option\n    value=\"b\"\n  />\n</select>\n<select\n  multiple=\"\"\n>\n  <option />\n  <option\n    default-selected=\"\"\n    value=\"b\"\n  />\n</select>\n<select\n  multiple=\"\"\n>\n  <option />\n  <option\n    default-selected=\"\"\n    value=\"b\"\n  />\n</select>\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-select-value-multiple-default-update/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<select\n  multiple=\"\"\n>\n  <option />\n  <option\n    selected=\"\"\n    value=\"a\"\n  />\n</select>\n<select\n  multiple=\"\"\n>\n  <option />\n  <option\n    value=\"b\"\n  />\n</select>\n<select\n  multiple=\"\"\n>\n  <option />\n  <option\n    value=\"b\"\n  />\n</select>\n<select\n  multiple=\"\"\n>\n  <option />\n  <option\n    value=\"b\"\n  />\n</select>\n<button>\n  Update\n</button>\n```\n\n# Mutations\n```\nINSERT select0, select1, select2, select3, button\nUPDATE select0/option1[selected] null => \"\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<select\n  multiple=\"\"\n>\n  <option />\n  <option\n    selected=\"\"\n    value=\"a\"\n  />\n</select>\n<select\n  multiple=\"\"\n>\n  <option />\n  <option\n    value=\"b\"\n  />\n</select>\n<select\n  multiple=\"\"\n>\n  <option />\n  <option\n    default-selected=\"\"\n    value=\"b\"\n  />\n</select>\n<select\n  multiple=\"\"\n>\n  <option />\n  <option\n    default-selected=\"\"\n    value=\"b\"\n  />\n</select>\n<button>\n  Update\n</button>\n```\n\n# Mutations\n```\nUPDATE select3/option1[selected] null => \"\"\nUPDATE select2/option1[selected] null => \"\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-select-value-multiple-default-update/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 208 (min) 130 (brotli)\nconst $value = _._let(5, ($scope) => {\n  (_._attr_select_value_default($scope, \"c\", $scope.f),\n    _._attr_select_value($scope, \"d\", $scope.f, void 0));\n});\n(_._script(\"a0\", ($scope) => {\n  (_._attr_select_value_script($scope, \"d\"),\n    _._on($scope.e, \"click\", function () {\n      $value($scope, [\"a\", \"b\"]);\n    }));\n}),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-select-value-multiple-default-update/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<select multiple><option></option><option value=a></option></select><select multiple><option></option><option value=b></option></select><select multiple><option></option><option value=b></option></select><select multiple><option></option><option value=b></option></select><button>Update</button>\";\nexport const $walks = /* get, over(1), get, over(1), get, over(1), get, over(1), get, over(1) */\" b b b b b\";\nconst initialValue = [\"a\"];\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $value = /* @__PURE__ */_._let(\"value/5\", $scope => {\n  _._attr_select_value_default($scope, \"#select/2\", $scope.value);\n  _._attr_select_value($scope, \"#select/3\", $scope.value, undefined);\n});\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => {\n  _._attr_select_value_script($scope, \"#select/3\");\n  _._on($scope[\"#button/4\"], \"click\", function () {\n    $value($scope, [\"a\", \"b\"]);\n  });\n});\nexport function $setup($scope) {\n  _._attr_select_value_default($scope, \"#select/0\", initialValue);\n  _._attr_select_value_default($scope, \"#select/1\", initialValue);\n  $value($scope, initialValue);\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-select-value-multiple-default-update/__snapshots__/html.expected/template.js",
    "content": "const initialValue = [\"a\"];\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let value = initialValue;\n  _._attr_select_value($scope0_id, \"#select/0\", initialValue, void 0, () => {\n    _._html(`<select multiple><option></option><option${_._attr_option_value(\"a\")}></option></select>`);\n  });\n  _._attr_select_value($scope0_id, \"#select/1\", initialValue, void 0, () => {\n    _._html(`<select multiple><option></option><option${_._attr_option_value(\"b\")}></option></select>`);\n  });\n  _._attr_select_value($scope0_id, \"#select/2\", value, void 0, () => {\n    _._html(`<select multiple><option></option><option${_._attr_option_value(\"b\")}></option></select>`);\n  });\n  _._attr_select_value($scope0_id, \"#select/3\", value, undefined, () => {\n    _._html(`${_._el_resume($scope0_id, \"#select/2\")}<select multiple><option></option><option${_._attr_option_value(\"b\")}></option></select>`);\n  });\n  _._html(`${_._el_resume($scope0_id, \"#select/3\")}<button>Update</button>${_._el_resume($scope0_id, \"#button/4\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-select-value-multiple-default-update/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<select\n  multiple=\"\"\n>\n  <option />\n  <option\n    selected=\"\"\n    value=\"a\"\n  />\n</select>\n<select\n  multiple=\"\"\n>\n  <option />\n  <option\n    value=\"b\"\n  />\n</select>\n<select\n  multiple=\"\"\n>\n  <option />\n  <option\n    value=\"b\"\n  />\n</select>\n<select\n  multiple=\"\"\n>\n  <option />\n  <option\n    value=\"b\"\n  />\n</select>\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<select\n  multiple=\"\"\n>\n  <option />\n  <option\n    selected=\"\"\n    value=\"a\"\n  />\n</select>\n<select\n  multiple=\"\"\n>\n  <option />\n  <option\n    value=\"b\"\n  />\n</select>\n<select\n  multiple=\"\"\n>\n  <option />\n  <option\n    default-selected=\"\"\n    value=\"b\"\n  />\n</select>\n<select\n  multiple=\"\"\n>\n  <option />\n  <option\n    default-selected=\"\"\n    value=\"b\"\n  />\n</select>\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-select-value-multiple-default-update/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <select\n      multiple=\"\"\n    >\n      <option />\n      <option\n        selected=\"\"\n        value=\"a\"\n      />\n    </select>\n    <select\n      multiple=\"\"\n    >\n      <option />\n      <option\n        value=\"b\"\n      />\n    </select>\n    <select\n      multiple=\"\"\n    >\n      <option />\n      <option\n        value=\"b\"\n      />\n    </select>\n    <!--M_*1 #select/2-->\n    <select\n      multiple=\"\"\n    >\n      <option />\n      <option\n        value=\"b\"\n      />\n    </select>\n    <!--M_*1 #select/3-->\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <select\n      multiple=\"\"\n    >\n      <option />\n      <option\n        selected=\"\"\n        value=\"a\"\n      />\n    </select>\n    <select\n      multiple=\"\"\n    >\n      <option />\n      <option\n        value=\"b\"\n      />\n    </select>\n    <select\n      multiple=\"\"\n    >\n      <option />\n      <option\n        default-selected=\"\"\n        value=\"b\"\n      />\n    </select>\n    <!--M_*1 #select/2-->\n    <select\n      multiple=\"\"\n    >\n      <option />\n      <option\n        default-selected=\"\"\n        value=\"b\"\n      />\n    </select>\n    <!--M_*1 #select/3-->\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/select3/option1[selected] null => \"\"\nUPDATE html/body/select2/option1[selected] null => \"\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-select-value-multiple-default-update/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<select\n  multiple=\"\"\n>\n  <option />\n  <option\n    selected=\"\"\n    value=\"a\"\n  />\n</select>\n<select\n  multiple=\"\"\n>\n  <option />\n  <option\n    value=\"b\"\n  />\n</select>\n<select\n  multiple=\"\"\n>\n  <option />\n  <option\n    value=\"b\"\n  />\n</select>\n<select\n  multiple=\"\"\n>\n  <option />\n  <option\n    value=\"b\"\n  />\n</select>\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-select-value-multiple-default-update/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <select multiple><option></option><option value=a selected></option></select><select multiple><option></option><option value=b></option></select><select multiple><option></option><option value=b></option></select><!--M_*1 #select/2--><select multiple><option></option><option value=b></option></select><!--M_*1 #select/3--><button>Update</button><!--M_*1 #button/4--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0]),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <select\n      multiple=\"\"\n    >\n      <option />\n      <option\n        selected=\"\"\n        value=\"a\"\n      />\n    </select>\n    <select\n      multiple=\"\"\n    >\n      <option />\n      <option\n        value=\"b\"\n      />\n    </select>\n    <select\n      multiple=\"\"\n    >\n      <option />\n      <option\n        value=\"b\"\n      />\n    </select>\n    <!--M_*1 #select/2-->\n    <select\n      multiple=\"\"\n    >\n      <option />\n      <option\n        value=\"b\"\n      />\n    </select>\n    <!--M_*1 #select/3-->\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/4-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/select0\nINSERT html/body/select0/option0\nINSERT html/body/select0/option1\nINSERT html/body/select1\nINSERT html/body/select1/option0\nINSERT html/body/select1/option1\nINSERT html/body/select2\nINSERT html/body/select2/option0\nINSERT html/body/select2/option1\nINSERT html/body/#comment0\nINSERT html/body/select3\nINSERT html/body/select3/option0\nINSERT html/body/select3/option1\nINSERT html/body/#comment1\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-select-value-multiple-default-update/template.marko",
    "content": "static const initialValue = [\"a\"];\n<let/value = initialValue/>\n\n<select multiple value=initialValue>\n  <option/>\n  <option value=\"a\"/>\n</select>\n\n<select multiple value=initialValue>\n  <option/>\n  <option value=\"b\"/>\n</select>\n\n<select multiple value=value>\n  <option/>\n  <option value=\"b\"/>\n</select>\n\n<select multiple value=value valueChange=undefined>\n  <option/>\n  <option value=\"b\"/>\n</select>\n\n<button onClick() { value = [\"a\", \"b\"] }>\n  Update\n</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-select-value-multiple-default-update/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-textarea-value/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-textarea-value/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<textarea>\n  hello\n</textarea>\n```\n\n\n# Render\n```js\nconst textarea = container.querySelector(\"textarea\");\nconst window = textarea.ownerDocument.defaultView;\ntextarea.value = value;\ntextarea.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<textarea\n  default-value=\"hello\"\n>\n  w\n</textarea>\n```\n\n\n# Render\n```js\nconst textarea = container.querySelector(\"textarea\");\nconst window = textarea.ownerDocument.defaultView;\ntextarea.value = value;\ntextarea.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<textarea\n  default-value=\"hello\"\n>\n  wor\n</textarea>\n```\n\n\n# Render\n```js\nconst textarea = container.querySelector(\"textarea\");\nconst window = textarea.ownerDocument.defaultView;\ntextarea.value = value;\ntextarea.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<textarea\n  default-value=\"hello\"\n>\n  world\n</textarea>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-textarea-value/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<textarea>\n  hello\n</textarea>\n```\n\n# Mutations\n```\nINSERT textarea\n```\n\n# Render\n```js\nconst textarea = container.querySelector(\"textarea\");\nconst window = textarea.ownerDocument.defaultView;\ntextarea.value = value;\ntextarea.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<textarea\n  default-value=\"hello\"\n>\n  w\n</textarea>\n```\n\n\n# Render\n```js\nconst textarea = container.querySelector(\"textarea\");\nconst window = textarea.ownerDocument.defaultView;\ntextarea.value = value;\ntextarea.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<textarea\n  default-value=\"hello\"\n>\n  wor\n</textarea>\n```\n\n\n# Render\n```js\nconst textarea = container.querySelector(\"textarea\");\nconst window = textarea.ownerDocument.defaultView;\ntextarea.value = value;\ntextarea.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<textarea\n  default-value=\"hello\"\n>\n  world\n</textarea>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-textarea-value/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-textarea-value/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<textarea></textarea>\";\nexport const $walks = /* get, over(1) */\" b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport function $setup($scope) {\n  _._attr_textarea_value_default($scope, \"#textarea/0\", \"hello\");\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-textarea-value/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<textarea>${_._escape_text(\"hello\")}</textarea>`);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-textarea-value/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<textarea>\n  hello\n</textarea>\n```\n\n\n# Render\n```js\nconst textarea = container.querySelector(\"textarea\");\nconst window = textarea.ownerDocument.defaultView;\ntextarea.value = value;\ntextarea.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<textarea\n  default-value=\"hello\"\n>\n  w\n</textarea>\n```\n\n\n# Render\n```js\nconst textarea = container.querySelector(\"textarea\");\nconst window = textarea.ownerDocument.defaultView;\ntextarea.value = value;\ntextarea.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<textarea\n  default-value=\"hello\"\n>\n  wor\n</textarea>\n```\n\n\n# Render\n```js\nconst textarea = container.querySelector(\"textarea\");\nconst window = textarea.ownerDocument.defaultView;\ntextarea.value = value;\ntextarea.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<textarea\n  default-value=\"hello\"\n>\n  world\n</textarea>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-textarea-value/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <textarea>\n      hello\n    </textarea>\n  </body>\n</html>\n```\n\n\n# Render\n```js\nconst textarea = container.querySelector(\"textarea\");\nconst window = textarea.ownerDocument.defaultView;\ntextarea.value = value;\ntextarea.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<html>\n  <head />\n  <body>\n    <textarea\n      default-value=\"hello\"\n    >\n      w\n    </textarea>\n  </body>\n</html>\n```\n\n\n# Render\n```js\nconst textarea = container.querySelector(\"textarea\");\nconst window = textarea.ownerDocument.defaultView;\ntextarea.value = value;\ntextarea.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<html>\n  <head />\n  <body>\n    <textarea\n      default-value=\"hello\"\n    >\n      wor\n    </textarea>\n  </body>\n</html>\n```\n\n\n# Render\n```js\nconst textarea = container.querySelector(\"textarea\");\nconst window = textarea.ownerDocument.defaultView;\ntextarea.value = value;\ntextarea.dispatchEvent(new window.Event(\"input\", {\n  bubbles: true\n}));\n```\n```html\n<html>\n  <head />\n  <body>\n    <textarea\n      default-value=\"hello\"\n    >\n      world\n    </textarea>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-textarea-value/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<textarea>\n  hello\n</textarea>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-textarea-value/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <textarea>hello</textarea>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <textarea>\n      hello\n    </textarea>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/textarea\nINSERT html/body/textarea/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-textarea-value/template.marko",
    "content": "<textarea value=\"hello\"/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-textarea-value/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction type(value: string) {\n  return (container: Element) => {\n    const textarea = container.querySelector(\"textarea\")!;\n    const window = textarea.ownerDocument.defaultView!;\n    textarea.value = value;\n    textarea.dispatchEvent(new window.Event(\"input\", { bubbles: true }));\n  };\n}\n\nexport const config: TestConfig = {\n  steps: [{}, type(\"w\"), type(\"wor\"), type(\"world\")],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-textarea-value-default-update/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"a\",\n      \"$$value\": \"e\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-textarea-value-default-update/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<textarea>\n  a\n</textarea>\n<textarea>\n  a\n</textarea>\n<textarea>\n  a\n</textarea>\n<textarea>\n  a\n</textarea>\n<textarea>\n  a\n</textarea>\n<textarea>\n  a\n</textarea>\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<textarea>\n  a\n</textarea>\n<textarea>\n  a\n</textarea>\n<textarea\n  default-value=\"b\"\n>\n  a\n</textarea>\n<textarea\n  default-value=\"b\"\n>\n  a\n</textarea>\n<textarea\n  default-value=\"b\"\n>\n  a\n</textarea>\n<textarea\n  default-value=\"b\"\n>\n  a\n</textarea>\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-textarea-value-default-update/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<textarea>\n  a\n</textarea>\n<textarea>\n  a\n</textarea>\n<textarea>\n  a\n</textarea>\n<textarea>\n  a\n</textarea>\n<textarea>\n  a\n</textarea>\n<textarea>\n  a\n</textarea>\n<button>\n  Update\n</button>\n```\n\n# Mutations\n```\nINSERT textarea0, textarea1, textarea2, textarea3, textarea4, textarea5, button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<textarea>\n  a\n</textarea>\n<textarea>\n  a\n</textarea>\n<textarea\n  default-value=\"b\"\n>\n  a\n</textarea>\n<textarea\n  default-value=\"b\"\n>\n  a\n</textarea>\n<textarea\n  default-value=\"b\"\n>\n  a\n</textarea>\n<textarea\n  default-value=\"b\"\n>\n  a\n</textarea>\n<button>\n  Update\n</button>\n```\n\n# Mutations\n```\nREMOVE #text in textarea2\nINSERT textarea2/#text\nREMOVE #text in textarea3\nINSERT textarea3/#text\nREMOVE #text in textarea4\nINSERT textarea4/#text\nREMOVE #text in textarea5\nINSERT textarea5/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-textarea-value-default-update/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 328 (min) 130 (brotli)\nconst $value = _._let(7, ($scope) => {\n  (_._attr_textarea_value_default($scope, \"c\", $scope.h),\n    _._attr_textarea_value_default($scope, \"d\", $scope.h),\n    _._attr_textarea_value($scope, \"e\", $scope.h, void 0),\n    _._attr_textarea_value($scope, \"f\", $scope.h, void 0));\n});\n(_._script(\"a0\", ($scope) => {\n  (_._attr_textarea_value_script($scope, \"e\"),\n    _._attr_textarea_value_script($scope, \"f\"),\n    _._on($scope.g, \"click\", function () {\n      $value($scope, \"b\");\n    }));\n}),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-textarea-value-default-update/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<textarea></textarea><textarea></textarea><textarea></textarea><textarea></textarea><textarea></textarea><textarea></textarea><button>Update</button>\";\nexport const $walks = /* get, over(1), get, over(1), get, over(1), get, over(1), get, over(1), get, over(1), get, over(1) */\" b b b b b b b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $value = /* @__PURE__ */_._let(\"value/7\", $scope => {\n  _._attr_textarea_value_default($scope, \"#textarea/2\", $scope.value);\n  _._attr_textarea_value_default($scope, \"#textarea/3\", $scope.value);\n  _._attr_textarea_value($scope, \"#textarea/4\", $scope.value, undefined);\n  _._attr_textarea_value($scope, \"#textarea/5\", $scope.value, undefined);\n});\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => {\n  _._attr_textarea_value_script($scope, \"#textarea/4\");\n  _._attr_textarea_value_script($scope, \"#textarea/5\");\n  _._on($scope[\"#button/6\"], \"click\", function () {\n    $value($scope, \"b\");\n  });\n});\nexport function $setup($scope) {\n  _._attr_textarea_value_default($scope, \"#textarea/0\", \"a\");\n  _._attr_textarea_value_default($scope, \"#textarea/1\", \"a\");\n  $value($scope, \"a\");\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-textarea-value-default-update/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let value = \"a\";\n  _._html(`<textarea>${_._escape_text(\"a\")}</textarea><textarea>${_._escape_text(\"a\")}</textarea><textarea>${_._escape_text(value)}</textarea>${_._el_resume($scope0_id, \"#textarea/2\")}<textarea>${_._escape_text(value)}</textarea>${_._el_resume($scope0_id, \"#textarea/3\")}<textarea>${_._attr_textarea_value($scope0_id, \"#textarea/4\", value, undefined)}</textarea>${_._el_resume($scope0_id, \"#textarea/4\")}<textarea>${_._attr_textarea_value($scope0_id, \"#textarea/5\", value, undefined)}</textarea>${_._el_resume($scope0_id, \"#textarea/5\")}<button>Update</button>${_._el_resume($scope0_id, \"#button/6\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-textarea-value-default-update/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<textarea>\n  a\n</textarea>\n<textarea>\n  a\n</textarea>\n<textarea>\n  a\n</textarea>\n<textarea>\n  a\n</textarea>\n<textarea>\n  a\n</textarea>\n<textarea>\n  a\n</textarea>\n<button>\n  Update\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<textarea>\n  a\n</textarea>\n<textarea>\n  a\n</textarea>\n<textarea\n  default-value=\"b\"\n>\n  a\n</textarea>\n<textarea\n  default-value=\"b\"\n>\n  a\n</textarea>\n<textarea\n  default-value=\"b\"\n>\n  a\n</textarea>\n<textarea\n  default-value=\"b\"\n>\n  a\n</textarea>\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-textarea-value-default-update/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <textarea>\n      a\n    </textarea>\n    <textarea>\n      a\n    </textarea>\n    <textarea>\n      a\n    </textarea>\n    <!--M_*1 #textarea/2-->\n    <textarea>\n      a\n    </textarea>\n    <!--M_*1 #textarea/3-->\n    <textarea>\n      a\n    </textarea>\n    <!--M_*1 #textarea/4-->\n    <textarea>\n      a\n    </textarea>\n    <!--M_*1 #textarea/5-->\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/6-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <textarea>\n      a\n    </textarea>\n    <textarea>\n      a\n    </textarea>\n    <textarea\n      default-value=\"b\"\n    >\n      a\n    </textarea>\n    <!--M_*1 #textarea/2-->\n    <textarea\n      default-value=\"b\"\n    >\n      a\n    </textarea>\n    <!--M_*1 #textarea/3-->\n    <textarea\n      default-value=\"b\"\n    >\n      a\n    </textarea>\n    <!--M_*1 #textarea/4-->\n    <textarea\n      default-value=\"b\"\n    >\n      a\n    </textarea>\n    <!--M_*1 #textarea/5-->\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/6-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #text in html/body/textarea2\nINSERT html/body/textarea2/#text\nREMOVE #text in html/body/textarea3\nINSERT html/body/textarea3/#text\nREMOVE #text in html/body/textarea4\nINSERT html/body/textarea4/#text\nREMOVE #text in html/body/textarea5\nINSERT html/body/textarea5/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-textarea-value-default-update/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<textarea>\n  a\n</textarea>\n<textarea>\n  a\n</textarea>\n<textarea>\n  a\n</textarea>\n<textarea>\n  a\n</textarea>\n<textarea>\n  a\n</textarea>\n<textarea>\n  a\n</textarea>\n<button>\n  Update\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-textarea-value-default-update/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <textarea>a</textarea><textarea>a</textarea><textarea>a</textarea><!--M_*1 #textarea/2--><textarea>a</textarea><!--M_*1 #textarea/3--><textarea>a</textarea><!--M_*1 #textarea/4--><textarea>a</textarea><!--M_*1 #textarea/5--><button>Update</button><!--M_*1 #button/6--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0]),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <textarea>\n      a\n    </textarea>\n    <textarea>\n      a\n    </textarea>\n    <textarea>\n      a\n    </textarea>\n    <!--M_*1 #textarea/2-->\n    <textarea>\n      a\n    </textarea>\n    <!--M_*1 #textarea/3-->\n    <textarea>\n      a\n    </textarea>\n    <!--M_*1 #textarea/4-->\n    <textarea>\n      a\n    </textarea>\n    <!--M_*1 #textarea/5-->\n    <button>\n      Update\n    </button>\n    <!--M_*1 #button/6-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/textarea0\nINSERT html/body/textarea0/#text\nINSERT html/body/textarea1\nINSERT html/body/textarea1/#text\nINSERT html/body/textarea2\nINSERT html/body/textarea2/#text\nINSERT html/body/#comment0\nINSERT html/body/textarea3\nINSERT html/body/textarea3/#text\nINSERT html/body/#comment1\nINSERT html/body/textarea4\nINSERT html/body/textarea4/#text\nINSERT html/body/#comment2\nINSERT html/body/textarea5\nINSERT html/body/textarea5/#text\nINSERT html/body/#comment3\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment4\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-textarea-value-default-update/template.marko",
    "content": "<let/value = \"a\"/>\n<textarea value=\"a\"/>\n<textarea>a</textarea>\n<textarea value=value/>\n<textarea>${value}</textarea>\n<textarea value=value valueChange=undefined/>\n<textarea valueChange=undefined>${value}</textarea>\n<button onClick() { value = \"b\" }>\n  Update\n</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/uncontrolled-textarea-value-default-update/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/unserializable-warning/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const Foo = {\n    content: _._content(\"__tests__/template.marko_1_content\", () => {\n      const $scope1_id = _._scope_id();\n      _._scope_reason();\n      const unserializable = {\n        nested: {\n          thing: Buffer.from(\"\")\n        }\n      };\n      const test = _._resume(function () {\n        return unserializable;\n      }, \"__tests__/template.marko_1/test\", $scope1_id);\n      _._script($scope1_id, \"__tests__/template.marko_1_test\");\n      _._scope($scope1_id, {\n        unserializable,\n        test\n      }, \"__tests__/template.marko\", \"1:2\", {\n        unserializable: \"2:10\",\n        test: \"7:10\"\n      });\n    })\n  };\n  Foo.content({});\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/unserializable-warning/__snapshots__/ssr-sanitized.expected.md",
    "content": "Unable to serialize \"unserializable\" in packages/runtime-tags/src/__tests__/fixtures/unserializable-warning/template.marko:2:10 (reading nested.thing)"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/unserializable-warning/__snapshots__/ssr.expected.md",
    "content": "Unable to serialize \"unserializable\" in packages/runtime-tags/src/__tests__/fixtures/unserializable-warning/template.marko:2:10 (reading nested.thing)"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/unserializable-warning/template.marko",
    "content": "<define/Foo>\n  <const/unserializable = {\n    nested: {\n      thing: Buffer.from(\"\")\n    }\n  }/>\n  <const/test() {\n    return unserializable;\n  }/>\n  <script>\n    test();\n  </script>\n</>\n\n<Foo/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/unserializable-warning/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  skip_dom: true,\n  error_runtime: true,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/unused-dynamic-tag-body-serialize-reason/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"o\",\n      \"$init\": \"t\",\n      \"$$Message_content__input_before__OR__input_after\": \"n\",\n      \"$$Message_content__input_before\": \"e\",\n      \"$$Message_content__input_after\": \"r\",\n      \"$$Wrap_content__dynamicTag\": \"a\",\n      \"$$Wrap_content__as__OR__onClick__OR__content\": \"m\",\n      \"$$Wrap_content__onClick\": \"_\",\n      \"$$x\": \"c\",\n      \"$$onClick\": \"s\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/unused-dynamic-tag-body-serialize-reason/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  helloworld\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/unused-dynamic-tag-body-serialize-reason/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<!---->\n<div>\n  <!---->\n  helloworld\n  <!---->\n</div>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, div, #comment2, #comment3\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/unused-dynamic-tag-body-serialize-reason/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 376 (min) 238 (brotli)\n_._resume_dynamic_tag();\n_._content_resume(\"a1\", \"<!> <!>\", \"b/ b&b\", ($scope) => {\n  ($Message_content__input_before($scope.a, \"hello\"),\n    $Message_content__input_after($scope.a, \"world\"));\n});\nconst $Message_content__input_before__OR__input_after = _._or(5, ($scope) =>\n    _._text($scope.a, $scope.d + $scope.e),\n  ),\n  $Message_content__input_before = _._const(\n    3,\n    $Message_content__input_before__OR__input_after,\n  ),\n  $Message_content__input_after = _._const(\n    4,\n    $Message_content__input_before__OR__input_after,\n  ),\n  $Wrap_content__dynamicTag = _._dynamic_tag(0),\n  $Wrap_content__as__OR__onClick__OR__content = _._or(\n    6,\n    ($scope) =>\n      $Wrap_content__dynamicTag($scope, $scope.d, () => ({\n        onClick: $scope.e,\n        content: $scope.f,\n      })),\n    2,\n  ),\n  $Wrap_content__onClick = _._const(\n    4,\n    $Wrap_content__as__OR__onClick__OR__content,\n  ),\n  $x = _._let(1, ($scope) =>\n    $Wrap_content__onClick($scope.a, $onClick($scope)),\n  );\nfunction $onClick($scope) {\n  return function () {\n    console.log($x($scope, $scope.b + 1) - 1);\n  };\n}\n(_._resume(\"a0\", $onClick), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/unused-dynamic-tag-body-serialize-reason/__snapshots__/dom.expected/template.js",
    "content": "const $Wrap_content__walks = /* over(1), replace, over(2) */\"b%c\",\n  $Wrap_content__template = \"<!><!><!>\",\n  $Message_content__walks = /* get, over(1) */\" b\",\n  $Message_content__template = \" \";\nexport const $template = `<!>${$Wrap_content__template}<!>`;\nexport const $walks = /* over(1), <Wrap>, over(1) */`b/${$Wrap_content__walks}&b`;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\n_._resume_dynamic_tag();\nconst $Wrap_content2__setup = $scope => {\n  $Message_content__input_before($scope[\"#childScope/0\"], \"hello\");\n  $Message_content__input_after($scope[\"#childScope/0\"], \"world\");\n};\nconst $Wrap_content2 = _._content_resume(\"__tests__/template.marko_3_content\", `<!>${$Message_content__template}<!>`, /* over(1), <Message>, over(1) */`b/${$Message_content__walks}&b`, $Wrap_content2__setup);\nconst $Message_content__input_before__OR__input_after = /* @__PURE__ */_._or(5, $scope => _._text($scope[\"#text/0\"], $scope.input_before + $scope.input_after));\nconst $Message_content__input_before = /* @__PURE__ */_._const(\"input_before\", $Message_content__input_before__OR__input_after);\nconst $Message_content__input_after = /* @__PURE__ */_._const(\"input_after\", $Message_content__input_before__OR__input_after);\nconst $Message_content__$params = ($scope, $params3) => $Message_content__input($scope, $params3[0]);\nconst $Message_content__input = ($scope, input) => {\n  $Message_content__input_before($scope, input.before);\n  $Message_content__input_after($scope, input.after);\n};\nconst $Wrap_content__dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\");\nconst $Wrap_content__as__OR__onClick__OR__content = /* @__PURE__ */_._or(6, $scope => $Wrap_content__dynamicTag($scope, $scope.as, () => ({\n  onClick: $scope.onClick,\n  content: $scope.content\n})), 2);\nconst $Wrap_content__as = /* @__PURE__ */_._const(\"as\", $Wrap_content__as__OR__onClick__OR__content);\nconst $Wrap_content__onClick = /* @__PURE__ */_._const(\"onClick\", $Wrap_content__as__OR__onClick__OR__content);\nconst $Wrap_content__content = /* @__PURE__ */_._const(\"content\", $Wrap_content__as__OR__onClick__OR__content);\nconst $Wrap_content__$params = ($scope, $params2) => $Wrap_content__$temp($scope, $params2?.[0]);\nconst $Wrap_content__$temp = ($scope, $temp) => {\n  $Wrap_content__as($scope, $temp.as);\n  $Wrap_content__onClick($scope, $temp.onClick);\n  $Wrap_content__content($scope, $temp.content);\n};\nconst $x = /* @__PURE__ */_._let(\"x/1\", $scope => $Wrap_content__onClick($scope[\"#childScope/0\"], $onClick($scope)));\nexport function $setup($scope) {\n  $Wrap_content__content($scope[\"#childScope/0\"], $Wrap_content2($scope));\n  $Wrap_content__as($scope[\"#childScope/0\"], \"div\");\n  $x($scope, 1);\n}\nfunction $onClick($scope) {\n  return function () {\n    console.log($x($scope, $scope.x + 1) - 1);\n  };\n}\n_._resume(\"__tests__/template.marko_0/onClick\", $onClick);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/unused-dynamic-tag-body-serialize-reason/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const Wrap = {\n    content: _._content(\"__tests__/template.marko_1_content\", ({\n      as,\n      onClick,\n      content\n    }) => {\n      const $scope1_id = _._scope_id();\n      const $scope1_reason = _._scope_reason();\n      _._dynamic_tag($scope1_id, \"#text/0\", as, {\n        onClick: onClick,\n        content: content\n      }, 0, 0, _._serialize_guard($scope1_reason, /* as, onClick, content */3));\n      _._serialize_if($scope1_reason, /* as, onClick, content */3) && _._scope($scope1_id, {\n        as: _._serialize_if($scope1_reason, /* onClick, content */2) && as,\n        onClick: _._serialize_if($scope1_reason, /* as, content */1) && onClick,\n        content: _._serialize_if($scope1_reason, /* as, onClick */0) && content\n      }, \"__tests__/template.marko\", \"1:1\", {\n        as: \"1:15\",\n        onClick: \"1:19\",\n        content: \"1:28\"\n      });\n    })\n  };\n  const Message = {\n    content: _._content(\"__tests__/template.marko_2_content\", input => {\n      const $scope2_id = _._scope_id();\n      const $scope2_reason = _._scope_reason();\n      _._html(`${_._escape(input.before + input.after)}${_._el_resume($scope2_id, \"#text/0\", _._serialize_guard($scope2_reason, /* input.before, input.after */0))}`);\n      _._serialize_if($scope2_reason, /* input.before, input.after */0) && _._scope($scope2_id, {\n        input_before: _._serialize_if($scope2_reason, /* input.after */2) && input.before,\n        input_after: _._serialize_if($scope2_reason, /* input.before */1) && input.after\n      }, \"__tests__/template.marko\", \"4:1\", {\n        input_before: [\"input.before\", \"4:16\"],\n        input_after: [\"input.after\", \"4:16\"]\n      });\n    })\n  };\n  let x = 1;\n  const $childScope = _._peek_scope_id();\n  _._set_serialize_reason({\n    /* as, onClick */0: /* x */1,\n    /* onClick, content */2: /* x */1,\n    /* as, onClick, content */3: /* x */1\n  });\n  Wrap.content({\n    as: \"div\",\n    onClick: _._resume(function () {\n      console.log(x++);\n    }, \"__tests__/template.marko_0/onClick\", $scope0_id),\n    content: _._content_resume(\"__tests__/template.marko_3_content\", () => {\n      _._scope_reason();\n      const $scope3_id = _._scope_id();\n      Message.content({\n        before: \"hello\",\n        after: \"world\"\n      });\n    }, $scope0_id)\n  });\n  _._scope($scope0_id, {\n    x,\n    \"#childScope/0\": _._existing_scope($childScope)\n  }, \"__tests__/template.marko\", 0, {\n    x: \"7:5\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/unused-dynamic-tag-body-serialize-reason/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<div>\n  helloworld\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/unused-dynamic-tag-body-serialize-reason/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--M_[-->\n      helloworld\n      <!--M_]3 #div/0 4-->\n    </div>\n    <!--M_'2 #text/0 3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.d = {\n        x: 1,\n        \"#childScope/0\": _.a = {\n          \"ConditionalRenderer:#text/0\": \"div\",\n          as: \"div\"\n        }\n      }, _.a,\n      {\n        \"EventAttributes:#div/0\": _.b = {},\n        \"ConditionalRenderer:#div/0\": \"__tests__/template.marko_3_content\",\n        \"#Renderer\": \"div\"\n      }], _.b.click = _._[\n        \"__tests__/template.marko_0/onClick\"\n        ](_.d), _.a.content = _._[\n        \"__tests__/template.marko_3_content\"\n        ](_.d), _.c), \"_dynamicTagScript 3\"];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/unused-dynamic-tag-body-serialize-reason/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  helloworld\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/unused-dynamic-tag-body-serialize-reason/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div><!--M_[-->helloworld<!--M_]3 #div/0 4--></div><!--M_'2 #text/0 3--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.d={x:1,\"#childScope/0\":_.a={\"ConditionalRenderer:#text/0\":\"div\",as:\"div\"}},_.a,{\"EventAttributes:#div/0\":_.b={},\"ConditionalRenderer:#div/0\":\"__tests__/template.marko_3_content\",\"#Renderer\":\"div\"}],_.b.click=_._[\"__tests__/template.marko_0/onClick\"](_.d),_.a.content=_._[\"__tests__/template.marko_3_content\"](_.d),_.c),\"_dynamicTagScript 3\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      <!--M_[-->\n      helloworld\n      <!--M_]3 #div/0 4-->\n    </div>\n    <!--M_'2 #text/0 3-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.d = {\n        x: 1,\n        \"#childScope/0\": _.a = {\n          \"ConditionalRenderer:#text/0\": \"div\",\n          as: \"div\"\n        }\n      }, _.a,\n      {\n        \"EventAttributes:#div/0\": _.b = {},\n        \"ConditionalRenderer:#div/0\": \"__tests__/template.marko_3_content\",\n        \"#Renderer\": \"div\"\n      }], _.b.click = _._[\n        \"__tests__/template.marko_0/onClick\"\n        ](_.d), _.a.content = _._[\n        \"__tests__/template.marko_3_content\"\n        ](_.d), _.c), \"_dynamicTagScript 3\"];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#comment0\nINSERT html/body/div/#text\nINSERT html/body/div/#comment1\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/unused-dynamic-tag-body-serialize-reason/template.marko",
    "content": "define/Wrap|{ as, onClick, content }|\n  ${as} onClick=onClick content=content\n\ndefine/Message|input|\n  -- ${input.before + input.after}\n\nlet/x=1\nWrap as=\"div\" onClick() { console.log(x++); }\n  Message before=\"hello\" after=\"world\"\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/unused-pattern-mutation-registered-function/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_2\": \"a\",\n      \"$init\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/unused-pattern-mutation-registered-function/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Click\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  bar\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/unused-pattern-mutation-registered-function/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  Click\n</button>\n```\n\n# Mutations\n```\nINSERT button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  bar\n</button>\n```\n\n# Mutations\n```\nREMOVE #text in button\nINSERT button/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/unused-pattern-mutation-registered-function/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 131 (min) 103 (brotli)\n(_2._script(\"a0\", ($scope) =>\n  _2._on($scope.a, \"click\", (_, el) => {\n    let bar;\n    var $result, value;\n    (($result = { value: \"updated\", bar: \"bar\" }),\n      ({ value: value, bar: bar } = $result),\n      (el.textContent = bar));\n  }),\n),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/unused-pattern-mutation-registered-function/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button>Click</button>\";\nexport const $walks = /* get, over(1) */\" b\";\nconst identity = fn => fn;\nimport * as _2 from \"@marko/runtime-tags/debug/dom\";\nconst $setup__script = _2._script(\"__tests__/template.marko_0\", $scope => _2._on($scope[\"#button/0\"], \"click\", identity((_, el) => {\n  let bar;\n  (($result, value) => ({\n    value,\n    bar\n  } = $result, $result))({\n    value: \"updated\",\n    bar: \"bar\"\n  });\n  el.textContent = bar;\n})));\nexport function $setup($scope) {\n  /* value */\"initial\";\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_2._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/unused-pattern-mutation-registered-function/__snapshots__/html.expected/template.js",
    "content": "const identity = fn => fn;\nimport * as _2 from \"@marko/runtime-tags/debug/html\";\nexport default _2._template(\"__tests__/template.marko\", input => {\n  _2._scope_reason();\n  const $scope0_id = _2._scope_id();\n  let value = \"initial\";\n  _2._html(`<button>Click</button>${_2._el_resume($scope0_id, \"#button/0\")}`);\n  _2._script($scope0_id, \"__tests__/template.marko_0\");\n  _2._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/unused-pattern-mutation-registered-function/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Click\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  bar\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/unused-pattern-mutation-registered-function/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Click\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      bar\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nREMOVE #text in html/body/button\nINSERT html/body/button/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/unused-pattern-mutation-registered-function/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  Click\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/unused-pattern-mutation-registered-function/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>Click</button><!--M_*1 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0]),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Click\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/unused-pattern-mutation-registered-function/template.marko",
    "content": "static const identity = fn => fn;\n<let/value=\"initial\">\n<button onClick=identity((_, el) => {\n  let bar;\n  ({ value, bar } = { value: \"updated\", bar: \"bar\" });\n  el.textContent = bar;\n})>\n  Click\n</button>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/unused-pattern-mutation-registered-function/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/unused-var-mutation-registered-function/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"m\",\n      \"$init\": \"o\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/unused-var-mutation-registered-function/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Click\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Click\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/unused-var-mutation-registered-function/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  Click\n</button>\n```\n\n# Mutations\n```\nINSERT button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Click\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/unused-var-mutation-registered-function/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 49 (min) 53 (brotli)\n(_._script(\"a0\", ($scope) => _._on($scope.a, \"click\", () => {})), init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/unused-var-mutation-registered-function/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button>Click</button>\";\nexport const $walks = /* get, over(1) */\" b\";\nconst identity = fn => fn;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => _._on($scope[\"#button/0\"], \"click\", identity(() => {\n  /* value */\"updated\";\n})));\nexport function $setup($scope) {\n  /* value */\"initial\";\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/unused-var-mutation-registered-function/__snapshots__/html.expected/template.js",
    "content": "const identity = fn => fn;\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let value = \"initial\";\n  _._html(`<button>Click</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/unused-var-mutation-registered-function/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Click\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Click\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/unused-var-mutation-registered-function/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Click\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Click\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/unused-var-mutation-registered-function/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  Click\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/unused-var-mutation-registered-function/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>Click</button><!--M_*1 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0]),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Click\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/unused-var-mutation-registered-function/template.marko",
    "content": "static const identity = fn => fn;\n<let/value=\"initial\">\n<button onClick=identity(() => {\n  value = \"updated\";\n})>\n  Click\n</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/unused-var-mutation-registered-function/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-attr/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-attr/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"value\":1}`\n\n```html\n<div\n  a=\"0\"\n  b=\"1\"\n/>\n```\n\n\n# Render `{\"value\":\"1\"}`\n\n```html\n<div\n  a=\"0\"\n  b=\"1\"\n/>\n```\n\n\n# Render `{\"value\":\"2\"}`\n\n```html\n<div\n  a=\"0\"\n  b=\"2\"\n/>\n```\n\n\n# Render `{\"value\":null}`\n\n```html\n<div\n  a=\"0\"\n/>\n```\n\n\n# Render `{\"value\":\"1\"}`\n\n```html\n<div\n  a=\"0\"\n  b=\"1\"\n/>\n```\n\n\n# Render `{\"value\":false}`\n\n```html\n<div\n  a=\"0\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-attr/__snapshots__/csr.expected.md",
    "content": "# Render `{\"value\":1}`\n\n```html\n<div\n  a=\"0\"\n  b=\"1\"\n/>\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render `{\"value\":\"1\"}`\n\n```html\n<div\n  a=\"0\"\n  b=\"1\"\n/>\n```\n\n\n# Render `{\"value\":\"2\"}`\n\n```html\n<div\n  a=\"0\"\n  b=\"2\"\n/>\n```\n\n# Mutations\n```\nUPDATE div[b] \"1\" => \"2\"\n```\n\n# Render `{\"value\":null}`\n\n```html\n<div\n  a=\"0\"\n/>\n```\n\n# Mutations\n```\nUPDATE div[b] \"2\" => null\n```\n\n# Render `{\"value\":\"1\"}`\n\n```html\n<div\n  a=\"0\"\n  b=\"1\"\n/>\n```\n\n# Mutations\n```\nUPDATE div[b] null => \"1\"\n```\n\n# Render `{\"value\":false}`\n\n```html\n<div\n  a=\"0\"\n/>\n```\n\n# Mutations\n```\nUPDATE div[b] \"1\" => null\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-attr/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-attr/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div a=0></div>\";\nexport const $walks = /* get, over(1) */\" b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $input_value = ($scope, input_value) => _._attr($scope[\"#div/0\"], \"b\", input_value);\nexport const $input = ($scope, input) => $input_value($scope, input.value);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-attr/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(`<div a=0${_._attr(\"b\", input.value)}></div>${_._el_resume($scope0_id, \"#div/0\", _._serialize_guard($scope0_reason, /* input.value */0))}`);\n  _._serialize_if($scope0_reason, /* input.value */0) && _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-attr/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"value\":1}`\n\n```html\n<div\n  a=\"0\"\n  b=\"1\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-attr/__snapshots__/resume.expected.md",
    "content": "# Render `{\"value\":1}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div\n      a=\"0\"\n      b=\"1\"\n    />\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-attr/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div\n  a=\"0\"\n  b=\"1\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-attr/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div a=0 b=1></div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div\n      a=\"0\"\n      b=\"1\"\n    />\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-attr/template.marko",
    "content": "<div a=0 b=input.value/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-attr/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [\n    {\n      value: 1,\n    },\n    {\n      value: \"1\",\n    },\n    {\n      value: \"2\",\n    },\n    {\n      value: null,\n    },\n    {\n      value: \"1\",\n    },\n    {\n      value: false,\n    },\n  ],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-dynamic-attrs/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-dynamic-attrs/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"value\":{\"a\":1,\"b\":2}}`\n\n```html\n<div\n  a=\"1\"\n  b=\"2\"\n/>\n<div\n  a=\"1\"\n  b=\"2\"\n/>\n<div\n  a=\"0\"\n  b=\"2\"\n/>\n```\n\n\n# Render `{\"value\":{\"b\":2,\"c\":3}}`\n\n```html\n<div\n  b=\"2\"\n  c=\"3\"\n/>\n<div\n  a=\"0\"\n  b=\"2\"\n  c=\"3\"\n/>\n<div\n  a=\"0\"\n  b=\"2\"\n  c=\"3\"\n/>\n```\n\n\n# Render `{\"value\":{}}`\n\n```html\n<div />\n<div\n  a=\"0\"\n/>\n<div\n  a=\"0\"\n/>\n```\n\n\n# Render `{\"value\":null}`\n\n```html\n<div />\n<div\n  a=\"0\"\n/>\n<div\n  a=\"0\"\n/>\n```\n\n\n# Render `{\"value\":{\"a\":1}}`\n\n```html\n<div\n  a=\"1\"\n/>\n<div\n  a=\"1\"\n/>\n<div\n  a=\"0\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-dynamic-attrs/__snapshots__/csr.expected.md",
    "content": "# Render `{\"value\":{\"a\":1,\"b\":2}}`\n\n```html\n<div\n  a=\"1\"\n  b=\"2\"\n/>\n<div\n  a=\"1\"\n  b=\"2\"\n/>\n<div\n  a=\"0\"\n  b=\"2\"\n/>\n```\n\n# Mutations\n```\nINSERT div0, div1, div2\n```\n\n# Render `{\"value\":{\"b\":2,\"c\":3}}`\n\n```html\n<div\n  b=\"2\"\n  c=\"3\"\n/>\n<div\n  a=\"0\"\n  b=\"2\"\n  c=\"3\"\n/>\n<div\n  a=\"0\"\n  b=\"2\"\n  c=\"3\"\n/>\n```\n\n# Mutations\n```\nUPDATE div0[a] \"1\" => null\nUPDATE div0[c] null => \"3\"\nUPDATE div2[c] null => \"3\"\nUPDATE div1[a] \"1\" => \"0\"\nUPDATE div1[c] null => \"3\"\n```\n\n# Render `{\"value\":{}}`\n\n```html\n<div />\n<div\n  a=\"0\"\n/>\n<div\n  a=\"0\"\n/>\n```\n\n# Mutations\n```\nUPDATE div0[c] \"3\" => null\nUPDATE div0[b] \"2\" => null\nUPDATE div2[c] \"3\" => null\nUPDATE div2[b] \"2\" => null\nUPDATE div1[c] \"3\" => null\nUPDATE div1[b] \"2\" => null\n```\n\n# Render `{\"value\":null}`\n\n```html\n<div />\n<div\n  a=\"0\"\n/>\n<div\n  a=\"0\"\n/>\n```\n\n\n# Render `{\"value\":{\"a\":1}}`\n\n```html\n<div\n  a=\"1\"\n/>\n<div\n  a=\"1\"\n/>\n<div\n  a=\"0\"\n/>\n```\n\n# Mutations\n```\nUPDATE div0[a] null => \"1\"\nUPDATE div1[a] \"0\" => \"1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-dynamic-attrs/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 113 (min) 71 (brotli)\n(_._script(\"a0\", ($scope) => _._attrs_script($scope, \"b\")),\n  _._script(\"a1\", ($scope) => {\n    (_._attrs_script($scope, \"a\"), _._attrs_script($scope, \"c\"));\n  }),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-dynamic-attrs/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div></div><div></div><div></div>\";\nexport const $walks = /* get, over(1), get, over(1), get, over(1) */\" b b b\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $input_value__OR__a__script = _._script(\"__tests__/template.marko_0_input_value_a\", $scope => _._attrs_script($scope, \"#div/1\"));\nconst $input_value__OR__a = /* @__PURE__ */_._or(7, $scope => {\n  _._attrs_content($scope, \"#div/1\", {\n    a: $scope.a,\n    ...$scope.input_value\n  });\n  $input_value__OR__a__script($scope);\n});\nconst $a = /* @__PURE__ */_._let(\"a/6\", $scope => {\n  _._attr($scope[\"#div/2\"], \"a\", $scope.a);\n  $input_value__OR__a($scope);\n});\nexport function $setup($scope) {\n  $a($scope, 0);\n}\nconst $input_value__script = _._script(\"__tests__/template.marko_0_input_value\", $scope => {\n  _._attrs_script($scope, \"#div/0\");\n  _._attrs_script($scope, \"#div/2\");\n});\nexport const $input_value = /* @__PURE__ */_._const(\"input_value\", $scope => {\n  _._attrs_content($scope, \"#div/0\", $scope.input_value);\n  _._attrs_partial_content($scope, \"#div/2\", $scope.input_value, {\n    a: 1\n  });\n  $input_value__OR__a($scope);\n  $input_value__script($scope);\n});\nexport const $input = ($scope, input) => $input_value($scope, input.value);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-dynamic-attrs/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let a = 0;\n  _._html(\"<div\");\n  _._attrs_content(input.value, \"#div/0\", $scope0_id, \"div\");\n  _._html(`</div>${_._el_resume($scope0_id, \"#div/0\")}<div`);\n  _._attrs_content({\n    a: a,\n    ...input.value\n  }, \"#div/1\", $scope0_id, \"div\");\n  _._html(`</div>${_._el_resume($scope0_id, \"#div/1\")}<div${_._attr(\"a\", a)}`);\n  _._attrs_partial_content(input.value, {\n    a: 1\n  }, \"#div/2\", $scope0_id, \"div\");\n  _._html(`</div>${_._el_resume($scope0_id, \"#div/2\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_input_value_a\");\n  _._script($scope0_id, \"__tests__/template.marko_0_input_value\");\n  _._scope($scope0_id, {\n    input_value: input.value,\n    a\n  }, \"__tests__/template.marko\", 0, {\n    input_value: [\"input.value\"],\n    a: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-dynamic-attrs/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"value\":{\"a\":1,\"b\":2}}`\n\n```html\n<div\n  a=\"1\"\n  b=\"2\"\n/>\n<div\n  a=\"1\"\n  b=\"2\"\n/>\n<div\n  a=\"0\"\n  b=\"2\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-dynamic-attrs/__snapshots__/resume.expected.md",
    "content": "# Render `{\"value\":{\"a\":1,\"b\":2}}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div\n      a=\"1\"\n      b=\"2\"\n    />\n    <!--M_*1 #div/0-->\n    <div\n      a=\"1\"\n      b=\"2\"\n    />\n    <!--M_*1 #div/1-->\n    <div\n      a=\"0\"\n      b=\"2\"\n    />\n    <!--M_*1 #div/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          input_value:\n          {\n            a: 1,\n            b: 2\n          },\n          a: 0\n        }]),\n        \"__tests__/template.marko_0_input_value_a 1 __tests__/template.marko_0_input_value 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-dynamic-attrs/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div\n  a=\"1\"\n  b=\"2\"\n/>\n<div\n  a=\"1\"\n  b=\"2\"\n/>\n<div\n  a=\"0\"\n  b=\"2\"\n/>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-dynamic-attrs/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div a=1 b=2></div><!--M_*1 #div/0--><div a=1 b=2></div><!--M_*1 #div/1--><div a=0 b=2></div><!--M_*1 #div/2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{input_value:{a:1,b:2},a:0}]),\"__tests__/template.marko_0_input_value_a 1 __tests__/template.marko_0_input_value 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div\n      a=\"1\"\n      b=\"2\"\n    />\n    <!--M_*1 #div/0-->\n    <div\n      a=\"1\"\n      b=\"2\"\n    />\n    <!--M_*1 #div/1-->\n    <div\n      a=\"0\"\n      b=\"2\"\n    />\n    <!--M_*1 #div/2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          input_value:\n          {\n            a: 1,\n            b: 2\n          },\n          a: 0\n        }]),\n        \"__tests__/template.marko_0_input_value_a 1 __tests__/template.marko_0_input_value 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div0\nINSERT html/body/#comment0\nINSERT html/body/div1\nINSERT html/body/#comment1\nINSERT html/body/div2\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-dynamic-attrs/template.marko",
    "content": "<let/a = 0/>\n<div ...input.value/>\n<div a=a ...input.value/>\n<div ...input.value a=a/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-dynamic-attrs/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [\n    {\n      value: { a: 1, b: 2 },\n    },\n    {\n      value: { b: 2, c: 3 },\n    },\n    {\n      value: {},\n    },\n    {\n      value: null,\n    },\n    {\n      value: { a: 1 },\n    },\n  ],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-html/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-html/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"value\":\"Hello <strong>World</strong>\"}`\n\n```html\n<em>\n  Testing\n</em>\nHello\n<strong>\n  World\n</strong>\n```\n\n\n# Render `{\"value\":\"Some content\"}`\n\n```html\n<em>\n  Testing\n</em>\nSome content\n```\n\n\n# Render `{\"value\":\"<div/>\"}`\n\n```html\n<em>\n  Testing\n</em>\n<div />\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-html/__snapshots__/csr.expected.md",
    "content": "# Render `{\"value\":\"Hello <strong>World</strong>\"}`\n\n```html\n<em>\n  Testing\n</em>\nHello\n<strong>\n  World\n</strong>\n```\n\n# Mutations\n```\nINSERT em, #text0, #text1, strong\n```\n\n# Render `{\"value\":\"Some content\"}`\n\n```html\n<em>\n  Testing\n</em>\nSome content\n```\n\n# Mutations\n```\nINSERT #text1\nREMOVE #text after #text1\nREMOVE strong after #text1\n```\n\n# Render `{\"value\":\"<div/>\"}`\n\n```html\n<em>\n  Testing\n</em>\n<div />\n```\n\n# Mutations\n```\nINSERT div\nREMOVE #text after div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-html/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-html/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<em>Testing</em> <!>\";\nexport const $walks = /* over(2), replace, over(1) */\"c%b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $value = ($scope, value) => _._html($scope, value, \"#text/0\");\nexport const $input = ($scope, input) => $value($scope, input.value);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-html/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    value\n  } = input;\n  _._html(`<em>Testing</em> ${_._sep(_._serialize_guard($scope0_reason, /* input.value */0))}${_._unescaped(value)}${_._el_resume($scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.value */0))}`);\n  _._serialize_if($scope0_reason, /* input.value */0) && _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-html/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"value\":\"Hello <strong>World</strong>\"}`\n\n```html\n<em>\n  Testing\n</em>\nHello\n<strong>\n  World\n</strong>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-html/__snapshots__/resume.expected.md",
    "content": "# Render `{\"value\":\"Hello <strong>World</strong>\"}`\n\n```html\n<html>\n  <head />\n  <body>\n    <em>\n      Testing\n    </em>\n     Hello \n    <strong>\n      World\n    </strong>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-html/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<em>\n  Testing\n</em>\nHello\n<strong>\n  World\n</strong>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-html/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <em>Testing</em> Hello <strong>World</strong>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <em>\n      Testing\n    </em>\n     Hello \n    <strong>\n      World\n    </strong>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/em\nINSERT html/body/em/#text\nINSERT html/body/#text\nINSERT html/body/strong\nINSERT html/body/strong/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-html/template.marko",
    "content": "<attrs/{ value }/>\n<em>Testing</em> $!{value}"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-html/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [\n    {\n      value: \"Hello <strong>World</strong>\",\n    },\n    {\n      value: \"Some content\",\n    },\n    {\n      value: \"<div/>\",\n    },\n  ],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-text/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-text/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"value\":\"Dynamic 1\"}`\n\n```html\nStatic Dynamic 1\n```\n\n\n# Render `{\"value\":\"Dynamic 2\"}`\n\n```html\nStatic Dynamic 2\n```\n\n\n# Render `{\"value\":\"Dynamic 3\"}`\n\n```html\nStatic Dynamic 3\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-text/__snapshots__/csr.expected.md",
    "content": "# Render `{\"value\":\"Dynamic 1\"}`\n\n```html\nStatic Dynamic 1\n```\n\n# Mutations\n```\nINSERT #text0, #text1\n```\n\n# Render `{\"value\":\"Dynamic 2\"}`\n\n```html\nStatic Dynamic 2\n```\n\n# Mutations\n```\nUPDATE #text1 \"Dynamic 1\" => \"Dynamic 2\"\n```\n\n# Render `{\"value\":\"Dynamic 3\"}`\n\n```html\nStatic Dynamic 3\n```\n\n# Mutations\n```\nUPDATE #text1 \"Dynamic 2\" => \"Dynamic 3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-text/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-text/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"Static <!>\";\nexport const $walks = /* over(1), replace, over(1) */\"b%b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport const $value = ($scope, value) => _._text($scope[\"#text/0\"], value);\nexport const $input = ($scope, input) => $value($scope, input.value);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-text/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const {\n    value\n  } = input;\n  _._html(`Static ${_._sep(_._serialize_guard($scope0_reason, /* input.value */0))}${_._escape(value)}${_._el_resume($scope0_id, \"#text/0\", _._serialize_guard($scope0_reason, /* input.value */0))}`);\n  _._serialize_if($scope0_reason, /* input.value */0) && _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-text/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"value\":\"Dynamic 1\"}`\n\n```html\nStatic Dynamic 1\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-text/__snapshots__/resume.expected.md",
    "content": "# Render `{\"value\":\"Dynamic 1\"}`\n\n```html\n<html>\n  <head />\n  <body>\n    Static Dynamic 1\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-text/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\nStatic Dynamic 1\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-text/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  Static Dynamic 1\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    Static Dynamic 1\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-text/template.marko",
    "content": "<attrs/{ value }/>\n-- Static ${value}"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/update-text/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nexport const config: TestConfig = {\n  steps: [\n    {\n      value: \"Dynamic 1\",\n    },\n    {\n      value: \"Dynamic 2\",\n    },\n    {\n      value: \"Dynamic 3\",\n    },\n  ],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/used-var-mutation-registered-function/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"m\",\n      \"$$value\": \"o\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/used-var-mutation-registered-function/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Click initial\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Click updated\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/used-var-mutation-registered-function/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  Click initial\n</button>\n```\n\n# Mutations\n```\nINSERT button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Click updated\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text1 \"initial\" => \"updated\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/used-var-mutation-registered-function/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 101 (min) 93 (brotli)\nconst $value = _._let(2, ($scope) => _._text($scope.b, $scope.c));\n(_._script(\"a0\", ($scope) =>\n  _._on($scope.a, \"click\", () => {\n    $value($scope, \"updated\");\n  }),\n),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/used-var-mutation-registered-function/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button>Click <!></button>\";\nexport const $walks = /* get, next(1), over(1), replace, out(1) */\" Db%l\";\nconst identity = fn => fn;\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $value = /* @__PURE__ */_._let(\"value/2\", $scope => _._text($scope[\"#text/1\"], $scope.value));\nconst $setup__script = _._script(\"__tests__/template.marko_0\", $scope => _._on($scope[\"#button/0\"], \"click\", identity(() => {\n  $value($scope, \"updated\");\n})));\nexport function $setup($scope) {\n  $value($scope, \"initial\");\n  $setup__script($scope);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/used-var-mutation-registered-function/__snapshots__/html.expected/template.js",
    "content": "const identity = fn => fn;\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let value = \"initial\";\n  _._html(`<button>Click <!>${_._escape(value)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0\");\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/used-var-mutation-registered-function/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<button>\n  Click initial\n</button>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  Click updated\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/used-var-mutation-registered-function/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Click \n      <!---->\n      initial\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Click \n      <!---->\n      updated\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text1 \"initial\" => \"updated\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/used-var-mutation-registered-function/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<button>\n  Click initial\n</button>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/used-var-mutation-registered-function/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <button>Click <!>initial<!--M_*1 #text/1--></button><!--M_*1 #button/0--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0]),\"__tests__/template.marko_0 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Click \n      <!---->\n      initial\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0]),\n        \"__tests__/template.marko_0 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text0\nINSERT html/body/button/#comment0\nINSERT html/body/button/#text1\nINSERT html/body/button/#comment1\nINSERT html/body/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/used-var-mutation-registered-function/template.marko",
    "content": "static const identity = fn => fn;\n<let/value=\"initial\">\n<button onClick=identity(() => {\n  value = \"updated\";\n})>\n  Click ${value}\n</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/used-var-mutation-registered-function/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const config: TestConfig = {\n  steps: [{}, click],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/user-effect-abort-signal/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {\n      \"$_\": \"t\",\n      \"$init\": \"o\",\n      \"$$a\": \"m\",\n      \"$$b\": \"r\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/user-effect-abort-signal/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render `{\"value\":0}`\n\n```html\n<div>\n  0 0\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div>\n  1 0\n</div>\n```\n\n\n# Render `{\"value\":1}`\n\n```html\n<div>\n  1 0\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div>\n  2 1\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/user-effect-abort-signal/__snapshots__/csr.expected.md",
    "content": "# Render `{\"value\":0}`\n\n```html\n<div>\n  0 0\n</div>\n```\n\n# Mutations\n```\nINSERT div\n```\n\n# Render ASYNC\n```html\n<div>\n  1 0\n</div>\n```\n\n# Mutations\n```\nUPDATE div/#text0 \"0\" => \"1\"\n```\n\n# Render `{\"value\":1}`\n\n```html\n<div>\n  1 0\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div>\n  2 1\n</div>\n```\n\n# Mutations\n```\nUPDATE div/#text0 \"1\" => \"2\"\nUPDATE div/#text2 \"0\" => \"1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/user-effect-abort-signal/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 150 (min) 119 (brotli)\nconst $a = _._let(5, ($scope) => _._text($scope.a, $scope.f)),\n  $b = _._let(6, ($scope) => _._text($scope.b, $scope.g));\n(_._script(\"a0\", ($scope) => {\n  {\n    const previousValue = $a($scope, $scope.e + 1);\n    _.$signal($scope, 0).onabort = () => $b($scope, previousValue);\n  }\n}),\n  init());\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/user-effect-abort-signal/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<div><!> <!></div>\";\nexport const $walks = /* next(1), replace, over(2), replace, out(1) */\"D%c%l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $a = /* @__PURE__ */_._let(\"a/5\", $scope => _._text($scope[\"#text/0\"], $scope.a));\nconst $b = /* @__PURE__ */_._let(\"b/6\", $scope => _._text($scope[\"#text/1\"], $scope.b));\nexport function $setup($scope) {\n  $a($scope, 0);\n  $b($scope, 0);\n}\nconst $input_value__script = _._script(\"__tests__/template.marko_0_input_value\", $scope => {\n  {\n    const previousValue = $a($scope, $scope.input_value + 1);\n    _.$signal($scope, 0).onabort = () => $b($scope, previousValue);\n  }\n});\nexport const $input_value = /* @__PURE__ */_._const(\"input_value\", $scope => {\n  _.$signalReset($scope, 0);\n  $input_value__script($scope);\n});\nexport const $input = ($scope, input) => $input_value($scope, input.value);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/user-effect-abort-signal/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let a = 0;\n  let b = 0;\n  _._html(`<div>${_._escape(a)}${_._el_resume($scope0_id, \"#text/0\")} <!>${_._escape(b)}${_._el_resume($scope0_id, \"#text/1\")}</div>`);\n  _._script($scope0_id, \"__tests__/template.marko_0_input_value\");\n  _._scope($scope0_id, {\n    input_value: input.value\n  }, \"__tests__/template.marko\", 0, {\n    input_value: [\"input.value\"]\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/user-effect-abort-signal/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render `{\"value\":0}`\n\n```html\n<div>\n  0 0\n</div>\n```\n\n\n# Render ASYNC\n```html\n<div>\n  1 0\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/user-effect-abort-signal/__snapshots__/resume.expected.md",
    "content": "# Render `{\"value\":0}`\n\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      0\n      <!--M_*1 #text/0-->\n       \n      <!---->\n      0\n      <!--M_*1 #text/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          input_value: 0\n        }]),\n        \"__tests__/template.marko_0_input_value 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n\n# Render ASYNC\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      1\n      <!--M_*1 #text/0-->\n       \n      <!---->\n      0\n      <!--M_*1 #text/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          input_value: 0\n        }]),\n        \"__tests__/template.marko_0_input_value 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/#text0 \"0\" => \"1\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/user-effect-abort-signal/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<div>\n  0 0\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/user-effect-abort-signal/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <div>0<!--M_*1 #text/0--> <!>0<!--M_*1 #text/1--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{input_value:0}]),\"__tests__/template.marko_0_input_value 1\"];M._.w()</script>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <div>\n      0\n      <!--M_*1 #text/0-->\n       \n      <!---->\n      0\n      <!--M_*1 #text/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n        {\n          input_value: 0\n        }]),\n        \"__tests__/template.marko_0_input_value 1\"\n      ];\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/div\nINSERT html/body/div/#text0\nINSERT html/body/div/#comment0\nINSERT html/body/div/#text1\nINSERT html/body/div/#comment1\nINSERT html/body/div/#text2\nINSERT html/body/div/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/user-effect-abort-signal/template.marko",
    "content": "<let/a = 0/>\n<let/b = 0/>\n<div>${a} ${b}</div>\n<script>\n  const previousValue = a = input.value + 1;\n  $signal.onabort = () => b = previousValue;\n</script>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/user-effect-abort-signal/test.ts",
    "content": "import type { TestConfig } from \"../../main.test\";\nimport { wait } from \"../../utils/resolve\";\n\nexport const config: TestConfig = {\n  steps: [{ value: 0 }, wait, { value: 1 }, wait],\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/walk-over-child/__snapshots__/.name-cache.json",
    "content": "{\n  \"vars\": {\n    \"props\": {}\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/walk-over-child/__snapshots__/csr-sanitized.expected.md",
    "content": "# Render\n```html\n<section>\n  <span>\n    Hello\n  </span>\n</section>\n<div>\n  0\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/walk-over-child/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<section>\n  <span>\n    Hello\n  </span>\n</section>\n<div>\n  0\n</div>\n```\n\n# Mutations\n```\nINSERT section, div\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/walk-over-child/__snapshots__/dom.expected/tags/child.js",
    "content": "export const $template = \"<span>Hello</span>\";\nexport const $walks = /* over(1) */\"b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/tags/child.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/walk-over-child/__snapshots__/dom.expected/template.hydrate.js",
    "content": "// size: 0\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/walk-over-child/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<section>${_child_template}</section><div> </div>`;\nexport const $walks = /* next(1), <child>, out(1), next(1), get, out(1) */`D/${_child_walks}&lD l`;\nimport { $setup as _child, $template as _child_template, $walks as _child_walks } from \"./tags/child.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $count = /* @__PURE__ */_._let(\"count/2\", $scope => _._text($scope[\"#text/1\"], $scope.count));\nexport function $setup($scope) {\n  _child($scope[\"#childScope/0\"]);\n  $count($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/walk-over-child/__snapshots__/html.expected/tags/child.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/child.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<span>Hello</span>\");\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/walk-over-child/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nimport _child from \"./tags/child.marko\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let count = 0;\n  _._html(\"<section>\");\n  _child({});\n  _._html(`</section><div>${_._escape(count)}</div>`);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/walk-over-child/__snapshots__/resume-sanitized.expected.md",
    "content": "# Render\n```html\n<section>\n  <span>\n    Hello\n  </span>\n</section>\n<div>\n  0\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/walk-over-child/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <section>\n      <span>\n        Hello\n      </span>\n    </section>\n    <div>\n      0\n    </div>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/walk-over-child/__snapshots__/ssr-sanitized.expected.md",
    "content": "# Render End\n```html\n<section>\n  <span>\n    Hello\n  </span>\n</section>\n<div>\n  0\n</div>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/walk-over-child/__snapshots__/ssr.expected.md",
    "content": "# Write\n```html\n  <section><span>Hello</span></section><div>0</div>\n```\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <section>\n      <span>\n        Hello\n      </span>\n    </section>\n    <div>\n      0\n    </div>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/section\nINSERT html/body/section/span\nINSERT html/body/section/span/#text\nINSERT html/body/div\nINSERT html/body/div/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/walk-over-child/tags/child.marko",
    "content": "<span>Hello</span>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures/walk-over-child/template.marko",
    "content": "<let/count=0/>\n<section><child/></section>\n<div>${count}</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/ambiguous/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<h1>\n  Hello world\n</h1>\n```\n\n# Mutations\n```\nINSERT #text0, h1, #text1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/ambiguous/__snapshots__/dom.expected/template.hydrate.js",
    "content": ""
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/ambiguous/__snapshots__/dom.expected/template.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.be(\"h1\", null, \"0\", _component, null, 0);\n  out.t(\"Hello world\", _component);\n  out.ee();\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/ambiguous/__snapshots__/html.expected/template.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<h1>\");\n  out.w(\"Hello world\");\n  out.w(\"</h1>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/ambiguous/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <h1>\n      Hello world\n    </h1>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/ambiguous/__snapshots__/ssr.expected.md",
    "content": "# Write\n  <h1>Hello world</h1>\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <h1>\n      Hello world\n    </h1>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/h1\nINSERT html/body/h1/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/ambiguous/template.marko",
    "content": "<h1>Hello world</h1>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/ambiguous-tags-and-components-dir/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<h1>\n  Hello tags\n</h1>\n<h1>\n  Hello components\n</h1>\n```\n\n# Mutations\n```\nINSERT #text0, #text1, #text2, h10, #text3, #text4, #text5, h11, #text6, #text7\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/ambiguous-tags-and-components-dir/__snapshots__/dom.expected/components/hello-components.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/components/hello-components.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.be(\"h1\", null, \"0\", _component, null, 0);\n  out.t(\"Hello components\", _component);\n  out.ee();\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/ambiguous-tags-and-components-dir/__snapshots__/dom.expected/tags/hello-tags.js",
    "content": "export const $template = \"<h1>Hello tags</h1>\";\nexport const $walks = /* over(1) */\"b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/tags/hello-tags.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/ambiguous-tags-and-components-dir/__snapshots__/dom.expected/template.hydrate.js",
    "content": "import init6 from \"virtual:./template.marko.hydrate-6.js import \\\"./tags/hello-tags.marko\\\";\\nexport default () => {};\";\nimport init5 from \"virtual:./template.marko.hydrate-5.js export default () => {};\";\ninit6();\ninit5();"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/ambiguous-tags-and-components-dir/__snapshots__/dom.expected/template.js",
    "content": "import \"marko/src/runtime/helpers/tags-compat/dom-debug.mjs\";\nimport { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _helloTags from \"./tags/hello-tags.marko\";\nimport _marko_dynamic_tag from \"marko/src/runtime/helpers/dynamic-tag.js\";\nimport _helloComponents from \"./components/hello-components.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_dynamic_tag(out, _helloTags, null, null, null, null, _componentDef, \"0\");\n  _marko_tag(_helloComponents, {}, out, _componentDef, \"1\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/ambiguous-tags-and-components-dir/__snapshots__/html.expected/components/hello-components.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/components/hello-components.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<h1>\");\n  out.w(\"Hello components\");\n  out.w(\"</h1>\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/ambiguous-tags-and-components-dir/__snapshots__/html.expected/tags/hello-tags.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/hello-tags.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<h1>Hello tags</h1>\");\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/ambiguous-tags-and-components-dir/__snapshots__/html.expected/template.js",
    "content": "import \"marko/src/runtime/helpers/tags-compat/html-debug.mjs\";\nimport { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _helloTags from \"./tags/hello-tags.marko\";\nimport _marko_dynamic_tag from \"marko/src/runtime/helpers/dynamic-tag.js\";\nimport _helloComponents from \"./components/hello-components.marko\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_dynamic_tag(out, _helloTags, null, null, null, null, _componentDef, \"0\");\n  _marko_tag(_helloComponents, {}, out, _componentDef, \"1\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/ambiguous-tags-and-components-dir/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <h1>\n      Hello tags\n    </h1>\n    <h1>\n      Hello components\n    </h1>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/ambiguous-tags-and-components-dir/__snapshots__/ssr.expected.md",
    "content": "# Write\n  <h1>Hello tags</h1><h1>Hello components</h1>\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <h1>\n      Hello tags\n    </h1>\n    <h1>\n      Hello components\n    </h1>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/h10\nINSERT html/body/h10/#text\nINSERT html/body/h11\nINSERT html/body/h11/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/ambiguous-tags-and-components-dir/components/hello-components.marko",
    "content": "<h1>Hello components</h1>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/ambiguous-tags-and-components-dir/tags/hello-tags.marko",
    "content": "<h1>Hello tags</h1>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/ambiguous-tags-and-components-dir/template.marko",
    "content": "<hello-tags/>\n<hello-components/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/ambiguous-tags-dir/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<h1>\n  Hello world\n</h1>\n```\n\n# Mutations\n```\nINSERT h1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/ambiguous-tags-dir/__snapshots__/dom.expected/tags/hello.js",
    "content": "export const $template = \"<h1>Hello world</h1>\";\nexport const $walks = /* over(1) */\"b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/tags/hello.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/ambiguous-tags-dir/__snapshots__/dom.expected/template.hydrate.js",
    "content": "import \"./template.marko\";\nimport \"./tags/hello.marko\";"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/ambiguous-tags-dir/__snapshots__/dom.expected/template.js",
    "content": "export const $template = _hello_template;\nexport const $walks = /* <hello> */`/${_hello_walks}&`;\nimport { $setup as _hello, $template as _hello_template, $walks as _hello_walks } from \"./tags/hello.marko\";\nexport function $setup($scope) {\n  _hello($scope[\"#childScope/0\"]);\n}\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/ambiguous-tags-dir/__snapshots__/html.expected/tags/hello.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/hello.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<h1>Hello world</h1>\");\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/ambiguous-tags-dir/__snapshots__/html.expected/template.js",
    "content": "import _hello from \"./tags/hello.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _hello({});\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/ambiguous-tags-dir/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <h1>\n      Hello world\n    </h1>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/ambiguous-tags-dir/__snapshots__/ssr.expected.md",
    "content": "# Write\n  <h1>Hello world</h1>\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <h1>\n      Hello world\n    </h1>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/h1\nINSERT html/body/h1/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/ambiguous-tags-dir/tags/hello.marko",
    "content": "<h1>Hello world</h1>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/ambiguous-tags-dir/template.marko",
    "content": "<hello/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/class/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n# Mutations\n```\nINSERT #text0, button, #text1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/class/__snapshots__/dom.expected/template.hydrate.js",
    "content": "import { init } from \"marko/src/runtime/components/index.js\";\nimport \"./template.marko\";\ninit();"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/class/__snapshots__/dom.expected/template.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {\n  onCreate() {\n    this.state = {\n      count: 0\n    };\n  },\n  increment() {\n    this.state.count++;\n  }\n};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.be(\"button\", null, \"0\", _component, null, 0, {\n    \"onclick\": _componentDef.d(\"click\", \"increment\", false)\n  });\n  out.t(state.count, _component);\n  out.ee();\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/class/__snapshots__/html.expected/template.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { x as _marko_escapeXml } from \"marko/src/runtime/html/helpers/escape-xml.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {\n  onCreate() {\n    this.state = {\n      count: 0\n    };\n  },\n  increment() {\n    this.state.count++;\n  }\n};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<button>\");\n  out.w(_marko_escapeXml(state.count));\n  out.w(\"</button>\");\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/class/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <!--M#s0-->\n    <button>\n      0\n    </button>\n    <!--M/-->\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/class/__snapshots__/ssr.expected.md",
    "content": "# Write\n  <!--M#s0--><button>0</button><!--M/-->\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <!--M#s0-->\n    <button>\n      0\n    </button>\n    <!--M/-->\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#comment0\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/class/template.marko",
    "content": "class {\n  onCreate() {\n    this.state = { count: 0 };\n  }\n  increment() {\n    this.state.count++;\n  }\n}\n<button onClick(\"increment\")>\n  ${state.count}\n</button>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/custom-tag-parameters-from-args/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button\n  class=\"inc\"\n>\n  1,10\n</button>\n<div>\n  Counts: 1,10\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT #text0, #text1, #text2, button, #text3, #text6, #comment, #text7, #text8, #text9\nINSERT #text4\nINSERT #text5\nINSERT div\nINSERT div/#text0\nINSERT div/#text1\nINSERT div/#text2\nINSERT div/#text3\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  2,11\n</button>\n<div>\n  Counts: 2,11\n</div>\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text0 \"1\" => \"2\"\nUPDATE button/#text2 \"10\" => \"11\"\nUPDATE div/#text1 \"1\" => \"2\"\nUPDATE div/#text3 \"10\" => \"11\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  3,12\n</button>\n<div>\n  Counts: 3,12\n</div>\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text0 \"2\" => \"3\"\nUPDATE button/#text2 \"11\" => \"12\"\nUPDATE div/#text1 \"2\" => \"3\"\nUPDATE div/#text3 \"11\" => \"12\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button\n  class=\"inc\"\n>\n  4,13\n</button>\n<div>\n  Counts: 4,13\n</div>\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text0 \"3\" => \"4\"\nUPDATE button/#text2 \"12\" => \"13\"\nUPDATE div/#text1 \"3\" => \"4\"\nUPDATE div/#text3 \"12\" => \"13\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/custom-tag-parameters-from-args/__snapshots__/dom.expected/components/custom-tag.js",
    "content": "export const $template = \"<button class=inc><!>,<!></button><!><!>\";\nexport const $walks = /* get, next(1), replace, over(2), replace, out(1), replace, over(2) */\" D%c%l%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $x__OR__y__script = _._script(\"__tests__/components/custom-tag.marko_0_x_y\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $x($scope, $scope.x + 1);\n  $y($scope, $scope.y + 1);\n}));\nconst $x__OR__y = /* @__PURE__ */_._or(9, $x__OR__y__script);\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/3\", 0, 0, 1);\nconst $input_content__OR__x__OR__y = /* @__PURE__ */_._or(10, $scope => $dynamicTag($scope, $scope.input_content, () => [$scope.x, $scope.y]), 2);\nconst $x = /* @__PURE__ */_._let(\"x/7\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.x);\n  $x__OR__y($scope);\n  $input_content__OR__x__OR__y($scope);\n});\nconst $y = /* @__PURE__ */_._let(\"y/8\", $scope => {\n  _._text($scope[\"#text/2\"], $scope.y);\n  $x__OR__y($scope);\n  $input_content__OR__x__OR__y($scope);\n});\nexport function $setup($scope) {\n  $x($scope, 1);\n  $y($scope, 10);\n}\nexport const $input_content = /* @__PURE__ */_._const(\"input_content\", $input_content__OR__x__OR__y);\nexport const $input = ($scope, input) => $input_content($scope, input.content);\nexport default /* @__PURE__ */_._template(\"__tests__/components/custom-tag.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/custom-tag-parameters-from-args/__snapshots__/dom.expected/template.js",
    "content": "import \"marko/src/runtime/helpers/tags-compat/dom-debug.mjs\";\nimport { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _customTag from \"./components/custom-tag.marko\";\nimport _marko_dynamic_tag from \"marko/src/runtime/helpers/dynamic-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_dynamic_tag(out, _customTag, null, (out, count, count2) => {\n    out.be(\"div\", null, \"1\", _component, null, 0);\n    out.t(\"Counts: \", _component);\n    out.t(count, _component);\n    out.t(\",\", _component);\n    out.t(count2, _component);\n    out.ee();\n  }, null, null, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/custom-tag-parameters-from-args/__snapshots__/html.expected/components/custom-tag.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/components/custom-tag.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let x = 1;\n  let y = 10;\n  _._html(`<button class=inc>${_._escape(x)}${_._el_resume($scope0_id, \"#text/1\")},<!>${_._escape(y)}${_._el_resume($scope0_id, \"#text/2\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._dynamic_tag($scope0_id, \"#text/3\", input.content, [x, y], 0, 1);\n  _._script($scope0_id, \"__tests__/components/custom-tag.marko_0_x_y\");\n  _._scope($scope0_id, {\n    input_content: input.content,\n    x,\n    y\n  }, \"__tests__/components/custom-tag.marko\", 0, {\n    input_content: [\"input.content\"],\n    x: \"1:6\",\n    y: \"2:6\"\n  });\n  _._resume_branch($scope0_id);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/custom-tag-parameters-from-args/__snapshots__/html.expected/template.js",
    "content": "import \"marko/src/runtime/helpers/tags-compat/html-debug.mjs\";\nimport { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { x as _marko_escapeXml } from \"marko/src/runtime/html/helpers/escape-xml.js\";\nimport _customTag from \"./components/custom-tag.marko\";\nimport _marko_dynamic_tag from \"marko/src/runtime/helpers/dynamic-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_dynamic_tag(out, _customTag, null, (out, count, count2) => {\n    out.w(\"<div>\");\n    out.w(\"Counts: \");\n    out.w(_marko_escapeXml(count));\n    out.w(\",\");\n    out.w(_marko_escapeXml(count2));\n    out.w(\"</div>\");\n  }, null, null, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/custom-tag-parameters-from-args/__snapshots__/ssr.expected.md",
    "content": "# Write\n  <button class=inc>1<!--Ms*1 #text/1-->,<!>10<!--Ms*1 #text/2--></button><!--Ms*1 #button/0--><!--Ms[--><div>Counts: 1,10</div><!--Ms]1 #text/3 2--><script>WALKER_RUNTIME(\"M\")(\"s\");M.s.r=[_=>(_.a=[0,{\"ConditionalRenderer:#text/3\":_._.$compat_renderBody,input_content:_._.$compat_renderBody,x:1,y:10}]),\"__tests__/components/custom-tag.marko_0_x_y 1\"];M.s.w()</script>\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button\n      class=\"inc\"\n    >\n      1\n      <!--Ms*1 #text/1-->\n      ,\n      <!---->\n      10\n      <!--Ms*1 #text/2-->\n    </button>\n    <!--Ms*1 #button/0-->\n    <!--Ms[-->\n    <div>\n      Counts: 1,10\n    </div>\n    <!--Ms]1 #text/3 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"s\");\n      M.s.r = [_ =&gt; (_.a = [0,\n        {\n          \"ConditionalRenderer:#text/3\": _._.$compat_renderBody,\n          input_content: _._.$compat_renderBody,\n          x: 1,\n          y: 10\n        }]),\n        \"__tests__/components/custom-tag.marko_0_x_y 1\"\n      ];\n      M.s.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button\nINSERT html/body/button/#text0\nINSERT html/body/button/#comment0\nINSERT html/body/button/#text1\nINSERT html/body/button/#comment1\nINSERT html/body/button/#text2\nINSERT html/body/button/#comment2\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/#comment2\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/custom-tag-parameters-from-args/components/custom-tag.marko",
    "content": "<let/x = 1/>\n<let/y = 10/>\n<button.inc onClick() { x++; y++ }>\n  ${x},${y}\n</button>\n\n<${input.content}(x, y)/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/custom-tag-parameters-from-args/template.marko",
    "content": "<custom-tag|count, count2|>\n  <div>Counts: ${count},${count2}</div>\n</custom-tag>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/custom-tag-parameters-from-args/test.ts",
    "content": "export const skip_resume = true;\nexport const steps = [{}, click, click, click];\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/error-class-tags-dir/__snapshots__/dom.expected/tags/hello.error.txt",
    "content": "Cannot mix Tags API and Class API features in the same file:\n\nTemplate file within a tags directory at packages/runtime-tags/src/__tests__/fixtures-interop/error-class-tags-dir/tags/hello.marko:\n\n\n<class> tag at packages/runtime-tags/src/__tests__/fixtures-interop/error-class-tags-dir/tags/hello.marko(1,1):\n> 1 | class {}\n    | ^^^^^\n  2 |\n  3 | <h1>Hello world</h1>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/error-class-tags-dir/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nimport _hello from \"./tags/hello.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\");\nexport function $setup($scope) {\n  $dynamicTag($scope, _hello);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/error-class-tags-dir/__snapshots__/html.expected/tags/hello.error.txt",
    "content": "Cannot mix Tags API and Class API features in the same file:\n\nTemplate file within a tags directory at packages/runtime-tags/src/__tests__/fixtures-interop/error-class-tags-dir/tags/hello.marko:\n\n\n<class> tag at packages/runtime-tags/src/__tests__/fixtures-interop/error-class-tags-dir/tags/hello.marko(1,1):\n> 1 | class {}\n    | ^^^^^\n  2 |\n  3 | <h1>Hello world</h1>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/error-class-tags-dir/__snapshots__/html.expected/template.js",
    "content": "import _hello from \"./tags/hello.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._dynamic_tag($scope0_id, \"#text/0\", _hello, {}, 0, 0, 0);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/error-class-tags-dir/tags/hello.marko",
    "content": "class {}\n\n<h1>Hello world</h1>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/error-class-tags-dir/template.marko",
    "content": "<hello/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/error-class-tags-dir/test.ts",
    "content": "export const error_compiler = [\"tags/hello.marko\"];\nexport const skip_csr = true;\nexport const skip_ssr = true;\nexport const skip_resume = true;\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/explicit/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<h1>\n  Hello world\n</h1>\n```\n\n# Mutations\n```\nINSERT h1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/explicit/__snapshots__/dom.expected/template.hydrate.js",
    "content": "import \"./template.marko\";"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/explicit/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<h1>Hello world</h1>\";\nexport const $walks = /* over(1) */\"b\";\nexport const $setup = () => {};\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/explicit/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._html(\"<h1>Hello world</h1>\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/explicit/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <h1>\n      Hello world\n    </h1>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/explicit/__snapshots__/ssr.expected.md",
    "content": "# Write\n  <h1>Hello world</h1>\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <h1>\n      Hello world\n    </h1>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/h1\nINSERT html/body/h1/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/explicit/template.marko",
    "content": "<!-- use tags -->\n<h1>Hello world</h1>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-basic-class-to-tags/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button\n  id=\"class\"\n>\n  0\n</button>\n<button\n  data-parent=\"0\"\n  id=\"tags\"\n>\n  0\n</button>\n```\n\n# Mutations\n```\nINSERT #text0, button0, #text1, #text2, button1, #text3, #text4, #text5\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<button\n  id=\"class\"\n>\n  0\n</button>\n<button\n  data-parent=\"0\"\n  id=\"tags\"\n>\n  1\n</button>\n```\n\n# Mutations\n```\nUPDATE button1/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#class\").click();\n```\n```html\n<button\n  id=\"class\"\n>\n  1\n</button>\n<button\n  data-parent=\"1\"\n  id=\"tags\"\n>\n  1\n</button>\n```\n\n# Mutations\n```\nUPDATE button1[data-parent] \"0\" => \"1\"\nUPDATE button0/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<button\n  id=\"class\"\n>\n  1\n</button>\n<button\n  data-parent=\"1\"\n  id=\"tags\"\n>\n  2\n</button>\n```\n\n# Mutations\n```\nUPDATE button1/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#class\").click();\n```\n```html\n<button\n  id=\"class\"\n>\n  2\n</button>\n<button\n  data-parent=\"2\"\n  id=\"tags\"\n>\n  2\n</button>\n```\n\n# Mutations\n```\nUPDATE button1[data-parent] \"1\" => \"2\"\nUPDATE button0/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<button\n  id=\"class\"\n>\n  2\n</button>\n<button\n  data-parent=\"2\"\n  id=\"tags\"\n>\n  3\n</button>\n```\n\n# Mutations\n```\nUPDATE button1/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-basic-class-to-tags/__snapshots__/dom.expected/components/tags-counter.js",
    "content": "export const $template = \"<button id=tags> </button>\";\nexport const $walks = /* get, next(1), get, out(1) */\" D l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $count__script = _._script(\"__tests__/components/tags-counter.marko_0_count\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $count($scope, $scope.count + 1);\n}));\nconst $count = /* @__PURE__ */_._let(\"count/5\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.count);\n  $count__script($scope);\n});\nexport function $setup($scope) {\n  $count($scope, 0);\n}\nexport const $input_count = ($scope, input_count) => _._attr($scope[\"#button/0\"], \"data-parent\", input_count);\nexport const $input = ($scope, input) => $input_count($scope, input.count);\nexport default /* @__PURE__ */_._template(\"__tests__/components/tags-counter.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-basic-class-to-tags/__snapshots__/dom.expected/template.hydrate.js",
    "content": "import { init } from \"marko/src/runtime/components/index.js\";\nimport \"./template.marko\";\ninit();"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-basic-class-to-tags/__snapshots__/dom.expected/template.js",
    "content": "import \"marko/src/runtime/helpers/tags-compat/dom-debug.mjs\";\nimport { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _tagsCounter from \"./components/tags-counter.marko\";\nimport _marko_dynamic_tag from \"marko/src/runtime/helpers/dynamic-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {\n  onCreate() {\n    this.state = {\n      count: 0\n    };\n  },\n  increment() {\n    this.state.count++;\n  }\n};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.be(\"button\", {\n    \"id\": \"class\"\n  }, \"0\", _component, null, 1, {\n    \"onclick\": _componentDef.d(\"click\", \"increment\", false)\n  });\n  out.t(state.count, _component);\n  out.ee();\n  _marko_dynamic_tag(out, _tagsCounter, () => ({\n    \"count\": state.count\n  }), null, null, null, _componentDef, \"1\");\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-basic-class-to-tags/__snapshots__/html.expected/components/tags-counter.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/components/tags-counter.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let count = 0;\n  _._html(`<button id=tags${_._attr(\"data-parent\", input.count)}>${_._escape(count)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/components/tags-counter.marko_0_count\");\n  _._scope($scope0_id, {\n    count\n  }, \"__tests__/components/tags-counter.marko\", 0, {\n    count: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-basic-class-to-tags/__snapshots__/html.expected/template.js",
    "content": "import \"marko/src/runtime/helpers/tags-compat/html-debug.mjs\";\nimport { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { x as _marko_escapeXml } from \"marko/src/runtime/html/helpers/escape-xml.js\";\nimport _tagsCounter from \"./components/tags-counter.marko\";\nimport _marko_dynamic_tag from \"marko/src/runtime/helpers/dynamic-tag.js\";\nimport _initComponents from \"marko/src/core-tags/components/init-components-tag.js\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {\n  onCreate() {\n    this.state = {\n      count: 0\n    };\n  },\n  increment() {\n    this.state.count++;\n  }\n};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<button id=class>\");\n  out.w(_marko_escapeXml(state.count));\n  out.w(\"</button>\");\n  _marko_dynamic_tag(out, _tagsCounter, () => ({\n    \"count\": state.count\n  }), null, null, null, _componentDef, \"1\");\n  _marko_tag(_initComponents, {}, out, _componentDef, \"2\");\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-basic-class-to-tags/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"class\"\n    >\n      0\n    </button>\n    <button\n      data-parent=\"0\"\n      id=\"tags\"\n    >\n      0\n      <!--Ms*1 #text/1-->\n    </button>\n    <!--Ms*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"s\");\n      M.s.r = [_ =&gt; (_.a = [0,\n        {\n          m5c: \"s0-1\",\n          count: 0\n        }]),\n        \"$compat_setScope 1 __tests__/components/tags-counter.marko_0_count 1\"\n      ];\n      M.s.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"w\": [\n          [\"s0\", 0,\n          {},\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/template.marko\"\n        ]\n      })\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text0\nINSERT html/body/#text5\nREMOVE #comment before html/body/#text0\nREMOVE #comment after html/body/#text5\nINSERT html/body/#text1\nINSERT html/body/#text4\nINSERT html/body/#text2\nINSERT html/body/#text3\nREMOVE #comment after html/body/#text2\nREMOVE #comment after html/body/#comment\nREMOVE html/body/#text4 after html/body/#text3\nINSERT html/body/#text4\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"class\"\n    >\n      0\n    </button>\n    <button\n      data-parent=\"0\"\n      id=\"tags\"\n    >\n      1\n      <!--Ms*1 #text/1-->\n    </button>\n    <!--Ms*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"s\");\n      M.s.r = [_ =&gt; (_.a = [0,\n        {\n          m5c: \"s0-1\",\n          count: 0\n        }]),\n        \"$compat_setScope 1 __tests__/components/tags-counter.marko_0_count 1\"\n      ];\n      M.s.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"w\": [\n          [\"s0\", 0,\n          {},\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/template.marko\"\n        ]\n      })\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button1/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#class\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"class\"\n    >\n      1\n    </button>\n    <button\n      data-parent=\"1\"\n      id=\"tags\"\n    >\n      1\n      <!--Ms*1 #text/1-->\n    </button>\n    <!--Ms*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"s\");\n      M.s.r = [_ =&gt; (_.a = [0,\n        {\n          m5c: \"s0-1\",\n          count: 0\n        }]),\n        \"$compat_setScope 1 __tests__/components/tags-counter.marko_0_count 1\"\n      ];\n      M.s.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"w\": [\n          [\"s0\", 0,\n          {},\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/template.marko\"\n        ]\n      })\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button1[data-parent] \"0\" => \"1\"\nUPDATE html/body/button0/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"class\"\n    >\n      1\n    </button>\n    <button\n      data-parent=\"1\"\n      id=\"tags\"\n    >\n      2\n      <!--Ms*1 #text/1-->\n    </button>\n    <!--Ms*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"s\");\n      M.s.r = [_ =&gt; (_.a = [0,\n        {\n          m5c: \"s0-1\",\n          count: 0\n        }]),\n        \"$compat_setScope 1 __tests__/components/tags-counter.marko_0_count 1\"\n      ];\n      M.s.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"w\": [\n          [\"s0\", 0,\n          {},\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/template.marko\"\n        ]\n      })\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button1/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#class\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"class\"\n    >\n      2\n    </button>\n    <button\n      data-parent=\"2\"\n      id=\"tags\"\n    >\n      2\n      <!--Ms*1 #text/1-->\n    </button>\n    <!--Ms*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"s\");\n      M.s.r = [_ =&gt; (_.a = [0,\n        {\n          m5c: \"s0-1\",\n          count: 0\n        }]),\n        \"$compat_setScope 1 __tests__/components/tags-counter.marko_0_count 1\"\n      ];\n      M.s.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"w\": [\n          [\"s0\", 0,\n          {},\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/template.marko\"\n        ]\n      })\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button1[data-parent] \"1\" => \"2\"\nUPDATE html/body/button0/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"class\"\n    >\n      2\n    </button>\n    <button\n      data-parent=\"2\"\n      id=\"tags\"\n    >\n      3\n      <!--Ms*1 #text/1-->\n    </button>\n    <!--Ms*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"s\");\n      M.s.r = [_ =&gt; (_.a = [0,\n        {\n          m5c: \"s0-1\",\n          count: 0\n        }]),\n        \"$compat_setScope 1 __tests__/components/tags-counter.marko_0_count 1\"\n      ];\n      M.s.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"w\": [\n          [\"s0\", 0,\n          {},\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/template.marko\"\n        ]\n      })\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button1/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-basic-class-to-tags/__snapshots__/ssr.expected.md",
    "content": "# Write\n  <!--M#s0--><button id=class>0</button><!--F#1--><button id=tags data-parent=0>0<!--Ms*1 #text/1--></button><!--Ms*1 #button/0--><!--F/--><!--M/--><script>WALKER_RUNTIME(\"M\")(\"s\");M.s.r=[_=>(_.a=[0,{m5c:\"s0-1\",count:0}]),\"$compat_setScope 1 __tests__/components/tags-counter.marko_0_count 1\"];M.s.w();$MC=(window.$MC||[]).concat({\"w\":[[\"s0\",0,{},{\"f\":1}]],\"t\":[\"__tests__/template.marko\"]})</script>\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <!--M#s0-->\n    <button\n      id=\"class\"\n    >\n      0\n    </button>\n    <!--F#1-->\n    <button\n      data-parent=\"0\"\n      id=\"tags\"\n    >\n      0\n      <!--Ms*1 #text/1-->\n    </button>\n    <!--Ms*1 #button/0-->\n    <!--F/-->\n    <!--M/-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"s\");\n      M.s.r = [_ =&gt; (_.a = [0,\n        {\n          m5c: \"s0-1\",\n          count: 0\n        }]),\n        \"$compat_setScope 1 __tests__/components/tags-counter.marko_0_count 1\"\n      ];\n      M.s.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"w\": [\n          [\"s0\", 0,\n          {},\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/template.marko\"\n        ]\n      })\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#comment0\nINSERT html/body/button0\nINSERT html/body/button0/#text\nINSERT html/body/#comment1\nINSERT html/body/button1\nINSERT html/body/button1/#text\nINSERT html/body/button1/#comment\nINSERT html/body/#comment2\nINSERT html/body/#comment3\nINSERT html/body/#comment4\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-basic-class-to-tags/components/tags-counter.marko",
    "content": "<let/count = 0/>\n<button id=\"tags\" data-parent=input.count onClick() { count++ }>\n  ${count}\n</button>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-basic-class-to-tags/template.marko",
    "content": "class {\n  onCreate() {\n    this.state = { count: 0 };\n  }\n  increment() {\n    this.state.count++;\n  }\n}\n<button id=\"class\" onClick(\"increment\")>\n  ${state.count}\n</button>\n<tags-counter count=state.count/>\n<init-components/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-basic-class-to-tags/test.ts",
    "content": "export const steps = [\n  {},\n  clickTags,\n  clickClass,\n  clickTags,\n  clickClass,\n  clickTags,\n];\n\nfunction clickClass(container: Element) {\n  (container.querySelector(\"#class\") as HTMLButtonElement).click();\n}\n\nfunction clickTags(container: Element) {\n  (container.querySelector(\"#tags\") as HTMLButtonElement).click();\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-basic-tags-to-class/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button\n  id=\"tags\"\n>\n  0\n</button>\n<button\n  data-parent=\"0\"\n  id=\"class\"\n>\n  0\n</button>\n<!---->\n```\n\n# Mutations\n```\nINSERT button0, #text0, #text1, #comment\nINSERT button1\nINSERT button1/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<button\n  id=\"tags\"\n>\n  1\n</button>\n<button\n  data-parent=\"1\"\n  id=\"class\"\n>\n  0\n</button>\n<!---->\n```\n\n# Mutations\n```\nUPDATE button0/#text \"0\" => \"1\"\nUPDATE button1[data-parent] \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#class\").click();\n```\n```html\n<button\n  id=\"tags\"\n>\n  1\n</button>\n<button\n  data-parent=\"1\"\n  id=\"class\"\n>\n  1\n</button>\n<!---->\n```\n\n# Mutations\n```\nUPDATE button1/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<button\n  id=\"tags\"\n>\n  2\n</button>\n<button\n  data-parent=\"2\"\n  id=\"class\"\n>\n  1\n</button>\n<!---->\n```\n\n# Mutations\n```\nUPDATE button0/#text \"1\" => \"2\"\nUPDATE button1[data-parent] \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#class\").click();\n```\n```html\n<button\n  id=\"tags\"\n>\n  2\n</button>\n<button\n  data-parent=\"2\"\n  id=\"class\"\n>\n  2\n</button>\n<!---->\n```\n\n# Mutations\n```\nUPDATE button1/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<button\n  id=\"tags\"\n>\n  3\n</button>\n<button\n  data-parent=\"3\"\n  id=\"class\"\n>\n  2\n</button>\n<!---->\n```\n\n# Mutations\n```\nUPDATE button0/#text \"2\" => \"3\"\nUPDATE button1[data-parent] \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-basic-tags-to-class/__snapshots__/dom.expected/components/class-counter.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/components/class-counter.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {\n  onCreate() {\n    this.state = {\n      count: 0\n    };\n  },\n  increment() {\n    this.state.count++;\n  }\n};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.be(\"button\", {\n    \"id\": \"class\",\n    \"data-parent\": input.count\n  }, \"0\", _component, null, 0, {\n    \"onclick\": _componentDef.d(\"click\", \"increment\", false)\n  });\n  out.t(state.count, _component);\n  out.ee();\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-basic-tags-to-class/__snapshots__/dom.expected/template.hydrate.js",
    "content": "import init6 from \"virtual:./template.marko.hydrate-6.js import { init } from \\\"@marko/runtime-tags/debug/dom\\\";\\nimport \\\"./template.marko\\\";\\nexport default () => init();\";\nimport init5 from \"virtual:./template.marko.hydrate-5.js import { init } from \\\"marko/src/runtime/components/index.js\\\";\\nimport \\\"./components/class-counter.marko\\\";\\nexport default () => init();\";\ninit6();\ninit5();"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-basic-tags-to-class/__snapshots__/dom.expected/template.js",
    "content": "import \"marko/src/runtime/helpers/tags-compat/dom-debug.mjs\";\nexport const $template = \"<button id=tags> </button><!><!>\";\nexport const $walks = /* get, next(1), get, out(1), replace, over(2) */\" D l%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport _classCounter from \"./components/class-counter.marko\";\n_._resume(\"__tests__/components/class-counter.marko\", _classCounter);\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/2\");\nconst $count__script = _._script(\"__tests__/template.marko_0_count\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $count($scope, $scope.count + 1);\n}));\nconst $count = /* @__PURE__ */_._let(\"count/3\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.count);\n  $dynamicTag($scope, _classCounter, () => ({\n    count: $scope.count\n  }));\n  $count__script($scope);\n});\nexport function $setup($scope) {\n  $count($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-basic-tags-to-class/__snapshots__/html.expected/components/class-counter.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/components/class-counter.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { x as _marko_escapeXml } from \"marko/src/runtime/html/helpers/escape-xml.js\";\nimport _marko_attr from \"marko/src/runtime/html/helpers/attr.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {\n  onCreate() {\n    this.state = {\n      count: 0\n    };\n  },\n  increment() {\n    this.state.count++;\n  }\n};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`<button id=class${_marko_attr(\"data-parent\", input.count)}>`);\n  out.w(_marko_escapeXml(state.count));\n  out.w(\"</button>\");\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-basic-tags-to-class/__snapshots__/html.expected/template.js",
    "content": "import { s as _s } from \"marko/src/runtime/helpers/tags-compat/html-debug.mjs\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nimport _classCounter from \"./components/class-counter.marko\";\n_s(_classCounter, \"__tests__/components/class-counter.marko\");\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let count = 0;\n  _._html(`<button id=tags>${_._escape(count)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._dynamic_tag($scope0_id, \"#text/2\", _classCounter, {\n    count: count\n  });\n  _._script($scope0_id, \"__tests__/template.marko_0_count\");\n  _._scope($scope0_id, {\n    count\n  }, \"__tests__/template.marko\", 0, {\n    count: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-basic-tags-to-class/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"tags\"\n    >\n      0\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <button\n      data-parent=\"0\"\n      id=\"class\"\n    >\n      0\n    </button>\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n        \"ConditionalRenderer:#text/2\": _._[\n          \"__tests__/components/class-counter.marko\"\n          ],\n        count: 0\n      },\n      {\n        m5c: \"_0\",\n        m5i:\n        {\n          count: 0\n        }\n      }], _.a[\"ConditionalRenderer:#text/2\"] = _._.$compat_renderer(_.a[\n        \"ConditionalRenderer:#text/2\"]), _.b)];\n      M._.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"p\": \"_\",\n        \"w\": [\n          [\"_0\", 0, 2,\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/components/class-counter.marko\"\n        ]\n      });\n      M._.r.push(\n        \"$compat_setScope 2 __tests__/template.marko_0_count 1\"\n        );\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text2\nINSERT html/body/#text0\nINSERT html/body/#text1\nREMOVE #comment after html/body/#comment1\nREMOVE #comment after html/body/#text1\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"tags\"\n    >\n      1\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <button\n      data-parent=\"1\"\n      id=\"class\"\n    >\n      0\n    </button>\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n        \"ConditionalRenderer:#text/2\": _._[\n          \"__tests__/components/class-counter.marko\"\n          ],\n        count: 0\n      },\n      {\n        m5c: \"_0\",\n        m5i:\n        {\n          count: 0\n        }\n      }], _.a[\"ConditionalRenderer:#text/2\"] = _._.$compat_renderer(_.a[\n        \"ConditionalRenderer:#text/2\"]), _.b)];\n      M._.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"p\": \"_\",\n        \"w\": [\n          [\"_0\", 0, 2,\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/components/class-counter.marko\"\n        ]\n      });\n      M._.r.push(\n        \"$compat_setScope 2 __tests__/template.marko_0_count 1\"\n        );\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button0/#text \"0\" => \"1\"\nUPDATE html/body/button1[data-parent] \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#class\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"tags\"\n    >\n      1\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <button\n      data-parent=\"1\"\n      id=\"class\"\n    >\n      1\n    </button>\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n        \"ConditionalRenderer:#text/2\": _._[\n          \"__tests__/components/class-counter.marko\"\n          ],\n        count: 0\n      },\n      {\n        m5c: \"_0\",\n        m5i:\n        {\n          count: 0\n        }\n      }], _.a[\"ConditionalRenderer:#text/2\"] = _._.$compat_renderer(_.a[\n        \"ConditionalRenderer:#text/2\"]), _.b)];\n      M._.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"p\": \"_\",\n        \"w\": [\n          [\"_0\", 0, 2,\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/components/class-counter.marko\"\n        ]\n      });\n      M._.r.push(\n        \"$compat_setScope 2 __tests__/template.marko_0_count 1\"\n        );\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button1/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"tags\"\n    >\n      2\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <button\n      data-parent=\"2\"\n      id=\"class\"\n    >\n      1\n    </button>\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n        \"ConditionalRenderer:#text/2\": _._[\n          \"__tests__/components/class-counter.marko\"\n          ],\n        count: 0\n      },\n      {\n        m5c: \"_0\",\n        m5i:\n        {\n          count: 0\n        }\n      }], _.a[\"ConditionalRenderer:#text/2\"] = _._.$compat_renderer(_.a[\n        \"ConditionalRenderer:#text/2\"]), _.b)];\n      M._.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"p\": \"_\",\n        \"w\": [\n          [\"_0\", 0, 2,\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/components/class-counter.marko\"\n        ]\n      });\n      M._.r.push(\n        \"$compat_setScope 2 __tests__/template.marko_0_count 1\"\n        );\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button0/#text \"1\" => \"2\"\nUPDATE html/body/button1[data-parent] \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#class\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"tags\"\n    >\n      2\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <button\n      data-parent=\"2\"\n      id=\"class\"\n    >\n      2\n    </button>\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n        \"ConditionalRenderer:#text/2\": _._[\n          \"__tests__/components/class-counter.marko\"\n          ],\n        count: 0\n      },\n      {\n        m5c: \"_0\",\n        m5i:\n        {\n          count: 0\n        }\n      }], _.a[\"ConditionalRenderer:#text/2\"] = _._.$compat_renderer(_.a[\n        \"ConditionalRenderer:#text/2\"]), _.b)];\n      M._.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"p\": \"_\",\n        \"w\": [\n          [\"_0\", 0, 2,\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/components/class-counter.marko\"\n        ]\n      });\n      M._.r.push(\n        \"$compat_setScope 2 __tests__/template.marko_0_count 1\"\n        );\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button1/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"tags\"\n    >\n      3\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <button\n      data-parent=\"3\"\n      id=\"class\"\n    >\n      2\n    </button>\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n        \"ConditionalRenderer:#text/2\": _._[\n          \"__tests__/components/class-counter.marko\"\n          ],\n        count: 0\n      },\n      {\n        m5c: \"_0\",\n        m5i:\n        {\n          count: 0\n        }\n      }], _.a[\"ConditionalRenderer:#text/2\"] = _._.$compat_renderer(_.a[\n        \"ConditionalRenderer:#text/2\"]), _.b)];\n      M._.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"p\": \"_\",\n        \"w\": [\n          [\"_0\", 0, 2,\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/components/class-counter.marko\"\n        ]\n      });\n      M._.r.push(\n        \"$compat_setScope 2 __tests__/template.marko_0_count 1\"\n        );\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button0/#text \"2\" => \"3\"\nUPDATE html/body/button1[data-parent] \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-basic-tags-to-class/__snapshots__/ssr.expected.md",
    "content": "# Write\n  <button id=tags>0<!--M_*1 #text/1--></button><!--M_*1 #button/0--><!--M_[--><!--M#_0--><button id=class data-parent=0>0</button><!--M/--><!--M_]1 #text/2 2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,_.a={\"ConditionalRenderer:#text/2\":_._[\"__tests__/components/class-counter.marko\"],count:0},{m5c:\"_0\",m5i:{count:0}}],_.a[\"ConditionalRenderer:#text/2\"]=_._.$compat_renderer(_.a[\"ConditionalRenderer:#text/2\"]),_.b)];M._.w();$MC=(window.$MC||[]).concat({\"p\":\"_\",\"w\":[[\"_0\",0,2,{\"f\":1}]],\"t\":[\"__tests__/components/class-counter.marko\"]});M._.r.push(\"$compat_setScope 2 __tests__/template.marko_0_count 1\");M._.w()</script>\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"tags\"\n    >\n      0\n      <!--M_*1 #text/1-->\n    </button>\n    <!--M_*1 #button/0-->\n    <!--M_[-->\n    <!--M#_0-->\n    <button\n      data-parent=\"0\"\n      id=\"class\"\n    >\n      0\n    </button>\n    <!--M/-->\n    <!--M_]1 #text/2 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, _.a = {\n        \"ConditionalRenderer:#text/2\": _._[\n          \"__tests__/components/class-counter.marko\"\n          ],\n        count: 0\n      },\n      {\n        m5c: \"_0\",\n        m5i:\n        {\n          count: 0\n        }\n      }], _.a[\"ConditionalRenderer:#text/2\"] = _._.$compat_renderer(_.a[\n        \"ConditionalRenderer:#text/2\"]), _.b)];\n      M._.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"p\": \"_\",\n        \"w\": [\n          [\"_0\", 0, 2,\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/components/class-counter.marko\"\n        ]\n      });\n      M._.r.push(\n        \"$compat_setScope 2 __tests__/template.marko_0_count 1\"\n        );\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/button0\nINSERT html/body/button0/#text\nINSERT html/body/button0/#comment\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/#comment2\nINSERT html/body/button1\nINSERT html/body/button1/#text\nINSERT html/body/#comment3\nINSERT html/body/#comment4\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-basic-tags-to-class/components/class-counter.marko",
    "content": "class {\n  onCreate() {\n    this.state = { count: 0 };\n  }\n  increment() {\n    this.state.count++;\n  }\n}\n<button id=\"class\" data-parent=input.count onClick(\"increment\")>\n  ${state.count}\n</button>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-basic-tags-to-class/template.marko",
    "content": "<let/count = 0/>\n<button id=\"tags\" onClick() { count++ }>\n  ${count}\n</button>\n<class-counter count=count/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-basic-tags-to-class/test.ts",
    "content": "export const steps = [\n  {},\n  clickTags,\n  clickClass,\n  clickTags,\n  clickClass,\n  clickTags,\n];\n\nfunction clickClass(container: Element) {\n  (container.querySelector(\"#class\") as HTMLButtonElement).click();\n}\n\nfunction clickTags(container: Element) {\n  (container.querySelector(\"#tags\") as HTMLButtonElement).click();\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-class-in-components-in-tags-dir/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<!---->\n<h1>\n  Hello world\n</h1>\n<!---->\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #comment1, #text0, #text1, #comment2, #comment3\nINSERT h1\nINSERT h1/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-class-in-components-in-tags-dir/__snapshots__/dom.expected/tags/components/hello-internal.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/tags/components/hello-internal.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.be(\"h1\", null, \"0\", _component, null, 0);\n  out.t(\"Hello world\", _component);\n  out.ee();\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-class-in-components-in-tags-dir/__snapshots__/dom.expected/tags/hello.js",
    "content": "import \"marko/src/runtime/helpers/tags-compat/dom-debug.mjs\";\nexport const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nimport _helloInternal from \"./components/hello-internal.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\n_._resume(\"__tests__/tags/components/hello-internal.marko\", _helloInternal);\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\");\nexport function $setup($scope) {\n  $dynamicTag($scope, _helloInternal);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/tags/hello.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-class-in-components-in-tags-dir/__snapshots__/dom.expected/template.hydrate.js",
    "content": "import init6 from \"virtual:./template.marko.hydrate-6.js import { init } from \\\"@marko/runtime-tags/debug/dom\\\";\\nimport \\\"./template.marko\\\";\\nimport \\\"./tags/hello.marko\\\";\\nexport default () => init();\";\nimport init5 from \"virtual:./template.marko.hydrate-5.js import { init } from \\\"marko/src/runtime/components/index.js\\\";\\nimport \\\"./tags/components/hello-internal.marko\\\";\\nexport default () => init();\";\ninit6();\ninit5();"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-class-in-components-in-tags-dir/__snapshots__/dom.expected/template.js",
    "content": "export const $template = `<!>${_hello_template}<!>`;\nexport const $walks = /* over(1), <hello>, over(1) */`b/${_hello_walks}&b`;\nimport { $setup as _hello, $template as _hello_template, $walks as _hello_walks } from \"./tags/hello.marko\";\nexport function $setup($scope) {\n  _hello($scope[\"#childScope/0\"]);\n}\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-class-in-components-in-tags-dir/__snapshots__/html.expected/tags/components/hello-internal.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/tags/components/hello-internal.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<h1>\");\n  out.w(\"Hello world\");\n  out.w(\"</h1>\");\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-class-in-components-in-tags-dir/__snapshots__/html.expected/tags/hello.js",
    "content": "import { s as _s } from \"marko/src/runtime/helpers/tags-compat/html-debug.mjs\";\nimport _helloInternal from \"./components/hello-internal.marko\";\n_s(_helloInternal, \"__tests__/tags/components/hello-internal.marko\");\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/tags/hello.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._dynamic_tag($scope0_id, \"#text/0\", _helloInternal, {}, 0, 0, 0);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-class-in-components-in-tags-dir/__snapshots__/html.expected/template.js",
    "content": "import _hello from \"./tags/hello.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _hello({});\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-class-in-components-in-tags-dir/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <h1>\n      Hello world\n    </h1>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 2,\n      {\n        m5c: \"_0\",\n        m5i:\n        {}\n      }])];\n      M._.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"p\": \"_\",\n        \"w\": [\n          [\"_0\", 0, 3,\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/tags/components/hello-internal.marko\"\n        ]\n      });\n      M._.r.push(\"$compat_setScope 3\");\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text0\nINSERT html/body/#text1\nREMOVE #comment before html/body/#text0\nREMOVE #comment after html/body/#text1\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-class-in-components-in-tags-dir/__snapshots__/ssr.expected.md",
    "content": "# Write\n  <!--M#_0--><h1>Hello world</h1><!--M/--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,2,{m5c:\"_0\",m5i:{}}])];M._.w();$MC=(window.$MC||[]).concat({\"p\":\"_\",\"w\":[[\"_0\",0,3,{\"f\":1}]],\"t\":[\"__tests__/tags/components/hello-internal.marko\"]});M._.r.push(\"$compat_setScope 3\");M._.w()</script>\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <!--M#_0-->\n    <h1>\n      Hello world\n    </h1>\n    <!--M/-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0, 2,\n      {\n        m5c: \"_0\",\n        m5i:\n        {}\n      }])];\n      M._.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"p\": \"_\",\n        \"w\": [\n          [\"_0\", 0, 3,\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/tags/components/hello-internal.marko\"\n        ]\n      });\n      M._.r.push(\"$compat_setScope 3\");\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#comment0\nINSERT html/body/h1\nINSERT html/body/h1/#text\nINSERT html/body/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-class-in-components-in-tags-dir/tags/components/hello-internal.marko",
    "content": "class {}\n\n<h1>Hello world</h1>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-class-in-components-in-tags-dir/tags/hello.marko",
    "content": "<hello-internal/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-class-in-components-in-tags-dir/template.marko",
    "content": "<hello/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-class-to-tags-import/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button\n  id=\"class\"\n>\n  0\n</button>\n<button\n  data-parent=\"0\"\n  id=\"tags\"\n>\n  0\n</button>\n```\n\n# Mutations\n```\nINSERT #text0, button0, #text1, #text2, button1, #text3, #text4, #text5\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<button\n  id=\"class\"\n>\n  0\n</button>\n<button\n  data-parent=\"0\"\n  id=\"tags\"\n>\n  1\n</button>\n```\n\n# Mutations\n```\nUPDATE button1/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#class\").click();\n```\n```html\n<button\n  id=\"class\"\n>\n  1\n</button>\n<button\n  data-parent=\"1\"\n  id=\"tags\"\n>\n  1\n</button>\n```\n\n# Mutations\n```\nUPDATE button1[data-parent] \"0\" => \"1\"\nUPDATE button0/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<button\n  id=\"class\"\n>\n  1\n</button>\n<button\n  data-parent=\"1\"\n  id=\"tags\"\n>\n  2\n</button>\n```\n\n# Mutations\n```\nUPDATE button1/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#class\").click();\n```\n```html\n<button\n  id=\"class\"\n>\n  2\n</button>\n<button\n  data-parent=\"2\"\n  id=\"tags\"\n>\n  2\n</button>\n```\n\n# Mutations\n```\nUPDATE button1[data-parent] \"1\" => \"2\"\nUPDATE button0/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<button\n  id=\"class\"\n>\n  2\n</button>\n<button\n  data-parent=\"2\"\n  id=\"tags\"\n>\n  3\n</button>\n```\n\n# Mutations\n```\nUPDATE button1/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-class-to-tags-import/__snapshots__/dom.expected/components/tags-counter.js",
    "content": "export const $template = \"<button id=tags> </button>\";\nexport const $walks = /* get, next(1), get, out(1) */\" D l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $count__script = _._script(\"__tests__/components/tags-counter.marko_0_count\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $count($scope, $scope.count + 1);\n}));\nconst $count = /* @__PURE__ */_._let(\"count/5\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.count);\n  $count__script($scope);\n});\nexport function $setup($scope) {\n  $count($scope, 0);\n}\nexport const $input_count = ($scope, input_count) => _._attr($scope[\"#button/0\"], \"data-parent\", input_count);\nexport const $input = ($scope, input) => $input_count($scope, input.count);\nexport default /* @__PURE__ */_._template(\"__tests__/components/tags-counter.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-class-to-tags-import/__snapshots__/dom.expected/template.hydrate.js",
    "content": "import { init } from \"marko/src/runtime/components/index.js\";\nimport \"./template.marko\";\ninit();"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-class-to-tags-import/__snapshots__/dom.expected/template.js",
    "content": "import \"marko/src/runtime/helpers/tags-compat/dom-debug.mjs\";\nimport { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport TagsCounter from \"./components/tags-counter.marko\";\nimport _marko_dynamic_tag from \"marko/src/runtime/helpers/dynamic-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {\n  onCreate() {\n    this.state = {\n      count: 0\n    };\n  },\n  increment() {\n    this.state.count++;\n  }\n};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.be(\"button\", {\n    \"id\": \"class\"\n  }, \"0\", _component, null, 1, {\n    \"onclick\": _componentDef.d(\"click\", \"increment\", false)\n  });\n  out.t(state.count, _component);\n  out.ee();\n  _marko_dynamic_tag(out, TagsCounter, () => ({\n    \"count\": state.count\n  }), null, null, null, _componentDef, \"1\");\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-class-to-tags-import/__snapshots__/html.expected/components/tags-counter.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/components/tags-counter.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let count = 0;\n  _._html(`<button id=tags${_._attr(\"data-parent\", input.count)}>${_._escape(count)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/components/tags-counter.marko_0_count\");\n  _._scope($scope0_id, {\n    count\n  }, \"__tests__/components/tags-counter.marko\", 0, {\n    count: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-class-to-tags-import/__snapshots__/html.expected/template.js",
    "content": "import \"marko/src/runtime/helpers/tags-compat/html-debug.mjs\";\nimport { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport TagsCounter from \"./components/tags-counter.marko\";\nimport { x as _marko_escapeXml } from \"marko/src/runtime/html/helpers/escape-xml.js\";\nimport _marko_dynamic_tag from \"marko/src/runtime/helpers/dynamic-tag.js\";\nimport _initComponents from \"marko/src/core-tags/components/init-components-tag.js\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {\n  onCreate() {\n    this.state = {\n      count: 0\n    };\n  },\n  increment() {\n    this.state.count++;\n  }\n};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<button id=class>\");\n  out.w(_marko_escapeXml(state.count));\n  out.w(\"</button>\");\n  _marko_dynamic_tag(out, TagsCounter, () => ({\n    \"count\": state.count\n  }), null, null, null, _componentDef, \"1\");\n  _marko_tag(_initComponents, {}, out, _componentDef, \"2\");\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-class-to-tags-import/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"class\"\n    >\n      0\n    </button>\n    <button\n      data-parent=\"0\"\n      id=\"tags\"\n    >\n      0\n      <!--Ms*1 #text/1-->\n    </button>\n    <!--Ms*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"s\");\n      M.s.r = [_ =&gt; (_.a = [0,\n        {\n          m5c: \"s0-1\",\n          count: 0\n        }]),\n        \"$compat_setScope 1 __tests__/components/tags-counter.marko_0_count 1\"\n      ];\n      M.s.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"w\": [\n          [\"s0\", 0,\n          {},\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/template.marko\"\n        ]\n      })\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text0\nINSERT html/body/#text5\nREMOVE #comment before html/body/#text0\nREMOVE #comment after html/body/#text5\nINSERT html/body/#text1\nINSERT html/body/#text4\nINSERT html/body/#text2\nINSERT html/body/#text3\nREMOVE #comment after html/body/#text2\nREMOVE #comment after html/body/#comment\nREMOVE html/body/#text4 after html/body/#text3\nINSERT html/body/#text4\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"class\"\n    >\n      0\n    </button>\n    <button\n      data-parent=\"0\"\n      id=\"tags\"\n    >\n      1\n      <!--Ms*1 #text/1-->\n    </button>\n    <!--Ms*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"s\");\n      M.s.r = [_ =&gt; (_.a = [0,\n        {\n          m5c: \"s0-1\",\n          count: 0\n        }]),\n        \"$compat_setScope 1 __tests__/components/tags-counter.marko_0_count 1\"\n      ];\n      M.s.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"w\": [\n          [\"s0\", 0,\n          {},\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/template.marko\"\n        ]\n      })\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button1/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#class\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"class\"\n    >\n      1\n    </button>\n    <button\n      data-parent=\"1\"\n      id=\"tags\"\n    >\n      1\n      <!--Ms*1 #text/1-->\n    </button>\n    <!--Ms*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"s\");\n      M.s.r = [_ =&gt; (_.a = [0,\n        {\n          m5c: \"s0-1\",\n          count: 0\n        }]),\n        \"$compat_setScope 1 __tests__/components/tags-counter.marko_0_count 1\"\n      ];\n      M.s.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"w\": [\n          [\"s0\", 0,\n          {},\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/template.marko\"\n        ]\n      })\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button1[data-parent] \"0\" => \"1\"\nUPDATE html/body/button0/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"class\"\n    >\n      1\n    </button>\n    <button\n      data-parent=\"1\"\n      id=\"tags\"\n    >\n      2\n      <!--Ms*1 #text/1-->\n    </button>\n    <!--Ms*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"s\");\n      M.s.r = [_ =&gt; (_.a = [0,\n        {\n          m5c: \"s0-1\",\n          count: 0\n        }]),\n        \"$compat_setScope 1 __tests__/components/tags-counter.marko_0_count 1\"\n      ];\n      M.s.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"w\": [\n          [\"s0\", 0,\n          {},\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/template.marko\"\n        ]\n      })\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button1/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#class\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"class\"\n    >\n      2\n    </button>\n    <button\n      data-parent=\"2\"\n      id=\"tags\"\n    >\n      2\n      <!--Ms*1 #text/1-->\n    </button>\n    <!--Ms*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"s\");\n      M.s.r = [_ =&gt; (_.a = [0,\n        {\n          m5c: \"s0-1\",\n          count: 0\n        }]),\n        \"$compat_setScope 1 __tests__/components/tags-counter.marko_0_count 1\"\n      ];\n      M.s.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"w\": [\n          [\"s0\", 0,\n          {},\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/template.marko\"\n        ]\n      })\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button1[data-parent] \"1\" => \"2\"\nUPDATE html/body/button0/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"class\"\n    >\n      2\n    </button>\n    <button\n      data-parent=\"2\"\n      id=\"tags\"\n    >\n      3\n      <!--Ms*1 #text/1-->\n    </button>\n    <!--Ms*1 #button/0-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"s\");\n      M.s.r = [_ =&gt; (_.a = [0,\n        {\n          m5c: \"s0-1\",\n          count: 0\n        }]),\n        \"$compat_setScope 1 __tests__/components/tags-counter.marko_0_count 1\"\n      ];\n      M.s.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"w\": [\n          [\"s0\", 0,\n          {},\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/template.marko\"\n        ]\n      })\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button1/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-class-to-tags-import/__snapshots__/ssr.expected.md",
    "content": "# Write\n  <!--M#s0--><button id=class>0</button><!--F#1--><button id=tags data-parent=0>0<!--Ms*1 #text/1--></button><!--Ms*1 #button/0--><!--F/--><!--M/--><script>WALKER_RUNTIME(\"M\")(\"s\");M.s.r=[_=>(_.a=[0,{m5c:\"s0-1\",count:0}]),\"$compat_setScope 1 __tests__/components/tags-counter.marko_0_count 1\"];M.s.w();$MC=(window.$MC||[]).concat({\"w\":[[\"s0\",0,{},{\"f\":1}]],\"t\":[\"__tests__/template.marko\"]})</script>\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <!--M#s0-->\n    <button\n      id=\"class\"\n    >\n      0\n    </button>\n    <!--F#1-->\n    <button\n      data-parent=\"0\"\n      id=\"tags\"\n    >\n      0\n      <!--Ms*1 #text/1-->\n    </button>\n    <!--Ms*1 #button/0-->\n    <!--F/-->\n    <!--M/-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"s\");\n      M.s.r = [_ =&gt; (_.a = [0,\n        {\n          m5c: \"s0-1\",\n          count: 0\n        }]),\n        \"$compat_setScope 1 __tests__/components/tags-counter.marko_0_count 1\"\n      ];\n      M.s.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"w\": [\n          [\"s0\", 0,\n          {},\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/template.marko\"\n        ]\n      })\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#comment0\nINSERT html/body/button0\nINSERT html/body/button0/#text\nINSERT html/body/#comment1\nINSERT html/body/button1\nINSERT html/body/button1/#text\nINSERT html/body/button1/#comment\nINSERT html/body/#comment2\nINSERT html/body/#comment3\nINSERT html/body/#comment4\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-class-to-tags-import/components/tags-counter.marko",
    "content": "<let/count = 0/>\n<button id=\"tags\" data-parent=input.count onClick() { count++ }>\n  ${count}\n</button>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-class-to-tags-import/template.marko",
    "content": "import TagsCounter from \"./components/tags-counter.marko\";\n\nclass {\n  onCreate() {\n    this.state = { count: 0 };\n  }\n  increment() {\n    this.state.count++;\n  }\n}\n<button id=\"class\" onClick(\"increment\")>\n  ${state.count}\n</button>\n<TagsCounter count=state.count/>\n<init-components/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-class-to-tags-import/test.ts",
    "content": "export const steps = [\n  {},\n  clickTags,\n  clickClass,\n  clickTags,\n  clickClass,\n  clickTags,\n];\n\nfunction clickClass(container: Element) {\n  (container.querySelector(\"#class\") as HTMLButtonElement).click();\n}\n\nfunction clickTags(container: Element) {\n  (container.querySelector(\"#tags\") as HTMLButtonElement).click();\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-event-handler-render-body-tags-to-class/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<button>\n  0\n</button>\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #text0, #text1, #comment1\nINSERT button\nINSERT button/#text0\nINSERT button/#text4\nINSERT button/#text1\nINSERT button/#text3\nINSERT button/#text2\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<button>\n  1\n</button>\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text2 \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<button>\n  2\n</button>\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text2 \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<button>\n  3\n</button>\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text2 \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-event-handler-render-body-tags-to-class/__snapshots__/dom.expected/components/my-button.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/components/my-button.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_dynamic_tag from \"marko/src/runtime/helpers/dynamic-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.be(\"button\", null, \"0\", _component, null, 0, {\n    \"onclick\": _componentDef.d(\"click\", \"emit\", false, [\"click\"])\n  });\n  _marko_dynamic_tag(out, input.renderBody, null, null, null, null, _componentDef, \"1\");\n  out.ee();\n}, {\n  t: _marko_componentType,\n  s: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-event-handler-render-body-tags-to-class/__snapshots__/dom.expected/template.hydrate.js",
    "content": "import init6 from \"virtual:./template.marko.hydrate-6.js import { init } from \\\"@marko/runtime-tags/debug/dom\\\";\\nimport \\\"./template.marko\\\";\\nexport default () => init();\";\nimport init5 from \"virtual:./template.marko.hydrate-5.js import { register, init } from \\\"marko/src/runtime/components/index.js\\\";\\nimport component_0 from \\\"marko/src/runtime/helpers/empty-component.js\\\";\\nregister(\\\"__tests__/components/my-button.marko\\\", component_0);\\nexport default () => init();\";\ninit6();\ninit5();"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-event-handler-render-body-tags-to-class/__snapshots__/dom.expected/template.js",
    "content": "import \"marko/src/runtime/helpers/tags-compat/dom-debug.mjs\";\nexport const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport _myButton from \"./components/my-button.marko\";\n_._resume(\"__tests__/components/my-button.marko\", _myButton);\n_._resume_dynamic_tag();\nconst $mybutton_content__count = /* @__PURE__ */_._closure_get(\"count\", $scope => _._text($scope[\"#text/0\"], $scope._.count));\nconst $mybutton_content__setup = $mybutton_content__count;\nconst $mybutton_content = _._content_resume(\"__tests__/template.marko_1_content\", \" \", /* get, over(1) */\" b\", $mybutton_content__setup);\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\", $mybutton_content);\nconst $count__closure = /* @__PURE__ */_._closure($mybutton_content__count);\nconst $count = /* @__PURE__ */_._let(\"count/1\", $scope => {\n  $dynamicTag($scope, _myButton, () => ({\n    onClick: $onClick($scope)\n  }));\n  $count__closure($scope);\n});\nexport function $setup($scope) {\n  $count($scope, 0);\n}\nfunction $onClick($scope) {\n  return function () {\n    $count($scope, $scope.count + 1);\n  };\n}\n_._resume(\"__tests__/template.marko_0/onClick\", $onClick);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-event-handler-render-body-tags-to-class/__snapshots__/html.expected/components/my-button.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/components/my-button.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_dynamic_tag from \"marko/src/runtime/helpers/dynamic-tag.js\";\nimport _marko_props from \"marko/src/runtime/html/helpers/data-marko.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\nimport _marko_skip_serialize from \"marko/src/runtime/helpers/skip-serialize.js\";\n_marko_template._ = _marko_renderer(function (_input, out, _componentDef, _component, state, $global) {\n  const input = _marko_skip_serialize(_input);\n  out.w(`<button${_marko_props(out, _componentDef, {\n    \"onclick\": _componentDef.d(\"click\", \"emit\", false, [\"click\"])\n  })}>`);\n  _marko_dynamic_tag(out, input.renderBody, null, null, null, null, _componentDef, \"1\");\n  out.w(\"</button>\");\n}, {\n  t: _marko_componentType,\n  s: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-event-handler-render-body-tags-to-class/__snapshots__/html.expected/template.js",
    "content": "import { s as _s } from \"marko/src/runtime/helpers/tags-compat/html-debug.mjs\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nimport _myButton from \"./components/my-button.marko\";\n_s(_myButton, \"__tests__/components/my-button.marko\");\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $count__closures = new Set();\n  let count = 0;\n  _._dynamic_tag($scope0_id, \"#text/0\", _myButton, {\n    onClick: _._resume(function () {\n      count++;\n    }, \"__tests__/template.marko_0/onClick\", $scope0_id)\n  }, _._content_resume(\"__tests__/template.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    _._scope_reason();\n    _._html(`${_._escape(count)}${_._el_resume($scope1_id, \"#text/0\")}`);\n    _._subscribe($count__closures, _._scope($scope1_id, {\n      _: _._scope_with_id($scope0_id),\n      \"ClosureSignalIndex:count\": 0\n    }, \"__tests__/template.marko\", \"2:2\"));\n    _._resume_branch($scope1_id);\n  }, $scope0_id));\n  _._scope($scope0_id, {\n    count,\n    \"ClosureScopes:count\": $count__closures\n  }, \"__tests__/template.marko\", 0, {\n    count: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-event-handler-render-body-tags-to-class/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <!--M_[-->\n    <button>\n      0\n      <!--M_*3 #text/0-->\n    </button>\n    <!--M_]1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"ConditionalRenderer:#text/0\": _._[\n            \"__tests__/components/my-button.marko\"\n            ],\n          count: 0,\n          \"ClosureScopes:count\": _.d = new Set\n        },\n        {\n          m5c: \"_0\",\n          m5i: _.b = {}\n        }, _.e = {\n          m5c: \"_0-1\",\n          _: _.a,\n          \"ClosureSignalIndex:count\": 0\n        }], _.a[\"ConditionalRenderer:#text/0\"] = _._.$compat_renderer(_.a[\n          \"ConditionalRenderer:#text/0\"]), _.b.renderBody = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.a), (_.d).add(_.e), _.c), _ =&gt; (_.f = [-3, _.a]),\n        \"$compat_setScope 3\"\n      ];\n      M._.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"p\": \"_\",\n        \"w\": [\n          [\"_0\", 0, 2,\n          {\n            \"e\": [\n              [\"click\", [\n                \"__tests__/template.marko_0/onClick\",\n                1\n              ]]\n            ],\n            \"f\": 1,\n            \"r\": [\n              \"__tests__/template.marko_1_content\",\n              1\n            ]\n          }]\n        ],\n        \"t\": [\n          \"__tests__/components/my-button.marko\"\n        ]\n      });\n      M._.r.push(\"$compat_setScope 2\");\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text2\nINSERT html/body/#text0\nINSERT html/body/#text1\nREMOVE #comment after html/body/#comment0\nREMOVE #comment after html/body/#text1\nINSERT html/body/button/#text0\nINSERT html/body/button/#text4\nINSERT html/body/button/#text1\nINSERT html/body/button/#text3\nREMOVE #comment after html/body/button/#text1\nREMOVE #comment after html/body/button/#comment\nREMOVE html/body/button/#text4 after html/body/button/#text3\nINSERT html/body/button/#text4\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <!--M_[-->\n    <button>\n      1\n      <!--M_*3 #text/0-->\n    </button>\n    <!--M_]1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"ConditionalRenderer:#text/0\": _._[\n            \"__tests__/components/my-button.marko\"\n            ],\n          count: 0,\n          \"ClosureScopes:count\": _.d = new Set\n        },\n        {\n          m5c: \"_0\",\n          m5i: _.b = {}\n        }, _.e = {\n          m5c: \"_0-1\",\n          _: _.a,\n          \"ClosureSignalIndex:count\": 0\n        }], _.a[\"ConditionalRenderer:#text/0\"] = _._.$compat_renderer(_.a[\n          \"ConditionalRenderer:#text/0\"]), _.b.renderBody = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.a), (_.d).add(_.e), _.c), _ =&gt; (_.f = [-3, _.a]),\n        \"$compat_setScope 3\"\n      ];\n      M._.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"p\": \"_\",\n        \"w\": [\n          [\"_0\", 0, 2,\n          {\n            \"e\": [\n              [\"click\", [\n                \"__tests__/template.marko_0/onClick\",\n                1\n              ]]\n            ],\n            \"f\": 1,\n            \"r\": [\n              \"__tests__/template.marko_1_content\",\n              1\n            ]\n          }]\n        ],\n        \"t\": [\n          \"__tests__/components/my-button.marko\"\n        ]\n      });\n      M._.r.push(\"$compat_setScope 2\");\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text2 \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <!--M_[-->\n    <button>\n      2\n      <!--M_*3 #text/0-->\n    </button>\n    <!--M_]1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"ConditionalRenderer:#text/0\": _._[\n            \"__tests__/components/my-button.marko\"\n            ],\n          count: 0,\n          \"ClosureScopes:count\": _.d = new Set\n        },\n        {\n          m5c: \"_0\",\n          m5i: _.b = {}\n        }, _.e = {\n          m5c: \"_0-1\",\n          _: _.a,\n          \"ClosureSignalIndex:count\": 0\n        }], _.a[\"ConditionalRenderer:#text/0\"] = _._.$compat_renderer(_.a[\n          \"ConditionalRenderer:#text/0\"]), _.b.renderBody = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.a), (_.d).add(_.e), _.c), _ =&gt; (_.f = [-3, _.a]),\n        \"$compat_setScope 3\"\n      ];\n      M._.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"p\": \"_\",\n        \"w\": [\n          [\"_0\", 0, 2,\n          {\n            \"e\": [\n              [\"click\", [\n                \"__tests__/template.marko_0/onClick\",\n                1\n              ]]\n            ],\n            \"f\": 1,\n            \"r\": [\n              \"__tests__/template.marko_1_content\",\n              1\n            ]\n          }]\n        ],\n        \"t\": [\n          \"__tests__/components/my-button.marko\"\n        ]\n      });\n      M._.r.push(\"$compat_setScope 2\");\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text2 \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <!--M_[-->\n    <button>\n      3\n      <!--M_*3 #text/0-->\n    </button>\n    <!--M_]1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"ConditionalRenderer:#text/0\": _._[\n            \"__tests__/components/my-button.marko\"\n            ],\n          count: 0,\n          \"ClosureScopes:count\": _.d = new Set\n        },\n        {\n          m5c: \"_0\",\n          m5i: _.b = {}\n        }, _.e = {\n          m5c: \"_0-1\",\n          _: _.a,\n          \"ClosureSignalIndex:count\": 0\n        }], _.a[\"ConditionalRenderer:#text/0\"] = _._.$compat_renderer(_.a[\n          \"ConditionalRenderer:#text/0\"]), _.b.renderBody = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.a), (_.d).add(_.e), _.c), _ =&gt; (_.f = [-3, _.a]),\n        \"$compat_setScope 3\"\n      ];\n      M._.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"p\": \"_\",\n        \"w\": [\n          [\"_0\", 0, 2,\n          {\n            \"e\": [\n              [\"click\", [\n                \"__tests__/template.marko_0/onClick\",\n                1\n              ]]\n            ],\n            \"f\": 1,\n            \"r\": [\n              \"__tests__/template.marko_1_content\",\n              1\n            ]\n          }]\n        ],\n        \"t\": [\n          \"__tests__/components/my-button.marko\"\n        ]\n      });\n      M._.r.push(\"$compat_setScope 2\");\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text2 \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-event-handler-render-body-tags-to-class/__snapshots__/ssr.expected.md",
    "content": "# Write\n  <!--M_[--><!--M#_0--><button><!--F#1-->0<!--M_*3 #text/0--><!--F/--></button><!--M/--><!--M_]1 #text/0 2--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.a={\"ConditionalRenderer:#text/0\":_._[\"__tests__/components/my-button.marko\"],count:0,\"ClosureScopes:count\":_.d=new Set},{m5c:\"_0\",m5i:_.b={}},_.e={m5c:\"_0-1\",_:_.a,\"ClosureSignalIndex:count\":0}],_.a[\"ConditionalRenderer:#text/0\"]=_._.$compat_renderer(_.a[\"ConditionalRenderer:#text/0\"]),_.b.renderBody=_._[\"__tests__/template.marko_1_content\"](_.a),(_.d).add(_.e),_.c),_=>(_.f=[-3,_.a]),\"$compat_setScope 3\"];M._.w();$MC=(window.$MC||[]).concat({\"p\":\"_\",\"w\":[[\"_0\",0,2,{\"e\":[[\"click\",[\"__tests__/template.marko_0/onClick\",1]]],\"f\":1,\"r\":[\"__tests__/template.marko_1_content\",1]}]],\"t\":[\"__tests__/components/my-button.marko\"]});M._.r.push(\"$compat_setScope 2\");M._.w()</script>\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <!--M_[-->\n    <!--M#_0-->\n    <button>\n      <!--F#1-->\n      0\n      <!--M_*3 #text/0-->\n      <!--F/-->\n    </button>\n    <!--M/-->\n    <!--M_]1 #text/0 2-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.a = {\n          \"ConditionalRenderer:#text/0\": _._[\n            \"__tests__/components/my-button.marko\"\n            ],\n          count: 0,\n          \"ClosureScopes:count\": _.d = new Set\n        },\n        {\n          m5c: \"_0\",\n          m5i: _.b = {}\n        }, _.e = {\n          m5c: \"_0-1\",\n          _: _.a,\n          \"ClosureSignalIndex:count\": 0\n        }], _.a[\"ConditionalRenderer:#text/0\"] = _._.$compat_renderer(_.a[\n          \"ConditionalRenderer:#text/0\"]), _.b.renderBody = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.a), (_.d).add(_.e), _.c), _ =&gt; (_.f = [-3, _.a]),\n        \"$compat_setScope 3\"\n      ];\n      M._.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"p\": \"_\",\n        \"w\": [\n          [\"_0\", 0, 2,\n          {\n            \"e\": [\n              [\"click\", [\n                \"__tests__/template.marko_0/onClick\",\n                1\n              ]]\n            ],\n            \"f\": 1,\n            \"r\": [\n              \"__tests__/template.marko_1_content\",\n              1\n            ]\n          }]\n        ],\n        \"t\": [\n          \"__tests__/components/my-button.marko\"\n        ]\n      });\n      M._.r.push(\"$compat_setScope 2\");\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/button\nINSERT html/body/button/#comment0\nINSERT html/body/button/#text\nINSERT html/body/button/#comment1\nINSERT html/body/button/#comment2\nINSERT html/body/#comment2\nINSERT html/body/#comment3\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-event-handler-render-body-tags-to-class/components/my-button.marko",
    "content": "<button onClick(\"emit\", \"click\")>\n  <${input.renderBody}/>\n</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-event-handler-render-body-tags-to-class/template.marko",
    "content": "<let/count=0>\n<my-button onClick() {\n  count++;\n}>\n  ${count}\n</my-button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-event-handler-render-body-tags-to-class/test.ts",
    "content": "export const steps = [{}, click, click, click];\n\nfunction click(container: Element) {\n  (container.querySelector(\"button\") as HTMLButtonElement).click();\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-events-tags-to-class/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<button\n  id=\"class-api\"\n>\n  0\n</button>\n<div\n  id=\"tags-api\"\n>\n  0\n</div>\n```\n\n# Mutations\n```\nINSERT #comment, #text0, #text1, div\nINSERT button\nINSERT button/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"#class-api\").click();\n```\n```html\n<!---->\n<button\n  id=\"class-api\"\n>\n  1\n</button>\n<div\n  id=\"tags-api\"\n>\n  1\n</div>\n```\n\n# Mutations\n```\nUPDATE div/#text \"0\" => \"1\"\nUPDATE button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#class-api\").click();\n```\n```html\n<!---->\n<button\n  id=\"class-api\"\n>\n  2\n</button>\n<div\n  id=\"tags-api\"\n>\n  2\n</div>\n```\n\n# Mutations\n```\nUPDATE div/#text \"1\" => \"2\"\nUPDATE button/#text \"1\" => \"2\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-events-tags-to-class/__snapshots__/dom.expected/components/class-counter.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/components/class-counter.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {\n  onCreate() {\n    this.state = {\n      count: 0\n    };\n  },\n  handleClick() {\n    this.state.count++;\n    this.emit(\"count\", this.state.count);\n  }\n};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.be(\"button\", {\n    \"id\": \"class-api\"\n  }, \"0\", _component, null, 1, {\n    \"onclick\": _componentDef.d(\"click\", \"handleClick\", false)\n  });\n  out.t(state.count, _component);\n  out.ee();\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-events-tags-to-class/__snapshots__/dom.expected/template.hydrate.js",
    "content": "import init6 from \"virtual:./template.marko.hydrate-6.js import { init } from \\\"@marko/runtime-tags/debug/dom\\\";\\nimport \\\"./template.marko\\\";\\nexport default () => init();\";\nimport init5 from \"virtual:./template.marko.hydrate-5.js import { init } from \\\"marko/src/runtime/components/index.js\\\";\\nimport \\\"./components/class-counter.marko\\\";\\nexport default () => init();\";\ninit6();\ninit5();"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-events-tags-to-class/__snapshots__/dom.expected/template.js",
    "content": "import \"marko/src/runtime/helpers/tags-compat/dom-debug.mjs\";\nexport const $template = \"<!><!><div id=tags-api> </div>\";\nexport const $walks = /* over(1), replace, over(1), next(1), get, out(1) */\"b%bD l\";\nimport _classCounter from \"./components/class-counter.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\n_._resume(\"__tests__/components/class-counter.marko\", _classCounter);\n_._resume_dynamic_tag();\nconst $count = /* @__PURE__ */_._let(\"count/2\", $scope => _._text($scope[\"#text/1\"], $scope.count));\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\");\nexport function $setup($scope) {\n  $count($scope, 0);\n  $dynamicTag($scope, _classCounter, () => ({\n    onCount: $onCount($scope)\n  }));\n}\nfunction $onCount($scope) {\n  return function (newCount) {\n    $count($scope, newCount);\n  };\n}\n_._resume(\"__tests__/template.marko_0/onCount\", $onCount);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-events-tags-to-class/__snapshots__/html.expected/components/class-counter.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/components/class-counter.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { x as _marko_escapeXml } from \"marko/src/runtime/html/helpers/escape-xml.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {\n  onCreate() {\n    this.state = {\n      count: 0\n    };\n  },\n  handleClick() {\n    this.state.count++;\n    this.emit(\"count\", this.state.count);\n  }\n};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<button id=class-api>\");\n  out.w(_marko_escapeXml(state.count));\n  out.w(\"</button>\");\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-events-tags-to-class/__snapshots__/html.expected/template.js",
    "content": "import { s as _s } from \"marko/src/runtime/helpers/tags-compat/html-debug.mjs\";\nimport _classCounter from \"./components/class-counter.marko\";\n_s(_classCounter, \"__tests__/components/class-counter.marko\");\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let count = 0;\n  _._dynamic_tag($scope0_id, \"#text/0\", _classCounter, {\n    onCount: _._resume(function (newCount) {\n      count = newCount;\n    }, \"__tests__/template.marko_0/onCount\", $scope0_id)\n  }, 0, 0, 0);\n  _._html(`<div id=tags-api>${_._escape(count)}${_._el_resume($scope0_id, \"#text/1\")}</div>`);\n  _._scope($scope0_id, {}, \"__tests__/template.marko\", 0);\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-events-tags-to-class/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"class-api\"\n    >\n      0\n    </button>\n    <div\n      id=\"tags-api\"\n    >\n      0\n      <!--M_*1 #text/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n      {},\n      {\n        m5c: \"_0\",\n        m5i:\n        {}\n      }]), _ =&gt; (_.c = [-2, _.b = _.a[1]])];\n      M._.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"p\": \"_\",\n        \"w\": [\n          [\"_0\", 0, 2,\n          {\n            \"e\": [\n              [\"count\", [\n                \"__tests__/template.marko_0/onCount\",\n                1\n              ]]\n            ],\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/components/class-counter.marko\"\n        ]\n      });\n      M._.r.push(\"$compat_setScope 2\");\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text0\nINSERT html/body/#text1\nREMOVE #comment before html/body/#text0\nREMOVE #comment after html/body/#text1\n```\n\n# Render\n```js\ncontainer.querySelector(\"#class-api\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"class-api\"\n    >\n      1\n    </button>\n    <div\n      id=\"tags-api\"\n    >\n      1\n      <!--M_*1 #text/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n      {},\n      {\n        m5c: \"_0\",\n        m5i:\n        {}\n      }]), _ =&gt; (_.c = [-2, _.b = _.a[1]])];\n      M._.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"p\": \"_\",\n        \"w\": [\n          [\"_0\", 0, 2,\n          {\n            \"e\": [\n              [\"count\", [\n                \"__tests__/template.marko_0/onCount\",\n                1\n              ]]\n            ],\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/components/class-counter.marko\"\n        ]\n      });\n      M._.r.push(\"$compat_setScope 2\");\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/#text \"0\" => \"1\"\nUPDATE html/body/button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#class-api\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"class-api\"\n    >\n      2\n    </button>\n    <div\n      id=\"tags-api\"\n    >\n      2\n      <!--M_*1 #text/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n      {},\n      {\n        m5c: \"_0\",\n        m5i:\n        {}\n      }]), _ =&gt; (_.c = [-2, _.b = _.a[1]])];\n      M._.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"p\": \"_\",\n        \"w\": [\n          [\"_0\", 0, 2,\n          {\n            \"e\": [\n              [\"count\", [\n                \"__tests__/template.marko_0/onCount\",\n                1\n              ]]\n            ],\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/components/class-counter.marko\"\n        ]\n      });\n      M._.r.push(\"$compat_setScope 2\");\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/#text \"1\" => \"2\"\nUPDATE html/body/button/#text \"1\" => \"2\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-events-tags-to-class/__snapshots__/ssr.expected.md",
    "content": "# Write\n  <!--M#_0--><button id=class-api>0</button><!--M/--><div id=tags-api>0<!--M_*1 #text/1--></div><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.a=[0,{},{m5c:\"_0\",m5i:{}}]),_=>(_.c=[-2,_.b=_.a[1]])];M._.w();$MC=(window.$MC||[]).concat({\"p\":\"_\",\"w\":[[\"_0\",0,2,{\"e\":[[\"count\",[\"__tests__/template.marko_0/onCount\",1]]],\"f\":1}]],\"t\":[\"__tests__/components/class-counter.marko\"]});M._.r.push(\"$compat_setScope 2\");M._.w()</script>\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <!--M#_0-->\n    <button\n      id=\"class-api\"\n    >\n      0\n    </button>\n    <!--M/-->\n    <div\n      id=\"tags-api\"\n    >\n      0\n      <!--M_*1 #text/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.a = [0,\n      {},\n      {\n        m5c: \"_0\",\n        m5i:\n        {}\n      }]), _ =&gt; (_.c = [-2, _.b = _.a[1]])];\n      M._.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"p\": \"_\",\n        \"w\": [\n          [\"_0\", 0, 2,\n          {\n            \"e\": [\n              [\"count\", [\n                \"__tests__/template.marko_0/onCount\",\n                1\n              ]]\n            ],\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/components/class-counter.marko\"\n        ]\n      });\n      M._.r.push(\"$compat_setScope 2\");\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#comment0\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/#comment1\nINSERT html/body/div\nINSERT html/body/div/#text\nINSERT html/body/div/#comment\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-events-tags-to-class/components/class-counter.marko",
    "content": "class {\n  onCreate() {\n    this.state = { count: 0 };\n  }\n  handleClick() {\n    this.state.count++\n    this.emit(\"count\", this.state.count);\n  }\n}\n<button id=\"class-api\" onClick(\"handleClick\")>\n  ${state.count}\n</button>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-events-tags-to-class/template.marko",
    "content": "<let/count = 0/>\n<class-counter onCount(newCount) {\n  count = newCount;\n}/>\n\n<div id=\"tags-api\">\n  ${count}\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-events-tags-to-class/test.ts",
    "content": "export const steps = [{}, clickClass, clickClass];\n\nfunction clickClass(container: Element) {\n  (container.querySelector(\"#class-api\") as HTMLButtonElement).click();\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-attr-tags-class-to-tags/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button\n  id=\"tags\"\n>\n  0\n</button>\n<div>\n  <button\n    id=\"class\"\n  >\n    0\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT #text0, #text1, #text2, button, div, #text3, #text4, #text5\nINSERT div/#text1\nINSERT div/#text2\nINSERT div/button\nINSERT div/button/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<button\n  id=\"tags\"\n>\n  1\n</button>\n<div>\n  <button\n    id=\"class\"\n  >\n    0\n  </button>\n</div>\n```\n\n# Mutations\n```\nUPDATE button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#class\").click();\n```\n```html\n<button\n  id=\"tags\"\n>\n  1\n</button>\n<div>\n  <button\n    id=\"class\"\n  >\n    1\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT div/#text0, div/#text3\nREMOVE #text after div/#text3\nREMOVE #text after div/#text3\nREMOVE button after div/#text3\nREMOVE #text after div/#text3\nREMOVE #text after div/#text3\nINSERT div/#text1\nINSERT div/#text2\nINSERT div/button\nINSERT div/button/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<button\n  id=\"tags\"\n>\n  2\n</button>\n<div>\n  <button\n    id=\"class\"\n  >\n    1\n  </button>\n</div>\n```\n\n# Mutations\n```\nUPDATE button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#class\").click();\n```\n```html\n<button\n  id=\"tags\"\n>\n  2\n</button>\n<div>\n  <button\n    id=\"class\"\n  >\n    2\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT div/#text0, div/#text3\nREMOVE #text after div/#text3\nREMOVE #text after div/#text3\nREMOVE button after div/#text3\nREMOVE #text after div/#text3\nREMOVE #text after div/#text3\nINSERT div/#text1\nINSERT div/#text2\nINSERT div/button\nINSERT div/button/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<button\n  id=\"tags\"\n>\n  3\n</button>\n<div>\n  <button\n    id=\"class\"\n  >\n    2\n  </button>\n</div>\n```\n\n# Mutations\n```\nUPDATE button/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-attr-tags-class-to-tags/__snapshots__/dom.expected/components/tags-layout.js",
    "content": "export const $template = \"<button id=tags> </button><div><!></div>\";\nexport const $walks = /* get, next(1), get, out(1), next(1), replace, out(1) */\" D lD%l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $count__script = _._script(\"__tests__/components/tags-layout.marko_0_count\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $count($scope, $scope.count + 1);\n}));\nconst $count = /* @__PURE__ */_._let(\"count/7\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.count);\n  $count__script($scope);\n});\nexport function $setup($scope) {\n  $count($scope, 0);\n}\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/2\");\nexport const $input_stuff_content = ($scope, input_stuff_content) => $dynamicTag($scope, input_stuff_content);\nexport const $input = ($scope, input) => $input_stuff($scope, input.stuff);\nexport const $input_stuff = ($scope, input_stuff) => $input_stuff_content($scope, input_stuff?.content);\nexport default /* @__PURE__ */_._template(\"__tests__/components/tags-layout.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-attr-tags-class-to-tags/__snapshots__/dom.expected/template.hydrate.js",
    "content": "import { init } from \"marko/src/runtime/components/index.js\";\nimport \"./template.marko\";\ninit();"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-attr-tags-class-to-tags/__snapshots__/dom.expected/template.js",
    "content": "import \"marko/src/runtime/helpers/tags-compat/dom-debug.mjs\";\nimport { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/src/runtime/helpers/attr-tag.js\";\nimport _tagsLayout from \"./components/tags-layout.marko\";\nimport _marko_dynamic_tag from \"marko/src/runtime/helpers/dynamic-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {\n  onCreate() {\n    this.state = {\n      count: 0\n    };\n  },\n  increment() {\n    this.state.count++;\n  }\n};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_dynamic_tag(out, _tagsLayout, () => _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"stuff\", {\n      \"content\": out => {\n        out.be(\"button\", {\n          \"id\": \"class\"\n        }, \"1\", _component, null, 1, {\n          \"onclick\": _componentDef.d(\"click\", \"increment\", false)\n        });\n        out.t(state.count, _component);\n        out.ee();\n      }\n    });\n  }), null, null, null, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-attr-tags-class-to-tags/__snapshots__/html.expected/components/tags-layout.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/components/tags-layout.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let count = 0;\n  _._html(`<button id=tags>${_._escape(count)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}<div>`);\n  _._dynamic_tag($scope0_id, \"#text/2\", input.stuff.content, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.stuff.content */0));\n  _._html(\"</div>\");\n  _._script($scope0_id, \"__tests__/components/tags-layout.marko_0_count\");\n  _._scope($scope0_id, {\n    count\n  }, \"__tests__/components/tags-layout.marko\", 0, {\n    count: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-attr-tags-class-to-tags/__snapshots__/html.expected/template.js",
    "content": "import \"marko/src/runtime/helpers/tags-compat/html-debug.mjs\";\nimport { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { x as _marko_escapeXml } from \"marko/src/runtime/html/helpers/escape-xml.js\";\nimport { a as _marko_repeatable_attr_tag, i as _marko_render_input } from \"marko/src/runtime/helpers/attr-tag.js\";\nimport _tagsLayout from \"./components/tags-layout.marko\";\nimport _marko_dynamic_tag from \"marko/src/runtime/helpers/dynamic-tag.js\";\nimport _initComponents from \"marko/src/core-tags/components/init-components-tag.js\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {\n  onCreate() {\n    this.state = {\n      count: 0\n    };\n  },\n  increment() {\n    this.state.count++;\n  }\n};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_dynamic_tag(out, _tagsLayout, () => _marko_render_input(() => {\n    _marko_repeatable_attr_tag(\"stuff\", {\n      \"content\": out => {\n        out.w(\"<button id=class>\");\n        out.w(_marko_escapeXml(state.count));\n        out.w(\"</button>\");\n      }\n    });\n  }), null, null, null, _componentDef, \"0\");\n  _marko_tag(_initComponents, {}, out, _componentDef, \"2\");\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-attr-tags-class-to-tags/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"tags\"\n    >\n      0\n      <!--Ms*1 #text/1-->\n    </button>\n    <!--Ms*1 #button/0-->\n    <div>\n      <button\n        id=\"class\"\n      >\n        0\n      </button>\n      <!--Ms]1 #text/2 2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"s\");\n      M.s.r = [_ =&gt; (_.a = [0,\n        {\n          m5c: \"s0-0\",\n          \"ConditionalRenderer:#text/2\": _._.$compat_renderBody,\n          count: 0\n        }]),\n        \"$compat_setScope 1 __tests__/components/tags-layout.marko_0_count 1\"\n      ];\n      M.s.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"w\": [\n          [\"s0\", 0,\n          {},\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/template.marko\"\n        ]\n      })\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT #text\nINSERT html/body/#text0\nINSERT html/body/#text5\nREMOVE #comment before html/body/#text0\nREMOVE #comment after html/body/#text5\nINSERT html/body/div/#text0, html/body/div/#text3\nREMOVE #comment after html/body/div/#text3\nREMOVE button after html/body/div/#text3\nREMOVE #text after html/body/div/#text3\nINSERT html/body/#text1\nINSERT html/body/#text4\nINSERT html/body/#text2\nINSERT html/body/#text3\nREMOVE #comment after html/body/#text2\nREMOVE #comment after html/body/div\nREMOVE html/body/#text4 after html/body/#text3\nINSERT html/body/#text4\nINSERT html/body/div/#text1\nINSERT html/body/div/#text2\nINSERT html/body/div/button\nINSERT html/body/div/button/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"tags\"\n    >\n      1\n      <!--Ms*1 #text/1-->\n    </button>\n    <!--Ms*1 #button/0-->\n    <div>\n      <button\n        id=\"class\"\n      >\n        0\n      </button>\n      <!--Ms]1 #text/2 2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"s\");\n      M.s.r = [_ =&gt; (_.a = [0,\n        {\n          m5c: \"s0-0\",\n          \"ConditionalRenderer:#text/2\": _._.$compat_renderBody,\n          count: 0\n        }]),\n        \"$compat_setScope 1 __tests__/components/tags-layout.marko_0_count 1\"\n      ];\n      M.s.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"w\": [\n          [\"s0\", 0,\n          {},\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/template.marko\"\n        ]\n      })\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#class\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"tags\"\n    >\n      1\n      <!--Ms*1 #text/1-->\n    </button>\n    <!--Ms*1 #button/0-->\n    <div>\n      <button\n        id=\"class\"\n      >\n        1\n      </button>\n      <!--Ms]1 #text/2 2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"s\");\n      M.s.r = [_ =&gt; (_.a = [0,\n        {\n          m5c: \"s0-0\",\n          \"ConditionalRenderer:#text/2\": _._.$compat_renderBody,\n          count: 0\n        }]),\n        \"$compat_setScope 1 __tests__/components/tags-layout.marko_0_count 1\"\n      ];\n      M.s.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"w\": [\n          [\"s0\", 0,\n          {},\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/template.marko\"\n        ]\n      })\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text0, html/body/div/#text3\nREMOVE #text after html/body/div/#text3\nREMOVE #text after html/body/div/#text3\nREMOVE button after html/body/div/#text3\nREMOVE #text after html/body/div/#text3\nREMOVE #text after html/body/div/#text3\nINSERT html/body/div/#text1\nINSERT html/body/div/#text2\nINSERT html/body/div/button\nINSERT html/body/div/button/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"tags\"\n    >\n      2\n      <!--Ms*1 #text/1-->\n    </button>\n    <!--Ms*1 #button/0-->\n    <div>\n      <button\n        id=\"class\"\n      >\n        1\n      </button>\n      <!--Ms]1 #text/2 2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"s\");\n      M.s.r = [_ =&gt; (_.a = [0,\n        {\n          m5c: \"s0-0\",\n          \"ConditionalRenderer:#text/2\": _._.$compat_renderBody,\n          count: 0\n        }]),\n        \"$compat_setScope 1 __tests__/components/tags-layout.marko_0_count 1\"\n      ];\n      M.s.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"w\": [\n          [\"s0\", 0,\n          {},\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/template.marko\"\n        ]\n      })\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#class\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"tags\"\n    >\n      2\n      <!--Ms*1 #text/1-->\n    </button>\n    <!--Ms*1 #button/0-->\n    <div>\n      <button\n        id=\"class\"\n      >\n        2\n      </button>\n      <!--Ms]1 #text/2 2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"s\");\n      M.s.r = [_ =&gt; (_.a = [0,\n        {\n          m5c: \"s0-0\",\n          \"ConditionalRenderer:#text/2\": _._.$compat_renderBody,\n          count: 0\n        }]),\n        \"$compat_setScope 1 __tests__/components/tags-layout.marko_0_count 1\"\n      ];\n      M.s.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"w\": [\n          [\"s0\", 0,\n          {},\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/template.marko\"\n        ]\n      })\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text0, html/body/div/#text3\nREMOVE #text after html/body/div/#text3\nREMOVE #text after html/body/div/#text3\nREMOVE button after html/body/div/#text3\nREMOVE #text after html/body/div/#text3\nREMOVE #text after html/body/div/#text3\nINSERT html/body/div/#text1\nINSERT html/body/div/#text2\nINSERT html/body/div/button\nINSERT html/body/div/button/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"tags\"\n    >\n      3\n      <!--Ms*1 #text/1-->\n    </button>\n    <!--Ms*1 #button/0-->\n    <div>\n      <button\n        id=\"class\"\n      >\n        2\n      </button>\n      <!--Ms]1 #text/2 2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"s\");\n      M.s.r = [_ =&gt; (_.a = [0,\n        {\n          m5c: \"s0-0\",\n          \"ConditionalRenderer:#text/2\": _._.$compat_renderBody,\n          count: 0\n        }]),\n        \"$compat_setScope 1 __tests__/components/tags-layout.marko_0_count 1\"\n      ];\n      M.s.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"w\": [\n          [\"s0\", 0,\n          {},\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/template.marko\"\n        ]\n      })\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-attr-tags-class-to-tags/__snapshots__/ssr.expected.md",
    "content": "# Write\n  <!--M#s0--><!--F#1--><button id=tags>0<!--Ms*1 #text/1--></button><!--Ms*1 #button/0--><div><!--Ms[--><button id=class>0</button><!--Ms]1 #text/2 2--></div><!--F/--><!--M/--><script>WALKER_RUNTIME(\"M\")(\"s\");M.s.r=[_=>(_.a=[0,{m5c:\"s0-0\",\"ConditionalRenderer:#text/2\":_._.$compat_renderBody,count:0}]),\"$compat_setScope 1 __tests__/components/tags-layout.marko_0_count 1\"];M.s.w();$MC=(window.$MC||[]).concat({\"w\":[[\"s0\",0,{},{\"f\":1}]],\"t\":[\"__tests__/template.marko\"]})</script>\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <!--M#s0-->\n    <!--F#1-->\n    <button\n      id=\"tags\"\n    >\n      0\n      <!--Ms*1 #text/1-->\n    </button>\n    <!--Ms*1 #button/0-->\n    <div>\n      <!--Ms[-->\n      <button\n        id=\"class\"\n      >\n        0\n      </button>\n      <!--Ms]1 #text/2 2-->\n    </div>\n    <!--F/-->\n    <!--M/-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"s\");\n      M.s.r = [_ =&gt; (_.a = [0,\n        {\n          m5c: \"s0-0\",\n          \"ConditionalRenderer:#text/2\": _._.$compat_renderBody,\n          count: 0\n        }]),\n        \"$compat_setScope 1 __tests__/components/tags-layout.marko_0_count 1\"\n      ];\n      M.s.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"w\": [\n          [\"s0\", 0,\n          {},\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/template.marko\"\n        ]\n      })\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment2\nINSERT html/body/div\nINSERT html/body/div/#comment0\nINSERT html/body/div/button\nINSERT html/body/div/button/#text\nINSERT html/body/div/#comment1\nINSERT html/body/#comment3\nINSERT html/body/#comment4\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-attr-tags-class-to-tags/components/tags-layout.marko",
    "content": "<let/count = 0/>\n<button id=\"tags\" onClick() { count++ }>\n  ${count}\n</button>\n<div>\n  <${input.stuff.content}/>\n</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-attr-tags-class-to-tags/template.marko",
    "content": "class {\n  onCreate() {\n    this.state = { count: 0 };\n  }\n  increment() {\n    this.state.count++;\n  }\n}\n\n<tags-layout>\n  <@stuff>\n    <button id=\"class\" onClick(\"increment\")>\n      ${state.count}\n    </button>\n  </>\n</tags-layout>\n\n<init-components/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-attr-tags-class-to-tags/test.ts",
    "content": "export const steps = [\n  {},\n  clickTags,\n  clickClass,\n  clickTags,\n  clickClass,\n  clickTags,\n];\n\nfunction clickClass(container: Element) {\n  (container.querySelector(\"#class\") as HTMLButtonElement).click();\n}\n\nfunction clickTags(container: Element) {\n  (container.querySelector(\"#tags\") as HTMLButtonElement).click();\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-class-to-tags/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button\n  id=\"tags\"\n>\n  0\n</button>\n<div>\n  <button\n    id=\"class\"\n  >\n    0\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT #text0, #text1, #text2, button, div, #text3, #text4, #text5\nINSERT div/#text1\nINSERT div/#text2\nINSERT div/button\nINSERT div/button/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<button\n  id=\"tags\"\n>\n  1\n</button>\n<div>\n  <button\n    id=\"class\"\n  >\n    0\n  </button>\n</div>\n```\n\n# Mutations\n```\nUPDATE button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#class\").click();\n```\n```html\n<button\n  id=\"tags\"\n>\n  1\n</button>\n<div>\n  <button\n    id=\"class\"\n  >\n    1\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT div/#text0, div/#text3\nREMOVE #text after div/#text3\nREMOVE #text after div/#text3\nREMOVE button after div/#text3\nREMOVE #text after div/#text3\nREMOVE #text after div/#text3\nINSERT div/#text1\nINSERT div/#text2\nINSERT div/button\nINSERT div/button/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<button\n  id=\"tags\"\n>\n  2\n</button>\n<div>\n  <button\n    id=\"class\"\n  >\n    1\n  </button>\n</div>\n```\n\n# Mutations\n```\nUPDATE button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#class\").click();\n```\n```html\n<button\n  id=\"tags\"\n>\n  2\n</button>\n<div>\n  <button\n    id=\"class\"\n  >\n    2\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT div/#text0, div/#text3\nREMOVE #text after div/#text3\nREMOVE #text after div/#text3\nREMOVE button after div/#text3\nREMOVE #text after div/#text3\nREMOVE #text after div/#text3\nINSERT div/#text1\nINSERT div/#text2\nINSERT div/button\nINSERT div/button/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<button\n  id=\"tags\"\n>\n  3\n</button>\n<div>\n  <button\n    id=\"class\"\n  >\n    2\n  </button>\n</div>\n```\n\n# Mutations\n```\nUPDATE button/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-class-to-tags/__snapshots__/dom.expected/components/tags-layout.js",
    "content": "export const $template = \"<button id=tags> </button><div><!></div>\";\nexport const $walks = /* get, next(1), get, out(1), next(1), replace, out(1) */\" D lD%l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $count__script = _._script(\"__tests__/components/tags-layout.marko_0_count\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $count($scope, $scope.count + 1);\n}));\nconst $count = /* @__PURE__ */_._let(\"count/6\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.count);\n  $count__script($scope);\n});\nexport function $setup($scope) {\n  $count($scope, 0);\n}\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/2\");\nexport const $input_content = ($scope, input_content) => $dynamicTag($scope, input_content);\nexport const $input = ($scope, input) => $input_content($scope, input.content);\nexport default /* @__PURE__ */_._template(\"__tests__/components/tags-layout.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-class-to-tags/__snapshots__/dom.expected/template.hydrate.js",
    "content": "import { init } from \"marko/src/runtime/components/index.js\";\nimport \"./template.marko\";\ninit();"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-class-to-tags/__snapshots__/dom.expected/template.js",
    "content": "import \"marko/src/runtime/helpers/tags-compat/dom-debug.mjs\";\nimport { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _tagsLayout from \"./components/tags-layout.marko\";\nimport _marko_dynamic_tag from \"marko/src/runtime/helpers/dynamic-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {\n  onCreate() {\n    this.state = {\n      count: 0\n    };\n  },\n  increment() {\n    this.state.count++;\n  }\n};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_dynamic_tag(out, _tagsLayout, null, out => {\n    out.be(\"button\", {\n      \"id\": \"class\"\n    }, \"1\", _component, null, 1, {\n      \"onclick\": _componentDef.d(\"click\", \"increment\", false)\n    });\n    out.t(state.count, _component);\n    out.ee();\n  }, null, null, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-class-to-tags/__snapshots__/html.expected/components/tags-layout.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/components/tags-layout.marko\", input => {\n  const $scope0_reason = _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let count = 0;\n  _._html(`<button id=tags>${_._escape(count)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}<div>`);\n  _._dynamic_tag($scope0_id, \"#text/2\", input.content, {}, 0, 0, _._serialize_guard($scope0_reason, /* input.content */0));\n  _._html(\"</div>\");\n  _._script($scope0_id, \"__tests__/components/tags-layout.marko_0_count\");\n  _._scope($scope0_id, {\n    count\n  }, \"__tests__/components/tags-layout.marko\", 0, {\n    count: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-class-to-tags/__snapshots__/html.expected/template.js",
    "content": "import \"marko/src/runtime/helpers/tags-compat/html-debug.mjs\";\nimport { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { x as _marko_escapeXml } from \"marko/src/runtime/html/helpers/escape-xml.js\";\nimport _tagsLayout from \"./components/tags-layout.marko\";\nimport _marko_dynamic_tag from \"marko/src/runtime/helpers/dynamic-tag.js\";\nimport _initComponents from \"marko/src/core-tags/components/init-components-tag.js\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {\n  onCreate() {\n    this.state = {\n      count: 0\n    };\n  },\n  increment() {\n    this.state.count++;\n  }\n};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_dynamic_tag(out, _tagsLayout, null, out => {\n    out.w(\"<button id=class>\");\n    out.w(_marko_escapeXml(state.count));\n    out.w(\"</button>\");\n  }, null, null, _componentDef, \"0\");\n  _marko_tag(_initComponents, {}, out, _componentDef, \"2\");\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-class-to-tags/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"tags\"\n    >\n      0\n      <!--Ms*1 #text/1-->\n    </button>\n    <!--Ms*1 #button/0-->\n    <div>\n      <button\n        id=\"class\"\n      >\n        0\n      </button>\n      <!--Ms]1 #text/2 2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"s\");\n      M.s.r = [_ =&gt; (_.a = [0,\n        {\n          m5c: \"s0-0\",\n          \"ConditionalRenderer:#text/2\": _._.$compat_renderBody,\n          count: 0\n        }]),\n        \"$compat_setScope 1 __tests__/components/tags-layout.marko_0_count 1\"\n      ];\n      M.s.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"w\": [\n          [\"s0\", 0,\n          {},\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/template.marko\"\n        ]\n      })\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT #text\nINSERT html/body/#text0\nINSERT html/body/#text5\nREMOVE #comment before html/body/#text0\nREMOVE #comment after html/body/#text5\nINSERT html/body/div/#text0, html/body/div/#text3\nREMOVE #comment after html/body/div/#text3\nREMOVE button after html/body/div/#text3\nREMOVE #text after html/body/div/#text3\nINSERT html/body/#text1\nINSERT html/body/#text4\nINSERT html/body/#text2\nINSERT html/body/#text3\nREMOVE #comment after html/body/#text2\nREMOVE #comment after html/body/div\nREMOVE html/body/#text4 after html/body/#text3\nINSERT html/body/#text4\nINSERT html/body/div/#text1\nINSERT html/body/div/#text2\nINSERT html/body/div/button\nINSERT html/body/div/button/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"tags\"\n    >\n      1\n      <!--Ms*1 #text/1-->\n    </button>\n    <!--Ms*1 #button/0-->\n    <div>\n      <button\n        id=\"class\"\n      >\n        0\n      </button>\n      <!--Ms]1 #text/2 2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"s\");\n      M.s.r = [_ =&gt; (_.a = [0,\n        {\n          m5c: \"s0-0\",\n          \"ConditionalRenderer:#text/2\": _._.$compat_renderBody,\n          count: 0\n        }]),\n        \"$compat_setScope 1 __tests__/components/tags-layout.marko_0_count 1\"\n      ];\n      M.s.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"w\": [\n          [\"s0\", 0,\n          {},\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/template.marko\"\n        ]\n      })\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#class\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"tags\"\n    >\n      1\n      <!--Ms*1 #text/1-->\n    </button>\n    <!--Ms*1 #button/0-->\n    <div>\n      <button\n        id=\"class\"\n      >\n        1\n      </button>\n      <!--Ms]1 #text/2 2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"s\");\n      M.s.r = [_ =&gt; (_.a = [0,\n        {\n          m5c: \"s0-0\",\n          \"ConditionalRenderer:#text/2\": _._.$compat_renderBody,\n          count: 0\n        }]),\n        \"$compat_setScope 1 __tests__/components/tags-layout.marko_0_count 1\"\n      ];\n      M.s.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"w\": [\n          [\"s0\", 0,\n          {},\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/template.marko\"\n        ]\n      })\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text0, html/body/div/#text3\nREMOVE #text after html/body/div/#text3\nREMOVE #text after html/body/div/#text3\nREMOVE button after html/body/div/#text3\nREMOVE #text after html/body/div/#text3\nREMOVE #text after html/body/div/#text3\nINSERT html/body/div/#text1\nINSERT html/body/div/#text2\nINSERT html/body/div/button\nINSERT html/body/div/button/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"tags\"\n    >\n      2\n      <!--Ms*1 #text/1-->\n    </button>\n    <!--Ms*1 #button/0-->\n    <div>\n      <button\n        id=\"class\"\n      >\n        1\n      </button>\n      <!--Ms]1 #text/2 2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"s\");\n      M.s.r = [_ =&gt; (_.a = [0,\n        {\n          m5c: \"s0-0\",\n          \"ConditionalRenderer:#text/2\": _._.$compat_renderBody,\n          count: 0\n        }]),\n        \"$compat_setScope 1 __tests__/components/tags-layout.marko_0_count 1\"\n      ];\n      M.s.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"w\": [\n          [\"s0\", 0,\n          {},\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/template.marko\"\n        ]\n      })\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#class\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"tags\"\n    >\n      2\n      <!--Ms*1 #text/1-->\n    </button>\n    <!--Ms*1 #button/0-->\n    <div>\n      <button\n        id=\"class\"\n      >\n        2\n      </button>\n      <!--Ms]1 #text/2 2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"s\");\n      M.s.r = [_ =&gt; (_.a = [0,\n        {\n          m5c: \"s0-0\",\n          \"ConditionalRenderer:#text/2\": _._.$compat_renderBody,\n          count: 0\n        }]),\n        \"$compat_setScope 1 __tests__/components/tags-layout.marko_0_count 1\"\n      ];\n      M.s.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"w\": [\n          [\"s0\", 0,\n          {},\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/template.marko\"\n        ]\n      })\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text0, html/body/div/#text3\nREMOVE #text after html/body/div/#text3\nREMOVE #text after html/body/div/#text3\nREMOVE button after html/body/div/#text3\nREMOVE #text after html/body/div/#text3\nREMOVE #text after html/body/div/#text3\nINSERT html/body/div/#text1\nINSERT html/body/div/#text2\nINSERT html/body/div/button\nINSERT html/body/div/button/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"tags\"\n    >\n      3\n      <!--Ms*1 #text/1-->\n    </button>\n    <!--Ms*1 #button/0-->\n    <div>\n      <button\n        id=\"class\"\n      >\n        2\n      </button>\n      <!--Ms]1 #text/2 2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"s\");\n      M.s.r = [_ =&gt; (_.a = [0,\n        {\n          m5c: \"s0-0\",\n          \"ConditionalRenderer:#text/2\": _._.$compat_renderBody,\n          count: 0\n        }]),\n        \"$compat_setScope 1 __tests__/components/tags-layout.marko_0_count 1\"\n      ];\n      M.s.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"w\": [\n          [\"s0\", 0,\n          {},\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/template.marko\"\n        ]\n      })\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-class-to-tags/__snapshots__/ssr.expected.md",
    "content": "# Write\n  <!--M#s0--><!--F#1--><button id=tags>0<!--Ms*1 #text/1--></button><!--Ms*1 #button/0--><div><!--Ms[--><button id=class>0</button><!--Ms]1 #text/2 2--></div><!--F/--><!--M/--><script>WALKER_RUNTIME(\"M\")(\"s\");M.s.r=[_=>(_.a=[0,{m5c:\"s0-0\",\"ConditionalRenderer:#text/2\":_._.$compat_renderBody,count:0}]),\"$compat_setScope 1 __tests__/components/tags-layout.marko_0_count 1\"];M.s.w();$MC=(window.$MC||[]).concat({\"w\":[[\"s0\",0,{},{\"f\":1}]],\"t\":[\"__tests__/template.marko\"]})</script>\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <!--M#s0-->\n    <!--F#1-->\n    <button\n      id=\"tags\"\n    >\n      0\n      <!--Ms*1 #text/1-->\n    </button>\n    <!--Ms*1 #button/0-->\n    <div>\n      <!--Ms[-->\n      <button\n        id=\"class\"\n      >\n        0\n      </button>\n      <!--Ms]1 #text/2 2-->\n    </div>\n    <!--F/-->\n    <!--M/-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"s\");\n      M.s.r = [_ =&gt; (_.a = [0,\n        {\n          m5c: \"s0-0\",\n          \"ConditionalRenderer:#text/2\": _._.$compat_renderBody,\n          count: 0\n        }]),\n        \"$compat_setScope 1 __tests__/components/tags-layout.marko_0_count 1\"\n      ];\n      M.s.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"w\": [\n          [\"s0\", 0,\n          {},\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/template.marko\"\n        ]\n      })\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment2\nINSERT html/body/div\nINSERT html/body/div/#comment0\nINSERT html/body/div/button\nINSERT html/body/div/button/#text\nINSERT html/body/div/#comment1\nINSERT html/body/#comment3\nINSERT html/body/#comment4\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-class-to-tags/components/tags-layout.marko",
    "content": "<let/count = 0/>\n<button id=\"tags\" onClick() { count++ }>\n  ${count}\n</button>\n<div>\n  <${input.content}/>\n</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-class-to-tags/template.marko",
    "content": "class {\n  onCreate() {\n    this.state = { count: 0 };\n  }\n  increment() {\n    this.state.count++;\n  }\n}\n\n<tags-layout>\n  <button id=\"class\" onClick(\"increment\")>\n    ${state.count}\n  </button>\n</tags-layout>\n\n<init-components/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-class-to-tags/test.ts",
    "content": "export const steps = [\n  {},\n  clickTags,\n  clickClass,\n  clickTags,\n  clickClass,\n  clickTags,\n];\n\nfunction clickClass(container: Element) {\n  (container.querySelector(\"#class\") as HTMLButtonElement).click();\n}\n\nfunction clickTags(container: Element) {\n  (container.querySelector(\"#tags\") as HTMLButtonElement).click();\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-tags-to-class/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<button\n  id=\"class\"\n>\n  0\n</button>\n<div>\n  <button\n    id=\"tags\"\n  >\n    0\n  </button>\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #text0, #text1, #comment1\nINSERT button\nINSERT button/#text\nINSERT div\nINSERT div/#text0\nINSERT div/#text3\nINSERT div/#text1\nINSERT div/#text2\nINSERT div/button\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<!---->\n<button\n  id=\"class\"\n>\n  0\n</button>\n<div>\n  <button\n    id=\"tags\"\n  >\n    1\n  </button>\n</div>\n<!---->\n```\n\n# Mutations\n```\nUPDATE div/button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#class\").click();\n```\n```html\n<!---->\n<button\n  id=\"class\"\n>\n  1\n</button>\n<div>\n  <button\n    id=\"tags\"\n  >\n    1\n  </button>\n</div>\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<!---->\n<button\n  id=\"class\"\n>\n  1\n</button>\n<div>\n  <button\n    id=\"tags\"\n  >\n    2\n  </button>\n</div>\n<!---->\n```\n\n# Mutations\n```\nUPDATE div/button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#class\").click();\n```\n```html\n<!---->\n<button\n  id=\"class\"\n>\n  2\n</button>\n<div>\n  <button\n    id=\"tags\"\n  >\n    2\n  </button>\n</div>\n<!---->\n```\n\n# Mutations\n```\nUPDATE button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<!---->\n<button\n  id=\"class\"\n>\n  2\n</button>\n<div>\n  <button\n    id=\"tags\"\n  >\n    3\n  </button>\n</div>\n<!---->\n```\n\n# Mutations\n```\nUPDATE div/button/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-tags-to-class/__snapshots__/dom.expected/components/class-layout.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/components/class-layout.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_dynamic_tag from \"marko/src/runtime/helpers/dynamic-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {\n  onCreate() {\n    this.state = {\n      count: 0\n    };\n  },\n  increment() {\n    this.state.count++;\n  }\n};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.be(\"button\", {\n    \"id\": \"class\"\n  }, \"0\", _component, null, 1, {\n    \"onclick\": _componentDef.d(\"click\", \"increment\", false)\n  });\n  out.t(state.count, _component);\n  out.ee();\n  out.be(\"div\", null, \"1\", _component, null, 0);\n  _marko_dynamic_tag(out, input.renderBody, null, null, null, null, _componentDef, \"2\");\n  out.ee();\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-tags-to-class/__snapshots__/dom.expected/template.hydrate.js",
    "content": "import init6 from \"virtual:./template.marko.hydrate-6.js import { init } from \\\"@marko/runtime-tags/debug/dom\\\";\\nimport \\\"./template.marko\\\";\\nexport default () => init();\";\nimport init5 from \"virtual:./template.marko.hydrate-5.js import { init } from \\\"marko/src/runtime/components/index.js\\\";\\nimport \\\"./components/class-layout.marko\\\";\\nexport default () => init();\";\ninit6();\ninit5();"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-tags-to-class/__snapshots__/dom.expected/template.js",
    "content": "import \"marko/src/runtime/helpers/tags-compat/dom-debug.mjs\";\nexport const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport _classLayout from \"./components/class-layout.marko\";\n_._resume(\"__tests__/components/class-layout.marko\", _classLayout);\nconst $classlayout_content__count__script = _._script(\"__tests__/template.marko_1_count\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $count($scope._, $scope._.count + 1);\n}));\nconst $classlayout_content__count = /* @__PURE__ */_._closure_get(\"count\", $scope => {\n  _._text($scope[\"#text/1\"], $scope._.count);\n  $classlayout_content__count__script($scope);\n});\nconst $classlayout_content__setup = $classlayout_content__count;\nconst $classlayout_content = _._content_resume(\"__tests__/template.marko_1_content\", \"<button id=tags> </button>\", /* get, next(1), get, out(1) */\" D l\", $classlayout_content__setup);\nconst $count__closure = /* @__PURE__ */_._closure($classlayout_content__count);\nconst $count = /* @__PURE__ */_._let(\"count/1\", $count__closure);\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\", $classlayout_content);\nexport function $setup($scope) {\n  $count($scope, 0);\n  $dynamicTag($scope, _classLayout);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-tags-to-class/__snapshots__/html.expected/components/class-layout.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/components/class-layout.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { x as _marko_escapeXml } from \"marko/src/runtime/html/helpers/escape-xml.js\";\nimport _marko_dynamic_tag from \"marko/src/runtime/helpers/dynamic-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {\n  onCreate() {\n    this.state = {\n      count: 0\n    };\n  },\n  increment() {\n    this.state.count++;\n  }\n};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<button id=class>\");\n  out.w(_marko_escapeXml(state.count));\n  out.w(\"</button>\");\n  out.w(\"<div>\");\n  _marko_dynamic_tag(out, input.renderBody, null, null, null, null, _componentDef, \"2\");\n  out.w(\"</div>\");\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-tags-to-class/__snapshots__/html.expected/template.js",
    "content": "import { s as _s } from \"marko/src/runtime/helpers/tags-compat/html-debug.mjs\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nimport _classLayout from \"./components/class-layout.marko\";\n_s(_classLayout, \"__tests__/components/class-layout.marko\");\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $count__closures = new Set();\n  let count = 0;\n  _._dynamic_tag($scope0_id, \"#text/0\", _classLayout, {}, _._content_resume(\"__tests__/template.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    _._scope_reason();\n    _._html(`<button id=tags>${_._escape(count)}${_._el_resume($scope1_id, \"#text/1\")}</button>${_._el_resume($scope1_id, \"#button/0\")}`);\n    _._script($scope1_id, \"__tests__/template.marko_1_count\");\n    _._subscribe($count__closures, _._scope($scope1_id, {\n      _: _._scope_with_id($scope0_id),\n      \"ClosureSignalIndex:count\": 0\n    }, \"__tests__/template.marko\", \"2:2\"));\n    _._resume_branch($scope1_id);\n  }, $scope0_id), 0, 0);\n  _._scope($scope0_id, {\n    count,\n    \"ClosureScopes:count\": $count__closures\n  }, \"__tests__/template.marko\", 0, {\n    count: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-tags-to-class/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"class\"\n    >\n      0\n    </button>\n    <div>\n      <button\n        id=\"tags\"\n      >\n        0\n        <!--M_*3 #text/1-->\n      </button>\n      <!--M_*3 #button/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.b = {\n          count: 0,\n          \"ClosureScopes:count\": _.d = new Set\n        },\n        {\n          m5c: \"_0\",\n          m5i: _.a = {}\n        }, _.e = {\n          m5c: \"_0-2\",\n          _: _.b,\n          \"ClosureSignalIndex:count\": 0\n        }], _.a.renderBody = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.b), (_.d).add(_.e), _.c), _ =&gt; (_.f = [-3, _.b]),\n        \"$compat_setScope 3 __tests__/template.marko_1_count 3\"\n      ];\n      M._.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"p\": \"_\",\n        \"w\": [\n          [\"_0\", 0, 2,\n          {\n            \"f\": 1,\n            \"r\": [\n              \"__tests__/template.marko_1_content\",\n              1\n            ]\n          }]\n        ],\n        \"t\": [\n          \"__tests__/components/class-layout.marko\"\n        ]\n      });\n      M._.r.push(\"$compat_setScope 2\");\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text0\nINSERT html/body/#text1\nREMOVE #comment before html/body/#text0\nREMOVE #comment after html/body/#text1\nINSERT html/body/div/#text0\nINSERT html/body/div/#text3\nINSERT html/body/div/#text1\nINSERT html/body/div/#text2\nREMOVE #comment after html/body/div/#text1\nREMOVE #comment after html/body/div/#comment\nREMOVE html/body/div/#text3 after html/body/div/#text2\nINSERT html/body/div/#text3\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"class\"\n    >\n      0\n    </button>\n    <div>\n      <button\n        id=\"tags\"\n      >\n        1\n        <!--M_*3 #text/1-->\n      </button>\n      <!--M_*3 #button/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.b = {\n          count: 0,\n          \"ClosureScopes:count\": _.d = new Set\n        },\n        {\n          m5c: \"_0\",\n          m5i: _.a = {}\n        }, _.e = {\n          m5c: \"_0-2\",\n          _: _.b,\n          \"ClosureSignalIndex:count\": 0\n        }], _.a.renderBody = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.b), (_.d).add(_.e), _.c), _ =&gt; (_.f = [-3, _.b]),\n        \"$compat_setScope 3 __tests__/template.marko_1_count 3\"\n      ];\n      M._.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"p\": \"_\",\n        \"w\": [\n          [\"_0\", 0, 2,\n          {\n            \"f\": 1,\n            \"r\": [\n              \"__tests__/template.marko_1_content\",\n              1\n            ]\n          }]\n        ],\n        \"t\": [\n          \"__tests__/components/class-layout.marko\"\n        ]\n      });\n      M._.r.push(\"$compat_setScope 2\");\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#class\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"class\"\n    >\n      1\n    </button>\n    <div>\n      <button\n        id=\"tags\"\n      >\n        1\n        <!--M_*3 #text/1-->\n      </button>\n      <!--M_*3 #button/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.b = {\n          count: 0,\n          \"ClosureScopes:count\": _.d = new Set\n        },\n        {\n          m5c: \"_0\",\n          m5i: _.a = {}\n        }, _.e = {\n          m5c: \"_0-2\",\n          _: _.b,\n          \"ClosureSignalIndex:count\": 0\n        }], _.a.renderBody = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.b), (_.d).add(_.e), _.c), _ =&gt; (_.f = [-3, _.b]),\n        \"$compat_setScope 3 __tests__/template.marko_1_count 3\"\n      ];\n      M._.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"p\": \"_\",\n        \"w\": [\n          [\"_0\", 0, 2,\n          {\n            \"f\": 1,\n            \"r\": [\n              \"__tests__/template.marko_1_content\",\n              1\n            ]\n          }]\n        ],\n        \"t\": [\n          \"__tests__/components/class-layout.marko\"\n        ]\n      });\n      M._.r.push(\"$compat_setScope 2\");\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"class\"\n    >\n      1\n    </button>\n    <div>\n      <button\n        id=\"tags\"\n      >\n        2\n        <!--M_*3 #text/1-->\n      </button>\n      <!--M_*3 #button/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.b = {\n          count: 0,\n          \"ClosureScopes:count\": _.d = new Set\n        },\n        {\n          m5c: \"_0\",\n          m5i: _.a = {}\n        }, _.e = {\n          m5c: \"_0-2\",\n          _: _.b,\n          \"ClosureSignalIndex:count\": 0\n        }], _.a.renderBody = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.b), (_.d).add(_.e), _.c), _ =&gt; (_.f = [-3, _.b]),\n        \"$compat_setScope 3 __tests__/template.marko_1_count 3\"\n      ];\n      M._.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"p\": \"_\",\n        \"w\": [\n          [\"_0\", 0, 2,\n          {\n            \"f\": 1,\n            \"r\": [\n              \"__tests__/template.marko_1_content\",\n              1\n            ]\n          }]\n        ],\n        \"t\": [\n          \"__tests__/components/class-layout.marko\"\n        ]\n      });\n      M._.r.push(\"$compat_setScope 2\");\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#class\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"class\"\n    >\n      2\n    </button>\n    <div>\n      <button\n        id=\"tags\"\n      >\n        2\n        <!--M_*3 #text/1-->\n      </button>\n      <!--M_*3 #button/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.b = {\n          count: 0,\n          \"ClosureScopes:count\": _.d = new Set\n        },\n        {\n          m5c: \"_0\",\n          m5i: _.a = {}\n        }, _.e = {\n          m5c: \"_0-2\",\n          _: _.b,\n          \"ClosureSignalIndex:count\": 0\n        }], _.a.renderBody = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.b), (_.d).add(_.e), _.c), _ =&gt; (_.f = [-3, _.b]),\n        \"$compat_setScope 3 __tests__/template.marko_1_count 3\"\n      ];\n      M._.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"p\": \"_\",\n        \"w\": [\n          [\"_0\", 0, 2,\n          {\n            \"f\": 1,\n            \"r\": [\n              \"__tests__/template.marko_1_content\",\n              1\n            ]\n          }]\n        ],\n        \"t\": [\n          \"__tests__/components/class-layout.marko\"\n        ]\n      });\n      M._.r.push(\"$compat_setScope 2\");\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"class\"\n    >\n      2\n    </button>\n    <div>\n      <button\n        id=\"tags\"\n      >\n        3\n        <!--M_*3 #text/1-->\n      </button>\n      <!--M_*3 #button/0-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.b = {\n          count: 0,\n          \"ClosureScopes:count\": _.d = new Set\n        },\n        {\n          m5c: \"_0\",\n          m5i: _.a = {}\n        }, _.e = {\n          m5c: \"_0-2\",\n          _: _.b,\n          \"ClosureSignalIndex:count\": 0\n        }], _.a.renderBody = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.b), (_.d).add(_.e), _.c), _ =&gt; (_.f = [-3, _.b]),\n        \"$compat_setScope 3 __tests__/template.marko_1_count 3\"\n      ];\n      M._.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"p\": \"_\",\n        \"w\": [\n          [\"_0\", 0, 2,\n          {\n            \"f\": 1,\n            \"r\": [\n              \"__tests__/template.marko_1_content\",\n              1\n            ]\n          }]\n        ],\n        \"t\": [\n          \"__tests__/components/class-layout.marko\"\n        ]\n      });\n      M._.r.push(\"$compat_setScope 2\");\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/button/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-tags-to-class/__snapshots__/ssr.expected.md",
    "content": "# Write\n  <!--M#_0--><button id=class>0</button><div><!--F#1--><button id=tags>0<!--M_*3 #text/1--></button><!--M_*3 #button/0--><!--F/--></div><!--M/--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.b={count:0,\"ClosureScopes:count\":_.d=new Set},{m5c:\"_0\",m5i:_.a={}},_.e={m5c:\"_0-2\",_:_.b,\"ClosureSignalIndex:count\":0}],_.a.renderBody=_._[\"__tests__/template.marko_1_content\"](_.b),(_.d).add(_.e),_.c),_=>(_.f=[-3,_.b]),\"$compat_setScope 3 __tests__/template.marko_1_count 3\"];M._.w();$MC=(window.$MC||[]).concat({\"p\":\"_\",\"w\":[[\"_0\",0,2,{\"f\":1,\"r\":[\"__tests__/template.marko_1_content\",1]}]],\"t\":[\"__tests__/components/class-layout.marko\"]});M._.r.push(\"$compat_setScope 2\");M._.w()</script>\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <!--M#_0-->\n    <button\n      id=\"class\"\n    >\n      0\n    </button>\n    <div>\n      <!--F#1-->\n      <button\n        id=\"tags\"\n      >\n        0\n        <!--M_*3 #text/1-->\n      </button>\n      <!--M_*3 #button/0-->\n      <!--F/-->\n    </div>\n    <!--M/-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.b = {\n          count: 0,\n          \"ClosureScopes:count\": _.d = new Set\n        },\n        {\n          m5c: \"_0\",\n          m5i: _.a = {}\n        }, _.e = {\n          m5c: \"_0-2\",\n          _: _.b,\n          \"ClosureSignalIndex:count\": 0\n        }], _.a.renderBody = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.b), (_.d).add(_.e), _.c), _ =&gt; (_.f = [-3, _.b]),\n        \"$compat_setScope 3 __tests__/template.marko_1_count 3\"\n      ];\n      M._.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"p\": \"_\",\n        \"w\": [\n          [\"_0\", 0, 2,\n          {\n            \"f\": 1,\n            \"r\": [\n              \"__tests__/template.marko_1_content\",\n              1\n            ]\n          }]\n        ],\n        \"t\": [\n          \"__tests__/components/class-layout.marko\"\n        ]\n      });\n      M._.r.push(\"$compat_setScope 2\");\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#comment0\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/div\nINSERT html/body/div/#comment0\nINSERT html/body/div/button\nINSERT html/body/div/button/#text\nINSERT html/body/div/button/#comment\nINSERT html/body/div/#comment1\nINSERT html/body/div/#comment2\nINSERT html/body/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-tags-to-class/components/class-layout.marko",
    "content": "class {\n  onCreate() {\n    this.state = { count: 0 };\n  }\n  increment() {\n    this.state.count++;\n  }\n}\n<button id=\"class\" onClick(\"increment\")>\n  ${state.count}\n</button>\n<div>\n  <${input.renderBody}/>\n</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-tags-to-class/template.marko",
    "content": "<let/count = 0/>\n<class-layout>\n  <button id=\"tags\" onClick() { count++ }>\n    ${count}\n  </button>\n</class-layout>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-tags-to-class/test.ts",
    "content": "export const steps = [\n  {},\n  clickTags,\n  clickClass,\n  clickTags,\n  clickClass,\n  clickTags,\n];\n\nfunction clickClass(container: Element) {\n  (container.querySelector(\"#class\") as HTMLButtonElement).click();\n}\n\nfunction clickTags(container: Element) {\n  (container.querySelector(\"#tags\") as HTMLButtonElement).click();\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-stateless-tags-to-class/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<button>\n  Say Hi\n</button>\n<span\n  id=\"display\"\n/>\n```\n\n# Mutations\n```\nINSERT #comment, #text0, #text1, span\nINSERT button\nINSERT button/#text0\nINSERT button/#text4\nINSERT button/#text1\nINSERT button/#text3\nINSERT button/#text2\n```\n\n# Render ASYNC\n```html\n<!---->\n<button>\n  Say Hi\n</button>\n<span\n  id=\"display\"\n>\n  Hi!\n</span>\n```\n\n# Mutations\n```\nINSERT span/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<!---->\n<button>\n  Say Hi\n</button>\n<span\n  id=\"display\"\n>\n  Hi!\n</span>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-stateless-tags-to-class/__snapshots__/dom.expected/components/my-button/component-browser.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/components/my-button/component-browser.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nexport default class {\n  handleClick(e) {\n    if (!this.input.disabled) {\n      this.emit(\"click\", e);\n    }\n  }\n}\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-stateless-tags-to-class/__snapshots__/dom.expected/components/my-button/index.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/components/my-button/index.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_dynamic_tag from \"marko/src/runtime/helpers/dynamic-tag.js\";\nimport _marko_attrs from \"marko/src/runtime/vdom/helpers/attrs.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\nimport _marko_split_component from \"./component-browser.marko\";\n_marko_registerComponent(_marko_componentType, () => _marko_split_component);\nconst _marko_component = {};\n_marko_split_component.renderer = _marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.be(\"button\", _marko_attrs(input), \"0\", _component, null, 4, {\n    \"onclick\": _componentDef.d(\"click\", \"handleClick\", false)\n  });\n  _marko_dynamic_tag(out, input.renderBody, null, null, null, null, _componentDef, \"1\");\n  out.ee();\n}, {\n  t: _marko_componentType,\n  s: true,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-stateless-tags-to-class/__snapshots__/dom.expected/template.hydrate.js",
    "content": "import init6 from \"virtual:./template.marko.hydrate-6.js import { init } from \\\"@marko/runtime-tags/debug/dom\\\";\\nimport \\\"./template.marko\\\";\\nexport default () => init();\";\nimport init5 from \"virtual:./template.marko.hydrate-5.js import { register, init } from \\\"marko/src/runtime/components/index.js\\\";\\nimport component_0 from \\\"./components/my-button/component-browser.marko\\\";\\nregister(\\\"__tests__/components/my-button/index.marko\\\", component_0);\\nexport default () => init();\";\ninit6();\ninit5();"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-stateless-tags-to-class/__snapshots__/dom.expected/template.js",
    "content": "import \"marko/src/runtime/helpers/tags-compat/dom-debug.mjs\";\nexport const $template = \"<!><!><span id=display></span>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nimport _myButton from \"./components/my-button/index.marko\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\n_._resume(\"__tests__/components/my-button/index.marko\", _myButton);\n_._resume_dynamic_tag();\nconst $mybutton_content = _._content_resume(\"__tests__/template.marko_1_content\", \"Say Hi\", /* over(1) */\"b\");\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\", $mybutton_content);\nexport function $setup($scope) {\n  $dynamicTag($scope, _myButton, () => ({\n    onClick: $onClick\n  }));\n}\nfunction $onClick() {\n  document.getElementById(\"display\").innerHTML = \"Hi!\";\n}\n_._resume(\"__tests__/template.marko_0/onClick\", $onClick);\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-stateless-tags-to-class/__snapshots__/html.expected/components/my-button/component-browser.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/components/my-button/component-browser.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nexport default class {\n  handleClick(e) {\n    if (!this.input.disabled) {\n      this.emit(\"click\", e);\n    }\n  }\n}\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {}, {\n  t: _marko_componentType,\n  i: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-stateless-tags-to-class/__snapshots__/html.expected/components/my-button/index.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/components/my-button/index.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_dynamic_tag from \"marko/src/runtime/helpers/dynamic-tag.js\";\nimport _marko_props from \"marko/src/runtime/html/helpers/data-marko.js\";\nimport _marko_attrs from \"marko/src/runtime/html/helpers/attrs.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(`<button${_marko_props(out, _componentDef, {\n    \"onclick\": _componentDef.d(\"click\", \"handleClick\", false)\n  })}${_marko_attrs(input)}>`);\n  _marko_dynamic_tag(out, input.renderBody, null, null, null, null, _componentDef, \"1\");\n  out.w(\"</button>\");\n}, {\n  t: _marko_componentType,\n  s: true,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-stateless-tags-to-class/__snapshots__/html.expected/template.js",
    "content": "import { s as _s } from \"marko/src/runtime/helpers/tags-compat/html-debug.mjs\";\nimport _myButton from \"./components/my-button/index.marko\";\n_s(_myButton, \"__tests__/components/my-button/index.marko\");\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  _._dynamic_tag($scope0_id, \"#text/0\", _myButton, {\n    onClick: _._resume(function () {\n      document.getElementById(\"display\").innerHTML = \"Hi!\";\n    }, \"__tests__/template.marko_0/onClick\")\n  }, _._content_resume(\"__tests__/template.marko_1_content\", () => {\n    const $scope1_id = _._scope_id();\n    _._scope_reason();\n    _._html(\"Say Hi\");\n  }, $scope0_id), 0, 0);\n  _._html(\"<span id=display></span>\");\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-stateless-tags-to-class/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Say Hi\n    </button>\n    <span\n      id=\"display\"\n    />\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1,\n      {\n        m5c: \"_0\",\n        m5i: _.a = {\n          renderBody: _.c = {}\n        }\n      },\n      {\n        m5c: \"_0-1\"\n      }], _.a.renderBody = _._[\n        \"__tests__/template.marko_1_content\"\n        ](_.c), _.b), _ =&gt; (_.d = [-3, _.c]), \"$compat_setScope 3\"];\n      M._.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"p\": \"_\",\n        \"w\": [\n          [\"_0\", 0, 2,\n          {\n            \"e\": [\n              [\"click\", [\n                \"__tests__/template.marko_0/onClick\",\n                null\n              ]]\n            ],\n            \"f\": 1,\n            \"r\": [\n              \"__tests__/template.marko_1_content\",\n              1\n            ]\n          }]\n        ],\n        \"t\": [\n          \"__tests__/components/my-button/index.marko\"\n        ]\n      });\n      M._.r.push(\"$compat_setScope 2\");\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text0\nINSERT html/body/#text1\nREMOVE #comment before html/body/#text0\nREMOVE #comment after html/body/#text1\nINSERT html/body/button/#text0\nINSERT html/body/button/#text4\nINSERT html/body/button/#text1\nINSERT html/body/button/#text3\nREMOVE #comment after html/body/button/#text1\nREMOVE #comment after html/body/button/#text2\nREMOVE html/body/button/#text4 after html/body/button/#text3\nINSERT html/body/button/#text4\n```\n\n# Render ASYNC\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Say Hi\n    </button>\n    <span\n      id=\"display\"\n    >\n      Hi!\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1,\n      {\n        m5c: \"_0\",\n        m5i: _.a = {\n          renderBody: _.c = {}\n        }\n      },\n      {\n        m5c: \"_0-1\"\n      }], _.a.renderBody = _._[\n        \"__tests__/template.marko_1_content\"\n        ](_.c), _.b), _ =&gt; (_.d = [-3, _.c]), \"$compat_setScope 3\"];\n      M._.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"p\": \"_\",\n        \"w\": [\n          [\"_0\", 0, 2,\n          {\n            \"e\": [\n              [\"click\", [\n                \"__tests__/template.marko_0/onClick\",\n                null\n              ]]\n            ],\n            \"f\": 1,\n            \"r\": [\n              \"__tests__/template.marko_1_content\",\n              1\n            ]\n          }]\n        ],\n        \"t\": [\n          \"__tests__/components/my-button/index.marko\"\n        ]\n      });\n      M._.r.push(\"$compat_setScope 2\");\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/span/#text\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button>\n      Say Hi\n    </button>\n    <span\n      id=\"display\"\n    >\n      Hi!\n    </span>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1,\n      {\n        m5c: \"_0\",\n        m5i: _.a = {\n          renderBody: _.c = {}\n        }\n      },\n      {\n        m5c: \"_0-1\"\n      }], _.a.renderBody = _._[\n        \"__tests__/template.marko_1_content\"\n        ](_.c), _.b), _ =&gt; (_.d = [-3, _.c]), \"$compat_setScope 3\"];\n      M._.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"p\": \"_\",\n        \"w\": [\n          [\"_0\", 0, 2,\n          {\n            \"e\": [\n              [\"click\", [\n                \"__tests__/template.marko_0/onClick\",\n                null\n              ]]\n            ],\n            \"f\": 1,\n            \"r\": [\n              \"__tests__/template.marko_1_content\",\n              1\n            ]\n          }]\n        ],\n        \"t\": [\n          \"__tests__/components/my-button/index.marko\"\n        ]\n      });\n      M._.r.push(\"$compat_setScope 2\");\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-stateless-tags-to-class/__snapshots__/ssr.expected.md",
    "content": "# Write\n  <!--M#_0--><button><!--F#1-->Say Hi<!--F/--></button><!--M/--><span id=display></span><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.b=[0,1,{m5c:\"_0\",m5i:_.a={renderBody:_.c={}}},{m5c:\"_0-1\"}],_.a.renderBody=_._[\"__tests__/template.marko_1_content\"](_.c),_.b),_=>(_.d=[-3,_.c]),\"$compat_setScope 3\"];M._.w();$MC=(window.$MC||[]).concat({\"p\":\"_\",\"w\":[[\"_0\",0,2,{\"e\":[[\"click\",[\"__tests__/template.marko_0/onClick\",null]]],\"f\":1,\"r\":[\"__tests__/template.marko_1_content\",1]}]],\"t\":[\"__tests__/components/my-button/index.marko\"]});M._.r.push(\"$compat_setScope 2\");M._.w()</script>\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <!--M#_0-->\n    <button>\n      <!--F#1-->\n      Say Hi\n      <!--F/-->\n    </button>\n    <!--M/-->\n    <span\n      id=\"display\"\n    />\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.b = [0, 1,\n      {\n        m5c: \"_0\",\n        m5i: _.a = {\n          renderBody: _.c = {}\n        }\n      },\n      {\n        m5c: \"_0-1\"\n      }], _.a.renderBody = _._[\n        \"__tests__/template.marko_1_content\"\n        ](_.c), _.b), _ =&gt; (_.d = [-3, _.c]), \"$compat_setScope 3\"];\n      M._.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"p\": \"_\",\n        \"w\": [\n          [\"_0\", 0, 2,\n          {\n            \"e\": [\n              [\"click\", [\n                \"__tests__/template.marko_0/onClick\",\n                null\n              ]]\n            ],\n            \"f\": 1,\n            \"r\": [\n              \"__tests__/template.marko_1_content\",\n              1\n            ]\n          }]\n        ],\n        \"t\": [\n          \"__tests__/components/my-button/index.marko\"\n        ]\n      });\n      M._.r.push(\"$compat_setScope 2\");\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#comment0\nINSERT html/body/button\nINSERT html/body/button/#comment0\nINSERT html/body/button/#text\nINSERT html/body/button/#comment1\nINSERT html/body/#comment1\nINSERT html/body/span\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-stateless-tags-to-class/components/my-button/component-browser.marko",
    "content": "export default class {\n  handleClick(e) {\n    if (!this.input.disabled) {\n      this.emit(\"click\", e)\n    }\n  }\n}"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-stateless-tags-to-class/components/my-button/index.marko",
    "content": "<button on-click(\"handleClick\") ...input>\n  <${input.renderBody}/>\n</button>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-stateless-tags-to-class/template.marko",
    "content": "// use tags\n<my-button onClick() { document.getElementById(\"display\")!.innerHTML = \"Hi!\" }>\n  Say Hi\n</my-button>\n<span#display/>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-stateless-tags-to-class/test.ts",
    "content": "export const steps = [{}, click];\n\nfunction click(container: Element) {\n  (container.querySelector(\"button\") as HTMLButtonElement).click();\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-tag-params-class-to-tags/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button\n  id=\"tags\"\n>\n  0\n</button>\n<div>\n  <h1>\n    hello\n  </h1>\n  <button\n    id=\"class\"\n  >\n    1 * 0 = 0\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT #text0, #text1, #text2, button, div, #text3, #text4, #text5\nINSERT div/#text1\nINSERT div/#text2\nINSERT div/h1\nINSERT div/h1/#text\nINSERT div/button\nINSERT div/button/#text0\nINSERT div/button/#text1\nINSERT div/button/#text2\nINSERT div/button/#text3\nINSERT div/button/#text4\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<button\n  id=\"tags\"\n>\n  1\n</button>\n<div>\n  <h1>\n    hello\n  </h1>\n  <button\n    id=\"class\"\n  >\n    1 * 1 = 1\n  </button>\n</div>\n```\n\n# Mutations\n```\nUPDATE button/#text \"0\" => \"1\"\nUPDATE div/button/#text2 \"0\" => \"1\"\nUPDATE div/button/#text4 \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#class\").click();\n```\n```html\n<button\n  id=\"tags\"\n>\n  1\n</button>\n<div>\n  <h1>\n    hello\n  </h1>\n  <button\n    id=\"class\"\n  >\n    2 * 1 = 2\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT div/#text0, div/#text3\nREMOVE #text after div/#text3\nREMOVE #text after div/#text3\nREMOVE h1 after div/#text3\nREMOVE button after div/#text3\nREMOVE #text after div/#text3\nREMOVE #text after div/#text3\nINSERT div/#text1\nINSERT div/#text2\nINSERT div/h1\nINSERT div/h1/#text\nINSERT div/button\nINSERT div/button/#text0\nINSERT div/button/#text1\nINSERT div/button/#text2\nINSERT div/button/#text3\nINSERT div/button/#text4\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<button\n  id=\"tags\"\n>\n  2\n</button>\n<div>\n  <h1>\n    hello\n  </h1>\n  <button\n    id=\"class\"\n  >\n    2 * 2 = 4\n  </button>\n</div>\n```\n\n# Mutations\n```\nUPDATE button/#text \"1\" => \"2\"\nUPDATE div/button/#text2 \"1\" => \"2\"\nUPDATE div/button/#text4 \"2\" => \"4\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#class\").click();\n```\n```html\n<button\n  id=\"tags\"\n>\n  2\n</button>\n<div>\n  <h1>\n    hello\n  </h1>\n  <button\n    id=\"class\"\n  >\n    3 * 2 = 6\n  </button>\n</div>\n```\n\n# Mutations\n```\nINSERT div/#text0, div/#text3\nREMOVE #text after div/#text3\nREMOVE #text after div/#text3\nREMOVE h1 after div/#text3\nREMOVE button after div/#text3\nREMOVE #text after div/#text3\nREMOVE #text after div/#text3\nINSERT div/#text1\nINSERT div/#text2\nINSERT div/h1\nINSERT div/h1/#text\nINSERT div/button\nINSERT div/button/#text0\nINSERT div/button/#text1\nINSERT div/button/#text2\nINSERT div/button/#text3\nINSERT div/button/#text4\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<button\n  id=\"tags\"\n>\n  3\n</button>\n<div>\n  <h1>\n    hello\n  </h1>\n  <button\n    id=\"class\"\n  >\n    3 * 3 = 9\n  </button>\n</div>\n```\n\n# Mutations\n```\nUPDATE button/#text \"2\" => \"3\"\nUPDATE div/button/#text2 \"2\" => \"3\"\nUPDATE div/button/#text4 \"6\" => \"9\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-tag-params-class-to-tags/__snapshots__/dom.expected/components/tags-layout.js",
    "content": "export const $template = \"<button id=tags> </button><div><!></div>\";\nexport const $walks = /* get, next(1), get, out(1), next(1), replace, out(1) */\" D lD%l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/2\", 0, 0, 1);\nconst $input_content__OR__count = /* @__PURE__ */_._or(7, $scope => $dynamicTag($scope, $scope.input_content, () => [$scope.count, \"hello\"]));\nconst $count__script = _._script(\"__tests__/components/tags-layout.marko_0_count\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $count($scope, $scope.count + 1);\n}));\nconst $count = /* @__PURE__ */_._let(\"count/6\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.count);\n  $input_content__OR__count($scope);\n  $count__script($scope);\n});\nexport function $setup($scope) {\n  $count($scope, 0);\n}\nexport const $input_content = /* @__PURE__ */_._const(\"input_content\", $input_content__OR__count);\nexport const $input = ($scope, input) => $input_content($scope, input.content);\nexport default /* @__PURE__ */_._template(\"__tests__/components/tags-layout.marko\", $template, $walks, $setup, $input);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-tag-params-class-to-tags/__snapshots__/dom.expected/template.hydrate.js",
    "content": "import { init } from \"marko/src/runtime/components/index.js\";\nimport \"./template.marko\";\ninit();"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-tag-params-class-to-tags/__snapshots__/dom.expected/template.js",
    "content": "import \"marko/src/runtime/helpers/tags-compat/dom-debug.mjs\";\nimport { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _tagsLayout from \"./components/tags-layout.marko\";\nimport _marko_dynamic_tag from \"marko/src/runtime/helpers/dynamic-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {\n  onCreate() {\n    this.state = {\n      multiplier: 1\n    };\n  },\n  increment() {\n    this.state.multiplier++;\n  }\n};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_dynamic_tag(out, _tagsLayout, null, (out, baseCount, message) => {\n    out.be(\"h1\", null, \"1\", _component, null, 0);\n    out.t(message, _component);\n    out.ee();\n    out.be(\"button\", {\n      \"id\": \"class\"\n    }, \"2\", _component, null, 1, {\n      \"onclick\": _componentDef.d(\"click\", \"increment\", false)\n    });\n    out.t(state.multiplier, _component);\n    out.t(\" * \", _component);\n    out.t(baseCount, _component);\n    out.t(\" = \", _component);\n    out.t(baseCount * state.multiplier, _component);\n    out.ee();\n  }, null, null, _componentDef, \"0\");\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-tag-params-class-to-tags/__snapshots__/html.expected/components/tags-layout.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/components/tags-layout.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let count = 0;\n  _._html(`<button id=tags>${_._escape(count)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}<div>`);\n  _._dynamic_tag($scope0_id, \"#text/2\", input.content, [count, \"hello\"], 0, 1);\n  _._html(\"</div>\");\n  _._script($scope0_id, \"__tests__/components/tags-layout.marko_0_count\");\n  _._scope($scope0_id, {\n    input_content: input.content,\n    count\n  }, \"__tests__/components/tags-layout.marko\", 0, {\n    input_content: [\"input.content\"],\n    count: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n});"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-tag-params-class-to-tags/__snapshots__/html.expected/template.js",
    "content": "import \"marko/src/runtime/helpers/tags-compat/html-debug.mjs\";\nimport { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/template.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { x as _marko_escapeXml } from \"marko/src/runtime/html/helpers/escape-xml.js\";\nimport _tagsLayout from \"./components/tags-layout.marko\";\nimport _marko_dynamic_tag from \"marko/src/runtime/helpers/dynamic-tag.js\";\nimport _initComponents from \"marko/src/core-tags/components/init-components-tag.js\";\nimport _marko_tag from \"marko/src/runtime/helpers/render-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {\n  onCreate() {\n    this.state = {\n      multiplier: 1\n    };\n  },\n  increment() {\n    this.state.multiplier++;\n  }\n};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  _marko_dynamic_tag(out, _tagsLayout, null, (out, baseCount, message) => {\n    out.w(\"<h1>\");\n    out.w(_marko_escapeXml(message));\n    out.w(\"</h1>\");\n    out.w(\"<button id=class>\");\n    out.w(_marko_escapeXml(state.multiplier));\n    out.w(\" * \");\n    out.w(_marko_escapeXml(baseCount));\n    out.w(\" = \");\n    out.w(_marko_escapeXml(baseCount * state.multiplier));\n    out.w(\"</button>\");\n  }, null, null, _componentDef, \"0\");\n  _marko_tag(_initComponents, {}, out, _componentDef, \"3\");\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-tag-params-class-to-tags/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"tags\"\n    >\n      0\n      <!--Ms*1 #text/1-->\n    </button>\n    <!--Ms*1 #button/0-->\n    <div>\n      <h1>\n        hello\n      </h1>\n      <button\n        id=\"class\"\n      >\n        1 * 0 = 0\n      </button>\n      <!--Ms]1 #text/2 2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"s\");\n      M.s.r = [_ =&gt; (_.a = [0,\n        {\n          m5c: \"s0-0\",\n          \"ConditionalRenderer:#text/2\": _._.$compat_renderBody,\n          input_content: _._.$compat_renderBody,\n          count: 0\n        }]),\n        \"$compat_setScope 1 __tests__/components/tags-layout.marko_0_count 1\"\n      ];\n      M.s.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"w\": [\n          [\"s0\", 0,\n          {},\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/template.marko\"\n        ]\n      })\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT #text\nINSERT html/body/#text0\nINSERT html/body/#text5\nREMOVE #comment before html/body/#text0\nREMOVE #comment after html/body/#text5\nINSERT html/body/div/#text0, html/body/div/#text3\nREMOVE #comment after html/body/div/#text3\nREMOVE h1 after html/body/div/#text3\nREMOVE button after html/body/div/#text3\nREMOVE #text after html/body/div/#text3\nINSERT html/body/#text1\nINSERT html/body/#text4\nINSERT html/body/#text2\nINSERT html/body/#text3\nREMOVE #comment after html/body/#text2\nREMOVE #comment after html/body/div\nREMOVE html/body/#text4 after html/body/#text3\nINSERT html/body/#text4\nINSERT html/body/div/#text1\nINSERT html/body/div/#text2\nINSERT html/body/div/h1\nINSERT html/body/div/h1/#text\nINSERT html/body/div/button\nINSERT html/body/div/button/#text0\nINSERT html/body/div/button/#text1\nINSERT html/body/div/button/#text2\nINSERT html/body/div/button/#text3\nINSERT html/body/div/button/#text4\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"tags\"\n    >\n      1\n      <!--Ms*1 #text/1-->\n    </button>\n    <!--Ms*1 #button/0-->\n    <div>\n      <h1>\n        hello\n      </h1>\n      <button\n        id=\"class\"\n      >\n        1 * 1 = 1\n      </button>\n      <!--Ms]1 #text/2 2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"s\");\n      M.s.r = [_ =&gt; (_.a = [0,\n        {\n          m5c: \"s0-0\",\n          \"ConditionalRenderer:#text/2\": _._.$compat_renderBody,\n          input_content: _._.$compat_renderBody,\n          count: 0\n        }]),\n        \"$compat_setScope 1 __tests__/components/tags-layout.marko_0_count 1\"\n      ];\n      M.s.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"w\": [\n          [\"s0\", 0,\n          {},\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/template.marko\"\n        ]\n      })\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"0\" => \"1\"\nUPDATE html/body/div/button/#text2 \"0\" => \"1\"\nUPDATE html/body/div/button/#text4 \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#class\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"tags\"\n    >\n      1\n      <!--Ms*1 #text/1-->\n    </button>\n    <!--Ms*1 #button/0-->\n    <div>\n      <h1>\n        hello\n      </h1>\n      <button\n        id=\"class\"\n      >\n        2 * 1 = 2\n      </button>\n      <!--Ms]1 #text/2 2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"s\");\n      M.s.r = [_ =&gt; (_.a = [0,\n        {\n          m5c: \"s0-0\",\n          \"ConditionalRenderer:#text/2\": _._.$compat_renderBody,\n          input_content: _._.$compat_renderBody,\n          count: 0\n        }]),\n        \"$compat_setScope 1 __tests__/components/tags-layout.marko_0_count 1\"\n      ];\n      M.s.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"w\": [\n          [\"s0\", 0,\n          {},\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/template.marko\"\n        ]\n      })\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text0, html/body/div/#text3\nREMOVE #text after html/body/div/#text3\nREMOVE #text after html/body/div/#text3\nREMOVE h1 after html/body/div/#text3\nREMOVE button after html/body/div/#text3\nREMOVE #text after html/body/div/#text3\nREMOVE #text after html/body/div/#text3\nINSERT html/body/div/#text1\nINSERT html/body/div/#text2\nINSERT html/body/div/h1\nINSERT html/body/div/h1/#text\nINSERT html/body/div/button\nINSERT html/body/div/button/#text0\nINSERT html/body/div/button/#text1\nINSERT html/body/div/button/#text2\nINSERT html/body/div/button/#text3\nINSERT html/body/div/button/#text4\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"tags\"\n    >\n      2\n      <!--Ms*1 #text/1-->\n    </button>\n    <!--Ms*1 #button/0-->\n    <div>\n      <h1>\n        hello\n      </h1>\n      <button\n        id=\"class\"\n      >\n        2 * 2 = 4\n      </button>\n      <!--Ms]1 #text/2 2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"s\");\n      M.s.r = [_ =&gt; (_.a = [0,\n        {\n          m5c: \"s0-0\",\n          \"ConditionalRenderer:#text/2\": _._.$compat_renderBody,\n          input_content: _._.$compat_renderBody,\n          count: 0\n        }]),\n        \"$compat_setScope 1 __tests__/components/tags-layout.marko_0_count 1\"\n      ];\n      M.s.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"w\": [\n          [\"s0\", 0,\n          {},\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/template.marko\"\n        ]\n      })\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"1\" => \"2\"\nUPDATE html/body/div/button/#text2 \"1\" => \"2\"\nUPDATE html/body/div/button/#text4 \"2\" => \"4\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#class\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"tags\"\n    >\n      2\n      <!--Ms*1 #text/1-->\n    </button>\n    <!--Ms*1 #button/0-->\n    <div>\n      <h1>\n        hello\n      </h1>\n      <button\n        id=\"class\"\n      >\n        3 * 2 = 6\n      </button>\n      <!--Ms]1 #text/2 2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"s\");\n      M.s.r = [_ =&gt; (_.a = [0,\n        {\n          m5c: \"s0-0\",\n          \"ConditionalRenderer:#text/2\": _._.$compat_renderBody,\n          input_content: _._.$compat_renderBody,\n          count: 0\n        }]),\n        \"$compat_setScope 1 __tests__/components/tags-layout.marko_0_count 1\"\n      ];\n      M.s.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"w\": [\n          [\"s0\", 0,\n          {},\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/template.marko\"\n        ]\n      })\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/div/#text0, html/body/div/#text3\nREMOVE #text after html/body/div/#text3\nREMOVE #text after html/body/div/#text3\nREMOVE h1 after html/body/div/#text3\nREMOVE button after html/body/div/#text3\nREMOVE #text after html/body/div/#text3\nREMOVE #text after html/body/div/#text3\nINSERT html/body/div/#text1\nINSERT html/body/div/#text2\nINSERT html/body/div/h1\nINSERT html/body/div/h1/#text\nINSERT html/body/div/button\nINSERT html/body/div/button/#text0\nINSERT html/body/div/button/#text1\nINSERT html/body/div/button/#text2\nINSERT html/body/div/button/#text3\nINSERT html/body/div/button/#text4\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"tags\"\n    >\n      3\n      <!--Ms*1 #text/1-->\n    </button>\n    <!--Ms*1 #button/0-->\n    <div>\n      <h1>\n        hello\n      </h1>\n      <button\n        id=\"class\"\n      >\n        3 * 3 = 9\n      </button>\n      <!--Ms]1 #text/2 2-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"s\");\n      M.s.r = [_ =&gt; (_.a = [0,\n        {\n          m5c: \"s0-0\",\n          \"ConditionalRenderer:#text/2\": _._.$compat_renderBody,\n          input_content: _._.$compat_renderBody,\n          count: 0\n        }]),\n        \"$compat_setScope 1 __tests__/components/tags-layout.marko_0_count 1\"\n      ];\n      M.s.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"w\": [\n          [\"s0\", 0,\n          {},\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/template.marko\"\n        ]\n      })\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/button/#text \"2\" => \"3\"\nUPDATE html/body/div/button/#text2 \"2\" => \"3\"\nUPDATE html/body/div/button/#text4 \"6\" => \"9\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-tag-params-class-to-tags/__snapshots__/ssr.expected.md",
    "content": "# Write\n  <!--M#s0--><!--F#1--><button id=tags>0<!--Ms*1 #text/1--></button><!--Ms*1 #button/0--><div><!--Ms[--><h1>hello</h1><button id=class>1 * 0 = 0</button><!--Ms]1 #text/2 2--></div><!--F/--><!--M/--><script>WALKER_RUNTIME(\"M\")(\"s\");M.s.r=[_=>(_.a=[0,{m5c:\"s0-0\",\"ConditionalRenderer:#text/2\":_._.$compat_renderBody,input_content:_._.$compat_renderBody,count:0}]),\"$compat_setScope 1 __tests__/components/tags-layout.marko_0_count 1\"];M.s.w();$MC=(window.$MC||[]).concat({\"w\":[[\"s0\",0,{},{\"f\":1}]],\"t\":[\"__tests__/template.marko\"]})</script>\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <!--M#s0-->\n    <!--F#1-->\n    <button\n      id=\"tags\"\n    >\n      0\n      <!--Ms*1 #text/1-->\n    </button>\n    <!--Ms*1 #button/0-->\n    <div>\n      <!--Ms[-->\n      <h1>\n        hello\n      </h1>\n      <button\n        id=\"class\"\n      >\n        1 * 0 = 0\n      </button>\n      <!--Ms]1 #text/2 2-->\n    </div>\n    <!--F/-->\n    <!--M/-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"s\");\n      M.s.r = [_ =&gt; (_.a = [0,\n        {\n          m5c: \"s0-0\",\n          \"ConditionalRenderer:#text/2\": _._.$compat_renderBody,\n          input_content: _._.$compat_renderBody,\n          count: 0\n        }]),\n        \"$compat_setScope 1 __tests__/components/tags-layout.marko_0_count 1\"\n      ];\n      M.s.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"w\": [\n          [\"s0\", 0,\n          {},\n          {\n            \"f\": 1\n          }]\n        ],\n        \"t\": [\n          \"__tests__/template.marko\"\n        ]\n      })\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#comment0\nINSERT html/body/#comment1\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/button/#comment\nINSERT html/body/#comment2\nINSERT html/body/div\nINSERT html/body/div/#comment0\nINSERT html/body/div/h1\nINSERT html/body/div/h1/#text\nINSERT html/body/div/button\nINSERT html/body/div/button/#text\nINSERT html/body/div/#comment1\nINSERT html/body/#comment3\nINSERT html/body/#comment4\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-tag-params-class-to-tags/components/tags-layout.marko",
    "content": "<let/count = 0/>\n<button id=\"tags\" onClick() { count++ }>\n  ${count}\n</button>\n<div>\n  <${input.content}(count, \"hello\")/>\n</div>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-tag-params-class-to-tags/template.marko",
    "content": "class {\n  onCreate() {\n    this.state = { multiplier: 1 };\n  }\n  increment() {\n    this.state.multiplier++;\n  }\n}\n<tags-layout|baseCount, message|>\n  <h1>${message}</h1>\n  <button id=\"class\" onClick(\"increment\")>\n    ${state.multiplier} * ${baseCount} = ${baseCount * state.multiplier}\n  </button>\n</tags-layout>\n\n<init-components/>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-tag-params-class-to-tags/test.ts",
    "content": "export const steps = [\n  {},\n  clickTags,\n  clickClass,\n  clickTags,\n  clickClass,\n  clickTags,\n];\n\nfunction clickClass(container: Element) {\n  (container.querySelector(\"#class\") as HTMLButtonElement).click();\n}\n\nfunction clickTags(container: Element) {\n  (container.querySelector(\"#tags\") as HTMLButtonElement).click();\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-tag-params-tags-to-class/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<!---->\n<button\n  id=\"class\"\n>\n  0\n</button>\n<div>\n  <h1>\n    hello\n  </h1>\n  <button\n    id=\"tags\"\n  >\n    1 * 0 = 0\n  </button>\n</div>\n<!---->\n```\n\n# Mutations\n```\nINSERT #comment0, #text0, #text1, #comment1\nINSERT button\nINSERT button/#text\nINSERT div\nINSERT div/#text0\nINSERT div/#text3\nINSERT div/#text1\nINSERT div/#text2\nINSERT div/h1, div/button\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<!---->\n<button\n  id=\"class\"\n>\n  0\n</button>\n<div>\n  <h1>\n    hello\n  </h1>\n  <button\n    id=\"tags\"\n  >\n    2 * 0 = 0\n  </button>\n</div>\n<!---->\n```\n\n# Mutations\n```\nUPDATE div/button/#text0 \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#class\").click();\n```\n```html\n<!---->\n<button\n  id=\"class\"\n>\n  1\n</button>\n<div>\n  <h1>\n    hello\n  </h1>\n  <button\n    id=\"tags\"\n  >\n    2 * 1 = 2\n  </button>\n</div>\n<!---->\n```\n\n# Mutations\n```\nUPDATE div/button/#text2 \"0\" => \"1\"\nUPDATE div/button/#text4 \"0\" => \"2\"\nUPDATE button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<!---->\n<button\n  id=\"class\"\n>\n  1\n</button>\n<div>\n  <h1>\n    hello\n  </h1>\n  <button\n    id=\"tags\"\n  >\n    3 * 1 = 3\n  </button>\n</div>\n<!---->\n```\n\n# Mutations\n```\nUPDATE div/button/#text0 \"2\" => \"3\"\nUPDATE div/button/#text4 \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#class\").click();\n```\n```html\n<!---->\n<button\n  id=\"class\"\n>\n  2\n</button>\n<div>\n  <h1>\n    hello\n  </h1>\n  <button\n    id=\"tags\"\n  >\n    3 * 2 = 6\n  </button>\n</div>\n<!---->\n```\n\n# Mutations\n```\nUPDATE div/button/#text2 \"1\" => \"2\"\nUPDATE div/button/#text4 \"3\" => \"6\"\nUPDATE button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<!---->\n<button\n  id=\"class\"\n>\n  2\n</button>\n<div>\n  <h1>\n    hello\n  </h1>\n  <button\n    id=\"tags\"\n  >\n    4 * 2 = 8\n  </button>\n</div>\n<!---->\n```\n\n# Mutations\n```\nUPDATE div/button/#text0 \"3\" => \"4\"\nUPDATE div/button/#text4 \"6\" => \"8\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-tag-params-tags-to-class/__snapshots__/dom.expected/components/class-layout.js",
    "content": "import { t as _t } from \"marko/src/runtime/vdom/index.js\";\nconst _marko_componentType = \"__tests__/components/class-layout.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport _marko_dynamic_tag from \"marko/src/runtime/helpers/dynamic-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nimport { r as _marko_registerComponent } from \"marko/src/runtime/components/registry.js\";\n_marko_registerComponent(_marko_componentType, () => _marko_template);\nconst _marko_component = {\n  onCreate() {\n    this.state = {\n      count: 0\n    };\n  },\n  increment() {\n    this.state.count++;\n  }\n};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.be(\"button\", {\n    \"id\": \"class\"\n  }, \"0\", _component, null, 1, {\n    \"onclick\": _componentDef.d(\"click\", \"increment\", false)\n  });\n  out.t(state.count, _component);\n  out.ee();\n  out.be(\"div\", null, \"1\", _component, null, 0);\n  _marko_dynamic_tag(out, input.renderBody, null, null, [state.count, \"hello\"], null, _componentDef, \"2\");\n  out.ee();\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component);\nimport _marko_defineComponent from \"marko/src/runtime/components/defineComponent.js\";\n_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-tag-params-tags-to-class/__snapshots__/dom.expected/template.hydrate.js",
    "content": "import init6 from \"virtual:./template.marko.hydrate-6.js import { init } from \\\"@marko/runtime-tags/debug/dom\\\";\\nimport \\\"./template.marko\\\";\\nexport default () => init();\";\nimport init5 from \"virtual:./template.marko.hydrate-5.js import { init } from \\\"marko/src/runtime/components/index.js\\\";\\nimport \\\"./components/class-layout.marko\\\";\\nexport default () => init();\";\ninit6();\ninit5();"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-tag-params-tags-to-class/__snapshots__/dom.expected/template.js",
    "content": "import \"marko/src/runtime/helpers/tags-compat/dom-debug.mjs\";\nexport const $template = \"<!><!><!>\";\nexport const $walks = /* over(1), replace, over(2) */\"b%c\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nimport _classLayout from \"./components/class-layout.marko\";\n_._resume(\"__tests__/components/class-layout.marko\", _classLayout);\nconst $classlayout_content__multiplier__OR__baseCount = /* @__PURE__ */_._or(7, $scope => _._text($scope[\"#text/4\"], $scope._.multiplier * $scope.baseCount));\nconst $classlayout_content__multiplier__script = _._script(\"__tests__/template.marko_1_multiplier\", $scope => _._on($scope[\"#button/1\"], \"click\", function () {\n  $multiplier($scope._, $scope._.multiplier + 1);\n}));\nconst $classlayout_content__multiplier = /* @__PURE__ */_._closure_get(\"multiplier\", $scope => {\n  _._text($scope[\"#text/2\"], $scope._.multiplier);\n  $classlayout_content__multiplier__OR__baseCount($scope);\n  $classlayout_content__multiplier__script($scope);\n});\nconst $classlayout_content__setup = $classlayout_content__multiplier;\nconst $classlayout_content__message = ($scope, message) => _._text($scope[\"#text/0\"], message);\nconst $classlayout_content__baseCount = /* @__PURE__ */_._const(\"baseCount\", $scope => {\n  _._text($scope[\"#text/3\"], $scope.baseCount);\n  $classlayout_content__multiplier__OR__baseCount($scope);\n});\nconst $classlayout_content__$params = ($scope, $params2) => {\n  $classlayout_content__baseCount($scope, $params2[0]);\n  $classlayout_content__message($scope, $params2[1]);\n};\nconst $classlayout_content = _._content_resume(\"__tests__/template.marko_1_content\", \"<h1> </h1><button id=tags><!> * <!> = <!></button>\", /* next(1), get, out(1), get, next(1), replace, over(2), replace, over(2), replace, out(1) */\"D l D%c%c%l\", $classlayout_content__setup, $classlayout_content__$params);\nconst $multiplier__closure = /* @__PURE__ */_._closure($classlayout_content__multiplier);\nconst $multiplier = /* @__PURE__ */_._let(\"multiplier/1\", $multiplier__closure);\nconst $dynamicTag = /* @__PURE__ */_._dynamic_tag(\"#text/0\", $classlayout_content);\nexport function $setup($scope) {\n  $multiplier($scope, 1);\n  $dynamicTag($scope, _classLayout);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-tag-params-tags-to-class/__snapshots__/html.expected/components/class-layout.js",
    "content": "import { t as _t } from \"marko/src/runtime/html/index.js\";\nconst _marko_componentType = \"__tests__/components/class-layout.marko\",\n  _marko_template = _t(_marko_componentType);\nexport default _marko_template;\nimport { x as _marko_escapeXml } from \"marko/src/runtime/html/helpers/escape-xml.js\";\nimport _marko_dynamic_tag from \"marko/src/runtime/helpers/dynamic-tag.js\";\nimport _marko_renderer from \"marko/src/runtime/components/renderer.js\";\nconst _marko_component = {\n  onCreate() {\n    this.state = {\n      count: 0\n    };\n  },\n  increment() {\n    this.state.count++;\n  }\n};\n_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {\n  out.w(\"<button id=class>\");\n  out.w(_marko_escapeXml(state.count));\n  out.w(\"</button>\");\n  out.w(\"<div>\");\n  _marko_dynamic_tag(out, input.renderBody, null, null, [state.count, \"hello\"], null, _componentDef, \"2\");\n  out.w(\"</div>\");\n}, {\n  t: _marko_componentType,\n  d: true\n}, _marko_component);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-tag-params-tags-to-class/__snapshots__/html.expected/template.js",
    "content": "import { s as _s } from \"marko/src/runtime/helpers/tags-compat/html-debug.mjs\";\nimport * as _ from \"@marko/runtime-tags/debug/html\";\nimport _classLayout from \"./components/class-layout.marko\";\n_s(_classLayout, \"__tests__/components/class-layout.marko\");\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  const $multiplier__closures = new Set();\n  let multiplier = 1;\n  _._dynamic_tag($scope0_id, \"#text/0\", _classLayout, {}, _._content_resume(\"__tests__/template.marko_1_content\", (baseCount, message) => {\n    const $scope1_id = _._scope_id();\n    const $scope1_reason = _._scope_reason();\n    _._html(`<h1>${_._escape(message)}${_._el_resume($scope1_id, \"#text/0\", _._serialize_guard($scope1_reason, /* message */1))}</h1><button id=tags>${_._escape(multiplier)}${_._el_resume($scope1_id, \"#text/2\")} * ${_._sep(_._serialize_guard($scope1_reason, /* baseCount */0))}${_._escape(baseCount)}${_._el_resume($scope1_id, \"#text/3\", _._serialize_guard($scope1_reason, /* baseCount */0))} = <!>${_._escape(multiplier * baseCount)}${_._el_resume($scope1_id, \"#text/4\")}</button>${_._el_resume($scope1_id, \"#button/1\")}`);\n    _._script($scope1_id, \"__tests__/template.marko_1_multiplier\");\n    _._subscribe($multiplier__closures, _._scope($scope1_id, {\n      baseCount,\n      _: _._scope_with_id($scope0_id),\n      \"ClosureSignalIndex:multiplier\": 0\n    }, \"__tests__/template.marko\", \"2:2\", {\n      baseCount: \"2:15\"\n    }));\n    _._resume_branch($scope1_id);\n  }, $scope0_id), 0, 0);\n  _._scope($scope0_id, {\n    multiplier,\n    \"ClosureScopes:multiplier\": $multiplier__closures\n  }, \"__tests__/template.marko\", 0, {\n    multiplier: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-tag-params-tags-to-class/__snapshots__/resume.expected.md",
    "content": "# Render\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"class\"\n    >\n      0\n    </button>\n    <div>\n      <h1>\n        hello\n        <!--M_*3 #text/0-->\n      </h1>\n      <button\n        id=\"tags\"\n      >\n        1\n        <!--M_*3 #text/2-->\n         * \n        <!---->\n        0\n        <!--M_*3 #text/3-->\n         = \n        <!---->\n        0\n        <!--M_*3 #text/4-->\n      </button>\n      <!--M_*3 #button/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.b = {\n          multiplier: 1,\n          \"ClosureScopes:multiplier\": _.d = new Set\n        },\n        {\n          m5c: \"_0\",\n          m5i: _.a = {}\n        }, _.e = {\n          m5c: \"_0-2\",\n          baseCount: 0,\n          _: _.b,\n          \"ClosureSignalIndex:multiplier\": 0\n        }], _.a.renderBody = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.b), (_.d).add(_.e), _.c), _ =&gt; (_.f = [-3, _.b]),\n        \"$compat_setScope 3 __tests__/template.marko_1_multiplier 3\"\n      ];\n      M._.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"p\": \"_\",\n        \"w\": [\n          [\"_0\", 0, 2,\n          {\n            \"f\": 1,\n            \"r\": [\n              \"__tests__/template.marko_1_content\",\n              1\n            ]\n          }]\n        ],\n        \"t\": [\n          \"__tests__/components/class-layout.marko\"\n        ]\n      });\n      M._.r.push(\"$compat_setScope 2\");\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html/body/#text0\nINSERT html/body/#text1\nREMOVE #comment before html/body/#text0\nREMOVE #comment after html/body/#text1\nINSERT html/body/div/#text0\nINSERT html/body/div/#text3\nINSERT html/body/div/#text1\nINSERT html/body/div/#text2\nREMOVE #comment after html/body/div/#text1\nREMOVE #comment after html/body/div/#comment\nREMOVE html/body/div/#text3 after html/body/div/#text2\nINSERT html/body/div/#text3\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"class\"\n    >\n      0\n    </button>\n    <div>\n      <h1>\n        hello\n        <!--M_*3 #text/0-->\n      </h1>\n      <button\n        id=\"tags\"\n      >\n        2\n        <!--M_*3 #text/2-->\n         * \n        <!---->\n        0\n        <!--M_*3 #text/3-->\n         = \n        <!---->\n        0\n        <!--M_*3 #text/4-->\n      </button>\n      <!--M_*3 #button/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.b = {\n          multiplier: 1,\n          \"ClosureScopes:multiplier\": _.d = new Set\n        },\n        {\n          m5c: \"_0\",\n          m5i: _.a = {}\n        }, _.e = {\n          m5c: \"_0-2\",\n          baseCount: 0,\n          _: _.b,\n          \"ClosureSignalIndex:multiplier\": 0\n        }], _.a.renderBody = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.b), (_.d).add(_.e), _.c), _ =&gt; (_.f = [-3, _.b]),\n        \"$compat_setScope 3 __tests__/template.marko_1_multiplier 3\"\n      ];\n      M._.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"p\": \"_\",\n        \"w\": [\n          [\"_0\", 0, 2,\n          {\n            \"f\": 1,\n            \"r\": [\n              \"__tests__/template.marko_1_content\",\n              1\n            ]\n          }]\n        ],\n        \"t\": [\n          \"__tests__/components/class-layout.marko\"\n        ]\n      });\n      M._.r.push(\"$compat_setScope 2\");\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/button/#text0 \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#class\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"class\"\n    >\n      1\n    </button>\n    <div>\n      <h1>\n        hello\n        <!--M_*3 #text/0-->\n      </h1>\n      <button\n        id=\"tags\"\n      >\n        2\n        <!--M_*3 #text/2-->\n         * \n        <!---->\n        1\n        <!--M_*3 #text/3-->\n         = \n        <!---->\n        2\n        <!--M_*3 #text/4-->\n      </button>\n      <!--M_*3 #button/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.b = {\n          multiplier: 1,\n          \"ClosureScopes:multiplier\": _.d = new Set\n        },\n        {\n          m5c: \"_0\",\n          m5i: _.a = {}\n        }, _.e = {\n          m5c: \"_0-2\",\n          baseCount: 0,\n          _: _.b,\n          \"ClosureSignalIndex:multiplier\": 0\n        }], _.a.renderBody = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.b), (_.d).add(_.e), _.c), _ =&gt; (_.f = [-3, _.b]),\n        \"$compat_setScope 3 __tests__/template.marko_1_multiplier 3\"\n      ];\n      M._.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"p\": \"_\",\n        \"w\": [\n          [\"_0\", 0, 2,\n          {\n            \"f\": 1,\n            \"r\": [\n              \"__tests__/template.marko_1_content\",\n              1\n            ]\n          }]\n        ],\n        \"t\": [\n          \"__tests__/components/class-layout.marko\"\n        ]\n      });\n      M._.r.push(\"$compat_setScope 2\");\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/button/#text2 \"0\" => \"1\"\nUPDATE html/body/div/button/#text4 \"0\" => \"2\"\nUPDATE html/body/button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"class\"\n    >\n      1\n    </button>\n    <div>\n      <h1>\n        hello\n        <!--M_*3 #text/0-->\n      </h1>\n      <button\n        id=\"tags\"\n      >\n        3\n        <!--M_*3 #text/2-->\n         * \n        <!---->\n        1\n        <!--M_*3 #text/3-->\n         = \n        <!---->\n        3\n        <!--M_*3 #text/4-->\n      </button>\n      <!--M_*3 #button/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.b = {\n          multiplier: 1,\n          \"ClosureScopes:multiplier\": _.d = new Set\n        },\n        {\n          m5c: \"_0\",\n          m5i: _.a = {}\n        }, _.e = {\n          m5c: \"_0-2\",\n          baseCount: 0,\n          _: _.b,\n          \"ClosureSignalIndex:multiplier\": 0\n        }], _.a.renderBody = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.b), (_.d).add(_.e), _.c), _ =&gt; (_.f = [-3, _.b]),\n        \"$compat_setScope 3 __tests__/template.marko_1_multiplier 3\"\n      ];\n      M._.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"p\": \"_\",\n        \"w\": [\n          [\"_0\", 0, 2,\n          {\n            \"f\": 1,\n            \"r\": [\n              \"__tests__/template.marko_1_content\",\n              1\n            ]\n          }]\n        ],\n        \"t\": [\n          \"__tests__/components/class-layout.marko\"\n        ]\n      });\n      M._.r.push(\"$compat_setScope 2\");\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/button/#text0 \"2\" => \"3\"\nUPDATE html/body/div/button/#text4 \"2\" => \"3\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#class\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"class\"\n    >\n      2\n    </button>\n    <div>\n      <h1>\n        hello\n        <!--M_*3 #text/0-->\n      </h1>\n      <button\n        id=\"tags\"\n      >\n        3\n        <!--M_*3 #text/2-->\n         * \n        <!---->\n        2\n        <!--M_*3 #text/3-->\n         = \n        <!---->\n        6\n        <!--M_*3 #text/4-->\n      </button>\n      <!--M_*3 #button/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.b = {\n          multiplier: 1,\n          \"ClosureScopes:multiplier\": _.d = new Set\n        },\n        {\n          m5c: \"_0\",\n          m5i: _.a = {}\n        }, _.e = {\n          m5c: \"_0-2\",\n          baseCount: 0,\n          _: _.b,\n          \"ClosureSignalIndex:multiplier\": 0\n        }], _.a.renderBody = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.b), (_.d).add(_.e), _.c), _ =&gt; (_.f = [-3, _.b]),\n        \"$compat_setScope 3 __tests__/template.marko_1_multiplier 3\"\n      ];\n      M._.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"p\": \"_\",\n        \"w\": [\n          [\"_0\", 0, 2,\n          {\n            \"f\": 1,\n            \"r\": [\n              \"__tests__/template.marko_1_content\",\n              1\n            ]\n          }]\n        ],\n        \"t\": [\n          \"__tests__/components/class-layout.marko\"\n        ]\n      });\n      M._.r.push(\"$compat_setScope 2\");\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/button/#text2 \"1\" => \"2\"\nUPDATE html/body/div/button/#text4 \"3\" => \"6\"\nUPDATE html/body/button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"#tags\").click();\n```\n```html\n<html>\n  <head />\n  <body>\n    <button\n      id=\"class\"\n    >\n      2\n    </button>\n    <div>\n      <h1>\n        hello\n        <!--M_*3 #text/0-->\n      </h1>\n      <button\n        id=\"tags\"\n      >\n        4\n        <!--M_*3 #text/2-->\n         * \n        <!---->\n        2\n        <!--M_*3 #text/3-->\n         = \n        <!---->\n        8\n        <!--M_*3 #text/4-->\n      </button>\n      <!--M_*3 #button/1-->\n    </div>\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.b = {\n          multiplier: 1,\n          \"ClosureScopes:multiplier\": _.d = new Set\n        },\n        {\n          m5c: \"_0\",\n          m5i: _.a = {}\n        }, _.e = {\n          m5c: \"_0-2\",\n          baseCount: 0,\n          _: _.b,\n          \"ClosureSignalIndex:multiplier\": 0\n        }], _.a.renderBody = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.b), (_.d).add(_.e), _.c), _ =&gt; (_.f = [-3, _.b]),\n        \"$compat_setScope 3 __tests__/template.marko_1_multiplier 3\"\n      ];\n      M._.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"p\": \"_\",\n        \"w\": [\n          [\"_0\", 0, 2,\n          {\n            \"f\": 1,\n            \"r\": [\n              \"__tests__/template.marko_1_content\",\n              1\n            ]\n          }]\n        ],\n        \"t\": [\n          \"__tests__/components/class-layout.marko\"\n        ]\n      });\n      M._.r.push(\"$compat_setScope 2\");\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nUPDATE html/body/div/button/#text0 \"3\" => \"4\"\nUPDATE html/body/div/button/#text4 \"6\" => \"8\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-tag-params-tags-to-class/__snapshots__/ssr.expected.md",
    "content": "# Write\n  <!--M#_0--><button id=class>0</button><div><!--F#1--><h1>hello<!--M_*3 #text/0--></h1><button id=tags>1<!--M_*3 #text/2--> * <!>0<!--M_*3 #text/3--> = <!>0<!--M_*3 #text/4--></button><!--M_*3 #button/1--><!--F/--></div><!--M/--><script>WALKER_RUNTIME(\"M\")(\"_\");M._.r=[_=>(_.c=[0,_.b={multiplier:1,\"ClosureScopes:multiplier\":_.d=new Set},{m5c:\"_0\",m5i:_.a={}},_.e={m5c:\"_0-2\",baseCount:0,_:_.b,\"ClosureSignalIndex:multiplier\":0}],_.a.renderBody=_._[\"__tests__/template.marko_1_content\"](_.b),(_.d).add(_.e),_.c),_=>(_.f=[-3,_.b]),\"$compat_setScope 3 __tests__/template.marko_1_multiplier 3\"];M._.w();$MC=(window.$MC||[]).concat({\"p\":\"_\",\"w\":[[\"_0\",0,2,{\"f\":1,\"r\":[\"__tests__/template.marko_1_content\",1]}]],\"t\":[\"__tests__/components/class-layout.marko\"]});M._.r.push(\"$compat_setScope 2\");M._.w()</script>\n\n# Render End\n```html\n<html>\n  <head />\n  <body>\n    <!--M#_0-->\n    <button\n      id=\"class\"\n    >\n      0\n    </button>\n    <div>\n      <!--F#1-->\n      <h1>\n        hello\n        <!--M_*3 #text/0-->\n      </h1>\n      <button\n        id=\"tags\"\n      >\n        1\n        <!--M_*3 #text/2-->\n         * \n        <!---->\n        0\n        <!--M_*3 #text/3-->\n         = \n        <!---->\n        0\n        <!--M_*3 #text/4-->\n      </button>\n      <!--M_*3 #button/1-->\n      <!--F/-->\n    </div>\n    <!--M/-->\n    <script>\n      WALKER_RUNTIME(\"M\")(\"_\");\n      M._.r = [_ =&gt; (_.c = [0, _.b = {\n          multiplier: 1,\n          \"ClosureScopes:multiplier\": _.d = new Set\n        },\n        {\n          m5c: \"_0\",\n          m5i: _.a = {}\n        }, _.e = {\n          m5c: \"_0-2\",\n          baseCount: 0,\n          _: _.b,\n          \"ClosureSignalIndex:multiplier\": 0\n        }], _.a.renderBody = _._[\n          \"__tests__/template.marko_1_content\"\n          ](_.b), (_.d).add(_.e), _.c), _ =&gt; (_.f = [-3, _.b]),\n        \"$compat_setScope 3 __tests__/template.marko_1_multiplier 3\"\n      ];\n      M._.w();\n      $MC = (window.$MC || []).concat(\n      {\n        \"p\": \"_\",\n        \"w\": [\n          [\"_0\", 0, 2,\n          {\n            \"f\": 1,\n            \"r\": [\n              \"__tests__/template.marko_1_content\",\n              1\n            ]\n          }]\n        ],\n        \"t\": [\n          \"__tests__/components/class-layout.marko\"\n        ]\n      });\n      M._.r.push(\"$compat_setScope 2\");\n      M._.w()\n    </script>\n  </body>\n</html>\n```\n\n# Mutations\n```\nINSERT html\nINSERT html/head\nINSERT html/body\nINSERT html/body/#comment0\nINSERT html/body/button\nINSERT html/body/button/#text\nINSERT html/body/div\nINSERT html/body/div/#comment0\nINSERT html/body/div/h1\nINSERT html/body/div/h1/#text\nINSERT html/body/div/h1/#comment\nINSERT html/body/div/button\nINSERT html/body/div/button/#text0\nINSERT html/body/div/button/#comment0\nINSERT html/body/div/button/#text1\nINSERT html/body/div/button/#comment1\nINSERT html/body/div/button/#text2\nINSERT html/body/div/button/#comment2\nINSERT html/body/div/button/#text3\nINSERT html/body/div/button/#comment3\nINSERT html/body/div/button/#text4\nINSERT html/body/div/button/#comment4\nINSERT html/body/div/#comment1\nINSERT html/body/div/#comment2\nINSERT html/body/#comment1\nINSERT html/body/script\nINSERT html/body/script/#text\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-tag-params-tags-to-class/components/class-layout.marko",
    "content": "class {\n  onCreate() {\n    this.state = { count: 0 };\n  }\n  increment() {\n    this.state.count++;\n  }\n}\n<button id=\"class\" onClick(\"increment\")>\n  ${state.count}\n</button>\n<div>\n  <${input.renderBody}(state.count, \"hello\")/>\n</div>\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-tag-params-tags-to-class/template.marko",
    "content": "<let/multiplier = 1/>\n<class-layout|baseCount, message|>\n  <h1>${message}</h1>\n  <button id=\"tags\" onClick() { multiplier++ }>\n    ${multiplier} * ${baseCount} = ${multiplier * baseCount}\n  </button>\n</class-layout>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/interop-tag-params-tags-to-class/test.ts",
    "content": "export const steps = [\n  {},\n  clickTags,\n  clickClass,\n  clickTags,\n  clickClass,\n  clickTags,\n];\n\nfunction clickClass(container: Element) {\n  (container.querySelector(\"#class\") as HTMLButtonElement).click();\n}\n\nfunction clickTags(container: Element) {\n  (container.querySelector(\"#tags\") as HTMLButtonElement).click();\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/let/__snapshots__/csr.expected.md",
    "content": "# Render\n```html\n<button>\n  0\n</button>\n```\n\n# Mutations\n```\nINSERT button\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  1\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"0\" => \"1\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  2\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"1\" => \"2\"\n```\n\n# Render\n```js\ncontainer.querySelector(\"button\").click();\n```\n```html\n<button>\n  3\n</button>\n```\n\n# Mutations\n```\nUPDATE button/#text \"2\" => \"3\"\n```"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/let/__snapshots__/dom.expected/template.js",
    "content": "export const $template = \"<button> </button>\";\nexport const $walks = /* get, next(1), get, out(1) */\" D l\";\nimport * as _ from \"@marko/runtime-tags/debug/dom\";\nconst $count__script = _._script(\"__tests__/template.marko_0_count\", $scope => _._on($scope[\"#button/0\"], \"click\", function () {\n  $count($scope, $scope.count + 1);\n}));\nconst $count = /* @__PURE__ */_._let(\"count/2\", $scope => {\n  _._text($scope[\"#text/1\"], $scope.count);\n  $count__script($scope);\n});\nexport function $setup($scope) {\n  $count($scope, 0);\n}\nexport default /* @__PURE__ */_._template(\"__tests__/template.marko\", $template, $walks, $setup);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/let/__snapshots__/html.expected/template.js",
    "content": "import * as _ from \"@marko/runtime-tags/debug/html\";\nexport default _._template(\"__tests__/template.marko\", input => {\n  _._scope_reason();\n  const $scope0_id = _._scope_id();\n  let count = 0;\n  _._html(`<button>${_._escape(count)}${_._el_resume($scope0_id, \"#text/1\")}</button>${_._el_resume($scope0_id, \"#button/0\")}`);\n  _._script($scope0_id, \"__tests__/template.marko_0_count\");\n  _._scope($scope0_id, {\n    count\n  }, \"__tests__/template.marko\", 0, {\n    count: \"1:6\"\n  });\n  _._resume_branch($scope0_id);\n}, 1);"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/let/template.marko",
    "content": "<let/count = 0/>\n<button onClick() { count++ }>\n  ${count}\n</button>"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/fixtures-interop/let/test.ts",
    "content": "export const steps = [{}, click, click, click];\n\nfunction click(container: Element) {\n  container.querySelector(\"button\")!.click();\n}\n\nexport const skip_ssr = true;\nexport const skip_resume = true;\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/html-attrs.test.ts",
    "content": "import * as assert from \"assert/strict\";\n\nimport * as helpers from \"../html/attrs\";\n\nconst falseishValues = [undefined, null, false];\nconst emptyValues = [...falseishValues, \"\"];\n\ndescribe(\"runtime-tags/html/attrs\", () => {\n  describe(\"attr\", () => {\n    it(\"should return empty string for falseish values\", () => {\n      for (const value of falseishValues) {\n        assert.equal(helpers._attr(\"foo\", value), \"\");\n      }\n    });\n\n    it(\"should return a boolean attribute for empty string and true\", () => {\n      assert.equal(helpers._attr(\"foo\", true), \" foo\");\n      assert.equal(helpers._attr(\"foo\", \"\"), \" foo\");\n    });\n\n    it(\"should return an attribute for non-empty values\", () => {\n      assert.equal(helpers._attr(\"foo\", \"bar\"), \" foo=bar\");\n    });\n\n    it(\"should quote invalid characters in html attributes\", () => {\n      assert.equal(helpers._attr(\"foo\", \"bar/baz\"), \" foo=bar/baz\"); // only escape slash at end.\n      assert.equal(helpers._attr(\"foo\", \"bar/\"), ' foo=\"bar/\"');\n      assert.equal(helpers._attr(\"foo\", 'bar\"baz'), \" foo='bar\\\"baz'\");\n      assert.equal(helpers._attr(\"foo\", \"bar&baz\"), \" foo=bar&baz\"); // only escape entity like ranges.\n      assert.equal(\n        helpers._attr(\"foo\", \"bar&quot;baz\"),\n        ' foo=\"bar&amp;quot;baz\"',\n      );\n      assert.equal(helpers._attr(\"foo\", \"bar'baz\"), ' foo=\"bar\\'baz\"');\n      assert.equal(helpers._attr(\"foo\", \"bar>baz\"), ' foo=\"bar>baz\"');\n      assert.equal(helpers._attr(\"foo\", \"bar baz\"), ' foo=\"bar baz\"');\n      assert.equal(helpers._attr(\"foo\", \"bar\\tbaz\"), ' foo=\"bar\\tbaz\"');\n      assert.equal(helpers._attr(\"foo\", \"bar\\nbaz\"), ' foo=\"bar\\nbaz\"');\n      assert.equal(helpers._attr(\"foo\", \"bar\\rbaz\"), ' foo=\"bar\\rbaz\"');\n      assert.equal(helpers._attr(\"foo\", \"bar\\fbaz\"), ' foo=\"bar\\fbaz\"');\n      assert.equal(\n        helpers._attr(\"foo\", \"bar\\\"baz'qux\"),\n        \" foo='bar\\\"baz&#39;qux'\",\n      );\n      assert.equal(\n        helpers._attr(\"foo\", \"bar'baz\\\"qux\"),\n        ' foo=\"bar\\'baz&#34;qux\"',\n      );\n    });\n\n    it(\"should return the source when passed a regexp\", () => {\n      const regexp = /foo/;\n      assert.equal(helpers._attr(\"foo\", regexp), ` foo=${regexp.source}`);\n    });\n  });\n\n  describe(\"attrs\", () => {\n    it(\"should remove falseish values\", () => {\n      assert.equal(helpers._attrs({}, \"a\", 0, \"\"), \"\");\n      for (const value of falseishValues) {\n        assert.equal(helpers._attrs({ foo: value }, \"a\", 0, \"\"), \"\");\n        assert.equal(\n          helpers._attrs({ foo: \"bar\", baz: value }, \"a\", 0, \"\"),\n          \" foo=bar\",\n        );\n      }\n    });\n\n    it(\"should return a single attribute for a single key-value pair\", () => {\n      assert.equal(helpers._attrs({ foo: \"bar\" }, \"a\", 0, \"\"), \" foo=bar\");\n    });\n\n    it(\"should return multiple attributes for multiple key-value pairs\", () => {\n      assert.equal(\n        helpers._attrs({ foo: \"bar\", baz: \"qux\" }, \"a\", 0, \"\"),\n        \" foo=bar baz=qux\",\n      );\n    });\n\n    it(\"should strip event handlers, invalid attribute names and content\", () => {\n      // assert.equal(helpers.attrs({ onClick() {} }, \"a\", 0, \"\"), \"\");\n      // assert.equal(helpers.attrs({ \"on-click\"() {}, \"a\", 0, \"\" }), \"\");\n      assert.equal(helpers._attrs({ content() {} }, \"a\", 0, \"\"), \"\");\n      assert.equal(helpers._attrs({ \"foo bar\": \"baz\" }, \"a\", 0, \"\"), \"\");\n      assert.equal(helpers._attrs({ \"foo\\tbar\": \"baz\" }, \"a\", 0, \"\"), \"\");\n      assert.equal(helpers._attrs({ \"foo\\nbar\": \"baz\" }, \"a\", 0, \"\"), \"\");\n      assert.equal(helpers._attrs({ \"foo\\rbar\": \"baz\" }, \"a\", 0, \"\"), \"\");\n      assert.equal(helpers._attrs({ \"foo\\fbar\": \"baz\" }, \"a\", 0, \"\"), \"\");\n      assert.equal(helpers._attrs({ \"=foo\": \"bar\" }, \"a\", 0, \"\"), \"\");\n      assert.equal(helpers._attrs({ \"'foo\": \"bar\" }, \"a\", 0, \"\"), \"\");\n      assert.equal(helpers._attrs({ '\"foo': \"bar\" }, \"a\", 0, \"\"), \"\");\n      assert.equal(helpers._attrs({ \"/foo\": \"bar\" }, \"a\", 0, \"\"), \"\");\n      assert.equal(helpers._attrs({ \">foo\": \"bar\" }, \"a\", 0, \"\"), \"\");\n    });\n  });\n\n  describe(\"classAttr\", () => {\n    it(\"should return empty string for empty values\", () => {\n      for (const value of emptyValues) {\n        assert.equal(helpers._attr_class(value), \"\");\n        assert.equal(helpers._attr_class([value]), \"\");\n        assert.equal(helpers._attr_class({ value }), \"\");\n      }\n    });\n\n    it(\"should return the class name for non-empty values\", () => {\n      assert.equal(helpers._attr_class(\"foo\"), \" class=foo\");\n      assert.equal(helpers._attr_class([\"foo\"]), \" class=foo\");\n      assert.equal(helpers._attr_class({ foo: true }), \" class=foo\");\n    });\n\n    it(\"should return multiple class names for non-empty values\", () => {\n      assert.equal(helpers._attr_class([\"foo\", \"bar\"]), ' class=\"foo bar\"');\n      assert.equal(\n        helpers._attr_class({ foo: true, bar: true }),\n        ' class=\"foo bar\"',\n      );\n    });\n\n    it(\"should return multiple class names and ignore empty values\", () => {\n      for (const value of emptyValues) {\n        assert.equal(\n          helpers._attr_class([\"foo\", value, \"bar\"]),\n          ' class=\"foo bar\"',\n        );\n        assert.equal(\n          helpers._attr_class([\"foo\", value, { bar: true, baz: value }]),\n          ' class=\"foo bar\"',\n        );\n        assert.equal(\n          helpers._attr_class({ foo: true, bar: true, baz: value }),\n          ' class=\"foo bar\"',\n        );\n      }\n    });\n\n    it(\"should quote invalid characters in html attributes\", () => {\n      assert.equal(helpers._attr_class('foo\"bar'), \" class='foo\\\"bar'\");\n      assert.equal(helpers._attr_class(\"foo'bar\"), ' class=\"foo\\'bar\"');\n      assert.equal(helpers._attr_class(\"foo>bar\"), ' class=\"foo>bar\"');\n      assert.equal(helpers._attr_class(\"foo bar\"), ' class=\"foo bar\"');\n      assert.equal(helpers._attr_class(\"foo\\tbar\"), ' class=\"foo\\tbar\"');\n      assert.equal(helpers._attr_class(\"foo\\nbar\"), ' class=\"foo\\nbar\"');\n      assert.equal(helpers._attr_class(\"foo\\rbar\"), ' class=\"foo\\rbar\"');\n      assert.equal(helpers._attr_class(\"foo\\fbar\"), ' class=\"foo\\fbar\"');\n      assert.equal(\n        helpers._attr_class(\"foo\\\"bar'baz\"),\n        \" class='foo\\\"bar&#39;baz'\",\n      );\n      assert.equal(\n        helpers._attr_class(\"foo'bar\\\"baz\"),\n        ' class=\"foo\\'bar&#34;baz\"',\n      );\n    });\n  });\n\n  describe(\"styleAttr\", () => {\n    it(\"should return empty string for empty values\", () => {\n      for (const value of emptyValues) {\n        assert.equal(helpers._attr_style(value), \"\");\n        assert.equal(helpers._attr_style([value]), \"\");\n        assert.equal(helpers._attr_style({ value }), \"\");\n      }\n    });\n\n    it(\"should return the style for non-empty values\", () => {\n      assert.equal(helpers._attr_style(\"color:red\"), \" style=color:red\");\n      assert.equal(helpers._attr_style([\"color:red\"]), \" style=color:red\");\n      assert.equal(helpers._attr_style({ color: \"red\" }), \" style=color:red\");\n      assert.equal(helpers._attr_style([{ color: \"red\" }]), \" style=color:red\");\n    });\n\n    it(\"should return multiple styles for non-empty values\", () => {\n      assert.equal(\n        helpers._attr_style([\"color:red\", \"background:blue\"]),\n        \" style=color:red;background:blue\",\n      );\n      assert.equal(\n        helpers._attr_style({ color: \"red\", background: \"blue\" }),\n        \" style=color:red;background:blue\",\n      );\n    });\n\n    it(\"should return multiple styles and ignore empty values\", () => {\n      for (const value of emptyValues) {\n        assert.equal(\n          helpers._attr_style([\"color:red\", value, \"background:blue\"]),\n          \" style=color:red;background:blue\",\n        );\n        assert.equal(\n          helpers._attr_style({\n            color: \"red\",\n            background: \"blue\",\n            border: value,\n          }),\n          \" style=color:red;background:blue\",\n        );\n        assert.equal(\n          helpers._attr_style([\n            { color: \"red\", border: value },\n            { background: \"blue\" },\n          ]),\n          \" style=color:red;background:blue\",\n        );\n      }\n    });\n\n    it(\"should quote invalid characters in html attributes\", () => {\n      assert.equal(\n        helpers._attr_style('color:\"red\"'),\n        \" style='color:\\\"red\\\"'\",\n      );\n      assert.equal(\n        helpers._attr_style(\"color:'red'\"),\n        \" style=\\\"color:'red'\\\"\",\n      );\n      assert.equal(helpers._attr_style(\"color:>red\"), ' style=\"color:>red\"');\n      assert.equal(helpers._attr_style(\"color: red\"), ' style=\"color: red\"');\n      assert.equal(helpers._attr_style(\"color:\\tred\"), ' style=\"color:\\tred\"');\n      assert.equal(helpers._attr_style(\"color:\\nred\"), ' style=\"color:\\nred\"');\n      assert.equal(helpers._attr_style(\"color:\\rred\"), ' style=\"color:\\rred\"');\n      assert.equal(helpers._attr_style(\"color:\\fred\"), ' style=\"color:\\fred\"');\n      assert.equal(\n        helpers._attr_style('color:\"red\\'blue\"'),\n        \" style='color:\\\"red&#39;blue\\\"'\",\n      );\n      assert.equal(\n        helpers._attr_style(\"color:'red\\\"blue'\"),\n        \" style=\\\"color:'red&#34;blue'\\\"\",\n      );\n    });\n  });\n});\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/html-content.test.ts",
    "content": "import * as assert from \"assert/strict\";\n\nimport * as helpers from \"../html/content\";\n\nconst falseishValues = [undefined, null, false];\n\ndescribe(\"runtime-tags/html/content\", () => {\n  describe(\"escapeXML\", () => {\n    it(\"should return &zwj; for falseish values\", () => {\n      for (const value of falseishValues) {\n        assert.equal(helpers._escape(value), \"&zwj;\");\n      }\n    });\n\n    it(\"should escape < and & characters\", () => {\n      assert.equal(\n        helpers._escape(\"foo < bar & baz\"),\n        \"foo &lt; bar &amp; baz\",\n      );\n    });\n\n    it(\"should toString anything else\", () => {\n      assert.equal(helpers._escape(0), \"0\");\n      assert.equal(helpers._escape(42), \"42\");\n      assert.equal(helpers._escape(true), \"true\");\n      assert.equal(helpers._escape(\"foo\"), \"foo\");\n      assert.equal(helpers._escape({}), \"[object Object]\");\n    });\n  });\n\n  describe(\"escapeScript\", () => {\n    it(\"should return empty string for falseish values\", () => {\n      for (const value of falseishValues) {\n        assert.equal(helpers._escape_script(value), \"\");\n      }\n    });\n\n    it(\"should escape </script\", () => {\n      assert.equal(\n        helpers._escape_script(\"foo </script> bar\"),\n        \"foo \\\\x3C/script> bar\",\n      );\n    });\n\n    it(\"should allow normally escaped html stuff\", () => {\n      assert.equal(\n        helpers._escape_script(\"foo < bar & baz\"),\n        \"foo < bar & baz\",\n      );\n    });\n\n    it(\"should toString anything else\", () => {\n      assert.equal(helpers._escape_script(0), \"0\");\n      assert.equal(helpers._escape_script(42), \"42\");\n      assert.equal(helpers._escape_script(true), \"true\");\n      assert.equal(helpers._escape_script(\"foo\"), \"foo\");\n      assert.equal(helpers._escape_script({}), \"[object Object]\");\n    });\n  });\n\n  describe(\"escapeStyle\", () => {\n    it(\"should return empty string for falseish values\", () => {\n      for (const value of falseishValues) {\n        assert.equal(helpers._escape_style(value), \"\");\n      }\n    });\n\n    it(\"should escape </style\", () => {\n      assert.equal(\n        helpers._escape_style(\"foo </style> bar\"),\n        \"foo \\\\3C/style> bar\",\n      );\n    });\n\n    it(\"should allow normally escaped html stuff\", () => {\n      assert.equal(helpers._escape_style(\"foo < bar & baz\"), \"foo < bar & baz\");\n    });\n\n    it(\"should toString anything else\", () => {\n      assert.equal(helpers._escape_style(0), \"0\");\n      assert.equal(helpers._escape_style(42), \"42\");\n      assert.equal(helpers._escape_style(true), \"true\");\n      assert.equal(helpers._escape_style(\"foo\"), \"foo\");\n      assert.equal(helpers._escape_style({}), \"[object Object]\");\n    });\n  });\n});\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/interop.test.ts",
    "content": "import * as compiler from \"@marko/compiler\";\nimport register from \"@marko/compiler/register\";\nimport fs from \"fs\";\nimport type { DOMWindow } from \"jsdom\";\nimport snap from \"mocha-snap\";\nimport path from \"path\";\nimport glob from \"tiny-glob\";\n\nimport type { Input, Template } from \"../common/types\";\nimport createBrowser from \"./utils/create-browser\";\nimport { isWait } from \"./utils/resolve\";\nimport { stripInlineRuntime } from \"./utils/strip-inline-runtime\";\nimport createMutationTracker from \"./utils/track-mutations\";\n\nconst baseConfig: compiler.Config = {\n  translator: require.resolve(\"marko/translator\"),\n  babelConfig: {\n    babelrc: false,\n    configFile: false,\n  },\n  writeVersionComment: false,\n};\n\nconst htmlConfig: compiler.Config = { ...baseConfig, output: \"html\" };\nconst domConfig: compiler.Config = { ...baseConfig, output: \"dom\" };\n\ntype TestConfig = {\n  steps?: unknown[] | (() => Promise<unknown[]>);\n  skip_dom?: boolean;\n  skip_html?: boolean;\n  skip_csr?: boolean;\n  skip_ssr?: boolean;\n  skip_resume?: boolean;\n  manual_csr?: boolean;\n  manual_ssr?: boolean;\n  manual_resume?: boolean;\n  error_compiler?: true | string[];\n  error_runtime?: boolean;\n};\n\ndescribe(\"translator-interop\", () => {\n  before(() => {\n    register({ ...htmlConfig, modules: \"cjs\" });\n  });\n\n  after(() => {\n    // Remove compat layer from v5/6 runtimes.\n    delete require(\"marko/src/runtime/helpers/dynamic-tag\").___runtimeCompat;\n    require(\"@marko/runtime-tags/html\").compat.patchDynamicTag(\n      (tag: any) => tag,\n    );\n  });\n\n  const fixturesDir = path.join(__dirname, \"fixtures-interop\");\n  for (const entry of fs.readdirSync(fixturesDir)) {\n    if (entry.endsWith(\".skip\")) continue;\n\n    describe(entry, () => {\n      const resolve = (file: string) => path.join(fixturesDir, entry, file);\n      const fixtureDir = resolve(\".\");\n      const relativeFixtureDir = path.relative(process.cwd(), fixtureDir);\n      const templateFile = resolve(\"template.marko\");\n\n      const config: TestConfig = (() => {\n        try {\n          return require(resolve(\"test.ts\"));\n        } catch {\n          return {};\n        }\n      })();\n      const stripFixtureDir = async (str: string | Promise<string>) =>\n        (await str).replaceAll(relativeFixtureDir, \"__tests__\");\n      const snapMD = (fn: () => Promise<string>) =>\n        (config.error_runtime ? snap.catch : snap)(\n          () => stripFixtureDir(fn()),\n          {\n            ext: `.md`,\n            dir: fixtureDir,\n          },\n        );\n      const snapAllTemplates = async (compilerConfig: compiler.Config) => {\n        const additionalMarkoFiles = await glob(resolve(\"**/*.marko\"), {\n          absolute: true,\n          cwd: fixtureDir,\n        });\n        const finalConfig: compiler.Config = {\n          ...compilerConfig,\n          resolveVirtualDependency(_filename, { code, virtualPath }) {\n            return `virtual:${virtualPath} ${code}`;\n          },\n        };\n        const errors: Error[] = [];\n\n        for (const file of additionalMarkoFiles) {\n          const name = path.relative(fixtureDir, file);\n          let snapName = name;\n          let targetSnap: typeof snap.catch = snap;\n          if (\n            config.error_compiler === true ||\n            config.error_compiler?.includes(snapName)\n          ) {\n            snapName = snapName.replace(\".marko\", \".error.txt\");\n            targetSnap = snap.catch;\n          } else {\n            snapName = snapName.replace(\".marko\", \".js\");\n          }\n          await targetSnap(\n            () => stripFixtureDir(compileCode(file, finalConfig)),\n            {\n              file: snapName,\n              dir: fixtureDir,\n            },\n          );\n\n          if (\n            compilerConfig.output === \"dom\" &&\n            file === templateFile &&\n            !config.skip_resume &&\n            !config.error_compiler\n          ) {\n            await targetSnap(\n              () =>\n                stripFixtureDir(\n                  compileCode(file, {\n                    ...finalConfig,\n                    output: \"hydrate\",\n                  }),\n                ),\n              {\n                file: name.replace(\".marko\", \".hydrate.js\"),\n                dir: fixtureDir,\n              },\n            );\n          }\n        }\n\n        if (errors.length === 1) {\n          throw errors[0];\n        } else if (errors.length > 1) {\n          throw new AggregateError(\n            errors,\n            \"\\n\" + errors.map((e) => e.toString()).join(\"\\n\"),\n          );\n        }\n      };\n\n      let ssr = () => {\n        const cached = (async () => {\n          const serverTemplate = require(templateFile).default as Template;\n\n          let buffer = \"\";\n          // let flushCount = 0;\n\n          const browser = createBrowser({\n            dir: __dirname,\n            extensions: register({\n              ...domConfig,\n              extensions: {},\n            }),\n          });\n          const document = browser.window.document;\n          const [input] = (\n            typeof config.steps === \"function\"\n              ? await config.steps()\n              : config.steps || []\n          ) as [Input];\n\n          document.open();\n\n          const tracker = createMutationTracker(browser, document);\n\n          for await (const chunk of serverTemplate.render(input)) {\n            buffer += chunk;\n            tracker.log(`# Write\\n${indent(stripInlineRuntime(chunk))}`);\n          }\n          document.write(`<html><body>${buffer}</body></html>`);\n          document.close();\n          tracker.logUpdate(\"End\");\n          tracker.cleanup();\n\n          return { browser, tracker };\n        })();\n        ssr = () => cached;\n        return cached;\n      };\n\n      let csr = () => {\n        const cached = (async () => {\n          const browser = createBrowser({\n            dir: __dirname,\n            extensions: register({\n              ...domConfig,\n              extensions: {},\n            }),\n          });\n\n          const { window } = browser;\n          const { document } = window;\n          const throwErrors = trackErrors(window);\n\n          const [input = {}, ...steps] = (\n            typeof config.steps === \"function\"\n              ? await config.steps()\n              : config.steps || []\n          ) as [Input, ...unknown[]];\n          const template = browser.require<{ default: Template }>(\n            templateFile,\n          ).default;\n          const container = Object.assign(document.createElement(\"div\"), {\n            TEST_ROOT: true,\n          });\n          const tracker = createMutationTracker(browser, container);\n\n          document.body.appendChild(container);\n\n          const instance = template.mount(input, container, \"beforeend\");\n\n          const { run } = browser.require<\n            typeof import(\"@marko/runtime-tags/dom\")\n          >(\"@marko/runtime-tags/dom\");\n          const { ___componentLookup } = browser.require(\n            \"marko/src/node_modules/@internal/components-util\",\n          );\n\n          function runUpdates() {\n            run();\n            Object.values(___componentLookup).forEach((c: any) => c.update());\n          }\n\n          throwErrors();\n          tracker.logUpdate(input);\n\n          for (const update of steps) {\n            if (isWait(update)) {\n              await update();\n            } else if (typeof update === \"function\") {\n              await update(document.documentElement);\n              runUpdates();\n              tracker.logUpdate(update);\n            } else {\n              instance.update(update);\n              tracker.logUpdate(update);\n            }\n\n            throwErrors();\n          }\n\n          tracker.cleanup();\n\n          return { browser, tracker };\n        })();\n        csr = () => cached;\n        return cached;\n      };\n\n      let resume = () => {\n        const cached = (async () => {\n          const { browser } = await ssr();\n          const { window } = browser;\n          const { document } = window;\n          const throwErrors = trackErrors(window);\n          const tracker = createMutationTracker(browser, document);\n          const [input, ...steps] =\n            typeof config.steps === \"function\"\n              ? await config.steps()\n              : config.steps || [];\n\n          const { run, init } = browser.require<\n            typeof import(\"@marko/runtime-tags/dom\")\n          >(\"@marko/runtime-tags/dom\");\n\n          browser.require(templateFile);\n          browser.require(\"marko/src/runtime/components\");\n          init();\n          browser.window.$initComponents();\n          throwErrors();\n          tracker.logUpdate(input);\n\n          const { ___componentLookup } = browser.require(\n            \"marko/src/node_modules/@internal/components-util\",\n          );\n\n          function runUpdates() {\n            run();\n            Object.values(___componentLookup).forEach((c: any) => c.update());\n          }\n\n          for (const update of steps) {\n            if (isWait(update)) {\n              await update();\n            } else if (typeof update === \"function\") {\n              await update(document.documentElement);\n              runUpdates();\n              tracker.logUpdate(update);\n            } else {\n              // if new input is detected, stop testing\n              // this will be covered by the client tests\n              break;\n            }\n\n            throwErrors();\n          }\n\n          tracker.cleanup();\n\n          return { browser, tracker };\n        })();\n\n        resume = () => cached;\n        return cached;\n      };\n\n      describe(\"compile\", () => {\n        it(\"html\", () => snapAllTemplates(htmlConfig));\n        it(\"dom\", () => snapAllTemplates(domConfig));\n      });\n\n      describe(\"render\", () => {\n        (config.skip_ssr ? it.skip : it)(\"ssr\", async () => {\n          await snapMD(async () => (await ssr()).tracker.getLogs());\n        });\n\n        (config.skip_resume ? it.skip : it)(\"resume\", async () => {\n          await snapMD(async () => (await resume()).tracker.getLogs());\n        });\n\n        (config.skip_csr ? it.skip : it)(\"csr\", async () => {\n          await snapMD(async () => (await csr()).tracker.getLogs());\n        });\n      });\n    });\n  }\n});\n\nasync function compileCode(templateFile: string, config: compiler.Config) {\n  return (await compiler.compileFile(templateFile, config)).code;\n}\n\nfunction trackErrors(window: DOMWindow) {\n  const errors: Set<Error> = new Set();\n  const throwErrors = () => {\n    switch (errors.size) {\n      case 0:\n        return;\n      case 1:\n        throw [...errors][0];\n      default:\n        throw new AggregateError(errors);\n    }\n  };\n\n  window.addEventListener(\"error\", (ev) => {\n    errors.add(ev.error.detail || ev.error);\n    ev.preventDefault();\n  });\n  window.addEventListener(\"unhandledrejection\", (ev) => {\n    errors.add(ev.reason.detail || ev.reason);\n    ev.preventDefault();\n  });\n\n  return throwErrors;\n}\n\nfunction indent(data: unknown) {\n  return String(data)\n    .split(\"\\n\")\n    .map((line) => `  ${line}`)\n    .join(\"\\n\");\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/main.test.ts",
    "content": "import * as compiler from \"@marko/compiler\";\nimport register from \"@marko/compiler/register\";\nimport type { Input, Template } from \"@marko/runtime-tags/common/types\";\nimport assert from \"assert\";\nimport fs from \"fs\";\nimport snap from \"mocha-snap\";\nimport path from \"path\";\nimport glob from \"tiny-glob\";\nimport { isDeepStrictEqual } from \"util\";\n\nimport type { ServerRenderer } from \"../html/template\";\nimport * as translator from \"../translator\";\nimport { bundle } from \"./utils/bundle\";\nimport { captureConsole, type ConsoleRecord } from \"./utils/capture-console\";\nimport createBrowser from \"./utils/create-browser\";\nimport {\n  type Flush,\n  isFlush,\n  isThrows,\n  isWait,\n  resetResolveState,\n  resolveAfter,\n  type Throws,\n  type Wait,\n} from \"./utils/resolve\";\nimport { stripInlineRuntime } from \"./utils/strip-inline-runtime\";\nimport createMutationTracker from \"./utils/track-mutations\";\n\ntype Step = Input | Wait | Flush | Throws | ((container: Element) => unknown);\ntype Steps = [Input, ...Step[]];\nexport type TestConfig = {\n  steps?: Steps | (() => Steps | Promise<Steps>);\n  embedded?: true;\n  skip_dom?: boolean;\n  skip_html?: boolean;\n  skip_csr?: boolean;\n  skip_ssr?: boolean;\n  skip_equivalent?: boolean;\n  skip_resume?: boolean;\n  manual_csr?: boolean;\n  manual_ssr?: boolean;\n  manual_resume?: boolean;\n  error_compiler?: true | string[];\n  error_runtime?: boolean;\n};\n\ntype TestHooks = {\n  before?: () => void;\n  after?: () => void;\n};\n\nconst baseConfig: compiler.Config = {\n  translator,\n  babelConfig: {\n    babelrc: false,\n    configFile: false,\n  },\n  writeVersionComment: false,\n};\n\nconst htmlConfig: compiler.Config = { ...baseConfig, output: \"html\" };\nconst domConfig: compiler.Config = { ...baseConfig, output: \"dom\" };\nconst snapCache = new Map<unknown, unknown>();\n\ndescribe(\"runtime-tags/translator\", () => {\n  before(() => {\n    register({ ...htmlConfig, modules: \"cjs\" });\n  });\n\n  const fixturesDir = path.join(__dirname, \"fixtures\");\n  for (const entry of fs.readdirSync(fixturesDir)) {\n    if (entry.endsWith(\".skip\")) continue;\n\n    describe(entry, () => {\n      const resolve = (file: string) => path.join(fixturesDir, entry, file);\n      const fixtureDir = resolve(\".\");\n      const relativeFixtureDir = path.relative(process.cwd(), fixtureDir);\n      const serverFile = resolve(\"server.ts\");\n      const resumeFile = resolve(\"resume.ts\");\n      const browserFile = resolve(\"browser.ts\");\n      const templateFile = resolve(\"template.marko\");\n      const hasTemplate = fs.existsSync(templateFile);\n      const snapshotsDir = resolve(\"__snapshots__\");\n      const nameCacheFile = path.join(snapshotsDir, \".name-cache.json\");\n      const nameCache = (() => {\n        try {\n          return JSON.parse(fs.readFileSync(nameCacheFile, \"utf-8\")) as Record<\n            string,\n            unknown\n          >;\n        } catch {\n          try {\n            fs.mkdirSync(snapshotsDir, { recursive: true });\n          } catch {\n            // ignore\n          }\n          return {};\n        }\n      })();\n      const initialNameCache = structuredClone(nameCache);\n      const config: TestConfig = (() => {\n        try {\n          return require(resolve(\"test.ts\")).config ?? {};\n        } catch {\n          return {};\n        }\n      })();\n      const skipHTML = !hasTemplate || config.skip_html;\n      const skipDOM = !hasTemplate || config.skip_dom;\n\n      const manualSSR = skipHTML || config.manual_ssr;\n      const manualCSR = skipDOM || config.manual_csr;\n      const manualResume = skipHTML || skipDOM || config.manual_resume;\n\n      const skipSSR =\n        !(manualSSR ? fs.existsSync(serverFile) : hasTemplate) ||\n        config.skip_ssr ||\n        config.error_compiler;\n      const skipCSR =\n        !(manualCSR ? fs.existsSync(browserFile) : hasTemplate) ||\n        config.skip_csr ||\n        config.error_compiler;\n      const skipResume =\n        config.skip_resume !== false &&\n        (!(manualResume ? fs.existsSync(resumeFile) : hasTemplate) ||\n          config.skip_resume ||\n          skipSSR ||\n          skipCSR);\n      const skipEquivalent = config.skip_equivalent || skipCSR || skipResume;\n      const stripFixtureDir = async (str: string | Promise<string>) =>\n        (await str).replaceAll(relativeFixtureDir, \"__tests__\");\n      const snapMD = (fn: () => Promise<string>) =>\n        (config.error_runtime ? snap.catch : snap)(\n          () => stripFixtureDir(fn()),\n          {\n            ext: `.md`,\n            dir: fixtureDir,\n          },\n        );\n      const snapAllTemplates = async (compilerConfig: compiler.Config) => {\n        const additionalMarkoFiles = await glob(resolve(\"**/*.marko\"), {\n          absolute: true,\n          cwd: fixtureDir,\n        });\n        const finalConfig: compiler.Config = {\n          ...compilerConfig,\n          cache: snapCache, // these need a different cache since they `resolveVirtualDependency` is relevant to the compile cache.\n          resolveVirtualDependency(_filename, { code, virtualPath }) {\n            return `virtual:${virtualPath} ${code}`;\n          },\n        };\n        const errors: Error[] = [];\n\n        for (const file of additionalMarkoFiles) {\n          try {\n            const name = path.relative(fixtureDir, file);\n            let snapName = name;\n            let targetSnap: typeof snap.catch = snap;\n            if (\n              config.error_compiler === true ||\n              config.error_compiler?.includes(name)\n            ) {\n              snapName = name.replace(\".marko\", \".error.txt\");\n              targetSnap = snap.catch;\n            } else {\n              snapName = name.replace(\".marko\", \".js\");\n            }\n\n            await targetSnap(\n              () => stripFixtureDir(compileCode(file, finalConfig)),\n              {\n                file: snapName,\n                dir: fixtureDir,\n              },\n            );\n\n            if (\n              compilerConfig.output === \"dom\" &&\n              file === templateFile &&\n              !skipResume &&\n              !config.error_compiler\n            ) {\n              await targetSnap(\n                () => stripFixtureDir(bundle(file, nameCache, finalConfig)),\n                {\n                  file: name.replace(\".marko\", \".hydrate.js\"),\n                  dir: fixtureDir,\n                },\n              );\n            }\n          } catch (e) {\n            errors.push(e as Error);\n          }\n        }\n\n        if (errors.length === 1) {\n          throw errors[0];\n        } else if (errors.length > 1) {\n          console.error(errors);\n          throw new AggregateError(\n            errors,\n            \"\\n\" + errors.map((e) => e.toString()).join(\"\\n\"),\n          );\n        }\n      };\n\n      let serverRender = () => {\n        const cached = (async () => {\n          const serverTemplate = require(manualSSR ? serverFile : templateFile)\n            .default as Template;\n\n          const [input = {}, ...steps] =\n            typeof config.steps === \"function\"\n              ? await config.steps()\n              : config.steps || [];\n\n          const chunks: string[] = [];\n          const logs: ConsoleRecord[][] = [];\n          const capture = captureConsole();\n          try {\n            for await (const data of serverTemplate.render(\n              config.embedded\n                ? {\n                    ...input,\n                    $global: {\n                      ...(input.$global as any),\n                      renderId: \"embedded\",\n                    },\n                  }\n                : input,\n            )) {\n              chunks.push(data);\n              logs.push(capture.records());\n            }\n            logs.push(capture.records());\n          } finally {\n            capture.cleanup();\n          }\n\n          return {\n            chunks,\n            logs,\n            input,\n            steps,\n            id: (serverTemplate as unknown as ServerRenderer).___id!,\n          };\n        })();\n        serverRender = () => cached;\n        return cached;\n      };\n\n      const getHooks = (\n        browser?: ReturnType<typeof createBrowser>,\n      ): TestHooks => {\n        try {\n          return (browser ? browser.require : require)(resolve(\"hooks.ts\"));\n        } catch {\n          return {};\n        }\n      };\n\n      let ssr = () => {\n        const cached = (async () => {\n          const browser = createBrowser({\n            dir: __dirname,\n            extensions: register({\n              ...domConfig,\n              modules: \"cjs\",\n              extensions: {},\n            }),\n          });\n          const { window } = browser;\n          const { document } = window;\n          const hooks = getHooks();\n\n          hooks.before?.();\n\n          const { chunks, logs } = await serverRender();\n\n          const flushNext = browser.stream(chunks);\n\n          const tracker = createMutationTracker(browser, document);\n\n          for (const data of chunks) {\n            const formattedHtml = indent(stripInlineRuntime(data));\n\n            if (formattedHtml) {\n              tracker.log(`# Write\\n\\`\\`\\`html\\n${formattedHtml}\\n\\`\\`\\``);\n            }\n          }\n\n          for (const group of logs) {\n            for (const { type, args } of group) {\n              window.console[type](...args);\n            }\n          }\n\n          while (flushNext()) {\n            await 1;\n          }\n\n          tracker.logUpdate(\"End\", true);\n\n          tracker.cleanup();\n\n          hooks.after?.();\n\n          return { browser, tracker };\n        })();\n        ssr = () => cached;\n        return cached;\n      };\n\n      let csr = () => {\n        const cached = (async () => {\n          const browser = createBrowser({\n            dir: __dirname,\n            extensions: register({\n              ...domConfig,\n              extensions: {},\n            }),\n          });\n\n          const hooks = getHooks(browser);\n\n          hooks.before?.();\n\n          const { window } = browser;\n          const { document } = window;\n          const [input = {}, ...steps] =\n            typeof config.steps === \"function\"\n              ? await config.steps()\n              : config.steps || [];\n          const { run } = browser.require<\n            typeof import(\"@marko/runtime-tags/dom\")\n          >(\"@marko/runtime-tags/dom\");\n          const template = browser.require<{ default: Template }>(\n            manualCSR ? browserFile : templateFile,\n          ).default;\n          const container = document.createElement(\"div\");\n          const tracker = createMutationTracker(browser, container);\n\n          document.body.appendChild(container);\n\n          const instance = template.mount(input, container, \"afterbegin\");\n          tracker.logUpdate(input);\n\n          for (const update of steps) {\n            if (isWait(update)) {\n              await update();\n            } else if (isFlush(update)) {\n              continue;\n            } else if (typeof update === \"function\") {\n              tracker.beginUpdate();\n              await update(document.documentElement);\n              if (isThrows(update)) {\n                try {\n                  run();\n                  throw new Error(\"Expected error to be thrown\");\n                } catch (err) {\n                  tracker.logError(update, err as Error);\n                  break;\n                }\n              } else {\n                run();\n                await 1; // allow a microtask before we log the update in order to catch mutation observers.\n                tracker.logUpdate(update);\n              }\n            } else {\n              instance.update(update);\n              tracker.logUpdate(update);\n            }\n          }\n\n          tracker.cleanup();\n\n          hooks.after?.();\n          return { browser, tracker };\n        })();\n        csr = () => cached;\n        return cached;\n      };\n\n      let resume = () => {\n        const cached = (async () => {\n          const browser = createBrowser({\n            dir: __dirname,\n            extensions: register({\n              ...domConfig,\n              modules: \"cjs\",\n              extensions: {},\n            }),\n          });\n          const { window } = browser;\n          const { document } = window;\n          const serverHooks = getHooks();\n          const browserHooks = getHooks(browser);\n\n          serverHooks.before?.();\n          browserHooks.before?.();\n\n          const { id, chunks, logs, input, steps } = await serverRender();\n\n          const { run, init, initEmbedded } = browser.require<\n            typeof import(\"@marko/runtime-tags/dom\")\n          >(\"@marko/runtime-tags/dom\");\n\n          browser.require(manualResume ? resumeFile : templateFile);\n\n          const flushNext = browser.stream(chunks);\n\n          let hasFlush = flushNext();\n\n          const tracker = createMutationTracker(browser, document);\n\n          for (const group of logs) {\n            for (const { type, args } of group) {\n              window.console[type](...args);\n            }\n          }\n\n          if (config.embedded) {\n            initEmbedded(id);\n          } else {\n            init();\n          }\n\n          await runSteps();\n\n          async function runSteps() {\n            tracker.logUpdate(input);\n\n            for (const update of steps) {\n              if (isWait(update)) {\n                await update();\n              } else if (isFlush(update)) {\n                if (hasFlush) {\n                  tracker.beginUpdate();\n                  hasFlush = flushNext();\n                  await 1; // allow a microtask before we log the update in order to catch mutation observers\n                  tracker.logUpdate(\"FLUSH\");\n                }\n              } else if (typeof update === \"function\") {\n                tracker.beginUpdate();\n                await update(document.documentElement);\n                run();\n                await 1; // allow a microtask before we log the update in order to catch mutation observers\n                tracker.logUpdate(update);\n              } else {\n                // if new input is detected, stop testing\n                // this will be covered by the client tests\n                break;\n              }\n            }\n\n            while (hasFlush) {\n              await resolveAfter(0, 1);\n              tracker.beginUpdate();\n              hasFlush = flushNext();\n              tracker.logUpdate(\"FLUSH (auto)\");\n            }\n          }\n\n          tracker.cleanup();\n\n          serverHooks.after?.();\n          browserHooks.after?.();\n\n          return { browser, tracker };\n        })();\n        resume = () => cached;\n        return cached;\n      };\n\n      after(() => {\n        if (!isDeepStrictEqual(initialNameCache, nameCache)) {\n          fs.writeFileSync(\n            nameCacheFile,\n            JSON.stringify(nameCache, null, 2) + \"\\n\",\n          );\n        }\n      });\n\n      describe(\"compile\", () => {\n        (skipHTML ? it.skip : it)(\"html\", () => snapAllTemplates(htmlConfig));\n\n        (skipDOM ? it.skip : it)(\"dom\", () => snapAllTemplates(domConfig));\n      });\n\n      describe(\"render\", () => {\n        beforeEach(() => {\n          resetResolveState();\n        });\n\n        (skipSSR ? it.skip : it)(\"ssr\", async () => {\n          await snapMD(async () => (await ssr()).tracker.getLogs());\n        });\n\n        (skipResume ? it.skip : it)(\"resume\", async () => {\n          await snapMD(async () => (await resume()).tracker.getLogs());\n        });\n\n        (skipCSR ? it.skip : it)(\"csr\", async () => {\n          await snapMD(async () => (await csr()).tracker.getLogs());\n        });\n      });\n\n      describe(\"sanitized\", () => {\n        beforeEach(() => {\n          resetResolveState();\n        });\n\n        (skipSSR ? it.skip : it)(\"ssr-sanitized\", async () => {\n          await snapMD(async () => (await ssr()).tracker.getLogs(true));\n        });\n\n        (skipResume ? it.skip : it)(\"resume-sanitized\", async () => {\n          await snapMD(async () => (await resume()).tracker.getLogs(true));\n        });\n\n        (skipCSR ? it.skip : it)(\"csr-sanitized\", async () => {\n          await snapMD(async () => (await csr()).tracker.getLogs(true));\n        });\n\n        (skipEquivalent ? it.skip : it)(\"equivalent\", async () => {\n          if (config.error_runtime) {\n            const resumeError = (await resume()\n              .then(() => undefined)\n              .catch((err) => err)) as Error | undefined;\n            const csrError = (await csr()\n              .then(() => undefined)\n              .catch((err) => err)) as Error | undefined;\n            if (!resumeError) throw new Error(\"Resume did not error.\");\n            if (!csrError) throw new Error(\"CSR did not error.\");\n            assert.strictEqual(resumeError.message, csrError.message);\n            return;\n          }\n\n          const normalizeLog = (log: string) =>\n            log.replace(/[cs]M_[a-z0-9]+/g, \"%id\");\n\n          const resumeLogs = (await resume()).tracker\n            .getRawLogs(true)\n            .map(normalizeLog);\n          const csrLogs = (await csr()).tracker\n            .getRawLogs(true)\n            .map(normalizeLog);\n\n          let csrIndex = 0;\n          let resumeIndex = 0;\n\n          let actual = \"\";\n          let expected = \"\";\n\n          let prevResumeLog = \"\";\n\n          while (resumeIndex < resumeLogs.length) {\n            const resumeLog = resumeLogs[resumeIndex++].replace(\n              /(# Render)[^\\n]+/,\n              \"$1\",\n            );\n            if (resumeLog !== prevResumeLog) {\n              while (csrIndex < csrLogs.length) {\n                const csrLog = csrLogs[csrIndex++].replace(\n                  /(# Render)[^\\n]+/,\n                  \"$1\",\n                );\n                if (csrLog === resumeLog) {\n                  if (expected) {\n                    expected += \"\\n\\n\";\n                  }\n                  expected += csrLog;\n                  break;\n                }\n              }\n\n              if (actual) {\n                actual += \"\\n\\n\";\n              }\n              actual += resumeLog;\n            }\n            prevResumeLog = resumeLog;\n          }\n\n          if (!expected && actual) {\n            assert.strictEqual(csrLogs.join(\"\\n\\n\"), resumeLogs.join(\"\\n\\n\"));\n          } else {\n            assert.strictEqual(actual, expected);\n          }\n        });\n      });\n    });\n  }\n});\n\nasync function compileCode(templateFile: string, config: compiler.Config) {\n  return (await compiler.compileFile(templateFile, config)).code;\n}\n\nfunction indent(data: unknown) {\n  return String(data)\n    .split(\"\\n\")\n    .map((line) => `  ${line}`)\n    .join(\"\\n\");\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/marko.json",
    "content": "{\n  \"transform\": \"./utils/embed-test-transform.ts\"\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/package.json",
    "content": "{\n  \"name\": \"marko-test\",\n  \"version\": \"1.0.0\",\n  \"type\": \"commonjs\"\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/resolve-cursor-position.test.ts",
    "content": "import assert from \"node:assert/strict\";\n\nimport { resolveCursorPosition } from \"../dom/resolve-cursor-position\";\n\ndescribe(\"resolveCursorPosition\", () => {\n  [\n    {\n      initial: \"ABy|C\",\n      updated: \"ABY|C\",\n    },\n    {\n      initial: \"(540|\",\n      updated: \"(540|) \",\n      inputType: \"deleteBackwards\",\n    },\n    {\n      initial: \"(540|\",\n      updated: \"(540) |\",\n    },\n    {\n      initial: \"(540|8) 109-227\",\n      updated: \"(540|) 810-9227\",\n    },\n    {\n      initial: \"(5405|) 810-9227 1\",\n      updated: \"(540) 5|81-0922 71\",\n    },\n    {\n      initial: \"Sell on ebay|\",\n      updated: \"Sell on eBay|\",\n    },\n    {\n      initial: \"search g|oogle\",\n      updated: \"search G|OOGLE\",\n    },\n    {\n      initial: \"(540|8) 109-2279\",\n      updated: \"(540|) 810-9227\",\n    },\n    {\n      initial: \"(5405|) 810-9227\",\n      updated: \"(540) 5|81-0922\",\n    },\n    {\n      initial: \"(540)5| 810-9227\",\n      updated: \"(540) 5|81-0922\",\n    },\n    {\n      initial: \"(540) | 810-9227\",\n      updated: \"(540) |810-9227\",\n    },\n    {\n      initial: \"366-47|928\",\n      updated: \"(366) 47|9-28\",\n    },\n    {\n      initial: \"3669|-7928\",\n      updated: \"(366) 9|79-28\",\n    },\n    {\n      initial: \"(366) |79-28\",\n      updated: \"366|-7928\",\n      inputType: \"deleteBackwards\",\n    },\n    {\n      initial: \"(540)|810-9227\",\n      updated: \"(540)| 810-9227\",\n      inputType: \"deleteBackwards\",\n    },\n  ].forEach(({ initial, updated, inputType }) => {\n    it(initial + \" → \" + updated, () => {\n      const initialPosition = initial.indexOf(\"|\");\n      const expectedPosition = updated.indexOf(\"|\");\n      const updatedValue = updated.replace(\"|\", \"\");\n      let actualPosition = resolveCursorPosition(\n        inputType || \"\",\n        initialPosition,\n        initial.replace(\"|\", \"\"),\n        updated.replace(\"|\", \"\"),\n      );\n\n      if (actualPosition === -1) {\n        actualPosition = updatedValue.length;\n      }\n\n      if (actualPosition !== expectedPosition) {\n        const before = updatedValue.slice(0, actualPosition);\n        const after = updatedValue.slice(actualPosition);\n        const actual = before + \"|\" + after;\n        assert.equal(actual, updated);\n      }\n    });\n  });\n});\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/serializer.test.ts",
    "content": "import assert from \"node:assert/strict\";\nimport { inspect } from \"node:util\";\n\nimport { register, Serializer, stringify } from \"../html/serializer\";\nimport type { Boundary } from \"../html/writer\";\n\nconst [major, minor] = process.version\n  .slice(1)\n  .split(\".\")\n  .map((v) => parseInt(v));\nconst shouldTestRequestAndResponse =\n  major > 24 || (major === 24 && minor >= 14);\n\ndescribe(\"serializer\", () => {\n  it(\"example\", () => {\n    const data = {\n      strings: \"hello\\nworld\",\n      numbers: [1, NaN, Infinity],\n      booleans: [true, false],\n      void: [null, undefined],\n      regexps: /abc/g,\n      maps: new Map([[1, 2]]),\n      sets: new Set([1, 2]),\n      nested: {\n        object: {\n          \"special-keys\": 1,\n        },\n      },\n    };\n\n    (data.nested.object as any).cyclical = data;\n\n    assertStringify(\n      data,\n      `{strings:\"hello\\\\nworld\",numbers:[1,NaN,Infinity],booleans:[!0,!1],void:[null,$],regexps:/abc/g,maps:new Map(_.a=[[1,2]]),sets:new Set(_.b=[1,2]),nested:{object:_.d={\"special-keys\":1}}},_.d.cyclical=_.c`,\n    );\n  });\n\n  describe(\"primitives\", () => {\n    describe(\"undefined\", () => {\n      it(\"literal\", () => assertStringify(undefined, ``));\n      it(\"in object\", () => assertStringify({ x: undefined }, `{}`));\n    });\n\n    it(\"null\", () => {\n      assertStringify(null, `null`);\n    });\n\n    describe(\"booleans\", () => {\n      it(\"true\", () => assertStringify(true, `!0`));\n      it(\"false\", () => assertStringify(false, `!1`));\n    });\n\n    describe(\"string\", () => {\n      it(\"empty\", () => assertStringify(\"\", `\"\"`));\n      it(\"normal\", () => assertStringify(\"test\", `\"test\"`));\n      it(\"over 30 chars deduped\", () => {\n        const long = \"1234567890123456789012345678901\";\n        assertStringify({ a: long, b: long }, `{a:_.a=\"${long}\",b:_.a}`);\n      });\n      it(\"special characters\", () =>\n        assertStringify(\n          '\"\\b\\t\\n\\f\\r\\v\\0</script\\u2028\\u2029some other content',\n          `\"\\\\\"\\b\\t\\\\n\\f\\\\r\\x0B\\x00\\\\x3C/script\\\\u2028\\\\u2029some other content\"`,\n        ));\n    });\n\n    describe(\"number\", () => {\n      it(\"zero\", () => assertStringify(0, `0`));\n      it(\"positive\", () => assertStringify(1, `1`));\n      it(\"negative\", () => assertStringify(-1, `-1`));\n      it(\"decimal\", () => assertStringify(0.1, `0.1`));\n      it(\"negative decimal\", () => assertStringify(-0.1, `-0.1`));\n      it(\"NaN\", () => assertStringify(NaN, `NaN`));\n      it(\"Infinity\", () => assertStringify(Infinity, `Infinity`));\n      it(\"negative Infinity\", () => assertStringify(-Infinity, `-Infinity`));\n    });\n\n    describe(\"bigint\", () => {\n      it(\"zero\", () => assertStringify(BigInt(0), `0n`));\n      it(\"positive\", () => assertStringify(BigInt(1), `1n`));\n      it(\"negative\", () => assertStringify(BigInt(-1), `-1n`));\n      it(\"max safe integer\", () =>\n        assertStringify(\n          BigInt(Number.MAX_SAFE_INTEGER),\n          `${Number.MAX_SAFE_INTEGER}n`,\n        ));\n    });\n  });\n\n  describe(\"symbol\", () => {\n    it(\"unknown\", () => assertStringify({ s: Symbol() }, `{s:Symbol()}`));\n    it(\"unknown duplicated\", () => {\n      const a = Symbol();\n      const b = Symbol();\n      assertStringify(\n        { a: [a, a], b: [b, b] },\n        `{a:[_.a=Symbol(),_.a],b:[_.b=Symbol(),_.b]}`,\n      );\n    });\n    it(\"for\", () => assertStringify(Symbol.for(\"test\"), `Symbol.for(\"test\")`));\n    it(\"iterator\", () => assertStringify(Symbol.iterator, `Symbol.iterator`));\n    it(\"asyncIterator\", () =>\n      assertStringify(Symbol.asyncIterator, `Symbol.asyncIterator`));\n    it(\"hasInstance\", () =>\n      assertStringify(Symbol.hasInstance, `Symbol.hasInstance`));\n    it(\"isConcatSpreadable\", () =>\n      assertStringify(Symbol.isConcatSpreadable, `Symbol.isConcatSpreadable`));\n    it(\"match\", () => assertStringify(Symbol.match, `Symbol.match`));\n    it(\"matchAll\", () => assertStringify(Symbol.matchAll, `Symbol.matchAll`));\n    it(\"replace\", () => assertStringify(Symbol.replace, `Symbol.replace`));\n    it(\"search\", () => assertStringify(Symbol.search, `Symbol.search`));\n    it(\"species\", () => assertStringify(Symbol.species, `Symbol.species`));\n    it(\"split\", () => assertStringify(Symbol.split, `Symbol.split`));\n    it(\"toPrimitive\", () =>\n      assertStringify(Symbol.toPrimitive, `Symbol.toPrimitive`));\n    it(\"toStringTag\", () =>\n      assertStringify(Symbol.toStringTag, `Symbol.toStringTag`));\n    it(\"unscopables\", () =>\n      assertStringify(Symbol.unscopables, `Symbol.unscopables`));\n  });\n\n  describe(\"weakmap\", () => {\n    it(\"empty\", () => assertStringify(new WeakMap(), `new WeakMap`));\n    it(\"values ignored\", () =>\n      assertStringify(new WeakMap([[{}, 1]]), `new WeakMap`));\n  });\n\n  describe(\"weakset\", () => {\n    it(\"empty\", () => assertStringify(new WeakSet(), `new WeakSet`));\n    it(\"values ignored\", () =>\n      assertStringify(new WeakSet([{}]), `new WeakSet`));\n  });\n\n  describe(\"date\", () => {\n    it(\"epoch\", () =>\n      assertStringify(new Date(0), `new Date(\"1970-01-01T00:00:00.000Z\")`));\n    it(\"now\", () => {\n      const date = new Date();\n      assertStringify(date, `new Date(\"${date.toISOString()}\")`);\n    });\n  });\n\n  describe(\"map\", () => {\n    it(\"empty\", () => assertStringify(new Map(), `new Map`));\n    it(\"nested\", () =>\n      assertStringify(new Map([[1, new Map()]]), `new Map(_.a=[[1,new Map]])`));\n    it(\"circular key\", () => {\n      const map = new Map();\n      map.set(map, 1);\n      assertStringify(\n        map,\n        `((m,a)=>(a[0][0]=m,a.forEach(i=>m.set(i[0],i[1])),m))(new Map,_.a=[[$,1]])`,\n      );\n    });\n    it(\"circular value\", () => {\n      const map = new Map();\n      map.set(1, map);\n      assertStringify(\n        map,\n        `((m,a)=>(a[0][1]=m,a.forEach(i=>m.set(i[0],i[1])),m))(new Map,_.a=[[1]])`,\n      );\n    });\n    it(\"circular key and value\", () => {\n      const map = new Map();\n      map.set(map, map);\n      assertStringify(\n        map,\n        `((m,a)=>(a[0][0]=a[0][1]=m,a.forEach(i=>m.set(i[0],i[1])),m))(new Map,_.a=[[]])`,\n      );\n    });\n    it(\"circular mixed\", () => {\n      const map = new Map<unknown, unknown>([[1, 2]]);\n      map.set(map, map);\n      map.set(3, 4);\n      assertStringify(\n        map,\n        `((m,a)=>(a[1][0]=a[1][1]=m,a.forEach(i=>m.set(i[0],i[1])),m))(new Map,_.a=[[1,2],[],[3,4]])`,\n      );\n    });\n    it(\"circular nested\", () => {\n      const map = new Map<unknown, unknown>([[1, 2]]);\n      map.set(3, { nested: map });\n\n      assertStringify(map, `new Map(_.a=[[1,2],[3,_.c={}]]),_.c.nested=_.b`);\n    });\n\n    it(\"large circular key\", () => {\n      const map = createPaddedMap();\n      map.set(map, 1);\n      assertStringify(\n        map,\n        `(a=>a.reduce((m,v,i)=>i%2?m:m.set(v,a[i+1]),a[50]=new Map))(_.a=[\"0\",0,\"1\",1,\"2\",2,\"3\",3,\"4\",4,\"5\",5,\"6\",6,\"7\",7,\"8\",8,\"9\",9,\"a\",10,\"b\",11,\"c\",12,\"d\",13,\"e\",14,\"f\",15,\"g\",16,\"h\",17,\"i\",18,\"j\",19,\"k\",20,\"l\",21,\"m\",22,\"n\",23,\"o\",24,0,1])`,\n      );\n    });\n    it(\"large circular value\", () => {\n      const map = createPaddedMap();\n      map.set(1, map);\n      assertStringify(\n        map,\n        `(a=>a.reduce((m,v,i)=>i%2?m:m.set(v,a[i+1]),a[51]=new Map))(_.a=[\"0\",0,\"1\",1,\"2\",2,\"3\",3,\"4\",4,\"5\",5,\"6\",6,\"7\",7,\"8\",8,\"9\",9,\"a\",10,\"b\",11,\"c\",12,\"d\",13,\"e\",14,\"f\",15,\"g\",16,\"h\",17,\"i\",18,\"j\",19,\"k\",20,\"l\",21,\"m\",22,\"n\",23,\"o\",24,1,0])`,\n      );\n    });\n    it(\"large circular key and value\", () => {\n      const map = createPaddedMap();\n      map.set(map, map);\n      assertStringify(\n        map,\n        `(a=>a.reduce((m,v,i)=>i%2?m:m.set(v,a[i+1]),a[50]=a[51]=new Map))(_.a=[\"0\",0,\"1\",1,\"2\",2,\"3\",3,\"4\",4,\"5\",5,\"6\",6,\"7\",7,\"8\",8,\"9\",9,\"a\",10,\"b\",11,\"c\",12,\"d\",13,\"e\",14,\"f\",15,\"g\",16,\"h\",17,\"i\",18,\"j\",19,\"k\",20,\"l\",21,\"m\",22,\"n\",23,\"o\",24,0,0])`,\n      );\n    });\n    it(\"large circular mixed\", () => {\n      const map = createPaddedMap();\n      map.set(map, map);\n      map.set(3, 4);\n      assertStringify(\n        map,\n        `(a=>a.reduce((m,v,i)=>i%2?m:m.set(v,a[i+1]),a[50]=a[51]=new Map))(_.a=[\"0\",0,\"1\",1,\"2\",2,\"3\",3,\"4\",4,\"5\",5,\"6\",6,\"7\",7,\"8\",8,\"9\",9,\"a\",10,\"b\",11,\"c\",12,\"d\",13,\"e\",14,\"f\",15,\"g\",16,\"h\",17,\"i\",18,\"j\",19,\"k\",20,\"l\",21,\"m\",22,\"n\",23,\"o\",24,0,0,3,4])`,\n      );\n    });\n    it(\"large circular nested\", () => {\n      const map = createPaddedMap();\n      map.set(3, { nested: map });\n\n      assertStringify(\n        map,\n        `(a=>a.reduce((m,v,i)=>i%2?m:m.set(v,a[i+1]),new Map))(_.a=[\"0\",0,\"1\",1,\"2\",2,\"3\",3,\"4\",4,\"5\",5,\"6\",6,\"7\",7,\"8\",8,\"9\",9,\"a\",10,\"b\",11,\"c\",12,\"d\",13,\"e\",14,\"f\",15,\"g\",16,\"h\",17,\"i\",18,\"j\",19,\"k\",20,\"l\",21,\"m\",22,\"n\",23,\"o\",24,3,_.c={}]),_.c.nested=_.b`,\n      );\n    });\n\n    it(\"dedupe value and keys across flushes\", () => {\n      const serializer = assertSerializer();\n      const objA = { a: 1 };\n      const objB = { b: 2 };\n      const map = new Map<unknown, unknown>([[objA, objB]]);\n\n      serializer.assertStringify(map, `new Map(_.a=[[{a:1},{b:2}]])`);\n      serializer.assertStringify({ c: objA }, `{c:_.c=_.a[0][0]}`);\n      serializer.assertStringify({ d: objB }, `{d:_.e=_.a[0][1]}`);\n      serializer.assertStringify(\n        { e: map, f: objA, g: objB },\n        `{e:_.b,f:_.c,g:_.e}`,\n      );\n    });\n  });\n\n  describe(\"set\", () => {\n    it(\"empty\", () => assertStringify(new Set(), `new Set`));\n    it(\"nested\", () =>\n      assertStringify(new Set([new Set(), 1]), `new Set(_.a=[new Set,1])`));\n    it(\"circular\", () => {\n      const set = new Set();\n      set.add(set);\n      assertStringify(\n        set,\n        `((s,i)=>(i[0]=s,i.forEach(i=>s.add(i)),s))(new Set,_.a=[0])`,\n      );\n    });\n    it(\"circular nested\", () => {\n      const set = new Set<unknown>([1]);\n      set.add({ nested: set });\n\n      assertStringify(set, `new Set(_.a=[1,_.c={}]),_.c.nested=_.b`);\n    });\n    it(\"dedupe values across flushes\", () => {\n      const serializer = assertSerializer();\n      const objA = { a: 1 };\n      const objB = { b: 2 };\n      const set = new Set<unknown>([objA, objB]);\n      serializer.assertStringify(set, `new Set(_.a=[{a:1},{b:2}])`);\n      serializer.assertStringify({ c: objA }, `{c:_.c=_.a[0]}`);\n      serializer.assertStringify({ d: objB }, `{d:_.e=_.a[1]}`);\n      serializer.assertStringify(\n        { e: set, f: objA, g: objB },\n        `{e:_.b,f:_.c,g:_.e}`,\n      );\n    });\n  });\n\n  describe(\"object\", () => {\n    it(\"empty\", () => assertStringify({}, `{}`));\n    it(\"nested\", () => assertStringify({ a: { b: 1 } }, `{a:{b:1}}`));\n    it(\"dashed-keys\", () => assertStringify({ \"a-b\": 1 }, `{\"a-b\":1}`));\n    it(\"invalid-keys\", () =>\n      assertStringify({ \"0\": 1, \"a:\": 2, \"[\": 3 }, `{0:1,\"a:\":2,\"[\":3}`));\n    it(\"circular\", () => {\n      const obj: any = { a: 1 };\n      obj.obj = obj;\n      assertStringify(obj, `{a:1},_.a.obj=_.a`);\n    });\n    it(\"circular nested\", () => {\n      const obj: any = { a: 1 };\n      obj.b = { nested: obj };\n      assertStringify(obj, `{a:1,b:_.b={}},_.b.nested=_.a`);\n    });\n    it(\"circular object\", () => {\n      const parent = {\n        name: \"parent\",\n      } as any;\n\n      const child = {\n        parent,\n      };\n\n      parent.firstChild = child;\n      parent.children = [child];\n\n      assertStringify(\n        { parent },\n        `{parent:_.a={name:\"parent\",firstChild:_.b={},children:[_.b]}},_.b.parent=_.a`,\n      );\n    });\n    it(\"circular object combined assignments\", () => {\n      const parent = {\n        name: \"parent\",\n      } as any;\n\n      const child = {\n        parentA: parent,\n        parentB: parent,\n        \"parent-c\": parent,\n      };\n\n      parent.children = [child];\n\n      assertStringify(\n        { parent },\n        `{parent:_.a={name:\"parent\",children:[_.b={}]}},_.b.parentA=_.b.parentB=_.b[\"parent-c\"]=_.a`,\n      );\n    });\n\n    it(\"circular assignments > 100 (deopt for chrome :crying-emoji:)\", () => {\n      const parent = {\n        name: \"parent\",\n        children: [],\n      } as any;\n\n      for (let i = 0; i < 101; i++) {\n        parent.children.push({\n          parent,\n        });\n      }\n\n      assertStringify(\n        { parent },\n        `{parent:_.a={name:\"parent\",children:[_.b={},_.c={},_.d={},_.e={},_.f={},_.g={},_.h={},_.i={},_.j={},_.k={},_.l={},_.m={},_.n={},_.o={},_.p={},_.q={},_.r={},_.s={},_.t={},_.u={},_.v={},_.w={},_.x={},_.y={},_.z={},_.A={},_.B={},_.C={},_.D={},_.E={},_.F={},_.G={},_.H={},_.I={},_.J={},_.K={},_.L={},_.M={},_.N={},_.O={},_.P={},_.Q={},_.R={},_.S={},_.T={},_.U={},_.V={},_.W={},_.X={},_.Y={},_.Z={},_.$={},_.ab={},_.bb={},_.cb={},_.db={},_.eb={},_.fb={},_.gb={},_.hb={},_.ib={},_.jb={},_.kb={},_.lb={},_.mb={},_.nb={},_.ob={},_.pb={},_.qb={},_.rb={},_.sb={},_.tb={},_.ub={},_.vb={},_.wb={},_.xb={},_.yb={},_.zb={},_.Ab={},_.Bb={},_.Cb={},_.Db={},_.Eb={},_.Fb={},_.Gb={},_.Hb={},_.Ib={},_.Jb={},_.Kb={},_.Lb={},_.Mb={},_.Nb={},_.Ob={},_.Pb={},_.Qb={},_.Rb={},_.Sb={},_.Tb={},_.Ub={},_.Vb={},_.Wb={}]}},($=>(_.b.parent=$,_.c.parent=$,_.d.parent=$,_.e.parent=$,_.f.parent=$,_.g.parent=$,_.h.parent=$,_.i.parent=$,_.j.parent=$,_.k.parent=$,_.l.parent=$,_.m.parent=$,_.n.parent=$,_.o.parent=$,_.p.parent=$,_.q.parent=$,_.r.parent=$,_.s.parent=$,_.t.parent=$,_.u.parent=$,_.v.parent=$,_.w.parent=$,_.x.parent=$,_.y.parent=$,_.z.parent=$,_.A.parent=$,_.B.parent=$,_.C.parent=$,_.D.parent=$,_.E.parent=$,_.F.parent=$,_.G.parent=$,_.H.parent=$,_.I.parent=$,_.J.parent=$,_.K.parent=$,_.L.parent=$,_.M.parent=$,_.N.parent=$,_.O.parent=$,_.P.parent=$,_.Q.parent=$,_.R.parent=$,_.S.parent=$,_.T.parent=$,_.U.parent=$,_.V.parent=$,_.W.parent=$,_.X.parent=$,_.Y.parent=$,_.Z.parent=$,_.$.parent=$,_.ab.parent=$,_.bb.parent=$,_.cb.parent=$,_.db.parent=$,_.eb.parent=$,_.fb.parent=$,_.gb.parent=$,_.hb.parent=$,_.ib.parent=$,_.jb.parent=$,_.kb.parent=$,_.lb.parent=$,_.mb.parent=$,_.nb.parent=$,_.ob.parent=$,_.pb.parent=$,_.qb.parent=$,_.rb.parent=$,_.sb.parent=$,_.tb.parent=$,_.ub.parent=$,_.vb.parent=$,_.wb.parent=$,_.xb.parent=$,_.yb.parent=$,_.zb.parent=$,_.Ab.parent=$,_.Bb.parent=$,_.Cb.parent=$,_.Db.parent=$,_.Eb.parent=$,_.Fb.parent=$,_.Gb.parent=$,_.Hb.parent=$,_.Ib.parent=$,_.Jb.parent=$,_.Kb.parent=$,_.Lb.parent=$,_.Mb.parent=$,_.Nb.parent=$,_.Ob.parent=$,_.Pb.parent=$,_.Qb.parent=$,_.Rb.parent=$,_.Sb.parent=$,_.Tb.parent=$,_.Ub.parent=$,_.Vb.parent=$,_.Wb.parent=$))(_.a)`,\n      );\n    });\n\n    it(\"known objects\", () => {\n      assertStringify(\n        [console, Math, JSON, globalThis],\n        `[console,Math,JSON,globalThis]`,\n      );\n    });\n  });\n\n  describe(\"array\", () => {\n    it(\"empty\", () => assertStringify([], `[]`));\n    it(\"nested\", () => assertStringify([1, [2]], `[1,[2]]`));\n    // eslint-disable-next-line no-sparse-arrays\n    it(\"sparse\", () => assertStringify([, 1, 2], `[$,1,2]`));\n    it(\"undefined\", () => assertStringify([undefined, 1, 2], `[$,1,2]`));\n    it(\"circular\", () => {\n      const arr: any = [1];\n      arr.push(arr);\n      assertStringify(arr, `[1,],_.a[1]=_.a`);\n    });\n    it(\"circular nested\", () => {\n      const arr: any = [1];\n      arr.push({ nested: arr });\n      assertStringify(arr, `[1,_.b={}],_.b.nested=_.a`);\n    });\n    it(\"circular combined assignments\", () => {\n      const a: any = [];\n      const b: any = [a, 1, a];\n      a.push(b);\n      a.push(2);\n      a.push(b);\n\n      assertStringify(a, `[_.b=[,1,],2,_.b],_.b[0]=_.b[2]=_.a`);\n    });\n\n    it(\"circular with empty\", () => {\n      const a: any = [];\n      const b: any = [a, 1, a];\n      a.push(b);\n      a.push(2);\n      a.push(undefined);\n\n      assertStringify(a, `[_.b=[,1,],2,$],_.b[0]=_.b[2]=_.a`);\n    });\n  });\n\n  describe(\"null prototype\", () => {\n    it(\"empty\", () => {\n      const obj = Object.create(null);\n      assertStringify(obj, `{__proto__:null}`);\n    });\n\n    it(\"nested\", () => {\n      const obj = Object.create(null);\n      obj.a = Object.create(null);\n      obj.a.b = 1;\n      assertStringify(obj, `{a:{b:1,__proto__:null},__proto__:null}`);\n    });\n  });\n\n  describe(\"misc\", () => {\n    it(\"nested\", () =>\n      assertStringify(\n        {\n          array: [\n            {\n              a: 1,\n              b: [\"c\"],\n            },\n            2,\n          ],\n        },\n        `{array:[{a:1,b:[\"c\"]},2]}`,\n      ));\n\n    it(\"shared\", () => {\n      const registered = new Date(0);\n      const pattern = /test/;\n      const child = { name: \"Henry\" };\n      const children = [child];\n\n      const mother = {\n        name: \"Jane\",\n        registered,\n        pattern,\n        firstChild: child,\n        children,\n      };\n\n      const father = {\n        name: \"Frank\",\n        registered,\n        pattern,\n        firstChild: child,\n        children,\n      };\n\n      assertStringify(\n        {\n          mother,\n          father,\n        },\n        `{mother:{name:\"Jane\",registered:_.b=new Date(\"1970-01-01T00:00:00.000Z\"),pattern:_.c=/test/,firstChild:_.a={name:\"Henry\"},children:_.d=[_.a]},father:{name:\"Frank\",registered:_.b,pattern:_.c,firstChild:_.a,children:_.d}}`,\n      );\n    });\n\n    it(\"unsupported constructor\", () => {\n      class Thing {}\n      assertStringify({ thing: new Thing() }, `{}`);\n    });\n\n    it(\"unsupported prototype\", () => {\n      const obj = Object.create({ x: 1 });\n      obj.y = 2;\n      assertStringify(obj, `{y:2}`);\n    });\n\n    it(\"unsupported prototype with nested\", () => {\n      const obj = Object.create({ x: 1 });\n      obj.y = { z: 2 };\n      assertStringify(obj, `{y:{z:2}}`);\n    });\n\n    it(\"Symbol.iterator inline\", () => {\n      const obj = {\n        x: 1,\n        *[Symbol.iterator]() {\n          yield 1;\n          yield 2;\n          yield 3;\n        },\n      };\n\n      assertStringify(\n        obj,\n        `{x:1,*[(_.a=[1,2,3],Symbol.iterator)](){yield*_.a}}`,\n      );\n    });\n\n    it(\"Symbol.iterator circular\", () => {\n      const obj = {\n        x: 1,\n        *[Symbol.iterator]() {\n          yield 1;\n          yield 2;\n          yield obj;\n        },\n      };\n\n      assertStringify(\n        obj,\n        `{x:1,*[(_.a=[1,2,],Symbol.iterator)](){yield*_.a}},_.a[2]=_.b`,\n      );\n    });\n\n    it.skip(\"Symbol.iterator registered\", () => {\n      // Unsupported for now since we share the reference for iterators on attribute tags.\n      const obj = {\n        y: 2,\n        [Symbol.iterator]: iterate,\n      };\n\n      function* iterate() {\n        yield 1;\n        yield 2;\n        yield 3;\n      }\n\n      register(\"iterate\", iterate);\n\n      assertStringify(obj, `{y:2,[Symbol.iterator]:_._.iterate}`, {\n        _: { iterate },\n      });\n    });\n  });\n\n  describe(\"typed arrays\", () => {\n    it(\"ArrayBuffer\", () =>\n      assertStringify(new ArrayBuffer(32), `new ArrayBuffer(32)`));\n    it(\"Empty ArrayBuffer\", () =>\n      assertStringify(new ArrayBuffer(0), `new ArrayBuffer`));\n    it(\"Uint8Array empty\", () =>\n      assertStringify(new Uint8Array(), `new Uint8Array`));\n    it(\"Uint8Array\", () =>\n      assertStringify(new Uint8Array([1, 2, 3]), `new Uint8Array([1,2,3])`));\n    it(\"Uint8ClampedArray\", () =>\n      assertStringify(\n        new Uint8ClampedArray([1, 2, 3]),\n        `new Uint8ClampedArray([1,2,3])`,\n      ));\n    it(\"Uint16Array\", () =>\n      assertStringify(new Uint16Array([1, 2, 3]), `new Uint16Array([1,2,3])`));\n    it(\"Uint32Array\", () =>\n      assertStringify(new Uint32Array([1, 2, 3]), `new Uint32Array([1,2,3])`));\n    it(\"Int8Array\", () =>\n      assertStringify(new Int8Array([1, 2, 3]), `new Int8Array([1,2,3])`));\n    it(\"Int16Array\", () =>\n      assertStringify(new Int16Array([1, 2, 3]), `new Int16Array([1,2,3])`));\n    it(\"Int32Array\", () =>\n      assertStringify(new Int32Array([1, 2, 3]), `new Int32Array([1,2,3])`));\n    it(\"Float32Array\", () =>\n      assertStringify(\n        new Float32Array([1, 2, 3]),\n        `new Float32Array([1,2,3])`,\n      ));\n    it(\"Float64Array\", () =>\n      assertStringify(\n        new Float64Array([1, 2, 3]),\n        `new Float64Array([1,2,3])`,\n      ));\n\n    it(\"shared buffer, multiple views\", () => {\n      const buffer = new ArrayBuffer(32);\n      const view1 = new Uint8Array(buffer);\n      const view2 = new Uint16Array(buffer);\n      const view3 = new Uint32Array(buffer);\n\n      assertStringify(\n        { view1, view2, view3 },\n        `{view1:_.b=new Uint8Array(32),view2:new Uint16Array(_.a=_.b.buffer),view3:new Uint32Array(_.a)}`,\n      );\n    });\n\n    it(\"shared buffer with content, multiple views\", () => {\n      const buffer = new ArrayBuffer(32);\n      const view1 = new Uint8Array(buffer);\n      const view2 = new Uint16Array(buffer);\n      const view3 = new Uint32Array(buffer);\n\n      view1[0] = 1;\n      view2[1] = 2;\n      view3[2] = 3;\n\n      assertStringify(\n        { view1, view2, view3 },\n        `{view1:_.b=new Uint8Array([1,0,2,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),view2:new Uint16Array(_.a=_.b.buffer),view3:new Uint32Array(_.a)}`,\n      );\n    });\n\n    it(\"shared buffer with content, multiple views, buffer first\", () => {\n      const buffer = new ArrayBuffer(32);\n      const view1 = new Uint8Array(buffer);\n      const view2 = new Uint16Array(buffer);\n      const view3 = new Uint32Array(buffer);\n\n      view1[0] = 1;\n      view2[1] = 2;\n      view3[2] = 3;\n\n      assertStringify(\n        { buffer, view1, view2, view3 },\n        `{buffer:_.a=new Int8Array([1,0,2,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]).buffer,view1:new Uint8Array(_.a),view2:new Uint16Array(_.a),view3:new Uint32Array(_.a)}`,\n      );\n    });\n\n    it(\"shared buffer with content, multiple views, buffer last\", () => {\n      const buffer = new ArrayBuffer(32);\n      const view1 = new Uint8Array(buffer);\n      const view2 = new Uint16Array(buffer);\n      const view3 = new Uint32Array(buffer);\n\n      view1[0] = 1;\n      view2[1] = 2;\n      view3[2] = 3;\n\n      assertStringify(\n        { view1, view2, view3, buffer },\n        `{view1:_.b=new Uint8Array([1,0,2,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),view2:new Uint16Array(_.a=_.b.buffer),view3:new Uint32Array(_.a),buffer:_.a}`,\n      );\n    });\n\n    it(\"shared empty array buffer, multiple views\", () => {\n      const buffer = new ArrayBuffer(0);\n      const view1 = new Uint8Array(buffer);\n      const view2 = new Uint16Array(buffer);\n      const view3 = new Uint32Array(buffer);\n\n      assertStringify(\n        { view1, view2, view3 },\n        `{view1:_.b=new Uint8Array,view2:new Uint16Array(_.a=_.b.buffer),view3:new Uint32Array(_.a)}`,\n      );\n    });\n\n    it(\"with byte offset\", () => {\n      const buffer = new ArrayBuffer(32);\n      const view1 = new Uint8Array(buffer, 8);\n      const view2 = new Uint16Array(buffer, 8);\n      const view3 = new Uint32Array(buffer, 8);\n\n      assertStringify(\n        { view1, view2, view3 },\n        `{view1:new Uint8Array(_.a=new ArrayBuffer(32),8),view2:new Uint16Array(_.a,8),view3:new Uint32Array(_.a,8)}`,\n      );\n    });\n\n    it(\"with byte offset and data\", () => {\n      const buffer = new ArrayBuffer(32);\n      const view1 = new Uint8Array(buffer, 8);\n      const view2 = new Uint16Array(buffer, 8);\n      const view3 = new Uint32Array(buffer, 8);\n\n      view1[0] = 1;\n      view2[1] = 2;\n      view3[2] = 3;\n\n      assertStringify(\n        { view1, view2, view3 },\n        `{view1:new Uint8Array(_.a=new Int8Array([0,0,0,0,0,0,0,0,1,0,2,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]).buffer,8),view2:new Uint16Array(_.a,8),view3:new Uint32Array(_.a,8)}`,\n      );\n    });\n\n    // it(\"BigInt64Array\", () =>\n    //   assertStringify(new BigInt64Array([1n, 2n, 3n]), `new BigInt64Array([1n,2n,3n])`));\n    // it(\"BigUint64Array\", () =>\n    //   assertStringify(new BigUint64Array([1n, 2n, 3n]), `new BigUint64Array([1n,2n,3n])`));\n  });\n\n  describe(\"URL\", () => {\n    it(\"value\", () =>\n      assertStringify(\n        new URL(\"https://example.com/?a=1&b=2\"),\n        `new URL(\"https://example.com/?a=1&b=2\")`,\n      ));\n    it(\"duplicated\", () => {\n      const url = new URL(\"https://example.com\");\n      assertStringify(url, `new URL(\"https://example.com/\")`);\n      assertStringify([url, url], `[_.a=new URL(\"https://example.com/\"),_.a]`);\n    });\n  });\n\n  describe(\"URLSearchParams\", () => {\n    it(\"empty\", () =>\n      assertStringify(new URLSearchParams(), `new URLSearchParams`));\n    it(\"value\", () =>\n      assertStringify(\n        new URLSearchParams(\"a=1&b=2\"),\n        `new URLSearchParams(\"a=1&b=2\")`,\n      ));\n    it(\"duplicated\", () => {\n      const url = new URLSearchParams(\"a=1&b=2\");\n      assertStringify(url, `new URLSearchParams(\"a=1&b=2\")`);\n      assertStringify([url, url], `[_.a=new URLSearchParams(\"a=1&b=2\"),_.a]`);\n    });\n  });\n\n  describe(\"Headers\", () => {\n    it(\"empty\", () => assertStringify(new Headers(), `new Headers`));\n    it(\"value\", () =>\n      assertStringify(\n        new Headers({ a: \"1\", b: \"2\" }),\n        `new Headers({a:\"1\",b:\"2\"})`,\n      ));\n    it(\"duplicated\", () => {\n      const headers = new Headers({ a: \"1\", b: \"2\" });\n      assertStringify(headers, `new Headers({a:\"1\",b:\"2\"})`);\n      assertStringify(\n        [headers, headers],\n        `[_.a=new Headers({a:\"1\",b:\"2\"}),_.a]`,\n      );\n    });\n  });\n\n  describe(\"FormData\", () => {\n    it(\"empty\", () => assertStringify(new FormData(), `new FormData`));\n    it(\"value\", () => {\n      const formData = new FormData();\n      formData.append(\"a\", \"1\");\n      formData.append(\"b\", \"2\");\n      assertStringify(\n        formData,\n        `[\"a\",\"1\",\"b\",\"2\"].reduce((f,v,i,a)=>i%2&&f.append(v,a[i+1])||f,new FormData)`,\n      );\n    });\n    it(\"duplicated\", () => {\n      const formData = new FormData();\n      formData.append(\"a\", \"1\");\n      formData.append(\"b\", \"2\");\n      assertStringify(\n        formData,\n        `[\"a\",\"1\",\"b\",\"2\"].reduce((f,v,i,a)=>i%2&&f.append(v,a[i+1])||f,new FormData)`,\n      );\n      assertStringify(\n        [formData, formData],\n        `[_.a=[\"a\",\"1\",\"b\",\"2\"].reduce((f,v,i,a)=>i%2&&f.append(v,a[i+1])||f,new FormData),_.a]`,\n      );\n    });\n  });\n\n  describe(\"generator\", () => {\n    it(\"empty\", () =>\n      assertStringify((function* () {})(), `(function*(){})()`));\n    it(\"single\", () =>\n      assertStringify(\n        (function* () {\n          yield 1;\n        })(),\n        `(function*(){yield 1})()`,\n      ));\n    it(\"multiple\", () =>\n      assertStringify(\n        (function* () {\n          yield 1;\n          yield 2;\n          yield 3;\n        })(),\n        `(function*(){yield 1;yield 2;yield 3})()`,\n      ));\n    it(\"nested\", () =>\n      assertStringify(\n        (function* () {\n          yield* (function* () {\n            yield 1;\n          })();\n        })(),\n        `(function*(){yield 1})()`,\n      ));\n\n    it(\"yield undefined\", () => {\n      const gen = (function* () {\n        yield 1;\n        yield undefined;\n        yield 2;\n        yield undefined;\n      })();\n      assertStringify(gen, `(function*(){yield 1;yield;yield 2;yield})()`);\n    });\n  });\n\n  describe(\"errors\", () => {\n    it(\"Error\", () => assertStringify(new Error(\"test\"), `new Error(\"test\")`));\n    it(\"EvalError\", () =>\n      assertStringify(new EvalError(\"test\"), `new EvalError(\"test\")`));\n    it(\"RangeError\", () =>\n      assertStringify(new RangeError(\"test\"), `new RangeError(\"test\")`));\n    it(\"ReferenceError\", () =>\n      assertStringify(\n        new ReferenceError(\"test\"),\n        `new ReferenceError(\"test\")`,\n      ));\n    it(\"SyntaxError\", () =>\n      assertStringify(new SyntaxError(\"test\"), `new SyntaxError(\"test\")`));\n    it(\"TypeError\", () =>\n      assertStringify(new TypeError(\"test\"), `new TypeError(\"test\")`));\n    it(\"URIError\", () =>\n      assertStringify(new URIError(\"test\"), `new URIError(\"test\")`));\n\n    describe(\"AggregateError\", () => {\n      it(\"empty\", () =>\n        assertStringify(new AggregateError([]), `new AggregateError([])`));\n      it(\"single\", () =>\n        assertStringify(\n          new AggregateError([\"test\"]),\n          `new AggregateError([\"test\"])`,\n        ));\n      it(\"multiple\", () =>\n        assertStringify(\n          new AggregateError([\"test\", \"test2\"]),\n          `new AggregateError([\"test\",\"test2\"])`,\n        ));\n      it(\"duplicate\", () => {\n        const error = new Error(\"test\");\n        assertStringify(\n          new AggregateError([error, error], \"test\"),\n          `new AggregateError([_.a=new Error(\"test\"),_.a],\"test\")`,\n        );\n      });\n      it(\"errors array referenced\", () => {\n        const agg = new AggregateError([new Error(\"test\")], \"test\");\n        assertStringify(\n          { errors: agg.errors, agg },\n          `{errors:_.a=[new Error(\"test\")],agg:new AggregateError(_.a,\"test\")}`,\n        );\n      });\n    });\n  });\n\n  describe(\"function\", () => {\n    it(\"known functions\", () => {\n      assertStringify(\n        [console.log, Object, Math.pow, JSON.stringify],\n        `[console.log,Object,Math.pow,JSON.stringify]`,\n      );\n    });\n\n    it(\"unknown functions\", () => {\n      const fn = () => 1;\n      assertStringify([fn, \"a\"], `[,\"a\"]`);\n    });\n  });\n\n  describe(\"registry\", () => {\n    it(\"reference object\", () => {\n      const obj = { a: 1 };\n      register(\"obj\", obj);\n      assertStringify(obj, `_._.obj`, { _: { obj } });\n    });\n\n    it(\"reference function\", () => {\n      const fn = () => 1;\n      register(\"fn\", fn);\n      assertStringify(fn, `_._.fn`, { _: { fn } });\n    });\n\n    it(\"reference non object key id\", () => {\n      const obj = { a: 1 };\n      register(\"a-b-c\", obj);\n      assertStringify(obj, `_._[\"a-b-c\"]`, { _: { \"a-b-c\": obj } });\n    });\n\n    it(\"scoped reference\", () => {\n      const builder = (s: typeof scope) => () => s.value;\n      const scope = { value: 1 };\n      const obj = { fn: builder(scope) };\n      register(\"fn\", obj.fn, scope);\n      assertStringify(obj, `{fn:_.b={value:1}},_.a.fn=_._.fn(_.b)`, {\n        _: { fn: builder },\n      });\n    });\n\n    it(\"circular scoped reference\", () => {\n      const scope = { value: 1 } as any;\n      const builder =\n        ({ value }: typeof scope) =>\n        () =>\n          value;\n      scope.fn = builder(scope);\n      register(\"fn\", scope.fn, scope);\n      assertStringify(scope, `{value:1},_.a.fn=_._.fn(_.a)`, {\n        _: { fn: builder },\n      });\n    });\n\n    it(\"read after circular scoped reference\", () => {\n      const scope = { value: 1 } as any;\n      const builder =\n        ({ value }: typeof scope) =>\n        () =>\n          value;\n      scope.fn = builder(scope);\n      register(\"fn\", scope.fn, scope);\n      assertStringify(\n        {\n          scope,\n          fn: scope.fn,\n        },\n        `{scope:_.a={value:1}},_.a.fn=_.b.fn=_._.fn(_.a)`,\n        {\n          _: { fn: builder },\n        },\n      );\n    });\n  });\n\n  describe(\"serializer\", () => {\n    it(\"multiple flushes\", () => {\n      const serializer = assertSerializer();\n      serializer.assertStringify({ a: 1 }, `{a:1}`);\n      serializer.assertStringify({ a: 2 }, `{a:2}`);\n    });\n\n    it(\"multiple flushes with shared references\", () => {\n      const serializer = assertSerializer();\n      const obj = { a: 1 };\n      serializer.assertStringify(obj, `{a:1}`);\n      serializer.assertStringify(obj, `_.a`);\n    });\n\n    it(\"multiple flushes with shared references and nested\", () => {\n      const serializer = assertSerializer();\n      const nested = { b: 1 };\n      const obj = { a: nested };\n      serializer.assertStringify(obj, `{a:{b:1}}`);\n      serializer.assertStringify({ c: nested }, `{c:_.b=_.a.a}`);\n      serializer.assertStringify({ d: nested }, `{d:_.b}`);\n    });\n  });\n\n  describe(\"promise\", () => {\n    it(\"resolves\", async () => {\n      const serializer = assertSerializer();\n      const obj = { x: 1 };\n      const promise = Promise.resolve(obj);\n      const [result] = await serializer.assertStringify(\n        promise,\n        `(p=>p=new Promise((f,r)=>_.a={f,r(e){p.catch(_=>0);r(e)}}))()`,\n        `_.a.f(_.a={x:1})`,\n      );\n      assert.deepEqual(serializer.get(\"a\"), obj);\n      assert.deepEqual(await result, obj);\n    });\n\n    it(\"rejects\", async () => {\n      const serializer = assertSerializer();\n      const error = new Error(\"test\");\n      const promise = Promise.reject(error);\n      const [result] = await serializer.assertStringify(\n        promise,\n        `(p=>p=new Promise((f,r)=>_.a={f,r(e){p.catch(_=>0);r(e)}}))()`,\n        `_.a.r(_.a=new Error(\"test\"))`,\n      );\n      assert.deepEqual(serializer.get(\"a\"), error);\n      await assert.rejects(result, error);\n    });\n  });\n\n  describe(\"async generator\", () => {\n    it(\"resolves\", async () => {\n      const serializer = assertSerializer();\n      const yielded = [{ x: 1 }, { y: 2 }];\n      const returned = { z: 3 };\n      const [result] = await serializer.assertStringify(\n        (async function* () {\n          yield* yielded;\n          return returned;\n        })(),\n        `(async function*(_,f,v,l,i,p=a=>l=new Promise((r,j)=>{f=_.r=r;_.j=j}),a=((_.f=v=>{f(v);a.push(p())}),[p()])){for(i of a)v=await i,i!=l&&(yield v);return v})(_.a={})`,\n        `_.a.f(_.c={x:1})`,\n        `_.a.f(_.d={y:2})`,\n        `_.a.r(_.e={z:3})`,\n      );\n\n      assert.deepEqual(await consumeIterator(result), {\n        yielded,\n        returned,\n        errored: undefined,\n      });\n    });\n\n    it(\"rejects\", async () => {\n      const serializer = assertSerializer();\n      const yielded = [{ x: 1 }, { y: 2 }];\n      const errored = new Error(\"boom\");\n      const [result] = await serializer.assertStringify(\n        (async function* () {\n          yield* yielded;\n          throw errored;\n        })(),\n        `(async function*(_,f,v,l,i,p=a=>l=new Promise((r,j)=>{f=_.r=r;_.j=j}),a=((_.f=v=>{f(v);a.push(p())}),[p()])){for(i of a)v=await i,i!=l&&(yield v);return v})(_.a={})`,\n        `_.a.f(_.c={x:1})`,\n        `_.a.f(_.d={y:2})`,\n        `_.a.j(_.e=new Error(\"boom\"))`,\n      );\n\n      assert.deepEqual(await consumeIterator(result), {\n        yielded,\n        errored,\n        returned: undefined,\n      });\n    });\n  });\n\n  describe(\"readable stream\", () => {\n    it(\"resolves with sync flushes\", async () => {\n      const serializer = assertSerializer();\n      const yielded = [{ x: 1 }, { y: 2 }];\n      const stream = new ReadableStream({\n        start(ctrl) {\n          for (const value of yielded) {\n            ctrl.enqueue(value);\n          }\n          ctrl.close();\n        },\n      });\n      const [result] = await serializer.assertStringify(\n        stream,\n        `new ReadableStream({start(c){(async(_,f,v,l,i,p=a=>l=new Promise((r,j)=>{f=_.r=r;_.j=j}),a=((_.f=v=>{f(v);a.push(p())}),[p()]))=>{for(i of a)v=await i,i==l?c.close():c.enqueue(v)})(_.a={}).catch(e=>c.error(e))}})`,\n        `_.a.f(_.c={x:1}),_.a.f(_.d={y:2})`,\n        `_.a.r()`,\n      );\n\n      assert.deepEqual(await consumeReader(result.getReader()), {\n        yielded,\n        returned: undefined,\n        errored: undefined,\n      });\n    });\n\n    it(\"resolves with async flushes\", async () => {\n      const serializer = assertSerializer();\n      const yielded = [{ x: 1 }, { y: 2 }];\n      const stream = new ReadableStream({\n        async start(ctrl) {\n          for (const value of yielded) {\n            ctrl.enqueue(value);\n            await new Promise((r) => setTimeout(r, 0));\n          }\n          ctrl.close();\n        },\n      });\n      const [result] = await serializer.assertStringify(\n        stream,\n        `new ReadableStream({start(c){(async(_,f,v,l,i,p=a=>l=new Promise((r,j)=>{f=_.r=r;_.j=j}),a=((_.f=v=>{f(v);a.push(p())}),[p()]))=>{for(i of a)v=await i,i==l?c.close():c.enqueue(v)})(_.a={}).catch(e=>c.error(e))}})`,\n        `_.a.f(_.c={x:1})`,\n        `_.a.f(_.d={y:2})`,\n        `_.a.r()`,\n      );\n\n      assert.deepEqual(await consumeReader(result.getReader()), {\n        yielded,\n        returned: undefined,\n        errored: undefined,\n      });\n    });\n\n    it(\"rejects sync\", async () => {\n      const serializer = assertSerializer();\n      const yielded = [{ x: 1 }, { y: 2 }];\n      const errored = new Error(\"boom\");\n      const stream = new ReadableStream({\n        start(ctrl) {\n          for (const value of yielded) {\n            ctrl.enqueue(value);\n          }\n          ctrl.error(errored);\n        },\n      });\n      const [result] = await serializer.assertStringify(\n        stream,\n        `new ReadableStream({start(c){(async(_,f,v,l,i,p=a=>l=new Promise((r,j)=>{f=_.r=r;_.j=j}),a=((_.f=v=>{f(v);a.push(p())}),[p()]))=>{for(i of a)v=await i,i==l?c.close():c.enqueue(v)})(_.a={}).catch(e=>c.error(e))}})`,\n        `_.a.j(_.c=new Error(\"boom\"))`,\n      );\n\n      assert.deepEqual(await consumeReader(result.getReader()), {\n        yielded: [],\n        returned: undefined,\n        errored,\n      });\n    });\n\n    it(\"rejects async\", async () => {\n      const serializer = assertSerializer();\n      const yielded = [{ x: 1 }];\n      const errored = new Error(\"boom\");\n      const stream = new ReadableStream({\n        async start(ctrl) {\n          for (const value of yielded) {\n            ctrl.enqueue(value);\n            await new Promise((r) => setTimeout(r, 0));\n          }\n          ctrl.error(errored);\n        },\n      });\n      const [result] = await serializer.assertStringify(\n        stream,\n        `new ReadableStream({start(c){(async(_,f,v,l,i,p=a=>l=new Promise((r,j)=>{f=_.r=r;_.j=j}),a=((_.f=v=>{f(v);a.push(p())}),[p()]))=>{for(i of a)v=await i,i==l?c.close():c.enqueue(v)})(_.a={}).catch(e=>c.error(e))}})`,\n        `_.a.f(_.c={x:1})`,\n        `_.a.j(_.d=new Error(\"boom\"))`,\n      );\n\n      assert.deepEqual(await consumeReader(result.getReader()), {\n        yielded,\n        returned: undefined,\n        errored,\n      });\n    });\n  });\n\n  describe(\"request\", () => {\n    it(\"url only\", () =>\n      assertStringify(\n        new Request(\"https://ebay.com/\"),\n        `new Request(\"https://ebay.com/\")`,\n      ));\n    it(\"method\", () =>\n      assertStringify(\n        new Request(\"https://ebay.com/\", { method: \"POST\" }),\n        `new Request(\"https://ebay.com/\",{method:\"POST\"})`,\n      ));\n\n    it(\"headers\", () => {\n      const req = new Request(\"https://ebay.com/\", {\n        headers: { \"content-type\": \"text/plain\" },\n        method: \"POST\",\n      });\n      assertStringify(\n        req,\n        `new Request(\"https://ebay.com/\",{headers:{\"content-type\":\"text/plain\"},method:\"POST\"})`,\n      );\n\n      assertStringify(\n        { req: req, headers: req.headers },\n        `{req:_.b=new Request(\"https://ebay.com/\",{headers:{\"content-type\":\"text/plain\"},method:\"POST\"}),headers:_.a=_.b.headers}`,\n      );\n    });\n\n    it(\"cache\", () =>\n      assertStringify(\n        new Request(\"https://ebay.com/\", { cache: \"no-store\" }),\n        `new Request(\"https://ebay.com/\",{cache:\"no-store\"})`,\n      ));\n\n    it(\"credentials\", () =>\n      assertStringify(\n        new Request(\"https://ebay.com/\", { credentials: \"omit\" }),\n        `new Request(\"https://ebay.com/\",{credentials:\"omit\"})`,\n      ));\n\n    it(\"integrity\", () =>\n      assertStringify(\n        new Request(\"https://ebay.com/\", { integrity: \"sha-256\" }),\n        `new Request(\"https://ebay.com/\",{integrity:\"sha-256\"})`,\n      ));\n\n    it(\"keepalive\", () =>\n      assertStringify(\n        new Request(\"https://ebay.com/\", { keepalive: true }),\n        `new Request(\"https://ebay.com/\",{keepalive:true})`,\n      ));\n\n    it(\"mode\", () =>\n      assertStringify(\n        new Request(\"https://ebay.com/\", { mode: \"no-cors\" }),\n        `new Request(\"https://ebay.com/\",{mode:\"no-cors\"})`,\n      ));\n\n    it(\"redirect\", () =>\n      assertStringify(\n        new Request(\"https://ebay.com/\", { redirect: \"manual\" }),\n        `new Request(\"https://ebay.com/\",{redirect:\"manual\"})`,\n      ));\n\n    it(\"referrer\", () =>\n      assertStringify(\n        new Request(\"https://ebay.com/\", { referrer: \"https://google.com/\" }),\n        `new Request(\"https://ebay.com/\",{referrer:\"https://google.com/\"})`,\n      ));\n\n    it(\"referrerPolicy\", () =>\n      assertStringify(\n        new Request(\"https://ebay.com/\", { referrerPolicy: \"no-referrer\" }),\n        `new Request(\"https://ebay.com/\",{referrerPolicy:\"no-referrer\"})`,\n      ));\n\n    shouldTestRequestAndResponse &&\n      it(\"body\", async () => {\n        const serializer = assertSerializer();\n        const obj = { a: 1 };\n        const request = new Request(\"https://ebay.com/\", {\n          method: \"POST\",\n          duplex: \"half\",\n          body: JSON.stringify(obj),\n        } as any);\n        const [result] = await serializer.assertStringify(\n          request,\n          `new Request(\"https://ebay.com/\",{body:new ReadableStream({start(c){(async(_,f,v,l,i,p=a=>l=new Promise((r,j)=>{f=_.r=r;_.j=j}),a=((_.f=v=>{f(v);a.push(p())}),[p()]))=>{for(i of a)v=await i,i==l?c.close():c.enqueue(v)})(_.a={}).catch(e=>c.error(e))}}),duplex:\"half\",headers:{\"content-type\":\"text/plain;charset=UTF-8\"},method:\"POST\"})`,\n          `_.a.f(_.c=new Uint8Array([123,34,97,34,58,49,125])),_.a.r()`,\n        );\n\n        assert.deepEqual(await result.json(), obj);\n      });\n  });\n\n  describe(\"response\", () => {\n    it(\"empty\", () => assertStringify(new Response(), `new Response`));\n    it(\"status\", () =>\n      assertStringify(\n        new Response(null, { status: 301 }),\n        `new Response(null,{status:301})`,\n      ));\n    it(\"statusText\", () =>\n      assertStringify(\n        new Response(null, { statusText: \"Moved Permanently\" }),\n        `new Response(null,{statusText:\"Moved Permanently\"})`,\n      ));\n    it(\"headers\", () => {\n      const res = new Response(null, { headers: { a: \"1\", b: \"2\" } });\n      assertStringify(res, `new Response(null,{headers:{a:\"1\",b:\"2\"}})`);\n\n      assertStringify(\n        { res: res, headers: res.headers },\n        `{res:_.b=new Response(null,{headers:{a:\"1\",b:\"2\"}}),headers:_.a=_.b.headers}`,\n      );\n    });\n\n    shouldTestRequestAndResponse &&\n      it(\"buffer\", async () => {\n        const serializer = assertSerializer();\n        const response = new Response(new Int8Array([116, 101, 115, 116]));\n        const [result] = await serializer.assertStringify(\n          response,\n          `new Response(new ReadableStream({start(c){(async(_,f,v,l,i,p=a=>l=new Promise((r,j)=>{f=_.r=r;_.j=j}),a=((_.f=v=>{f(v);a.push(p())}),[p()]))=>{for(i of a)v=await i,i==l?c.close():c.enqueue(v)})(_.a={}).catch(e=>c.error(e))}}))`,\n          `_.a.f(_.c=new Uint8Array([116,101,115,116])),_.a.r()`,\n        );\n\n        assert.deepEqual(await consumeReader(result.body!.getReader()), {\n          yielded: [new Uint8Array([116, 101, 115, 116])],\n          errored: undefined,\n          returned: undefined,\n        });\n      });\n\n    it(\"ReadableStream string encoded\", async () => {\n      const serializer = assertSerializer();\n      const encoder = new TextEncoder();\n      const response = new Response(\n        new ReadableStream({\n          async start(ctrl) {\n            ctrl.enqueue(encoder.encode(\"first \"));\n            await new Promise((r) => setTimeout(r, 0));\n            ctrl.enqueue(encoder.encode(\"second \"));\n            await new Promise((r) => setTimeout(r, 0));\n            ctrl.enqueue(encoder.encode(\"third\"));\n            ctrl.close();\n          },\n        }),\n      );\n\n      const [result] = await serializer.assertStringify(\n        response,\n        `new Response(new ReadableStream({start(c){(async(_,f,v,l,i,p=a=>l=new Promise((r,j)=>{f=_.r=r;_.j=j}),a=((_.f=v=>{f(v);a.push(p())}),[p()]))=>{for(i of a)v=await i,i==l?c.close():c.enqueue(v)})(_.a={}).catch(e=>c.error(e))}}))`,\n        `_.a.f(_.c=new Uint8Array([102,105,114,115,116,32]))`,\n        `_.a.f(_.d=new Uint8Array([115,101,99,111,110,100,32]))`,\n        `_.a.f(_.e=new Uint8Array([116,104,105,114,100])),_.a.r()`,\n      );\n\n      assert.equal(await result.text(), \"first second third\");\n    });\n\n    shouldTestRequestAndResponse &&\n      it(\"json\", async () => {\n        const serializer = assertSerializer();\n        const response = new Response(JSON.stringify({ a: 1 }), {\n          headers: { \"content-type\": \"application/json\" },\n        });\n        const [result] = await serializer.assertStringify(\n          response,\n          `new Response(new ReadableStream({start(c){(async(_,f,v,l,i,p=a=>l=new Promise((r,j)=>{f=_.r=r;_.j=j}),a=((_.f=v=>{f(v);a.push(p())}),[p()]))=>{for(i of a)v=await i,i==l?c.close():c.enqueue(v)})(_.a={}).catch(e=>c.error(e))}}),{headers:{\"content-type\":\"application/json\"}})`,\n          `_.a.f(_.c=new Uint8Array([123,34,97,34,58,49,125])),_.a.r()`,\n        );\n\n        assert.deepEqual(await result.json(), { a: 1 });\n      });\n  });\n});\n\nfunction assertSerializer(ctx: Record<PropertyKey, unknown> = {}) {\n  const serializer = new Serializer();\n  return {\n    get<T = any>(key: string) {\n      return ctx[key] as T;\n    },\n    assertStringify<T>(\n      val: T,\n      first: string,\n      ...flushes: string[]\n    ): [T] | Promise<[T]> {\n      const createDeferred = () => {\n        let resolve!: () => void;\n        let reject!: (err: unknown) => void;\n        const promise = new Promise<void>((res, rej) => {\n          resolve = res;\n          reject = rej;\n        });\n        return Object.assign(promise, { resolve, reject });\n      };\n\n      let promiseIndex = 0;\n      const promises: ReturnType<typeof createDeferred>[] = [];\n      const boundary = {\n        signal: {\n          aborted: false,\n        },\n        startAsync() {\n          promises.push(createDeferred());\n        },\n        endAsync() {\n          promises[promiseIndex++].resolve();\n        },\n      } as any as Boundary;\n      const result = assertSerializedIsActual(\n        val,\n        serializer.stringify(val, boundary),\n        first,\n        ctx,\n      );\n\n      if (flushes.length) {\n        return (async () => {\n          let promiseIndex = 0;\n          for (const flush of flushes) {\n            await promises[promiseIndex++];\n            const actual = serializer.stringify(undefined, boundary);\n            assert.equal(\n              actual?.replace(/^(?:_|\\(_,\\$\\))=>[({](.*?)[})]$/, \"$1\"),\n              flush,\n            );\n            (0, eval)(actual)(ctx);\n          }\n\n          return [result];\n        })();\n      } else {\n        return [result];\n      }\n    },\n  };\n}\n\nfunction assertStringify(\n  val: unknown,\n  serialized: string,\n  ctx?: Record<PropertyKey, unknown>,\n) {\n  assertSerializedIsActual(val, stringify(val), serialized, ctx);\n}\n\nfunction assertSerializedIsActual(\n  val: unknown,\n  actual: string,\n  serialized: string,\n  ctx: Record<PropertyKey, unknown> = {},\n) {\n  assert.equal(\n    actual.replace(\n      /^(?:_|\\(_,\\$\\))=>[({](?:(_\\.[^=]+)=)?(.*?)(?:,\\1)?[})]$/,\n      \"$2\",\n    ),\n    serialized,\n  );\n  const actualValue = (0, eval)(actual)(ctx);\n  assertIsDeepSubset(actualValue, val);\n  return actualValue;\n}\n\nfunction assertIsDeepSubset(\n  subset: unknown,\n  superset: unknown,\n  accessor: string = \"\",\n  seen = new Set<unknown>(),\n) {\n  if (Object.is(subset, superset)) return;\n\n  if (typeof subset === \"symbol\") {\n    assertEqualAtAccessor(String(subset), String(superset), accessor);\n    return;\n  }\n\n  if (typeof subset === \"function\") {\n    assertEqualAtAccessor(String(subset), String(superset), accessor);\n    assertIsDeepSubset(subset(), (superset as any)(), `${accessor}()`, seen);\n    return;\n  }\n\n  if (typeof subset !== \"object\" || subset === null) {\n    assertEqualAtAccessor(subset, superset, accessor);\n    return;\n  }\n\n  if (seen.has(subset)) return;\n  seen.add(subset);\n\n  const aConstructor = subset.constructor?.name || \"Null Prototype\";\n  const bConstructor =\n    (superset as object).constructor?.name || \"Null Prototype\";\n  assert.equal(\n    aConstructor,\n    bConstructor,\n    `${aConstructor} !== ${bConstructor} at ${accessor}`,\n  );\n\n  if (aConstructor === \"Promise\") {\n    (subset as Promise<unknown>).catch(() => {});\n  }\n\n  for (const key of Reflect.ownKeys(subset)) {\n    switch (key) {\n      case \"stack\":\n        break;\n      case \"length\":\n        assert.equal(\n          (subset as any).length <= (superset as any).length,\n          true,\n          `${accessor} length mismatch: ${(subset as any).length} > ${(superset as any).length}`,\n        );\n        break;\n      case Symbol.iterator: {\n        assert.equal(\n          hasSymbolIterator(superset),\n          true,\n          `${accessor}[Symbol.iterator]`,\n        );\n        const subsetArr = [...(subset as Iterable<unknown>)];\n        const superSetArr = [...(superset as Iterable<unknown>)];\n        for (let i = 0; i < subsetArr.length; i++) {\n          assertIsDeepSubset(\n            subsetArr[i],\n            superSetArr[i],\n            `${accessor}[${i}]`,\n            seen,\n          );\n        }\n        break;\n      }\n      default:\n        if (typeof key !== \"symbol\") {\n          assertIsDeepSubset(\n            (subset as any)[key],\n            (superset as any)[key],\n            `${accessor}.${key}`,\n            seen,\n          );\n        }\n        break;\n    }\n  }\n}\n\nfunction createPaddedMap() {\n  const map = new Map<unknown, unknown>();\n  for (let i = 0; i < 25; i++) {\n    map.set(i.toString(36), i);\n  }\n\n  return map;\n}\n\nfunction assertEqualAtAccessor<T>(\n  a: unknown,\n  b: T,\n  accessor: string | number,\n): asserts a is T {\n  assert.deepEqual(a, b, `${inspect(a)} !== ${inspect(b)} at ${accessor}`);\n}\n\nasync function consumeIterator(iter: AsyncIterator<unknown>) {\n  const yielded: unknown[] = [];\n  let errored: unknown = undefined;\n  let returned: unknown = undefined;\n\n  while (true) {\n    try {\n      const next = await iter.next();\n      if (next.done) {\n        returned = next.value;\n        break;\n      }\n      yielded.push(next.value);\n    } catch (err) {\n      errored = err;\n      break;\n    }\n  }\n\n  return { yielded, errored, returned };\n}\n\nasync function consumeReader(reader: ReadableStreamDefaultReader) {\n  const yielded: unknown[] = [];\n  let errored: unknown = undefined;\n  let returned: unknown = undefined;\n\n  while (true) {\n    try {\n      const next = await reader.read();\n      if (next.done) {\n        returned = next.value;\n        break;\n      }\n      yielded.push(next.value);\n    } catch (err) {\n      errored = err;\n      break;\n    }\n  }\n\n  return { yielded, errored, returned };\n}\n\nfunction hasSymbolIterator(\n  value: unknown,\n): value is { [Symbol.iterator](): IterableIterator<unknown> } {\n  return Symbol.iterator in (value as any);\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/utils/bundle.ts",
    "content": "import * as compiler from \"@marko/compiler\";\nimport pluginTerser from \"@rollup/plugin-terser\";\nimport fs from \"fs/promises\";\nimport path from \"path\";\nimport { format } from \"prettier\";\nimport { type OutputChunk, rollup } from \"rollup\";\nimport { minify } from \"terser\";\nimport glob from \"tiny-glob\";\nimport zlib from \"zlib\";\n\ninterface Sizes {\n  min: number;\n  brotli: number;\n}\n\nexport async function bundle(\n  entryTemplate: string,\n  nameCache: Record<string, unknown>,\n  compilerConfig: compiler.Config,\n) {\n  const cache = new Map<unknown, unknown>();\n  const hydratePrefix = \"\\0hydrate:\";\n  const entryCode = await fs.readFile(entryTemplate, \"utf-8\");\n  const optimizeKnownTemplates: string[] = await glob(\n    path.join(path.dirname(entryTemplate), \"**/*.marko\"),\n    { absolute: true },\n  );\n  const bundle = await rollup({\n    input: hydratePrefix + entryTemplate,\n    onwarn(warning, warn) {\n      switch (warning.code) {\n        case \"EMPTY_BUNDLE\":\n        case \"UNUSED_EXTERNAL_IMPORT\":\n          break;\n        default:\n          warn(warning);\n          break;\n      }\n    },\n    plugins: [\n      {\n        name: \"marko\",\n        resolveId(id, importer) {\n          if (!id.endsWith(\".marko\")) {\n            return {\n              id,\n              external: true,\n              moduleSideEffects: false,\n            };\n          }\n\n          if (id.startsWith(hydratePrefix)) {\n            return id;\n          }\n\n          if (importer?.startsWith(hydratePrefix)) {\n            return this.resolve(id, importer.slice(hydratePrefix.length), {\n              skipSelf: true,\n            });\n          }\n        },\n        load(id) {\n          if (id.startsWith(hydratePrefix)) {\n            id = id.slice(hydratePrefix.length);\n          }\n\n          if (id === entryTemplate) {\n            return entryCode;\n          }\n\n          return null;\n        },\n        async transform(code, id) {\n          if (id.endsWith(\".marko\")) {\n            const isHydrate = id.startsWith(hydratePrefix);\n            if (isHydrate) {\n              id = id.slice(hydratePrefix.length);\n            }\n\n            return (\n              await compiler.compile(code, id, {\n                ...compilerConfig,\n                cache,\n                optimize: true,\n                optimizeKnownTemplates,\n                output: isHydrate ? \"hydrate\" : \"dom\",\n              })\n            ).code;\n          }\n          return null;\n        },\n      },\n      pluginTerser({ compress: {}, mangle: false }),\n    ],\n  });\n\n  const { output } = await bundle.generate({\n    format: \"es\",\n    compact: true,\n  });\n  const chunks = output.filter((chunk) => \"code\" in chunk) as OutputChunk[];\n  const size = addSizes(\n    await Promise.all(\n      chunks.map((chunk) => getSizesForSrc(chunk.code, nameCache)),\n    ),\n  );\n\n  if (size.min === 0) {\n    return `// size: 0\\n`;\n  }\n\n  let result = \"\";\n  for (const chunk of chunks) {\n    if (chunk.type === \"chunk\" && chunk.code) {\n      if (chunks.length > 1) {\n        result += `\\n\\n// chunk: ${chunk.name}`;\n      }\n\n      result += `\\n\\n${await format(chunk.code, { parser: \"babel\" })}`;\n    }\n  }\n\n  return `// size: ${size.min} (min) ${size.brotli} (brotli)\\n${stripModuleCode(result)}`;\n}\n\nasync function getSizesForSrc(\n  code: string,\n  nameCache: Record<string, unknown>,\n): Promise<Sizes> {\n  const minified = stripModuleCode(\n    (\n      await minify(code, {\n        nameCache,\n        compress: {},\n        mangle: { module: true },\n      })\n    ).code!,\n  );\n  return {\n    min: Buffer.byteLength(minified),\n    brotli: Buffer.byteLength(await brotli(minified)),\n  };\n}\n\nfunction addSizes(all: Sizes[]) {\n  const total = { min: 0, brotli: 0 };\n  for (const { min, brotli } of all) {\n    total.min += min;\n    total.brotli += brotli;\n  }\n  return total;\n}\n\nfunction brotli(src: string): Promise<Buffer> {\n  return new Promise((resolve, reject) =>\n    zlib.brotliCompress(src, (error, result) =>\n      error ? reject(error) : resolve(result),\n    ),\n  );\n}\n\nfunction stripModuleCode(code: string) {\n  return code.replace(\n    /\\s*(?:export\\s*\\{[^}]+\\}|import\\s*.*\\s*from\\s*['\"][^'\"]+['\"]);?\\s*/gm,\n    \"\",\n  );\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/utils/capture-console.ts",
    "content": "import type { VirtualConsole } from \"jsdom\";\n\nexport interface ConsoleRecord {\n  type: (typeof Keys)[number];\n  args: any[];\n}\n\nconst Keys = [\"info\", \"log\", \"warn\", \"error\"] as const;\nconst originals = { ...console };\n\nfunction captureType(\n  type: (typeof Keys)[number],\n  fn: (...args: any) => void,\n  virtualConsole?: VirtualConsole,\n): () => void {\n  if (virtualConsole) {\n    virtualConsole.addListener(type, fn);\n    return () => virtualConsole.removeListener(type, fn);\n  }\n\n  globalThis.console[type] = fn;\n  return () => (globalThis.console[type] = originals[type]);\n}\n\nexport function captureConsole(virtualConsole?: VirtualConsole) {\n  let records: ConsoleRecord[] = [];\n  const cleanups = Keys.map((type) =>\n    captureType(\n      type,\n      (...args) => records.push({ type, args }),\n      virtualConsole,\n    ),\n  );\n\n  return {\n    records() {\n      try {\n        return records;\n      } finally {\n        records = [];\n      }\n    },\n    cleanup() {\n      while (cleanups.length) {\n        cleanups.pop()!();\n      }\n      return this.records();\n    },\n  };\n}\n\nexport function formatConsoleRecord(record: ConsoleRecord) {\n  return record.args.length\n    ? `${record.type.toUpperCase()} ${record.args.map((arg) => JSON.stringify(arg)).join(\" \")}`\n    : \"\";\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/utils/create-browser.ts",
    "content": "import { type DOMWindow, VirtualConsole } from \"jsdom\";\nimport { createBrowser } from \"jsdom-context-require\";\n\nexport default function (options: Parameters<typeof createBrowser>[0]) {\n  const browser = createBrowser({\n    ...options,\n    virtualConsole: new VirtualConsole(),\n  }) as ReturnType<typeof createBrowser> & {\n    stream(chunks: string[]): () => boolean;\n  };\n  const window = browser.window as unknown as DOMWindow & {\n    __RESOLVE_STATE__: typeof globalThis.__RESOLVE_STATE__;\n    MessageChannel: any;\n  };\n  window.__RESOLVE_STATE__ = globalThis.__RESOLVE_STATE__;\n  window.MARKO_DEBUG = true;\n  window.MessageChannel = (window as any).MessageChannel =\n    class MessageChannel {\n      port1: any;\n      port2: any;\n      constructor() {\n        this.port1 = { onmessage() {} };\n        this.port2 = {\n          postMessage: () => {\n            setImmediate(() => {\n              window.queueMicrotask(this.port1.onmessage);\n            });\n          },\n        };\n      }\n    };\n  window.requestAnimationFrame = (() => {\n    let queue: FrameRequestCallback[] | undefined;\n    return function requestAnimationFrame(fn) {\n      if (queue) {\n        queue.push(fn);\n      } else {\n        queue = [fn];\n        setTimeout(() => {\n          const timestamp = performance.now();\n          const batch = queue!;\n          queue = undefined;\n          for (const fn of batch) {\n            fn(timestamp);\n          }\n        });\n      }\n      return 0;\n    };\n  })();\n\n  browser.stream = (chunks) => {\n    const { document } = window;\n    document.open();\n\n    if (chunks.length > 1) {\n      const parsed = document.implementation.createHTMLDocument();\n      parsed.write(chunks.join(\"<!--%%FLUSH%%-->\"));\n      parsed.doctype?.remove();\n\n      const walker = parsed.createTreeWalker(parsed);\n      const targetNodes = new WeakMap<Node, Node>([[parsed, document]]);\n      let node: Node | null;\n\n      return () => {\n        while ((node = walker.nextNode())) {\n          if (\n            node.nodeType === 8 /* Node.COMMENT_NODE */ &&\n            (node as Comment).data === \"%%FLUSH%%\"\n          ) {\n            return true;\n          }\n\n          const isScript = (node as Element).tagName === \"SCRIPT\";\n          const clone = document.importNode(node, isScript);\n          targetNodes.set(node, clone);\n          (targetNodes.get(node.parentNode!) as ParentNode).appendChild(clone);\n\n          if (isScript) {\n            walker.nextNode();\n          }\n        }\n        document.close();\n        return false;\n      };\n    }\n\n    return () => {\n      if (chunks.length) {\n        document.write(chunks[0]);\n      }\n      document.close();\n      return false;\n    };\n  };\n\n  return browser;\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/utils/embed-test-transform.ts",
    "content": "import type { types as t } from \"@marko/compiler\";\nimport path from \"path\";\n\nimport type { TestConfig } from \"../main.test\";\n\nexport default {\n  Program(program) {\n    const filename = program.hub.file.opts.filename;\n\n    if (\n      /\\/__tests__\\/fixtures(-interop)?\\/[^/]+\\/template\\.marko$/.test(filename)\n    ) {\n      const config: TestConfig = (() => {\n        try {\n          return (\n            require(path.join(path.dirname(filename), \"test.ts\")).config ?? {}\n          );\n        } catch {\n          return {};\n        }\n      })();\n\n      (program.node.extra ??= {}).page = !config.embedded;\n    }\n  },\n} as t.Visitor;\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/utils/get-node-info.ts",
    "content": "export function getNodePath(\n  node: Node,\n  container: Node | null = node.ownerDocument,\n) {\n  const parts: string[] = [];\n  let cur: Node | null = node;\n  while (cur) {\n    const { parentNode } = cur;\n    const index = indexByTypeInParent(cur);\n    let name = cur.nodeName.toLowerCase();\n\n    if (index !== -1) {\n      name += `${index}`;\n    }\n\n    parts.unshift(name);\n\n    if (!parentNode || parentNode === container) {\n      break;\n    }\n\n    cur = parentNode as Node;\n  }\n\n  return parts.join(\"/\");\n}\n\nfunction indexByTypeInParent(node: Node) {\n  const { nodeName, parentNode } = node;\n  if (!parentNode) return -1;\n\n  let i = 0;\n  let child = parentNode.firstChild;\n  while (child) {\n    if (child === node) {\n      if (i !== 0) return i;\n      while ((child = child.nextSibling)) {\n        if (nodeName === child.nodeName) {\n          return 0;\n        }\n      }\n\n      return -1;\n    } else if (nodeName === child.nodeName) {\n      i++;\n    }\n\n    child = child.nextSibling;\n  }\n\n  return -1;\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/utils/resolve.ts",
    "content": "declare global {\n  var __RESOLVE_STATE__: {\n    lastId: number;\n    promises: Map<number, Promise<number>>;\n  };\n}\n\nconst state = (globalThis.__RESOLVE_STATE__ ||= {\n  lastId: 0,\n  promises: new Map(),\n});\n\nexport function resetResolveState() {\n  state.lastId = 0;\n  state.promises = new Map();\n}\n\nexport type Wait = typeof wait;\nexport const wait = Object.assign(\n  async () => {\n    let id: number;\n    let nextId: number | undefined;\n    do {\n      id = await getSharedPromise(nextId);\n      await new Promise((r) => setImmediate(r));\n      nextId = state.promises.size;\n    } while (id !== nextId);\n  },\n  {\n    wait: true,\n  },\n);\n\nexport function after(id: number): Wait {\n  return Object.assign(\n    async () => {\n      await getSharedPromise(id);\n      await new Promise((r) => setImmediate(r));\n    },\n    {\n      wait: true,\n    },\n  );\n}\n\nexport type Flush = typeof flush;\nexport const flush = Object.assign(() => {}, {\n  flush: true,\n});\n\nexport type Throws = ReturnType<typeof throws>;\nexport function throws(fn: (...args: any[]) => void) {\n  return Object.assign(fn, { throws: true });\n}\n\nexport function isWait(value: any): value is Wait {\n  return typeof value === \"function\" && value.wait;\n}\n\nexport function isFlush(value: any): value is Flush {\n  return typeof value === \"function\" && value.flush;\n}\n\nexport function isThrows(value: any): value is Throws {\n  return typeof value === \"function\" && value.throws;\n}\n\nexport function resolveAfter<T>(value: T, id?: number) {\n  const promise = getSharedPromise(id);\n  return Object.assign(\n    promise.then(() => {\n      return value;\n    }),\n    { value },\n  );\n}\nexport function rejectAfter<T extends Error>(value: T, id?: number) {\n  const promise = getSharedPromise(id);\n  return Object.assign(\n    promise.then(() => {\n      throw value;\n    }),\n    { value },\n  );\n}\n\nfunction getSharedPromise(id: number = state.lastId + 1): Promise<number> {\n  if (id < 1) {\n    return Promise.resolve(0);\n  }\n\n  let promise = state.promises.get(id);\n  if (!promise) {\n    state.promises.set(id, (promise = getSharedPromise(id - 1).then(tick)));\n  }\n  return promise;\n}\n\nfunction tick() {\n  return new Promise<number>((r) => {\n    setTimeout(() => {\n      setImmediate(() => {\n        setTimeout(() => {\n          r(++state.lastId);\n        });\n      });\n    });\n  });\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/utils/strip-inline-runtime.ts",
    "content": "import {\n  REORDER_RUNTIME_CODE,\n  WALKER_RUNTIME_CODE,\n} from \"@marko/runtime-tags/html/inlined-runtimes\";\nconst ESCAPED_WALKER_RUNTIME_CODE = escapeHTML(WALKER_RUNTIME_CODE);\nconst ESCAPED_REORDER_RUNTIME_CODE = escapeHTML(REORDER_RUNTIME_CODE);\n\nexport function stripInlineRuntime(str: string) {\n  return str\n    .replace(ESCAPED_WALKER_RUNTIME_CODE, \"WALKER_RUNTIME\")\n    .replace(ESCAPED_REORDER_RUNTIME_CODE, \"REORDER_RUNTIME\")\n    .replace(WALKER_RUNTIME_CODE, \"WALKER_RUNTIME\")\n    .replace(REORDER_RUNTIME_CODE, \"REORDER_RUNTIME\");\n}\n\nfunction escapeHTML(str: string): string {\n  return str.replaceAll(\"<\", \"&lt;\").replaceAll(\">\", \"&gt;\");\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/__tests__/utils/track-mutations.ts",
    "content": "import { js_beautify } from \"js-beautify\";\nimport type { JSDOM, VirtualConsole } from \"jsdom\";\nimport format, { plugins } from \"pretty-format\";\n\nimport {\n  captureConsole,\n  type ConsoleRecord,\n  formatConsoleRecord,\n} from \"./capture-console\";\nimport { getNodePath } from \"./get-node-info\";\nimport { stripInlineRuntime } from \"./strip-inline-runtime\";\n\nconst { DOMElement, DOMCollection } = plugins;\n\nexport default function createMutationTracker(\n  browser: { window: JSDOM[\"window\"]; virtualConsole: VirtualConsole },\n  container: ParentNode = window.document,\n) {\n  let cleaned = false;\n  let pendingRecords: undefined | MutationRecord[];\n  const { window, virtualConsole } = browser;\n  const logs: string[] = [];\n  const sanitizedLogs: string[] = [];\n  const errors: Set<Error> = new Set();\n  const consoleCapture = captureConsole(virtualConsole);\n  const observer = new window.MutationObserver((records) => {\n    if (pendingRecords) {\n      pendingRecords = [...pendingRecords, ...records];\n    } else {\n      logRecords(\"ASYNC\", records, consoleCapture.records());\n    }\n  });\n  observer.observe(container, {\n    attributes: true,\n    attributeOldValue: true,\n    characterData: true,\n    characterDataOldValue: true,\n    childList: true,\n    subtree: true,\n  });\n  window.addEventListener(\"error\", handleError);\n  window.addEventListener(\"unhandledrejection\", handleRejection);\n\n  return {\n    beginUpdate() {\n      pendingRecords = [];\n    },\n    log(message: string) {\n      if (cleaned) {\n        throw new Error(`log called after cleanup`);\n      }\n      logs.push(message);\n    },\n    logError(update: unknown, expectedError: Error) {\n      throwErrors();\n\n      if (cleaned) {\n        throw new Error(`logError called after cleanup`);\n      }\n\n      logs.push(getErrorStatusString(expectedError, update));\n      sanitizedLogs.push(getErrorStatusString(expectedError, update, true));\n    },\n    logUpdate(update: unknown, optional?: boolean) {\n      throwErrors();\n\n      if (cleaned) {\n        throw new Error(`logUpdate called after cleanup`);\n      }\n\n      const records = [...(pendingRecords || []), ...observer.takeRecords()];\n      const consoleRecords = consoleCapture.records();\n      pendingRecords = undefined;\n      if (records.length || consoleRecords.length || !optional) {\n        logRecords(update, records, consoleRecords);\n      }\n    },\n    getRawLogs(sanitized?: boolean) {\n      return sanitized ? sanitizedLogs : logs;\n    },\n    getLogs(sanitized?: boolean) {\n      return (sanitized ? sanitizedLogs : logs).join(\"\\n\\n\");\n    },\n    cleanup() {\n      window.removeEventListener(\"error\", handleError);\n      window.removeEventListener(\"unhandledrejection\", handleRejection);\n      observer.disconnect();\n      consoleCapture.cleanup();\n      throwErrors();\n      cleaned = true;\n    },\n  };\n\n  function logRecords(\n    update: unknown,\n    mutationRecords: MutationRecord[],\n    consoleRecords: ConsoleRecord[],\n  ) {\n    if (cleaned) {\n      throw new Error(`log called after cleanup`);\n    }\n\n    logs.push(\n      getStatusString(container, mutationRecords, consoleRecords, update),\n    );\n    sanitizedLogs.push(\n      getStatusString(container, mutationRecords, consoleRecords, update, true),\n    );\n  }\n\n  function throwErrors() {\n    switch (errors.size) {\n      case 0:\n        return;\n      case 1:\n        for (const err of errors) throw err;\n        break;\n      default:\n        throw new AggregateError(\n          errors,\n          `\\n${[...errors].join(\"\\n\").replace(/^(?!\\s*$)/gm, \"\\t\")}`,\n        );\n    }\n  }\n\n  function handleError(ev: ErrorEvent) {\n    errors.add(ev.error.detail || ev.error);\n    ev.preventDefault();\n  }\n\n  function handleRejection(ev: PromiseRejectionEvent) {\n    errors.add(ev.reason.detail || ev.reason);\n    ev.preventDefault();\n  }\n}\n\nfunction cloneAndNormalize(container: ParentNode) {\n  const clone = container.cloneNode(true) as ParentNode;\n  normalizeTree(container, clone);\n  clone.normalize();\n  return clone;\n}\n\nfunction cloneAndSanitize(container: ParentNode) {\n  if (isDocument(container)) {\n    container = container.body || container.createElement(\"body\");\n  }\n  const clone = container.cloneNode(true) as ParentNode;\n  const ignoredNodes: ChildNode[] = [];\n  normalizeTree(container, clone, shouldIgnore);\n  for (const ignoredNode of ignoredNodes) {\n    ignoredNode.remove();\n  }\n  clone.normalize();\n\n  return clone;\n\n  function shouldIgnore(node: Node) {\n    if (isComment(node) || isIgnoredTag(node)) {\n      ignoredNodes.push(node);\n      return true;\n    }\n\n    return false;\n  }\n}\n\nfunction normalizeTree(\n  source: Node,\n  target: Node,\n  shouldIgnore?: (node: Node) => boolean,\n) {\n  if (shouldIgnore?.(target)) return;\n  if (isElement(target) && isElement(source)) {\n    const style = target.getAttribute(\"style\");\n    if (style) {\n      target.setAttribute(\n        \"style\",\n        style\n          .split(\";\")\n          .map((decl) => decl.trim())\n          .filter((decl) => decl !== \"\")\n          .map((decl) => {\n            const [property, value] = decl.split(\":\");\n            return `${property\n              .trim()\n              .replace(/-([a-z])/g, (_, letter) =>\n                letter.toUpperCase(),\n              )}:${value.trim()}`;\n          })\n          .sort()\n          .join(\";\"),\n      );\n    }\n\n    if (isInputElement(target) && isInputElement(source)) {\n      if (target.type === \"checkbox\" || target.type === \"radio\") {\n        if (source.defaultChecked && !source.checked) {\n          target.setAttribute(\"default-checked\", \"\");\n        }\n        if (source.checked) {\n          target.setAttribute(\"checked\", \"\");\n        } else {\n          target.removeAttribute(\"checked\");\n        }\n      } else {\n        if (source.defaultValue && source.defaultValue !== source.value) {\n          target.setAttribute(\"default-value\", source.defaultValue);\n        }\n        if (source.value) {\n          target.setAttribute(\"value\", source.value);\n        } else {\n          target.removeAttribute(\"value\");\n        }\n      }\n    } else if (isTextAreaElement(target) && isTextAreaElement(source)) {\n      if (source.defaultValue && source.defaultValue !== source.value) {\n        target.setAttribute(\"default-value\", source.defaultValue);\n      }\n      target.textContent = source.value;\n    } else if (isOptionElement(target) && isOptionElement(source)) {\n      if (source.defaultSelected && !source.selected) {\n        target.setAttribute(\"default-selected\", \"\");\n      }\n      if (source.selected) {\n        target.setAttribute(\"selected\", \"\");\n      } else {\n        target.removeAttribute(\"selected\");\n      }\n    } else if (\n      isScriptElement(target) &&\n      isScriptElement(source) &&\n      source.textContent\n    ) {\n      let depth = 0;\n      let parent = target.parentNode;\n      while (parent) {\n        parent = parent.parentNode;\n        depth++;\n      }\n      target.textContent = js_beautify(stripInlineRuntime(source.textContent), {\n        indent_size: 2,\n        indent_level: depth,\n        wrap_line_length: 80,\n        brace_style: \"expand\",\n      }).trimStart();\n    }\n  }\n\n  // Recursively handle child nodes\n  for (let i = 0; i < source.childNodes.length; i++) {\n    normalizeTree(source.childNodes[i], target.childNodes[i], shouldIgnore);\n  }\n}\n\nfunction getUpdateString(update: unknown) {\n  switch (typeof update) {\n    case \"function\":\n      return `\\n\\`\\`\\`js\\n${getFunctionBody(update.toString()).replace(/^ {4}/gm, \"\")}\\n\\`\\`\\``;\n    case \"string\":\n      return ` ${update}`;\n  }\n\n  if (update == null || !Object.keys(update).length) return \"\";\n  return ` \\`${JSON.stringify(update)}\\`\\n`;\n}\n\nfunction getStatusString(\n  container: ParentNode,\n  mutationRecords: MutationRecord[],\n  consoleRecords: ConsoleRecord[],\n  update: unknown,\n  sanitized?: boolean,\n) {\n  const updateString = getUpdateString(update);\n  const formattedHTML = Array.from(\n    (sanitized ? cloneAndSanitize(container) : cloneAndNormalize(container))\n      .childNodes,\n    (node) =>\n      format(node, {\n        plugins: [DOMElement, DOMCollection],\n      }).trim(),\n  )\n    .filter(Boolean)\n    .join(\"\\n\")\n    .trim();\n  const formattedMutations =\n    !sanitized &&\n    mutationRecords\n      .map((record) => formatMutationRecord(record, container))\n      .filter(Boolean)\n      .join(\"\\n\");\n  const formattedConsole = consoleRecords\n    .map(formatConsoleRecord)\n    .filter(Boolean)\n    .join(\"\\n\");\n\n  let result = `# Render${updateString}\\n`;\n\n  if (formattedHTML) {\n    result += `\\`\\`\\`html\\n${formattedHTML}\\n\\`\\`\\`\\n`;\n    if (formattedMutations) result += \"\\n\";\n  }\n\n  if (formattedMutations) {\n    result += `# Mutations\\n\\`\\`\\`\\n${formattedMutations}\\n\\`\\`\\``;\n    if (formattedConsole) result += \"\\n\";\n  }\n\n  if (formattedConsole) {\n    result += `# Console\\n\\`\\`\\`\\n${formattedConsole}\\n\\`\\`\\``;\n  }\n\n  return result;\n}\n\nfunction getErrorStatusString(\n  error: Error,\n  update: unknown,\n  omitStack?: boolean,\n) {\n  const updateString = getUpdateString(update);\n  const formattedError =\n    !omitStack && error.stack\n      ? error.stack.replaceAll(process.cwd(), \"\")\n      : error.message;\n  return `# Render${updateString}\\n# Error\\n\\`\\`\\`\\n${formattedError}\\n\\`\\`\\``;\n}\n\nfunction formatMutationRecord(record: MutationRecord, container: ParentNode) {\n  const { target, oldValue } = record;\n\n  switch (record.type) {\n    case \"attributes\": {\n      const { attributeName } = record;\n      const newValue = (target as HTMLElement).getAttribute(\n        attributeName as string,\n      );\n      return `UPDATE ${getNodePath(target, container)}[${attributeName}] ${JSON.stringify(\n        oldValue,\n      )} => ${JSON.stringify(newValue)}`;\n    }\n\n    case \"characterData\": {\n      const newValue = target.nodeValue;\n\n      // if the new value begins with the old value\n      // and whitespace delimits the old value and remaining new value\n      if (\n        newValue?.indexOf(oldValue!) === 0 &&\n        (/\\s$/ms.test(oldValue!) || /\\s$/ms.test(newValue![oldValue!.length]))\n      ) {\n        // filter out invalid records that jsdom creates\n        // see https://github.com/jsdom/jsdom/issues/3261\n        // TODO: remove if fixed\n        return;\n      }\n\n      return `UPDATE ${getNodePath(target, container)} ${JSON.stringify(\n        oldValue || \"\",\n      )} => ${JSON.stringify(target.nodeValue || \"\")}`;\n    }\n\n    case \"childList\": {\n      const { removedNodes, addedNodes, previousSibling, nextSibling } = record;\n      const details: string[] = [];\n      if (removedNodes.length) {\n        const relativeNode = previousSibling || nextSibling || target;\n        const position =\n          relativeNode === previousSibling\n            ? \"after\"\n            : relativeNode === nextSibling\n              ? \"before\"\n              : \"in\";\n        details.push(\n          `REMOVE ${Array.from(removedNodes, (node) =>\n            getNodePath(node, container),\n          ).join(\", \")} ${position} ${getNodePath(relativeNode, container)}`,\n        );\n      }\n\n      if (addedNodes.length) {\n        details.push(\n          `INSERT ${Array.from(addedNodes)\n            .map((node) => getNodePath(node, container))\n            .join(\", \")}`,\n        );\n      }\n\n      return details.join(\"\\n\");\n    }\n  }\n}\n\nfunction isIgnoredTag(node: Node): node is Element {\n  switch (isElement(node) && node.tagName) {\n    case \"LINK\":\n    case \"TITLE\":\n    case \"STYLE\":\n    case \"SCRIPT\":\n      return true;\n    default:\n      return false;\n  }\n}\n\nfunction getFunctionBody(source: string) {\n  const match = source.match(/^[^(=]*(?:\\(.*?\\))?(?:\\s*=>)?\\s*({)?/m);\n  if (match) {\n    if (match[1]) {\n      return trimDedent(\n        source\n          .slice(match[0].length)\n          .replace(/;?\\s*}\\s*$/m, \";\")\n          .trim(),\n      );\n    }\n    return trimDedent(source.slice(match[0].length).replace(/;?\\s*$/m, \";\"));\n  }\n\n  return trimDedent(source);\n}\n\nfunction trimDedent(str: string) {\n  const indent = str.match(/^[ \\t]+(?=\\S)/gm);\n  if (!indent) {\n    return str.trim();\n  }\n\n  return str\n    .replace(new RegExp(`^[ \\\\t]{${indent[0].length}}`, \"gm\"), \"\")\n    .trim();\n}\n\nfunction isDocument(node: Node): node is Document {\n  return node.nodeType === 9;\n}\n\nfunction isElement(node: Node): node is HTMLElement {\n  return node.nodeType === 1;\n}\n\nfunction isComment(node: Node): node is Comment {\n  return node.nodeType === 8;\n}\n\nfunction isInputElement(node: Element): node is HTMLInputElement {\n  return node.tagName === \"INPUT\";\n}\n\nfunction isOptionElement(node: Element): node is HTMLOptionElement {\n  return node.tagName === \"OPTION\";\n}\n\nfunction isTextAreaElement(node: Element): node is HTMLTextAreaElement {\n  return node.tagName === \"TEXTAREA\";\n}\n\nfunction isScriptElement(node: Element): node is HTMLScriptElement {\n  return node.tagName === \"SCRIPT\";\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/common/accessor.debug.ts",
    "content": "export enum AccessorPrefix {\n  BranchScopes = \"BranchScopes:\",\n  ClosureScopes = \"ClosureScopes:\",\n  ClosureSignalIndex = \"ClosureSignalIndex:\",\n  ConditionalRenderer = \"ConditionalRenderer:\",\n  ControlledHandler = \"ControlledHandler:\",\n  ControlledType = \"ControlledType:\",\n  ControlledValue = \"ControlledValue:\",\n  DynamicHTMLLastChild = \"DynamicHTMLLastChild:\",\n  EventAttributes = \"EventAttributes:\",\n  Getter = \"Getter:\",\n  Lifecycle = \"Lifecycle:\",\n  Promise = \"Promise:\",\n  TagVariableChange = \"TagVariableChange:\",\n}\n\nexport enum AccessorProp {\n  Global = \"$global\",\n  Owner = \"_\",\n  AbortControllers = \"#AbortControllers\",\n  AbortScopes = \"#AbortScopes\",\n  AwaitCounter = \"#AwaitCounter\",\n  BranchAccessor = \"#BranchAccessor\",\n  BranchScopes = \"#BranchScopes\",\n  CatchContent = \"#CatchContent\",\n  ClosestBranch = \"#ClosestBranch\",\n  ClosestBranchId = \"#ClosestBranchId\",\n  Creating = \"#Creating\",\n  Destroyed = \"#Destroyed\",\n  DetachedAwait = \"#DetachedAwait\",\n  EndNode = \"#EndNode\",\n  Id = \"#Id\",\n  LoopKey = \"#LoopKey\",\n  ParentBranch = \"#ParentBranch\",\n  PendingEffects = \"#PendingEffects\",\n  PendingRenders = \"#PendingRenders\",\n  PlaceholderBranch = \"#PlaceholderBranch\",\n  PlaceholderContent = \"#PlaceholderContent\",\n  Renderer = \"#Renderer\",\n  StartNode = \"#StartNode\",\n  TagVariable = \"#TagVariable\",\n  TagVariableChange = \"#TagVariableChange\",\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/common/accessor.ts",
    "content": "export enum AccessorPrefix {\n  BranchScopes = \"A\",\n  ClosureScopes = \"B\",\n  ClosureSignalIndex = \"C\",\n  ConditionalRenderer = \"D\",\n  ControlledHandler = \"E\",\n  ControlledType = \"F\",\n  ControlledValue = \"G\",\n  DynamicHTMLLastChild = \"H\",\n  EventAttributes = \"I\",\n  Getter = \"J\",\n  Lifecycle = \"K\",\n  Promise = \"L\",\n  TagVariableChange = \"M\",\n}\n\nexport enum AccessorProp {\n  Global = \"$\",\n  Owner = \"_\",\n  AbortControllers = \"A\",\n  AbortScopes = \"B\",\n  AwaitCounter = \"O\",\n  BranchAccessor = \"C\",\n  BranchScopes = \"D\",\n  CatchContent = \"E\",\n  ClosestBranch = \"F\",\n  ClosestBranchId = \"G\",\n  Creating = \"H\",\n  Destroyed = \"I\",\n  DetachedAwait = \"V\",\n  EndNode = \"K\",\n  Id = \"L\",\n  LoopKey = \"M\",\n  ParentBranch = \"N\",\n  PendingEffects = \"J\",\n  PendingRenders = \"W\",\n  PlaceholderBranch = \"P\",\n  PlaceholderContent = \"Q\",\n  Renderer = \"R\",\n  StartNode = \"S\",\n  TagVariable = \"T\",\n  TagVariableChange = \"U\",\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/common/attr-tag.ts",
    "content": "type Attrs = Record<PropertyKey, unknown>;\ntype AttrTag = Attrs & { [rest]: Attrs[] };\nconst empty: never[] = [];\nconst rest: unique symbol = (\n  MARKO_DEBUG ? Symbol(\"Attribute Tag\") : Symbol()\n) as any;\n\nexport function attrTag(attrs: Attrs): AttrTag {\n  attrs[Symbol.iterator] = attrTagIterator;\n  attrs[rest] = empty;\n  return attrs as AttrTag;\n}\n\nexport function attrTags(first: undefined | AttrTag, attrs: Attrs) {\n  if (first) {\n    if (first[rest] === empty) {\n      first[rest] = [attrs];\n    } else {\n      first[rest].push(attrs);\n    }\n\n    return first;\n  }\n\n  return attrTag(attrs);\n}\n\nfunction* attrTagIterator(this: AttrTag) {\n  yield this;\n  yield* this[rest];\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/common/compat-meta.ts",
    "content": "const prefix = MARKO_DEBUG ? \"$compat_\" : \"$C_\";\nexport const RENDERER_REGISTER_ID = prefix + (MARKO_DEBUG ? \"renderer\" : \"r\");\nexport const SET_SCOPE_REGISTER_ID = prefix + (MARKO_DEBUG ? \"setScope\" : \"s\");\nexport const RENDER_BODY_ID = prefix + (MARKO_DEBUG ? \"renderBody\" : \"b\");\n"
  },
  {
    "path": "packages/runtime-tags/src/common/errors.ts",
    "content": "import { AccessorProp, type Scope } from \"./types\";\n\nexport function _el_read_error() {\n  if (MARKO_DEBUG) {\n    throw new Error(\n      \"Element references can only be read in scripts and event handlers.\",\n    );\n  }\n}\n\nexport function _hoist_read_error() {\n  if (MARKO_DEBUG) {\n    throw new Error(\n      \"Hoisted values can only be read in scripts and event handlers.\",\n    );\n  }\n}\n\nexport function _assert_hoist(value: unknown) {\n  if (MARKO_DEBUG && typeof value !== \"function\") {\n    throw new Error(\n      `Hoisted values must be functions, received type \"${typeof value}\".`,\n    );\n  }\n}\n\nexport function _assert_init(scope: Scope, accessor: string) {\n  if (MARKO_DEBUG && (scope[AccessorProp.Creating] || !(accessor in scope))) {\n    try {\n      // @ts-expect-error create a browser uninitialized variable error, and then update the message.\n      __UNINITIALIZED__;\n      const __UNINITIALIZED__ = 1;\n    } catch (err: any) {\n      err.message = err.message.replaceAll(\"__UNINITIALIZED__\", accessor);\n      throw err;\n    }\n    throw new ReferenceError(\n      `Cannot access \"${accessor}\" before initialization.`,\n    );\n  }\n  return scope[accessor];\n}\n\nexport function assertExclusiveAttrs(\n  attrs: Record<string, unknown> | undefined,\n  onError = throwErr,\n) {\n  if (attrs) {\n    let exclusiveAttrs: undefined | string[];\n    if (attrs.checkedChange) {\n      (exclusiveAttrs ||= []).push(\"checkedChange\");\n    }\n\n    if (attrs.checkedValue) {\n      (exclusiveAttrs ||= []).push(\"checkedValue\");\n\n      if (attrs.checked) {\n        exclusiveAttrs.push(\"checked\");\n      }\n    } else if (attrs.checkedValueChange) {\n      (exclusiveAttrs ||= []).push(\"checkedValueChange\");\n      if (attrs.checked) {\n        exclusiveAttrs.push(\"checked\");\n      }\n    }\n\n    if (attrs.valueChange) {\n      (exclusiveAttrs ||= []).push(\"valueChange\");\n    }\n\n    if (exclusiveAttrs && exclusiveAttrs.length > 1) {\n      onError(\n        `The attributes ${joinWithAnd(exclusiveAttrs)} are mutually exclusive.`,\n      );\n    }\n  }\n}\n\nexport function assertValidTagName(tagName: string) {\n  if (!/^[a-z][a-z0-9._-]*$/i.test(tagName)) {\n    throw new Error(\n      `Invalid tag name: \"${tagName}\". Tag names must start with a letter and contain only letters, numbers, periods, hyphens, and underscores.`,\n    );\n  }\n}\n\nfunction throwErr(msg: string) {\n  throw new Error(msg);\n}\n\nfunction joinWithAnd(a: string[]) {\n  switch (a.length) {\n    case 0:\n      return \"\";\n    case 1:\n      return a[0];\n    case 2:\n      return `${a[0]} and ${a[1]}`;\n    default:\n      return `${a.slice(0, -1).join(\", \")}, and ${a[a.length - 1]}`;\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/common/for.ts",
    "content": "import type { Falsy } from \"./types\";\n\nexport function forIn(\n  obj: Falsy | {},\n  cb: (key: string, value: unknown) => void,\n) {\n  for (const key in obj as any) {\n    cb(key, (obj as any)[key]);\n  }\n}\n\nexport function forOf(\n  list: Falsy | Iterable<unknown>,\n  cb: (item: unknown, index: number) => void,\n) {\n  if (list) {\n    let i = 0;\n    for (const item of list) {\n      cb(item, i++);\n    }\n  }\n}\n\nexport function forTo(\n  to: number,\n  from: number | Falsy,\n  step: number | Falsy,\n  cb: (index: number) => void,\n) {\n  const start = from || 0;\n  const delta = step || 1;\n  for (let steps = (to - start) / delta, i = 0; i <= steps; i++) {\n    cb(start + i * delta);\n  }\n}\n\nexport function forUntil(\n  until: number,\n  from: number | Falsy,\n  step: number | Falsy,\n  cb: (index: number) => void,\n) {\n  const start = from || 0;\n  const delta = step || 1;\n  for (let steps = (until - start) / delta, i = 0; i < steps; i++) {\n    cb(start + i * delta);\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/common/helpers.ts",
    "content": "export const htmlAttrNameReg = /^[^a-z_]|[^a-z0-9._:-]/i;\nexport const userAttrNameReg = /^[^a-z_$]|[^a-z0-9._:-]/i;\n\nexport function _call<T>(fn: (v: T) => unknown, v: T): T {\n  fn(v);\n  return v;\n}\n\nexport function classValue(classValue: unknown) {\n  return toDelimitedString(classValue, \" \", stringifyClassObject);\n}\n\nfunction stringifyClassObject(name: string, value: unknown) {\n  return value ? name : \"\";\n}\n\nexport function styleValue(styleValue: unknown) {\n  return toDelimitedString(styleValue, \";\", stringifyStyleObject);\n}\n\nfunction stringifyStyleObject(name: string, value: unknown) {\n  return value || value === 0 ? name + \":\" + value : \"\";\n}\n\nfunction toDelimitedString(\n  val: unknown,\n  delimiter: string,\n  stringify: (n: string, v: unknown) => string | undefined,\n) {\n  let str = \"\";\n  let sep = \"\";\n  let part: string | undefined;\n  if (val) {\n    if (typeof val !== \"object\") {\n      str += val;\n    } else if (Array.isArray(val)) {\n      for (const v of val) {\n        part = toDelimitedString(v, delimiter, stringify);\n        if (part) {\n          str += sep + part;\n          sep = delimiter;\n        }\n      }\n    } else {\n      for (const name in val) {\n        part = stringify(name, (val as Record<string, unknown>)[name]);\n        if (part) {\n          str += sep + part;\n          sep = delimiter;\n        }\n      }\n    }\n  }\n\n  return str;\n}\n\nexport function isEventHandler(name: string): name is `on${string}` {\n  return /^on[A-Z-]/.test(name);\n}\nexport function getEventHandlerName(name: `on${string}`) {\n  return name[2] === \"-\" ? name.slice(3) : name.slice(2).toLowerCase();\n}\n\nexport function isVoid(value: unknown) {\n  return value == null || value === false;\n}\n\nexport function alphaEncode(num: number): string {\n  return num < 52\n    ? String.fromCharCode(num < 26 ? num + 97 : num + (65 - 26))\n    : alphaEncode((num / 52) | 0) + alphaEncode(num % 52);\n}\n\nexport function normalizeDynamicRenderer<Renderer>(\n  value: any,\n): Renderer | string | undefined {\n  if (value) {\n    if (typeof value === \"string\") return value;\n    const normalized = value.content || value.default || value;\n    if (/*@__KEY__*/ \"___id\" in normalized) {\n      return normalized;\n    }\n  }\n}\n\n/*\n  This opaque function decodes scope accessors that are encoded as integers in\n  the range 0 <= n < 34657. Encoded numbers are decoded to a base-36 string\n  where the first character is guaranteed to be a lowercase letter and\n  subsequent characters are lowercase letters or numeric digits.\n\n  It works by checking the input against 3 ranges, offsetting it by the number\n  of base-36 outputs which are invalid identifiers and converting that value to\n  a base-36 string:\n  \n      Range                       Offset                  Decoded\n      ---------------------------------------------------------------\n      [0, 26)                     10                      a ... z\n      [ , 26*36 - 26)             10*36 - 26              a0 ... zz\n      [ , 26*36*36 - 26*36 - 26)  10*36*36 - 26*36 - 26   a00 ... zzz\n*/\nexport const decodeAccessor = (num: number): string =>\n  (num + (num < 26 ? 10 : num < 962 ? 334 : 11998)).toString(36);\n"
  },
  {
    "path": "packages/runtime-tags/src/common/meta.ts",
    "content": "export const DEFAULT_RUNTIME_ID = \"M\";\nexport const DEFAULT_RENDER_ID = \"_\";\n\nexport const DYNAMIC_TAG_SCRIPT_REGISTER_ID = MARKO_DEBUG\n  ? \"_dynamicTagScript\"\n  : \"d\";\n"
  },
  {
    "path": "packages/runtime-tags/src/common/opt.ts",
    "content": "export type OneMany<T> = T[] | T;\nexport type Opt<T> = OneMany<T> | undefined;\n\nexport function toArray<T>(oneMany: OneMany<T>): [T, ...T[]];\nexport function toArray<T>(opt: Opt<T>): T[];\nexport function toArray<T>(opt: Opt<T>) {\n  return opt ? (Array.isArray(opt) ? opt : [opt]) : [];\n}\n\nexport function push<T>(opt: Opt<T>, item: T): OneMany<T>;\nexport function push<T>(oneMany: OneMany<T>, item: T): T[];\nexport function push<T>(opt: Opt<T>, item: T): OneMany<T> {\n  return opt\n    ? Array.isArray(opt)\n      ? (opt.push(item), opt)\n      : [opt, item]\n    : item;\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/common/types.ts",
    "content": "import type { PendingRender } from \"../dom/queue\";\nimport type { Renderer as ClientRenderer, Renderer } from \"../dom/renderer\";\nimport type { AccessorProp } from \"./accessor.debug\";\nexport type Falsy = undefined | null | false | 0 | \"\";\nexport type CommentWalker = TreeWalker & Record<string, Comment>;\nexport interface BranchScope extends Scope {\n  [AccessorProp.StartNode]: ChildNode;\n  [AccessorProp.EndNode]: ChildNode;\n  [AccessorProp.ParentBranch]: BranchScope | undefined;\n  [AccessorProp.Destroyed]: 1 | undefined;\n  [AccessorProp.AbortScopes]: Set<Scope> | undefined;\n  [AccessorProp.BranchScopes]: Set<BranchScope> | undefined;\n  [AccessorProp.Renderer]: ClientRenderer | string;\n  [AccessorProp.AwaitCounter]: AwaitCounter | undefined;\n  [AccessorProp.PendingEffects]: unknown[] | undefined;\n  [AccessorProp.PlaceholderBranch]: BranchScope | undefined | 0;\n  [AccessorProp.PendingRenders]: PendingRender[] | 0 | undefined;\n  [AccessorProp.DetachedAwait]: Renderer | 0 | undefined;\n}\nexport interface Scope {\n  [AccessorProp.Owner]: Scope | undefined;\n  [AccessorProp.Global]: Record<string, unknown>;\n  [AccessorProp.Id]: number;\n  [AccessorProp.Creating]: 1 | 0 | undefined;\n  [AccessorProp.AbortControllers]:\n    | Record<string | number, AbortController | void>\n    | undefined;\n  [AccessorProp.ClosestBranch]: BranchScope | undefined;\n  [AccessorProp.ClosestBranchId]: number | undefined;\n  [x: `___${string}`]: never;\n  [x: string | number]: any;\n}\n\nexport enum ResumeSymbol {\n  Node = \"*\",\n  BranchStart = \"[\",\n  BranchEnd = \"]\",\n  BranchEndNativeTag = \"'\",\n  BranchEndSingleNode = \"|\",\n  BranchEndOnlyChildInParent = \")\",\n  BranchEndSingleNodeOnlyChildInParent = \"}\",\n}\n\nexport interface AwaitCounter {\n  m?: () => unknown[];\n  i: number;\n  c: () => void | 1;\n}\n\nexport { AccessorPrefix, AccessorProp } from \"./accessor.debug\";\n\nexport enum NodeType {\n  Element = 1,\n  Text = 3,\n  Comment = 8,\n  DocumentFragment = 11,\n}\n\n// Reserved Character Codes\n// 0-31 [control characters]\n// 34 \" [double quote]\n// 39 ' [single quote]\n// 92 \\ [backslash]\n// 96 ` [backtick]\nexport enum WalkCode {\n  Get = 32,\n  Inside = 36,\n  Replace = 37,\n  EndChild = 38,\n\n  BeginChild = 47,\n  BeginChildWithVar = 48,\n  DynamicTagWithVar = 49,\n\n  Next = 67,\n  NextEnd = 91,\n\n  Over = 97,\n  OverEnd = 106,\n\n  Out = 107,\n  OutEnd = 116,\n\n  Multiplier = 117,\n  MultiplierEnd = 126,\n}\n\nexport enum WalkRangeSize {\n  Next = 20, // 67 through 91\n  Over = 10, // 97 through 106\n  Out = 10, // 107 through 116\n  Multiplier = 10, // 117 through 126\n}\n\nexport type Accessor = string;\n\nexport type EncodedAccessor = number | string;\n\nexport interface $Global {\n  [x: PropertyKey]: unknown;\n  signal?: AbortSignal;\n  cspNonce?: string;\n  renderId?: string;\n  runtimeId?: string;\n  /** @internal */\n  __flush__?($global: $Global, html: string): string;\n}\nexport interface Input {\n  [x: PropertyKey]: unknown;\n}\nexport interface TemplateInput extends Input {\n  $global?: $Global;\n}\n\nexport interface Template {\n  mount(\n    input: Input,\n    reference: Node,\n    position?: InsertPosition,\n  ): MountedTemplate;\n  render(input?: Input): RenderedTemplate;\n}\n\nexport interface MountedTemplate {\n  value: unknown;\n  update(input: unknown): void;\n  destroy(): void;\n}\n\nexport type RenderedTemplate = PromiseLike<string> &\n  AsyncIterable<string> & {\n    toReadable(): ReadableStream<Uint8Array<ArrayBufferLike>>;\n  };\n\nexport enum ControlledType {\n  InputChecked,\n  InputCheckedValue,\n  InputValue,\n  SelectValue,\n  DetailsOrDialogOpen,\n  None,\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/dom/abort-signal.ts",
    "content": "import { AccessorProp, type Scope } from \"../common/types\";\nimport { queueEffect } from \"./queue\";\n\nexport function $signalReset(scope: Scope, id: string | number) {\n  const ctrl = scope[AccessorProp.AbortControllers]?.[id];\n  if (ctrl) {\n    queueEffect(ctrl as any, abort as any);\n    scope[AccessorProp.AbortControllers]![id] = undefined;\n  }\n}\n\nexport function $signal(scope: Scope, id: string | number) {\n  if (scope[AccessorProp.ClosestBranch]) {\n    (scope[AccessorProp.ClosestBranch][AccessorProp.AbortScopes] ||=\n      new Set()).add(scope);\n  }\n\n  return ((scope[AccessorProp.AbortControllers] ||= {})[id] ||=\n    new AbortController()).signal;\n}\n\nfunction abort(ctrl: AbortController) {\n  ctrl.abort();\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/dom/compat.ts",
    "content": "import {\n  RENDER_BODY_ID,\n  RENDERER_REGISTER_ID,\n  SET_SCOPE_REGISTER_ID,\n} from \"../common/compat-meta\";\nimport { AccessorProp, type BranchScope } from \"../common/types\";\nimport { patchDynamicTag } from \"./control-flow\";\nimport { toInsertNode } from \"./dom\";\nimport { prepareEffects, queueEffect, runEffects } from \"./queue\";\nimport { _content, createAndSetupBranch, type Renderer } from \"./renderer\";\nimport { _resume, getRegisteredWithScope } from \"./resume\";\nimport { destroyBranch } from \"./scope\";\nconst classIdToBranch = new Map<string, BranchScope>();\n\nexport const compat = {\n  patchDynamicTag,\n  queueEffect,\n  init(warp10Noop: any) {\n    _resume(SET_SCOPE_REGISTER_ID, (branch: BranchScope & { m5c: string }) => {\n      classIdToBranch.set(branch.m5c, branch);\n    });\n\n    _resume(RENDER_BODY_ID, warp10Noop);\n  },\n  registerRenderer(fn: any) {\n    _resume(RENDERER_REGISTER_ID, fn);\n  },\n  isRenderer(renderer: any) {\n    return renderer.___clone;\n  },\n  getStartNode(branch: any) {\n    return branch[AccessorProp.StartNode];\n  },\n  setScopeNodes(branch: any, startNode: Node, endNode: Node) {\n    branch[AccessorProp.StartNode] = startNode;\n    branch[AccessorProp.EndNode] = endNode;\n  },\n  runComponentEffects(this: any) {\n    if (this.effects) {\n      runEffects(this.effects);\n    }\n  },\n  runComponentDestroy(this: any) {\n    if (this.scope) {\n      destroyBranch(this.scope);\n    }\n  },\n  resolveRegistered(\n    value: any,\n    $global: { runtimeId: string; renderId: string },\n  ) {\n    if (Array.isArray(value) && typeof value[0] === \"string\") {\n      return getRegisteredWithScope(\n        value[0],\n        value.length === 2 &&\n          (self as any)[$global.runtimeId]?.[$global.renderId]?.s[value[1]],\n      );\n    }\n\n    return value;\n  },\n  createRenderer(\n    params: NonNullable<Renderer[\"___params\"]>,\n    clone: () => { startNode: ChildNode; endNode: ChildNode },\n  ) {\n    const renderer = _content(\"\", 0, 0, 0, params)();\n    renderer.___clone = (branch) => {\n      const cloned = clone();\n      branch[AccessorProp.StartNode] = cloned.startNode;\n      branch[AccessorProp.EndNode] = cloned.endNode;\n    };\n    return renderer;\n  },\n  render(out: any, component: any, renderer: Renderer, args: any) {\n    let branch: BranchScope | undefined = component.scope;\n    let created: 0 | 1 = 0;\n\n    if (!branch && (branch = classIdToBranch.get(component.id)!)) {\n      component.scope = branch;\n      classIdToBranch.delete(component.id);\n    }\n\n    if (typeof args[0] === \"object\" && \"renderBody\" in args[0]) {\n      const input = args[0];\n      const normalizedInput = (args[0] = {} as any);\n      for (const key in input) {\n        normalizedInput[key === \"renderBody\" ? \"content\" : key] = input[key];\n      }\n    }\n\n    component.effects = prepareEffects(() => {\n      if (!branch) {\n        created = 1;\n        branch = component.scope = createAndSetupBranch(\n          out.global,\n          renderer,\n          renderer.___owner,\n          document.body,\n        );\n      }\n\n      renderer.___params?.(branch, (renderer as any)._ ? args[0] : args);\n    });\n\n    if (created) {\n      return toInsertNode(\n        branch[AccessorProp.StartNode],\n        branch[AccessorProp.EndNode],\n      );\n    }\n  },\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/dom/control-flow.ts",
    "content": "import { assertValidTagName } from \"../common/errors\";\nimport { forIn, forOf, forTo, forUntil } from \"../common/for\";\nimport { decodeAccessor, normalizeDynamicRenderer } from \"../common/helpers\";\nimport { DYNAMIC_TAG_SCRIPT_REGISTER_ID } from \"../common/meta\";\nimport { toArray } from \"../common/opt\";\nimport {\n  type Accessor,\n  AccessorPrefix,\n  AccessorProp,\n  type AwaitCounter,\n  type BranchScope,\n  type EncodedAccessor,\n  NodeType,\n  type Scope,\n} from \"../common/types\";\nimport { _attrs, _attrs_content, _attrs_script } from \"./dom\";\nimport {\n  _enable_catch,\n  caughtError,\n  pendingEffects,\n  type PendingRender,\n  pendingScopes,\n  placeholderShown,\n  prepareEffects,\n  queueEffect,\n  queuePendingRender,\n  queueRender,\n  run,\n  runEffects,\n} from \"./queue\";\nimport {\n  _content,\n  createAndSetupBranch,\n  createBranch,\n  type Renderer,\n  setupBranch,\n  type SetupFn,\n} from \"./renderer\";\nimport { _resume, enableBranches } from \"./resume\";\nimport { schedule } from \"./schedule\";\nimport {\n  destroyBranch,\n  findBranchWithKey,\n  insertBranchBefore,\n  removeAndDestroyBranch,\n  tempDetachBranch,\n} from \"./scope\";\nimport { type Signal, subscribeToScopeSet } from \"./signals\";\n\nexport function _await_promise(\n  nodeAccessor: EncodedAccessor,\n  params?: Signal<unknown>,\n) {\n  if (!MARKO_DEBUG) nodeAccessor = decodeAccessor(nodeAccessor as number);\n  const promiseAccessor = AccessorPrefix.Promise + nodeAccessor;\n  const branchAccessor = AccessorPrefix.BranchScopes + nodeAccessor;\n  _enable_catch();\n  return (scope: Scope, promise: Promise<unknown>) => {\n    // TODO: !isPromise, render synchronously\n    let awaitBranch = scope[branchAccessor] as BranchScope;\n    const tryBranch =\n      findBranchWithKey(scope, AccessorProp.PlaceholderContent) || awaitBranch;\n    let awaitCounter = tryBranch[AccessorProp.AwaitCounter];\n\n    if (!awaitCounter?.i) {\n      awaitCounter = tryBranch[AccessorProp.AwaitCounter] = {\n        i: 0,\n        c() {\n          if (--awaitCounter!.i) return 1;\n          if (tryBranch === scope[branchAccessor]) {\n            if ((scope[nodeAccessor] as ChildNode).parentNode) {\n              (scope[nodeAccessor] as ChildNode).replaceWith(\n                (scope[branchAccessor] as BranchScope)[AccessorProp.StartNode]\n                  .parentNode!,\n              );\n            }\n          } else {\n            const placeholderBranch = tryBranch[AccessorProp.PlaceholderBranch];\n            if (placeholderBranch) {\n              tryBranch[AccessorProp.PlaceholderBranch] = 0;\n              // Since this is temp detached the parent node is a document fragment with all of the children in the branch.\n              placeholderBranch[\n                AccessorProp.StartNode\n              ].parentNode!.insertBefore(\n                tryBranch[AccessorProp.StartNode].parentNode!,\n                placeholderBranch[AccessorProp.StartNode],\n              );\n              removeAndDestroyBranch(placeholderBranch);\n            }\n          }\n\n          queueEffect(tryBranch, (scope) => {\n            const pendingEffects = scope[AccessorProp.PendingEffects];\n            if (pendingEffects) {\n              scope[AccessorProp.PendingEffects] = [];\n              runEffects(pendingEffects, 1);\n            }\n          });\n        },\n      };\n    }\n\n    placeholderShown.add(pendingEffects);\n\n    if (!scope[promiseAccessor]) {\n      if (awaitBranch) {\n        awaitBranch[AccessorProp.PendingRenders] ||= [];\n      }\n      if (!awaitCounter.i++) {\n        requestAnimationFrame(\n          () =>\n            awaitCounter!.i &&\n            runEffects(\n              prepareEffects(() =>\n                queueRender(\n                  tryBranch === awaitBranch ? scope : tryBranch,\n                  () => {\n                    if (tryBranch[AccessorProp.PlaceholderContent]) {\n                      insertBranchBefore(\n                        (tryBranch[AccessorProp.PlaceholderBranch] =\n                          createAndSetupBranch(\n                            scope[AccessorProp.Global],\n                            tryBranch[\n                              AccessorProp.PlaceholderContent\n                            ] as Renderer,\n                            tryBranch[AccessorProp.Owner],\n                            tryBranch[AccessorProp.StartNode].parentNode!,\n                          )),\n                        tryBranch[AccessorProp.StartNode].parentNode!,\n                        tryBranch[AccessorProp.StartNode],\n                      );\n                      tempDetachBranch(tryBranch);\n                    } else if (!awaitBranch[AccessorProp.DetachedAwait]) {\n                      awaitBranch[\n                        AccessorProp.StartNode\n                      ].parentNode!.insertBefore(\n                        scope[nodeAccessor] as Node,\n                        awaitBranch[AccessorProp.StartNode],\n                      );\n                      tempDetachBranch(tryBranch);\n                    }\n                  },\n                  -1,\n                ),\n              ),\n            ),\n        );\n      }\n    }\n\n    const thisPromise = (scope[promiseAccessor] = promise.then(\n      (data) => {\n        if (thisPromise === scope[promiseAccessor]) {\n          const referenceNode = scope[nodeAccessor] as ChildNode;\n          scope[promiseAccessor] = 0;\n\n          queueMicrotask(run);\n          queueRender(\n            scope,\n            () => {\n              if (\n                (awaitBranch = scope[branchAccessor] as BranchScope)[\n                  AccessorProp.DetachedAwait\n                ]\n              ) {\n                pendingScopes.push(awaitBranch);\n                setupBranch(\n                  awaitBranch[AccessorProp.DetachedAwait],\n                  awaitBranch,\n                );\n                awaitBranch[AccessorProp.DetachedAwait] = 0;\n\n                insertBranchBefore(\n                  awaitBranch,\n                  (scope[nodeAccessor] as ChildNode).parentNode!,\n                  scope[nodeAccessor] as ChildNode,\n                );\n                referenceNode.remove();\n              }\n\n              params?.(awaitBranch as BranchScope, [data]);\n\n              const pendingRenders = awaitBranch[\n                AccessorProp.PendingRenders\n              ] as PendingRender[] | undefined;\n              awaitBranch[AccessorProp.PendingRenders] = 0;\n              pendingRenders?.forEach(queuePendingRender);\n\n              placeholderShown.add(pendingEffects); // TODO: check if still needed\n\n              awaitCounter.c();\n              if (awaitCounter.m) {\n                const fnScopes = new Map<unknown, Set<Scope>>();\n                const effects = awaitCounter.m();\n                for (let i = 0; i < pendingEffects.length; ) {\n                  const fn = pendingEffects[i++] as any;\n                  let scopes = fnScopes.get(fn);\n                  if (!scopes) {\n                    fnScopes.set(fn, (scopes = new Set()));\n                  }\n                  scopes.add(pendingEffects[i++] as Scope);\n                }\n                for (let i = 0; i < effects.length; ) {\n                  const fn = effects[i++] as any;\n                  const scope = effects[i++] as Scope;\n                  if (!fnScopes.get(fn)?.has(scope)) {\n                    queueEffect(scope, fn);\n                  }\n                }\n              }\n            },\n            -1,\n          );\n        }\n      },\n      (error) => {\n        if (thisPromise === scope[promiseAccessor]) {\n          awaitCounter.i = scope[promiseAccessor] = 0;\n          schedule();\n          queueRender(scope, renderCatch, -1, error);\n        }\n      },\n    ));\n  };\n}\n\nexport function _await_content(\n  nodeAccessor: EncodedAccessor,\n  template?: string | 0,\n  walks?: string | 0,\n  setup?: SetupFn | 0,\n) {\n  if (!MARKO_DEBUG) nodeAccessor = decodeAccessor(nodeAccessor as number);\n  const branchAccessor = AccessorPrefix.BranchScopes + nodeAccessor;\n  const renderer = _content(\"\", template, walks, setup)();\n  return (scope: Scope) => {\n    (scope[branchAccessor] = createBranch(\n      scope[AccessorProp.Global],\n      renderer,\n      scope,\n      (scope[nodeAccessor] as ChildNode).parentNode!,\n    ))[AccessorProp.DetachedAwait] = renderer;\n    pendingScopes.pop();\n  };\n}\n\nexport function _try(\n  nodeAccessor: EncodedAccessor,\n  template?: string | 0,\n  walks?: string | 0,\n  setup?: SetupFn | 0,\n) {\n  if (!MARKO_DEBUG) nodeAccessor = decodeAccessor(nodeAccessor as number);\n  const branchAccessor = AccessorPrefix.BranchScopes + nodeAccessor;\n  const renderer = _content(\"\", template, walks, setup)();\n\n  return (scope: Scope, input: { catch: unknown; placeholder: unknown }) => {\n    if (!scope[branchAccessor]) {\n      setConditionalRenderer(\n        scope,\n        nodeAccessor as string,\n        renderer,\n        createAndSetupBranch,\n      );\n    }\n\n    const branch = scope[branchAccessor];\n    if (branch) {\n      branch[AccessorProp.BranchAccessor] = nodeAccessor;\n      branch[AccessorProp.CatchContent] = normalizeDynamicRenderer(input.catch);\n      branch[AccessorProp.PlaceholderContent] = normalizeDynamicRenderer(\n        input.placeholder,\n      );\n    }\n  };\n}\n\nexport function renderCatch(scope: Scope, error: unknown) {\n  const tryWithCatch = findBranchWithKey(scope, AccessorProp.CatchContent);\n  if (!tryWithCatch) {\n    throw error;\n  } else {\n    const owner = tryWithCatch[AccessorProp.Owner]!;\n    const placeholderBranch = tryWithCatch[\n      AccessorProp.PlaceholderBranch\n    ] as BranchScope;\n    if (placeholderBranch) {\n      if (tryWithCatch[AccessorProp.AwaitCounter])\n        (tryWithCatch[AccessorProp.AwaitCounter] as AwaitCounter).i = 0;\n      owner[\n        AccessorPrefix.BranchScopes + tryWithCatch[AccessorProp.BranchAccessor]\n      ] = placeholderBranch;\n      destroyBranch(tryWithCatch);\n    }\n    caughtError.add(pendingEffects);\n    setConditionalRenderer(\n      owner,\n      tryWithCatch[AccessorProp.BranchAccessor],\n      tryWithCatch[AccessorProp.CatchContent],\n      createAndSetupBranch,\n    );\n    tryWithCatch[AccessorProp.CatchContent].___params?.(\n      owner[\n        AccessorPrefix.BranchScopes + tryWithCatch[AccessorProp.BranchAccessor]\n      ],\n      [error],\n    );\n  }\n}\n\nexport function _if(\n  nodeAccessor: EncodedAccessor,\n  ...branchesArgs: (string | SetupFn | 0)[]\n) {\n  if (!MARKO_DEBUG) nodeAccessor = decodeAccessor(nodeAccessor as number);\n  const branchAccessor = AccessorPrefix.ConditionalRenderer + nodeAccessor;\n  const branches: Renderer[] = [];\n  let i = 0;\n  while (i < branchesArgs.length) {\n    branches.push(\n      _content(\n        \"\",\n        branchesArgs[i++] as string | 0 | undefined,\n        branchesArgs[i++] as string | 0 | undefined,\n        branchesArgs[i++] as SetupFn | 0 | undefined,\n      )(),\n    );\n  }\n  enableBranches();\n  return (scope: Scope, newBranch: number) => {\n    if (newBranch !== (scope[branchAccessor] as number)) {\n      setConditionalRenderer(\n        scope,\n        nodeAccessor as string,\n        branches[(scope[branchAccessor] = newBranch)],\n        createAndSetupBranch,\n      );\n    }\n  };\n}\n\nexport function patchDynamicTag(\n  fn: <T extends typeof _dynamic_tag>(cond: T) => T,\n) {\n  // Injection point for compat layer.\n  _dynamic_tag = fn(_dynamic_tag);\n}\nexport let _dynamic_tag = function dynamicTag(\n  nodeAccessor: EncodedAccessor,\n  getContent?: ((scope: Scope) => Renderer) | 0,\n  getTagVar?: (() => Signal<unknown>) | 0,\n  inputIsArgs?: 1,\n): Signal<Renderer | string | undefined> {\n  if (!MARKO_DEBUG) nodeAccessor = decodeAccessor(nodeAccessor as number);\n  const childScopeAccessor = AccessorPrefix.BranchScopes + nodeAccessor;\n  const rendererAccessor = AccessorPrefix.ConditionalRenderer + nodeAccessor;\n  enableBranches();\n  return (scope, newRenderer, getInput?: () => any) => {\n    const normalizedRenderer = normalizeDynamicRenderer<Renderer>(newRenderer);\n    if (\n      scope[rendererAccessor] !==\n        (scope[rendererAccessor] =\n          (normalizedRenderer as Renderer | undefined)?.___id ||\n          normalizedRenderer) ||\n      (getContent && !(normalizedRenderer || scope[childScopeAccessor]))\n    ) {\n      setConditionalRenderer(\n        scope,\n        nodeAccessor as string,\n        normalizedRenderer || (getContent ? getContent(scope) : undefined),\n        createBranchWithTagNameOrRenderer,\n      );\n\n      if (getTagVar) {\n        scope[childScopeAccessor][AccessorProp.TagVariable] = (\n          value: unknown,\n        ) => getTagVar()(scope, value);\n      }\n\n      if (typeof normalizedRenderer === \"string\") {\n        if (getContent) {\n          const content = getContent(scope);\n          setConditionalRenderer(\n            scope[childScopeAccessor],\n            MARKO_DEBUG ? `#${normalizedRenderer}/0` : \"a\",\n            content,\n            createAndSetupBranch,\n          );\n          if (content.___accessor) {\n            subscribeToScopeSet(\n              content.___owner!,\n              content.___accessor,\n              scope[childScopeAccessor][\n                AccessorPrefix.BranchScopes +\n                  (MARKO_DEBUG ? `#${normalizedRenderer}/0` : \"a\")\n              ],\n            );\n          }\n        }\n      } else if (normalizedRenderer?.___accessor) {\n        subscribeToScopeSet(\n          normalizedRenderer.___owner!,\n          normalizedRenderer.___accessor,\n          scope[childScopeAccessor],\n        );\n      }\n    }\n\n    if (normalizedRenderer) {\n      const childScope = scope[childScopeAccessor] as Scope;\n      const args = getInput?.();\n      if (typeof normalizedRenderer === \"string\") {\n        (getContent ? _attrs : _attrs_content)(\n          childScope,\n          MARKO_DEBUG ? `#${normalizedRenderer}/0` : \"a\",\n          (inputIsArgs ? args[0] : args) || {},\n        );\n\n        if (\n          childScope[\n            AccessorPrefix.EventAttributes +\n              (MARKO_DEBUG ? `#${normalizedRenderer}/0` : \"a\")\n          ] ||\n          childScope[\n            AccessorPrefix.ControlledHandler +\n              (MARKO_DEBUG ? `#${normalizedRenderer}/0` : \"a\")\n          ]\n        ) {\n          queueEffect(childScope, dynamicTagScript);\n        }\n      } else {\n        for (const accessor in normalizedRenderer.___localClosures) {\n          normalizedRenderer.___localClosures[accessor](\n            childScope,\n            normalizedRenderer.___localClosureValues![accessor],\n          );\n        }\n\n        if (normalizedRenderer.___params) {\n          if (inputIsArgs) {\n            normalizedRenderer.___params(\n              childScope,\n              (normalizedRenderer as any)._ ? args[0] : args,\n            );\n          } else {\n            const inputWithContent = getContent\n              ? { ...args, content: getContent(scope) }\n              : args || {};\n            normalizedRenderer.___params(\n              childScope,\n              (normalizedRenderer as any)._\n                ? inputWithContent\n                : [inputWithContent],\n            );\n          }\n        }\n      }\n    }\n  };\n};\n\nexport function _resume_dynamic_tag() {\n  _resume(DYNAMIC_TAG_SCRIPT_REGISTER_ID, dynamicTagScript);\n}\n\nfunction dynamicTagScript(branch: Scope) {\n  _attrs_script(\n    branch,\n    MARKO_DEBUG ? `#${branch[AccessorProp.Renderer]}/0` : \"a\",\n  );\n}\n\nexport function setConditionalRenderer<T>(\n  scope: Scope,\n  nodeAccessor: Accessor,\n  newRenderer: T,\n  createBranch: (\n    $global: Scope[AccessorProp.Global],\n    renderer: NonNullable<T>,\n    parentScope: Scope,\n    parentNode: ParentNode,\n  ) => BranchScope,\n) {\n  const referenceNode = scope[nodeAccessor] as Comment | Element;\n  const prevBranch = scope[AccessorPrefix.BranchScopes + nodeAccessor] as\n    | BranchScope\n    | undefined;\n  const parentNode =\n    referenceNode.nodeType > NodeType.Element\n      ? (prevBranch?.[AccessorProp.StartNode] || referenceNode).parentNode!\n      : (referenceNode as ParentNode);\n  const newBranch = (scope[AccessorPrefix.BranchScopes + nodeAccessor] =\n    newRenderer &&\n    createBranch(scope[AccessorProp.Global], newRenderer, scope, parentNode));\n  if (referenceNode === parentNode) {\n    if (prevBranch) {\n      destroyBranch(prevBranch);\n      referenceNode.textContent = \"\";\n    }\n\n    if (newBranch) {\n      insertBranchBefore(newBranch, parentNode, null);\n    }\n  } else if (prevBranch) {\n    if (newBranch) {\n      insertBranchBefore(\n        newBranch,\n        parentNode,\n        prevBranch[AccessorProp.StartNode],\n      );\n    } else {\n      parentNode.insertBefore(\n        referenceNode,\n        prevBranch[AccessorProp.StartNode],\n      );\n    }\n\n    removeAndDestroyBranch(prevBranch);\n  } else if (newBranch) {\n    insertBranchBefore(newBranch, parentNode, referenceNode);\n    referenceNode.remove();\n  }\n}\n\nexport const _for_of = loop<\n  [all: unknown[], by?: (item: unknown, index: number) => unknown]\n>(([all, by = bySecondArg], cb) => {\n  if (typeof by === \"string\") {\n    forOf(all, (item, i) =>\n      cb((item as Record<string, unknown>)[by], [item, i]),\n    );\n  } else {\n    forOf(all, (item, i) => cb(by(item, i), [item, i]));\n  }\n});\n\nexport const _for_in = loop<\n  [obj: {}, by?: (key: string, v: unknown) => unknown]\n>(([obj, by = byFirstArg], cb) =>\n  forIn(obj, (key, value) => cb(by(key, value), [key, value])),\n);\n\nexport const _for_to = loop<\n  [to: number, from: number, step: number, by?: (v: number) => unknown]\n>(([to, from, step, by = byFirstArg], cb) =>\n  forTo(to, from, step, (v) => cb(by(v), [v])),\n);\n\nexport const _for_until = loop<\n  [until: number, from: number, step: number, by?: (v: number) => unknown]\n>(([until, from, step, by = byFirstArg], cb) =>\n  forUntil(until, from, step, (v) => cb(by(v), [v])),\n);\n\nfunction loop<T extends unknown[] = unknown[]>(\n  forEach: (value: T, cb: (key: unknown, args: unknown[]) => void) => void,\n) {\n  return (\n    nodeAccessor: EncodedAccessor,\n    template?: string | 0,\n    walks?: string | 0,\n    setup?: SetupFn | 0,\n    params?: Signal<unknown>,\n  ) => {\n    if (!MARKO_DEBUG) nodeAccessor = decodeAccessor(nodeAccessor as number);\n    const scopesAccessor = AccessorPrefix.BranchScopes + nodeAccessor;\n    const renderer = _content(\"\", template, walks, setup)();\n    enableBranches();\n    return (scope: Scope, value: T) => {\n      const referenceNode = scope[nodeAccessor] as Element | Comment | Text;\n      const oldScopes = toArray<BranchScope>(scope[scopesAccessor]);\n      const newScopes: BranchScope[] = (scope[scopesAccessor] = []);\n      const oldLen = oldScopes.length;\n      const parentNode = (\n        referenceNode.nodeType > NodeType.Element\n          ? referenceNode.parentNode ||\n            oldScopes[0]?.[AccessorProp.StartNode].parentNode\n          : referenceNode\n      ) as Element;\n      let oldScopesByKey: Map<unknown, BranchScope> | undefined;\n      let hasPotentialMoves: boolean | undefined;\n\n      if (MARKO_DEBUG) {\n        // eslint-disable-next-line no-var\n        var seenKeys = new Set<unknown>();\n      }\n\n      forEach(value, (key, args) => {\n        if (MARKO_DEBUG) {\n          if (seenKeys.has(key)) {\n            console.error(\n              `A <for> tag's \\`by\\` attribute must return a unique value for each item, but a duplicate was found matching:`,\n              key,\n            );\n          } else {\n            seenKeys.add(key);\n          }\n        }\n\n        let branch =\n          oldLen &&\n          (oldScopesByKey ||= oldScopes.reduce(\n            (map, scope, i) => map.set(scope[AccessorProp.LoopKey] ?? i, scope),\n            new Map<unknown, BranchScope>(),\n          )).get(key);\n        if (branch) {\n          hasPotentialMoves = oldScopesByKey!.delete(key);\n        } else {\n          branch = createAndSetupBranch(\n            scope[AccessorProp.Global],\n            renderer,\n            scope,\n            parentNode,\n          );\n        }\n        branch[AccessorProp.LoopKey] = key;\n        newScopes.push(branch);\n        params?.(branch, args);\n      });\n\n      const newLen = newScopes.length;\n      const hasSiblings = referenceNode !== parentNode;\n      let afterReference: null | Node = null;\n      let oldEnd = oldLen - 1;\n      let newEnd = newLen - 1;\n      let start = 0;\n\n      if (hasSiblings) {\n        if (oldLen) {\n          afterReference = oldScopes[oldEnd][AccessorProp.EndNode].nextSibling;\n          if (!newLen) {\n            parentNode.insertBefore(referenceNode, afterReference);\n          }\n        } else if (newLen) {\n          afterReference = referenceNode.nextSibling;\n          referenceNode.remove();\n        }\n      }\n\n      if (!hasPotentialMoves) {\n        // Fast path: if we never match an existing branch, we can directly add or remove all scopes.\n        if (oldLen) {\n          oldScopes.forEach(\n            hasSiblings ? removeAndDestroyBranch : destroyBranch,\n          );\n          if (!hasSiblings) {\n            parentNode.textContent = \"\";\n          }\n        }\n\n        for (const newScope of newScopes) {\n          insertBranchBefore(newScope, parentNode, afterReference);\n        }\n\n        return;\n      }\n\n      for (const branch of oldScopesByKey!.values()) {\n        removeAndDestroyBranch(branch);\n      }\n\n      // Skip common prefix\n      while (\n        start < oldLen &&\n        start < newLen &&\n        oldScopes[start] === newScopes[start]\n      ) {\n        start++;\n      }\n\n      // Skip common suffix\n      while (\n        oldEnd >= start &&\n        newEnd >= start &&\n        oldScopes[oldEnd] === newScopes[newEnd]\n      ) {\n        oldEnd--;\n        newEnd--;\n      }\n\n      // Update afterReference to account for common suffix\n      if (oldEnd + 1 < oldLen) {\n        afterReference = oldScopes[oldEnd + 1][AccessorProp.StartNode];\n      }\n\n      if (start > oldEnd) {\n        if (start <= newEnd) {\n          for (let i = start; i <= newEnd; i++) {\n            insertBranchBefore(newScopes[i], parentNode, afterReference);\n          }\n        }\n\n        // Fast path: only new remaining\n        return;\n      } else if (start > newEnd) {\n        // Fast path: only old remaining (removes already handled above)\n        return;\n      }\n\n      // Handle mixed new/moves\n      const diffLen = newEnd - start + 1;\n      const oldPos = new Map<BranchScope, number>();\n      const sources = new Array<number>(diffLen);\n      const pred = new Array<number>(diffLen);\n      const tails: number[] = [];\n      let tail: number = -1;\n      let lo: number;\n      let hi: number;\n      let mid: number;\n\n      for (let i = start; i <= oldEnd; i++) {\n        oldPos.set(oldScopes[i], i);\n      }\n\n      for (let i = diffLen; i--; ) {\n        sources[i] = oldPos.get(newScopes[start + i]) ?? -1;\n      }\n\n      for (let i = 0; i < diffLen; i++) {\n        if (~sources[i]) {\n          if (tail < 0 || sources[tails[tail]] < sources[i]) {\n            if (~tail) pred[i] = tails[tail];\n            tails[++tail] = i;\n          } else {\n            lo = 0;\n            hi = tail;\n            while (lo < hi) {\n              mid = ((lo + hi) / 2) | 0;\n              if (sources[tails[mid]] < sources[i]) lo = mid + 1;\n              else hi = mid;\n            }\n            if (sources[i] < sources[tails[lo]]) {\n              if (lo > 0) pred[i] = tails[lo - 1];\n              tails[lo] = i;\n            }\n          }\n        }\n      }\n\n      // Backtrack to build LIS indices (reuse tails array)\n      hi = tails[tail];\n      lo = tail + 1;\n      while (lo-- > 0) {\n        tails[lo] = hi;\n        hi = pred[hi];\n      }\n\n      for (let i = diffLen; i--; ) {\n        if (~tail && i === tails[tail]) {\n          tail--;\n        } else {\n          insertBranchBefore(newScopes[start + i], parentNode, afterReference);\n        }\n\n        afterReference = newScopes[start + i][AccessorProp.StartNode];\n      }\n    };\n  };\n}\n\nfunction createBranchWithTagNameOrRenderer(\n  $global: Scope[AccessorProp.Global],\n  tagNameOrRenderer: Renderer | string,\n  parentScope: Scope,\n  parentNode: ParentNode,\n) {\n  if (MARKO_DEBUG && typeof tagNameOrRenderer === \"string\") {\n    assertValidTagName(tagNameOrRenderer);\n  }\n\n  const branch = createBranch(\n    $global,\n    tagNameOrRenderer,\n    parentScope,\n    parentNode,\n  );\n  if (typeof tagNameOrRenderer === \"string\") {\n    branch[MARKO_DEBUG ? `#${tagNameOrRenderer}/0` : \"a\"] =\n      branch[AccessorProp.StartNode] =\n      branch[AccessorProp.EndNode] =\n        document.createElementNS(\n          tagNameOrRenderer === \"svg\"\n            ? \"http://www.w3.org/2000/svg\"\n            : tagNameOrRenderer === \"math\"\n              ? \"http://www.w3.org/1998/Math/MathML\"\n              : (parentNode as Element).namespaceURI,\n          tagNameOrRenderer,\n        );\n  } else {\n    setupBranch(tagNameOrRenderer, branch);\n  }\n\n  return branch;\n}\n\nfunction bySecondArg(_item: unknown, index: unknown) {\n  return index;\n}\n\nfunction byFirstArg(name: unknown) {\n  return name;\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/dom/controllable.ts",
    "content": "import {\n  type Accessor,\n  AccessorPrefix,\n  AccessorProp,\n  ControlledType,\n  type Scope,\n} from \"../common/types\";\nimport { _attr, normalizeAttrValue } from \"./dom\";\nimport { createDelegator } from \"./event\";\nimport { pendingEffects, run } from \"./queue\";\nimport { resolveCursorPosition } from \"./resolve-cursor-position\";\nimport { isResuming } from \"./resume\";\n\nlet inputType = \"\";\nconst controllableDelegate = createDelegator();\n\nexport function _attr_input_checked_default(\n  scope: Scope,\n  nodeAccessor: Accessor,\n  checked: boolean,\n) {\n  const el = scope[nodeAccessor] as HTMLInputElement;\n  const normalizedChecked = normalizeBoolProp(checked);\n  if (el.defaultChecked !== normalizedChecked) {\n    const restoreValue = scope[AccessorProp.Creating]\n      ? normalizedChecked\n      : el.checked;\n    el.defaultChecked = normalizedChecked;\n    if (restoreValue !== normalizedChecked) {\n      el.checked = restoreValue;\n    }\n  }\n}\nexport function _attr_input_checked(\n  scope: Scope,\n  nodeAccessor: Accessor,\n  checked: unknown,\n  checkedChange: unknown,\n) {\n  const el = scope[nodeAccessor] as HTMLInputElement;\n  const normalizedChecked = normalizeBoolProp(checked);\n  scope[AccessorPrefix.ControlledHandler + nodeAccessor] = checkedChange;\n  scope[AccessorPrefix.ControlledType + nodeAccessor] = checkedChange\n    ? ControlledType.InputChecked\n    : ControlledType.None;\n\n  if (checkedChange && !scope[AccessorProp.Creating]) {\n    el.checked = normalizedChecked;\n  } else {\n    _attr_input_checked_default(scope, nodeAccessor, normalizedChecked);\n  }\n}\nexport function _attr_input_checked_script(\n  scope: Scope,\n  nodeAccessor: Accessor,\n) {\n  const el = scope[nodeAccessor] as HTMLInputElement;\n  syncControllableFormInput(el, hasCheckboxChanged, () => {\n    const checkedChange = scope[\n      AccessorPrefix.ControlledHandler + nodeAccessor\n    ] as undefined | ((value: unknown) => unknown);\n    if (checkedChange) {\n      const newValue = el.checked;\n      el.checked = !newValue;\n      checkedChange(newValue);\n      run();\n    }\n  });\n}\n\nexport function _attr_input_checkedValue_default(\n  scope: Scope,\n  nodeAccessor: Accessor,\n  checkedValue: unknown,\n  value: unknown,\n) {\n  const multiple = Array.isArray(checkedValue);\n  const normalizedValue = normalizeStrProp(value);\n  const normalizedCheckedValue = multiple\n    ? checkedValue.map(normalizeStrProp)\n    : normalizeStrProp(checkedValue);\n\n  _attr(scope[nodeAccessor] as HTMLInputElement, \"value\", normalizedValue);\n  _attr_input_checked_default(\n    scope,\n    nodeAccessor,\n    multiple\n      ? normalizedCheckedValue.includes(normalizedValue)\n      : normalizedValue === normalizedCheckedValue,\n  );\n}\nexport function _attr_input_checkedValue(\n  scope: Scope,\n  nodeAccessor: Accessor,\n  checkedValue: unknown,\n  checkedValueChange: unknown,\n  value: unknown,\n) {\n  const el = scope[nodeAccessor] as HTMLInputElement;\n  const multiple = Array.isArray(checkedValue);\n  const normalizedValue = normalizeStrProp(value);\n  const normalizedCheckedValue = (scope[\n    AccessorPrefix.ControlledValue + nodeAccessor\n  ] = multiple\n    ? checkedValue.map(normalizeStrProp)\n    : normalizeStrProp(checkedValue));\n  _attr(el, \"value\", normalizedValue);\n  scope[AccessorPrefix.ControlledHandler + nodeAccessor] = checkedValueChange;\n  scope[AccessorPrefix.ControlledType + nodeAccessor] = checkedValueChange\n    ? ControlledType.InputCheckedValue\n    : ControlledType.None;\n\n  if (checkedValueChange && !scope[AccessorProp.Creating]) {\n    el.checked = multiple\n      ? normalizedCheckedValue.includes(normalizedValue)\n      : normalizedValue === normalizedCheckedValue;\n  } else {\n    _attr_input_checkedValue_default(\n      scope,\n      nodeAccessor,\n      normalizedCheckedValue,\n      normalizedValue,\n    );\n  }\n}\nexport function _attr_input_checkedValue_script(\n  scope: Scope,\n  nodeAccessor: Accessor,\n) {\n  const el = scope[nodeAccessor] as HTMLInputElement;\n  if (isResuming && el.defaultChecked) {\n    if (scope[AccessorPrefix.ControlledValue + nodeAccessor]) {\n      (scope[AccessorPrefix.ControlledValue + nodeAccessor] as string[]).push(\n        el.value,\n      );\n    } else {\n      scope[AccessorPrefix.ControlledValue + nodeAccessor] = el.value;\n    }\n  }\n\n  syncControllableFormInput(el, hasCheckboxChanged, () => {\n    const checkedValueChange = scope[\n      AccessorPrefix.ControlledHandler + nodeAccessor\n    ] as undefined | ((value: unknown) => unknown);\n    if (checkedValueChange) {\n      const oldValue = scope[AccessorPrefix.ControlledValue + nodeAccessor];\n      const newValue = Array.isArray(oldValue)\n        ? updateList(oldValue, el.value, el.checked)\n        : el.checked\n          ? el.value\n          : undefined;\n\n      if (el.name && el.type[0] === \"r\") {\n        for (const radio of (\n          el.getRootNode() as Document | ShadowRoot\n        ).querySelectorAll<HTMLInputElement>(\n          `[type=radio][name=${CSS.escape(el.name)}]`,\n        )) {\n          if (radio.form === el.form) {\n            radio.checked = Array.isArray(oldValue)\n              ? oldValue.includes(radio.value)\n              : oldValue === radio.value;\n          }\n        }\n      } else {\n        el.checked = !el.checked;\n      }\n      checkedValueChange(newValue);\n      run();\n    }\n  });\n}\n\nexport function _attr_input_value_default(\n  scope: Scope,\n  nodeAccessor: Accessor,\n  value: unknown,\n) {\n  const el = scope[nodeAccessor] as HTMLInputElement;\n  const normalizedValue = normalizeStrProp(value);\n  if (el.defaultValue !== normalizedValue) {\n    const restoreValue = scope[AccessorProp.Creating]\n      ? normalizedValue\n      : el.value;\n    el.defaultValue = normalizedValue;\n    setInputValue(el, restoreValue);\n  }\n}\nexport function _attr_input_value(\n  scope: Scope,\n  nodeAccessor: Accessor,\n  value: unknown,\n  valueChange: unknown,\n) {\n  const el = scope[nodeAccessor] as HTMLInputElement;\n  const normalizedValue = normalizeStrProp(value);\n  scope[AccessorPrefix.ControlledHandler + nodeAccessor] = valueChange;\n  scope[AccessorPrefix.ControlledValue + nodeAccessor] = normalizedValue;\n  scope[AccessorPrefix.ControlledType + nodeAccessor] = valueChange\n    ? ControlledType.InputValue\n    : ControlledType.None;\n\n  if (valueChange && !scope[AccessorProp.Creating]) {\n    setInputValue(el, normalizedValue);\n  } else {\n    _attr_input_value_default(scope, nodeAccessor, normalizedValue);\n  }\n}\nexport function _attr_input_value_script(scope: Scope, nodeAccessor: Accessor) {\n  const el = scope[nodeAccessor] as HTMLInputElement;\n  if (isResuming) {\n    scope[AccessorPrefix.ControlledValue + nodeAccessor] = el.defaultValue;\n  }\n  syncControllableFormInput(el, hasValueChanged, (ev?: Event) => {\n    const valueChange = scope[\n      AccessorPrefix.ControlledHandler + nodeAccessor\n    ] as undefined | ((value: unknown) => unknown);\n    if (valueChange) {\n      inputType = (ev as InputEvent)?.inputType;\n      valueChange(el.value);\n      run();\n      setInputValue(el, scope[AccessorPrefix.ControlledValue + nodeAccessor]);\n      inputType = \"\";\n    }\n  });\n}\nfunction setInputValue(el: HTMLInputElement, value: string) {\n  if (el.value !== value) {\n    const updatedPosition = resolveCursorPosition(\n      inputType,\n      (el.getRootNode() as Document | ShadowRoot).activeElement === el &&\n        el.selectionStart,\n      el.value,\n      (el.value = value),\n    );\n    if (~updatedPosition) {\n      el.setSelectionRange(updatedPosition, updatedPosition);\n    }\n  }\n}\n\nexport function _attr_select_value_default(\n  scope: Scope,\n  nodeAccessor: Accessor,\n  value: unknown,\n) {\n  let restoreValue: undefined | string | string[];\n  const el = scope[nodeAccessor] as HTMLSelectElement;\n  const existing = !scope[AccessorProp.Creating];\n  const multiple = Array.isArray(value);\n  const normalizedValue = multiple\n    ? value.map(normalizeStrProp)\n    : normalizeStrProp(value);\n\n  pendingEffects.unshift(() => {\n    for (const opt of el.options) {\n      const selected = multiple\n        ? normalizedValue.includes(opt.value)\n        : opt.value === normalizedValue;\n      if (opt.defaultSelected !== selected) {\n        if (existing) {\n          restoreValue ??= getSelectValue(el, multiple);\n        }\n        opt.defaultSelected = selected;\n      }\n    }\n\n    if (restoreValue !== undefined) {\n      setSelectValue(el, restoreValue, multiple);\n    }\n  }, scope);\n}\nexport function _attr_select_value(\n  scope: Scope,\n  nodeAccessor: Accessor,\n  value: unknown,\n  valueChange: unknown,\n) {\n  const el = scope[nodeAccessor] as HTMLSelectElement;\n  const existing = !scope[AccessorProp.Creating];\n  const multiple = Array.isArray(value);\n  const normalizedValue = (scope[\n    AccessorPrefix.ControlledValue + nodeAccessor\n  ] = multiple ? value.map(normalizeStrProp) : normalizeStrProp(value));\n  scope[AccessorPrefix.ControlledHandler + nodeAccessor] = valueChange;\n  scope[AccessorPrefix.ControlledType + nodeAccessor] = valueChange\n    ? ControlledType.SelectValue\n    : ControlledType.None;\n\n  if (valueChange && existing) {\n    pendingEffects.unshift(\n      () => setSelectValue(el, normalizedValue, multiple),\n      scope,\n    );\n  } else {\n    _attr_select_value_default(scope, nodeAccessor, normalizedValue);\n  }\n}\nexport function _attr_select_value_script(\n  scope: Scope,\n  nodeAccessor: Accessor,\n) {\n  const el = scope[nodeAccessor] as HTMLSelectElement;\n  const onChange = () => {\n    const valueChange = scope[\n      AccessorPrefix.ControlledHandler + nodeAccessor\n    ] as undefined | ((value: unknown) => unknown);\n    if (valueChange) {\n      const oldValue = scope[AccessorPrefix.ControlledValue + nodeAccessor] as\n        | string\n        | string[];\n      const multiple = Array.isArray(oldValue);\n      const newValue = getSelectValue(el, multiple);\n      setSelectValue(el, oldValue, multiple);\n      valueChange(newValue);\n      run();\n    }\n  };\n\n  if (isResuming) {\n    if (el.multiple) {\n      scope[AccessorPrefix.ControlledValue + nodeAccessor] = [];\n      for (const opt of el.options) {\n        if (opt.defaultSelected) {\n          scope[AccessorPrefix.ControlledValue + nodeAccessor].push(opt.value);\n        }\n      }\n    } else {\n      scope[AccessorPrefix.ControlledValue + nodeAccessor] = \"\";\n      for (const opt of el.options) {\n        if (opt.defaultSelected) {\n          scope[AccessorPrefix.ControlledValue + nodeAccessor] = opt.value;\n          break;\n        }\n      }\n    }\n  }\n\n  syncControllableFormInput(el, hasSelectChanged, onChange);\n  new MutationObserver(() => {\n    const value = scope[AccessorPrefix.ControlledValue + nodeAccessor];\n    if (\n      Array.isArray(value)\n        ? value.length !== el.selectedOptions.length ||\n          value.some((value, i) => value != el.selectedOptions[i].value)\n        : el.value !== value\n    ) {\n      onChange();\n    }\n  }).observe(el, { childList: true, subtree: true });\n}\nfunction setSelectValue(\n  el: HTMLSelectElement,\n  value: string | string[],\n  multiple: boolean,\n) {\n  if (multiple) {\n    for (const opt of el.options) {\n      opt.selected = value.includes(opt.value);\n    }\n  } else {\n    el.value = value as string;\n  }\n}\nfunction getSelectValue(el: HTMLSelectElement, multiple: boolean) {\n  return multiple\n    ? Array.from(el.selectedOptions, (opt) => opt.value)\n    : el.value;\n}\n\nexport function _attr_details_or_dialog_open_default(\n  scope: Scope,\n  nodeAccessor: Accessor,\n  open: unknown,\n) {\n  if (scope[AccessorProp.Creating]) {\n    (scope[nodeAccessor] as HTMLDetailsElement).open = normalizeBoolProp(open);\n  }\n}\nexport function _attr_details_or_dialog_open(\n  scope: Scope,\n  nodeAccessor: Accessor,\n  open: unknown,\n  openChange: unknown,\n) {\n  const normalizedOpen = (scope[AccessorPrefix.ControlledValue + nodeAccessor] =\n    normalizeBoolProp(open));\n  scope[AccessorPrefix.ControlledHandler + nodeAccessor] = openChange;\n  scope[AccessorPrefix.ControlledType + nodeAccessor] = openChange\n    ? ControlledType.DetailsOrDialogOpen\n    : ControlledType.None;\n\n  if (openChange && !scope[AccessorProp.Creating]) {\n    (scope[nodeAccessor] as HTMLDetailsElement).open = normalizedOpen;\n  } else {\n    _attr_details_or_dialog_open_default(scope, nodeAccessor, normalizedOpen);\n  }\n}\nexport function _attr_details_or_dialog_open_script(\n  scope: Scope,\n  nodeAccessor: Accessor,\n) {\n  const el = scope[nodeAccessor] as HTMLDetailsElement;\n  new MutationObserver(() => {\n    const openChange = scope[\n      AccessorPrefix.ControlledHandler + nodeAccessor\n    ] as undefined | ((value: unknown) => unknown);\n\n    if (\n      openChange &&\n      el.open === !scope[AccessorPrefix.ControlledValue + nodeAccessor]\n    ) {\n      const newValue = el.open;\n      el.open = !newValue;\n      openChange(newValue);\n      run();\n    }\n  }).observe(el, { attributes: true, attributeFilter: [\"open\"] });\n}\n\nfunction syncControllableFormInput<\n  T extends HTMLSelectElement | HTMLInputElement | HTMLTextAreaElement,\n>(\n  el: T,\n  hasChanged: (el: T) => boolean | undefined,\n  onChange: (ev?: Event) => void,\n) {\n  (el as any)._ = onChange;\n  controllableDelegate(el, \"input\", handleChange);\n  if ((el as any).form) {\n    controllableDelegate((el as any).form, \"reset\", handleFormReset);\n  }\n\n  if (isResuming && hasChanged(el)) {\n    queueMicrotask(onChange);\n  }\n}\n\nfunction handleChange(ev: Event) {\n  (ev.target as any)._?.(ev);\n}\n\nfunction handleFormReset(ev: Event) {\n  const handlers: (() => void)[] = [];\n  for (const el of (ev.target as HTMLFormElement).elements) {\n    if ((el as any)._ && hasFormElementChanged(el)) {\n      handlers.push((el as any)._);\n    }\n  }\n\n  requestAnimationFrame(() => {\n    if (!ev.defaultPrevented) {\n      for (const change of handlers) {\n        change();\n      }\n    }\n  });\n}\n\nfunction hasValueChanged(el: HTMLInputElement) {\n  return el.value !== el.defaultValue;\n}\n\nfunction hasCheckboxChanged(el: HTMLInputElement) {\n  return el.checked !== el.defaultChecked;\n}\n\nfunction hasSelectChanged(el: HTMLSelectElement) {\n  for (const opt of el.options) {\n    if (opt.selected !== opt.defaultSelected) {\n      return true;\n    }\n  }\n}\n\nfunction hasFormElementChanged(el: Element) {\n  return (el as HTMLSelectElement).options\n    ? hasSelectChanged(el as HTMLSelectElement)\n    : hasValueChanged(el as HTMLInputElement) ||\n        hasCheckboxChanged(el as HTMLInputElement);\n}\n\nfunction normalizeStrProp(value: unknown) {\n  return normalizeAttrValue(value) || \"\";\n}\n\nfunction normalizeBoolProp(value: unknown) {\n  return value != null && value !== false;\n}\n\nfunction updateList(arr: unknown[], val: unknown, push: boolean) {\n  const index = arr.indexOf(val);\n  return (\n    (push\n      ? !~index && [...arr, val]\n      : ~index && arr.slice(0, index).concat(arr.slice(index + 1))) || arr\n  );\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/dom/dom.ts",
    "content": "import { assertExclusiveAttrs } from \"../common/errors\";\nimport {\n  classValue,\n  getEventHandlerName,\n  htmlAttrNameReg,\n  isEventHandler,\n  normalizeDynamicRenderer,\n  styleValue,\n} from \"../common/helpers\";\nimport {\n  type Accessor,\n  AccessorPrefix,\n  AccessorProp,\n  ControlledType,\n  type Scope,\n} from \"../common/types\";\nimport { $signal } from \"./abort-signal\";\nimport { setConditionalRenderer } from \"./control-flow\";\nimport {\n  _attr_details_or_dialog_open,\n  _attr_details_or_dialog_open_script,\n  _attr_input_checked,\n  _attr_input_checked_script,\n  _attr_input_checkedValue,\n  _attr_input_checkedValue_script,\n  _attr_input_value,\n  _attr_input_value_script,\n  _attr_select_value,\n  _attr_select_value_script,\n} from \"./controllable\";\nimport { _on } from \"./event\";\nimport { parseHTML } from \"./parse-html\";\nimport { createAndSetupBranch, type Renderer } from \"./renderer\";\nimport { subscribeToScopeSet } from \"./signals\";\n\nexport function _to_text(value: unknown) {\n  return value || value === 0 ? value + \"\" : \"\";\n}\n\nexport function _attr(element: Element, name: string, value: unknown) {\n  setAttribute(element, name, normalizeAttrValue(value));\n}\n\nexport function setAttribute(\n  element: Element,\n  name: string,\n  value: string | undefined,\n) {\n  // TODO: benchmark if it is actually faster to check first\n  if (element.getAttribute(name) != value) {\n    if (value === undefined) {\n      element.removeAttribute(name);\n    } else {\n      element.setAttribute(name, value);\n    }\n  }\n}\n\nexport function _attr_class(element: Element, value: unknown) {\n  setAttribute(element, \"class\", classValue(value) || undefined);\n}\n\nexport function _attr_class_items(\n  element: Element,\n  items: Record<string, unknown>,\n) {\n  for (const key in items) {\n    _attr_class_item(element, key, items[key]);\n  }\n}\n\nexport function _attr_class_item(\n  element: Element,\n  name: string,\n  value: unknown,\n) {\n  element.classList.toggle(name, !!value);\n}\n\nexport function _attr_style(element: Element, value: unknown) {\n  setAttribute(element, \"style\", styleValue(value) || undefined);\n}\n\nexport function _attr_style_items(\n  element: HTMLElement,\n  items: Record<string, unknown>,\n) {\n  for (const key in items) {\n    _attr_style_item(element, key, items[key]);\n  }\n}\n\nexport function _attr_style_item(\n  element: HTMLElement,\n  name: string,\n  value: unknown,\n) {\n  element.style.setProperty(name, _to_text(value));\n}\n\nexport function _attr_nonce(scope: Scope, nodeAccessor: Accessor) {\n  _attr(scope[nodeAccessor], \"nonce\", scope[AccessorProp.Global].cspNonce);\n}\n\nexport function _text(node: Text | Comment, value: unknown) {\n  const normalizedValue = normalizeString(value);\n  // TODO: benchmark if it is actually faster to check data first\n  if (node.data !== normalizedValue) {\n    node.data = normalizedValue;\n  }\n}\n\nexport function _text_content(node: ParentNode, value: unknown) {\n  const normalizedValue = normalizeString(value);\n  // TODO: benchmark if it is actually faster to check data first\n  if (node.textContent !== normalizedValue) {\n    node.textContent = normalizedValue;\n  }\n}\n\nexport function _attrs(\n  scope: Scope,\n  nodeAccessor: Accessor,\n  nextAttrs: Record<string, unknown>,\n) {\n  const el = scope[nodeAccessor] as Element;\n  for (let i = el.attributes.length; i--; ) {\n    const { name } = el.attributes.item(i)!;\n    if (\n      !(nextAttrs && (name in nextAttrs || hasAttrAlias(el, name, nextAttrs)))\n    ) {\n      el.removeAttribute(name);\n    }\n  }\n\n  if (MARKO_DEBUG) {\n    assertExclusiveAttrs(nextAttrs);\n  }\n\n  attrsInternal(scope, nodeAccessor, nextAttrs);\n}\n\nexport function _attrs_content(\n  scope: Scope,\n  nodeAccessor: Accessor,\n  nextAttrs: Record<string, unknown>,\n) {\n  _attrs(scope, nodeAccessor, nextAttrs);\n  _attr_content(scope, nodeAccessor, nextAttrs?.content);\n}\n\nfunction hasAttrAlias(\n  element: Element,\n  attr: string,\n  nextAttrs: Record<string, unknown>,\n) {\n  return (\n    attr === \"checked\" &&\n    element.tagName === \"INPUT\" &&\n    \"checkedValue\" in nextAttrs\n  );\n}\n\nexport function _attrs_partial(\n  scope: Scope,\n  nodeAccessor: Accessor,\n  nextAttrs: Record<string, unknown>,\n  skip: Record<string, 1>,\n) {\n  const el = scope[nodeAccessor] as Element;\n  const partial: Partial<typeof nextAttrs> = {};\n\n  for (let i = el.attributes.length; i--; ) {\n    const { name } = el.attributes.item(i)!;\n    if (!skip[name] && !(nextAttrs && name in nextAttrs)) {\n      el.removeAttribute(name);\n    }\n  }\n\n  for (const name in nextAttrs) {\n    const key = isEventHandler(name) ? `on-${getEventHandlerName(name)}` : name;\n    if (!skip[key]) partial[key] = nextAttrs[name];\n  }\n\n  if (MARKO_DEBUG) {\n    assertExclusiveAttrs({ ...nextAttrs, ...skip });\n  }\n\n  attrsInternal(scope, nodeAccessor, partial);\n}\n\nexport function _attrs_partial_content(\n  scope: Scope,\n  nodeAccessor: Accessor,\n  nextAttrs: Record<string, unknown>,\n  skip: Record<string, 1>,\n) {\n  _attrs_partial(scope, nodeAccessor, nextAttrs, skip);\n  _attr_content(scope, nodeAccessor, nextAttrs?.content);\n}\n\nfunction attrsInternal(\n  scope: Scope,\n  nodeAccessor: Accessor,\n  nextAttrs: Record<string, unknown>,\n) {\n  const el = scope[nodeAccessor] as Element;\n  let events: undefined | Record<string, unknown>;\n  let skip: RegExp | undefined;\n  switch (el.tagName) {\n    case \"INPUT\":\n      if (\"checked\" in nextAttrs || \"checkedChange\" in nextAttrs) {\n        _attr_input_checked(\n          scope,\n          nodeAccessor,\n          nextAttrs.checked,\n          nextAttrs.checkedChange,\n        );\n      } else if (\n        \"checkedValue\" in nextAttrs ||\n        \"checkedValueChange\" in nextAttrs\n      ) {\n        _attr_input_checkedValue(\n          scope,\n          nodeAccessor,\n          nextAttrs.checkedValue,\n          nextAttrs.checkedValueChange,\n          nextAttrs.value,\n        );\n      } else if (\"value\" in nextAttrs || \"valueChange\" in nextAttrs) {\n        _attr_input_value(\n          scope,\n          nodeAccessor,\n          nextAttrs.value,\n          nextAttrs.valueChange,\n        );\n      } else {\n        break;\n      }\n      skip = /^(?:value|checked(?:Value)?)(?:Change)?$/;\n      break;\n    case \"SELECT\":\n      if (\"value\" in nextAttrs || \"valueChange\" in nextAttrs) {\n        _attr_select_value(\n          scope,\n          nodeAccessor,\n          nextAttrs.value,\n          nextAttrs.valueChange,\n        );\n        skip = /^value(?:Change)?$/;\n      }\n      break;\n    case \"TEXTAREA\":\n      if (\"value\" in nextAttrs || \"valueChange\" in nextAttrs) {\n        _attr_input_value(\n          scope,\n          nodeAccessor,\n          nextAttrs.value,\n          nextAttrs.valueChange,\n        );\n        skip = /^value(?:Change)?$/;\n      }\n      break;\n    case \"DETAILS\":\n    case \"DIALOG\":\n      if (\"open\" in nextAttrs || \"openChange\" in nextAttrs) {\n        _attr_details_or_dialog_open(\n          scope,\n          nodeAccessor,\n          nextAttrs.open,\n          nextAttrs.openChange,\n        );\n        skip = /^open(?:Change)?$/;\n      }\n      break;\n  }\n\n  // https://jsperf.com/object-keys-vs-for-in-with-closure/194\n  for (const name in nextAttrs) {\n    const value = nextAttrs[name];\n    switch (name) {\n      case \"class\":\n        _attr_class(el, value);\n        break;\n      case \"style\":\n        _attr_style(el, value);\n        break;\n      default: {\n        if (MARKO_DEBUG) {\n          if (htmlAttrNameReg.test(name)) {\n            throw new Error(`Invalid attribute name: ${JSON.stringify(name)}`);\n          }\n        }\n\n        if (isEventHandler(name)) {\n          (events ||= scope[AccessorPrefix.EventAttributes + nodeAccessor] =\n            {})[getEventHandlerName(name)] = value;\n        } else if (\n          !(skip?.test(name) || (name === \"content\" && el.tagName !== \"META\"))\n        ) {\n          _attr(el, name, value);\n        }\n        break;\n      }\n    }\n  }\n}\n\nexport function _attr_content(\n  scope: Scope,\n  nodeAccessor: Accessor,\n  value: unknown,\n) {\n  const content = normalizeClientRender(value);\n  if (\n    scope[AccessorPrefix.ConditionalRenderer + nodeAccessor] !==\n    (scope[AccessorPrefix.ConditionalRenderer + nodeAccessor] = content?.___id)\n  ) {\n    setConditionalRenderer(scope, nodeAccessor, content, createAndSetupBranch);\n    if (content?.___accessor) {\n      subscribeToScopeSet(\n        content.___owner!,\n        content.___accessor,\n        scope[AccessorPrefix.BranchScopes + nodeAccessor],\n      );\n    }\n  }\n\n  for (const accessor in content?.___localClosures) {\n    content.___localClosures[accessor](\n      scope[AccessorPrefix.BranchScopes + nodeAccessor],\n      content.___localClosureValues![accessor],\n    );\n  }\n}\n\nexport function _attrs_script(scope: Scope, nodeAccessor: Accessor) {\n  const el = scope[nodeAccessor] as Element;\n  const events = scope[AccessorPrefix.EventAttributes + nodeAccessor] as Record<\n    string,\n    any\n  >;\n\n  switch (scope[AccessorPrefix.ControlledType + nodeAccessor]) {\n    case ControlledType.InputChecked:\n      _attr_input_checked_script(scope, nodeAccessor);\n      break;\n    case ControlledType.InputCheckedValue:\n      _attr_input_checkedValue_script(scope, nodeAccessor);\n      break;\n    case ControlledType.InputValue:\n      _attr_input_value_script(scope, nodeAccessor);\n      break;\n    case ControlledType.SelectValue:\n      _attr_select_value_script(scope, nodeAccessor);\n      break;\n    case ControlledType.DetailsOrDialogOpen:\n      _attr_details_or_dialog_open_script(scope, nodeAccessor);\n      break;\n  }\n\n  for (const name in events) {\n    _on(el, name as any, events[name] as any);\n  }\n}\n\nexport function _html(scope: Scope, value: unknown, accessor: Accessor) {\n  const firstChild = scope[accessor] as ChildNode;\n  const parentNode = firstChild.parentNode!;\n  const lastChild = (scope[AccessorPrefix.DynamicHTMLLastChild + accessor] ||\n    firstChild) as ChildNode;\n  const newContent = parseHTML(\n    _to_text(value),\n    (parentNode as Element).namespaceURI!,\n  );\n\n  insertChildNodes(\n    parentNode,\n    firstChild,\n    (scope[accessor] =\n      newContent.firstChild || newContent.appendChild(new Text())),\n    (scope[AccessorPrefix.DynamicHTMLLastChild + accessor] =\n      newContent.lastChild!),\n  );\n  removeChildNodes(firstChild, lastChild);\n}\n\nexport function normalizeClientRender(value: any) {\n  const renderer = normalizeDynamicRenderer<Renderer>(value);\n  if (renderer) {\n    if ((renderer as Renderer).___id) {\n      return renderer as Renderer;\n    } else if (MARKO_DEBUG) {\n      throw new Error(\n        `Invalid \\`content\\` attribute. Received ${typeof value}`,\n      );\n    }\n  }\n}\n\nexport function normalizeAttrValue(value: unknown) {\n  if (value || value === 0) {\n    return value === true ? \"\" : value + \"\";\n  }\n}\n\nfunction normalizeString(value: unknown) {\n  return value || value === 0 ? value + \"\" : \"\\u200d\";\n}\nexport function _lifecycle(\n  scope: Scope,\n  thisObj: Record<string, unknown> & {\n    onMount?: (this: unknown) => void;\n    onUpdate?: (this: unknown) => void;\n    onDestroy?: (this: unknown) => void;\n  },\n  index: number = 0,\n) {\n  const accessor = AccessorPrefix.Lifecycle + index;\n  const instance = scope[accessor] as typeof thisObj;\n  if (instance) {\n    Object.assign(instance, thisObj);\n    instance.onUpdate?.();\n  } else {\n    scope[accessor] = thisObj;\n    thisObj.onMount?.();\n    $signal(scope, accessor).onabort = () => thisObj.onDestroy?.();\n  }\n}\n\nexport function removeChildNodes(startNode: ChildNode, endNode: ChildNode) {\n  const stop = endNode.nextSibling;\n  let current = startNode;\n  while (current !== stop) {\n    const next = current.nextSibling;\n    current.remove();\n    current = next!;\n  }\n}\n\nexport function insertChildNodes(\n  parentNode: ParentNode,\n  referenceNode: Node | null,\n  startNode: Node,\n  endNode: Node,\n) {\n  parentNode.insertBefore(toInsertNode(startNode, endNode), referenceNode);\n}\n\nexport function toInsertNode(startNode: Node, endNode: Node) {\n  if (startNode === endNode) return startNode;\n  const parent = new DocumentFragment();\n  const stop = endNode.nextSibling;\n  let current = startNode;\n  while (current !== stop) {\n    const next = current.nextSibling;\n    parent.appendChild(current);\n    current = next!;\n  }\n\n  return parent;\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/dom/event.ts",
    "content": "import { rendering } from \"./queue\";\n\ntype EventNames = keyof GlobalEventHandlersEventMap;\nconst defaultDelegator = createDelegator();\n\nexport function _on<\n  T extends EventNames,\n  H extends\n    | false\n    | null\n    | undefined\n    | ((ev: GlobalEventHandlersEventMap[T], target: Element) => void),\n>(element: Element, type: T, handler: H) {\n  if ((element as any)[\"$\" + type] === undefined) {\n    defaultDelegator(element, type, handleDelegated);\n  }\n\n  (element as any)[\"$\" + type] = handler || null;\n}\n\nexport function createDelegator() {\n  const kEvents = Symbol();\n  return function ensureDelegated(\n    node: Node,\n    type: string,\n    handler: EventListener,\n  ) {\n    ((\n      (node = node.getRootNode()) as Document & {\n        [kEvents]?: Record<string, 1>;\n      }\n    )[kEvents] ||= {})[type] ||=\n      (node.addEventListener(type, handler, true), 1);\n  };\n}\n\nfunction handleDelegated(ev: GlobalEventHandlersEventMap[EventNames]) {\n  let target = !rendering && (ev.target as ParentNode | null);\n  if (MARKO_DEBUG) {\n    Object.defineProperty(ev, \"currentTarget\", {\n      configurable: true,\n      get() {\n        console.error(\n          \"Event.currentTarget is not supported in Marko's delegated events. Instead use an element reference or the second parameter of the event handler.\",\n        );\n        return null;\n      },\n    });\n  }\n\n  while (target) {\n    (target as any)[\"$\" + ev.type]?.(ev, target);\n    target = ev.bubbles && !ev.cancelBubble && target.parentNode;\n  }\n\n  if (MARKO_DEBUG) {\n    delete (ev as any).currentTarget;\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/dom/parse-html.ts",
    "content": "const parsers: Record<string, Element> = {};\nexport function parseHTML(html: string, ns: string) {\n  const parser = (parsers[ns] ||= document.createElementNS(ns, \"template\"));\n  parser.innerHTML = html;\n  return (parser as HTMLTemplateElement).content || parser;\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/dom/queue.ts",
    "content": "import { AccessorProp, type BranchScope, type Scope } from \"../common/types\";\nimport { renderCatch } from \"./control-flow\";\nimport { enableBranches } from \"./resume\";\nimport type { Signal, SignalFn } from \"./signals\";\n\ntype ExecFn<S extends Scope = Scope> = (scope: S, arg?: any) => void;\nexport type PendingRender = {\n  ___key: number;\n  ___scope: Scope;\n  ___signal: Signal<any>;\n  ___value: unknown;\n};\n\nlet pendingRenders: PendingRender[] = [];\nlet pendingRendersLookup = new Map<number, PendingRender>();\nlet asyncRendersLookup: typeof pendingRendersLookup | undefined | 0;\nexport const caughtError = new WeakSet<unknown[]>();\nexport const placeholderShown = new WeakSet<unknown[]>();\nexport let pendingEffects: unknown[] = [];\nexport let pendingScopes: Scope[] = [];\nexport let rendering: undefined | 0 | 1;\n\nconst scopeKeyOffset = 1e3;\nexport function queueRender<T>(\n  scope: Scope,\n  signal: Signal<T>,\n  signalKey: number,\n  value?: T,\n  scopeKey = scope[AccessorProp.Id],\n) {\n  const key = scopeKey * scopeKeyOffset + signalKey;\n  let render = signalKey >= 0 && pendingRendersLookup.get(key);\n  if (render) {\n    render.___value = value;\n  } else {\n    queuePendingRender(\n      (render = {\n        ___key: key,\n        ___scope: scope,\n        ___signal: signal,\n        ___value: value,\n      }),\n    );\n    signalKey >= 0 && pendingRendersLookup.set(key, render);\n  }\n}\n\nexport function queuePendingRender(render: PendingRender) {\n  let i = pendingRenders.push(render) - 1;\n  while (i) {\n    const parentIndex = (i - 1) >> 1;\n    const parent = pendingRenders[parentIndex];\n    if (render.___key - parent.___key >= 0) break;\n    pendingRenders[i] = parent;\n    i = parentIndex;\n  }\n  pendingRenders[i] = render;\n}\n\nexport function queueEffect<S extends Scope, T extends ExecFn<S>>(\n  scope: S,\n  fn: T,\n) {\n  pendingEffects.push(fn, scope);\n}\n\nexport function run() {\n  const effects = pendingEffects;\n  asyncRendersLookup = new Map();\n  try {\n    rendering = 1;\n    runRenders();\n  } finally {\n    pendingRendersLookup = asyncRendersLookup;\n    asyncRendersLookup = rendering = 0;\n    pendingRenders = [];\n    pendingEffects = [];\n  }\n  runEffects(effects);\n}\n\nexport function prepareEffects(fn: () => void): unknown[] {\n  const prevRenders = pendingRenders;\n  const prevEffects = pendingEffects;\n  const prevLookup = asyncRendersLookup;\n  const preparedEffects = (pendingEffects = []);\n  pendingRenders = [];\n  asyncRendersLookup = pendingRendersLookup;\n  pendingRendersLookup = new Map();\n\n  try {\n    rendering = 1;\n    fn();\n    runRenders();\n  } finally {\n    rendering = 0;\n    pendingRendersLookup = asyncRendersLookup;\n    asyncRendersLookup = prevLookup;\n    pendingRenders = prevRenders;\n    pendingEffects = prevEffects;\n  }\n  return preparedEffects;\n}\n\nexport let runEffects = ((effects) => {\n  for (let i = 0; i < effects.length; ) {\n    (effects[i++] as (scope: Scope) => void)(effects[i++] as Scope);\n  }\n}) as (effects: unknown[], checkPending?: boolean | 1) => void;\n\nfunction runRenders() {\n  while (pendingRenders.length) {\n    const render = pendingRenders[0];\n    const item = pendingRenders.pop()!;\n\n    if (render !== item) {\n      let i = 0;\n      const mid = pendingRenders.length >> 1;\n      const key = (pendingRenders[0] = item).___key;\n\n      while (i < mid) {\n        let bestChild = (i << 1) + 1;\n        const right = bestChild + 1;\n\n        if (\n          right < pendingRenders.length &&\n          pendingRenders[right].___key - pendingRenders[bestChild].___key < 0\n        ) {\n          bestChild = right;\n        }\n\n        if (pendingRenders[bestChild].___key - key >= 0) {\n          break;\n        } else {\n          pendingRenders[i] = pendingRenders[bestChild];\n          i = bestChild;\n        }\n      }\n\n      pendingRenders[i] = item;\n    }\n\n    if (\n      !render.___scope[AccessorProp.ClosestBranch]?.[AccessorProp.Destroyed]\n    ) {\n      runRender(render);\n    }\n  }\n\n  for (const scope of pendingScopes) {\n    scope[AccessorProp.Creating] = 0;\n  }\n\n  pendingScopes = [];\n}\n\nlet runRender = (render: PendingRender) =>\n  render.___signal(render.___scope, render.___value);\n\nexport let _enable_catch = () => {\n  _enable_catch = () => {};\n  enableBranches();\n  const handlePendingTry = (\n    fn: ExecFn,\n    scope: Scope,\n    branch: BranchScope | undefined,\n  ) => {\n    // walk up the branches to see if any have an AwaitCounter with count (i) > 0\n    // if not, return false\n    // if so, return true and push the fn to the pending async queue on the try branch\n    while (branch) {\n      if (branch[AccessorProp.AwaitCounter]?.i) {\n        return (branch[AccessorProp.PendingEffects] ||= []).push(fn, scope);\n      }\n      branch = branch[AccessorProp.ParentBranch];\n    }\n  };\n  runEffects = (\n    (runEffects) =>\n    (effects: unknown[], checkPending = placeholderShown.has(effects)) => {\n      if (checkPending || caughtError.has(effects)) {\n        let i = 0;\n        let fn: SignalFn;\n        let scope: Scope;\n        let branch: BranchScope | undefined;\n        for (; i < effects.length; ) {\n          fn = effects[i++] as SignalFn;\n          scope = effects[i++] as Scope;\n          branch = scope[AccessorProp.ClosestBranch];\n          if (\n            !branch?.[AccessorProp.Destroyed] &&\n            !(checkPending && handlePendingTry(fn, scope, branch))\n          ) {\n            fn(scope);\n          }\n        }\n      } else {\n        runEffects(effects);\n      }\n    }\n  )(runEffects);\n  runRender = ((runRender) => (render: PendingRender) => {\n    try {\n      let branch = render.___scope[AccessorProp.ClosestBranch];\n      while (branch) {\n        if (branch[AccessorProp.PendingRenders]) {\n          (asyncRendersLookup as typeof pendingRendersLookup).set(\n            render.___key,\n            render,\n          );\n          return branch[AccessorProp.PendingRenders].push(render);\n        }\n        branch = branch![AccessorProp.ParentBranch];\n      }\n      runRender(render);\n    } catch (error) {\n      renderCatch(render.___scope, error);\n    }\n  })(runRender);\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/dom/renderer.ts",
    "content": "import {\n  type Accessor,\n  AccessorProp,\n  type BranchScope,\n  NodeType,\n  type Scope,\n} from \"../common/types\";\nimport { insertChildNodes } from \"./dom\";\nimport { parseHTML } from \"./parse-html\";\nimport { queueRender } from \"./queue\";\nimport { _resume } from \"./resume\";\nimport { createScope } from \"./scope\";\nimport { _const, type Signal, type SignalFn } from \"./signals\";\nimport { walk } from \"./walker\";\n\nexport type Renderer = {\n  ___id: string;\n  ___setup: undefined | SetupFn;\n  ___clone: (branch: BranchScope, ns: string) => void;\n  ___params: Signal<unknown> | undefined;\n  ___owner: Scope | undefined;\n  ___accessor: Accessor | undefined;\n  ___localClosures?: Record<Accessor, Signal<unknown>>;\n  ___localClosureValues?: Record<Accessor, unknown>;\n};\n\nexport type SetupFn = (scope: Scope) => void;\n\nexport function createBranch(\n  $global: Scope[AccessorProp.Global],\n  renderer: Renderer | string,\n  parentScope: Scope | undefined,\n  parentNode: ParentNode,\n) {\n  const branch = createScope($global) as BranchScope;\n  branch[AccessorProp.Owner] = (renderer as Renderer).___owner || parentScope;\n  setParentBranch(branch, parentScope?.[AccessorProp.ClosestBranch]);\n\n  if (MARKO_DEBUG) {\n    branch[AccessorProp.Renderer] = renderer;\n  }\n\n  (renderer as Renderer | { ___clone?: Renderer[\"___clone\"] }).___clone?.(\n    branch,\n    (parentNode as Element).namespaceURI!,\n  );\n\n  return branch;\n}\n\nexport function setParentBranch(\n  branch: BranchScope,\n  parentBranch: BranchScope | undefined,\n) {\n  if (parentBranch) {\n    branch[AccessorProp.ParentBranch] = parentBranch;\n    (parentBranch[AccessorProp.BranchScopes] ||= new Set()).add(branch);\n  }\n  branch[AccessorProp.ClosestBranch] = branch;\n}\n\nexport function createAndSetupBranch(\n  $global: Scope[AccessorProp.Global],\n  renderer: Renderer,\n  parentScope: Scope | undefined,\n  parentNode: ParentNode,\n) {\n  return setupBranch(\n    renderer,\n    createBranch($global, renderer, parentScope, parentNode),\n  );\n}\n\nexport function setupBranch(renderer: Renderer, branch: BranchScope) {\n  if (renderer.___setup) {\n    queueRender(branch, renderer.___setup, -1);\n  }\n  return branch;\n}\n\nexport function _content(\n  id: string,\n  template?: string | 0,\n  walks?: string | 0,\n  setup?: { _: Signal<unknown> } | SetupFn | 0,\n  params?: Signal<unknown> | 0,\n  dynamicScopesAccessor?: Accessor,\n) {\n  // Walks are required to encode how to \"exit\" the content\n  // so that we can continue walking across merged child templates.\n  // However at this point we have the full walks string for a branch,\n  // so we trim the trailing `Next`, `Over or `Out` walk codes.\n  // The regexp below replaces trailing values between charcodes `0-49`\n  // 1 is charcode 49 (WalkCode.DynamicTagWithVar)\n  walks = walks ? walks.replace(/[^\\0-1]+$/, \"\") : \"\";\n  setup = setup ? (setup as { _: SetupFn })._ || setup : undefined;\n  params ||= undefined;\n  const clone: Renderer[\"___clone\"] = template\n    ? (branch, ns) => {\n        ((cloneCache[ns] ||= {})[template] ||= createCloneableHTML(\n          template,\n          ns,\n        ))(branch, walks);\n      }\n    : (branch) => {\n        walk(\n          (branch[AccessorProp.StartNode] = branch[AccessorProp.EndNode] =\n            new Text()),\n          walks,\n          branch,\n        );\n      };\n\n  return (owner?: Scope): Renderer => {\n    return {\n      ___id: id,\n      ___clone: clone,\n      ___owner: owner,\n      ___setup: setup,\n      ___params: params,\n      ___accessor: dynamicScopesAccessor,\n    };\n  };\n}\n\nexport function _content_resume(\n  id: string,\n  template: string | 0,\n  walks?: string | 0,\n  setup?: SetupFn | 0,\n  params?: Signal<unknown> | 0,\n  dynamicScopesAccessor?: Accessor,\n) {\n  return _resume(\n    id,\n    _content(id, template, walks, setup, params, dynamicScopesAccessor),\n  );\n}\n\nexport function _content_closures(\n  renderer: ReturnType<typeof _content>,\n  closureFns: Record<Accessor, SignalFn>,\n) {\n  const closureSignals: NonNullable<Renderer[\"___localClosures\"]> = {};\n  for (const key in closureFns) {\n    closureSignals[key] = _const(MARKO_DEBUG ? key : +key, closureFns[key]);\n  }\n  return (owner: Scope, closureValues: Record<Accessor, unknown>): Renderer => {\n    const instance = renderer(owner);\n    instance.___localClosures = closureSignals;\n    instance.___localClosureValues = closureValues;\n    return instance;\n  };\n}\n\nconst cloneCache: Partial<\n  Record<string, Record<string, ReturnType<typeof createCloneableHTML>>>\n> = {};\nfunction createCloneableHTML(\n  html: string,\n  ns: string,\n): (branch: BranchScope, walks: string) => void {\n  const { firstChild, lastChild } = parseHTML(html, ns) as {\n    firstChild: ChildNode;\n    lastChild: ChildNode;\n  };\n  const parent = document.createElementNS(ns, \"t\") as ParentNode & {\n    firstChild: ChildNode;\n    lastChild: ChildNode;\n  };\n  insertChildNodes(parent, null, firstChild, lastChild);\n  return firstChild === lastChild && firstChild!.nodeType < NodeType.Comment\n    ? (branch, walks) => {\n        walk(\n          (branch[AccessorProp.StartNode] = branch[AccessorProp.EndNode] =\n            firstChild.cloneNode(true) as ChildNode),\n          walks,\n          branch,\n        );\n      }\n    : (branch, walks) => {\n        const clone = parent.cloneNode(true);\n        walk(clone.firstChild!, walks, branch);\n        branch[AccessorProp.StartNode] = clone.firstChild!;\n        branch[AccessorProp.EndNode] = clone.lastChild!;\n      };\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/dom/resolve-cursor-position.ts",
    "content": "export function resolveCursorPosition(\n  inputType: string,\n  initialPosition: number | null | false,\n  initialValue: string,\n  updatedValue: string,\n) {\n  if (\n    // If initial position is null or false then\n    // either this node is not the active element\n    // or does not support selection ranges.\n    (initialPosition || initialPosition === 0) &&\n    (initialPosition !== initialValue.length ||\n      // short regex to match input types that delete backwards\n      /kw/.test(inputType))\n  ) {\n    const before = initialValue.slice(0, initialPosition);\n    const after = initialValue.slice(initialPosition);\n    if (updatedValue.startsWith(before)) {\n      return initialPosition;\n    } else if (updatedValue.endsWith(after)) {\n      return updatedValue.length - after.length;\n    } else {\n      const relevantChars = stripSpacesAndPunctuation(before).length;\n      let pos = 0;\n      let relevantIndex = 0;\n      while (relevantIndex < relevantChars) {\n        if (stripSpacesAndPunctuation(updatedValue[pos])) relevantIndex++;\n        pos++;\n      }\n      return pos;\n    }\n  }\n  return -1;\n}\n\nfunction stripSpacesAndPunctuation(str: string) {\n  return str.replace(/[^\\p{L}\\p{N}]/gu, \"\");\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/dom/resume.ts",
    "content": "import { decodeAccessor } from \"../common/helpers\";\nimport { DEFAULT_RUNTIME_ID } from \"../common/meta\";\nimport { type Opt, push } from \"../common/opt\";\nimport {\n  AccessorPrefix,\n  AccessorProp,\n  type AwaitCounter,\n  type BranchScope,\n  type EncodedAccessor,\n  ResumeSymbol,\n  type Scope,\n} from \"../common/types\";\nimport { runEffects } from \"./queue\";\nimport { setParentBranch } from \"./renderer\";\nimport { destroyScope } from \"./scope\";\nimport { _el_read, type Signal } from \"./signals\";\nimport { getDebugKey } from \"./walker\";\n\ntype Resumes = (number | Scope)[];\ntype ResumeFn = (ctx: object) => Resumes;\nexport interface Renders {\n  (renderId: string): RenderData;\n  [renderId: string]: RenderData;\n}\nexport interface RenderData {\n  // RuntimeID + ResumeID\n  i: string;\n  // Marked nodes to visit\n  v: Comment[];\n  // Resumes\n  r?: (string | ResumeFn)[];\n  // Scope lookup (just needed for compat layer)\n  s?: Record<string, Scope>;\n  // Walk\n  w(): void;\n  // Deserialize scopes and run scripts (\"m\" for marko)\n  m?(): unknown[];\n  // Reference node used for embedded renders.\n  n?: Text;\n  // List of resume blocking ids.\n  b?: 0 | Record<string, 1 | 0>;\n\n  /* --- Used by inline runtime --- */\n\n  // Document\n  d: never;\n  // Walked node lookup\n  l: never;\n  // Reorder-runtime\n  x: never;\n  // Reordered scripts\n  j?: never;\n  // Await counter lookup\n  p?: Record<string | number, AwaitCounter>;\n}\ntype RegisteredFn<S extends Scope = Scope> = (scope: S) => void;\n\nconst registeredValues: Record<string, unknown> = {};\nlet curRuntimeId: string | undefined;\nlet readyLookup: undefined | Record<string, 1 | (() => void)>;\nlet branchesEnabled: undefined | 1;\nlet embedEnabled: undefined | 1;\n\nexport function enableBranches() {\n  branchesEnabled = 1;\n}\n\nexport const ready = /*@__PURE__*/ ((_) => (id: string) => {\n  (readyLookup![id] as undefined | (() => {}))?.();\n  readyLookup![id] = 1;\n})((readyLookup = {}));\n\nexport function initEmbedded(readyId: string, runtimeId?: string) {\n  embedEnabled = 1;\n  ready(readyId);\n  init(runtimeId);\n  new MutationObserver(() => {\n    const renders = (self as any)[curRuntimeId!] as Renders | undefined;\n    for (const renderId in renders) {\n      const { s, n } = renders[renderId];\n      if (n && !n.isConnected) {\n        delete renders[renderId];\n        for (const id in s) {\n          destroyScope(s[id]);\n        }\n      }\n    }\n  }).observe(document.body, { childList: true, subtree: true });\n}\nexport function init(runtimeId = DEFAULT_RUNTIME_ID) {\n  if (curRuntimeId) {\n    if (MARKO_DEBUG) {\n      if (curRuntimeId !== runtimeId) {\n        throw new Error(\n          `Marko initialized multiple times with different $global.runtimeId's of ${JSON.stringify(runtimeId)} and ${JSON.stringify(curRuntimeId)}.`,\n        );\n      }\n    }\n\n    return;\n  }\n\n  curRuntimeId = runtimeId;\n\n  let resumeRender: Renders;\n  const renders = (self as any)[runtimeId] as Renders | undefined;\n  const defineRuntime = (desc: PropertyDescriptor) =>\n    Object.defineProperty(self, runtimeId, desc);\n  const initRuntime = (renders: Renders) => {\n    defineRuntime({\n      value: (resumeRender = ((renderId: string) => {\n        const render = (resumeRender[renderId] =\n          renders[renderId] || renders(renderId));\n        const walk = render.w;\n        const scopeLookup: Record<string | number, Scope> = (render.s = {});\n        const getScope = (id: string | number) =>\n          (scopeLookup[id] ||= { [AccessorProp.Id]: +id } as Scope);\n        const serializeContext: Record<string, unknown> = {\n          _: registeredValues,\n        };\n        const visitBranches =\n          branchesEnabled &&\n          ((\n            branchScopesStack: Opt<BranchScope>[] = [],\n            branchStarts: Comment[] = [],\n            orphanBranches: BranchScope[] = [],\n            curBranchScopes?: Opt<BranchScope>,\n          ) => {\n            return (\n              branchId?: number,\n              branch?: BranchScope,\n              endedBranches?: BranchScope[],\n              accessor?: string,\n              singleNode?: boolean,\n              parent = visit.parentNode!,\n              startVisit: ChildNode = visit,\n              i = orphanBranches.length,\n            ) => {\n              if (visitType !== ResumeSymbol.BranchStart) {\n                visitScope[nextToken(/* read accessor */)] =\n                  visitType === ResumeSymbol.BranchEndOnlyChildInParent ||\n                  visitType ===\n                    ResumeSymbol.BranchEndSingleNodeOnlyChildInParent\n                    ? parent\n                    : visit;\n                accessor = AccessorPrefix.BranchScopes + lastToken;\n                singleNode =\n                  visitType !== ResumeSymbol.BranchEnd &&\n                  visitType !== ResumeSymbol.BranchEndOnlyChildInParent;\n                nextToken(/* read optional first branchId */);\n              }\n\n              while ((branchId = +lastToken)) {\n                (endedBranches ||= []).push(\n                  (branch = getScope(branchId) as BranchScope),\n                );\n                setParentBranch(branch, branch[AccessorProp.ClosestBranch]);\n                if (\n                  (branch[AccessorProp.AwaitCounter] = render.p?.[branchId])\n                ) {\n                  branch[AccessorProp.AwaitCounter].m = render.m;\n                }\n\n                if (singleNode) {\n                  while (\n                    startVisit.previousSibling &&\n                    ~visits.indexOf(\n                      (startVisit = startVisit.previousSibling) as Comment,\n                    )\n                  );\n                  branch[AccessorProp.EndNode] = branch[\n                    AccessorProp.StartNode\n                  ] = startVisit;\n                  if (visitType === ResumeSymbol.BranchEndNativeTag) {\n                    branch[MARKO_DEBUG ? getDebugKey(0, startVisit) : \"a\"] =\n                      startVisit;\n                  }\n                } else {\n                  curBranchScopes = push(curBranchScopes, branch);\n                  if (accessor) {\n                    visitScope[accessor] = curBranchScopes;\n                    curBranchScopes = branchScopesStack.pop();\n                  }\n                  startVisit = branchStarts.pop()!;\n                  if (parent !== startVisit.parentNode) {\n                    parent.prepend(startVisit);\n                  }\n                  branch[AccessorProp.StartNode] = startVisit;\n                  branch[AccessorProp.EndNode] =\n                    visit.previousSibling === startVisit\n                      ? startVisit\n                      : parent.insertBefore(new Text(), visit);\n                }\n\n                while (i && orphanBranches[--i][AccessorProp.Id] > branchId) {\n                  setParentBranch(orphanBranches.pop()!, branch);\n                }\n\n                nextToken(/* read optional next branchId */);\n              }\n\n              if (endedBranches) {\n                orphanBranches.push(...endedBranches);\n                if (singleNode) {\n                  visitScope[accessor!] =\n                    endedBranches.length > 1\n                      ? endedBranches.reverse()\n                      : endedBranches[0];\n                }\n              }\n\n              if (visitType === ResumeSymbol.BranchStart) {\n                if (!endedBranches) {\n                  branchScopesStack.push(curBranchScopes);\n                  curBranchScopes = undefined;\n                }\n                branchStarts.push(visit);\n              }\n            };\n          })();\n        const nextToken = () =>\n          (lastToken = visitText.slice(\n            lastTokenIndex,\n            (lastTokenIndex =\n              visitText.indexOf(\" \", lastTokenIndex) + 1 ||\n              visitText.length + 1) - 1,\n          ));\n        let $global: Scope[AccessorProp.Global] | undefined;\n        let lastEffect: unknown;\n        let visits: RenderData[\"v\"];\n        let resumes: NonNullable<RenderData[\"r\"]>;\n        let visit: Comment;\n        let visitText: string;\n        let visitType: ResumeSymbol;\n        let visitScope: Scope;\n        let lastToken: string;\n        let lastTokenIndex: number;\n        let lastScopeId = 0;\n\n        if (MARKO_DEBUG) {\n          if (render.m) {\n            throw new Error(\n              `Marko rendered multiple times with $global.runtimeId as ${JSON.stringify(runtimeId)} and $global.renderId as ${JSON.stringify(renderId)}. Ensure each render into a page has a unique $global.renderId.`,\n            );\n          }\n        }\n\n        render.m = (effects: unknown[] = []) => {\n          if (readyLookup) {\n            for (const readyId in render.b as Record<string, unknown>) {\n              if (readyLookup[readyId] !== 1) {\n                readyLookup[readyId] = ((prev) => () => {\n                  render.m!();\n                  prev?.();\n                })(readyLookup[readyId]);\n                return effects;\n              }\n            }\n\n            render.b = 0;\n          }\n\n          for (const serialized of (resumes = render.r || [])) {\n            if (typeof serialized === \"string\") {\n              lastTokenIndex = 0;\n              visitText = serialized;\n              while (nextToken()) {\n                if (/\\D/.test(lastToken)) {\n                  lastEffect = registeredValues[lastToken];\n                } else {\n                  effects.push(lastEffect, getScope(lastToken));\n                }\n              }\n            } else {\n              for (const scope of serialized(serializeContext)) {\n                if (!$global) {\n                  $global = (scope || {}) as Scope[AccessorProp.Global];\n                  $global.runtimeId = runtimeId;\n                  $global.renderId = renderId;\n                } else if (typeof scope === \"number\") {\n                  lastScopeId += scope;\n                } else {\n                  scopeLookup[(scope[AccessorProp.Id] = ++lastScopeId)] = scope;\n                  scope[AccessorProp.Global] = $global;\n                  if (branchesEnabled) {\n                    scope[AccessorProp.ClosestBranch] = getScope(\n                      scope[AccessorProp.ClosestBranchId]!,\n                    ) as BranchScope;\n                  }\n                }\n              }\n            }\n          }\n\n          for (visit of (visits = render.v)) {\n            lastTokenIndex = render.i.length;\n            visitText = visit.data!;\n            visitType = visitText[lastTokenIndex++] as ResumeSymbol;\n            visitScope = getScope(nextToken(/* read scope id */));\n\n            if (visitType === ResumeSymbol.Node) {\n              visitScope[nextToken(/* read accessor */)] =\n                visit.previousSibling;\n            } else if (branchesEnabled) {\n              visitBranches!();\n            }\n          }\n\n          if (embedEnabled) {\n            render.n ||= visit?.parentNode!.insertBefore(\n              new Text(),\n              visit.nextSibling,\n            );\n          }\n\n          visits.length = resumes.length = 0;\n\n          return effects;\n        };\n\n        render.w = () => {\n          walk();\n          runResumeEffects(render);\n        };\n\n        return render;\n      }) as Renders),\n    });\n  };\n  if (renders) {\n    initRuntime(renders);\n    for (const renderId in renders) {\n      runResumeEffects(resumeRender!(renderId));\n    }\n  } else {\n    defineRuntime({\n      configurable: true,\n      set: initRuntime,\n    });\n  }\n}\n\nexport let isResuming: undefined | 0 | 1;\n\nfunction runResumeEffects(render: RenderData) {\n  try {\n    isResuming = 1;\n    runEffects(render.m!(), 1);\n  } finally {\n    isResuming = 0;\n  }\n}\n\nexport function getRegisteredWithScope(id: string, scope?: Scope) {\n  const val = registeredValues[id];\n  return scope ? (val as RegisteredFn)(scope) : val;\n}\n\nexport function _resume<T>(id: string, obj: T): T {\n  return (registeredValues[id] = obj);\n}\n\nexport function _var_resume<T extends Signal<unknown>>(\n  id: string,\n  signal: T,\n): T {\n  _resume(id, (scope: Scope) => (value: unknown) => signal(scope, value));\n  return signal;\n}\n\nexport function _el(id: string, accessor: EncodedAccessor) {\n  if (MARKO_DEBUG) {\n    return _resume(id, (scope: Scope) => () => _el_read(scope[accessor]));\n  } else {\n    accessor = decodeAccessor(accessor as number);\n    return _resume(id, (scope: Scope) => () => scope[accessor]);\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/dom/schedule.ts",
    "content": "import { run } from \"./queue\";\nlet runTask: undefined | (() => void);\nlet isScheduled: undefined | 0 | 1;\nlet channel: MessageChannel | undefined;\n\nexport function schedule() {\n  if (!isScheduled) {\n    if (MARKO_DEBUG) {\n      if ((console as any).createTask) {\n        const task = (console as any).createTask(\"queue\");\n        runTask = () => task.run(run);\n      } else {\n        runTask = run;\n      }\n    }\n\n    isScheduled = 1;\n    queueMicrotask(flushAndWaitFrame);\n  }\n}\n\nfunction flushAndWaitFrame() {\n  if (MARKO_DEBUG) {\n    runTask!();\n  } else {\n    run();\n  }\n\n  requestAnimationFrame(triggerMacroTask);\n}\n\nfunction triggerMacroTask() {\n  if (!channel) {\n    channel = new MessageChannel();\n    channel.port1.onmessage = () => {\n      isScheduled = 0;\n      if (MARKO_DEBUG) {\n        const run = runTask!;\n        runTask = undefined;\n        run();\n      } else {\n        run();\n      }\n    };\n  }\n  channel.port2.postMessage(0);\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/dom/scope.ts",
    "content": "import { AccessorProp, type BranchScope, type Scope } from \"../common/types\";\nimport { $signalReset } from \"./abort-signal\";\nimport { insertChildNodes, removeChildNodes } from \"./dom\";\nimport { pendingScopes } from \"./queue\";\n\nlet nextScopeId = 1e6; // Intentionally high to avoid conflict with server rendered ids.\n\nexport function createScope(\n  $global: Scope[AccessorProp.Global],\n  closestBranch?: BranchScope,\n): Scope {\n  const scope = {\n    [AccessorProp.Id]: nextScopeId++,\n    [AccessorProp.Creating]: 1,\n    [AccessorProp.ClosestBranch]: closestBranch,\n    [AccessorProp.Global]: $global,\n  } as Scope;\n\n  pendingScopes.push(scope);\n  return scope;\n}\n\nexport function skipScope() {\n  return nextScopeId++;\n}\n\nexport function findBranchWithKey(\n  scope: Scope,\n  key: string,\n): BranchScope | undefined {\n  let branch = scope[AccessorProp.ClosestBranch];\n  while (branch && !branch[key]) {\n    branch = branch[AccessorProp.ParentBranch];\n  }\n  return branch;\n}\n\nexport function destroyBranch(branch: BranchScope) {\n  branch[AccessorProp.ParentBranch]?.[AccessorProp.BranchScopes]?.delete(\n    branch,\n  );\n  destroyNestedScopes(branch);\n}\n\nexport function destroyScope(scope: Scope) {\n  if (!scope[AccessorProp.Destroyed]) {\n    destroyNestedScopes(scope);\n    resetControllers(scope);\n  }\n}\n\nfunction destroyNestedScopes(scope: Scope) {\n  scope[AccessorProp.Destroyed] = 1;\n  scope[AccessorProp.BranchScopes]?.forEach(destroyNestedScopes);\n  scope[AccessorProp.AbortScopes]?.forEach(resetControllers);\n}\n\nfunction resetControllers(scope: Scope) {\n  for (const id in scope[AccessorProp.AbortControllers]) {\n    $signalReset(scope, id);\n  }\n}\n\nexport function removeAndDestroyBranch(branch: BranchScope) {\n  destroyBranch(branch);\n  removeChildNodes(\n    branch[AccessorProp.StartNode],\n    branch[AccessorProp.EndNode],\n  );\n}\n\nexport function insertBranchBefore(\n  branch: BranchScope,\n  parentNode: ParentNode,\n  nextSibling: Node | null,\n) {\n  insertChildNodes(\n    parentNode,\n    nextSibling,\n    branch[AccessorProp.StartNode],\n    branch[AccessorProp.EndNode],\n  );\n}\n\nexport function tempDetachBranch(branch: BranchScope) {\n  // This is moves the branch contents to a document fragment (which will be\n  // inserted again when we're ready to show the branch).\n  // There is also a hack that sets `namespaceURI` on the detached fragment so\n  // that any new branches created with this parent node get the correct namespace.\n  const fragment = new DocumentFragment() as any;\n  fragment.namespaceURI = (\n    branch[AccessorProp.StartNode].parentNode as Element\n  ).namespaceURI;\n  insertChildNodes(\n    fragment,\n    null,\n    branch[AccessorProp.StartNode],\n    branch[AccessorProp.EndNode],\n  );\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/dom/signals.ts",
    "content": "import { _el_read_error, _hoist_read_error } from \"../common/errors\";\nimport { decodeAccessor } from \"../common/helpers\";\nimport { toArray } from \"../common/opt\";\nimport {\n  type Accessor,\n  AccessorPrefix,\n  AccessorProp,\n  type BranchScope,\n  type EncodedAccessor,\n  type Scope,\n} from \"../common/types\";\nimport { $signal } from \"./abort-signal\";\nimport { queueEffect, queueRender, rendering } from \"./queue\";\nimport { _resume } from \"./resume\";\nimport { schedule } from \"./schedule\";\n\nexport type SignalFn = (scope: Scope) => void;\nexport type Signal<T> = ((scope: Scope, value: T) => void) & {\n  ___subscribe?(scope: Scope): void;\n};\n\nexport function _let<T>(id: EncodedAccessor, fn?: SignalFn) {\n  const valueAccessor = MARKO_DEBUG\n    ? (id as string).slice(0, (id as string).lastIndexOf(\"/\"))\n    : decodeAccessor(id as number);\n  const valueChangeAccessor = AccessorPrefix.TagVariableChange + valueAccessor;\n\n  if (MARKO_DEBUG) {\n    id = +(id as string).slice((id as string).lastIndexOf(\"/\") + 1);\n  }\n\n  return (scope: Scope, value: T, valueChange?: (v: T) => void) => {\n    if (rendering) {\n      if (\n        ((scope[valueChangeAccessor] = valueChange) &&\n          scope[valueAccessor] !== value) ||\n        scope[AccessorProp.Creating]\n      ) {\n        scope[valueAccessor] = value;\n        fn?.(scope);\n      }\n    } else if (scope[valueChangeAccessor]) {\n      scope[valueChangeAccessor](value);\n    } else if (scope[valueAccessor] !== (scope[valueAccessor] = value) && fn) {\n      schedule();\n      queueRender(scope, fn, id as number);\n    }\n    return value;\n  };\n}\n\nexport function _const<T>(\n  valueAccessor: EncodedAccessor,\n  fn?: SignalFn,\n): Signal<T> {\n  if (!MARKO_DEBUG) valueAccessor = decodeAccessor(valueAccessor as number);\n  return (scope, value) => {\n    if (!(valueAccessor in scope) || scope[valueAccessor] !== value) {\n      scope[valueAccessor] = value;\n      fn?.(scope);\n    }\n  };\n}\n\nexport function _or(\n  id: number,\n  fn: SignalFn,\n  defaultPending: number = 1,\n  scopeIdAccessor: EncodedAccessor = AccessorProp.Id,\n): Signal<never> {\n  if (!MARKO_DEBUG && scopeIdAccessor !== AccessorProp.Id) {\n    scopeIdAccessor = decodeAccessor(scopeIdAccessor as number);\n  }\n\n  return (scope) => {\n    if (scope[AccessorProp.Creating]) {\n      if (id in scope) {\n        if (!--scope[id]) {\n          fn(scope);\n        }\n      } else {\n        scope[id] = defaultPending;\n      }\n    } else {\n      queueRender(scope, fn, id, 0, scope[scopeIdAccessor]);\n    }\n  };\n}\n\nexport function _for_closure(\n  ownerLoopNodeAccessor: EncodedAccessor,\n  fn: SignalFn,\n): SignalFn {\n  if (!MARKO_DEBUG)\n    ownerLoopNodeAccessor = decodeAccessor(ownerLoopNodeAccessor as number);\n  const scopeAccessor = AccessorPrefix.BranchScopes + ownerLoopNodeAccessor;\n  const ownerSignal = (ownerScope: Scope) => {\n    const scopes = toArray(ownerScope[scopeAccessor] as BranchScope);\n    if (scopes.length) {\n      queueRender(\n        ownerScope,\n        () => {\n          for (const scope of scopes as BranchScope[]) {\n            if (\n              !scope[AccessorProp.Creating] &&\n              !scope[AccessorProp.Destroyed]\n            ) {\n              fn(scope);\n            }\n          }\n        },\n        -1,\n        0,\n        scopes[0][AccessorProp.Id],\n      );\n    }\n  };\n  ownerSignal._ = fn;\n  return ownerSignal;\n}\n\nexport function _if_closure(\n  ownerConditionalNodeAccessor: EncodedAccessor,\n  branch: number,\n  fn: SignalFn,\n): SignalFn {\n  if (!MARKO_DEBUG)\n    ownerConditionalNodeAccessor = decodeAccessor(\n      ownerConditionalNodeAccessor as number,\n    );\n  const scopeAccessor =\n    AccessorPrefix.BranchScopes + ownerConditionalNodeAccessor;\n  const branchAccessor =\n    AccessorPrefix.ConditionalRenderer + ownerConditionalNodeAccessor;\n  const ownerSignal = (scope: Scope) => {\n    const ifScope = scope[scopeAccessor] as Scope | undefined;\n    if (\n      ifScope &&\n      !ifScope[AccessorProp.Creating] &&\n      (scope[branchAccessor] || 0) === branch\n    ) {\n      queueRender(ifScope, fn, -1);\n    }\n  };\n  ownerSignal._ = fn;\n  return ownerSignal;\n}\n\nexport function subscribeToScopeSet(\n  ownerScope: Scope,\n  accessor: Accessor,\n  scope: Scope,\n) {\n  const subscribers = (ownerScope[accessor] ||= new Set()) as Set<Scope>;\n  if (!subscribers.has(scope)) {\n    subscribers.add(scope);\n    $signal(scope, -1).addEventListener(\"abort\", () =>\n      ownerScope[accessor].delete(scope),\n    );\n  }\n}\n\nexport function _closure(...closureSignals: ReturnType<typeof _closure_get>[]) {\n  const [{ ___scopeInstancesAccessor, ___signalIndexAccessor }] =\n    closureSignals;\n  for (let i = closureSignals.length; i--; ) {\n    closureSignals[i].___index = i;\n  }\n\n  return (scope: Scope) => {\n    if (scope[___scopeInstancesAccessor]) {\n      for (const childScope of scope[___scopeInstancesAccessor] as Set<Scope>) {\n        if (!childScope[AccessorProp.Creating]) {\n          queueRender(\n            childScope,\n            closureSignals[childScope[___signalIndexAccessor]],\n            -1,\n          );\n        }\n      }\n    }\n  };\n}\n\nexport function _closure_get(\n  valueAccessor: EncodedAccessor,\n  fn: SignalFn,\n  getOwnerScope?: (scope: Scope) => Scope,\n  resumeId?: string,\n) {\n  if (!MARKO_DEBUG) valueAccessor = decodeAccessor(valueAccessor as number);\n  const closureSignal = ((scope) => {\n    scope[closureSignal.___signalIndexAccessor] = closureSignal.___index;\n    fn(scope);\n    subscribeToScopeSet(\n      getOwnerScope ? getOwnerScope(scope) : scope[AccessorProp.Owner]!,\n      closureSignal.___scopeInstancesAccessor,\n      scope,\n    );\n  }) as SignalFn & {\n    ___scopeInstancesAccessor: string;\n    ___signalIndexAccessor: string;\n    ___index: number;\n  };\n  closureSignal.___scopeInstancesAccessor =\n    AccessorPrefix.ClosureScopes + valueAccessor;\n  closureSignal.___signalIndexAccessor =\n    AccessorPrefix.ClosureSignalIndex + valueAccessor;\n\n  resumeId && _resume(resumeId, closureSignal);\n\n  return closureSignal;\n}\n\nexport function _child_setup(setup: Signal<never> & { _: Signal<Scope> }) {\n  setup._ = (scope, owner) => {\n    scope[AccessorProp.Owner] = owner;\n    queueRender(scope, setup, -1);\n  };\n  return setup;\n}\n\nexport function _var(\n  scope: Scope,\n  childAccessor: EncodedAccessor,\n  signal: Signal<unknown>,\n) {\n  scope[MARKO_DEBUG ? childAccessor : decodeAccessor(childAccessor as number)][\n    AccessorProp.TagVariable\n  ] = (value: unknown) => signal(scope, value);\n}\n\nexport const _return = (scope: Scope, value: unknown) =>\n  scope[AccessorProp.TagVariable]?.(value);\n\nexport function _return_change(\n  scope: Scope,\n  changeHandler?: ((value: unknown) => void) | null | false,\n) {\n  if (changeHandler) {\n    scope[AccessorProp.TagVariableChange] = changeHandler;\n  }\n}\nexport const _var_change = MARKO_DEBUG\n  ? (scope: Scope, value: unknown, name: string = \"This\") => {\n      if (typeof scope[AccessorProp.TagVariableChange] !== \"function\") {\n        throw new TypeError(`${name} is a readonly tag variable.`);\n      }\n\n      scope[AccessorProp.TagVariableChange](value);\n    }\n  : (scope: Scope, value: unknown) =>\n      scope[AccessorProp.TagVariableChange]?.(value);\n\nconst tagIdsByGlobal = new WeakMap<Scope[AccessorProp.Global], number>();\nexport function _id({ [AccessorProp.Global]: $global }: Scope) {\n  const id = tagIdsByGlobal.get($global) || 0;\n  tagIdsByGlobal.set($global, id + 1);\n  return \"c\" + $global.runtimeId + $global.renderId + id.toString(36);\n}\n\nexport function _script(id: string, fn: (scope: Scope) => void) {\n  _resume(id, fn);\n  return (scope: Scope) => {\n    queueEffect(scope, fn);\n  };\n}\n\nexport function _el_read<T>(value: T): T {\n  if (rendering) {\n    _el_read_error();\n  }\n  return value;\n}\n\ntype Hoistable<T> = () => T;\ntype Hoisted<T> = Hoistable<T> & Iterable<T>;\n\nfunction* traverse<T>(\n  scope: Scope,\n  path: Accessor[],\n  i: number = path.length - 1,\n): IterableIterator<T> {\n  if (MARKO_DEBUG && rendering) {\n    _hoist_read_error();\n  }\n  if (scope) {\n    if (Symbol.iterator in scope) {\n      for (const childScope of scope.values() as Iterable<Scope>) {\n        yield* traverse(childScope, path, i);\n      }\n    } else {\n      const item = scope[path[i]];\n      if (i) {\n        yield* traverse(item, path, i - 1);\n      } else {\n        yield typeof item === \"function\" ? item() : item;\n      }\n    }\n  }\n}\n\nexport function _hoist<T>(...path: Accessor[]) {\n  if (!MARKO_DEBUG)\n    path = path.map((p) => (typeof p === \"string\" ? p : decodeAccessor(p)));\n  return (scope: Scope) => {\n    const fn: Hoisted<T> = () => traverse(scope, path).next().value;\n    fn[Symbol.iterator] = () => traverse(scope, path);\n    return fn;\n  };\n}\n\nexport function _hoist_resume<T>(id: string, ...path: Accessor[]) {\n  return _resume(id, _hoist<T>(...path));\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/dom/template.ts",
    "content": "import { DEFAULT_RENDER_ID, DEFAULT_RUNTIME_ID } from \"../common/meta\";\nimport {\n  AccessorProp,\n  type BranchScope,\n  type MountedTemplate,\n  type Scope,\n  type Template,\n  type TemplateInput,\n} from \"../common/types\";\nimport { insertChildNodes } from \"./dom\";\nimport { prepareEffects, runEffects } from \"./queue\";\nimport { _content, createBranch, type Renderer } from \"./renderer\";\nimport { _resume } from \"./resume\";\nimport { removeAndDestroyBranch } from \"./scope\";\nimport { _var_change, type Signal } from \"./signals\";\n\nexport const _template = (\n  id: string,\n  template: string | 0,\n  walks?: string | 0,\n  setup?: ((scope: Scope) => void) | 0,\n  inputSignal?: Signal<unknown>,\n): Template => {\n  const renderer = _content(\n    id,\n    template,\n    walks,\n    setup,\n    inputSignal,\n  )() as unknown as Template;\n  renderer.mount = mount;\n  (renderer as any)._ = renderer; // This is added exclusively for the compat layer and also to differentiate a Template from a Renderer\n  if (MARKO_DEBUG) {\n    renderer.render = () => {\n      throw new Error(\n        `render() is not implemented for the DOM compilation of a Marko template`,\n      );\n    };\n  }\n\n  return _resume(id, renderer);\n};\n\nfunction mount(\n  this: Template & Renderer,\n  input: TemplateInput = {},\n  reference: Node,\n  position?: InsertPosition,\n): MountedTemplate {\n  let branch!: BranchScope;\n  let parentNode = reference as ParentNode;\n  let nextSibling: Node | null = null;\n  let { $global } = input;\n  if ($global) {\n    ({ $global, ...input } = input);\n    $global = {\n      runtimeId: DEFAULT_RUNTIME_ID,\n      renderId: DEFAULT_RENDER_ID,\n      ...$global,\n    };\n\n    if (MARKO_DEBUG) {\n      if (!String($global.runtimeId).match(/^[_$a-z][_$a-z0-9]*$/i)) {\n        throw new Error(\n          `Invalid runtimeId: \"${$global.runtimeId}\". The runtimeId must be a valid JavaScript identifier.`,\n        );\n      }\n\n      if (!String($global.renderId).match(/^[_$a-z][_$a-z0-9]*$/i)) {\n        throw new Error(\n          `Invalid renderId: \"${$global.renderId}\". The renderId must be a valid JavaScript identifier.`,\n        );\n      }\n    }\n  } else {\n    $global = {\n      runtimeId: DEFAULT_RUNTIME_ID,\n      renderId: DEFAULT_RENDER_ID,\n    };\n  }\n  /*\n    <!-- beforebegin -->\n    <reference>\n      <!-- afterbegin -->\n      foo\n      <!-- beforeend --> // default\n    </reference>\n    <!-- afterend -->\n  */\n  switch (position) {\n    case \"beforebegin\":\n      parentNode = reference.parentNode!;\n      nextSibling = reference;\n      break;\n    case \"afterbegin\":\n      nextSibling = reference.firstChild;\n      break;\n    case \"afterend\":\n      parentNode = reference.parentNode!;\n      nextSibling = reference.nextSibling;\n      break;\n  }\n\n  let curValue: unknown;\n  const args = this.___params;\n  const effects = prepareEffects(() => {\n    branch = createBranch(\n      $global as any as Scope[AccessorProp.Global],\n      this,\n      undefined,\n      parentNode,\n    );\n\n    branch[AccessorProp.TagVariable] = (newValue: unknown) => {\n      curValue = newValue;\n    };\n    this.___setup?.(branch);\n    args?.(branch, input);\n  });\n\n  insertChildNodes(\n    parentNode,\n    nextSibling,\n    branch[AccessorProp.StartNode],\n    branch[AccessorProp.EndNode],\n  );\n  runEffects(effects);\n\n  return {\n    get value() {\n      return curValue;\n    },\n    set value(newValue) {\n      _var_change(branch, newValue);\n    },\n    update(newInput: unknown) {\n      if (args) {\n        runEffects(\n          prepareEffects(() => {\n            args(branch, newInput);\n          }),\n        );\n      }\n    },\n    destroy() {\n      removeAndDestroyBranch(branch);\n    },\n  };\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/dom/walker.ts",
    "content": "import { decodeAccessor } from \"../common/helpers\";\nimport {\n  AccessorProp,\n  type BranchScope,\n  NodeType,\n  type Scope,\n  WalkCode,\n  WalkRangeSize,\n} from \"../common/types\";\nimport { createScope, skipScope } from \"./scope\";\n\nexport const walker = /* @__PURE__ */ document.createTreeWalker(document);\n\n// Laws of the walks string:\n//  - Always prefer Get to Before to After, Inside, or Replace\n//    - Get must always be used to get a static node from cloneable template if possible\n//    - Replace must only be used to insert between two static text nodes\n//    - Inside must only be used to insert into elements with no static children\n//    - After must only be used to insert a last child or immediately following another action (if it makes the walks string smaller)\n//  - Adjacent actions must always be in source order (Before* Get* Inside* After* || Before* Replace)\n//    - When an element is both walked into and needs to insert After, you must walk in first (Next) and then walk Out before After\n//  - Unless the inserted node is Text, Inside, After, & Replace must be followed by Out/Over to skip over unknown children\n//  - Out must always be followed by After or Over\n//    - Before must be done before walking into the node\n//    - Next would walk back in the node we just walked Out of\n//  - A component must assume the walker is on its first node, and include instructions for walking to its assumed nextSibling\n\nexport function walk(startNode: Node, walkCodes: string, branch: BranchScope) {\n  walker.currentNode = startNode;\n  walkInternal(0, walkCodes, branch);\n}\n\nfunction walkInternal(\n  currentWalkIndex: number,\n  walkCodes: string,\n  scope: Scope,\n) {\n  let value: number;\n  let currentMultiplier: number;\n  let storedMultiplier = 0;\n  let currentScopeIndex = 0;\n\n  for (; currentWalkIndex < walkCodes.length; ) {\n    value = walkCodes.charCodeAt(currentWalkIndex++);\n    currentMultiplier = storedMultiplier;\n    storedMultiplier = 0;\n\n    if (value === WalkCode.Get) {\n      const node = walker.currentNode;\n      scope[\n        MARKO_DEBUG\n          ? getDebugKey(currentScopeIndex++, node)\n          : decodeAccessor(currentScopeIndex++)\n      ] = node;\n    } else if (\n      value === WalkCode.Replace ||\n      value === WalkCode.DynamicTagWithVar\n    ) {\n      (walker.currentNode as ChildNode).replaceWith(\n        (walker.currentNode = scope[\n          MARKO_DEBUG\n            ? getDebugKey(currentScopeIndex++, \"#text\")\n            : decodeAccessor(currentScopeIndex++)\n        ] =\n          new Text()),\n      );\n      if (value === WalkCode.DynamicTagWithVar) {\n        scope[\n          MARKO_DEBUG\n            ? getDebugKey(currentScopeIndex++, \"#scopeOffset\")\n            : decodeAccessor(currentScopeIndex++)\n        ] = skipScope();\n      }\n    } else if (value === WalkCode.EndChild) {\n      return currentWalkIndex;\n    } else if (\n      value === WalkCode.BeginChild ||\n      value === WalkCode.BeginChildWithVar\n    ) {\n      currentWalkIndex = walkInternal(\n        currentWalkIndex,\n        walkCodes,\n        (scope[\n          MARKO_DEBUG\n            ? getDebugKey(currentScopeIndex++, \"#childScope\")\n            : decodeAccessor(currentScopeIndex++)\n        ] = createScope(\n          scope[AccessorProp.Global],\n          scope[AccessorProp.ClosestBranch],\n        )),\n      )!;\n      if (value === WalkCode.BeginChildWithVar) {\n        scope[\n          MARKO_DEBUG\n            ? getDebugKey(currentScopeIndex++, \"#scopeOffset\")\n            : decodeAccessor(currentScopeIndex++)\n        ] = skipScope();\n      }\n    } else if (value < WalkCode.NextEnd + 1) {\n      value = WalkRangeSize.Next * currentMultiplier + value - WalkCode.Next;\n      while (value--) {\n        walker.nextNode();\n      }\n    } else if (value < WalkCode.OverEnd + 1) {\n      value = WalkRangeSize.Over * currentMultiplier + value - WalkCode.Over;\n      while (value--) {\n        walker.nextSibling();\n      }\n    } else if (value < WalkCode.OutEnd + 1) {\n      value = WalkRangeSize.Out * currentMultiplier + value - WalkCode.Out;\n      while (value--) {\n        walker.parentNode();\n      }\n      walker.nextSibling();\n    } else {\n      if (\n        MARKO_DEBUG &&\n        (value < WalkCode.Multiplier || value > WalkCode.MultiplierEnd)\n      ) {\n        throw new Error(`Unknown walk code: ${value}`);\n      }\n      storedMultiplier =\n        currentMultiplier * WalkRangeSize.Multiplier +\n        value -\n        WalkCode.Multiplier;\n    }\n  }\n}\n\nexport function getDebugKey(index: number, node: Node | string) {\n  if (typeof node === \"string\") {\n    return `${node}/${index}`;\n  } else if (node.nodeType === NodeType.Text) {\n    return `#text/${index}`;\n  } else if (node.nodeType === NodeType.Comment) {\n    return `#comment/${index}`;\n  } else if (node.nodeType === NodeType.Element) {\n    return `#${(node as Element).tagName.toLowerCase()}/${index}`;\n  }\n\n  return index;\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/dom.ts",
    "content": "export { attrTag, attrTags } from \"./common/attr-tag\";\nexport { _assert_hoist, _assert_init } from \"./common/errors\";\nexport { forIn, forOf, forTo, forUntil } from \"./common/for\";\nexport { _call } from \"./common/helpers\";\nexport { $signal, $signalReset } from \"./dom/abort-signal\";\nexport { compat } from \"./dom/compat\";\nexport {\n  _await_content,\n  _await_promise,\n  _dynamic_tag,\n  _for_in,\n  _for_of,\n  _for_to,\n  _for_until,\n  _if,\n  _resume_dynamic_tag,\n  _try,\n} from \"./dom/control-flow\";\nexport {\n  _attr_details_or_dialog_open as _attr_details_open,\n  _attr_details_or_dialog_open_default as _attr_details_open_default,\n  _attr_details_or_dialog_open_script as _attr_details_open_script,\n  _attr_details_or_dialog_open as _attr_dialog_open,\n  _attr_details_or_dialog_open_default as _attr_dialog_open_default,\n  _attr_details_or_dialog_open_script as _attr_dialog_open_script,\n  _attr_input_checked,\n  _attr_input_checked_default,\n  _attr_input_checked_script,\n  _attr_input_checkedValue,\n  _attr_input_checkedValue_default,\n  _attr_input_checkedValue_script,\n  _attr_input_value,\n  _attr_input_value_default,\n  _attr_input_value_script,\n  _attr_select_value,\n  _attr_select_value_default,\n  _attr_select_value_script,\n  _attr_input_value as _attr_textarea_value,\n  _attr_input_value_default as _attr_textarea_value_default,\n  _attr_input_value_script as _attr_textarea_value_script,\n} from \"./dom/controllable\";\nexport {\n  _attr,\n  _attr_class,\n  _attr_class_item,\n  _attr_class_items,\n  _attr_content,\n  _attr_nonce,\n  _attr_style,\n  _attr_style_item,\n  _attr_style_items,\n  _attrs,\n  _attrs_content,\n  _attrs_partial,\n  _attrs_partial_content,\n  _attrs_script,\n  _html,\n  _lifecycle,\n  _text,\n  _text_content,\n  _to_text,\n} from \"./dom/dom\";\nexport { _on } from \"./dom/event\";\nexport { _enable_catch as _enable_catch, run } from \"./dom/queue\";\nexport { _content, _content_closures, _content_resume } from \"./dom/renderer\";\nexport { _el, _resume, _var_resume, init, initEmbedded } from \"./dom/resume\";\nexport {\n  _child_setup,\n  _closure,\n  _closure_get,\n  _const,\n  _el_read,\n  _for_closure,\n  _hoist,\n  _hoist_resume,\n  _id,\n  _if_closure,\n  _let,\n  _or,\n  _return,\n  _return_change,\n  _script,\n  _var,\n  _var_change,\n} from \"./dom/signals\";\nexport { _template } from \"./dom/template\";\n"
  },
  {
    "path": "packages/runtime-tags/src/html/attrs.ts",
    "content": "import { assertExclusiveAttrs } from \"../common/errors\";\nimport {\n  classValue,\n  getEventHandlerName,\n  htmlAttrNameReg,\n  isEventHandler,\n  isVoid,\n  styleValue,\n} from \"../common/helpers\";\nimport { type Accessor, AccessorPrefix, ControlledType } from \"../common/types\";\nimport { _escape_text } from \"./content\";\nimport {\n  _attr_content,\n  _html,\n  _scope,\n  getChunk,\n  getContext,\n  withContext,\n} from \"./writer\";\n\nexport function _attr_class(value: unknown) {\n  return stringAttr(\"class\", classValue(value));\n}\n\nexport function _attr_style(value: unknown) {\n  return stringAttr(\"style\", styleValue(value));\n}\n\nexport function _attr_option_value(value: unknown) {\n  const valueAttr = _attr(\"value\", value);\n  return normalizedValueMatches(getContext(kSelectedValue), value)\n    ? valueAttr + \" selected\"\n    : valueAttr;\n}\n\nconst kSelectedValue = Symbol(\"selectedValue\");\nexport function _attr_select_value(\n  scopeId: number,\n  nodeAccessor: Accessor,\n  value: unknown,\n  valueChange: unknown,\n  content?: () => void,\n) {\n  if (valueChange) {\n    writeControlledScope(\n      ControlledType.SelectValue,\n      scopeId,\n      nodeAccessor,\n      undefined,\n      valueChange,\n    );\n  }\n\n  if (content) {\n    withContext(kSelectedValue, value, content);\n  }\n}\n\nexport function _attr_textarea_value(\n  scopeId: number,\n  nodeAccessor: Accessor,\n  value: unknown,\n  valueChange: unknown,\n) {\n  if (valueChange) {\n    writeControlledScope(\n      ControlledType.InputValue,\n      scopeId,\n      nodeAccessor,\n      undefined,\n      valueChange,\n    );\n  }\n\n  return _escape_text(value);\n}\n\nexport function _attr_input_value(\n  scopeId: number,\n  nodeAccessor: Accessor,\n  value: unknown,\n  valueChange: unknown,\n) {\n  if (valueChange) {\n    writeControlledScope(\n      ControlledType.InputValue,\n      scopeId,\n      nodeAccessor,\n      undefined,\n      valueChange,\n    );\n  }\n  return _attr(\"value\", value);\n}\n\nexport function _attr_input_checked(\n  scopeId: number,\n  nodeAccessor: Accessor,\n  checked: unknown,\n  checkedChange: unknown,\n) {\n  if (checkedChange) {\n    writeControlledScope(\n      ControlledType.InputChecked,\n      scopeId,\n      nodeAccessor,\n      undefined,\n      checkedChange,\n    );\n  }\n  return normalizeBoolAttrValue(checked) ? \" checked\" : \"\";\n}\n\nexport function _attr_input_checkedValue(\n  scopeId: number,\n  nodeAccessor: Accessor,\n  checkedValue: unknown,\n  checkedValueChange: unknown,\n  value: unknown,\n) {\n  const valueAttr = _attr(\"value\", value);\n  if (checkedValueChange) {\n    writeControlledScope(\n      ControlledType.InputCheckedValue,\n      scopeId,\n      nodeAccessor,\n      getCheckedValueRef(checkedValue),\n      checkedValueChange,\n    );\n  }\n\n  return normalizedValueMatches(checkedValue, value)\n    ? valueAttr + \" checked\"\n    : valueAttr;\n}\n\nconst checkedValuesRefs = new WeakMap<unknown[], []>();\nfunction getCheckedValueRef(checkedValue: unknown) {\n  if (Array.isArray(checkedValue)) {\n    let ref = checkedValuesRefs.get(checkedValue);\n\n    if (!ref) {\n      ref = [];\n      checkedValuesRefs.set(checkedValue, ref);\n    }\n\n    return ref;\n  }\n}\n\nexport function _attr_details_or_dialog_open(\n  scopeId: number,\n  nodeAccessor: Accessor,\n  open: unknown,\n  openChange: unknown,\n) {\n  const normalizedOpen = normalizeBoolAttrValue(open);\n  if (openChange) {\n    writeControlledScope(\n      ControlledType.DetailsOrDialogOpen,\n      scopeId,\n      nodeAccessor,\n      normalizedOpen,\n      openChange,\n    );\n  }\n\n  return normalizedOpen ? \" open\" : \"\";\n}\n\nexport function _attr_nonce() {\n  return getChunk()!.boundary.state.nonceAttr;\n}\n\nexport function _attr(name: string, value: unknown) {\n  return isVoid(value) ? \"\" : nonVoidAttr(name, value);\n}\n\nexport function _attrs(\n  data: Record<string, unknown>,\n  nodeAccessor: Accessor,\n  scopeId: number,\n  tagName: string,\n) {\n  let result = \"\";\n  let skip = /[\\s/>\"'=]/;\n  let events: Record<string, unknown> | undefined;\n  switch (tagName) {\n    case \"input\":\n      if (MARKO_DEBUG) {\n        assertExclusiveAttrs(data);\n      }\n\n      if (data.checkedChange) {\n        result += _attr_input_checked(\n          scopeId,\n          nodeAccessor,\n          data.checked,\n          data.checkedChange,\n        );\n      } else if (data.checkedValue || data.checkedValueChange) {\n        result += _attr_input_checkedValue(\n          scopeId,\n          nodeAccessor,\n          data.checkedValue,\n          data.checkedValueChange,\n          data.value,\n        );\n      } else if (data.valueChange) {\n        result += _attr_input_value(\n          scopeId,\n          nodeAccessor,\n          data.value,\n          data.valueChange,\n        );\n      } else {\n        break;\n      }\n      skip = /^(?:value|checked(?:Value)?)(?:Change)?$|[\\s/>\"'=]/;\n      break;\n    case \"select\":\n    case \"textarea\":\n      if (data.value || data.valueChange) {\n        skip = /^value(?:Change)?$|[\\s/>\"'=]/;\n      }\n      break;\n    case \"option\":\n      if (data.value) {\n        result += _attr_option_value(data.value);\n        skip = /^value$|[\\s/>\"'=]/;\n      }\n      break;\n    case \"details\":\n    case \"dialog\":\n      if (data.openChange) {\n        result += _attr_details_or_dialog_open(\n          scopeId,\n          nodeAccessor,\n          data.open,\n          data.openChange,\n        );\n        skip = /^open(?:Change)?$|[\\s/>\"'=]/;\n      }\n      break;\n  }\n\n  for (const name in data) {\n    const value = data[name];\n\n    switch (name) {\n      case \"class\":\n        result += _attr_class(value);\n        break;\n      case \"style\":\n        result += _attr_style(value);\n        break;\n      default:\n        if (\n          name &&\n          !(\n            isVoid(value) ||\n            skip.test(name) ||\n            (name === \"content\" && tagName !== \"meta\")\n          )\n        ) {\n          if (MARKO_DEBUG) {\n            if (htmlAttrNameReg.test(name)) {\n              throw new Error(\n                `Invalid attribute name: ${JSON.stringify(name)}`,\n              );\n            }\n          }\n\n          if (isEventHandler(name)) {\n            if (!events) {\n              events = {};\n              _scope(scopeId, {\n                [AccessorPrefix.EventAttributes + nodeAccessor]: events,\n              });\n            }\n\n            events[getEventHandlerName(name)] = value;\n          } else {\n            result += nonVoidAttr(name, value);\n          }\n        }\n        break;\n    }\n  }\n  return result;\n}\n\nexport function _attrs_content(\n  data: Record<string, unknown>,\n  nodeAccessor: Accessor,\n  scopeId: number,\n  tagName: string,\n  serializeReason?: 1 | 0,\n) {\n  _html(`${_attrs(data, nodeAccessor, scopeId, tagName)}>`);\n  _attr_content(nodeAccessor, scopeId, data?.content, serializeReason);\n}\n\nexport function _attrs_partial(\n  data: Record<string, unknown>,\n  skip: Record<string, 1>,\n  nodeAccessor: Accessor,\n  scopeId: number,\n  tagName: string,\n) {\n  const partial: Partial<typeof data> = {};\n  for (const name in data) {\n    const key = isEventHandler(name) ? `on-${getEventHandlerName(name)}` : name;\n    if (!skip[key]) partial[key] = data[name];\n  }\n\n  return _attrs(partial, nodeAccessor, scopeId, tagName);\n}\n\nexport function _attrs_partial_content(\n  data: Record<string, unknown>,\n  skip: Record<string, 1>,\n  nodeAccessor: Accessor,\n  scopeId: number,\n  tagName: string,\n  serializeReason?: 1 | 0,\n) {\n  _html(`${_attrs_partial(data, skip, nodeAccessor, scopeId, tagName)}>`);\n  _attr_content(nodeAccessor, scopeId, data?.content, serializeReason);\n}\n\nfunction writeControlledScope(\n  type: ControlledType,\n  scopeId: number,\n  nodeAccessor: Accessor,\n  value: unknown,\n  valueChange: unknown,\n) {\n  _scope(scopeId, {\n    [AccessorPrefix.ControlledType + nodeAccessor]: type,\n    [AccessorPrefix.ControlledValue + nodeAccessor]: value,\n    [AccessorPrefix.ControlledHandler + nodeAccessor]: valueChange,\n  });\n}\n\nfunction stringAttr(name: string, value: string) {\n  return value && \" \" + name + attrAssignment(value);\n}\n\nfunction nonVoidAttr(name: string, value: unknown) {\n  switch (typeof value) {\n    case \"string\":\n      return \" \" + name + attrAssignment(value);\n    case \"boolean\":\n      return \" \" + name;\n    case \"number\":\n      return \" \" + name + \"=\" + value;\n    case \"object\":\n      if (value instanceof RegExp) {\n        return \" \" + name + attrAssignment(value.source);\n      }\n      break;\n  }\n\n  return \" \" + name + attrAssignment(value + \"\");\n}\n\nconst singleQuoteAttrReplacements = /'|&(?=#?\\w+;)/g;\nconst doubleQuoteAttrReplacements = /\"|&(?=#?\\w+;)/g;\nconst needsQuotedAttr = /[\"'>\\s]|&#?\\w+;|\\/$/g;\nexport function attrAssignment(value: string) {\n  return value\n    ? needsQuotedAttr.test(value)\n      ? value[needsQuotedAttr.lastIndex - 1] ===\n        ((needsQuotedAttr.lastIndex = 0), '\"')\n        ? \"='\" + escapeSingleQuotedAttrValue(value) + \"'\"\n        : '=\"' + escapeDoubleQuotedAttrValue(value) + '\"'\n      : \"=\" + value\n    : \"\";\n}\n\nexport function escapeSingleQuotedAttrValue(value: string) {\n  return singleQuoteAttrReplacements.test(value)\n    ? value.replace(\n        singleQuoteAttrReplacements,\n        replaceUnsafeSingleQuoteAttrChar,\n      )\n    : value;\n}\n\nfunction replaceUnsafeSingleQuoteAttrChar(match: string) {\n  return match === \"'\" ? \"&#39;\" : \"&amp;\";\n}\n\nexport function escapeDoubleQuotedAttrValue(value: string) {\n  return doubleQuoteAttrReplacements.test(value)\n    ? value.replace(\n        doubleQuoteAttrReplacements,\n        replaceUnsafeDoubleQuoteAttrChar,\n      )\n    : value;\n}\n\nfunction replaceUnsafeDoubleQuoteAttrChar(match: string) {\n  return match === '\"' ? \"&#34;\" : \"&amp;\";\n}\n\nfunction normalizedValueMatches(a: unknown, b: unknown) {\n  const value = normalizeStrAttrValue(b);\n  if (Array.isArray(a)) {\n    for (const item of a) {\n      if (normalizeStrAttrValue(item) === value) {\n        return true;\n      }\n    }\n  } else if (normalizeStrAttrValue(a) === value) {\n    return true;\n  }\n\n  return false;\n}\n\nfunction normalizeStrAttrValue(value: unknown) {\n  return (value && value !== true) || value === 0 ? value + \"\" : \"\";\n}\n\nfunction normalizeBoolAttrValue(value: unknown) {\n  if (value != null && value !== false) {\n    return true;\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/html/compat.ts",
    "content": "import {\n  RENDER_BODY_ID,\n  RENDERER_REGISTER_ID,\n  SET_SCOPE_REGISTER_ID,\n} from \"../common/compat-meta\";\nimport { DEFAULT_RENDER_ID, DEFAULT_RUNTIME_ID } from \"../common/meta\";\nimport type { Scope } from \"../common/types\";\nimport { patchDynamicTag } from \"./dynamic-tag\";\nimport { getRegistered, register } from \"./serializer\";\nimport type { ServerRenderer } from \"./template\";\nimport {\n  _await,\n  _html,\n  _peek_scope_id,\n  _scope,\n  _scope_id,\n  _script,\n  _set_serialize_reason,\n  $global,\n  Boundary,\n  Chunk,\n  FlushStatus,\n  getChunk,\n  getScopeId,\n  isInResumedBranch,\n  State,\n  writeScopeToState,\n  writeScript,\n} from \"./writer\";\n\nconst K_TAGS_API_STATE = Symbol();\nconst COMPAT_REGISTRY = new WeakMap<\n  WeakKey,\n  [registryId: string, scopeId: unknown]\n>();\n\nexport const compat = {\n  $global,\n  fork: _await,\n  write: _html,\n  writeScript,\n  nextScopeId: _scope_id,\n  peekNextScopeId: _peek_scope_id,\n  isInResumedBranch,\n  ensureState($global: any) {\n    let state: State | undefined = ($global[K_TAGS_API_STATE] ||=\n      getChunk()?.boundary.state);\n    if (!state) {\n      $global.runtimeId ||= DEFAULT_RUNTIME_ID;\n      $global.renderId ||=\n        $global.componentIdPrefix ||\n        $global.widgetIdPrefix ||\n        DEFAULT_RENDER_ID;\n      $global[K_TAGS_API_STATE] = state = new State($global);\n    }\n\n    return state;\n  },\n  isTagsAPI(fn: any) {\n    return !!fn.___id;\n  },\n  onFlush(fn: (chunk: Chunk) => void) {\n    const { flushHTML } = Chunk.prototype;\n    Chunk.prototype.flushHTML = function () {\n      fn(this);\n      return flushHTML.call(this);\n    };\n  },\n  patchDynamicTag,\n  writeSetScopeForComponent(branchId: number, m5c: string, m5i: unknown) {\n    _scope(branchId, { m5c, m5i });\n    _script(branchId, SET_SCOPE_REGISTER_ID);\n  },\n  toJSON(state: State) {\n    return function toJSON(this: WeakKey) {\n      let compatRegistered = COMPAT_REGISTRY.get(this);\n      if (!compatRegistered) {\n        const registered = getRegistered(this);\n        if (registered) {\n          const scopeId = registered.scope\n            ? getScopeId(registered.scope as Scope)\n            : undefined;\n          if (scopeId !== undefined) {\n            writeScopeToState(state, scopeId, {});\n          }\n          COMPAT_REGISTRY.set(\n            this,\n            (compatRegistered = [registered.id, scopeId]),\n          );\n        }\n      }\n\n      return compatRegistered;\n    };\n  },\n  flushScript($global: any) {\n    const boundary = new Boundary(this.ensureState($global));\n    if (boundary.flush() === FlushStatus.continue) {\n      throw new Error(\n        \"Cannot serialize promise across tags/class compat layer.\",\n      );\n    }\n\n    return new Chunk(boundary, null, null).flushScript().scripts;\n  },\n  render(\n    renderer: ServerRenderer,\n    willRerender: boolean,\n    classAPIOut: any,\n    component: any,\n    input: any,\n    completeChunks: Chunk[],\n  ) {\n    const boundary = new Boundary(this.ensureState(classAPIOut.global));\n    let head = new Chunk(\n      boundary,\n      null,\n      null /* TODO: this should grab the context from the previous chunk */,\n    );\n    let normalizedInput = input;\n    if (\"renderBody\" in input) {\n      normalizedInput = {};\n      for (const key in input) {\n        normalizedInput[key === \"renderBody\" ? \"content\" : key] = input[key];\n      }\n    }\n\n    head.render(() => {\n      if (willRerender) {\n        const scopeId = _peek_scope_id();\n        _scope(scopeId, { m5c: component.id });\n        _script(scopeId, SET_SCOPE_REGISTER_ID);\n      }\n\n      _set_serialize_reason(willRerender ? 1 : 0);\n      try {\n        renderer(normalizedInput);\n      } finally {\n        _set_serialize_reason(undefined);\n      }\n\n      const asyncOut = classAPIOut.beginAsync({ last: true, timeout: -1 });\n      classAPIOut.onLast((next: any) => {\n        (boundary.onNext = () => {\n          if (boundary.signal.aborted) {\n            asyncOut.error(boundary.signal.reason);\n            boundary.onNext = NOOP;\n          } else if (!boundary.count) {\n            boundary.onNext = NOOP;\n            head = head.consume();\n            asyncOut.write(head.html);\n            asyncOut.script(head.scripts);\n            asyncOut.end();\n            head.html = head.scripts = \"\";\n            completeChunks.push(head);\n            next();\n          }\n        })();\n      });\n    });\n  },\n  registerRenderer(renderer: any, id: string) {\n    return register(\n      RENDERER_REGISTER_ID,\n      renderer,\n      register(id, () => {}),\n    );\n  },\n  registerRenderBody(fn: any) {\n    register(RENDER_BODY_ID, fn);\n  },\n};\n\nfunction NOOP() {}\n"
  },
  {
    "path": "packages/runtime-tags/src/html/content.ts",
    "content": "export function _unescaped(val: unknown) {\n  return val ? val + \"\" : val === 0 ? \"0\" : \"\";\n}\n\nconst unsafeXMLReg = /[<&]/g;\nconst replaceUnsafeXML = (c: string) => (c === \"&\" ? \"&amp;\" : \"&lt;\");\nconst escapeXMLStr = (str: string) =>\n  unsafeXMLReg.test(str) ? str.replace(unsafeXMLReg, replaceUnsafeXML) : str;\nexport function _escape(val: unknown) {\n  return val ? escapeXMLStr(val + \"\") : val === 0 ? \"0\" : \"&zwj;\";\n}\n\nexport function _escape_text(val: unknown) {\n  return val ? escapeXMLStr(val + \"\") : val === 0 ? \"0\" : \"\";\n}\n\nconst unsafeScriptReg = /<\\/script/g;\nconst escapeScriptStr = (str: string) =>\n  unsafeScriptReg.test(str)\n    ? str.replace(unsafeScriptReg, \"\\\\x3C/script\")\n    : str;\nexport function _escape_script(val: unknown) {\n  return val ? escapeScriptStr(val + \"\") : val === 0 ? \"0\" : \"\";\n}\n\nconst unsafeStyleReg = /<\\/style/g;\nconst escapeStyleStr = (str: string) =>\n  unsafeStyleReg.test(str) ? str.replace(unsafeStyleReg, \"\\\\3C/style\") : str;\n\nexport function _escape_style(val: unknown) {\n  return val ? escapeStyleStr(val + \"\") : val === 0 ? \"0\" : \"\";\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/html/dynamic-tag.ts",
    "content": "import { assertValidTagName } from \"../common/errors\";\nimport { normalizeDynamicRenderer } from \"../common/helpers\";\nimport { DYNAMIC_TAG_SCRIPT_REGISTER_ID } from \"../common/meta\";\nimport {\n  type Accessor,\n  AccessorPrefix,\n  AccessorProp,\n  ResumeSymbol,\n} from \"../common/types\";\nimport { _attr_select_value, _attr_textarea_value, _attrs } from \"./attrs\";\nimport type { ServerRenderer } from \"./template\";\nimport {\n  _html,\n  _peek_scope_id,\n  _resume,\n  _scope,\n  _scope_id,\n  _script,\n  _set_serialize_reason,\n  getScopeById,\n  getState,\n  withBranchId,\n} from \"./writer\";\n\nconst voidElementsReg =\n  /* cspell:disable-next-line */\n  /^(?:area|b(?:ase|r)|col|embed|hr|i(?:mg|nput)|link|meta|param|source|track|wbr)$/;\ninterface BodyContentObject {\n  [x: PropertyKey]: unknown;\n  content: ServerRenderer;\n}\n\n// TODO: refactor dynamicTagInput and dynamicTagArgs to be the same impl with a flag for input vs args.\n\nexport let _dynamic_tag = (\n  scopeId: number,\n  accessor: Accessor,\n  tag: unknown | string | ServerRenderer | BodyContentObject,\n  inputOrArgs: unknown,\n  content?: (() => void) | 0,\n  inputIsArgs?: 1,\n  serializeReason?: 1 | 0,\n) => {\n  const shouldResume = serializeReason !== 0;\n  const renderer = normalizeDynamicRenderer<ServerRenderer>(tag);\n\n  if (MARKO_DEBUG) {\n    if (\n      renderer &&\n      typeof renderer !== \"function\" &&\n      typeof renderer !== \"string\"\n    ) {\n      throw new Error(`Invalid renderer passed for dynamic tag: ${renderer}`);\n    }\n  }\n\n  const state = getState()!;\n  const branchId = _peek_scope_id();\n  let rendered: boolean;\n  let result: unknown;\n\n  if (typeof renderer === \"string\") {\n    if (MARKO_DEBUG) {\n      assertValidTagName(renderer);\n    }\n\n    const input = ((inputIsArgs\n      ? (inputOrArgs as unknown[])[0]\n      : inputOrArgs) || {}) as Record<string, unknown>;\n    rendered = true;\n    _scope_id();\n    _html(\n      `<${renderer}${_attrs(input, MARKO_DEBUG ? `#${renderer}/0` : \"a\", branchId, renderer)}>`,\n    );\n\n    if (!voidElementsReg.test(renderer)) {\n      const renderContent =\n        content || normalizeDynamicRenderer<ServerRenderer>(input.content);\n      if (renderer === \"textarea\") {\n        if (MARKO_DEBUG && renderContent) {\n          throw new Error(\n            \"A dynamic tag rendering a `<textarea>` cannot have `content` and must use the `value` attribute instead.\",\n          );\n        }\n        _html(\n          _attr_textarea_value(\n            branchId,\n            MARKO_DEBUG ? `#${renderer}/0` : \"a\",\n            input.value,\n            input.valueChange,\n          ),\n        );\n      } else if (renderContent) {\n        if (typeof renderContent !== \"function\") {\n          throw new Error(\n            `Body content is not supported for the \\`<${renderer}>\\` tag.`,\n          );\n        }\n        if (\n          renderer === \"select\" &&\n          (\"value\" in input || \"valueChange\" in input)\n        ) {\n          _attr_select_value(\n            branchId,\n            MARKO_DEBUG ? `#${renderer}/0` : \"a\",\n            input.value,\n            input.valueChange,\n            renderContent,\n          );\n        } else {\n          _dynamic_tag(\n            branchId,\n            MARKO_DEBUG ? `#${renderer}/0` : \"a\",\n            renderContent,\n            undefined,\n            0,\n            undefined,\n            serializeReason,\n          );\n        }\n      }\n\n      _html(`</${renderer}>`);\n    } else if (MARKO_DEBUG && content) {\n      throw new Error(\n        `Body content is not supported for the \\`<${renderer}>\\` tag.`,\n      );\n    }\n\n    const childScope = getScopeById(branchId);\n    const needsScript =\n      childScope &&\n      (childScope[\n        AccessorPrefix.EventAttributes + (MARKO_DEBUG ? `#${renderer}/0` : \"a\")\n      ] ||\n        childScope[\n          AccessorPrefix.ControlledHandler +\n            (MARKO_DEBUG ? `#${renderer}/0` : \"a\")\n        ]);\n\n    if (needsScript) {\n      childScope[AccessorProp.Renderer] = renderer;\n      _script(branchId, DYNAMIC_TAG_SCRIPT_REGISTER_ID);\n    }\n\n    if (shouldResume || needsScript) {\n      _html(\n        state.mark(\n          ResumeSymbol.BranchEndNativeTag,\n          scopeId + \" \" + accessor + \" \" + branchId,\n        ),\n      );\n    }\n\n    // TODO: this needs to set result the element getter\n  } else {\n    if (shouldResume) {\n      _html(state.mark(ResumeSymbol.BranchStart, \"\"));\n    }\n\n    const render = () => {\n      if (renderer) {\n        try {\n          _set_serialize_reason(\n            shouldResume && inputOrArgs !== undefined ? 1 : 0,\n          );\n          return inputIsArgs\n            ? renderer(...(inputOrArgs as unknown[]))\n            : renderer(\n                content\n                  ? { ...(inputOrArgs as Record<string, unknown>), content }\n                  : inputOrArgs,\n              );\n        } finally {\n          _set_serialize_reason(undefined);\n        }\n      } else if (content) {\n        return content();\n      }\n    };\n    result = shouldResume ? withBranchId(branchId, render) : render();\n    rendered = _peek_scope_id() !== branchId;\n\n    if (shouldResume) {\n      _html(\n        state.mark(\n          ResumeSymbol.BranchEnd,\n          scopeId + \" \" + accessor + (rendered ? \" \" + branchId : \"\"),\n        ),\n      );\n    }\n  }\n\n  if (rendered) {\n    if (shouldResume) {\n      _scope(scopeId, {\n        [AccessorPrefix.ConditionalRenderer + accessor]:\n          (renderer as ServerRenderer | undefined)?.___id || renderer,\n      });\n    }\n  } else {\n    _scope_id();\n  }\n\n  return result;\n};\n\nexport function _content(id: string, fn: ServerRenderer) {\n  fn.___id = id;\n  return fn;\n}\n\nexport function _content_resume(\n  id: string,\n  fn: ServerRenderer,\n  scopeId?: number,\n) {\n  return _resume(_content(id, fn), id, scopeId);\n}\n\nexport const patchDynamicTag = (\n  (originalDynamicTag) =>\n  (patch: (tag: unknown, scopeId: number, accessor: Accessor) => unknown) => {\n    _dynamic_tag = (\n      scopeId,\n      accessor,\n      tag,\n      input,\n      content,\n      inputIsArgs,\n      resume,\n    ) => {\n      const patched = patch(tag, scopeId, accessor);\n      if (patched !== tag) (patched as any).___id = tag;\n      return originalDynamicTag(\n        scopeId,\n        accessor,\n        patched,\n        input,\n        content,\n        inputIsArgs,\n        resume,\n      );\n    };\n  }\n)(_dynamic_tag);\n"
  },
  {
    "path": "packages/runtime-tags/src/html/for.ts",
    "content": "export { forIn, forOf, forTo, forUntil } from \"../common/for\";\n\nexport function forOfBy(by: unknown, item: any, index: unknown) {\n  if (by) {\n    if (typeof by === \"string\") {\n      return item[by];\n    }\n\n    return (by as any)(item, index);\n  }\n\n  return index;\n}\n\nexport function forInBy(by: unknown, name: string, value: unknown) {\n  if (by) {\n    return (by as any)(name, value);\n  }\n\n  return name;\n}\n\nexport function forStepBy(by: unknown, index: number) {\n  if (by) {\n    return (by as any)(index);\n  }\n\n  return index;\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/html/inlined-runtimes.ts",
    "content": "export const WALKER_RUNTIME_CODE = MARKO_DEBUG\n  ? /* js */ `((runtimeId) => (self[runtimeId] || (self[runtimeId] = (\n  renderId,\n  prefix = runtimeId + renderId,\n  prefixLen = prefix.length,\n  lookup = {},\n  visits = [],\n  doc = document,\n  walker = doc.createTreeWalker(\n    doc,\n    129 /* NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_ELEMENT */,\n  ),\n) =>\n  doc = (self[runtimeId][renderId] = {\n    i: prefix,\n    d: doc,\n    l: lookup,\n    v: visits,\n    x() {},\n    w(node, op, id) {\n      while ((node = walker.nextNode())) {\n        doc.x(\n          (op =\n            (op = node.data) &&\n            !op.indexOf(prefix) &&\n            ((lookup[(id = op.slice(prefixLen + 1))] = node), op[prefixLen])),\n          id,\n          node,\n        );\n\n        if (op > \"#\") {\n          visits.push(node);\n        }\n      }\n    },\n  })\n), self[runtimeId]))`\n  : `(e=>(self[e]||(self[e]=(l,f=e+l,s=f.length,a={},d=[],t=document,n=t.createTreeWalker(t,129))=>t=self[e][l]={i:f,d:t,l:a,v:d,x(){},w(e,l,r){for(;e=n.nextNode();)t.x(l=(l=e.data)&&!l.indexOf(f)&&(a[r=l.slice(s+1)]=e,l[s]),r,e),l>\"#\"&&d.push(e)}}),self[e]))`;\nexport const REORDER_RUNTIME_CODE = MARKO_DEBUG\n  ? /* js */ `((runtime) => {\n  if (runtime.j) return;\n  let onNextSibling,\n    placeholder,\n    nextSibling,\n    placeholders = runtime.p = {},\n    replace = (id, container) => runtime.l[id].replaceWith(...container.childNodes);\n  runtime.d.head.append(\n    runtime.d.querySelector(\"style[\" + runtime.i + \"]\") || \"\"\n  );\n  runtime.j = {};\n  runtime.x = (op, id, node, placeholderRoot, placeholderCb) => {\n    if (node == nextSibling) {\n      onNextSibling();\n    }\n\n    if (op == \"#\") {\n      (placeholders[id] = placeholder).i++;\n    } else if (op == \"!\") {\n      if (runtime.l[id] && placeholders[id]) {\n        nextSibling = node.nextSibling;\n        onNextSibling = () => placeholders[id].c();\n      }\n    } else if (node.tagName == \"T\" && (id = node.getAttribute(runtime.i))) {\n      nextSibling = node.nextSibling;\n      onNextSibling = () => {\n        node.remove();\n        placeholderRoot || replace(id, node);\n        placeholder.c();\n      };\n      placeholder =\n        placeholders[id] ||\n        (placeholderRoot = placeholders[id] =\n          {\n            i: runtime.l[id] ? 1 : 2,\n            c(start = runtime.l[\"^\" + id]) {\n              if (--placeholderRoot.i) return 1;\n              for (\n                ;\n                (nextSibling =\n                  runtime.l[id].previousSibling || start).remove(),\n                  start != nextSibling;\n\n              );\n              replace(id, node);\n            },\n          });\n      // repurpose \"op\" for callbacks ...carefully\n      if ((op = runtime.j[id])) {\n        placeholderCb = placeholder.c;\n        placeholder.c = () => placeholderCb() || op(runtime.r);\n      }\n    }\n  };\n})`\n  : `(e=>{if(e.j)return;let i,l,r,t=e.p={},c=(i,l)=>e.l[i].replaceWith(...l.childNodes);e.d.head.append(e.d.querySelector(\"style[\"+e.i+\"]\")||\"\"),e.j={},e.x=(n,a,d,o,g)=>{d==r&&i(),\"#\"==n?(t[a]=l).i++:\"!\"==n?e.l[a]&&t[a]&&(r=d.nextSibling,i=()=>t[a].c()):\"T\"==d.tagName&&(a=d.getAttribute(e.i))&&(r=d.nextSibling,i=()=>{d.remove(),o||c(a,d),l.c()},l=t[a]||(o=t[a]={i:e.l[a]?1:2,c(i=e.l[\"^\"+a]){if(--o.i)return 1;for(;(r=e.l[a].previousSibling||i).remove(),i!=r;);c(a,d)}}),(n=e.j[a])&&(g=l.c,l.c=()=>g()||n(e.r)))}})`;\n"
  },
  {
    "path": "packages/runtime-tags/src/html/serializer.ts",
    "content": "import type { Boundary } from \"./writer\";\n\nconst kTouchedIterator = Symbol();\nconst { hasOwnProperty } = {};\nconst Generator = (function* () {})().constructor;\nconst AsyncGenerator = (async function* () {})().constructor;\npatchIteratorNext(Generator.prototype);\npatchIteratorNext(AsyncGenerator.prototype);\n\ninterface Registered {\n  id: string;\n  access: string;\n  scope: unknown;\n  instanceId: number;\n}\n\nenum MutationType {\n  call,\n  assign,\n}\n\ninterface CallMutation {\n  type: MutationType.call;\n  value: unknown;\n  object: unknown;\n  property: string | undefined;\n  spread?: boolean;\n}\n\ninterface AssignMutation {\n  type: MutationType.assign;\n  value: unknown;\n  object: unknown;\n  property: string;\n}\n\ntype Mutation = CallMutation | AssignMutation;\n\ntype TypedArray =\n  | Int8Array\n  | Uint8Array\n  | Uint8ClampedArray\n  | Int16Array\n  | Uint16Array\n  | Int32Array\n  | Uint32Array\n  | Float32Array\n  | Float64Array;\n\nconst REGISTRY = new WeakMap<WeakKey, Registered>();\nconst KNOWN_SYMBOLS = (() => {\n  const KNOWN_SYMBOLS = new Map<symbol, string>();\n  for (const name of Object.getOwnPropertyNames(Symbol)) {\n    const symbol = (Symbol as any)[name];\n    if (typeof symbol === \"symbol\") {\n      KNOWN_SYMBOLS.set(symbol, \"Symbol.\" + name);\n    }\n  }\n\n  return KNOWN_SYMBOLS;\n})();\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nconst KNOWN_FUNCTIONS = new Map<Function, string>([\n  // This is by no means an exhaustive list,\n  // but it should cover most of the built-in functions.\n  [AggregateError, \"AggregateError\"],\n  [Array, \"Array\"],\n  [Array.from, \"Array.from\"],\n  [Array.isArray, \"Array.isArray\"],\n  [Array.of, \"Array.of\"],\n  [ArrayBuffer, \"ArrayBuffer\"],\n  [ArrayBuffer.isView, \"ArrayBuffer.isView\"],\n  [Atomics.add, \"Atomics.add\"],\n  [Atomics.and, \"Atomics.and\"],\n  [Atomics.compareExchange, \"Atomics.compareExchange\"],\n  [Atomics.exchange, \"Atomics.exchange\"],\n  [Atomics.isLockFree, \"Atomics.isLockFree\"],\n  [Atomics.load, \"Atomics.load\"],\n  [Atomics.notify, \"Atomics.notify\"],\n  [Atomics.or, \"Atomics.or\"],\n  [Atomics.store, \"Atomics.store\"],\n  [Atomics.sub, \"Atomics.sub\"],\n  [Atomics.wait, \"Atomics.wait\"],\n  [BigInt, \"BigInt\"],\n  [BigInt.asIntN, \"BigInt.asIntN\"],\n  [BigInt.asUintN, \"BigInt.asUintN\"],\n  [BigInt64Array, \"BigInt64Array\"],\n  [BigInt64Array.from, \"BigInt64Array.from\"],\n  [BigInt64Array.of, \"BigInt64Array.of\"],\n  [BigUint64Array, \"BigUint64Array\"],\n  [BigUint64Array.from, \"BigUint64Array.from\"],\n  [BigUint64Array.of, \"BigUint64Array.of\"],\n  [Boolean, \"Boolean\"],\n  [console.assert, \"console.assert\"],\n  [console.clear, \"console.clear\"],\n  [console.count, \"console.count\"],\n  [console.countReset, \"console.countReset\"],\n  [console.debug, \"console.debug\"],\n  [console.dir, \"console.dir\"],\n  [console.dirxml, \"console.dirxml\"],\n  [console.error, \"console.error\"],\n  [console.group, \"console.group\"],\n  [console.groupCollapsed, \"console.groupCollapsed\"],\n  [console.groupEnd, \"console.groupEnd\"],\n  [console.info, \"console.info\"],\n  [console.log, \"console.log\"],\n  [console.table, \"console.table\"],\n  [console.time, \"console.time\"],\n  [console.timeEnd, \"console.timeEnd\"],\n  [console.timeLog, \"console.timeLog\"],\n  [console.timeStamp, \"console.timeStamp\"],\n  [console.trace, \"console.trace\"],\n  [console.warn, \"console.warn\"],\n  [DataView, \"DataView\"],\n  [Date, \"Date\"],\n  [Date.now, \"Date.now\"],\n  [Date.parse, \"Date.parse\"],\n  [Date.UTC, \"Date.UTC\"],\n  [decodeURI, \"decodeURI\"],\n  [decodeURIComponent, \"decodeURIComponent\"],\n  [encodeURI, \"encodeURI\"],\n  [encodeURIComponent, \"encodeURIComponent\"],\n  [Error, \"Error\"],\n  [EvalError, \"EvalError\"],\n  [Float32Array, \"Float32Array\"],\n  [Float32Array.from, \"Float32Array.from\"],\n  [Float32Array.of, \"Float32Array.of\"],\n  [Float64Array, \"Float64Array\"],\n  [Float64Array.from, \"Float64Array.from\"],\n  [Float64Array.of, \"Float64Array.of\"],\n  [Function, \"Function\"],\n  [globalThis.atob, \"atob\"],\n  [globalThis.btoa, \"btoa\"],\n  [globalThis.clearImmediate, \"clearImmediate\"],\n  [globalThis.clearInterval, \"clearInterval\"],\n  [globalThis.clearTimeout, \"clearTimeout\"],\n  [globalThis.crypto?.getRandomValues, \"crypto.getRandomValues\"],\n  [globalThis.crypto?.randomUUID, \"crypto.randomUUID\"],\n  [globalThis.fetch, \"fetch\"],\n  [globalThis.performance?.now, \"performance.now\"],\n  [globalThis.queueMicrotask, \"queueMicrotask\"],\n  [globalThis.setImmediate, \"setImmediate\"],\n  [globalThis.setInterval, \"setInterval\"],\n  [globalThis.setTimeout, \"setTimeout\"],\n  [globalThis.structuredClone, \"structuredClone\"],\n  [globalThis.URL, \"URL\"],\n  [globalThis.URLSearchParams, \"URLSearchParams\"],\n  [globalThis.WritableStream, \"WritableStream\"],\n  [Int16Array, \"Int16Array\"],\n  [Int16Array.from, \"Int16Array.from\"],\n  [Int16Array.of, \"Int16Array.of\"],\n  [Int32Array, \"Int32Array\"],\n  [Int32Array.from, \"Int32Array.from\"],\n  [Int32Array.of, \"Int32Array.of\"],\n  [Int8Array, \"Int8Array\"],\n  [Int8Array.from, \"Int8Array.from\"],\n  [Int8Array.of, \"Int8Array.of\"],\n  [Intl.Collator, \"Intl.Collator\"],\n  [Intl.DateTimeFormat, \"Intl.DateTimeFormat\"],\n  [Intl.DisplayNames, \"Intl.DisplayNames\"],\n  [Intl.getCanonicalLocales, \"Intl.getCanonicalLocales\"],\n  [Intl.ListFormat, \"Intl.ListFormat\"],\n  [Intl.Locale, \"Intl.Locale\"],\n  [Intl.NumberFormat, \"Intl.NumberFormat\"],\n  [Intl.PluralRules, \"Intl.PluralRules\"],\n  [Intl.RelativeTimeFormat, \"Intl.RelativeTimeFormat\"],\n  [Intl.Segmenter, \"Intl.Segmenter\"],\n  [Intl.supportedValuesOf, \"Intl.supportedValuesOf\"],\n  [isFinite, \"isFinite\"],\n  [isNaN, \"isNaN\"],\n  [JSON.parse, \"JSON.parse\"],\n  [JSON.stringify, \"JSON.stringify\"],\n  [Map, \"Map\"],\n  [Map.groupBy, \"Map.groupBy\"],\n  [Math.abs, \"Math.abs\"],\n  [Math.acos, \"Math.acos\"],\n  [Math.acosh, \"Math.acosh\"],\n  [Math.asin, \"Math.asin\"],\n  [Math.asinh, \"Math.asinh\"],\n  [Math.atan, \"Math.atan\"],\n  [Math.atan2, \"Math.atan2\"],\n  [Math.atanh, \"Math.atanh\"],\n  [Math.cbrt, \"Math.cbrt\"],\n  [Math.ceil, \"Math.ceil\"],\n  [Math.clz32, \"Math.clz32\"],\n  [Math.cos, \"Math.cos\"],\n  [Math.cosh, \"Math.cosh\"],\n  [Math.exp, \"Math.exp\"],\n  [Math.expm1, \"Math.expm1\"],\n  [Math.floor, \"Math.floor\"],\n  [Math.fround, \"Math.fround\"],\n  [Math.hypot, \"Math.hypot\"],\n  [Math.imul, \"Math.imul\"],\n  [Math.log, \"Math.log\"],\n  [Math.log10, \"Math.log10\"],\n  [Math.log1p, \"Math.log1p\"],\n  [Math.log2, \"Math.log2\"],\n  [Math.max, \"Math.max\"],\n  [Math.min, \"Math.min\"],\n  [Math.pow, \"Math.pow\"],\n  [Math.random, \"Math.random\"],\n  [Math.round, \"Math.round\"],\n  [Math.sign, \"Math.sign\"],\n  [Math.sin, \"Math.sin\"],\n  [Math.sinh, \"Math.sinh\"],\n  [Math.sqrt, \"Math.sqrt\"],\n  [Math.tan, \"Math.tan\"],\n  [Math.tanh, \"Math.tanh\"],\n  [Math.trunc, \"Math.trunc\"],\n  [Number, \"Number\"],\n  [Number.isFinite, \"Number.isFinite\"],\n  [Number.isInteger, \"Number.isInteger\"],\n  [Number.isNaN, \"Number.isNaN\"],\n  [Number.isSafeInteger, \"Number.isSafeInteger\"],\n  [Number.parseFloat, \"Number.parseFloat\"],\n  [Number.parseInt, \"Number.parseInt\"],\n  [Object, \"Object\"],\n  [Object.assign, \"Object.assign\"],\n  [Object.create, \"Object.create\"],\n  [Object.defineProperties, \"Object.defineProperties\"],\n  [Object.defineProperty, \"Object.defineProperty\"],\n  [Object.entries, \"Object.entries\"],\n  [Object.freeze, \"Object.freeze\"],\n  [Object.fromEntries, \"Object.fromEntries\"],\n  [Object.getOwnPropertyDescriptor, \"Object.getOwnPropertyDescriptor\"],\n  [Object.getOwnPropertyDescriptors, \"Object.getOwnPropertyDescriptors\"],\n  [Object.getOwnPropertyNames, \"Object.getOwnPropertyNames\"],\n  [Object.getOwnPropertySymbols, \"Object.getOwnPropertySymbols\"],\n  [Object.getPrototypeOf, \"Object.getPrototypeOf\"],\n  [Object.is, \"Object.is\"],\n  [Object.isExtensible, \"Object.isExtensible\"],\n  [Object.isFrozen, \"Object.isFrozen\"],\n  [Object.isSealed, \"Object.isSealed\"],\n  [Object.keys, \"Object.keys\"],\n  [Object.preventExtensions, \"Object.preventExtensions\"],\n  [Object.seal, \"Object.seal\"],\n  [Object.setPrototypeOf, \"Object.setPrototypeOf\"],\n  [Object.values, \"Object.values\"],\n  [parseFloat, \"parseFloat\"],\n  [parseInt, \"parseInt\"],\n  [Promise, \"Promise\"],\n  [Proxy, \"Proxy\"],\n  [RangeError, \"RangeError\"],\n  [ReferenceError, \"ReferenceError\"],\n  [Reflect.apply, \"Reflect.apply\"],\n  [Reflect.construct, \"Reflect.construct\"],\n  [Reflect.defineProperty, \"Reflect.defineProperty\"],\n  [Reflect.deleteProperty, \"Reflect.deleteProperty\"],\n  [Reflect.get, \"Reflect.get\"],\n  [Reflect.getOwnPropertyDescriptor, \"Reflect.getOwnPropertyDescriptor\"],\n  [Reflect.getPrototypeOf, \"Reflect.getPrototypeOf\"],\n  [Reflect.has, \"Reflect.has\"],\n  [Reflect.isExtensible, \"Reflect.isExtensible\"],\n  [Reflect.ownKeys, \"Reflect.ownKeys\"],\n  [Reflect.preventExtensions, \"Reflect.preventExtensions\"],\n  [Reflect.set, \"Reflect.set\"],\n  [Reflect.setPrototypeOf, \"Reflect.setPrototypeOf\"],\n  [RegExp, \"RegExp\"],\n  [Set, \"Set\"],\n  [String, \"String\"],\n  [String.fromCharCode, \"String.fromCharCode\"],\n  [String.fromCodePoint, \"String.fromCodePoint\"],\n  [String.raw, \"String.raw\"],\n  [Symbol, \"Symbol\"],\n  [Symbol.for, \"Symbol.for\"],\n  [SyntaxError, \"SyntaxError\"],\n  [TypeError, \"TypeError\"],\n  [Uint16Array, \"Uint16Array\"],\n  [Uint16Array.from, \"Uint16Array.from\"],\n  [Uint16Array.of, \"Uint16Array.of\"],\n  [Uint32Array, \"Uint32Array\"],\n  [Uint32Array.from, \"Uint32Array.from\"],\n  [Uint32Array.of, \"Uint32Array.of\"],\n  [Uint8Array, \"Uint8Array\"],\n  [Uint8Array.from, \"Uint8Array.from\"],\n  [Uint8Array.of, \"Uint8Array.of\"],\n  [Uint8ClampedArray, \"Uint8ClampedArray\"],\n  [Uint8ClampedArray.from, \"Uint8ClampedArray.from\"],\n  [Uint8ClampedArray.of, \"Uint8ClampedArray.of\"],\n  [URIError, \"URIError\"],\n  [WeakMap, \"WeakMap\"],\n  [WeakSet, \"WeakSet\"],\n]);\nconst KNOWN_OBJECTS = new Map<object, string>([\n  [Atomics, \"Atomics\"],\n  [console, \"console\"],\n  [globalThis, \"globalThis\"],\n  [globalThis.crypto, \"crypto\"],\n  [Intl, \"Intl\"],\n  [JSON, \"JSON\"],\n  [Math, \"Math\"],\n  [Reflect, \"Reflect\"],\n]);\n\nclass State {\n  ids = 0;\n  flush = 0;\n  registerInstanceId = 0;\n  flushed = false;\n  wroteUndefined = false;\n  buf = [] as string[];\n  strs = new Map<string, Reference>();\n  refs = new WeakMap<WeakKey, Reference>();\n  assigned = new Set<Reference>();\n  registered = [] as Reference[];\n  boundary: Boundary | undefined = undefined;\n  mutated: Mutation[] = [];\n}\n\nclass Reference {\n  declare debug?: Debug;\n  public registered: null | Registered = null;\n  public assigns: null | string[] = null;\n  constructor(\n    public parent: Reference | null,\n    public accessor: string | null,\n    public flush: number,\n    public pos: number | null = null,\n    public id: string | null = null,\n  ) {\n    this.parent = parent;\n    this.accessor = accessor;\n    this.flush = flush;\n    this.pos = pos;\n    this.id = id;\n  }\n}\n\ninterface Debug {\n  file: string;\n  loc: string | 0;\n  vars: Record<string, string | [name: string, loc?: string]> | undefined;\n}\nconst DEBUG = new WeakMap<WeakKey, Debug>();\nexport function setDebugInfo(\n  obj: WeakKey,\n  file: string,\n  loc: string | 0,\n  vars?: Record<string, string>,\n) {\n  DEBUG.set(obj, { file, loc, vars });\n}\n\nexport class Serializer {\n  #state = new State();\n  get flushed() {\n    return this.#state.flushed;\n  }\n  stringify(val: unknown, boundary: Boundary) {\n    try {\n      this.#state.flushed = false;\n      this.#state.boundary = boundary;\n      return writeRoot(this.#state, val);\n    } finally {\n      this.#state.flush++;\n      this.#state.buf = [];\n    }\n  }\n  nextId() {\n    return nextId(this.#state);\n  }\n  symbol(id: string) {\n    const symbol = Symbol();\n    this.#state.refs.set(symbol, new Reference(null, null, 0, null, id));\n    return symbol;\n  }\n  writeCall(\n    value: unknown,\n    object: unknown,\n    property?: string,\n    spread?: boolean,\n  ) {\n    const state = this.#state;\n    state.mutated.push({\n      type: MutationType.call,\n      value,\n      object,\n      property,\n      spread,\n    });\n    state.flushed = true;\n  }\n  writeAssign(value: unknown, object: unknown, property: string) {\n    const state = this.#state;\n    state.mutated.push({\n      type: MutationType.assign,\n      value,\n      object,\n      property,\n    });\n    state.flushed = true;\n  }\n  register<T extends WeakKey>(id: string, val: T, scope?: unknown) {\n    return register(\n      id,\n      val,\n      scope,\n      scope ? ++this.#state.registerInstanceId : 0,\n    );\n  }\n}\n\nexport function register<T extends WeakKey>(\n  id: string,\n  val: T,\n  scope?: unknown,\n  instanceId?: number,\n) {\n  REGISTRY.set(val, {\n    id,\n    scope,\n    instanceId: instanceId ?? 0,\n    access: \"_._\" + toAccess(toObjectKey(id)),\n  });\n  return val;\n}\n\nexport function getRegistered(val: WeakKey) {\n  const registered = REGISTRY.get(val);\n  if (registered) {\n    return { id: registered.id, scope: registered.scope };\n  }\n}\n\nexport function stringify(val: unknown) {\n  return writeRoot(new State(), val);\n}\n\nfunction writeRoot(state: State, root: unknown) {\n  const { buf } = state;\n  const hadBuf = buf.length !== 0;\n  let result: string;\n  if (hadBuf) {\n    buf.push(\",\");\n  }\n\n  if (writeProp(state, root, null, \"\")) {\n    const rootRef = state.refs.get(root as object);\n    if (rootRef) {\n      const rootId = ensureId(state, rootRef);\n      if (\n        state.assigned.size ||\n        state.registered.length ||\n        state.mutated.length\n      ) {\n        state.assigned.delete(rootRef!);\n        writeAssigned(state);\n        buf.push(\n          \",\" +\n            (rootRef.assigns\n              ? assignsToString(rootRef.assigns, rootId)\n              : rootId),\n        );\n      }\n    }\n\n    result = \"(\";\n    buf.push(\")\");\n  } else {\n    if (hadBuf) {\n      buf.pop();\n      writeAssigned(state);\n    }\n\n    result = \"{\";\n    buf.push(\"}\");\n  }\n\n  for (const chunk of buf) {\n    result += chunk;\n  }\n\n  if (state.wroteUndefined) {\n    state.wroteUndefined = false;\n    return \"(_,$)=>\" + result;\n  } else {\n    return \"_=>\" + result;\n  }\n}\n\nfunction writeAssigned(state: State) {\n  if (state.assigned.size) {\n    let buf = \"\";\n    for (const ref of state.assigned) {\n      buf += \",\" + assignsToString(ref.assigns!, ref.id!);\n      ref.assigns = null;\n    }\n\n    state.buf.push(buf);\n    state.assigned = new Set();\n  }\n\n  if (state.registered.length) {\n    let buf = \"\";\n    for (const ref of state.registered.sort(compareRegisteredReferences)) {\n      const scopeRef = state.refs.get(ref.registered!.scope!);\n      buf +=\n        \",\" +\n        assignsToString(\n          ref.assigns!,\n          ref.registered!.access +\n            \"(\" +\n            (scopeRef ? ensureId(state, scopeRef) : ref.assigns![0]) +\n            \")\",\n        );\n      ref.assigns = null;\n      ref.registered = null;\n    }\n\n    state.buf.push(buf);\n    state.registered = [];\n  }\n\n  if (state.mutated.length) {\n    for (const mutation of state.mutated) {\n      const hasSeen = state.refs.get(mutation.object as object)?.id;\n      const objectStartIndex = state.buf.push(\n        state.buf.length === 0 ? \"\" : \",\",\n      );\n\n      if (writeProp(state, mutation.object, null, \"\")) {\n        const objectRef = state.refs.get(mutation.object as object);\n        if (objectRef) {\n          if (!objectRef.id) {\n            objectRef.id = nextRefAccess(state);\n            state.buf[objectStartIndex] =\n              \"(\" + objectRef.id + \"=\" + state.buf[objectStartIndex];\n            state.buf.push(\")\");\n          } else if (!hasSeen) {\n            state.buf[objectStartIndex] = \"(\" + state.buf[objectStartIndex];\n            state.buf.push(\")\");\n          }\n        }\n      } else {\n        state.buf.push(\"void 0\");\n      }\n\n      const isCall = mutation.type === MutationType.call;\n      const valueStartIndex = state.buf.push(\n        isCall\n          ? (mutation.property === undefined\n              ? \"\"\n              : toAccess(toObjectKey(mutation.property))) +\n              \"(\" +\n              (mutation.spread ? \"...\" : \"\")\n          : toAccess(toObjectKey(mutation.property)) + \"=\",\n      );\n\n      if (writeProp(state, mutation.value, null, \"\")) {\n        const valueRef = state.refs.get(mutation.value as object);\n        if (valueRef && !valueRef.id) {\n          valueRef.id = nextRefAccess(state);\n          state.buf[valueStartIndex] =\n            valueRef.id + \"=\" + state.buf[valueStartIndex];\n        }\n      } else {\n        state.buf.push(\"void 0\");\n      }\n\n      if (isCall) {\n        state.buf.push(\")\");\n      }\n    }\n    state.mutated = [];\n\n    if (state.assigned.size || state.registered.length) {\n      writeAssigned(state);\n    }\n  }\n}\n\nfunction writeProp(\n  state: State,\n  val: unknown,\n  parent: Reference | null,\n  accessor: string,\n): boolean {\n  switch (typeof val) {\n    case \"string\":\n      return writeString(state, val, parent, accessor);\n\n    case \"number\":\n      return writeNumber(state, val);\n\n    case \"boolean\":\n      return writeBoolean(state, val);\n\n    case \"bigint\":\n      return writeBigInt(state, val);\n\n    case \"symbol\":\n      return writeSymbol(state, val, parent, accessor);\n\n    case \"function\":\n      return writeFunction(state, val, parent, accessor);\n\n    case \"object\":\n      return writeObject(state, val, parent, accessor);\n\n    default:\n      MARKO_DEBUG && throwUnserializable(state, val, parent, accessor);\n      return false;\n  }\n}\n\nfunction writeReferenceOr(\n  state: State,\n  write: (state: State, val: any, ref: Reference) => boolean,\n  val: WeakKey,\n  parent: Reference | null,\n  accessor: string,\n) {\n  let ref = state.refs.get(val);\n  if (ref) {\n    if (parent) {\n      if (ref.assigns) {\n        addAssignment(ref, ensureId(state, parent) + toAccess(accessor));\n        return false;\n      } else if (isCircular(parent, ref)) {\n        ensureId(state, ref);\n        state.assigned.add(ref);\n        addAssignment(ref, ensureId(state, parent) + toAccess(accessor));\n        return false;\n      }\n    }\n\n    state.buf.push(ensureId(state, ref));\n    return true;\n  }\n\n  const registered = REGISTRY.get(val);\n  if (registered)\n    return writeRegistered(state, val, parent, accessor, registered);\n\n  state.refs.set(\n    val,\n    (ref = new Reference(parent, accessor, state.flush, state.buf.length)),\n  );\n\n  if (MARKO_DEBUG) {\n    ref.debug = DEBUG.get(val);\n  }\n\n  if (write(state, val, ref)) return true;\n\n  state.refs.delete(val);\n  return false;\n}\n\nfunction writeRegistered(\n  state: State,\n  val: WeakKey,\n  parent: Reference | null,\n  accessor: string,\n  registered: Registered,\n) {\n  if (parent && registered.scope) {\n    const fnRef = new Reference(\n      parent,\n      accessor,\n      state.flush,\n      state.buf.length,\n    );\n    fnRef.registered = registered;\n    state.refs.set(val, fnRef);\n    state.registered.push(fnRef);\n    addAssignment(fnRef, ensureId(state, parent) + toAccess(accessor));\n\n    return (\n      !state.refs.has(registered.scope) &&\n      writeProp(state, registered.scope, null, \"\")\n    );\n  } else {\n    state.buf.push(registered.access);\n  }\n\n  return true;\n}\n\nfunction writeString(\n  state: State,\n  val: string,\n  parent: Reference | null,\n  accessor: string,\n) {\n  if (val.length > 30) {\n    const ref = state.strs.get(val);\n    if (ref) {\n      state.buf.push(ensureId(state, ref));\n    } else {\n      state.strs.set(\n        val,\n        new Reference(parent, accessor, state.flush, state.buf.length),\n      );\n      state.buf.push(quote(val, 0));\n    }\n  } else {\n    state.buf.push(quote(val, 0));\n  }\n  return true;\n}\n\nfunction writeNumber(state: State, val: number) {\n  state.buf.push(val + \"\");\n  return true;\n}\n\nfunction writeBoolean(state: State, val: boolean) {\n  state.buf.push(val ? \"!0\" : \"!1\");\n  return true;\n}\n\nfunction writeBigInt(state: State, val: bigint) {\n  state.buf.push(val + \"n\");\n  return true;\n}\n\nfunction writeFunction(\n  state: State,\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n  val: Function,\n  parent: Reference | null,\n  accessor: string,\n) {\n  const wellKnownFunction = KNOWN_FUNCTIONS.get(val);\n  if (wellKnownFunction) {\n    state.buf.push(wellKnownFunction);\n    return true;\n  }\n\n  return writeReferenceOr(state, writeNever, val, parent, accessor);\n}\n\nfunction writeSymbol(\n  state: State,\n  val: symbol,\n  parent: Reference | null,\n  accessor: string,\n) {\n  const wellKnownSymbol = KNOWN_SYMBOLS.get(val);\n  if (wellKnownSymbol) {\n    state.buf.push(wellKnownSymbol);\n    return true;\n  }\n\n  const key = Symbol.keyFor(val);\n  if (key !== undefined) {\n    state.buf.push(\"Symbol.for(\" + quote(key, 0) + \")\");\n    return true;\n  }\n\n  return writeReferenceOr(state, writeUnknownSymbol, val, parent, accessor);\n}\n\nfunction writeUnknownSymbol(state: State) {\n  state.buf.push(\"Symbol()\");\n  return true;\n}\n\nfunction writeNever(state: State, val: unknown, ref: Reference) {\n  MARKO_DEBUG && throwUnserializable(state, val, ref);\n  return false;\n}\n\nfunction writeNull(state: State) {\n  state.buf.push(\"null\");\n  return true;\n}\n\nfunction writeObject(\n  state: State,\n  val: object | null,\n  parent: Reference | null,\n  accessor: string,\n) {\n  if (val === null) return writeNull(state);\n\n  const wellKnownObject = KNOWN_OBJECTS.get(val);\n  if (wellKnownObject) {\n    state.buf.push(wellKnownObject);\n    return true;\n  }\n\n  return writeReferenceOr(state, writeUnknownObject, val, parent, accessor);\n}\n\nfunction writeUnknownObject(state: State, val: object, ref: Reference) {\n  switch (val.constructor) {\n    case undefined:\n      return writeNullObject(state, val, ref);\n    case Object:\n      return writePlainObject(state, val, ref);\n    case Array:\n      return writeArray(state, val as unknown[], ref);\n    case Date:\n      return writeDate(state, val as Date);\n    case RegExp:\n      return writeRegExp(state, val as RegExp);\n    case Promise:\n      return writePromise(state, val as Promise<unknown>, ref);\n    case Map:\n      return writeMap(state, val as Map<unknown, unknown>, ref);\n    case Set:\n      return writeSet(state, val as Set<unknown>, ref);\n    case Generator:\n      return writeGenerator(state, val as Generator, ref);\n    case AsyncGenerator:\n      return writeAsyncGenerator(state, val as AsyncGenerator, ref);\n    case Error:\n    case EvalError:\n    case RangeError:\n    case ReferenceError:\n    case SyntaxError:\n    case TypeError:\n    case URIError:\n      return writeError(state, val as Error, ref);\n    case AggregateError:\n      return writeAggregateError(state, val as AggregateError, ref);\n    case ArrayBuffer:\n      return writeArrayBuffer(state, val as ArrayBuffer);\n    case Int8Array:\n    case Uint8Array:\n    case Uint8ClampedArray:\n    case Int16Array:\n    case Uint16Array:\n    case Int32Array:\n    case Uint32Array:\n    case Float32Array:\n    case Float64Array:\n      return writeTypedArray(state, val as TypedArray, ref);\n    case WeakSet:\n      return writeWeakSet(state);\n    case WeakMap:\n      return writeWeakMap(state);\n    // The following references use `globalThis`\n    // since they are not implemented by all runtimes.\n    case globalThis.URL:\n      return writeURL(state, val as URL);\n    case globalThis.URLSearchParams:\n      return writeURLSearchParams(state, val as URLSearchParams);\n    case globalThis.Headers:\n      return writeHeaders(state, val as Headers);\n    case globalThis.FormData:\n      return writeFormData(state, val as FormData);\n    case globalThis.ReadableStream:\n      return writeReadableStream(state, val as ReadableStream<unknown>, ref);\n    case globalThis.Request:\n      return writeRequest(state, val as Request, ref);\n    case globalThis.Response:\n      return writeResponse(state, val as Response, ref);\n  }\n\n  MARKO_DEBUG && throwUnserializable(state, val, ref);\n  return false;\n}\n\nfunction writePlainObject(state: State, val: object, ref: Reference) {\n  state.buf.push(\"{\");\n  writeObjectProps(state, val, ref);\n  state.buf.push(\"}\");\n  return true;\n}\n\nfunction writeArray(state: State, val: unknown[], ref: Reference) {\n  let sep = \"[\";\n\n  for (let i = 0; i < val.length; i++) {\n    const item = val[i];\n    state.buf.push(sep);\n    sep = \",\";\n\n    if (item === undefined) {\n      state.wroteUndefined = true;\n      state.buf.push(\"$\");\n    } else {\n      writeProp(state, item, ref, \"\" + i);\n    }\n  }\n\n  if (sep === \"[\") {\n    state.buf.push(\"[]\");\n  } else {\n    state.buf.push(\"]\");\n  }\n  return true;\n}\n\nfunction writeDate(state: State, val: Date) {\n  state.buf.push('new Date(\"' + val.toISOString() + '\")');\n  return true;\n}\n\nfunction writeRegExp(state: State, val: RegExp) {\n  state.buf.push(val + \"\");\n  return true;\n}\n\nfunction writePromise(state: State, val: Promise<unknown>, ref: Reference) {\n  const { boundary } = state;\n  if (!boundary) return false;\n\n  const pId = nextRefAccess(state);\n  const pRef = new Reference(ref, null, state.flush, null, pId);\n  state.buf.push(\n    \"(p=>p=new Promise((f,r)=>\" + pId + \"={f,r(e){p.catch(_=>0);r(e)}}))()\",\n  );\n  val.then(\n    (v) => writeAsyncCall(state, boundary, pRef, \"f\", v, pId),\n    (v) => writeAsyncCall(state, boundary, pRef, \"r\", v, pId),\n  );\n  boundary.startAsync();\n  return true;\n}\n\nfunction writeMap(state: State, val: Map<unknown, unknown>, ref: Reference) {\n  if (!val.size) {\n    state.buf.push(\"new Map\");\n    return true;\n  }\n\n  const arrayRef = new Reference(\n    ref,\n    null,\n    state.flush,\n    null,\n    nextRefAccess(state),\n  );\n\n  const items: unknown[] = [];\n  let assigns: undefined | string[];\n  let i = 0;\n\n  // Using the map constructor uses 2 bytes per entry (serialized as an array).\n  // If we are below the number of bytes of the reduce runtime, we'll output a plain\n  // constructor.\n  if (val.size < 25) {\n    for (let [itemKey, itemValue] of val) {\n      if (itemKey === val) {\n        itemKey = undefined;\n        (assigns ||= []).push(\"a[\" + i + \"][0]\");\n      }\n\n      if (itemValue === val) {\n        itemValue = undefined;\n        (assigns ||= []).push(\"a[\" + i + \"][1]\");\n      }\n\n      i = items.push(\n        itemValue === undefined\n          ? itemKey === undefined\n            ? []\n            : [itemKey]\n          : [itemKey, itemValue],\n      );\n    }\n\n    if (assigns) {\n      state.buf.push(\n        \"((m,a)=>(\" +\n          assignsToString(assigns, \"m\") +\n          \",a.forEach(i=>m.set(i[0],i[1])),m))(new Map,\" +\n          arrayRef.id +\n          \"=\",\n      );\n    } else {\n      state.buf.push(\"new Map(\" + arrayRef.id + \"=\");\n    }\n\n    writeArray(state, items, arrayRef);\n    state.buf.push(\")\");\n  } else {\n    for (let [itemKey, itemValue] of val) {\n      if (itemKey === val) {\n        itemKey = 0;\n        (assigns ||= []).push(\"a[\" + i + \"]\");\n      }\n\n      if (itemValue === val) {\n        itemValue = 0;\n        (assigns ||= []).push(\"a[\" + (i + 1) + \"]\");\n      }\n\n      i = items.push(itemKey, itemValue);\n    }\n\n    if (assigns) {\n      state.buf.push(\n        \"(a=>a.reduce((m,v,i)=>i%2?m:m.set(v,a[i+1]),\" +\n          assignsToString(assigns, \"new Map\") +\n          \"))(\" +\n          arrayRef.id +\n          \"=\",\n      );\n    } else {\n      state.buf.push(\n        \"(a=>a.reduce((m,v,i)=>i%2?m:m.set(v,a[i+1]),new Map))(\" +\n          arrayRef.id +\n          \"=\",\n      );\n    }\n    writeArray(state, items, arrayRef);\n    state.buf.push(\")\");\n  }\n\n  return true;\n}\n\nfunction writeSet(state: State, val: Set<unknown>, ref: Reference) {\n  if (!val.size) {\n    state.buf.push(\"new Set\");\n    return true;\n  }\n\n  const items: (unknown | undefined)[] = [];\n  let assigns: undefined | string[];\n  let i = 0;\n  for (let item of val) {\n    if (item === val) {\n      item = 0;\n      (assigns ||= []).push(\"i[\" + i + \"]\");\n    }\n\n    i = items.push(item);\n  }\n\n  const arrayRef = new Reference(\n    ref,\n    null,\n    state.flush,\n    null,\n    nextRefAccess(state),\n  );\n  state.buf.push(\n    (assigns\n      ? \"((s,i)=>(\" +\n        assignsToString(assigns, \"s\") +\n        \",i.forEach(i=>s.add(i)),s))(new Set,\"\n      : \"new Set(\") +\n      arrayRef.id +\n      \"=\",\n  );\n\n  writeArray(state, items, arrayRef);\n  state.buf.push(\")\");\n  return true;\n}\n\nfunction writeArrayBuffer(state: State, val: ArrayBuffer) {\n  let result: string;\n\n  if (val.byteLength) {\n    const view = new Int8Array(val);\n    result = hasOnlyZeros(view)\n      ? \"new ArrayBuffer(\" + val.byteLength + \")\"\n      : \"new Int8Array(\" + typedArrayToInitString(view) + \").buffer\";\n  } else {\n    result = \"new ArrayBuffer\";\n  }\n\n  state.buf.push(result);\n  return true;\n}\n\nfunction writeTypedArray(state: State, val: TypedArray, ref: Reference) {\n  if (val.byteOffset || state.refs.has(val.buffer)) {\n    state.buf.push(\"new \" + val.constructor.name + \"(\");\n    writeProp(state, val.buffer, ref, \"buffer\");\n    state.buf.push(val.byteOffset ? \",\" + val.byteOffset + \")\" : \")\");\n  } else {\n    state.refs.set(val.buffer, new Reference(ref, \"buffer\", state.flush, null));\n    state.buf.push(\n      \"new \" +\n        val.constructor.name +\n        (val.length === 0\n          ? \"\"\n          : \"(\" +\n            (hasOnlyZeros(val) ? val.length : typedArrayToInitString(val)) +\n            \")\"),\n    );\n  }\n\n  return true;\n}\n\nfunction writeWeakSet(state: State) {\n  state.buf.push(\"new WeakSet\");\n  return true;\n}\n\nfunction writeWeakMap(state: State) {\n  state.buf.push(\"new WeakMap\");\n  return true;\n}\n\nfunction writeError(state: State, val: Error, ref: Reference) {\n  const result =\n    \"new \" + val.constructor.name + \"(\" + quote(val.message + \"\", 0);\n  if (val.cause) {\n    state.buf.push(result + \",{cause:\");\n    writeProp(state, val.cause, ref, \"cause\");\n    state.buf.push(\"})\");\n  } else {\n    state.buf.push(result + \")\");\n  }\n  return true;\n}\n\nfunction writeAggregateError(\n  state: State,\n  val: AggregateError,\n  ref: Reference,\n) {\n  state.buf.push(\"new AggregateError(\");\n  writeProp(state, val.errors, ref, \"errors\");\n  if (val.message) {\n    state.buf.push(\",\" + quote(val.message + \"\", 0) + \")\");\n  } else {\n    state.buf.push(\")\");\n  }\n  return true;\n}\n\nfunction writeURL(state: State, val: URL) {\n  state.buf.push(\"new URL(\" + quote(val.toString(), 0) + \")\");\n  return true;\n}\n\nfunction writeURLSearchParams(state: State, val: URLSearchParams) {\n  const str = val.toString();\n  if (str) {\n    state.buf.push(\"new URLSearchParams(\" + quote(str, 0) + \")\");\n  } else {\n    state.buf.push(\"new URLSearchParams\");\n  }\n\n  return true;\n}\n\nfunction writeHeaders(state: State, val: Headers) {\n  const headers = stringEntriesToProps(val as any);\n  state.buf.push(\"new Headers\" + (headers ? \"({\" + headers + \"})\" : \"\"));\n  return true;\n}\n\nfunction writeFormData(state: State, val: FormData) {\n  let sep = \"[\";\n  let valStr: string = \"\";\n  for (const [key, value] of val as unknown as Iterable<[string, string]>) {\n    // TODO: support file/blob\n    if (typeof value === \"string\") {\n      valStr += sep + quote(key, 0) + \",\" + quote(value, 0);\n      sep = \",\";\n    }\n  }\n\n  if (sep === \"[\") {\n    state.buf.push(\"new FormData\");\n  } else {\n    state.buf.push(\n      valStr + \"].reduce((f,v,i,a)=>i%2&&f.append(v,a[i+1])||f,new FormData)\",\n    );\n  }\n\n  return true;\n}\n\nfunction writeRequest(state: State, val: Request, ref: Reference) {\n  let sep = \"\";\n  const hasBody = val.body && !val.bodyUsed && (val as any).duplex === \"half\";\n  state.buf.push(\"new Request(\" + quote(val.url, 0));\n\n  if (hasBody) {\n    state.buf.push(\",{body:\");\n    if (writeProp(state, val.body, ref, \"body\")) {\n      state.buf.push(',duplex:\"half\"');\n      sep = \",\";\n    } else {\n      state.buf.pop();\n    }\n  }\n\n  let options = \"\";\n  if (val.cache !== \"default\") {\n    options += sep + \"cache:\" + quote(val.cache, 0);\n    sep = \",\";\n  }\n\n  if (val.credentials !== \"same-origin\") {\n    options += sep + \"credentials:\" + quote(val.credentials, 0);\n    sep = \",\";\n  }\n\n  const headers = stringEntriesToProps(val.headers as any);\n  state.refs.set(val.headers, new Reference(ref, \"headers\", state.flush, null));\n  if (headers) {\n    options += sep + \"headers:{\" + headers + \"}\";\n    sep = \",\";\n  }\n\n  if (val.integrity) {\n    options += sep + \"integrity:\" + quote(val.integrity, 0);\n    sep = \",\";\n  }\n\n  if (val.keepalive) {\n    options += sep + \"keepalive:true\";\n    sep = \",\";\n  }\n\n  if (val.method !== \"GET\") {\n    options += sep + \"method:\" + quote(val.method, 0);\n    sep = \",\";\n  }\n\n  if (val.mode !== \"cors\") {\n    options += sep + \"mode:\" + quote(val.mode, 0);\n    sep = \",\";\n  }\n\n  if (val.redirect !== \"follow\") {\n    options += sep + \"redirect:\" + quote(val.redirect, 0);\n    sep = \",\";\n  }\n\n  if (val.referrer !== \"about:client\") {\n    options += sep + \"referrer:\" + quote(val.referrer, 0);\n    sep = \",\";\n  }\n\n  if (val.referrerPolicy) {\n    options += sep + \"referrerPolicy:\" + quote(val.referrerPolicy, 0);\n  }\n\n  state.buf.push(\n    hasBody ? options + \"})\" : options ? \",{\" + options + \"})\" : \")\",\n  );\n\n  return true;\n}\n\nfunction writeResponse(state: State, val: Response, ref: Reference) {\n  let sep = \"\";\n  let options = \"\";\n\n  if (val.status !== 200) {\n    options += \"status:\" + val.status;\n    sep = \",\";\n  }\n\n  if (val.statusText) {\n    options += sep + \"statusText:\" + quote(val.statusText, 0);\n    sep = \",\";\n  }\n\n  const headers = stringEntriesToProps(val.headers as any);\n  state.refs.set(val.headers, new Reference(ref, \"headers\", state.flush, null));\n  if (headers) {\n    options += sep + \"headers:{\" + headers + \"}\";\n  }\n\n  if (!val.body || val.bodyUsed) {\n    state.buf.push(\n      \"new Response\" + (options ? \"(null,{\" + options + \"})\" : \"\"),\n    );\n  } else {\n    state.buf.push(\"new Response(\");\n    state.buf.push(\n      (writeProp(state, val.body, ref, \"body\") ? \"\" : \"null\") +\n        (options ? \",{\" + options + \"})\" : \")\"),\n    );\n  }\n\n  return true;\n}\n\nfunction writeReadableStream(\n  state: State,\n  val: ReadableStream<unknown>,\n  ref: Reference,\n) {\n  const { boundary } = state;\n  if (!boundary || val.locked) return false;\n\n  const reader = val.getReader();\n  const iterId = nextRefAccess(state);\n  const iterRef = new Reference(ref, null, state.flush, null, iterId);\n  const onFulfilled = ({ value, done }: ReadableStreamReadResult<unknown>) => {\n    if (done) {\n      writeAsyncCall(state, boundary, iterRef, \"r\", value);\n    } else if (!boundary.signal.aborted) {\n      reader.read().then(onFulfilled, onRejected);\n      boundary.startAsync();\n      writeAsyncCall(state, boundary, iterRef, \"f\", value);\n    }\n  };\n  const onRejected = (reason: unknown) => {\n    writeAsyncCall(state, boundary, iterRef, \"j\", reason);\n  };\n\n  state.buf.push(\n    \"new ReadableStream({start(c){(async(_,f,v,l,i,p=a=>l=new Promise((r,j)=>{f=_.r=r;_.j=j}),a=((_.f=v=>{f(v);a.push(p())}),[p()]))=>{for(i of a)v=await i,i==l?c.close():c.enqueue(v)})(\" +\n      iterId +\n      \"={}).catch(e=>c.error(e))}})\",\n  );\n\n  reader.read().then(onFulfilled, onRejected);\n  boundary.startAsync();\n\n  return true;\n}\n\nfunction writeGenerator(state: State, iter: Generator, ref: Reference) {\n  if ((iter as any)[kTouchedIterator]) {\n    state.buf.push(\"(async function*(){}())\");\n    return true;\n  }\n\n  let sep = \"\";\n  state.buf.push(\"(function*(){\");\n\n  while (true) {\n    const { value, done } = iter.next();\n    if (done) {\n      if (value !== undefined) {\n        state.buf.push(sep + \"return \");\n        writeProp(state, value, ref, \"\");\n      }\n      break;\n    }\n\n    if (value === undefined) {\n      state.buf.push(sep + \"yield\");\n    } else {\n      state.buf.push(sep + \"yield \");\n      writeProp(state, value, ref, \"\");\n    }\n    sep = \";\";\n  }\n\n  state.buf.push(\"})()\");\n  return true;\n}\n\nfunction writeAsyncGenerator(\n  state: State,\n  iter: AsyncGenerator,\n  ref: Reference,\n) {\n  if ((iter as any)[kTouchedIterator]) {\n    state.buf.push(\"(async function*(){}())\");\n    return true;\n  }\n\n  const { boundary } = state;\n  if (!boundary) return false;\n\n  const iterId = nextRefAccess(state);\n  const iterRef = new Reference(ref, null, state.flush, null, iterId);\n  const onFulfilled = ({ value, done }: IteratorResult<unknown>) => {\n    if (done) {\n      writeAsyncCall(state, boundary, iterRef, \"r\", value);\n    } else if (!boundary.signal.aborted) {\n      iter.next().then(onFulfilled, onRejected);\n      boundary.startAsync();\n      writeAsyncCall(state, boundary, iterRef, \"f\", value);\n    }\n  };\n  const onRejected = (reason: unknown) => {\n    writeAsyncCall(state, boundary, iterRef, \"j\", reason);\n  };\n\n  state.buf.push(\n    \"(async function*(_,f,v,l,i,p=a=>l=new Promise((r,j)=>{f=_.r=r;_.j=j}),a=((_.f=v=>{f(v);a.push(p())}),[p()])){for(i of a)v=await i,i!=l&&(yield v);return v})(\" +\n      iterId +\n      \"={})\",\n  );\n  iter.next().then(onFulfilled, onRejected);\n  boundary.startAsync();\n\n  return true;\n}\n\nfunction writeNullObject(state: State, val: object, ref: Reference) {\n  state.buf.push(\"{\");\n  state.buf.push(writeObjectProps(state, val, ref) + \"__proto__:null}\");\n  return true;\n}\n\nfunction writeObjectProps(state: State, val: object, ref: Reference) {\n  let sep = \"\";\n  for (const key in val) {\n    if (hasOwnProperty.call(val, key)) {\n      const escapedKey = toObjectKey(key);\n      state.buf.push(sep + escapedKey + \":\");\n      if (\n        writeProp(\n          state,\n          (val as Record<PropertyKey, unknown>)[key],\n          ref,\n          escapedKey,\n        )\n      ) {\n        sep = \",\";\n      } else {\n        state.buf.pop();\n      }\n    }\n  }\n\n  if (hasSymbolIterator(val)) {\n    const iterArr = [...val];\n    switch (iterArr.length) {\n      case 0:\n        state.buf.push(sep + \"*[Symbol.iterator](){}\");\n        break;\n      case 1:\n        state.buf.push(\n          sep +\n            \"*[Symbol.iterator](){yield \" +\n            (iterArr[0] === val ? \"this\" : ensureId(state, ref)) +\n            \"}\",\n        );\n        break;\n      default: {\n        const iterRef = new Reference(\n          ref,\n          null,\n          state.flush,\n          null,\n          nextRefAccess(state),\n        );\n        state.buf.push(sep + \"*[(\" + iterRef.id + \"=\");\n        writeArray(state, iterArr, iterRef);\n        state.buf.push(\",Symbol.iterator)](){yield*\" + iterRef.id + \"}\");\n        break;\n      }\n    }\n\n    sep = \",\";\n  }\n\n  return sep;\n}\n\nfunction writeAsyncCall(\n  state: State,\n  boundary: Boundary,\n  ref: Reference,\n  method: string,\n  value: unknown,\n  preferredValueId: string | null = null,\n) {\n  if (boundary.signal.aborted) return;\n\n  state.flushed = true;\n  const valueStartIndex = state.buf.push(\n    (state.buf.length === 0 ? \"\" : \",\") + ref.id + \".\" + method + \"(\",\n  );\n  if (writeProp(state, value, ref, \"\")) {\n    const valueRef = state.refs.get(value as object);\n    if (valueRef && !valueRef.id) {\n      valueRef.id = preferredValueId || nextRefAccess(state);\n      state.buf[valueStartIndex] =\n        valueRef.id + \"=\" + state.buf[valueStartIndex];\n    }\n  }\n  state.buf.push(\")\");\n  boundary.endAsync();\n}\n\nfunction throwUnserializable(\n  state: State,\n  cause: unknown,\n  ref: Reference | null = null,\n  accessor: string = \"\",\n) {\n  if (cause !== undefined && state.boundary?.abort) {\n    let message = \"Unable to serialize\";\n    let access = \"\";\n    while (ref?.accessor) {\n      const debug = ref.parent?.debug;\n      if (debug) {\n        const varLoc = debug.vars?.[ref.accessor];\n        let debugAccess = ref.accessor;\n        let debugLoc = debug.loc;\n        if (varLoc) {\n          if (Array.isArray(varLoc)) {\n            debugAccess = varLoc[0];\n            if (varLoc[1]) debugLoc = varLoc[1];\n          } else {\n            debugLoc = varLoc;\n          }\n        }\n\n        message += ` ${JSON.stringify(debugAccess)} in ${debug.file}`;\n        if (debugLoc) message += `:${debugLoc}`;\n        break;\n      }\n      access = toAccess(ref.accessor) + access;\n      ref = ref.parent;\n    }\n\n    if (accessor) {\n      access = toAccess(accessor) + access;\n    }\n\n    if (access[0] === \".\") {\n      access = access.slice(1);\n    }\n\n    if (access) {\n      message += ` (reading ${access})`;\n    }\n\n    const err = new TypeError(message, { cause });\n    err.stack = undefined;\n    state.boundary.abort(err);\n  }\n}\n\nfunction isCircular(\n  parent: Reference | null,\n  ref: Reference,\n): parent is Reference {\n  let cur: Reference | null = parent;\n  while (cur) {\n    if (cur === ref) return true;\n    cur = cur.parent;\n  }\n\n  return false;\n}\n\nexport function toObjectKey(name: string) {\n  if (name === \"\") {\n    return '\"\"';\n  }\n\n  const startChar = name[0];\n  if (isDigit(startChar)) {\n    if (startChar === \"0\") {\n      if (name !== \"0\") {\n        return quote(name, 1);\n      }\n    } else {\n      for (let i = 1; i < name.length; i++) {\n        if (!isDigit(name[i])) {\n          return quote(name, i);\n        }\n      }\n    }\n  } else if (isWord(startChar)) {\n    for (let i = 1; i < name.length; i++) {\n      if (!isWordOrDigit(name[i])) {\n        return quote(name, i);\n      }\n    }\n  } else {\n    return quote(name, 0);\n  }\n\n  return name;\n}\n\nexport function toAccess(accessor: string) {\n  const start = accessor[0];\n  return start === '\"' || (start >= \"0\" && start <= \"9\")\n    ? \"[\" + accessor + \"]\"\n    : \".\" + accessor;\n}\n\n// Creates a JavaScript double quoted string and escapes all characters not listed as DoubleStringCharacters on\n// Also includes \"<\" to escape \"</script>\" and \"\\\" to avoid invalid escapes in the output.\n// http://www.ecma-international.org/ecma-262/5.1/#sec-7.8.4\nfunction quote(str: string, startPos: number): string {\n  let result = \"\";\n  let lastPos = 0;\n\n  for (let i = startPos; i < str.length; i++) {\n    let replacement: string;\n    switch (str[i]) {\n      case '\"':\n        replacement = '\\\\\"';\n        break;\n      case \"\\\\\":\n        replacement = \"\\\\\\\\\";\n        break;\n      case \"<\":\n        replacement = \"\\\\x3C\";\n        break;\n      case \"\\n\":\n        replacement = \"\\\\n\";\n        break;\n      case \"\\r\":\n        replacement = \"\\\\r\";\n        break;\n      case \"\\u2028\":\n        replacement = \"\\\\u2028\";\n        break;\n      case \"\\u2029\":\n        replacement = \"\\\\u2029\";\n        break;\n      default:\n        continue;\n    }\n\n    result += str.slice(lastPos, i) + replacement;\n    lastPos = i + 1;\n  }\n\n  return '\"' + (lastPos === startPos ? str : result + str.slice(lastPos)) + '\"';\n}\n\nfunction ensureId(state: State, ref: Reference) {\n  return ref.id || assignId(state, ref);\n}\n\nfunction assignId(state: State, ref: Reference) {\n  const { pos } = ref;\n  ref.id = nextRefAccess(state);\n\n  if (pos !== null && ref.flush === state.flush) {\n    if (pos === 0) {\n      state.buf[0] = ref.id + \"=\" + state.buf[0];\n    } else {\n      state.buf[pos - 1] += ref.id + \"=\";\n    }\n\n    return ref.id;\n  }\n\n  let cur = ref;\n  let accessPrevValue = \"\";\n\n  do {\n    accessPrevValue = toAccess(cur.accessor!) + accessPrevValue;\n    const parent = cur.parent!;\n\n    if (parent.id) {\n      accessPrevValue = parent.id + accessPrevValue;\n      break;\n    }\n\n    if (parent.flush === state.flush) {\n      accessPrevValue = ensureId(state, parent) + accessPrevValue;\n      break;\n    }\n\n    cur = parent;\n  } while (cur);\n\n  return ref.id + \"=\" + accessPrevValue;\n}\n\nfunction assignsToString(assigns: string[], value: string) {\n  if (assigns.length > 100) {\n    return \"($=>(\" + assigns.join(\"=$,\") + \"=$))(\" + value + \")\";\n  }\n\n  return assigns.join(\"=\") + \"=\" + value;\n}\n\nfunction addAssignment(ref: Reference, assign: string) {\n  if (ref.assigns) {\n    ref.assigns.push(assign);\n  } else {\n    ref.assigns = [assign];\n  }\n}\n\nfunction nextRefAccess(state: State) {\n  return \"_.\" + nextId(state);\n}\n\nfunction nextId(state: State) {\n  const c = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_0123456789\";\n  let n = state.ids++;\n  let r = c[n % 53]; // Avoids chars that cannot start a property name and _ (reserved).\n  for (n = (n / 53) | 0; n; n >>>= 6) {\n    r += c[n & 63];\n  }\n\n  return r;\n}\n\nfunction hasSymbolIterator(\n  value: unknown,\n): value is { [Symbol.iterator](): IterableIterator<unknown> } {\n  return Symbol.iterator in (value as any);\n}\n\nfunction stringEntriesToProps(entries: Iterable<[string, string]>) {\n  let result = \"\";\n  let sep = \"\";\n  for (const [key, value] of entries) {\n    result += sep + toObjectKey(key) + \":\" + quote(value, 0);\n    sep = \",\";\n  }\n\n  return result;\n}\n\nfunction typedArrayToInitString(view: TypedArray) {\n  let result = \"[\";\n  let sep = \"\";\n  for (let i = 0; i < view.length; i++) {\n    result += sep + view[i];\n    sep = \",\";\n  }\n\n  result += \"]\";\n  return result;\n}\n\nfunction hasOnlyZeros(typedArray: TypedArray) {\n  for (let i = 0; i < typedArray.length; i++) {\n    if (typedArray[i] !== 0) return false;\n  }\n\n  return true;\n}\n\nfunction isWordOrDigit(char: string) {\n  return isWord(char) || isDigit(char);\n}\n\nfunction isDigit(char: string) {\n  return char >= \"0\" && char <= \"9\";\n}\n\nfunction isWord(char: string) {\n  return (\n    (char >= \"a\" && char <= \"z\") ||\n    (char >= \"A\" && char <= \"Z\") ||\n    char === \"_\" ||\n    char === \"$\"\n  );\n}\n\nfunction patchIteratorNext(proto: Iterator<any>) {\n  const { next } = proto;\n  proto.next = function (value) {\n    (this as any)[kTouchedIterator] = 1;\n    return next.call(this, value);\n  };\n}\n\nfunction compareRegisteredReferences(a: Reference, b: Reference) {\n  return a.registered!.instanceId - b.registered!.instanceId;\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/html/template.ts",
    "content": "import { DEFAULT_RENDER_ID, DEFAULT_RUNTIME_ID } from \"../common/meta\";\nimport type {\n  RenderedTemplate,\n  Template,\n  TemplateInput,\n} from \"../common/types\";\nimport { _content_resume } from \"./dynamic-tag\";\nimport {\n  Boundary,\n  Chunk,\n  FlushStatus,\n  offTick,\n  queueTick,\n  State,\n} from \"./writer\";\n\nexport type ServerRenderer = ((...args: unknown[]) => unknown) & {\n  ___id?: string;\n  ___embed?: boolean;\n};\n\nexport const _template = (\n  templateId: string,\n  renderer: ServerRenderer,\n  page?: 1,\n) => {\n  (renderer as unknown as Template).render = render;\n  (renderer as unknown as ServerRenderer).___embed = !page;\n  (renderer as unknown as any)._ = renderer; // This is added exclusively for the compat layer, maybe someday it can be removed.\n\n  if (MARKO_DEBUG) {\n    (renderer as unknown as Template).mount = () => {\n      throw new Error(\n        `mount() is not implemented for the HTML compilation of a Marko template`,\n      );\n    };\n  }\n\n  return _content_resume(templateId, renderer) as unknown as Template;\n};\n\nexport function isTemplate(\n  renderer: ServerRenderer | Template,\n): renderer is ServerRenderer & Template {\n  return !!(renderer as any)._;\n}\n\nfunction render(this: Template & ServerRenderer, input: TemplateInput = {}) {\n  let { $global } = input;\n  if ($global) {\n    ({ $global, ...input } = input);\n    $global = {\n      runtimeId: DEFAULT_RUNTIME_ID,\n      renderId: getDefaultRenderId(this),\n      ...$global,\n    };\n\n    if (MARKO_DEBUG) {\n      if (!String($global.runtimeId).match(/^[_$a-z][_$a-z0-9]*$/i)) {\n        throw new Error(\n          `Invalid runtimeId: \"${$global.runtimeId}\". The runtimeId must be a valid JavaScript identifier.`,\n        );\n      }\n\n      if (!String($global.renderId).match(/^[_$a-z][_$a-z0-9]*$/i)) {\n        throw new Error(\n          `Invalid renderId: \"${$global.renderId}\". The renderId must be a valid JavaScript identifier.`,\n        );\n      }\n    }\n  } else {\n    $global = {\n      runtimeId: DEFAULT_RUNTIME_ID,\n      renderId: getDefaultRenderId(this),\n    };\n  }\n\n  const state = new State($global as State[\"$global\"]);\n  const head = new Chunk(new Boundary(state, $global.signal), null, null);\n\n  if (this.___embed) {\n    (state.ensureReady ||= {})[this.___id!] = 1;\n  }\n\n  head.render(this, input);\n  return new ServerRendered(head);\n}\n\nfunction getDefaultRenderId(template: ServerRenderer): string {\n  if (template.___embed) {\n    const ENCODE_CHARS =\n      \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_0123456789\";\n    let n = (Math.random() * 0x100000000) >>> 0;\n    let r = ENCODE_CHARS[n % 53]; // first char avoids digits and _\n    for (n = (n / 53) | 0; n; n >>>= 6) {\n      r += ENCODE_CHARS[n & 63];\n    }\n    return r;\n  }\n\n  return DEFAULT_RENDER_ID;\n}\n\nclass ServerRendered implements RenderedTemplate {\n  #head: Chunk | null;\n  #cachedPromise: Promise<string> | null = null;\n  constructor(head: Chunk) {\n    this.#head = head;\n  }\n\n  [Symbol.asyncIterator]() {\n    type Iter = { value: string; done: boolean };\n    let resolve: (value: Iter) => void;\n    let reject: (reason: unknown) => void;\n    let value = \"\";\n    let done = false;\n    let aborted = false;\n    let reason: unknown;\n    const boundary = this.#read(\n      (html) => {\n        value += html;\n        if (resolve) {\n          resolve({ value, done });\n          value = \"\";\n        }\n      },\n      (err) => {\n        aborted = true;\n        reason = err;\n\n        if (reject) {\n          reject(err);\n        }\n      },\n      () => {\n        done = true;\n        if (resolve) {\n          resolve({ value, done: !value });\n          value = \"\";\n        }\n      },\n    );\n\n    return {\n      next() {\n        if (aborted) {\n          return Promise.reject(reason);\n        } else if (value) {\n          const result = { value, done: false };\n          value = \"\";\n          return Promise.resolve(result);\n        } else if (done) {\n          return Promise.resolve({ value: \"\", done });\n        } else {\n          return new Promise(exec);\n        }\n      },\n      throw(error: unknown) {\n        if (!(done || aborted)) {\n          boundary?.abort(error);\n        }\n\n        return Promise.resolve({ value: \"\", done: true } as const);\n      },\n      return(value: unknown) {\n        if (!(done || aborted)) {\n          boundary?.abort(new Error(\"Iterator returned before consumed.\"));\n        }\n\n        return Promise.resolve({ value, done: true } as const);\n      },\n    };\n\n    function exec(_resolve: typeof resolve, _reject: typeof reject) {\n      resolve = _resolve;\n      reject = _reject;\n    }\n  }\n\n  pipe(stream: {\n    write: (chunk: string) => void;\n    end: () => void;\n    flush?: () => void;\n    emit?: (eventName: PropertyKey, ...args: any[]) => any;\n  }) {\n    this.#read(\n      (html) => {\n        stream.write(html);\n      },\n      (err) => {\n        const socket = (\"socket\" in stream && stream.socket) as\n          | Record<PropertyKey, unknown>\n          | undefined\n          | false;\n        if (socket && typeof socket.destroySoon === \"function\") {\n          socket.destroySoon();\n        }\n\n        if (!stream.emit?.(\"error\", err)) {\n          throw err;\n        }\n      },\n      () => {\n        stream.end();\n      },\n    );\n  }\n\n  toReadable() {\n    let cancelled = false;\n    let boundary: Boundary | undefined;\n    const encoder = new TextEncoder();\n    return new ReadableStream({\n      start: (ctrl) => {\n        boundary = this.#read(\n          (html) => {\n            ctrl.enqueue(encoder.encode(html));\n          },\n          (err) => {\n            boundary = undefined;\n            if (!cancelled) {\n              ctrl.error(err);\n            }\n          },\n          () => {\n            boundary = undefined;\n            ctrl.close();\n          },\n        );\n      },\n      cancel: (reason) => {\n        cancelled = true;\n        boundary?.abort(reason);\n      },\n    });\n  }\n\n  then<TResult1 = string, TResult2 = never>(\n    onfulfilled?:\n      | ((value: string) => TResult1 | PromiseLike<TResult1>)\n      | undefined\n      | null,\n    onrejected?:\n      | ((reason: any) => TResult2 | PromiseLike<TResult2>)\n      | undefined\n      | null,\n  ): Promise<TResult1 | TResult2> {\n    return this.#promise().then(onfulfilled, onrejected);\n  }\n\n  catch<TResult = never>(\n    onrejected?:\n      | ((reason: unknown) => TResult | PromiseLike<TResult>)\n      | undefined\n      | null,\n  ): Promise<string | TResult> {\n    return this.#promise().catch(onrejected);\n  }\n\n  finally(onfinally?: (() => void) | undefined | null): Promise<string> {\n    return this.#promise().finally(onfinally);\n  }\n\n  #promise() {\n    return (this.#cachedPromise ||= new Promise<string>((resolve, reject) => {\n      const head = this.#head!;\n      this.#head = null;\n\n      if (!head) {\n        return reject(new Error(\"Cannot read from a consumed render result\"));\n      }\n\n      const { boundary } = head;\n      (boundary.onNext = () => {\n        switch (!boundary.count && boundary.flush()) {\n          case FlushStatus.aborted:\n            boundary.onNext = NOOP;\n            reject(boundary.signal.reason);\n            break;\n          case FlushStatus.complete:\n            resolve(head.consume().flushHTML());\n            break;\n        }\n      })();\n    }));\n  }\n\n  #read(\n    onWrite: (html: string) => void,\n    onAbort: (err: unknown) => void,\n    onClose: () => void,\n  ) {\n    let tick = true;\n    let head = this.#head!;\n    this.#head = null;\n\n    if (!head) {\n      onAbort(new Error(\"Cannot read from a consumed render result\"));\n      return;\n    }\n\n    const { boundary } = head;\n    const onNext = (boundary.onNext = (write?: boolean) => {\n      const status = boundary.flush();\n      if (status === FlushStatus.aborted) {\n        if (!tick) offTick(onNext);\n        boundary.onNext = NOOP;\n        onAbort(boundary.signal.reason);\n      } else if (write || status === FlushStatus.complete) {\n        const html = (head = head.consume()).flushHTML();\n        if (html) onWrite(html);\n        if (status === FlushStatus.complete) {\n          if (!tick) offTick(onNext);\n          onClose();\n        } else {\n          tick = true;\n        }\n      } else if (tick) {\n        tick = false;\n        queueTick(onNext);\n      }\n    });\n\n    onNext();\n    return boundary;\n  }\n\n  toString() {\n    const head = this.#head;\n    this.#head = null;\n    if (!head) throw new Error(\"Cannot read from a consumed render result\");\n    const { boundary } = head;\n    switch (boundary.flush()) {\n      case FlushStatus.aborted:\n        throw boundary.signal.reason;\n      case FlushStatus.continue:\n        throw new Error(\"Cannot consume asynchronous render with 'toString'\");\n    }\n    return head.consume().flushHTML();\n  }\n}\n\nfunction NOOP() {}\n"
  },
  {
    "path": "packages/runtime-tags/src/html/writer.ts",
    "content": "/* eslint-disable @typescript-eslint/no-this-alias */\nimport { _el_read_error, _hoist_read_error } from \"../common/errors\";\nimport { forIn, forOf, forTo, forUntil } from \"../common/for\";\nimport { normalizeDynamicRenderer } from \"../common/helpers\";\nimport { type Opt, push } from \"../common/opt\";\nimport {\n  type $Global,\n  type Accessor,\n  AccessorPrefix,\n  AccessorProp,\n  type Falsy,\n  ResumeSymbol,\n} from \"../common/types\";\nimport { attrAssignment } from \"./attrs\";\nimport { forInBy, forOfBy, forStepBy } from \"./for\";\nimport { REORDER_RUNTIME_CODE, WALKER_RUNTIME_CODE } from \"./inlined-runtimes\";\nimport {\n  register as serializerRegister,\n  Serializer,\n  setDebugInfo,\n  toAccess,\n  toObjectKey,\n} from \"./serializer\";\nimport type { ServerRenderer } from \"./template\";\n\nexport type PartialScope = Record<Accessor, unknown>;\ntype ScopeInternals = PartialScope & {\n  [K_SCOPE_ID]?: number;\n  [K_SCOPE_REFERENCED]?: 1;\n};\n\nlet $chunk: Chunk;\nconst NOOP = () => {};\nconst K_SCOPE_ID = Symbol(\"Scope ID\");\nconst K_SCOPE_REFERENCED = Symbol(\"Scope Referenced\");\n\nenum Mark {\n  Placeholder = \"!^\",\n  PlaceholderEnd = \"!\",\n  ReorderMarker = \"#\",\n}\n\nenum RuntimeKey {\n  Walk = \".w\",\n  Resume = \".r\",\n  Blocking = \".b\",\n  Scripts = \".j\",\n}\nexport function getChunk(): Chunk | undefined {\n  return $chunk;\n}\n\nexport function getContext(key: keyof NonNullable<Chunk[\"context\"]>) {\n  return $chunk.context?.[key];\n}\n\nexport function getState(): State {\n  return $chunk.boundary.state;\n}\n\nexport function getScopeId(scope: unknown): number | undefined {\n  return (scope as ScopeInternals)[K_SCOPE_ID];\n}\n\nexport function _html(html: string) {\n  $chunk.writeHTML(html);\n}\n\nexport function writeScript(script: string) {\n  $chunk.writeScript(script);\n}\n\nexport function _script(scopeId: number, registryId: string) {\n  if ($chunk.context?.[kIsAsync]) {\n    _resume_branch(scopeId);\n  }\n  $chunk.boundary.state.needsMainRuntime = true;\n  $chunk.writeEffect(scopeId, registryId);\n}\n\nexport function _attr_content(\n  nodeAccessor: Accessor,\n  scopeId: number,\n  content: unknown,\n  serializeReason?: 1 | 0,\n) {\n  const shouldResume = serializeReason !== 0;\n  const render = normalizeServerRender(content);\n  const branchId = _peek_scope_id();\n  if (render) {\n    if (shouldResume) {\n      withBranchId(branchId, render);\n    } else {\n      render();\n    }\n  }\n\n  const rendered = _peek_scope_id() !== branchId;\n  if (rendered) {\n    if (shouldResume) {\n      writeScope(scopeId, {\n        [AccessorPrefix.BranchScopes + nodeAccessor]: referenceScope(\n          writeScope(branchId, {}),\n        ),\n        [AccessorPrefix.ConditionalRenderer + nodeAccessor]: render?.___id,\n      });\n    }\n  } else {\n    _scope_id();\n  }\n}\n\nexport function normalizeServerRender(value: unknown) {\n  const renderer = normalizeDynamicRenderer<ServerRenderer>(value);\n  if (renderer) {\n    if (typeof renderer === \"function\") {\n      return renderer;\n    } else if (MARKO_DEBUG) {\n      throw new Error(\n        `Invalid \\`content\\` attribute. Received ${typeof value}`,\n      );\n    }\n  }\n}\n\nconst kPendingContexts = Symbol(\"Pending Contexts\");\nexport function withContext<T>(\n  key: PropertyKey,\n  value: unknown,\n  cb: () => T,\n): T;\nexport function withContext<T, U>(\n  key: PropertyKey,\n  value: unknown,\n  cb: (value: U) => T,\n  cbValue: U,\n): T;\nexport function withContext<T, U>(\n  key: PropertyKey,\n  value: unknown,\n  cb: (value?: U) => T,\n  cbValue?: U,\n): T {\n  const ctx = ($chunk.context ||= { [kPendingContexts]: 0 } as any);\n  const prev = ctx[key];\n  ctx[kPendingContexts]++;\n  ctx[key] = value;\n  try {\n    return cb(cbValue);\n  } finally {\n    ctx[kPendingContexts]--;\n    ctx[key] = prev;\n  }\n}\n\nexport function _var(\n  parentScopeId: number,\n  scopeOffsetAccessor: Accessor,\n  childScopeId: number,\n  registryId: string,\n) {\n  _scope_with_id(parentScopeId)[scopeOffsetAccessor] = _scope_id();\n  // TODO: if the return value is already registered, use that.\n  _scope_with_id(childScopeId)[AccessorProp.TagVariable] = _resume(\n    {},\n    registryId,\n    parentScopeId,\n  );\n}\n\nexport function _resume<T extends WeakKey>(\n  val: T,\n  id: string,\n  scopeId?: number,\n): T {\n  return scopeId === undefined\n    ? serializerRegister(id, val)\n    : $chunk.boundary.state.serializer.register(\n        id,\n        val,\n        _scope_with_id(scopeId),\n      );\n}\n\nexport function _id() {\n  const state = $chunk.boundary.state;\n  const { $global } = state;\n  return (\n    \"s\" + $global.runtimeId + $global.renderId + (state.tagId++).toString(36)\n  );\n}\n\nexport function _scope_id() {\n  return $chunk.boundary.state.scopeId++;\n}\n\nexport function _peek_scope_id() {\n  return $chunk.boundary.state.scopeId;\n}\n\nexport function getScopeById(scopeId: number | undefined) {\n  if (scopeId !== undefined) {\n    return $chunk.boundary.state.scopes.get(scopeId);\n  }\n}\n\nexport function _set_serialize_reason(reason: undefined | 0 | 1) {\n  $chunk.boundary.state.serializeReason = reason;\n}\n\nexport function _scope_reason() {\n  const reason = $chunk.boundary.state.serializeReason;\n  $chunk.boundary.state.serializeReason = undefined;\n  return reason;\n}\n\nexport function _serialize_if(\n  condition: undefined | 1 | Record<string, 1>,\n  key: string,\n) {\n  return condition && (condition === 1 || condition[key]) ? 1 : undefined;\n}\n\nexport function _serialize_guard(\n  condition: undefined | 1 | Record<string, 1>,\n  key: string,\n) {\n  return condition && (condition === 1 || condition[key]) ? 1 : 0;\n}\n\nexport function _el_resume(\n  scopeId: number,\n  accessor: Accessor,\n  shouldResume?: 0 | 1,\n) {\n  if (shouldResume === 0) return \"\";\n\n  const { state } = $chunk.boundary;\n  state.needsMainRuntime = true;\n  return state.mark(ResumeSymbol.Node, scopeId + \" \" + accessor);\n}\n\nexport function _sep(shouldResume: 0 | 1) {\n  return shouldResume === 0 ? \"\" : \"<!>\";\n}\n\nexport function _el(scopeId: number, id: string) {\n  return _resume(() => _el_read_error(), id, scopeId);\n}\n\nexport function _hoist(scopeId: number, id: string) {\n  const getter = () => _hoist_read_error();\n  getter[Symbol.iterator] = _hoist_read_error;\n  return _resume(getter, id, scopeId);\n}\n\nexport function _resume_branch(scopeId: number) {\n  const branchId = $chunk.context?.[kBranchId];\n  if (branchId !== undefined && branchId !== scopeId) {\n    writeScope(scopeId, { [AccessorProp.ClosestBranchId]: branchId });\n  }\n}\n\nconst kBranchId = Symbol(\"Branch Id\");\nconst kIsAsync = Symbol(\"Is Async\");\n\nexport function isInResumedBranch() {\n  return $chunk?.context?.[kBranchId] !== undefined;\n}\n\nexport function withBranchId<T>(branchId: number, cb: () => T): T {\n  return withContext(kBranchId, branchId, cb);\n}\n\nfunction withIsAsync<T, U>(cb: (value: U) => T, value: U): T {\n  return withContext(kIsAsync, true, cb, value);\n}\n\nexport function _for_of(\n  list: Falsy | Iterable<unknown>,\n  cb: (item: unknown, index: number) => void,\n  by: Falsy | ((item: unknown, index: number) => unknown),\n  scopeId: number,\n  accessor: Accessor,\n  serializeBranch?: 0 | 1,\n  serializeMarker?: 0 | 1,\n  serializeStateful?: 0 | 1,\n  parentEndTag?: string | 0,\n  singleNode?: 1,\n): void {\n  const { state } = $chunk.boundary;\n  const resumeKeys = serializeMarker !== 0;\n  const resumeMarker =\n    serializeMarker !== 0 && (!parentEndTag || serializeStateful !== 0);\n  let flushBranchIds = \"\";\n\n  if (serializeBranch !== 0) {\n    let loopScopes: Opt<ScopeInternals>;\n    if (MARKO_DEBUG) {\n      // eslint-disable-next-line no-var\n      var seenKeys = new Set<unknown>();\n    }\n    forOf(list, (item, index) => {\n      const branchId = _peek_scope_id();\n      const itemKey = forOfBy(by, item, index);\n      if (MARKO_DEBUG) {\n        if (by) {\n          if (seenKeys.has(itemKey)) {\n            console.error(\n              `A <for> tag's \\`by\\` attribute must return a unique value for each item, but a duplicate was found matching:`,\n              itemKey,\n            );\n          }\n          seenKeys.add(itemKey);\n        }\n      }\n      if (resumeMarker) {\n        if (singleNode) {\n          flushBranchIds = \" \" + branchId + flushBranchIds;\n        } else {\n          $chunk.writeHTML(\n            state.mark(ResumeSymbol.BranchStart, flushBranchIds),\n          );\n          flushBranchIds = branchId + \"\";\n        }\n      }\n\n      withBranchId(branchId, () => {\n        cb(item, index);\n        const branchScope = writeScope(branchId, {});\n        if (resumeKeys && itemKey !== index) {\n          branchScope[AccessorProp.LoopKey] = itemKey;\n        }\n        if (!resumeMarker) {\n          loopScopes = push(loopScopes, referenceScope(branchScope));\n        }\n      });\n    });\n\n    if (loopScopes) {\n      writeScope(scopeId, {\n        [AccessorPrefix.BranchScopes + accessor]: loopScopes,\n      });\n    }\n  } else {\n    forOf(list, cb);\n  }\n\n  writeBranchEnd(\n    scopeId,\n    accessor,\n    serializeStateful,\n    serializeMarker,\n    parentEndTag,\n    singleNode,\n    singleNode ? flushBranchIds : flushBranchIds ? \" \" + flushBranchIds : \"\",\n  );\n}\n\nexport function _for_in(\n  obj: Falsy | {},\n  cb: (key: string, value: unknown) => void,\n  by: Falsy | ((key: string, v: unknown) => unknown),\n  scopeId: number,\n  accessor: Accessor,\n  serializeBranch?: 0 | 1,\n  serializeMarker?: 0 | 1,\n  serializeStateful?: 0 | 1,\n  parentEndTag?: string | 0,\n  singleNode?: 1,\n): void {\n  const { state } = $chunk.boundary;\n  const resumeKeys = serializeMarker !== 0;\n  const resumeMarker =\n    serializeMarker !== 0 && (!parentEndTag || serializeStateful !== 0);\n  let flushBranchIds = \"\";\n\n  if (serializeBranch !== 0) {\n    let loopScopes: Opt<ScopeInternals>;\n    if (MARKO_DEBUG) {\n      // eslint-disable-next-line no-var\n      var seenKeys = new Set<unknown>();\n    }\n    forIn(obj, (key, value) => {\n      const branchId = _peek_scope_id();\n      const itemKey = forInBy(by, key, value);\n      if (MARKO_DEBUG) {\n        if (by) {\n          if (seenKeys.has(itemKey)) {\n            console.error(\n              `A <for> tag's \\`by\\` attribute must return a unique value for each item, but a duplicate was found matching:`,\n              itemKey,\n            );\n          }\n          seenKeys.add(itemKey);\n        }\n      }\n      if (resumeMarker) {\n        if (singleNode) {\n          flushBranchIds = \" \" + branchId + flushBranchIds;\n        } else {\n          $chunk.writeHTML(\n            state.mark(ResumeSymbol.BranchStart, flushBranchIds),\n          );\n          flushBranchIds = branchId + \"\";\n        }\n      }\n\n      withBranchId(branchId, () => {\n        cb(key, value);\n        const branchScope = writeScope(branchId, {});\n        if (resumeKeys) {\n          branchScope[AccessorProp.LoopKey] = itemKey;\n        }\n        if (!resumeMarker) {\n          loopScopes = push(loopScopes, referenceScope(branchScope));\n        }\n      });\n    });\n\n    if (loopScopes) {\n      writeScope(scopeId, {\n        [AccessorPrefix.BranchScopes + accessor]: loopScopes,\n      });\n    }\n  } else {\n    forIn(obj, cb);\n  }\n\n  writeBranchEnd(\n    scopeId,\n    accessor,\n    serializeStateful,\n    serializeMarker,\n    parentEndTag,\n    singleNode,\n    singleNode ? flushBranchIds : flushBranchIds ? \" \" + flushBranchIds : \"\",\n  );\n}\n\nexport function _for_to(\n  to: number,\n  from: number | Falsy,\n  step: number | Falsy,\n  cb: (index: number) => void,\n  by: Falsy | ((v: number) => unknown),\n  scopeId: number,\n  accessor: Accessor,\n  serializeBranch?: 0 | 1,\n  serializeMarker?: 0 | 1,\n  serializeStateful?: 0 | 1,\n  parentEndTag?: string | 0,\n  singleNode?: 1,\n): void {\n  const { state } = $chunk.boundary;\n  const resumeKeys = serializeMarker !== 0;\n  const resumeMarker =\n    serializeMarker !== 0 && (!parentEndTag || serializeStateful !== 0);\n  let flushBranchIds = \"\";\n\n  if (serializeBranch !== 0) {\n    let loopScopes: Opt<ScopeInternals>;\n    if (MARKO_DEBUG) {\n      // eslint-disable-next-line no-var\n      var seenKeys = new Set<unknown>();\n    }\n    forTo(to, from, step, (i) => {\n      const branchId = _peek_scope_id();\n      const itemKey = forStepBy(by, i);\n      if (MARKO_DEBUG) {\n        if (by) {\n          if (seenKeys.has(itemKey)) {\n            console.error(\n              `A <for> tag's \\`by\\` attribute must return a unique value for each item, but a duplicate was found matching:`,\n              itemKey,\n            );\n          }\n          seenKeys.add(itemKey);\n        }\n      }\n      if (resumeMarker) {\n        if (singleNode) {\n          flushBranchIds = \" \" + branchId + flushBranchIds;\n        } else {\n          $chunk.writeHTML(\n            state.mark(ResumeSymbol.BranchStart, flushBranchIds),\n          );\n          flushBranchIds = branchId + \"\";\n        }\n      }\n\n      withBranchId(branchId, () => {\n        cb(i);\n        const branchScope = writeScope(branchId, {});\n        if (resumeKeys && itemKey !== i) {\n          branchScope[AccessorProp.LoopKey] = itemKey;\n        }\n        if (!resumeMarker) {\n          loopScopes = push(loopScopes, referenceScope(branchScope));\n        }\n      });\n    });\n\n    if (loopScopes) {\n      writeScope(scopeId, {\n        [AccessorPrefix.BranchScopes + accessor]: loopScopes,\n      });\n    }\n  } else {\n    forTo(to, from, step, cb);\n  }\n\n  writeBranchEnd(\n    scopeId,\n    accessor,\n    serializeStateful,\n    serializeMarker,\n    parentEndTag,\n    singleNode,\n    singleNode ? flushBranchIds : flushBranchIds ? \" \" + flushBranchIds : \"\",\n  );\n}\n\nexport function _for_until(\n  to: number,\n  from: number | Falsy,\n  step: number | Falsy,\n  cb: (index: number) => void,\n  by: Falsy | ((v: number) => unknown),\n  scopeId: number,\n  accessor: Accessor,\n  serializeBranch?: 0 | 1,\n  serializeMarker?: 0 | 1,\n  serializeStateful?: 0 | 1,\n  parentEndTag?: string | 0,\n  singleNode?: 1,\n): void {\n  const { state } = $chunk.boundary;\n  const resumeKeys = serializeMarker !== 0;\n  const resumeMarker =\n    serializeMarker !== 0 && (!parentEndTag || serializeStateful !== 0);\n  let flushBranchIds = \"\";\n\n  if (serializeBranch !== 0) {\n    let loopScopes: Opt<ScopeInternals>;\n    if (MARKO_DEBUG) {\n      // eslint-disable-next-line no-var\n      var seenKeys = new Set<unknown>();\n    }\n    forUntil(to, from, step, (i) => {\n      const branchId = _peek_scope_id();\n      const itemKey = forStepBy(by, i);\n      if (MARKO_DEBUG) {\n        if (by) {\n          if (seenKeys.has(itemKey)) {\n            console.error(\n              `A <for> tag's \\`by\\` attribute must return a unique value for each item, but a duplicate was found matching:`,\n              itemKey,\n            );\n          }\n          seenKeys.add(itemKey);\n        }\n      }\n\n      if (resumeMarker) {\n        if (singleNode) {\n          flushBranchIds = \" \" + branchId + flushBranchIds;\n        } else {\n          $chunk.writeHTML(\n            state.mark(ResumeSymbol.BranchStart, flushBranchIds),\n          );\n          flushBranchIds = branchId + \"\";\n        }\n      }\n\n      withBranchId(branchId, () => {\n        cb(i);\n        const branchScope = writeScope(branchId, {});\n        if (resumeKeys && itemKey !== i) {\n          branchScope[AccessorProp.LoopKey] = itemKey;\n        }\n        if (!resumeMarker) {\n          loopScopes = push(loopScopes, referenceScope(branchScope));\n        }\n      });\n    });\n\n    if (loopScopes) {\n      writeScope(scopeId, {\n        [AccessorPrefix.BranchScopes + accessor]: loopScopes,\n      });\n    }\n  } else {\n    forUntil(to, from, step, cb);\n  }\n\n  writeBranchEnd(\n    scopeId,\n    accessor,\n    serializeStateful,\n    serializeMarker,\n    parentEndTag,\n    singleNode,\n    singleNode ? flushBranchIds : flushBranchIds ? \" \" + flushBranchIds : \"\",\n  );\n}\n\nexport function _if(\n  cb: () => void | number,\n  scopeId: number,\n  accessor: Accessor,\n  serializeBranch?: 0 | 1,\n  serializeMarker?: 0 | 1,\n  serializeStateful?: 0 | 1,\n  parentEndTag?: string | 0,\n  singleNode?: 1,\n) {\n  const { state } = $chunk.boundary;\n  const resumeBranch = serializeBranch !== 0;\n  const resumeMarker =\n    serializeMarker !== 0 && (!parentEndTag || serializeStateful !== 0);\n  const branchId = _peek_scope_id();\n  if (resumeMarker && resumeBranch && !singleNode) {\n    $chunk.writeHTML(state.mark(ResumeSymbol.BranchStart, \"\"));\n  }\n\n  const branchIndex = resumeBranch ? withBranchId(branchId, cb) : cb();\n  const shouldWriteBranch = resumeBranch && branchIndex !== undefined;\n\n  if (shouldWriteBranch && (branchIndex || !resumeMarker)) {\n    writeScope(scopeId, {\n      // TODO: technically conditional renderer should only be written when either the\n      // condition is stateful, or if there are direct closures.\n      // It may make sense to pass in another arg for this.\n      [AccessorPrefix.ConditionalRenderer + accessor]: branchIndex || undefined, // we convert 0 to undefined since the runtime defaults branch to 0.\n      [AccessorPrefix.BranchScopes + accessor]: resumeMarker\n        ? undefined\n        : referenceScope(writeScope(branchId, {})),\n    });\n  }\n\n  writeBranchEnd(\n    scopeId,\n    accessor,\n    serializeStateful,\n    serializeMarker,\n    parentEndTag,\n    singleNode,\n    shouldWriteBranch ? \" \" + branchId : \"\",\n  );\n}\n\nfunction writeBranchEnd(\n  scopeId: number,\n  accessor: Accessor,\n  serializeStateful: undefined | 0 | 1,\n  serializeMarker: undefined | 0 | 1,\n  parentEndTag: string | undefined | 0,\n  singleNode?: 1,\n  branchIds?: string,\n) {\n  const endTag = parentEndTag || \"\";\n  if (serializeMarker !== 0) {\n    if (!parentEndTag || serializeStateful !== 0) {\n      const { state } = $chunk.boundary;\n      const mark = singleNode\n        ? state.mark(\n            parentEndTag\n              ? ResumeSymbol.BranchEndSingleNodeOnlyChildInParent\n              : ResumeSymbol.BranchEndSingleNode,\n            scopeId + \" \" + accessor + (branchIds || \"\"),\n          )\n        : state.mark(\n            parentEndTag\n              ? ResumeSymbol.BranchEndOnlyChildInParent\n              : ResumeSymbol.BranchEnd,\n            scopeId + \" \" + accessor + (branchIds || \"\"),\n          );\n      $chunk.writeHTML(mark + endTag);\n    } else {\n      $chunk.writeHTML(endTag + _el_resume(scopeId, accessor));\n    }\n  } else {\n    $chunk.writeHTML(endTag);\n  }\n}\n\nfunction scopeHasReference(scope: PartialScope) {\n  return !!(scope as ScopeInternals)[K_SCOPE_REFERENCED];\n}\n\nfunction referenceScope(scope: ScopeInternals) {\n  scope[K_SCOPE_REFERENCED] = 1;\n  return scope;\n}\n\nlet writeScope = (scopeId: number, partialScope: PartialScope) => {\n  return writeScopeToState($chunk.boundary.state, scopeId, partialScope);\n};\n\nexport function writeScopeToState(\n  state: State,\n  scopeId: number,\n  partialScope: PartialScope,\n) {\n  const { scopes } = state;\n  let scope: ScopeInternals | undefined = scopes.get(scopeId);\n  state.needsMainRuntime = true;\n\n  if (scope) {\n    Object.assign(scope, partialScope);\n  } else {\n    scope = partialScope;\n    scope[K_SCOPE_ID] = scopeId;\n    state.scopes.set(scopeId, scope);\n  }\n\n  if (state.writeScopes) {\n    state.writeScopes[scopeId] = scope;\n  } else {\n    state.writeScopes = { [scopeId]: scope };\n  }\n\n  return scope;\n}\n\nif (MARKO_DEBUG) {\n  writeScope = (\n    (writeScope) =>\n    (\n      scopeId: number,\n      partialScope: PartialScope,\n      file?: string,\n      loc?: string | 0,\n      vars?: Record<string, string>,\n    ) => {\n      const scope = writeScope(scopeId, partialScope);\n      if (file && loc !== undefined) {\n        setDebugInfo(scope, file, loc, vars);\n      }\n      return scope;\n    }\n  )(writeScope) as typeof writeScope;\n}\n\nexport { writeScope as _scope };\n\nexport function _existing_scope(scopeId: number) {\n  return writeScope(scopeId, _scope_with_id(scopeId));\n}\n\nexport function _scope_with_id(scopeId: number) {\n  const { state } = $chunk.boundary;\n  let scope = state.scopes.get(scopeId);\n  if (!scope) {\n    scope = { [K_SCOPE_ID]: scopeId };\n    state.scopes.set(scopeId, scope);\n  }\n  return referenceScope(scope);\n}\n\nexport function $global() {\n  return $chunk.boundary.state.$global;\n}\n\nexport function _await<T>(\n  scopeId: number,\n  accessor: Accessor,\n  promise: Promise<T> | T,\n  content: (value: T) => void,\n  serializeMarker?: 0 | 1,\n) {\n  const resumeMarker = serializeMarker !== 0;\n\n  if (!isPromise(promise)) {\n    if (resumeMarker) {\n      const branchId = _peek_scope_id();\n      $chunk.writeHTML(\n        $chunk.boundary.state.mark(ResumeSymbol.BranchStart, \"\"),\n      );\n      content(promise);\n      $chunk.writeHTML(\n        $chunk.boundary.state.mark(\n          ResumeSymbol.BranchEnd,\n          scopeId + \" \" + accessor + \" \" + branchId,\n        ),\n      );\n    } else {\n      content(promise);\n    }\n    return;\n  }\n\n  const chunk = $chunk;\n  const { boundary } = chunk;\n  chunk.next = $chunk = new Chunk(boundary, chunk.next, chunk.context);\n  chunk.async = true;\n  if (chunk.context?.[kPendingContexts]) {\n    chunk.context = { ...chunk.context, [kPendingContexts]: 0 };\n  }\n  boundary.startAsync();\n  promise.then(\n    (value) => {\n      if (chunk.async) {\n        chunk.async = false;\n\n        if (!boundary.signal.aborted) {\n          chunk.render(() => {\n            if (resumeMarker) {\n              const branchId = _peek_scope_id();\n              $chunk.writeHTML(\n                $chunk.boundary.state.mark(ResumeSymbol.BranchStart, \"\"),\n              );\n              withIsAsync(content, value);\n              $chunk.writeHTML(\n                $chunk.boundary.state.mark(\n                  ResumeSymbol.BranchEnd,\n                  scopeId + \" \" + accessor + \" \" + branchId,\n                ),\n              );\n            } else {\n              withIsAsync(content, value);\n            }\n          });\n          boundary.endAsync(chunk);\n        }\n      }\n    },\n    (err) => {\n      chunk.async = false;\n      boundary.abort(err);\n    },\n  );\n}\n\nexport function _try(\n  scopeId: number,\n  accessor: Accessor,\n  content: () => void,\n  input: {\n    placeholder?: { content?(): void };\n    catch?: { content?(err: unknown): void };\n  },\n) {\n  const branchId = _peek_scope_id();\n  $chunk.writeHTML($chunk.boundary.state.mark(ResumeSymbol.BranchStart, \"\"));\n\n  const catchContent = normalizeDynamicRenderer(input.catch) as\n    | ServerRenderer\n    | undefined;\n  const placeholderContent = normalizeDynamicRenderer(input.placeholder) as\n    | ServerRenderer\n    | undefined;\n\n  if (catchContent) {\n    tryCatch(\n      placeholderContent\n        ? () => tryPlaceholder(content, placeholderContent, branchId)\n        : content,\n      catchContent,\n    );\n  } else if (placeholderContent) {\n    tryPlaceholder(content, placeholderContent, branchId);\n  } else {\n    content();\n  }\n\n  writeScope(branchId, {\n    [AccessorProp.BranchAccessor]: accessor,\n    [AccessorProp.CatchContent]: catchContent,\n    [AccessorProp.PlaceholderContent]: placeholderContent,\n  });\n\n  $chunk.writeHTML(\n    $chunk.boundary.state.mark(\n      ResumeSymbol.BranchEnd,\n      scopeId + \" \" + accessor + \" \" + branchId,\n    ),\n  );\n}\n\nfunction tryPlaceholder(\n  content: () => void,\n  placeholder: () => void,\n  branchId: number,\n) {\n  const chunk = $chunk;\n  const { boundary } = chunk;\n  const body = new Chunk(boundary, null, chunk.context);\n\n  if (body === body.render(content)) {\n    chunk.append(body);\n    return;\n  }\n\n  chunk.next = $chunk = new Chunk(boundary, chunk.next, chunk.context);\n  chunk.placeholderBody = body;\n  chunk.placeholderRender = placeholder;\n  chunk.placeholderBranchId = branchId;\n}\n\nfunction tryCatch(content: () => void, catchContent: (err: unknown) => void) {\n  const chunk = $chunk;\n  const { boundary } = chunk;\n  const { state } = boundary;\n  const catchBoundary = new Boundary(state);\n  const body = new Chunk(catchBoundary, null, chunk.context);\n  const bodyEnd = body.render(content);\n\n  if (catchBoundary.signal.aborted) {\n    // Sync error\n    catchContent(catchBoundary.signal.reason);\n    return;\n  }\n\n  if (body === bodyEnd) {\n    // Sync success\n    chunk.append(body);\n    return;\n  }\n\n  const reorderId = state.nextReorderId();\n  const endMarker = state.mark(Mark.PlaceholderEnd, reorderId);\n  const bodyNext =\n    (bodyEnd.next =\n    $chunk =\n      new Chunk(boundary, chunk.next, body.context));\n  chunk.next = body;\n  chunk.writeHTML(state.mark(Mark.Placeholder, reorderId));\n  bodyEnd.writeHTML(endMarker);\n  boundary.startAsync();\n  catchBoundary.onNext = () => {\n    if (boundary.signal.aborted) return;\n    if (catchBoundary.signal.aborted) {\n      if (!bodyEnd.consumed) {\n        let cur: Chunk = body;\n        let writeMarker = true;\n\n        do {\n          const next = cur.next!;\n\n          if (cur.boundary !== catchBoundary) {\n            cur.boundary.abort(catchBoundary.signal.reason);\n          }\n\n          if (writeMarker && !cur.consumed) {\n            writeMarker = false;\n            cur.async = false;\n            cur.next = bodyNext;\n            cur.needsWalk = true;\n            cur.html = endMarker;\n            cur.scripts = cur.effects = cur.lastEffect = \"\";\n            cur.placeholderBody = cur.placeholderRender = cur.reorderId = null;\n          }\n\n          cur = next;\n        } while (cur !== bodyNext);\n      }\n\n      const catchChunk = new Chunk(boundary, null, chunk.context);\n      catchChunk.reorderId = reorderId;\n      catchChunk.render(catchContent, catchBoundary.signal.reason);\n      state.reorder(catchChunk);\n      boundary.endAsync();\n    } else if (!catchBoundary.count) {\n      boundary.endAsync();\n    } else {\n      boundary.onNext();\n    }\n  };\n}\n\nexport class State {\n  public tagId = 1;\n  public scopeId = 1;\n  public reorderId = 1;\n  public lastSerializedScopeId = this.scopeId;\n  public hasGlobals = false;\n  public needsMainRuntime = false;\n  public hasMainRuntime = false;\n  public hasReorderRuntime = false;\n  public hasWrittenResume = false;\n  public walkOnNextFlush = false;\n  public trailerHTML = \"\";\n  public resumes = \"\";\n  public nonceAttr = \"\";\n  public serializer = new Serializer();\n  public writeReorders: Chunk[] | null = null;\n  public scopes = new Map<number, PartialScope>();\n  public writeScopes: null | Record<number, PartialScope> = null;\n  public ensureReady: null | Record<string, 0 | 1> = null;\n  public serializeReason: undefined | 0 | 1;\n  constructor(\n    public $global: $Global & { renderId: string; runtimeId: string },\n  ) {\n    this.$global = $global;\n    if ($global.cspNonce) {\n      this.nonceAttr = \" nonce\" + attrAssignment($global.cspNonce);\n    }\n  }\n\n  get runtimePrefix() {\n    const { $global } = this;\n    return $global.runtimeId + \".\" + $global.renderId;\n  }\n\n  get commentPrefix() {\n    const { $global } = this;\n    return $global.runtimeId + $global.renderId;\n  }\n\n  reorder(chunk: Chunk) {\n    if (this.writeReorders) {\n      this.writeReorders.push(chunk);\n    } else {\n      this.needsMainRuntime = true;\n      this.writeReorders = [chunk];\n    }\n  }\n\n  nextReorderId() {\n    const c =\n      \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_0123456789\";\n    let n = this.reorderId++;\n    let r = c[n % 54]; // Avoids chars that cannot start a property name.\n    for (n = (n / 54) | 0; n; n >>>= 6) {\n      r += c[n & 63];\n    }\n\n    return r;\n  }\n\n  mark(code: ResumeSymbol | Mark, str: string) {\n    return \"<!--\" + this.commentPrefix + code + str + \"-->\";\n  }\n}\n\nexport enum FlushStatus {\n  complete,\n  continue,\n  aborted,\n}\n\nexport class Boundary extends AbortController {\n  public onNext = NOOP;\n  public count = 0;\n  constructor(\n    public state: State,\n    parent?: AbortSignal,\n  ) {\n    super();\n    this.state = state;\n    this.signal.addEventListener(\"abort\", () => {\n      this.count = 0;\n      this.state = new State(this.state.$global);\n      this.onNext();\n    });\n\n    if (parent) {\n      if (parent.aborted) {\n        this.abort(parent.reason);\n      } else {\n        parent.addEventListener(\"abort\", () => {\n          this.abort(parent.reason);\n        });\n      }\n    }\n  }\n\n  flush() {\n    if (!this.signal.aborted) {\n      flushSerializer(this);\n    }\n\n    return this.count\n      ? FlushStatus.continue\n      : this.signal.aborted\n        ? FlushStatus.aborted\n        : FlushStatus.complete;\n  }\n\n  startAsync() {\n    if (!this.signal.aborted) {\n      this.count++;\n    }\n  }\n\n  endAsync(chunk?: Chunk) {\n    if (!this.signal.aborted && this.count) {\n      this.count--;\n\n      if (chunk?.reorderId) {\n        this.state.reorder(chunk);\n      }\n\n      this.onNext();\n    }\n  }\n}\n\nexport class Chunk {\n  public html = \"\";\n  public scripts = \"\";\n  public effects = \"\";\n  public lastEffect = \"\";\n  public async = false;\n  public consumed = false;\n  public needsWalk = false;\n  public reorderId: string | null = null;\n  public placeholderBody: Chunk | null = null;\n  public placeholderRender: (() => void) | null = null;\n  public placeholderBranchId: number | null = null;\n  constructor(\n    public boundary: Boundary,\n    public next: Chunk | null,\n    public context: Record<string | symbol, unknown> | null,\n  ) {\n    this.boundary = boundary;\n    this.next = next;\n    this.context = context;\n  }\n\n  writeHTML(html: string) {\n    this.html += html;\n  }\n\n  writeEffect(scopeId: number, registryId: string) {\n    if (this.lastEffect === registryId) {\n      this.effects += \" \" + scopeId;\n    } else {\n      this.lastEffect = registryId;\n      this.effects = concatEffects(this.effects, registryId + \" \" + scopeId);\n    }\n  }\n\n  writeScript(script: string) {\n    this.scripts = concatScripts(this.scripts, script);\n  }\n\n  append(chunk: Chunk) {\n    this.html += chunk.html;\n    this.effects = concatEffects(this.effects, chunk.effects);\n    this.scripts = concatScripts(this.scripts, chunk.scripts);\n    this.lastEffect = chunk.lastEffect || this.lastEffect;\n  }\n  flushPlaceholder() {\n    if (this.placeholderBody) {\n      const body = this.placeholderBody.consume();\n\n      if (body.async) {\n        const { state } = this.boundary;\n        const reorderId = (body.reorderId = this.placeholderBranchId\n          ? this.placeholderBranchId + \"\"\n          : state.nextReorderId());\n        this.placeholderBranchId = null;\n        this.writeHTML(state.mark(Mark.Placeholder, reorderId));\n        const after = this.render(this.placeholderRender!);\n        if (after !== this) {\n          // TODO: eventually this should be allowed.\n          // Once it's allowed we'll need check if placeholder needs to be disposed once body complete.\n          this.boundary.abort(\n            new Error(\"An @placeholder cannot contain async content.\"),\n          );\n        }\n        after.writeHTML(state.mark(Mark.PlaceholderEnd, reorderId));\n        state.reorder(body);\n      } else {\n        body.next = this.next;\n        this.next = body;\n      }\n\n      this.placeholderRender = this.placeholderBody = null;\n    }\n  }\n\n  consume() {\n    let cur: Chunk = this;\n    let needsWalk = cur.needsWalk;\n\n    if (cur.next && !cur.async) {\n      let html = \"\";\n      let effects = \"\";\n      let scripts = \"\";\n      let lastEffect = \"\";\n      do {\n        cur.flushPlaceholder();\n        needsWalk ||= cur.needsWalk;\n        html += cur.html;\n        effects = concatEffects(effects, cur.effects);\n        scripts = concatScripts(scripts, cur.scripts);\n        lastEffect = cur.lastEffect || lastEffect;\n        cur.consumed = true;\n        cur = cur.next;\n      } while (cur.next && !cur.async);\n\n      cur.needsWalk = needsWalk;\n      cur.html = html + cur.html;\n      cur.effects = concatEffects(effects, cur.effects);\n      cur.scripts = concatScripts(scripts, cur.scripts);\n      cur.lastEffect = lastEffect;\n    }\n\n    return cur;\n  }\n\n  render(content: () => void): Chunk;\n  render<T>(content: (val: T) => void, val: T): Chunk;\n  render<T>(content: (val?: T) => void, val?: T): Chunk {\n    const prev = $chunk;\n    $chunk = this;\n    try {\n      content(val);\n      return $chunk;\n    } catch (err) {\n      this.boundary.abort(err);\n      return this;\n    } finally {\n      $chunk = prev;\n    }\n  }\n\n  flushScript() {\n    const { boundary, effects } = this;\n    const { state } = boundary;\n    const { $global, runtimePrefix, nonceAttr } = state;\n    let { html, scripts } = this;\n    let needsWalk = state.walkOnNextFlush;\n    if (needsWalk) state.walkOnNextFlush = false;\n\n    if (state.needsMainRuntime && !state.hasMainRuntime) {\n      state.hasMainRuntime = true;\n      scripts = concatScripts(\n        scripts,\n        WALKER_RUNTIME_CODE +\n          '(\"' +\n          $global.runtimeId +\n          '\")(\"' +\n          $global.renderId +\n          '\")',\n      );\n    }\n\n    if (state.ensureReady && state.hasMainRuntime) {\n      let first = true;\n      for (const id in state.ensureReady) {\n        if (state.ensureReady[id]) {\n          state.ensureReady[id] = 0;\n          if (first) {\n            scripts = concatScripts(\n              scripts,\n              \"(\" +\n                runtimePrefix +\n                RuntimeKey.Blocking +\n                \"={})\" +\n                toAccess(toObjectKey(id)) +\n                \"=1\",\n            );\n          } else {\n            scripts = concatScripts(\n              scripts,\n              runtimePrefix +\n                RuntimeKey.Blocking +\n                toAccess(toObjectKey(id)) +\n                \"=1\",\n            );\n          }\n        }\n\n        first = false;\n      }\n    }\n\n    if (effects) {\n      needsWalk = true;\n      state.resumes = state.resumes\n        ? state.resumes + ',\"' + effects + '\"'\n        : '\"' + effects + '\"';\n    }\n\n    if (state.resumes) {\n      if (state.hasWrittenResume) {\n        scripts = concatScripts(\n          scripts,\n          runtimePrefix + RuntimeKey.Resume + \".push(\" + state.resumes + \")\",\n        );\n      } else {\n        state.hasWrittenResume = true;\n        scripts = concatScripts(\n          scripts,\n          runtimePrefix + RuntimeKey.Resume + \"=[\" + state.resumes + \"]\",\n        );\n      }\n    }\n\n    if (state.writeReorders) {\n      needsWalk = true;\n\n      if (!state.hasReorderRuntime) {\n        state.hasReorderRuntime = true;\n        html +=\n          \"<style \" +\n          state.commentPrefix +\n          nonceAttr +\n          \">t{display:none}</style>\";\n        scripts = concatScripts(\n          scripts,\n          REORDER_RUNTIME_CODE + \"(\" + runtimePrefix + \")\",\n        );\n      }\n\n      for (const reorderedChunk of state.writeReorders) {\n        const { reorderId } = reorderedChunk;\n        let reorderHTML = \"\";\n        let reorderEffects = \"\";\n        let reorderScripts = \"\";\n        let cur = reorderedChunk;\n        reorderedChunk.reorderId = null;\n\n        for (;;) {\n          cur.flushPlaceholder();\n          const { next } = cur;\n          cur.consumed = true;\n          reorderHTML += cur.html;\n          reorderEffects = concatEffects(reorderEffects, cur.effects);\n          reorderScripts = concatScripts(reorderScripts, cur.scripts);\n\n          if (cur.async) {\n            reorderHTML += state.mark(\n              Mark.ReorderMarker,\n              (cur.reorderId = state.nextReorderId()),\n            );\n            cur.html = cur.effects = cur.scripts = cur.lastEffect = \"\";\n            cur.next = null;\n          }\n\n          if (next) {\n            cur = next;\n          } else {\n            break;\n          }\n        }\n\n        if (reorderEffects) {\n          if (!state.hasWrittenResume) {\n            state.hasWrittenResume = true;\n            scripts = concatScripts(\n              scripts,\n              runtimePrefix + RuntimeKey.Resume + \"=[]\",\n            );\n          }\n\n          reorderScripts = concatScripts(\n            reorderScripts,\n            '_.push(\"' + reorderEffects + '\")',\n          );\n        }\n\n        scripts = concatScripts(\n          scripts,\n          reorderScripts &&\n            runtimePrefix +\n              RuntimeKey.Scripts +\n              toAccess(reorderId!) +\n              \"=_=>{\" +\n              reorderScripts +\n              \"}\",\n        );\n\n        html +=\n          \"<t \" +\n          state.commentPrefix +\n          \"=\" +\n          reorderId +\n          \">\" +\n          reorderHTML +\n          \"</t>\";\n      }\n\n      state.writeReorders = null;\n    }\n\n    if (needsWalk) {\n      scripts = concatScripts(scripts, runtimePrefix + RuntimeKey.Walk + \"()\");\n    }\n\n    this.html = html;\n    this.scripts = scripts;\n    this.effects = this.lastEffect = state.resumes = \"\";\n    return this;\n  }\n\n  flushHTML() {\n    const { boundary } = this;\n    const { state } = boundary;\n    if (this.needsWalk) {\n      this.needsWalk = false;\n      state.walkOnNextFlush = true;\n    }\n\n    this.flushScript();\n    const { scripts } = this;\n    const { $global, nonceAttr } = state;\n    const { __flush__ } = $global;\n    let { html } = this;\n    this.html = this.scripts = \"\";\n\n    if (scripts) {\n      html += \"<script\" + nonceAttr + \">\" + scripts + \"</script>\";\n    }\n\n    if (__flush__) {\n      $global.__flush__ = undefined;\n      html = __flush__($global, html);\n    }\n\n    if (!boundary.count) {\n      html += state.trailerHTML;\n    }\n\n    return html;\n  }\n}\n\nfunction flushSerializer(boundary: Boundary) {\n  const { state } = boundary;\n  const { writeScopes, serializer } = state;\n  const { flushed } = serializer;\n  if (writeScopes || flushed) {\n    let shouldSerialize = false;\n    const serializeData: [\n      $global?: ReturnType<typeof getFilteredGlobals>,\n      ...(number | PartialScope)[],\n    ] = [];\n    let { lastSerializedScopeId } = state;\n\n    if (!state.hasGlobals) {\n      state.hasGlobals = true;\n      serializeData.push(getFilteredGlobals(state.$global));\n      shouldSerialize = true;\n    }\n\n    for (const key in writeScopes) {\n      const scope = writeScopes[key as unknown as number];\n      if (\n        scopeHasReference(scope) ||\n        Object.getOwnPropertyNames(scope).length\n      ) {\n        const scopeId = getScopeId(scope)!;\n        const scopeIdDelta = scopeId - lastSerializedScopeId;\n        lastSerializedScopeId = scopeId + 1;\n        if (scopeIdDelta) serializeData.push(scopeIdDelta);\n        serializeData.push(scope);\n        shouldSerialize = true;\n      }\n    }\n\n    if (shouldSerialize) {\n      state.resumes = concatSequence(\n        state.resumes,\n        serializer.stringify(serializeData, boundary),\n      );\n    }\n    state.lastSerializedScopeId = lastSerializedScopeId;\n    state.writeScopes = null;\n    if (flushed) {\n      state.walkOnNextFlush = true;\n    }\n  }\n}\n\nexport function _trailers(html: string) {\n  $chunk.boundary.state.trailerHTML += html;\n}\n\nfunction concatEffects(a: string, b: string) {\n  return a ? (b ? a + \" \" + b : a) : b;\n}\n\nfunction concatSequence(a: string, b: string) {\n  return a ? (b ? a + \",\" + b : a) : b;\n}\n\nfunction concatScripts(a: string, b: string) {\n  return a ? (b ? a + \";\" + b : a) : b;\n}\n\ntype QueueCallback = (ticked: true) => void;\nconst tick =\n  globalThis.setImmediate ||\n  globalThis.setTimeout ||\n  globalThis.queueMicrotask ||\n  ((cb: () => void) => Promise.resolve().then(cb));\nlet tickQueue: Set<QueueCallback> | undefined;\n\nexport function queueTick(cb: QueueCallback) {\n  if (tickQueue) {\n    tickQueue.add(cb);\n  } else {\n    tickQueue = new Set([cb]);\n    tick(flushTickQueue);\n  }\n}\n\nexport function offTick(cb: QueueCallback) {\n  tickQueue?.delete(cb);\n}\n\nfunction flushTickQueue() {\n  const queue = tickQueue!;\n  tickQueue = undefined;\n\n  for (const cb of queue) {\n    cb(true);\n  }\n}\n\nfunction isPromise(value: unknown): value is Promise<unknown> {\n  return (\n    value != null && typeof (value as Promise<unknown>).then === \"function\"\n  );\n}\n\nfunction getFilteredGlobals($global: Record<string, unknown>) {\n  if (!$global) return 0;\n\n  const serializedGlobals = $global.serializedGlobals as\n    | string[]\n    | Record<string, boolean>\n    | undefined;\n\n  if (!serializedGlobals) return 0;\n\n  let filtered: 0 | Record<string, unknown> = 0;\n\n  if (Array.isArray(serializedGlobals)) {\n    for (const key of serializedGlobals) {\n      const value = $global[key];\n      if (value !== undefined) {\n        if (filtered) {\n          filtered[key] = value;\n        } else {\n          filtered = { [key]: value };\n        }\n      }\n    }\n  } else {\n    for (const key in serializedGlobals) {\n      if (serializedGlobals[key]) {\n        const value = $global[key];\n        if (value !== undefined) {\n          if (filtered) {\n            filtered[key] = value;\n          } else {\n            filtered = { [key]: value };\n          }\n        }\n      }\n    }\n  }\n\n  return filtered;\n}\n\nexport function _subscribe(\n  subscribers: Set<ScopeInternals>,\n  scope: ScopeInternals,\n) {\n  $chunk.boundary.state.serializer.writeCall(scope, subscribers, \"add\");\n  return referenceScope(scope);\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/html.ts",
    "content": "export { attrTag, attrTags } from \"./common/attr-tag\";\nexport {\n  _assert_hoist,\n  _el_read_error,\n  _hoist_read_error,\n} from \"./common/errors\";\nexport {\n  _attr,\n  _attr_class,\n  _attr_details_or_dialog_open as _attr_details_open,\n  _attr_details_or_dialog_open as _attr_dialog_open,\n  _attr_input_checked,\n  _attr_input_checkedValue,\n  _attr_input_value,\n  _attr_nonce,\n  _attr_option_value,\n  _attr_select_value,\n  _attr_style,\n  _attr_textarea_value,\n  _attrs,\n  _attrs_content,\n  _attrs_partial,\n  _attrs_partial_content,\n} from \"./html/attrs\";\nexport { compat } from \"./html/compat\";\nexport {\n  _escape,\n  _escape_script,\n  _escape_style,\n  _escape_text,\n  _unescaped,\n} from \"./html/content\";\nexport { _content, _content_resume, _dynamic_tag } from \"./html/dynamic-tag\";\nexport {\n  forIn,\n  forInBy,\n  forOf,\n  forOfBy,\n  forStepBy,\n  forTo,\n  forUntil,\n} from \"./html/for\";\nexport { _template } from \"./html/template\";\nexport {\n  _attr_content,\n  _await,\n  _el,\n  _el_resume,\n  _existing_scope,\n  _for_in,\n  _for_of,\n  _for_to,\n  _for_until,\n  _hoist,\n  _html,\n  _id,\n  _if,\n  _peek_scope_id,\n  _resume,\n  _resume_branch,\n  _scope,\n  _scope_id,\n  _scope_reason,\n  _scope_with_id,\n  _script,\n  _sep,\n  _serialize_guard,\n  _serialize_if,\n  _set_serialize_reason,\n  _subscribe,\n  _trailers,\n  _try,\n  _var,\n  $global,\n} from \"./html/writer\";\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/core/attrs.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  assertNoArgs,\n  assertNoAttributes,\n  assertNoAttributeTags,\n  assertNoParams,\n  diagnosticDeprecate,\n  type Tag,\n} from \"@marko/compiler/babel-utils\";\n\nimport { assertNoBodyContent } from \"../util/assert\";\n\nexport default {\n  migrate: [\n    (tag) => {\n      assertNoArgs(tag);\n      assertNoParams(tag);\n      assertNoAttributes(tag);\n      assertNoBodyContent(tag);\n      assertNoAttributeTags(tag);\n      diagnosticDeprecate(tag, {\n        label:\n          \"The `attrs` tag is deprecated, prefer destructuring `input` via the `const` tag.\",\n        fix() {\n          const tagVar = tag.node.var;\n          if (\n            tagVar &&\n            !(tagVar.type === \"Identifier\" && tagVar.name === \"input\")\n          ) {\n            const constTag = t.markoTag(\n              t.stringLiteral(\"const\"),\n              [t.markoAttribute(\"value\", t.identifier(\"input\"))],\n              t.markoTagBody([]),\n            );\n            constTag.var = tagVar;\n            tag.replaceWith(constTag);\n          } else {\n            tag.remove();\n          }\n        },\n      });\n    },\n  ],\n  attributes: {},\n  autocomplete: [\n    {\n      displayText: \"attrs/{ ... }\",\n      description: \"Use to receive the attributes passed into this template.\",\n      snippet: \"attrs/{ $1 }$2\",\n    },\n  ],\n} as Tag;\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/core/await.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  assertNoArgs,\n  assertNoAttributeTags,\n  assertNoVar,\n  type Tag,\n} from \"@marko/compiler/babel-utils\";\n\nimport { WalkCode } from \"../../common/types\";\nimport { assertNoSpreadAttrs } from \"../util/assert\";\nimport evaluate from \"../util/evaluate\";\nimport {\n  type Binding,\n  BindingType,\n  createBinding,\n  getScopeAccessorLiteral,\n  setBindingDownstream,\n  trackParamsReferences,\n} from \"../util/references\";\nimport { callRuntime } from \"../util/runtime\";\nimport runtimeInfo from \"../util/runtime-info\";\nimport {\n  getBranchRendererArgs,\n  getOrCreateSection,\n  getScopeIdIdentifier,\n  getSection,\n  getSectionForBody,\n  setSectionParentIsOwner,\n  startSection,\n} from \"../util/sections\";\nimport { getSerializeGuard } from \"../util/serialize-guard\";\nimport {\n  addStatement,\n  addValue,\n  getSignal,\n  replaceNullishAndEmptyFunctionsWith0,\n  writeHTMLResumeStatements,\n} from \"../util/signals\";\nimport { toFirstExpressionOrBlock } from \"../util/to-first-expression-or-block\";\nimport { translateByTarget } from \"../util/visitors\";\nimport * as walks from \"../util/walks\";\nimport * as writer from \"../util/writer\";\nimport { scopeIdentifier } from \"../visitors/program\";\n\nconst kDOMBinding = Symbol(\"await tag dom binding\");\n\ndeclare module \"@marko/compiler/dist/types\" {\n  export interface MarkoTagExtra {\n    [kDOMBinding]?: Binding;\n  }\n}\n\nexport default {\n  analyze(tag: t.NodePath<t.MarkoTag>) {\n    assertNoVar(tag);\n    assertNoArgs(tag);\n    assertNoSpreadAttrs(tag);\n    assertNoAttributeTags(tag);\n    const { node } = tag;\n    const tagBody = tag.get(\"body\");\n    const section = getOrCreateSection(tag);\n    const [valueAttr] = node.attributes;\n    const tagExtra = (tag.node.extra ??= {});\n    tagExtra[kDOMBinding] = createBinding(\"#text\", BindingType.dom, section);\n\n    if (!valueAttr) {\n      throw tag\n        .get(\"name\")\n        .buildCodeFrameError(\n          \"The [`<await>` tag](https://markojs.com/docs/reference/core-tag#await) requires a [`value=` attribute](https://markojs.com/docs/reference/language#shorthand-value).\",\n        );\n    }\n\n    if (\n      node.attributes.length > 1 ||\n      !t.isMarkoAttribute(valueAttr) ||\n      valueAttr.name !== \"value\"\n    ) {\n      throw tag\n        .get(\"name\")\n        .buildCodeFrameError(\n          \"The [`<await>` tag](https://markojs.com/docs/reference/core-tag#await) only supports the [`value=` attribute](https://markojs.com/docs/reference/language#shorthand-value).\",\n        );\n    }\n\n    if (!node.body.body.length) {\n      throw tag\n        .get(\"name\")\n        .buildCodeFrameError(\n          \"The [`<await>` tag](https://markojs.com/docs/reference/core-tag#await) requires [content](https://markojs.com/docs/reference/language#tag-content).\",\n        );\n    }\n\n    if (\n      node.body.params.length &&\n      (node.body.params.length > 1 || t.isSpreadElement(node.body.params[0]))\n    ) {\n      throw tag\n        .get(\"name\")\n        .buildCodeFrameError(\n          \"The [`<await>` tag](https://markojs.com/docs/reference/core-tag#await) only supports a single parameter.\",\n        );\n    }\n\n    const bodySection = startSection(tagBody)!;\n    const valueExtra = evaluate(valueAttr.value);\n\n    getOrCreateSection(tag);\n    const paramsBinding = trackParamsReferences(tagBody, BindingType.derived);\n\n    if (paramsBinding) {\n      setBindingDownstream(paramsBinding, valueExtra);\n    }\n\n    bodySection.upstreamExpression = valueAttr.value.extra;\n  },\n  translate: translateByTarget({\n    html: {\n      enter(tag) {\n        const tagBody = tag.get(\"body\");\n        const bodySection = getSectionForBody(tagBody);\n\n        if (!bodySection) {\n          tag.remove();\n          return;\n        }\n\n        setSectionParentIsOwner(bodySection, true);\n        writer.flushBefore(tag);\n      },\n      exit(tag) {\n        const { node } = tag;\n        const [valueAttr] = node.attributes;\n        const tagExtra = node.extra!;\n        const nodeRef = tagExtra[kDOMBinding]!;\n        const tagBody = tag.get(\"body\");\n        const section = getSection(tag);\n        const bodySection = getSectionForBody(tagBody);\n        writer.flushInto(tag);\n        writeHTMLResumeStatements(tagBody);\n\n        tag\n          .replaceWith(\n            t.expressionStatement(\n              callRuntime(\n                \"_await\",\n                getScopeIdIdentifier(section),\n                getScopeAccessorLiteral(nodeRef),\n                valueAttr.value,\n                t.arrowFunctionExpression(\n                  node.body.params,\n                  toFirstExpressionOrBlock(node.body.body),\n                ),\n                getSerializeGuard(section, bodySection?.serializeReason, true),\n              ),\n            ),\n          )[0]\n          .skip();\n      },\n    },\n    dom: {\n      enter(tag) {\n        const tagBody = tag.get(\"body\");\n        const bodySection = getSectionForBody(tagBody);\n\n        if (!bodySection) {\n          tag.remove();\n          return;\n        }\n\n        setSectionParentIsOwner(bodySection, true);\n\n        walks.visit(tag, WalkCode.Replace);\n        walks.enterShallow(tag);\n      },\n      exit(tag) {\n        const { node } = tag;\n        const tagExtra = node.extra!;\n        const nodeRef = tagExtra[kDOMBinding]!;\n        const section = getSection(tag);\n        const bodySection = getSectionForBody(tag.get(\"body\"))!;\n        const signal = getSignal(section, nodeRef, \"await_promise\");\n        const valueExpr = node.attributes[0].value;\n\n        signal.build = () => {\n          const branchRenderArgs = getBranchRendererArgs(bodySection);\n          const branchParams = branchRenderArgs.pop();\n          (signal.prependStatements ||= []).push(\n            t.variableDeclaration(\"const\", [\n              t.variableDeclarator(\n                t.identifier(bodySection.name),\n                callRuntime(\n                  \"_await_content\",\n                  getScopeAccessorLiteral(nodeRef, true),\n                  ...replaceNullishAndEmptyFunctionsWith0(branchRenderArgs),\n                ),\n              ),\n            ]),\n          );\n          return callRuntime(\n            \"_await_promise\",\n            getScopeAccessorLiteral(nodeRef, true),\n            branchParams,\n          );\n        };\n\n        addStatement(\n          \"render\",\n          section,\n          undefined,\n          t.expressionStatement(\n            t.callExpression(t.identifier(bodySection.name), [scopeIdentifier]),\n          ),\n        );\n\n        addValue(\n          section,\n          valueExpr.extra?.referencedBindings,\n          signal,\n          valueExpr,\n        );\n\n        tag.remove();\n      },\n    },\n  }),\n  attributes: {},\n  autocomplete: [\n    {\n      description: \"Use to consume asynchronous an data.\",\n      descriptionMoreURL: \"https://markojs.com/docs/reference/core-tag#await\",\n    },\n  ],\n  types: runtimeInfo.name + \"/tags/await.d.marko\",\n} as Tag;\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/core/client.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport { parseStatements, type Tag } from \"@marko/compiler/babel-utils\";\nexport default {\n  parse(tag) {\n    const {\n      node,\n      hub: { file },\n    } = tag;\n    const rawValue = node.rawValue!;\n    const code = rawValue.replace(/^client\\s*/, \"\");\n    const start = node.start! + (rawValue.length - code.length);\n    let body = parseStatements(file, code, start, start + code.length);\n    if (body.length === 1 && t.isBlockStatement(body[0])) {\n      body = body[0].body;\n    }\n\n    tag.replaceWith(t.markoScriptlet(body, true, \"client\"));\n  },\n  parseOptions: {\n    statement: true,\n    rawOpenTag: true,\n  },\n  autocomplete: [\n    {\n      displayText: \"client <statement>\",\n      description:\n        \"A JavaScript statement which is only evaluated once your template is loaded on the client.\",\n      descriptionMoreURL: \"https://markojs.com/docs/syntax/#client-javascript\",\n    },\n  ],\n} as Tag;\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/core/const.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  assertNoArgs,\n  assertNoParams,\n  type Tag,\n} from \"@marko/compiler/babel-utils\";\n\nimport { assertNoBodyContent } from \"../util/assert\";\nimport evaluate from \"../util/evaluate\";\nimport { isOutputDOM } from \"../util/marko-config\";\nimport {\n  BindingType,\n  dropNodes,\n  setBindingDownstream,\n  trackVarReferences,\n} from \"../util/references\";\nimport runtimeInfo from \"../util/runtime-info\";\nimport { getSection } from \"../util/sections\";\nimport { addValue, initValue } from \"../util/signals\";\nimport translateVar from \"../util/translate-var\";\n\nexport default {\n  analyze(tag: t.NodePath<t.MarkoTag>) {\n    assertNoArgs(tag);\n    assertNoParams(tag);\n    assertNoBodyContent(tag);\n    const { node } = tag;\n    const [valueAttr] = node.attributes;\n\n    if (!node.var) {\n      throw tag\n        .get(\"name\")\n        .buildCodeFrameError(\n          \"The [`<const>` tag](https://markojs.com/docs/reference/core-tag#const) requires a [tag variable](https://markojs.com/docs/reference/language#tag-variables).\",\n        );\n    }\n\n    if (!valueAttr) {\n      throw tag\n        .get(\"name\")\n        .buildCodeFrameError(\n          \"The [`<const>` tag](https://markojs.com/docs/reference/core-tag#const) requires a [`value=` attribute](https://markojs.com/docs/reference/language#shorthand-value).\",\n        );\n    }\n\n    if (\n      node.attributes.length > 1 ||\n      !t.isMarkoAttribute(valueAttr) ||\n      (!valueAttr.default && valueAttr.name !== \"value\")\n    ) {\n      throw tag\n        .get(\"name\")\n        .buildCodeFrameError(\n          \"The [`<const>` tag](https://markojs.com/docs/reference/core-tag#const) only supports the [`value=` attribute](https://markojs.com/docs/reference/language#shorthand-value).\",\n        );\n    }\n\n    const valueExtra = evaluate(valueAttr.value);\n    const upstreamAlias = t.isIdentifier(valueAttr.value)\n      ? tag.scope.getBinding(valueAttr.value.name)?.identifier.extra?.binding\n      : undefined;\n\n    if (upstreamAlias) {\n      dropNodes(valueAttr.value);\n    }\n\n    const binding = trackVarReferences(tag, BindingType.derived, upstreamAlias);\n\n    if (binding) {\n      if (node.var!.type === \"Identifier\") {\n        const constantViolations = tag.scope.getBinding(\n          node.var.name,\n        )?.constantViolations;\n        if (constantViolations?.length) {\n          for (const assignment of constantViolations) {\n            if (assignment.type !== \"MarkoTag\") {\n              // Ignore duplicate declaration violations.\n              throw assignment.buildCodeFrameError(\n                `${node.var.name} is readonly and cannot be mutated.`,\n              );\n            }\n          }\n        }\n      }\n      if (!valueExtra.nullable) binding.nullable = false;\n      if (!upstreamAlias) setBindingDownstream(binding, valueExtra);\n    }\n  },\n  translate: {\n    exit(tag) {\n      const { node } = tag;\n      const [valueAttr] = node.attributes;\n      const { value } = valueAttr;\n\n      if (isOutputDOM()) {\n        const section = getSection(tag);\n        const varBinding = node.var!.extra?.binding;\n\n        if (varBinding && !varBinding.upstreamAlias) {\n          const derivation = initValue(varBinding)!;\n          addValue(section, value.extra?.referencedBindings, derivation, value);\n        }\n      } else {\n        translateVar(tag, value);\n      }\n\n      tag.remove();\n    },\n  },\n  parseOptions: {\n    openTagOnly: true,\n  },\n  attributes: {},\n  autocomplete: [\n    {\n      description: \"Use to create an constant binding.\",\n      descriptionMoreURL: \"https://markojs.com/docs/reference/core-tag#const\",\n    },\n  ],\n  types: runtimeInfo.name + \"/tags/const.d.marko\",\n} as Tag;\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/core/debug.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  assertNoArgs,\n  assertNoParams,\n  assertNoVar,\n  type Tag,\n} from \"@marko/compiler/babel-utils\";\n\nimport { assertNoBodyContent } from \"../util/assert\";\nimport { isOutputHTML } from \"../util/marko-config\";\nimport runtimeInfo from \"../util/runtime-info\";\nimport { getSection } from \"../util/sections\";\nimport { addStatement } from \"../util/signals\";\nimport withPreviousLocation from \"../util/with-previous-location\";\n\nexport default {\n  analyze(tag) {\n    const [valueAttr] = tag.node.attributes;\n    assertNoVar(tag);\n    assertNoArgs(tag);\n    assertNoParams(tag);\n    assertNoBodyContent(tag);\n\n    if (\n      tag.node.attributes.length > 1 ||\n      (tag.node.attributes.length === 1 &&\n        (!t.isMarkoAttribute(valueAttr) ||\n          (!valueAttr.default && valueAttr.name !== \"value\")))\n    ) {\n      throw tag\n        .get(\"name\")\n        .buildCodeFrameError(\n          \"The [`<debug>` tag](https://markojs.com/docs/reference/core-tag#debug) only supports the [`value=` attribute](https://markojs.com/docs/reference/language#shorthand-value).\",\n        );\n    }\n  },\n  translate: {\n    exit(tag) {\n      const section = getSection(tag);\n      const [valueAttr] = tag.node.attributes;\n      const referencedBindings = valueAttr?.value.extra?.referencedBindings;\n\n      const statement = withPreviousLocation(t.debuggerStatement(), tag.node);\n\n      if (isOutputHTML()) {\n        tag.insertBefore(statement);\n      } else {\n        addStatement(\"render\", section, referencedBindings, statement);\n      }\n\n      tag.remove();\n    },\n  },\n  parseOptions: {\n    openTagOnly: true,\n  },\n  attributes: {},\n  autocomplete: [\n    {\n      description: \"Debug on value change.\",\n      descriptionMoreURL: \"https://markojs.com/docs/reference/core-tag#debug\",\n    },\n  ],\n  types: runtimeInfo.name + \"/tags/debug.d.marko\",\n} as Tag;\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/core/define.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport { assertNoArgs, type Tag } from \"@marko/compiler/babel-utils\";\n\nimport { isOutputHTML } from \"../util/marko-config\";\nimport { analyzeAttributeTags } from \"../util/nested-attribute-tags\";\nimport {\n  BindingType,\n  dropNodes,\n  getAllTagReferenceNodes,\n  isReferenceHoisted,\n  mergeReferences,\n  setBindingDownstream,\n  trackParamsReferences,\n  trackVarReferences,\n} from \"../util/references\";\nimport { callRuntime } from \"../util/runtime\";\nimport runtimeInfo from \"../util/runtime-info\";\nimport {\n  getOrCreateSection,\n  getSection,\n  getSectionForBody,\n  startSection,\n} from \"../util/sections\";\nimport { setTagDownstream } from \"../util/set-tag-sections-downstream\";\nimport {\n  addStatement,\n  addValue,\n  getSignal,\n  getSignalFn,\n  initValue,\n  signalHasStatements,\n  writeHTMLResumeStatements,\n} from \"../util/signals\";\nimport { propsToExpression, translateAttrs } from \"../util/translate-attrs\";\nimport translateVar from \"../util/translate-var\";\nimport * as writer from \"../util/writer\";\n\nexport default {\n  analyze(tag: t.NodePath<t.MarkoTag>) {\n    assertNoArgs(tag);\n    if (!tag.node.var) {\n      throw tag\n        .get(\"name\")\n        .buildCodeFrameError(\n          \"The [`<define>` tag](https://markojs.com/docs/reference/core-tag#define) requires a [tag variable](https://markojs.com/docs/reference/language#tag-variables).\",\n        );\n    }\n\n    const tagBody = tag.get(\"body\");\n    const bodySection = startSection(tagBody);\n    const varBinding = trackVarReferences(tag, BindingType.derived);\n\n    if (!varBinding) {\n      dropNodes(getAllTagReferenceNodes(tag.node));\n      return;\n    }\n\n    const paramsBinding = trackParamsReferences(tagBody, BindingType.param);\n    setTagDownstream(tag, varBinding);\n\n    if (bodySection) {\n      // TODO: support destructure\n      if (t.isIdentifier(tag.node.var)) {\n        const babelBinding = tag.scope.getBinding(tag.node.var.name)!;\n        let allDirectReferences = true;\n        let allHaveInput = true;\n        for (const ref of babelBinding.referencePaths) {\n          if (isReferenceHoisted(babelBinding.path, ref)) {\n            throw ref.buildCodeFrameError(\n              \"Hoisted values must be functions. The `<define>` tag variable may not be hoisted. Please move the `<define>` tag prior to any references or extract to a separate `.marko` file.\",\n            );\n          }\n\n          if (ref.parent.type === \"MarkoTag\" && ref.parent.name === ref.node) {\n            (ref.parent.extra ??= {}).defineBodySection = bodySection;\n            allHaveInput &&= !ref.parent.arguments?.length;\n            dropNodes(ref.parent.name);\n          } else {\n            allHaveInput = false;\n            allDirectReferences = false;\n          }\n        }\n        if (allDirectReferences) {\n          const inputAlias =\n            allHaveInput && paramsBinding?.propertyAliases.get(\"0\");\n          if (inputAlias) {\n            inputAlias.nullable = false;\n          }\n          dropNodes(getAllTagReferenceNodes(tag.node));\n          return;\n        }\n      }\n    }\n\n    analyzeAttributeTags(tag);\n    const tagExtra = mergeReferences(\n      getOrCreateSection(tag),\n      tag.node,\n      getAllTagReferenceNodes(tag.node),\n    );\n\n    setBindingDownstream(varBinding, tagExtra);\n  },\n  translate: {\n    enter(tag) {\n      if (!tag.node.var) {\n        tag.remove();\n        return;\n      }\n\n      if (isOutputHTML()) {\n        writer.flushBefore(tag);\n      }\n    },\n    exit(tag) {\n      const { node } = tag;\n      const translatedAttrs = translateAttrs(tag);\n      if (isOutputHTML()) {\n        writer.flushInto(tag);\n        writeHTMLResumeStatements(tag.get(\"body\"));\n        tag.insertBefore(translatedAttrs.statements);\n        translateVar(tag, propsToExpression(translatedAttrs.properties));\n      } else {\n        if (t.isIdentifier(node.var)) {\n          const babelBinding = tag.scope.getBinding(node.var.name)!;\n          let hasDirectReferences = false;\n          let allDirectReferences = true;\n\n          for (const ref of babelBinding.referencePaths) {\n            if (\n              ref.parent.type === \"MarkoTag\" &&\n              ref.parent.name === ref.node\n            ) {\n              hasDirectReferences = true;\n            } else {\n              allDirectReferences = false;\n            }\n          }\n\n          if (hasDirectReferences) {\n            const bodySection = getSectionForBody(tag.get(\"body\"));\n            if (bodySection) {\n              const signal = getSignal(bodySection, undefined);\n              signal.build = () => {\n                if (signalHasStatements(signal)) {\n                  return callRuntime(\"_child_setup\", getSignalFn(signal));\n                }\n              };\n\n              if (allDirectReferences) {\n                tag.remove();\n                return;\n              }\n            }\n          }\n        }\n\n        const section = getSection(tag);\n        const referencedBindings = node.extra?.referencedBindings;\n        if (translatedAttrs.statements.length) {\n          addStatement(\n            \"render\",\n            section,\n            referencedBindings,\n            translatedAttrs.statements,\n          );\n        }\n\n        addValue(\n          section,\n          referencedBindings,\n          initValue(tag.get(\"var\").node!.extra!.binding!)!,\n          propsToExpression(translatedAttrs.properties),\n        );\n      }\n\n      tag.remove();\n    },\n  },\n  attributes: {},\n  autocomplete: [\n    {\n      description:\n        \"Use to create a constant object binding that can be rendered.\",\n      descriptionMoreURL: \"https://markojs.com/docs/reference/core-tag#define\",\n    },\n  ],\n  types: runtimeInfo.name + \"/tags/define.d.marko\",\n} as Tag;\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/core/effect.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  assertAllowedAttributes,\n  assertNoArgs,\n  assertNoAttributeTags,\n  assertNoParams,\n  diagnosticDeprecate,\n  type Tag,\n} from \"@marko/compiler/babel-utils\";\n\nimport { assertNoBodyContent, assertNoSpreadAttrs } from \"../util/assert\";\nimport runtimeInfo from \"../util/runtime-info\";\nimport withPreviousLocation from \"../util/with-previous-location\";\n\nexport default {\n  migrate: [\n    (tag) => {\n      assertNoArgs(tag);\n      assertNoParams(tag);\n      assertNoBodyContent(tag);\n      assertNoAttributeTags(tag);\n      assertNoSpreadAttrs(tag);\n      assertAllowedAttributes(tag, [\"value\"]);\n      diagnosticDeprecate(tag, {\n        label: \"The 'effect' tag has been replaced by the 'script' tag.\",\n        fix() {\n          const { node } = tag;\n          tag.replaceWith(\n            t.markoTag(\n              withPreviousLocation(t.stringLiteral(\"script\"), node.name),\n              node.attributes,\n              node.body,\n              node.arguments,\n              node.var,\n              node.attributeTags,\n            ),\n          );\n        },\n      });\n    },\n  ],\n  attributes: {},\n  types: runtimeInfo.name + \"/tags/effect.d.marko\",\n} as Tag;\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/core/export.ts",
    "content": "import { parseStatements, type Tag } from \"@marko/compiler/babel-utils\";\n\nexport default {\n  parse(tag) {\n    const { node } = tag;\n    tag.replaceWith(\n      parseStatements(tag.hub.file, node.rawValue!, node.start!, node.end!)[0],\n    );\n  },\n  parseOptions: {\n    statement: true,\n    rawOpenTag: true,\n  },\n  autocomplete: [\n    {\n      displayText: \"export <value>\",\n    },\n  ],\n} as Tag;\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/core/for.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  assertAllowedAttributes,\n  assertNoArgs,\n  assertNoVar,\n  type Tag,\n} from \"@marko/compiler/babel-utils\";\n\nimport { WalkCode } from \"../../common/types\";\nimport { assertNoSpreadAttrs } from \"../util/assert\";\nimport { getAccessorPrefix, getAccessorProp } from \"../util/get-accessor-char\";\nimport { getKnownAttrValues } from \"../util/get-known-attr-values\";\nimport { getParentTag } from \"../util/get-parent-tag\";\nimport {\n  getOnlyChildParentTagName,\n  getOptimizedOnlyChildNodeBinding,\n} from \"../util/is-only-child-in-parent\";\nimport {\n  BindingType,\n  dropNodes,\n  getAllTagReferenceNodes,\n  getScopeAccessorLiteral,\n  kBranchSerializeReason,\n  mergeReferences,\n  setBindingDownstream,\n  trackParamsReferences,\n} from \"../util/references\";\nimport { callRuntime } from \"../util/runtime\";\nimport {\n  ContentType,\n  getBranchRendererArgs,\n  getOrCreateSection,\n  getScopeIdIdentifier,\n  getSection,\n  getSectionForBody,\n  setSectionParentIsOwner,\n  startSection,\n} from \"../util/sections\";\nimport { getSerializeGuard } from \"../util/serialize-guard\";\nimport {\n  addSerializeExpr,\n  getSerializeReason,\n} from \"../util/serialize-reasons\";\nimport {\n  addValue,\n  getSignal,\n  replaceNullishAndEmptyFunctionsWith0,\n  setClosureSignalBuilder,\n  writeHTMLResumeStatements,\n} from \"../util/signals\";\nimport { translateByTarget } from \"../util/visitors\";\nimport * as walks from \"../util/walks\";\nimport * as writer from \"../util/writer\";\nimport { kSkipEndTag } from \"../visitors/tag/native-tag\";\n\ntype ForType = \"in\" | \"of\" | \"to\" | \"until\";\nconst kStatefulReason = Symbol(\"<for> stateful reason\");\n\nexport default {\n  analyze(tag) {\n    const tagSection = getOrCreateSection(tag);\n    const isAttrTag = tag.node.body.attributeTags;\n    const tagBody = tag.get(\"body\");\n    const paramsBinding = trackParamsReferences(\n      tagBody,\n      isAttrTag ? BindingType.local : BindingType.derived,\n    );\n\n    let allowAttrs: string[];\n    assertNoVar(tag);\n    assertNoArgs(tag);\n    assertNoSpreadAttrs(tag);\n\n    const forType = getForType(tag.node);\n    switch (forType) {\n      case \"of\":\n        allowAttrs = [\"of\"];\n        break;\n      case \"in\":\n        allowAttrs = [\"in\"];\n        break;\n      case \"to\":\n        allowAttrs = [\"to\", \"from\", \"step\"];\n        break;\n      case \"until\":\n        allowAttrs = [\"until\", \"from\", \"step\"];\n        break;\n      default:\n        throw tag.buildCodeFrameError(\n          \"The [`<for>` tag](https://markojs.com/docs/reference/core-tag#for) requires an `of=`, `in=`, or `to=` attribute.\",\n        );\n    }\n\n    if (!isAttrTag) {\n      allowAttrs.push(\"by\");\n    }\n\n    assertAllowedAttributes(tag, allowAttrs);\n\n    if (isAttrTag) return;\n\n    const bodySection = startSection(tagBody);\n\n    if (!bodySection) {\n      dropNodes(getAllTagReferenceNodes(tag.node));\n      return;\n    }\n\n    const nodeBinding = getOptimizedOnlyChildNodeBinding(tag, tagSection);\n    const tagExtra = mergeReferences(\n      tagSection,\n      tag.node,\n      getAllTagReferenceNodes(tag.node),\n    );\n\n    addSerializeExpr(tagSection, tagExtra, kStatefulReason);\n\n    if (paramsBinding) {\n      setBindingDownstream(paramsBinding, tagExtra);\n\n      const keyBinding = paramsBinding.propertyAliases.get(\n        forType === \"of\" ? \"1\" : \"0\",\n      );\n\n      if (keyBinding && !getKnownAttrValues(tag.node).by) {\n        keyBinding.type = BindingType.constant;\n        keyBinding.scopeAccessor = getAccessorProp().LoopKey;\n      }\n    }\n    bodySection.sectionAccessor = {\n      binding: nodeBinding,\n      prefix: getAccessorPrefix().BranchScopes,\n    };\n\n    bodySection.upstreamExpression = tagExtra;\n    bodySection.isBranch = true;\n  },\n  translate: translateByTarget({\n    html: {\n      enter(tag) {\n        if (tag.node.body.attributeTags) return;\n\n        const tagBody = tag.get(\"body\");\n        const bodySection = getSectionForBody(tagBody);\n\n        if (!bodySection) {\n          tag.remove();\n          return;\n        }\n\n        setSectionParentIsOwner(bodySection, true);\n\n        if (!getOnlyChildParentTagName(tag)) {\n          walks.visit(tag, WalkCode.Replace);\n          walks.enterShallow(tag);\n        }\n\n        writer.flushBefore(tag);\n      },\n      exit(tag) {\n        if (tag.node.body.attributeTags) return;\n\n        const tagBody = tag.get(\"body\");\n        const tagSection = getSection(tag);\n        const bodySection = getSectionForBody(tagBody)!;\n        const { node } = tag;\n        const onlyChildParentTagName = getOnlyChildParentTagName(tag);\n        const nodeBinding = getOptimizedOnlyChildNodeBinding(tag, tagSection);\n        const forAttrs = getKnownAttrValues(node);\n        const forType = getForType(node)!;\n        const params = node.body.params;\n        const statements: t.Statement[] = [];\n        const bodyStatements = node.body.body as t.Statement[];\n        const singleChild =\n          bodySection.content?.singleChild &&\n          bodySection.content.startType !== ContentType.Text;\n\n        const branchSerializeReason = getSerializeReason(\n          bodySection,\n          kBranchSerializeReason,\n        );\n        const markerSerializeReason = getSerializeReason(\n          tagSection,\n          nodeBinding,\n        );\n\n        writer.flushInto(tag);\n        writeHTMLResumeStatements(tagBody);\n\n        const forTagArgs = getBaseArgsInForTag(forType, forAttrs) as (\n          | t.Expression\n          | undefined\n        )[];\n        const forTagHTMLRuntime = branchSerializeReason\n          ? forTypeToHTMLResumeRuntime(forType)\n          : forTypeToRuntime(forType);\n        forTagArgs.push(\n          t.arrowFunctionExpression(params, t.blockStatement(bodyStatements)),\n        );\n\n        if (branchSerializeReason) {\n          const skipParentEnd = onlyChildParentTagName && markerSerializeReason;\n          const statefulSerializeArg = getSerializeGuard(\n            tagSection,\n            getSerializeReason(tagSection, kStatefulReason),\n            !(skipParentEnd || singleChild),\n          );\n          const markerSerializeArg = getSerializeGuard(\n            tagSection,\n            markerSerializeReason,\n            !statefulSerializeArg,\n          );\n\n          forTagArgs.push(\n            forAttrs.by || t.numericLiteral(0),\n            getScopeIdIdentifier(tagSection),\n            getScopeAccessorLiteral(nodeBinding),\n            getSerializeGuard(\n              tagSection,\n              branchSerializeReason,\n              !markerSerializeArg,\n            ),\n            markerSerializeArg,\n            statefulSerializeArg,\n          );\n\n          if (skipParentEnd) {\n            getParentTag(tag)!.node.extra![kSkipEndTag] = true;\n            forTagArgs.push(t.stringLiteral(`</${onlyChildParentTagName}>`));\n          }\n\n          if (singleChild) {\n            if (!skipParentEnd) {\n              forTagArgs.push(t.numericLiteral(0));\n            }\n\n            forTagArgs.push(t.numericLiteral(1));\n          }\n        }\n\n        statements.push(\n          t.expressionStatement(callRuntime(forTagHTMLRuntime, ...forTagArgs)),\n        );\n\n        for (const replacement of tag.replaceWithMultiple(statements)) {\n          replacement.skip();\n        }\n      },\n    },\n    dom: {\n      enter(tag) {\n        if (tag.node.body.attributeTags) return;\n\n        const tagBody = tag.get(\"body\");\n        const bodySection = getSectionForBody(tagBody);\n\n        if (!bodySection) {\n          tag.remove();\n          return;\n        }\n\n        setSectionParentIsOwner(bodySection, true);\n\n        if (!getOnlyChildParentTagName(tag)) {\n          walks.visit(tag, WalkCode.Replace);\n          walks.enterShallow(tag);\n        }\n      },\n      exit(tag) {\n        if (tag.node.body.attributeTags) return;\n\n        const tagBody = tag.get(\"body\");\n        const tagSection = getSection(tag);\n        const bodySection = getSectionForBody(tagBody)!;\n        const { node } = tag;\n        const tagExtra = node.extra!;\n        const { referencedBindings } = tagExtra;\n        const nodeRef = getOptimizedOnlyChildNodeBinding(tag, tagSection);\n        setClosureSignalBuilder(tag, (_closure, render) => {\n          return callRuntime(\n            \"_for_closure\",\n            getScopeAccessorLiteral(nodeRef, true),\n            render,\n          );\n        });\n\n        const forType = getForType(node)!;\n        const signal = getSignal(tagSection, nodeRef, \"for\");\n        signal.build = () => {\n          return callRuntime(\n            forTypeToDOMRuntime(forType),\n            getScopeAccessorLiteral(nodeRef, true),\n            ...replaceNullishAndEmptyFunctionsWith0(\n              getBranchRendererArgs(bodySection),\n            ),\n          );\n        };\n\n        const forAttrs = getKnownAttrValues(node);\n        const loopArgs = getBaseArgsInForTag(forType, forAttrs);\n        if (forAttrs.by) {\n          loopArgs.push(forAttrs.by);\n        }\n\n        addValue(\n          tagSection,\n          referencedBindings,\n          signal,\n          t.arrayExpression(loopArgs),\n        );\n\n        tag.remove();\n      },\n    },\n  }),\n  parseOptions: { controlFlow: true },\n  attributes: {\n    of: {\n      type: \"expression\",\n      autocomplete: [\n        {\n          description: \"Iterates over a list of items.\",\n        },\n      ],\n    },\n    in: {\n      type: \"expression\",\n      autocomplete: [\n        {\n          description: \"Iterates over the keys and values of an object.\",\n        },\n      ],\n    },\n    to: {\n      type: \"number\",\n      autocomplete: [\n        {\n          description: \"Iterates up to the provided number (inclusive)\",\n        },\n      ],\n    },\n    until: {\n      type: \"number\",\n      autocomplete: [\n        {\n          description: \"Iterates up to the provided number (exclusive)\",\n        },\n      ],\n    },\n    from: {\n      type: \"number\",\n      autocomplete: [\n        {\n          description: \"Iterates starting from the provided number (inclusive)\",\n        },\n      ],\n    },\n    step: {\n      type: \"number\",\n      autocomplete: [\n        {\n          description:\n            \"The amount to increment during each iteration (with from/to/until)\",\n        },\n      ],\n    },\n  },\n  autocomplete: [\n    {\n      snippet: \"for|${1:value, index}| of=${3:array}\",\n      description:\n        \"Use to iterate over lists, object properties, or between ranges.\",\n      descriptionMoreURL: \"https://markojs.com/docs/reference/core-tag#for\",\n    },\n    {\n      snippet: \"for|${1:name, value}| in=${3:object}\",\n      descriptionMoreURL: \"https://markojs.com/docs/reference/core-tag#for\",\n    },\n    {\n      snippet: \"for|${1:index}| to=${2:number}\",\n      descriptionMoreURL: \"https://markojs.com/docs/reference/core-tag#for\",\n    },\n    {\n      snippet: \"for|${1:index}| until=${2:number}\",\n      descriptionMoreURL: \"https://markojs.com/docs/reference/core-tag#for\",\n    },\n  ],\n} satisfies Tag;\n\nexport function buildForRuntimeCall(\n  type: ForType,\n  attrs: Record<string, t.Expression>,\n  params: t.ArrowFunctionExpression[\"params\"],\n  statements: t.Statement[],\n) {\n  return t.expressionStatement(\n    callRuntime(\n      forTypeToRuntime(type),\n      ...getBaseArgsInForTag(type, attrs),\n      t.arrowFunctionExpression(params, t.blockStatement(statements)),\n    ),\n  );\n}\n\nexport function getForType(tag: t.MarkoTag): ForType | undefined {\n  for (const attr of tag.attributes) {\n    if (attr.type === \"MarkoAttribute\") {\n      switch (attr.name) {\n        case \"of\":\n        case \"in\":\n        case \"to\":\n        case \"until\":\n          return attr.name;\n      }\n    }\n  }\n}\n\nfunction forTypeToRuntime(type: ForType) {\n  switch (type) {\n    case \"of\":\n      return \"forOf\";\n    case \"in\":\n      return \"forIn\";\n    case \"to\":\n      return \"forTo\";\n    case \"until\":\n      return \"forUntil\";\n  }\n}\n\nfunction forTypeToHTMLResumeRuntime(type: ForType) {\n  switch (type) {\n    case \"of\":\n      return \"_for_of\";\n    case \"in\":\n      return \"_for_in\";\n    case \"to\":\n      return \"_for_to\";\n    case \"until\":\n      return \"_for_until\";\n  }\n}\n\nfunction forTypeToDOMRuntime(type: ForType) {\n  switch (type) {\n    case \"of\":\n      return \"_for_of\";\n    case \"in\":\n      return \"_for_in\";\n    case \"to\":\n      return \"_for_to\";\n    case \"until\":\n      return \"_for_until\";\n  }\n}\n\nfunction getBaseArgsInForTag(\n  type: ForType,\n  attrs: Record<string, t.Expression>,\n) {\n  switch (type) {\n    case \"in\":\n      return [attrs.in];\n    case \"of\":\n      return [attrs.of];\n    case \"to\":\n      return [\n        attrs.to,\n        attrs.from || t.numericLiteral(0),\n        attrs.step || t.numericLiteral(1),\n      ];\n    case \"until\":\n      return [\n        attrs.until,\n        attrs.from || t.numericLiteral(0),\n        attrs.step || t.numericLiteral(1),\n      ];\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/core/html-comment.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  assertNoArgs,\n  assertNoAttributes,\n  assertNoParams,\n  type Tag,\n} from \"@marko/compiler/babel-utils\";\n\nimport { WalkCode } from \"../../common/types\";\nimport { bodyToTextLiteral } from \"../util/body-to-text-literal\";\nimport { isOutputHTML } from \"../util/marko-config\";\nimport {\n  type Binding,\n  BindingType,\n  createBinding,\n  mergeReferences,\n  trackDomVarReferences,\n} from \"../util/references\";\nimport { callRuntime } from \"../util/runtime\";\nimport runtimeInfo from \"../util/runtime-info\";\nimport { createScopeReadExpression } from \"../util/scope-read\";\nimport { getOrCreateSection, getSection } from \"../util/sections\";\nimport {\n  addSerializeExpr,\n  getSerializeReason,\n} from \"../util/serialize-reasons\";\nimport { addStatement } from \"../util/signals\";\nimport * as walks from \"../util/walks\";\nimport * as writer from \"../util/writer\";\n\nconst kNodeBinding = Symbol(\"comment tag binding\");\n\ndeclare module \"@marko/compiler/dist/types\" {\n  export interface NodeExtra {\n    [kNodeBinding]?: Binding;\n  }\n}\n\nexport default {\n  analyze(tag: t.NodePath<t.MarkoTag>) {\n    assertNoArgs(tag);\n    assertNoParams(tag);\n    assertNoAttributes(tag);\n\n    const tagVar = tag.node.var;\n    let needsBinding = false;\n    if (tagVar) {\n      if (!t.isIdentifier(tagVar)) {\n        throw tag\n          .get(\"var\")\n          .buildCodeFrameError(\n            \"The [`<html-comment>` tag](https://markojs.com/docs/reference/core-tag#html-comment) tag variable cannot be destructured.\",\n          );\n      }\n      needsBinding = true;\n    }\n\n    const referenceNodes: t.Node[] = [];\n    for (const child of tag.get(\"body\").get(\"body\")) {\n      if (child.isMarkoPlaceholder()) {\n        referenceNodes.push(child.node.value);\n        needsBinding = true;\n      } else if (!child.isMarkoText()) {\n        throw child.buildCodeFrameError(\n          \"Invalid child. Only text is allowed inside an html comment.\",\n        );\n      }\n    }\n    if (needsBinding) {\n      const tagSection = getOrCreateSection(tag);\n      const tagExtra = mergeReferences(tagSection, tag.node, referenceNodes);\n      const nodeBinding = (tagExtra[kNodeBinding] = createBinding(\n        \"#comment\",\n        BindingType.dom,\n        tagSection,\n        undefined,\n        undefined,\n        undefined,\n        undefined,\n        !!tagVar,\n      ));\n\n      trackDomVarReferences(tag, nodeBinding);\n\n      addSerializeExpr(tagSection, !!tagVar || tagExtra, nodeBinding);\n    }\n    tag.skip();\n  },\n  translate: {\n    enter(tag) {\n      const tagExtra = tag.node.extra!;\n      const nodeBinding = tagExtra[kNodeBinding];\n\n      if (nodeBinding) {\n        walks.visit(tag, WalkCode.Get);\n      }\n\n      walks.enter(tag);\n      writer.writeTo(tag)`<!--`;\n    },\n    exit(tag) {\n      const tagSection = getSection(tag);\n      const tagExtra = tag.node.extra!;\n      const nodeBinding = tagExtra[kNodeBinding];\n      const write = writer.writeTo(tag);\n\n      // TODO: If the tag is completely empty, make the marker node the same as the comment node.\n      if (isOutputHTML()) {\n        for (const child of tag.node.body.body) {\n          if (t.isMarkoText(child)) {\n            write`${child.value}`;\n          } else if (t.isMarkoPlaceholder(child)) {\n            write`${callRuntime(\"_escape_text\", child.value)}`;\n          }\n        }\n      } else {\n        const textLiteral = bodyToTextLiteral(tag.node.body);\n\n        if (t.isStringLiteral(textLiteral)) {\n          write`${textLiteral}`;\n        } else {\n          addStatement(\n            \"render\",\n            getSection(tag),\n            tagExtra.referencedBindings,\n            t.expressionStatement(\n              callRuntime(\n                \"_text\",\n                createScopeReadExpression(nodeBinding!),\n                textLiteral,\n              ),\n            ),\n          );\n        }\n      }\n\n      walks.exit(tag);\n      write`-->`;\n\n      if (nodeBinding) {\n        writer.markNode(\n          tag,\n          nodeBinding,\n          getSerializeReason(tagSection, nodeBinding),\n        );\n      }\n\n      tag.remove();\n    },\n  },\n  parseOptions: {\n    text: true,\n  },\n  types: runtimeInfo.name + \"/tags/html-comment.d.marko\",\n  autocomplete: [\n    {\n      description:\n        \"Use to create an html comment that is not stripped from the output.\",\n      descriptionMoreURL:\n        \"https://markojs.com/docs/reference/core-tag#html-comment\",\n    },\n  ],\n} as Tag;\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/core/html-script.ts",
    "content": "import type { Tag } from \"@marko/compiler/babel-utils\";\n\nimport runtimeInfo from \"../util/runtime-info\";\n\nexport default {\n  types: runtimeInfo.name + \"/tags/html-script.d.marko\",\n  html: true,\n  parseOptions: {\n    text: true,\n    preserveWhitespace: true,\n  },\n  autocomplete: [\n    {\n      description:\n        \"Use instead of `<script>` to render a native tag directly, without processing by Marko.\",\n      descriptionMoreURL:\n        \"https://markojs.com/docs/reference/core-tag#html-script--html-style\",\n    },\n  ],\n} as Tag;\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/core/html-style.ts",
    "content": "import type { Tag } from \"@marko/compiler/babel-utils\";\n\nimport runtimeInfo from \"../util/runtime-info\";\n\nexport default {\n  types: runtimeInfo.name + \"/tags/html-style.d.marko\",\n  html: true,\n  parseOptions: {\n    text: true,\n    preserveWhitespace: true,\n  },\n  autocomplete: [\n    {\n      description:\n        \"Use instead of `<style>` to render a native tag directly, without processing by Marko.\",\n      descriptionMoreURL:\n        \"https://markojs.com/docs/reference/core-tag#html-script--html-style\",\n    },\n  ],\n} as Tag;\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/core/id.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  assertNoArgs,\n  assertNoAttributeTags,\n  assertNoParams,\n  type Tag,\n} from \"@marko/compiler/babel-utils\";\n\nimport { assertNoBodyContent } from \"../util/assert\";\nimport evaluate from \"../util/evaluate\";\nimport { isOutputHTML } from \"../util/marko-config\";\nimport {\n  BindingType,\n  setBindingDownstream,\n  trackVarReferences,\n} from \"../util/references\";\nimport { callRuntime } from \"../util/runtime\";\nimport runtimeInfo from \"../util/runtime-info\";\nimport { getSection } from \"../util/sections\";\nimport { addValue, initValue } from \"../util/signals\";\nimport { scopeIdentifier } from \"../visitors/program\";\n\nexport default {\n  analyze(tag) {\n    assertNoArgs(tag);\n    assertNoParams(tag);\n    assertNoBodyContent(tag);\n    assertNoAttributeTags(tag);\n\n    const { node } = tag;\n    const [valueAttr] = node.attributes;\n\n    if (!node.var) {\n      throw tag\n        .get(\"name\")\n        .buildCodeFrameError(\n          \"The [`<id>` tag](https://markojs.com/docs/reference/core-tag#id) requires a [tag variable](https://markojs.com/docs/reference/language#tag-variables).\",\n        );\n    }\n\n    if (!t.isIdentifier(node.var)) {\n      throw tag\n        .get(\"var\")\n        .buildCodeFrameError(\n          \"The [`<id>` tag](https://markojs.com/docs/reference/core-tag#id) cannot be destructured.\",\n        );\n    }\n\n    if (\n      tag.node.attributes.length > 1 ||\n      (tag.node.attributes.length === 1 &&\n        (!t.isMarkoAttribute(valueAttr) ||\n          (!valueAttr.default && valueAttr.name !== \"value\")))\n    ) {\n      throw tag\n        .get(\"name\")\n        .buildCodeFrameError(\n          \"The [`<id>` tag](https://markojs.com/docs/reference/core-tag#id) only supports the [`value=` attribute](https://markojs.com/docs/reference/language#shorthand-value).\",\n        );\n    }\n\n    const binding = trackVarReferences(tag, BindingType.derived);\n    if (binding) {\n      setBindingDownstream(binding, !!valueAttr && evaluate(valueAttr.value));\n    }\n  },\n  translate: {\n    exit(tag) {\n      const { node } = tag;\n      const id = isOutputHTML()\n        ? callRuntime(\"_id\")\n        : callRuntime(\"_id\", scopeIdentifier);\n      const [valueAttr] = tag.node.attributes;\n\n      if (isOutputHTML()) {\n        tag.replaceWith(\n          t.variableDeclaration(\"const\", [\n            t.variableDeclarator(\n              node.var!,\n              valueAttr ? t.logicalExpression(\"||\", valueAttr.value, id) : id,\n            ),\n          ]),\n        );\n      } else {\n        const section = getSection(tag);\n        const source = initValue(node.var!.extra!.binding!);\n\n        if (valueAttr) {\n          const { value } = valueAttr;\n\n          addValue(\n            section,\n            value.extra?.referencedBindings,\n            source,\n            t.logicalExpression(\"||\", value, id),\n          );\n        } else {\n          addValue(section, undefined, source, id);\n        }\n\n        tag.remove();\n      }\n    },\n  },\n  parseOptions: {\n    openTagOnly: true,\n  },\n  attributes: {},\n  autocomplete: [\n    {\n      displayText: \"id/<name>\",\n      description: \"Use to create a unique identifier.\",\n      snippet: \"id/${1:name}\",\n      descriptionMoreURL: \"https://markojs.com/docs/reference/core-tag#id\",\n    },\n  ],\n  types: runtimeInfo.name + \"/tags/id.d.marko\",\n} as Tag;\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/core/if.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  assertNoArgs,\n  assertNoParams,\n  assertNoVar,\n  type Tag,\n} from \"@marko/compiler/babel-utils\";\n\nimport { WalkCode } from \"../../common/types\";\nimport { assertNoSpreadAttrs } from \"../util/assert\";\nimport { getAccessorPrefix } from \"../util/get-accessor-char\";\nimport { getParentTag } from \"../util/get-parent-tag\";\nimport { getTagName } from \"../util/get-tag-name\";\nimport { isConditionTag, isCoreTagName } from \"../util/is-core-tag\";\nimport {\n  getOnlyChildParentTagName,\n  getOptimizedOnlyChildNodeBinding,\n} from \"../util/is-only-child-in-parent\";\nimport { addSorted } from \"../util/optional\";\nimport {\n  compareSources,\n  getScopeAccessorLiteral,\n  kBranchSerializeReason,\n  mergeReferences,\n} from \"../util/references\";\nimport { callRuntime } from \"../util/runtime\";\nimport {\n  ContentType,\n  getBranchRendererArgs,\n  getOrCreateSection,\n  getScopeIdIdentifier,\n  getSection,\n  getSectionForBody,\n  type Section,\n  setSectionParentIsOwner,\n  startSection,\n} from \"../util/sections\";\nimport {\n  getSerializeGuard,\n  getSerializeGuardForAny,\n} from \"../util/serialize-guard\";\nimport {\n  addSerializeExpr,\n  getSerializeReason,\n  type SerializeReasons,\n} from \"../util/serialize-reasons\";\nimport {\n  addValue,\n  getSignal,\n  replaceNullishAndEmptyFunctionsWith0,\n  setClosureSignalBuilder,\n  writeHTMLResumeStatements,\n} from \"../util/signals\";\nimport toFirstStatementOrBlock from \"../util/to-first-statement-or-block\";\nimport { translateByTarget } from \"../util/visitors\";\nimport * as walks from \"../util/walks\";\nimport * as writer from \"../util/writer\";\nimport { kSkipEndTag } from \"../visitors/tag/native-tag\";\n\nconst kStatefulReason = Symbol(\"<if> stateful reason\");\nconst BRANCHES_LOOKUP = new WeakMap<\n  t.NodePath<t.MarkoTag>,\n  [tag: t.NodePath<t.MarkoTag>, bodySection: Section | undefined][]\n>();\n\nexport const IfTag = {\n  analyze(tag) {\n    assertValidCondition(tag);\n    if (tag.node.body.attributeTags) return;\n    if (isLastBranch(tag)) {\n      const branches = getBranches(tag);\n      const [ifTag] = branches[0];\n      const ifTagSection = getOrCreateSection(ifTag);\n      const ifTagExtra = (ifTag.node.extra ??= {});\n      const mergeReferenceNodes: t.Node[] = [];\n      const nodeBinding = getOptimizedOnlyChildNodeBinding(\n        ifTag,\n        ifTagSection,\n        branches.length,\n      );\n      const sectionAccessor: Section[\"sectionAccessor\"] = {\n        binding: nodeBinding,\n        prefix: getAccessorPrefix().BranchScopes,\n      };\n      // TODO: remove all branches if none have body content.\n\n      for (const [branchTag, branchBodySection] of branches) {\n        if (branchBodySection) {\n          branchBodySection.isBranch = true;\n          branchBodySection.upstreamExpression = ifTagExtra;\n          branchBodySection.sectionAccessor = sectionAccessor;\n        }\n\n        if (branchTag.node.attributes.length) {\n          mergeReferenceNodes.push(branchTag.node.attributes[0].value);\n        }\n      }\n\n      mergeReferences(ifTagSection, ifTag.node, mergeReferenceNodes);\n      addSerializeExpr(ifTagSection, ifTagExtra, kStatefulReason);\n    }\n  },\n  translate: translateByTarget({\n    html: {\n      enter(tag) {\n        if (tag.node.body.attributeTags) return;\n\n        const tagBody = tag.get(\"body\");\n        const bodySection = getSectionForBody(tagBody);\n\n        if (isRoot(tag) && !getOnlyChildParentTagName(tag)) {\n          walks.visit(tag, WalkCode.Replace);\n          walks.enterShallow(tag);\n        }\n\n        writer.flushBefore(tag);\n\n        if (bodySection) {\n          setSectionParentIsOwner(bodySection, true);\n        }\n      },\n      exit(tag) {\n        if (tag.node.body.attributeTags) return;\n\n        const tagBody = tag.get(\"body\");\n        const bodySection = getSectionForBody(tagBody);\n\n        if (bodySection) {\n          writer.flushInto(tag);\n          writeHTMLResumeStatements(tagBody);\n        }\n\n        if (isLastBranch(tag)) {\n          const branches = getBranches(tag);\n          const [ifTag] = branches[0];\n          const ifTagSection = getSection(ifTag);\n          const nodeBinding = getOptimizedOnlyChildNodeBinding(\n            ifTag,\n            ifTagSection,\n          );\n          const onlyChildParentTagName = getOnlyChildParentTagName(ifTag);\n          const markerSerializeReason = getSerializeReason(\n            ifTagSection,\n            nodeBinding,\n          );\n          const nextTag = tag.getNextSibling();\n          let branchSerializeReasons: SerializeReasons | undefined;\n          let statement: t.Statement | undefined;\n          let singleChild = true;\n\n          for (const [, branchBody] of branches) {\n            if (\n              !(\n                branchBody?.content?.singleChild &&\n                branchBody.content.startType !== ContentType.Text\n              )\n            ) {\n              singleChild = false;\n              break;\n            }\n          }\n\n          for (let i = branches.length; i--; ) {\n            const [branchTag, branchBody] = branches[i];\n            const bodyStatements = branchTag.node.body.body;\n            if (branchBody) {\n              const branchSerializeReason = getSerializeReason(\n                branchBody,\n                kBranchSerializeReason,\n              );\n              if (branchSerializeReason) {\n                if (branchSerializeReasons !== true) {\n                  if (\n                    branchSerializeReason === true ||\n                    branchSerializeReason.state\n                  ) {\n                    branchSerializeReasons = true;\n                  } else if (branchSerializeReasons) {\n                    branchSerializeReasons = addSorted(\n                      compareSources,\n                      branchSerializeReasons,\n                      branchSerializeReason,\n                    );\n                  } else {\n                    branchSerializeReasons = [branchSerializeReason];\n                  }\n                }\n                bodyStatements.push(\n                  t.returnStatement(t.numericLiteral(i)) as any,\n                );\n              }\n            }\n\n            const [testAttr] = branchTag.node.attributes;\n            const curStatement = toFirstStatementOrBlock(bodyStatements);\n\n            if (testAttr) {\n              statement = t.ifStatement(\n                testAttr.value,\n                curStatement,\n                statement,\n              );\n            } else {\n              statement = curStatement;\n            }\n\n            branchTag.remove();\n          }\n\n          if (branchSerializeReasons) {\n            const skipParentEnd =\n              onlyChildParentTagName && markerSerializeReason;\n            if (skipParentEnd) {\n              getParentTag(ifTag)!.node.extra![kSkipEndTag] = true;\n            }\n\n            const statefulSerializeArg = getSerializeGuard(\n              ifTagSection,\n              getSerializeReason(ifTagSection, kStatefulReason),\n              !(skipParentEnd || singleChild),\n            );\n            const markerSerializeArg = getSerializeGuard(\n              ifTagSection,\n              markerSerializeReason,\n              !statefulSerializeArg,\n            );\n            const cbNode = t.arrowFunctionExpression(\n              [],\n              t.blockStatement([statement!]),\n            );\n\n            statement = t.expressionStatement(\n              callRuntime(\n                \"_if\",\n                cbNode,\n                getScopeIdIdentifier(ifTagSection),\n                getScopeAccessorLiteral(nodeBinding),\n                getSerializeGuardForAny(\n                  ifTagSection,\n                  branchSerializeReasons,\n                  !markerSerializeArg,\n                ),\n                markerSerializeArg,\n                statefulSerializeArg,\n                skipParentEnd\n                  ? t.stringLiteral(`</${onlyChildParentTagName}>`)\n                  : singleChild\n                    ? t.numericLiteral(0)\n                    : undefined,\n                singleChild ? t.numericLiteral(1) : undefined,\n              ),\n            );\n          }\n\n          nextTag.insertBefore(statement!);\n        }\n      },\n    },\n    dom: {\n      enter(tag) {\n        if (tag.node.body.attributeTags) return;\n\n        const tagBody = tag.get(\"body\");\n        const bodySection = getSectionForBody(tagBody);\n\n        if (bodySection) {\n          setSectionParentIsOwner(bodySection, true);\n        }\n\n        if (isRoot(tag) && !getOnlyChildParentTagName(tag)) {\n          walks.visit(tag, WalkCode.Replace);\n          walks.enterShallow(tag);\n        }\n      },\n      exit(tag) {\n        if (tag.node.body.attributeTags) return;\n\n        if (isLastBranch(tag)) {\n          const branches = getBranches(tag);\n          const [ifTag] = branches[0];\n          const ifTagSection = getSection(ifTag);\n          const ifTagExtra = branches[0][0].node.extra!;\n          const nodeRef = getOptimizedOnlyChildNodeBinding(ifTag, ifTagSection);\n\n          let expr: t.Expression = t.numericLiteral(branches.length);\n\n          for (let i = branches.length; i--; ) {\n            const [branchTag, branchBodySection] = branches[i];\n            const [testAttr] = branchTag.node.attributes;\n            const consequent = t.numericLiteral(branchBodySection ? i : -1);\n            if (branchBodySection) {\n              setClosureSignalBuilder(branchTag, (_closure, render) => {\n                return callRuntime(\n                  \"_if_closure\",\n                  getScopeAccessorLiteral(nodeRef, true),\n                  t.numericLiteral(i),\n                  render,\n                );\n              });\n            }\n\n            branchTag.remove();\n            expr = testAttr\n              ? t.conditionalExpression(testAttr.value, consequent, expr)\n              : consequent;\n          }\n\n          const signal = getSignal(ifTagSection, nodeRef, \"if\");\n          signal.build = () => {\n            const rendererArgs: (t.Expression | undefined)[] = [];\n            for (const [_, branchBodySection] of branches) {\n              if (branchBodySection) {\n                rendererArgs.push(\n                  ...getBranchRendererArgs(branchBodySection).slice(0, 3),\n                ); // Slice to 3 to ignore params\n              } else {\n                rendererArgs.push(undefined, undefined, undefined);\n              }\n            }\n\n            return callRuntime(\n              \"_if\",\n              getScopeAccessorLiteral(nodeRef, true),\n              ...replaceNullishAndEmptyFunctionsWith0(rendererArgs),\n            );\n          };\n          addValue(ifTagSection, ifTagExtra.referencedBindings, signal, expr);\n        }\n      },\n    },\n  }),\n  parseOptions: { controlFlow: true },\n  autocomplete: [\n    {\n      snippet: \"if=${1:condition}\",\n      description: \"Use to display content only if the condition is met.\",\n      descriptionMoreURL:\n        \"https://markojs.com/docs/reference/core-tag#if--else\",\n    },\n  ],\n} satisfies Tag;\n\nexport const ElseIfTag = {\n  ...IfTag,\n  autocomplete: [\n    {\n      snippet: \"else-if=${1:condition}\",\n      description:\n        \"Use after an <if> or <else-if> tag to display content if those conditions do not match and this one does.\",\n      descriptionMoreURL:\n        \"https://markojs.com/docs/reference/core-tag#if--else\",\n    },\n  ],\n};\n\nexport const ElseTag = {\n  ...IfTag,\n  autocomplete: [\n    {\n      description:\n        \"Use after an <if> or <else-if> tag to display content if those conditions do not match.\",\n      descriptionMoreURL:\n        \"https://markojs.com/docs/reference/core-tag#if--else\",\n    },\n  ],\n};\n\nfunction assertValidCondition(tag: t.NodePath<t.MarkoTag>) {\n  assertNoVar(tag);\n  assertNoArgs(tag);\n  assertNoParams(tag);\n  assertHasBody(tag);\n  assertNoSpreadAttrs(tag);\n\n  switch (getTagName(tag)) {\n    case \"if\":\n      assertHasValueAttribute(tag);\n      break;\n    case \"else-if\":\n      assertHasValueAttribute(tag);\n      assertHasPrecedingCondition(tag);\n      break;\n    case \"else\":\n      assertOptionalIfAttribute(tag);\n      assertHasPrecedingCondition(tag);\n      break;\n  }\n}\n\nfunction assertHasPrecedingCondition(tag: t.NodePath<t.MarkoTag>) {\n  let prev = tag.getPrevSibling();\n  while (prev.node && prev.isMarkoComment()) prev = prev.getPrevSibling();\n\n  if (\n    !isConditionTag(prev) ||\n    (getTagName(prev) === \"else\" && !prev.node.attributes.length)\n  ) {\n    throw tag.buildCodeFrameError(\n      `The [\\`<${getTagName(tag)}>\\` tag](https://markojs.com/docs/reference/core-tag#if--else) must have a preceding \\`<if=cond>\\` or \\`<else if=cond>\\`.`,\n    );\n  }\n}\n\nfunction assertHasBody(tag: t.NodePath<t.MarkoTag>) {\n  if (!(tag.node.body.body.length || tag.node.attributeTags.length)) {\n    throw tag\n      .get(\"name\")\n      .buildCodeFrameError(\n        `The [\\`${getTagName(tag)}\\` tag](https://markojs.com/docs/reference/core-tag#if--else) requires [body content](https://markojs.com/docs/reference/language#tag-content).`,\n      );\n  }\n}\n\nfunction assertHasValueAttribute(tag: t.NodePath<t.MarkoTag>) {\n  const { node } = tag;\n  const [valueAttr] = node.attributes;\n\n  if (!t.isMarkoAttribute(valueAttr) || !valueAttr.default) {\n    throw tag\n      .get(\"name\")\n      .buildCodeFrameError(\n        `The [\\`${getTagName(tag)}\\` tag](https://markojs.com/docs/reference/core-tag#if--else) requires a [\\`value=\\` attribute](https://markojs.com/docs/reference/language#shorthand-value).`,\n      );\n  }\n\n  if (node.attributes.length > 1) {\n    const start = node.attributes[1].loc?.start;\n    const end = node.attributes[node.attributes.length - 1].loc?.end;\n    const msg = `The [\\`${getTagName(tag)}\\` tag](https://markojs.com/docs/reference/core-tag#if--else) only supports the [\\`value=\\` attribute](https://markojs.com/docs/reference/language#shorthand-value).`;\n\n    if (start == null || end == null) {\n      throw tag.get(\"name\").buildCodeFrameError(msg);\n    } else {\n      throw tag.hub.buildError(\n        { loc: { start, end } } as unknown as t.Node,\n        msg,\n        Error,\n      );\n    }\n  }\n}\n\nfunction assertOptionalIfAttribute(tag: t.NodePath<t.MarkoTag>) {\n  const { node } = tag;\n  const [ifAttr] = node.attributes;\n\n  if (\n    node.attributes.length > 1 ||\n    (ifAttr && (ifAttr as t.MarkoAttribute).name !== \"if\")\n  ) {\n    const start = node.attributes[0].loc?.start;\n    const end = node.attributes[node.attributes.length - 1].loc?.end;\n    const msg = `The [\\`${getTagName(tag)}\\` tag](https://markojs.com/docs/reference/core-tag#if--else) only supports an \\`if=\\` attribute.`;\n\n    if (start == null || end == null) {\n      throw tag.get(\"name\").buildCodeFrameError(msg);\n    } else {\n      throw tag.hub.buildError(\n        { loc: { start, end } } as unknown as t.Node,\n        msg,\n        Error,\n      );\n    }\n  }\n}\n\nfunction getBranches(tag: t.NodePath<t.MarkoTag>) {\n  let branches = BRANCHES_LOOKUP.get(tag);\n\n  if (!branches) {\n    let curTag: t.NodePath<any> = tag;\n    branches = [];\n\n    do {\n      BRANCHES_LOOKUP.set(curTag, branches);\n      branches.push([\n        curTag,\n        startSection((curTag as t.NodePath<t.MarkoTag>).get(\"body\")),\n      ]);\n      while ((curTag = curTag.getNextSibling()).isMarkoComment());\n    } while (isCoreTagName(curTag, \"else\") || isCoreTagName(curTag, \"else-if\"));\n  }\n\n  return branches;\n}\n\nfunction isLastBranch(tag: t.NodePath<t.MarkoTag>) {\n  const branches = getBranches(tag);\n  return branches[branches.length - 1][0] === tag;\n}\n\nfunction isRoot(tag: t.NodePath<t.MarkoTag>) {\n  return isCoreTagName(tag, \"if\");\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/core/import.ts",
    "content": "import { parseStatements, type Tag } from \"@marko/compiler/babel-utils\";\n\nexport default {\n  parse(tag) {\n    const { node } = tag;\n    tag.replaceWith(\n      parseStatements(tag.hub.file, node.rawValue!, node.start!, node.end!)[0],\n    );\n  },\n  parseOptions: {\n    statement: true,\n    rawOpenTag: true,\n  },\n  autocomplete: [\n    {\n      displayText: 'import <scope> from \"<path>\"',\n      description:\n        \"Use to import external modules, follows the same syntax as JavaScript imports.\",\n      snippet: 'import ${2} from \"${1:path}\"',\n      descriptionMoreURL:\n        \"https://markojs.com/docs/syntax/#importing-external-files\",\n    },\n  ],\n} as Tag;\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/core/index.ts",
    "content": "import runtimeInfo from \"../util/runtime-info\";\nimport AttrsTag from \"./attrs\";\nimport AwaitTag from \"./await\";\nimport ClientTag from \"./client\";\nimport ConstTag from \"./const\";\nimport DebugTag from \"./debug\";\nimport DefineTag from \"./define\";\nimport EffectTag from \"./effect\";\nimport ExportTag from \"./export\";\nimport ForTag from \"./for\";\nimport HTMLCommentTag from \"./html-comment\";\nimport HTMLScriptTag from \"./html-script\";\nimport HTMLStyleTag from \"./html-style\";\nimport IdTag from \"./id\";\nimport { ElseIfTag, ElseTag, IfTag } from \"./if\";\nimport ImportTag from \"./import\";\nimport LetTag from \"./let\";\nimport LifecycleTag from \"./lifecycle\";\nimport LogTag from \"./log\";\nimport ReturnTag from \"./return\";\nimport ScriptTag from \"./script\";\nimport ServerTag from \"./server\";\nimport StaticTag from \"./static\";\nimport StyleTag from \"./style\";\nimport TryTag from \"./try\";\n\nexport default {\n  taglibId: runtimeInfo.taglibId,\n  \"<attrs>\": AttrsTag,\n  \"<await>\": AwaitTag,\n  \"<client>\": ClientTag,\n  \"<const>\": ConstTag,\n  \"<debug>\": DebugTag,\n  \"<define>\": DefineTag,\n  \"<effect>\": EffectTag,\n  \"<else-if>\": ElseIfTag,\n  \"<else>\": ElseTag,\n  \"<export>\": ExportTag,\n  \"<for>\": ForTag,\n  \"<html-comment>\": HTMLCommentTag,\n  \"<html-script>\": HTMLScriptTag,\n  \"<html-style>\": HTMLStyleTag,\n  \"<id>\": IdTag,\n  \"<if>\": IfTag,\n  \"<import>\": ImportTag,\n  \"<let>\": LetTag,\n  \"<lifecycle>\": LifecycleTag,\n  \"<log>\": LogTag,\n  \"<return>\": ReturnTag,\n  \"<script>\": ScriptTag,\n  \"<server>\": ServerTag,\n  \"<static>\": StaticTag,\n  \"<style>\": StyleTag,\n  \"<try>\": TryTag,\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/core/let.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  assertNoArgs,\n  assertNoParams,\n  computeNode,\n  type Tag,\n} from \"@marko/compiler/babel-utils\";\n\nimport { assertNoBodyContent, assertNoSpreadAttrs } from \"../util/assert\";\nimport { getAccessorPrefix } from \"../util/get-accessor-char\";\nimport { isOutputDOM } from \"../util/marko-config\";\nimport {\n  BindingType,\n  mergeReferences,\n  setBindingDownstream,\n  trackVarReferences,\n} from \"../util/references\";\nimport runtimeInfo from \"../util/runtime-info\";\nimport { getScopeExpression } from \"../util/scope-read\";\nimport { getOrCreateSection, getSection } from \"../util/sections\";\nimport { addSerializeReason } from \"../util/serialize-reasons\";\nimport {\n  addValue,\n  initValue,\n  setBindingSerializedValue,\n  signalHasStatements,\n} from \"../util/signals\";\nimport translateVar from \"../util/translate-var\";\n\ndeclare module \"@marko/compiler/dist/types\" {\n  export interface NodeExtra {\n    static?: boolean;\n  }\n}\n\nexport default {\n  analyze(tag: t.NodePath<t.MarkoTag>) {\n    const { node } = tag;\n    const tagVar = node.var;\n    let valueAttr: t.MarkoAttribute | undefined;\n    let valueChangeAttr: t.MarkoAttribute | undefined;\n    for (const attr of node.attributes) {\n      if (t.isMarkoAttribute(attr)) {\n        if (attr.name === \"value\") {\n          valueAttr = attr;\n        } else if (attr.name === \"valueChange\") {\n          valueChangeAttr = attr;\n        } else {\n          const start = attr.loc?.start;\n          const end = attr.loc?.end;\n          const msg =\n            \"The [`<let>` tag](https://markojs.com/docs/reference/core-tag#let) only supports the [`value=` attribute](https://markojs.com/docs/reference/language#shorthand-value) and its change handler.\";\n\n          if (start == null || end == null) {\n            throw tag.get(\"name\").buildCodeFrameError(msg);\n          } else {\n            throw tag.hub.buildError(\n              { loc: { start, end } } as unknown as t.Node,\n              msg,\n              Error,\n            );\n          }\n        }\n      }\n    }\n\n    assertNoArgs(tag);\n    assertNoParams(tag);\n    assertNoBodyContent(tag);\n    assertNoSpreadAttrs(tag);\n\n    if (!tagVar) {\n      throw tag\n        .get(\"name\")\n        .buildCodeFrameError(\n          \"The [`<let>` tag](https://markojs.com/docs/reference/core-tag#let) requires a [tag variable](https://markojs.com/docs/reference/language#tag-variables).\",\n        );\n    }\n\n    if (!t.isIdentifier(tagVar)) {\n      throw tag\n        .get(\"var\")\n        .buildCodeFrameError(\n          \"The [`<let>` tag](https://markojs.com/docs/reference/core-tag#let) variable cannot be destructured.\",\n        );\n    }\n\n    if (valueChangeAttr && computeNode(valueChangeAttr.value)?.value) {\n      throw tag\n        .get(\"attributes\")\n        .find((attr) => attr.node === valueChangeAttr)!\n        .get(\"value\")\n        .buildCodeFrameError(\n          \"The [`<let>` tag](https://markojs.com/docs/reference/core-tag#let) [`valueChange=` attribute](https://markojs.com/docs/reference/core-tag#controllable-let) must be a function.\",\n        );\n    }\n\n    const tagSection = getOrCreateSection(tag);\n    const binding = trackVarReferences(tag, BindingType.let)!;\n    const tagExtra = mergeReferences(tagSection, tag.node, [\n      valueAttr?.value,\n      valueChangeAttr?.value,\n    ]);\n\n    if (valueChangeAttr) {\n      setBindingDownstream(binding, tagExtra);\n      // TODO: could be based on if there are actually assignments.\n      addSerializeReason(\n        tagSection,\n        true,\n        binding,\n        getAccessorPrefix().TagVariableChange,\n      );\n    } else {\n      setBindingDownstream(binding, false);\n    }\n  },\n  translate: {\n    exit(tag) {\n      const { node } = tag;\n      const tagVar = node.var!;\n      const valueAttr =\n        node.attributes.find(\n          (attr) =>\n            t.isMarkoAttribute(attr) && (attr.default || attr.name === \"value\"),\n        ) ?? t.markoAttribute(\"value\", t.identifier(\"undefined\"));\n      const valueChangeAttr = node.attributes.find(\n        (attr) => t.isMarkoAttribute(attr) && attr.name === \"valueChange\",\n      );\n      const section = getSection(tag);\n      const binding = tagVar.extra!.binding!;\n\n      if (isOutputDOM()) {\n        const signal = initValue(binding, true);\n        const referencedBindings = tag.node.extra!.referencedBindings;\n\n        addValue(section, referencedBindings, signal, valueAttr.value);\n\n        if (valueChangeAttr) {\n          signal.extraArgs = [valueChangeAttr.value];\n        }\n\n        signal.buildAssignment = (valueSection, value) => {\n          if (valueChangeAttr || signalHasStatements(signal)) {\n            return t.callExpression(signal.identifier, [\n              getScopeExpression(valueSection, signal.section),\n              value,\n            ]);\n          }\n        };\n      } else {\n        translateVar(tag, valueAttr.value, \"let\");\n\n        if (valueChangeAttr) {\n          setBindingSerializedValue(\n            section,\n            binding,\n            t.logicalExpression(\n              \"||\",\n              valueChangeAttr.value,\n              t.unaryExpression(\"void\", t.numericLiteral(0)),\n            ),\n            getAccessorPrefix().TagVariableChange,\n          );\n        }\n      }\n\n      tag.remove();\n    },\n  },\n  parseOptions: {\n    openTagOnly: true,\n  },\n  attributes: {},\n  autocomplete: [\n    {\n      description: \"Use to create a mutable binding.\",\n      descriptionMoreURL: \"https://markojs.com/docs/reference/core-tag#let\",\n    },\n  ],\n  types: runtimeInfo.name + \"/tags/let.d.marko\",\n} as Tag;\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/core/lifecycle.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  assertNoArgs,\n  assertNoParams,\n  assertNoVar,\n  getProgram,\n  type Tag,\n} from \"@marko/compiler/babel-utils\";\n\nimport { assertNoBodyContent } from \"../util/assert\";\nimport { isOutputDOM } from \"../util/marko-config\";\nimport { getAllTagReferenceNodes, mergeReferences } from \"../util/references\";\nimport { callRuntime } from \"../util/runtime\";\nimport runtimeInfo from \"../util/runtime-info\";\nimport { getOrCreateSection, getSection } from \"../util/sections\";\nimport { addHTMLEffectCall, addStatement } from \"../util/signals\";\nimport { createSectionState } from \"../util/state\";\nimport { propsToExpression, translateAttrs } from \"../util/translate-attrs\";\nimport { scopeIdentifier } from \"../visitors/program\";\n\nconst [getIndex, setIndex] = createSectionState(\"lifecycleIndex\", () => 0);\n\nexport default {\n  analyze(tag) {\n    assertNoArgs(tag);\n    assertNoVar(tag);\n    assertNoParams(tag);\n    assertNoBodyContent(tag);\n\n    const { node } = tag;\n    const section = getOrCreateSection(tag);\n    const tagExtra = mergeReferences(\n      section,\n      tag.node,\n      getAllTagReferenceNodes(tag.node),\n    );\n    tagExtra.isEffect = true;\n\n    if (node.attributes.length === 0) {\n      throw tag\n        .get(\"name\")\n        .buildCodeFrameError(\n          \"The [`<lifecycle>` tag](https://markojs.com/docs/reference/core-tag#lifecycle) requires at least one attribute.\",\n        );\n    }\n\n    for (const attr of node.attributes) {\n      if (t.isMarkoSpreadAttribute(attr)) {\n        throw tag\n          .get(\"name\")\n          .buildCodeFrameError(\n            \"The [`<lifecycle>` tag](https://markojs.com/docs/reference/core-tag#lifecycle) does not support [`...spread` attributes](https://markojs.com/docs/reference/language#spread-attributes).\",\n          );\n      }\n    }\n\n    getProgram().node.extra.isInteractive = true;\n  },\n  translate: {\n    exit(tag) {\n      const { node } = tag;\n      const section = getSection(tag);\n      const tagExtra = node.extra!;\n      const { referencedBindings } = tagExtra;\n\n      if (isOutputDOM()) {\n        const translatedAttrs = translateAttrs(tag);\n        const index = getIndex(section);\n        setIndex(section, index + 1);\n        translatedAttrs.statements.push(\n          t.expressionStatement(\n            callRuntime(\n              \"_lifecycle\",\n              scopeIdentifier,\n              propsToExpression(translatedAttrs.properties),\n              index > 0 ? t.numericLiteral(index) : undefined,\n            ),\n          ),\n        );\n        addStatement(\n          \"effect\",\n          section,\n          referencedBindings,\n          translatedAttrs.statements,\n        );\n      } else {\n        addHTMLEffectCall(section, referencedBindings);\n      }\n\n      tag.remove();\n    },\n  },\n  parseOptions: {\n    openTagOnly: true,\n  },\n  attributes: {},\n  autocomplete: [\n    {\n      description: \"Use to create a side effects.\",\n      descriptionMoreURL:\n        \"https://markojs.com/docs/reference/core-tag#lifecycle\",\n    },\n  ],\n  types: runtimeInfo.name + \"/tags/lifecycle.d.marko\",\n} as Tag;\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/core/log.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  assertNoArgs,\n  assertNoParams,\n  assertNoVar,\n  type Tag,\n} from \"@marko/compiler/babel-utils\";\n\nimport { assertNoBodyContent } from \"../util/assert\";\nimport { isOutputHTML } from \"../util/marko-config\";\nimport runtimeInfo from \"../util/runtime-info\";\nimport { getSection } from \"../util/sections\";\nimport { addStatement } from \"../util/signals\";\n\nexport default {\n  analyze(tag) {\n    const [valueAttr] = tag.node.attributes;\n    assertNoArgs(tag);\n    assertNoVar(tag);\n    assertNoParams(tag);\n    assertNoBodyContent(tag);\n\n    if (!valueAttr) {\n      throw tag\n        .get(\"name\")\n        .buildCodeFrameError(\n          \"The [`<log>` tag](https://markojs.com/docs/reference/core-tag#log) requires a [`value=` attribute](https://markojs.com/docs/reference/language#shorthand-value).\",\n        );\n    }\n\n    if (\n      tag.node.attributes.length > 1 ||\n      !t.isMarkoAttribute(valueAttr) ||\n      (!valueAttr.default && valueAttr.name !== \"value\")\n    ) {\n      throw tag\n        .get(\"name\")\n        .buildCodeFrameError(\n          \"The [`<log>` tag](https://markojs.com/docs/reference/core-tag#log) only supports the [`value=` attribute](https://markojs.com/docs/reference/language#shorthand-value).\",\n        );\n    }\n  },\n  translate: {\n    exit(tag) {\n      const section = getSection(tag);\n      const [valueAttr] = tag.node.attributes;\n      const { value } = valueAttr;\n      const referencedBindings = value.extra?.referencedBindings;\n\n      const statement = t.expressionStatement(\n        t.callExpression(\n          t.memberExpression(t.identifier(\"console\"), t.identifier(\"log\")),\n          [value],\n        ),\n      );\n\n      if (isOutputHTML()) {\n        tag.insertBefore(statement);\n      } else {\n        addStatement(\"render\", section, referencedBindings, statement);\n      }\n\n      tag.remove();\n    },\n  },\n  parseOptions: {\n    openTagOnly: true,\n  },\n  attributes: {},\n  autocomplete: [\n    {\n      description: \"Use to log a value to the console.\",\n      descriptionMoreURL: \"https://markojs.com/docs/reference/core-tag#log\",\n    },\n  ],\n  types: runtimeInfo.name + \"/tags/log.d.marko\",\n} as Tag;\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/core/return.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  assertAllowedAttributes,\n  assertNoArgs,\n  assertNoParams,\n  assertNoVar,\n  isNativeTag,\n  type Tag,\n} from \"@marko/compiler/babel-utils\";\n\nimport { assertNoBodyContent } from \"../util/assert\";\nimport { generateUidIdentifier } from \"../util/generate-uid\";\nimport { getAccessorProp } from \"../util/get-accessor-char\";\nimport { getKnownAttrValues } from \"../util/get-known-attr-values\";\nimport { getParentTag } from \"../util/get-parent-tag\";\nimport { isControlFlowTag } from \"../util/is-core-tag\";\nimport { callRuntime } from \"../util/runtime\";\nimport { getOrCreateSection, getSection } from \"../util/sections\";\nimport { addSerializeReason } from \"../util/serialize-reasons\";\nimport { addStatement, setSectionSerializedValue } from \"../util/signals\";\nimport { createSectionState } from \"../util/state\";\nimport { translateByTarget } from \"../util/visitors\";\nimport * as writer from \"../util/writer\";\nimport { scopeIdentifier } from \"../visitors/program\";\n\nconst [getSectionReturnValueIdentifier, setReturnValueIdentifier] =\n  createSectionState<t.Identifier | undefined>(\"returnValue\");\nexport { getSectionReturnValueIdentifier };\n\nexport default {\n  analyze(tag) {\n    assertNoArgs(tag);\n    assertNoVar(tag);\n    assertNoParams(tag);\n    assertNoBodyContent(tag);\n    assertAllowedAttributes(tag, [\"value\", \"valueChange\"]);\n\n    const parentTag = getParentTag(tag);\n    if (parentTag) {\n      if (isNativeTag(parentTag)) {\n        throw tag\n          .get(\"name\")\n          .buildCodeFrameError(\n            \"The [`<return>` tag](https://markojs.com/docs/reference/core-tag#return) can not be used in a [native tag](https://markojs.com/docs/reference/native-tag).\",\n          );\n      } else if (isControlFlowTag(parentTag)) {\n        throw tag\n          .get(\"name\")\n          .buildCodeFrameError(\n            `The [\\`<return>\\` tag](https://markojs.com/docs/reference/core-tag#return) can not be used under the \\`<${parentTag.get(\"name\").toString()}>\\` tag.`,\n          );\n      }\n    }\n\n    const section = getOrCreateSection(tag);\n    if (section.returnValueExpr) {\n      throw tag\n        .get(\"name\")\n        .buildCodeFrameError(\n          `Cannot have multiple [\\`<return>\\` tags](https://markojs.com/docs/reference/core-tag#return) ${tag.parent.type === \"Program\" ? \"for the template\" : \"within a tag's body content\"}.`,\n        );\n    }\n\n    const attrs = getKnownAttrValues(tag.node);\n    if (!attrs.value) {\n      throw tag\n        .get(\"name\")\n        .buildCodeFrameError(\n          \"The [`<return>` tag](https://markojs.com/docs/reference/core-tag#return) requires a [`value=` attribute](https://markojs.com/docs/reference/language#shorthand-value).\",\n        );\n    }\n\n    if (attrs.valueChange) {\n      (attrs.valueChange.extra ??= {}).isEffect = true;\n      // TODO: this should be based on the parent actually mutating the tag variable.\n      addSerializeReason(section, true, getAccessorProp().TagVariableChange);\n    }\n\n    section.returnValueExpr = attrs.value.extra ??= {};\n  },\n  translate: translateByTarget({\n    html: {\n      exit(tag) {\n        const section = getSection(tag);\n        const attrs = getKnownAttrValues(tag.node);\n        writer.flushBefore(tag);\n\n        if (attrs.valueChange) {\n          setSectionSerializedValue(\n            section,\n            getAccessorProp().TagVariableChange,\n            t.logicalExpression(\n              \"||\",\n              attrs.valueChange,\n              t.unaryExpression(\"void\", t.numericLiteral(0)),\n            ),\n          );\n        }\n\n        if (attrs.value) {\n          const returnId = generateUidIdentifier(\"return\");\n          setReturnValueIdentifier(section, returnId);\n          tag\n            .replaceWith(\n              t.variableDeclaration(\"const\", [\n                t.variableDeclarator(returnId, attrs.value),\n              ]),\n            )[0]\n            .skip();\n        }\n      },\n    },\n    dom: {\n      exit(tag) {\n        const section = getSection(tag);\n        const attrs = getKnownAttrValues(tag.node);\n\n        if (attrs.value) {\n          addStatement(\n            \"render\",\n            section,\n            attrs.value.extra?.referencedBindings,\n            t.expressionStatement(\n              callRuntime(\"_return\", scopeIdentifier, attrs.value),\n            ),\n          );\n        }\n\n        if (attrs.valueChange) {\n          addStatement(\n            \"render\",\n            section,\n            attrs.valueChange.extra?.referencedBindings,\n            t.expressionStatement(\n              callRuntime(\"_return_change\", scopeIdentifier, attrs.valueChange),\n            ),\n          );\n        }\n\n        tag.remove();\n      },\n    },\n  }),\n  parseOptions: {\n    openTagOnly: true,\n  },\n  autocomplete: [\n    {\n      displayText: \"return=<value>\",\n      description: \"Provides a value for use in a parent template.\",\n      snippet: \"return=${1:value}\",\n      descriptionMoreURL: \"https://markojs.com/docs/reference/core-tag#return\",\n    },\n  ],\n} as Tag;\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/core/script.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  assertNoArgs,\n  assertNoAttributeTags,\n  assertNoParams,\n  getProgram,\n  parseStatements,\n  type Tag,\n} from \"@marko/compiler/babel-utils\";\n\nimport { assertNoBodyContent } from \"../util/assert\";\nimport { isOutputDOM } from \"../util/marko-config\";\nimport { dropNodes, getAllTagReferenceNodes } from \"../util/references\";\nimport runtimeInfo from \"../util/runtime-info\";\nimport { getSection } from \"../util/sections\";\nimport { addHTMLEffectCall, addStatement } from \"../util/signals\";\nimport { skip, traverseContains } from \"../util/traverse\";\nimport { isScopeIdentifier, scopeIdentifier } from \"../visitors/program\";\n\nconst htmlScriptTagAlternateMsg =\n  \" For a native html [`<script>` tag](https://markojs.com/docs/reference/core-tag#script) use the `html-script` core tag instead.\";\n\nexport default {\n  parse(tag) {\n    const { node } = tag;\n    const { body } = node.body;\n    if (body.length) {\n      let code = \"\";\n      for (const child of body) {\n        if (child.type !== \"MarkoText\") {\n          throw tag.hub.file.hub.buildError(\n            child,\n            \"Unexpected content in [`<script>` tag](https://markojs.com/docs/reference/core-tag#script). Only javascript and typescript is supported.\" +\n              htmlScriptTagAlternateMsg,\n            SyntaxError,\n          );\n        }\n\n        code += child.value;\n      }\n\n      const start = body[0]?.start;\n      const end = body[body.length - 1]?.end;\n      const bodyStatements = parseStatements(tag.hub.file, code, start, end);\n      if (bodyStatements.length) {\n        const valueFn = t.arrowFunctionExpression(\n          [],\n          t.blockStatement(bodyStatements),\n          traverseContains(bodyStatements, isAwaitExpression),\n        );\n\n        node.attributes.push(t.markoAttribute(\"value\", valueFn));\n      }\n\n      node.body.body = [];\n    }\n  },\n\n  analyze(tag) {\n    const { node } = tag;\n    assertNoArgs(tag);\n    assertNoParams(tag);\n    assertNoBodyContent(tag);\n    assertNoAttributeTags(tag);\n\n    if (node.var) {\n      throw tag.hub.buildError(\n        node.var,\n        \"The [`<script>` tag](https://markojs.com/docs/reference/core-tag#script) does not support a tag variable reference.\" +\n          htmlScriptTagAlternateMsg,\n      );\n    }\n\n    let seenValueAttr = false;\n    for (const attr of node.attributes) {\n      if (attr.type === \"MarkoAttribute\" && attr.name === \"value\") {\n        if (seenValueAttr) {\n          throw tag.hub.buildError(attr, \"Invalid duplicate value attribute.\");\n        }\n        seenValueAttr = true;\n        (attr.value.extra ??= {}).isEffect = true;\n        getProgram().node.extra.isInteractive = true;\n      } else {\n        throw tag.hub.buildError(\n          attr,\n          \"The [`<script>` tag](https://markojs.com/docs/reference/core-tag#script) does not support html attributes.\" +\n            htmlScriptTagAlternateMsg,\n        );\n      }\n    }\n\n    if (!seenValueAttr) {\n      dropNodes(getAllTagReferenceNodes(node));\n    }\n  },\n  translate: {\n    exit(tag) {\n      const { node } = tag;\n      const [valueAttr] = node.attributes;\n      if (!valueAttr) {\n        tag.remove();\n        return;\n      }\n\n      const section = getSection(tag);\n      const { value } = valueAttr;\n      const referencedBindings = value.extra?.referencedBindings;\n      if (isOutputDOM()) {\n        const { value } = valueAttr;\n        const isFunction =\n          t.isFunctionExpression(value) || t.isArrowFunctionExpression(value);\n        let inlineBody: t.Statement | t.Statement[] | null = null;\n        let referencesScope = false;\n        if (isFunction) {\n          if (value.async || value.generator) {\n            referencesScope = traverseContains(value, isScopeIdentifier);\n          } else if (t.isBlockStatement(value.body)) {\n            let hasDeclaration = false;\n            for (const child of value.body.body) {\n              if (t.isDeclaration(child)) {\n                hasDeclaration = true;\n                break;\n              }\n            }\n\n            inlineBody = hasDeclaration ? value.body : value.body.body;\n          } else {\n            inlineBody = t.expressionStatement(value.body);\n          }\n        }\n        addStatement(\n          \"effect\",\n          section,\n          referencedBindings,\n          inlineBody ||\n            t.expressionStatement(\n              t.callExpression(value, referencesScope ? [scopeIdentifier] : []),\n            ),\n        );\n      } else {\n        addHTMLEffectCall(section, referencedBindings);\n      }\n\n      tag.remove();\n    },\n  },\n  parseOptions: {\n    text: true,\n    preserveWhitespace: true,\n  },\n  autocomplete: [\n    {\n      description: \"Use to create a side effects.\",\n      descriptionMoreURL: \"https://markojs.com/docs/core-tags/#script\",\n    },\n  ],\n  types: runtimeInfo.name + \"/tags/script.d.marko\",\n} as Tag;\n\nfunction isAwaitExpression(node: t.Node) {\n  switch (node.type) {\n    case \"ForOfStatement\":\n      return node.await;\n    case \"FunctionDeclaration\":\n    case \"FunctionExpression\":\n    case \"ArrowFunctionExpression\":\n    case \"ClassMethod\":\n    case \"ObjectMethod\":\n    case \"ClassPrivateMethod\":\n      return skip;\n    case \"AwaitExpression\":\n      return true;\n    default:\n      return false;\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/core/server.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport { parseStatements, type Tag } from \"@marko/compiler/babel-utils\";\nexport default {\n  parse(tag) {\n    const {\n      node,\n      hub: { file },\n    } = tag;\n    const rawValue = node.rawValue!;\n    const code = rawValue.replace(/^server\\s*/, \"\");\n    const start = node.start! + (rawValue.length - code.length);\n    let body = parseStatements(file, code, start, start + code.length);\n    if (body.length === 1 && t.isBlockStatement(body[0])) {\n      body = body[0].body;\n    }\n\n    tag.replaceWith(t.markoScriptlet(body, true, \"server\"));\n  },\n  parseOptions: {\n    statement: true,\n    rawOpenTag: true,\n  },\n  autocomplete: [\n    {\n      displayText: \"server <statement>\",\n      description:\n        \"A JavaScript statement which is only evaluated once your template is loaded on the server.\",\n      descriptionMoreURL: \"https://markojs.com/docs/syntax/#server-javascript\",\n    },\n  ],\n} as Tag;\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/core/static.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport { parseStatements, type Tag } from \"@marko/compiler/babel-utils\";\nexport default {\n  parse(tag) {\n    const {\n      node,\n      hub: { file },\n    } = tag;\n    const rawValue = node.rawValue!;\n    const code = rawValue.replace(/^static\\s*/, \"\");\n    const start = node.start! + (rawValue.length - code.length);\n    let body = parseStatements(file, code, start, start + code.length);\n    if (body.length === 1 && t.isBlockStatement(body[0])) {\n      body = body[0].body;\n    }\n\n    tag.replaceWith(t.markoScriptlet(body, true));\n  },\n  parseOptions: {\n    statement: true,\n    rawOpenTag: true,\n  },\n  autocomplete: [\n    {\n      displayText: \"static <statement>\",\n      description:\n        \"A JavaScript statement which is only evaluated once your template is loaded.\",\n      descriptionMoreURL: \"https://markojs.com/docs/syntax/#static-javascript\",\n    },\n  ],\n} as Tag;\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/core/style.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  assertNoArgs,\n  assertNoAttributeTags,\n  assertNoParams,\n  getEnd,\n  getProgram,\n  getStart,\n  importStar,\n  type Tag,\n} from \"@marko/compiler/babel-utils\";\nimport MagicString, { type SourceMap } from \"magic-string\";\nimport path from \"path\";\n\nimport { getMarkoOpts, isOutputDOM } from \"../util/marko-config\";\n\nconst STYLE_EXT_REG = /^style((?:\\.[a-zA-Z0-9$_-]+)+)?/;\nconst htmlStyleTagAlternateMsg =\n  \" For a native html [`<style>` tag](https://markojs.com/docs/reference/core-tag#style) use the `html-style` core tag instead.\";\n\nexport default {\n  analyze(tag) {\n    assertNoArgs(tag);\n    assertNoParams(tag);\n    assertNoAttributeTags(tag);\n\n    const { node } = tag;\n    const ext = STYLE_EXT_REG.exec(node.rawValue || \"\")?.[1]?.slice(1);\n    for (const attr of node.attributes) {\n      if (\n        attr.start == null &&\n        attr.type === \"MarkoAttribute\" &&\n        attr.name === \"class\" &&\n        attr.value.type === \"StringLiteral\" &&\n        attr.value.value === ext\n      ) {\n        continue;\n      }\n\n      throw tag.hub.buildError(\n        attr.value,\n        \"The `style` does not support html attributes.\" +\n          htmlStyleTagAlternateMsg,\n      );\n    }\n\n    for (const child of node.body.body) {\n      if (child.type !== \"MarkoText\") {\n        throw tag.hub.buildError(\n          child,\n          \"The [`<style>` tag](https://markojs.com/docs/reference/core-tag#style) currently only supports static content.\" +\n            htmlStyleTagAlternateMsg,\n        );\n      }\n    }\n  },\n  translate(tag) {\n    const {\n      node,\n      hub: { file },\n    } = tag;\n    const { filename, sourceMaps } = file.opts;\n    let ext = STYLE_EXT_REG.exec(node.rawValue || \"\")?.[1] || \".css\";\n\n    if (node.var && !/\\.module\\./.test(ext)) {\n      ext = \".module\" + ext;\n    }\n\n    const { resolveVirtualDependency } = getMarkoOpts();\n    const createMap = !!(resolveVirtualDependency && sourceMaps);\n    let magicString: MagicString | undefined;\n    let code = \"\";\n    let last = 0;\n    let map: SourceMap | undefined;\n\n    for (const child of node.body.body as t.MarkoText[]) {\n      code += child.value;\n\n      if (createMap) {\n        const start = getStart(file, child);\n        if (start !== null) {\n          magicString ||= new MagicString(file.code, { filename });\n          if (start > last) {\n            magicString.remove(last, start);\n          }\n          last = getEnd(file, child)!;\n        }\n      }\n    }\n\n    if (magicString) {\n      if (file.code.length > last) {\n        magicString.remove(last, file.code.length);\n      }\n\n      map = magicString.generateMap({\n        source: filename,\n        includeContent: true,\n      });\n\n      if (sourceMaps === \"inline\" || sourceMaps === \"both\") {\n        code += `\\n/*# sourceMappingURL=${map.toUrl()}*/`;\n\n        if (sourceMaps === \"inline\") {\n          map = undefined;\n        }\n      }\n    }\n\n    const importPath = resolveVirtualDependency?.(filename, {\n      virtualPath: `./${path.basename(filename) + ext}`,\n      code,\n      map,\n    });\n\n    if (importPath) {\n      if (!node.var) {\n        getProgram().node.body.push(\n          t.importDeclaration([], t.stringLiteral(importPath)),\n        );\n      } else if (t.isIdentifier(node.var)) {\n        getProgram().node.body.push(\n          t.importDeclaration(\n            [t.importNamespaceSpecifier(node.var)],\n            t.stringLiteral(importPath),\n          ),\n        );\n      } else {\n        const varDecl = t.variableDeclaration(\"const\", [\n          t.variableDeclarator(node.var, importStar(file, importPath, \"style\")),\n        ]);\n        getProgram().node.body.push(\n          isOutputDOM() ? varDecl : t.markoScriptlet([varDecl], true),\n        );\n      }\n    }\n\n    tag.remove();\n  },\n  parseOptions: {\n    html: false,\n    text: true,\n    rawOpenTag: true,\n    preserveWhitespace: true,\n  },\n  attributes: {},\n} as Tag;\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/core/textarea.ts",
    "content": "import { types as t } from \"@marko/compiler\";\n\nimport normalizeStringExpression from \"../util/normalize-string-expression\";\n\nexport function preAnalyze(tag: t.NodePath<t.MarkoTag>) {\n  if (tag.node.body.body.length) {\n    // convert textarea body into a static value attribute.\n    const parts: (string | t.Expression)[] = [];\n    for (const child of tag.node.body.body) {\n      if (\n        child.type === \"MarkoText\" ||\n        (child.type === \"MarkoPlaceholder\" && child.escape)\n      ) {\n        parts.push(child.value);\n      } else {\n        throw tag.hub.file.hub.buildError(\n          child,\n          \"Unexpected content in textarea, only text and placeholders are supported.\",\n          SyntaxError,\n        );\n      }\n    }\n\n    const textValue = normalizeStringExpression(parts);\n    if (textValue) {\n      tag.node.attributes.push(t.markoAttribute(\"value\", textValue));\n    }\n\n    tag.node.body.body = [];\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/core/try.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  assertNoArgs,\n  assertNoAttributes,\n  assertNoParams,\n  assertNoVar,\n  getProgram,\n  type Tag,\n} from \"@marko/compiler/babel-utils\";\n\nimport { WalkCode } from \"../../common/types\";\nimport { assertNoSpreadAttrs } from \"../util/assert\";\nimport { analyzeAttributeTags } from \"../util/nested-attribute-tags\";\nimport {\n  type Binding,\n  BindingType,\n  createBinding,\n  getAllTagReferenceNodes,\n  getScopeAccessorLiteral,\n  mergeReferences,\n} from \"../util/references\";\nimport { callRuntime } from \"../util/runtime\";\nimport runtimeInfo from \"../util/runtime-info\";\nimport {\n  getBranchRendererArgs,\n  getOrCreateSection,\n  getScopeIdIdentifier,\n  getSection,\n  getSectionForBody,\n  setSectionParentIsOwner,\n  startSection,\n} from \"../util/sections\";\nimport {\n  addStatement,\n  addValue,\n  getSignal,\n  replaceNullishAndEmptyFunctionsWith0,\n  setTryHasPlaceholder,\n  writeHTMLResumeStatements,\n} from \"../util/signals\";\nimport {\n  getTranslatedBodyContentProperty,\n  propsToExpression,\n  translateAttrs,\n} from \"../util/translate-attrs\";\nimport { translateByTarget } from \"../util/visitors\";\nimport * as walks from \"../util/walks\";\nimport * as writer from \"../util/writer\";\n\nconst hasEnabledCatch = new WeakSet<t.Program>();\nconst kDOMBinding = Symbol(\"try tag dom binding\");\n\ndeclare module \"@marko/compiler/dist/types\" {\n  export interface MarkoTagExtra {\n    [kDOMBinding]?: Binding;\n  }\n}\n\nexport default {\n  analyze(tag) {\n    assertNoVar(tag);\n    assertNoArgs(tag);\n    assertNoParams(tag);\n    assertNoAttributes(tag);\n    assertNoSpreadAttrs(tag);\n    analyzeAttributeTags(tag);\n    const section = getOrCreateSection(tag);\n    const tagExtra = mergeReferences(\n      section,\n      tag.node,\n      getAllTagReferenceNodes(tag.node),\n    );\n    tagExtra[kDOMBinding] = createBinding(\"#text\", BindingType.dom, section);\n\n    if (!tag.node.body.body.length) {\n      throw tag\n        .get(\"name\")\n        .buildCodeFrameError(\n          \"The [`<try>` tag](https://markojs.com/docs/reference/core-tag#try) requires [body content](https://markojs.com/docs/reference/language#tag-content).\",\n        );\n    }\n\n    const bodySection = startSection(tag.get(\"body\"));\n\n    if (bodySection) {\n      bodySection.upstreamExpression = tagExtra;\n    }\n  },\n  translate: translateByTarget({\n    html: {\n      enter(tag) {\n        if (!getSectionForBody(tag.get(\"body\"))) {\n          tag.remove();\n          return;\n        }\n\n        const tagBody = tag.get(\"body\");\n        const bodySection = getSectionForBody(tagBody)!;\n\n        if (tag.node.extra?.attributeTags?.[\"@placeholder\"]) {\n          setTryHasPlaceholder(bodySection, true);\n        }\n\n        setSectionParentIsOwner(bodySection, true);\n        writer.flushBefore(tag);\n      },\n      exit(tag) {\n        const { node } = tag;\n        const section = getSection(tag);\n        const tagExtra = node.extra!;\n        const tagBody = tag.get(\"body\");\n        const translatedAttrs = translateAttrs(tag);\n        const nodeRef = tagExtra[kDOMBinding]!;\n\n        const contentProp = getTranslatedBodyContentProperty(\n          translatedAttrs.properties,\n        );\n        if (contentProp) {\n          translatedAttrs.properties.splice(\n            translatedAttrs.properties.indexOf(contentProp),\n            1,\n          );\n        }\n\n        writer.flushInto(tag);\n        writeHTMLResumeStatements(tagBody);\n        tag.insertBefore(translatedAttrs.statements);\n\n        tag\n          .replaceWith(\n            t.expressionStatement(\n              callRuntime(\n                \"_try\",\n                getScopeIdIdentifier(section),\n                getScopeAccessorLiteral(nodeRef),\n                contentProp?.value,\n                propsToExpression(translatedAttrs.properties),\n              ),\n            ),\n          )[0]\n          .skip();\n      },\n    },\n    dom: {\n      enter(tag) {\n        const tagBody = tag.get(\"body\");\n        const bodySection = getSectionForBody(tagBody)!;\n\n        if (tag.node.extra?.attributeTags?.[\"@placeholder\"]) {\n          setTryHasPlaceholder(bodySection, true);\n        }\n\n        setSectionParentIsOwner(bodySection, true);\n\n        walks.visit(tag, WalkCode.Replace);\n        walks.enterShallow(tag);\n      },\n      exit(tag) {\n        const { node } = tag;\n        const tagExtra = node.extra!;\n        const nodeRef = tagExtra[kDOMBinding]!;\n        const referencedBindings = tagExtra.referencedBindings;\n\n        const translatedAttrs = translateAttrs(tag);\n        const contentProp = getTranslatedBodyContentProperty(\n          translatedAttrs.properties,\n        );\n        if (contentProp) {\n          translatedAttrs.properties.splice(\n            translatedAttrs.properties.indexOf(contentProp),\n            1,\n          );\n        }\n\n        const section = getSection(tag);\n        const bodySection = getSectionForBody(tag.get(\"body\"))!;\n        const signal = getSignal(section, nodeRef, \"try\");\n\n        signal.build = () => {\n          return callRuntime(\n            \"_try\",\n            getScopeAccessorLiteral(nodeRef, true),\n            ...replaceNullishAndEmptyFunctionsWith0(\n              getBranchRendererArgs(bodySection),\n            ),\n          );\n        };\n\n        if (translatedAttrs.statements.length) {\n          addStatement(\n            \"render\",\n            section,\n            referencedBindings,\n            translatedAttrs.statements,\n          );\n        }\n\n        const program = getProgram().node;\n        if (!hasEnabledCatch.has(program)) {\n          hasEnabledCatch.add(program);\n          program.body.push(\n            t.expressionStatement(callRuntime(\"_enable_catch\")),\n          );\n        }\n\n        addValue(\n          section,\n          referencedBindings,\n          signal,\n          propsToExpression(translatedAttrs.properties),\n        );\n\n        tag.remove();\n      },\n    },\n  }),\n  attributes: {},\n  autocomplete: [\n    {\n      description:\n        \"Used to capture errors and display placeholders for nested content.\",\n      descriptionMoreURL: \"https://markojs.com/docs/reference/core-tag#try\",\n    },\n  ],\n  types: runtimeInfo.name + \"/tags/try.d.marko\",\n} as Tag;\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/index.ts",
    "content": "import type { Config } from \"@marko/compiler\";\n\nimport coreTagLib from \"./core\";\nimport runtimeInfo from \"./util/runtime-info\";\nimport { extractVisitors } from \"./util/visitors\";\nimport MarkoCDATA from \"./visitors/cdata\";\nimport MarkoComment from \"./visitors/comment\";\nimport MarkoDeclaration from \"./visitors/declaration\";\nimport MarkoDocumentType from \"./visitors/document-type\";\nimport Function from \"./visitors/function\";\nimport ImportDeclaration from \"./visitors/import-declaration\";\nimport MarkoPlaceholder from \"./visitors/placeholder\";\nimport Program from \"./visitors/program\";\nimport ReferencedIdentifier from \"./visitors/referenced-identifier\";\nimport MarkoScriptlet from \"./visitors/scriptlet\";\nimport MarkoTag from \"./visitors/tag\";\nimport MarkoText from \"./visitors/text\";\n\nconst visitors = extractVisitors({\n  Program,\n  Function,\n  ReferencedIdentifier,\n  ImportDeclaration,\n  MarkoDocumentType,\n  MarkoDeclaration,\n  MarkoCDATA,\n  MarkoText,\n  MarkoTag,\n  MarkoPlaceholder,\n  MarkoScriptlet,\n  MarkoComment,\n});\n\nexport const tagDiscoveryDirs = [\"tags\"];\nexport { default as internalEntryBuilder } from \"./util/entry-builder\";\nexport const preferAPI = \"tags\";\nexport const { transform, analyze, translate } = visitors;\nexport const taglibs = [\n  [\n    coreTagLib.taglibId,\n    {\n      ...coreTagLib,\n      migrate: visitors.migrate,\n    },\n  ],\n];\n\nexport function getRuntimeEntryFiles(\n  output: Config[\"output\"],\n  optimize: boolean,\n) {\n  return [\n    `${runtimeInfo.name}${optimize ? \"\" : \"/debug\"}/${output === \"html\" ? \"html\" : \"dom\"}`,\n  ];\n}\n\nexport { createInteropTranslator } from \"./interop\";\n\ndeclare module \"@marko/compiler/dist/types\" {\n  // This is extended by individual helpers.\n  export interface ProgramExtra {}\n  export interface FunctionExpressionExtra {}\n  export interface ArrowFunctionExpressionExtra {}\n  export interface MarkoTagExtra {}\n  export interface MarkoTagBodyExtra {}\n  export interface MarkoAttributeExtra {}\n  export interface MarkoSpreadAttributeExtra {}\n  export interface MarkoPlaceholderExtra {}\n\n  export interface Program {\n    extra: ProgramExtra & NodeExtra;\n  }\n\n  export interface FunctionDeclaration {\n    extra?: FunctionDeclarationExtra & NodeExtra;\n  }\n\n  export interface FunctionExpression {\n    extra?: FunctionExpressionExtra & NodeExtra;\n  }\n\n  export interface ArrowFunctionExpression {\n    extra?: ArrowFunctionExpressionExtra & NodeExtra;\n  }\n\n  export interface MarkoTag {\n    extra?: MarkoTagExtra & NodeExtra;\n  }\n\n  export interface MarkoTagBody {\n    extra?: MarkoTagBodyExtra & NodeExtra;\n  }\n\n  export interface MarkoAttribute {\n    extra?: MarkoAttributeExtra & NodeExtra;\n  }\n\n  export interface MarkoSpreadAttribute {\n    extra?: MarkoSpreadAttributeExtra & NodeExtra;\n  }\n\n  export interface MarkoPlaceholder {\n    extra?: MarkoPlaceholderExtra & NodeExtra;\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/interop/build-aggregate-error.ts",
    "content": "import type { types as t } from \"@marko/compiler\";\nimport { codeFrameColumns } from \"@marko/compiler/internal/babel\";\nimport * as markoModules from \"@marko/compiler/modules\";\nimport path from \"path\";\n\nexport function buildAggregateError(\n  file: t.BabelFile,\n  rootMsg: string,\n  ...paths: [string, t.NodePath][]\n) {\n  const err = new SyntaxError();\n  const fileName = path.relative(\n    markoModules.cwd,\n    file.opts.filename as string,\n  );\n  const finalMsg = `${rootMsg}:\\n\\n${paths\n    .map(\n      ([msg, path]: [string, t.NodePath]) =>\n        `\\u001b[90m${msg} at ${getFileNameWithLoc(\n          fileName,\n          path,\n        )}:\\x1b[0m\\n${getFrame(file, path)}`,\n    )\n    .join(\"\\n\\n\")}`;\n\n  if (!(\"MARKO_DEBUG\" in process.env)) {\n    err.stack = finalMsg;\n  }\n\n  // Prevent babel from changing our error message.\n  Object.defineProperty(err, \"message\", {\n    get() {\n      return finalMsg;\n    },\n    set() {},\n  });\n\n  return err;\n}\n\nfunction getFrame(file: t.BabelFile, { node: { loc } }: t.NodePath) {\n  return loc\n    ? codeFrameColumns(\n        file.code,\n        {\n          start: {\n            line: loc.start.line,\n            column: loc.start.column + 1,\n          },\n          end:\n            loc.end && loc.start.line === loc.end.line\n              ? {\n                  line: loc.end.line,\n                  column: loc.end.column + 1,\n                }\n              : undefined,\n        },\n        { highlightCode: true },\n      )\n    : \"\";\n}\n\nfunction getFileNameWithLoc(fileName: string, { node: { loc } }: t.NodePath) {\n  if (loc) {\n    return `${fileName}(${loc.start.line},${loc.start.column + 1})`;\n  }\n\n  return fileName;\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/interop/feature-detection.ts",
    "content": "import type { types as t } from \"@marko/compiler\";\nimport {\n  getFile,\n  getTagDef,\n  getTaglibLookup,\n} from \"@marko/compiler/babel-utils\";\n\nimport runtimeInfo from \"../util/runtime-info\";\nimport { buildAggregateError } from \"./build-aggregate-error\";\n\nconst enum FeatureType {\n  Class = \"class\",\n  Tags = \"tags\",\n}\n\ntype Feature = {\n  name: string;\n  path: t.NodePath;\n  type: FeatureType;\n};\ntype FeatureState = {\n  feature?: Feature;\n};\n\nexport function isTagsAPI(file = getFile()) {\n  const program = file.path;\n  const programExtra = (program.node.extra ??= {});\n  let { featureType } = programExtra;\n\n  if (!featureType) {\n    const lookup = getTaglibLookup(file);\n    const tagsDir = getTagsDir(file.opts.filename);\n    const state = {} as FeatureState;\n    if (tagsDir && !lookup.manualTagsDirs?.has(tagsDir)) {\n      addFeature(\n        state,\n        FeatureType.Tags,\n        \"Template file within a tags directory\",\n        program,\n      );\n    }\n\n    scanBody(state, program.get(\"body\"));\n    featureType =\n      file.metadata.marko.api =\n      programExtra.featureType =\n        state.feature?.type ||\n        (lookup.exclusiveTagDiscoveryDirs === \"tags\"\n          ? FeatureType.Tags\n          : FeatureType.Class);\n  }\n\n  return featureType === FeatureType.Tags;\n}\n\nfunction getTagsDir(filename: string) {\n  const pathSeparator = /\\/|\\\\/.exec(filename)?.[0];\n  if (pathSeparator) {\n    let previousIndex = filename.length - 1;\n    while (previousIndex > 0) {\n      const index = filename.lastIndexOf(pathSeparator, previousIndex);\n      switch (previousIndex - index) {\n        case 4 /** \"tags\".length */: {\n          if (filename.startsWith(\"tags\", index + 1)) {\n            return filename.slice(0, index + 5);\n          }\n          break;\n        }\n        case 10 /** \"components\".length */: {\n          if (filename.startsWith(\"components\", index + 1)) {\n            return false;\n          }\n          break;\n        }\n      }\n      previousIndex = index - 1;\n    }\n  }\n  return false;\n}\n\nfunction scanBody(\n  state: FeatureState,\n  body:\n    | undefined\n    | t.NodePath<\n        | t.Program[\"body\"][number]\n        | t.MarkoTagBody[\"body\"][number]\n        | t.MarkoTag[\"attributeTags\"][number]\n      >[],\n) {\n  if (body?.length) {\n    for (const child of body) {\n      switch (child.type) {\n        case \"MarkoTag\":\n          scanTag(state, child as t.NodePath<t.MarkoTag>);\n          break;\n        case \"MarkoComment\":\n          if (/^\\s*use tags\\s*$/.test((child.node as t.MarkoComment).value)) {\n            addFeature(state, FeatureType.Tags, \"<!-- use tags -->\", child);\n          } else if (\n            /^\\s*use class\\s*$/.test((child.node as t.MarkoComment).value)\n          ) {\n            addFeature(state, FeatureType.Class, \"<!-- use class -->\", child);\n          }\n          break;\n        case \"MarkoScriptlet\":\n          if (!(child.node as t.MarkoScriptlet).static) {\n            addFeature(state, FeatureType.Class, \"Scriptlet\", child);\n          }\n          break;\n        case \"MarkoClass\":\n          addFeature(\n            state,\n            FeatureType.Class,\n            \"Class block\",\n            (child as t.NodePath<t.MarkoClass>).get(\"body\"),\n          );\n          break;\n      }\n    }\n  }\n}\n\nfunction scanTag(state: FeatureState, tag: t.NodePath<t.MarkoTag>) {\n  if (tag.node.var) {\n    addFeature(\n      state,\n      FeatureType.Tags,\n      \"Tag variable\",\n      tag.get(\"var\") as t.NodePath<t.LVal>,\n    );\n  }\n\n  const tagDef = getTagDef(tag);\n  if (tagDef) {\n    if (tagDef.name === \"style\") {\n      if (\n        /^style(?:(?:\\.[^.\\s\\\\/:*?\"<>|({]+)+)?\\s*\\{/.test(\n          tag.node.rawValue || \"\",\n        )\n      ) {\n        addFeature(state, FeatureType.Class, `style block`, tag.get(\"name\"));\n      }\n    } else if (tagDef.taglibId === runtimeInfo.taglibId) {\n      const feature = getFeatureTypeFromCoreTagName(tagDef.name);\n      if (feature) {\n        addFeature(state, feature, `<${tagDef.name}> tag`, tag.get(\"name\"));\n      }\n    }\n  }\n\n  if (!tagDef?.parseOptions?.rawOpenTag) {\n    for (const attr of tag.get(\"attributes\")) {\n      if (attr.isMarkoAttribute()) {\n        if (attr.node.arguments?.length) {\n          addFeature(\n            state,\n            FeatureType.Class,\n            \"Attribute arguments\",\n            (attr.get(\"arguments\") as t.NodePath<t.Expression>[])[0],\n          );\n          break;\n        } else if (attr.node.bound) {\n          addFeature(state, FeatureType.Tags, \"Bound attribute\", attr);\n          break;\n        }\n      }\n    }\n  }\n\n  scanBody(state, tag.get(\"body\").get(\"body\"));\n  scanBody(state, tag.get(\"attributeTags\"));\n}\n\nfunction getFeatureTypeFromCoreTagName(\n  tagName: string,\n): FeatureType | undefined {\n  switch (tagName) {\n    case \"await-reorderer\":\n    case \"class\":\n    case \"include-html\":\n    case \"include-text\":\n    case \"init-components\":\n    case \"macro\":\n    case \"module-code\":\n    case \"while\":\n      return FeatureType.Class;\n    case \"const\":\n    case \"debug\":\n    case \"define\":\n    case \"id\":\n    case \"let\":\n    case \"lifecycle\":\n    case \"log\":\n    case \"return\":\n    case \"try\":\n      return FeatureType.Tags;\n    default:\n      return undefined;\n  }\n}\n\nfunction addFeature(\n  state: FeatureState,\n  type: Feature[\"type\"],\n  name: Feature[\"name\"],\n  path: Feature[\"path\"],\n) {\n  if (state.feature) {\n    if (state.feature.type !== type) {\n      throw buildAggregateError(\n        path.hub.file,\n        \"Cannot mix Tags API and Class API features in the same file\",\n        [state.feature.name, state.feature.path],\n        [name, path],\n      );\n    }\n  } else {\n    state.feature = {\n      name,\n      path,\n      type,\n    };\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/interop/index.ts",
    "content": "import { type Config, taglib, types as t } from \"@marko/compiler\";\nimport {\n  loadFileForImport,\n  resolveRelativePath,\n} from \"@marko/compiler/babel-utils\";\nimport { generator } from \"@marko/compiler/internal/babel\";\nimport path from \"path\";\n\nimport * as translate6 from \"..\";\nimport { isTagsAPI } from \"./feature-detection\";\n\ntype TagDef = Record<string, unknown>;\ntype Taglibs = [taglibId: string, taglib: Record<string, unknown>][];\n\nexport function createInteropTranslator(translate5: any) {\n  return {\n    preferAPI: translate5.preferAPI,\n    transform: mergeVisitors(translate5.transform, translate6.transform),\n    analyze: mergeVisitors(translate5.analyze, translate6.analyze),\n    translate: patchTranslateProgram(\n      mergeVisitors(translate5.translate, translate6.translate) as t.Visitor,\n    ),\n    tagDiscoveryDirs: [\n      ...translate6.tagDiscoveryDirs,\n      ...translate5.tagDiscoveryDirs,\n    ],\n    taglibs: mergeTaglibs(\n      taglib\n        .resolveOptionalTaglibs(translate5.optionalTaglibs)\n        .concat(translate5.taglibs) as Taglibs,\n      translate6.taglibs as Taglibs,\n    ),\n    getRuntimeEntryFiles(output: Config[\"output\"], optimize: boolean) {\n      return [\n        ...translate5.getRuntimeEntryFiles(output, optimize),\n        ...translate6.getRuntimeEntryFiles(output, optimize),\n      ];\n    },\n  };\n\n  function patchTranslateProgram(visitor: t.Visitor): t.Visitor {\n    type EntryFile = t.BabelFile & {\n      [kState]?: {\n        has5: boolean;\n        has6: boolean;\n      };\n    };\n    const { Program } = visitor;\n    const kState = Symbol();\n    const entryBuilder = {\n      build(entryFile: EntryFile) {\n        const state = entryFile[kState];\n        if (!state) {\n          throw entryFile.path.buildCodeFrameError(\n            \"Unable to build hydrate code, no files were visited before finalizing the build\",\n          );\n        }\n\n        if (state.has5) {\n          if (state.has6) {\n            const filename = entryFile.opts.filename as string;\n            const baseName = `./${path.basename(filename)}`;\n            const generatorOpts = {\n              ...(entryFile.opts.generatorOpts as any),\n              sourceMaps: false,\n            };\n            const { resolveVirtualDependency } = entryFile.markoOpts;\n            const importHydrateProgram = (\n              name: string,\n              statements: t.Statement[],\n            ) => {\n              return t.importDeclaration(\n                [t.importDefaultSpecifier(t.identifier(`init${name}`))],\n                t.stringLiteral(\n                  resolveVirtualDependency!(filename, {\n                    code: generator(t.program(statements) as any, generatorOpts)\n                      .code,\n                    virtualPath: `${baseName}.hydrate-${name}.js`,\n                  })!,\n                ),\n              );\n            };\n            return [\n              importHydrateProgram(\n                \"6\",\n                translate6.internalEntryBuilder.build(entryFile, true),\n              ),\n              importHydrateProgram(\n                \"5\",\n                translate5.internalEntryBuilder.build(entryFile, true),\n              ),\n              t.expressionStatement(\n                t.callExpression(t.identifier(\"init6\"), []),\n              ),\n              t.expressionStatement(\n                t.callExpression(t.identifier(\"init5\"), []),\n              ),\n            ];\n          } else {\n            return translate5.internalEntryBuilder.build(entryFile);\n          }\n        } else {\n          return translate6.internalEntryBuilder.build(entryFile);\n        }\n      },\n      visit(\n        file: t.BabelFile,\n        entryFile: EntryFile,\n        visitChild: (id: string) => void,\n      ) {\n        const state = (entryFile[kState] ||= {\n          has5: false,\n          has6: false,\n        });\n\n        if (isTagsAPI(file)) {\n          state.has6 = true;\n          translate6.internalEntryBuilder.visit(file, entryFile, visitChild);\n        } else {\n          state.has5 = true;\n          translate5.internalEntryBuilder.visit(file, entryFile, visitChild);\n        }\n      },\n    };\n    const enterProgram = getVisitorEnter(Program);\n\n    return {\n      ...visitor,\n      Program: {\n        enter(program, state) {\n          const entryFile = program.hub.file;\n          if (entryFile.markoOpts.output !== \"hydrate\") {\n            return enterProgram?.call(this, program, state);\n          }\n\n          const visitedFiles = new Set([\n            resolveRelativePath(entryFile, entryFile.opts.filename as string),\n          ]);\n          entryBuilder.visit(\n            entryFile,\n            entryFile,\n            function visitChild(resolved) {\n              if (!visitedFiles.has(resolved)) {\n                visitedFiles.add(resolved);\n                const file = loadFileForImport(entryFile, resolved);\n                if (file) {\n                  entryBuilder.visit(file, entryFile, (id) =>\n                    visitChild(resolveRelativeToEntry(entryFile, file, id)),\n                  );\n                }\n              }\n            },\n          );\n\n          program.node.body = entryBuilder.build(entryFile);\n          program.skip();\n        },\n        exit: getVisitorExit(Program),\n      },\n    };\n  }\n}\n\nfunction mergeVisitors(visitor5?: t.Visitor, visitor6?: t.Visitor) {\n  return mergeObjects(visitor5, visitor6, (_, value5, value6) =>\n    mergeVisit(value5, value6),\n  );\n}\n\nfunction mergeVisit(\n  visit5?: t.VisitNode<unknown, any>,\n  visit6?: t.VisitNode<unknown, any>,\n): undefined | t.VisitNode<unknown, t.Node> {\n  const enter5 = getVisitorEnter(visit5);\n  const enter6 = getVisitorEnter(visit6);\n  const enter: undefined | t.VisitNode<unknown, t.Node> =\n    (enter5 || enter6) &&\n    function enter(path, state) {\n      return (isTagsAPI() ? enter6 : enter5)?.call(this, path, state);\n    };\n\n  const exit5 = getVisitorExit(visit5);\n  const exit6 = getVisitorExit(visit6);\n  const exit: undefined | t.VisitNode<unknown, t.Node> =\n    (exit5 || exit6) &&\n    function exit(path, state) {\n      return (isTagsAPI() ? exit6 : exit5)?.call(this, path, state);\n    };\n\n  return exit ? (enter ? { enter, exit } : { exit }) : enter;\n}\n\nfunction mergeTaglibs(libs5: Taglibs, libs6: Taglibs) {\n  const libs5Map = new Map(libs5);\n  const libs6Map = new Map(libs6);\n  const merged = [] as Taglibs;\n\n  for (const taglibId of new Set([...libs5Map.keys(), ...libs6Map.keys()])) {\n    merged.push([\n      taglibId,\n      mergeObjects(\n        libs5Map.get(taglibId),\n        libs6Map.get(taglibId),\n        (key, value5, value6) => {\n          switch (key) {\n            case \"migrate\":\n            case \"analyze\":\n            case \"transform\":\n            case \"translate\":\n              return mergeVisitors(\n                normalizeVisitor(value5),\n                normalizeVisitor(value6),\n              );\n            default:\n              if (key[0] === \"<\") {\n                return mergeTagDef(\n                  value5 as TagDef | undefined,\n                  value6 as TagDef | undefined,\n                );\n              }\n              return value5 ?? value6;\n          }\n        },\n      ),\n    ]);\n  }\n\n  return merged;\n}\n\nfunction mergeTagDef(def5?: TagDef, def6?: TagDef) {\n  return mergeObjects(\n    normalizeTagDef(def5),\n    normalizeTagDef(def6),\n    (key, value5, value6) => {\n      switch (key) {\n        case \"parse\":\n        case \"migrate\":\n        case \"transform\":\n        case \"analyze\":\n        case \"translate\":\n          return mergeVisit(normalizeVisit(value5), normalizeVisit(value6));\n        default:\n          return value5 ?? value6;\n      }\n    },\n  ) as TagDef;\n}\n\nfunction mergeObjects<A, B, K extends keyof (B & {}) | keyof (A & {}), R>(\n  a: A,\n  b: B,\n  cb: (\n    key: K,\n    aValue: K extends keyof (A & {}) ? (A & {})[K] : undefined,\n    bValue: K extends keyof (B & {}) ? (B & {})[K] : undefined,\n  ) => R,\n): Record<K, R> {\n  const merged: any = {};\n\n  if (a) {\n    if (b) {\n      for (const key in a) {\n        merged[key] = (cb as any)(key, a[key], (b as any)[key]);\n      }\n\n      for (const key in b) {\n        if (!(key in (a as any))) {\n          merged[key] = (cb as any)(key, undefined, b[key]);\n        }\n      }\n    } else {\n      for (const key in a) {\n        merged[key] = (cb as any)(key, a[key], undefined);\n      }\n    }\n  } else if (b) {\n    for (const key in b) {\n      merged[key] = (cb as any)(key, undefined, b[key]);\n    }\n  }\n\n  return merged;\n}\n\nfunction normalizeTagDef<T extends Record<string, unknown> | undefined>(\n  tagDef: T,\n): T {\n  if (tagDef) {\n    const normalized = {} as T & {};\n\n    for (const key in tagDef) {\n      normalized[normalizeTagDefKey(key) as keyof T & string] = tagDef[key];\n    }\n\n    return normalized;\n  }\n\n  return undefined as T;\n}\n\nfunction normalizeTagDefKey(key: string) {\n  switch (key) {\n    case \"code-generator\":\n    case \"codeGenerator\":\n      return \"translate\";\n    case \"migrator\":\n      return \"migrate\";\n    case \"node-factory\":\n    case \"nodeFactory\":\n      return \"parse\";\n    case \"parse-options\":\n      return \"parseOptions\";\n    case \"transformer\":\n      return \"transform\";\n    default:\n      return key;\n  }\n}\n\nfunction normalizeVisitor(visitor: any): t.Visitor | undefined {\n  return visitor?.default ?? visitor;\n}\n\nfunction normalizeVisit(visitor: any): t.VisitNode<any, t.Node> | undefined {\n  return typeof visitor === \"function\" ? visitor : normalizeVisitor(visitor);\n}\n\nfunction getVisitorEnter<A, B extends t.Node>(\n  visit: t.VisitNode<A, B> | undefined,\n): t.VisitNodeFunction<A, B> | undefined {\n  return typeof visit === \"function\" ? visit : visit?.enter;\n}\n\nfunction getVisitorExit<A, B extends t.Node>(\n  visit: t.VisitNode<A, B> | undefined,\n): t.VisitNodeFunction<A, B> | undefined {\n  return typeof visit === \"object\" ? visit?.exit : undefined;\n}\n\nfunction resolveRelativeToEntry(\n  entryFile: t.BabelFile,\n  file: t.BabelFile,\n  req: string,\n) {\n  return file === entryFile\n    ? resolveRelativePath(file, req)\n    : resolveRelativePath(\n        entryFile,\n        req[0] === \".\"\n          ? path.join(file.opts.filename as string, \"..\", req)\n          : req,\n      );\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/assert.ts",
    "content": "import type { types as t } from \"@marko/compiler\";\n\nexport function assertNoSpreadAttrs(tag: t.NodePath<t.MarkoTag>) {\n  for (const attr of tag.get(\"attributes\")) {\n    if (attr.isMarkoSpreadAttribute()) {\n      const tagName = (tag.get(\"name\").node as t.StringLiteral).value;\n      throw attr.buildCodeFrameError(\n        `The [\\`<${tagName}>\\`](https://markojs.com/docs/reference/core-tag#${tagName}) tag does not support \\`...spread\\` attributes.`,\n      );\n    }\n  }\n}\n\nexport function assertNoBodyContent(tag: t.NodePath<t.MarkoTag>) {\n  if (tag.node.body.body.length) {\n    const tagName = tag.get(\"name\");\n    const tagNameLiteral = (tagName.node as t.StringLiteral).value;\n    throw tagName.buildCodeFrameError(\n      `The [\\`<${tagNameLiteral}>\\`](https://markojs.com/docs/reference/core-tag#${tagNameLiteral}) tag does not support body content.`,\n    );\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/binding-has-prop.ts",
    "content": "import type { Opt } from \"./optional\";\nimport type { Binding } from \"./references\";\n\nexport function bindingHasProperty(binding: Binding, properties: Opt<string>) {\n  if (binding.pruned) {\n    return false;\n  } else if (binding.pruned === undefined) {\n    throw new Error(\"Binding must be pruned before checking properties\");\n  }\n  if (binding.reads.size || !properties) {\n    return true;\n  }\n\n  let property: string;\n  let rest: Opt<string>;\n\n  if (Array.isArray(properties)) {\n    property = properties[0];\n    rest =\n      properties.length === 2\n        ? properties[1]\n        : (properties.slice(1) as Opt<string>);\n  } else {\n    property = properties;\n  }\n\n  const propBinding = binding.propertyAliases.get(property);\n  if (propBinding && bindingHasProperty(propBinding, rest)) {\n    return true;\n  }\n\n  for (const alias of binding.aliases) {\n    if (bindingHasProperty(alias, properties)) {\n      return true;\n    }\n  }\n\n  return false;\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/binding-prop-tree.ts",
    "content": "import { generateUid } from \"./generate-uid\";\nimport { forEach, includes, type Opt } from \"./optional\";\nimport {\n  type Binding,\n  BindingType,\n  propsUtil,\n  pruneBinding,\n} from \"./references\";\n\nexport type BindingPropTree = {\n  binding: Binding;\n  props: { [prop: string]: BindingPropTree } | undefined; // TODO: change to \"known\"\n  rest: BindingPropTree | undefined;\n};\n\nexport function getBindingPropTree(binding: Binding) {\n  if (pruneBinding(binding)) {\n    return undefined;\n  }\n\n  const props: BindingPropTree = {\n    binding,\n    props: undefined,\n    rest: undefined,\n  };\n\n  if (!binding.reads.size) {\n    if (!binding.aliases.size) {\n      props.props = {};\n      for (const [property, alias] of binding.propertyAliases) {\n        props.props[property] = getBindingPropTree(alias)!;\n      }\n    } else if (binding.aliases.size === 1) {\n      const [restAlias] = binding.aliases;\n      if (hasSupersetExcludeProperties(binding, restAlias.excludeProperties)) {\n        props.rest = getBindingPropTree(restAlias);\n        props.props = {};\n\n        if (restAlias.type === BindingType.input) {\n          restAlias.export ??= generateUid(restAlias.name);\n        }\n\n        forEach(restAlias.excludeProperties, (property) => {\n          const propAlias = binding.propertyAliases.get(property);\n          if (propAlias) {\n            props.props![property] = getBindingPropTree(propAlias)!;\n          }\n        });\n      }\n    }\n  }\n\n  if (binding.type === BindingType.input) {\n    binding.export ??= generateUid(binding.name);\n  }\n\n  return props;\n}\n\nfunction hasSupersetExcludeProperties(\n  binding: Binding,\n  excludeProperties: Opt<string>,\n) {\n  if (excludeProperties === undefined) {\n    return false;\n  }\n\n  for (const prop of binding.propertyAliases.keys()) {\n    if (!propsUtil.has(excludeProperties, prop)) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nexport function getKnownFromPropTree(\n  propTree: BindingPropTree | true,\n  name: string,\n): BindingPropTree | true | undefined {\n  return propTree === true\n    ? true\n    : propTree.props\n      ? propTree.props[name] ||\n        (propTree.rest ? getKnownFromPropTree(propTree.rest, name) : undefined)\n      : includes(propTree.binding.excludeProperties, name)\n        ? undefined\n        : true;\n}\n\nexport function getAllKnownPropNames(propTree: BindingPropTree) {\n  const keys = propTree.props ? Object.keys(propTree.props) : [];\n  if (propTree.rest?.props) {\n    for (const key of Object.keys(propTree.rest.props)) {\n      keys.push(key);\n    }\n  }\n  return keys;\n}\n\nexport function hasAllKnownProps(propTree: BindingPropTree) {\n  return propTree.props && (!propTree.rest || !!propTree.rest.props);\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/body-to-text-literal.ts",
    "content": "import { types as t } from \"@marko/compiler\";\n\nimport { callRuntime } from \"./runtime\";\n\nexport function bodyToTextLiteral(body: t.MarkoTagBody) {\n  const templateQuasis: t.TemplateElement[] = [];\n  const templateExpressions: t.Expression[] = [];\n  let currentQuasi = \"\";\n  let placeholderExtra: t.MarkoPlaceholder[\"extra\"];\n  for (const child of body.body) {\n    if (t.isMarkoText(child)) {\n      currentQuasi += child.value;\n    } else if (t.isMarkoPlaceholder(child)) {\n      placeholderExtra ||= child.value.extra;\n      templateQuasis.push(templateElement(currentQuasi, false));\n      templateExpressions.push(callRuntime(\"_to_text\", child.value));\n      currentQuasi = \"\";\n    }\n  }\n  if (templateExpressions.length) {\n    templateQuasis.push(templateElement(currentQuasi, true));\n    const literal = t.templateLiteral(templateQuasis, templateExpressions);\n    literal.extra = placeholderExtra;\n    return literal;\n  }\n  return t.stringLiteral(currentQuasi);\n}\n\nfunction templateElement(value: string, tail: boolean) {\n  return t.templateElement(\n    {\n      raw: value.replace(/`/g, \"\\\\`\"),\n      cooked: value,\n    },\n    tail,\n  );\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/entry-builder.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  getTemplateId,\n  resolveRelativePath,\n} from \"@marko/compiler/babel-utils\";\n\nimport type { DOMRuntimeHelpers } from \"./runtime\";\nimport runtimeInfo from \"./runtime-info\";\n\ndeclare module \"@marko/compiler/dist/types\" {\n  export interface ProgramExtra {\n    needsCompat?: boolean;\n    isInteractive?: boolean;\n    page?: boolean;\n  }\n}\n\ntype EntryFile = t.BabelFile & {\n  [kState]?: {\n    imports: string[];\n    init: boolean;\n  };\n};\nconst kState: unique symbol = Symbol();\n\nexport default {\n  build(entryFile: EntryFile, exportInit?: boolean) {\n    const state = entryFile[kState];\n    if (!state) {\n      throw entryFile.path.buildCodeFrameError(\n        \"Unable to build hydrate code, no files were visited before finalizing the build\",\n      );\n    }\n    const body: t.Statement[] = state.imports.map((it) =>\n      t.importDeclaration([], t.stringLiteral(it)),\n    );\n    if (state.init) {\n      const isPage = entryFile.path.node.extra.page;\n      const initHelper: DOMRuntimeHelpers = isPage ? \"init\" : \"initEmbedded\";\n      body.unshift(\n        t.importDeclaration(\n          [\n            t.importSpecifier(\n              t.identifier(initHelper),\n              t.identifier(initHelper),\n            ),\n          ],\n          t.stringLiteral(\n            `${runtimeInfo.name}/${\n              entryFile.markoOpts.optimize ? \"\" : \"debug/\"\n            }dom`,\n          ),\n        ),\n      );\n      const { runtimeId } = entryFile.markoOpts;\n      const readyId =\n        !isPage && getTemplateId(entryFile.markoOpts, entryFile.opts.filename);\n      const initExpression = t.callExpression(\n        t.identifier(initHelper),\n        readyId\n          ? runtimeId\n            ? [t.stringLiteral(readyId), t.stringLiteral(runtimeId)]\n            : [t.stringLiteral(readyId)]\n          : runtimeId\n            ? [t.stringLiteral(runtimeId)]\n            : [],\n      );\n\n      body.push(\n        exportInit\n          ? t.exportDefaultDeclaration(\n              t.arrowFunctionExpression([], initExpression),\n            )\n          : t.expressionStatement(initExpression),\n      );\n    } else if (exportInit) {\n      body.push(\n        t.exportDefaultDeclaration(\n          t.arrowFunctionExpression([], t.blockStatement([])),\n        ),\n      );\n    }\n    return body;\n  },\n  visit(\n    file: t.BabelFile,\n    entryFile: EntryFile,\n    visitChild: (id: string) => void,\n  ) {\n    const state = (entryFile[kState] ||= {\n      imports: [],\n      init: false,\n    });\n    const programExtra = file.path.node.extra;\n    const { analyzedTags } = file.metadata.marko;\n    state.imports.push(resolveRelativePath(entryFile, file.opts.filename));\n\n    if (programExtra.isInteractive || programExtra.needsCompat) {\n      state.init = true;\n    }\n\n    for (const tag of analyzedTags || []) {\n      visitChild(tag);\n    }\n  },\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/evaluate.ts",
    "content": "import type { types as t } from \"@marko/compiler\";\nimport { computeNode } from \"@marko/compiler/babel-utils\";\n\ndeclare module \"@marko/compiler/dist/types\" {\n  export interface NodeExtra {\n    confident?: boolean;\n    computed?: unknown;\n    nullable?: boolean;\n  }\n}\n\nexport default function evaluate<T extends t.Expression>(value: T) {\n  let { extra } = value;\n\n  if (!extra) {\n    extra = value.extra = {};\n  }\n\n  if (extra.confident === undefined) {\n    const computed = computeNode(value);\n    if (computed) {\n      extra.computed = computed.value;\n      extra.confident = true;\n      extra.nullable = computed.value == null;\n    } else {\n      extra.computed = undefined;\n      extra.confident = false;\n      extra.nullable = isNullableExpr(value);\n    }\n  }\n\n  return extra as T[\"extra\"] & {\n    confident: boolean;\n    nullable: boolean;\n    computed: unknown;\n  };\n}\n\nfunction isNullableExpr(expr: t.Expression): boolean {\n  switch (expr.type) {\n    case \"ArrayExpression\":\n    case \"ArrowFunctionExpression\":\n    case \"BigIntLiteral\":\n    case \"BinaryExpression\":\n    case \"BooleanLiteral\":\n    case \"ClassExpression\":\n    case \"FunctionExpression\":\n    case \"NewExpression\":\n    case \"NumericLiteral\":\n    case \"ObjectExpression\":\n    case \"RegExpLiteral\":\n    case \"StringLiteral\":\n    case \"TemplateLiteral\":\n    case \"UpdateExpression\":\n      return false;\n    case \"AssignmentExpression\":\n      switch (expr.operator) {\n        case \"=\":\n          return isNullableExpr(expr.right);\n        case \"*=\":\n        case \"/=\":\n        case \"%=\":\n        case \"+=\":\n        case \"-=\":\n        case \"<<=\":\n        case \">>=\":\n        case \">>>=\":\n        case \"&=\":\n        case \"^=\":\n        case \"|=\":\n        case \"**=\":\n          return false;\n        case \"||=\":\n        case \"??=\":\n          return (\n            isNullableExpr(expr.right) ||\n            isNullableExpr(expr.left as t.Expression)\n          );\n        case \"&&=\":\n          return (\n            isNullableExpr(expr.left as t.Expression) &&\n            isNullableExpr(expr.right)\n          );\n        default:\n          return true;\n      }\n    case \"AwaitExpression\":\n      return isNullableExpr(expr.argument);\n    case \"ConditionalExpression\":\n      return isNullableExpr(expr.consequent) && isNullableExpr(expr.alternate);\n    case \"LogicalExpression\":\n      switch (expr.operator) {\n        case \"||\":\n        case \"??\":\n          return isNullableExpr(expr.right) || isNullableExpr(expr.left);\n        case \"&&\":\n          return isNullableExpr(expr.left) && isNullableExpr(expr.right);\n        default:\n          return true;\n      }\n    case \"ParenthesizedExpression\":\n      return isNullableExpr(expr.expression);\n    case \"SequenceExpression\":\n      return isNullableExpr(expr.expressions[expr.expressions.length - 1]);\n    case \"UnaryExpression\":\n      return expr.operator === \"void\";\n    default:\n      return true;\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/for-each-identifier.ts",
    "content": "import type { types as t } from \"@marko/compiler\";\nexport function forEachIdentifier(\n  node: t.Node,\n  cb: (identifier: t.Identifier) => void,\n) {\n  switch (node.type) {\n    case \"ObjectPattern\":\n      for (const prop of node.properties) {\n        switch (prop.type) {\n          case \"ObjectProperty\":\n            if (prop.value.type === \"AssignmentPattern\") {\n              forEachIdentifier(prop.value.left, cb);\n            } else {\n              forEachIdentifier(prop.value, cb);\n            }\n            break;\n          case \"RestElement\":\n            forEachIdentifier(prop.argument, cb);\n            break;\n        }\n      }\n      break;\n    case \"ArrayPattern\":\n      for (const el of node.elements) {\n        if (el != null) {\n          switch (el.type) {\n            case \"RestElement\":\n              forEachIdentifier(el.argument, cb);\n              break;\n            case \"AssignmentPattern\":\n              forEachIdentifier(el.left, cb);\n              break;\n            default:\n              forEachIdentifier(el, cb);\n              break;\n          }\n        }\n      }\n      break;\n    case \"Identifier\":\n      cb(node);\n      break;\n  }\n}\n\nexport function forEachIdentifierPath(\n  nodePath: t.NodePath<any>,\n  cb: (identifier: t.NodePath<t.Identifier>) => void,\n) {\n  if (nodePath.isIdentifier()) {\n    cb(nodePath);\n  } else if (nodePath.isObjectPattern()) {\n    for (const prop of nodePath.get(\"properties\")) {\n      if (prop.isObjectProperty()) {\n        const value = prop.get(\"value\");\n        if (value.isAssignmentPattern()) {\n          forEachIdentifierPath(value.get(\"left\"), cb);\n        } else {\n          forEachIdentifierPath(value, cb);\n        }\n      } else if (prop.isRestElement()) {\n        forEachIdentifierPath(prop.get(\"argument\"), cb);\n      }\n    }\n  } else if (nodePath.isArrayPattern()) {\n    for (const el of nodePath.get(\"elements\")) {\n      if (el) {\n        if (el.isRestElement()) {\n          forEachIdentifierPath(el.get(\"argument\"), cb);\n        } else if (el.isAssignmentPattern()) {\n          forEachIdentifierPath(el.get(\"left\"), cb);\n        } else {\n          forEachIdentifierPath(el, cb);\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/generate-uid.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport { getFile } from \"@marko/compiler/babel-utils\";\n\nimport { isTranslate } from \"./get-compile-stage\";\nimport type { Section } from \"./sections\";\nimport { traverse } from \"./traverse\";\n\nconst countsForFile = new WeakMap<t.BabelFile, Map<string, number>>();\nexport function generateUid(name = \"\") {\n  const file = getFile();\n  let counts = countsForFile.get(file);\n\n  if (!counts) {\n    const { cache } = file.markoOpts;\n    const { filename } = file.opts;\n    const cacheKey = `uid-counts:${filename}`;\n    counts = cache.get(cacheKey) as typeof counts;\n\n    if (counts) {\n      if (isTranslate()) {\n        // Translate for DOM does not impact translate HTML\n        // but both inherit the counts from previous stages.\n        counts = new Map(counts);\n      }\n    } else {\n      counts = getInitialCounts(file);\n      if (!isTranslate()) {\n        cache.set(cacheKey, counts);\n      }\n    }\n\n    countsForFile.set(file, counts);\n  }\n\n  name = name.replace(/^[^a-z$_]|[^a-z$_0-9]/gi, \"\") || \"temp\";\n  name = /^\\$?(.*?)\\d*$/.exec(name)?.[1] || name;\n  const i = (counts.get(name) || 0) + 1;\n  const uniqueName = `$${i > 1 ? name + i : name}`;\n  counts.set(name, i);\n  return uniqueName;\n}\n\nexport function generateUidIdentifier(name?: string) {\n  return t.identifier(generateUid(name));\n}\n\nconst sharedUIDsForFile = new WeakMap<\n  t.BabelFile | Section,\n  Map<string, string>\n>();\nexport function getSharedUid(name: string, section?: Section) {\n  const file = getFile();\n  let sharedUIDs = sharedUIDsForFile.get(file);\n\n  if (!sharedUIDs) {\n    const { cache } = file.markoOpts;\n    const { filename } = file.opts;\n    let cacheKey = `uid-shared:${filename}`;\n    if (section) {\n      cacheKey += `:${section.id}`;\n    }\n    sharedUIDs = cache.get(cacheKey) as typeof sharedUIDs;\n\n    if (sharedUIDs) {\n      if (isTranslate()) {\n        // Translate for DOM does not impact translate HTML\n        // but both inherit the counts from previous stages.\n        sharedUIDs = new Map(sharedUIDs);\n      }\n    } else {\n      sharedUIDs = new Map();\n      if (!isTranslate()) {\n        cache.set(cacheKey, sharedUIDs);\n      }\n    }\n\n    sharedUIDsForFile.set(file, sharedUIDs);\n  }\n\n  const nameKey = section ? `${section.id}:${name}` : name;\n  let uniqueName = sharedUIDs.get(nameKey);\n  if (!uniqueName) {\n    uniqueName = generateUid(name);\n    sharedUIDs.set(nameKey, uniqueName);\n  }\n\n  return uniqueName;\n}\n\nexport function usedSharedUid(name: string) {\n  return !!sharedUIDsForFile.get(getFile())?.has(name);\n}\n\nexport function getSharedUidIdentifier(name: string) {\n  return t.identifier(getSharedUid(name));\n}\n\nfunction getInitialCounts(file: t.BabelFile) {\n  const counts = new Map<string, number>();\n  const program = file.path;\n  const countName = (name: string) => {\n    const match = /^$(.*?)([1-9]\\d*)?$/.exec(name);\n    if (match) {\n      const name = match[1];\n      const count = match[2] ? +match[2] + 1 : 1;\n      counts.set(name, Math.max(counts.get(name) || 0, count));\n    }\n  };\n\n  for (const name in program.scope.globals) {\n    countName(name);\n  }\n\n  traverse((node, parent, grandParent) => {\n    if (node.type === \"Identifier\" && t.isBinding(node, parent!, grandParent)) {\n      countName(node.name);\n    }\n  }, program.node);\n\n  return counts;\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/get-accessor-char.ts",
    "content": "import {\n  AccessorPrefix as ProductionAccessorPrefix,\n  AccessorProp as ProductionAccessorProp,\n} from \"../../common/accessor\";\nimport {\n  AccessorPrefix as DebugAccessorPrefix,\n  AccessorProp as DebugAccessorProp,\n} from \"../../common/accessor.debug\";\nimport { isOptimize } from \"./marko-config\";\nexport function getAccessorPrefix(): typeof DebugAccessorPrefix {\n  return (isOptimize() ? ProductionAccessorPrefix : DebugAccessorPrefix) as any;\n}\n\nexport function getAccessorProp(): typeof DebugAccessorProp {\n  return (isOptimize() ? ProductionAccessorProp : DebugAccessorProp) as any;\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/get-compile-stage.ts",
    "content": "import { getFile } from \"@marko/compiler/babel-utils\";\n\nexport enum CompileStage {\n  parse = \"parse\",\n  migrate = \"migrate\",\n  transform = \"transform\",\n  analyze = \"analyze\",\n  translate = \"translate\",\n}\nexport function getCompileStage() {\n  return (getFile() as any).___compileStage as CompileStage;\n}\n\nexport function isTranslate() {\n  return getCompileStage() === CompileStage.translate;\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/get-defined-binding-expression.ts",
    "content": "import { types as t } from \"@marko/compiler\";\n\nimport { type Binding, getCanonicalBinding } from \"./references\";\nimport { toMemberExpression } from \"./to-property-name\";\n\nexport function getDeclaredBindingExpression(\n  binding: Binding,\n): t.Identifier | t.MemberExpression | t.OptionalMemberExpression {\n  const canonicalBinding = getCanonicalBinding(binding)!;\n  if (\n    canonicalBinding.declared ||\n    !canonicalBinding.upstreamAlias ||\n    canonicalBinding.excludeProperties !== undefined\n  ) {\n    return t.identifier(canonicalBinding.name);\n  } else if (canonicalBinding.property !== undefined) {\n    return toMemberExpression(\n      getDeclaredBindingExpression(canonicalBinding.upstreamAlias),\n      canonicalBinding.property,\n      canonicalBinding.upstreamAlias.nullable,\n    );\n  } else {\n    return getDeclaredBindingExpression(canonicalBinding.upstreamAlias);\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/get-known-attr-values.ts",
    "content": "import type { types as t } from \"@marko/compiler\";\nexport function getKnownAttrValues(tag: t.MarkoTag) {\n  const attrs: Record<string, t.Expression> = {};\n  for (const attr of tag.attributes) {\n    if (attr.type === \"MarkoAttribute\") {\n      attrs[attr.name] = attr.value;\n    }\n  }\n\n  return attrs;\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/get-parent-tag.ts",
    "content": "import type { types as t } from \"@marko/compiler\";\nimport { isAttributeTag, isTransparentTag } from \"@marko/compiler/babel-utils\";\n\nexport function getParentTag(tag: t.NodePath<t.MarkoTag>) {\n  const parent =\n    tag.parent.type === \"MarkoTagBody\"\n      ? tag.parentPath.parentPath\n      : tag.parentPath;\n\n  if (parent!.type === \"MarkoTag\") {\n    return parent as t.NodePath<t.MarkoTag>;\n  }\n}\n\nexport function getAttributeTagParent(\n  tag: t.NodePath<t.MarkoTag>,\n): t.NodePath<t.MarkoTag> {\n  let cur: t.NodePath<t.MarkoTag> = tag;\n  while (isAttributeTag(cur) || isTransparentTag(cur)) {\n    cur = getParentTag(cur)!;\n  }\n\n  return cur;\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/get-root.ts",
    "content": "import type { types as t } from \"@marko/compiler\";\nexport type MarkoExprRootPath = t.NodePath<\n  | t.MarkoTag\n  | t.MarkoTagBody\n  | t.MarkoAttribute\n  | t.MarkoSpreadAttribute\n  | t.MarkoScriptlet\n  | t.MarkoPlaceholder\n  | t.ExportNamedDeclaration\n  | t.ExportDefaultDeclaration\n>;\n\nexport function getMarkoRoot(path: t.NodePath<t.Node>) {\n  let curPath: typeof path | null = path;\n  do curPath = curPath.parentPath;\n  while (curPath && !isMarko(curPath));\n  return curPath;\n}\n\nexport function getExprRoot(path: t.NodePath<t.Node>) {\n  let curPath = path;\n  while (!isMarko(curPath.parentPath!)) {\n    curPath = curPath.parentPath!;\n  }\n\n  return curPath;\n}\n\nexport function getFnRoot(path: t.NodePath<t.Node>) {\n  let curPath = path;\n  let fnPath:\n    | undefined\n    | t.NodePath<\n        t.FunctionExpression | t.ArrowFunctionExpression | t.ObjectMember\n      >;\n  while (!isMarko(curPath)) {\n    if (isFunction(curPath)) {\n      fnPath = curPath;\n    } else {\n      switch (curPath.type) {\n        case \"OptionalCallExpression\":\n        case \"CallExpression\":\n        case \"NewExpression\":\n          fnPath = undefined;\n          break;\n      }\n    }\n\n    const parentPath = curPath.parentPath;\n    if (parentPath) {\n      curPath = parentPath;\n    } else {\n      break;\n    }\n  }\n\n  return fnPath;\n}\n\nexport function getFnParent(path: t.NodePath<t.Node>) {\n  let curPath = path;\n\n  while (!isMarko(curPath)) {\n    if (isFunction(curPath)) {\n      return curPath;\n    }\n\n    const parentPath = curPath.parentPath;\n    if (parentPath) {\n      curPath = parentPath;\n    } else {\n      break;\n    }\n  }\n}\n\nexport function getDeclarationRoot(path: t.NodePath<t.Node>) {\n  let curPath = path;\n  let declPath:\n    | undefined\n    | t.NodePath<t.FunctionDeclaration | t.VariableDeclaration>;\n  while (!isMarko(curPath)) {\n    if (isFunctionOrVariableDeclaration(curPath)) {\n      declPath = curPath;\n    }\n\n    const parentPath = curPath.parentPath;\n    if (parentPath) {\n      curPath = parentPath;\n    } else {\n      break;\n    }\n  }\n\n  return declPath;\n}\n\nexport function isMarko(path: t.NodePath<any>): path is MarkoExprRootPath {\n  switch (path.type) {\n    case \"MarkoTag\":\n    case \"MarkoTagBody\":\n    case \"MarkoAttribute\":\n    case \"MarkoSpreadAttribute\":\n    case \"MarkoPlaceholder\":\n    case \"MarkoScriptlet\":\n    case \"ExportNamedDeclaration\":\n    case \"ExportDefaultDeclaration\":\n      return true;\n    default:\n      return false;\n  }\n}\n\nfunction isFunction(\n  path: t.NodePath<t.Node>,\n): path is t.NodePath<\n  t.FunctionExpression | t.ArrowFunctionExpression | t.ObjectMember\n> {\n  switch (path.type) {\n    case \"FunctionDeclaration\":\n      return !(path.node as t.FunctionDeclaration).declare;\n    case \"FunctionExpression\":\n    case \"ArrowFunctionExpression\":\n    case \"ObjectMethod\":\n      return true;\n    default:\n      return false;\n  }\n}\n\nfunction isFunctionOrVariableDeclaration(\n  path: t.NodePath<t.Node>,\n): path is t.NodePath<t.FunctionDeclaration | t.VariableDeclaration> {\n  switch (path.type) {\n    case \"FunctionDeclaration\":\n      return !(path.node as t.FunctionDeclaration).declare;\n    case \"VariableDeclaration\":\n      return true;\n    default:\n      return false;\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/get-style-file.ts",
    "content": "import type { types as t } from \"@marko/compiler\";\nimport path from \"path\";\n\nexport default function getStyleFile(file: t.BabelFile) {\n  const { filename } = file.opts;\n  const fs = file.markoOpts.fileSystem;\n  const base = getBase(filename);\n  const styleMatch = new RegExp(\n    `^(${escapeRegExp(base)}\\\\.${\"index\" === base ? \"|\" : \"\"})style\\\\.\\\\w+$`,\n  );\n\n  for (const file of fs.readdirSync(path.dirname(filename)).sort()) {\n    if (styleMatch.test(file)) {\n      return `./${file}`;\n    }\n  }\n}\n\n/**\n * Given a filename, gets the base name, strips off the file extension\n * and removes any arc flags (https://github.com/eBay/arc).\n *\n * @example\n * getBase(\"/dir/foo.marko\") // => \"foo\"\n * getBase(\"/dir/foo.bar.marko\") // => \"foo.bar\"\n * getBase(\"/dir/foo[bar].marko\") // => \"foo\"\n * getBase(\"/dir/foo[bar].baz.marko\") // => \"foo.baz\"\n */\nfunction getBase(filename: string) {\n  const start = filename.lastIndexOf(path.sep) + 1;\n  const leftDot = filename.indexOf(\".\", start);\n\n  if (leftDot === -1) {\n    return filename.slice(start);\n  }\n\n  const rightDot = filename.lastIndexOf(\".\");\n  const closeBracket = leftDot - 1;\n  if (filename[closeBracket] === \"]\") {\n    const openBracket = filename.lastIndexOf(\"[\", closeBracket);\n    if (openBracket > start) {\n      // If we match a \"]\" before the extension and find a \"[\" before that,\n      // then we have an arc flag. Strip it off.\n      return (\n        filename.slice(start, openBracket) + filename.slice(leftDot, rightDot)\n      );\n    }\n  }\n\n  return filename.slice(start, rightDot);\n}\n\nconst regexpCharsReg = /[\\\\^$.*+?()[\\]{}|]/g;\nfunction escapeRegExp(str: string) {\n  return str.replace(regexpCharsReg, \"\\\\$&\");\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/get-tag-name.ts",
    "content": "import type { types as t } from \"@marko/compiler\";\nexport function getTagName<T extends t.MarkoTag>(\n  tag: t.NodePath<T>,\n): T[\"name\"] extends t.StringLiteral ? string : string | undefined {\n  switch (tag.node.name.type) {\n    case \"StringLiteral\":\n      return tag.node.name.value;\n    case \"TemplateLiteral\":\n      if (tag.node.name.quasis.length === 1) {\n        return tag.node.name.quasis[0].value.raw;\n      }\n      break;\n  }\n\n  return undefined as any;\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/is-core-tag.ts",
    "content": "import type { types as t } from \"@marko/compiler\";\nimport { getTagDef } from \"@marko/compiler/babel-utils\";\n\nimport { getTagName } from \"./get-tag-name\";\nimport runtimeInfo from \"./runtime-info\";\nconst { taglibId } = runtimeInfo;\nconst htmlTaglibId = \"marko-html\";\n\nexport function isCoreTag(\n  tag: t.NodePath,\n): tag is t.NodePath<t.MarkoTag & { name: t.StringLiteral }> {\n  if (tag.isMarkoTag()) {\n    const tagDef = getTagDef(tag);\n    if (tagDef) {\n      switch (tagDef.taglibId) {\n        case taglibId:\n          return true;\n        case htmlTaglibId:\n          switch (tagDef.name) {\n            case \"script\":\n            case \"style\":\n              return true;\n          }\n          break;\n      }\n    }\n  }\n\n  return false;\n}\n\nexport function isCoreTagName(\n  tag: t.NodePath,\n  name: string,\n): tag is t.NodePath<t.MarkoTag & { name: t.StringLiteral }> {\n  return isCoreTag(tag) && getTagName(tag) === name;\n}\n\nexport function isConditionTag(\n  tag: t.NodePath,\n): tag is t.NodePath<t.MarkoTag & { name: t.StringLiteral }> {\n  if (isCoreTag(tag)) {\n    switch (getTagName(tag)) {\n      case \"if\":\n      case \"else-if\":\n      case \"else\":\n        return true;\n    }\n  }\n\n  return false;\n}\n\nexport function isControlFlowTag(\n  tag: t.NodePath,\n): tag is t.NodePath<t.MarkoTag & { name: t.StringLiteral }> {\n  if (isCoreTag(tag)) {\n    switch (getTagName(tag)) {\n      case \"if\":\n      case \"else-if\":\n      case \"else\":\n      case \"for\":\n      case \"await\":\n      case \"try\":\n        return true;\n    }\n  }\n\n  return false;\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/is-event-or-change-handler.ts",
    "content": "export function isEventOrChangeHandler(prop: string) {\n  return /^on[-A-Z][a-zA-Z0-9_$]|[a-zA-Z_$][a-zA-Z0-9_$]*Change$/.test(prop);\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/is-invoked-function.ts",
    "content": "import { types as t } from \"@marko/compiler\";\n\nexport default function isInvokedFunction(\n  expr: t.NodePath<t.Node>,\n): expr is typeof expr & {\n  parent: t.CallExpression | t.OptionalCallExpression;\n  parentPath: t.NodePath<t.CallExpression>;\n} {\n  let curPath: t.NodePath<t.Node> | null = expr;\n  while (curPath) {\n    const { parent, node } = curPath;\n    switch (parent.type) {\n      case \"OptionalCallExpression\":\n      case \"CallExpression\":\n        return parent.callee === node;\n      case \"TSNonNullExpression\":\n        curPath = curPath.parentPath;\n        break;\n      default:\n        return false;\n    }\n  }\n  return false;\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/is-non-html-text.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport { getTagDef } from \"@marko/compiler/babel-utils\";\n\nimport { isCoreTag } from \"./is-core-tag\";\n\nexport function isNonHTMLText(\n  placeholder: t.NodePath<t.MarkoPlaceholder | t.MarkoText>,\n) {\n  const parentTag =\n    placeholder.parentPath.isMarkoTagBody() &&\n    (placeholder.parentPath.parentPath as t.NodePath<t.MarkoTag>);\n  if (parentTag) {\n    if (isCoreTag(parentTag)) {\n      switch (parentTag.node.name.value) {\n        case \"html-comment\":\n        case \"html-script\":\n        case \"html-style\":\n          return true;\n      }\n    } else if (isTextOnlyNativeTag(parentTag)) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nexport function isTextOnlyNativeTag(tag: t.NodePath<t.MarkoTag>) {\n  const def = getTagDef(tag);\n  // Have to special case `title` here for the compat with v5 which does not treat title as a text only tag.\n  return !!(\n    def &&\n    def.html &&\n    (def.name === \"title\" || def.parseOptions?.text)\n  );\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/is-only-child-in-parent.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport { getTagDef } from \"@marko/compiler/babel-utils\";\n\nimport { kNativeTagBinding } from \"../visitors/tag/native-tag\";\nimport { getParentTag } from \"./get-parent-tag\";\nimport { type Binding, BindingType, createBinding } from \"./references\";\nimport type { Section } from \"./sections\";\n\nconst kOnlyChildInParent = Symbol(\"only child in parent\");\nconst kNodeRef = Symbol(\"potential only child node ref\");\ndeclare module \"@marko/compiler/dist/types\" {\n  export interface NodeExtra {\n    [kOnlyChildInParent]?: false | string;\n    [kNodeRef]?: Binding;\n  }\n}\n\nexport function getOnlyChildParentTagName(\n  tag: t.NodePath<t.MarkoTag>,\n  branchSize = 1,\n) {\n  const extra = tag.node.extra!;\n  if (extra[kOnlyChildInParent] !== undefined) {\n    return extra[kOnlyChildInParent];\n  }\n\n  const parentTag = getParentTag(tag);\n  return (extra[kOnlyChildInParent] =\n    parentTag &&\n    getTagDef(parentTag)?.html &&\n    parentTag.node.name.type === \"StringLiteral\" &&\n    (tag.parent as t.MarkoTagBody).body.filter(\n      (node) => node.type !== \"MarkoComment\",\n    ).length === branchSize\n      ? parentTag.node.name.value\n      : false);\n}\n\nexport function getOptimizedOnlyChildNodeBinding(\n  tag: t.NodePath<t.MarkoTag>,\n  section: Section,\n  branchSize = 1,\n) {\n  if (getOnlyChildParentTagName(tag, branchSize)) {\n    const parentTag = getParentTag(tag)!.node;\n    const parentTagName = (parentTag.name as t.StringLiteral)?.value;\n    return ((parentTag.extra ??= {})[kNativeTagBinding] ??= createBinding(\n      \"#\" + parentTagName,\n      BindingType.dom,\n      section,\n    ));\n  } else {\n    return ((tag.node.extra ??= {})[kNodeRef] ??= createBinding(\n      \"#text\",\n      BindingType.dom,\n      section,\n    ));\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/is-static.ts",
    "content": "import type { types as t } from \"@marko/compiler\";\nexport default function isStatic(path: t.NodePath<any>) {\n  return (\n    path.isImportDeclaration() ||\n    path.isExportDeclaration() ||\n    path.isMarkoScriptlet({ static: true })\n  );\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/known-tag.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport { isAttributeTag } from \"@marko/compiler/babel-utils\";\n\nimport { scopeIdentifier } from \"../visitors/program\";\nimport {\n  type BindingPropTree,\n  getAllKnownPropNames,\n  getKnownFromPropTree,\n  hasAllKnownProps,\n} from \"./binding-prop-tree\";\nimport { generateUidIdentifier } from \"./generate-uid\";\nimport { getTagName } from \"./get-tag-name\";\nimport { isOptimize } from \"./marko-config\";\nimport {\n  analyzeAttributeTags,\n  type AttrTagLookup,\n  type AttrTagMeta,\n  getAttrTagIdentifier,\n} from \"./nested-attribute-tags\";\nimport {\n  filterMap,\n  forEach,\n  fromIter,\n  includes,\n  type Opt,\n  toIter,\n} from \"./optional\";\nimport {\n  addRead,\n  type Binding,\n  BindingType,\n  bindingUtil,\n  createBinding,\n  dropNodes,\n  getAllTagReferenceNodes,\n  getDebugNames,\n  getOrCreatePropertyAlias,\n  getScopeAccessorLiteral,\n  type InputBinding,\n  mergeReferences,\n  type ParamBinding,\n  type ReferencedExtra,\n  setBindingDownstream,\n  trackParamsReferences,\n  trackVarReferences,\n} from \"./references\";\nimport { callRuntime, importRuntime } from \"./runtime\";\nimport { createScopeReadExpression } from \"./scope-read\";\nimport {\n  getOrCreateSection,\n  getScopeIdIdentifier,\n  getSection,\n  getSectionForBody,\n  type Section,\n  startSection,\n} from \"./sections\";\nimport { getSerializeGuard } from \"./serialize-guard\";\nimport {\n  addSerializeExpr,\n  addSerializeReason,\n  getSerializeReason,\n  getSerializeSourcesForExprs,\n} from \"./serialize-reasons\";\nimport { setTagDownstream } from \"./set-tag-sections-downstream\";\nimport {\n  addStatement,\n  getResumeRegisterId,\n  initValue,\n  setBindingSerializedValue,\n  writeHTMLResumeStatements,\n} from \"./signals\";\nimport { createSectionState } from \"./state\";\nimport {\n  toMemberExpression,\n  toObjectProperty,\n  toPropertyName,\n} from \"./to-property-name\";\nimport {\n  addDynamicAttrTagStatements,\n  propsToExpression,\n  translateAttrs,\n} from \"./translate-attrs\";\nimport translateVar from \"./translate-var\";\nimport { withLeadingComment } from \"./with-comment\";\nimport * as writer from \"./writer\";\n\ntype AttrTagGroup = AttrTagLookup[string][\"group\"];\ninterface KnownExprs {\n  known?: Record<string, KnownExprs>;\n  value?: t.NodeExtra;\n}\n\nconst [getKnownTags] = createSectionState(\n  \"known tags\",\n  () => [] as t.MarkoTagExtra[],\n);\n\nconst kContentSection = Symbol(\"known tag content section\");\nconst kChildScopeBinding = Symbol(\"known tag scope binding\");\nconst kChildOffsetScopeBinding = Symbol(\"known tag scope offset binding\");\nconst kKnownExprs = Symbol(\"known tag exprs\");\n\ndeclare module \"@marko/compiler/dist/types\" {\n  export interface MarkoTagExtra {\n    [kContentSection]?: Section;\n    [kChildScopeBinding]?: Binding;\n    [kChildOffsetScopeBinding]?: Binding;\n    [kKnownExprs]?: KnownExprs;\n  }\n}\n\nexport function knownTagAnalyze(\n  tag: t.NodePath<t.MarkoTag>,\n  contentSection: Section,\n  propTree: BindingPropTree | undefined,\n) {\n  analyzeAttributeTags(tag);\n\n  const section = getOrCreateSection(tag);\n  const tagBody = tag.get(\"body\");\n  const tagExtra = (tag.node.extra ??= {});\n  const childScopeBinding = (tagExtra[kChildScopeBinding] = createBinding(\n    \"#childScope\",\n    BindingType.dom,\n    section,\n  ));\n  const attrExprs = new Set([tagExtra]);\n  startSection(tagBody);\n  trackParamsReferences(tagBody, BindingType.param);\n  getKnownTags(section).push(tagExtra);\n  setTagDownstream(tag, propTree?.props?.[0]?.binding);\n  tagExtra[kContentSection] = contentSection;\n\n  const varBinding = trackVarReferences(tag, BindingType.derived);\n\n  const exprs = (tagExtra[kKnownExprs] = analyzeParams(\n    tagExtra,\n    section,\n    tag,\n    propTree,\n    attrExprs,\n  ));\n\n  if (varBinding) {\n    const mutatesTagVar = !!(\n      tag.node.var!.type === \"Identifier\" &&\n      tag.scope.getBinding(tag.node.var.name)?.constantViolations.length\n    );\n    const varExpr = tagExtra.defineBodySection\n      ? contentSection.returnValueExpr\n      : mapParamReasonToExpr(\n          exprs,\n          contentSection.returnSerializeReason &&\n            (contentSection.returnSerializeReason === true ||\n              !!contentSection.returnSerializeReason.state ||\n              (contentSection.returnSerializeReason\n                .param as Opt<InputBinding>)),\n        );\n    varBinding.scopeOffset = tagExtra[kChildOffsetScopeBinding] = createBinding(\n      \"#scopeOffset\",\n      BindingType.dom,\n      section,\n    );\n    setBindingDownstream(varBinding, varExpr);\n    addSerializeExpr(section, mutatesTagVar || varExpr, childScopeBinding);\n  }\n\n  addSerializeExpr(section, fromIter(attrExprs), childScopeBinding);\n}\n\nexport function knownTagTranslateHTML(\n  tag: t.NodePath<t.MarkoTag>,\n  tagIdentifier: t.Expression,\n  contentSection: Section,\n  propTree: BindingPropTree | undefined,\n) {\n  const tagBody = tag.get(\"body\");\n  const { node } = tag;\n  const tagExtra = node.extra!;\n\n  writer.flushInto(tag);\n  writeHTMLResumeStatements(tagBody);\n\n  const tagVar = node.var;\n  const section = getSection(tag);\n\n  const attrsPropTree = propTree?.props?.[tag.node.arguments?.length || 0];\n  const { properties, statements } =\n    (propTree && !propTree.props) || attrsPropTree\n      ? translateAttrs(tag, attrsPropTree)\n      : {\n          properties: [],\n          statements: [],\n        };\n\n  const childScopeBinding = tagExtra[kChildScopeBinding]!;\n  const childScopeSerializeReason = getSerializeReason(\n    section,\n    childScopeBinding,\n  );\n\n  if (childScopeSerializeReason) {\n    const peekScopeId = generateUidIdentifier(childScopeBinding?.name);\n    tag.insertBefore(\n      t.variableDeclaration(\"const\", [\n        t.variableDeclarator(peekScopeId, callRuntime(\"_peek_scope_id\")),\n      ]),\n    );\n\n    setBindingSerializedValue(\n      section,\n      childScopeBinding,\n      callRuntime(\"_existing_scope\", peekScopeId),\n    );\n\n    if (tagVar) {\n      statements.push(\n        t.expressionStatement(\n          callRuntime(\n            \"_var\",\n            getScopeIdIdentifier(section),\n            getScopeAccessorLiteral(tag.node.extra![kChildOffsetScopeBinding]!),\n            peekScopeId,\n            t.stringLiteral(\n              getResumeRegisterId(\n                section,\n                (node.var as t.Identifier).extra?.binding, // TODO: node.var is not always an identifier.\n                \"var\",\n              ),\n            ),\n          ),\n        ),\n      );\n    }\n  }\n\n  if (contentSection.paramReasonGroups) {\n    let childSerializeReasonExpr: t.Expression | undefined;\n    if (contentSection.paramReasonGroups.length === 1) {\n      // Special case single reason to pass either 1 or undefined.\n      const [group] = contentSection.paramReasonGroups;\n      const reason = getSerializeReason(section, childScopeBinding, group.id);\n      childSerializeReasonExpr =\n        reason && getSerializeGuard(section, reason, false);\n    } else {\n      const props: t.ObjectExpression[\"properties\"] = [];\n      let hasDynamicReasons = false;\n      let hasSkippedReasons = false;\n      for (let i = 0; i < contentSection.paramReasonGroups.length; i++) {\n        const group = contentSection.paramReasonGroups[i];\n        const reason = getSerializeReason(section, childScopeBinding, group.id);\n        if (reason) {\n          hasDynamicReasons ||= reason !== true && !reason.state;\n          props.push(\n            t.objectProperty(\n              withLeadingComment(\n                t.numericLiteral(i),\n                getDebugNames(group.reason),\n              ),\n              getSerializeGuard(section, reason, false)!,\n            ),\n          );\n        } else {\n          hasSkippedReasons = true;\n        }\n      }\n\n      if (props.length) {\n        childSerializeReasonExpr =\n          hasDynamicReasons || hasSkippedReasons\n            ? t.objectExpression(props)\n            : t.numericLiteral(1);\n      }\n    }\n\n    if (childSerializeReasonExpr) {\n      tag.insertBefore(\n        t.expressionStatement(\n          callRuntime(\"_set_serialize_reason\", childSerializeReasonExpr),\n        ),\n      );\n    }\n  }\n\n  // TODO: make this better\n  const getArgs = () => {\n    let renderArgs: (t.Expression | t.SpreadElement)[] = [];\n    if (tag.node.arguments) {\n      renderArgs = [...renderArgs, ...tag.node.arguments];\n    }\n    if (!tag.node.arguments?.length || properties.length) {\n      renderArgs.push(propsToExpression(properties));\n    }\n    return renderArgs;\n  };\n\n  if (tagVar) {\n    translateVar(tag, callExpression(tagIdentifier, ...getArgs()), \"let\");\n  } else {\n    statements.push(callStatement(tagIdentifier, ...getArgs()));\n  }\n\n  for (const replacement of tag.replaceWithMultiple(statements)) {\n    replacement.skip();\n  }\n}\n\nexport function knownTagTranslateDOM(\n  tag: t.NodePath<t.MarkoTag>,\n  propTree: BindingPropTree | undefined,\n  getBindingIdentifier: (\n    binding: Binding,\n    preferredName?: string,\n  ) => t.Identifier,\n  callSetup: (section: Section, childBinding: Binding) => void,\n) {\n  const tagSection = getSection(tag);\n  const { node } = tag;\n  const extra = node.extra!;\n  const childScopeBinding = extra[kChildScopeBinding]!;\n\n  if (node.var) {\n    const varBinding = node.var.extra!.binding!;\n    const source = initValue(\n      // TODO: support destructuring\n      varBinding,\n    );\n    source.register = true;\n    source.buildAssignment = (valueSection, value) => {\n      const changeArgs = [\n        createScopeReadExpression(childScopeBinding, valueSection),\n        value,\n      ];\n      if (!isOptimize()) {\n        changeArgs.push(t.stringLiteral(varBinding.name));\n      }\n      return t.callExpression(importRuntime(\"_var_change\"), changeArgs);\n    };\n    addStatement(\n      \"render\",\n      tagSection,\n      undefined,\n      t.expressionStatement(\n        callRuntime(\n          \"_var\",\n          scopeIdentifier,\n          getScopeAccessorLiteral(childScopeBinding, true),\n          source.identifier,\n        ),\n      ),\n    );\n  }\n  callSetup(tagSection, childScopeBinding);\n\n  if (propTree) {\n    writeParamsToSignals(tag, propTree, getTagName(tag) || \"tag\", {\n      tagSection,\n      getBindingIdentifier,\n      childScopeBinding,\n      attrTagCallsByTag: undefined,\n    });\n  }\n}\n\nexport function finalizeKnownTags(section: Section) {\n  for (const tagExtra of getKnownTags(section)) {\n    const scopeBinding = tagExtra[kChildScopeBinding];\n    const knownExprs = tagExtra[kKnownExprs];\n    const contentSection = tagExtra[kContentSection]!;\n    if (knownExprs && scopeBinding && contentSection.paramReasonGroups) {\n      for (const group of contentSection.paramReasonGroups) {\n        addSerializeReason(\n          section,\n          getSerializeSourcesForExprs(\n            mapParamReasonToExpr(knownExprs, group.reason),\n          ),\n          scopeBinding,\n          group.id,\n        );\n      }\n    }\n  }\n}\n\nfunction analyzeParams(\n  rootTagExtra: t.MarkoTagExtra,\n  section: Section,\n  tag: t.NodePath<t.MarkoTag>,\n  propTree: BindingPropTree | undefined,\n  rootAttrExprs: Set<t.NodeExtra>,\n): KnownExprs {\n  const inputExpr: KnownExprs = {};\n  if (!propTree) {\n    dropNodes(getAllTagReferenceNodes(tag.node));\n    return inputExpr;\n  }\n\n  if (\n    !propTree.props ||\n    tag.node.arguments?.some((node) => t.isSpreadElement(node))\n  ) {\n    const extra = (inputExpr.value = mergeReferences(\n      section,\n      tag.node,\n      getAllTagReferenceNodes(tag.node),\n    ));\n\n    setBindingDownstream(propTree.binding, extra);\n    return inputExpr;\n  }\n\n  const known: NonNullable<KnownExprs[\"known\"]> = (inputExpr.known = {});\n\n  let i = 0;\n  if (tag.node.arguments) {\n    for (const arg of tag.node.arguments) {\n      const argExport = propTree.props[i];\n      if (!argExport) {\n        // drop references for duplicated attributes and unused attributes.\n        dropNodes(arg);\n        continue;\n      }\n\n      const argValueExtra = (arg.extra ??= {});\n      known[i++] = { value: argValueExtra };\n      rootAttrExprs.add(argValueExtra);\n    }\n  }\n\n  const attrPropsTree = propTree.props[i];\n  if (attrPropsTree) {\n    known[i] = analyzeAttrs(\n      rootTagExtra,\n      section,\n      tag,\n      attrPropsTree,\n      rootAttrExprs,\n    );\n  } else {\n    const args = tag.node.arguments;\n    tag.node.arguments = null;\n    dropNodes(getAllTagReferenceNodes(tag.node));\n    tag.node.arguments = args;\n  }\n\n  return inputExpr;\n}\n\nfunction analyzeAttrs(\n  rootTagExtra: t.MarkoTagExtra,\n  section: Section,\n  tag: t.NodePath<t.MarkoTag>,\n  propTree: BindingPropTree,\n  rootAttrExprs: Set<t.NodeExtra>,\n): KnownExprs {\n  const inputExpr: KnownExprs = {};\n  if (!propTree.props) {\n    const extra = (inputExpr.value = mergeReferences(\n      section,\n      tag.node,\n      getAllTagReferenceNodes(tag.node),\n    ));\n\n    setBindingDownstream(propTree.binding, extra);\n    return inputExpr;\n  }\n\n  const known: NonNullable<KnownExprs[\"known\"]> = (inputExpr.known = {});\n  const attrTagLookup = analyzeAttributeTags(tag);\n  const seen = new Set<string>();\n  const remaining = new Set(getAllKnownPropNames(propTree));\n  const dropReferenceNodes: t.Node[] = [];\n  let restReferenceNodes: t.Node[] | undefined;\n\n  if (attrTagLookup) {\n    const nodeReferencesByGroup = new Map<\n      AttrTagGroup,\n      { firstTag: t.NodePath<t.MarkoTag>; referenceNodes: t.Node[] }\n    >();\n\n    const analyzeDynamicAttrTagChildGroup = (\n      group: AttrTagGroup,\n      child: t.NodePath<t.MarkoTag>,\n    ) => {\n      const referenceNodes = getAllTagReferenceNodes(child.node);\n      const groupReferences = nodeReferencesByGroup.get(group);\n      if (groupReferences) {\n        groupReferences.referenceNodes =\n          groupReferences.referenceNodes.concat(referenceNodes);\n      } else {\n        nodeReferencesByGroup.set(group, {\n          firstTag: child,\n          referenceNodes,\n        });\n      }\n    };\n\n    for (const attrTagName in attrTagLookup) {\n      seen.add(attrTagLookup[attrTagName].name);\n    }\n\n    const attrTags = tag.node.body.attributeTags\n      ? tag.get(\"body\").get(\"body\")\n      : tag.get(\"attributeTags\");\n    for (const child of attrTags) {\n      if (child.isMarkoTag()) {\n        if (isAttributeTag(child)) {\n          const attrTagMeta = attrTagLookup[getTagName(child)];\n          const childAttrExport = getKnownFromPropTree(\n            propTree,\n            attrTagMeta.name,\n          );\n          if (!childAttrExport) {\n            getAllTagReferenceNodes(child.node, dropReferenceNodes);\n          } else if (attrTagMeta.dynamic) {\n            analyzeDynamicAttrTagChildGroup(attrTagMeta.group, child);\n          } else if (childAttrExport === true) {\n            getAllTagReferenceNodes(child.node, (restReferenceNodes ||= []));\n            known[attrTagMeta.name] = {\n              value: rootTagExtra as ReferencedExtra,\n            };\n          } else if (childAttrExport.props) {\n            remaining.delete(attrTagMeta.name);\n            known[attrTagMeta.name] = analyzeAttrs(\n              rootTagExtra,\n              section,\n              child,\n              childAttrExport,\n              rootAttrExprs,\n            );\n          } else {\n            analyzeDynamicAttrTagChildGroup(attrTagMeta.group, child);\n          }\n        } else {\n          const group = child.node.extra!.attributeTagGroup!;\n          let childUsesGroupProp = false;\n          for (const name of group) {\n            if (getKnownFromPropTree(propTree, attrTagLookup[name].name)) {\n              childUsesGroupProp = true;\n              break;\n            }\n          }\n\n          if (childUsesGroupProp) {\n            analyzeDynamicAttrTagChildGroup(group, child);\n          } else {\n            getAllTagReferenceNodes(child.node, dropReferenceNodes);\n          }\n        }\n      }\n    }\n\n    for (const [\n      group,\n      {\n        firstTag: { node },\n        referenceNodes,\n      },\n    ] of nodeReferencesByGroup) {\n      let bindings: Opt<Binding>;\n      let hasRest = false;\n\n      for (const tagName of group) {\n        const attrName = tagName.slice(1);\n        const templateExportAttr = getKnownFromPropTree(propTree, attrName)!;\n        if (templateExportAttr === true) {\n          hasRest = true;\n          break;\n        } else {\n          bindings = bindingUtil.add(bindings, templateExportAttr.binding);\n        }\n      }\n\n      if (hasRest) {\n        const groupKnownValue: KnownExprs = {\n          value: rootTagExtra as ReferencedExtra,\n        };\n        restReferenceNodes ||= [];\n        for (const node of referenceNodes) {\n          restReferenceNodes.push(node);\n        }\n\n        for (const name of group) {\n          const attrTagMeta = attrTagLookup[name];\n          known[attrTagMeta.name] = groupKnownValue;\n        }\n        continue;\n      }\n\n      const groupExtra = mergeReferences(section, node, referenceNodes);\n      const groupKnownValue: KnownExprs = { value: groupExtra };\n      rootAttrExprs.add(groupExtra);\n\n      forEach(bindings, (binding) => {\n        setBindingDownstream(binding, groupExtra);\n      });\n\n      for (const name of group) {\n        const attrTagMeta = attrTagLookup[name];\n        remaining.delete(attrTagMeta.name);\n        known[attrTagMeta.name] = groupKnownValue;\n      }\n    }\n  }\n\n  const contentExport = getKnownFromPropTree(propTree, \"content\");\n  if (contentExport && !seen.has(\"content\")) {\n    const bodySection = getSectionForBody(tag.get(\"body\"));\n    if (bodySection) {\n      seen.add(\"content\");\n      if (contentExport === true) {\n        // TODO: update when supporting default params\n        known.content = { value: rootTagExtra as ReferencedExtra };\n      } else {\n        remaining.delete(\"content\");\n        known.content = { value: undefined }; // TODO: update when supporting default params\n      }\n    }\n  }\n\n  let knownSpread: ReturnType<typeof getSingleKnownSpread>;\n  let spreadReferenceNodes: t.Node[] | undefined;\n  const { attributes } = tag.node;\n  for (let i = attributes.length; i--; ) {\n    const attr = attributes[i];\n    if (t.isMarkoAttribute(attr)) {\n      const templateExportAttr = getKnownFromPropTree(propTree, attr.name);\n      if (!templateExportAttr || seen.has(attr.name)) {\n        // drop references for duplicated attributes and unused attributes.\n        dropReferenceNodes.push(attr.value);\n        continue;\n      }\n\n      seen.add(attr.name);\n\n      if (spreadReferenceNodes) {\n        spreadReferenceNodes.push(attr.value);\n      } else if (templateExportAttr === true) {\n        (restReferenceNodes ||= []).push(attr.value);\n        known[attr.name] = { value: rootTagExtra as ReferencedExtra };\n      } else {\n        const attrExtra = (attr.value.extra ??= {}) as ReferencedExtra;\n        remaining.delete(attr.name);\n        known[attr.name] = { value: attrExtra };\n        rootAttrExprs.add(attrExtra);\n        setBindingDownstream(templateExportAttr.binding, attrExtra);\n        if (\n          knownSpread &&\n          !includes(knownSpread.binding.excludeProperties, attr.name)\n        ) {\n          const propBinding = getOrCreatePropertyAlias(\n            knownSpread.binding,\n            attr.name,\n          );\n          addRead(attrExtra, {}, propBinding, section, undefined);\n        }\n      }\n    } else if (spreadReferenceNodes) {\n      spreadReferenceNodes.push(attr.value);\n    } else {\n      knownSpread = hasAllKnownProps(propTree)\n        ? getSingleKnownSpread(attributes)\n        : undefined;\n\n      if (knownSpread) {\n        dropNodes(attr.value);\n      } else {\n        (spreadReferenceNodes = restReferenceNodes || []).push(attr.value);\n      }\n    }\n  }\n\n  if (knownSpread) {\n    for (const prop of remaining) {\n      const propBinding = getOrCreatePropertyAlias(knownSpread.binding, prop);\n      const propExtra: ReferencedExtra = { section };\n      const templateExportAttr = getKnownFromPropTree(propTree, prop)!;\n\n      known[prop] = { value: propExtra };\n      rootAttrExprs.add(propExtra);\n      addRead(propExtra, propExtra, propBinding, section, undefined);\n      setBindingDownstream(\n        templateExportAttr === true\n          ? propTree.rest!.binding\n          : templateExportAttr.binding,\n        propExtra,\n      );\n    }\n  } else if (spreadReferenceNodes) {\n    if (remaining.size || (propTree.rest && !propTree.rest.props)) {\n      inputExpr.value = mergeReferences(\n        section,\n        tag.node,\n        spreadReferenceNodes,\n      );\n      setBindingDownstream(\n        propTree.rest?.binding || propTree.binding,\n        inputExpr.value,\n      );\n    } else {\n      dropNodes(spreadReferenceNodes);\n    }\n  } else if (restReferenceNodes) {\n    inputExpr.value = mergeReferences(section, tag.node, restReferenceNodes);\n    setBindingDownstream(propTree.rest!.binding, inputExpr.value);\n  }\n\n  dropNodes(dropReferenceNodes);\n\n  return inputExpr;\n}\n\nfunction getSingleKnownSpread(\n  attributes: (t.MarkoAttribute | t.MarkoSpreadAttribute)[],\n) {\n  let binding: Binding | undefined;\n  let extra: t.NodeExtra | undefined;\n  for (let i = attributes.length; i--; ) {\n    const attr = attributes[i];\n    if (\n      attr.type === \"MarkoSpreadAttribute\"\n        ? binding || !(binding = (extra = attr.value.extra)?.spreadFrom)\n        : binding && !includes(binding.excludeProperties, attr.name)\n    ) {\n      return;\n    }\n  }\n  if (binding) {\n    return { extra, binding };\n  }\n}\n\ntype TranslateDOMInfo = {\n  tagSection: Section;\n  getBindingIdentifier: (\n    binding: Binding,\n    preferredName?: string,\n  ) => t.Identifier;\n  childScopeBinding: Binding;\n  attrTagCallsByTag:\n    | undefined\n    | Map<\n        t.NodePath<t.MarkoTag>,\n        Map<\n          string,\n          t.ParenthesizedExpression & { expression: t.CallExpression }\n        >\n      >;\n};\n\nfunction writeParamsToSignals(\n  tag: t.NodePath<t.MarkoTag>,\n  propTree: BindingPropTree,\n  importAlias: string,\n  info: TranslateDOMInfo,\n) {\n  if (\n    !propTree.props ||\n    tag.node.arguments?.some((node) => t.isSpreadElement(node))\n  ) {\n    const referencedBindings = tag.node.extra?.referencedBindings;\n    const tagInputIdentifier = info.getBindingIdentifier(\n      propTree.binding,\n      `${importAlias}_params`,\n    );\n    const translatedAttrs = translateAttrs(tag);\n\n    if (translatedAttrs.statements.length) {\n      addStatement(\n        \"render\",\n        info.tagSection,\n        referencedBindings,\n        translatedAttrs.statements,\n      );\n    }\n\n    let renderArgs: (t.Expression | t.SpreadElement)[] = [\n      createScopeReadExpression(info.childScopeBinding, info.tagSection),\n    ];\n    if (tag.node.arguments) {\n      renderArgs = [...renderArgs, ...tag.node.arguments];\n    }\n    if (!tag.node.arguments?.length || translatedAttrs.properties.length) {\n      renderArgs.push(propsToExpression(translatedAttrs.properties));\n    }\n\n    addStatement(\n      \"render\",\n      info.tagSection,\n      referencedBindings,\n      t.expressionStatement(\n        t.callExpression(tagInputIdentifier, [t.arrayExpression(renderArgs)]),\n      ),\n    );\n\n    return;\n  }\n\n  let i = 0;\n  if (tag.node.arguments) {\n    for (const arg of tag.node.arguments) {\n      const argExport = propTree.props[i];\n      if (argExport) {\n        const argExportIdentifier = info.getBindingIdentifier(\n          argExport.binding,\n          `${importAlias}_param_${i}`,\n        );\n        addStatement(\n          \"render\",\n          info.tagSection,\n          arg.extra?.referencedBindings, // TODO: pretty sure content needs to have the reference group of it's param defaults.\n          t.expressionStatement(\n            t.callExpression(argExportIdentifier, [\n              createScopeReadExpression(\n                info.childScopeBinding,\n                info.tagSection,\n              ),\n              arg,\n            ]),\n          ),\n          undefined,\n          true,\n        );\n      }\n\n      i++;\n    }\n  }\n\n  const attrPropsTree = propTree.props[i];\n  if (attrPropsTree) {\n    writeAttrsToSignals(tag, attrPropsTree, `${importAlias}_input`, info);\n  }\n}\n\nfunction applyAttrObject(\n  tag: t.NodePath<t.MarkoTag>,\n  propTree: BindingPropTree,\n  tagInputIdentifier: t.Identifier,\n  info: TranslateDOMInfo,\n) {\n  const referencedBindings = tag.node.extra?.referencedBindings;\n  const translatedAttrs = translateAttrs(\n    tag,\n    true,\n    propTree.rest && new Set(toIter(propTree.rest.binding.excludeProperties)),\n  );\n  let translatedProps = propsToExpression(translatedAttrs.properties);\n\n  if (translatedAttrs.statements.length) {\n    addStatement(\n      \"render\",\n      info.tagSection,\n      referencedBindings,\n      translatedAttrs.statements,\n    );\n  }\n\n  if (isAttributeTag(tag)) {\n    const attrTagName = getTagName(tag);\n    const parentTag = tag.parentPath as t.NodePath<t.MarkoTag>;\n    const repeated = analyzeAttributeTags(parentTag)?.[attrTagName]?.repeated;\n\n    if (repeated) {\n      let attrTagCallsForTag = (info.attrTagCallsByTag ||= new Map()).get(\n        parentTag,\n      );\n      if (!attrTagCallsForTag) {\n        info.attrTagCallsByTag.set(parentTag, (attrTagCallsForTag = new Map()));\n      }\n\n      const attrTagCall = attrTagCallsForTag.get(attrTagName);\n      if (attrTagCall) {\n        attrTagCall.expression = callRuntime(\n          \"attrTags\",\n          attrTagCall.expression,\n          translatedProps,\n        );\n        return;\n      } else {\n        // Uses parenthesized expressions since they are simple to mutate after the fact\n        // and do not impact the output.\n        attrTagCallsForTag.set(\n          attrTagName,\n          (translatedProps = t.parenthesizedExpression(\n            callRuntime(\"attrTag\", translatedProps),\n          ) as t.ParenthesizedExpression & {\n            expression: t.CallExpression;\n          }),\n        );\n      }\n    } else {\n      translatedProps = callRuntime(\"attrTag\", translatedProps);\n    }\n  }\n\n  addStatement(\n    \"render\",\n    info.tagSection,\n    referencedBindings,\n    t.expressionStatement(\n      t.callExpression(tagInputIdentifier, [\n        createScopeReadExpression(info.childScopeBinding, info.tagSection),\n        translatedProps,\n      ]),\n    ),\n    undefined,\n    true,\n  );\n}\n\nfunction translateAttrTag(\n  tag: t.NodePath<t.MarkoTag>,\n  attrTagMeta: AttrTagMeta,\n  info: TranslateDOMInfo,\n  statements: t.Statement[],\n) {\n  const translatedAttrs = translateAttrs(tag, true, undefined, statements);\n  let translatedProps = propsToExpression(translatedAttrs.properties);\n  const attrTagName = getTagName(tag);\n  const parentTag = tag.parentPath as t.NodePath<t.MarkoTag>;\n\n  if (attrTagMeta.repeated) {\n    let attrTagCallsForTag = (info.attrTagCallsByTag ||= new Map()).get(\n      parentTag,\n    );\n    if (!attrTagCallsForTag) {\n      info.attrTagCallsByTag.set(parentTag, (attrTagCallsForTag = new Map()));\n    }\n\n    const attrTagCall = attrTagCallsForTag.get(attrTagName);\n    if (attrTagCall) {\n      attrTagCall.expression = callRuntime(\n        \"attrTags\",\n        attrTagCall.expression,\n        translatedProps,\n      );\n      return;\n    } else {\n      // Uses parenthesized expressions since they are simple to mutate after the fact\n      // and do not impact the output.\n      attrTagCallsForTag.set(\n        attrTagName,\n        (translatedProps = t.parenthesizedExpression(\n          callRuntime(\"attrTag\", translatedProps),\n        ) as t.ParenthesizedExpression & {\n          expression: t.CallExpression;\n        }),\n      );\n    }\n  } else {\n    translatedProps = callRuntime(\"attrTag\", translatedProps);\n  }\n\n  return translatedProps;\n}\n\nfunction writeAttrsToSignals(\n  tag: t.NodePath<t.MarkoTag>,\n  propTree: BindingPropTree,\n  importAlias: string,\n  info: TranslateDOMInfo,\n) {\n  if (!propTree.props) {\n    applyAttrObject(\n      tag,\n      propTree,\n      info.getBindingIdentifier(propTree.binding, importAlias),\n      info,\n    );\n\n    return;\n  }\n\n  const attrTagLookup = analyzeAttributeTags(tag);\n  const seen = new Set<string>();\n  const tagReferencedBindings = tag.node.extra?.referencedBindings;\n  const remaining = new Set(getAllKnownPropNames(propTree));\n  let restProps: t.ObjectExpression[\"properties\"] | undefined;\n\n  if (attrTagLookup) {\n    const attrTags = tag.get(\"attributeTags\");\n    const statementsByGroup = new Map<\n      AttrTagGroup,\n      {\n        referencedBindings: t.NodeExtra[\"referencedBindings\"];\n        statements: t.Statement[];\n      }\n    >();\n\n    const translateDynamicAttrTagChildInGroup = (\n      group: AttrTagGroup,\n      index: number,\n    ) => {\n      const child = attrTags[index];\n      let statements = statementsByGroup.get(group)?.statements;\n      if (!statements) {\n        statements = [];\n        statementsByGroup.set(group, {\n          referencedBindings: child.node.extra?.referencedBindings,\n          statements,\n        });\n      }\n\n      return addDynamicAttrTagStatements(\n        attrTags,\n        index,\n        attrTagLookup,\n        statements,\n        propTree,\n      );\n    };\n\n    for (const attrTagName in attrTagLookup) {\n      seen.add(attrTagLookup[attrTagName].name);\n    }\n\n    for (let i = 0; i < attrTags.length; i++) {\n      const child = attrTags[i];\n      if (child.isMarkoTag()) {\n        if (isAttributeTag(child)) {\n          const attrTagMeta = attrTagLookup[getTagName(child)];\n          const childAttrExport = getKnownFromPropTree(\n            propTree,\n            attrTagMeta.name,\n          );\n          if (!childAttrExport) {\n            // ignore\n          } else if (attrTagMeta.dynamic) {\n            i = translateDynamicAttrTagChildInGroup(attrTagMeta.group, i);\n          } else if (childAttrExport === true) {\n            const statements: t.Statement[] = [];\n            const translatedAttrs = translateAttrTag(\n              child,\n              attrTagMeta,\n              info,\n              statements,\n            );\n\n            addStatement(\n              \"render\",\n              info.tagSection,\n              tagReferencedBindings,\n              statements,\n            );\n\n            if (translatedAttrs) {\n              (restProps ||= []).push(\n                toObjectProperty(attrTagMeta.name, translatedAttrs),\n              );\n            }\n          } else {\n            remaining.delete(attrTagMeta.name);\n            writeAttrsToSignals(\n              child,\n              childAttrExport,\n              `${importAlias}_${attrTagMeta.name}`,\n              info,\n            );\n          }\n        } else {\n          const group = child.node.extra!.attributeTagGroup!;\n          let childUsesGroupProp = false;\n          for (const name of group) {\n            if (getKnownFromPropTree(propTree, attrTagLookup[name].name)) {\n              childUsesGroupProp = true;\n              break;\n            }\n          }\n\n          if (childUsesGroupProp) {\n            i = translateDynamicAttrTagChildInGroup(group, i);\n          } else if (getTagName(child) === \"if\") {\n            while (++i < attrTags.length) {\n              const nextTag = attrTags[i];\n              switch (nextTag.isMarkoTag() && getTagName(nextTag)) {\n                case \"else\":\n                case \"else-if\":\n                  continue;\n              }\n\n              i--;\n              break;\n            }\n          }\n        }\n      }\n    }\n\n    for (const [\n      group,\n      { referencedBindings, statements },\n    ] of statementsByGroup) {\n      const decls: t.VariableDeclaration[\"declarations\"] = [];\n\n      let hasRest = false;\n      for (const name of group) {\n        const attrTagMeta = attrTagLookup[name];\n        const childAttrExports = getKnownFromPropTree(\n          propTree,\n          attrTagMeta.name,\n        )!;\n        decls.push(t.variableDeclarator(getAttrTagIdentifier(attrTagMeta)));\n        if (childAttrExports === true) {\n          hasRest = true;\n        }\n      }\n\n      addStatement(\n        \"render\",\n        info.tagSection,\n        hasRest ? tagReferencedBindings : referencedBindings,\n        [t.variableDeclaration(\"let\", decls), ...statements],\n      );\n\n      if (hasRest) {\n        for (const name of group) {\n          const attrTagMeta = attrTagLookup[name];\n          (restProps ||= []).push(\n            toObjectProperty(\n              attrTagMeta.name,\n              getAttrTagIdentifier(attrTagMeta),\n            ),\n          );\n        }\n      } else {\n        for (const name of group) {\n          const attrTagMeta = attrTagLookup[name];\n          const childAttrExports = getKnownFromPropTree(\n            propTree,\n            attrTagMeta.name,\n          ) as BindingPropTree;\n\n          remaining.delete(attrTagMeta.name);\n          addStatement(\n            \"render\",\n            info.tagSection,\n            referencedBindings,\n            t.expressionStatement(\n              t.callExpression(\n                info.getBindingIdentifier(\n                  childAttrExports.binding,\n                  `${importAlias}_${attrTagMeta.name}`,\n                ),\n                [\n                  createScopeReadExpression(\n                    info.childScopeBinding,\n                    info.tagSection,\n                  ),\n                  getAttrTagIdentifier(attrTagMeta),\n                ],\n              ),\n            ),\n          );\n        }\n      }\n    }\n  }\n\n  const contentExport = getKnownFromPropTree(propTree, \"content\");\n  if (!seen.has(\"content\") && contentExport) {\n    const bodySection = getSectionForBody(tag.get(\"body\"));\n    if (bodySection) {\n      seen.add(\"content\");\n      const bodyValue = t.callExpression(t.identifier(bodySection.name), [\n        scopeIdentifier,\n      ]);\n      if (contentExport === true) {\n        (restProps ||= []).push(toObjectProperty(\"content\", bodyValue));\n      } else {\n        remaining.delete(\"content\");\n        addStatement(\n          \"render\",\n          info.tagSection,\n          undefined, // TODO: pretty sure content needs to have the reference group of it's param defaults.\n          t.expressionStatement(\n            t.callExpression(\n              info.getBindingIdentifier(\n                contentExport.binding,\n                `${importAlias}_content`,\n              ),\n              [\n                createScopeReadExpression(\n                  info.childScopeBinding,\n                  info.tagSection,\n                ),\n                bodyValue,\n              ],\n            ),\n          ),\n          undefined,\n          true,\n        );\n      }\n    }\n  }\n\n  let knownSpread: ReturnType<typeof getSingleKnownSpread>;\n  let spreadProps: t.ObjectExpression[\"properties\"] | undefined;\n\n  const staticAttrs: t.MarkoAttribute[] = [];\n  const { attributes } = tag.node;\n  for (let i = attributes.length; i--; ) {\n    const attr = attributes[i];\n    if (t.isMarkoAttribute(attr)) {\n      const templateExportAttr = getKnownFromPropTree(propTree, attr.name);\n      if (!templateExportAttr || seen.has(attr.name)) {\n        continue;\n      }\n\n      seen.add(attr.name);\n\n      if (spreadProps) {\n        spreadProps.push(toObjectProperty(attr.name, attr.value));\n      } else if (templateExportAttr === true) {\n        (restProps ||= []).push(toObjectProperty(attr.name, attr.value));\n      } else {\n        staticAttrs.push(attr);\n      }\n    } else if (spreadProps) {\n      spreadProps.push(t.spreadElement(attr.value));\n    } else {\n      knownSpread = hasAllKnownProps(propTree)\n        ? getSingleKnownSpread(attributes)\n        : undefined;\n      if (!knownSpread) {\n        (spreadProps = restProps || []).push(t.spreadElement(attr.value));\n      }\n    }\n  }\n\n  for (let i = staticAttrs.length; i--; ) {\n    const attr = staticAttrs[i];\n    const childAttrExports = getKnownFromPropTree(\n      propTree,\n      attr.name,\n    ) as BindingPropTree;\n    const attrExportIdentifier = info.getBindingIdentifier(\n      childAttrExports.binding,\n      `${importAlias}_${attr.name}`,\n    );\n    remaining.delete(attr.name);\n    addStatement(\n      \"render\",\n      info.tagSection,\n      attr.value.extra?.referencedBindings,\n      t.expressionStatement(\n        t.callExpression(attrExportIdentifier, [\n          createScopeReadExpression(info.childScopeBinding, info.tagSection),\n          attr.value, // TODO: use spreadBinding property alias after we optimize `in`\n        ]),\n      ),\n      undefined,\n      true,\n    );\n  }\n\n  if (knownSpread) {\n    for (const prop of remaining) {\n      const childAttrExports = getKnownFromPropTree(\n        propTree,\n        prop,\n      ) as BindingPropTree;\n      const attrExportIdentifier = info.getBindingIdentifier(\n        childAttrExports.binding,\n        `${importAlias}_${prop}`,\n      );\n      const propBinding = knownSpread.binding.propertyAliases.get(prop)!;\n      addStatement(\n        \"render\",\n        info.tagSection,\n        propBinding,\n        t.expressionStatement(\n          t.callExpression(attrExportIdentifier, [\n            createScopeReadExpression(info.childScopeBinding, info.tagSection),\n            createScopeReadExpression(propBinding, info.tagSection),\n          ]),\n        ),\n        undefined,\n        true,\n      );\n    }\n  } else if (spreadProps) {\n    const spreadExpr = propsToExpression(spreadProps.reverse());\n    let spreadId = spreadExpr;\n\n    if (!isSimpleReference(spreadExpr)) {\n      spreadId = generateUidIdentifier(`${importAlias}_spread`);\n      addStatement(\"render\", info.tagSection, tagReferencedBindings, [\n        t.variableDeclaration(\"const\", [\n          t.variableDeclarator(spreadId, spreadExpr),\n        ]),\n      ]);\n    }\n\n    for (const name of remaining) {\n      const childAttrExports = getKnownFromPropTree(\n        propTree,\n        name,\n      ) as BindingPropTree;\n      const attrExportIdentifier = info.getBindingIdentifier(\n        childAttrExports.binding,\n        `${importAlias}_${name}`,\n      );\n      addStatement(\n        \"render\",\n        info.tagSection,\n        tagReferencedBindings,\n        t.expressionStatement(\n          t.callExpression(attrExportIdentifier, [\n            createScopeReadExpression(info.childScopeBinding, info.tagSection),\n            toMemberExpression(t.cloneNode(spreadId, true), name),\n          ]),\n        ),\n      );\n    }\n\n    if (propTree.rest && !propTree.rest.props) {\n      const props: t.ObjectPattern[\"properties\"] = [];\n      const restId = t.identifier(propTree.rest.binding.name);\n      forEach(propTree.rest.binding.excludeProperties, (name) => {\n        const propId = toPropertyName(name);\n        const shorthand =\n          propId.type === \"Identifier\" && t.isValidIdentifier(name);\n        props.push(\n          t.objectProperty(\n            propId,\n            shorthand ? propId : generateUidIdentifier(name),\n            false,\n            shorthand,\n          ),\n        );\n      });\n\n      props.push(t.restElement(restId));\n      addStatement(\n        \"render\",\n        info.tagSection,\n        tagReferencedBindings,\n        t.expressionStatement(\n          t.callExpression(\n            info.getBindingIdentifier(\n              propTree.rest.binding,\n              importAlias + \"_$rest\",\n            ),\n            [\n              createScopeReadExpression(\n                info.childScopeBinding,\n                info.tagSection,\n              ),\n              t.callExpression(\n                t.arrowFunctionExpression([t.objectPattern(props)], restId),\n                [spreadId],\n              ),\n            ],\n          ),\n        ),\n        undefined,\n        true,\n      );\n    }\n  } else {\n    for (const name of remaining) {\n      const childAttrExports = getKnownFromPropTree(\n        propTree,\n        name,\n      ) as BindingPropTree;\n      const attrExportIdentifier = info.getBindingIdentifier(\n        childAttrExports.binding,\n        `${importAlias}_${name}`,\n      );\n      addStatement(\n        \"render\",\n        info.tagSection,\n        undefined,\n        t.expressionStatement(\n          t.callExpression(attrExportIdentifier, [\n            createScopeReadExpression(info.childScopeBinding, info.tagSection),\n          ]),\n        ),\n      );\n    }\n\n    if (propTree.rest && !propTree.rest.props) {\n      addStatement(\n        \"render\",\n        info.tagSection,\n        tagReferencedBindings,\n        t.expressionStatement(\n          t.callExpression(\n            info.getBindingIdentifier(\n              propTree.rest.binding,\n              importAlias + \"_$rest\",\n            ),\n            [\n              createScopeReadExpression(\n                info.childScopeBinding,\n                info.tagSection,\n              ),\n              t.objectExpression(restProps || []),\n            ],\n          ),\n        ),\n        undefined,\n        true,\n      );\n    }\n  }\n}\n\nfunction mapParamReasonToExpr(\n  exprs: KnownExprs,\n  reason: boolean | Opt<InputBinding | ParamBinding>,\n) {\n  if (reason) {\n    if (reason === true) return true;\n    return filterMap(reason, (prop) => {\n      if (exprs) {\n        let curExpr = exprs;\n        let curBinding = prop;\n        if (curBinding.property) {\n          const props: string[] = [];\n          do {\n            props.push(curBinding.property);\n          } while (\n            (curBinding = curBinding.upstreamAlias as\n              | InputBinding\n              | ParamBinding) &&\n            curBinding.property\n          );\n\n          for (let i = props.length; i--; ) {\n            const nestedExpr = curExpr.known?.[props[i]];\n            if (nestedExpr) {\n              curExpr = nestedExpr;\n            } else {\n              break;\n            }\n          }\n        }\n\n        return curExpr.value;\n      }\n    });\n  }\n}\n\nfunction callStatement(\n  id: t.Expression,\n  ...args: Array<t.Expression | t.SpreadElement | undefined>\n) {\n  return t.expressionStatement(callExpression(id, ...args));\n}\n\nfunction callExpression(\n  id: t.Expression,\n  ...args: Array<t.Expression | t.SpreadElement | undefined>\n) {\n  return t.callExpression(id, args.filter(Boolean) as t.Expression[]);\n}\n\nfunction isSimpleReference(expr: t.Expression): boolean {\n  switch (expr.type) {\n    case \"Identifier\":\n      return true;\n    case \"MemberExpression\":\n      return !expr.computed && isSimpleReference(expr.object);\n    default:\n      return false;\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/marko-config.ts",
    "content": "import { getFile } from \"@marko/compiler/babel-utils\";\n\nexport function isOutputHTML() {\n  return getMarkoOpts().output === \"html\";\n}\n\nexport function isOutputDOM() {\n  return !isOutputHTML();\n}\n\nexport function getMarkoOpts() {\n  return getFile().markoOpts;\n}\n\nexport function isOptimize() {\n  return getMarkoOpts().optimize;\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/nested-attribute-tags.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport { isAttributeTag, isLoopTag } from \"@marko/compiler/babel-utils\";\n\nimport { generateUid } from \"./generate-uid\";\nimport { getParentTag } from \"./get-parent-tag\";\nimport { getTagName } from \"./get-tag-name\";\nimport { isConditionTag } from \"./is-core-tag\";\n\nexport interface AttrTagMeta {\n  name: string;\n  dynamic: boolean;\n  repeated: boolean;\n  group: AttrTagNames;\n}\n\nexport type AttrTagLookup = Record<string, AttrTagMeta>;\n\nexport type AttrTagGroup = AttrTagLookup[string][\"group\"];\n\ntype AttrTagNames = string[];\n\ndeclare module \"@marko/compiler/dist/types\" {\n  export interface MarkoTagExtra {\n    attributeTags?: AttrTagLookup;\n    attributeTagGroup?: AttrTagLookup[string][\"group\"];\n  }\n}\n\nconst attrTagToIdentifierLookup = new WeakMap<AttrTagLookup[string], string>();\nexport function getAttrTagIdentifier(\n  meta: AttrTagLookup[string],\n): t.Identifier {\n  let name = attrTagToIdentifierLookup.get(meta);\n  if (!name) {\n    name = generateUid(meta.name);\n    attrTagToIdentifierLookup.set(meta, name);\n  }\n\n  return t.identifier(name);\n}\n\nexport function analyzeAttributeTags(tag: t.NodePath<t.MarkoTag>) {\n  if (tag.node.extra?.attributeTags) return tag.node.extra.attributeTags;\n\n  const attrTags = tag.node.body.attributeTags\n    ? tag.get(\"body\").get(\"body\")\n    : tag.get(\"attributeTags\");\n  if (!attrTags.length) return;\n\n  const tagExtra = (tag.node.extra ??= {});\n  const lookup: AttrTagLookup = (tagExtra.attributeTags = {});\n  const attrTagNodesByName: Record<string, t.NodePath<t.MarkoTag>[]> = {};\n  const sampleAttrTagsForControlFlow = new Map<\n    t.NodePath<t.MarkoTag>,\n    string\n  >();\n\n  for (const child of attrTags) {\n    if (child.isMarkoTag()) {\n      if (isAttributeTag(child)) {\n        const name = getTagName(child);\n        lookup[name] ||= createAttrTagMeta(name, [name]);\n        (attrTagNodesByName[name] ||= []).push(child);\n        analyzeAttributeTags(child);\n      } else {\n        const isRepeated = isLoopTag(child);\n        let curGroup: (typeof lookup)[string][\"group\"] | undefined;\n        for (const name of crawlAttrTags(child, attrTagNodesByName)) {\n          const oldMeta = lookup[name];\n          if (oldMeta) {\n            if (!curGroup) {\n              curGroup = oldMeta.group;\n            } else if (curGroup !== oldMeta.group) {\n              for (const name of oldMeta.group) {\n                lookup[name].group = curGroup;\n                curGroup.push(name);\n              }\n            }\n          }\n\n          let attrTagMeta = lookup[name];\n          if (!attrTagMeta) {\n            attrTagMeta = lookup[name] = createAttrTagMeta(name, []);\n            curGroup = attrTagMeta.group;\n            curGroup.push(name);\n          }\n\n          attrTagMeta.dynamic = true;\n          if (isRepeated) {\n            attrTagMeta.repeated = true;\n          }\n\n          sampleAttrTagsForControlFlow.set(child, name);\n        }\n      }\n    }\n  }\n\n  for (const [controlFlowTag, sampleAttrName] of sampleAttrTagsForControlFlow) {\n    (controlFlowTag.node.extra ??= {}).attributeTagGroup =\n      lookup[sampleAttrName].group;\n  }\n\n  for (const name in attrTagNodesByName) {\n    const attrTagMeta = lookup[name];\n    if (!attrTagMeta.repeated) {\n      const attrTagNodes = attrTagNodesByName[name];\n      if (attrTagNodes.length > 1) {\n        attrTagMeta.repeated =\n          !attrTagMeta.dynamic || hasRepeatedDynamicAttrTags(attrTagNodes);\n      }\n    }\n  }\n\n  return lookup;\n}\n\nfunction createAttrTagMeta(\n  name: string,\n  group: AttrTagNames,\n): AttrTagLookup[string] {\n  return {\n    name: name.slice(1),\n    dynamic: false,\n    repeated: false,\n    group,\n  };\n}\n\nfunction crawlAttrTags(\n  tag: t.NodePath<t.MarkoTag>,\n  attrTagNodesByName: Record<string, t.NodePath<t.MarkoTag>[]>,\n  attrTagNames = new Set<string>(),\n) {\n  const attrTags = tag.node.body.attributeTags\n    ? tag.get(\"body\").get(\"body\")\n    : tag.get(\"attributeTags\");\n  for (const child of attrTags) {\n    if (child.isMarkoTag()) {\n      if (isAttributeTag(child)) {\n        const tagName = getTagName(child);\n        attrTagNames.add(tagName);\n        (attrTagNodesByName[tagName] ||= []).push(child);\n        analyzeAttributeTags(child);\n      } else {\n        crawlAttrTags(child, attrTagNodesByName, attrTagNames);\n      }\n    }\n  }\n\n  return attrTagNames;\n}\n\nfunction hasRepeatedDynamicAttrTags(attrTags: t.NodePath<t.MarkoTag>[]) {\n  // If we have multiple nodes and we know they can be dynamic, we first check\n  // if all nodes are apart of the same if/else chain and that there are no duplicates.\n  let conditionRoot: t.NodePath<t.MarkoTag> | undefined;\n  const seenBranches = new Set<t.NodePath<t.MarkoTag>>();\n  for (const attrTag of attrTags) {\n    const parentTag = getParentTag(attrTag)!;\n    if (seenBranches.has(parentTag) || !isConditionTag(parentTag)) {\n      return true;\n    }\n\n    const curConditionRoot = getConditionRoot(parentTag);\n    if (\n      curConditionRoot &&\n      curConditionRoot !== (conditionRoot ||= curConditionRoot)\n    ) {\n      return true;\n    }\n\n    seenBranches.add(parentTag);\n  }\n\n  return false;\n}\n\nfunction getConditionRoot(tag: t.NodePath<t.MarkoTag>) {\n  if (getTagName(tag) === \"if\") return tag;\n\n  let prev = tag.getPrevSibling();\n  while (prev.node) {\n    if (prev.isMarkoTag() && getTagName(prev) === \"if\") {\n      return prev;\n    }\n\n    prev = prev.getPrevSibling();\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/normalize-string-expression.ts",
    "content": "import { types as t } from \"@marko/compiler\";\n\nexport default function normalizeStringExpression(\n  parts: (string | t.Expression)[],\n): t.Expression | undefined {\n  const strs: string[] = [];\n  const exprs: t.Expression[] = [];\n  let curStr = \"\";\n\n  for (let i = 0; i < parts.length; i++) {\n    let content = parts[i];\n\n    if (typeof content === \"object\") {\n      if (t.isStringLiteral(content)) {\n        content = content.value;\n      } else if (t.isTemplateLiteral(content)) {\n        let nextIndex = i + 1;\n        const exprLen = content.expressions.length;\n        shiftItems(parts, nextIndex, content.quasis.length + exprLen);\n\n        for (let j = 0; j < exprLen; j++) {\n          parts[nextIndex++] = content.quasis[j].value.raw;\n          parts[nextIndex++] = content.expressions[j] as t.Expression;\n        }\n\n        parts[nextIndex] = content.quasis[exprLen].value.raw;\n        continue;\n      } else {\n        exprs.push(content);\n        strs.push(curStr);\n        curStr = \"\";\n        continue;\n      }\n    }\n\n    curStr += content;\n  }\n\n  if (exprs.length) {\n    if (exprs.length === 1 && !curStr && !strs[0]) {\n      return exprs[0];\n    }\n\n    strs.push(curStr);\n\n    return t.templateLiteral(\n      strs.map((raw) => t.templateElement({ raw: raw.replace(/`/g, \"\\\\`\") })),\n      exprs,\n    );\n  } else if (curStr) {\n    return t.stringLiteral(curStr);\n  }\n}\n\nexport function appendLiteral(arr: unknown[], str: string) {\n  arr[arr.length - 1] += str;\n}\n\nfunction shiftItems(list: unknown[], start: number, offset: number) {\n  for (let i = list.length - 1; i >= start; i--) {\n    list[i + offset] = list[i];\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/optional.ts",
    "content": "export type Many<T> = [T, T, ...T[]];\nexport type OneMany<T> = T | Many<T>;\nexport type Opt<T> = undefined | OneMany<T>;\nexport type Compare<T> = (a: T, b: T) => number;\nexport class Sorted<T> {\n  constructor(public compare: Compare<T>) {}\n  add<U extends NonNullable<T>>(data: Opt<U>, item: U): OneMany<U> {\n    return data !== undefined\n      ? Array.isArray(data)\n        ? (addSorted(this.compare, data, item) as Many<U>)\n        : joinRepeatable(this.compare, data, item)\n      : item;\n  }\n\n  union<U extends NonNullable<T>>(a: Opt<U>, b: Opt<U>): Opt<U> {\n    if (a !== undefined) {\n      if (Array.isArray(a)) {\n        if (b !== undefined) {\n          if (Array.isArray(b)) {\n            return unionSortedRepeatable(this.compare, a, b);\n          } else {\n            return addSorted(this.compare, a, b) as OneMany<U>;\n          }\n        }\n\n        return a;\n      }\n\n      if (b !== undefined) {\n        if (Array.isArray(b)) {\n          return addSorted(this.compare, b, a) as Many<U>;\n        }\n\n        return joinRepeatable(this.compare, b, a);\n      }\n\n      return a;\n    }\n\n    return b;\n  }\n  find<U extends NonNullable<T>>(data: Opt<U>, item: U): U | undefined {\n    if (data !== undefined) {\n      if (Array.isArray(data)) {\n        return findSorted(this.compare, data, item);\n      } else if (this.compare(data, item) === 0) {\n        return data;\n      }\n    }\n  }\n  has<U extends NonNullable<T>>(data: Opt<U>, item: U): boolean {\n    return this.findIndex(data, item) !== -1;\n  }\n  findIndex<U extends NonNullable<T>>(data: Opt<U>, item: U) {\n    if (data !== undefined) {\n      if (Array.isArray(data)) {\n        return findIndexSorted(this.compare, data, item);\n      } else if (this.compare(data, item) === 0) {\n        return 0;\n      }\n    }\n\n    return -1;\n  }\n  groupBy<U extends NonNullable<T>, K>(\n    data: Opt<U>,\n    cb: (item: U) => K,\n  ): Map<K, OneMany<U>> {\n    const group = new Map<K, OneMany<U>>();\n    if (data !== undefined) {\n      if (Array.isArray(data)) {\n        for (const item of data) {\n          const key = cb(item);\n          group.set(key, this.union(group.get(key), item) as OneMany<U>);\n        }\n      } else {\n        group.set(cb(data), data);\n      }\n    }\n    return group;\n  }\n  isSuperset<U extends NonNullable<T>>(superset: Opt<U>, subset: Opt<U>) {\n    if (subset === undefined) {\n      return true;\n    }\n\n    if (!Array.isArray(subset)) {\n      return this.findIndex(superset, subset) !== -1;\n    }\n\n    if (!Array.isArray(superset)) {\n      return false;\n    }\n\n    const subLen = subset.length;\n    const supLen = superset.length;\n    if (subLen > supLen) {\n      return false;\n    }\n\n    for (let i = subLen; i--; ) {\n      const found = findIndexSorted(this.compare, superset, subset[i]);\n      if (found === -1 || supLen - found <= i) return false;\n    }\n\n    return true;\n  }\n}\n\nexport function push<T>(data: Opt<T>, item: T): OneMany<T> {\n  if (data !== undefined) {\n    if (Array.isArray(data)) {\n      data.push(item);\n      return data;\n    }\n\n    return [data, item];\n  }\n\n  return item;\n}\n\nexport function concat<T>(a: Opt<T>, b: Opt<T>): Opt<T> {\n  if (a !== undefined) {\n    if (b !== undefined) {\n      if (Array.isArray(a)) {\n        return a.concat(b) as Many<T>;\n      } else if (Array.isArray(b)) {\n        return [a, ...b];\n      } else {\n        return [a, b];\n      }\n    }\n    return a;\n  }\n  return b;\n}\n\nexport function size<T>(data: Opt<T>) {\n  return data !== undefined ? (Array.isArray(data) ? data.length : 1) : 0;\n}\n\nexport function filter<T>(data: Opt<T>, cb: (item: T) => boolean): Opt<T> {\n  if (data !== undefined) {\n    if (Array.isArray(data)) {\n      const len = data.length;\n      let result: Opt<T>;\n      let i = 0;\n\n      while (i < len) {\n        let item = data[i++];\n\n        if (cb(item)) {\n          result = item;\n\n          while (i < len) {\n            item = data[i++];\n\n            if (cb(item)) {\n              result = [result, item];\n\n              while (i < len) {\n                item = data[i++];\n\n                if (cb(item)) {\n                  result.push(item);\n                }\n              }\n\n              return result;\n            }\n          }\n\n          return result;\n        }\n      }\n\n      return result;\n    }\n\n    if (cb(data)) {\n      return data;\n    }\n  }\n}\n\nexport function forEach<T>(\n  data: Opt<T>,\n  cb: (item: T, index: number) => void,\n): void {\n  if (data !== undefined) {\n    if (Array.isArray(data)) {\n      let i = 0;\n      for (const item of data) {\n        cb(item, i++);\n      }\n    } else {\n      cb(data, 0);\n    }\n  }\n}\n\nexport function fromIter<T>(data: Iterable<T>) {\n  let one: T | undefined;\n  let many: Many<T> | undefined;\n  for (const item of data) {\n    if (many) {\n      many.push(item);\n    } else if (one) {\n      many = [one, item];\n    } else {\n      one = item;\n    }\n  }\n\n  return many || one;\n}\n\nexport function* toIter<T>(data: Opt<T>): Iterable<T> {\n  if (data !== undefined) {\n    if (Array.isArray(data)) {\n      yield* data;\n    } else {\n      yield data;\n    }\n  }\n}\n\nexport function includes<T>(data: Opt<T>, item: T): boolean {\n  return data !== undefined\n    ? Array.isArray(data)\n      ? data.includes(item)\n      : data === item\n    : false;\n}\n\nexport function find<T>(\n  data: Opt<T>,\n  cb: (item: T, index: number) => boolean,\n): Opt<T> {\n  if (data !== undefined) {\n    if (Array.isArray(data)) {\n      return data.find(cb);\n    }\n\n    if (cb(data, 0)) {\n      return data;\n    }\n  }\n}\n\nexport function some<T>(\n  data: Opt<T>,\n  cb: (item: T, index: number) => boolean,\n): boolean {\n  return data !== undefined\n    ? Array.isArray(data)\n      ? data.some(cb)\n      : !!cb(data, 0)\n    : false;\n}\n\nexport function toArray<T, R>(\n  data: Opt<T>,\n  cb: (item: T, index: number) => R,\n): R[] {\n  return data !== undefined\n    ? Array.isArray(data)\n      ? data.map(cb)\n      : [cb(data, 0)]\n    : [];\n}\n\nexport function mapToString<T>(\n  data: Opt<T>,\n  sep: string,\n  cb: (item: T, index: number) => string,\n): string {\n  if (data !== undefined) {\n    if (Array.isArray(data)) {\n      let str = \"\";\n      let curSep = \"\";\n      for (let i = 0; i < data.length; i++) {\n        str += curSep + cb(data[i], i);\n        curSep = sep;\n      }\n      return str;\n    }\n\n    return cb(data, 0);\n  }\n  return \"\";\n}\n\nexport function filterMap<T, R>(\n  data: Opt<T>,\n  cb: (item: T) => undefined | R,\n): Opt<R> {\n  if (data !== undefined) {\n    if (Array.isArray(data)) {\n      const len = data.length;\n      let result: Opt<R>;\n      let i = 0;\n\n      while (i < len) {\n        let item = cb(data[i++]);\n\n        if (item !== undefined) {\n          result = item;\n\n          while (i < len) {\n            item = cb(data[i++]);\n\n            if (item !== undefined) {\n              result = [result, item];\n\n              while (i < len) {\n                item = cb(data[i++]);\n\n                if (item !== undefined) {\n                  result.push(item);\n                }\n              }\n\n              return result;\n            }\n          }\n\n          return result;\n        }\n      }\n\n      return result;\n    }\n\n    return cb(data);\n  }\n}\n\nexport function findSorted<T>(\n  compare: Compare<T>,\n  data: T[],\n  item: T,\n): T | undefined {\n  let max = data.length;\n  let pos = 0;\n\n  while (pos < max) {\n    const mid = (pos + max) >>> 1;\n    const cur = data[mid];\n    const compareResult = compare(cur, item);\n    if (compareResult === 0) return cur;\n    if (compareResult > 0) max = mid;\n    else pos = mid + 1;\n  }\n}\n\nexport function findIndexSorted<T>(\n  compare: Compare<T>,\n  data: T[],\n  item: T,\n): number {\n  let max = data.length;\n  let pos = 0;\n\n  while (pos < max) {\n    const mid = (pos + max) >>> 1;\n    const compareResult = compare(data[mid], item);\n    if (compareResult === 0) return mid;\n    if (compareResult > 0) max = mid;\n    else pos = mid + 1;\n  }\n\n  return -1;\n}\n\nexport function addSorted<T, U extends T[]>(\n  compare: Compare<T>,\n  data: U,\n  item: T,\n): U {\n  const len = data.length;\n  let max = len;\n  let pos = 0;\n\n  while (pos < max) {\n    const mid = (pos + max) >>> 1;\n    const compareResult = compare(data[mid], item);\n    if (compareResult === 0) return data;\n    if (compareResult > 0) max = mid;\n    else pos = mid + 1;\n  }\n\n  const result = new Array(len + 1) as U;\n  for (let i = 0; i < pos; i++) {\n    result[i] = data[i];\n  }\n\n  let cur = item;\n  while (pos < len) {\n    const next = cur;\n    cur = data[pos];\n    result[pos++] = next;\n  }\n\n  result[len] = cur;\n\n  return result;\n}\n\nfunction unionSortedRepeatable<T>(\n  compare: Compare<T>,\n  a: Many<T>,\n  b: Many<T>,\n): Many<T> {\n  const aLen = a.length;\n  const bLen = b.length;\n  let aIndex = 0;\n  let bIndex = 0;\n\n  const result = [] as unknown as Many<T>;\n\n  while (aIndex < aLen && bIndex < bLen) {\n    const aValue = a[aIndex];\n    const bValue = b[bIndex];\n    const delta = compare(aValue, bValue);\n    if (delta === 0) {\n      aIndex++;\n      bIndex++;\n      result.push(aValue);\n    } else if (delta < 0) {\n      aIndex++;\n      result.push(aValue);\n    } else {\n      bIndex++;\n      result.push(bValue);\n    }\n  }\n\n  if (aLen === bLen && aIndex === aLen) {\n    // If the arrays are the same length and we consumed all of `a` then the data\n    // is the same and we return `a` the original array.\n    return a;\n  }\n\n  while (aIndex < aLen) {\n    result.push(a[aIndex++]);\n  }\n\n  while (bIndex < bLen) {\n    result.push(b[bIndex++]);\n  }\n\n  return result;\n}\n\nfunction joinRepeatable<T>(compare: Compare<T>, a: T, b: T): OneMany<T> {\n  const compareResult = compare(a, b);\n  return compareResult === 0 ? a : compareResult < 0 ? [a, b] : [b, a];\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/plugin-hooks.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport type {\n  EnterExitPlugin,\n  FunctionPlugin,\n  ModulePlugin,\n  Plugin,\n} from \"@marko/compiler/babel-utils\";\n\nexport function enter<T extends t.Node>(\n  modulePlugin: Plugin | void,\n  path: t.NodePath<T>,\n) {\n  if (!modulePlugin) {\n    return false;\n  }\n\n  const { node } = path;\n  const plugin = isModulePlugin(modulePlugin)\n    ? modulePlugin.default\n    : modulePlugin;\n\n  if (isFunctionPlugin(plugin)) {\n    plugin(path, t);\n  } else if (plugin.enter) {\n    plugin.enter(path, t);\n  }\n\n  return node !== path.node;\n}\n\nexport function exit<T extends t.Node>(\n  modulePlugin: Plugin | void,\n  path: t.NodePath<T>,\n) {\n  if (!modulePlugin) {\n    return false;\n  }\n\n  const { node } = path;\n  const plugin = isModulePlugin(modulePlugin)\n    ? modulePlugin.default\n    : modulePlugin;\n\n  if (!isFunctionPlugin(plugin) && plugin.exit) {\n    plugin.exit(path, t);\n  }\n\n  return node !== path.node;\n}\n\nfunction isModulePlugin(plugin: Plugin): plugin is ModulePlugin {\n  return Boolean((plugin as ModulePlugin).default);\n}\n\nfunction isFunctionPlugin(\n  plugin: EnterExitPlugin | FunctionPlugin,\n): plugin is FunctionPlugin {\n  return typeof plugin === \"function\";\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/references.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport { getProgram } from \"@marko/compiler/babel-utils\";\nimport { optimize } from \"@marko/compiler/config\";\n\nimport { decodeAccessor } from \"../../common/helpers\";\nimport { toAccess } from \"../../html/serializer\";\nimport { finalizeFunctionRegistry } from \"../visitors/function\";\nimport { scopeIdentifier } from \"../visitors/program\";\nimport { forEachIdentifierPath } from \"./for-each-identifier\";\nimport { generateUid } from \"./generate-uid\";\nimport { getAccessorPrefix } from \"./get-accessor-char\";\nimport { getExprRoot, getFnParent, getFnRoot, getMarkoRoot } from \"./get-root\";\nimport { isEventOrChangeHandler } from \"./is-event-or-change-handler\";\nimport isInvokedFunction from \"./is-invoked-function\";\nimport { finalizeKnownTags } from \"./known-tag\";\nimport { isOptimize, isOutputDOM } from \"./marko-config\";\nimport {\n  addSorted,\n  concat,\n  filter,\n  find,\n  findSorted,\n  forEach,\n  includes,\n  type Many,\n  mapToString,\n  type OneMany,\n  type Opt,\n  push,\n  Sorted,\n} from \"./optional\";\nimport { callRuntime } from \"./runtime\";\nimport { createScopeReadExpression, getScopeExpression } from \"./scope-read\";\nimport {\n  finalizeParamSerializeReasonGroups,\n  forEachSection,\n  forEachSectionReverse,\n  getCommonSection,\n  getDirectClosures,\n  getOrCreateSection,\n  getSectionForBody,\n  getSectionRegisterReasons,\n  isDynamicClosure,\n  isSameOrChildSection,\n  type Section,\n  sectionUtil,\n} from \"./sections\";\nimport {\n  addOwnerSerializeReason,\n  addSerializeExpr,\n  addSerializeReason,\n  applySerializeExprs,\n  finalizeSerializeReason,\n  getSerializeReason,\n  getSerializeSourcesForExpr,\n  getSerializeSourcesForRef,\n  isForceSerialized,\n  mergeSerializeReasons,\n  type SerializeReason,\n} from \"./serialize-reasons\";\nimport { finalizeTagDownstreams } from \"./set-tag-sections-downstream\";\nimport {\n  getBindingGetterIdentifier,\n  getSignalValueIdentifier,\n  type Signal,\n} from \"./signals\";\nimport { createProgramState } from \"./state\";\nimport { toMemberExpression } from \"./to-property-name\";\nimport withPreviousLocation from \"./with-previous-location\";\n\nconst kIsInvoked = Symbol(\"hoist is invoked\");\nexport const kBranchSerializeReason = Symbol(\"branch serialize reason\");\nexport type Aliases = undefined | Binding | { [property: string]: Aliases };\n\nexport enum BindingType {\n  dom,\n  let,\n  input,\n  param,\n  local,\n  derived,\n  constant,\n}\n\nexport interface Sources {\n  state: Opt<Binding>;\n  param: Opt<InputBinding | ParamBinding>;\n}\n\nexport interface Binding {\n  id: number;\n  name: string;\n  originalName: string | undefined;\n  type: BindingType;\n  loc: t.SourceLocation | null;\n  section: Section;\n  closureSections: Opt<Section>;\n  assignmentSections: Opt<Section>;\n  sources: undefined | Sources;\n  reads: Set<ReferencedExtra>;\n  aliases: Set<Binding>;\n  hoists: Opt<Section>;\n  getters: Map<Getter[\"hoisted\"], boolean>;\n  property: string | undefined;\n  propertyAliases: Map<string, Binding>;\n  excludeProperties: Opt<string>;\n  upstreamAlias: Binding | undefined;\n  scopeOffset: Binding | undefined;\n  scopeAccessor: string | undefined;\n  export: string | undefined;\n  declared: boolean;\n  nullable: boolean;\n  pruned: boolean | undefined;\n}\n\nexport interface InputBinding extends Binding {\n  type: BindingType.input;\n}\n\nexport interface ParamBinding extends Binding {\n  type: BindingType.param;\n}\n\nexport type ReferencedBindings = Opt<Binding>;\nexport type Intersection = Many<Binding>;\n\ninterface ReferencedFunctionExtra extends t.FunctionExtra, ReferencedExtra {}\n\nexport interface Getter {\n  hoisted: Section | false;\n  invoked: boolean;\n}\n\ninterface Read {\n  binding: Binding;\n  extra: t.NodeExtra;\n  ownVar: boolean;\n  getter: Getter | undefined;\n}\n\ninterface ExtraRead {\n  binding: Binding;\n  props: Opt<string>;\n  ownVar: boolean;\n  getter: Getter | undefined;\n}\n\ndeclare module \"@marko/compiler/dist/types\" {\n  export interface NodeExtra {\n    section?: Section;\n    referencedBindings?: ReferencedBindings;\n    constantBindings?: ReferencedBindings;\n    hoistedBindings?: ReferencedBindings;\n    downstream?: Opt<Binding>;\n    binding?: Binding;\n    assignment?: Binding;\n    assignmentTo?: Binding;\n    read?: ExtraRead;\n    pruned?: true;\n    isEffect?: true;\n    spreadFrom?: Binding;\n    [kIsInvoked]?: true;\n  }\n\n  export interface FunctionExtra {\n    referencesScope?: boolean;\n    referencedBindingsInFunction?: ReferencedBindings;\n    constantBindingsInFunction?: ReferencedBindings;\n    hoistedBindingsInFunction?: ReferencedBindings;\n    name?: string;\n    registerId?: string;\n    registerReason?: SerializeReason;\n  }\n\n  export interface ArrowFunctionExpressionExtra extends FunctionExtra {}\n  export interface FunctionDeclarationExtra extends FunctionExtra {}\n  export interface FunctionExpressionExtra extends FunctionExtra {}\n}\n\nconst [getBindings] = createProgramState(() => new Set<Binding>());\nconst [getNextBindingId, setNextBindingId] = createProgramState(() => 0);\nexport function createBinding(\n  name: string,\n  type: Binding[\"type\"],\n  refSection: Section,\n  upstreamAlias?: Binding[\"upstreamAlias\"],\n  property?: string,\n  excludeProperties?: Opt<string>,\n  loc: t.SourceLocation | null = null,\n  refDeclared = false,\n): Binding {\n  const id = getNextBindingId();\n  const section = upstreamAlias ? upstreamAlias.section : refSection;\n  const sameSection = refSection === section;\n  const declared = sameSection && refDeclared;\n  const binding: Binding = {\n    id,\n    name,\n    originalName: undefined,\n    type,\n    loc,\n    section,\n    property,\n    declared,\n    closureSections: undefined,\n    assignmentSections: undefined,\n    excludeProperties,\n    sources: undefined,\n    reads: new Set(),\n    aliases: new Set(),\n    hoists: undefined,\n    getters: new Map(),\n    propertyAliases: new Map(),\n    upstreamAlias,\n    scopeOffset: undefined,\n    scopeAccessor: undefined,\n    export: undefined,\n    nullable: !sameSection || excludeProperties === undefined,\n    pruned: undefined,\n  };\n\n  if (property) {\n    if (declared) upstreamAlias!.nullable = false;\n    // TODO: should prefer declared properties as alias roots.\n    const propBinding = upstreamAlias!.propertyAliases.get(property);\n    if (propBinding) {\n      binding.property = undefined;\n      binding.upstreamAlias = propBinding;\n      propBinding.aliases.add(binding);\n    } else {\n      // TODO: check if default is used, if so an intermediate binding is needed\n      upstreamAlias!.propertyAliases.set(property, binding);\n    }\n  } else if (upstreamAlias) {\n    upstreamAlias.aliases.add(binding);\n  }\n\n  setNextBindingId(id + 1);\n  getBindings().add(binding);\n  return binding;\n}\n\nexport function getOrCreatePropertyAlias(binding: Binding, property: string) {\n  return (\n    binding.propertyAliases.get(property) ||\n    createBinding(\n      `${binding.name}_${property.replace(/[^a-zA-Z0-9_$]/g, \"_\")}`,\n      binding.type,\n      binding.section,\n      binding,\n      property,\n    )\n  );\n}\n\nexport function trackDomVarReferences(\n  tag: t.NodePath<t.MarkoTag>,\n  binding: Binding,\n) {\n  const tagVar = tag.node.var;\n  if (!tagVar) {\n    return;\n  }\n  if (!t.isIdentifier(tagVar)) {\n    throw tag\n      .get(\"var\")\n      .buildCodeFrameError(\n        \"Tag variables on native elements cannot be destructured.\",\n      );\n  }\n\n  const babelBinding = tag.scope.getBinding(tagVar.name)!;\n  const section = getOrCreateSection(tag);\n\n  binding.originalName = tagVar.name;\n\n  if (babelBinding.constantViolations.length) {\n    for (const ref of babelBinding.constantViolations) {\n      throw ref.type === \"MarkoTag\"\n        ? ref\n            .get(\"var\")\n            .buildCodeFrameError(\n              `Duplicate declaration ${JSON.stringify(binding.name)}`,\n            )\n        : ref.buildCodeFrameError(\n            \"Tag variables on native elements cannot be assigned to.\",\n          );\n    }\n  }\n\n  for (const ref of babelBinding.referencePaths as t.NodePath<t.Identifier>[]) {\n    const refSection = getOrCreateSection(ref);\n    const invoked = isInvokedFunction(ref);\n    const hoisted = isReferenceHoisted(babelBinding.path, ref)\n      ? getCommonSection(refSection, binding.section)\n      : false;\n\n    setReferencesScope(ref);\n    addReadToExpression(\n      ref,\n      binding,\n      !invoked || (hoisted && hoisted !== binding.section)\n        ? {\n            hoisted,\n            invoked,\n          }\n        : undefined,\n    );\n\n    if (refSection !== binding.section) {\n      setReadsOwner(refSection, section);\n      addOwnerSerializeReason(refSection, section, true);\n    }\n  }\n\n  return binding;\n}\n\nexport function trackVarReferences(\n  tag: t.NodePath<t.MarkoTag>,\n  type: BindingType,\n  upstreamAlias?: Binding[\"upstreamAlias\"],\n) {\n  const tagVar = tag.node.var;\n  if (tagVar) {\n    const section = getOrCreateSection(tag);\n    let canonicalUpstreamAlias =\n      upstreamAlias && getCanonicalBinding(upstreamAlias);\n    if (canonicalUpstreamAlias) {\n      const { excludeProperties } = canonicalUpstreamAlias;\n      if (excludeProperties !== undefined) {\n        canonicalUpstreamAlias = canonicalUpstreamAlias.upstreamAlias!;\n      }\n      createBindingsAndTrackReferences(\n        tagVar,\n        canonicalUpstreamAlias.type,\n        tag.scope,\n        section,\n        canonicalUpstreamAlias,\n        undefined,\n        excludeProperties,\n      );\n      return canonicalUpstreamAlias;\n    }\n\n    createBindingsAndTrackReferences(\n      tagVar,\n      type,\n      tag.scope,\n      section,\n      undefined,\n      undefined,\n      undefined,\n    );\n    return tagVar.extra?.binding;\n  }\n}\n\nexport function trackParamsReferences(\n  body: t.NodePath<t.MarkoTagBody | t.Program>,\n  type: BindingType,\n) {\n  const params = body.node.params!;\n  if (body.node.body.length && params.length) {\n    const section = getOrCreateSection(body);\n    const paramsBinding = ((body.node.extra ??= {}).binding = createBinding(\n      generateUid(\"params\"),\n      type,\n      section,\n      undefined,\n      undefined,\n      undefined,\n      params[0].loc,\n    ));\n\n    const bodySection = getSectionForBody(body);\n    if (bodySection) {\n      bodySection.params = paramsBinding as typeof bodySection.params;\n    }\n\n    for (let i = 0; i < params.length; i++) {\n      const param = params[i];\n      if (param.type === \"RestElement\") {\n        createBindingsAndTrackReferences(\n          param.argument,\n          type,\n          body.scope,\n          section,\n          paramsBinding,\n          undefined,\n          i > 0 ? addNumericPropertiesUntil(undefined, i - 1) : undefined,\n        );\n      } else if (t.isLVal(param)) {\n        createBindingsAndTrackReferences(\n          param,\n          type,\n          body.scope,\n          section,\n          paramsBinding,\n          i + \"\",\n          undefined,\n        );\n      }\n    }\n\n    return paramsBinding;\n  }\n}\n\nfunction getMarkoRootAsTag(path: t.NodePath) {\n  const tag = path.isMarkoTag() ? path : getMarkoRoot(path)?.parentPath;\n  if (tag?.isMarkoTag()) {\n    return tag;\n  }\n}\n\nexport function isReferenceInOwnBody(\n  bindingPath: t.NodePath,\n  reference: t.NodePath,\n) {\n  const tag = getMarkoRootAsTag(bindingPath);\n  if (!tag) {\n    return false;\n  }\n  const body = tag.get(\"body\");\n\n  let cur: t.NodePath | null = reference;\n  while (cur) {\n    if (cur === body) {\n      return true;\n    }\n    cur = cur.parentPath;\n  }\n\n  return false;\n}\n\nexport function isReferenceHoisted(\n  bindingPath: t.NodePath,\n  reference: t.NodePath,\n) {\n  const tag = getMarkoRootAsTag(bindingPath);\n  if (!tag) {\n    return false;\n  }\n  const body = tag.parentPath;\n\n  let cur: t.NodePath | null = reference;\n  while (cur) {\n    if (cur.parentPath === body) {\n      return +tag.key! > +cur.key!;\n    }\n    cur = cur.parentPath;\n  }\n\n  return true;\n}\n\nfunction trackReferencesForBinding(babelBinding: t.Binding, binding: Binding) {\n  const { referencePaths, constantViolations } = babelBinding;\n\n  for (const ref of referencePaths as t.NodePath<t.Identifier>[]) {\n    const refSection = getOrCreateSection(ref);\n    const markoRoot = getMarkoRoot(ref);\n\n    if (\n      markoRoot?.type === \"MarkoAttribute\" &&\n      markoRoot.parentPath === babelBinding.path\n    ) {\n      throw ref.buildCodeFrameError(\n        `Tag variable circular references are not supported.`,\n      );\n    } else if (isReferenceHoisted(babelBinding.path, ref)) {\n      const invoked = isInvokedFunction(ref);\n      if (invoked) {\n        setReferencesScope(ref);\n      }\n      addReadToExpression(ref, binding, {\n        hoisted: getCommonSection(refSection, binding.section),\n        invoked,\n      });\n    } else if (\n      binding.type !== BindingType.local ||\n      refSection !== binding.section\n    ) {\n      trackReference(ref, binding);\n    }\n  }\n\n  for (const ref of constantViolations) {\n    if (ref.type === \"MarkoTag\") {\n      throw ref\n        .get(\"var\")\n        .buildCodeFrameError(\n          `Duplicate declaration ${JSON.stringify(binding.name)}`,\n        );\n    }\n\n    if (isReferenceHoisted(babelBinding.path, ref)) {\n      throw ref.buildCodeFrameError(\"Cannot assign to hoisted tag variable.\");\n    }\n\n    if (ref.isUpdateExpression()) {\n      trackAssignment(ref.get(\"argument\"), binding);\n    } else if (ref.isAssignmentExpression()) {\n      trackAssignment(ref.get(\"left\"), binding);\n\n      if (ref.node.operator !== \"=\") {\n        /*\n         * https://github.com/babel/babel/issues/11313\n         * We need this so we can handle `+=` and friends\n         */\n        const left = ref.get(\"left\");\n        if (left.isIdentifier()) {\n          trackReference(left, binding);\n        }\n      }\n    }\n  }\n}\n\nfunction trackAssignment(\n  assignment: t.NodePath<\n    t.AssignmentExpression[\"left\"] | t.UpdateExpression[\"argument\"]\n  >,\n  binding: Binding,\n) {\n  const fnParent = getFnParent(assignment);\n  if (!fnParent) {\n    throw assignment.buildCodeFrameError(\n      `Assignments to a tag ${binding.type === BindingType.param ? \"parameter\" : \"variable\"} must be within a script or function.`,\n    );\n  }\n\n  const fnRoot = getFnRoot(fnParent);\n  const fnExtra =\n    fnRoot && ((fnRoot.node.extra ??= {}) as ReferencedFunctionExtra);\n  const section = getOrCreateSection(assignment);\n  setReferencesScope(assignment);\n  forEachIdentifierPath(assignment, (id) => {\n    if (id.node.name === binding.name) {\n      const idExtra = (id.node.extra ??= {}) as AssignedBindingExtra;\n      idExtra.assignment = binding;\n      idExtra.section = section;\n      binding.assignmentSections = sectionUtil.add(\n        binding.assignmentSections,\n        section,\n      );\n\n      if (fnExtra) {\n        idExtra.assignmentFunction = fnExtra;\n        fnExtra.section = idExtra.section = section;\n      }\n\n      if (binding.upstreamAlias && binding.property !== undefined) {\n        const changePropName = binding.property + \"Change\";\n        const changeBinding =\n          binding.upstreamAlias.propertyAliases.get(changePropName) ||\n          createBinding(\n            generateUid(changePropName),\n            binding.type,\n            binding.section,\n            binding.upstreamAlias,\n            changePropName,\n            undefined,\n            id.node.loc,\n            true,\n          );\n        idExtra.assignmentTo = changeBinding;\n        changeBinding.pruned = false;\n        addReadToExpression(id, changeBinding, undefined);\n      }\n    }\n  });\n}\n\nexport function setReferencesScope(path: t.NodePath<any>) {\n  const fnRoot = getFnRoot(path);\n  if (fnRoot) {\n    (fnRoot.node.extra ??= {}).referencesScope = true;\n  }\n}\n\nfunction createBindingsAndTrackReferences(\n  lVal: t.LVal,\n  type: BindingType,\n  scope: t.Scope,\n  section: Section,\n  upstreamAlias: Binding[\"upstreamAlias\"] | undefined,\n  property: string | undefined,\n  excludeProperties: Opt<string>,\n) {\n  switch (lVal.type) {\n    case \"Identifier\":\n      trackReferencesForBinding(\n        scope.getBinding(lVal.name)!,\n        ((lVal.extra ??= {}).binding = createBinding(\n          lVal.name,\n          type,\n          section,\n          upstreamAlias,\n          property,\n          excludeProperties,\n          lVal.loc,\n          true,\n        )),\n      );\n      break;\n    case \"ObjectPattern\": {\n      const patternBinding =\n        (property\n          ? upstreamAlias!.propertyAliases.get(property)\n          : upstreamAlias) ||\n        ((lVal.extra ??= {}).binding = createBinding(\n          generateUid(property || \"pattern\"),\n          type,\n          section,\n          upstreamAlias,\n          property,\n          excludeProperties,\n          lVal.loc,\n        ));\n\n      const hasRest =\n        lVal.properties[lVal.properties.length - 1]?.type === \"RestElement\";\n      for (const prop of lVal.properties) {\n        if (prop.type === \"RestElement\") {\n          createBindingsAndTrackReferences(\n            prop.argument,\n            type,\n            scope,\n            section,\n            patternBinding,\n            undefined,\n            excludeProperties,\n          );\n        } else {\n          let key: string;\n\n          if (prop.key.type === \"Identifier\") {\n            key = prop.key.name;\n          } else if (prop.key.type === \"StringLiteral\") {\n            key = prop.key.value;\n          } else {\n            // TODO: it should be a computed value\n            throw new Error(\"computed keys not supported in object pattern\");\n          }\n\n          if (hasRest) {\n            excludeProperties = propsUtil.add(excludeProperties, key);\n          }\n\n          if (t.isLVal(prop.value)) {\n            createBindingsAndTrackReferences(\n              prop.value,\n              type,\n              scope,\n              section,\n              patternBinding,\n              key,\n              undefined,\n            );\n\n            if (hasRest && prop.value.extra?.binding?.assignmentSections) {\n              excludeProperties = propsUtil.add(\n                excludeProperties,\n                `${key}Change`,\n              );\n            }\n          }\n        }\n      }\n      break;\n    }\n    case \"ArrayPattern\": {\n      const patternBinding =\n        (property\n          ? upstreamAlias!.propertyAliases.get(property)\n          : upstreamAlias) ||\n        ((lVal.extra ??= {}).binding = createBinding(\n          generateUid(property || \"pattern\"),\n          type,\n          section,\n          upstreamAlias,\n          property,\n          excludeProperties,\n          lVal.loc,\n        ));\n\n      let i = -1;\n      for (const element of lVal.elements) {\n        i++;\n        if (element) {\n          if (element.type === \"RestElement\") {\n            excludeProperties =\n              i > 0\n                ? addNumericPropertiesUntil(excludeProperties, i - 1)\n                : undefined;\n            createBindingsAndTrackReferences(\n              element.argument,\n              type,\n              scope,\n              section,\n              patternBinding,\n              property,\n              excludeProperties,\n            );\n          } else if (t.isLVal(element)) {\n            createBindingsAndTrackReferences(\n              element,\n              type,\n              scope,\n              section,\n              patternBinding,\n              `${i}`,\n              undefined,\n            );\n          }\n        }\n      }\n      break;\n    }\n  }\n}\n\nfunction trackReference(\n  referencePath: t.NodePath<t.Identifier>,\n  binding: Binding,\n) {\n  let root:\n    | t.NodePath<t.Identifier>\n    | t.NodePath<t.MemberExpression>\n    | t.NodePath<t.OptionalMemberExpression> = referencePath;\n  let reference = binding;\n\n  while (true) {\n    const { parent } = root;\n    if (!t.isMemberExpression(parent) && !t.isOptionalMemberExpression(parent))\n      break;\n\n    const prop = getMemberExpressionPropString(parent);\n    if (prop === undefined) break;\n\n    if (\n      reference.upstreamAlias &&\n      reference.excludeProperties !== undefined &&\n      !propsUtil.has(reference.excludeProperties, prop)\n    ) {\n      reference = reference.upstreamAlias;\n    }\n\n    if (isInvokedFunction(root.parentPath) && !isEventOrChangeHandler(prop)) {\n      break;\n    }\n\n    root = root.parentPath as\n      | t.NodePath<t.MemberExpression>\n      | t.NodePath<t.OptionalMemberExpression>;\n\n    reference = getOrCreatePropertyAlias(reference, prop);\n  }\n\n  addReadToExpression(root, reference, undefined);\n}\n\nexport function mergeReferences<T extends t.Node>(\n  section: Section,\n  target: T,\n  nodes: (t.Node | undefined)[],\n): NonNullable<T[\"extra\"]> & ReferencedExtra {\n  const targetExtra = (target.extra ??= {}) as ReferencedExtra;\n  const readsByExpression = getReadsByExpression();\n  const fnReadsByExpression = getFunctionReadsByExpression();\n  let reads = readsByExpression.get(targetExtra);\n  let exprFnReads = fnReadsByExpression.get(targetExtra);\n  let { isEffect } = targetExtra;\n\n  for (const node of nodes) {\n    if (!node) continue;\n    const extra = (node.extra ??= {});\n    extra.merged = targetExtra;\n    if (isReferencedExtra(extra)) {\n      const additionalReads = readsByExpression.get(extra);\n      const additionalExprFnReads = fnReadsByExpression.get(extra);\n      isEffect ||= extra.isEffect;\n      if (additionalReads) {\n        forEach(additionalReads, (read) => {\n          read.binding.reads.delete(extra);\n          read.binding.reads.add(targetExtra);\n        });\n\n        reads = concat(reads, additionalReads);\n        readsByExpression.delete(extra);\n      }\n\n      if (additionalExprFnReads) {\n        if (exprFnReads) {\n          for (const [key, value] of additionalExprFnReads) {\n            exprFnReads.set(key, value);\n          }\n        } else {\n          fnReadsByExpression.set(\n            targetExtra,\n            (exprFnReads = new Map(additionalExprFnReads)),\n          );\n        }\n      }\n    } else if (extra?.pruned) {\n      throw new Error(\"Cannot merged a dropped reference.\");\n    }\n  }\n\n  readsByExpression.set(targetExtra, reads);\n  targetExtra.isEffect = isEffect;\n  targetExtra.section = section;\n\n  return targetExtra as NonNullable<T[\"extra\"]> & ReferencedExtra;\n}\n\nexport function compareReferences(\n  a: ReferencedBindings,\n  b: ReferencedBindings,\n) {\n  return a === b\n    ? 0\n    : a\n      ? b\n        ? Array.isArray(a)\n          ? Array.isArray(b)\n            ? compareIntersections(a, b)\n            : -1\n          : Array.isArray(b)\n            ? 1\n            : bindingUtil.compare(a, b)\n        : 1\n      : b\n        ? -1\n        : 0;\n}\n\n/**\n * reference group priority is sorted by number of references,\n * then if needed by reference order.\n */\nfunction compareIntersections(a: Intersection, b: Intersection) {\n  const len = a.length;\n  const lenDelta = len - b.length;\n  if (lenDelta !== 0) {\n    return lenDelta;\n  }\n\n  for (let i = 0; i < len; i++) {\n    const compareResult = bindingUtil.compare(a[i], b[i]);\n    if (compareResult !== 0) {\n      return compareResult;\n    }\n  }\n\n  return 0;\n}\n\nexport function finalizeReferences() {\n  const bindings = getBindings();\n  const readsByExpression = getReadsByExpression();\n  const fnReadsByExpression = getFunctionReadsByExpression();\n  const intersectionsBySection = new Map<Section, Intersection[]>();\n\n  for (const [expr, reads] of readsByExpression) {\n    if (isReferencedExtra(expr)) {\n      const exprBindings = resolveReferencedBindings(\n        expr,\n        reads,\n        intersectionsBySection,\n      );\n      expr.referencedBindings = exprBindings.referencedBindings;\n      expr.constantBindings = exprBindings.constantBindings;\n      expr.hoistedBindings = expr.section.referencedHoists =\n        exprBindings.hoistedBindings;\n\n      if (expr.isEffect) {\n        forEach(exprBindings.referencedBindings, (binding) => {\n          addSerializeReason(binding.section, true, binding);\n        });\n        forEach(exprBindings.constantBindings, (binding) => {\n          addSerializeReason(binding.section, true, binding);\n        });\n      }\n\n      if (exprBindings.allBindings) {\n        const exprFnReads = fnReadsByExpression.get(expr);\n        if (exprFnReads) {\n          for (const [fn, fnReads] of exprFnReads) {\n            const fnBindings =\n              fn === expr\n                ? exprBindings\n                : resolveReferencedBindingsInFunction(\n                    exprBindings.allBindings,\n                    fnReads,\n                  );\n            fn.referencedBindingsInFunction = fnBindings.referencedBindings;\n            fn.constantBindingsInFunction = fnBindings.constantBindings;\n            fn.hoistedBindingsInFunction = fnBindings.hoistedBindings;\n          }\n        }\n      }\n    }\n  }\n\n  for (const binding of bindings) {\n    if (binding.type !== BindingType.dom) {\n      if (pruneBinding(binding)) {\n        bindings.delete(binding);\n      }\n    }\n  }\n\n  forEachSection(finalizeTagDownstreams);\n\n  for (const binding of bindings) {\n    const { name, section } = binding;\n    if (binding.type !== BindingType.dom) {\n      resolveBindingSources(binding);\n\n      forEach(binding.assignmentSections, (assignedSection) => {\n        setReadsOwner(assignedSection, section);\n        addOwnerSerializeReason(assignedSection, section, true);\n      });\n\n      if (find(section.bindings, ({ name }) => name === binding.name)) {\n        binding.name = generateUid(name);\n      }\n    }\n\n    if (binding.hoists) {\n      let highestHoistSection!: Section;\n\n      forEach(binding.hoists, (hoistSection) => {\n        if (\n          !highestHoistSection ||\n          hoistSection.depth < highestHoistSection.depth\n        ) {\n          highestHoistSection = hoistSection;\n        }\n\n        hoistSection.hoistedTo = bindingUtil.add(\n          hoistSection.hoistedTo,\n          binding,\n        );\n\n        addSerializeReason(binding.section, true, binding);\n      });\n\n      binding.section.hoisted = bindingUtil.add(\n        binding.section.hoisted,\n        binding,\n      );\n\n      let currentSection = binding.section.parent;\n      while (currentSection && currentSection !== highestHoistSection) {\n        currentSection.isHoistThrough = true;\n        currentSection = currentSection.parent;\n      }\n    }\n\n    section.bindings = bindingUtil.add(\n      section.bindings,\n      getCanonicalBinding(binding),\n    );\n\n    for (const { isEffect, section } of binding.reads) {\n      if (section.depth > binding.section.depth) {\n        if (binding.type === BindingType.local) {\n          section.referencedLocalClosures = bindingUtil.add(\n            section.referencedLocalClosures,\n            binding,\n          );\n        } else if (binding.type !== BindingType.dom) {\n          const canonicalUpstreamAlias = getCanonicalBinding(binding);\n          canonicalUpstreamAlias.closureSections = sectionUtil.add(\n            canonicalUpstreamAlias.closureSections,\n            section,\n          );\n          section.referencedClosures = bindingUtil.add(\n            section.referencedClosures,\n            canonicalUpstreamAlias,\n          );\n\n          setReadsOwner(section, canonicalUpstreamAlias.section);\n          addOwnerSerializeReason(\n            section,\n            canonicalUpstreamAlias.section,\n            !!isEffect || canonicalUpstreamAlias.sources,\n          );\n        }\n      }\n    }\n  }\n\n  forEachSection((section) => {\n    if (section.isHoistThrough) {\n      addSerializeReason(section, true);\n    }\n\n    forEach(section.referencedHoists, (hoistedBinding) => {\n      setReadsOwner(section, hoistedBinding.section);\n      addOwnerSerializeReason(section, hoistedBinding.section, true);\n    });\n\n    if (\n      section.parent &&\n      section.isBranch &&\n      section.sectionAccessor &&\n      section.upstreamExpression\n    ) {\n      addSerializeReason(\n        section,\n        !!(section.isHoistThrough || section.hoisted) ||\n          getSerializeSourcesForRef(getDirectClosures(section)),\n        kBranchSerializeReason,\n      );\n      addSerializeExpr(\n        section,\n        section.upstreamExpression,\n        kBranchSerializeReason,\n      );\n      addSerializeExpr(\n        section.parent,\n        section.upstreamExpression,\n        section.sectionAccessor.binding,\n      );\n    }\n  });\n\n  forEachSection(applySerializeExprs);\n\n  forEachSection((section) => {\n    const intersections = intersectionsBySection.get(section);\n    if (intersections) {\n      // mark bindings that need to be serialized due to being in an intersection with state\n      for (const intersection of intersections) {\n        const numReferences = intersection.length;\n        // TODO: in some cases we should be able to short circuit this\n        // if we know that the references are already serialized\n        for (let i = 0; i < numReferences - 1; i++) {\n          for (let j = i + 1; j < numReferences; j++) {\n            const binding1 = intersection[i];\n            const binding2 = intersection[j];\n            if (\n              !isForceSerialized(section, binding1) &&\n              !isSupersetSources(binding1, binding2)\n            ) {\n              if (!isSameOrChildSection(section, binding1.section)) {\n                addOwnerSerializeReason(\n                  section,\n                  binding1.section,\n                  mergeSources(binding1.sources, binding2.sources),\n                );\n              }\n\n              addSerializeReason(binding1.section, binding2.sources, binding1);\n            }\n            if (\n              !isForceSerialized(section, binding2) &&\n              !isSupersetSources(binding2, binding1)\n            ) {\n              if (!isSameOrChildSection(section, binding2.section)) {\n                addOwnerSerializeReason(\n                  section,\n                  binding2.section,\n                  mergeSources(binding1.sources, binding2.sources),\n                );\n              }\n              addSerializeReason(binding2.section, binding1.sources, binding2);\n            }\n          }\n        }\n      }\n    }\n  });\n\n  forEachSection((section) => {\n    forEach(section.referencedLocalClosures, (closure) => {\n      // Local closures inherit serialize reasons from the owner section.\n      addSerializeReason(\n        section,\n        getSerializeReason(closure.section, closure),\n        closure,\n      );\n    });\n\n    forEach(section.referencedClosures, (closure) => {\n      // mark bindings that need to be serialized due to being closed over by stateful sections\n      const sourceSection = closure.section;\n      let currentSection = section;\n      let branchesReason: undefined | SerializeReason;\n\n      while (currentSection !== sourceSection) {\n        const upstreamReason = currentSection.downstreamBinding\n          ? getSectionRegisterReasons(currentSection) || undefined\n          : !currentSection.upstreamExpression ||\n            getSerializeSourcesForExpr(currentSection.upstreamExpression);\n        if (upstreamReason === true) {\n          branchesReason = true;\n          break;\n        }\n\n        branchesReason = mergeSerializeReasons(branchesReason, upstreamReason);\n        currentSection = currentSection.parent!;\n      }\n\n      addSerializeReason(sourceSection, branchesReason, closure);\n      addSerializeReason(\n        sourceSection,\n        getSerializeReason(sourceSection, closure),\n      );\n\n      if (isDynamicClosure(section, closure)) {\n        addOwnerSerializeReason(section, sourceSection, branchesReason);\n\n        if (closure.sources) {\n          addSerializeReason(\n            sourceSection,\n            closure.sources,\n            closure,\n            getAccessorPrefix().ClosureScopes,\n          );\n          addSerializeReason(\n            section,\n            closure.sources,\n            closure,\n            getAccessorPrefix().ClosureSignalIndex,\n          );\n        }\n      }\n    });\n  });\n\n  finalizeFunctionRegistry();\n  const referencedExprs = new Set<ReferencedExtra>();\n  for (const binding of bindings) {\n    for (const expr of binding.reads) {\n      referencedExprs.add(expr);\n    }\n  }\n\n  for (const expr of referencedExprs) {\n    const exprFnReads = fnReadsByExpression.get(expr);\n    if (exprFnReads) {\n      for (const fn of exprFnReads.keys()) {\n        if (fn.registerReason) {\n          forEach(fn.referencedBindingsInFunction, (binding) => {\n            addSerializeReason(binding.section, fn.registerReason, binding);\n            if (binding.section !== fn.section) {\n              addOwnerSerializeReason(\n                fn.section,\n                binding.section,\n                fn.registerReason,\n              );\n            }\n          });\n\n          forEach(fn.constantBindingsInFunction, (binding) => {\n            addSerializeReason(binding.section, fn.registerReason, binding);\n            if (binding.section !== fn.section) {\n              addOwnerSerializeReason(\n                fn.section,\n                binding.section,\n                fn.registerReason,\n              );\n            }\n          });\n        }\n      }\n    }\n  }\n\n  forEachSection(finalizeParamSerializeReasonGroups);\n  forEachSectionReverse((section) => {\n    finalizeKnownTags(section);\n    finalizeSerializeReason(section);\n    // TODO: this duplication is needed when a known tag is circular. We should find a better way.\n    finalizeParamSerializeReasonGroups(section);\n  });\n\n  forEachSection((section) => {\n    let intersectionIndex = 0;\n    const intersections = intersectionsBySection.get(section) || [];\n    const { id, bindings } = section;\n    const isOwnedBinding = ({ section }: Binding) => section.id === id;\n    let lastBindingIndex = 0;\n    let intersection: Intersection;\n    forEach(filter(bindings, isOwnedBinding), (binding, bindingIndex) => {\n      binding.id = (lastBindingIndex = bindingIndex) + intersectionIndex;\n      while (\n        intersectionIndex < intersections.length &&\n        (intersection = intersections[intersectionIndex])\n          .filter(isOwnedBinding)\n          .at(-1) === binding\n      ) {\n        intersectionMeta.set(intersection, {\n          id: bindingIndex + ++intersectionIndex,\n          scopeOffset: getMaxOwnSourceOffset(intersection, section),\n        });\n      }\n    });\n\n    while (intersectionIndex < intersections.length) {\n      intersection = intersections[intersectionIndex];\n      intersectionMeta.set(intersection, {\n        id: lastBindingIndex + ++intersectionIndex,\n        scopeOffset: getMaxOwnSourceOffset(intersection, section),\n      });\n    }\n  });\n\n  const programSection = getProgram().node.extra.section!;\n  if (programSection.returnValueExpr) {\n    programSection.returnSerializeReason = getSerializeSourcesForExpr(\n      programSection.returnValueExpr,\n    );\n  }\n\n  readsByExpression.clear();\n  fnReadsByExpression.clear();\n}\n\nfunction getMaxOwnSourceOffset(intersection: Intersection, section: Section) {\n  let scopeOffset: Binding | undefined;\n\n  for (const binding of intersection) {\n    if (binding.section === section && binding.sources) {\n      const trackScopeOffset = (source: Binding) => {\n        if (\n          source.scopeOffset &&\n          (!scopeOffset || scopeOffset.id < source.scopeOffset.id)\n        ) {\n          scopeOffset = source.scopeOffset;\n        }\n      };\n      forEach(binding.sources.state, trackScopeOffset);\n      forEach(binding.sources.param, trackScopeOffset);\n    }\n  }\n\n  return scopeOffset;\n}\n\nexport const intersectionMeta = new WeakMap<\n  Intersection,\n  { id: number; scopeOffset: Binding | undefined }\n>();\n\nexport function setBindingDownstream(\n  binding: Binding,\n  expr: boolean | Opt<t.NodeExtra>,\n) {\n  getBindingValueExprs().set(binding, expr || false);\n  if (expr && expr !== true) {\n    forEach(expr, (expr) => {\n      expr.downstream = bindingUtil.add(expr.downstream, binding);\n    });\n  }\n}\n\nconst [getResolvedSources] = createProgramState(() => new Set<Binding>());\nconst [getBindingValueExprs] = createProgramState(\n  () => new Map<Binding, boolean | Opt<t.NodeExtra>>(),\n);\nfunction resolveBindingSources(binding: Binding) {\n  const resolvedSources = getResolvedSources();\n  if (resolvedSources.has(binding)) return;\n  resolvedSources.add(binding);\n\n  switch (binding.type) {\n    case BindingType.let: {\n      const aliasRoot = getAliasRoot(binding);\n      if (aliasRoot) {\n        resolveBindingSources(aliasRoot);\n        binding.sources = aliasRoot.sources;\n      } else if (binding.assignmentSections) {\n        binding.sources = createSources(binding, undefined);\n      } else {\n        resolveDerivedSources(binding);\n      }\n      return;\n    }\n    case BindingType.input:\n      binding.sources = createSources(\n        undefined,\n        getCanonicalBinding(binding) as InputBinding,\n      );\n      return;\n    case BindingType.param:\n      binding.sources = createSources(\n        undefined,\n        getCanonicalBinding(binding) as ParamBinding,\n      );\n      return;\n  }\n\n  const aliasRoot = getAliasRoot(binding);\n  if (aliasRoot) {\n    if (!resolvedSources.has(aliasRoot)) {\n      resolvedSources.add(aliasRoot);\n      resolveDerivedSources(aliasRoot);\n    }\n\n    binding.sources = aliasRoot.sources;\n  } else {\n    resolveDerivedSources(binding);\n  }\n}\n\nfunction getAliasRoot(binding: Binding) {\n  let alias = binding.upstreamAlias;\n  while (alias) {\n    if (!alias.upstreamAlias) return alias;\n    alias = alias.upstreamAlias;\n  }\n\n  return alias;\n}\n\nfunction resolveDerivedSources(binding: Binding) {\n  const bindingValueExprs = getBindingValueExprs();\n  const exprs = bindingValueExprs.get(binding);\n  bindingValueExprs.delete(binding);\n\n  if (exprs === undefined || exprs === true) {\n    binding.sources = createSources(binding, undefined);\n  } else if (exprs) {\n    const seen = new Set<Binding>();\n    forEach(exprs, (expr) => {\n      if (isReferencedExtra(expr)) {\n        forEach(expr.referencedBindings, (ref) => {\n          if (!seen.has(ref)) {\n            seen.add(ref);\n            resolveBindingSources(ref);\n            binding.sources = mergeSources(binding.sources, ref.sources);\n          }\n        });\n      }\n    });\n  }\n}\n\nexport function createSources(\n  state: Sources[\"state\"],\n  param: Sources[\"param\"],\n): Sources {\n  if (!(state || param)) {\n    throw new Error(\n      \"Cannot create a serialize reason that does not reference state or a param.\",\n    );\n  }\n\n  return { state, param };\n}\n\nexport function compareSources(a: Sources, b: Sources) {\n  let delta: number;\n\n  if (a.param) {\n    if (!b.param) return 1;\n    if ((delta = compareReferences(a.param, b.param))) return delta;\n  } else if (b.param) {\n    return -1;\n  }\n\n  if (a.state) {\n    if (!b.state) return 1;\n    if ((delta = compareReferences(a.state, b.state))) return delta;\n  } else if (b.state) {\n    return -1;\n  }\n\n  return 0;\n}\n\nexport function mergeSources(a: undefined | Sources, b: undefined | Sources) {\n  if (!a) return b;\n  if (!b) return a;\n  if (a.state === b.state && a.param === b.param) return a;\n  return createSources(\n    bindingUtil.union(a.state, b.state),\n    unionParamSources(a.param, b.param),\n  );\n}\n\nfunction unionParamSources(a: Sources[\"param\"], b: Sources[\"param\"]) {\n  const merged = bindingUtil.union(a, b);\n  if (merged && Array.isArray(merged)) {\n    // When merging param sources we filter out\n    // any property aliases that are already a part of the merged set.\n    // Eg if `input` is present, we don't need properties like `input.foo`\n    // even though for params properties are seen as discrete sources.\n    return filter(merged, (binding) => {\n      let alias = binding.upstreamAlias;\n      while (alias) {\n        if (bindingUtil.has(merged, alias)) return false;\n        alias = alias.upstreamAlias;\n      }\n\n      return true;\n    });\n  }\n\n  return merged;\n}\n\nexport const bindingUtil = new Sorted(function compareBindings(\n  a: Binding,\n  b: Binding,\n) {\n  return a === b\n    ? 0\n    : a.section.id - b.section.id ||\n        (a.type !== b.type &&\n        (a.type === BindingType.dom || b.type === BindingType.dom)\n          ? a.type - b.type || a.id - b.id\n          : a.id - b.id);\n});\n\nexport const propsUtil = new Sorted(function compareProps(\n  a: string,\n  b: string,\n) {\n  return a < b ? -1 : a > b ? 1 : 0;\n});\n\nconst [getReadsByExpression] = createProgramState(\n  () => new Map<ReferencedExtra, Opt<Read>>(),\n);\nconst [getFunctionReadsByExpression] = createProgramState(\n  () => new Map<ReferencedExtra, Map<ReferencedFunctionExtra, OneMany<Read>>>(),\n);\n\nexport function addRead(\n  exprExtra: ReferencedExtra,\n  extra: t.NodeExtra,\n  binding: Binding,\n  section: Section,\n  getter: Getter | undefined,\n) {\n  const readsByExpression = getReadsByExpression();\n  const read: Read = { binding, extra, getter, ownVar: false };\n  binding.reads.add(exprExtra);\n  exprExtra.section = section;\n  readsByExpression.set(\n    exprExtra,\n    push(readsByExpression.get(exprExtra), read),\n  );\n  return read;\n}\n\nexport function dropNodes(node: t.Node | t.Node[]) {\n  if (Array.isArray(node)) {\n    for (const item of node) {\n      dropExtra((item.extra ??= {}) as ReferencedExtra);\n    }\n  } else {\n    dropExtra((node.extra ??= {}) as ReferencedExtra);\n  }\n}\n\nfunction dropExtra(exprExtra: ReferencedExtra) {\n  if (exprExtra.merged) {\n    throw new Error(\"Cannot drop a merged reference\");\n  }\n\n  const readsByExpr = getReadsByExpression();\n  const reads = readsByExpr.get(exprExtra);\n  exprExtra.pruned = true;\n  if (reads) {\n    readsByExpr.delete(exprExtra);\n    forEach(reads, (read) => {\n      read.binding.reads.delete(exprExtra);\n    });\n  }\n}\n\nfunction addReadToExpression(\n  root:\n    | t.NodePath<t.Identifier>\n    | t.NodePath<t.MemberExpression>\n    | t.NodePath<t.OptionalMemberExpression>,\n  binding: Binding,\n  getter: Getter | undefined,\n) {\n  const { node } = root;\n  const fnRoot = getFnRoot(root);\n  const exprRoot = getExprRoot(fnRoot || root);\n  const section = getOrCreateSection(exprRoot);\n  const exprExtra = (exprRoot.node.extra ??= { section }) as ReferencedExtra;\n  const read = addRead(\n    exprExtra,\n    (node.extra ??= {}),\n    binding,\n    section,\n    getter,\n  );\n\n  if (!getter && binding.type === BindingType.derived) {\n    const babelBinding = root.scope.getBinding(binding.name);\n    read.ownVar =\n      !!babelBinding &&\n      babelBinding.kind !== \"param\" &&\n      isReferenceInOwnBody(babelBinding.path, root);\n  }\n\n  if (root.parent.type === \"MarkoSpreadAttribute\") {\n    exprExtra.spreadFrom = binding;\n  }\n\n  if (fnRoot) {\n    const fnReadsByExpr = getFunctionReadsByExpression();\n    let exprFnReads = fnReadsByExpr.get(exprExtra);\n    if (!exprFnReads) {\n      fnReadsByExpr.set(exprExtra, (exprFnReads = new Map()));\n    }\n    const fnExtra = (fnRoot.node.extra ??= {}) as ReferencedFunctionExtra;\n    fnExtra.section = section;\n    exprFnReads.set(fnExtra, push(exprFnReads.get(fnExtra), read));\n  }\n}\n\nexport function getCanonicalBinding(binding: Binding) {\n  const alias = binding.upstreamAlias;\n  if (\n    alias &&\n    binding.property === undefined &&\n    binding.excludeProperties === undefined\n  ) {\n    return alias;\n  }\n\n  return binding;\n}\n\nexport function getAllTagReferenceNodes(\n  tag: t.MarkoTag,\n  referenceNodes: t.Node[] = [],\n) {\n  if (tag.arguments) {\n    for (const arg of tag.arguments) {\n      referenceNodes.push(arg);\n    }\n  }\n\n  for (const attr of tag.attributes) {\n    referenceNodes.push(attr.value);\n  }\n\n  for (const child of tag.body.attributeTags\n    ? tag.body.body\n    : tag.attributeTags) {\n    switch (child.type) {\n      case \"MarkoTag\":\n        getAllTagReferenceNodes(child, referenceNodes);\n        break;\n      case \"MarkoScriptlet\":\n        for (const statement of child.body) {\n          referenceNodes.push(statement);\n        }\n        break;\n    }\n  }\n\n  return referenceNodes;\n}\n\nexport function getScopeAccessorLiteral(\n  binding: Binding,\n  encoded?: boolean,\n  includeId?: boolean,\n) {\n  const canonicalBinding = getCanonicalBinding(binding)!;\n  if (canonicalBinding.type === BindingType.constant) {\n    return t.stringLiteral(\n      canonicalBinding.scopeAccessor ?? canonicalBinding.name,\n    );\n  } else if (isOptimize()) {\n    return encoded\n      ? t.numericLiteral(canonicalBinding.id)\n      : t.stringLiteral(decodeAccessor(canonicalBinding.id));\n  } else if (includeId || canonicalBinding.type === BindingType.dom) {\n    return t.stringLiteral(`${canonicalBinding.name}/${canonicalBinding.id}`);\n  }\n  return t.stringLiteral(\n    canonicalBinding.scopeAccessor ?? canonicalBinding.name,\n  );\n}\n\nexport function getScopeAccessor(\n  binding: Binding,\n  encoded?: boolean,\n  includeId?: boolean,\n) {\n  const canonicalBinding = getCanonicalBinding(binding)!;\n  if (canonicalBinding.type === BindingType.constant) {\n    return canonicalBinding.scopeAccessor ?? canonicalBinding.name;\n  } else if (isOptimize()) {\n    return encoded\n      ? canonicalBinding.id + \"\"\n      : decodeAccessor(canonicalBinding.id);\n  } else if (includeId || canonicalBinding.type === BindingType.dom) {\n    return `${canonicalBinding.name}/${canonicalBinding.id}`;\n  }\n  return canonicalBinding.scopeAccessor ?? canonicalBinding.name;\n}\n\nexport function getDebugScopeAccess(binding: Binding) {\n  let root = binding;\n  let access = \"\";\n  while (\n    !(root.loc || root.declared) &&\n    root.upstreamAlias &&\n    root.excludeProperties === undefined\n  ) {\n    if (root.property !== undefined) {\n      access = toAccess(root.property) + access;\n    }\n    root = root.upstreamAlias;\n  }\n\n  return {\n    root,\n    access,\n  };\n}\n\nexport function getDebugName(binding: Binding) {\n  if (binding.type === BindingType.input) {\n    let root = binding;\n    let access = \"\";\n    while (\n      root.upstreamAlias !== root.section.params &&\n      root.excludeProperties === undefined\n    ) {\n      if (root.property !== undefined) {\n        access = toAccess(root.property) + access;\n      }\n      root = root.upstreamAlias as InputBinding;\n    }\n\n    return root.name + access;\n  }\n\n  const { root, access } = getDebugScopeAccess(binding);\n  return root.name + access;\n}\n\nexport function getDebugNames(refs: ReferencedBindings) {\n  return mapToString(refs, \", \", getDebugName);\n}\n\nexport function getSectionInstancesAccessor(section: Section) {\n  return section.sectionAccessor\n    ? section.sectionAccessor.prefix +\n        getScopeAccessor(section.sectionAccessor.binding)\n    : getAccessorPrefix().ClosureScopes + section.id;\n}\n\nexport function getSectionInstancesAccessorLiteral(section: Section) {\n  const accessor = getSectionInstancesAccessor(section);\n  return accessor\n    ? typeof accessor === \"number\"\n      ? t.numericLiteral(accessor)\n      : t.stringLiteral(accessor)\n    : undefined;\n}\n\nexport function getReadReplacement(\n  node: t.Identifier | t.MemberExpression | t.OptionalMemberExpression,\n  signal?: Signal,\n) {\n  const { extra } = node;\n  if (!extra || extra.assignment) return;\n  const { read, binding } = extra;\n\n  if (read) {\n    const readBinding = read.binding;\n    let replacement: t.Expression | undefined;\n\n    if (read.props === undefined) {\n      if (read.getter?.invoked) {\n        return;\n      }\n\n      if (isOutputDOM()) {\n        if (\n          signal?.referencedBindings === readBinding &&\n          !signal.hasSideEffect\n        ) {\n          replacement = getSignalValueIdentifier(signal);\n        } else if (read.getter?.hoisted) {\n          replacement = t.callExpression(\n            getBindingGetterIdentifier(readBinding, read.getter.hoisted),\n            [getScopeExpression(extra.section!, read.getter.hoisted)],\n          );\n        } else if (readBinding.type === BindingType.dom) {\n          if (read.getter) {\n            replacement = t.callExpression(\n              getBindingGetterIdentifier(readBinding, readBinding.section),\n              [getScopeExpression(extra.section!, readBinding.section)],\n            );\n          }\n        } else if (!optimize && read.ownVar) {\n          replacement = callRuntime(\n            \"_assert_init\",\n            extra.section\n              ? getScopeExpression(extra.section, readBinding.section)\n              : scopeIdentifier,\n            getScopeAccessorLiteral(readBinding),\n          );\n        } else {\n          replacement = createScopeReadExpression(readBinding, extra.section);\n        }\n      } else {\n        if (node.type !== \"Identifier\") {\n          replacement = t.identifier(readBinding.name);\n        } else if (read.getter?.hoisted) {\n          replacement = getBindingGetterIdentifier(\n            readBinding,\n            read.getter.hoisted,\n          );\n        } else if (readBinding.type === BindingType.dom) {\n          if (readBinding.getters.has(readBinding.section)) {\n            replacement = getBindingGetterIdentifier(\n              readBinding,\n              readBinding.section,\n            );\n          }\n        } else if (readBinding.name !== node.name) {\n          node.name = readBinding.name;\n        }\n      }\n    } else {\n      const props = read.props\n        ? Array.isArray(read.props)\n          ? read.props.slice()\n          : [read.props]\n        : [];\n      let curNode = node;\n      let curBinding: Binding | undefined = readBinding;\n      let replaceMember:\n        | t.MemberExpression\n        | t.OptionalMemberExpression\n        | undefined;\n      if (isOutputDOM()) {\n        if (\n          signal?.referencedBindings === readBinding &&\n          !signal.hasSideEffect\n        ) {\n          replacement = getSignalValueIdentifier(signal);\n        } else {\n          replacement = createScopeReadExpression(readBinding, extra.section);\n        }\n      } else {\n        replacement = t.identifier(readBinding.name);\n      }\n\n      while (\n        props.length &&\n        (curNode.type === \"MemberExpression\" ||\n          curNode.type === \"OptionalMemberExpression\")\n      ) {\n        const prop = props.pop()!;\n        const memberProp = getMemberExpressionPropString(curNode);\n        if (memberProp !== prop) break;\n        replaceMember = curNode;\n        curNode = curNode.object as\n          | t.Identifier\n          | t.MemberExpression\n          | t.OptionalMemberExpression;\n      }\n\n      for (const prop of props) {\n        if (curBinding) {\n          curBinding = curBinding.propertyAliases.get(prop);\n        }\n        replacement = toMemberExpression(\n          replacement,\n          prop,\n          !!curBinding?.nullable,\n        );\n      }\n\n      if (replaceMember) {\n        if (\n          readBinding.nullable &&\n          replaceMember.object.type !== replacement.type\n        ) {\n          replaceMember.type = \"OptionalMemberExpression\";\n          replaceMember.optional = true;\n        }\n        replaceMember.object = withPreviousLocation(\n          replacement,\n          replaceMember.object,\n        );\n        replacement = undefined;\n      }\n    }\n\n    return replacement && withPreviousLocation(replacement, node);\n  } else if (\n    binding &&\n    node.type == \"Identifier\" &&\n    node.name !== binding.name\n  ) {\n    node.name = binding.name;\n  }\n}\n\nexport function hasNonConstantPropertyAlias(ref: Binding) {\n  for (const alias of ref.propertyAliases.values()) {\n    if (alias.type !== BindingType.constant) {\n      return true;\n    }\n  }\n  return false;\n}\n\nexport function pruneBinding(binding: Binding) {\n  if (binding.pruned !== undefined) {\n    return binding.pruned;\n  }\n\n  for (const read of binding.reads) {\n    let upstream = binding.upstreamAlias;\n    while (upstream && !upstream.reads.has(read)) {\n      upstream = upstream.upstreamAlias;\n    }\n    if (upstream) {\n      binding.reads.delete(read);\n    }\n  }\n\n  let shouldPrune = !binding.reads.size;\n\n  for (const alias of binding.aliases) {\n    if (pruneBinding(alias)) {\n      binding.aliases.delete(alias);\n    } else if (alias.type !== BindingType.constant) {\n      shouldPrune = false;\n    }\n  }\n\n  for (const [key, alias] of binding.propertyAliases) {\n    if (pruneBinding(alias)) {\n      binding.propertyAliases.delete(key);\n    } else if (alias.type !== BindingType.constant) {\n      shouldPrune = false;\n    }\n  }\n\n  binding.pruned = shouldPrune;\n  return shouldPrune;\n}\n\nfunction resolveReferencedBindingsInFunction(\n  refs: OneMany<Binding>,\n  reads: Opt<Read>,\n) {\n  let referencedBindings: ReferencedBindings;\n  let constantBindings: ReferencedBindings;\n  let hoistedBindings: ReferencedBindings;\n\n  if (reads) {\n    if (Array.isArray(reads)) {\n      for (const read of reads) {\n        const { getter, binding } = read;\n        if (getter) {\n          if (getter.hoisted && bindingUtil.find(refs, binding)) {\n            hoistedBindings = bindingUtil.add(hoistedBindings, binding);\n          }\n        } else if (binding.type === BindingType.constant) {\n          if (bindingUtil.find(refs, binding)) {\n            constantBindings = bindingUtil.add(constantBindings, binding);\n          }\n        } else if (binding.type !== BindingType.dom) {\n          referencedBindings = bindingUtil.add(\n            referencedBindings,\n            findClosestReference(read.binding, refs)!,\n          );\n        }\n      }\n    } else {\n      const { getter, binding } = reads;\n      if (getter) {\n        if (getter.hoisted && bindingUtil.find(refs, binding)) {\n          hoistedBindings = binding;\n        }\n      } else if (binding.type === BindingType.constant) {\n        if (bindingUtil.find(refs, binding)) {\n          constantBindings = binding;\n        }\n      } else if (binding.type !== BindingType.dom) {\n        referencedBindings = findClosestReference(binding, refs);\n      }\n    }\n  }\n\n  return { referencedBindings, constantBindings, hoistedBindings };\n}\n\nfunction findClosestReference(\n  from: Binding,\n  refs: OneMany<Binding>,\n): undefined | Binding {\n  if (Array.isArray(refs)) {\n    if (bindingUtil.has(refs, from)) {\n      return from;\n    }\n\n    for (const ref of refs) {\n      const closest = findClosestUpstream(from, ref);\n      if (closest) return closest;\n    }\n  } else {\n    const closest = findClosestUpstream(from, refs);\n    if (closest) return closest;\n  }\n}\n\nfunction findClosestUpstream(from: Binding, to: Binding) {\n  let closest: Binding | undefined = from;\n  do {\n    if (closest === to) {\n      return closest;\n    }\n  } while ((closest = closest.upstreamAlias));\n}\n\nfunction getRootBindings(reads: Many<Read>): OneMany<Binding> {\n  let rootRefs!: OneMany<Binding>;\n  let allBindings!: OneMany<Binding>;\n\n  for (const { binding } of reads) {\n    allBindings = bindingUtil.add(allBindings, binding);\n  }\n\n  for (const { binding } of reads) {\n    let alias = binding.upstreamAlias;\n    while (alias) {\n      if (bindingUtil.has(allBindings, alias)) break;\n      alias = alias.upstreamAlias;\n    }\n\n    if (!alias) {\n      rootRefs = bindingUtil.add(rootRefs, binding);\n    }\n  }\n\n  return rootRefs;\n}\n\nfunction addBindingGetter(binding: Binding, { invoked, hoisted }: Getter) {\n  if (!invoked || !binding.getters.has(hoisted)) {\n    if (hoisted === binding.section) {\n      binding.getters.delete(false);\n    }\n    if (hoisted || !binding.getters.has(binding.section)) {\n      binding.getters.set(hoisted, !invoked);\n    }\n  }\n}\n\nfunction resolveReferencedBindings(\n  expr: { section: Section; isEffect?: boolean },\n  reads: Opt<Read>,\n  intersectionsBySection: Map<Section, Intersection[]>,\n) {\n  let referencedBindings: ReferencedBindings;\n  let constantBindings: ReferencedBindings;\n  let hoistedBindings: ReferencedBindings;\n  let allBindings: ReferencedBindings;\n\n  if (Array.isArray(reads)) {\n    const rootBindings = getRootBindings(reads);\n    for (const read of reads) {\n      let { binding } = read;\n      const { extra, getter } = read;\n\n      if (getter) {\n        extra.section = expr.section;\n        extra.read = createGetterRead(binding, undefined, getter);\n        addBindingGetter(binding, getter);\n        if (getter.hoisted) {\n          binding.hoists = sectionUtil.add(binding.hoists, getter.hoisted);\n          hoistedBindings = bindingUtil.add(hoistedBindings, binding);\n        }\n      } else {\n        if (extra.assignmentTo !== binding) {\n          extra.section = expr.section;\n          ({ binding } = extra.read ??= resolveExpressionReference(\n            rootBindings,\n            binding,\n          ));\n        }\n        if (binding.type === BindingType.constant) {\n          constantBindings = bindingUtil.add(constantBindings, binding);\n        } else if (binding.type !== BindingType.dom) {\n          referencedBindings = bindingUtil.add(referencedBindings, binding);\n        }\n      }\n      allBindings = bindingUtil.add(allBindings, binding);\n    }\n  } else if (reads) {\n    const { binding, extra, getter, ownVar } = reads;\n\n    if (getter) {\n      extra.read = createGetterRead(binding, undefined, getter);\n      addBindingGetter(binding, getter);\n      if (getter.hoisted) {\n        binding.hoists = sectionUtil.add(binding.hoists, getter.hoisted);\n        hoistedBindings = bindingUtil.add(hoistedBindings, binding);\n      }\n    } else {\n      extra.read = createRead(binding, undefined, ownVar);\n      if (binding.type === BindingType.constant) {\n        constantBindings = binding;\n      } else if (binding.type !== BindingType.dom) {\n        referencedBindings = binding;\n      }\n    }\n\n    extra.section = expr.section;\n    allBindings = binding;\n  }\n\n  if (Array.isArray(referencedBindings)) {\n    // Resolve canonical intersection based on the expressions section.\n    // This ensures referential equality between reference binding groups.\n    const intersections = intersectionsBySection.get(expr.section) || [];\n    const intersection = findSorted(\n      compareIntersections,\n      intersections,\n      referencedBindings,\n    );\n    if (intersection) {\n      referencedBindings = intersection;\n    } else {\n      intersectionsBySection.set(\n        expr.section,\n        addSorted(compareIntersections, intersections, referencedBindings),\n      );\n    }\n  }\n\n  if (referencedBindings && constantBindings) {\n    // Resolve canonical intersection based on the expressions section.\n    // This ensures referential equality between reference binding groups.\n    const intersections = intersectionsBySection.get(expr.section) || [];\n    const combined = concat(\n      referencedBindings,\n      constantBindings,\n    ) as Intersection;\n    const intersection = findSorted(\n      compareIntersections,\n      intersections,\n      combined,\n    );\n    if (!intersection) {\n      intersectionsBySection.set(\n        expr.section,\n        addSorted(compareIntersections, intersections, combined),\n      );\n    }\n  }\n\n  return {\n    referencedBindings,\n    constantBindings,\n    hoistedBindings,\n    allBindings,\n  };\n}\n\nfunction resolveExpressionReference(\n  rootBindings: OneMany<Binding>,\n  readBinding: Binding,\n) {\n  const upstreamRoot =\n    readBinding.upstreamAlias &&\n    findClosestReference(readBinding.upstreamAlias, rootBindings);\n  if (!upstreamRoot) {\n    return createRead(readBinding, undefined);\n  }\n\n  let curBinding = readBinding;\n  let props: Opt<string>;\n  while (curBinding !== upstreamRoot) {\n    if (curBinding.property !== undefined) {\n      props = push(props, curBinding.property);\n    }\n\n    curBinding = curBinding.upstreamAlias!;\n  }\n\n  if (Array.isArray(props)) {\n    props.reverse();\n  }\n\n  return createRead(upstreamRoot, props);\n}\n\nfunction isSupersetSources(a: Binding, b: Binding) {\n  if (!b.sources) return true;\n  if (!a.sources) return false;\n  return (\n    bindingUtil.isSuperset(a.sources.state, b.sources.state) &&\n    bindingUtil.isSuperset(a.sources.param, b.sources.param)\n  );\n}\n\nexport function createRead(\n  binding: Binding,\n  props: Opt<string>,\n  ownVar: boolean = false,\n): ExtraRead {\n  return { binding, props, ownVar, getter: undefined };\n}\n\nexport function createGetterRead(\n  binding: Binding,\n  props: Opt<string>,\n  getter: Getter,\n): ExtraRead {\n  return { binding, props, ownVar: false, getter };\n}\n\nfunction getMemberExpressionPropString(\n  expr: t.MemberExpression | t.OptionalMemberExpression,\n) {\n  switch (expr.property.type) {\n    case \"StringLiteral\":\n      return expr.property.value;\n    case \"NumericLiteral\":\n      return \"\" + expr.property.value;\n    case \"Identifier\":\n      if (expr.computed) return;\n      return expr.property.name;\n  }\n}\n\nexport function getObjectPropertyKeyString(\n  expr: t.ObjectProperty | t.ObjectMethod,\n) {\n  switch (expr.key.type) {\n    case \"StringLiteral\":\n      return expr.key.value;\n    case \"NumericLiteral\":\n      return \"\" + expr.key.value;\n    case \"Identifier\":\n      if (expr.computed) return;\n      return expr.key.name;\n  }\n}\n\nexport interface ReferencedExtra extends t.NodeExtra {\n  section: Section;\n}\nexport function isReferencedExtra(\n  extra: t.NodeExtra | undefined,\n): extra is ReferencedExtra {\n  return !!(extra && !extra.pruned && extra.section);\n}\n\nexport interface AssignedBindingExtra extends ReferencedExtra {\n  assignment: Binding;\n  assignmentFunction: ReferencedFunctionExtra;\n}\nexport function isAssignedBindingExtra(\n  extra: t.NodeExtra | undefined,\n): extra is AssignedBindingExtra {\n  return isReferencedExtra(extra) && extra.assignment !== undefined;\n}\n\nexport interface RegisteredFnExtra extends ReferencedExtra, t.FunctionExtra {\n  name: string;\n  registerId: string;\n  registerReason: SerializeReason;\n}\nexport function isRegisteredFnExtra(\n  extra: t.NodeExtra | undefined,\n): extra is RegisteredFnExtra {\n  return isReferencedExtra(extra) && extra.registerId !== undefined;\n}\n\nexport function getCanonicalExtra<T extends t.NodeExtra>(extra: T): T {\n  while (extra.merged) {\n    extra = extra.merged as T;\n  }\n\n  return extra;\n}\n\nconst serializeReasonCache = new WeakMap<\n  t.NodeExtra | Binding,\n  boolean | SerializeReason\n>();\nexport function getAllSerializeReasonsForExtra(\n  extra: t.NodeExtra,\n): undefined | SerializeReason {\n  if (extra.isEffect) return true;\n  let reason = serializeReasonCache.get(extra);\n  if (reason === false) return;\n  if (reason === undefined) {\n    if (extra === getProgram().node.extra?.section!.returnValueExpr) {\n      reason = true;\n    } else {\n      serializeReasonCache.set(extra, false);\n      forEach(extra.downstream, (binding) => {\n        reason = mergeSerializeReasons(\n          reason as SerializeReason,\n          getAllSerializeReasonsForBinding(binding, true),\n        );\n      });\n    }\n\n    if (reason) {\n      serializeReasonCache.set(extra, reason);\n    }\n  }\n\n  return reason;\n}\n\nexport function getAllSerializeReasonsForBinding(\n  binding: Binding,\n  properties?: Opt<string> | true,\n): undefined | SerializeReason {\n  let reason = serializeReasonCache.get(binding);\n\n  if (reason === undefined) {\n    reason = getSerializeReason(binding.section, binding);\n\n    if (reason !== true) {\n      serializeReasonCache.set(binding, reason || false);\n\n      if (properties !== true && binding.upstreamAlias) {\n        reason = mergeSerializeReasons(\n          reason,\n          getAllSerializeReasonsForBinding(\n            binding.upstreamAlias,\n            binding.property,\n          ),\n        );\n      }\n\n      if (reason !== true) {\n        for (const expr of binding.reads) {\n          reason = mergeSerializeReasons(\n            reason,\n            getAllSerializeReasonsForExtra(expr),\n          );\n          if (reason === true) break;\n        }\n\n        if (reason !== true) {\n          for (const alias of binding.aliases) {\n            reason = mergeSerializeReasons(\n              reason,\n              getAllSerializeReasonsForBinding(alias, properties),\n            );\n            if (reason === true) break;\n          }\n        }\n      }\n    }\n\n    if (reason) {\n      serializeReasonCache.set(binding, reason);\n    }\n  }\n\n  if (reason === false) {\n    reason = undefined;\n  }\n\n  if (properties !== undefined) {\n    if (properties === true) {\n      if (reason !== true) {\n        for (const propBinding of binding.propertyAliases.values()) {\n          reason = mergeSerializeReasons(\n            reason,\n            getAllSerializeReasonsForBinding(propBinding, true),\n          );\n          if (reason === true) break;\n        }\n      }\n    } else {\n      let property: string;\n      let rest: Opt<string>;\n\n      if (Array.isArray(properties)) {\n        property = properties[0];\n        rest =\n          properties.length === 2\n            ? properties[1]\n            : (properties.slice(1) as Opt<string>);\n      } else {\n        property = properties;\n      }\n\n      if (includes(binding.excludeProperties, property)) {\n        reason = undefined;\n      } else {\n        const propBinding = binding.propertyAliases.get(property);\n        if (propBinding) {\n          reason = mergeSerializeReasons(\n            reason,\n            getAllSerializeReasonsForBinding(propBinding, rest),\n          );\n        }\n\n        if (reason !== true) {\n          for (const alias of binding.aliases) {\n            const propBinding = alias.propertyAliases.get(property);\n            if (propBinding) {\n              reason = mergeSerializeReasons(\n                reason,\n                getAllSerializeReasonsForBinding(propBinding, rest),\n              );\n              if (reason === true) break;\n            }\n          }\n        }\n      }\n    }\n  }\n\n  return reason;\n}\n\nfunction addNumericPropertiesUntil(props: Opt<string>, len: number) {\n  let result = props;\n  for (let i = len; i--; ) {\n    result = propsUtil.add(result, i + \"\");\n  }\n  return result;\n}\n\nfunction setReadsOwner(from: Section, to: Section) {\n  let cur = from;\n  while (cur !== to && cur.parent) {\n    cur.readsOwner = true;\n    cur = cur.parent;\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/runtime-info.ts",
    "content": "import { name } from \"../../../package.json\";\nexport default {\n  name,\n  taglibId: \"marko-core\",\n};\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/runtime.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport { getFile, importStar } from \"@marko/compiler/babel-utils\";\n\nimport type { Falsy } from \"../../common/types\";\nimport {\n  _attr,\n  _attr_class,\n  _attr_style,\n  _escape,\n  _escape_script,\n  _escape_style,\n  _unescaped,\n} from \"../../html\";\nimport { getMarkoOpts, isOutputDOM, isOutputHTML } from \"./marko-config\";\nimport runtimeInfo from \"./runtime-info\";\nimport { toMemberExpression } from \"./to-property-name\";\n\nexport type DOMRuntimeHelpers = keyof typeof import(\"../../dom\");\nexport type HTMLRuntimeHelpers = keyof typeof import(\"../../html\");\n\nconst pureDOMFunctions = new Set<string>([\n  \"_await_promise\",\n  \"_await_content\",\n  \"_child_setup\",\n  \"_if\",\n  \"_if_closure\",\n  \"_try\",\n  \"_dynamic_tag\",\n  \"_content_closures\",\n  \"_content\",\n  \"_template\",\n  \"_closure\",\n  \"_closure_get\",\n  \"_or\",\n  \"_for_closure\",\n  \"_for_in\",\n  \"_for_of\",\n  \"_for_to\",\n  \"_for_until\",\n  \"_let\",\n  \"_const\",\n] satisfies DOMRuntimeHelpers[]);\n\nexport function importRuntime(name: DOMRuntimeHelpers | HTMLRuntimeHelpers) {\n  const { output } = getMarkoOpts();\n  return toMemberExpression(\n    importStar(getFile(), getRuntimePath(output), \"_\"),\n    name,\n  );\n}\n\nexport function callRuntime(\n  name: DOMRuntimeHelpers | HTMLRuntimeHelpers,\n  ...args: Array<Parameters<typeof t.callExpression>[1][number] | Falsy>\n) {\n  const callExpression = t.callExpression(\n    importRuntime(name),\n    filterArguments(args),\n  );\n  if (isOutputDOM() && pureDOMFunctions.has(name)) {\n    callExpression.leadingComments = [\n      {\n        type: \"CommentBlock\",\n        value: ` @__PURE__ `,\n      } as t.CommentBlock,\n    ];\n  }\n  return callExpression;\n}\n\nexport function getHTMLRuntime() {\n  return {\n    _escape,\n    _unescaped,\n    _attr,\n    _attr_class,\n    _attr_style,\n    _escape_script,\n    _escape_style,\n  };\n}\n\nfunction getRuntimePath(output: string) {\n  const { optimize } = getMarkoOpts();\n  return `${runtimeInfo.name}/${\n    optimize ? \"\" : \"debug/\"\n  }${output === \"html\" ? \"html\" : \"dom\"}`;\n}\n\nfunction filterArguments<A>(args: (A | Falsy)[]) {\n  const filteredArgs = [];\n  for (let i = args.length; i--; ) {\n    const arg = args[i];\n    if (arg || filteredArgs.length) {\n      filteredArgs[i] = arg || t.unaryExpression(\"void\", t.numericLiteral(0));\n    }\n  }\n  return filteredArgs as A[];\n}\n\nexport function getCompatRuntimeFile() {\n  const markoOpts = getMarkoOpts();\n  return `marko/${markoOpts.optimize ? \"dist\" : \"src\"}/runtime/helpers/tags-compat/${\n    isOutputHTML() ? \"html\" : \"dom\"\n  }${markoOpts.optimize ? \"\" : \"-debug\"}.${markoOpts.modules === \"esm\" ? \"mjs\" : \"js\"}`;\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/scope-read.ts",
    "content": "import { types as t } from \"@marko/compiler\";\n\nimport { scopeIdentifier } from \"../visitors/program\";\nimport { getAccessorProp } from \"./get-accessor-char\";\nimport { forEach } from \"./optional\";\nimport {\n  type Binding,\n  BindingType,\n  createRead,\n  getScopeAccessor,\n  type ReferencedBindings,\n} from \"./references\";\nimport type { Section } from \"./sections\";\nimport { isValidPropertyIdentifier, toPropertyName } from \"./to-property-name\";\n\nexport function createScopeReadPattern(\n  section: Section,\n  referencedBindings: ReferencedBindings,\n) {\n  const rootDepth = section.depth;\n  const rootPattern = t.objectPattern([]);\n  let nestedPatterns: t.ObjectPattern[] | undefined;\n  forEach(referencedBindings, (ref) => {\n    const propertyValue = ref.name;\n    // TODO: need a better way to exclude internal references\n    if (!isValidPropertyIdentifier(propertyValue)) return;\n    const propertyKey = getScopeAccessor(ref);\n    const isShorthand = propertyKey === propertyValue;\n    let pattern: t.ObjectPattern = rootPattern;\n    if (ref.section !== section && ref.type !== BindingType.local) {\n      if (!nestedPatterns) nestedPatterns = [rootPattern];\n\n      const relativeDepth = rootDepth - ref.section.depth;\n      let i = nestedPatterns.length;\n      let prev = nestedPatterns[i - 1];\n      for (; i <= relativeDepth; i++) {\n        const nestedPattern = t.objectPattern([]);\n        prev.properties.push(\n          t.objectProperty(\n            t.identifier(getAccessorProp().Owner),\n            nestedPattern,\n          ),\n        );\n        nestedPatterns.push(nestedPattern);\n        prev = nestedPattern;\n      }\n\n      pattern = nestedPatterns[relativeDepth];\n    }\n\n    pattern.properties.push(\n      t.objectProperty(\n        toPropertyName(propertyKey),\n        t.identifier(propertyValue),\n        false,\n        isShorthand,\n      ),\n    );\n  });\n\n  return rootPattern;\n}\n\nexport function getScopeExpression(section: Section, targetSection: Section) {\n  let scope: t.Expression = scopeIdentifier ?? t.identifier(\"undefined\");\n  const diff = section.depth - targetSection.depth;\n  for (let i = 0; i < diff; i++) {\n    scope = t.memberExpression(scope, t.identifier(getAccessorProp().Owner));\n  }\n  if (diff < 0) {\n    // TODO: handle hoisted references\n    throw new Error(\"Unable to find scope for reference.\");\n  }\n  return scope;\n}\n\nexport function createScopeReadExpression(\n  reference: Binding,\n  section = reference.section,\n) {\n  const propName = toPropertyName(getScopeAccessor(reference));\n  const expr = t.memberExpression(\n    reference.type === BindingType.local\n      ? scopeIdentifier\n      : getScopeExpression(section, reference.section),\n    propName,\n    propName.type !== \"Identifier\",\n  );\n\n  if (section === reference.section && reference.type !== BindingType.dom) {\n    const exprExtra = (expr.extra ??= {});\n    exprExtra.read = createRead(reference, undefined);\n    exprExtra.section = section;\n  }\n  return expr;\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/sections.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  getProgram,\n  isAttributeTag,\n  isNativeTag,\n  loadFileForTag,\n} from \"@marko/compiler/babel-utils\";\n\nimport type { AccessorPrefix } from \"../../common/accessor.debug\";\nimport { generateUid, generateUidIdentifier } from \"./generate-uid\";\nimport { isCoreTag, isCoreTagName } from \"./is-core-tag\";\nimport {\n  addSorted,\n  filter,\n  find,\n  findIndexSorted,\n  findSorted,\n  type Opt,\n  Sorted,\n} from \"./optional\";\nimport {\n  type Binding,\n  bindingUtil,\n  compareReferences,\n  getAllSerializeReasonsForBinding,\n  getDebugNames,\n  type InputBinding,\n  type ParamBinding,\n  type ReferencedBindings,\n  type Sources,\n} from \"./references\";\nimport { isReasonDynamic, type SerializeReason } from \"./serialize-reasons\";\nimport { createSectionState } from \"./state\";\nimport analyzeTagNameType, { TagNameType } from \"./tag-name-type\";\n\nexport interface ParamSerializeReasonGroup {\n  id: symbol;\n  reason: NonNullable<Sources[\"param\"]>;\n}\nexport type ParamSerializeReasonGroups = [\n  ParamSerializeReasonGroup,\n  ...ParamSerializeReasonGroup[],\n];\n\nexport enum ContentType {\n  Comment,\n  Dynamic,\n  Placeholder,\n  Tag,\n  Text,\n}\n\nexport interface Section {\n  id: number;\n  name: string;\n  loc: t.SourceLocation | undefined;\n  depth: number;\n  parent: Section | undefined;\n  sectionAccessor: { binding: Binding; prefix: AccessorPrefix } | undefined;\n  params: undefined | ParamBinding | InputBinding;\n  referencedLocalClosures: ReferencedBindings;\n  referencedClosures: ReferencedBindings;\n  referencedHoists: ReferencedBindings;\n  bindings: ReferencedBindings;\n  hoisted: ReferencedBindings;\n  hoistedTo: ReferencedBindings;\n  serializeReason: undefined | SerializeReason;\n  serializeReasons: Map<symbol, SerializeReason>;\n  paramReasonGroups: ParamSerializeReasonGroups | undefined;\n  returnValueExpr: t.NodeExtra | undefined;\n  returnSerializeReason: SerializeReason | undefined;\n  isHoistThrough: true | undefined;\n  upstreamExpression: t.NodeExtra | undefined;\n  downstreamBinding: { binding: Binding; properties: Opt<string> } | undefined;\n  hasAbortSignal: boolean;\n  readsOwner: boolean;\n  isBranch: boolean;\n  content: null | {\n    startType: ContentType;\n    endType: ContentType;\n    singleChild: boolean;\n  };\n}\n\ndeclare module \"@marko/compiler/dist/types\" {\n  export interface ProgramExtra {\n    section?: Section;\n    sections?: Section[];\n  }\n\n  export interface MarkoTagBodyExtra {\n    section?: Section;\n  }\n}\n\nexport const sectionUtil = new Sorted(function compareSections(\n  a: Section,\n  b: Section,\n) {\n  return a.id - b.id;\n});\n\nexport function startSection(\n  path: t.NodePath<t.MarkoTagBody | t.Program>,\n): Section | undefined {\n  const extra = (path.node.extra ??= {});\n  let section = extra.section;\n\n  if (!section && (path.type === \"Program\" || path.get(\"body\").length)) {\n    const parentTag = path.parentPath?.isMarkoTag()\n      ? path.parentPath\n      : undefined;\n    const parentSection = path.parentPath\n      ? getOrCreateSection(path.parentPath)\n      : undefined;\n    const sectionName = parentTag\n      ? generateUid(\n          (isCoreTagName(parentTag, \"define\") &&\n          t.isIdentifier(parentTag.node.var)\n            ? parentTag.node.var.name\n            : parentTag.get(\"name\").toString()) + \"_content\",\n        )\n      : \"\";\n    const programExtra = (path.hub.file.path.node.extra ??= {});\n    const sections = (programExtra.sections ??= []);\n    section = extra.section = {\n      id: sections.length,\n      name: sectionName,\n      loc: parentTag?.node.name.loc || undefined,\n      depth: parentSection ? parentSection.depth + 1 : 0,\n      parent: parentSection,\n      sectionAccessor: undefined,\n      params: undefined,\n      referencedLocalClosures: undefined,\n      referencedClosures: undefined,\n      referencedHoists: undefined,\n      bindings: undefined,\n      hoisted: undefined,\n      hoistedTo: undefined,\n      isHoistThrough: undefined,\n      serializeReason: undefined,\n      serializeReasons: new Map(),\n      paramReasonGroups: undefined,\n      returnValueExpr: undefined,\n      returnSerializeReason: undefined,\n      content: getContentInfo(path),\n      upstreamExpression: undefined,\n      downstreamBinding: undefined,\n      hasAbortSignal: false,\n      readsOwner: false,\n      isBranch: false,\n    };\n    sections.push(section);\n  }\n\n  return section;\n}\n\nexport function getOrCreateSection(path: t.NodePath<any>) {\n  let cur = path;\n\n  while (true) {\n    if (\n      cur.type === \"Program\" ||\n      (cur.type === \"MarkoTagBody\" &&\n        !cur.node.attributeTags &&\n        !isNativeNode(cur.parentPath as t.NodePath<t.MarkoTag>))\n    ) {\n      return startSection(cur)!;\n    }\n\n    cur = cur.parentPath!;\n  }\n}\n\nexport function getSectionForBody(\n  body: t.NodePath<t.MarkoTagBody | t.Program>,\n) {\n  return body.node.extra?.section;\n}\n\nexport function getSection(path: t.NodePath) {\n  let section: Section;\n  let currentPath = path;\n  while ((section = currentPath.node.extra?.section as Section) === undefined) {\n    currentPath = currentPath.parentPath!;\n  }\n\n  return section;\n}\n\nexport const [getScopeIdIdentifier] = createSectionState<t.Identifier>(\n  \"scopeIdIdentifier\",\n  (section) => generateUidIdentifier(`scope${section.id}_id`),\n);\n\nexport const [getSectionParentIsOwner, setSectionParentIsOwner] =\n  createSectionState<boolean>(\"parentIsOwner\", () => false);\n\nconst [_getScopeIdentifier] = createSectionState<t.Identifier>(\n  \"scopeIdentifier\",\n  () => t.identifier(\"undefined\"),\n);\n\nexport const [getBranchRendererArgs, setBranchRendererArgs] =\n  createSectionState<\n    [\n      template?: t.Expression,\n      walks?: t.Expression,\n      setup?: t.Expression,\n      params?: t.Expression,\n    ]\n  >(\"rendererExpression\");\n\nexport const getScopeIdentifier = (\n  section: Section,\n  ignoreDefault?: boolean,\n) => {\n  const scopeId = _getScopeIdentifier(section);\n  if (!ignoreDefault && scopeId.name === \"undefined\") {\n    scopeId.name = generateUid(`scope${section.id}`);\n  }\n  return scopeId;\n};\n\nexport function forEachSection(fn: (section: Section) => void) {\n  const { sections } = getProgram().node.extra;\n  sections?.forEach(fn);\n}\n\nexport function forEachSectionReverse(fn: (section: Section) => void) {\n  const { sections } = getProgram().node.extra;\n  for (let i = sections!.length; i--; ) {\n    fn(sections![i]);\n  }\n}\n\nfunction getContentInfo(path: t.NodePath<t.Program | t.MarkoTagBody>) {\n  const body = path.get(\"body\");\n  const contentInfo: Section[\"content\"] = {\n    startType: null!,\n    endType: null!,\n    singleChild: true,\n  };\n  for (let endIndex = body.length; endIndex--; ) {\n    const endType = getNodeContentType(body[endIndex], \"endType\", contentInfo);\n    if (endType !== null) {\n      contentInfo.endType = endType;\n\n      if (endType === ContentType.Dynamic) {\n        contentInfo.singleChild = false;\n      }\n\n      for (let startIndex = 0; startIndex < endIndex; startIndex++) {\n        const startType = getNodeContentType(body[startIndex], \"startType\");\n        if (startType !== null) {\n          contentInfo.startType = startType;\n          contentInfo.singleChild = false;\n          return contentInfo;\n        }\n      }\n\n      contentInfo.startType = getNodeContentType(body[endIndex], \"startType\")!;\n      return contentInfo;\n    }\n  }\n\n  return null;\n}\n\nexport function getNodeContentType(\n  path: t.NodePath<t.Statement>,\n  extraMember: \"startType\" | \"endType\",\n  contentInfo?: Section[\"content\"],\n) {\n  switch (path.type) {\n    case \"MarkoText\":\n      return ContentType.Text;\n    case \"MarkoPlaceholder\":\n      return ContentType.Placeholder;\n    case \"MarkoScriptlet\":\n    case \"MarkoComment\":\n    case \"ImportDeclaration\":\n    case \"ExportAllDeclaration\":\n    case \"ExportNamedDeclaration\":\n    case \"ExportDefaultDeclaration\":\n      return null;\n    case \"MarkoTag\": {\n      const tag = path as t.NodePath<t.MarkoTag>;\n      if (isCoreTag(tag)) {\n        switch (tag.node.name.value) {\n          case \"html-comment\":\n            return ContentType.Comment;\n          case \"html-script\":\n          case \"html-style\":\n            return ContentType.Tag;\n          case \"for\":\n          case \"if\":\n          case \"await\":\n          case \"try\":\n            return ContentType.Dynamic;\n          default:\n            return null;\n        }\n      } else if (isNativeTag(tag)) {\n        return ContentType.Tag;\n      } else if (isAttributeTag(tag)) {\n        return null;\n      } else if (t.isStringLiteral(tag.node.name)) {\n        const tagSection = loadFileForTag(tag)?.ast.program.extra.section;\n        if (tagSection) {\n          if (tagSection.content) {\n            if (contentInfo && !tagSection.content.singleChild) {\n              if (extraMember === \"endType\") {\n                contentInfo.startType = tagSection.content.startType;\n                contentInfo.singleChild = false;\n              }\n            }\n            return tagSection.content[extraMember];\n          } else {\n            return null;\n          }\n        }\n      }\n    }\n  }\n\n  return ContentType.Dynamic;\n}\n\nexport function getSectionRegisterReasons(section: Section) {\n  if (section.isBranch) return false; // Branches handle wether to register their section/renderer.\n\n  const { downstreamBinding } = section;\n  if (downstreamBinding) {\n    return getAllSerializeReasonsForBinding(\n      downstreamBinding.binding,\n      downstreamBinding.properties,\n    );\n  } else if (downstreamBinding === false) {\n    return false;\n  }\n\n  return true;\n}\n\nexport function isImmediateOwner(section: Section, binding: Binding) {\n  return section.parent?.id === binding.section.id;\n}\n\nexport function isDirectClosure(section: Section, closure: Binding) {\n  return section.isBranch && isImmediateOwner(section, closure);\n}\n\nexport function isDynamicClosure(section: Section, closure: Binding) {\n  return !isDirectClosure(section, closure);\n}\n\nexport function getDynamicClosureIndex(\n  closure: Binding,\n  closureSection: Section,\n) {\n  let index = 0;\n  find(closure.closureSections, (section) => {\n    if (section === closureSection) return true;\n    if (isDynamicClosure(section, closure)) {\n      index++;\n    }\n\n    return false;\n  });\n  return index;\n}\n\nexport function getDirectClosures(section: Section) {\n  if (section.isBranch) {\n    return filter(section.referencedClosures, (closure) =>\n      isImmediateOwner(section, closure),\n    );\n  }\n}\n\nexport function isSameOrChildSection(section: Section, other: Section) {\n  do {\n    if (other === section) {\n      return true;\n    }\n  } while ((other = other.parent!));\n  return false;\n}\n\nexport function getCommonSection(section: Section, other: Section) {\n  let ancestor: Section | undefined = section;\n  if (other.depth < section.depth) {\n    ancestor = other;\n    other = section;\n  }\n  while (ancestor) {\n    if (other === ancestor || !other.parent) {\n      return ancestor;\n    }\n    other = other.parent;\n    if (other.depth < ancestor.depth) {\n      ancestor = ancestor.parent;\n    }\n  }\n  throw new Error(\"No common section\");\n}\n\nexport function finalizeParamSerializeReasonGroups(section: Section) {\n  if (isReasonDynamic(section.serializeReason)) {\n    for (const [paramSection, params] of groupParamsBySection(\n      section.serializeReason.param,\n    )) {\n      ensureParamReasonGroup(paramSection, params);\n    }\n  }\n\n  for (const reason of section.serializeReasons.values()) {\n    if (isReasonDynamic(reason)) {\n      for (const [paramSection, params] of groupParamsBySection(reason.param)) {\n        ensureParamReasonGroup(paramSection, params);\n      }\n    }\n  }\n}\n\nfunction ensureParamReasonGroup(\n  section: Section,\n  reason: ParamSerializeReasonGroup[\"reason\"],\n) {\n  const { paramReasonGroups } = section;\n  const group: ParamSerializeReasonGroup = {\n    id: Symbol(getDebugNames(reason)),\n    reason,\n  };\n\n  if (paramReasonGroups) {\n    const found = findSorted(compareParamGroups, paramReasonGroups, group);\n    if (found) return found;\n\n    section.paramReasonGroups = addSorted(\n      compareParamGroups,\n      paramReasonGroups,\n      group,\n    );\n  } else {\n    section.paramReasonGroups = [group];\n  }\n}\n\nexport function getParamReasonGroupIndex(\n  section: Section,\n  reason: ParamSerializeReasonGroup[\"reason\"],\n) {\n  const index =\n    section.paramReasonGroups &&\n    findIndexSorted(compareParamGroups, section.paramReasonGroups, {\n      reason,\n    } as ParamSerializeReasonGroup);\n  if (index === undefined || index === -1) {\n    throw new Error(\n      \"Invalid compiler state, cannot ask for a serialize reason group that was not analyzed.\",\n    );\n  }\n  return index;\n}\n\nexport function groupParamsBySection(params: Sources[\"param\"]) {\n  return bindingUtil.groupBy(params, bindingToSection);\n}\n\nfunction bindingToSection(binding: Binding) {\n  return binding.section;\n}\n\nfunction compareParamGroups(\n  a: ParamSerializeReasonGroup,\n  b: ParamSerializeReasonGroup,\n) {\n  return compareReferences(a.reason, b.reason);\n}\n\nfunction isNativeNode(tag: t.NodePath<t.MarkoTag>) {\n  if (isCoreTag(tag)) {\n    switch (tag.node.name.value) {\n      case \"html-comment\":\n      case \"html-script\":\n      case \"html-style\":\n        return true;\n      default:\n        return false;\n    }\n  }\n  return analyzeTagNameType(tag) === TagNameType.NativeTag;\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/serialize-guard.ts",
    "content": "import { types as t } from \"@marko/compiler\";\n\nimport { getSharedUid } from \"./generate-uid\";\nimport { getDebugNames } from \"./references\";\nimport { callRuntime } from \"./runtime\";\nimport {\n  getParamReasonGroupIndex,\n  groupParamsBySection,\n  isSameOrChildSection,\n  type Section,\n} from \"./sections\";\nimport {\n  isReasonDynamic,\n  type SerializeReason,\n  type SerializeReasons,\n} from \"./serialize-reasons\";\nimport { withLeadingComment } from \"./with-comment\";\n\nexport function getSerializeGuard(\n  section: Section,\n  reason: undefined | SerializeReason,\n  optional: boolean,\n) {\n  if (!isReasonDynamic(reason)) {\n    return reason\n      ? optional\n        ? undefined\n        : withLeadingComment(\n            t.numericLiteral(1),\n            getDebugNames(reason === true ? undefined : reason.state),\n          )\n      : t.numericLiteral(0);\n  }\n\n  let expr: t.Expression | undefined;\n  for (const [paramsSection, params] of groupParamsBySection(reason.param)) {\n    if (!isSameOrChildSection(paramsSection, section)) {\n      return optional\n        ? undefined\n        : withLeadingComment(t.numericLiteral(1), getDebugNames(params));\n    }\n\n    const serializeIdentifier = t.identifier(\n      getSharedUid(`scope${paramsSection.id}_reason`, paramsSection),\n    );\n    const guard = paramsSection.paramReasonGroups\n      ? callRuntime(\n          \"_serialize_guard\",\n          serializeIdentifier,\n          withLeadingComment(\n            t.numericLiteral(getParamReasonGroupIndex(paramsSection, params)),\n            getDebugNames(params),\n          ),\n        )\n      : serializeIdentifier;\n\n    expr = expr ? t.logicalExpression(\"||\", expr, guard) : guard;\n  }\n\n  return expr!;\n}\n\nexport function getSerializeGuardForAny(\n  section: Section,\n  reasons: undefined | SerializeReasons,\n  optional: boolean,\n) {\n  if (!reasons || reasons === true) {\n    return getSerializeGuard(section, reasons, optional);\n  }\n\n  if (reasons.length === 1) {\n    return getSerializeGuard(section, reasons[0], optional);\n  }\n\n  let expr!: t.Expression;\n  for (const reason of reasons) {\n    if (!isReasonDynamic(reason)) {\n      return optional\n        ? undefined\n        : withLeadingComment(t.numericLiteral(1), getDebugNames(reason.state));\n    }\n\n    const guard = getSerializeGuard(section, reason, false)!;\n    expr = expr ? t.logicalExpression(\"||\", expr, guard) : guard;\n  }\n\n  return expr;\n}\n\nexport function getExprIfSerialized<\n  T extends undefined | SerializeReason,\n  U extends t.Expression,\n>(section: Section, reason: T, expr: U): T extends {} ? U : undefined {\n  if (!isReasonDynamic(reason)) {\n    return (reason && expr) as T extends {} ? U : undefined;\n  }\n\n  let orExpr: t.Expression | undefined;\n  for (const [paramsSection, params] of groupParamsBySection(reason.param)) {\n    if (!isSameOrChildSection(paramsSection, section)) {\n      return expr as T extends {} ? U : undefined;\n    }\n\n    const serializeIdentifier = t.identifier(\n      getSharedUid(`scope${paramsSection.id}_reason`, paramsSection),\n    );\n\n    const guard = paramsSection.paramReasonGroups\n      ? callRuntime(\n          \"_serialize_if\",\n          serializeIdentifier,\n          withLeadingComment(\n            t.numericLiteral(getParamReasonGroupIndex(paramsSection, params)),\n            getDebugNames(params),\n          ),\n        )\n      : serializeIdentifier;\n\n    orExpr = orExpr ? t.logicalExpression(\"||\", orExpr, guard) : guard;\n  }\n\n  return t.logicalExpression(\"&&\", orExpr!, expr) as any;\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/serialize-reasons.ts",
    "content": "import { types as t } from \"@marko/compiler\";\n\nimport {\n  type Accessor,\n  AccessorPrefix,\n  AccessorProp,\n} from \"../../common/types\";\nimport { getAccessorProp } from \"./get-accessor-char\";\nimport { concat, type OneMany, type Opt } from \"./optional\";\nimport {\n  type Binding,\n  getCanonicalBinding,\n  type InputBinding,\n  isReferencedExtra,\n  mergeSources,\n  type ParamBinding,\n  type ReferencedBindings,\n  type Sources,\n} from \"./references\";\nimport type { Section } from \"./sections\";\n\nexport type SerializeReasons = true | [Sources, ...Sources[]];\nexport type SerializeReason = true | Sources;\nexport type SerializeKey = symbol & { __serialize_key__: 1 };\n\nconst scopeExprsBySection = new WeakMap<Section, OneMany<t.NodeExtra>>();\nconst propExprsBySection = new WeakMap<\n  Section,\n  Map<SerializeKey, OneMany<t.NodeExtra>>\n>();\nconst serializePropsByBinding = new WeakMap<Binding, SerializeKey>();\nconst serializePropByModifier: Record<\n  Accessor | symbol,\n  WeakMap<Section | Binding, SerializeKey>\n> = {};\n\nexport function isForceSerialized(\n  section: Section,\n  prop?: Binding | AccessorProp | symbol,\n  prefix?: AccessorPrefix | symbol,\n) {\n  return (\n    true ===\n    (prop\n      ? section.serializeReasons.get(getPropKey(section, prop, prefix))\n      : section.serializeReason)\n  );\n}\n\nexport function addSerializeReason(\n  section: Section,\n  reason: undefined | false | SerializeReason,\n  prop?: Binding | AccessorProp | symbol,\n  prefix?: AccessorPrefix | symbol,\n) {\n  if (reason) {\n    if (prop) {\n      const key = getPropKey(section, prop, prefix);\n      const curReason = section.serializeReasons.get(key);\n      if (curReason !== true) {\n        if (reason === true) {\n          forcePropSerialize(section, key);\n        } else {\n          const newReason = mergeSerializeReasons(curReason, reason);\n          if (curReason !== newReason) {\n            setPropSerializeReason(section, key, newReason);\n          }\n        }\n      }\n    } else {\n      const curReason = section.serializeReason;\n      if (curReason !== true) {\n        if (reason === true) {\n          forceSerialize(section);\n        } else {\n          const newReason = mergeSerializeReasons(curReason, reason);\n          if (curReason !== newReason) {\n            setSerializeReason(section, newReason);\n          }\n        }\n      }\n    }\n  }\n}\n\nexport function addSerializeExpr(\n  section: Section,\n  expr: boolean | Opt<t.NodeExtra>,\n  prop?: Binding | AccessorProp | symbol,\n  prefix?: AccessorPrefix | symbol,\n) {\n  if (expr) {\n    if (prop) {\n      const key = getPropKey(section, prop, prefix);\n      if (section.serializeReasons.get(key) !== true) {\n        if (expr === true) {\n          forcePropSerialize(section, key);\n        } else {\n          let curExpr: Opt<t.NodeExtra>;\n          let curExprs = propExprsBySection.get(section);\n          if (curExprs) {\n            curExpr = curExprs.get(key);\n          } else {\n            curExprs = new Map();\n            propExprsBySection.set(section, curExprs);\n          }\n\n          curExprs.set(key, curExpr ? concat(curExpr, expr)! : expr);\n        }\n      }\n    } else if (section.serializeReason !== true) {\n      if (expr === true) {\n        forceSerialize(section);\n      } else {\n        const curExpr = scopeExprsBySection.get(section);\n        scopeExprsBySection.set(\n          section,\n          curExpr ? concat(curExpr, expr)! : expr,\n        );\n      }\n    }\n  }\n}\n\nexport function addOwnerSerializeReason(\n  from: Section,\n  to: Section,\n  reason: undefined | boolean | SerializeReason,\n) {\n  if (reason) {\n    let cur = from;\n    while (cur !== to && cur.parent) {\n      addSerializeReason(cur, reason, getAccessorProp().Owner);\n      cur = cur.parent;\n    }\n  }\n}\n\nexport function isReasonDynamic(\n  reason: undefined | SerializeReason,\n): reason is { state: undefined; param: OneMany<InputBinding | ParamBinding> } {\n  return !!reason && reason !== true && !reason.state;\n}\n\nexport function getSerializeReason(\n  section: Section,\n  prop?: Binding | AccessorProp | symbol,\n  prefix?: AccessorPrefix | symbol,\n) {\n  if (prop) {\n    return section.serializeReasons.get(getPropKey(section, prop, prefix));\n  } else {\n    return section.serializeReason;\n  }\n}\n\nexport function getSerializeSourcesForExpr(expr: t.NodeExtra) {\n  if (isReferencedExtra(expr)) {\n    return getSerializeSourcesForRef(expr.referencedBindings);\n  }\n}\n\nexport function getSerializeSourcesForExprs(exprs: Opt<t.NodeExtra> | boolean) {\n  if (exprs) {\n    if (exprs === true) {\n      return exprs;\n    } else if (Array.isArray(exprs)) {\n      let allSources: Sources | undefined;\n      for (const expr of exprs) {\n        allSources = mergeSources(allSources, getSerializeSourcesForExpr(expr));\n      }\n      return allSources;\n    } else {\n      return getSerializeSourcesForExpr(exprs);\n    }\n  }\n}\n\nexport function getSerializeSourcesForRef(ref: ReferencedBindings) {\n  if (ref) {\n    let allSources: Sources | undefined;\n    if (Array.isArray(ref)) {\n      for (const { sources } of ref) {\n        allSources = mergeSources(allSources, sources);\n      }\n\n      return allSources;\n    } else {\n      return ref.sources;\n    }\n  }\n}\n\nexport function mergeSerializeReasons(\n  a: SerializeReason,\n  b: undefined | SerializeReason,\n): SerializeReason;\nexport function mergeSerializeReasons(\n  a: undefined | SerializeReason,\n  b: SerializeReason,\n): SerializeReason;\nexport function mergeSerializeReasons(\n  a: undefined | SerializeReason,\n  b: undefined | SerializeReason,\n): SerializeReason | undefined;\nexport function mergeSerializeReasons(\n  a: undefined | SerializeReason,\n  b: undefined | SerializeReason,\n): SerializeReason | undefined {\n  if (a === true || b === true) return true;\n  return mergeSources(a, b);\n}\n\nexport function applySerializeExprs(section: Section) {\n  const propExprs = propExprsBySection.get(section);\n  if (propExprs) {\n    propExprsBySection.delete(section);\n    for (const [key, exprs] of propExprs) {\n      const exprReason = getSerializeSourcesForExprs(exprs);\n      if (exprReason) {\n        const curReason = section.serializeReasons.get(key);\n        const newReason = mergeSerializeReasons(curReason, exprReason);\n        if (curReason !== newReason) {\n          setPropSerializeReason(section, key, newReason);\n        }\n      }\n    }\n  }\n\n  const scopeExprs = scopeExprsBySection.get(section);\n  if (scopeExprs) {\n    const exprReason = getSerializeSourcesForExprs(scopeExprs);\n    scopeExprsBySection.delete(section);\n    if (exprReason) {\n      const curReason = section.serializeReason;\n      const newReason = mergeSerializeReasons(curReason, exprReason);\n      if (curReason !== newReason) {\n        setSerializeReason(section, newReason);\n      }\n    }\n  }\n}\n\nexport function finalizeSerializeReason(section: Section) {\n  const curReason = section.serializeReason;\n  let newReason: undefined | SerializeReason = curReason;\n  if (newReason !== true) {\n    // Merge all prop reasons into the scope reason.\n    for (const propReason of section.serializeReasons.values()) {\n      if (propReason === true) {\n        newReason = true;\n        break;\n      }\n\n      newReason = mergeSources(newReason, propReason);\n    }\n\n    if (newReason && curReason !== newReason) {\n      setSerializeReason(section, newReason);\n    }\n  }\n}\n\nfunction getPropKey(\n  section: Section,\n  prop: Binding | AccessorProp | symbol,\n  prefix?: AccessorPrefix | symbol,\n) {\n  if (isStrOrSym(prop)) {\n    const keys = (serializePropByModifier[prop] ||= new WeakMap());\n    let key = keys.get(section);\n    if (!key) {\n      keys.set(\n        section,\n        (key = Symbol(\n          typeof prop === \"symbol\" ? `Symbol(${prop.description})` : prop,\n        ) as SerializeKey),\n      );\n    }\n\n    if (prefix) {\n      throw new Error(\"Cannot have a scope property reason with a prefix.\");\n    }\n\n    return key;\n  } else {\n    const keys = prefix\n      ? (serializePropByModifier[prefix] ||= new WeakMap())\n      : serializePropsByBinding;\n    const binding = getCanonicalBinding(prop);\n\n    let key = keys.get(binding);\n    if (!key) {\n      keys.set(\n        binding,\n        (key = Symbol(\n          (prefix\n            ? typeof prefix === \"symbol\"\n              ? `Symbol(${prefix.description})`\n              : prefix\n            : \"\") + binding.name,\n        ) as SerializeKey),\n      );\n    }\n\n    return key;\n  }\n}\n\nfunction forceSerialize(section: Section) {\n  scopeExprsBySection.delete(section);\n  setSerializeReason(section, true);\n}\n\nfunction forcePropSerialize(section: Section, key: SerializeKey) {\n  setPropSerializeReason(section, key, true);\n  propExprsBySection.get(section)?.delete(key);\n}\n\nfunction isStrOrSym(v: unknown): v is string | symbol {\n  switch (typeof v) {\n    case \"string\":\n    case \"symbol\":\n      return true;\n    default:\n      return false;\n  }\n}\n\n// Exists as the single point of assigning section reasons to aid in debugging.\nfunction setSerializeReason(section: Section, reason: SerializeReason) {\n  section.serializeReason = reason;\n}\n\n// Exists as the single point of assigning section reasons to aid in debugging.\nfunction setPropSerializeReason(\n  section: Section,\n  key: SerializeKey,\n  reason: SerializeReason,\n) {\n  section.serializeReasons.set(key, reason);\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/set-tag-sections-downstream.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport { isAttributeTag } from \"@marko/compiler/babel-utils\";\n\nimport { getTagName } from \"./get-tag-name\";\nimport { analyzeAttributeTags } from \"./nested-attribute-tags\";\nimport { concat, type Opt } from \"./optional\";\nimport type { Binding } from \"./references\";\nimport { getSection, getSectionForBody, type Section } from \"./sections\";\nimport { createSectionState } from \"./state\";\n\nconst [getTagDownstreams] = createSectionState(\n  \"tag-downstreams\",\n  () => new Map<t.NodePath<t.MarkoTag>, Binding>(),\n);\n\nexport function setTagDownstream(\n  tag: t.NodePath<t.MarkoTag>,\n  binding: undefined | Binding,\n) {\n  if (binding) {\n    getTagDownstreams(getSection(tag)).set(tag, binding);\n  }\n}\n\nexport function finalizeTagDownstreams(section: Section) {\n  for (const [tag, binding] of getTagDownstreams(section)) {\n    crawlSectionsAndSetBinding(tag, binding);\n  }\n}\n\nfunction crawlSectionsAndSetBinding(\n  tag: t.NodePath<t.MarkoTag>,\n  binding: Binding,\n  properties?: Opt<string>,\n  skip?: true,\n) {\n  if (!skip) {\n    const contentSection = getSectionForBody(tag.get(\"body\"));\n    if (contentSection) {\n      contentSection.downstreamBinding = {\n        binding,\n        properties: concat(properties, \"content\"),\n      };\n    }\n  }\n\n  const attrTagLookup = analyzeAttributeTags(tag);\n\n  if (!attrTagLookup) return;\n\n  const attrTags = tag.node.body.attributeTags\n    ? tag.get(\"body\").get(\"body\")\n    : tag.get(\"attributeTags\");\n\n  for (const child of attrTags) {\n    if (child.isMarkoTag()) {\n      if (isAttributeTag(child)) {\n        const attrTagMeta = attrTagLookup[getTagName(child)];\n        crawlSectionsAndSetBinding(\n          child,\n          binding,\n          concat(properties, attrTagMeta.name),\n        );\n      } else {\n        crawlSectionsAndSetBinding(child, binding, properties, true);\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/signals.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  getFile,\n  getProgram,\n  getTemplateId,\n} from \"@marko/compiler/babel-utils\";\n\nimport { type AccessorPrefix, AccessorProp } from \"../../common/types\";\nimport { getSectionReturnValueIdentifier } from \"../core/return\";\nimport { scopeIdentifier } from \"../visitors/program\";\nimport { forEachIdentifier } from \"./for-each-identifier\";\nimport { generateUid, generateUidIdentifier } from \"./generate-uid\";\nimport { getAccessorPrefix, getAccessorProp } from \"./get-accessor-char\";\nimport { getDeclaredBindingExpression } from \"./get-defined-binding-expression\";\nimport { isOptimize, isOutputHTML } from \"./marko-config\";\nimport { find, forEach, type Opt, push, some } from \"./optional\";\nimport {\n  type AssignedBindingExtra,\n  type Binding,\n  BindingType,\n  bindingUtil,\n  compareSources,\n  getCanonicalBinding,\n  getDebugName,\n  getDebugNames,\n  getDebugScopeAccess,\n  getReadReplacement,\n  getScopeAccessor,\n  getScopeAccessorLiteral,\n  getSectionInstancesAccessorLiteral,\n  type Getter,\n  hasNonConstantPropertyAlias,\n  intersectionMeta,\n  isAssignedBindingExtra,\n  isRegisteredFnExtra,\n  type ReferencedBindings,\n} from \"./references\";\nimport { callRuntime } from \"./runtime\";\nimport { createScopeReadExpression, getScopeExpression } from \"./scope-read\";\nimport {\n  getDynamicClosureIndex,\n  getScopeIdIdentifier,\n  getSectionForBody,\n  isDynamicClosure,\n  isImmediateOwner,\n  type Section,\n  sectionUtil,\n} from \"./sections\";\nimport { getExprIfSerialized } from \"./serialize-guard\";\nimport { getSerializeReason, type SerializeReason } from \"./serialize-reasons\";\nimport { simplifyFunction } from \"./simplify-fn\";\nimport { createSectionState } from \"./state\";\nimport {\n  toFirstExpressionOrBlock,\n  toParenthesizedExpressionIfNeeded,\n} from \"./to-first-expression-or-block\";\nimport {\n  toMemberExpression,\n  toObjectProperty,\n  toPropertyName,\n} from \"./to-property-name\";\nimport { traverseReplace } from \"./traverse\";\nimport { withLeadingComment } from \"./with-comment\";\n\nexport interface Signal {\n  identifier: t.Identifier;\n  referencedBindings: ReferencedBindings;\n  section: Section;\n  build: undefined | (() => t.Expression | undefined);\n  register?: boolean;\n  values: Array<{\n    signal: Signal;\n    value: t.Expression;\n  }>;\n  intersection: Opt<Signal>;\n  render: t.Statement[];\n  renderReferencedBindings: ReferencedBindings;\n  effect: t.Statement[];\n  effectReferencedBindings: ReferencedBindings;\n  hasDynamicSubscribers: boolean;\n  hasSideEffect: boolean;\n  export: boolean;\n  extraArgs: t.Expression[] | undefined;\n  prependStatements: t.Statement[] | undefined;\n  buildAssignment:\n    | ((valueSection: Section, value: t.Expression) => t.Expression | undefined)\n    | undefined;\n}\n\ntype closureSignalBuilder = (\n  closure: Binding,\n  render: t.Expression,\n) => t.Expression;\nconst [getSignals] = createSectionState<Map<unknown, Signal>>(\n  \"signals\",\n  () => new Map(),\n);\nconst [getClosureSignalBuilder, _setClosureSignalBuilder] = createSectionState<\n  closureSignalBuilder | undefined\n>(\"queue\");\nexport function setClosureSignalBuilder(\n  tag: t.NodePath<t.MarkoTag>,\n  builder: closureSignalBuilder,\n) {\n  _setClosureSignalBuilder(getSectionForBody(tag.get(\"body\"))!, builder);\n}\n\nexport const [getTryHasPlaceholder, setTryHasPlaceholder] = createSectionState<\n  true | undefined\n>(\"tryWithPlaceholder\");\n\nconst [getSerializedAccessors] = createSectionState<\n  Map<string, { expression: t.Expression; reason: SerializeReason }>\n>(\"serializedScopeProperties\", () => new Map());\nexport function setSectionSerializedValue(\n  section: Section,\n  prop: AccessorProp,\n  expression: t.Expression,\n) {\n  const reason = getSerializeReason(section, prop);\n  if (reason) {\n    getSerializedAccessors(section).set(prop, { expression, reason });\n  }\n}\nexport function setBindingSerializedValue(\n  section: Section,\n  binding: Binding,\n  expression: t.Expression,\n  prefix?: AccessorPrefix,\n) {\n  const reason = getSerializeReason(section, binding, prefix);\n  if (reason) {\n    getSerializedAccessors(section).set(\n      (prefix || \"\") + getScopeAccessor(binding),\n      { expression, reason },\n    );\n  }\n}\n\nconst nonAnalyzedForceSerializedSection = new WeakSet<Section>();\nexport function setSerializedValue(\n  section: Section,\n  key: string,\n  expression: t.Expression,\n) {\n  nonAnalyzedForceSerializedSection.add(section);\n  getSerializedAccessors(section).set(key, { expression, reason: true });\n}\nconst [getSectionWriteScopeBuilder, setSectionWriteScopeBuilder] =\n  createSectionState<undefined | ((expr: t.Expression) => t.Expression)>(\n    \"sectionWriteScopeBuilder\",\n  );\nexport function addWriteScopeBuilder(\n  section: Section,\n  builder: (writeCall: t.Expression) => t.Expression,\n) {\n  const prev = getSectionWriteScopeBuilder(section);\n  setSectionWriteScopeBuilder(\n    section,\n    prev ? (expr) => builder(prev(expr)) : builder,\n  );\n}\n\nconst htmlDynamicClosureInstancesIdentifier = new WeakMap<\n  Signal,\n  t.Identifier\n>();\n\nexport const [getHTMLSectionStatements] = createSectionState<t.Statement[]>(\n  \"htmlScopeStatements\",\n  () => [],\n);\n\nconst [getBindingGetterIdMap] = createSectionState<Map<Binding, t.Identifier>>(\n  \"bindingGetterIdMap\",\n  () => new Map(),\n);\n\nexport function getBindingGetterIdentifier(\n  binding: Binding,\n  getterSection: Getter[\"hoisted\"],\n) {\n  const section = getterSection || binding.section;\n  const idsMap = getBindingGetterIdMap(section);\n  let identifier = idsMap.get(binding);\n  if (!identifier) {\n    idsMap.set(\n      binding,\n      (identifier = generateUidIdentifier(\n        `${section.name ? `${section.name}__` : \"\"}${binding.originalName ?? binding.name}_getter`,\n      )),\n    );\n  }\n  return identifier;\n}\n\nexport function getSignal(\n  section: Section,\n  referencedBindings: ReferencedBindings,\n  name: string = generateSignalName(referencedBindings),\n) {\n  if (referencedBindings && !Array.isArray(referencedBindings)) {\n    if (referencedBindings.type === BindingType.constant) {\n      return getSignal(section, undefined);\n    }\n\n    if (\n      referencedBindings.type !== BindingType.local &&\n      referencedBindings.section !== section\n    ) {\n      const canonicalReference = getCanonicalBinding(referencedBindings);\n      if (canonicalReference !== referencedBindings) {\n        return getSignal(section, canonicalReference);\n      }\n    }\n  }\n\n  const signals = getSignals(section);\n  let signal = signals.get(referencedBindings)!;\n  if (!signal) {\n    const exportName = referencedBindings\n      ? !Array.isArray(referencedBindings) &&\n        referencedBindings.section === section &&\n        referencedBindings.export\n      : !section.parent && getProgram().node.extra.domExports?.setup;\n\n    signals.set(\n      referencedBindings,\n      (signal = {\n        identifier: exportName\n          ? t.identifier(exportName)\n          : generateUidIdentifier(\n              section.name ? `${section.name}__${name}` : name,\n            ),\n        referencedBindings,\n        section,\n        values: [],\n        intersection: undefined,\n        render: [],\n        renderReferencedBindings: undefined,\n        effect: [],\n        effectReferencedBindings: undefined,\n        build: undefined,\n        export: !!exportName,\n        hasSideEffect: !!(\n          referencedBindings &&\n          (Array.isArray(referencedBindings) ||\n            referencedBindings.type === BindingType.dom ||\n            referencedBindings.type === BindingType.let ||\n            referencedBindings.section !== section ||\n            referencedBindings.closureSections ||\n            referencedBindings.hoists)\n        ),\n        hasDynamicSubscribers: false,\n        extraArgs: undefined,\n        prependStatements: undefined,\n        buildAssignment: undefined,\n      }),\n    );\n\n    if (isOutputHTML()) {\n      return signal;\n    } else if (!referencedBindings) {\n      signal.build = () => getSignalFn(signal);\n    } else if (Array.isArray(referencedBindings)) {\n      subscribe(referencedBindings, signal);\n      signal.build = () => {\n        const { id, scopeOffset } = intersectionMeta.get(referencedBindings)!;\n        return callRuntime(\n          \"_or\",\n          t.numericLiteral(id),\n          getSignalFn(signal),\n          scopeOffset || referencedBindings.length > 2\n            ? t.numericLiteral(referencedBindings.length - 1)\n            : undefined,\n          scopeOffset && getScopeAccessorLiteral(scopeOffset, true),\n        );\n      };\n    } else if (\n      referencedBindings.section !== section &&\n      sectionUtil.has(referencedBindings.closureSections, section)\n    ) {\n      signal.build = () => {\n        const closure = referencedBindings;\n        const render = getSignalFn(signal);\n        const closureSignalBuilder = getClosureSignalBuilder(section);\n\n        if (closureSignalBuilder && !isDynamicClosure(section, closure)) {\n          return closureSignalBuilder(closure, render);\n        }\n\n        return callRuntime(\n          \"_closure_get\",\n          getScopeAccessorLiteral(closure, true),\n          render,\n          isImmediateOwner(section, closure)\n            ? undefined\n            : t.arrowFunctionExpression(\n                [scopeIdentifier],\n                getScopeExpression(section, closure.section),\n              ),\n          some(closure.closureSections, underTryPlaceholder)\n            ? t.stringLiteral(getResumeRegisterId(section, closure, \"pending\"))\n            : undefined,\n        );\n      };\n    }\n  }\n  return signal;\n}\n\nfunction underTryPlaceholder(section: Section) {\n  let curSection = section.parent;\n  while (curSection) {\n    if (getTryHasPlaceholder(curSection)) {\n      return true;\n    }\n    curSection = curSection.parent;\n  }\n  return false;\n}\n\nexport function initValue(binding: Binding, isLet = false) {\n  const section = binding.section;\n  const signal = getSignal(section, binding);\n  signal.build = () => {\n    const fn = getSignalFn(signal);\n    const isDirectAlias =\n      binding.upstreamAlias &&\n      binding.property === undefined &&\n      binding.excludeProperties === undefined;\n    if (\n      isDirectAlias ||\n      !signal.hasSideEffect ||\n      !signalHasStatements(signal)\n    ) {\n      return fn;\n    }\n\n    return callRuntime(\n      isLet ? \"_let\" : \"_const\",\n      getScopeAccessorLiteral(binding, true, isLet),\n      fn,\n    );\n  };\n\n  for (const alias of binding.aliases) {\n    if (alias.type !== BindingType.constant) {\n      initValue(alias);\n    }\n  }\n\n  for (const alias of binding.propertyAliases.values()) {\n    if (alias.type !== BindingType.constant) {\n      initValue(alias);\n    }\n  }\n\n  return signal;\n}\n\nexport function signalHasStatements(signal: Signal): boolean {\n  if (\n    signal.extraArgs ||\n    signal.render.length ||\n    signal.effect.length ||\n    signal.values.length ||\n    signal.intersection\n  ) {\n    return true;\n  }\n  const binding = signal.referencedBindings;\n  if (binding) {\n    if (\n      !Array.isArray(binding) &&\n      (binding.closureSections ||\n        binding.type === BindingType.dom ||\n        (binding.section === signal.section &&\n          (binding.hoists ||\n            binding.aliases.size ||\n            hasNonConstantPropertyAlias(binding))))\n    ) {\n      return true;\n    }\n  } else if (signal.section.referencedClosures) {\n    return true;\n  }\n  return false;\n}\n\nexport function getSignalFn(signal: Signal): t.Expression {\n  const section = signal.section;\n  const binding = signal.referencedBindings;\n  const isIntersection = Array.isArray(binding);\n  const isBinding = binding && !isIntersection;\n  const isValue = isBinding && binding.section === section;\n  const assertsHoists = isValue && binding.hoists && !isOptimize();\n\n  if (isValue) {\n    for (const alias of binding.aliases) {\n      const aliasSignal = getSignal(alias.section, alias);\n      if (signalHasStatements(aliasSignal)) {\n        if (alias.excludeProperties !== undefined) {\n          const props: t.ObjectPattern[\"properties\"] = [];\n          const aliasId = t.identifier(alias.name);\n          forEach(alias.excludeProperties, (name) => {\n            const propId = toPropertyName(name);\n            const shorthand =\n              propId.type === \"Identifier\" && t.isValidIdentifier(name);\n            props.push(\n              t.objectProperty(\n                propId,\n                shorthand ? propId : generateUidIdentifier(name),\n                false,\n                shorthand,\n              ),\n            );\n          });\n\n          props.push(t.restElement(aliasId));\n          signal.render.push(\n            t.expressionStatement(\n              t.callExpression(\n                t.arrowFunctionExpression(\n                  [t.objectPattern(props)],\n                  t.callExpression(aliasSignal.identifier, [\n                    scopeIdentifier,\n                    aliasId,\n                    ...getTranslatedExtraArgs(aliasSignal),\n                  ]),\n                ),\n                [\n                  binding.nullable\n                    ? t.logicalExpression(\n                        \"||\",\n                        createScopeReadExpression(binding),\n                        t.objectExpression([]),\n                      )\n                    : createScopeReadExpression(binding),\n                ],\n              ),\n            ),\n          );\n        } else {\n          signal.render.push(\n            t.expressionStatement(\n              t.callExpression(aliasSignal.identifier, [\n                scopeIdentifier,\n                createScopeReadExpression(binding),\n                ...getTranslatedExtraArgs(aliasSignal),\n              ]),\n            ),\n          );\n        }\n      }\n    }\n\n    for (const [key, alias] of binding.propertyAliases) {\n      if (alias.type !== BindingType.constant) {\n        const aliasSignal = getSignal(alias.section, alias);\n        signal.render.push(\n          t.expressionStatement(\n            t.callExpression(aliasSignal.identifier, [\n              scopeIdentifier,\n              toMemberExpression(\n                createScopeReadExpression(binding),\n                key,\n                binding.nullable,\n              ),\n              ...getTranslatedExtraArgs(aliasSignal),\n            ]),\n          ),\n        );\n      }\n    }\n\n    if (assertsHoists) {\n      signal.render.push(\n        t.expressionStatement(\n          callRuntime(\"_assert_hoist\", createScopeReadExpression(binding)),\n        ),\n      );\n    }\n  }\n\n  for (const value of signal.values) {\n    if (signalHasStatements(value.signal)) {\n      signal.render.push(\n        t.expressionStatement(\n          t.callExpression(value.signal.identifier, [\n            scopeIdentifier,\n            value.value,\n            ...getTranslatedExtraArgs(value.signal),\n          ]),\n        ),\n      );\n    } else {\n      signal.render.push(\n        t.expressionStatement(\n          withLeadingComment(\n            value.value,\n            getDebugNames(value.signal.referencedBindings),\n          ),\n        ),\n      );\n    }\n  }\n\n  forEach(signal.intersection, (intersection) => {\n    signal.render.push(\n      t.expressionStatement(\n        t.callExpression(intersection.identifier, [scopeIdentifier]),\n      ),\n    );\n  });\n\n  if (isValue && binding.sources) {\n    let dynamicClosureArgs: t.Expression[] | undefined;\n    let dynamicClosureSignalIdentifier: t.Identifier | undefined;\n    forEach(binding.closureSections, (closureSection) => {\n      if (isDynamicClosure(closureSection, binding)) {\n        if (!dynamicClosureArgs) {\n          dynamicClosureArgs = [];\n          dynamicClosureSignalIdentifier = generateUidIdentifier(\n            signal.identifier.name + \"__closure\",\n          );\n\n          signal.render.push(\n            t.expressionStatement(\n              t.callExpression(dynamicClosureSignalIdentifier, [\n                scopeIdentifier,\n              ]),\n            ),\n          );\n        }\n\n        dynamicClosureArgs.push(getSignal(closureSection, binding).identifier);\n      } else {\n        signal.render.push(\n          t.expressionStatement(\n            t.callExpression(getSignal(closureSection, binding).identifier, [\n              scopeIdentifier,\n            ]),\n          ),\n        );\n      }\n    });\n\n    if (dynamicClosureSignalIdentifier) {\n      (signal.prependStatements ||= []).push(\n        t.variableDeclaration(\"const\", [\n          t.variableDeclarator(\n            dynamicClosureSignalIdentifier,\n            callRuntime(\"_closure\", ...dynamicClosureArgs!),\n          ),\n        ]),\n      );\n    }\n  }\n\n  if (signal.effect.length) {\n    const effectIdentifier = t.identifier(`${signal.identifier.name}__script`);\n    signal.render.push(\n      t.expressionStatement(\n        t.callExpression(effectIdentifier, [scopeIdentifier]),\n      ),\n    );\n  }\n\n  if (isValue && getSerializeReason(section, binding)) {\n    signal.hasSideEffect = true;\n  }\n\n  if (!signal.hasSideEffect) {\n    return t.arrowFunctionExpression(\n      isValue\n        ? [scopeIdentifier, getSignalValueIdentifier(signal)]\n        : [scopeIdentifier],\n      toFirstExpressionOrBlock(signal.render),\n    );\n  }\n\n  if (signal.render.length === 1) {\n    const render = signal.render[0];\n    if (render.type === \"ExpressionStatement\") {\n      const { expression } = render;\n      if (expression.type === \"CallExpression\") {\n        const args = expression.arguments;\n        if (args.length === 1 && args[0] === scopeIdentifier) {\n          if (\n            expression.callee.type === \"MemberExpression\" &&\n            expression.callee.property.type === \"Identifier\" &&\n            expression.callee.property.name === getAccessorProp().Owner\n          ) {\n            // Special case closure reads of `IDENTIFIER._`.\n            return expression.callee.object;\n          }\n\n          return expression.callee as t.Expression;\n        }\n      }\n    }\n  }\n\n  return t.arrowFunctionExpression(\n    [scopeIdentifier],\n    t.blockStatement(signal.render),\n  );\n}\n\nconst hasTranslatedExtraArgs = new WeakSet<{ extraArgs?: t.Expression[] }>();\nconst emptyExtraArgs: never[] = [];\nfunction getTranslatedExtraArgs(signal: { extraArgs?: t.Expression[] }) {\n  if (signal.extraArgs) {\n    if (!hasTranslatedExtraArgs.has(signal)) {\n      hasTranslatedExtraArgs.add(signal);\n      traverseReplace(signal, \"extraArgs\", replaceRenderNode);\n    }\n\n    return signal.extraArgs;\n  }\n\n  return emptyExtraArgs;\n}\n\nexport function getSignalValueIdentifier(signal: Signal) {\n  const canonicalBinding = getCanonicalBinding(\n    signal.referencedBindings as Binding,\n  );\n  return t.identifier(canonicalBinding.name);\n}\n\nexport function subscribe(references: ReferencedBindings, subscriber: Signal) {\n  if (references) {\n    forEach(references, (binding) => {\n      if (binding.type !== BindingType.constant) {\n        const source =\n          (binding.property === undefined &&\n            binding.excludeProperties === undefined &&\n            binding.upstreamAlias) ||\n          binding;\n        const providerSignal = getSignal(subscriber.section, source);\n        providerSignal.hasSideEffect = true;\n        providerSignal.intersection = push(\n          providerSignal.intersection,\n          subscriber,\n        );\n      }\n    });\n  }\n}\n\nfunction generateSignalName(referencedBindings?: ReferencedBindings) {\n  let name: string;\n\n  if (referencedBindings) {\n    if (Array.isArray(referencedBindings)) {\n      name = \"\";\n\n      for (const ref of referencedBindings) {\n        if (name) {\n          name += `__OR__${ref.name.replace(/^\\$/, \"\")}`;\n        } else {\n          name = ref.name;\n        }\n      }\n    } else {\n      name = referencedBindings.name;\n    }\n  } else {\n    name = \"setup\";\n  }\n\n  return name;\n}\n\nexport function replaceNullishAndEmptyFunctionsWith0(\n  args: (t.Expression | undefined | false)[],\n): t.Expression[] {\n  const len = args.length;\n  let finalLen: undefined | number = undefined;\n\n  for (let i = len; i--; ) {\n    const arg = args[i];\n    if (!arg) {\n      args[i] = t.numericLiteral(0);\n      continue;\n    }\n\n    if (\n      t.isNullLiteral(arg) ||\n      (t.isUnaryExpression(arg) && arg.operator === \"void\")\n    ) {\n      args[i] = t.numericLiteral(0);\n      continue;\n    }\n\n    if (t.isArrowFunctionExpression(arg) && t.isBlockStatement(arg.body)) {\n      const body = arg.body.body;\n      if (body.length === 0) {\n        args[i] = t.numericLiteral(0);\n        continue;\n      }\n\n      if (body.length === 1 && t.isExpressionStatement(body[0])) {\n        arg.body = toParenthesizedExpressionIfNeeded(body[0].expression);\n      }\n    }\n\n    if (finalLen === undefined) {\n      finalLen = i + 1;\n    }\n  }\n\n  args.length = finalLen || 0;\n  return args as t.Expression[];\n}\nexport function addStatement(\n  type: \"render\" | \"effect\",\n  targetSection: Section,\n  referencedBindings: ReferencedBindings,\n  statement: t.Statement | t.Statement[],\n  usedReferences?: ReferencedBindings[] | false,\n  isPure?: boolean,\n): void {\n  const signal = getSignal(targetSection, referencedBindings);\n  const statements = (signal[type] ??= []);\n  const add = type === \"effect\" ? addEffectReferences : addRenderReferences;\n\n  if (Array.isArray(statement)) {\n    statements.push(...statement);\n  } else {\n    statements.push(statement);\n  }\n\n  if (usedReferences !== false) {\n    if (usedReferences) {\n      for (const ref of usedReferences) {\n        add(signal, ref);\n      }\n    } else {\n      add(signal, referencedBindings);\n    }\n  }\n\n  if (!isPure || type === \"effect\") {\n    signal.hasSideEffect = true;\n  }\n}\n\nfunction addEffectReferences(\n  signal: Signal,\n  referencedBindings: ReferencedBindings,\n) {\n  signal.effectReferencedBindings = bindingUtil.union(\n    signal.effectReferencedBindings,\n    referencedBindings,\n  );\n}\n\nfunction addRenderReferences(\n  signal: Signal,\n  referencedBindings: ReferencedBindings,\n) {\n  signal.renderReferencedBindings = bindingUtil.union(\n    signal.renderReferencedBindings,\n    referencedBindings,\n  );\n}\n\nexport function addValue(\n  targetSection: Section,\n  referencedBindings: ReferencedBindings,\n  signal: Signal,\n  value: t.Expression,\n) {\n  const parentSignal = getSignal(targetSection, referencedBindings);\n  addRenderReferences(parentSignal, referencedBindings);\n  parentSignal.values.push({\n    signal,\n    value,\n  });\n\n  if (value.extra?.referencedBindingsInFunction) {\n    parentSignal.hasSideEffect = true;\n  }\n}\n\nexport function getResumeRegisterId(\n  section: Section,\n  referencedBindings: string | ReferencedBindings,\n  type?: string,\n) {\n  const {\n    markoOpts,\n    opts: { filename },\n  } = getFile();\n  let name = \"\";\n  if (referencedBindings) {\n    if (typeof referencedBindings === \"string\") {\n      name += `_${referencedBindings}`;\n    } else if (Array.isArray(referencedBindings)) {\n      for (const ref of referencedBindings) {\n        name += `_${ref.name}`;\n      }\n    } else {\n      name += `_${referencedBindings.name}`;\n    }\n  }\n  return getTemplateId(\n    markoOpts,\n    filename as string,\n    `${section.id}${name}${type ? \"/\" + type : \"\"}`,\n  );\n}\n\nconst usedRegisterIdsBySection = new WeakMap<Section, Set<string>>();\nexport function getRegisterUID(section: Section, name: string) {\n  const {\n    markoOpts,\n    opts: { filename },\n  } = getFile();\n\n  let used = usedRegisterIdsBySection.get(section);\n  if (!used) usedRegisterIdsBySection.set(section, (used = new Set()));\n\n  const baseId = getTemplateId(\n    markoOpts,\n    filename as string,\n    `${section.id}/${name}`,\n  );\n  let count = 0;\n  let id = baseId;\n\n  while (used.has(id)) {\n    id = baseId + \"_\" + ++count;\n  }\n\n  used.add(id);\n  return id;\n}\n\nexport function writeSignals(section: Section) {\n  const seen = new Set<Signal>();\n  const written = new Set<Signal>();\n  writeGetters(section);\n\n  for (const signal of getSignals(section).values()) {\n    writeSignal(signal);\n  }\n\n  function writeSignal(signal: Signal) {\n    if (seen.has(signal)) return;\n    seen.add(signal);\n\n    for (const value of signal.values) {\n      writeSignal(value.signal);\n      traverseReplace(value, \"value\", replaceRenderNode);\n    }\n\n    forEach(signal.intersection, writeSignal);\n\n    let effectDeclarator: t.VariableDeclarator | undefined;\n    if (signal.effect.length) {\n      traverseReplace(signal, \"effect\", replaceEffectNode);\n      const effectIdentifier = t.identifier(\n        `${signal.identifier.name}__script`,\n      );\n      effectDeclarator = t.variableDeclarator(\n        effectIdentifier,\n        callRuntime(\n          \"_script\",\n          t.stringLiteral(\n            getResumeRegisterId(section, signal.referencedBindings),\n          ),\n          t.arrowFunctionExpression(\n            [scopeIdentifier],\n            toFirstExpressionOrBlock(signal.effect),\n          ),\n        ),\n      );\n    }\n\n    let signalDeclaration: t.Statement | undefined;\n    if (signal.build) {\n      let value = signal.build();\n\n      if (\n        !value ||\n        (!signal.register &&\n          t.isFunction(value) &&\n          t.isBlockStatement(value.body) &&\n          !value.body.body.length)\n      ) {\n        return;\n      }\n\n      if (t.isCallExpression(value)) {\n        replaceNullishAndEmptyFunctionsWith0(value.arguments as t.Expression[]);\n      }\n\n      if (signal.register) {\n        value = callRuntime(\n          \"_var_resume\",\n          t.stringLiteral(\n            getResumeRegisterId(section, signal.referencedBindings, \"var\"),\n          ),\n          value,\n        );\n      }\n\n      const signalDeclarator = t.variableDeclarator(signal.identifier, value);\n      signalDeclaration =\n        !section.parent &&\n        !signal.referencedBindings &&\n        (t.isFunctionExpression(value) || t.isArrowFunctionExpression(value))\n          ? t.functionDeclaration(\n              signal.identifier,\n              value.params,\n              t.isExpression(value.body)\n                ? t.blockStatement([t.expressionStatement(value.body)])\n                : value.body,\n            )\n          : t.variableDeclaration(\"const\", [signalDeclarator]);\n      if (signal.export) {\n        signalDeclaration = t.exportNamedDeclaration(signalDeclaration);\n      }\n    }\n\n    traverseReplace(signal, \"render\", replaceRenderNode, signal);\n\n    const signalStatements = signal.prependStatements || [];\n\n    if (effectDeclarator) {\n      signalStatements.push(t.variableDeclaration(\"const\", [effectDeclarator]));\n    }\n\n    if (signalDeclaration) {\n      signalStatements.push(signalDeclaration);\n    }\n    getProgram().node.body.push(...signalStatements);\n\n    written.add(signal);\n  }\n\n  return written;\n}\n\nfunction writeGetters(section: Section) {\n  forEach(section.bindings, (binding) => {\n    for (const [hoistSection, hasReference] of binding.getters) {\n      const getterIdentifier = getBindingGetterIdentifier(\n        binding,\n        hoistSection,\n      );\n      const accessors: t.Expression[] = [\n        getScopeAccessorLiteral(binding, true),\n      ];\n\n      if (hoistSection) {\n        let currentSection: Section | undefined = binding.section;\n        while (currentSection && currentSection !== hoistSection) {\n          const parentSection: Section | undefined = currentSection.parent;\n          if (parentSection) {\n            accessors.push(getSectionInstancesAccessorLiteral(currentSection)!);\n          }\n          currentSection = parentSection;\n        }\n      }\n\n      getProgram().node.body.push(\n        t.variableDeclaration(\"const\", [\n          t.variableDeclarator(\n            getterIdentifier,\n            hoistSection\n              ? hasReference\n                ? callRuntime(\n                    \"_hoist_resume\",\n                    t.stringLiteral(\n                      getResumeRegisterId(hoistSection, binding, \"hoist\"),\n                    ),\n                    ...accessors,\n                  )\n                : callRuntime(\"_hoist\", ...accessors)\n              : callRuntime(\n                  \"_el\",\n                  t.stringLiteral(getResumeRegisterId(section, binding)),\n                  ...accessors,\n                ),\n          ),\n        ]),\n      );\n    }\n  });\n}\n\nexport function writeRegisteredFns() {\n  const registeredFns = registeredFnsForProgram.get(getProgram().node);\n  const statements: t.Statement[] = [];\n  if (registeredFns) {\n    for (const registeredFn of registeredFns) {\n      let fn: t.FunctionDeclaration;\n      if (registeredFn.referencedBindings || registeredFn.referencesScope) {\n        fn = t.functionDeclaration(\n          t.identifier(registeredFn.id),\n          [scopeIdentifier],\n          t.blockStatement(toReturnedFunction(registeredFn.node)),\n        );\n      } else if (\n        registeredFn.node.type === \"FunctionDeclaration\" &&\n        registeredFn.node.id?.name === registeredFn.id\n      ) {\n        fn = registeredFn.node;\n      } else {\n        fn = t.functionDeclaration(\n          t.identifier(registeredFn.id),\n          registeredFn.node.params as t.FunctionDeclaration[\"params\"],\n          registeredFn.node.body.type === \"BlockStatement\"\n            ? registeredFn.node.body\n            : t.blockStatement([t.returnStatement(registeredFn.node.body)]),\n          registeredFn.node.generator,\n          registeredFn.node.async,\n        );\n      }\n\n      statements.push(fn);\n    }\n\n    for (const registeredFn of registeredFns) {\n      statements.push(\n        t.expressionStatement(\n          callRuntime(\n            \"_resume\",\n            t.stringLiteral(registeredFn.registerId),\n            t.identifier(registeredFn.id),\n          ),\n        ),\n      );\n    }\n\n    getProgram().node.body.push(...statements);\n  }\n}\n\nfunction toReturnedFunction(rawFn: t.Function) {\n  const fn = simplifyFunction(rawFn);\n  return fn.type === \"FunctionDeclaration\"\n    ? [fn, t.returnStatement(fn.id!)]\n    : [t.returnStatement(fn)];\n}\n\nexport function addHTMLEffectCall(\n  section: Section,\n  referencedBindings?: ReferencedBindings,\n) {\n  // TODO: this should not add an undefined statement.\n  addStatement(\"effect\", section, referencedBindings, undefined as any, false);\n}\n\nexport function writeHTMLResumeStatements(\n  path: t.NodePath<t.MarkoTagBody | t.Program>,\n) {\n  const section = getSectionForBody(path);\n  if (!section) return;\n\n  const body = path.node.body as t.Statement[];\n  const allSignals = Array.from(getSignals(section).values());\n  const scopeIdIdentifier = getScopeIdIdentifier(section);\n  forEach(section.referencedClosures, (closure) => {\n    if (closure.sources) {\n      if (isDynamicClosure(section, closure)) {\n        const closureSignal = getSignal(closure.section, closure);\n        let identifier =\n          htmlDynamicClosureInstancesIdentifier.get(closureSignal);\n        if (!identifier) {\n          htmlDynamicClosureInstancesIdentifier.set(\n            closureSignal,\n            (identifier = generateUidIdentifier(\n              closureSignal.identifier.name + \"__closures\",\n            )),\n          );\n\n          getHTMLSectionStatements(closure.section).push(\n            t.variableDeclaration(\"const\", [\n              t.variableDeclarator(\n                identifier,\n                t.newExpression(t.identifier(\"Set\"), []),\n              ),\n            ]),\n          );\n          setBindingSerializedValue(\n            closure.section,\n            closure,\n            identifier,\n            getAccessorPrefix().ClosureScopes,\n          );\n        }\n\n        setBindingSerializedValue(\n          section,\n          closure,\n          t.numericLiteral(getDynamicClosureIndex(closure, section)),\n          getAccessorPrefix().ClosureSignalIndex,\n        );\n\n        if (underTryPlaceholder(section)) {\n          const reason = getSerializeReason(section);\n          if (reason) {\n            getHTMLSectionStatements(section).push(\n              t.expressionStatement(\n                getExprIfSerialized(\n                  section,\n                  reason,\n                  callRuntime(\n                    \"_script\",\n                    getScopeIdIdentifier(section),\n                    t.stringLiteral(\n                      getResumeRegisterId(section, closure, \"pending\"),\n                    ),\n                  ),\n                ),\n              ),\n            );\n          }\n        } else {\n          addWriteScopeBuilder(section, (expr) =>\n            callRuntime(\"_subscribe\", identifier, expr),\n          );\n        }\n      }\n    }\n  });\n\n  for (let i = allSignals.length; i--; ) {\n    if (allSignals[i].effect.length) {\n      const signalRefs = allSignals[i].referencedBindings;\n      body.push(\n        t.expressionStatement(\n          callRuntime(\n            \"_script\",\n            scopeIdIdentifier,\n            t.stringLiteral(getResumeRegisterId(section, signalRefs)),\n          ),\n        ),\n      );\n    }\n  }\n\n  const debug = !isOptimize();\n  const writeScopeBuilder = getSectionWriteScopeBuilder(section);\n  const serializedLookup = getSerializedAccessors(section);\n  const serializedProperties: t.ObjectProperty[] = [];\n  const sectionSerializeReason = nonAnalyzedForceSerializedSection.has(section)\n    ? true\n    : section.serializeReason;\n  let debugVars: t.ObjectProperty[] | undefined;\n  const writeSerializedBinding = (binding: Binding) => {\n    const reason = getSerializeReason(section, binding);\n    if (!reason) return;\n    const accessor = getScopeAccessor(binding);\n    serializedLookup.delete(accessor);\n    serializedProperties.push(\n      toObjectProperty(\n        accessor,\n        sectionSerializeReason &&\n          (sectionSerializeReason === reason ||\n            (sectionSerializeReason !== true &&\n              reason !== true &&\n              compareSources(sectionSerializeReason, reason) === 0))\n          ? getDeclaredBindingExpression(binding)\n          : getExprIfSerialized(\n              section,\n              reason,\n              getDeclaredBindingExpression(binding),\n            ),\n      ),\n    );\n\n    if (debug) {\n      const { root, access } = getDebugScopeAccess(binding);\n      const locExpr =\n        root.loc &&\n        t.stringLiteral(`${root.loc.start.line}:${root.loc.start.column + 1}`);\n      (debugVars ||= []).push(\n        toObjectProperty(\n          getScopeAccessor(binding),\n          root !== binding\n            ? t.arrayExpression(\n                locExpr\n                  ? [t.stringLiteral(root.name + access), locExpr]\n                  : [t.stringLiteral(root.name + access)],\n              )\n            : locExpr || t.numericLiteral(0),\n        ),\n      );\n    }\n  };\n\n  forEach(section.bindings, (binding) => {\n    if (\n      binding.type !== BindingType.dom &&\n      binding.type !== BindingType.local\n    ) {\n      writeSerializedBinding(binding);\n    }\n  });\n\n  forEach(section.referencedLocalClosures, writeSerializedBinding);\n\n  if (section.parent) {\n    const ownerAccessor = getAccessorProp().Owner;\n    const ownerReason = getSerializeReason(section, ownerAccessor);\n    if (ownerReason) {\n      const getOwnerExpr = callRuntime(\n        \"_scope_with_id\",\n        getScopeIdIdentifier(section.parent),\n      );\n      serializedLookup.delete(ownerAccessor);\n      serializedProperties.push(\n        toObjectProperty(\n          ownerAccessor,\n          sectionSerializeReason &&\n            (sectionSerializeReason === ownerReason ||\n              (sectionSerializeReason !== true &&\n                ownerReason !== true &&\n                compareSources(sectionSerializeReason, ownerReason) === 0))\n            ? getOwnerExpr\n            : getExprIfSerialized(section, ownerReason, getOwnerExpr),\n        ),\n      );\n    }\n  }\n\n  for (const [key, { expression, reason }] of serializedLookup) {\n    serializedProperties.push(\n      toObjectProperty(key, getExprIfSerialized(section, reason, expression)),\n    );\n  }\n\n  if (sectionSerializeReason) {\n    for (const prop of serializedProperties) {\n      if (\n        prop.key.type === \"Identifier\" &&\n        prop.value.type === \"Identifier\" &&\n        prop.key.name === prop.value.name\n      ) {\n        prop.shorthand = true;\n      }\n    }\n\n    const writeScopeArgs: t.Expression[] = [\n      scopeIdIdentifier,\n      t.objectExpression(serializedProperties),\n    ];\n\n    if (debug) {\n      writeScopeArgs.push(\n        t.stringLiteral(path.hub.file.opts.filenameRelative as string),\n        section.loc && section.loc.start.line != null\n          ? t.stringLiteral(\n              `${section.loc.start.line}:${section.loc.start.column + 1}`,\n            )\n          : t.numericLiteral(0),\n      );\n\n      if (debugVars) {\n        writeScopeArgs.push(t.objectExpression(debugVars));\n      }\n    }\n\n    body.push(\n      t.expressionStatement(\n        getExprIfSerialized(\n          section,\n          sectionSerializeReason,\n          writeScopeBuilder\n            ? writeScopeBuilder(callRuntime(\"_scope\", ...writeScopeArgs))\n            : callRuntime(\"_scope\", ...writeScopeArgs),\n        ),\n      ),\n    );\n  }\n\n  const resumeClosestBranch =\n    !section.isBranch &&\n    (section.hasAbortSignal ||\n      !!section.referencedClosures ||\n      !!find(section.bindings, (binding) => binding.type === BindingType.let));\n\n  if (resumeClosestBranch) {\n    body.push(\n      t.expressionStatement(callRuntime(\"_resume_branch\", scopeIdIdentifier)),\n    );\n  }\n\n  const additionalStatements = getHTMLSectionStatements(section);\n  if (body.length || additionalStatements.length) {\n    body.unshift(\n      t.variableDeclaration(\"const\", [\n        t.variableDeclarator(scopeIdIdentifier, callRuntime(\"_scope_id\")),\n      ]),\n      ...additionalStatements,\n    );\n  }\n\n  if (debug) {\n    forEach(section.bindings, (binding) => {\n      if (binding.hoists && binding.type !== BindingType.dom) {\n        body.push(\n          t.expressionStatement(\n            callRuntime(\"_assert_hoist\", t.identifier(binding.name)),\n          ),\n        );\n      }\n    });\n  }\n\n  const returnIdentifier = getSectionReturnValueIdentifier(section);\n  if (returnIdentifier !== undefined) {\n    body.push(t.returnStatement(returnIdentifier));\n  }\n}\n\nexport function getSetup(section: Section) {\n  return section.hoistedTo\n    ? getSignal(section, undefined)\n    : getSignals(section).get(undefined);\n}\n\nfunction replaceRenderNode(node: t.Node, signal?: Signal) {\n  return (\n    replaceAssignedNode(node) ||\n    replaceBindingReadNode(node, signal) ||\n    replaceRegisteredFunctionNode(node)\n  );\n}\n\nfunction replaceEffectNode(node: t.Node) {\n  return replaceAssignedNode(node) || replaceBindingReadNode(node);\n}\n\nfunction replaceBindingReadNode(node: t.Node, signal?: Signal) {\n  switch (node.type) {\n    case \"Identifier\":\n    case \"MemberExpression\":\n    case \"OptionalMemberExpression\": {\n      return getReadReplacement(node, signal);\n    }\n    case \"CallExpression\": {\n      const { extra } = node.callee;\n\n      if (extra?.read) {\n        const { binding, getter } = extra.read;\n\n        if (binding.type === BindingType.dom && !getter) {\n          const replacement = createScopeReadExpression(\n            binding,\n            extra!.section,\n          );\n          return isOptimize()\n            ? replacement\n            : callRuntime(\"_el_read\", replacement);\n        } else if (getter?.hoisted) {\n          node.callee = t.callExpression(\n            getBindingGetterIdentifier(binding, getter.hoisted),\n            [getScopeExpression(extra.section!, getter.hoisted)],\n          );\n        }\n      }\n      break;\n    }\n  }\n}\n\nconst updateExpressions = new WeakSet<t.Node>();\nfunction replaceAssignedNode(node: t.Node): t.Node | undefined {\n  switch (node.type) {\n    case \"ExpressionStatement\": {\n      if (\n        node.expression.type === \"BinaryExpression\" &&\n        updateExpressions.delete(node.expression)\n      ) {\n        node.expression = node.expression.left as t.Expression;\n      }\n\n      if (\n        node.expression.type === \"CallExpression\" &&\n        updateExpressions.delete(node.expression)\n      ) {\n        node.expression.callee = node.expression\n          .arguments[0] as t.MemberExpression;\n        node.expression.arguments = [node.expression.arguments[1]];\n      }\n      break;\n    }\n    case \"UpdateExpression\": {\n      const { extra } = node.argument;\n      if (isAssignedBindingExtra(extra)) {\n        let builtAssignment = getBuildAssignment(extra)?.(\n          extra.section,\n          t.binaryExpression(\n            node.operator === \"++\" ? \"+\" : \"-\",\n            createScopeReadExpression(extra.assignment, extra.section),\n            t.numericLiteral(1),\n          ),\n        );\n        if (builtAssignment) {\n          if (!node.prefix) {\n            builtAssignment = t.binaryExpression(\n              node.operator === \"++\" ? \"-\" : \"+\",\n              builtAssignment,\n              t.numericLiteral(1),\n            );\n            updateExpressions.add(builtAssignment);\n          }\n\n          return builtAssignment;\n        }\n      }\n      break;\n    }\n    case \"AssignmentExpression\":\n      switch (node.left.type) {\n        case \"Identifier\": {\n          const { extra } = node.left;\n          return (\n            (isAssignedBindingExtra(extra) &&\n              getBuildAssignment(extra)?.(\n                extra.section,\n                node.operator === \"=\"\n                  ? node.right\n                  : t.binaryExpression(\n                      node.operator.slice(\n                        0,\n                        -1,\n                      ) as t.BinaryExpression[\"operator\"],\n                      createScopeReadExpression(\n                        extra.assignment,\n                        extra.section,\n                      ),\n                      node.right,\n                    ),\n              )) ||\n            (extra?.assignment &&\n              withLeadingComment(node.right, getDebugName(extra.assignment)))\n          );\n        }\n        case \"ArrayPattern\":\n        case \"ObjectPattern\": {\n          let params: undefined | t.Identifier[];\n          let assignments: undefined | t.Expression[];\n          forEachIdentifier(node.left, (id) => {\n            const { extra } = id;\n            if (isAssignedBindingExtra(extra)) {\n              const buildAssignment = getBuildAssignment(extra);\n              if (buildAssignment) {\n                const uid = generateUid(id.name);\n                const builtAssignment = buildAssignment(\n                  extra.section,\n                  t.identifier(uid),\n                );\n                if (builtAssignment) {\n                  id.name = uid;\n                  (params ||= []).push(t.identifier(uid));\n                  (assignments ||= []).push(builtAssignment);\n                  return;\n                }\n              }\n            }\n\n            if (extra?.assignment) {\n              (params ||= []).push(t.identifier(id.name));\n            }\n          });\n          if (assignments || params) {\n            const resultId = generateUid(\"result\");\n            return t.callExpression(\n              t.arrowFunctionExpression(\n                [t.identifier(resultId), ...(params || [])],\n                t.sequenceExpression([\n                  t.assignmentExpression(\n                    \"=\",\n                    node.left,\n                    t.identifier(resultId),\n                  ),\n                  ...(assignments || []),\n                  t.identifier(resultId),\n                ]),\n              ),\n              [node.right],\n            );\n          }\n          break;\n        }\n      }\n      break;\n  }\n}\n\nfunction getBuildAssignment(extra: AssignedBindingExtra) {\n  const { assignmentTo, assignment } = extra;\n  if (assignmentTo) {\n    return (section: Section, value: t.Expression) => {\n      const replacement = callRuntime(\n        \"_call\",\n        createScopeReadExpression(assignmentTo, section),\n        value,\n      );\n      updateExpressions.add(replacement);\n      return replacement;\n    };\n  }\n\n  return getSignal(assignment.section, assignment).buildAssignment;\n}\n\nconst registeredFnsForProgram = new WeakMap<\n  t.Program,\n  {\n    id: string;\n    registerId: string;\n    node: t.Function;\n    section: Section;\n    referencesScope: undefined | boolean;\n    referencedBindings: ReferencedBindings;\n  }[]\n>();\nexport function replaceRegisteredFunctionNode(node: t.Node) {\n  switch (node.type) {\n    case \"ClassMethod\": {\n      const replacement = getRegisteredFnExpression(node);\n      return replacement && t.classProperty(node.key, replacement);\n    }\n    case \"ClassPrivateMethod\": {\n      const replacement = getRegisteredFnExpression(node);\n      return replacement && t.classPrivateProperty(node.key, replacement);\n    }\n    case \"ObjectMethod\": {\n      const replacement = getRegisteredFnExpression(node);\n      return replacement && t.objectProperty(node.key, replacement);\n    }\n    case \"ArrowFunctionExpression\":\n    case \"FunctionExpression\": {\n      return getRegisteredFnExpression(node);\n    }\n    case \"FunctionDeclaration\": {\n      const replacement = getRegisteredFnExpression(node);\n      if (replacement) {\n        return t.variableDeclaration(\"const\", [\n          t.variableDeclarator(node.id!, replacement),\n        ]);\n      }\n      break;\n    }\n  }\n}\n\nfunction getRegisteredFnExpression(node: t.Function) {\n  const { extra } = node;\n  if (isRegisteredFnExtra(extra)) {\n    const id = extra.name;\n    const referencesScope = extra.referencesScope;\n    const referencedBindings = extra.referencedBindingsInFunction;\n    let registeredFns = registeredFnsForProgram.get(getProgram().node);\n    if (!registeredFns) {\n      registeredFnsForProgram.set(getProgram().node, (registeredFns = []));\n    }\n\n    registeredFns.push({\n      id,\n      node,\n      registerId: extra.registerId,\n      section: extra.section,\n      referencesScope,\n      referencedBindings,\n    });\n\n    if (referencesScope || referencedBindings) {\n      return t.callExpression(t.identifier(id), [scopeIdentifier]);\n    } else {\n      return t.identifier(id);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/simplify-fn.ts",
    "content": "import { types as t } from \"@marko/compiler\";\n\n/**\n * Given any arbitrary function type will normalize method like functions into expressions.\n */\nexport function simplifyFunction(\n  fn: t.Function,\n): t.FunctionDeclaration | t.FunctionExpression | t.ArrowFunctionExpression {\n  switch (fn.type) {\n    case \"FunctionDeclaration\":\n    case \"FunctionExpression\":\n    case \"ArrowFunctionExpression\":\n      return fn;\n    default:\n      return t.functionExpression(\n        null,\n        fn.params as t.FunctionDeclaration[\"params\"],\n        fn.body,\n        fn.async,\n        fn.generator,\n      );\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/state.ts",
    "content": "import type { types as t } from \"@marko/compiler\";\nimport { getProgram } from \"@marko/compiler/babel-utils\";\n\nimport type { Section } from \"./sections\";\n\nexport const createProgramState = <T>(init: () => T) => {\n  const map = new WeakMap<t.NodePath<t.Program>, T>();\n  return [\n    () => {\n      let state = map.get(getProgram());\n      if (!state) {\n        map.set(getProgram(), (state = init()));\n      }\n      return state;\n    },\n    (value: T) => {\n      map.set(getProgram(), value);\n    },\n  ] as const;\n};\n\nexport function createSectionState<T = unknown>(\n  key: string,\n  init?: ((section: Section) => T) | (() => T),\n) {\n  return [\n    (section: Section): T => {\n      const arrayOfSectionData = (getProgram().state[key] ??= {});\n      const sectionData = (arrayOfSectionData[section.id] ??=\n        init && init(section));\n      return sectionData as T;\n    },\n    (section: Section, value: T): void => {\n      const arrayOfSectionData = (getProgram().state[key] ??= {});\n      arrayOfSectionData[section.id] = value;\n    },\n  ] as const;\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/tag-name-type.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport type { MarkoTagExtra } from \"@marko/compiler/babel-types\";\nimport {\n  getProgram,\n  getTagDef,\n  isNativeTag,\n  loadFileForTag,\n  resolveTagImport,\n} from \"@marko/compiler/babel-utils\";\n\nimport { isCoreTag } from \"./is-core-tag\";\n\ndeclare module \"@marko/compiler/dist/types\" {\n  export interface MarkoTagExtra {\n    tagNameType?: TagNameType;\n    tagNameNullable?: boolean;\n    tagNameDynamic?: boolean;\n    tagNameImported?: string;\n  }\n}\n\nexport enum TagNameType {\n  NativeTag,\n  CustomTag,\n  DynamicTag,\n  AttributeTag,\n}\n\nconst MARKO_FILE_REG = /^<.*>$|\\.marko$/;\n\nexport default function analyzeTagNameType(\n  tag: t.NodePath<t.MarkoTag>,\n  allowDynamic?: boolean,\n) {\n  const extra = (tag.node.extra ??= {});\n\n  if (extra.tagNameType === undefined) {\n    const name = tag.get(\"name\");\n    if (name.isStringLiteral()) {\n      extra.tagNameType =\n        name.node.value[0] === \"@\"\n          ? TagNameType.AttributeTag\n          : isNativeTag(tag)\n            ? TagNameType.NativeTag\n            : TagNameType.CustomTag;\n      extra.tagNameNullable = extra.tagNameDynamic = false;\n    } else if (name.isTemplateLiteral() && name.node.quasis.length === 1) {\n      extra.tagNameType = TagNameType.NativeTag;\n      extra.tagNameNullable = extra.tagNameDynamic = false;\n    } else if (name.isIdentifier()) {\n      analyzeExpressionTagName(name, extra);\n      extra.tagNameDynamic = !extra.tagNameImported;\n    } else {\n      analyzeExpressionTagName(name, extra);\n      extra.tagNameDynamic = true;\n    }\n\n    if (\n      !extra.tagNameDynamic &&\n      extra.tagNameType === TagNameType.CustomTag &&\n      !isCoreTag(tag)\n    ) {\n      const childFile = loadFileForTag(tag);\n      if (\n        getTagDef(tag)?.renderer ||\n        childFile?.ast.program.extra!.featureType === \"class\"\n      ) {\n        extra.tagNameType = TagNameType.DynamicTag;\n        extra.tagNameDynamic = true;\n        extra.featureType = \"class\";\n        (getProgram().node.extra ??= {}).needsCompat = true;\n      } else if (!childFile) {\n        extra.tagNameType = TagNameType.DynamicTag;\n        extra.tagNameDynamic = true;\n      }\n    }\n  }\n\n  return !allowDynamic && extra.tagNameDynamic\n    ? TagNameType.DynamicTag\n    : extra.tagNameType!;\n}\n\nfunction analyzeExpressionTagName(\n  name: t.NodePath<t.Expression>,\n  extra: MarkoTagExtra,\n) {\n  const pending = [name] as t.NodePath<t.Expression>[];\n  let path: (typeof pending)[0] | undefined;\n  let type: TagNameType | undefined;\n  let nullable = false;\n  let tagNameImported: string | false | undefined;\n\n  while ((path = pending.pop()) && type !== TagNameType.DynamicTag) {\n    if (path.isConditionalExpression()) {\n      pending.push(path.get(\"consequent\"));\n\n      if (path.node.alternate) {\n        pending.push(path.get(\"alternate\"));\n      }\n    } else if (path.isLogicalExpression()) {\n      if (path.node.operator === \"||\") {\n        pending.push(path.get(\"left\"));\n      } else {\n        nullable = true;\n      }\n\n      pending.push(path.get(\"right\"));\n    } else if (path.isAssignmentExpression()) {\n      pending.push(path.get(\"right\"));\n    } else if (path.isBinaryExpression()) {\n      type =\n        path.node.operator !== \"+\" ||\n        type === undefined ||\n        type === TagNameType.NativeTag\n          ? TagNameType.NativeTag\n          : TagNameType.DynamicTag;\n    } else if (path.isStringLiteral() || path.isTemplateLiteral()) {\n      type =\n        type === undefined || type === TagNameType.NativeTag\n          ? TagNameType.NativeTag\n          : TagNameType.DynamicTag;\n    } else if (path.isNullLiteral()) {\n      nullable = true;\n    } else if (path.isIdentifier()) {\n      if (path.node.name === \"undefined\") {\n        nullable = true;\n        continue;\n      }\n\n      const binding = path.scope.getBinding(path.node.name);\n\n      if (!binding) {\n        type = TagNameType.DynamicTag;\n        continue;\n      }\n\n      if (binding.kind === \"module\") {\n        const decl = binding.path.parent as t.ImportDeclaration;\n        if (\n          MARKO_FILE_REG.test(decl.source.value) &&\n          decl.specifiers.some((it) => t.isImportDefaultSpecifier(it))\n        ) {\n          const resolvedImport =\n            resolveTagImport(name, decl.source.value) || decl.source.value;\n          if (type === undefined) {\n            type = TagNameType.CustomTag;\n            tagNameImported = resolvedImport;\n          } else if (type === TagNameType.NativeTag) {\n            type = TagNameType.DynamicTag;\n            tagNameImported = undefined;\n          } else if (tagNameImported !== resolvedImport) {\n            tagNameImported = undefined;\n          }\n        } else {\n          type = TagNameType.DynamicTag;\n        }\n\n        continue;\n      }\n\n      const bindingTag = binding.path as t.NodePath<t.MarkoTag>;\n\n      if (\n        bindingTag.isMarkoTag() &&\n        (binding.kind as typeof binding.kind & \"local\") === \"local\"\n      ) {\n        const bindingTagName = (bindingTag.get(\"name\").node as t.StringLiteral)\n          .value;\n\n        if (bindingTagName === \"const\") {\n          pending.push(\n            (\n              bindingTag.get(\"attributes\")[0] as t.NodePath<t.MarkoAttribute>\n            ).get(\"value\"),\n          );\n          continue;\n        }\n\n        if (bindingTagName === \"let\") {\n          type = TagNameType.DynamicTag;\n          continue;\n          // TODO: Optimize for when we are certain that this is either always a string or always a custom tag\n        }\n\n        continue;\n      }\n\n      type = TagNameType.DynamicTag;\n    } else {\n      type = TagNameType.DynamicTag;\n    }\n  }\n\n  // DOM implementation requires non strings actually be a dynamic tag call.\n  extra.tagNameType = type ?? TagNameType.DynamicTag;\n  extra.tagNameNullable = nullable;\n\n  if (type === TagNameType.CustomTag && tagNameImported) {\n    extra.tagNameImported = tagNameImported;\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/to-first-expression-or-block.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nexport function toFirstExpressionOrBlock(stmts: t.Statement[]) {\n  if (stmts.length === 1 && t.isExpressionStatement(stmts[0])) {\n    const { expression } = stmts[0];\n    switch (expression.type) {\n      case \"ObjectExpression\":\n      case \"AssignmentExpression\":\n        return toParenthesizedExpressionIfNeeded(expression);\n      default:\n        return expression;\n    }\n  }\n\n  return t.blockStatement(stmts);\n}\n\nexport function toParenthesizedExpressionIfNeeded(expr: t.Expression) {\n  switch (expr.type) {\n    case \"ObjectExpression\":\n    case \"AssignmentExpression\":\n      return t.parenthesizedExpression(expr);\n    default:\n      return expr;\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/to-first-statement-or-block.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nexport default function toFirstStatementOrBlock(\n  body: t.BlockStatement | t.Statement[],\n) {\n  if (Array.isArray(body)) {\n    if (body.length === 1) {\n      return body[0];\n    }\n\n    return t.blockStatement(body);\n  }\n\n  return body;\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/to-property-name.ts",
    "content": "import { types as t } from \"@marko/compiler\";\n\nexport function isValidPropertyIdentifier(name: string) {\n  return /^[a-z_$][a-z0-9_$]*$/i.test(name);\n}\n\nexport function toPropertyName(name: string) {\n  if (isValidPropertyIdentifier(name)) {\n    return t.identifier(name);\n  } else if (/^(?:0|[1-9][0-9]*)$/.test(name)) {\n    return t.numericLiteral(parseInt(name, 10));\n  }\n\n  return t.stringLiteral(name);\n}\n\nexport function toObjectProperty(name: string, value: t.Expression) {\n  return t.objectProperty(toPropertyName(name), value);\n}\n\nexport function toMemberExpression(\n  object: t.Expression,\n  key: string,\n): t.MemberExpression;\nexport function toMemberExpression(\n  object: t.Expression,\n  key: string,\n  optional: false | undefined,\n): t.MemberExpression;\nexport function toMemberExpression(\n  object: t.Expression,\n  key: string,\n  optional: true,\n): t.OptionalMemberExpression;\nexport function toMemberExpression(\n  object: t.Expression,\n  key: string,\n  optional?: boolean,\n): t.MemberExpression | t.OptionalMemberExpression;\nexport function toMemberExpression(\n  object: t.Expression,\n  key: string,\n  optional?: boolean,\n): t.MemberExpression | t.OptionalMemberExpression {\n  const prop = toPropertyName(key);\n  const computed = prop.type !== \"Identifier\";\n  return optional\n    ? t.optionalMemberExpression(object, prop, computed, true)\n    : t.memberExpression(object, prop, computed);\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/translate-attrs.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport { isAttributeTag } from \"@marko/compiler/babel-utils\";\n\nimport { buildForRuntimeCall, getForType } from \"../core/for\";\nimport { scopeIdentifier } from \"../visitors/program\";\nimport {\n  type BindingPropTree,\n  getKnownFromPropTree,\n} from \"./binding-prop-tree\";\nimport { getSharedUid } from \"./generate-uid\";\nimport { getKnownAttrValues } from \"./get-known-attr-values\";\nimport { getAttributeTagParent } from \"./get-parent-tag\";\nimport { getTagName } from \"./get-tag-name\";\nimport { isOutputHTML } from \"./marko-config\";\nimport {\n  type AttrTagLookup,\n  getAttrTagIdentifier,\n} from \"./nested-attribute-tags\";\nimport { toArray } from \"./optional\";\nimport { getScopeAccessor } from \"./references\";\nimport { callRuntime } from \"./runtime\";\nimport {\n  getScopeIdIdentifier,\n  getSection,\n  getSectionRegisterReasons,\n} from \"./sections\";\nimport { isReasonDynamic } from \"./serialize-reasons\";\nimport { getResumeRegisterId } from \"./signals\";\nimport { toObjectProperty, toPropertyName } from \"./to-property-name\";\n\nconst contentProps = new WeakSet<t.Node>();\ntype ContentKey = \"renderBody\" | \"content\";\n\nexport function translateAttrs(\n  tag: t.NodePath<t.MarkoTag>,\n  propTree: BindingPropTree | true = true,\n  skip?: Set<string>,\n  statements: t.Statement[] = [],\n  contentKey: ContentKey = \"content\",\n) {\n  const properties: t.ObjectExpression[\"properties\"] = [];\n  const attrTagLookup = tag.node.extra?.attributeTags;\n  const seen = new Set(skip);\n  if (attrTagLookup) {\n    for (const name in attrTagLookup) {\n      const attrTagMeta = attrTagLookup[name];\n      if (\n        !seen.has(attrTagMeta.name) &&\n        getKnownFromPropTree(propTree, attrTagMeta.name)\n      ) {\n        seen.add(attrTagMeta.name);\n        if (attrTagMeta.dynamic) {\n          statements.push(\n            t.variableDeclaration(\"let\", [\n              t.variableDeclarator(getAttrTagIdentifier(attrTagMeta)),\n            ]),\n          );\n          properties.push(\n            toObjectProperty(\n              attrTagMeta.name,\n              getAttrTagIdentifier(attrTagMeta),\n            ),\n          );\n        }\n      }\n    }\n\n    const attrTags = tag.node.body.attributeTags\n      ? (tag.get(\"body\").get(\"body\") as ReturnType<\n          typeof tag.get<\"attributeTags\">\n        >)\n      : tag.get(\"attributeTags\");\n    for (let i = 0; i < attrTags.length; i++) {\n      const child = attrTags[i];\n      if (child.isMarkoTag()) {\n        if (isAttributeTag(child)) {\n          const attrTagMeta = attrTagLookup[getTagName(child)];\n\n          if (skip?.has(attrTagMeta.name)) continue;\n\n          if (attrTagMeta.dynamic) {\n            i = addDynamicAttrTagStatements(\n              attrTags,\n              i,\n              attrTagLookup,\n              statements,\n              propTree,\n              contentKey,\n            );\n          } else {\n            const translatedAttrTag = translateAttrs(\n              child,\n              getKnownFromPropTree(propTree, attrTagMeta.name),\n              undefined,\n              statements,\n              contentKey,\n            );\n\n            if (attrTagMeta.repeated) {\n              const prevProp = findObjectProperty(attrTagMeta.name, properties);\n              if (prevProp) {\n                prevProp.value = callRuntime(\n                  \"attrTags\",\n                  prevProp.value as t.Expression,\n                  propsToExpression(translatedAttrTag.properties),\n                );\n              } else {\n                properties.push(\n                  toObjectProperty(\n                    attrTagMeta.name,\n                    callRuntime(\n                      \"attrTag\",\n                      propsToExpression(translatedAttrTag.properties),\n                    ),\n                  ),\n                );\n              }\n            } else {\n              properties.push(\n                toObjectProperty(\n                  attrTagMeta.name,\n                  callRuntime(\n                    \"attrTag\",\n                    propsToExpression(translatedAttrTag.properties),\n                  ),\n                ),\n              );\n            }\n          }\n        } else {\n          i = addDynamicAttrTagStatements(\n            attrTags,\n            i,\n            attrTagLookup,\n            statements,\n            propTree,\n            contentKey,\n          );\n        }\n      }\n    }\n  }\n\n  if (!seen.has(contentKey) && getKnownFromPropTree(propTree, contentKey)) {\n    const contentExpression = buildContent(tag.get(\"body\"));\n    if (contentExpression) {\n      const contentProp = t.objectProperty(\n        t.identifier(contentKey),\n        contentExpression,\n      );\n      seen.add(contentKey);\n      contentProps.add(contentProp);\n      properties.push(contentProp);\n    }\n  }\n\n  const { attributes } = tag.node;\n  for (let i = attributes.length; i--; ) {\n    const attr = attributes[i];\n    const { value } = attr;\n    if (t.isMarkoSpreadAttribute(attr)) {\n      properties.push(t.spreadElement(value));\n    } else if (\n      !seen.has(attr.name) &&\n      getKnownFromPropTree(propTree, attr.name)\n    ) {\n      seen.add(attr.name);\n      properties.push(toObjectProperty(attr.name, value));\n    }\n  }\n\n  properties.reverse();\n\n  return { properties, statements };\n}\n\nexport function getTranslatedBodyContentProperty(\n  props: t.ObjectExpression[\"properties\"],\n) {\n  for (const prop of props) {\n    if (contentProps.has(prop)) {\n      return prop as unknown as t.ObjectProperty & { value: t.Expression };\n    }\n  }\n}\n\nexport function addDynamicAttrTagStatements(\n  attrTags: t.NodePath<t.MarkoTag[\"attributeTags\"][number]>[],\n  index: number,\n  attrTagLookup: AttrTagLookup,\n  statements: t.Statement[],\n  propTree: BindingPropTree | true,\n  contentKey: ContentKey = \"content\",\n): number {\n  const tag = attrTags[index];\n  if (tag.isMarkoTag()) {\n    if (isAttributeTag(tag)) {\n      const attrTagMeta = attrTagLookup[getTagName(tag)];\n      const attrTagExport = getKnownFromPropTree(propTree, attrTagMeta.name);\n      if (attrTagExport && attrTagMeta.dynamic) {\n        const translatedAttrTag = translateAttrs(\n          tag,\n          attrTagExport,\n          undefined,\n          statements,\n          contentKey,\n        );\n        if (attrTagMeta.repeated) {\n          statements.push(\n            t.expressionStatement(\n              t.assignmentExpression(\n                \"=\",\n                getAttrTagIdentifier(attrTagMeta),\n                callRuntime(\n                  \"attrTags\",\n                  getAttrTagIdentifier(attrTagMeta),\n                  propsToExpression(translatedAttrTag.properties),\n                ),\n              ),\n            ),\n          );\n        } else {\n          statements.push(\n            t.expressionStatement(\n              t.assignmentExpression(\n                \"=\",\n                getAttrTagIdentifier(attrTagMeta),\n                callRuntime(\n                  \"attrTag\",\n                  propsToExpression(translatedAttrTag.properties),\n                ),\n              ),\n            ),\n          );\n        }\n      }\n    } else {\n      switch (getTagName(tag)) {\n        case \"if\":\n          return translateIfAttrTag(\n            attrTags,\n            index,\n            attrTagLookup,\n            statements,\n            propTree,\n            contentKey,\n          );\n\n        case \"for\": {\n          return translateForAttrTag(\n            attrTags,\n            index,\n            attrTagLookup,\n            statements,\n            propTree,\n            contentKey,\n          );\n        }\n      }\n    }\n  }\n\n  return index;\n}\n\nexport function propsToExpression(\n  props: t.ObjectExpression[\"properties\"],\n): t.Expression {\n  return props.length === 1 && t.isSpreadElement(props[0])\n    ? props[0].argument\n    : t.objectExpression(props);\n}\n\nfunction translateForAttrTag(\n  attrTags: t.NodePath<t.MarkoTag[\"attributeTags\"][number]>[],\n  index: number,\n  attrTagLookup: AttrTagLookup,\n  statements: t.Statement[],\n  propTree: BindingPropTree | true,\n  contentKey: ContentKey,\n) {\n  const forTag = attrTags[index] as t.NodePath<t.MarkoTag>;\n  const bodyStatements: t.Statement[] = [];\n  addAllAttrTagsAsDynamic(\n    forTag,\n    attrTagLookup,\n    bodyStatements,\n    propTree,\n    contentKey,\n  );\n  statements.push(\n    buildForRuntimeCall(\n      getForType(forTag.node)!,\n      getKnownAttrValues(forTag.node),\n      forTag.node.body.params,\n      bodyStatements,\n    ),\n  );\n\n  return index;\n}\n\nfunction translateIfAttrTag(\n  attrTags: t.NodePath<t.MarkoTag[\"attributeTags\"][number]>[],\n  index: number,\n  attrTagLookup: AttrTagLookup,\n  statements: t.Statement[],\n  propTree: BindingPropTree | true,\n  contentKey: ContentKey,\n) {\n  const ifTag = attrTags[index] as t.NodePath<t.MarkoTag>;\n  const consequentStatements: t.Statement[] = [];\n  let ifStatement = t.ifStatement(\n    getConditionTestValue(ifTag)!,\n    t.blockStatement(consequentStatements),\n  );\n\n  statements.push(ifStatement);\n  addAllAttrTagsAsDynamic(\n    ifTag,\n    attrTagLookup,\n    consequentStatements,\n    propTree,\n    contentKey,\n  );\n\n  let nextIndex = index + 1;\n  while (nextIndex < attrTags.length) {\n    const nextTag = attrTags[nextIndex];\n    if (nextTag.isMarkoTag()) {\n      switch (getTagName(nextTag)) {\n        case \"else-if\":\n        case \"else\": {\n          const testValue = getConditionTestValue(nextTag);\n          const alternateStatements: t.Statement[] = [];\n          addAllAttrTagsAsDynamic(\n            nextTag,\n            attrTagLookup,\n            alternateStatements,\n            propTree,\n            contentKey,\n          );\n\n          if (testValue) {\n            ifStatement.alternate = ifStatement = t.ifStatement(\n              testValue,\n              t.blockStatement(alternateStatements),\n            );\n\n            nextIndex++;\n            continue;\n          } else {\n            ifStatement.alternate = t.blockStatement(alternateStatements);\n            break;\n          }\n        }\n      }\n    }\n\n    break;\n  }\n\n  return nextIndex - 1;\n}\n\nfunction addAllAttrTagsAsDynamic(\n  tag: t.NodePath<t.MarkoTag>,\n  attrTagLookup: AttrTagLookup,\n  statements: t.Statement[],\n  propTree: BindingPropTree | true,\n  contentKey: ContentKey,\n) {\n  const attrTags = tag.node.body.attributeTags\n    ? (tag.get(\"body\").get(\"body\") as ReturnType<\n        typeof tag.get<\"attributeTags\">\n      >)\n    : tag.get(\"attributeTags\");\n  for (let i = 0; i < attrTags.length; i++) {\n    i = addDynamicAttrTagStatements(\n      attrTags,\n      i,\n      attrTagLookup,\n      statements,\n      propTree,\n      contentKey,\n    );\n  }\n}\n\nfunction findObjectProperty(\n  name: string,\n  props: t.ObjectExpression[\"properties\"],\n) {\n  for (const prop of props) {\n    if (prop.type === \"ObjectProperty\") {\n      switch (prop.key.type) {\n        case \"StringLiteral\":\n          if (prop.key.value === name) {\n            return prop;\n          }\n          break;\n        case \"Identifier\":\n          if (prop.key.name === name) {\n            return prop;\n          }\n          break;\n      }\n    }\n  }\n\n  return false;\n}\n\nfunction getConditionTestValue({\n  node: { attributes },\n}: t.NodePath<t.MarkoTag>) {\n  return attributes.length === 1 ? attributes[0].value : undefined;\n}\n\nfunction buildContent(body: t.NodePath<t.MarkoTagBody>) {\n  const bodySection = body.node.extra?.section;\n  if (bodySection) {\n    if (isOutputHTML()) {\n      const serialized = getSectionRegisterReasons(bodySection);\n      let dynamicSerializeReason =\n        !!bodySection.paramReasonGroups ||\n        isReasonDynamic(bodySection.serializeReason);\n      if (!dynamicSerializeReason) {\n        for (const reason of bodySection.serializeReasons.values()) {\n          if (isReasonDynamic(reason)) {\n            dynamicSerializeReason = true;\n            break;\n          }\n        }\n      }\n\n      if (dynamicSerializeReason) {\n        body.node.body.unshift(\n          t.variableDeclaration(\"const\", [\n            t.variableDeclarator(\n              t.identifier(\n                getSharedUid(`scope${bodySection.id}_reason`, bodySection),\n              ),\n              callRuntime(\"_scope_reason\"),\n            ),\n          ]) as any,\n        );\n      } else {\n        body.node.body.unshift(\n          t.expressionStatement(callRuntime(\"_scope_reason\")) as any,\n        );\n      }\n\n      return callRuntime(\n        serialized ? \"_content_resume\" : \"_content\",\n        t.stringLiteral(getResumeRegisterId(bodySection, \"content\")),\n        t.arrowFunctionExpression(\n          body.node.params,\n          t.blockStatement(body.node.body),\n        ),\n        serialized\n          ? getScopeIdIdentifier(\n              getSection(\n                getAttributeTagParent(\n                  body.parentPath as t.NodePath<t.MarkoTag>,\n                ),\n              )!,\n            )\n          : undefined,\n      );\n    } else {\n      return t.callExpression(\n        t.identifier(bodySection.name),\n        bodySection.referencedLocalClosures\n          ? [\n              scopeIdentifier,\n              t.objectExpression(\n                toArray(bodySection.referencedLocalClosures, (ref) => {\n                  const accessor = getScopeAccessor(ref, true);\n                  const isShorthand = accessor === ref.name;\n                  return t.objectProperty(\n                    toPropertyName(accessor),\n                    t.identifier(ref.name),\n                    false,\n                    isShorthand,\n                  );\n                }),\n              ),\n            ]\n          : [scopeIdentifier],\n      );\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/translate-var.ts",
    "content": "import { types as t } from \"@marko/compiler\";\n\nimport { forEachIdentifierPath } from \"./for-each-identifier\";\nimport { generateUidIdentifier } from \"./generate-uid\";\nimport { getDeclaredBindingExpression } from \"./get-defined-binding-expression\";\nimport { toArray } from \"./optional\";\nimport { getCanonicalBinding } from \"./references\";\nimport { getOrCreateSection } from \"./sections\";\nimport { getSerializeReason } from \"./serialize-reasons\";\nimport { toPropertyName } from \"./to-property-name\";\n\nexport default function translateVar(\n  tag: t.NodePath<t.MarkoTag>,\n  initialValue: t.Expression,\n  kind: \"let\" | \"const\" = \"const\",\n) {\n  const {\n    node: { var: tagVar },\n  } = tag;\n\n  if (!tagVar) {\n    return;\n  }\n\n  const tagSection = getOrCreateSection(tag);\n\n  forEachIdentifierPath(tag.get(\"var\"), (id) => {\n    if (id.node === tagVar) return;\n\n    const idExtra = id.node.extra;\n    if (!idExtra) return;\n\n    const binding = idExtra.binding;\n    if (!binding?.upstreamAlias) return;\n\n    if (binding.assignmentSections && binding.property !== undefined) {\n      const changeName = binding.property + \"Change\";\n      const changeBinding =\n        binding.upstreamAlias.propertyAliases.get(changeName);\n      if (changeBinding && changeName !== changeBinding.name) {\n        // add a new property to the destructure list when a change handler is implicitly added\n        // eg by assigning to a destructured property.\n        const pattern = getDestructurePattern(id);\n        if (pattern) {\n          pattern.unshiftContainer(\n            \"properties\",\n            t.objectProperty(\n              t.identifier(changeName),\n              t.identifier(changeBinding.name),\n            ),\n          );\n        }\n      }\n    }\n\n    if (\n      binding.section !== tagSection &&\n      binding.excludeProperties !== undefined &&\n      getSerializeReason(binding.section, binding)\n    ) {\n      // hoist rest aliases which are in a different section to be in the owner section so that it can be serialized.\n      const restPath = id.parentPath as t.NodePath<t.RestElement>;\n      if (restPath.type !== \"RestElement\") {\n        throw restPath.buildCodeFrameError(\n          \"Invalid compiler state, found a rest binding outside of a rest element.\",\n        );\n      }\n\n      let curPath = tag.parentPath as t.NodePath | null;\n      while (curPath) {\n        if (curPath.node.extra?.section === binding.section) {\n          const canonicalUpstreamAlias = getCanonicalBinding(\n            binding.upstreamAlias,\n          );\n          const props: t.ObjectPattern[\"properties\"] = toArray(\n            binding.excludeProperties,\n            (name) =>\n              t.objectProperty(\n                toPropertyName(name),\n                generateUidIdentifier(name),\n              ),\n          );\n\n          props.push(restPath.node);\n          curPath.insertBefore(\n            t.variableDeclaration(kind, [\n              t.variableDeclarator(\n                t.objectPattern(props),\n                canonicalUpstreamAlias.nullable\n                  ? t.logicalExpression(\n                      \"||\",\n                      getDeclaredBindingExpression(canonicalUpstreamAlias),\n                      t.objectExpression([]),\n                    )\n                  : getDeclaredBindingExpression(canonicalUpstreamAlias),\n              ),\n            ]),\n          );\n          break;\n        }\n\n        curPath = curPath.parentPath;\n      }\n\n      restPath.remove();\n    }\n  });\n\n  tag.insertBefore(\n    t.variableDeclaration(kind, [t.variableDeclarator(tagVar, initialValue)]),\n  );\n}\n\nfunction getDestructurePattern(id: t.NodePath<t.Identifier>) {\n  let cur: t.NodePath | null = id;\n\n  while (cur) {\n    if (cur.node.type === \"ObjectPattern\") {\n      return cur as t.NodePath<t.ObjectPattern>;\n    }\n    cur = cur.parentPath;\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/traverse.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nexport const skip = Symbol(\"skip\");\n\ntype VisitValue = null | void | t.Node | t.Node[];\ntype VisitKeys<T> = (string | number) &\n  (T extends T\n    ? {\n        [K in keyof T]: T[K] extends VisitValue ? K : never;\n      }[keyof T]\n    : never);\n\nexport function traverseReplace<T, K extends VisitKeys<T>, S>(\n  container: T,\n  key: K,\n  enter: (node: t.Node, state?: S) => t.Node | void,\n  state?: S,\n): void {\n  const node = container[key] as VisitValue;\n  if (node) {\n    if (Array.isArray(node)) {\n      for (let i = node.length; i--; ) {\n        traverseReplace(node, i, enter, state);\n      }\n    } else {\n      const keys = (t as any).VISITOR_KEYS[node.type] as VisitKeys<\n        typeof node\n      >[];\n      for (let i = keys.length; i--; ) {\n        traverseReplace(node, keys[i], enter, state);\n      }\n\n      const replacement = enter(node, state);\n      if (replacement) container[key] = replacement as any;\n    }\n  }\n}\n\nexport function traverseContains(\n  node: undefined | null | t.Node | t.Node[],\n  check: (node: t.Node) => void | boolean | typeof skip,\n): boolean {\n  if (node) {\n    if (Array.isArray(node)) {\n      for (const item of node) {\n        if (traverseContains(item, check)) {\n          return true;\n        }\n      }\n    } else {\n      switch (check(node)) {\n        case true:\n          return true;\n        case skip:\n          return false;\n      }\n\n      for (const key of (t as any).VISITOR_KEYS[node.type] as VisitKeys<\n        typeof node\n      >[]) {\n        if (traverseContains((node as any)[key], check)) {\n          return true;\n        }\n      }\n    }\n  }\n\n  return false;\n}\n\nexport function traverse(\n  visit: (\n    node: t.Node,\n    parent?: t.Node,\n    grandParent?: t.Node,\n  ) => void | typeof skip,\n  node: undefined | t.Node | t.Node[],\n  parent?: t.Node,\n  grandParent?: t.Node,\n) {\n  if (node) {\n    if (Array.isArray(node)) {\n      for (const item of node) {\n        traverse(visit, item, parent, grandParent);\n      }\n    } else if (visit(node, parent, grandParent) !== skip) {\n      for (const key of (t as any).VISITOR_KEYS[node.type] as VisitKeys<\n        typeof node\n      >[]) {\n        traverse(visit, (node as any)[key], node, parent);\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/visitors.ts",
    "content": "import type { types as t } from \"@marko/compiler\";\n\nimport { isOutputHTML } from \"./marko-config\";\nimport * as hooks from \"./plugin-hooks\";\n\nexport type VisitorType = \"migrate\" | \"transform\" | \"analyze\" | \"translate\";\nexport type TemplateVisitor<T extends t.Node> = Partial<\n  Record<VisitorType, t.VisitNode<unknown, T>>\n>;\n\nexport function extractVisitors<\n  Visitors extends Partial<Record<keyof t.Visitor, TemplateVisitor<any>>>,\n>(visitors: Visitors) {\n  const result: Record<VisitorType, t.Visitor> = {\n    migrate: {},\n    transform: {},\n    analyze: {},\n    translate: {},\n  };\n\n  for (const _name in visitors) {\n    const name = _name as any;\n    const value = visitors[name]!;\n    if (value.migrate) result.migrate[name] = value.migrate;\n    if (value.transform) result.transform[name] = value.transform;\n    if (value.analyze) result.analyze[name] = value.analyze;\n    if (value.translate) result.translate[name] = value.translate;\n  }\n  return result;\n}\n\nexport function translateByTarget<T extends t.Node>({\n  html,\n  dom,\n}: {\n  dom: t.VisitNode<unknown, T>;\n  html: t.VisitNode<unknown, T>;\n}) {\n  return {\n    enter(path: t.NodePath<T>) {\n      hooks.enter(isOutputHTML() ? html : dom, path);\n    },\n    exit(path: t.NodePath<T>) {\n      hooks.exit(isOutputHTML() ? html : dom, path);\n    },\n  } as const;\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/walks.ts",
    "content": "import { types as t } from \"@marko/compiler\";\n\nimport { WalkCode, WalkRangeSize } from \"../../common/types\";\nimport { ContentType, getSection, type Section } from \"../util/sections\";\nimport { isOutputHTML } from \"./marko-config\";\nimport normalizeStringExpression, {\n  appendLiteral,\n} from \"./normalize-string-expression\";\nimport { createSectionState } from \"./state\";\nimport { withLeadingComment } from \"./with-comment\";\nimport { writeTo } from \"./writer\";\n\ntype Walk = string | t.Expression | (() => undefined | string | t.Expression);\nconst [getWalks] = createSectionState<Walk[]>(\"walks\", () => [\"\"]);\nconst [getWalkComment] = createSectionState<(string | t.Expression)[]>(\n  \"walkComment\",\n  () => [],\n);\nconst [getSteps] = createSectionState<Step[]>(\"steps\", (section) => {\n  if (section.content?.startType === ContentType.Dynamic) {\n    return [Step.Enter, Step.Exit];\n  }\n\n  return [];\n});\n\nexport enum Step {\n  Enter,\n  Exit,\n}\n\nconst walkCodeToName = {\n  [WalkCode.Get]: \"get\",\n  [WalkCode.Inside]: \"inside\",\n  [WalkCode.Replace]: \"replace\",\n  [WalkCode.EndChild]: \"endChild\",\n  [WalkCode.BeginChild]: \"beginChild\",\n  [WalkCode.BeginChildWithVar]: \"beginChildWithVar\",\n  [WalkCode.DynamicTagWithVar]: \"dynamicTagWithVar\",\n  [WalkCode.Next]: \"next\",\n  [WalkCode.Over]: \"over\",\n  [WalkCode.Out]: \"out\",\n  [WalkCode.Multiplier]: \"multiplier\",\n  [WalkCode.NextEnd]: \"nextEnd\",\n  [WalkCode.OverEnd]: \"overEnd\",\n  [WalkCode.OutEnd]: \"outEnd\",\n  [WalkCode.MultiplierEnd]: \"multiplierEnd\",\n};\n\ntype VisitCodes =\n  | WalkCode.Get\n  | WalkCode.Inside\n  | WalkCode.Replace\n  | WalkCode.DynamicTagWithVar;\n\nexport function enter(path: t.NodePath<any>) {\n  const steps = getSteps(getSection(path));\n  steps.push(Step.Enter);\n}\n\nexport function exit(path: t.NodePath<any>) {\n  const steps = getSteps(getSection(path));\n  steps.push(Step.Exit);\n}\n\nexport function enterShallow(path: t.NodePath<any>) {\n  const section = getSection(path);\n  const steps = getSteps(section);\n  steps.push(Step.Enter, Step.Exit);\n}\n\nexport function injectWalks(\n  tag: t.NodePath<t.MarkoTag>,\n  name: string,\n  expr: Walk,\n) {\n  const section = getSection(tag);\n  const walks = getWalks(section);\n  const walkComment = getWalkComment(section);\n  visitInternal(section);\n  walkComment.push(`<${name}${tag.node.var ? \"/var\" : \"\"}>`);\n  appendLiteral(\n    walks,\n    String.fromCharCode(\n      tag.node.var ? WalkCode.BeginChildWithVar : WalkCode.BeginChild,\n    ),\n  );\n  if (expr) {\n    walks.push(expr);\n  }\n  walks.push(String.fromCharCode(WalkCode.EndChild));\n}\n\nexport function visit(\n  path: t.NodePath<t.MarkoTag | t.MarkoPlaceholder | t.Program>,\n  code: VisitCodes,\n) {\n  // const { binding } = path.node.extra!;\n  // if (code && (!binding || binding.type !== BindingType.dom)) {\n  //   throw path.buildCodeFrameError(\n  //     \"Tried to visit a node that was not marked as needing to visit during analyze.\",\n  //   );\n  // }\n\n  if (isOutputHTML()) {\n    return;\n  }\n\n  const section = getSection(path);\n  const walks = getWalks(section);\n  const walkComment = getWalkComment(section);\n  visitInternal(section);\n\n  if (code !== WalkCode.Get) {\n    writeTo(path)`<!>`;\n  }\n\n  walkComment.push(`${walkCodeToName[code]}`);\n  appendLiteral(walks, String.fromCharCode(code));\n}\n\nfunction visitInternal(section: Section) {\n  const steps = getSteps(section);\n  if (!steps.length) return;\n\n  const walks = getWalks(section);\n  const walkComment = getWalkComment(section);\n  const walkCodes: WalkCode[] = [];\n  let walkString = \"\";\n  let depth = 0;\n\n  for (const step of steps) {\n    if (step === Step.Enter) {\n      depth++;\n      walkCodes.push(WalkCode.Next);\n    } else {\n      depth--;\n      if (depth >= 0) {\n        // delete back to and including previous NEXT\n        walkCodes.length = walkCodes.lastIndexOf(WalkCode.Next);\n        walkCodes.push(WalkCode.Over);\n      } else {\n        // delete back to previous OUT\n        walkCodes.length = walkCodes.lastIndexOf(WalkCode.Out) + 1;\n        walkCodes.push(WalkCode.Out);\n        depth = 0;\n      }\n    }\n  }\n\n  let current = walkCodes[0];\n  let count = 0;\n\n  for (const walk of walkCodes) {\n    if (walk !== current) {\n      walkComment.push(`${walkCodeToName[current]}(${count})`);\n      walkString += nCodeString(current, count);\n      current = walk;\n      count = 1;\n    } else {\n      count++;\n    }\n  }\n\n  walkComment.push(`${walkCodeToName[current]}(${count})`);\n  walkString += nCodeString(current, count);\n  steps.length = 0;\n  appendLiteral(walks, walkString);\n}\n\nfunction nCodeString(code: WalkCode, number: number) {\n  switch (code) {\n    case WalkCode.Next:\n      return toCharString(number, code, WalkRangeSize.Next);\n    case WalkCode.Over:\n      return toCharString(number, code, WalkRangeSize.Over);\n    case WalkCode.Out:\n      return toCharString(number, code, WalkRangeSize.Out);\n    default:\n      throw new Error(`Unexpected walk code: ${code}`);\n  }\n}\n\nfunction toCharString(number: number, startCode: number, rangeSize: number) {\n  let result = \"\";\n\n  if (number >= rangeSize) {\n    const multiplier = Math.floor(number / rangeSize);\n    result += toCharString(\n      multiplier,\n      WalkCode.Multiplier,\n      WalkRangeSize.Multiplier,\n    );\n    number -= multiplier * rangeSize;\n  }\n\n  result += String.fromCharCode(startCode + number);\n  return result;\n}\n\nexport function getWalkString(section: Section) {\n  if (section.content?.endType === ContentType.Dynamic) {\n    getSteps(section).push(Step.Enter, Step.Exit);\n  }\n\n  visitInternal(section);\n  const walks = getWalks(section);\n  const walkLiteral = normalizeStringExpression(walks.map(unwrapWalk));\n  if (walkLiteral && (walkLiteral as t.StringLiteral).value !== \"\") {\n    withLeadingComment(walkLiteral, getWalkComment(section).join(\", \"));\n  }\n  return walkLiteral;\n}\n\nfunction unwrapWalk(walk: Walk) {\n  return typeof walk === \"function\" ? walk() || \"\" : walk;\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/with-comment.ts",
    "content": "import type { types as t } from \"@marko/compiler\";\nexport function withLeadingComment<T extends t.Node>(\n  node: T,\n  value: string,\n): T {\n  if (value) {\n    const comment = {\n      type: \"CommentBlock\",\n      value: ` ${value} `,\n    } as t.CommentBlock;\n    node.leadingComments = node.leadingComments\n      ? [...node.leadingComments, comment]\n      : [comment];\n  }\n\n  return node;\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/with-previous-location.ts",
    "content": "import type { types as t } from \"@marko/compiler\";\n\nexport default function withPreviousLocation<T extends t.Node>(\n  newNode: T,\n  originalNode: t.Node,\n): T {\n  newNode.start = originalNode.start;\n  newNode.loc = originalNode.loc;\n  newNode.end = originalNode.end;\n  return newNode;\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/util/writer.ts",
    "content": "import { types as t } from \"@marko/compiler\";\n\nimport {\n  ContentType,\n  getScopeIdIdentifier,\n  getSection,\n  type Section,\n} from \"../util/sections\";\nimport { generateUidIdentifier } from \"./generate-uid\";\nimport { isOutputHTML } from \"./marko-config\";\nimport normalizeStringExpression, {\n  appendLiteral,\n} from \"./normalize-string-expression\";\nimport {\n  type Binding,\n  BindingType,\n  getScopeAccessorLiteral,\n} from \"./references\";\nimport { callRuntime } from \"./runtime\";\nimport { getSerializeGuard } from \"./serialize-guard\";\nimport type { SerializeReason } from \"./serialize-reasons\";\nimport { createSectionState } from \"./state\";\nimport { getWalkString } from \"./walks\";\n\ntype Write = string | t.Expression | (() => undefined | string | t.Expression);\nconst [getWrites] = createSectionState<Write[]>(\"writes\", () => [\"\"]);\n\nconst [getTrailerWrites] = createSectionState<(string | t.Expression)[]>(\n  \"trailerWrites\",\n  () => [\"\"],\n);\n\nexport function writeTo(path: t.NodePath<any>, trailer?: boolean) {\n  const section = getSection(path);\n  const get = trailer ? getTrailerWrites : getWrites;\n  return (strs: TemplateStringsArray, ...exprs: Write[]): void => {\n    const exprsLen = exprs.length;\n    const writes = get(section);\n    appendLiteral(writes, strs[0]);\n\n    for (let i = 0; i < exprsLen; i++) {\n      writes.push(exprs[i], strs[i + 1]);\n    }\n  };\n}\n\nexport function consumeHTML(path: t.NodePath<any>) {\n  const section = getSection(path);\n  const writes = getWrites(section);\n  const trailers = getTrailerWrites(section);\n  const writeResult = normalizeStringExpression(writes.map(unwrapWrite));\n  const trailerResult = normalizeStringExpression(trailers);\n  writes.length = 0;\n  writes[0] = \"\";\n  trailers.length = 0;\n  trailers[0] = \"\";\n\n  if (writeResult && trailerResult) {\n    return t.expressionStatement(\n      t.sequenceExpression([\n        callRuntime(\"_html\", writeResult),\n        callRuntime(\"_trailers\", trailerResult),\n      ]),\n    );\n  } else if (writeResult) {\n    return t.expressionStatement(callRuntime(\"_html\", writeResult));\n  } else if (trailerResult) {\n    return t.expressionStatement(callRuntime(\"_trailers\", trailerResult));\n  }\n}\n\nexport function flushBefore(path: t.NodePath<any>) {\n  const expr = consumeHTML(path);\n  if (expr) {\n    path.insertBefore(expr)[0].skip();\n  }\n}\n\nexport function flushInto(\n  path: t.NodePath<t.MarkoTag> | t.NodePath<t.Program>,\n) {\n  const target = (path.isProgram() ? path : path.get(\"body\")) as t.NodePath<\n    t.Program | t.MarkoTagBody\n  >;\n  const expr = consumeHTML(target);\n  if (expr) {\n    target.node.body.push(expr as any);\n  }\n}\n\ninterface SectionMeta {\n  walks: t.Expression | undefined;\n  writes: t.Expression | undefined;\n  decls: t.VariableDeclarator[] | undefined;\n}\n\nexport const [getSectionMeta] = createSectionState<SectionMeta>(\n  \"SectionMeta\",\n  (section) => {\n    const writePrefix =\n      section.content?.startType === ContentType.Dynamic ? \"<!>\" : \"\";\n    const writePostfix =\n      section.content?.endType === ContentType.Dynamic ? \"<!>\" : \"\";\n    const writes = getWrites(section);\n    const meta = {\n      walks: getWalkString(section),\n      writes: normalizeStringExpression([\n        writePrefix,\n        ...writes.map(unwrapWrite),\n        writePostfix,\n      ]),\n      decls: undefined,\n    };\n    return meta;\n  },\n);\n\nconst sectionMetaIsIds = new WeakSet<SectionMeta>();\nexport function getSectionMetaIdentifiers(section: Section) {\n  const meta = getSectionMeta(section);\n  if (!sectionMetaIsIds.has(meta)) {\n    sectionMetaIsIds.add(meta);\n    const { walks, writes } = meta;\n    const decls: t.VariableDeclarator[] = [];\n\n    if (walks) {\n      meta.walks = generateUidIdentifier(`${section.name}__walks`);\n      decls.push(t.variableDeclarator(meta.walks, walks));\n    }\n    if (writes) {\n      meta.writes = generateUidIdentifier(`${section.name}__template`);\n      decls.push(t.variableDeclarator(meta.writes, writes));\n    }\n\n    if (decls.length) {\n      meta.decls = decls;\n    }\n  }\n\n  return meta;\n}\n\nexport function markNode(\n  path: t.NodePath<t.MarkoTag | t.MarkoPlaceholder>,\n  nodeBinding: Binding,\n  reason: undefined | false | SerializeReason,\n) {\n  if (nodeBinding.type !== BindingType.dom) {\n    throw path.buildCodeFrameError(\n      \"POTENTIAL MARKO BUG: Tried to mark a node that was not determined to need a mark during analyze.\",\n    );\n  }\n\n  if (isOutputHTML()) {\n    if (reason) {\n      const section = getSection(path);\n      writeTo(path)`${callRuntime(\n        \"_el_resume\",\n        getScopeIdIdentifier(section),\n        getScopeAccessorLiteral(nodeBinding),\n        getSerializeGuard(section, reason, true),\n      )}`;\n    }\n  }\n}\n\nfunction unwrapWrite(write: Write) {\n  return typeof write === \"function\" ? write() || \"\" : write;\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/visitors/cdata.ts",
    "content": "import type { types as t } from \"@marko/compiler\";\n\nimport type { TemplateVisitor } from \"../util/visitors\";\n\nexport default {\n  translate: {\n    enter(cdata) {\n      throw cdata.buildCodeFrameError(\n        \"CDATA sections are not supported in Marko.\",\n      );\n    },\n  },\n} satisfies TemplateVisitor<t.MarkoCDATA>;\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/visitors/comment.ts",
    "content": "import type { types as t } from \"@marko/compiler\";\n\nimport type { TemplateVisitor } from \"../util/visitors\";\n\nexport default {\n  translate: {\n    exit(comment) {\n      comment.remove();\n    },\n  },\n} satisfies TemplateVisitor<t.MarkoComment>;\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/visitors/declaration.ts",
    "content": "import type { types as t } from \"@marko/compiler\";\n\nimport type { TemplateVisitor } from \"../util/visitors\";\n\nexport default {\n  translate: {\n    enter(decl) {\n      throw decl.buildCodeFrameError(\n        \"XML declarations sections are not supported in Marko.\",\n      );\n    },\n  },\n} satisfies TemplateVisitor<t.MarkoDeclaration>;\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/visitors/document-type.ts",
    "content": "import type { types as t } from \"@marko/compiler\";\n\nimport { isOutputHTML } from \"../util/marko-config\";\nimport type { TemplateVisitor } from \"../util/visitors\";\nimport * as writer from \"../util/writer\";\n\nexport default {\n  translate: {\n    exit(documentType) {\n      if (isOutputHTML()) {\n        writer.writeTo(documentType)`<!${documentType.node.value}>`;\n      }\n      documentType.remove();\n    },\n  },\n} satisfies TemplateVisitor<t.MarkoDocumentType>;\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/visitors/function.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport { getFile, getTemplateId } from \"@marko/compiler/babel-utils\";\n\nimport { generateUid } from \"../util/generate-uid\";\nimport { getAttributeTagParent } from \"../util/get-parent-tag\";\nimport {\n  getDeclarationRoot,\n  getExprRoot,\n  getFnRoot,\n  getMarkoRoot,\n  type MarkoExprRootPath,\n} from \"../util/get-root\";\nimport { isCoreTagName } from \"../util/is-core-tag\";\nimport isInvokedFunction from \"../util/is-invoked-function\";\nimport {\n  getAllSerializeReasonsForExtra,\n  getCanonicalExtra,\n  type RegisteredFnExtra,\n} from \"../util/references\";\nimport { getSection } from \"../util/sections\";\nimport {\n  mergeSerializeReasons,\n  type SerializeReason,\n} from \"../util/serialize-reasons\";\nimport { createProgramState } from \"../util/state\";\nimport analyzeTagNameType, { TagNameType } from \"../util/tag-name-type\";\nimport type { TemplateVisitor } from \"../util/visitors\";\n\nconst [getReferencesByFn] = createProgramState(\n  () => new Map<RegisteredFnExtra, Set<t.NodeExtra>>(),\n);\n\nexport default {\n  analyze(fn) {\n    // bail on closures\n    if (fn !== getFnRoot(fn)) return;\n\n    const exprRoot = getExprRoot(fn);\n    const markoRoot = getMarkoRoot(exprRoot);\n    if (!markoRoot || canIgnoreRegister(markoRoot, exprRoot)) return;\n\n    const { node } = fn;\n    const section = getSection(fn);\n    const fnExtra = (node.extra ??= {}) as RegisteredFnExtra;\n    fnExtra.section = section;\n    fnExtra.name =\n      (node as t.FunctionExpression).id?.name ||\n      (isMarkoAttribute(markoRoot)\n        ? markoRoot.node.default\n          ? t.toIdentifier(\n              markoRoot.parentPath.has(\"var\")\n                ? markoRoot.parentPath.get(\"var\")\n                : markoRoot.parentPath.get(\"name\"),\n            )\n          : markoRoot.node.name\n        : t.isVariableDeclarator(fn.parent) && t.isIdentifier(fn.parent.id)\n          ? fn.parent.id.name\n          : t.isObjectMethod(node) && t.isIdentifier(node.key)\n            ? node.key.name\n            : \"anonymous\");\n\n    if (isStaticRoot(markoRoot)) {\n      const refs = getStaticDeclRefs(fnExtra, fn);\n      if (refs === true) {\n        registerFunction(fnExtra, true);\n      } else if (refs.size) {\n        getReferencesByFn().set(fnExtra, refs);\n      }\n    } else if (shouldAlwaysRegister(markoRoot)) {\n      registerFunction(fnExtra, true);\n    } else {\n      getReferencesByFn().set(fnExtra, new Set([(exprRoot.node.extra ??= {})]));\n    }\n  },\n} satisfies TemplateVisitor<t.Function>;\n\nexport function finalizeFunctionRegistry() {\n  for (const [fnExtra, exprExtras] of getReferencesByFn()) {\n    let reason: undefined | SerializeReason;\n    for (const exprExtra of exprExtras) {\n      reason = mergeSerializeReasons(\n        reason,\n        getAllSerializeReasonsForExtra(getCanonicalExtra(exprExtra)),\n      );\n    }\n\n    if (reason) {\n      registerFunction(fnExtra, reason);\n    }\n  }\n}\n\nfunction canIgnoreRegister(\n  markoRoot: MarkoExprRootPath,\n  exprRoot: t.NodePath<t.Node>,\n) {\n  return (\n    // bail within a placeholder\n    markoRoot.isMarkoPlaceholder() ||\n    // bail within a server only statement\n    (markoRoot.isMarkoScriptlet() &&\n      (!markoRoot.node.static || markoRoot.node.target === \"server\")) ||\n    // bail within the tag name\n    (markoRoot.isMarkoTag() && markoRoot.node.name == exprRoot.node) ||\n    (isMarkoAttribute(markoRoot) &&\n      ((analyzeTagNameType(markoRoot.parentPath) === TagNameType.NativeTag &&\n        // TODO: all native tag functions should avoid registration but right now change handlers require it.\n        /^on[A-Z-]/.test(markoRoot.node.name) &&\n        !hasSpreadAttributeAfter(markoRoot)) ||\n        isCoreTagName(markoRoot.parentPath, \"script\") ||\n        isCoreTagName(markoRoot.parentPath, \"lifecycle\") ||\n        isCoreTagName(markoRoot.parentPath, \"for\")))\n  );\n}\n\nfunction getStaticDeclRefs(\n  fnExtra: RegisteredFnExtra,\n  path: t.NodePath<t.Node>,\n  refs = new Set<t.NodeExtra>(),\n): Set<t.NodeExtra> | true {\n  const decl = getDeclarationRoot(path);\n  if (decl) {\n    const ids = decl.getOuterBindingIdentifiers();\n    if (ids) {\n      for (const name in ids) {\n        const binding = decl.scope.getBinding(name);\n        if (!binding) continue;\n        for (const ref of binding.referencePaths) {\n          if (isInvokedFunction(ref) || ref.parentPath!.type === \"Program\")\n            continue;\n          const exprRoot = getExprRoot(ref);\n          const markoRoot = getMarkoRoot(exprRoot);\n          if (!markoRoot || canIgnoreRegister(markoRoot, exprRoot)) continue;\n          if (isStaticRoot(markoRoot)) {\n            if (getStaticDeclRefs(fnExtra, ref, refs) === true) {\n              return true;\n            }\n          } else if (shouldAlwaysRegister(markoRoot)) {\n            return true;\n          } else {\n            refs.add((exprRoot.node.extra ??= {}));\n          }\n        }\n      }\n    }\n  }\n\n  return refs;\n}\n\nfunction shouldAlwaysRegister(markoRoot: MarkoExprRootPath) {\n  const tag = getTagFromMarkoRoot(markoRoot);\n  if (!tag) return false;\n  if (isCoreTagName(tag, \"let\")) return true;\n  if (isCoreTagName(tag, \"return\")) return true;\n\n  switch (analyzeTagNameType(tag)) {\n    case TagNameType.DynamicTag:\n    case TagNameType.NativeTag:\n      // Passing a function to a dynamic tag could always be potentially serialized.\n      // Native tag event handlers are skipped in the `canIgnoreRegister`\n      // if it's anything else we need to unconditionally serialize.\n      return true;\n    case TagNameType.AttributeTag:\n      if (\n        analyzeTagNameType(getAttributeTagParent(tag)) ===\n        TagNameType.DynamicTag\n      ) {\n        return true;\n      }\n      break;\n  }\n\n  return false;\n}\n\nfunction hasSpreadAttributeAfter(attr: t.NodePath<t.MarkoAttribute>) {\n  const attrs = (attr.parent as t.MarkoTag).attributes;\n  for (let i = (attr.key as number) + 1; i < attrs.length; i++) {\n    if (attrs[i].type === \"MarkoSpreadAttribute\") return true;\n  }\n\n  return false;\n}\n\nfunction getTagFromMarkoRoot(\n  markoRoot: MarkoExprRootPath,\n): t.NodePath<t.MarkoTag> | undefined {\n  let cur = markoRoot;\n  do {\n    if (cur.isMarkoTag()) return cur;\n    cur = cur.parentPath as MarkoExprRootPath;\n  } while (cur);\n}\n\nfunction registerFunction(fnExtra: RegisteredFnExtra, reason: SerializeReason) {\n  const {\n    markoOpts,\n    path: program,\n    opts: { filename },\n  } = getFile();\n  program.node.extra.isInteractive = true;\n  fnExtra.registerReason = reason;\n  fnExtra.name = generateUid(fnExtra.name);\n  fnExtra.registerId = getTemplateId(\n    markoOpts,\n    filename as string,\n    `${fnExtra.section.id}/${fnExtra.name.slice(1)}`,\n  );\n}\n\nfunction isMarkoAttribute(\n  path: t.NodePath | undefined | null,\n): path is t.NodePath<t.MarkoAttribute> & {\n  parent: t.MarkoTag;\n  parentPath: t.NodePath<t.MarkoTag>;\n} {\n  return path ? path.isMarkoAttribute() : false;\n}\n\nfunction isStaticRoot(path: t.NodePath<t.Node>) {\n  switch (path.type) {\n    case \"MarkoScriptlet\":\n      return (path.node as t.MarkoScriptlet).static;\n    case \"ExportDefaultDeclaration\":\n    case \"ExportNamedDeclaration\":\n      return true;\n    default:\n      return false;\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/visitors/import-declaration.ts",
    "content": "import type { types as t } from \"@marko/compiler\";\nimport { resolveTagImport } from \"@marko/compiler/babel-utils\";\n\nimport type { TemplateVisitor } from \"../util/visitors\";\n\nexport default {\n  analyze(importDecl) {\n    const { node } = importDecl;\n    const { source } = node;\n    const { value } = source;\n    const tagImport = resolveTagImport(importDecl, value);\n    if (tagImport) {\n      node.extra ??= {};\n      node.extra.tagImport = tagImport;\n\n      const tags = importDecl.hub.file.metadata.marko.tags!;\n      if (!tags.includes(tagImport)) {\n        tags.push(tagImport);\n      }\n    }\n  },\n  translate: {\n    exit(importDecl) {\n      const { node } = importDecl;\n      const { extra } = node;\n      const tagImport = extra?.tagImport as string | undefined;\n      if (tagImport) {\n        node.source.value = tagImport;\n      }\n    },\n  },\n} satisfies TemplateVisitor<t.ImportDeclaration>;\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/visitors/placeholder.ts",
    "content": "import { types as t } from \"@marko/compiler\";\n\nimport { WalkCode } from \"../../common/types\";\nimport evaluate from \"../util/evaluate\";\nimport { isNonHTMLText } from \"../util/is-non-html-text\";\nimport { isOutputHTML } from \"../util/marko-config\";\nimport {\n  type Binding,\n  BindingType,\n  createBinding,\n  getScopeAccessorLiteral,\n} from \"../util/references\";\nimport { callRuntime, getHTMLRuntime } from \"../util/runtime\";\nimport { createScopeReadExpression } from \"../util/scope-read\";\nimport {\n  ContentType,\n  getNodeContentType,\n  getOrCreateSection,\n  getSection,\n} from \"../util/sections\";\nimport { getSerializeGuard } from \"../util/serialize-guard\";\nimport {\n  addSerializeExpr,\n  getSerializeReason,\n} from \"../util/serialize-reasons\";\nimport { addStatement } from \"../util/signals\";\nimport type { TemplateVisitor } from \"../util/visitors\";\nimport * as walks from \"../util/walks\";\nimport * as writer from \"../util/writer\";\nimport { scopeIdentifier } from \"./program\";\n\nconst kNodeBinding = Symbol(\"placeholder node binding\");\nconst kSiblingText = Symbol(\"placeholder has sibling text\");\nconst kSharedText = Symbol(\n  \"placeholder will merge its visitor with a another node\",\n);\nenum SiblingText {\n  None,\n  Before,\n  After,\n}\ndeclare module \"@marko/compiler/dist/types\" {\n  export interface MarkoPlaceholderExtra {\n    [kNodeBinding]?: Binding;\n    [kSiblingText]?: SiblingText;\n    [kSharedText]?: true;\n  }\n}\n\ntype HTMLMethod = \"_escape\" | \"_unescaped\";\ntype DOMMethod = \"_html\" | \"_text\";\n\nexport default {\n  analyze(placeholder) {\n    if (isNonHTMLText(placeholder)) return;\n\n    const { node } = placeholder;\n    const valueExtra = evaluate(node.value);\n    const { confident, computed } = valueExtra;\n    if (confident && isVoid(computed)) return;\n\n    if (isStaticText(node)) {\n      if (\n        isStaticText(getPrev(placeholder)) ||\n        isStaticText(getNext(placeholder))\n      ) {\n        (node.extra ??= {})[kSharedText] = true;\n      }\n    } else {\n      const section = getOrCreateSection(placeholder);\n      const nodeBinding = ((node.extra ??= {})[kNodeBinding] = createBinding(\n        \"#text\",\n        BindingType.dom,\n        section,\n      ));\n      analyzeSiblingText(placeholder);\n      addSerializeExpr(section, valueExtra, nodeBinding);\n    }\n  },\n  translate: {\n    exit(placeholder) {\n      if (isNonHTMLText(placeholder)) return;\n\n      const { node } = placeholder;\n      const { value } = node;\n      const valueExtra = evaluate(value);\n      const { confident, computed } = valueExtra;\n\n      if (confident && isVoid(computed)) {\n        placeholder.remove();\n        return;\n      }\n\n      const isHTML = isOutputHTML();\n      const write = writer.writeTo(placeholder);\n      const extra = node.extra || {};\n      const nodeBinding = extra[kNodeBinding];\n      const canWriteHTML = isHTML || (confident && node.escape);\n      const method = canWriteHTML\n        ? node.escape\n          ? \"_escape\"\n          : \"_unescaped\"\n        : node.escape\n          ? \"_text\"\n          : \"_html\";\n\n      if (confident && canWriteHTML) {\n        write`${getHTMLRuntime()[method as HTMLMethod](computed)}`;\n      } else {\n        const section = getSection(placeholder);\n        const siblingText = extra[kSiblingText]!;\n        const markerSerializeReason =\n          nodeBinding && getSerializeReason(section, nodeBinding);\n\n        if (siblingText === SiblingText.Before) {\n          if (isHTML && markerSerializeReason) {\n            if (markerSerializeReason === true || markerSerializeReason.state) {\n              write`<!>`;\n            } else {\n              write`${callRuntime(\"_sep\", getSerializeGuard(section, markerSerializeReason, true))}`;\n            }\n          }\n          walks.visit(placeholder, WalkCode.Replace);\n        } else if (siblingText === SiblingText.After) {\n          walks.visit(placeholder, WalkCode.Replace);\n        } else {\n          if (!isHTML) write` `;\n          walks.visit(placeholder, WalkCode.Get);\n        }\n\n        if (isHTML) {\n          write`${callRuntime(method as HTMLMethod | DOMMethod, value)}`;\n          if (nodeBinding) {\n            writer.markNode(placeholder, nodeBinding, markerSerializeReason);\n          }\n        } else {\n          addStatement(\n            \"render\",\n            getSection(placeholder),\n            valueExtra.referencedBindings,\n            t.expressionStatement(\n              method === \"_text\"\n                ? callRuntime(\n                    \"_text\",\n                    createScopeReadExpression(nodeBinding!),\n                    value,\n                  )\n                : callRuntime(\n                    \"_html\",\n                    scopeIdentifier,\n                    value,\n                    getScopeAccessorLiteral(nodeBinding!),\n                  ),\n            ),\n            undefined,\n            true,\n          );\n        }\n      }\n\n      if (!extra[kSharedText]) {\n        walks.enterShallow(placeholder);\n      }\n      placeholder.remove();\n    },\n  },\n} satisfies TemplateVisitor<t.MarkoPlaceholder>;\n\nfunction analyzeSiblingText(placeholder: t.NodePath<t.MarkoPlaceholder>) {\n  const placeholderExtra = placeholder.node.extra!;\n  let prev = placeholder.getPrevSibling();\n  while (prev.node) {\n    const contentType = getNodeContentType(\n      prev as t.NodePath<t.Statement>,\n      \"endType\",\n    );\n    if (contentType === null) {\n      prev = prev.getPrevSibling();\n    } else if (\n      contentType === ContentType.Text ||\n      contentType === ContentType.Dynamic ||\n      contentType === ContentType.Placeholder\n    ) {\n      return (placeholderExtra[kSiblingText] = SiblingText.Before);\n    } else {\n      break;\n    }\n  }\n  if (!prev.node && t.isProgram(placeholder.parentPath)) {\n    return (placeholderExtra[kSiblingText] = SiblingText.Before);\n  }\n  let next = placeholder.getNextSibling();\n  while (next.node) {\n    const contentType = getNodeContentType(\n      next as t.NodePath<t.Statement>,\n      \"startType\",\n    );\n    if (contentType === null) {\n      next = next.getNextSibling();\n    } else if (\n      contentType === ContentType.Text ||\n      contentType === ContentType.Dynamic ||\n      contentType === ContentType.Placeholder\n    ) {\n      return (placeholderExtra[kSiblingText] = SiblingText.After);\n    } else {\n      break;\n    }\n  }\n  if (!next.node && t.isProgram(placeholder.parentPath)) {\n    return (placeholderExtra[kSiblingText] = SiblingText.After);\n  }\n\n  return (placeholderExtra[kSiblingText] = SiblingText.None);\n}\n\nfunction isVoid(value: unknown) {\n  return value == null || value === false;\n}\n\nfunction isStaticText(node?: t.Node) {\n  switch (node?.type) {\n    case \"MarkoText\":\n      return true;\n    case \"MarkoPlaceholder\": {\n      if (node.escape) {\n        const { confident, computed } = evaluate(node.value);\n        return confident && !isVoid(computed);\n      } else {\n        return false;\n      }\n    }\n  }\n}\n\nfunction getPrev(path: t.NodePath) {\n  let prev = path.getPrevSibling();\n  while (\n    prev.node &&\n    (prev.isMarkoComment() ||\n      (prev.isMarkoPlaceholder() && isEmptyPlaceholder(prev.node)))\n  ) {\n    prev = prev.getPrevSibling();\n  }\n\n  return prev.node;\n}\n\nfunction getNext(path: t.NodePath) {\n  let next = path.getNextSibling();\n  while (\n    next.node &&\n    (next.isMarkoComment() ||\n      (next.isMarkoPlaceholder() && isEmptyPlaceholder(next.node)))\n  ) {\n    next = next.getNextSibling();\n  }\n\n  return next.node;\n}\n\nfunction isEmptyPlaceholder(placeholder: t.MarkoPlaceholder) {\n  const { confident, computed } = evaluate(placeholder.value);\n  return confident && isVoid(computed);\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/visitors/program/dom.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport { importDefault } from \"@marko/compiler/babel-utils\";\n\nimport { bindingHasProperty } from \"../../util/binding-has-prop\";\nimport getStyleFile from \"../../util/get-style-file\";\nimport { forEach } from \"../../util/optional\";\nimport {\n  BindingType,\n  getScopeAccessor,\n  getSectionInstancesAccessorLiteral,\n} from \"../../util/references\";\nimport { callRuntime } from \"../../util/runtime\";\nimport {\n  forEachSectionReverse,\n  getSectionForBody,\n  getSectionParentIsOwner,\n  getSectionRegisterReasons,\n  isDynamicClosure,\n  setBranchRendererArgs,\n} from \"../../util/sections\";\nimport {\n  addStatement,\n  getResumeRegisterId,\n  getSetup,\n  getSignal,\n  getSignalFn,\n  initValue,\n  replaceNullishAndEmptyFunctionsWith0,\n  signalHasStatements,\n  writeRegisteredFns,\n  writeSignals,\n} from \"../../util/signals\";\nimport { toPropertyName } from \"../../util/to-property-name\";\nimport type { TemplateVisitor } from \"../../util/visitors\";\nimport * as writer from \"../../util/writer\";\nimport { scopeIdentifier } from \".\";\n\nexport default {\n  translate: {\n    enter(program) {\n      const section = getSectionForBody(program)!;\n      forEachSectionReverse((childSection) => {\n        if (childSection !== section) {\n          forEach(childSection.referencedClosures, (closure) => {\n            if (closure.type !== BindingType.constant) {\n              const closureSignal = getSignal(childSection, closure);\n              if (signalHasStatements(closureSignal)) {\n                addStatement(\n                  \"render\",\n                  childSection,\n                  undefined,\n                  t.expressionStatement(\n                    t.callExpression(\n                      isDynamicClosure(childSection, closure)\n                        ? closureSignal.identifier\n                        : t.memberExpression(\n                            closureSignal.identifier,\n                            t.identifier(\"_\"),\n                          ),\n                      [scopeIdentifier],\n                    ),\n                  ),\n                );\n              }\n            }\n          });\n        }\n      });\n    },\n    exit(program) {\n      forEachSectionReverse(writer.getSectionMeta);\n\n      const section = getSectionForBody(program)!;\n      const { walks, writes, decls } = writer.getSectionMeta(section);\n      const domExports = program.node.extra.domExports!;\n      const templateIdentifier = t.identifier(domExports.template);\n      const walksIdentifier = t.identifier(domExports.walks);\n      const setupIdentifier = t.identifier(domExports.setup);\n      const inputBinding = program.node.params![0].extra?.binding;\n      const programInputSignal =\n        inputBinding && !inputBinding.pruned\n          ? initValue(inputBinding)\n          : undefined;\n      let extraDecls = decls;\n      const styleFile = getStyleFile(program.hub.file);\n      if (styleFile) {\n        importDefault(program.hub.file, styleFile);\n      }\n\n      forEachSectionReverse((childSection) => {\n        if (childSection !== section) {\n          const tagParamsSignal =\n            childSection.params && initValue(childSection.params);\n          const tagParamsIdentifier =\n            tagParamsSignal && signalHasStatements(tagParamsSignal)\n              ? tagParamsSignal.identifier\n              : undefined;\n          const { walks, writes, decls } = writer.getSectionMeta(childSection);\n          const setup = getSetup(childSection);\n          const written = writeSignals(childSection);\n          const setupIdentifier =\n            setup && written.has(setup) ? setup.identifier : undefined;\n\n          if (\n            !childSection.downstreamBinding ||\n            bindingHasProperty(\n              childSection.downstreamBinding.binding,\n              childSection.downstreamBinding.properties,\n            )\n          ) {\n            if (getSectionParentIsOwner(childSection)) {\n              setBranchRendererArgs(childSection, [\n                writes,\n                walks,\n                setupIdentifier,\n                tagParamsIdentifier,\n              ]);\n            } else {\n              let renderer = callRuntime(\n                getSectionRegisterReasons(childSection)\n                  ? \"_content_resume\"\n                  : \"_content\",\n                t.stringLiteral(getResumeRegisterId(childSection, \"content\")),\n                ...replaceNullishAndEmptyFunctionsWith0([\n                  writes,\n                  walks,\n                  setupIdentifier,\n                  tagParamsIdentifier,\n                  childSection.hoisted || childSection.isHoistThrough\n                    ? getSectionInstancesAccessorLiteral(childSection)\n                    : undefined,\n                ]),\n              );\n\n              if (childSection.referencedLocalClosures) {\n                const objProps: t.ObjectExpression[\"properties\"] = [];\n                forEach(childSection.referencedLocalClosures, (closure) => {\n                  const closureSignal = getSignal(childSection, closure);\n                  const key = toPropertyName(getScopeAccessor(closure, true));\n                  if (signalHasStatements(closureSignal)) {\n                    const expr = getSignalFn(closureSignal);\n                    if (t.isFunction(expr) && t.isBlockStatement(expr.body)) {\n                      objProps.push(\n                        t.objectMethod(\"method\", key, expr.params, expr.body),\n                      );\n                    } else {\n                      objProps.push(t.objectProperty(key, expr));\n                    }\n                  }\n                });\n\n                if (objProps.length) {\n                  renderer = callRuntime(\n                    \"_content_closures\",\n                    renderer,\n                    t.objectExpression(objProps),\n                  );\n                }\n              }\n\n              program.node.body.push(\n                t.variableDeclaration(\"const\", [\n                  t.variableDeclarator(\n                    t.identifier(childSection.name),\n                    renderer,\n                  ),\n                ]),\n              );\n            }\n          }\n\n          if (decls) {\n            extraDecls = extraDecls ? [...decls, ...extraDecls] : decls;\n          }\n        }\n      });\n\n      writeSignals(section);\n      writeRegisteredFns();\n\n      if (!getSetup(section)) {\n        program.node.body.unshift(\n          t.exportNamedDeclaration(\n            t.variableDeclaration(\"const\", [\n              t.variableDeclarator(\n                setupIdentifier,\n                t.arrowFunctionExpression([], t.blockStatement([])),\n              ),\n            ]),\n          ),\n        );\n      }\n\n      program.node.body.unshift(\n        t.exportNamedDeclaration(\n          t.variableDeclaration(\"const\", [\n            t.variableDeclarator(\n              templateIdentifier,\n              writes || t.stringLiteral(\"\"),\n            ),\n          ]),\n        ),\n        t.exportNamedDeclaration(\n          t.variableDeclaration(\"const\", [\n            t.variableDeclarator(walksIdentifier, walks || t.stringLiteral(\"\")),\n          ]),\n        ),\n      );\n\n      if (extraDecls) {\n        program.node.body.unshift(t.variableDeclaration(\"const\", extraDecls));\n      }\n\n      program.node.body.push(\n        t.exportDefaultDeclaration(\n          callRuntime(\n            \"_template\",\n            t.stringLiteral(program.hub.file.metadata.marko.id),\n            templateIdentifier,\n            walksIdentifier,\n            setupIdentifier,\n            programInputSignal?.identifier,\n          ),\n        ),\n      );\n    },\n  },\n} satisfies TemplateVisitor<t.Program>;\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/visitors/program/html.ts",
    "content": "import { types as t } from \"@marko/compiler\";\n\nimport {\n  generateUidIdentifier,\n  getSharedUid,\n  usedSharedUid,\n} from \"../../util/generate-uid\";\nimport isStatic from \"../../util/is-static\";\nimport { forEach } from \"../../util/optional\";\nimport {\n  BindingType,\n  getReadReplacement,\n  getSectionInstancesAccessor,\n  isRegisteredFnExtra,\n} from \"../../util/references\";\nimport { callRuntime, importRuntime } from \"../../util/runtime\";\nimport {\n  forEachSection,\n  getScopeIdIdentifier,\n  getSection,\n  type Section,\n} from \"../../util/sections\";\nimport { isReasonDynamic } from \"../../util/serialize-reasons\";\nimport {\n  addWriteScopeBuilder,\n  getBindingGetterIdentifier,\n  getHTMLSectionStatements,\n  getResumeRegisterId,\n  setSerializedValue,\n  writeHTMLResumeStatements,\n} from \"../../util/signals\";\nimport { simplifyFunction } from \"../../util/simplify-fn\";\nimport { traverseReplace } from \"../../util/traverse\";\nimport type { TemplateVisitor } from \"../../util/visitors\";\nimport { flushInto } from \"../../util/writer\";\n\nexport function getTemplateContentName() {\n  return getSharedUid(\"content\");\n}\n\nexport default {\n  translate: {\n    enter() {\n      forEachSection((section) => {\n        forEach(section.bindings, (binding) => {\n          for (const [hoistSection, hasReference] of binding.getters) {\n            if (hasReference) {\n              getHTMLSectionStatements(hoistSection || section).push(\n                t.variableDeclaration(\"const\", [\n                  hoistSection\n                    ? t.variableDeclarator(\n                        getBindingGetterIdentifier(binding, hoistSection),\n                        callRuntime(\n                          \"_hoist\",\n                          getScopeIdIdentifier(hoistSection),\n                          t.stringLiteral(\n                            getResumeRegisterId(hoistSection, binding, \"hoist\"),\n                          ),\n                        ),\n                      )\n                    : t.variableDeclarator(\n                        t.identifier(binding.originalName!),\n                        callRuntime(\n                          \"_el\",\n                          getScopeIdIdentifier(section),\n                          t.stringLiteral(\n                            getResumeRegisterId(section, binding),\n                          ),\n                        ),\n                      ),\n                ]),\n              );\n            }\n          }\n        });\n\n        const sectionDynamicSubscribers = new Set<Section>();\n        forEach(section.hoisted, (binding) => {\n          let highestHoistSection!: Section;\n          forEach(binding.hoists, (hoistSection) => {\n            if (\n              !highestHoistSection ||\n              hoistSection.depth < highestHoistSection.depth\n            ) {\n              highestHoistSection = hoistSection;\n            }\n          });\n\n          let currentSection: Section | undefined = section;\n          while (currentSection && currentSection !== highestHoistSection) {\n            const parentSection: Section = currentSection.parent!;\n            if (\n              !currentSection.sectionAccessor &&\n              !sectionDynamicSubscribers.has(currentSection)\n            ) {\n              const subscribersIdentifier = generateUidIdentifier(\n                `${currentSection.name}__subscribers`,\n              );\n\n              sectionDynamicSubscribers.add(currentSection);\n\n              getHTMLSectionStatements(parentSection).push(\n                t.variableDeclaration(\"const\", [\n                  t.variableDeclarator(\n                    subscribersIdentifier,\n                    t.newExpression(t.identifier(\"Set\"), []),\n                  ),\n                ]),\n              );\n\n              addWriteScopeBuilder(currentSection, (expr) =>\n                callRuntime(\"_subscribe\", subscribersIdentifier, expr),\n              );\n              setSerializedValue(\n                parentSection,\n                getSectionInstancesAccessor(currentSection)!,\n                subscribersIdentifier,\n              );\n            }\n            currentSection = parentSection!;\n          }\n        });\n      });\n    },\n    exit(program) {\n      flushInto(program);\n      writeHTMLResumeStatements(program);\n      traverseReplace(program.node, \"body\", replaceNode);\n      const renderContent: t.Statement[] = [];\n      const section = getSection(program);\n      let dynamicSerializeReason =\n        !!section.paramReasonGroups || isReasonDynamic(section.serializeReason);\n\n      if (!dynamicSerializeReason) {\n        for (const reason of section.serializeReasons.values()) {\n          if (isReasonDynamic(reason)) {\n            dynamicSerializeReason = true;\n            break;\n          }\n        }\n      }\n\n      if (dynamicSerializeReason) {\n        renderContent.push(\n          t.variableDeclaration(\"const\", [\n            t.variableDeclarator(\n              t.identifier(getSharedUid(`scope${section.id}_reason`, section)),\n              callRuntime(\"_scope_reason\"),\n            ),\n          ]),\n        );\n      } else {\n        renderContent.push(t.expressionStatement(callRuntime(\"_scope_reason\")));\n      }\n\n      for (const child of program.get(\"body\")) {\n        if (!isStatic(child)) {\n          renderContent.push(child.node);\n          child.remove();\n        } else if (child.isMarkoScriptlet()) {\n          if (child.node.target && child.node.target !== \"server\") {\n            child.remove();\n          } else {\n            child.replaceWithMultiple(child.node.body);\n          }\n        }\n      }\n\n      const contentId = usedSharedUid(\"content\") && getTemplateContentName();\n      const contentFn = t.arrowFunctionExpression(\n        [t.identifier(\"input\")],\n        t.blockStatement(renderContent),\n      );\n      const exportDefault = t.exportDefaultDeclaration(\n        callRuntime(\n          \"_template\",\n          t.stringLiteral(program.hub.file.metadata.marko.id),\n          contentId ? t.identifier(contentId) : contentFn,\n          program.node.extra!.page ? t.numericLiteral(1) : undefined,\n        ),\n      );\n\n      if (contentId) {\n        program.node.body.push(\n          t.variableDeclaration(\"const\", [\n            t.variableDeclarator(t.identifier(contentId), contentFn),\n          ]),\n          exportDefault,\n        );\n      } else {\n        program.node.body.push(exportDefault);\n      }\n    },\n  },\n} satisfies TemplateVisitor<t.Program>;\n\nfunction replaceNode(node: t.Node) {\n  return replaceBindingReadNode(node) || replaceRegisteredFunctionNode(node);\n}\n\nfunction replaceBindingReadNode(node: t.Node) {\n  switch (node.type) {\n    case \"Identifier\":\n    case \"MemberExpression\":\n    case \"OptionalMemberExpression\": {\n      const { extra } = node;\n      if (\n        extra &&\n        !(\n          (extra.read && !extra.read.binding.declared) ||\n          (extra.binding && !extra.binding.declared)\n        )\n      ) {\n        // Only rename declared bindings\n        // TODO this is probably wrong and should walk up to the closest declared binding.\n        return getReadReplacement(node);\n      }\n      break;\n    }\n    case \"CallExpression\": {\n      const read = node.callee.extra?.read;\n      if (\n        read &&\n        (read.getter !== undefined || read.binding.type === BindingType.dom)\n      ) {\n        return t.callExpression(\n          t.arrowFunctionExpression(\n            [t.cloneNode(node.callee as t.Identifier)],\n            node,\n          ),\n          [\n            importRuntime(\n              read.binding.type === BindingType.dom\n                ? \"_el_read_error\"\n                : \"_hoist_read_error\",\n            ),\n          ],\n        );\n      }\n      break;\n    }\n  }\n}\n\nexport function replaceRegisteredFunctionNode(node: t.Node) {\n  switch (node.type) {\n    case \"ClassMethod\": {\n      const replacement = getRegisteredFnExpression(node);\n      return replacement && t.classProperty(node.key, replacement);\n    }\n    case \"ClassPrivateMethod\": {\n      const replacement = getRegisteredFnExpression(node);\n      return replacement && t.classPrivateProperty(node.key, replacement);\n    }\n    case \"ObjectMethod\": {\n      const replacement = getRegisteredFnExpression(node);\n      return replacement && t.objectProperty(node.key, replacement);\n    }\n    case \"ArrowFunctionExpression\":\n    case \"FunctionExpression\": {\n      return getRegisteredFnExpression(node);\n    }\n    case \"BlockStatement\":\n    case \"MarkoScriptlet\":\n      addRegisteredDeclarations(node.body);\n      break;\n  }\n}\n\nfunction addRegisteredDeclarations(body: t.Statement[]) {\n  const len = body.length;\n  for (let i = 0; i < len; i++) {\n    const child = body[i];\n    if (\n      child.type === \"FunctionDeclaration\" &&\n      isRegisteredFnExtra(child.extra)\n    ) {\n      body.push(\n        t.expressionStatement(\n          callRuntime(\n            \"_resume\",\n            t.identifier(child.id!.name!),\n            t.stringLiteral(child.extra!.registerId),\n          ),\n        ),\n      );\n    }\n  }\n}\n\nfunction getRegisteredFnExpression(\n  node: Exclude<t.Function, t.FunctionDeclaration>,\n) {\n  const { extra } = node;\n  if (isRegisteredFnExtra(extra)) {\n    return callRuntime(\n      \"_resume\",\n      simplifyFunction(node) as\n        | t.FunctionExpression\n        | t.ArrowFunctionExpression,\n      t.stringLiteral(extra.registerId),\n      (extra.referencedBindingsInFunction || extra.referencesScope) &&\n        getScopeIdIdentifier(extra.section),\n    );\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/visitors/program/index.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  loadFileForImport,\n  resolveRelativePath,\n} from \"@marko/compiler/babel-utils\";\nimport path from \"path\";\n\nimport {\n  type BindingPropTree,\n  getBindingPropTree,\n} from \"../../util/binding-prop-tree\";\nimport entryBuilder from \"../../util/entry-builder\";\nimport { generateUid, generateUidIdentifier } from \"../../util/generate-uid\";\nimport {\n  getMarkoOpts,\n  isOutputDOM,\n  isOutputHTML,\n} from \"../../util/marko-config\";\nimport {\n  BindingType,\n  finalizeReferences,\n  type Sources,\n  trackParamsReferences,\n} from \"../../util/references\";\nimport { getCompatRuntimeFile } from \"../../util/runtime\";\nimport { startSection } from \"../../util/sections\";\nimport type { TemplateVisitor } from \"../../util/visitors\";\nimport programDOM from \"./dom\";\nimport programHTML from \"./html\";\nimport { preAnalyze } from \"./pre-analyze\";\n\nexport type ParamSerializeReason = NonNullable<Sources[\"param\"]>;\nexport interface ParamSerializeReasonGroup {\n  id: symbol;\n  reason: ParamSerializeReason;\n}\nexport type ParamSerializeReasonGroups = [\n  ParamSerializeReasonGroup,\n  ...ParamSerializeReasonGroup[],\n];\n\nexport let scopeIdentifier: t.Identifier;\nexport function isScopeIdentifier(node: t.Node): node is t.Identifier {\n  return node === scopeIdentifier;\n}\n\nexport type TemplateExports = BindingPropTree[\"props\"];\n\ndeclare module \"@marko/compiler/dist/types\" {\n  export interface ProgramExtra {\n    domExports?: {\n      template: string;\n      walks: string;\n      setup: string;\n      params: BindingPropTree | undefined;\n    };\n  }\n}\n\nexport default {\n  migrate: {\n    enter(program) {\n      program.node.params = [t.identifier(\"input\")];\n    },\n    exit(program) {\n      program.scope.crawl();\n    },\n  },\n  transform: {\n    exit: preAnalyze,\n  },\n  analyze: {\n    enter(program) {\n      startSection(program);\n      trackParamsReferences(program, BindingType.input);\n\n      const programExtra = (program.node.extra ??= {});\n      const inputBinding = program.node.params![0].extra?.binding;\n      if (inputBinding) {\n        inputBinding.nullable = false;\n      }\n\n      // TODO: make any exports undefined if they are noops/empty\n      programExtra.domExports = {\n        template: generateUid(\"template\"),\n        walks: generateUid(\"walks\"),\n        setup: generateUid(\"setup\"),\n        params: undefined,\n      };\n    },\n\n    exit(program) {\n      finalizeReferences();\n      const programExtra = program.node.extra!;\n      const paramsBinding = programExtra.binding;\n      if (paramsBinding && !paramsBinding.pruned) {\n        programExtra.domExports!.params = getBindingPropTree(paramsBinding);\n      }\n    },\n  },\n  translate: {\n    enter(program) {\n      scopeIdentifier = isOutputDOM()\n        ? generateUidIdentifier(\"scope\")\n        : (null as any as t.Identifier);\n      if (getMarkoOpts().output === \"hydrate\") {\n        const entryFile = program.hub.file;\n        const visitedFiles = new Set([\n          resolveRelativePath(entryFile, entryFile.opts.filename),\n        ]);\n        entryBuilder.visit(entryFile, entryFile, function visitChild(resolved) {\n          if (!visitedFiles.has(resolved)) {\n            visitedFiles.add(resolved);\n            const file = loadFileForImport(entryFile, resolved);\n            if (file) {\n              entryBuilder.visit(file, entryFile, (id) =>\n                visitChild(resolveRelativeToEntry(entryFile, file, id)),\n              );\n            }\n          }\n        });\n\n        program.node.body = entryBuilder.build(entryFile);\n        program.skip();\n        return;\n      }\n      if (isOutputHTML()) {\n        programHTML.translate.enter();\n      } else {\n        programDOM.translate.enter(program);\n      }\n    },\n    exit(program) {\n      if (isOutputHTML()) {\n        programHTML.translate.exit(program);\n      } else {\n        programDOM.translate.exit(program);\n      }\n\n      if (program.node.extra?.needsCompat) {\n        const compatFile = getCompatRuntimeFile();\n        const body: [undefined | t.Statement, ...t.Statement[]] = [undefined];\n\n        for (const child of program.node.body) {\n          if (\n            child.type === \"ImportDeclaration\" &&\n            child.source.value === compatFile\n          ) {\n            body[0] = child;\n          } else {\n            body.push(child);\n          }\n        }\n\n        body[0] ??= t.importDeclaration([], t.stringLiteral(compatFile));\n        program.node.body = body as t.Statement[];\n      }\n    },\n  },\n} satisfies TemplateVisitor<t.Program>;\n\nfunction resolveRelativeToEntry(\n  entryFile: t.BabelFile,\n  file: t.BabelFile,\n  req: string,\n) {\n  return file === entryFile\n    ? resolveRelativePath(file, req)\n    : resolveRelativePath(\n        entryFile,\n        req[0] === \".\"\n          ? path.join(file.opts.filename as string, \"..\", req)\n          : req,\n      );\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/visitors/program/pre-analyze.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport { isNativeTag } from \"@marko/compiler/babel-utils\";\n\nimport { htmlAttrNameReg, userAttrNameReg } from \"../../../common/helpers\";\nimport { preAnalyze as preAnalyzeTextarea } from \"../../core/textarea\";\nimport { generateUid, generateUidIdentifier } from \"../../util/generate-uid\";\nimport { getMarkoRoot, isMarko } from \"../../util/get-root\";\nimport withPreviousLocation from \"../../util/with-previous-location\";\n\ntype StringOrIdPath = t.NodePath<t.StringLiteral> | t.NodePath<t.Identifier>;\n\nconst TAG_NAME_IDENTIFIER_REG = /^[A-Z][a-zA-Z0-9_$]*$/;\nconst BINDING_CHANGE_HANDLER = new WeakMap<\n  t.Identifier,\n  t.MarkoAttribute | t.Identifier\n>();\n\nexport function preAnalyze(program: t.NodePath<t.Program>) {\n  normalizeBody(program.get(\"body\"));\n}\n\nfunction normalizeBody(\n  body:\n    | undefined\n    | t.NodePath<\n        | t.Program[\"body\"][number]\n        | t.MarkoTagBody[\"body\"][number]\n        | t.MarkoTag[\"attributeTags\"]\n      >[],\n) {\n  if (body?.length) {\n    for (const child of body) {\n      if (child.isMarkoTag()) {\n        normalizeTag(child);\n      }\n    }\n  }\n}\n\nfunction normalizeTag(tag: t.NodePath<t.MarkoTag>) {\n  const { node } = tag;\n  const { name, attributes } = node;\n  let attrNameReg = userAttrNameReg;\n  normalizeBody(tag.get(\"body\").get(\"body\"));\n  normalizeBody(tag.get(\"attributeTags\"));\n\n  if (node.var) {\n    const insertions = getAssignmentInsertions(node.var);\n    if (insertions) {\n      tag.insertAfter(insertions);\n    }\n  }\n\n  if (node.body.params.length) {\n    let insertions: t.MarkoTag[] | undefined;\n    for (const param of node.body.params) {\n      insertions = getAssignmentInsertions(param, insertions);\n    }\n\n    if (insertions) {\n      node.body.body = [...insertions, ...node.body.body];\n    }\n  }\n\n  if (name.type === \"StringLiteral\") {\n    const tagName = name.value;\n    if (\n      tag.scope.getBinding(tagName) &&\n      TAG_NAME_IDENTIFIER_REG.test(tagName)\n    ) {\n      // Convert tags which have an associated binding to an identifier.\n      // <MyTag> --> <${MyTag}>\n      node.name = withPreviousLocation(t.identifier(tagName), name);\n    } else if (isNativeTag(tag)) {\n      attrNameReg = htmlAttrNameReg;\n      switch (tagName) {\n        case \"textarea\":\n          preAnalyzeTextarea(tag);\n          break;\n      }\n    }\n  }\n\n  for (let i = 0; i < attributes.length; i++) {\n    const attr = attributes[i];\n    if (t.isMarkoAttribute(attr)) {\n      if (attr.bound) {\n        // Inject change handler functions from the binding shorthand.\n        attributes.splice(++i, 0, getChangeHandler(tag, attr));\n        attr.bound = false;\n      } else if (attr.modifier != null) {\n        attr.name += \":\" + attr.modifier;\n      }\n\n      if (attrNameReg.test(attr.name)) {\n        throw tag.hub.buildError(\n          attr.loc?.end &&\n            ({\n              loc: {\n                start: attr.loc.start,\n                end: {\n                  line: attr.loc.start.line,\n                  column: attr.loc.start.column + attr.name.length,\n                },\n              },\n            } as any),\n          \"Invalid attribute name.\",\n        );\n      }\n\n      attr.modifier = null;\n    }\n  }\n}\n\nfunction getChangeHandler(\n  tag: t.NodePath<t.MarkoTag>,\n  attr: t.MarkoAttribute,\n): t.MarkoAttribute {\n  const attrName = attr.name;\n  const changeAttrName = attrName + \"Change\";\n  let modifier: undefined | t.Identifier;\n  if (attr.modifier != null) {\n    if (!t.isValidIdentifier(attr.modifier)) {\n      throw tag.hub.buildError(\n        attr.value.loc?.end &&\n          ({\n            loc: {\n              start: {\n                line: attr.value.loc.start.line,\n                column: attr.value.loc.start.column - attr.modifier.length - 2,\n              },\n              end: {\n                line: attr.value.loc.start.line,\n                column: attr.value.loc.start.column - 2,\n              },\n            },\n          } as any),\n        \"Bound attribute refinement shorthand must be a valid JavaScript identifier.\",\n      );\n    }\n    modifier = withPreviousLocation(t.identifier(attr.modifier), attr);\n  }\n\n  if (t.isIdentifier(attr.value)) {\n    const binding = tag.scope.getBinding(attr.value.name);\n    if (!binding)\n      return t.markoAttribute(\n        changeAttrName,\n        buildChangeHandlerFunction(attr.value, modifier),\n      );\n\n    const existingChangedAttr = BINDING_CHANGE_HANDLER.get(binding.identifier);\n    if (!existingChangedAttr) {\n      const bindingIdentifierPath =\n        binding.path.getOuterBindingIdentifierPaths()[binding.identifier.name];\n      let changeAttrExpr: undefined | t.Expression = bindingIdentifierPath\n        ? bindingIdentifierPath.parentPath === binding.path\n          ? buildChangeHandlerFunction(attr.value, modifier)\n          : bindingIdentifierPath.parentPath!.isObjectProperty()\n            ? getChangeHandlerFromObjectPattern(\n                bindingIdentifierPath.parentPath!,\n              )\n            : undefined\n        : undefined;\n\n      if (!changeAttrExpr) {\n        throw tag.hub.buildError(attr.value, \"Unable to bind to value.\");\n      }\n\n      if (modifier && t.isIdentifier(changeAttrExpr)) {\n        changeAttrExpr = t.logicalExpression(\n          \"&&\",\n          changeAttrExpr,\n          buildChangeHandlerFunction(attr.value, modifier),\n        );\n      }\n\n      const changeHandlerAttr = t.markoAttribute(\n        changeAttrName,\n        changeAttrExpr,\n      );\n      BINDING_CHANGE_HANDLER.set(binding.identifier, changeHandlerAttr);\n      return changeHandlerAttr;\n    }\n\n    if (existingChangedAttr.type === \"Identifier\") {\n      return t.markoAttribute(\n        changeAttrName,\n        withPreviousLocation(\n          t.identifier(existingChangedAttr.name),\n          attr.value,\n        ),\n      );\n    }\n\n    const markoRoot = isMarko(binding.path)\n      ? binding.path\n      : getMarkoRoot(binding.path);\n\n    if (!(markoRoot?.isMarkoTag() || markoRoot?.isMarkoTagBody())) {\n      throw tag.hub.buildError(attr.value, \"Unable to bind to value.\");\n    }\n\n    const changeHandlerId = generateUid(changeAttrName);\n    const changeHandlerConst = t.markoTag(\n      t.stringLiteral(\"const\"),\n      [t.markoAttribute(\"value\", existingChangedAttr.value, null, null, true)],\n      t.markoTagBody([]),\n      null,\n      t.identifier(changeHandlerId),\n    );\n    BINDING_CHANGE_HANDLER.set(\n      binding.identifier,\n      (existingChangedAttr.value = t.identifier(changeHandlerId)),\n    );\n\n    if (markoRoot.isMarkoTag()) {\n      markoRoot.insertAfter(changeHandlerConst);\n    } else {\n      markoRoot.unshiftContainer(\"body\", changeHandlerConst);\n    }\n\n    return t.markoAttribute(\n      changeAttrName,\n      withPreviousLocation(t.identifier(changeHandlerId), attr.value),\n    );\n  } else if (\n    t.isMemberExpression(attr.value) ||\n    t.isOptionalMemberExpression(attr.value)\n  ) {\n    const prop = attr.value.property;\n    if (!t.isPrivateName(attr.value.property)) {\n      const memberObj = t.cloneNode(attr.value.object);\n      const memberProp =\n        prop.type === \"Identifier\"\n          ? withPreviousLocation(t.identifier(prop.name + \"Change\"), prop)\n          : t.binaryExpression(\n              \"+\",\n              t.cloneNode(prop),\n              t.stringLiteral(\"Change\"),\n            );\n      const computed = memberProp.type !== \"Identifier\";\n      let changeAttrExpr: t.Expression = attr.value.optional\n        ? t.optionalMemberExpression(memberObj, memberProp, computed, true)\n        : t.memberExpression(memberObj, memberProp, computed);\n\n      if (modifier) {\n        const newValueId = generateUid(\"next\");\n        changeAttrExpr = t.logicalExpression(\n          \"&&\",\n          changeAttrExpr,\n          t.arrowFunctionExpression(\n            [t.identifier(newValueId)],\n            t.blockStatement([\n              t.expressionStatement(\n                t.callExpression(\n                  t.memberExpression(memberObj, memberProp, computed),\n                  [t.callExpression(modifier, [t.identifier(newValueId)])],\n                ),\n              ),\n            ]),\n          ),\n        );\n      }\n      return t.markoAttribute(changeAttrName, changeAttrExpr);\n    }\n  }\n\n  throw tag.hub.buildError(\n    attr.value,\n    \"Attributes may only be bound to identifiers or member expressions\",\n  );\n}\n\nfunction buildChangeHandlerFunction(\n  id: t.Identifier,\n  modifier: undefined | t.Identifier,\n) {\n  const newId = \"_new_\" + id.name;\n  let newValue: t.Expression = withPreviousLocation(t.identifier(newId), id);\n  if (modifier) {\n    newValue = t.callExpression(modifier, [newValue]);\n  }\n  return t.arrowFunctionExpression(\n    [withPreviousLocation(t.identifier(newId), id)],\n    t.blockStatement([\n      t.expressionStatement(\n        t.assignmentExpression(\n          \"=\",\n          withPreviousLocation(t.identifier(id.name), id),\n          newValue,\n        ),\n      ),\n    ]),\n  );\n}\n\nfunction getChangeHandlerFromObjectPattern(\n  parent: t.NodePath<t.ObjectProperty>,\n) {\n  let changeKey: t.Identifier;\n  const pattern = parent.parentPath as t.NodePath<t.ObjectPattern>;\n  if (parent.node.computed) {\n    changeKey = generateUidIdentifier(\"dynamicChange\");\n    pattern.pushContainer(\n      \"properties\",\n      t.objectProperty(\n        t.binaryExpression(\n          \"+\",\n          parent.get(\"key\").node,\n          t.stringLiteral(\"Change\"),\n        ),\n        changeKey,\n        true,\n      ),\n    );\n  } else {\n    const key = parent.get(\"key\") as StringOrIdPath;\n    const searchKey = `${getStringOrIdentifierValue(key)}Change`;\n    for (const prop of pattern.get(\"properties\")) {\n      if (prop.isObjectProperty()) {\n        const propKey = prop.get(\"key\");\n        const propValue = prop.get(\"value\");\n        if (\n          !prop.node.computed &&\n          getStringOrIdentifierValue(propKey as StringOrIdPath) === searchKey &&\n          propValue.isIdentifier()\n        ) {\n          changeKey = propValue.node;\n          break;\n        }\n      }\n    }\n\n    if (!changeKey!) {\n      pattern.unshiftContainer(\n        \"properties\",\n        t.objectProperty(\n          t.stringLiteral(searchKey),\n          (changeKey = generateUidIdentifier(searchKey)),\n        ),\n      );\n    }\n  }\n\n  return changeKey;\n}\n\nfunction getStringOrIdentifierValue(path: StringOrIdPath) {\n  return getLiteralName(path.node);\n}\n\nfunction getLiteralName(node: t.Node) {\n  switch (node.type) {\n    case \"Identifier\":\n      return node.name;\n    case \"StringLiteral\":\n      return node.value;\n  }\n}\n\nexport function getAssignmentInsertions(\n  node: t.Node,\n  insertions?: t.MarkoTag[] | undefined,\n) {\n  switch (node.type) {\n    case \"ObjectPattern\":\n      for (const prop of node.properties) {\n        if (prop.type === \"ObjectProperty\") {\n          if (prop.value.type === \"AssignmentPattern\") {\n            const { left, right } = prop.value;\n            const sourceName = generateUid(\n              getLiteralName(left) || getLiteralName(prop.key) || \"pattern\",\n            );\n            prop.shorthand = false;\n            prop.value = t.identifier(sourceName);\n            (insertions ||= []).push(\n              toConstTag(left as any, toFallbackExpr(sourceName, right)),\n            );\n            getAssignmentInsertions(left, insertions);\n          } else {\n            insertions = getAssignmentInsertions(prop.value, insertions);\n          }\n        }\n      }\n      break;\n    case \"ArrayPattern\":\n      for (let i = 0, len = node.elements.length; i < len; i++) {\n        const el = node.elements[i];\n        if (el != null) {\n          if (el.type === \"AssignmentPattern\") {\n            const { left, right } = el;\n            const sourceName = generateUid(getLiteralName(left) || \"pattern\");\n            node.elements[i] = t.identifier(sourceName);\n            (insertions ||= []).push(\n              toConstTag(left as any, toFallbackExpr(sourceName, right)),\n            );\n            getAssignmentInsertions(left, insertions);\n          } else {\n            insertions = getAssignmentInsertions(el, insertions);\n          }\n        }\n      }\n      break;\n  }\n\n  return insertions;\n}\n\nfunction toFallbackExpr(id: string, fallback: t.Expression) {\n  return t.conditionalExpression(\n    t.binaryExpression(\"!==\", buildUndefined(), t.identifier(id)),\n    t.identifier(id),\n    fallback,\n  );\n}\n\nfunction toConstTag(id: t.Identifier, expr: t.Expression) {\n  return t.markoTag(\n    t.stringLiteral(\"const\"),\n    [t.markoAttribute(\"value\", expr, null, null, true)],\n    t.markoTagBody(),\n    null,\n    id,\n  );\n}\n\nfunction buildUndefined() {\n  return t.unaryExpression(\"void\", t.numericLiteral(0));\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/visitors/referenced-identifier.ts",
    "content": "import { types as t } from \"@marko/compiler\";\n\nimport { getAccessorProp } from \"../util/get-accessor-char\";\nimport { getExprRoot } from \"../util/get-root\";\nimport { isOutputHTML } from \"../util/marko-config\";\nimport { setReferencesScope } from \"../util/references\";\nimport { importRuntime } from \"../util/runtime\";\nimport { getOrCreateSection, getSection, type Section } from \"../util/sections\";\nimport { addStatement } from \"../util/signals\";\nimport type { TemplateVisitor } from \"../util/visitors\";\nimport { scopeIdentifier } from \"./program\";\n\nconst abortIdsByExpressionForSection = new WeakMap<\n  Section,\n  Map<t.NodePath<t.Node>, number>\n>();\n\nexport default {\n  migrate(identifier) {\n    const { name } = identifier.node;\n    if (identifier.scope.hasBinding(name)) return;\n    switch (name) {\n      case \"out\":\n        if (\n          t.isMemberExpression(identifier.parent) &&\n          t.isIdentifier(identifier.parent.property) &&\n          identifier.parent.property.name === \"global\"\n        ) {\n          identifier.parentPath.replaceWith(t.identifier(\"$global\"));\n        } else {\n          throw identifier.buildCodeFrameError(\n            \"Only `out.global` is supported for compatibility.\",\n          );\n        }\n        break;\n    }\n  },\n  analyze(identifier) {\n    const { name } = identifier.node;\n    if (identifier.scope.hasBinding(name)) return;\n    if (name === \"$global\") {\n      setReferencesScope(identifier);\n    } else if (name === \"$signal\") {\n      const section = getOrCreateSection(identifier);\n      section.hasAbortSignal = true;\n      setReferencesScope(identifier);\n    }\n  },\n  translate(identifier) {\n    const { name } = identifier.node;\n    if (identifier.scope.hasBinding(name)) return;\n    switch (name) {\n      case \"$global\":\n        if (isOutputHTML()) {\n          identifier.replaceWith(\n            t.callExpression(importRuntime(\"$global\"), []),\n          );\n        } else {\n          identifier.replaceWith(\n            t.memberExpression(\n              scopeIdentifier,\n              t.identifier(getAccessorProp().Global),\n            ),\n          );\n        }\n        break;\n      case \"$signal\":\n        if (isOutputHTML()) {\n          identifier.replaceWith(\n            t.callExpression(\n              t.arrowFunctionExpression(\n                [],\n                t.blockStatement([\n                  t.throwStatement(\n                    t.newExpression(t.identifier(\"Error\"), [\n                      t.stringLiteral(\"Cannot use $signal in a server render.\"),\n                    ]),\n                  ),\n                ]),\n              ),\n              [],\n            ),\n          );\n        } else {\n          const section = getSection(identifier);\n          const exprRoot = getExprRoot(identifier);\n          let abortIdsByExpression =\n            abortIdsByExpressionForSection.get(section);\n          let exprId: number | undefined;\n\n          if (abortIdsByExpression) {\n            exprId = abortIdsByExpression.get(exprRoot);\n          } else {\n            abortIdsByExpression = new Map();\n            abortIdsByExpressionForSection.set(section, abortIdsByExpression);\n          }\n\n          if (!exprId) {\n            exprId = abortIdsByExpression.size;\n            abortIdsByExpression.set(exprRoot, exprId);\n            addStatement(\n              \"render\",\n              section,\n              exprRoot.node.extra?.referencedBindings,\n              t.expressionStatement(\n                t.callExpression(importRuntime(\"$signalReset\"), [\n                  scopeIdentifier,\n                  t.numericLiteral(exprId),\n                ]),\n              ),\n              false,\n            );\n          }\n\n          identifier.replaceWith(\n            t.callExpression(importRuntime(\"$signal\"), [\n              scopeIdentifier,\n              t.numericLiteral(exprId),\n            ]),\n          );\n        }\n    }\n  },\n} satisfies TemplateVisitor<t.Identifier>;\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/visitors/scriptlet.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport { getProgram } from \"@marko/compiler/babel-utils\";\n\nimport { isOutputHTML } from \"../util/marko-config\";\nimport { mergeReferences } from \"../util/references\";\nimport { getOrCreateSection } from \"../util/sections\";\nimport { replaceRegisteredFunctionNode } from \"../util/signals\";\nimport { traverseReplace } from \"../util/traverse\";\nimport type { TemplateVisitor } from \"../util/visitors\";\n\nexport default {\n  analyze(scriptlet) {\n    if (!scriptlet.node.static) {\n      throw scriptlet.buildCodeFrameError(\n        \"Scriptlets are not supported when using the tags api.\",\n      );\n    }\n    mergeReferences(\n      getOrCreateSection(scriptlet),\n      scriptlet.node,\n      scriptlet.node.body,\n    );\n\n    if (scriptlet.node.target === \"client\") {\n      getProgram().node.extra.isInteractive = true;\n    }\n  },\n  translate: {\n    exit(scriptlet) {\n      const { node } = scriptlet;\n      const isHTML = isOutputHTML();\n\n      if (node.target && node.target !== (isHTML ? \"server\" : \"client\")) {\n        const ids = Object.keys(scriptlet.getOuterBindingIdentifiers());\n        const decl =\n          ids.length &&\n          t.variableDeclaration(\n            \"var\",\n            ids.map((key) => t.variableDeclarator(t.identifier(key))),\n          );\n        if (decl) {\n          if (isHTML) {\n            // handled in program exit for html currently.\n            scriptlet.node.target = null;\n            scriptlet.node.body = [decl];\n          } else {\n            scriptlet.replaceWith(decl);\n          }\n        } else {\n          scriptlet.remove();\n        }\n\n        return;\n      }\n\n      if (isHTML) {\n        // handled in program exit for html currently.\n      } else {\n        traverseReplace(node, \"body\", replaceRegisteredFunctionNode);\n        scriptlet.replaceWithMultiple(node.body);\n      }\n    },\n  },\n} satisfies TemplateVisitor<t.MarkoScriptlet>;\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/visitors/tag/attribute-tag.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  assertNoArgs,\n  assertNoVar,\n  findParentTag,\n} from \"@marko/compiler/babel-utils\";\n\nimport { isOutputHTML } from \"../../util/marko-config\";\nimport { BindingType, trackParamsReferences } from \"../../util/references\";\nimport { startSection } from \"../../util/sections\";\nimport { writeHTMLResumeStatements } from \"../../util/signals\";\nimport type { TemplateVisitor } from \"../../util/visitors\";\nimport * as writer from \"../../util/writer\";\n\nexport default {\n  analyze: {\n    enter(tag) {\n      assertNoVar(tag);\n      assertNoArgs(tag);\n      const body = tag.get(\"body\");\n      startSection(body);\n      trackParamsReferences(body, BindingType.param);\n      if (!findParentTag(tag)) {\n        throw tag\n          .get(\"name\")\n          .buildCodeFrameError(\n            \"[Attribute tags](https://markojs.com/docs/reference/language#attribute-tags) must be nested within another tag.\",\n          );\n      }\n    },\n  },\n\n  translate: {\n    enter(tag) {\n      if (isOutputHTML()) {\n        writer.flushBefore(tag);\n      }\n    },\n    exit(tag) {\n      if (isOutputHTML()) {\n        writer.flushInto(tag);\n        writeHTMLResumeStatements(tag.get(\"body\"));\n      }\n    },\n  },\n} satisfies TemplateVisitor<t.MarkoTag>;\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/visitors/tag/custom-tag.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  assertAttributesOrSingleArg,\n  getProgram,\n  getTagDef,\n  getTagTemplate,\n  importDefault,\n  importNamed,\n  loadFileForTag,\n  resolveRelativePath,\n} from \"@marko/compiler/babel-utils\";\nimport { closest, distance } from \"fastest-levenshtein\";\nimport path from \"path\";\n\nimport { getBindingPropTree } from \"../../util/binding-prop-tree\";\nimport { getTagName } from \"../../util/get-tag-name\";\nimport {\n  knownTagAnalyze,\n  knownTagTranslateDOM,\n  knownTagTranslateHTML,\n} from \"../../util/known-tag\";\nimport { isOutputHTML } from \"../../util/marko-config\";\nimport { createScopeReadExpression } from \"../../util/scope-read\";\nimport { addStatement, getSignal } from \"../../util/signals\";\nimport type { TemplateVisitor } from \"../../util/visitors\";\nimport * as walks from \"../../util/walks\";\nimport * as writer from \"../../util/writer\";\nimport { getTemplateContentName } from \"../program/html\";\n\nexport default {\n  analyze: {\n    enter(tag) {\n      const templateFile = getTagTemplate(tag);\n\n      if (!templateFile) throw tagNotFoundError(tag);\n\n      assertAttributesOrSingleArg(tag);\n\n      const childFile = loadFileForTag(tag);\n\n      if (!childFile) {\n        throw tag\n          .get(\"name\")\n          .buildCodeFrameError(\"Unable to resolve file for tag.\");\n      }\n\n      const programExtra = getProgram().node.extra;\n      const programSection = programExtra.section!;\n      const childProgram = childFile.ast.program;\n      const childExtra = childProgram.extra;\n      const childSection = childExtra.section!;\n\n      if (childExtra.page) {\n        programExtra.page ??= true;\n      }\n\n      knownTagAnalyze(\n        tag,\n        childSection,\n        programSection === childSection\n          ? programSection.params && getBindingPropTree(programSection.params)\n          : childExtra.domExports?.params,\n      );\n    },\n  },\n  translate: {\n    enter(tag) {\n      if (isOutputHTML()) {\n        writer.flushBefore(tag);\n      }\n    },\n    exit(tag) {\n      if (isOutputHTML()) {\n        translateHTML(tag);\n      } else {\n        translateDOM(tag);\n      }\n    },\n  },\n} satisfies TemplateVisitor<t.MarkoTag>;\n\nfunction translateHTML(tag: t.NodePath<t.MarkoTag>) {\n  const { node } = tag;\n  const childProgram = loadFileForTag(tag)!.ast.program;\n  const childExtra = childProgram.extra;\n\n  let tagIdentifier: t.Expression;\n  if (t.isStringLiteral(node.name)) {\n    const relativePath = getTagRelativePath(tag);\n    tagIdentifier = isCircularRequest(tag.hub.file, relativePath)\n      ? t.identifier(getTemplateContentName())\n      : importDefault(tag.hub.file, relativePath, getTagName(tag));\n  } else {\n    tagIdentifier = node.name;\n  }\n\n  knownTagTranslateHTML(\n    tag,\n    tagIdentifier,\n    childExtra.section!,\n    childExtra.domExports?.params,\n  );\n}\n\nfunction translateDOM(tag: t.NodePath<t.MarkoTag>) {\n  const { node } = tag;\n  const { file } = tag.hub;\n  const write = writer.writeTo(tag);\n  const relativePath = getTagRelativePath(tag);\n  const programSection = getProgram().node.extra.section!;\n  const childFile = loadFileForTag(tag)!;\n  const childExtra = childFile.ast.program.extra;\n  const childExports = childExtra.domExports!;\n  const childSection = childExtra.section!;\n  const tagName = t.isIdentifier(node.name)\n    ? node.name.name\n    : t.isStringLiteral(node.name)\n      ? node.name.value\n      : \"tag\";\n\n  if (programSection === childSection) {\n    knownTagTranslateDOM(\n      tag,\n      childExports.params,\n      (binding, preferredName) =>\n        getSignal(programSection, binding, preferredName).identifier,\n      (section, childBinding) => {\n        addStatement(\n          \"render\",\n          section,\n          undefined,\n          t.expressionStatement(\n            t.callExpression(t.identifier(childExports.setup), [\n              createScopeReadExpression(childBinding, section),\n            ]),\n          ),\n        );\n      },\n    );\n\n    write`${t.identifier(childExports.template)}`;\n    walks.injectWalks(tag, tagName, t.identifier(childExports.walks));\n  } else {\n    knownTagTranslateDOM(\n      tag,\n      childExports.params,\n      (binding, preferredName) =>\n        importOrSelfReferenceName(\n          tag.hub.file,\n          relativePath,\n          binding.export!,\n          preferredName,\n        ),\n      (section, childBinding) => {\n        addStatement(\n          \"render\",\n          section,\n          undefined,\n          t.expressionStatement(\n            t.callExpression(\n              importOrSelfReferenceName(\n                file,\n                relativePath,\n                childExports.setup,\n                tagName,\n              ),\n              [createScopeReadExpression(childBinding, section)],\n            ),\n          ),\n        );\n      },\n    );\n\n    write`${importNamed(file, relativePath, childExports.template, `${tagName}_template`)}`;\n    walks.injectWalks(\n      tag,\n      tagName,\n      importNamed(file, relativePath, childExports.walks, `${tagName}_walks`),\n    );\n  }\n\n  tag.remove();\n}\n\nexport function getTagRelativePath(tag: t.NodePath<t.MarkoTag>) {\n  const {\n    node,\n    hub: { file },\n  } = tag;\n  let relativePath: string | undefined;\n\n  if (t.isStringLiteral(node.name)) {\n    const template =\n      (node.extra?.featureType === \"class\" && getTagDef(tag)?.renderer) ||\n      getTagTemplate(tag);\n    relativePath = template && resolveRelativePath(file, template);\n  } else if (node.extra?.tagNameImported) {\n    relativePath = node.extra.tagNameImported;\n  }\n\n  if (!relativePath) throw tagNotFoundError(tag);\n\n  return relativePath;\n}\n\nfunction tagNotFoundError(tag: t.NodePath<t.MarkoTag>) {\n  const tagName = getTagName(tag);\n  if (tagName && tag.scope.hasBinding(tagName)) {\n    return tag\n      .get(\"name\")\n      .buildCodeFrameError(\n        `Local variables must be in a [dynamic tag](https://markojs.com/docs/reference/language#dynamic-tags) unless they are PascalCase. Use \\`<\\${${tagName}}/>\\` or rename to \\`${tagName.charAt(0).toUpperCase() + tagName.slice(1)}\\`.`,\n      );\n  }\n  let didYouMean = \"\";\n  if (tagName) {\n    const closestTag = closest(\n      tagName,\n      Object.keys(tag.state.file.___taglibLookup.merged.tags),\n    );\n    if (distance(tagName, closestTag) < 4) {\n      didYouMean = ` Did you mean \\`<${closestTag}>\\`?`;\n    }\n  }\n  return tag\n    .get(\"name\")\n    .buildCodeFrameError(\n      `Unable to find entry point for [custom tag](https://markojs.com/docs/reference/custom-tag#relative-custom-tags) \\`<${tagName}>\\`.${didYouMean}`,\n    );\n}\n\nfunction importOrSelfReferenceName(\n  file: t.BabelFile,\n  request: string,\n  name: string,\n  nameHint?: string,\n): t.Identifier {\n  if (isCircularRequest(file, request)) {\n    return t.identifier(name);\n  }\n\n  return importNamed(file, request, name, nameHint);\n}\n\nfunction isCircularRequest(file: t.BabelFile, request: string) {\n  const { filename } = file.opts;\n  return (\n    request === filename ||\n    (request[0] === \".\" && path.resolve(filename, \"..\", request) === filename)\n  );\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/visitors/tag/dynamic-tag.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  assertAttributesOrArgs,\n  getProgram,\n  importDefault,\n  importNamed,\n  loadFileForTag,\n} from \"@marko/compiler/babel-utils\";\n\nimport { WalkCode } from \"../../../common/types\";\nimport { getBindingPropTree } from \"../../util/binding-prop-tree\";\nimport { generateUidIdentifier } from \"../../util/generate-uid\";\nimport {\n  getAccessorPrefix,\n  getAccessorProp,\n} from \"../../util/get-accessor-char\";\nimport { isEventOrChangeHandler } from \"../../util/is-event-or-change-handler\";\nimport {\n  knownTagAnalyze,\n  knownTagTranslateDOM,\n  knownTagTranslateHTML,\n} from \"../../util/known-tag\";\nimport { isOptimize, isOutputHTML } from \"../../util/marko-config\";\nimport { analyzeAttributeTags } from \"../../util/nested-attribute-tags\";\nimport {\n  type Binding,\n  BindingType,\n  createBinding,\n  getAllTagReferenceNodes,\n  getScopeAccessor,\n  getScopeAccessorLiteral,\n  mergeReferences,\n  trackParamsReferences,\n  trackVarReferences,\n} from \"../../util/references\";\nimport {\n  callRuntime,\n  getCompatRuntimeFile,\n  importRuntime,\n} from \"../../util/runtime\";\nimport {\n  createScopeReadExpression,\n  getScopeExpression,\n} from \"../../util/scope-read\";\nimport {\n  getOrCreateSection,\n  getScopeIdIdentifier,\n  getSection,\n  getSectionForBody,\n  type Section,\n  startSection,\n} from \"../../util/sections\";\nimport { getSerializeGuard } from \"../../util/serialize-guard\";\nimport {\n  addSerializeExpr,\n  getSerializeReason,\n} from \"../../util/serialize-reasons\";\nimport {\n  addStatement,\n  addValue,\n  getResumeRegisterId,\n  getSignal,\n  initValue,\n  type Signal,\n  signalHasStatements,\n  writeHTMLResumeStatements,\n} from \"../../util/signals\";\nimport analyzeTagNameType, { TagNameType } from \"../../util/tag-name-type\";\nimport { toMemberExpression } from \"../../util/to-property-name\";\nimport {\n  getTranslatedBodyContentProperty,\n  propsToExpression,\n  translateAttrs,\n} from \"../../util/translate-attrs\";\nimport type { TemplateVisitor } from \"../../util/visitors\";\nimport * as walks from \"../../util/walks\";\nimport * as writer from \"../../util/writer\";\nimport { getTagRelativePath } from \"./custom-tag\";\n\nconst kDOMBinding = Symbol(\"dynamic tag dom binding\");\nconst kChildOffsetScopeBinding = Symbol(\"custom tag scope offset\");\nconst importedDynamicTagResume = new WeakSet<t.Program>();\n\ndeclare module \"@marko/compiler/dist/types\" {\n  export interface MarkoTagExtra {\n    [kDOMBinding]?: Binding;\n    [kChildOffsetScopeBinding]?: Binding;\n    defineBodySection?: Section;\n  }\n}\n\nexport default {\n  analyze: {\n    enter(tag) {\n      assertAttributesOrArgs(tag);\n      const { node } = tag;\n      const definedBodySection = node.extra?.defineBodySection;\n      if (definedBodySection) {\n        knownTagAnalyze(\n          tag,\n          definedBodySection,\n          definedBodySection.params &&\n            getBindingPropTree(definedBodySection.params),\n        );\n\n        return;\n      }\n\n      analyzeAttributeTags(tag);\n\n      const tagSection = getOrCreateSection(tag);\n      const tagExtra = mergeReferences(tagSection, node, [\n        node.name,\n        ...getAllTagReferenceNodes(node),\n      ]);\n      const tagBody = tag.get(\"body\");\n      const hasVar = !!tag.node.var;\n      const nodeBinding = (tagExtra[kDOMBinding] = createBinding(\n        \"#text\",\n        BindingType.dom,\n        tagSection,\n      ));\n\n      if (\n        hasVar ||\n        tag.node.attributes.some(\n          (attr) =>\n            t.isMarkoSpreadAttribute(attr) || isEventOrChangeHandler(attr.name),\n        )\n      ) {\n        getProgram().node.extra.isInteractive = true;\n      }\n\n      if (hasVar) {\n        trackVarReferences(tag, BindingType.derived);\n        tag.node.var!.extra!.binding!.scopeOffset = tagExtra[\n          kChildOffsetScopeBinding\n        ] = createBinding(\"#scopeOffset\", BindingType.dom, tagSection);\n      }\n\n      startSection(tagBody);\n      trackParamsReferences(tagBody, BindingType.param);\n      addSerializeExpr(tagSection, hasVar || tagExtra, nodeBinding);\n    },\n  },\n  translate: {\n    enter(tag) {\n      if (tag.node.extra?.defineBodySection) {\n        if (isOutputHTML()) {\n          writer.flushBefore(tag);\n        }\n        return;\n      }\n\n      walks.visit(\n        tag,\n        tag.node.var ? WalkCode.DynamicTagWithVar : WalkCode.Replace,\n      );\n      walks.enterShallow(tag);\n\n      if (isOutputHTML()) {\n        writer.flushBefore(tag);\n      }\n    },\n    exit(tag) {\n      const { node } = tag;\n      const tagSection = getSection(tag);\n      const definedBodySection = node.extra?.defineBodySection;\n      if (definedBodySection) {\n        const paramsBinding = definedBodySection.params;\n        const propTree = paramsBinding && getBindingPropTree(paramsBinding);\n\n        if (isOutputHTML()) {\n          knownTagTranslateHTML(\n            tag,\n            t.memberExpression(tag.node.name, t.identifier(\"content\")),\n            definedBodySection,\n            propTree,\n          );\n        } else {\n          const write = writer.writeTo(tag);\n\n          knownTagTranslateDOM(\n            tag,\n            propTree,\n            (binding, preferredName) =>\n              getSignal(definedBodySection, binding, preferredName).identifier,\n            (section, childBinding) => {\n              const signal = getSignal(definedBodySection, undefined);\n              if (signalHasStatements(signal)) {\n                addStatement(\n                  \"render\",\n                  section,\n                  undefined,\n                  t.expressionStatement(\n                    t.callExpression(\n                      t.memberExpression(signal.identifier, t.identifier(\"_\")),\n                      [\n                        createScopeReadExpression(childBinding, section),\n                        getScopeExpression(section, definedBodySection.parent!),\n                      ],\n                    ),\n                  ),\n                );\n              } else if (definedBodySection.readsOwner) {\n                addStatement(\n                  \"render\",\n                  section,\n                  undefined,\n                  t.expressionStatement(\n                    t.assignmentExpression(\n                      \"=\",\n                      toMemberExpression(\n                        createScopeReadExpression(childBinding, section),\n                        getAccessorProp().Owner,\n                      ),\n                      getScopeExpression(section, definedBodySection.parent!),\n                    ),\n                  ),\n                );\n              }\n            },\n          );\n\n          write`${() => writer.getSectionMetaIdentifiers(definedBodySection).writes || \"\"}`;\n          walks.injectWalks(\n            tag,\n            tag.get(\"name\").toString(),\n            () => writer.getSectionMetaIdentifiers(definedBodySection).walks,\n          );\n\n          tag.remove();\n        }\n\n        return;\n      }\n\n      const tagExtra = node.extra!;\n      const nodeBinding = tagExtra[kDOMBinding]!;\n      const isClassAPI = tagExtra.featureType === \"class\";\n      let tagExpression = node.name;\n\n      if (t.isStringLiteral(tagExpression)) {\n        tagExpression = importDefault(\n          tag.hub.file,\n          getTagRelativePath(tag),\n          tagExpression.value,\n        );\n      }\n\n      if (isClassAPI) {\n        // This is the interop layer leaking into the translator\n        // We use the dynamic tag when a custom tag from the class runtime is used\n\n        if (isOutputHTML()) {\n          getProgram().node.body.push(\n            t.markoScriptlet(\n              [\n                t.expressionStatement(\n                  t.callExpression(\n                    importNamed(tag.hub.file, getCompatRuntimeFile(), \"s\"),\n                    [\n                      t.identifier((tagExpression as t.Identifier).name),\n                      t.stringLiteral(loadFileForTag(tag)!.metadata.marko.id),\n                    ],\n                  ),\n                ),\n              ],\n              true,\n            ),\n          );\n        } else {\n          getProgram().node.body.push(\n            t.expressionStatement(\n              callRuntime(\n                \"_resume\",\n                t.stringLiteral(loadFileForTag(tag)!.metadata.marko.id),\n                t.identifier((tagExpression as t.Identifier).name),\n              ),\n            ),\n          );\n        }\n      }\n\n      const { properties, statements } = translateAttrs(\n        tag,\n        undefined,\n        undefined,\n        undefined,\n        isClassAPI ? \"renderBody\" : \"content\",\n      );\n      const args: (t.Expression | t.SpreadElement)[] = [];\n      let hasTagArgs = false;\n\n      if (node.arguments) {\n        hasTagArgs = true;\n        args.push(...node.arguments);\n\n        if (properties.length) {\n          args.push(propsToExpression(properties));\n        }\n      } else {\n        const contentProp = getTranslatedBodyContentProperty(properties);\n        if (contentProp) {\n          properties.splice(properties.indexOf(contentProp), 1);\n          args.push(propsToExpression(properties), contentProp.value);\n        } else {\n          args.push(propsToExpression(properties));\n        }\n      }\n\n      if (isOutputHTML()) {\n        writer.flushInto(tag);\n        writeHTMLResumeStatements(tag.get(\"body\"));\n        const serializeArg = getSerializeGuard(\n          tagSection,\n          getSerializeReason(tagSection, nodeBinding),\n          true,\n        );\n        const dynamicTagExpr = hasTagArgs\n          ? callRuntime(\n              \"_dynamic_tag\",\n              getScopeIdIdentifier(tagSection),\n              getScopeAccessorLiteral(nodeBinding),\n              tagExpression,\n              t.arrayExpression(args),\n              t.numericLiteral(0),\n              t.numericLiteral(1),\n              serializeArg,\n            )\n          : callRuntime(\n              \"_dynamic_tag\",\n              getScopeIdIdentifier(tagSection),\n              getScopeAccessorLiteral(nodeBinding),\n              tagExpression,\n              args[0],\n              args[1] || (serializeArg ? t.numericLiteral(0) : undefined),\n              serializeArg ? t.numericLiteral(0) : undefined,\n              serializeArg,\n            );\n\n        if (node.var) {\n          const dynamicScopeIdentifier = generateUidIdentifier(\n            tag.get(\"name\").toString() + \"_scope\",\n          );\n          statements.push(\n            t.variableDeclaration(\"const\", [\n              t.variableDeclarator(\n                dynamicScopeIdentifier,\n                callRuntime(\"_peek_scope_id\"),\n              ),\n            ]),\n          );\n          statements.push(\n            t.variableDeclaration(\"let\", [\n              t.variableDeclarator(node.var, dynamicTagExpr),\n            ]),\n            t.expressionStatement(\n              callRuntime(\n                \"_var\",\n                getScopeIdIdentifier(tagSection),\n                getScopeAccessorLiteral(\n                  tag.node.extra![kChildOffsetScopeBinding]!,\n                ),\n                dynamicScopeIdentifier,\n                t.stringLiteral(\n                  getResumeRegisterId(\n                    tagSection,\n                    (node.var as t.Identifier).extra?.binding, // TODO: node.var is not always an identifier.\n                    \"var\",\n                  ),\n                ),\n              ),\n            ),\n          );\n        } else {\n          statements.push(t.expressionStatement(dynamicTagExpr));\n        }\n\n        for (const replacement of tag.replaceWithMultiple(statements)) {\n          replacement.skip();\n        }\n      } else {\n        const section = getSection(tag);\n        const bodySection = getSectionForBody(tag.get(\"body\"));\n        const signal = getSignal(section, nodeBinding, \"dynamicTag\");\n        let tagVarSignal: Signal | undefined;\n        if (tag.node.var) {\n          const varBinding = tag.node.var.extra!.binding!;\n          tagVarSignal = initValue(\n            // TODO: support destructuring\n            varBinding,\n          );\n          tagVarSignal.register = true;\n          tagVarSignal.buildAssignment = (valueSection, value) => {\n            const changeArgs = [\n              t.memberExpression(\n                getScopeExpression(tagVarSignal!.section, valueSection),\n                t.stringLiteral(\n                  getAccessorPrefix().BranchScopes +\n                    getScopeAccessor(nodeBinding),\n                ),\n                true,\n              ),\n              value,\n            ];\n            if (!isOptimize()) {\n              changeArgs.push(t.stringLiteral(varBinding.name));\n            }\n            return t.callExpression(importRuntime(\"_var_change\"), changeArgs);\n          };\n        }\n\n        signal.build = () => {\n          return callRuntime(\n            \"_dynamic_tag\",\n            getScopeAccessorLiteral(nodeBinding, true),\n            bodySection && t.identifier(bodySection.name),\n            tagVarSignal\n              ? t.arrowFunctionExpression([], tagVarSignal.identifier)\n              : undefined,\n            hasTagArgs && t.numericLiteral(1),\n          );\n        };\n\n        if (args.length) {\n          const argsOrInput = hasTagArgs\n            ? t.arrayExpression(args)\n            : (args[0] as t.Expression);\n          if (\n            !t.isObjectExpression(argsOrInput) ||\n            argsOrInput.properties.length\n          ) {\n            signal.extraArgs = [\n              t.arrowFunctionExpression(\n                [],\n                statements.length\n                  ? t.blockStatement(\n                      statements.concat(t.returnStatement(argsOrInput)),\n                    )\n                  : argsOrInput,\n              ),\n            ];\n          }\n        }\n\n        enableDynamicTagResume(tag);\n        addValue(section, tagExtra.referencedBindings, signal, tagExpression);\n        tag.remove();\n      }\n    },\n  },\n} satisfies TemplateVisitor<t.MarkoTag>;\n\nfunction enableDynamicTagResume(tag: t.NodePath<t.MarkoTag>) {\n  const program = getProgram().node;\n  if (\n    !importedDynamicTagResume.has(program) &&\n    analyzeTagNameType(tag, true) !== TagNameType.CustomTag\n  ) {\n    for (const attr of tag.node.attributes) {\n      if (\n        attr.type === \"MarkoSpreadAttribute\" ||\n        (attr.type === \"MarkoAttribute\" && isEventOrChangeHandler(attr.name))\n      ) {\n        importedDynamicTagResume.add(program);\n        program.body.push(\n          t.expressionStatement(callRuntime(\"_resume_dynamic_tag\")),\n        );\n        return;\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/visitors/tag/index.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport { getTagDef, type Plugin } from \"@marko/compiler/babel-utils\";\n\nimport * as hooks from \"../../util/plugin-hooks\";\nimport analyzeTagNameType, { TagNameType } from \"../../util/tag-name-type\";\nimport type { TemplateVisitor } from \"../../util/visitors\";\nimport AttributeTag from \"./attribute-tag\";\nimport CustomTag from \"./custom-tag\";\nimport DynamicTag from \"./dynamic-tag\";\nimport NativeTag from \"./native-tag\";\n\nexport default {\n  analyze: {\n    enter(tag) {\n      const tagDef = getTagDef(tag);\n      const type = analyzeTagNameType(tag);\n      const hook = tagDef?.analyzer?.hook as Plugin;\n\n      if (hook) {\n        hooks.enter(hook, tag);\n        return;\n      }\n\n      if (type === TagNameType.NativeTag) {\n        NativeTag.analyze.enter(tag);\n        return;\n      }\n\n      switch (type) {\n        case TagNameType.CustomTag:\n          CustomTag.analyze.enter(tag);\n          break;\n        case TagNameType.AttributeTag:\n          AttributeTag.analyze.enter(tag);\n          break;\n        case TagNameType.DynamicTag:\n          DynamicTag.analyze.enter(tag);\n          break;\n      }\n    },\n    exit(tag) {\n      const hook = getTagDef(tag)?.analyzer?.hook as Plugin;\n\n      if (hook) {\n        hooks.exit(hook, tag);\n        return;\n      }\n\n      // switch (analyzeTagNameType(tag)) {\n      //   case TagNameType.NativeTag:\n      //     // NativeTag.analyze.exit(tag);\n      //     break;\n      //   case TagNameType.CustomTag:\n      //     // CustomTag.analyze.exit(tag);\n      //     break;\n      //   case TagNameType.AttributeTag:\n      //     // AttributeTag.analyze.exit(tag);\n      //     break;\n      //   case TagNameType.DynamicTag:\n      //     // DynamicTag.analyze.exit(tag);\n      //     break;\n      // }\n    },\n  },\n  translate: {\n    enter(tag) {\n      const tagDef = getTagDef(tag);\n\n      if (tagDef?.translator) {\n        if (tagDef.translator.path) {\n          tag.hub.file.metadata.marko.watchFiles.push(tagDef.translator.path);\n        }\n        hooks.enter(tagDef.translator.hook, tag);\n        return;\n      }\n\n      for (const attr of tag.get(\"attributes\")) {\n        if (attr.isMarkoAttribute()) {\n          if (attr.node.arguments) {\n            throw attr.buildCodeFrameError(\n              `Unsupported arguments on the \\`${attr.node.name}\\` attribute.`,\n            );\n          }\n        }\n      }\n\n      switch (analyzeTagNameType(tag)) {\n        case TagNameType.NativeTag:\n          NativeTag.translate.enter(tag);\n          break;\n        case TagNameType.CustomTag:\n          CustomTag.translate.enter(tag);\n          break;\n        case TagNameType.DynamicTag:\n          DynamicTag.translate.enter(tag);\n          break;\n        case TagNameType.AttributeTag:\n          AttributeTag.translate.enter(tag);\n          break;\n      }\n    },\n\n    exit(tag) {\n      const translator = getTagDef(tag)?.translator;\n\n      if (translator) {\n        hooks.exit(translator.hook, tag);\n        return;\n      }\n\n      switch (analyzeTagNameType(tag)) {\n        case TagNameType.NativeTag:\n          NativeTag.translate.exit(tag);\n          break;\n        case TagNameType.CustomTag:\n          CustomTag.translate.exit(tag);\n          break;\n        case TagNameType.DynamicTag:\n          DynamicTag.translate.exit(tag);\n          break;\n        case TagNameType.AttributeTag:\n          AttributeTag.translate.exit(tag);\n          break;\n      }\n    },\n  },\n} satisfies TemplateVisitor<t.MarkoTag>;\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/visitors/tag/native-tag.ts",
    "content": "import { types as t } from \"@marko/compiler\";\nimport {\n  assertNoArgs,\n  assertNoAttributeTags,\n  assertNoParams,\n  getProgram,\n  getTagDef,\n} from \"@marko/compiler/babel-utils\";\n\nimport { assertExclusiveAttrs } from \"../../../common/errors\";\nimport { getEventHandlerName, isEventHandler } from \"../../../common/helpers\";\nimport { WalkCode } from \"../../../common/types\";\nimport { bodyToTextLiteral } from \"../../util/body-to-text-literal\";\nimport evaluate from \"../../util/evaluate\";\nimport { generateUidIdentifier } from \"../../util/generate-uid\";\nimport { getAccessorProp } from \"../../util/get-accessor-char\";\nimport { getTagName } from \"../../util/get-tag-name\";\nimport { isTextOnlyNativeTag } from \"../../util/is-non-html-text\";\nimport { isOutputHTML } from \"../../util/marko-config\";\nimport { type Opt, push } from \"../../util/optional\";\nimport {\n  type Binding,\n  BindingType,\n  createBinding,\n  dropNodes,\n  getScopeAccessorLiteral,\n  mergeReferences,\n  trackDomVarReferences,\n} from \"../../util/references\";\nimport { callRuntime, getHTMLRuntime } from \"../../util/runtime\";\nimport { createScopeReadExpression } from \"../../util/scope-read\";\nimport {\n  getOrCreateSection,\n  getScopeIdIdentifier,\n  getSection,\n} from \"../../util/sections\";\nimport { getSerializeGuard } from \"../../util/serialize-guard\";\nimport {\n  addSerializeExpr,\n  getSerializeReason,\n} from \"../../util/serialize-reasons\";\nimport { addHTMLEffectCall, addStatement } from \"../../util/signals\";\nimport {\n  toMemberExpression,\n  toObjectProperty,\n  toPropertyName,\n} from \"../../util/to-property-name\";\nimport { propsToExpression } from \"../../util/translate-attrs\";\nimport { type TemplateVisitor, translateByTarget } from \"../../util/visitors\";\nimport * as walks from \"../../util/walks\";\nimport * as writer from \"../../util/writer\";\nimport { scopeIdentifier } from \"../program\";\n\nexport const kNativeTagBinding = Symbol(\"native tag binding\");\nexport const kSkipEndTag = Symbol(\"skip native tag mark\");\nconst kTagContentAttr = Symbol(\"tag could have dynamic content attribute\");\n\nconst htmlSelectArgs = new WeakMap<\n  t.MarkoTag,\n  {\n    value: t.Expression;\n    valueChange: t.Expression;\n  }\n>();\n\ndeclare module \"@marko/compiler/dist/types\" {\n  export interface NodeExtra {\n    [kNativeTagBinding]?: Binding;\n    [kSkipEndTag]?: true;\n    [kTagContentAttr]?: true;\n  }\n}\n\nexport default {\n  analyze: {\n    enter(tag) {\n      assertNoArgs(tag);\n      assertNoParams(tag);\n      assertNoAttributeTags(tag);\n\n      const { node } = tag;\n      if (node.var && !t.isIdentifier(node.var)) {\n        throw tag\n          .get(\"var\")\n          .buildCodeFrameError(\n            \"Tag variables on [native tags](https://markojs.com/docs/reference/native-tag) cannot be destructured.\",\n          );\n      }\n\n      const tagName = getCanonicalTagName(tag);\n      switch (tagName) {\n        case \"html\":\n        case \"body\":\n        case \"head\":\n          getProgram().node.extra.page ??= true;\n          break;\n      }\n\n      const isTextOnly = isTextOnlyNativeTag(tag);\n      const seen: Record<string, t.MarkoAttribute> = {};\n      const { attributes } = tag.node;\n      let injectNonce = isInjectNonceTag(tagName);\n      let hasDynamicAttributes = false;\n      let hasEventHandlers = false;\n      let relatedControllable: RelatedControllable;\n      let spreadReferenceNodes: t.Node[] | undefined;\n      let exprExtras: Opt<t.NodeExtra>;\n\n      for (let i = attributes.length; i--; ) {\n        const attr = attributes[i];\n        const valueExtra = (attr.value.extra ??= {});\n\n        if (t.isMarkoAttribute(attr)) {\n          if (seen[attr.name]) {\n            // drop references for duplicated attributes.\n            dropNodes(attr.value);\n            continue;\n          }\n\n          seen[attr.name] = attr;\n\n          if (injectNonce && attr.name === \"nonce\") {\n            injectNonce = false;\n          }\n\n          if (isEventHandler(attr.name)) {\n            valueExtra.isEffect = true;\n            hasEventHandlers = true;\n          } else if (!evaluate(attr.value).confident) {\n            hasDynamicAttributes = true;\n          }\n        } else if (t.isMarkoSpreadAttribute(attr)) {\n          valueExtra.isEffect = true;\n          hasEventHandlers = true;\n          hasDynamicAttributes = true;\n        }\n\n        if (spreadReferenceNodes) {\n          spreadReferenceNodes.push(attr.value);\n        } else if (t.isMarkoSpreadAttribute(attr)) {\n          spreadReferenceNodes = [attr.value];\n          relatedControllable = getRelatedControllable(tagName, seen);\n        } else {\n          exprExtras = push(exprExtras, valueExtra);\n        }\n      }\n\n      assertExclusiveAttrs(seen, (msg) => {\n        throw tag.get(\"name\").buildCodeFrameError(msg);\n      });\n\n      let textPlaceholders: undefined | t.Node[];\n      if (isTextOnly) {\n        for (const child of tag.node.body.body) {\n          if (t.isMarkoPlaceholder(child)) {\n            (textPlaceholders ||= []).push(child.value);\n          } else if (!t.isMarkoText(child)) {\n            throw tag.hub.buildError(\n              child,\n              `Only text is allowed inside a \\`<${tagName}>\\`.`,\n            );\n          }\n        }\n      }\n\n      if (\n        node.var ||\n        hasDynamicAttributes ||\n        hasEventHandlers ||\n        textPlaceholders ||\n        injectNonce ||\n        isDynamicControllable(getRelatedControllable(tagName, seen))\n      ) {\n        const tagExtra = (node.extra ??= {});\n        const tagSection = getOrCreateSection(tag);\n        const nodeBinding = (tagExtra[kNativeTagBinding] = createBinding(\n          \"#\" + getCanonicalTagName(tag),\n          BindingType.dom,\n          tagSection,\n          undefined,\n          undefined,\n          undefined,\n          undefined,\n          !!node.var,\n        ));\n\n        if (hasEventHandlers) {\n          getProgram().node.extra.isInteractive = true;\n        }\n\n        if (spreadReferenceNodes) {\n          if (\n            relatedControllable &&\n            !relatedControllable.attrs.every(Boolean)\n          ) {\n            for (const attr of relatedControllable.attrs) {\n              if (attr) {\n                spreadReferenceNodes.push(attr.value);\n              }\n            }\n            relatedControllable = undefined;\n          }\n          mergeReferences(tagSection, tag.node, spreadReferenceNodes);\n        } else {\n          relatedControllable = getRelatedControllable(tagName, seen);\n        }\n\n        if (relatedControllable) {\n          mergeReferences(\n            tagSection,\n            relatedControllable.attrs.find(Boolean)!.value,\n            relatedControllable.attrs.map((it) => it?.value),\n          );\n        }\n\n        if (textPlaceholders) {\n          exprExtras = push(\n            exprExtras,\n            textPlaceholders.length === 1\n              ? (textPlaceholders[0].extra ??= {})\n              : mergeReferences(\n                  tagSection,\n                  textPlaceholders[0],\n                  textPlaceholders.slice(1),\n                ),\n          );\n        }\n\n        addSerializeExpr(\n          tagSection,\n          !!(node.var || hasEventHandlers),\n          nodeBinding,\n        );\n\n        trackDomVarReferences(tag, nodeBinding);\n\n        addSerializeExpr(tagSection, push(exprExtras, tagExtra), nodeBinding);\n      }\n    },\n  },\n  translate: translateByTarget({\n    html: {\n      enter(tag) {\n        const tagName = getCanonicalTagName(tag);\n        const tagExtra = tag.node.extra!;\n        const nodeBinding = tagExtra[kNativeTagBinding];\n        const tagDef = getTagDef(tag);\n        const write = writer.writeTo(tag);\n        const tagSection = getSection(tag);\n        const visitAccessor =\n          nodeBinding && getScopeAccessorLiteral(nodeBinding);\n\n        write`<${tagName}`;\n\n        const usedAttrs = getUsedAttrs(tagName, tag.node);\n        const {\n          staticAttrs,\n          staticControllable,\n          staticContentAttr,\n          skipExpression,\n          injectNonce,\n        } = usedAttrs;\n        let { spreadExpression } = usedAttrs;\n\n        if (injectNonce) {\n          write`${callRuntime(\"_attr_nonce\")}`;\n        }\n\n        if (staticControllable) {\n          const hasChangeHandler = !!staticControllable.attrs[1];\n          if (tagName !== \"select\" && tagName !== \"textarea\") {\n            write`${callRuntime(\n              staticControllable.helper,\n              getScopeIdIdentifier(tagSection),\n              visitAccessor,\n              ...staticControllable.attrs.map((attr) => attr?.value),\n            )}`;\n          }\n\n          if (hasChangeHandler) {\n            addHTMLEffectCall(tagSection, undefined);\n          }\n        }\n\n        let writeAtStartOfBody: t.Expression | undefined;\n\n        if (tagName === \"select\") {\n          if (staticControllable) {\n            htmlSelectArgs.set(tag.node, {\n              value: staticControllable.attrs[0]?.value || buildUndefined(),\n              valueChange:\n                staticControllable.attrs[1]?.value || buildUndefined(),\n            });\n          } else if (spreadExpression) {\n            const spreadIdentifier = generateUidIdentifier(\"select_input\");\n            tag.insertBefore(\n              t.variableDeclaration(\"const\", [\n                t.variableDeclarator(spreadIdentifier, spreadExpression),\n              ]),\n            );\n            htmlSelectArgs.set(tag.node, {\n              value: t.memberExpression(\n                spreadIdentifier,\n                t.identifier(\"value\"),\n              ),\n              valueChange: t.memberExpression(\n                spreadIdentifier,\n                t.identifier(\"valueChange\"),\n              ),\n            });\n            spreadExpression = spreadIdentifier;\n          }\n        } else if (tagName === \"textarea\") {\n          let value: undefined | t.Expression;\n          let valueChange: undefined | t.Expression;\n          if (staticControllable) {\n            value = staticControllable.attrs[0]?.value;\n            valueChange = staticControllable.attrs[1]?.value;\n          } else if (spreadExpression) {\n            const spreadIdentifier = generateUidIdentifier(\"textarea_input\");\n            tag.insertBefore(\n              t.variableDeclaration(\"const\", [\n                t.variableDeclarator(spreadIdentifier, spreadExpression),\n              ]),\n            );\n            value = t.memberExpression(spreadIdentifier, t.identifier(\"value\"));\n            valueChange = t.memberExpression(\n              spreadIdentifier,\n              t.identifier(\"valueChange\"),\n            );\n            spreadExpression = spreadIdentifier;\n          }\n\n          if (valueChange) {\n            writeAtStartOfBody = callRuntime(\n              \"_attr_textarea_value\",\n              getScopeIdIdentifier(getSection(tag)),\n              visitAccessor,\n              value,\n              valueChange,\n            );\n          } else if (value) {\n            writeAtStartOfBody = callRuntime(\"_escape_text\", value);\n          }\n        }\n\n        for (const attr of staticAttrs) {\n          const { name, value } = attr;\n          const { confident, computed } = value.extra || {};\n          const valueReferences = value.extra?.referencedBindings;\n\n          if (tagName === \"option\" && name === \"value\") {\n            write`${callRuntime(\"_attr_option_value\", value)}`;\n            continue;\n          }\n\n          switch (name) {\n            case \"class\":\n            case \"style\": {\n              const helper = `_attr_${name}` as const;\n              if (confident) {\n                write`${getHTMLRuntime()[helper](computed)}`;\n              } else {\n                write`${callRuntime(helper, value)}`;\n              }\n              break;\n            }\n            default:\n              if (confident) {\n                write`${getHTMLRuntime()._attr(name, computed)}`;\n              } else if (isEventHandler(name)) {\n                addHTMLEffectCall(tagSection, valueReferences);\n              } else {\n                write`${callRuntime(\"_attr\", t.stringLiteral(name), value)}`;\n              }\n\n              break;\n          }\n        }\n\n        const isOpenOnly = !!(tagDef && tagDef.parseOptions?.openTagOnly);\n        const isTextOnly = isTextOnlyNativeTag(tag);\n        const hasChildren = !!tag.node.body.body.length;\n\n        if (spreadExpression) {\n          addHTMLEffectCall(tagSection, tagExtra.referencedBindings);\n\n          if (isTextOnly || isOpenOnly || hasChildren || staticContentAttr) {\n            if (skipExpression) {\n              write`${callRuntime(\n                \"_attrs_partial\",\n                spreadExpression,\n                skipExpression,\n                visitAccessor,\n                getScopeIdIdentifier(tagSection),\n                t.stringLiteral(tagName),\n              )}`;\n            } else {\n              write`${callRuntime(\n                \"_attrs\",\n                spreadExpression,\n                visitAccessor,\n                getScopeIdIdentifier(tagSection),\n                t.stringLiteral(tagName),\n              )}`;\n            }\n          }\n        }\n\n        if (isOpenOnly) {\n          switch (tagDef.htmlType) {\n            case \"svg\":\n            case \"math\":\n              write`/>`;\n              break;\n            default:\n              write`>`;\n              break;\n          }\n        } else if (isTextOnly) {\n          write`>`;\n        } else if (staticContentAttr) {\n          write`>`;\n          tagExtra[kTagContentAttr] = true;\n          (tag.node.body.body as t.Statement[]) = [\n            t.expressionStatement(\n              callRuntime(\n                \"_attr_content\",\n                visitAccessor,\n                getScopeIdIdentifier(tagSection),\n                staticContentAttr.value,\n                getSerializeGuard(\n                  tagSection,\n                  nodeBinding && getSerializeReason(tagSection, nodeBinding),\n                  true,\n                ),\n              ),\n            ),\n          ];\n        } else if (spreadExpression && !hasChildren) {\n          const serializeReason = getSerializeGuard(\n            tagSection,\n            nodeBinding && getSerializeReason(tagSection, nodeBinding),\n            true,\n          );\n          tagExtra[kTagContentAttr] = true;\n          (tag.node.body.body as t.Statement[]) = [\n            skipExpression\n              ? t.expressionStatement(\n                  callRuntime(\n                    \"_attrs_partial_content\",\n                    spreadExpression,\n                    skipExpression,\n                    visitAccessor,\n                    getScopeIdIdentifier(tagSection),\n                    t.stringLiteral(tagName),\n                    serializeReason,\n                  ),\n                )\n              : t.expressionStatement(\n                  callRuntime(\n                    \"_attrs_content\",\n                    spreadExpression,\n                    visitAccessor,\n                    getScopeIdIdentifier(tagSection),\n                    t.stringLiteral(tagName),\n                    serializeReason,\n                  ),\n                ),\n          ];\n        } else {\n          write`>`;\n        }\n\n        if (writeAtStartOfBody) {\n          write`${writeAtStartOfBody}`;\n        }\n      },\n      exit(tag) {\n        const tagExtra = tag.node.extra!;\n        const nodeBinding = tagExtra[kNativeTagBinding];\n        const isOpenOnly = getTagDef(tag)?.parseOptions?.openTagOnly;\n        const isTextOnly = isTextOnlyNativeTag(tag);\n        const selectArgs = htmlSelectArgs.get(tag.node);\n        const tagName = getCanonicalTagName(tag);\n        const tagSection = getSection(tag);\n        const markerSerializeReason =\n          !tagExtra[kSkipEndTag] &&\n          nodeBinding &&\n          getSerializeReason(tagSection, nodeBinding);\n        const write = writer.writeTo(\n          tag,\n          !markerSerializeReason && (tagName === \"html\" || tagName === \"body\"),\n        );\n\n        if (tagExtra[kTagContentAttr]) {\n          writer.flushBefore(tag);\n        }\n\n        if (selectArgs) {\n          if (!tagExtra[kSkipEndTag]) {\n            write`</${tagName}>`;\n          }\n\n          writer.flushInto(tag);\n          tag.insertBefore(\n            t.expressionStatement(\n              callRuntime(\n                \"_attr_select_value\",\n                getScopeIdIdentifier(getSection(tag)),\n                nodeBinding && getScopeAccessorLiteral(nodeBinding),\n                selectArgs.value,\n                selectArgs.valueChange,\n                t.arrowFunctionExpression(\n                  [],\n                  t.blockStatement(tag.node.body.body),\n                ),\n              ),\n            ),\n          );\n        } else if (isTextOnly) {\n          for (const child of tag.node.body.body) {\n            if (t.isMarkoText(child)) {\n              write`${child.value}`;\n            } else if (t.isMarkoPlaceholder(child)) {\n              write`${callRuntime(getTextOnlyEscapeHelper(tagName), child.value)}`;\n            }\n          }\n        } else {\n          tag.insertBefore(tag.node.body.body).forEach((child) => child.skip());\n        }\n\n        if (!tagExtra[kSkipEndTag] && !isOpenOnly && !selectArgs) {\n          write`</${tagName}>`;\n        }\n\n        if (markerSerializeReason) {\n          writer.markNode(tag, nodeBinding, markerSerializeReason);\n        }\n\n        tag.remove();\n      },\n    },\n    dom: {\n      enter(tag) {\n        const tagName = getCanonicalTagName(tag);\n        const tagExtra = tag.node.extra!;\n        const nodeBinding = tagExtra[kNativeTagBinding];\n        const tagDef = getTagDef(tag);\n        const write = writer.writeTo(tag);\n        const tagSection = getSection(tag);\n        const visitAccessor =\n          nodeBinding && getScopeAccessorLiteral(nodeBinding);\n\n        if (nodeBinding) {\n          walks.visit(tag, WalkCode.Get);\n        }\n\n        write`<${tagName}`;\n\n        const {\n          staticAttrs,\n          staticControllable,\n          staticContentAttr,\n          skipExpression,\n          spreadExpression,\n          injectNonce,\n        } = getUsedAttrs(tagName, tag.node);\n        const isOpenOnly = !!(tagDef && tagDef.parseOptions?.openTagOnly);\n        const isTextOnly = isTextOnlyNativeTag(tag);\n        const hasChildren = !!tag.node.body.body.length;\n\n        if (injectNonce) {\n          addStatement(\n            \"render\",\n            tagSection,\n            undefined,\n            t.expressionStatement(\n              callRuntime(\n                \"_attr_nonce\",\n                scopeIdentifier,\n                getScopeAccessorLiteral(nodeBinding!),\n              ),\n            ),\n            undefined,\n            true,\n          );\n        }\n\n        if (staticControllable) {\n          const hasChangeHandler = !!staticControllable.attrs[1];\n          const firstAttr = staticControllable.attrs.find(Boolean)!;\n          const referencedBindings = firstAttr.value.extra?.referencedBindings;\n          const values = (\n            hasChangeHandler\n              ? staticControllable.attrs\n              : staticControllable.attrs.toSpliced(1, 1)\n          ).map((attr) => attr?.value);\n\n          addStatement(\n            \"render\",\n            tagSection,\n            referencedBindings,\n            t.expressionStatement(\n              callRuntime(\n                hasChangeHandler\n                  ? staticControllable.helper\n                  : `${staticControllable.helper}_default`,\n                scopeIdentifier,\n                visitAccessor,\n                ...values,\n              ),\n            ),\n          );\n\n          if (hasChangeHandler) {\n            addStatement(\n              \"effect\",\n              tagSection,\n              undefined,\n              t.expressionStatement(\n                callRuntime(\n                  `${staticControllable.helper}_script`,\n                  scopeIdentifier,\n                  visitAccessor,\n                ),\n              ),\n            );\n          }\n        }\n\n        for (const attr of staticAttrs) {\n          const { name, value } = attr;\n          const { confident, computed } = value.extra || {};\n          const valueReferences = value.extra?.referencedBindings;\n\n          switch (name) {\n            case \"class\":\n            case \"style\": {\n              const helper = `_attr_${name}` as const;\n              if (confident) {\n                write`${getHTMLRuntime()[helper](computed)}`;\n              } else {\n                const nodeExpr = createScopeReadExpression(nodeBinding!);\n                const meta: DelimitedAttrMeta = {\n                  staticItems: undefined,\n                  dynamicItems: undefined,\n                  dynamicValues: undefined,\n                };\n                let stmt: undefined | t.Statement;\n                trackDelimitedAttrValue(value, meta);\n\n                if (meta.dynamicItems) {\n                  stmt = t.expressionStatement(\n                    callRuntime(helper, nodeExpr, value),\n                  );\n                } else {\n                  if (meta.staticItems) {\n                    write`${getHTMLRuntime()[helper](meta.staticItems)}`;\n                  }\n\n                  if (meta.dynamicValues) {\n                    const keys = Object.keys(meta.dynamicValues);\n\n                    if (keys.length === 1) {\n                      const [key] = keys;\n                      const value = meta.dynamicValues[key];\n                      stmt = t.expressionStatement(\n                        callRuntime(\n                          `_attr_${name}_item`,\n                          nodeExpr,\n                          t.stringLiteral(key),\n                          value,\n                        ),\n                      );\n                    } else {\n                      const props: t.ObjectExpression[\"properties\"] = [];\n                      for (const key of keys) {\n                        const value = meta.dynamicValues[key];\n                        props.push(\n                          t.objectProperty(toPropertyName(key), value),\n                        );\n                      }\n\n                      stmt = t.expressionStatement(\n                        callRuntime(\n                          `_attr_${name}_items`,\n                          nodeExpr,\n                          t.objectExpression(props),\n                        ),\n                      );\n                    }\n                  }\n                }\n\n                if (stmt) {\n                  addStatement(\n                    \"render\",\n                    tagSection,\n                    valueReferences,\n                    stmt,\n                    undefined,\n                    !!meta.dynamicItems,\n                  );\n                }\n              }\n              break;\n            }\n            default:\n              if (confident) {\n                write`${getHTMLRuntime()._attr(name, computed)}`;\n              } else if (isEventHandler(name)) {\n                addStatement(\n                  \"effect\",\n                  tagSection,\n                  valueReferences,\n                  t.expressionStatement(\n                    callRuntime(\n                      \"_on\",\n                      createScopeReadExpression(nodeBinding!),\n                      t.stringLiteral(getEventHandlerName(name)),\n                      value,\n                    ),\n                  ),\n                );\n              } else {\n                addStatement(\n                  \"render\",\n                  tagSection,\n                  valueReferences,\n                  t.expressionStatement(\n                    callRuntime(\n                      \"_attr\",\n                      createScopeReadExpression(nodeBinding!),\n                      t.stringLiteral(name),\n                      value,\n                    ),\n                  ),\n                  undefined,\n                  true,\n                );\n              }\n\n              break;\n          }\n        }\n\n        if (spreadExpression) {\n          const canHaveAttrContent = !(\n            isTextOnly ||\n            isOpenOnly ||\n            hasChildren ||\n            staticContentAttr\n          );\n          if (skipExpression) {\n            addStatement(\n              \"render\",\n              tagSection,\n              tagExtra.referencedBindings,\n              t.expressionStatement(\n                callRuntime(\n                  canHaveAttrContent\n                    ? \"_attrs_partial_content\"\n                    : \"_attrs_partial\",\n                  scopeIdentifier,\n                  visitAccessor,\n                  spreadExpression,\n                  skipExpression,\n                ),\n              ),\n            );\n          } else {\n            addStatement(\n              \"render\",\n              tagSection,\n              tagExtra.referencedBindings,\n              t.expressionStatement(\n                callRuntime(\n                  canHaveAttrContent ? \"_attrs_content\" : \"_attrs\",\n                  scopeIdentifier,\n                  visitAccessor,\n                  spreadExpression,\n                ),\n              ),\n            );\n          }\n\n          addStatement(\n            \"effect\",\n            tagSection,\n            tagExtra.referencedBindings,\n            t.expressionStatement(\n              callRuntime(\"_attrs_script\", scopeIdentifier, visitAccessor),\n            ),\n            false,\n          );\n        }\n\n        if (staticContentAttr) {\n          addStatement(\n            \"render\",\n            tagSection,\n            staticContentAttr.value.extra?.referencedBindings,\n            t.expressionStatement(\n              callRuntime(\n                \"_attr_content\",\n                scopeIdentifier,\n                visitAccessor,\n                staticContentAttr.value,\n              ),\n            ),\n            undefined,\n            true,\n          );\n        }\n\n        if (isOpenOnly) {\n          switch (tagDef.htmlType) {\n            case \"svg\":\n            case \"math\":\n              write`/>`;\n              break;\n            default:\n              write`>`;\n              break;\n          }\n        } else {\n          write`>`;\n        }\n\n        walks.enter(tag);\n      },\n      exit(tag) {\n        const tagExtra = tag.node.extra!;\n        const nodeBinding = tagExtra[kNativeTagBinding];\n        const openTagOnly = getTagDef(tag)?.parseOptions?.openTagOnly;\n        const tagName = getCanonicalTagName(tag);\n\n        if (!openTagOnly) {\n          const write = writer.writeTo(tag);\n          if (tagName !== \"textarea\" && isTextOnlyNativeTag(tag)) {\n            const textLiteral = bodyToTextLiteral(tag.node.body);\n            if (t.isStringLiteral(textLiteral)) {\n              write`${textLiteral}`;\n            } else {\n              addStatement(\n                \"render\",\n                getSection(tag),\n                textLiteral.extra?.referencedBindings,\n                t.expressionStatement(\n                  callRuntime(\n                    \"_text_content\",\n                    createScopeReadExpression(nodeBinding!),\n                    textLiteral,\n                  ),\n                ),\n                undefined,\n                true,\n              );\n            }\n          } else {\n            tag\n              .insertBefore(tag.node.body.body)\n              .forEach((child) => child.skip());\n          }\n\n          write`</${tagName}>`;\n        }\n\n        walks.exit(tag);\n        tag.remove();\n      },\n    },\n  }),\n} satisfies TemplateVisitor<t.MarkoTag>;\n\ntype RelatedControllable = ReturnType<typeof getRelatedControllable>;\nfunction getRelatedControllable(\n  tagName: string,\n  attrs: Record<string, t.MarkoAttribute | undefined>,\n) {\n  switch (tagName) {\n    case \"input\":\n      if (attrs.checked || attrs.checkedChange) {\n        return {\n          special: false,\n          helper: \"_attr_input_checked\",\n          attrs: [attrs.checked, attrs.checkedChange],\n        } as const;\n      }\n\n      if (attrs.checkedValue || attrs.checkedValueChange) {\n        return {\n          special: true,\n          helper: \"_attr_input_checkedValue\",\n          attrs: [attrs.checkedValue, attrs.checkedValueChange, attrs.value],\n        } as const;\n      }\n\n      if (attrs.value || attrs.valueChange) {\n        return {\n          special: false,\n          helper: \"_attr_input_value\",\n          attrs: [attrs.value, attrs.valueChange],\n        } as const;\n      }\n      break;\n    case \"select\":\n      if (attrs.value || attrs.valueChange) {\n        return {\n          special: true,\n          helper: \"_attr_select_value\",\n          attrs: [attrs.value, attrs.valueChange],\n        } as const;\n      }\n      break;\n    case \"textarea\":\n      if (attrs.value || attrs.valueChange) {\n        return {\n          special: true,\n          helper: \"_attr_textarea_value\",\n          attrs: [attrs.value, attrs.valueChange],\n        } as const;\n      }\n      break;\n    case \"details\":\n    case \"dialog\":\n      if (attrs.open || attrs.openChange) {\n        return {\n          special: false,\n          helper: `_attr_${tagName}_open`,\n          attrs: [attrs.open, attrs.openChange],\n        } as const;\n      }\n      break;\n  }\n}\n\nfunction getUsedAttrs(tagName: string, tag: t.MarkoTag) {\n  const seen: Record<string, t.MarkoAttribute> = {};\n  const { attributes } = tag;\n  const maybeStaticAttrs = new Set<t.MarkoAttribute>();\n  const skipProps = new Set<string>();\n  let spreadExpression: undefined | t.Expression;\n  let skipExpression: undefined | t.Expression;\n  let spreadProps: undefined | t.ObjectExpression[\"properties\"];\n  let staticControllable: RelatedControllable;\n  let staticContentAttr: undefined | t.MarkoAttribute;\n  let injectNonce = isInjectNonceTag(tagName);\n  for (let i = attributes.length; i--; ) {\n    const attr = attributes[i];\n    const { value } = attr;\n    if (t.isMarkoSpreadAttribute(attr)) {\n      if (!spreadProps) {\n        spreadProps = [];\n        staticControllable = getRelatedControllable(tagName, seen);\n        if (staticControllable && !staticControllable.attrs.every(Boolean)) {\n          for (const attr of staticControllable.attrs) {\n            if (attr) {\n              spreadProps.push(toObjectProperty(attr.name, attr.value));\n              maybeStaticAttrs.delete(attr);\n            }\n          }\n\n          staticControllable = undefined;\n        }\n      }\n      spreadProps.push(t.spreadElement(value));\n    } else if (\n      !(seen[attr.name] || (attr.name === \"content\" && tag.body.body.length))\n    ) {\n      seen[attr.name] = attr;\n\n      if (injectNonce && attr.name === \"nonce\") {\n        injectNonce = false;\n      }\n\n      if (spreadProps) {\n        spreadProps.push(toObjectProperty(attr.name, attr.value));\n      } else if (attr.name === \"content\" && tagName !== \"meta\") {\n        staticContentAttr = attr;\n      } else {\n        maybeStaticAttrs.add(attr);\n      }\n    }\n  }\n\n  if (!spreadProps) {\n    staticControllable = getRelatedControllable(tagName, seen);\n    if (!isDynamicControllable(staticControllable)) {\n      staticControllable = undefined;\n    }\n  }\n\n  if (staticControllable) {\n    for (const attr of staticControllable.attrs) {\n      if (attr) {\n        maybeStaticAttrs.delete(attr);\n      }\n    }\n  }\n\n  const staticAttrs = [...maybeStaticAttrs].reverse();\n\n  if (spreadProps) {\n    if (staticControllable) {\n      for (const attr of staticControllable.attrs) {\n        if (attr) {\n          skipProps.add(attr.name);\n        }\n      }\n    }\n\n    for (const { name } of staticAttrs) {\n      if (isEventHandler(name)) {\n        skipProps.add(`on-${getEventHandlerName(name)}`);\n      } else {\n        skipProps.add(name);\n      }\n    }\n\n    if (injectNonce) {\n      injectNonce = false;\n      spreadProps.push(\n        t.objectProperty(\n          t.identifier(\"nonce\"),\n          t.memberExpression(\n            isOutputHTML()\n              ? callRuntime(\"$global\")\n              : toMemberExpression(scopeIdentifier, getAccessorProp().Global),\n            t.identifier(\"cspNonce\"),\n          ),\n        ),\n      );\n    }\n\n    spreadExpression = propsToExpression(spreadProps.reverse());\n  }\n\n  if (skipProps.size) {\n    skipExpression = t.objectExpression(\n      Array.from(skipProps, (name) =>\n        toObjectProperty(name, t.numericLiteral(1)),\n      ),\n    );\n  }\n\n  return {\n    injectNonce,\n    staticAttrs,\n    staticContentAttr,\n    staticControllable,\n    spreadExpression,\n    skipExpression,\n  };\n}\n\nfunction isInjectNonceTag(tagName: string) {\n  switch (tagName) {\n    case \"script\":\n    case \"style\":\n      return true;\n    default:\n      return false;\n  }\n}\n\nfunction getCanonicalTagName(tag: t.NodePath<t.MarkoTag>) {\n  const tagName = getTagName(tag)!;\n  switch (tagName) {\n    case \"html-script\":\n      return \"script\";\n    case \"html-style\":\n      return \"style\";\n    default:\n      return tagName;\n  }\n}\n\nfunction getTextOnlyEscapeHelper(tagName: string) {\n  switch (tagName) {\n    case \"script\":\n      return \"_escape_script\";\n    case \"style\":\n      return \"_escape_style\";\n    default:\n      return \"_escape_text\";\n  }\n}\n\ninterface DelimitedAttrMeta {\n  staticItems: undefined | unknown[];\n  dynamicItems: undefined | (t.Expression | t.SpreadElement)[];\n  dynamicValues: undefined | Record<string, t.Expression>;\n}\nfunction trackDelimitedAttrValue(expr: t.Expression, meta: DelimitedAttrMeta) {\n  switch (expr.type) {\n    case \"ObjectExpression\":\n      trackDelimitedAttrObjectProperties(expr, meta);\n      break;\n    case \"ArrayExpression\":\n      trackDelimitedAttrArrayItems(expr, meta);\n      break;\n    default:\n      (meta.dynamicItems ||= []).push(expr);\n      break;\n  }\n}\n\nfunction trackDelimitedAttrArrayItems(\n  arr: t.ArrayExpression,\n  meta: DelimitedAttrMeta,\n) {\n  for (const item of arr.elements) {\n    if (item) {\n      switch (item.type) {\n        case \"ArrayExpression\": {\n          trackDelimitedAttrArrayItems(item, meta);\n          break;\n        }\n        case \"ObjectExpression\": {\n          trackDelimitedAttrObjectProperties(item, meta);\n          break;\n        }\n        case \"SpreadElement\":\n          if (item.argument.type === \"ArrayExpression\") {\n            trackDelimitedAttrArrayItems(item.argument, meta);\n          } else {\n            (meta.dynamicItems ||= []).push(item);\n          }\n          break;\n        default: {\n          const evalItem = evaluate(item);\n          if (evalItem.confident) {\n            (meta.staticItems ||= []).push(evalItem.computed);\n          } else {\n            (meta.dynamicItems ||= []).push(item);\n          }\n          break;\n        }\n      }\n    }\n  }\n}\n\nfunction trackDelimitedAttrObjectProperties(\n  obj: t.ObjectExpression,\n  meta: DelimitedAttrMeta,\n) {\n  let staticProps: Record<string, unknown> | undefined;\n  let dynamicProps: t.ObjectExpression[\"properties\"] | undefined;\n  for (const prop of obj.properties) {\n    if (prop.type !== \"ObjectProperty\" || prop.computed) {\n      (dynamicProps ||= []).push(prop);\n      continue;\n    }\n\n    let key: string;\n    if (prop.key.type === \"Identifier\") {\n      key = prop.key.name;\n    } else {\n      const keyEval = evaluate(prop.key as t.Expression);\n      if (\n        keyEval.confident &&\n        typeof keyEval.computed === \"string\" &&\n        !/\\s/.test(keyEval.computed)\n      ) {\n        key = keyEval.computed + \"\";\n      } else {\n        (dynamicProps ||= []).push(prop);\n        continue;\n      }\n    }\n\n    const value = prop.value as t.Expression;\n    const propEval = evaluate(value);\n    if (propEval.confident) {\n      (staticProps ||= {})[key] = propEval.computed;\n    } else {\n      (meta.dynamicValues ||= {})[key] = value;\n    }\n  }\n\n  if (staticProps) {\n    (meta.staticItems ||= []).push(staticProps);\n  }\n\n  if (dynamicProps) {\n    (meta.dynamicItems ||= []).push(t.objectExpression(dynamicProps));\n  }\n}\n\nfunction isDynamicControllable(controllable: RelatedControllable) {\n  // We can treat an otherwise controllable attr as a normal attribute if:\n  // * It does not have a possible change handler.\n  // * It is not \"special\" (eg checkedValue)\n  // * It can never be updated (no referenced bindings).\n  if (controllable) {\n    return (\n      controllable.special ||\n      !!(\n        controllable.attrs[1] ||\n        controllable.attrs.find(Boolean)!.value!.extra?.referencedBindings\n      )\n    );\n  }\n\n  return false;\n}\n\nfunction buildUndefined() {\n  return t.unaryExpression(\"void\", t.numericLiteral(0));\n}\n"
  },
  {
    "path": "packages/runtime-tags/src/translator/visitors/text.ts",
    "content": "import { types as t } from \"@marko/compiler\";\n\nimport { isNonHTMLText } from \"../util/is-non-html-text\";\nimport type { TemplateVisitor } from \"../util/visitors\";\nimport * as walks from \"../util/walks\";\nimport * as writer from \"../util/writer\";\n\nexport default {\n  translate: {\n    exit(text) {\n      if (isNonHTMLText(text)) return;\n\n      writer.writeTo(text)`${text.node.value}`;\n      walks.enterShallow(text);\n      text.remove();\n    },\n  },\n} satisfies TemplateVisitor<t.MarkoText>;\n"
  },
  {
    "path": "packages/runtime-tags/src/types.d.ts",
    "content": "declare const MARKO_DEBUG: boolean;\n"
  },
  {
    "path": "packages/runtime-tags/tags/await.d.marko",
    "content": "/** File for types only, not actual implementation **/\n\nexport interface Input<T> {\n  value: T;\n  content: Marko.Body<[Awaited<T>]>\n}\n"
  },
  {
    "path": "packages/runtime-tags/tags/const.d.marko",
    "content": "/** File for types only, not actual implementation **/\n\nexport interface Input<T> {\n  value: T;\n}\n\nreturn=input.value\n"
  },
  {
    "path": "packages/runtime-tags/tags/debug.d.marko",
    "content": "/** File for types only, not actual implementation **/\n\nexport interface Input {\n  value?: any;\n}\n"
  },
  {
    "path": "packages/runtime-tags/tags/define.d.marko",
    "content": "/** File for types only, not actual implementation **/\n\nexport type Input<T> = T;\n\nreturn=input\n"
  },
  {
    "path": "packages/runtime-tags/tags/effect.d.marko",
    "content": "/** File for types only, not actual implementation **/\n\nexport interface Input {\n  value?(): void;\n}\n"
  },
  {
    "path": "packages/runtime-tags/tags/html-comment.d.marko",
    "content": "export interface Input {}\n"
  },
  {
    "path": "packages/runtime-tags/tags/html-script.d.marko",
    "content": "export interface Input extends Marko.HTML.Script {}\n"
  },
  {
    "path": "packages/runtime-tags/tags/html-style.d.marko",
    "content": "export interface Input extends Marko.HTML.Style {}\n"
  },
  {
    "path": "packages/runtime-tags/tags/id.d.marko",
    "content": "/** File for types only, not actual implementation **/\n\nexport interface Input {\n  value?: string | null | false;\n}\n\nreturn=\"\" as string\n"
  },
  {
    "path": "packages/runtime-tags/tags/let.d.marko",
    "content": "/** File for types only, not actual implementation **/\n\nexport interface Input<T, K = T> {\n  value: T;\n  valueChange?: ((newValue: K) => void) | false | null;\n}\n\nreturn=input.value valueChange=(input.valueChange as (newValue: K) => void)\n"
  },
  {
    "path": "packages/runtime-tags/tags/lifecycle.d.marko",
    "content": "/** File for types only, not actual implementation **/\n\nexport type Input<T extends object> = T & {\n  onMount?(): unknown;\n  onUpdate?(): unknown;\n  onDestroy?(): unknown;\n};\n"
  },
  {
    "path": "packages/runtime-tags/tags/log.d.marko",
    "content": "/** File for types only, not actual implementation **/\n\nexport interface Input {\n  value: any;\n}\n"
  },
  {
    "path": "packages/runtime-tags/tags/script.d.marko",
    "content": "/** File for types only, not actual implementation **/\n\nexport interface Input {\n  value?(): unknown;\n}\n"
  },
  {
    "path": "packages/runtime-tags/tags/try.d.marko",
    "content": "/** File for types only, not actual implementation **/\n\nexport interface Input {\n  content: Marko.Body,\n  placeholder?: Marko.AttrTag<{ content?: Marko.Body }>,\n  catch?: Marko.AttrTag<{ content?: Marko.Body<[unknown]> }>,\n}\n"
  },
  {
    "path": "packages/runtime-tags/tags-html.d.ts",
    "content": "import * as csstype from \"csstype\";\n\n/**\n * Potential improvements:\n * - Share properties between input interfaces\n * - Add more interfaces of `Link` which restrict specific attributes based on type.\n * - Isolate some event handlers to specific elements (eg media events).\n * - Create more interface for individual aria roles.\n */\n\ndeclare global {\n  namespace Marko {\n    interface NativeTags {\n      a: NativeTag<Marko.HTML.A, HTMLAnchorElement>;\n      abbr: NativeTag<Marko.HTML.Abbr, HTMLElement>;\n      address: NativeTag<Marko.HTML.Address, HTMLElement>;\n      area: NativeTag<Marko.HTML.Area, HTMLAreaElement>;\n      article: NativeTag<Marko.HTML.Article, HTMLElement>;\n      aside: NativeTag<Marko.HTML.Aside, HTMLElement>;\n      audio: NativeTag<Marko.HTML.Audio, HTMLAudioElement>;\n      b: NativeTag<Marko.HTML.B, HTMLElement>;\n      base: NativeTag<Marko.HTML.Base, HTMLBaseElement>;\n      bdi: NativeTag<Marko.HTML.BDI, HTMLElement>;\n      bdo: NativeTag<Marko.HTML.BDO, HTMLElement>;\n      blockquote: NativeTag<Marko.HTML.BlockQuote, HTMLQuoteElement>;\n      body: NativeTag<Marko.HTML.Body, HTMLBodyElement>;\n      br: NativeTag<Marko.HTML.Br, HTMLBRElement>;\n      button: NativeTag<Marko.HTML.Button, HTMLButtonElement>;\n      canvas: NativeTag<Marko.HTML.Canvas, HTMLCanvasElement>;\n      caption: NativeTag<Marko.HTML.Caption, HTMLTableCaptionElement>;\n      cite: NativeTag<Marko.HTML.Cite, HTMLElement>;\n      code: NativeTag<Marko.HTML.Code, HTMLElement>;\n      col: NativeTag<Marko.HTML.Col, HTMLTableColElement>;\n      colgroup: NativeTag<Marko.HTML.ColGroup, HTMLTableColElement>;\n      data: NativeTag<Marko.HTML.Data, HTMLDataElement>;\n      datalist: NativeTag<Marko.HTML.DataList, HTMLDataListElement>;\n      dd: NativeTag<Marko.HTML.DD, HTMLElement>;\n      del: NativeTag<Marko.HTML.Del, HTMLModElement>;\n      details: NativeTag<Marko.HTML.Details, HTMLDetailsElement>;\n      dfn: NativeTag<Marko.HTML.Dfn, HTMLElement>;\n      dialog: NativeTag<Marko.HTML.Dialog, HTMLDialogElement>;\n      div: NativeTag<Marko.HTML.Div, HTMLDivElement>;\n      dl: NativeTag<Marko.HTML.DL, HTMLDListElement>;\n      dt: NativeTag<Marko.HTML.DT, HTMLElement>;\n      em: NativeTag<Marko.HTML.Em, HTMLElement>;\n      embed: NativeTag<Marko.HTML.Embed, HTMLEmbedElement>;\n      fieldset: NativeTag<Marko.HTML.FieldSet, HTMLFieldSetElement>;\n      figcaption: NativeTag<Marko.HTML.FigCaption, HTMLElement>;\n      figure: NativeTag<Marko.HTML.Figure, HTMLElement>;\n      footer: NativeTag<Marko.HTML.Footer, HTMLElement>;\n      form: NativeTag<Marko.HTML.Form, HTMLFormElement>;\n      h1: NativeTag<Marko.HTML.H1, HTMLHeadingElement>;\n      h2: NativeTag<Marko.HTML.H2, HTMLHeadingElement>;\n      h3: NativeTag<Marko.HTML.H3, HTMLHeadingElement>;\n      h4: NativeTag<Marko.HTML.H4, HTMLHeadingElement>;\n      h5: NativeTag<Marko.HTML.H5, HTMLHeadingElement>;\n      h6: NativeTag<Marko.HTML.H6, HTMLHeadingElement>;\n      head: NativeTag<Marko.HTML.Head, HTMLHeadElement>;\n      header: NativeTag<Marko.HTML.Header, HTMLElement>;\n      hgroup: NativeTag<Marko.HTML.HGroup, HTMLElement>;\n      hr: NativeTag<Marko.HTML.HR, HTMLHRElement>;\n      html: NativeTag<Marko.HTML.HTML, HTMLHtmlElement>;\n      i: NativeTag<Marko.HTML.I, HTMLElement>;\n      iframe: NativeTag<Marko.HTML.IFrame, HTMLIFrameElement>;\n      img: NativeTag<Marko.HTML.Img, HTMLImageElement>;\n      input: NativeTag<Marko.HTML.Input, HTMLInputElement>;\n      ins: NativeTag<Marko.HTML.Ins, HTMLModElement>;\n      kbd: NativeTag<Marko.HTML.Kbd, HTMLElement>;\n      label: NativeTag<Marko.HTML.Label, HTMLLabelElement>;\n      legend: NativeTag<Marko.HTML.Legend, HTMLLegendElement>;\n      li: NativeTag<Marko.HTML.LI, HTMLLIElement>;\n      link: NativeTag<Marko.HTML.Link, HTMLLinkElement>;\n      main: NativeTag<Marko.HTML.Main, HTMLElement>;\n      map: NativeTag<Marko.HTML.Map, HTMLMapElement>;\n      mark: NativeTag<Marko.HTML.Mark, HTMLElement>;\n      menu: NativeTag<Marko.HTML.Menu, HTMLMenuElement>;\n      meta: NativeTag<Marko.HTML.Meta, HTMLMetaElement>;\n      meter: NativeTag<Marko.HTML.Meter, HTMLMeterElement>;\n      nav: NativeTag<Marko.HTML.Nav, HTMLElement>;\n      noscript: NativeTag<Marko.HTML.NoScript, HTMLElement>;\n      object: NativeTag<Marko.HTML.Object, HTMLObjectElement>;\n      ol: NativeTag<Marko.HTML.OL, HTMLOListElement>;\n      optgroup: NativeTag<Marko.HTML.OptGroup, HTMLOptGroupElement>;\n      option: NativeTag<Marko.HTML.Option, HTMLOptionElement>;\n      output: NativeTag<Marko.HTML.Output, HTMLOutputElement>;\n      p: NativeTag<Marko.HTML.P, HTMLParagraphElement>;\n      picture: NativeTag<Marko.HTML.Picture, HTMLPictureElement>;\n      pre: NativeTag<Marko.HTML.Pre, HTMLPreElement>;\n      progress: NativeTag<Marko.HTML.Progress, HTMLProgressElement>;\n      q: NativeTag<Marko.HTML.Q, HTMLQuoteElement>;\n      rp: NativeTag<Marko.HTML.RP, HTMLElement>;\n      rt: NativeTag<Marko.HTML.RT, HTMLElement>;\n      ruby: NativeTag<Marko.HTML.Ruby, HTMLElement>;\n      s: NativeTag<Marko.HTML.S, HTMLElement>;\n      samp: NativeTag<Marko.HTML.Samp, HTMLElement>;\n      script: NativeTag<Marko.HTML.Script, HTMLScriptElement>;\n      section: NativeTag<Marko.HTML.Section, HTMLElement>;\n      select: NativeTag<Marko.HTML.Select, HTMLSelectElement>;\n      slot: NativeTag<Marko.HTML.Slot, HTMLSlotElement>;\n      small: NativeTag<Marko.HTML.Small, HTMLElement>;\n      source: NativeTag<Marko.HTML.Source, HTMLSourceElement>;\n      span: NativeTag<Marko.HTML.Span, HTMLSpanElement>;\n      strong: NativeTag<Marko.HTML.Strong, HTMLElement>;\n      style: NativeTag<Marko.HTML.Style, HTMLStyleElement>;\n      sub: NativeTag<Marko.HTML.Sub, HTMLElement>;\n      summary: NativeTag<Marko.HTML.Summary, HTMLElement>;\n      sup: NativeTag<Marko.HTML.Sup, HTMLElement>;\n      table: NativeTag<Marko.HTML.Table, HTMLTableElement>;\n      tbody: NativeTag<Marko.HTML.TBody, HTMLTableSectionElement>;\n      td: NativeTag<Marko.HTML.TD, HTMLTableDataCellElement>;\n      template: NativeTag<Marko.HTML.Template, HTMLTemplateElement>;\n      textarea: NativeTag<Marko.HTML.TextArea, HTMLTextAreaElement>;\n      tfoot: NativeTag<Marko.HTML.TFoot, HTMLTableSectionElement>;\n      th: NativeTag<Marko.HTML.TH, HTMLTableHeaderCellElement>;\n      thead: NativeTag<Marko.HTML.THead, HTMLTableSectionElement>;\n      time: NativeTag<Marko.HTML.Time, HTMLTimeElement>;\n      title: NativeTag<Marko.HTML.Title, HTMLTitleElement>;\n      tr: NativeTag<Marko.HTML.TR, HTMLTableRowElement>;\n      track: NativeTag<Marko.HTML.Track, HTMLTrackElement>;\n      u: NativeTag<Marko.HTML.U, HTMLElement>;\n      ul: NativeTag<Marko.HTML.UL, HTMLUListElement>;\n      var: NativeTag<Marko.HTML.Var, HTMLElement>;\n      video: NativeTag<Marko.HTML.Video, HTMLVideoElement>;\n      wbr: NativeTag<Marko.HTML.WBr, HTMLElement>;\n\n      animate: NativeTag<Marko.SVG.Animate, SVGAnimateElement>;\n      animateMotion: NativeTag<\n        Marko.SVG.AnimateMotion,\n        SVGAnimateMotionElement\n      >;\n      animateTransform: NativeTag<\n        Marko.SVG.AnimateTransform,\n        SVGAnimateTransformElement\n      >;\n      circle: NativeTag<Marko.SVG.Circle, SVGCircleElement>;\n      clipPath: NativeTag<Marko.SVG.ClipPath, SVGClipPathElement>;\n      defs: NativeTag<Marko.SVG.Defs, SVGDefsElement>;\n      desc: NativeTag<Marko.SVG.Desc, SVGDescElement>;\n      discard: NativeTag<Marko.SVG.Discard, SVGElement>;\n      ellipse: NativeTag<Marko.SVG.Ellipse, SVGEllipseElement>;\n      feBlend: NativeTag<Marko.SVG.FEBlend, SVGFEBlendElement>;\n      feColorMatrix: NativeTag<\n        Marko.SVG.FEColorMatrix,\n        SVGFEColorMatrixElement\n      >;\n      feComponentTransfer: NativeTag<\n        Marko.SVG.FEComponentTransfer,\n        SVGFEComponentTransferElement\n      >;\n      feComposite: NativeTag<Marko.SVG.FEComposite, SVGFECompositeElement>;\n      feConvolveMatrix: NativeTag<\n        Marko.SVG.FEConvolveMatrix,\n        SVGFEConvolveMatrixElement\n      >;\n      feDiffuseLighting: NativeTag<\n        Marko.SVG.FEDiffuseLighting,\n        SVGFEDiffuseLightingElement\n      >;\n      feDisplacementMap: NativeTag<\n        Marko.SVG.FEDisplacementMap,\n        SVGFEDisplacementMapElement\n      >;\n      feDistantLight: NativeTag<\n        Marko.SVG.FEDistantLight,\n        SVGFEDistantLightElement\n      >;\n      feDropShadow: NativeTag<Marko.SVG.FEDropShadow, SVGFEDropShadowElement>;\n      feFlood: NativeTag<Marko.SVG.FEFlood, SVGFEFloodElement>;\n      feFuncA: NativeTag<Marko.SVG.FEFuncA, SVGFEFuncAElement>;\n      feFuncB: NativeTag<Marko.SVG.FEFuncB, SVGFEFuncBElement>;\n      feFuncG: NativeTag<Marko.SVG.FEFuncG, SVGFEFuncGElement>;\n      feFuncR: NativeTag<Marko.SVG.FEFuncR, SVGFEFuncRElement>;\n      feGaussianBlur: NativeTag<\n        Marko.SVG.FEGaussianBlur,\n        SVGFEGaussianBlurElement\n      >;\n      feImage: NativeTag<Marko.SVG.FEImage, SVGFEImageElement>;\n      feMerge: NativeTag<Marko.SVG.FEMerge, SVGFEMergeElement>;\n      feMergeNode: NativeTag<Marko.SVG.FEMergeNode, SVGFEMergeNodeElement>;\n      feMorphology: NativeTag<Marko.SVG.FEMorphology, SVGFEMorphologyElement>;\n      feOffset: NativeTag<Marko.SVG.FEOffset, SVGFEOffsetElement>;\n      fePointLight: NativeTag<Marko.SVG.FEPointLight, SVGFEPointLightElement>;\n      feSpecularLighting: NativeTag<\n        Marko.SVG.FESpecularLighting,\n        SVGFESpecularLightingElement\n      >;\n      feSpotLight: NativeTag<Marko.SVG.FESpotLight, SVGFESpotLightElement>;\n      feTile: NativeTag<Marko.SVG.FETile, SVGFETileElement>;\n      feTurbulence: NativeTag<Marko.SVG.FETurbulence, SVGFETurbulenceElement>;\n      filter: NativeTag<Marko.SVG.Filter, SVGFilterElement>;\n      foreignObject: NativeTag<\n        Marko.SVG.ForeignObject,\n        SVGForeignObjectElement\n      >;\n      g: NativeTag<Marko.SVG.G, SVGGElement>;\n      image: NativeTag<Marko.SVG.Image, SVGImageElement>;\n      line: NativeTag<Marko.SVG.Line, SVGLineElement>;\n      linearGradient: NativeTag<\n        Marko.SVG.LinearGradient,\n        SVGLinearGradientElement\n      >;\n      marker: NativeTag<Marko.SVG.Marker, SVGMarkerElement>;\n      mask: NativeTag<Marko.SVG.Mask, SVGMaskElement>;\n      metadata: NativeTag<Marko.SVG.Metadata, SVGMetadataElement>;\n      mpath: NativeTag<Marko.SVG.MPath, SVGMPathElement>;\n      path: NativeTag<Marko.SVG.Path, SVGPathElement>;\n      pattern: NativeTag<Marko.SVG.Pattern, SVGPatternElement>;\n      polygon: NativeTag<Marko.SVG.Polygon, SVGPolygonElement>;\n      polyline: NativeTag<Marko.SVG.Polyline, SVGPolylineElement>;\n      radialGradient: NativeTag<\n        Marko.SVG.RadialGradient,\n        SVGRadialGradientElement\n      >;\n      rect: NativeTag<Marko.SVG.Rect, SVGRectElement>;\n      set: NativeTag<Marko.SVG.Set, SVGSetElement>;\n      stop: NativeTag<Marko.SVG.Stop, SVGStopElement>;\n      svg: NativeTag<Marko.SVG.SVG, SVGSVGElement>;\n      switch: NativeTag<Marko.SVG.Switch, SVGSwitchElement>;\n      symbol: NativeTag<Marko.SVG.Symbol, SVGSymbolElement>;\n      text: NativeTag<Marko.SVG.Text, SVGTextElement>;\n      textPath: NativeTag<Marko.SVG.TextPath, SVGTextPathElement>;\n      tspan: NativeTag<Marko.SVG.TSpan, SVGTSpanElement>;\n      use: NativeTag<Marko.SVG.Use, SVGUseElement>;\n      view: NativeTag<Marko.SVG.View, SVGViewElement>;\n    }\n\n    namespace CSS {\n      export interface Properties extends csstype.PropertiesHyphen {}\n    }\n\n    namespace HTML {\n      interface A extends HTMLAttributes<HTMLAnchorElement> {\n        /**\n         * Specifies whether to download the resource, or the name of the file to download.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-hyperlink-download\n         */\n        download?: AttrBooleanOrString;\n\n        /**\n         * Specifies the URL of the linked resource.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-hyperlink-href\n         */\n        href?: AttrHref;\n\n        /**\n         * Specifies the language of the linked resource.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-hyperlink-hreflang\n         */\n        hreflang?: AttrString;\n\n        /**\n         * Specifies the intended media type for the linked resource.\n         * @see https://html.spec.whatwg.org/multipage/semantics.html#attr-link-media\n         */\n        media?: AttrString;\n\n        /**\n         * Specifies a space-separated list of URLs to send a ping request to when the link is followed.\n         * @see https://html.spec.whatwg.org/multipage/links.html#ping\n         */\n        ping?: AttrString;\n\n        /**\n         * Specifies the referrer policy for the linked resource.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-hyperlink-referrerpolicy\n         */\n        referrerpolicy?: AttrReferrerPolicy;\n\n        /**\n         * Specifies the relationship between the current document and the linked resource.\n         * @see https://html.spec.whatwg.org/multipage/links.html#linkTypes\n         */\n        rel?:\n          | AttrMissing\n          | \"alternate\"\n          | \"author\"\n          | \"bookmark\"\n          | \"external\"\n          | \"help\"\n          | \"license\"\n          | \"next\"\n          | \"nofollow\"\n          | \"noopener\"\n          | \"noreferrer\"\n          | \"opener\"\n          | \"prev\"\n          | \"search\"\n          | \"tag\"\n          | (string & {});\n\n        /**\n         * Specifies the browsing context for the linked resource.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-hyperlink-target\n         */\n        target?: AttrTarget;\n\n        /**\n         * Specifies the MIME type of the linked resource.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-hyperlink-type\n         */\n        type?: AttrMimeType;\n\n        /** @deprecated */\n        charset?: AttrString;\n\n        /** @deprecated */\n        coords?: AttrString;\n\n        /** @deprecated */\n        name?: AttrString;\n\n        /** @deprecated */\n        rev?: AttrString;\n\n        /** @deprecated */\n        shape?: AttrString;\n      }\n\n      interface Abbr extends HTMLAttributes<HTMLElement> {}\n      interface Address extends HTMLAttributes<HTMLElement> {}\n      interface Area extends HTMLAttributes<HTMLAreaElement> {\n        /**\n         * Specifies an alternative text for the area.\n         * @see https://html.spec.whatwg.org/multipage/image-maps.html#attr-area-alt\n         */\n        alt?: AttrString;\n\n        /**\n         * Specifies the coordinates of the area's shape.\n         * @see https://html.spec.whatwg.org/multipage/image-maps.html#attr-area-coords\n         */\n        coords?: AttrString;\n\n        /**\n         * Specifies whether to download the resource, or the name of the file to download.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-hyperlink-download\n         */\n        download?: A[\"download\"];\n\n        /**\n         * Specifies the URL of the linked resource.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-hyperlink-href\n         */\n        href?: A[\"href\"];\n\n        /**\n         * Specifies the language of the linked resource.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-hyperlink-hreflang\n         */\n        hreflang?: A[\"hreflang\"];\n\n        /**\n         * Specifies a space-separated list of URLs to send a ping request to when the link is followed.\n         * @see https://html.spec.whatwg.org/multipage/links.html#ping\n         */\n        ping?: A[\"ping\"];\n\n        /**\n         * Specifies the referrer policy for the linked resource.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-hyperlink-referrerpolicy\n         */\n        referrerpolicy?: A[\"referrerpolicy\"];\n\n        /**\n         * Specifies the relationship between the current document and the linked resource.\n         * @see https://html.spec.whatwg.org/multipage/links.html#linkTypes\n         */\n        rel?: A[\"rel\"];\n\n        /**\n         * Specifies the shape of the clickable region on the area.\n         * @see https://html.spec.whatwg.org/multipage/image-maps.html#attr-area-shape\n         */\n        shape?: AttrMissing | \"rect\" | \"circle\" | \"poly\" | \"default\";\n\n        /**\n         * Specifies the browsing context for the linked resource.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-hyperlink-target\n         */\n        target?: A[\"target\"];\n\n        /** @deprecated */\n        name?: AttrString;\n\n        /** @deprecated */\n        nohref?: AttrString;\n\n        /** @deprecated */\n        type?: AttrMimeType;\n      }\n      interface Article extends HTMLAttributes<HTMLElement> {}\n      interface Aside extends HTMLAttributes<HTMLElement> {}\n      interface Audio extends HTMLAttributes<HTMLAudioElement> {\n        /**\n         * Specifies whether the audio should start playing automatically.\n         * @see https://html.spec.whatwg.org/multipage/media.html#attr-media-autoplay\n         */\n        autoplay?: AttrBoolean;\n\n        /**\n         * Specifies whether the audio controls should be displayed.\n         * @see https://html.spec.whatwg.org/multipage/media.html#attr-media-controls\n         */\n        controls?: AttrBoolean;\n\n        /**\n         * Specifies the controls to be shown or hidden on the audio player.\n         * @see https://wicg.github.io/controls-list/explainer.html\n         */\n        controlslist?:\n          | AttrMissing\n          | \"nodownload\"\n          | \"nofullscreen\"\n          | \"noplaybackrate\"\n          | \"noremoteplayback\"\n          | (string & {});\n\n        /**\n         * Specifies the CORS settings for the audio resource.\n         * @see https://html.spec.whatwg.org/multipage/media.html#attr-media-crossorigin\n         */\n        crossorigin?: AttrCrossOrigin;\n\n        /**\n         * Specifies whether to disable remote playback of the audio.\n         * @see https://www.w3.org/TR/remote-playback/#the-disableremoteplayback-attribute\n         */\n        disableremoteplayback?: AttrBoolean;\n\n        /**\n         * Specifies whether the audio should start over again when finished.\n         * @see https://html.spec.whatwg.org/multipage/media.html#attr-media-loop\n         */\n        loop?: AttrBoolean;\n\n        /**\n         * Specifies whether the audio should be muted by default.\n         * @see https://html.spec.whatwg.org/multipage/media.html#attr-media-muted\n         */\n        muted?: AttrBoolean;\n\n        /**\n         * Specifies the type of preloading for the audio.\n         * @see https://html.spec.whatwg.org/multipage/media.html#attr-media-preload\n         */\n        preload?: AttrBoolean | \"none\" | \"metadata\" | \"auto\";\n\n        /**\n         * Specifies the URL of the audio resource.\n         * @see https://html.spec.whatwg.org/multipage/media.html#attr-media-src\n         */\n        src?: AttrSrc;\n      }\n\n      interface B extends HTMLAttributes<HTMLElement> {}\n      interface Base extends HTMLAttributes<HTMLBaseElement> {\n        /**\n         * Specifies the base URL for resolving relative URLs within the document.\n         * @see https://html.spec.whatwg.org/multipage/semantics.html#attr-base-href\n         */\n        href?: AttrHref;\n\n        /**\n         * Specifies the default browsing context for links and forms in the document.\n         * @see https://html.spec.whatwg.org/multipage/semantics.html#attr-base-target\n         */\n        target?: AttrTarget;\n      }\n      interface BDI extends HTMLAttributes<HTMLElement> {}\n      interface BDO extends HTMLAttributes<HTMLElement> {}\n      interface BlockQuote extends HTMLAttributes<HTMLQuoteElement> {\n        /**\n         * Specifies the URL of the source document or quoted content.\n         * @see https://html.spec.whatwg.org/multipage/grouping-content.html#attr-blockquote-cite\n         */\n        cite?: AttrHref;\n      }\n      interface Body extends HTMLAttributes<HTMLBodyElement> {\n        /**\n         * Fires after printing the document.\n         * @see https://html.spec.whatwg.org/multipage/indices.html#event-afterprint\n         */\n        onAfterPrint?: AttrEventHandler<Event, HTMLBodyElement>;\n        \"on-afterprint\"?: this[\"onAfterPrint\"];\n\n        /**\n         * Fires before printing the document.\n         * @see https://html.spec.whatwg.org/multipage/indices.html#event-beforeprint\n         */\n        onBeforePrint?: AttrEventHandler<Event, HTMLBodyElement>;\n        \"on-beforeprint\"?: this[\"onBeforePrint\"];\n\n        /**\n         * Fired when the page is about to be unloaded, in case the page would like to show a warning prompt.\n         * @see https://html.spec.whatwg.org/multipage/indices.html#event-beforeunload\n         */\n        onBeforeUnload?: AttrEventHandler<BeforeUnloadEvent, HTMLBodyElement>;\n        \"on-beforeunload\"?: this[\"onBeforeUnload\"];\n\n        /**\n         * Fired when the fragment part of the document's URL changes.\n         * @see https://html.spec.whatwg.org/multipage/indices.html#event-hashchange\n         */\n        onHashChange?: AttrEventHandler<HashChangeEvent, HTMLBodyElement>;\n        \"on-hashchange\"?: this[\"onHashChange\"];\n\n        /**\n         * Fired when the user's preferred languages change.\n         * @see https://html.spec.whatwg.org/multipage/indices.html#event-languagechange\n         */\n        onLanguageChange?: AttrEventHandler<Event, HTMLBodyElement>;\n        \"on-languagechange\"?: this[\"onLanguageChange\"];\n\n        /**\n         * Fired when the window receives a message.\n         * @see https://html.spec.whatwg.org/multipage/indices.html#event-message\n         */\n        onMessage?: AttrEventHandler<MessageEvent, HTMLBodyElement>;\n        \"on-message\"?: this[\"onMessage\"];\n\n        /**\n         * Fired when the window receives an error message.\n         * @see https://html.spec.whatwg.org/multipage/indices.html#event-messageerror\n         */\n        onMessageError?: AttrEventHandler<MessageEvent, HTMLBodyElement>;\n        \"on-messageerror\"?: this[\"onMessageError\"];\n\n        /**\n         * Fired when the network connection is lost.\n         * @see https://html.spec.whatwg.org/multipage/indices.html#event-offline\n         */\n        onOffline?: AttrEventHandler<Event, HTMLBodyElement>;\n        \"on-offline\"?: this[\"onOffline\"];\n\n        /**\n         * Fired when the network connection is recovered.\n         * @see https://html.spec.whatwg.org/multipage/indices.html#event-online\n         */\n        onOnline?: AttrEventHandler<Event, HTMLBodyElement>;\n        \"on-online\"?: this[\"onOnline\"];\n\n        /**\n         * Fired when the page's session history entry stops being the active entry.\n         * @see https://html.spec.whatwg.org/multipage/indices.html#event-pagehide\n         */\n        onPageHide?: AttrEventHandler<PageTransitionEvent, HTMLBodyElement>;\n        \"on-pagehide\"?: this[\"onPageHide\"];\n\n        /**\n         * Fired when the page's session history entry becomes the active entry.\n         * @see https://html.spec.whatwg.org/multipage/indices.html#event-pageshow\n         */\n        onPageShow?: AttrEventHandler<PageTransitionEvent, HTMLBodyElement>;\n        \"on-pageshow\"?: this[\"onPageShow\"];\n\n        /**\n         * Fired when the window's session history is popped.\n         * @see https://html.spec.whatwg.org/multipage/indices.html#event-popstate\n         */\n        onPopState?: AttrEventHandler<PopStateEvent, HTMLBodyElement>;\n        \"on-popstate\"?: this[\"onPopState\"];\n\n        /**\n         * Fires when a previously-unhandled promise rejection becomes handled.\n         * @see https://html.spec.whatwg.org/multipage/indices.html#event-rejectionhandled\n         */\n        onRejectionHandled?: AttrEventHandler<Event, HTMLBodyElement>;\n        \"on-rejectionhandled\"?: this[\"onRejectionHandled\"];\n\n        /**\n         * Fired when the corresponding localStorage or sessionStorage storage areas change.\n         * @see https://html.spec.whatwg.org/multipage/indices.html#event-storage\n         */\n        onStorage?: AttrEventHandler<StorageEvent, HTMLBodyElement>;\n        \"on-storage\"?: this[\"onStorage\"];\n\n        /**\n         * Fired when a promise rejection goes unhandled.\n         * @see https://html.spec.whatwg.org/multipage/indices.html#event-unhandledrejection\n         */\n        onUnhandledRejection?: AttrEventHandler<\n          PromiseRejectionEvent,\n          HTMLBodyElement\n        >;\n        \"on-unhandledrejection\"?: this[\"onUnhandledRejection\"];\n\n        /**\n         * Fired when the page is going away.\n         * @see https://html.spec.whatwg.org/multipage/indices.html#event-unload\n         */\n        onUnload?: AttrEventHandler<Event, HTMLBodyElement>;\n        \"on-unload\"?: this[\"onUnload\"];\n\n        /** @deprecated */\n        alink?: AttrString;\n\n        /** @deprecated */\n        background?: AttrString;\n\n        /** @deprecated */\n        bgcolor?: AttrString;\n\n        /** @deprecated */\n        link?: AttrString;\n\n        /** @deprecated */\n        text?: AttrString;\n\n        /** @deprecated */\n        vlink?: AttrString;\n\n        /** @deprecated */\n        bottommargin?: AttrStringOrNumber;\n\n        /** @deprecated */\n        leftmargin?: AttrStringOrNumber;\n\n        /** @deprecated */\n        rightmargin?: AttrStringOrNumber;\n\n        /** @deprecated */\n        topmargin?: AttrStringOrNumber;\n      }\n\n      interface Br extends HTMLAttributes<HTMLBRElement> {\n        /** @deprecated */\n        clear?: AttrString;\n      }\n      interface Button extends HTMLAttributes<HTMLButtonElement> {\n        /**\n         * Specifies whether the button should be disabled.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-disabled\n         */\n        disabled?: AttrBoolean;\n\n        /**\n         * Specifies the form element associated with the button.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-fae-form\n         */\n        form?: AttrString;\n\n        /**\n         * Specifies the URL of the form's action when the button is clicked.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-fs-formaction\n         */\n        formaction?: Form[\"action\"];\n\n        /**\n         * Specifies the enctype attribute for the form when the button is clicked.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-fs-formenctype\n         */\n        formenctype?: Form[\"enctype\"];\n\n        /**\n         * Specifies the method attribute for the form when the button is clicked.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-fs-formmethod\n         */\n        formmethod?: Form[\"method\"];\n\n        /**\n         * Specifies whether the form should not validate when the button is clicked.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-fs-formnovalidate\n         */\n        formnovalidate?: Form[\"novalidate\"];\n\n        /**\n         * Specifies the target attribute for the form when the button is clicked.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-fs-formtarget\n         */\n        formtarget?: Form[\"target\"];\n\n        /**\n         * Specifies the name of the button.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-name\n         */\n        name?: AttrString;\n\n        /**\n         * Specifies the type of the button.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-button-type\n         */\n        type?: AttrMissing | \"submit\" | \"reset\" | \"button\";\n\n        /**\n         * Specifies the value of the button.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-button-value\n         */\n        value?: AttrString;\n\n        /**\n         * Specifies the target element for the popover.\n         * @see https://developer.chrome.com/docs/web-platform/popover-api/popovertargetaction-toggle-attribute\n         */\n        popovertarget?: AttrString;\n\n        /**\n         * Specifies the action to perform on the popover target.\n         * @see https://developer.chrome.com/docs/web-platform/popover-api/popovertargetaction-toggle-attribute\n         */\n        popovertargetaction?: AttrMissing | \"toggle\" | \"show\" | \"hide\";\n      }\n      interface Canvas extends HTMLAttributes<HTMLCanvasElement> {\n        /**\n         * Specifies the height of the canvas element.\n         * @see https://html.spec.whatwg.org/multipage/canvas.html#attr-canvas-height\n         */\n        height?: AttrStringOrNumber;\n\n        /**\n         * Specifies the width of the canvas element.\n         * @see https://html.spec.whatwg.org/multipage/canvas.html#attr-canvas-width\n         */\n        width?: AttrStringOrNumber;\n      }\n      interface Caption extends HTMLAttributes<HTMLTableCaptionElement> {\n        /** @deprecated */\n        align?: AttrString;\n      }\n      interface Cite extends HTMLAttributes<HTMLElement> {}\n      interface Code extends HTMLAttributes<HTMLElement> {}\n      interface Col extends HTMLAttributes<HTMLTableColElement> {\n        /**\n         * Specifies how many columns in the table the `<col>` element spans.\n         * @see https://html.spec.whatwg.org/multipage/tables.html#attr-col-span\n         */\n        span?: AttrStringOrNumber;\n\n        /** @deprecated */\n        align?: AttrString;\n\n        /** @deprecated */\n        char?: AttrString;\n\n        /** @deprecated */\n        charoff?: AttrStringOrNumber;\n\n        /** @deprecated */\n        valign?: AttrString;\n\n        /** @deprecated */\n        width?: AttrStringOrNumber;\n      }\n      interface ColGroup extends HTMLAttributes<HTMLTableColElement> {\n        /**\n         * Specifies how many columns in the table the `<colgroup>` element spans.\n         * @see https://html.spec.whatwg.org/multipage/tables.html#attr-colgroup-span\n         */\n        span?: AttrStringOrNumber;\n\n        /** @deprecated */\n        align?: AttrString;\n\n        /** @deprecated */\n        bgcolor?: AttrString;\n\n        /** @deprecated */\n        char?: AttrString;\n\n        /** @deprecated */\n        charoff?: AttrStringOrNumber;\n\n        /** @deprecated */\n        valign?: AttrString;\n      }\n      interface Data extends HTMLAttributes<HTMLDataElement> {\n        /**\n         * Specifies the machine-readable value of the `<data>` element.\n         * @see https://html.spec.whatwg.org/multipage/text-level-semantics.html#attr-data-value\n         */\n        value?: AttrStringOrNumber;\n      }\n\n      interface DataList extends HTMLAttributes<HTMLDataListElement> {}\n      interface DD extends HTMLAttributes<HTMLElement> {\n        /** @deprecated */\n        nowrap?: AttrYesNoString;\n      }\n      interface Del extends HTMLAttributes<HTMLModElement> {\n        /**\n         * Specifies the URL of the source of the quote or change.\n         * @see https://html.spec.whatwg.org/multipage/edits.html#attr-mod-cite\n         */\n        cite?: AttrHref;\n\n        /**\n         * Specifies the date and time of the quote or change.\n         * @see https://html.spec.whatwg.org/multipage/edits.html#attr-mod-datetime\n         */\n        datetime?: AttrString;\n      }\n      interface Details extends HTMLAttributes<HTMLDetailsElement> {\n        /**\n         * Specifies whether the `<details>` element is open.\n         * @see https://html.spec.whatwg.org/multipage/interactive-elements.html#attr-details-open\n         */\n        open?: AttrBoolean;\n\n        // NON STANDARD\n        /**\n         * Called whenever a the `open` attribute has changed.\n         * When `openChange` is a function, `open` becomes controlled.\n         */\n        openChange?: AttrMissing | ((open: boolean) => void);\n      }\n      interface Dfn extends HTMLAttributes<HTMLElement> {}\n      interface Dialog extends HTMLAttributes<HTMLDialogElement> {\n        /**\n         * Specifies the types of user actions that can be used to close the `<dialog>` element.\n         * @see https://html.spec.whatwg.org/multipage/interactive-elements.html#attr-dialog-closedby\n         */\n        closedby?: AttrMissing | \"any\" | \"closerequest\" | \"none\";\n\n        /**\n         * Specifies whether the `<dialog>` element is open.\n         * @see https://html.spec.whatwg.org/multipage/interactive-elements.html#attr-dialog-open\n         */\n        open?: AttrBoolean;\n\n        // NON STANDARD\n        /**\n         * Called whenever a the `open` attribute has changed.\n         * When `openChange` is a function, `open` becomes controlled.\n         */\n        openChange?: AttrMissing | ((open: boolean) => void);\n      }\n      interface Div extends HTMLAttributes<HTMLDivElement> {}\n      interface DL extends HTMLAttributes<HTMLDListElement> {}\n      interface DT extends HTMLAttributes<HTMLElement> {}\n      interface Em extends HTMLAttributes<HTMLElement> {}\n      interface Embed extends HTMLAttributes<HTMLEmbedElement> {\n        /**\n         * Specifies the height of the embedded content.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content-other.html#attr-dim-height\n         */\n        height?: AttrStringOrNumber;\n\n        /**\n         * Specifies the URL of the resource to embed.\n         * @see https://html.spec.whatwg.org/multipage/iframe-embed-object.html#attr-embed-src\n         */\n        src?: AttrSrc;\n\n        /**\n         * Specifies the MIME type of the embedded content.\n         * @see https://html.spec.whatwg.org/multipage/iframe-embed-object.html#attr-embed-type\n         */\n        type?: AttrMimeType;\n\n        /**\n         * Specifies the width of the embedded content.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content-other.html#attr-dim-width\n         */\n        width?: AttrStringOrNumber;\n      }\n      interface FieldSet extends HTMLAttributes<HTMLFieldSetElement> {\n        /**\n         * Specifies whether the `<fieldset>` element is disabled.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-fieldset-disabled\n         */\n        disabled?: AttrBoolean;\n        /**\n         * Specifies associated form for the `<fieldset>`.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fae-form\n         */\n        form?: AttrString;\n        /**\n         * Specifies the name of the `<fieldset>` on the form.elements api.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-name\n         * @see HTMLFormElement.elements\n         */\n        name?: AttrString;\n      }\n      interface FigCaption extends HTMLAttributes<HTMLElement> {}\n      interface Figure extends HTMLAttributes<HTMLElement> {}\n      interface Form extends HTMLAttributes<HTMLFormElement> {\n        /**\n         * Specifies the character encodings that are to be used for the form submission.\n         * @see https://html.spec.whatwg.org/multipage/forms.html#attr-form-accept-charset\n         */\n        \"accept-charset\"?: AttrString;\n        /**\n         * Specifies the URL which the form data will be submitted to.\n         * @see https://html.spec.whatwg.org/multipage/forms.html#attr-fs-action\n         */\n        action?: AttrHref;\n        /**\n         * Controls whether the browser should automatically complete form input values.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-autocomplete\n         */\n        autocomplete?: AttrOnOff;\n        /**\n         * Specifies the content type used to submit the form to the server.\n         * @see https://html.spec.whatwg.org/multipage/forms.html#attr-form-enctype\n         */\n        enctype?:\n          | AttrMissing\n          | \"application/x-www-form-urlencoded\"\n          | \"multipart/form-data\"\n          | \"text/plain\"\n          | (string & {});\n        /**\n         * Specifies the HTTP method used to submit the form to the server.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fs-method\n         */\n        method?:\n          | AttrMissing\n          | \"POST\"\n          | \"post\"\n          | \"GET\"\n          | \"get\"\n          | \"dialog\"\n          | \"DIALOG\";\n        /**\n         * The name attribute represents the form's name within the forms collection.\n         * @see https://html.spec.whatwg.org/multipage/forms.html#attr-form-name\n         * @see Document.forms\n         */\n        name?: AttrString;\n        /**\n         * Indicates that the form should not be validated when submitted.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fs-novalidate\n         */\n        novalidate?: AttrBoolean;\n        /**\n         * Specifies the relationship between the current document and the linked document.\n         * @see https://html.spec.whatwg.org/multipage/links.html#linkTypes\n         */\n        rel?:\n          | AttrMissing\n          | \"external\"\n          | \"help\"\n          | \"license\"\n          | \"next\"\n          | \"nofollow\"\n          | \"noopener\"\n          | \"noreferrer\"\n          | \"opener\"\n          | \"prev\"\n          | \"search\"\n          | (string & {});\n        /**\n         * Specifies the browsing context in which the linked resource will be opened.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fs-target\n         */\n        target?: AttrTarget;\n        /** @deprecated */\n        accept?: AttrString;\n\n        /**\n         * Fired at a form element when it is constructing the entry list\n         * @see https://html.spec.whatwg.org/multipage/indices.html#event-formdata\n         */\n        onFormData?: AttrEventHandler<FormDataEvent, HTMLFormElement>;\n        \"on-formdata\"?: this[\"onFormData\"];\n\n        /**\n         * Fired when a form is submitted, either by user interaction or through a script.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#event-submit\n         */\n        onSubmit?: AttrEventHandler<SubmitEvent, HTMLFormElement>;\n        \"on-submit\"?: this[\"onSubmit\"];\n      }\n      interface H1 extends HTMLAttributes<HTMLHeadingElement> {}\n      interface H2 extends HTMLAttributes<HTMLHeadingElement> {}\n      interface H3 extends HTMLAttributes<HTMLHeadingElement> {}\n      interface H4 extends HTMLAttributes<HTMLHeadingElement> {}\n      interface H5 extends HTMLAttributes<HTMLHeadingElement> {}\n      interface H6 extends HTMLAttributes<HTMLHeadingElement> {}\n      interface Footer extends HTMLAttributes<HTMLElement> {}\n      interface Head extends HTMLAttributes<HTMLHeadElement> {\n        /** @deprecated */\n        profile?: AttrString;\n        /** @see https://ogp.me/ */\n        prefix?: AttrString;\n      }\n      interface Header extends HTMLAttributes<HTMLElement> {}\n      interface HGroup extends HTMLAttributes<HTMLElement> {}\n      interface HR extends HTMLAttributes<HTMLHRElement> {\n        /** @deprecated */\n        align?: AttrMissing | \"left\" | \"center\" | \"right\";\n        /** @deprecated */\n        color?: AttrString;\n        /** @deprecated */\n        noshade?: AttrBoolean;\n        /** @deprecated */\n        size?: AttrStringOrNumber;\n        /** @deprecated */\n        width?: AttrStringOrNumber;\n      }\n      interface HTML extends HTMLAttributes<HTMLHtmlElement> {\n        /** @deprecated */\n        xmlns?: AttrString;\n        /** @deprecated */\n        manifest?: AttrString;\n        /** @deprecated */\n        version?: AttrString;\n        /** @see https://ogp.me/ */\n        prefix?: AttrString;\n      }\n      interface I extends HTMLAttributes<HTMLElement> {}\n      interface IFrame extends HTMLAttributes<HTMLIFrameElement> {\n        /**\n         * A space-separated list of permissions that are granted to the content inside the frame.\n         * @see https://html.spec.whatwg.org/multipage/iframe-embed-object.html#attr-iframe-allow\n         */\n        allow?: AttrString;\n        /**\n         * Indicates whether the iframe can be displayed in fullscreen mode.\n         * @see https://html.spec.whatwg.org/multipage/iframe-embed-object.html#attr-iframe-allowfullscreen\n         */\n        allowfullscreen?: AttrBoolean;\n        /**\n         * The height of the iframe.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content-other.html#attr-dim-height\n         */\n        height?: AttrStringOrNumber;\n        /**\n         * Indicates whether the browser should eagerly load the frame's contents or not.\n         * @see https://html.spec.whatwg.org/multipage/iframe-embed-object.html#attr-iframe-loading\n         */\n        loading?: AttrMissing | \"eager\" | \"lazy\";\n        /**\n         * A name or keyword that can be used to refer to the iframe from elsewhere in the document.\n         * @see https://html.spec.whatwg.org/multipage/iframe-embed-object.html#attr-iframe-name\n         */\n        name?: AttrString;\n        /**\n         * Specifies the referrer policy for the iframe.\n         * @see https://html.spec.whatwg.org/multipage/iframe-embed-object.html#attr-iframe-referrerpolicy\n         */\n        referrerpolicy?: AttrReferrerPolicy;\n        /**\n         * A set of sandbox flags that are applied to the iframe.\n         * @see https://html.spec.whatwg.org/multipage/iframe-embed-object.html#attr-iframe-sandbox\n         */\n        sandbox?:\n          | AttrMissing\n          | \"allow-downloads-without-user-activation\"\n          | \"allow-downloads\"\n          | \"allow-forms\"\n          | \"allow-modals\"\n          | \"allow-orientation-lock\"\n          | \"allow-pointer-lock\"\n          | \"allow-popups-to-escape-sandbox\"\n          | \"allow-popups\"\n          | \"allow-presentation\"\n          | \"allow-same-origin\"\n          | \"allow-scripts\"\n          | \"allow-storage-access-by-user-activation\"\n          | \"allow-top-navigation-by-user-activation\"\n          | \"allow-top-navigation-to-custom-protocols\"\n          | \"allow-top-navigation\"\n          | (string & {});\n        /**\n         * The URL of the page to embed in the iframe.\n         * @see https://html.spec.whatwg.org/multipage/iframe-embed-object.html#attr-iframe-src\n         */\n        src?: AttrSrc;\n        /**\n         * A document to render inside the iframe.\n         * @see https://html.spec.whatwg.org/multipage/iframe-embed-object.html#attr-iframe-srcdoc\n         */\n        srcdoc?: AttrString;\n        /**\n         * The width of the iframe.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content-other.html#attr-dim-width\n         */\n        width?: AttrStringOrNumber;\n        /** @deprecated */\n        align?: AttrString;\n        /** @deprecated */\n        frameborder?: AttrStringOrNumber;\n        /** @deprecated */\n        longdesc?: AttrString;\n        /** @deprecated */\n        marginheight?: AttrStringOrNumber;\n        /** @deprecated */\n        marginwidth?: AttrStringOrNumber;\n        /** @deprecated */\n        scrolling?: AttrYesNoString | \"auto\";\n      }\n      interface Img extends HTMLAttributes<HTMLImageElement> {\n        /**\n         * The alternative text for the image, displayed when the image cannot be loaded or\n         * rendered. This is useful for accessibility purposes.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content.html#attr-img-alt\n         */\n        alt?: AttrString;\n\n        /**\n         * A CORS setting attribute that determines if the image should be fetched with CORS or not.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content.html#attr-img-crossorigin\n         */\n        crossorigin?: AttrCrossOrigin;\n\n        /**\n         * Specifies the decoding mode for the image, which can be \"sync\", \"async\", or \"auto\".\n         * @see https://html.spec.whatwg.org/multipage/embedded-content.html#attr-img-decoding\n         */\n        decoding?: AttrMissing | \"sync\" | \"async\" | \"auto\";\n\n        /**\n         * Sets the fetch priority of the image, which can be \"auto\", \"high\", or \"low\".\n         * @see https://html.spec.whatwg.org/multipage/embedded-content.html#attr-img-fetchpriority\n         */\n        fetchpriority?: AttrMissing | \"auto\" | \"high\" | \"low\";\n\n        /**\n         * The height of the image, either as a string (CSS length value) or a number (pixels).\n         * @see https://html.spec.whatwg.org/multipage/embedded-content.html#attr-dim-height\n         */\n        height?: AttrStringOrNumber;\n\n        /**\n         * Indicates that the image is part of a server-side image map.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content.html#attr-img-ismap\n         */\n        ismap?: AttrBoolean;\n\n        /**\n         * Specifies the loading behavior of the image, which can be \"eager\" or \"lazy\".\n         * @see https://html.spec.whatwg.org/multipage/embedded-content.html#attr-img-loading\n         */\n        loading?: AttrMissing | \"eager\" | \"lazy\";\n\n        /**\n         * Sets the referrer policy for the image request.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content.html#attr-img-referrerpolicy\n         */\n        referrerpolicy?: AttrReferrerPolicy;\n\n        /**\n         * A string containing size descriptors for responsive images.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content.html#attr-img-sizes\n         */\n        sizes?: AttrString;\n\n        /**\n         * The URL of the image to display.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content.html#attr-img-src\n         */\n        src?: AttrSrc;\n\n        /**\n         * A string containing URL and size descriptor pairs for responsive images.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content.html#attr-img-srcset\n         */\n        srcset?: AttrString;\n\n        /**\n         * The URL of a client-side image map to associate with the image.\n         * @see https://html.spec.whatwg.org/multipage/image-maps.html#attr-hyperlink-usemap\n         */\n        usemap?: AttrString;\n\n        /**\n         * The width of the image, either as a string (CSS length value) or a number (pixels\n         * @see https://html.spec.whatwg.org/multipage/embedded-content.html#attr-dim-width\n         */\n        width?: AttrStringOrNumber;\n\n        /** @deprecated */\n        align?: AttrMissing | \"left\" | \"center\" | \"right\" | \"justify\" | \"char\";\n        /** @deprecated */\n        border?: AttrStringOrNumber;\n        /** @deprecated */\n        hspace?: AttrStringOrNumber;\n        /** @deprecated */\n        longdesc?: AttrString;\n        /** @deprecated */\n        name?: AttrString;\n        /** @deprecated */\n        vspace?: AttrStringOrNumber;\n      }\n      interface Input extends HTMLAttributes<HTMLInputElement> {\n        /**\n         * A comma-separated list of file types that a file input should accept.\n         * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-accept\n         */\n        accept?: AttrAccept;\n\n        /**\n         * The alternate text for an image input, displayed if the image cannot be loaded.\n         * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-alt\n         */\n        alt?: AttrString;\n\n        /**\n         * Specifies whether the input field should have autocomplete enabled or disabled.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-autocomplete\n         */\n        autocomplete?: AttrAutoComplete;\n\n        /**\n         * Indicates whether a file input should use a specific capture method.\n         * \"user\" indicates the front camera, \"environment\" indicates the rear camera.\n         * @see https://w3c.github.io/html-media-capture/#dfn-capture\n         */\n        capture?: AttrBoolean | \"user\" | \"environment\";\n\n        /**\n         * Indicates whether a checkbox should be checked or not.\n         * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-checked\n         */\n        checked?: AttrBoolean;\n\n        /**\n         * Enables the submission of the directionality of a text input.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-dirname\n         */\n        dirname?: AttrString;\n\n        /**\n         * Indicates whether the input should be disabled or not. When disabled,\n         * the input will not be interactable or submitted with the form.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-disabled\n         */\n        disabled?: AttrBoolean;\n\n        /**\n         * The ID of the form element that this input is associated with.\n         * This allows the input to be associated with a form even if it is\n         * not a direct descendant of the form element.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fae-form\n         */\n        form?: AttrString;\n\n        /**\n         * The URL of the form processing endpoint when the input image is used for form submission.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fs-formaction\n         */\n        formaction?: Form[\"action\"];\n\n        /**\n         * The encoding type for the form data when the input image is used for form submission.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fs-formenctype\n         */\n        formenctype?: Form[\"enctype\"];\n\n        /**\n         * The HTTP method to use when the input image is used for form submission.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fs-formmethod\n         */\n        formmethod?: Form[\"method\"];\n\n        /**\n         * Indicates whether form validation should be skipped when the input image is used for form submission.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fs-formnovalidate\n         */\n        formnovalidate?: Form[\"novalidate\"];\n\n        /**\n         * The browsing context for displaying the response after form submission when the input image is used.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fs-formtarget\n         */\n        formtarget?: Form[\"target\"];\n\n        /**\n         * The height of of an image input in pixels.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content-other.html#attr-dim-height\n         */\n        height?: AttrStringOrNumber;\n\n        /**\n         * The ID of a <datalist> element that provides a list of suggested values for the input.\n         * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-list\n         */\n        list?: AttrString;\n\n        /**\n         * The maximum allowed value for the input.\n         * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-max\n         */\n        max?: AttrStringOrNumber;\n\n        /**\n         * The maximum number of characters allowed in the input.\n         * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-maxlength\n         */\n        maxlength?: AttrStringOrNumber;\n\n        /**\n         * The minimum allowed value for the input.\n         * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-min\n         */\n        min?: AttrStringOrNumber;\n\n        /**\n         * The minimum number of characters required in the input.\n         * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-minlength\n         */\n        minlength?: AttrStringOrNumber;\n\n        /**\n         * Indicates whether the input should allow more than one value.\n         * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-multiple\n         */\n        multiple?: AttrBoolean;\n\n        /**\n         * Used as a key when submitting the forms data. Also the name used in the form.elements api.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-name\n         * @see HTMLFormElement.elements\n         */\n        name?: AttrString;\n\n        /**\n         * A regular expression pattern to be validated against the input value.\n         * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-pattern\n         */\n        pattern?: AttrString;\n\n        /**\n         * A short hint to display in the input field before the user enters a value.\n         * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-placeholder\n         */\n        placeholder?: AttrStringOrNumber;\n\n        /**\n         * Specifies the target element for the popover.\n         * @see https://developer.chrome.com/docs/web-platform/popover-api/popovertargetaction-toggle-attribute\n         */\n        popovertarget?: AttrString;\n\n        /**\n         * Specifies the action to perform on the popover target.\n         * @see https://developer.chrome.com/docs/web-platform/popover-api/popovertargetaction-toggle-attribute\n         */\n        popovertargetaction?: AttrMissing | \"toggle\" | \"show\" | \"hide\";\n\n        /**\n         * Indicates whether the input should be read-only or not. Read-only inputs cannot be edited.\n         * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-readonly\n         */\n        readonly?: AttrBoolean;\n\n        /**\n         * Indicates whether the input is required to have a value for the form to be submitted.\n         * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-required\n         */\n        required?: AttrBoolean;\n\n        /**\n         * The number of characters wide a text input field should be displayed.\n         * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-size\n         */\n        size?: AttrStringOrNumber;\n\n        /**\n         * The URL of the image file.\n         * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-src\n         */\n        src?: AttrSrc;\n\n        /**\n         * Specifies the allowed number intervals for the input value.\n         * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-step\n         */\n        step?: AttrStringOrNumber;\n\n        /**\n         * Controls the data type (and associated control) of the element.\n         * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-type\n         */\n        type?:\n          | AttrMissing\n          | \"button\"\n          | \"checkbox\"\n          | \"color\"\n          | \"date\"\n          | \"datetime-local\"\n          | \"email\"\n          | \"file\"\n          | \"hidden\"\n          | \"image\"\n          | \"month\"\n          | \"number\"\n          | \"password\"\n          | \"radio\"\n          | \"range\"\n          | \"reset\"\n          | \"search\"\n          | \"submit\"\n          | \"tel\"\n          | \"text\"\n          | \"time\"\n          | \"url\"\n          | \"week\";\n\n        /**\n         * Specifies the string value you want to pass back to the server.\n         * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-value\n         */\n        value?: AttrStringOrNumber;\n\n        /**\n         * Indicates that the file input allows the user to select a directory instead of a file.\n         * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/webkitdirectory\n         */\n        webkitdirectory?: AttrBoolean;\n\n        /**\n         * The width of an image input in pixels.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content-other.html#attr-dim-width\n         */\n        width?: AttrStringOrNumber;\n\n        // NON STANDARD\n\n        /**\n         * Called whenever a the `checked` property of an `input` has changed.\n         * When `checkedChange` is a function, `checked` becomes controlled.\n         * This means the `checked` property is synchronized instead of the `checked` attribute.\n         */\n        checkedChange?: AttrMissing | ((checked: boolean) => void);\n\n        /**\n         * Used to synchronize the `checked` attribute with a `value` attribute used across related `input type=\"checkbox\"` and `input type=\"radio\"` controls.\n         * When `checkedValue` is a string, the `checked` attribute will be set to a boolean that is `true` if the `checkedValue` is the same as the `value`.\n         * When `checkedValue` is an array of strings, the `checked` attribute will be set to a boolean that is `true` if the `checkedValue` array includes the `value`.\n         * If the `checkedValue` is falsy then `checked` is always `false`.\n         */\n        checkedValue?: AttrStringOrNumber | string[] | number[];\n        /**\n         * Called whenever a `input type=\"checkbox\"` or `input type=\"radio\"` using the `checkedValue` attribute has changed.\n         * When `checkedValueChange` is a function, `checked` becomes controlled.\n         * This means the `checked` property is synchronized instead of the `checked` attribute.\n         */\n        checkedValueChange?:\n          | AttrMissing\n          | ((\n              /** Note this is hack that allows you to work with the value as both a string and a string[] without needing generics */\n              checkedValue: string & string[],\n            ) => void);\n\n        /**\n         * Called whenever a the `value` property of an `input` has changed.\n         * When `valueChange` is a function, `value` becomes controlled. This means\n         * This means the `value` property is synchronized instead of the `value` attribute.\n         */\n        valueChange?: AttrMissing | ((value: string) => void);\n      }\n\n      interface Ins extends HTMLAttributes<HTMLModElement> {\n        /**\n         * A URI for a resource that explains the reason for the insertion.\n         * @see https://html.spec.whatwg.org/multipage/edits.html#attr-mod-cite\n         */\n        cite?: AttrHref;\n\n        /**\n         * The date and time when the element's contents were inserted, in the format \"YYYY-MM-DDThh:mm:ssZ\".\n         * @see https://html.spec.whatwg.org/multipage/edits.html#attr-mod-datetime\n         */\n        datetime?: AttrString;\n      }\n\n      interface Kbd extends HTMLAttributes<HTMLElement> {}\n      interface Label extends HTMLAttributes<HTMLLabelElement> {\n        /**\n         * The ID of a form control that this label is associated with.\n         * @see https://html.spec.whatwg.org/multipage/forms.html#attr-label-for\n         */\n        for?: AttrString;\n\n        /**\n         * The ID of the form element that this label is associated with, if the form control is not a descendant of the label element.\n         * Note that this attribute is non standard.\n         *\n         * @see https://www.w3schools.com/tags//att_label_form.asp\n         */\n        form?: AttrString;\n      }\n\n      interface Legend extends HTMLAttributes<HTMLLegendElement> {}\n      interface LI extends HTMLAttributes<HTMLLIElement> {\n        /**\n         * The value used to determine the ordinal value of the list item.\n         * @see https://html.spec.whatwg.org/multipage/grouping-content.html#attr-li-value\n         */\n        value?: AttrStringOrNumber;\n\n        /** @deprecated */\n        type?: AttrMimeType;\n      }\n      // TODO break into multiple interfaces based on rel?\n      interface Link extends HTMLAttributes<HTMLLinkElement> {\n        /**\n         * Specifies the type of resource for the preload request.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-link-as\n         */\n        as?:\n          | AttrMissing\n          | \"audio\"\n          | \"document\"\n          | \"embed\"\n          | \"fetch\"\n          | \"font\"\n          | \"image\"\n          | \"object\"\n          | \"script\"\n          | \"style\"\n          | \"track\"\n          | \"video\"\n          | \"worker\";\n\n        /**\n         * Specifies whether the link should block rendering or not.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-link-blocking\n         */\n        blocking?: AttrMissing | \"render\";\n\n        /**\n         * Specifies how the CORS requests for the element should be handled.\n         * @see https://html.spec.whatwg.org/multipage/urls-and-fetching.html#cors-settings-attributes\n         */\n        crossorigin?: AttrCrossOrigin;\n\n        /**\n         * Indicates if the link element is disabled.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-link-disabled\n         */\n        disabled?: AttrBoolean;\n\n        /**\n         * Specifies the priority for the fetch request.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-link-fetchpriority\n         */\n        fetchpriority?: AttrMissing | \"auto\" | \"high\" | \"low\";\n\n        /**\n         * Specifies the URL of the linked resource.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-link-href\n         */\n        href?: AttrHref;\n\n        /**\n         * Specifies the language of the linked resource.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-link-hreflang\n         */\n        hreflang?: AttrString;\n\n        /**\n         * Specifies the sizes for image resources.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-link-imagesizes\n         */\n        imagesizes?: AttrString;\n\n        /**\n         * Specifies a set of source sizes for responsive images.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-link-imagesrcset\n         */\n        imagesrcset?: AttrString;\n\n        /**\n         * Allows a resource to be fetched with a cryptographic hash, ensuring the integrity of the resource.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-link-integrity\n         */\n        integrity?: AttrString;\n\n        /**\n         * Specifies the media for which the linked resource is designed.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-link-media\n         */\n        media?: AttrString;\n\n        /**\n         * Specifies the referrer policy for the request initiated by the link element.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-link-referrerpolicy\n         */\n        referrerpolicy?: AttrReferrerPolicy;\n\n        /**\n         * Specifies the relationship between the current document and the linked resource.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-link-rel\n         */\n        rel?:\n          | AttrMissing\n          | \"alternate\"\n          | \"author\"\n          | \"bookmark\"\n          | \"canonical\"\n          | \"dns-prefetch\"\n          | \"external\"\n          | \"help\"\n          | \"icon\"\n          | \"manifest\"\n          | \"modulepreload\"\n          | \"license\"\n          | \"next\"\n          | \"pingback\"\n          | \"preconnect\"\n          | \"prefetch\"\n          | \"preload\"\n          | \"prev\"\n          | \"search\"\n          | \"stylesheet\"\n          | (string & {});\n\n        /**\n         * Specifies the size of the resource for rel=\"icon\" or rel=\"apple-touch-icon\".\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-link-sizes\n         */\n        sizes?: AttrString;\n\n        /**\n         * Specifies the MIME type of the linked resource.\n         * @see https://html.spec.whatwg.org/multipage/links.html#attr-link-type\n         */\n        type?: AttrMimeType;\n\n        // DEPRECATED\n\n        /** @deprecated */\n        charset?: AttrString;\n\n        /** @deprecated */\n        rev?: AttrString;\n      }\n\n      interface Main extends HTMLAttributes<HTMLElement> {}\n      interface Map extends HTMLAttributes<HTMLMapElement> {\n        /**\n         * Specifies the name of the map.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content.html#attr-map-name\n         */\n        name?: AttrString;\n      }\n      interface Mark extends HTMLAttributes<HTMLElement> {}\n      interface Menu extends HTMLAttributes<HTMLMenuElement> {\n        /**\n         * Specifies the title of the menu.\n         * @see https://html.spec.whatwg.org/multipage/interactive-elements.html#attr-menu-label\n         */\n        label?: AttrString;\n\n        /**\n         * Specifies the type of the menu, either a context menu or a toolbar.\n         * @see https://html.spec.whatwg.org/multipage/interactive-elements.html#attr-menu-type\n         */\n        type?: AttrMissing | \"context\" | \"toolbar\";\n      }\n      interface Meta extends HTMLAttributes<HTMLMetaElement> {\n        /**\n         * Specifies the character encoding for the HTML document.\n         * @see https://html.spec.whatwg.org/multipage/semantics.html#attr-meta-charset\n         */\n        charset?: AttrString;\n\n        /**\n         * Specifies the value associated with the http-equiv or name attribute.\n         * @see https://html.spec.whatwg.org/multipage/semantics.html#attr-meta-content\n         */\n        content?: AttrString;\n\n        /**\n         * Specifies a pragma directive to affect the behavior of the user agent or server.\n         * @see https://html.spec.whatwg.org/multipage/semantics.html#attr-meta-http-equiv\n         */\n        \"http-equiv\"?:\n          | AttrMissing\n          | \"Content-Security-Policy\"\n          | \"Content-Type\"\n          | \"Default-Style\"\n          | \"Refresh\"\n          | \"X-UA-Compatible\";\n\n        /**\n         * Specifies the metadata name for the content attribute.\n         * @see https://html.spec.whatwg.org/multipage/semantics.html#attr-meta-name\n         */\n        name?: AttrString;\n\n        /** @see https://ogp.me/ */\n        property?: AttrString;\n      }\n      interface Meter extends HTMLAttributes<HTMLMeterElement> {\n        /**\n         * Specifies the upper bound of the high end of the measured range.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-meter-high\n         */\n        high?: AttrStringOrNumber;\n\n        /**\n         * Specifies the lower bound of the low end of the measured range.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-meter-low\n         */\n        low?: AttrStringOrNumber;\n\n        /**\n         * Specifies the maximum value of the range.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-meter-max\n         */\n        max?: AttrStringOrNumber;\n\n        /**\n         * Specifies the minimum value of the range.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-meter-min\n         */\n        min?: AttrStringOrNumber;\n\n        /**\n         * Specifies the value that is considered optimal.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-meter-optimum\n         */\n        optimum?: AttrStringOrNumber;\n\n        /**\n         * Specifies the current value of the meter.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-meter-value\n         */\n        value?: AttrStringOrNumber;\n      }\n\n      interface Nav extends HTMLAttributes<HTMLElement> {}\n      interface NoScript extends HTMLAttributes<HTMLElement> {}\n      interface Object extends HTMLAttributes<HTMLObjectElement> {\n        /**\n         * Specifies the URL of the resource to be embedded.\n         * @see https://html.spec.whatwg.org/multipage/iframe-embed-object.html#attr-object-data\n         */\n        data?: AttrString;\n\n        /**\n         * Associates the object element with a form element.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fae-form\n         */\n        form?: AttrString;\n\n        /**\n         * Specifies the height of the object element.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content-other.html#attr-dim-height\n         */\n        height?: AttrStringOrNumber;\n\n        /**\n         * Specifies the name of the object element.\n         * @see https://html.spec.whatwg.org/multipage/iframe-embed-object.html#attr-object-name\n         */\n        name?: AttrString;\n\n        /**\n         * Specifies the MIME type of the resource.\n         * @see https://html.spec.whatwg.org/multipage/iframe-embed-object.html#attr-object-type\n         */\n        type?: AttrMimeType;\n\n        /**\n         * Specifies a client-side image map to be used with the object element.\n         * @see https://html.spec.whatwg.org/multipage/iframe-embed-object.html#attr-object-usemap\n         */\n        usemap?: AttrString;\n\n        /**\n         * Specifies the width of the object element.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content-other.html#attr-dim-width\n         */\n        width?: AttrStringOrNumber;\n\n        /** @deprecated */\n        archive?: AttrString;\n        /** @deprecated */\n        border?: AttrString;\n        /** @deprecated */\n        classid?: AttrString;\n        /** @deprecated */\n        codebase?: AttrString;\n        /** @deprecated */\n        codetype?: AttrMimeType;\n        /** @deprecated */\n        declare?: AttrBoolean;\n        /** @deprecated */\n        standby?: AttrString;\n      }\n      interface OL extends HTMLAttributes<HTMLOListElement> {\n        /**\n         * Specifies whether the list items are numbered in reverse order.\n         * @see https://html.spec.whatwg.org/multipage/grouping-content.html#attr-ol-reversed\n         */\n        reversed?: AttrBoolean;\n\n        /**\n         * Specifies the starting value of the list items.\n         * @see https://html.spec.whatwg.org/multipage/grouping-content.html#attr-ol-start\n         */\n        start?: AttrStringOrNumber;\n\n        /**\n         * Specifies the numbering type of the list items.\n         * @see https://html.spec.whatwg.org/multipage/grouping-content.html#attr-ol-type\n         */\n        type?: AttrMissing | \"1\" | \"a\" | \"A\" | \"i\" | \"I\";\n      }\n      interface OptGroup extends HTMLAttributes<HTMLOptGroupElement> {\n        /**\n         * Specifies that the option group is disabled.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-optgroup-disabled\n         */\n        disabled?: AttrBoolean;\n\n        /**\n         * Specifies a label for the option group.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-optgroup-label\n         */\n        label?: AttrString;\n      }\n      interface Option extends HTMLAttributes<HTMLOptionElement> {\n        /**\n         * Specifies that the option is disabled.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-option-disabled\n         */\n        disabled?: AttrBoolean;\n\n        /**\n         * Specifies a label for the option element.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-option-label\n         */\n        label?: AttrString;\n\n        /**\n         * Specifies that the option element is selected by default.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-option-selected\n         */\n        selected?: AttrBoolean;\n\n        /**\n         * Specifies the value of the option element.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-option-value\n         */\n        value?: AttrStringOrNumber;\n      }\n      interface Output extends HTMLAttributes<HTMLOutputElement> {\n        /**\n         * Specifies the ID of the form element that this output element is associated with.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-output-for\n         */\n        for?: AttrString;\n\n        /**\n         * Specifies the ID of the form that this output element belongs to.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fae-form\n         */\n        form?: AttrString;\n\n        /**\n         * Specifies the name of the output element.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-name\n         */\n        name?: AttrString;\n      }\n\n      interface P extends HTMLAttributes<HTMLParagraphElement> {}\n      interface Picture extends HTMLAttributes<HTMLPictureElement> {}\n      interface Pre extends HTMLAttributes<HTMLPreElement> {\n        /** @deprecated */\n        cols?: AttrStringOrNumber;\n        /** @deprecated */\n        width?: AttrStringOrNumber;\n        /** @deprecated */\n        wrap?: AttrString;\n      }\n      interface Progress extends HTMLAttributes<HTMLProgressElement> {\n        /**\n         * Specifies the maximum value of the progress bar.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-progress-max\n         */\n        max?: AttrStringOrNumber;\n\n        /**\n         * Specifies the current value of the progress bar.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-progress-value\n         */\n        value?: AttrStringOrNumber;\n      }\n\n      interface Q extends HTMLAttributes<HTMLQuoteElement> {\n        /**\n         * Specifies the URL of the source document or message that the quotation came from.\n         * @see https://html.spec.whatwg.org/multipage/text-level-semantics.html#attr-q-cite\n         */\n        cite?: AttrHref;\n      }\n\n      interface RP extends HTMLAttributes<HTMLElement> {}\n      interface RT extends HTMLAttributes<HTMLElement> {}\n      interface Ruby extends HTMLAttributes<HTMLElement> {}\n      interface S extends HTMLAttributes<HTMLElement> {}\n      interface Samp extends HTMLAttributes<HTMLElement> {}\n      interface Script extends HTMLAttributes<HTMLScriptElement> {\n        /**\n         * Specifies that the script should be executed asynchronously.\n         * @see https://html.spec.whatwg.org/multipage/scripting.html#attr-script-async\n         */\n        async?: AttrBoolean;\n\n        /**\n         * Specifies that the script should be fetched and executed after the page is rendered.\n         * @see https://html.spec.whatwg.org/multipage/scripting.html#attr-script-blocking\n         */\n        blocking?: AttrMissing | \"render\";\n\n        /**\n         * Specifies whether CORS (Cross-Origin Resource Sharing) requests should be used when fetching the script.\n         * @see https://html.spec.whatwg.org/multipage/scripting.html#attr-script-crossorigin\n         */\n        crossorigin?: AttrCrossOrigin;\n\n        /**\n         * Specifies that the script should be executed after the page is parsed, but before the document is loaded.\n         * @see https://html.spec.whatwg.org/multipage/scripting.html#attr-script-defer\n         */\n        defer?: AttrBoolean;\n\n        /**\n         * Specifies the priority level for fetching the script.\n         * @see https://html.spec.whatwg.org/multipage/scripting.html#attr-script-fetchpriority\n         */\n        fetchpriority?: AttrMissing | \"auto\" | \"high\" | \"low\";\n\n        /**\n         * Specifies the integrity hash for the script.\n         * @see https://html.spec.whatwg.org/multipage/urls-and-fetching.html#attr-link-integrity\n         */\n        integrity?: AttrString;\n\n        /**\n         * Specifies that the script should be ignored if the browser doesn't support modules.\n         * @see https://html.spec.whatwg.org/multipage/scripting.html#attr-script-nomodule\n         */\n        nomodule?: AttrBoolean;\n\n        /**\n         * Specifies the referrer policy for the script.\n         * @see https://html.spec.whatwg.org/multipage/urls-and-fetching.html#attr-link-referrerpolicy\n         */\n        referrerpolicy?: AttrReferrerPolicy;\n\n        /**\n         * Specifies the URL of the script.\n         * @see https://html.spec.whatwg.org/multipage/scripting.html#attr-script-src\n         */\n        src?: AttrSrc;\n\n        /**\n         * Specifies the type of the script.\n         * @see https://html.spec.whatwg.org/multipage/scripting.html#attr-script-type\n         */\n        type?:\n          | AttrMissing\n          | \"application/javascript\"\n          | \"module\"\n          | \"import-map\"\n          | (string & {});\n\n        /** @deprecated */\n        charset?: AttrString;\n        /** @deprecated */\n        language?: AttrString;\n      }\n\n      interface Section extends HTMLAttributes<HTMLElement> {}\n      interface Select extends HTMLAttributes<HTMLSelectElement> {\n        /**\n         * Controls whether the browser should automatically complete the value for the select.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-autocomplete\n         */\n        autocomplete?: AttrAutoComplete;\n\n        /**\n         * Indicates whether the select element should be disabled or not.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-disabled\n         */\n        disabled?: AttrBoolean;\n\n        /**\n         * Specifies the form element associated with the select.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-fae-form\n         */\n        form?: AttrString;\n\n        /**\n         * Indicates that multiple options can be selected.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-select-multiple\n         */\n        multiple?: AttrBoolean;\n\n        /**\n         * The name attribute of the select element, which is used as a key\n         * when submitting the form data. Also the named used in the form.elements.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-name\n         * @see HTMLFormElement.elements\n         */\n        name?: AttrString;\n\n        /**\n         * Indicates whether a selection is required or not for the select.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-select-required\n         */\n        required?: AttrBoolean;\n\n        /**\n         * Specifies how many options are visible at once.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-select-size\n         */\n        size?: AttrStringOrNumber;\n\n        // NON STANDARD\n\n        /**\n         * When the `value` is a string, nested `<option>` tags with a matching `value` attribute become `selected`.\n         * When the `value` is an array of strings, nested `<option>` tags with a `value` contained within the array are `selected.\n         */\n        value?: AttrStringOrNumber | string[] | number[];\n\n        /**\n         * Called whenever a the `value` property of the `select` has changed.\n         * When `valueChange` is a function, `value` becomes controlled. This means\n         * This means the `value` property is synchronized instead of the `value` attribute.\n         */\n        valueChange?:\n          | AttrMissing\n          | ((\n              /** Note this is hack that allows you to work with the value as both a string and a string[] without needing generics */\n              value: string & string[],\n            ) => void);\n      }\n\n      interface Slot extends HTMLAttributes<HTMLSlotElement> {\n        /**\n         * Used to assign slots to other elements\n         * @see https://html.spec.whatwg.org/multipage/semantics.html#attr-slot-name\n         */\n        name?: AttrString;\n      }\n\n      interface Small extends HTMLAttributes<HTMLElement> {}\n      interface Source extends HTMLAttributes<HTMLSourceElement> {\n        /**\n         * Specifies the MIME type of the resource provided by the <source> element.\n         * Helps the browser decide if it can play the resource or not.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content.html#attr-source-type\n         */\n        type?: AttrMimeType;\n\n        /**\n         * Specifies the URL of the media resource for the <source> element.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content.html#attr-source-src\n         */\n        src?: AttrSrc;\n\n        /**\n         * Specifies a list of image sources for the <source> element when used inside a <picture> element.\n         * Provides a way to offer multiple image formats or resolutions.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content.html#attr-source-srcset\n         */\n        srcset?: AttrString;\n\n        /**\n         * Specifies the sizes of the images provided in the srcset attribute for the <source> element.\n         * Helps the browser choose the most suitable image based on the device's dimensions.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content.html#attr-source-sizes\n         */\n        sizes?: AttrString;\n\n        /**\n         * Specifies the media conditions for the <source> element.\n         * Helps the browser choose the most suitable source based on the device's capabilities and preferences.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content.html#attr-source-media\n         */\n        media?: AttrString;\n\n        /**\n         * Specifies the height of the <source> element's media resource.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content-other.html#attr-dim-height\n         */\n        height?: AttrStringOrNumber;\n\n        /**\n         * Specifies the width of the <source> element's media resource.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content-other.html#attr-dim-width\n         */\n        width?: AttrStringOrNumber;\n      }\n\n      interface Span extends HTMLAttributes<HTMLSpanElement> {}\n      interface Strong extends HTMLAttributes<HTMLElement> {}\n      interface Style extends HTMLAttributes<HTMLStyleElement> {\n        /**\n         * Determines whether the <style> element blocks rendering.\n         * Since <style> already blocks rendering, this attribute is currently useless until\n         * a non-blocking option for this attribute is added.\n         * @see https://html.spec.whatwg.org/multipage/semantics.html#attr-style-blocking\n         */\n        blocking?: AttrMissing | \"render\";\n\n        /**\n         * Specifies the intended media for which the styles in the <style> element should be applied.\n         * For example, \"print\" for print media or \"screen\" for screen display.\n         * @see https://html.spec.whatwg.org/multipage/semantics.html#attr-style-media\n         */\n        media?: AttrString;\n        /** @deprecated */\n        scoped?: AttrBoolean;\n        /** @deprecated */\n        type?: AttrMimeType;\n      }\n      interface Sub extends HTMLAttributes<HTMLElement> {}\n      interface Summary extends HTMLAttributes<HTMLElement> {}\n      interface Sup extends HTMLAttributes<HTMLElement> {}\n      interface Table extends HTMLAttributes<HTMLTableElement> {\n        /** @deprecated */\n        align?: AttrString;\n        /** @deprecated */\n        bgcolor?: AttrString;\n        /** @deprecated */\n        border?: AttrStringOrNumber;\n        /** @deprecated */\n        cellpadding?: AttrStringOrNumber;\n        /** @deprecated */\n        cellspacing?: AttrStringOrNumber;\n        /** @deprecated */\n        frame?: AttrString;\n        /** @deprecated */\n        rules?: AttrString;\n        /** @deprecated */\n        summary?: AttrString;\n        /** @deprecated */\n        width?: AttrStringOrNumber;\n      }\n      interface TBody extends HTMLAttributes<HTMLTableSectionElement> {\n        /** @deprecated */\n        align?: AttrString;\n        /** @deprecated */\n        bgcolor?: AttrString;\n        /** @deprecated */\n        char?: AttrString;\n        /** @deprecated */\n        charoff?: AttrStringOrNumber;\n        /** @deprecated */\n        valign?: AttrString;\n      }\n      interface TD extends HTMLAttributes<HTMLTableCellElement> {\n        /**\n         * Specifies how many columns the <td> element should span in the table.\n         * @see https://html.spec.whatwg.org/multipage/tables.html#attr-tdth-colspan\n         */\n        colspan?: AttrStringOrNumber;\n\n        /**\n         * Specifies a list of header cell IDs that are related to the content of the <td> element.\n         * @see https://html.spec.whatwg.org/multipage/tables.html#attr-tdth-headers\n         */\n        headers?: AttrString;\n\n        /**\n         * Specifies how many rows the <td> element should span in the table.\n         * @see https://html.spec.whatwg.org/multipage/tables.html#attr-tdth-rowspan\n         */\n        rowspan?: AttrStringOrNumber;\n\n        /** @deprecated */\n        align?: AttrString;\n        /** @deprecated */\n        axis?: AttrString;\n        /** @deprecated */\n        bgcolor?: AttrString;\n        /** @deprecated */\n        char?: AttrString;\n        /** @deprecated */\n        charoff?: AttrStringOrNumber;\n        /** @deprecated */\n        height?: AttrStringOrNumber;\n        /** @deprecated */\n        scope?: AttrString;\n        /** @deprecated */\n        valign?: AttrString;\n        /** @deprecated */\n        width?: AttrStringOrNumber;\n      }\n      interface Template extends HTMLAttributes<HTMLTemplateElement> {\n        /**\n         * Specifies the shadow root mode for the <template> element when creating a shadow root.\n         * \"open\" allows access to the shadow root, while \"closed\" restricts access.\n         * @see https://developer.chrome.com/articles/declarative-shadow-dom\n         * @see https://github.com/mfreed7/declarative-shadow-dom\n         */\n        shadowrootmode?: AttrMissing | \"open\" | \"closed\";\n      }\n      interface TextArea extends HTMLAttributes<HTMLTextAreaElement> {\n        /**\n         * Represents the autocomplete attribute of the <textarea> element.\n         * Helps browsers autofill the user's input based on previous entries.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-autocomplete\n         */\n        autocomplete?: AttrAutoComplete;\n\n        /**\n         * (Safari only). Controls the autocorrect behavior of the <textarea> element.\n         */\n        autocorrect?: AttrOnOff;\n\n        /**\n         * Specifies the visible width of the <textarea> element in terms of character width.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-textarea-cols\n         */\n        cols?: AttrStringOrNumber;\n\n        /**\n         * Represents the dirname attribute of the <textarea> element.\n         * Provides a way to submit the text direction (ltr or rtl) along with the form data.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-dirname\n         */\n        dirname?: AttrString;\n\n        /**\n         * Indicates whether the <textarea> element should be disabled or not.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-disabled\n         */\n        disabled?: AttrBoolean;\n\n        /**\n         * Represents the form attribute of the <textarea> element.\n         * Associates the <textarea> with a specific <form> element.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fae-form\n         */\n        form?: AttrString;\n\n        /**\n         * Specifies the maximum number of characters that can be entered into the <textarea> element.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-textarea-maxlength\n         */\n        maxlength?: AttrStringOrNumber;\n\n        /**\n         * Specifies the minimum number of characters required for the <textarea> element.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-textarea-minlength\n         */\n        minlength?: AttrStringOrNumber;\n\n        /**\n         * Represents the name attribute of the <textarea> element.\n         * Used as a key when submitting the form data.\n         * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-name\n         */\n        name?: AttrString;\n\n        /**\n         * Specifies a short hint that describes the expected value of the <textarea> element.\n         * Displayed when the element is empty and not focused.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-textarea-placeholder\n         */\n        placeholder?: AttrString;\n\n        /**\n         * Indicates whether the <textarea> element should be read-only or not.\n         * Users can't modify the content, but the text is selectable and can be copied.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-textarea-readonly\n         */\n        readonly?: AttrBoolean;\n\n        /**\n         * Indicates whether a value is required or not for the <textarea> element.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-textarea-required\n         */\n        required?: AttrBoolean;\n\n        /**\n         * Specifies the visible height of the <textarea> element in terms of text lines.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-textarea-rows\n         */\n        rows?: AttrStringOrNumber;\n\n        /**\n         * Controls the line wrapping behavior of the <textarea> element.\n         * \"hard\" inserts line breaks in the submitted value, \"soft\" doesn't, and \"off\" disables wrapping.\n         * @see https://html.spec.whatwg.org/multipage/form-elements.html#attr-textarea-wrap\n         */\n        wrap?: AttrMissing | \"hard\" | \"soft\" | \"off\";\n\n        // NON STANDARD\n\n        /**\n         * Represents the current value of the `textarea` element.\n         */\n        value?: AttrMissing | string;\n\n        /**\n         * Called whenever a the `value` property of the `textarea` has changed.\n         * When `valueChange` is a function, `value` becomes controlled. This means\n         * This means the `value` property is synchronized instead of the `value` attribute.\n         */\n        valueChange?: AttrMissing | ((value: string) => void);\n      }\n\n      interface TFoot extends HTMLAttributes<HTMLTableSectionElement> {\n        /** @deprecated */\n        align?: AttrString;\n        /** @deprecated */\n        bgcolor?: AttrString;\n        /** @deprecated */\n        char?: AttrString;\n        /** @deprecated */\n        charoff?: AttrStringOrNumber;\n        /** @deprecated */\n        valign?: AttrString;\n      }\n      interface TH extends HTMLAttributes<HTMLTableCellElement> {\n        /**\n         * Represents the abbreviation for the content of the <th> element.\n         * Provides a short description or label for the cell, which can be used by screen readers.\n         * @see https://html.spec.whatwg.org/multipage/tables.html#attr-th-abbr\n         */\n        abbr?: AttrString;\n\n        /**\n         * Specifies how many columns the <th> element should span in the table.\n         * @see https://html.spec.whatwg.org/multipage/tables.html#attr-tdth-colspan\n         */\n        colspan?: AttrStringOrNumber;\n\n        /**\n         * Specifies a list of header cell IDs that are related to the content of the <th> element.\n         * @see https://html.spec.whatwg.org/multipage/tables.html#attr-tdth-headers\n         */\n        headers?: AttrString;\n\n        /**\n         * Specifies how many rows the <th> element should span in the table.\n         * @see https://html.spec.whatwg.org/multipage/tables.html#attr-tdth-rowspan\n         */\n        rowspan?: AttrStringOrNumber;\n\n        /**\n         * Specifies the scope of the <th> element, defining its association with either row or column headers.\n         * @see https://html.spec.whatwg.org/multipage/tables.html#attr-th-scope\n         */\n        scope?: AttrMissing | \"col\" | \"row\" | \"rowgroup\" | \"colgroup\";\n\n        /** @deprecated */\n        align?: AttrString;\n        /** @deprecated */\n        axis?: AttrString;\n        /** @deprecated */\n        bgcolor?: AttrString;\n        /** @deprecated */\n        char?: AttrString;\n        /** @deprecated */\n        charoff?: AttrStringOrNumber;\n        /** @deprecated */\n        height?: AttrStringOrNumber;\n        /** @deprecated */\n        valign?: AttrString;\n        /** @deprecated */\n        width?: AttrStringOrNumber;\n      }\n      interface THead extends HTMLAttributes<HTMLTableSectionElement> {\n        /** @deprecated */\n        align?: AttrString;\n        /** @deprecated */\n        bgcolor?: AttrString;\n        /** @deprecated */\n        char?: AttrString;\n        /** @deprecated */\n        charoff?: AttrStringOrNumber;\n        /** @deprecated */\n        valign?: AttrString;\n      }\n      interface Time extends HTMLAttributes<HTMLTimeElement> {\n        /**\n         * Represents the machine-readable datetime attribute of the <time> element.\n         * Provides a standardized way to represent dates and times in HTML content.\n         * @see https://html.spec.whatwg.org/multipage/text-level-semantics.html#attr-time-datetime\n         */\n        datetime?: AttrString;\n      }\n      interface Title extends HTMLAttributes<HTMLTitleElement> {}\n      interface TR extends HTMLAttributes<HTMLTableRowElement> {\n        /** @deprecated */\n        align?: AttrString;\n        /** @deprecated */\n        bgcolor?: AttrString;\n        /** @deprecated */\n        char?: AttrString;\n        /** @deprecated */\n        charoff?: AttrStringOrNumber;\n        /** @deprecated */\n        valign?: AttrString;\n      }\n      interface Track extends HTMLAttributes<HTMLTrackElement> {\n        default?: AttrBoolean;\n        kind?:\n          | AttrMissing\n          | \"subtitles\"\n          | \"captions\"\n          | \"descriptions\"\n          | \"chapters\"\n          | \"metadata\";\n        label?: AttrString;\n        src?: AttrSrc;\n        srclang?: AttrString;\n      }\n      interface U extends HTMLAttributes<HTMLElement> {}\n      interface UL extends HTMLAttributes<HTMLUListElement> {\n        /** @deprecated */\n        compact?: AttrBoolean;\n        /** @deprecated */\n        type?: AttrMissing | \"disc\" | \"square\" | \"circle\";\n      }\n      interface Var extends HTMLAttributes<HTMLElement> {}\n      interface Video extends HTMLAttributes<HTMLVideoElement> {\n        /**\n         * Indicates if the video can automatically enter Picture-in-Picture mode when not visible.\n         * @see https://w3c.github.io/picture-in-picture/#auto-pip\n         */\n        autopictureinpicture?: AttrBoolean;\n\n        /**\n         * Specifies whether the video should start playing automatically when the page loads.\n         * @see https://html.spec.whatwg.org/multipage/media.html#attr-media-autoplay\n         */\n        autoplay?: AttrBoolean;\n\n        /**\n         * Indicates whether the browser should provide default video controls.\n         * @see https://html.spec.whatwg.org/multipage/media.html#attr-media-controls\n         */\n        controls?: AttrBoolean;\n\n        /**\n         * Specifies the controls to be shown or hidden on the audio player.\n         * @see https://wicg.github.io/controls-list/explainer.html\n         */\n        controlslist?:\n          | AttrMissing\n          | \"nodownload\"\n          | \"nofullscreen\"\n          | \"noplaybackrate\"\n          | \"noremoteplayback\"\n          | (string & {});\n\n        /**\n         * Specifies the CORS settings for the video resource.\n         * @see https://html.spec.whatwg.org/multipage/media.html#attr-media-crossorigin\n         */\n        crossorigin?: AttrCrossOrigin;\n\n        /**\n         * Disables the Picture-in-Picture mode for the video.\n         * @see https://wicg.github.io/picture-in-picture/#disablepictureinpicture-attribute\n         */\n        disablepictureinpicture?: AttrBoolean;\n\n        /**\n         * Disables the Remote Playback API for the video.\n         * @see https://w3c.github.io/remote-playback/#the-disableremoteplayback-attribute\n         */\n        disableremoteplayback?: AttrBoolean;\n\n        /**\n         * Specifies the height of the video's display area.\n         * @see https://html.spec.whatwg.org/multipage/media.html#attr-video-height\n         */\n        height?: AttrStringOrNumber;\n\n        /**\n         * Indicates whether the video should start over again when it ends.\n         * @see https://html.spec.whatwg.org/multipage/media.html#attr-media-loop\n         */\n        loop?: AttrBoolean;\n\n        /**\n         * Indicates whether the video should be muted by default.\n         * @see https://html.spec.whatwg.org/multipage/media.html#attr-media-muted\n         */\n        muted?: AttrBoolean;\n\n        /**\n         * Specifies that the video should be played inline on iOS devices, rather than automatically entering fullscreen mode when playback begins.\n         * @see https://webkit.org/blog/6784/new-video-policies-for-ios/\n         */\n        playsinline?: AttrBoolean;\n\n        /**\n         * Specifies the URL of an image to be shown while the video is downloading or until the user plays the video.\n         * @see https://html.spec.whatwg.org/multipage/media.html#attr-video-poster\n         */\n        poster?: AttrSrc;\n\n        /**\n         * Specifies how much of the video should be preloaded when the page loads.\n         * @see https://html.spec.whatwg.org/multipage/media.html#attr-media-preload\n         */\n        preload?: AttrBoolean | \"none\" | \"metadata\" | \"auto\";\n        /**\n         * Specifies the URL of the video file to be embedded.\n         * @see https://html.spec.whatwg.org/multipage/media.html#attr-media-src\n         */\n        src?: AttrSrc;\n        /**\n         * Specifies the width of the video's display area.\n         * @see https://html.spec.whatwg.org/multipage/embedded-content-other.html#attr-dim-width\n         */\n        width?: AttrStringOrNumber;\n      }\n\n      interface WBr extends HTMLAttributes<HTMLElement> {}\n    }\n\n    /**\n     * Elements pulled from https://www.w3.org/TR/SVG2/eltindex.html and a few other spec sources\n     */\n    namespace SVG {\n      /**\n       * @see https://www.w3.org/TR/SVG2/linking.html#AElement\n       */\n      interface A\n        extends SVGAttributes<SVGAElement>, SVGConditionalProcessingAttributes {\n        /**\n         * @see https://www.w3.org/TR/SVG2/linking.html#AElementHrefAttribute\n         */\n        href?: AttrHref;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/linking.html#AElementTargetAttribute\n         */\n        target?: AttrTarget;\n\n        /**\n         * any value (if non-empty, value represents a suggested file name)\n         * @see https://www.w3.org/TR/SVG2/linking.html#AElementDownloadAttribute\n         */\n        download?: AttrString;\n\n        /**\n         * space-separated valid non-empty URL tokens\n         * @see https://www.w3.org/TR/SVG2/linking.html#AElementPingAttribute\n         */\n        ping?: HTML.A[\"ping\"];\n\n        /**\n         * space-separated keyword tokens\n         * @see https://www.w3.org/TR/SVG2/linking.html#AElementRelAttribute\n         */\n        rel?: HTML.A[\"rel\"];\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/linking.html#AElementHreflangAttribute\n         */\n        hreflang?: HTML.A[\"hreflang\"];\n\n        /**\n         * A MIME type string\n         * @see https://www.w3.org/TR/SVG2/linking.html#AElementTypeAttribute\n         */\n        type?: HTML.A[\"type\"];\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/linking.html#AElementReferrerpolicyAttribute\n         */\n        referrerPolicy?: AttrReferrerPolicy;\n      }\n\n      /**\n       * @see https://svgwg.org/specs/animations/#AnimateElement\n       */\n      interface Animate\n        extends\n          Omit<SVGAttributes<SVGAnimateElement>, \"fill\">,\n          SVGAnimationAdditionAttributes,\n          SVGAnimationTargetElementAttributes,\n          SVGAnimationAttributeTargetAttributes,\n          SVGAnimationTimingAttributes,\n          SVGAnimationValueAttributes {}\n\n      /**\n       * @see https://svgwg.org/specs/animations/#AnimateMotionElement\n       */\n      interface AnimateMotion\n        extends\n          Omit<SVGAttributes<SVGAnimateMotionElement>, \"fill\">,\n          SVGAnimationAdditionAttributes,\n          SVGAnimationTargetElementAttributes,\n          SVGAnimationTimingAttributes,\n          SVGAnimationValueAttributes {\n        /**\n         * @see https://svgwg.org/specs/animations/#AnimateMotionElementPathAttribute\n         */\n        path?: AttrString;\n\n        /**\n         * A semicolon-separated list of floating point values between 0 and 1\n         * @see https://svgwg.org/specs/animations/#KeyPointsAttribute\n         */\n        keyPoints?: AttrString;\n\n        /**\n         * @see https://svgwg.org/specs/animations/#RotateAttribute\n         */\n        rotate?: AttrMissing | number | \"auto\" | \"auto-reverse\" | (string & {});\n\n        /**\n         * @see https://svgwg.org/specs/animations/#OriginAttribute\n         */\n        origin?: AttrMissing | \"default\";\n      }\n\n      /**\n       * @see https://svgwg.org/specs/animations/#AnimateTransformElement\n       */\n      interface AnimateTransform\n        extends\n          Omit<SVGAttributes<SVGAnimateTransformElement>, \"fill\">,\n          SVGAnimationAdditionAttributes,\n          SVGAnimationTargetElementAttributes,\n          SVGAnimationAttributeTargetAttributes,\n          SVGAnimationTimingAttributes,\n          SVGAnimationValueAttributes {\n        /**\n         * @see https://svgwg.org/specs/animations/#AnimateTransformElementTypeAttribute\n         */\n        type?:\n          | AttrMissing\n          | \"translate\"\n          | \"scale\"\n          | \"rotate\"\n          | \"skewX\"\n          | \"skewY\";\n      }\n\n      /**\n       * @see https://www.w3.org/TR/SVG2/shapes.html#CircleElement\n       */\n      interface Circle\n        extends\n          SVGAttributes<SVGCircleElement>,\n          SVGConditionalProcessingAttributes {\n        /**\n         * @see https://www.w3.org/TR/SVG2/paths.html#PathLengthAttribute\n         */\n        pathLength?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/geometry.html#CxProperty\n         */\n        cx?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/geometry.html#CyProperty\n         */\n        cy?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/geometry.html#RProperty\n         */\n        r?: AttrStringOrNumber;\n      }\n\n      /**\n       * @see https://www.w3.org/TR/css-masking-1/#elementdef-clippath\n       */\n      interface ClipPath\n        extends\n          SVGAttributes<SVGClipPathElement>,\n          SVGConditionalProcessingAttributes {\n        /**\n         * @see https://www.w3.org/TR/2011/REC-SVG11-20110816/struct.html#ExternalResourcesRequiredAttribute\n         */\n        externalResourcesRequired?: AttrBooleanString;\n\n        /**\n         * @see https://www.w3.org/TR/css-masking-1/#element-attrdef-clippath-clippathunits\n         */\n        clipPathUnits?: AttrMissing | \"userSpaceOnUse\" | \"objectBoundingBox\";\n      }\n\n      /**\n       * @see https://www.w3.org/TR/SVG2/struct.html#DefsElement\n       */\n      interface Defs extends SVGAttributes<SVGDefsElement> {}\n\n      /**\n       * @see https://www.w3.org/TR/SVG2/struct.html#DescElement\n       */\n      interface Desc extends SVGAttributes<SVGDescElement> {}\n\n      /**\n       * @see https://svgwg.org/specs/animations/#DiscardElement\n       */\n      interface Discard\n        extends SVGAttributes<SVGElement>, SVGConditionalProcessingAttributes {\n        /**\n         * @see https://svgwg.org/specs/animations/#DiscardElementBeginAttribute\n         */\n        begin?: AttrString;\n\n        /**\n         * @see https://svgwg.org/specs/animations/#DiscardElementHrefAttribute\n         */\n        href?: AttrHref;\n      }\n\n      /**\n       * @see https://www.w3.org/TR/SVG2/shapes.html#EllipseElement\n       */\n      interface Ellipse\n        extends\n          SVGAttributes<SVGEllipseElement>,\n          SVGConditionalProcessingAttributes {\n        /**\n         * @see https://www.w3.org/TR/SVG2/paths.html#PathLengthAttribute\n         */\n        pathLength?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/geometry.html#CxProperty\n         */\n        cx?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/geometry.html#CyProperty\n         */\n        cy?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/geometry.html#RxProperty\n         */\n        rx?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/geometry.html#RyProperty\n         */\n        ry?: AttrStringOrNumber;\n      }\n\n      /**\n       * @see https://www.w3.org/TR/filter-effects-1/#elementdef-feblend\n       */\n      interface FEBlend\n        extends SVGAttributes<SVGFEBlendElement>, SVGFilterPrimitiveAttributes {\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-filter-primitive-in\n         */\n        in?: AttrFEIn;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-filter-primitive-in\n         */\n        in2?: AttrFEIn;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-feblend-mode\n         */\n        mode?:\n          | AttrMissing\n          | \"normal\"\n          | \"darken\"\n          | \"multiply\"\n          | \"color-burn\"\n          | \"lighten\"\n          | \"screen\"\n          | \"color-dodge\"\n          | \"overlay\"\n          | \"soft-light\"\n          | \"hard-light\"\n          | \"difference\"\n          | \"exclusion\"\n          | \"hue\"\n          | \"saturation\"\n          | \"color\"\n          | \"luminosity\";\n      }\n\n      /**\n       * @see https://www.w3.org/TR/filter-effects-1/#elementdef-fecolormatrix\n       */\n      interface FEColorMatrix\n        extends\n          SVGAttributes<SVGFEColorMatrixElement>,\n          SVGFilterPrimitiveAttributes {\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-filter-primitive-in\n         */\n        in?: AttrFEIn;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fecolormatrix-type\n         */\n        type?:\n          | AttrMissing\n          | \"matrix\"\n          | \"saturate\"\n          | \"hueRotate\"\n          | \"luminanceToAlpha\";\n\n        /**\n         * A list of numbers\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fecolormatrix-values\n         */\n        values?: AttrStringOrNumber;\n      }\n\n      /**\n       * @see https://www.w3.org/TR/filter-effects-1/#elementdef-fecomponenttransfer\n       */\n      interface FEComponentTransfer\n        extends\n          SVGAttributes<SVGFEComponentTransferElement>,\n          SVGFilterPrimitiveAttributes {\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-filter-primitive-in\n         */\n        in?: AttrFEIn;\n      }\n\n      /**\n       * @see https://www.w3.org/TR/filter-effects-1/#elementdef-fecomposite\n       */\n      interface FEComposite\n        extends\n          SVGAttributes<SVGFECompositeElement>,\n          SVGFilterPrimitiveAttributes {\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-filter-primitive-in\n         */\n        in?: AttrFEIn;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-filter-primitive-in\n         */\n        in2?: AttrFEIn;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fecomposite-operator\n         */\n        operator?:\n          | AttrMissing\n          | \"over\"\n          | \"in\"\n          | \"out\"\n          | \"atop\"\n          | \"xor\"\n          | \"lighter\"\n          | \"arithmetic\";\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fecomposite-k1\n         */\n        k1?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fecomposite-k2\n         */\n        k2?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fecomposite-k3\n         */\n        k3?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fecomposite-k4\n         */\n        k4?: AttrStringOrNumber;\n      }\n\n      /**\n       * @see https://www.w3.org/TR/filter-effects-1/#elementdef-feconvolvematrix\n       */\n      interface FEConvolveMatrix\n        extends\n          SVGAttributes<SVGFEConvolveMatrixElement>,\n          SVGFilterPrimitiveAttributes {\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-filter-primitive-in\n         */\n        in?: AttrFEIn;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-order\n         */\n        order?: AttrStringOrNumber;\n\n        /**\n         * List of numbers\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-feconvolvematrix-kernelmatrix\n         */\n        kernelMatrix?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-feconvolvematrix-divisor\n         */\n        divisor?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-feconvolvematrix-bias\n         */\n        bias?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-feconvolvematrix-targetx\n         */\n        targetX?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-feconvolvematrix-targety\n         */\n        targetY?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-feconvolvematrix-edgemode\n         */\n        edgeMode?: AttrMissing | \"duplicate\" | \"wrap\" | \"none\";\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-feconvolvematrix-kernelunitlength\n         */\n        kernelUnitLength?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-feconvolvematrix-preservealpha\n         */\n        preserveAlpha?: AttrBooleanString;\n      }\n\n      /**\n       * @see https://www.w3.org/TR/filter-effects-1/#elementdef-fediffuselighting\n       */\n      interface FEDiffuseLighting\n        extends\n          SVGAttributes<SVGFEDiffuseLightingElement>,\n          SVGFilterPrimitiveAttributes {\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-filter-primitive-in\n         */\n        in?: AttrFEIn;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fediffuselighting-surfacescale\n         */\n        surfaceScale?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fediffuselighting-diffuseconstant\n         */\n        diffuseConstant?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fediffuselighting-kernelunitlength\n         */\n        kernelUnitLength?: AttrStringOrNumber;\n      }\n\n      /**\n       * @see https://www.w3.org/TR/filter-effects-1/#elementdef-fedisplacementmap\n       */\n      interface FEDisplacementMap\n        extends\n          SVGAttributes<SVGFEDisplacementMapElement>,\n          SVGFilterPrimitiveAttributes {\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-filter-primitive-in\n         */\n        in?: AttrFEIn;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-filter-primitive-in\n         */\n        in2?: AttrFEIn;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fedisplacementmap-scale\n         */\n        scale?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fedisplacementmap-xchannelselector\n         */\n        xChannelSelector?: \"R\" | \"G\" | \"B\" | \"A\";\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fedisplacementmap-ychannelselector\n         */\n        yChannelSelector?: \"R\" | \"G\" | \"B\" | \"A\";\n      }\n\n      /**\n       * @see https://www.w3.org/TR/filter-effects-1/#elementdef-fedistantlight\n       */\n      interface FEDistantLight\n        extends\n          SVGAttributes<SVGFEDistantLightElement>,\n          SVGFilterPrimitiveAttributes {\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-filter-primitive-in\n         */\n        in?: AttrFEIn;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fedistantlight-azimuth\n         */\n        azimuth?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fedistantlight-elevation\n         */\n        elevation?: AttrStringOrNumber;\n      }\n\n      /**\n       * @see https://www.w3.org/TR/filter-effects-1/#elementdef-fedropshadow\n       */\n      interface FEDropShadow\n        extends\n          SVGAttributes<SVGFEDropShadowElement>,\n          SVGFilterPrimitiveAttributes {\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-filter-primitive-in\n         */\n        in?: AttrFEIn;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fedropshadow-stddeviation\n         */\n        stdDeviation?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fedropshadow-dx\n         */\n        dx?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fedropshadow-dy\n         */\n        dy?: AttrStringOrNumber;\n      }\n\n      /**\n       * @see https://www.w3.org/TR/filter-effects-1/#elementdef-feflood\n       */\n      interface FEFlood\n        extends\n          SVGAttributes<SVGFEFloodElement>,\n          SVGFilterPrimitiveAttributes {}\n\n      /**\n       * @see https://www.w3.org/TR/filter-effects-1/#elementdef-fefunca\n       */\n      interface FEFuncA\n        extends\n          SVGAttributes<SVGFEFuncAElement>,\n          SVGTransferFunctionElementAttributes {}\n\n      /**\n       * @see https://www.w3.org/TR/filter-effects-1/#elementdef-fefuncb\n       */\n      interface FEFuncB\n        extends\n          SVGAttributes<SVGFEFuncBElement>,\n          SVGTransferFunctionElementAttributes {}\n\n      /**\n       * @see https://www.w3.org/TR/filter-effects-1/#elementdef-fefuncg\n       */\n      interface FEFuncG\n        extends\n          SVGAttributes<SVGFEFuncGElement>,\n          SVGTransferFunctionElementAttributes {}\n\n      /**\n       * @see https://www.w3.org/TR/filter-effects-1/#elementdef-fefuncr\n       */\n      interface FEFuncR\n        extends\n          SVGAttributes<SVGFEFuncRElement>,\n          SVGTransferFunctionElementAttributes {}\n\n      /**\n       * @see https://www.w3.org/TR/filter-effects-1/#elementdef-fegaussianblur\n       */\n      interface FEGaussianBlur\n        extends\n          SVGAttributes<SVGFEGaussianBlurElement>,\n          SVGFilterPrimitiveAttributes {\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-filter-primitive-in\n         */\n        in?: AttrFEIn;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fegaussianblur-stddeviation\n         */\n        stdDeviation?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fegaussianblur-edgemode\n         */\n        edgeMode?: AttrMissing | \"duplicate\" | \"wrap\" | \"none\";\n      }\n\n      /**\n       * @see https://www.w3.org/TR/filter-effects-1/#elementdef-feimage\n       */\n      interface FEImage\n        extends SVGAttributes<SVGFEImageElement>, SVGFilterPrimitiveAttributes {\n        /**\n         * @see https://www.w3.org/TR/2011/REC-SVG11-20110816/struct.html#ExternalResourcesRequiredAttribute\n         */\n        externalResourcesRequired?: AttrBooleanString;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-feimage-preserveaspectratio\n         */\n        preserveAspectRatio?: AttrPreserveAspectRatio;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-feimage-crossorigin\n         */\n        crossorigin?: AttrMissing | \"anonymous\" | \"use-credentials\";\n      }\n\n      /**\n       * @see https://www.w3.org/TR/filter-effects-1/#elementdef-femerge\n       */\n      interface FEMerge\n        extends\n          SVGAttributes<SVGFEMergeElement>,\n          SVGFilterPrimitiveAttributes {}\n\n      /**\n       * @see https://www.w3.org/TR/filter-effects-1/#elementdef-femergenode\n       */\n      interface FEMergeNode extends SVGAttributes<SVGFEMergeNodeElement> {\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-filter-primitive-in\n         */\n        in?: AttrFEIn;\n      }\n\n      /**\n       * @see https://www.w3.org/TR/filter-effects-1/#elementdef-femorphology\n       */\n      interface FEMorphology extends SVGAttributes<SVGFEMorphologyElement> {\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-filter-primitive-in\n         */\n        in?: AttrFEIn;\n      }\n\n      /**\n       * @see https://www.w3.org/TR/filter-effects-1/#elementdef-feoffset\n       */\n      interface FEOffset\n        extends\n          SVGAttributes<SVGFEOffsetElement>,\n          SVGFilterPrimitiveAttributes {\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-filter-primitive-in\n         */\n        in?: AttrFEIn;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-femorphology-operator\n         */\n        operator?: AttrMissing | \"erode\" | \"dilate\";\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-femorphology-radius\n         */\n        radius?: AttrStringOrNumber;\n      }\n\n      /**\n       * @see https://www.w3.org/TR/filter-effects-1/#elementdef-fepointlight\n       */\n      interface FEPointLight extends SVGAttributes<SVGFEPointLightElement> {\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fepointlight-x\n         */\n        x?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fepointlight-y\n         */\n        y?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fepointlight-z\n         */\n        z?: AttrStringOrNumber;\n      }\n\n      /**\n       * @see https://www.w3.org/TR/filter-effects-1/#elementdef-fespecularlighting\n       */\n      interface FESpecularLighting\n        extends\n          SVGAttributes<SVGFESpecularLightingElement>,\n          SVGFilterPrimitiveAttributes {\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-filter-primitive-in\n         */\n        in?: AttrFEIn;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fespecularlighting-surfacescale\n         */\n        surfaceScale?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fespecularlighting-specularconstant\n         */\n        specularConstant?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fespecularlighting-specularexponent\n         */\n        specularExponent?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fespecularlighting-kernelunitlength\n         */\n        kernelUnitLength?: AttrStringOrNumber;\n      }\n\n      /**\n       * @see https://www.w3.org/TR/filter-effects-1/#elementdef-fespotlight\n       */\n      interface FESpotLight extends SVGAttributes<SVGFESpotLightElement> {\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fespotlight-x\n         */\n        x?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fespotlight-y\n         */\n        y?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fespotlight-z\n         */\n        z?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fespotlight-pointsatx\n         */\n        pointsAtX?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fespotlight-pointsaty\n         */\n        pointsAtY?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fespotlight-pointsatz\n         */\n        pointsAtZ?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fespotlight-specularexponent\n         */\n        specularExponent?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fespotlight-limitingconeangle\n         */\n        limitingConeAngle?: AttrStringOrNumber;\n      }\n\n      /**\n       * @see https://www.w3.org/TR/filter-effects-1/#elementdef-fetile\n       */\n      interface FETile\n        extends SVGAttributes<SVGFETileElement>, SVGFilterPrimitiveAttributes {\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-filter-primitive-in\n         */\n        in?: AttrFEIn;\n      }\n\n      /**\n       * @see https://www.w3.org/TR/filter-effects-1/#elementdef-feturbulence\n       */\n      interface FETurbulence\n        extends\n          SVGAttributes<SVGFETurbulenceElement>,\n          SVGFilterPrimitiveAttributes {\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-feturbulence-basefrequency\n         */\n        baseFrequency?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-feturbulence-numoctaves\n         */\n        numOctaves?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-feturbulence-seed\n         */\n        seed?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-feturbulence-stitchtiles\n         */\n        stichTiles?: AttrMissing | \"stitch\" | \"noStitch\";\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-feturbulence-type\n         */\n        type?: AttrMissing | \"fractalNoise\" | \"turbulence\";\n      }\n\n      /**\n       * @see https://www.w3.org/TR/filter-effects-1/#elementdef-filter\n       */\n      interface Filter extends SVGAttributes<SVGFilterElement> {\n        /**\n         * @see https://www.w3.org/TR/2011/REC-SVG11-20110816/struct.html#ExternalResourcesRequiredAttribute\n         */\n        externalResourcesRequired?: AttrBooleanString;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-filter-x\n         */\n        x?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-filter-y\n         */\n        y?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-filter-width\n         */\n        width?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-filter-height\n         */\n        height?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-filter-filterunits\n         */\n        filterUnits?: AttrMissing | \"userSpaceOnUse\" | \"objectBoundingBox\";\n\n        /**\n         * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-filter-primitiveunits\n         */\n        primitiveUnits?: AttrMissing | \"userSpaceOnUse\" | \"objectBoundingBox\";\n      }\n\n      /**\n       * @see https://www.w3.org/TR/SVG2/embedded.html#ForeignObjectElement\n       */\n      interface ForeignObject\n        extends\n          SVGAttributes<SVGForeignObjectElement>,\n          SVGConditionalProcessingAttributes {\n        /**\n         * @see https://www.w3.org/TR/SVG2/geometry.html#XProperty\n         */\n        x?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/geometry.html#YProperty\n         */\n        y?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/geometry.html#Sizing\n         */\n        width?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/geometry.html#Sizing\n         */\n        height?: AttrStringOrNumber;\n      }\n\n      /**\n       * @see https://www.w3.org/TR/SVG2/struct.html#GElement\n       */\n      interface G\n        extends\n          SVGAttributes<SVGGElement>,\n          SVGConditionalProcessingAttributes {}\n\n      /**\n       * @see https://www.w3.org/TR/SVG2/embedded.html#ImageElement\n       */\n      interface Image\n        extends\n          SVGAttributes<SVGImageElement>,\n          SVGConditionalProcessingAttributes {\n        /**\n         * @see https://www.w3.org/TR/SVG2/coords.html#PreserveAspectRatioAttribute\n         */\n        preserveAspectRatio?: AttrPreserveAspectRatio;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/embedded.html#ImageElementHrefAttribute\n         */\n        href?: AttrHref;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/embedded.html#ImageElementCrossoriginAttribute\n         */\n        crossorigin?: AttrMissing | \"anonymous\" | \"use-credentials\";\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/geometry.html#XProperty\n         */\n        x?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/geometry.html#YProperty\n         */\n        y?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/geometry.html#Sizing\n         */\n        width?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/geometry.html#Sizing\n         */\n        height?: AttrStringOrNumber;\n      }\n\n      /**\n       * @see https://www.w3.org/TR/SVG2/shapes.html#LineElement\n       */\n      interface Line\n        extends\n          SVGAttributes<SVGLineElement>,\n          SVGConditionalProcessingAttributes {\n        /**\n         * @see https://www.w3.org/TR/SVG2/paths.html#PathLengthAttribute\n         */\n        pathLength?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/shapes.html#LineElementX1Attribute\n         */\n        x1?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/shapes.html#LineElementY1Attribute\n         */\n        y1?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/shapes.html#LineElementX2Attribute\n         */\n        x2?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/shapes.html#LineElementY2Attribute\n         */\n        y2?: AttrStringOrNumber;\n      }\n\n      /**\n       * @see https://www.w3.org/TR/SVG2/pservers.html#LinearGradientElement\n       */\n      interface LinearGradient extends SVGAttributes<SVGLinearGradientElement> {\n        /**\n         * @see https://www.w3.org/TR/SVG2/pservers.html#LinearGradientElementX1Attribute\n         */\n        x1?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/pservers.html#LinearGradientElementY1Attribute\n         */\n        y1?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/pservers.html#LinearGradientElementX2Attribute\n         */\n        x2?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/pservers.html#LinearGradientElementY2Attribute\n         */\n        y2?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/pservers.html#LinearGradientElementGradientUnitsAttribute\n         */\n        gradientUnits?: AttrMissing | \"userSpaceOnUse\" | \"objectBoundingBox\";\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/pservers.html#LinearGradientElementGradientTransformAttribute\n         */\n        gradientTransform?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/pservers.html#LinearGradientElementSpreadMethodAttribute\n         */\n        spreadMethod?: AttrMissing | \"pad\" | \"reflect\" | \"repeat\";\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/pservers.html#LinearGradientElementHrefAttribute\n         */\n        href?: AttrHref;\n      }\n\n      /**\n       * @see https://www.w3.org/TR/SVG2/painting.html#MarkerElement\n       */\n      interface Marker extends SVGAttributes<SVGMarkerElement> {\n        /**\n         * @see https://www.w3.org/TR/SVG2/coords.html#ViewBoxAttribute\n         */\n        viewBox?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/coords.html#PreserveAspectRatioAttribute\n         */\n        preserveAspectRatio?: AttrPreserveAspectRatio;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/painting.html#MarkerElementRefXAttribute\n         */\n        refX?: AttrMissing | \"left\" | \"center\" | \"right\" | (string & {});\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/painting.html#MarkerElementRefYAttribute\n         */\n        refY?: AttrMissing | \"left\" | \"center\" | \"right\" | (string & {});\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/painting.html#MarkerUnitsAttribute\n         */\n        markerUnits?: AttrMissing | \"strokeWidth\" | \"userSpaceOnUse\";\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/painting.html#MarkerWidthAttribute\n         */\n        markerWidth?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/painting.html#MarkerHeightAttribute\n         */\n        markerHeight?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/painting.html#OrientAttribute\n         */\n        orient?:\n          | AttrMissing\n          | \"auto\"\n          | \"auto-start-reverse\"\n          | number\n          | (string & {});\n      }\n\n      /**\n       * @see https://www.w3.org/TR/css-masking-1/#elementdef-mask\n       */\n      interface Mask\n        extends\n          SVGAttributes<SVGMaskElement>,\n          SVGConditionalProcessingAttributes {\n        /**\n         * @see https://www.w3.org/TR/css-masking-1/#element-attrdef-mask-x\n         */\n        x?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/css-masking-1/#element-attrdef-mask-y\n         */\n        y?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/css-masking-1/#element-attrdef-mask-width\n         */\n        width?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/css-masking-1/#element-attrdef-mask-height\n         */\n        height?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/css-masking-1/#element-attrdef-mask-maskunits\n         */\n        maskUnits?: AttrMissing | \"userSpaceOnUse\" | \"objectBoundingBox\";\n\n        /**\n         * @see https://www.w3.org/TR/css-masking-1/#element-attrdef-mask-maskcontentunits\n         */\n        maskContentUnits?: AttrMissing | \"userSpaceOnUse\" | \"objectBoundingBox\";\n      }\n\n      /**\n       * @see https://www.w3.org/TR/SVG2/struct.html#MetadataElement\n       */\n      interface Metadata extends SVGAttributes<SVGMetadataElement> {}\n\n      /**\n       * @see https://svgwg.org/specs/animations/#MPathElement\n       */\n      interface MPath\n        extends\n          SVGAttributes<SVGMPathElement>,\n          SVGConditionalProcessingAttributes {\n        /**\n         * @see https://svgwg.org/specs/animations/#MPathElementHrefAttribute\n         */\n        href?: AttrHref;\n      }\n\n      /**\n       * @see https://www.w3.org/TR/SVG2/paths.html#PathElement\n       */\n      interface Path\n        extends\n          SVGAttributes<SVGPathElement>,\n          SVGConditionalProcessingAttributes {\n        /**\n         * @see https://www.w3.org/TR/SVG2/paths.html#PathLengthAttribute\n         */\n        pathLength?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/paths.html#DProperty\n         */\n        d?: AttrString;\n      }\n\n      /**\n       * @see https://www.w3.org/TR/SVG2/pservers.html#PatternElement\n       */\n      interface Pattern extends SVGAttributes<SVGPatternElement> {\n        /**\n         * @see https://www.w3.org/TR/SVG2/coords.html#ViewBoxAttribute\n         */\n        viewBox?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/coords.html#PreserveAspectRatioAttribute\n         */\n        preserveAspectRatio?: AttrPreserveAspectRatio;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/pservers.html#PatternElementXAttribute\n         */\n        x?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/pservers.html#PatternElementYAttribute\n         */\n        y?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/pservers.html#PatternElementWidthAttribute\n         */\n        width?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/pservers.html#PatternElementHeightAttribute\n         */\n        height?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/pservers.html#PatternElementPatternUnitsAttribute\n         */\n        patternUnits?: AttrMissing | \"userSpaceOnUse\" | \"objectBoundingBox\";\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/pservers.html#PatternElementPatternContentUnitsAttribute\n         */\n        patternContentUnits?:\n          | AttrMissing\n          | \"userSpaceOnUse\"\n          | \"objectBoundingBox\";\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/pservers.html#PatternElementPatternTransformAttribute\n         */\n        patternTransform?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/pservers.html#PatternElementHrefAttribute\n         */\n        href?: AttrHref;\n      }\n\n      /**\n       * @see https://www.w3.org/TR/SVG2/shapes.html#PolygonElement\n       */\n      interface Polygon\n        extends\n          SVGAttributes<SVGPolygonElement>,\n          SVGConditionalProcessingAttributes {\n        /**\n         * @see https://www.w3.org/TR/SVG2/paths.html#PathLengthAttribute\n         */\n        pathLength?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/shapes.html#PolygonElementPointsAttribute\n         */\n        points?: AttrStringOrNumber;\n      }\n\n      /**\n       * @see https://www.w3.org/TR/SVG2/shapes.html#PolylineElement\n       */\n      interface Polyline\n        extends\n          SVGAttributes<SVGPolylineElement>,\n          SVGConditionalProcessingAttributes {\n        /**\n         * @see https://www.w3.org/TR/SVG2/paths.html#PathLengthAttribute\n         */\n        pathLength?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/shapes.html#PolygonElementPointsAttribute\n         */\n        points?: AttrStringOrNumber;\n      }\n\n      /**\n       * @see https://www.w3.org/TR/SVG2/pservers.html#RadialGradientElement\n       */\n      interface RadialGradient extends SVGAttributes<SVGRadialGradientElement> {\n        /**\n         * @see https://www.w3.org/TR/SVG2/pservers.html#RadialGradientElementCXAttribute\n         */\n        cx?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/pservers.html#RadialGradientElementCYAttribute\n         */\n        cy?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/pservers.html#RadialGradientElementRAttribute\n         */\n        r?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/pservers.html#RadialGradientElementFXAttribute\n         */\n        fx?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/pservers.html#RadialGradientElementFYAttribute\n         */\n        fy?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/pservers.html#RadialGradientElementFRAttribute\n         */\n        fr?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/pservers.html#RadialGradientElementGradientUnitsAttribute\n         */\n        gradientUnits?: AttrMissing | \"userSpaceOnUse\" | \"objectBoundingBox\";\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/pservers.html#RadialGradientElementGradientTransformAttribute\n         */\n        gradientTransform?: AttrString;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/pservers.html#RadialGradientElementSpreadMethodAttribute\n         */\n        spreadMethod?: AttrMissing | \"pad\" | \"reflect\" | \"repeat\";\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/pservers.html#RadialGradientElementHrefAttribute\n         */\n        href?: AttrHref;\n      }\n\n      /**\n       * @see https://www.w3.org/TR/SVG2/shapes.html#RectElement\n       */\n      interface Rect\n        extends\n          SVGAttributes<SVGRectElement>,\n          SVGConditionalProcessingAttributes {\n        /**\n         * @see https://www.w3.org/TR/SVG2/paths.html#PathLengthAttribute\n         */\n        pathLength?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/geometry.html#XProperty\n         */\n        x?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/geometry.html#YProperty\n         */\n        y?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/geometry.html#Sizing\n         */\n        width?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/geometry.html#Sizing\n         */\n        height?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/geometry.html#RxProperty\n         */\n        rx?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/geometry.html#RyProperty\n         */\n        ry?: AttrStringOrNumber;\n      }\n\n      /**\n       * @see https://svgwg.org/specs/animations/#SetElement\n       */\n      interface Set\n        extends\n          Omit<SVGAttributes<SVGSetElement>, \"fill\">,\n          SVGAnimationTargetElementAttributes,\n          SVGAnimationAttributeTargetAttributes,\n          SVGAnimationTimingAttributes,\n          SVGConditionalProcessingAttributes {\n        /**\n         * @see https://svgwg.org/specs/animations/#SetElementToAttribute\n         */\n        to?: AttrStringOrNumber;\n      }\n\n      /**\n       * @see https://www.w3.org/TR/SVG2/pservers.html#StopElement\n       */\n      interface Stop extends SVGAttributes<SVGStopElement> {\n        /**\n         * @see https://www.w3.org/TR/SVG2/pservers.html#StopElementOffsetAttribute\n         */\n        offset?: AttrStringOrNumber;\n      }\n\n      /**\n       * @see https://www.w3.org/TR/SVG2/struct.html#SVGElement\n       */\n      interface SVG\n        extends\n          SVGAttributes<SVGSVGElement>,\n          SVGConditionalProcessingAttributes {\n        /**\n         * @see https://www.w3.org/TR/xml-names/#ns-decl\n         */\n        xmlns?: AttrString;\n\n        /**\n         * A list of four numbers `<min-x>`, `<min-y>`, `<width>` and `<height>`, separated by whitespace and/or a comma\n         * @see https://www.w3.org/TR/SVG2/coords.html#ViewBoxAttribute\n         */\n        viewBox?: AttrString;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/coords.html#PreserveAspectRatioAttribute\n         */\n        preserveAspectRatio?: AttrPreserveAspectRatio;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/interact.html#ZoomAndPanAttribute\n         */\n        zoomAndPan?: AttrMissing | \"disable\" | \"magnify\";\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/geometry.html#XProperty\n         */\n        x?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/geometry.html#YProperty\n         */\n        y?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/geometry.html#Sizing\n         */\n        width?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/geometry.html#Sizing\n         */\n        height?: AttrStringOrNumber;\n      }\n\n      /**\n       * @see https://www.w3.org/TR/SVG2/struct.html#SwitchElement\n       */\n      interface Switch\n        extends\n          SVGAttributes<SVGSwitchElement>,\n          SVGConditionalProcessingAttributes {}\n\n      /**\n       * @see https://www.w3.org/TR/SVG2/struct.html#SymbolElement\n       */\n      interface Symbol extends SVGAttributes<SVGSymbolElement> {\n        /**\n         * @see https://www.w3.org/TR/SVG2/coords.html#PreserveAspectRatioAttribute\n         */\n        preserveAspectRatio?: AttrPreserveAspectRatio;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/coords.html#ViewBoxAttribute\n         */\n        viewBox?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/struct.html#SymbolElementRefXAttribute\n         */\n        refX?:\n          | AttrMissing\n          | \"left\"\n          | \"center\"\n          | \"right\"\n          | number\n          | (string & {});\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/struct.html#SymbolElementRefYAttribute\n         */\n        refY?:\n          | AttrMissing\n          | \"top\"\n          | \"center\"\n          | \"bottom\"\n          | number\n          | (string & {});\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/geometry.html#XProperty\n         */\n        x?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/geometry.html#YProperty\n         */\n        y?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/geometry.html#Sizing\n         */\n        width?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/geometry.html#Sizing\n         */\n        height?: AttrStringOrNumber;\n      }\n\n      /**\n       * @see https://www.w3.org/TR/SVG2/text.html#TextElement\n       */\n      interface Text\n        extends\n          SVGAttributes<SVGTextElement>,\n          SVGConditionalProcessingAttributes {\n        /**\n         * @see https://www.w3.org/TR/SVG2/text.html#TextElementLengthAdjustAttribute\n         */\n        lengthAdjust?: AttrMissing | \"spacing\" | \"spacingAndGlyphs\";\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/text.html#TextElementXAttribute\n         */\n        x?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/text.html#TextElementYAttribute\n         */\n        y?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/text.html#TextElementDXAttribute\n         */\n        dx?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/text.html#TextElementDYAttribute\n         */\n        dy?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/text.html#TextElementRotateAttribute\n         */\n        rotate?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/text.html#TextElementTextLengthAttribute\n         */\n        textLength?: AttrStringOrNumber;\n      }\n\n      /**\n       * @see https://www.w3.org/TR/SVG2/text.html#TextPathElement\n       */\n      interface TextPath\n        extends\n          SVGAttributes<SVGTextPathElement>,\n          SVGConditionalProcessingAttributes {\n        /**\n         * @see https://www.w3.org/TR/SVG2/text.html#TextElementLengthAdjustAttribute\n         */\n        lengthAdjust?: AttrMissing | \"spacing\" | \"spacingAndGlyphs\";\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/text.html#TextElementTextLengthAttribute\n         */\n        textLength?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/text.html#TextPathElementPathAttribute\n         */\n        path?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/text.html#TextPathElementHrefAttribute\n         */\n        href?: AttrHref;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/text.html#TextPathElementStartOffsetAttribute\n         */\n        startOffset?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/text.html#TextPathElementMethodAttribute\n         */\n        method?: AttrMissing | \"align\" | \"stretch\";\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/text.html#TextPathElementSpacingAttribute\n         */\n        spacing?: AttrMissing | \"auto\" | \"exact\";\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/text.html#TextPathElementSideAttribute\n         */\n        side?: AttrMissing | \"left\" | \"right\";\n      }\n\n      /**\n       * @see https://www.w3.org/TR/SVG2/struct.html#TitleElement\n       */\n      interface Title extends SVGAttributes<SVGTitleElement> {}\n\n      /**\n       * @see https://www.w3.org/TR/SVG2/text.html#TextElement\n       */\n      interface TSpan\n        extends\n          SVGAttributes<SVGTSpanElement>,\n          SVGConditionalProcessingAttributes {\n        /**\n         * @see https://www.w3.org/TR/SVG2/text.html#TextElementLengthAdjustAttribute\n         */\n        lengthAdjust?: AttrMissing | \"spacing\" | \"spacingAndGlyphs\";\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/text.html#TextElementXAttribute\n         */\n        x?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/text.html#TextElementYAttribute\n         */\n        y?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/text.html#TextElementDXAttribute\n         */\n        dx?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/text.html#TextElementDYAttribute\n         */\n        dy?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/text.html#TextElementRotateAttribute\n         */\n        rotate?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/text.html#TextElementTextLengthAttribute\n         */\n        textLength?: AttrStringOrNumber;\n      }\n\n      /**\n       * @see https://www.w3.org/TR/SVG2/struct.html#UseElement\n       */\n      interface Use\n        extends\n          SVGAttributes<SVGUseElement>,\n          SVGConditionalProcessingAttributes {\n        /**\n         * @see https://www.w3.org/TR/SVG2/struct.html#UseElementHrefAttribute\n         */\n        href?: AttrHref;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/geometry.html#XProperty\n         */\n        x?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/geometry.html#YProperty\n         */\n        y?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/geometry.html#Sizing\n         */\n        width?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/geometry.html#Sizing\n         */\n        height?: AttrStringOrNumber;\n      }\n\n      /**\n       * @see https://www.w3.org/TR/SVG2/linking.html#ViewElement\n       */\n      interface View extends SVGAttributes<SVGViewElement> {\n        /**\n         * @see https://www.w3.org/TR/SVG2/coords.html#ViewBoxAttribute\n         */\n        viewBox?: AttrStringOrNumber;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/coords.html#PreserveAspectRatioAttribute\n         */\n        preserveAspectRatio?: AttrPreserveAspectRatio;\n\n        /**\n         * @see https://www.w3.org/TR/SVG2/interact.html#ZoomAndPanAttribute\n         */\n        zoomAndPan?: AttrMissing | \"disable\" | \"magnify\";\n      }\n    }\n\n    interface HTMLAttributes<\n      T extends Element = Element,\n    > extends CommonAttributes<T> {\n      /**\n       * Specifies a keyboard shortcut to activate or focus on an element.\n       * @see https://html.spec.whatwg.org/multipage/interaction.html#the-accesskey-attribute\n       */\n      accesskey?: AttrString;\n\n      /**\n       * Controls the capitalization behavior of user input.\n       * @see https://html.spec.whatwg.org/multipage/interaction.html#attr-autocapitalize\n       */\n      autocapitalize?:\n        | AttrOnOff\n        | \"characters\"\n        | \"none\"\n        | \"sentences\"\n        | \"words\";\n\n      /**\n       * Indicates whether the element should automatically get focus when the page loads.\n       * @see https://html.spec.whatwg.org/multipage/interaction.html#the-autofocus-attribute\n       */\n      autofocus?: AttrBoolean;\n\n      /**\n       * Specifies a space-separated list of class names for an element.\n       * @see https://markojs.com/docs/syntax/#class-attribute\n       * @see https://html.spec.whatwg.org/multipage/dom.html#classes\n       */\n      class?: AttrClass;\n\n      /**\n       * Specifies whether the content of an element is editable or not.\n       * @see https://html.spec.whatwg.org/multipage/interaction.html#attr-contenteditable\n       */\n      contenteditable?: AttrBooleanString | \"plaintext-only\";\n\n      /**\n       * Specifies the ID of a context menu to show when the element is right-clicked.\n       * @see https://html.spec.whatwg.org/multipage/interaction.html#attr-contextmenu\n       */\n      contextmenu?: AttrString;\n\n      /**\n       * Specifies the text direction for the content of an element.\n       * @see https://html.spec.whatwg.org/multipage/dom.html#the-dir-attribute\n       */\n      dir?: AttrMissing | \"ltr\" | \"rtl\" | \"auto\";\n\n      /**\n       * Specifies whether an element is draggable or not.\n       * @see https://html.spec.whatwg.org/multipage/dnd.html#the-draggable-attribute\n       */\n      draggable?: AttrBooleanString;\n\n      /**\n       * A string used to identify the element for performance measurement purposes.\n       * @see https://wicg.github.io/element-timing/#sec-elements-exposed\n       */\n      elementtiming?: AttrString;\n\n      /**\n       * Provides a hint to the user agent about the type of action expected from the \"Enter\" key.\n       * @see https://html.spec.whatwg.org/multipage/interaction.html#attr-enterkeyhint\n       */\n      enterkeyhint?:\n        | AttrMissing\n        | \"enter\"\n        | \"done\"\n        | \"go\"\n        | \"next\"\n        | \"previous\"\n        | \"search\"\n        | \"send\";\n\n      /**\n       * Specifies a list of part names for the element that are available for CSS ::part() selector.\n       * @see https://drafts.csswg.org/css-shadow-parts-1/#exportparts-attribute\n       */\n      exportparts?: AttrString;\n\n      /**\n       * Indicates whether the element should be hidden from rendering or not.\n       * @see https://html.spec.whatwg.org/multipage/interaction.html#the-hidden-attribute\n       */\n      hidden?: AttrBoolean | \"until-found\";\n\n      /**\n       * Specifies a unique identifier for the element within the document.\n       * @see https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute\n       */\n      id?: AttrString;\n\n      /**\n       * Specifies whether an element should be inert or not, preventing user interaction and making it non-focusable.\n       * @see https://html.spec.whatwg.org/multipage/interaction.html#inert-subtrees\n       */\n      inert?: AttrBoolean;\n\n      /**\n       * Provides a hint to the user agent about the type of virtual keyboard to display for text input.\n       * @see https://html.spec.whatwg.org/multipage/interaction.html#attr-inputmode\n       */\n      inputmode?:\n        | AttrMissing\n        | \"decimal\"\n        | \"email\"\n        | \"none\"\n        | \"numeric\"\n        | \"search\"\n        | \"tel\"\n        | \"text\"\n        | \"url\";\n\n      /**\n       * Specifies the name of a custom element to use as a replacement for the standard built-in element.\n       * @see https://html.spec.whatwg.org/multipage/custom-elements.html#attr-is\n       */\n      is?: AttrString;\n\n      /**\n       * Specifies a globally unique identifier (URI) for the element in the context of microdata.\n       * @see https://html.spec.whatwg.org/multipage/microdata.html#attr-itemid\n       */\n      itemid?: AttrString;\n\n      /**\n       * Specifies a list of one or more property names for the element in the context of microdata.\n       * @see https://html.spec.whatwg.org/multipage/microdata.html#attr-itemprop\n       */\n      itemprop?: AttrString;\n\n      /**\n       * Specifies a list of IDs of elements that contain additional properties for the item in the context of microdata.\n       * @see https://html.spec.whatwg.org/multipage/microdata.html#attr-itemref\n       */\n      itemref?: AttrString;\n\n      /**\n       * Specifies that the element is a microdata item, representing a single entity or concept.\n       * @see https://html.spec.whatwg.org/multipage/microdata.html#attr-itemscope\n       */\n      itemscope?: AttrBoolean;\n\n      /**\n       * Specifies the type of item represented by the element using a vocabulary URL in the context of microdata.\n       * @see https://html.spec.whatwg.org/multipage/microdata.html#attr-itemtype\n       */\n      itemtype?: AttrString;\n\n      /**\n       * Specifies the primary language for the element's contents and for any child elements.\n       * @see https://html.spec.whatwg.org/multipage/dom.html#attr-lang\n       */\n      lang?: AttrString;\n\n      /**\n       * Specifies a cryptographic nonce (number used once) for content within a script or style element.\n       * @see https://html.spec.whatwg.org/multipage/urls-and-fetching.html#attr-nonce\n       */\n      nonce?: AttrString;\n\n      /**\n       * Specifies that the element won't be rendered until it becomes shown, at which point it will be rendered on top of other page content.\n       * @see https://html.spec.whatwg.org/multipage/popover.html#attr-popover\n       */\n      popover?: AttrBoolean | \"auto\" | \"manual\";\n\n      /**\n       * Specifies a list of part names for the element that can be targeted by the ::part() CSS pseudo-element.\n       * @see https://drafts.csswg.org/css-shadow-parts-1/#part-attribute\n       */\n      part?: AttrString;\n\n      /**\n       * Specifies the name of the slot the element should be assigned to when inside a shadow tree.\n       * @see https://html.spec.whatwg.org/multipage/scripting.html#attr-slot\n       */\n      slot?: AttrString;\n\n      /**\n       * Specifies whether the element should have its spelling and grammar checked or not.\n       * @see https://html.spec.whatwg.org/multipage/interaction.html#attr-spellcheck\n       */\n      spellcheck?: AttrBooleanString;\n\n      /**\n       * Specifies the inline CSS styles for the element.\n       * @see https://markojs.com/docs/syntax/#style-attribute\n       * @see https://html.spec.whatwg.org/multipage/dom.html#the-style-attribute\n       */\n      style?: AttrStyle;\n\n      /**\n       * Specifies the order in which elements should be focused when navigating via the keyboard.\n       * @see https://html.spec.whatwg.org/multipage/interaction.html#attr-tabindex\n       */\n      tabindex?: AttrStringOrNumber;\n\n      /**\n       * Specifies extra information about the element, usually shown as a tooltip.\n       * @see https://html.spec.whatwg.org/multipage/dom.html#the-title-attribute\n       */\n      title?: AttrString;\n\n      /**\n       * Specifies whether the element's content should be translated when the page is localized.\n       * @see https://html.spec.whatwg.org/multipage/dom.html#the-translate-attribute\n       */\n      translate?: AttrYesNoString;\n\n      /**\n       * Specifies the policy for showing the virtual keyboard when an element receives focus.\n       * @see https://w3c.github.io/virtual-keyboard/#dom-elementcontenteditable-virtualkeyboardpolicy\n       */\n      virtualkeyboardpolicy?: AttrMissing | \"auto\" | \"manual\";\n\n      /**\n       * Provide body content for the tag as a Marko.Body.\n       * @see Marko.Body\n       */\n      content?:\n        | AttrString\n        | Marko.Body<[], void>\n        | Marko.Template<Record<any, never>, void>;\n\n      /**\n       * data-* global attributes form a class of attributes called custom data attributes, that allow proprietary\n       * information to be exchanged between the HTML and its DOM representation by scripts.\n       * @see https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes\n       */\n      [data: `data-${string}`]: AttrStringOrNumber | boolean;\n    }\n\n    interface SVGAttributes<\n      T extends Element = Element,\n    > extends CommonAttributes<T> {\n      /**\n       * @see https://www.w3.org/TR/SVG2/struct.html#IDAttribute\n       */\n      id?: AttrString;\n\n      /**\n       * @see https://www.w3.org/TR/SVG2/struct.html#SVGElementTabindexAttribute\n       */\n      tabindex?: AttrStringOrNumber;\n\n      /**\n       * @see https://www.w3.org/TR/SVG2/struct.html#LangAttribute\n       */\n      lang?: string;\n\n      /**\n       * @see https://www.w3.org/TR/SVG2/struct.html#XMLSpaceAttribute\n       * @deprecated New content should use the white-space property instead\n       */\n      \"xml:space\"?: AttrMissing | \"default\" | \"preserve\";\n\n      /**\n       * @see https://www.w3.org/TR/SVG2/styling.html#ClassAttribute\n       */\n      class?: AttrClass;\n\n      /**\n       * @see https://www.w3.org/TR/SVG2/styling.html#StyleAttribute\n       */\n      style?: AttrStyle;\n\n      /**\n       * Provide body content for the tag as a Marko.Body.\n       * @see Marko.Body\n       */\n      content?:\n        | AttrString\n        | Marko.Body<[], void>\n        | Marko.Template<Record<any, never>, void>;\n\n      \"alignment-baseline\"?: AttrMissing | csstype.Property.AlignmentBaseline;\n      \"baseline-shift\"?: AttrMissing | csstype.Property.BaselineShift | number;\n      clip?: AttrMissing | csstype.Property.Clip | number;\n      \"clip-path\"?: AttrMissing | csstype.Property.ClipPath;\n      \"clip-rule\"?: AttrMissing | csstype.Property.ClipRule;\n      color?: AttrMissing | csstype.Property.Color;\n      \"color-interpolation\"?: AttrMissing | csstype.Property.ColorInterpolation;\n      \"color-interpolation-filters\"?:\n        | AttrMissing\n        | csstype.Property.ColorInterpolation;\n      \"color-rendering\"?: AttrMissing | csstype.Property.ColorRendering;\n      cursor?: AttrMissing | csstype.Property.Cursor;\n      direction?: AttrMissing | csstype.Property.Direction;\n      display?: AttrMissing | csstype.Property.Display;\n      \"dominant-baseline\"?:\n        | AttrMissing\n        | csstype.Property.DominantBaseline\n        | number;\n      /**\n       * @see https://www.w3.org/TR/SVG11/filters.html#EnableBackgroundProperty\n       */\n      \"enable-background\"?: AttrMissing | \"accumulate\" | \"new\" | (string & {});\n      fill?: AttrMissing | \"freeze\" | \"remove\" | csstype.Property.Fill;\n      \"fill-opacity\"?: AttrMissing | csstype.Property.FillOpacity | number;\n      \"fill-rule\"?: AttrMissing | csstype.Property.FillRule;\n      filter?: AttrMissing | csstype.Property.Filter;\n      \"flood-color\"?: AttrMissing | csstype.Property.FloodColor;\n      \"flood-opacity\"?: AttrMissing | csstype.Property.FloodOpacity | number;\n      font?: AttrMissing | csstype.Property.Font;\n      \"font-family\"?: AttrMissing | csstype.Property.FontFamily;\n      \"font-size\"?: AttrMissing | csstype.Property.FontSize | number;\n      \"font-size-adjust\"?:\n        | AttrMissing\n        | csstype.Property.FontSizeAdjust\n        | number;\n      \"font-stretch\"?: AttrMissing | csstype.Property.FontStretch;\n      \"font-style\"?: AttrMissing | csstype.Property.FontStyle;\n      \"font-variant\"?: AttrMissing | csstype.Property.FontVariant;\n      \"font-weight\"?: AttrMissing | csstype.Property.FontWeight | number;\n      \"glyph-orientation-horizontal\"?:\n        | AttrMissing\n        | csstype.Property.GlyphOrientationVertical;\n      \"glyph-orientation-vertical\"?:\n        | AttrMissing\n        | csstype.Property.GlyphOrientationVertical;\n      \"image-rendering\"?: AttrMissing | csstype.Property.ImageRendering;\n      isolation?: AttrMissing | csstype.Property.Isolation;\n      kerning?: AttrMissing | csstype.Property.FontKerning | number;\n      \"letter-spacing\"?: AttrMissing | csstype.Property.LetterSpacing | number;\n      \"lighting-color\"?: AttrMissing | csstype.Property.LightingColor;\n      marker?: AttrMissing | csstype.Property.Marker;\n      \"marker-end\"?: AttrMissing | csstype.Property.MarkerEnd;\n      \"marker-mid\"?: AttrMissing | csstype.Property.MarkerMid;\n      \"marker-start\"?: AttrMissing | csstype.Property.MarkerStart;\n      mask?: AttrMissing | csstype.Property.Mask;\n      opacity?: AttrMissing | csstype.Property.Opacity | number;\n      overflow?: AttrMissing | csstype.Property.Overflow;\n      \"paint-order\"?: AttrMissing | csstype.Property.PaintOrder;\n      \"pointer-events\"?: AttrMissing | csstype.Property.PointerEvents;\n      \"shape-rendering\"?: AttrMissing | csstype.Property.ShapeRendering;\n      \"stop-color\"?: AttrMissing | csstype.Property.StopColor;\n      \"stop-opacity\"?: AttrMissing | csstype.Property.StopOpacity | number;\n      stroke?: AttrMissing | csstype.Property.Stroke;\n      \"stroke-dasharray\"?:\n        | AttrMissing\n        | csstype.Property.StrokeDasharray\n        | number;\n      \"stroke-dashoffset\"?:\n        | AttrMissing\n        | csstype.Property.StrokeDashoffset\n        | number;\n      \"stroke-linecap\"?: AttrMissing | csstype.Property.StrokeLinecap;\n      \"stroke-linejoin\"?: AttrMissing | csstype.Property.StrokeLinejoin;\n      \"stroke-miterlimit\"?:\n        | AttrMissing\n        | csstype.Property.StrokeMiterlimit\n        | number;\n      \"stroke-opacity\"?: AttrMissing | csstype.Property.StrokeOpacity | number;\n      \"stroke-width\"?: AttrMissing | csstype.Property.StrokeWidth | number;\n      \"text-anchor\"?: AttrMissing | csstype.Property.TextAnchor;\n      \"text-decoration\"?: AttrMissing | csstype.Property.TextDecoration;\n      \"text-rendering\"?: AttrMissing | csstype.Property.TextRendering;\n      transform?: AttrMissing | csstype.Property.Transform;\n      \"unicode-bidi\"?: AttrMissing | csstype.Property.UnicodeBidi;\n      \"vector-effect\"?: AttrMissing | csstype.Property.VectorEffect;\n      visibility?: AttrMissing | csstype.Property.Visibility;\n      \"word-spacing\"?: AttrMissing | csstype.Property.WordSpacing | number;\n      \"writing-mode\"?: AttrMissing | csstype.Property.WritingMode;\n\n      /**\n       * @see https://www.w3.org/TR/SVG2/struct.html#DataAttributes\n       */\n      [data: `data-${string}`]: AttrStringOrNumber | boolean;\n    }\n  }\n}\n\ninterface SVGTransferFunctionElementAttributes {\n  /**\n   * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fecomponenttransfer-type\n   */\n  type?: AttrMissing | \"identity\" | \"table\" | \"discrete\" | \"linear\" | \"gamma\";\n\n  /**\n   * List of numbers\n   * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fecomponenttransfer-tablevalues\n   */\n  tableValues?: AttrStringOrNumber;\n\n  /**\n   * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fecomponenttransfer-slope\n   */\n  slope?: AttrStringOrNumber;\n\n  /**\n   * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fecomponenttransfer-intercept\n   */\n  intercept?: AttrStringOrNumber;\n\n  /**\n   * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fecomponenttransfer-amplitude\n   */\n  amplitude?: AttrStringOrNumber;\n\n  /**\n   * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fecomponenttransfer-exponent\n   */\n  exponent?: AttrStringOrNumber;\n\n  /**\n   * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-fecomponenttransfer-offset\n   */\n  offset?: AttrStringOrNumber;\n}\n\ninterface SVGAnimationAdditionAttributes {\n  /**\n   * @see https://svgwg.org/specs/animations/#AdditiveAttribute\n   */\n  additive?: AttrMissing | \"replace\" | \"sum\";\n\n  /**\n   * @see https://svgwg.org/specs/animations/#AccumulateAttribute\n   */\n  accumulate?: AttrMissing | \"none\" | \"sum\";\n}\n\ninterface SVGAnimationTargetElementAttributes {\n  /**\n   * @see https://svgwg.org/specs/animations/#HrefAttribute\n   */\n  href?: AttrHref;\n}\n\ninterface SVGAnimationAttributeTargetAttributes {\n  /**\n   * @see https://svgwg.org/specs/animations/#AttributeNameAttribute\n   */\n  attributeName?: AttrString;\n}\n\ninterface SVGAnimationTimingAttributes {\n  /**\n   * A semicolon separated list of values\n   * @see https://svgwg.org/specs/animations/#BeginAttribute\n   */\n  begin?: AttrString;\n\n  /**\n   * @see https://svgwg.org/specs/animations/#DurAttribute\n   */\n  dur?: AttrMissing | \"media\" | \"indefinite\" | number | (string & {});\n\n  /**\n   * A semicolon separated list of values\n   * @see https://svgwg.org/specs/animations/#EndAttribute\n   */\n  end?: AttrString;\n\n  /**\n   * @see https://svgwg.org/specs/animations/#MinAttribute\n   */\n  min?: AttrMissing | \"media\" | number | (string & {});\n\n  /**\n   * @see https://svgwg.org/specs/animations/#MaxAttribute\n   */\n  max?: AttrMissing | \"media\" | number | (string & {});\n\n  /**\n   * @see https://svgwg.org/specs/animations/#RestartAttribute\n   */\n  restart?: AttrMissing | \"always\" | \"whenNotActive\" | \"never\";\n\n  /**\n   * @see https://svgwg.org/specs/animations/#RepeatCountAttribute\n   */\n  repeatCount?: AttrStringOrNumber;\n\n  /**\n   * @see https://svgwg.org/specs/animations/#RepeatDurAttribute\n   */\n  repeatDur?: AttrStringOrNumber;\n\n  /**\n   * @see https://svgwg.org/specs/animations/#FillAttribute\n   */\n  fill?: AttrMissing | \"freeze\" | \"remove\";\n}\n\ninterface SVGAnimationValueAttributes {\n  /**\n   * @see https://svgwg.org/specs/animations/#CalcModeAttribute\n   */\n  calcMode?: AttrMissing | \"discrete\" | \"linear\" | \"paced\" | \"spline\";\n\n  /**\n   * A semicolon-separated list of values\n   * @see https://svgwg.org/specs/animations/#ValuesAttribute\n   */\n  values?: AttrString;\n\n  /**\n   * A semicolon-separated list of numbers\n   * @see https://svgwg.org/specs/animations/#KeyTimesAttribute\n   */\n  keyTimes?: AttrStringOrNumber;\n\n  /**\n   * A semicolon-separated list of Bézier control points\n   * @see https://svgwg.org/specs/animations/#KeySplinesAttribute\n   */\n  keySplines?: AttrString;\n\n  /**\n   * @see https://svgwg.org/specs/animations/#FromAttribute\n   */\n  from?: AttrStringOrNumber;\n\n  /**\n   * @see https://svgwg.org/specs/animations/#FromAttribute\n   */\n  to?: AttrStringOrNumber;\n\n  /**\n   * @see https://svgwg.org/specs/animations/#FromAttribute\n   */\n  by?: AttrStringOrNumber;\n}\n\ninterface SVGConditionalProcessingAttributes {\n  /**\n   * Set of space-separated tokens\n   * @see https://www.w3.org/TR/SVG2/struct.html#RequiredExtensionsAttribute\n   */\n  requiredExtensions?: AttrString;\n\n  /**\n   * Set of comma-separated tokens\n   * @see https://www.w3.org/TR/SVG2/struct.html#SystemLanguageAttribute\n   */\n  systemLanguage?: AttrString;\n}\n\ninterface SVGFilterPrimitiveAttributes {\n  /**\n   * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-filter-primitive-x\n   */\n  x?: AttrStringOrNumber;\n\n  /**\n   * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-filter-primitive-y\n   */\n  y?: AttrStringOrNumber;\n\n  /**\n   * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-filter-primitive-height\n   */\n  height?: AttrStringOrNumber;\n\n  /**\n   * @see https://www.w3.org/TR/filter-effects-1/#element-attrdef-filter-primitive-result\n   */\n  result?: AttrString;\n}\n\ninterface CommonAttributes<T extends Element> {\n  /**\n   * Fired when resource was not fully loaded, but not as the result of an error.\n   * @see https://html.spec.whatwg.org/multipage/media.html#event-media-abort\n   */\n  onAbort?: AttrEventHandler<Event, T>;\n  \"on-abort\"?: this[\"onAbort\"];\n  onabort?: AttrString;\n\n  /**\n   * Fired when an Animation unexpectedly aborts.\n   * @see https://w3c.github.io/csswg-drafts/css-animations/#eventdef-globaleventhandlers-animationcancel\n   */\n  onAnimationCancel?: AttrEventHandler<AnimationEvent, T>;\n  \"on-animationcancel\"?: this[\"onAnimationCancel\"];\n\n  /**\n   * Fired when an animation has completed.\n   * @see https://w3c.github.io/csswg-drafts/css-animations/#eventdef-globaleventhandlers-animationend\n   */\n  onAnimationEnd?: AttrEventHandler<AnimationEvent, T>;\n  \"on-animationend\"?: this[\"onAnimationEnd\"];\n\n  /**\n   * Fired at the end of each iteration of an animation, except when an animationend event would fire at the same time.\n   * @see https://w3c.github.io/csswg-drafts/css-animations/#eventdef-globaleventhandlers-animationiteration\n   */\n  onAnimationIteration?: AttrEventHandler<AnimationEvent, T>;\n  \"on-animationiteration\"?: this[\"onAnimationIteration\"];\n\n  /**\n   * Fired when an animation has started.\n   * @see https://w3c.github.io/csswg-drafts/css-animations/#eventdef-globaleventhandlers-animationstart\n   */\n  onAnimationStart?: AttrEventHandler<AnimationEvent, T>;\n  \"on-animationstart\"?: this[\"onAnimationStart\"];\n\n  /**\n   * Fired when a non-primary pointing device button (any mouse button other than the primary—usually leftmost—button)\n   * has been pressed and released both within the same element.\n   * @see https://w3c.github.io/uievents/#event-type-auxclick\n   */\n  onAuxClick?: AttrEventHandler<PointerEvent, T>;\n  \"on-auxclick\"?: this[\"onAuxClick\"];\n  onauxclick?: AttrString;\n\n  /**\n   * Fires when the value of an <input>, or <textarea> element is about to be modified.\n   * @see https://w3c.github.io/uievents/#event-type-beforeinput\n   */\n  onBeforeInput?: AttrEventHandler<InputEvent, T>;\n  \"on-beforeinput\"?: this[\"onBeforeInput\"];\n  onbeforeinput?: AttrString;\n\n  /**\n   * Fired on elements with the hidden=until-found attribute before they are revealed.\n   * @see https://html.spec.whatwg.org/multipage/indices.html#event-beforematch\n   */\n  onBeforeMatch?: AttrEventHandler<Event, T>;\n  \"on-beforematch\"?: this[\"onBeforeMatch\"];\n  onbeforematch?: AttrString;\n\n  /**\n   * Fired on elements with the popover attribute when they are transitioning between showing and hidden\n   * @see https://html.spec.whatwg.org/multipage/indices.html#event-beforetoggle\n   */\n  onBeforeToggle?: AttrEventHandler<Event, T>;\n  \"on-beforetoggle\"?: this[\"onBeforeToggle\"];\n  onbeforetoggle?: AttrString;\n\n  /**\n   * Fires when a node loses focus.\n   * @see https://html.spec.whatwg.org/multipage/indices.html#event-blur\n   */\n  onBlur?: AttrEventHandler<Event, T>;\n  \"on-blur\"?: this[\"onBlur\"];\n  onblur?: AttrString;\n\n  /**\n   * Fired at controls when the user commits a value change (see also the input event)\n   * @see https://html.spec.whatwg.org/multipage/indices.html#event-cancel\n   */\n  onCancel?: AttrEventHandler<Event, T>;\n  \"on-cancel\"?: this[\"onCancel\"];\n  oncancel?: AttrString;\n\n  /**\n   * Fires when the user agent can resume playback of the media data,\n   * but estimates that if playback were to be started now, the media resource could not be rendered at the current\n   * playback rate up to its end without having to stop for further buffering of content.\n   * @see https://html.spec.whatwg.org/multipage/media.html#event-media-canplay\n   */\n  onCanPlay?: AttrEventHandler<Event, T>;\n  \"on-canplay\"?: this[\"onCanPlay\"];\n  oncanplay?: AttrString;\n\n  /**\n   * Fires when the user agent can play through the media data without having to stop for further buffering of content.\n   * @see https://html.spec.whatwg.org/multipage/media.html#event-media-canplaythrough\n   */\n  onCanPlayThrough?: AttrEventHandler<Event, T>;\n  \"on-canplaythrough\"?: this[\"onCanPlayThrough\"];\n  oncanplaythrough?: AttrString;\n\n  /**\n   * Fired when the form elements value is modified.\n   * @see https://html.spec.whatwg.org/multipage/indices.html#event-change\n   */\n  onChange?: AttrEventHandler<Event, T>;\n  \"on-change\"?: this[\"onChange\"];\n  onchange?: AttrString;\n\n  /**\n   * Normally a mouse event; also synthetically fired at an element before its activation behavior is run,\n   * when an element is activated from a non-pointer input device (e.g. a keyboard).\n   * @see https://w3c.github.io/uievents/#event-type-click\n   */\n  onClick?: AttrEventHandler<PointerEvent, T>;\n  \"on-click\"?: this[\"onClick\"];\n  onclick?: AttrString;\n\n  /**\n   * Fired at dialog elements when they are closed\n   * @see https://html.spec.whatwg.org/multipage/indices.html#event-close\n   */\n  onClose?: AttrEventHandler<Event, T>;\n  \"on-close\"?: this[\"onClose\"];\n  onclose?: AttrString;\n\n  /**\n   * Fired when a text composition system such as an input method editor completes or cancels the current composition session.\n   * @see https://w3c.github.io/uievents/#event-type-compositionend\n   */\n  onCompositionEnd?: AttrEventHandler<CompositionEvent, T>;\n  \"on-compositionend\"?: this[\"onCompositionEnd\"];\n\n  /**\n   * Fired when a text composition system such as an input method editor starts a new composition session.\n   * @see https://w3c.github.io/uievents/#event-type-compositionstart\n   */\n  onCompositionStart?: AttrEventHandler<CompositionEvent, T>;\n  \"on-compositionstart\"?: this[\"onCompositionStart\"];\n\n  /**\n   * Fired when a new character is received in the context of a text composition session controlled by a text\n   * composition system such as an input method editor.\n   * @see https://w3c.github.io/uievents/#event-type-compositionupdate\n   */\n  onCompositionUpdate?: AttrEventHandler<CompositionEvent, T>;\n  \"on-compositionupdate\"?: this[\"onCompositionUpdate\"];\n\n  /**\n   * Fired when the corresponding CanvasRenderingContext2D or OffscreenCanvasRenderingContext2D is lost\n   * @see https://html.spec.whatwg.org/multipage/indices.html#event-contextlost\n   */\n  onContextLost?: AttrEventHandler<Event, T>;\n  \"on-contextlost\"?: this[\"onContextLost\"];\n  oncontextlost?: AttrString;\n\n  /**\n   * Fired when the user attempts to open a context menu.\n   * This event is typically triggered by clicking the right mouse button, or by pressing the context menu key.\n   * @see https://w3c.github.io/uievents/#event-type-contextmenu\n   */\n  onContextMenu?: AttrEventHandler<PointerEvent, T>;\n  \"on-contextmenu\"?: this[\"onContextMenu\"];\n  oncontextmenu?: AttrString;\n\n  /**\n   * Fired when the corresponding CanvasRenderingContext2D or OffscreenCanvasRenderingContext2D is restored after being lost\n   * @see https://html.spec.whatwg.org/multipage/indices.html#event-contextrestored\n   */\n  onContextRestored?: AttrEventHandler<Event, T>;\n  \"on-contextrestored\"?: this[\"onContextRestored\"];\n  oncontextrestored?: AttrString;\n\n  /**\n   * Fired when the user copies the content of an element.\n   * @see https://w3c.github.io/clipboard-apis/#clipboard-event-copy\n   */\n  onCopy?: AttrEventHandler<ClipboardEvent, T>;\n  \"on-copy\"?: this[\"onCopy\"];\n  oncopy?: AttrString;\n\n  /**\n   * Fired when one or more cues in the track have become active or stopped being active.\n   * @see https://html.spec.whatwg.org/multipage/media.html#event-media-cuechange\n   */\n  onCueChange?: AttrEventHandler<Event, T>;\n  \"on-cuechange\"?: this[\"onCueChange\"];\n  oncuechange?: AttrString;\n\n  /**\n   * Fired when the user cuts the content of an element.\n   * @see https://w3c.github.io/clipboard-apis/#clipboard-event-cut\n   */\n  onCut?: AttrEventHandler<ClipboardEvent, T>;\n  \"on-cut\"?: this[\"onCut\"];\n  oncut?: AttrString;\n\n  /**\n   * Fired when the user double-clicks on an element.\n   * @see https://w3c.github.io/uievents/#event-type-dblclick\n   */\n  onDblClick?: AttrEventHandler<MouseEvent, T>;\n  \"on-dblclick\"?: this[\"onDblClick\"];\n  ondblclick?: AttrString;\n\n  /**\n   * Fired every few hundred milliseconds as an element or text selection is being dragged by the user.\n   * @see https://html.spec.whatwg.org/multipage/dnd.html#event-dnd-drag\n   */\n  onDrag?: AttrEventHandler<DragEvent, T>;\n  \"on-drag\"?: this[\"onDrag\"];\n  ondrag?: AttrString;\n\n  /**\n   * Fired when a drag operation is being ended (by releasing a mouse button or hitting the escape key).\n   * @see https://html.spec.whatwg.org/multipage/dnd.html#event-dnd-dragend\n   */\n  onDragEnd?: AttrEventHandler<DragEvent, T>;\n  \"on-dragend\"?: this[\"onDragEnd\"];\n  ondragend?: AttrString;\n\n  /**\n   * Fired when a drag operation is being ended (by releasing a mouse button or hitting the escape key).\n   * @see https://html.spec.whatwg.org/multipage/dnd.html#event-dnd-dragenter\n   */\n  onDragEnter?: AttrEventHandler<DragEvent, T>;\n  \"on-dragenter\"?: this[\"onDragEnter\"];\n  ondragenter?: AttrString;\n\n  /**\n   * Fired when a dragged element or text selection leaves a valid drop target.\n   * @see https://html.spec.whatwg.org/multipage/dnd.html#event-dnd-dragleave\n   */\n  onDragLeave?: AttrEventHandler<DragEvent, T>;\n  \"on-dragleave\"?: this[\"onDragLeave\"];\n  ondragleave?: AttrString;\n\n  /**\n   * Fired an element or text selection is being dragged over a valid drop target (every few hundred milliseconds).\n   * @see https://html.spec.whatwg.org/multipage/dnd.html#event-dnd-dragover\n   */\n  onDragOver?: AttrEventHandler<DragEvent, T>;\n  \"on-dragover\"?: this[\"onDragOver\"];\n  ondragover?: AttrString;\n\n  /**\n   * Fired when an element or text selection has started being dragged.\n   * @see https://html.spec.whatwg.org/multipage/dnd.html#event-dnd-dragstart\n   */\n  onDragStart?: AttrEventHandler<DragEvent, T>;\n  \"on-dragstart\"?: this[\"onDragStart\"];\n  ondragstart?: AttrString;\n\n  /**\n   * Fired when an element or text selection is dropped on a valid drop target.\n   * @see https://html.spec.whatwg.org/multipage/dnd.html#event-dnd-drop\n   */\n  onDrop?: AttrEventHandler<DragEvent, T>;\n  \"on-drop\"?: this[\"onDrop\"];\n  ondrop?: AttrString;\n\n  /**\n   * Fired when the duration attribute of a media element has just been updated.\n   * @see https://html.spec.whatwg.org/multipage/media.html#event-media-durationchange\n   */\n  onDurationChange?: AttrEventHandler<Event, T>;\n  \"on-durationchange\"?: this[\"onDurationChange\"];\n  ondurationchange?: AttrString;\n\n  /**\n   * Fired when a media element's playback stops because its source data has been fully consumed and not looped.\n   * @see https://html.spec.whatwg.org/multipage/media.html#event-media-emptied\n   */\n  onEmptied?: AttrEventHandler<Event, T>;\n  \"on-emptied\"?: this[\"onEmptied\"];\n  onemptied?: AttrString;\n\n  /**\n   * Fired when an encrypted media stream is encountered and the user agent recognizes the stream's encryption scheme.\n   * @see https://w3c.github.io/encrypted-media/#dom-evt-encrypted\n   */\n  onEncrypted?: AttrEventHandler<MediaEncryptedEvent, T>;\n  \"on-encrypted\"?: this[\"onEncrypted\"];\n\n  /**\n   * Fired when playback of a media element reaches its end, either because the media has reached its end or the loop attribute is not set.\n   * @see https://html.spec.whatwg.org/multipage/media.html#event-media-ended\n   */\n  onEnded?: AttrEventHandler<Event, T>;\n  \"on-ended\"?: this[\"onEnded\"];\n  onended?: AttrString;\n\n  /**\n   * Fired when an error occurs while fetching an external resource, such as a script, image, or video.\n   * @see https://html.spec.whatwg.org/multipage/indices.html#event-error\n   */\n  onError?: AttrEventHandler<ErrorEvent | Event, T>;\n  \"on-error\"?: this[\"onError\"];\n  onerror?: AttrString;\n\n  /**\n   * Fired when an element receives focus, either by user input or via script.\n   * @see https://html.spec.whatwg.org/multipage/interaction.html#event-focus\n   */\n  onFocus?: AttrEventHandler<FocusEvent, T>;\n  \"on-focus\"?: this[\"onFocus\"];\n  onfocus?: AttrString;\n\n  /**\n   * Fires when an element has received focus, after the focus event. The two events differ in that focusin bubbles, while focus does not.\n   * @see HTMLAttributes.onFocus\n   * @see https://w3c.github.io/uievents/#event-type-focusin\n   */\n  onFocusIn?: AttrEventHandler<FocusEvent, T>;\n  \"on-focusin\"?: this[\"onFocusIn\"];\n\n  /**\n   * Fires when an element has lost focus, after the blur event. The two events differ in that focusout bubbles, while blur does not.\n   * @see HTMLAttributes.onBlur\n   * @see https://w3c.github.io/uievents/#event-type-focusout\n   */\n  onFocusOut?: AttrEventHandler<FocusEvent, T>;\n  \"on-focusout\"?: this[\"onFocusOut\"];\n\n  /**\n   * Fired at a form element when it is constructing the entry list\n   * @see https://html.spec.whatwg.org/multipage/indices.html#event-formdata\n   */\n  onFormData?: AttrEventHandler<FormDataEvent, T>;\n  \"on-formdata\"?: this[\"onFormData\"];\n  onformdata?: AttrString;\n\n  /**\n   * Fired immediately after an Element switches into or out of fullscreen mode.\n   * @see https://fullscreen.spec.whatwg.org/#handler-document-onfullscreenchange\n   */\n  onFullscreenChange?: AttrEventHandler<Event, T>;\n  \"on-fullscreenchange\"?: this[\"onFullscreenChange\"];\n\n  /**\n   * Fired when the browser cannot switch to fullscreen mode.\n   * @see https://fullscreen.spec.whatwg.org/#handler-document-onfullscreenerror\n   */\n  onFullscreenError?: AttrEventHandler<Event, T>;\n  \"on-fullscreenerror\"?: this[\"onFullscreenError\"];\n\n  /**\n   * Fired when an element captures a pointer using setPointerCapture().\n   *\n   * @see Element.setPointerCapture\n   * @see https://w3c.github.io/pointerevents/#the-gotpointercapture-event\n   */\n  onGotPointerCapture?: AttrEventHandler<PointerEvent, T>;\n  \"on-gotpointercapture\"?: this[\"onGotPointerCapture\"];\n\n  /**\n   * Fired when the form element's value changes, as a result of user input.\n   * @see https://w3c.github.io/uievents/#event-type-input\n   */\n  onInput?: AttrEventHandler<InputEvent, T>;\n  \"on-input\"?: this[\"onInput\"];\n  oninput?: AttrString;\n\n  /**\n   * Fired when a form element is found to be invalid during submission or constraint validation.\n   * @see https://html.spec.whatwg.org/multipage/indices.html#event-invalid\n   */\n  onInvalid?: AttrEventHandler<Event, T>;\n  \"on-invalid\"?: this[\"onInvalid\"];\n  oninvalid?: AttrString;\n\n  /**\n   * Fired when a key is first pressed down.\n   * @see https://w3c.github.io/uievents/#event-type-keydown\n   */\n  onKeyDown?: AttrEventHandler<KeyboardEvent, T>;\n  \"on-keydown\"?: this[\"onKeyDown\"];\n  onkeydown?: AttrString;\n\n  /**\n   * Fired when a key is pressed down and then released, while the element has focus.\n   * @see https://w3c.github.io/uievents/#event-type-keypress\n   */\n  onKeyPress?: AttrEventHandler<KeyboardEvent, T>;\n  \"on-keypress\"?: this[\"onKeyPress\"];\n  onkeypress?: AttrString;\n\n  /**\n   * Fired when a key is released after being pressed down.\n   * @see https://w3c.github.io/uievents/#event-type-keyup\n   */\n  onKeyUp?: AttrEventHandler<KeyboardEvent, T>;\n  \"on-keyup\"?: this[\"onKeyUp\"];\n  onkeyup?: AttrString;\n\n  /**\n   * Fired when an element or resource, such as an image, has completely loaded.\n   * @see https://html.spec.whatwg.org/multipage/indices.html#event-load\n   */\n  onLoad?: AttrEventHandler<Event, T>;\n  \"on-load\"?: this[\"onLoad\"];\n  onload?: AttrString;\n\n  /**\n   * Fired when the user agent can render the media data at the current playback position for the first time.\n   * @see https://html.spec.whatwg.org/multipage/media.html#event-media-loadeddata\n   */\n  onLoadedData?: AttrEventHandler<Event, T>;\n  \"on-loadeddata\"?: this[\"onLoadedData\"];\n  onloadeddata?: AttrString;\n\n  /**\n   * Fired when the user agent has just determined the duration and dimensions of the media resource.\n   * @see https://html.spec.whatwg.org/multipage/media.html#event-media-loadedmetadata\n   */\n  onLoadedMetadata?: AttrEventHandler<Event, T>;\n  \"on-loadedmetadata\"?: this[\"onLoadedMetadata\"];\n  onloadedmetadata?: AttrString;\n\n  /**\n   * Fired when the user agent begins looking for media data, before the media has begun to load.\n   * @see https://html.spec.whatwg.org/multipage/media.html#event-media-loadstart\n   */\n  onLoadStart?: AttrEventHandler<Event, T>;\n  \"on-loadstart\"?: this[\"onLoadStart\"];\n  onloadstart?: AttrString;\n\n  /**\n   * Fired when a captured pointer is released.\n   * @see https://w3c.github.io/pointerevents/#dfn-lostpointercapture\n   */\n  onLostPointerCapture?: AttrEventHandler<PointerEvent, T>;\n  \"on-lostpointercapture\"?: this[\"onLostPointerCapture\"];\n\n  /**\n   * Fired when a pointing device button is pressed down over an element.\n   * @see https://w3c.github.io/uievents/#event-type-mousedown\n   */\n  onMouseDown?: AttrEventHandler<MouseEvent, T>;\n  \"on-mousedown\"?: this[\"onMouseDown\"];\n  onmousedown?: AttrString;\n\n  /**\n   * Fired when a pointing device is moved onto the element.\n   * @see https://w3c.github.io/uievents/#event-type-mouseenter\n   */\n  onMouseEnter?: AttrEventHandler<MouseEvent, T>;\n  \"on-mouseenter\"?: this[\"onMouseEnter\"];\n  onmouseenter?: AttrString;\n\n  /**\n   * Fired when a pointing device is moved off the element.\n   * @see https://w3c.github.io/uievents/#event-type-mouseleave\n   */\n  onMouseLeave?: AttrEventHandler<MouseEvent, T>;\n  \"on-mouseleave\"?: this[\"onMouseLeave\"];\n  onmouseleave?: AttrString;\n\n  /**\n   * Fired when a pointing device is moved over an element.\n   * @see https://w3c.github.io/uievents/#event-type-mousemove\n   */\n  onMouseMove?: AttrEventHandler<MouseEvent, T>;\n  \"on-mousemove\"?: this[\"onMouseMove\"];\n  onmousemove?: AttrString;\n\n  /**\n   * Fired when a pointing device is moved off the element or off one of its children.\n   * @see https://w3c.github.io/uievents/#event-type-mouseout\n   */\n  onMouseOut?: AttrEventHandler<MouseEvent, T>;\n  \"on-mouseout\"?: this[\"onMouseOut\"];\n  onmouseout?: AttrString;\n\n  /**\n   * Fired when a pointing device is moved onto the element or onto one of its children.\n   * @see https://w3c.github.io/uievents/#event-type-mouseover\n   */\n  onMouseOver?: AttrEventHandler<MouseEvent, T>;\n  \"on-mouseover\"?: this[\"onMouseOver\"];\n  onmouseover?: AttrString;\n\n  /**\n   * Fired when a pointing device button is released over an element.\n   * @see https://w3c.github.io/uievents/#event-type-mouseup\n   */\n  onMouseUp?: AttrEventHandler<MouseEvent, T>;\n  \"on-mouseup\"?: this[\"onMouseUp\"];\n  onmouseup?: AttrString;\n\n  /**\n   * Fired when the user has completed a \"paste\" action, usually through a context menu or keyboard shortcut.\n   * @see https://w3c.github.io/clipboard-apis/#clipboard-event-paste\n   */\n  onPaste?: AttrEventHandler<ClipboardEvent, T>;\n  \"on-paste\"?: this[\"onPaste\"];\n  onpaste?: AttrString;\n\n  /**\n   * Fired when playback of a media element is paused.\n   * @see https://html.spec.whatwg.org/multipage/media.html#event-media-pause\n   */\n  onPause?: AttrEventHandler<Event, T>;\n  \"on-pause\"?: this[\"onPause\"];\n  onpause?: AttrString;\n\n  /**\n   * Fired when playback of a media element is ready to start after having been paused.\n   * @see https://html.spec.whatwg.org/multipage/media.html#event-media-play\n   */\n  onPlay?: AttrEventHandler<Event, T>;\n  \"on-play\"?: this[\"onPlay\"];\n  onplay?: AttrString;\n\n  /**\n   * Fired when playback of a media element is ready to start, or when playback is resumed after a pause event.\n   * @see https://html.spec.whatwg.org/multipage/media.html#event-media-playing\n   */\n  onPlaying?: AttrEventHandler<Event, T>;\n  \"on-playing\"?: this[\"onPlaying\"];\n  onplaying?: AttrString;\n\n  /**\n   * Fired when the pointing device's hardware triggers a cancellation of the pointer event, such as due to a system event.\n   * @see https://w3c.github.io/pointerevents/#the-pointercancel-event\n   */\n  onPointerCancel?: AttrEventHandler<PointerEvent, T>;\n  \"on-pointercancel\"?: this[\"onPointerCancel\"];\n\n  /**\n   * Fired when a pointing device's button is pressed down on an element.\n   * @see https://w3c.github.io/pointerevents/#the-pointerdown-event\n   */\n  onPointerDown?: AttrEventHandler<PointerEvent, T>;\n  \"on-pointerdown\"?: this[\"onPointerDown\"];\n\n  /**\n   * Fired when a pointing device is moved onto the element.\n   * @see https://w3c.github.io/pointerevents/#the-pointerenter-event\n   */\n  onPointerEnter?: AttrEventHandler<PointerEvent, T>;\n  \"on-pointerenter\"?: this[\"onPointerEnter\"];\n\n  /**\n   * Fired when a pointing device is moved off the element.\n   * @see https://w3c.github.io/pointerevents/#the-pointerleave-event\n   */\n  onPointerLeave?: AttrEventHandler<PointerEvent, T>;\n  \"on-pointerleave\"?: this[\"onPointerLeave\"];\n\n  /**\n   * Fired when a pointing device is moved over an element.\n   * @see https://w3c.github.io/pointerevents/#the-pointermove-event\n   */\n  onPointerMove?: AttrEventHandler<PointerEvent, T>;\n  \"on-pointermove\"?: this[\"onPointerMove\"];\n\n  /**\n   * Fired when a pointing device is moved off the element or off one of its children.\n   * @see https://w3c.github.io/pointerevents/#the-pointerout-event\n   */\n  onPointerOut?: AttrEventHandler<PointerEvent, T>;\n  \"on-pointerout\"?: this[\"onPointerOut\"];\n\n  /**\n   * Fired when a pointing device is moved onto the element or onto one of its children.\n   * @see https://w3c.github.io/pointerevents/#the-pointerover-event\n   */\n  onPointerOver?: AttrEventHandler<PointerEvent, T>;\n  \"on-pointerover\"?: this[\"onPointerOver\"];\n\n  /**\n   * Fired when a pointing device's button is released over an element.\n   * @see https://w3c.github.io/pointerevents/#the-pointerup-event\n   */\n  onPointerUp?: AttrEventHandler<PointerEvent, T>;\n  \"on-pointerup\"?: this[\"onPointerUp\"];\n\n  /**\n   * Fired when the user agent is downloading media data or resources, to indicate progress.\n   * @see https://html.spec.whatwg.org/multipage/media.html#event-media-progress\n   */\n  onProgress?: AttrEventHandler<Event, T>;\n  \"on-progress\"?: this[\"onProgress\"];\n  onprogress?: AttrString;\n\n  /**\n   * Fired when the playback rate of a media element has changed.\n   * @see https://html.spec.whatwg.org/multipage/media.html#event-media-ratechange\n   */\n  onRateChange?: AttrEventHandler<Event, T>;\n  \"on-ratechange\"?: this[\"onRateChange\"];\n  onratechange?: AttrString;\n\n  /**\n   * Fired when a form is reset, either by user interaction or through a script.\n   * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#event-reset\n   */\n  onReset?: AttrEventHandler<Event, T>;\n  \"on-reset\"?: this[\"onReset\"];\n  onreset?: AttrString;\n\n  /**\n   * Fired at the Window when the viewport is resized. Fired at VisualViewport when the visual viewport is resized or the layout viewport is scaled.\n   * @see https://drafts.csswg.org/cssom-view/#eventdef-window-resize\n   */\n  onResize?: AttrEventHandler<Event, T>;\n  \"on-resize\"?: this[\"onResize\"];\n  onresize?: AttrString;\n\n  /**\n   * Fired when an element's scrollbar is being scrolled.\n   * @see https://drafts.csswg.org/cssom-view/#eventdef-document-scroll\n   */\n  onScroll?: AttrEventHandler<Event, T>;\n  \"on-scroll\"?: this[\"onScroll\"];\n  onscroll?: AttrString;\n\n  /**\n   * Fired when element scrolling has completed. Scrolling is considered completed when the scroll position has no more pending updates and the user has completed their gesture.\n   * @see https://drafts.csswg.org/cssom-view/#eventdef-document-scrollend\n   */\n  onScrollEnd?: AttrEventHandler<Event, T>;\n  \"on-scrollend\"?: this[\"onScrollEnd\"];\n  onscrollend?: AttrString;\n\n  /**\n   * Fired when a security policy violation occurs, such as when an attempted resource load is blocked due to the security settings of the browser or when an inline script violates the Content Security Policy (CSP) of the page.\n   * @see https://w3c.github.io/webappsec-csp/#eventdef-globaleventhandlers-securitypolicyviolation\n   */\n  onSecurityPolicyViolation?: AttrEventHandler<SecurityPolicyViolationEvent, T>;\n  \"on-securitypolicyviolation\"?: this[\"onSecurityPolicyViolation\"];\n  onsecuritypolicyviolation?: AttrString;\n\n  /**\n   * Fired when a seek operation on a media element completes.\n   * @see https://html.spec.whatwg.org/multipage/media.html#event-media-seeked\n   */\n  onSeeked?: AttrEventHandler<Event, T>;\n  \"on-seeked\"?: this[\"onSeeked\"];\n  onseeked?: AttrString;\n\n  /**\n   * Fired when a seek operation on a media element begins.\n   * @see https://html.spec.whatwg.org/multipage/media.html#event-media-seeking\n   */\n  onSeeking?: AttrEventHandler<Event, T>;\n  \"on-seeking\"?: this[\"onSeeking\"];\n  onseeking?: AttrString;\n\n  /**\n   * Fired when some text is selected within an input or textarea element.\n   * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#event-select\n   */\n  onSelect?: AttrEventHandler<Event, T>;\n  \"on-select\"?: this[\"onSelect\"];\n  onselect?: AttrString;\n\n  /**\n   * Fired when a <slot> element's distributed nodes change.\n   * @see https://dom.spec.whatwg.org/#eventdef-htmlslotelement-slotchange\n   */\n  onSlotChange?: AttrEventHandler<Event, T>;\n  \"on-slotchange\"?: this[\"onSlotChange\"];\n  onslotchange?: AttrString;\n\n  /**\n   * Fired when a media element's data downloading has been stalled due to an issue, such as a lack of data.\n   * @see https://html.spec.whatwg.org/multipage/media.html#event-media-stalled\n   */\n  onStalled?: AttrEventHandler<Event, T>;\n  \"on-stalled\"?: this[\"onStalled\"];\n  onstalled?: AttrString;\n\n  /**\n   * Fired at a form element when it is submitted\n   * @see https://html.spec.whatwg.org/multipage/indices.html#event-submit\n   */\n  onSubmit?: AttrEventHandler<SubmitEvent, T>;\n  \"on-submit\"?: this[\"onSubmit\"];\n  onsubmit?: AttrString;\n\n  /**\n   * Fired when the user agent intentionally does not download media data.\n   * @see https://html.spec.whatwg.org/multipage/media.html#event-media-suspend\n   */\n  onSuspend?: AttrEventHandler<Event, T>;\n  \"on-suspend\"?: this[\"onSuspend\"];\n  onsuspend?: AttrString;\n\n  /**\n   * Fired when the current playback position of a media element changes as part of normal playback or due to a seek operation.\n   * @see https://html.spec.whatwg.org/multipage/media.html#event-media-timeupdate\n   */\n  onTimeUpdate?: AttrEventHandler<Event, T>;\n  \"on-timeupdate\"?: this[\"onTimeUpdate\"];\n  ontimeupdate?: AttrString;\n\n  /**\n   * Fired at details elements when they open or close; fired on elements with the popover attribute when they are transitioning between showing and hidden\n   * @see https://html.spec.whatwg.org/multipage/indices.html#event-toggle\n   */\n  onToggle?: AttrEventHandler<Event, T>;\n  \"on-toggle\"?: this[\"onToggle\"];\n  ontoggle?: AttrString;\n\n  /**\n   * Fired when a touch event is interrupted, such as by a modal window or an incoming phone call.\n   * @see https://w3c.github.io/touch-events/#event-touchcancel\n   */\n  onTouchCancel?: AttrEventHandler<TouchEvent, T>;\n  \"on-touchcancel\"?: this[\"onTouchCancel\"];\n\n  /**\n   * Fired when a finger is lifted from a touch surface.\n   * @see https://w3c.github.io/touch-events/#event-touchend\n   */\n  onTouchEnd?: AttrEventHandler<TouchEvent, T>;\n  \"on-touchend\"?: this[\"onTouchEnd\"];\n\n  /**\n   * Fired when a finger is moved along a touch surface.\n   * @see https://w3c.github.io/touch-events/#event-touchmove\n   */\n  onTouchMove?: AttrEventHandler<TouchEvent, T>;\n  \"on-touchmove\"?: this[\"onTouchMove\"];\n\n  /**\n   * Fired when a finger is placed on a touch surface.\n   * @see https://w3c.github.io/touch-events/#event-touchstart\n   */\n  onTouchStart?: AttrEventHandler<TouchEvent, T>;\n  \"on-touchstart\"?: this[\"onTouchStart\"];\n\n  /**\n   * Fired when a CSS transition is canceled.\n   * @see https://drafts.csswg.org/css-transitions/#transitioncancel\n   */\n  onTransitionCancel?: AttrEventHandler<TransitionEvent, T>;\n  \"on-transitioncancel\"?: this[\"onTransitionCancel\"];\n\n  /**\n   * Fired when a CSS transition has completed.\n   * @see https://drafts.csswg.org/css-transitions/#transitionend\n   */\n  onTransitionEnd?: AttrEventHandler<TransitionEvent, T>;\n  \"on-transitionend\"?: this[\"onTransitionEnd\"];\n\n  /**\n   * Fired when a CSS transition is first created, i.e. before any transition-delay has begun.\n   * @see https://drafts.csswg.org/css-transitions/#transitionrun\n   */\n  onTransitionRun?: AttrEventHandler<TransitionEvent, T>;\n  \"on-transitionrun\"?: this[\"onTransitionRun\"];\n\n  /**\n   * Fired when a CSS transition has actually started, i.e., after any transition-delay has ended.\n   * @see https://drafts.csswg.org/css-transitions/#transitionstart\n   */\n  onTransitionStart?: AttrEventHandler<TransitionEvent, T>;\n  \"on-transitionstart\"?: this[\"onTransitionStart\"];\n\n  /**\n   * Fired when the volume level or muted state of a media element changes.\n   * @see https://html.spec.whatwg.org/multipage/media.html#event-media-volumechange\n   */\n  onVolumeChange?: AttrEventHandler<Event, T>;\n  \"on-volumechange\"?: this[\"onVolumeChange\"];\n  onvolumechange?: AttrString;\n\n  /**\n   * Fired when a media element is waiting for data to continue playback, such as when buffering.\n   * @see https://html.spec.whatwg.org/multipage/media.html#event-media-waiting\n   */\n  onWaiting?: AttrEventHandler<Event, T>;\n  \"on-waiting\"?: this[\"onWaiting\"];\n  onwaiting?: AttrString;\n\n  /**\n   * Fired when a user rotates a mouse wheel or similar input device over an element.\n   * @see https://w3c.github.io/uievents/#event-type-wheel\n   */\n  onWheel?: AttrEventHandler<WheelEvent, T>;\n  \"on-wheel\"?: this[\"onWheel\"];\n  onwheel?: AttrString;\n\n  /**\n   * Identifies the currently active element when DOM focus is on a composite widget, textbox, group, or application.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-activedescendant\n   */\n  \"aria-activedescendant\"?: AttrString;\n  /**\n   * Indicates whether assistive technologies will present all, or only parts of, the changed region based on the change notifications defined by the aria-relevant attribute.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-atomic\n   * @see aria-relevant\n   */\n  \"aria-atomic\"?: AttrBooleanString;\n  /**\n   * Indicates whether inputting text could trigger display of one or more predictions of the user's intended value for an input and specifies how predictions would be\n   * presented if they are made.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-autocomplete\n   */\n  \"aria-autocomplete\"?: AttrMissing | \"both\" | \"inline\" | \"list\" | \"none\";\n  /**\n   * Indicates an element is being modified and that assistive technologies MAY want to wait until the modifications are complete before exposing them to the user.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-busy\n   */\n  \"aria-busy\"?: AttrBooleanString;\n  /**\n   * Indicates the current \"checked\" state of checkboxes, radio buttons, and other widgets.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-checked\n   */\n  \"aria-checked\"?: AttrTriState;\n  /**\n   * Defines the total number of columns in a table, grid, or treegrid.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-colcount\n   */\n  \"aria-colcount\"?: AttrStringOrNumber;\n  /**\n   * Defines an element's column index or position with respect to the total number of columns within a table, grid, or treegrid.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-colindex\n   */\n  \"aria-colindex\"?: AttrStringOrNumber;\n  /**\n   * Defines a human readable text alternative of aria-colindex.\n   * @see https://w3c.github.io/aria/#aria-colindextext\n   * @see aria-colindex\n   */\n  \"aria-colindextext\"?: AttrString;\n  /**\n   * Defines the number of columns spanned by a cell or gridcell within a table, grid, or treegrid.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-colspan\n   */\n  \"aria-colspan\"?: AttrStringOrNumber;\n  /**\n   * Identifies the element (or elements) whose contents or presence are controlled by the current element.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-controls\n   * @see aria-owns\n   */\n  \"aria-controls\"?: AttrString;\n  /**\n   * Indicates the element that represents the current item within a container or set of related elements.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-current\n   */\n  \"aria-current\"?:\n    | AttrBooleanString\n    | \"date\"\n    | \"location\"\n    | \"page\"\n    | \"step\"\n    | \"time\"\n    | \"true\";\n  /**\n   * Identifies the element (or elements) that describes the object.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-describedby\n   * @see aria-labelledby\n   */\n  \"aria-describedby\"?: AttrString;\n  /**\n   * Defines a string value that describes or annotates the current element.\n   * @see https://w3c.github.io/aria/#aria-description\n   * @see aria-describedby\n   */\n  \"aria-description\"?: AttrString;\n  /**\n   * Identifies the element that provides a detailed, extended description for the object.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-details\n   * @see aria-describedby\n   */\n  \"aria-details\"?: AttrString;\n  /**\n   * Indicates that the element is perceivable but disabled, so it is not editable or otherwise operable.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-disabled\n   */\n  \"aria-disabled\"?: AttrBooleanString;\n  /**\n   * @deprecated Indicates what functions can be performed when a dragged object is released on the drop target.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-dropeffect\n   * */\n  \"aria-dropeffect\"?:\n    | AttrMissing\n    | \"copy\"\n    | \"execute\"\n    | \"link\"\n    | \"move\"\n    | \"none\"\n    | \"popup\";\n  /**\n   * Identifies the element that provides an error message for the object.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-errormessage\n   * @see aria-invalid\n   * @see aria-describedby\n   */\n  \"aria-errormessage\"?: AttrString;\n  /**\n   * Indicates whether the element, or another grouping element it controls, is currently expanded or collapsed.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-expanded\n   * @see aria-controls\n   */\n  \"aria-expanded\"?: AttrBooleanString;\n  /**\n   * Identifies the next element (or elements) in an alternate reading order of content which, at the user's discretion,\n   * allows assistive technology to override the general default of reading in document source order.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-flowto\n   */\n  \"aria-flowto\"?: AttrString;\n  /**\n   * @deprecated Indicates an element's \"grabbed\" state in a drag-and-drop operation.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-grabbed\n   */\n  \"aria-grabbed\"?: AttrBooleanString;\n  /**\n   * Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by an element.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-haspopup\n   */\n  \"aria-haspopup\"?:\n    | AttrBooleanString\n    | \"dialog\"\n    | \"grid\"\n    | \"listbox\"\n    | \"menu\"\n    | \"tree\";\n  /**\n   * Indicates whether the element is exposed to an accessibility API.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-hidden\n   * @see aria-disabled\n   */\n  \"aria-hidden\"?: AttrBooleanString;\n  /**\n   * Indicates the entered value does not conform to the format expected by the application.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-invalid\n   * @see aria-errormessage\n   */\n  \"aria-invalid\"?: AttrBooleanString | \"grammar\" | \"spelling\";\n  /**\n   * Indicates keyboard shortcuts that an author has implemented to activate or give focus to an element.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-keyshortcuts\n   */\n  \"aria-keyshortcuts\"?: AttrString;\n  /**\n   * Defines a string value that labels the current element.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-label\n   * @see aria-labelledby\n   */\n  \"aria-label\"?: AttrString;\n  /**\n   * Identifies the element (or elements) that labels the current element.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-labelledby\n   * @see aria-describedby\n   */\n  \"aria-labelledby\"?: AttrString;\n  /**\n   * Defines the hierarchical level of an element within a structure.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-level\n   */\n  \"aria-level\"?: AttrString;\n  /**\n   * Indicates that an element will be updated, and describes the types of updates the user agents, assistive technologies,\n   * and user can expect from the live region.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-live\n   */\n  \"aria-live\"?: AttrMissing | \"assertive\" | \"off\" | \"polite\";\n  /**\n   * Indicates whether an element is modal when displayed.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-modal\n   */\n  \"aria-modal\"?: AttrBooleanString;\n  /**\n   * Indicates whether a text box accepts multiple lines of input or only a single line.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-multiline\n   */\n  \"aria-multiline\"?: AttrBooleanString;\n  /**\n   * Indicates that the user may select more than one item from the current selectable descendants.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-multiselectable\n   */\n  \"aria-multiselectable\"?: AttrBooleanString;\n  /**\n   * Indicates whether the element's orientation is horizontal, vertical, or unknown/ambiguous.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-orientation\n   */\n  \"aria-orientation\"?: AttrMissing | \"horizontal\" | \"vertical\";\n  /**\n   * Identifies an element (or elements) in order to define a visual, functional, or contextual parent/child relationship\n   * between DOM elements where the DOM hierarchy cannot be used to represent the relationship.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-owns\n   */\n  \"aria-owns\"?: AttrString;\n  /**\n   * Defines a short hint (a word or short phrase) intended to aid the user with data entry when the control has no value.\n   * A hint could be a sample value or a brief description of the expected format.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-placeholder\n   */\n  \"aria-placeholder\"?: AttrString;\n  /**\n   * Defines an element's number or position in the current set of listitems or treeitems.\n   * Not required if all elements in the set are present in the DOM.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-posinset\n   */\n  \"aria-posinset\"?: AttrStringOrNumber;\n  /**\n   * Indicates the current \"pressed\" state of toggle buttons.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-pressed\n   */\n  \"aria-pressed\"?: AttrTriState;\n  /**\n   * Indicates that the element is not editable, but is otherwise operable.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-readonly\n   */\n  \"aria-readonly\"?: AttrBooleanString;\n  /**\n   * Indicates what notifications the user agent will trigger when the accessibility tree within a live region is modified.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-relevant\n   */\n  \"aria-relevant\"?:\n    | AttrMissing\n    | \"additions removals\"\n    | \"additions text\"\n    | \"additions\"\n    | \"all\"\n    | \"removals additions\"\n    | \"removals text\"\n    | \"removals\"\n    | \"text additions\"\n    | \"text removals\"\n    | \"text\";\n  /**\n   * Indicates that user input is required on the element before a form may be submitted.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-required\n   */\n  \"aria-required\"?: AttrBooleanString;\n  /**\n   * Defines a human-readable, author-localized description for the role of an element.\n   */\n  \"aria-roledescription\"?: AttrString;\n  /**\n   * Defines the total number of rows in a table, grid, or treegrid.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-rowcount\n   */\n  \"aria-rowcount\"?: AttrStringOrNumber;\n  /**\n   * Defines an element's row index or position with respect to the total number of rows within a table, grid, or treegrid.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-rowindex\n   */\n  \"aria-rowindex\"?: AttrStringOrNumber;\n  /**\n   * Defines a human readable text alternative of aria-rowindex.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-rowindextext\n   * @see aria-rowindex\n   */\n  \"aria-rowindextext\"?: AttrString;\n  /**\n   * Defines the number of rows spanned by a cell or gridcell within a table, grid, or treegrid.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-rowspan\n   */\n  \"aria-rowspan\"?: AttrStringOrNumber;\n  /**\n   * Indicates the current \"selected\" state of various widgets.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-selected\n   */\n  \"aria-selected\"?: AttrBooleanString;\n  /**\n   * Defines the number of items in the current set of listitems or treeitems.\n   * Not required if all elements in the set are present in the DOM.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-setsize\n   */\n  \"aria-setsize\"?: AttrStringOrNumber;\n  /**\n   * Indicates if items in a table or grid are sorted in ascending or descending order.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-sort\n   */\n  \"aria-sort\"?: \"ascending\" | \"descending\" | \"none\" | \"other\";\n  /**\n   * Defines the maximum allowed value for a range widget.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-valuemax\n   * @see aria-valuenow\n   */\n  \"aria-valuemax\"?: AttrStringOrNumber;\n  /**\n   * Defines the minimum allowed value for a range widget.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-valuemin\n   * @see aria-valuenow\n   */\n  \"aria-valuemin\"?: AttrStringOrNumber;\n  /**\n   * Defines the current value for a range widget.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-valuenow\n   * @see aria-valuetext\n   * @see aria-valuemin\n   * @see aria-valuemax\n   */\n  \"aria-valuenow\"?: AttrStringOrNumber;\n  /**\n   * Defines the human readable text alternative of aria-valuenow for a range widget.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#aria-valuetext\n   * @see aria-valuenow\n   */\n  \"aria-valuetext\"?: AttrString;\n  /**\n   * Defines the ARIA role of an element.\n   * @see https://www.w3.org/TR/wai-aria-1.1/#role_definitions\n   */\n  role?:\n    | AttrMissing\n    | \"alert\"\n    | \"alertdialog\"\n    | \"application\"\n    | \"article\"\n    | \"banner\"\n    | \"button\"\n    | \"cell\"\n    | \"checkbox\"\n    | \"columnheader\"\n    | \"combobox\"\n    | \"complementary\"\n    | \"contentinfo\"\n    | \"definition\"\n    | \"dialog\"\n    | \"directory\"\n    | \"document\"\n    | \"feed\"\n    | \"figure\"\n    | \"form\"\n    | \"grid\"\n    | \"gridcell\"\n    | \"group\"\n    | \"heading\"\n    | \"img\"\n    | \"link\"\n    | \"list\"\n    | \"listbox\"\n    | \"listitem\"\n    | \"log\"\n    | \"main\"\n    | \"marquee\"\n    | \"math\"\n    | \"menu\"\n    | \"menubar\"\n    | \"menuitem\"\n    | \"menuitemcheckbox\"\n    | \"menuitemradio\"\n    | \"meter\"\n    | \"navigation\"\n    | \"none\"\n    | \"note\"\n    | \"option\"\n    | \"presentation\"\n    | \"progressbar\"\n    | \"radio\"\n    | \"radiogroup\"\n    | \"region\"\n    | \"row\"\n    | \"rowgroup\"\n    | \"rowheader\"\n    | \"scrollbar\"\n    | \"search\"\n    | \"searchbox\"\n    | \"separator\"\n    | \"slider\"\n    | \"spinbutton\"\n    | \"status\"\n    | \"switch\"\n    | \"tab\"\n    | \"table\"\n    | \"tablist\"\n    | \"tabpanel\"\n    | \"term\"\n    | \"textbox\"\n    | \"timer\"\n    | \"toolbar\"\n    | \"tooltip\"\n    | \"tree\"\n    | \"treegrid\"\n    | \"treeitem\";\n}\ntype AttrMissing = undefined | null | false;\ntype AttrClass =\n  | AttrMissing\n  | string\n  | AttrClass[]\n  | Record<string, AttrMissing | boolean>;\ntype AttrStyle = AttrMissing | string | Marko.CSS.Properties | AttrStyle[];\ntype AttrCrossOrigin = AttrBoolean | \"anonymous\" | \"use-credentials\";\ntype AttrEventHandler<Event, Target> =\n  | AttrMissing\n  | ((event: Event, target: Target) => unknown);\ntype AttrTarget =\n  | AttrMissing\n  | \"_blank\"\n  | \"_parent\"\n  | \"_self\"\n  | \"_top\"\n  | (string & {});\ntype AttrReferrerPolicy =\n  | AttrMissing\n  | \"no-referrer-when-downgrade\"\n  | \"no-referrer\"\n  | \"origin-when-cross-origin\"\n  | \"origin\"\n  | \"same-origin\"\n  | \"strict-origin-when-cross-origin\"\n  | \"strict-origin\"\n  | \"unsafe-url\";\n/**\n * URL for links, form actions, and citations. Use (string & {}) so any URL is\n * accepted while suggesting common prefixes in autocomplete.\n */\ntype AttrHref =\n  | AttrMissing\n  | \"#\"\n  | \"mailto:\"\n  | \"tel:\"\n  | \"/\"\n  | \"./\"\n  | \"https://\"\n  | \"data:\"\n  | (string & {});\n/**\n * URL for embeddable resources (img, script, iframe, etc.). Use (string & {})\n * so any URL is accepted while suggesting common prefixes in autocomplete.\n */\ntype AttrSrc =\n  | AttrMissing\n  | \"/\"\n  | \"./\"\n  | \"https://\"\n  | \"data:\"\n  | \"blob:\"\n  | (string & {});\n/**\n * MIME type for type, codetype, and enctype attributes. Use (string & {}) so\n * any MIME type is accepted while suggesting common values in autocomplete.\n */\ntype AttrMimeType =\n  | AttrMissing\n  | \"text/html\"\n  | \"text/css\"\n  | \"text/javascript\"\n  | \"application/javascript\"\n  | \"application/json\"\n  | \"application/pdf\"\n  | \"text/plain\"\n  | \"application/x-www-form-urlencoded\"\n  | \"multipart/form-data\"\n  | \"image/png\"\n  | \"image/jpeg\"\n  | \"image/gif\"\n  | \"image/svg+xml\"\n  | \"image/webp\"\n  | \"video/mp4\"\n  | \"video/webm\"\n  | \"audio/mpeg\"\n  | \"audio/webm\"\n  | \"font/woff\"\n  | \"font/woff2\"\n  | (string & {});\n/**\n * File type hint for input accept. Use (string & {}) so any value is accepted\n * while suggesting common MIME wildcards and extensions in autocomplete.\n */\ntype AttrAccept =\n  | AttrMissing\n  | \"image/*\"\n  | \"audio/*\"\n  | \"video/*\"\n  | \"application/pdf\"\n  | \".pdf\"\n  | \".doc\"\n  | \".docx\"\n  | \".jpg\"\n  | \".jpeg\"\n  | \".png\"\n  | \".gif\"\n  | \".webp\"\n  | (string & {});\ntype AttrString = AttrMissing | string;\ntype AttrStringOrNumber = AttrString | number;\ntype AttrBoolean = AttrMissing | boolean;\ntype AttrBooleanOrString = AttrBoolean | string;\ntype AttrBooleanString = AttrMissing | \"false\" | \"true\";\ntype AttrYesNoString = AttrMissing | \"no\" | \"yes\";\ntype AttrTriState = AttrBooleanString | \"mixed\";\ntype AttrOnOff = AttrMissing | \"on\" | \"off\";\ntype AttrAutoComplete =\n  | AttrOnOff\n  | \"shipping\"\n  | \"billing\"\n  | \"name\"\n  | \"honorific-prefix\"\n  | \"given-name\"\n  | \"additional-name\"\n  | \"family-name\"\n  | \"honorific-suffix\"\n  | \"nickname\"\n  | \"username\"\n  | \"new-password\"\n  | \"current-password\"\n  | \"one-time-code\"\n  | \"organization-title\"\n  | \"organization\"\n  | \"street-address\"\n  | \"address-line1\"\n  | \"address-line2\"\n  | \"address-line3\"\n  | \"address-level4\"\n  | \"address-level3\"\n  | \"address-level2\"\n  | \"address-level1\"\n  | \"country\"\n  | \"country-name\"\n  | \"postal-code\"\n  | \"cc-name\"\n  | \"cc-given-name\"\n  | \"cc-additional-name\"\n  | \"cc-family-name\"\n  | \"cc-number\"\n  | \"cc-exp\"\n  | \"cc-exp-month\"\n  | \"cc-exp-year\"\n  | \"cc-csc\"\n  | \"cc-type\"\n  | \"transaction-currency\"\n  | \"transaction-amount\"\n  | \"language\"\n  | \"bday\"\n  | \"bday-day\"\n  | \"bday-month\"\n  | \"bday-year\"\n  | \"sex\"\n  | \"url\"\n  | \"photo\"\n  | \"home\"\n  | \"work\"\n  | \"mobile\"\n  | \"fax\"\n  | \"pager\"\n  | (string & {});\ntype AttrPreserveAspectRatio =\n  | AttrMissing\n  | `${\"none\" | `x${\"Min\" | \"Mid\" | \"Max\"}Y${\"Min\" | \"Mid\" | \"Max\"}`}${\" meet\" | \" slice\" | \"\"}`;\n\ntype AttrFEIn =\n  | AttrMissing\n  | \"SourceGraphic\"\n  | \"SourceAlpha\"\n  | \"BackgroundImage\"\n  | \"BackgroundAlpha\"\n  | \"FillPaint\"\n  | \"StrokePaint\"\n  | (string & {});\n"
  },
  {
    "path": "packages/runtime-tags/translator.js",
    "content": "/**\n * This file exists for tools which do not support the\n * package.json `exports` field (eg old versions of jest).\n *\n * This allows `require(\"marko/translator\")` without issues\n * in those environments.\n */\nmodule.exports = require(\"./dist/translator\");\n"
  },
  {
    "path": "packages/runtime-tags/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfig.json\",\n  \"include\": [\"src\"],\n  \"exclude\": [\"**/__snapshots__\"],\n  \"compilerOptions\": {\n    \"outDir\": \"dist\",\n    \"rootDir\": \"src\",\n    \"tsBuildInfoFile\": \"dist/.tsbuildinfo\"\n  }\n}\n"
  },
  {
    "path": "patches/@babel+generator+7.29.1.patch",
    "content": "diff --git a/node_modules/@babel/generator/lib/generators/marko.js b/node_modules/@babel/generator/lib/generators/marko.js\nnew file mode 100644\nindex 0000000..16c2e02\n--- /dev/null\n+++ b/node_modules/@babel/generator/lib/generators/marko.js\n@@ -0,0 +1,389 @@\n+\"use strict\";\n+\n+const svgElements = new Set([\n+  'circle',\n+  'ellipse',\n+  'line',\n+  'path',\n+  'polygon',\n+  'polyline',\n+  'rect',\n+  'stop',\n+  'use'\n+]);\n+\n+const voidElements = new Set([\n+  'area',\n+  'base',\n+  'br',\n+  'col',\n+  'command',\n+  'embed',\n+  'hr',\n+  'img',\n+  'input',\n+  'keygen',\n+  'link',\n+  'meta',\n+  'param',\n+  'source',\n+  'track',\n+  'wbr'\n+]);\n+\n+function isInlineMarkoNode(node) {\n+  return node && (node.type === 'MarkoText' || node.type === 'MarkoPlaceholder');\n+}\n+\n+exports.MarkoParseError = function MarkoParseError(node) {\n+  this.token(node.source);\n+}\n+exports.MarkoDocumentType = function MarkoDocumentType(node) {\n+  this.token(\"<!\");\n+  this.token(node.value);\n+  this.token(\">\");\n+}\n+exports.MarkoDeclaration = function MarkoDeclaration(node) {\n+  this.token(\"<?\");\n+  this.token(node.value);\n+  this.token(\"?>\");\n+}\n+exports.MarkoCDATA = function MarkoCDATA(node) {\n+  this.token(\"<![CDATA[\");\n+  this.token(node.value);\n+  this.token(\"]]>\");\n+}\n+exports.MarkoComment = function MarkoComment(node) {\n+  this.token(\"<!--\");\n+  this.token(node.value);\n+  this.token(\"-->\");\n+}\n+exports.MarkoPlaceholder = function MarkoPlaceholder(node, parent) {\n+  const isRootLevel = parent.type === \"Program\";\n+\n+  if (isRootLevel) {\n+    this.token(\"-- \");\n+  }\n+  this.token(node.escape ? \"${\" : \"$!{\");\n+  this.print(node.value, true, true);\n+  this.token(\"}\");\n+}\n+exports.MarkoScriptlet = function MarkoScriptlet(node) {\n+  this.token(`${node.static ? (node.target ?? \"static\") : \"$\"} `);\n+\n+  if (\n+    node.body.length === 1 &&\n+    !statementCouldHaveUnenclosedNewline(node.body[0])\n+  ) {\n+    // TODO should determine if node has unenclosed newlines.\n+    this.print(node.body[0], false, true);\n+  } else {\n+    this.token(\"{\");\n+    this.printSequence(node.body, true, true);\n+    this.token(\"}\");\n+  }\n+}\n+exports.MarkoClass = function MarkoClass(node) {\n+  this.token(\"class\");\n+  this.token(\" \");\n+  this.print(node.body, true, true);\n+}\n+exports.MarkoAttribute = function MarkoAttribute(node) {\n+  const value = node.value;\n+\n+  if (!node.default) {\n+    this.token(node.name);\n+\n+    if (node.modifier) {\n+      this.token(\":\");\n+      this.token(node.modifier);\n+    }\n+\n+    if (node.arguments && node.arguments.length) {\n+      this.token(\"(\");\n+      this.printList(node.arguments);\n+      this.token(\")\");\n+    }\n+  }\n+\n+  if (\n+    node.default ||\n+    !(node.value.type === \"BooleanLiteral\" && node.value.value)\n+  ) {\n+    if (\n+      value.type === \"FunctionExpression\" &&\n+      !(value.id || value.async || value.generator)\n+    ) {\n+      this.token(\"(\");\n+      this.printList(value.params);\n+      this.token(\")\");\n+      this.printBlock(value.body);\n+    } else {\n+      this.token(node.bound ? \":=\" : \"=\");\n+      printWithParansIfNeeded.call(this, value);\n+    }\n+  }\n+}\n+exports.MarkoSpreadAttribute = function MarkoSpreadAttribute(node) {\n+  this.token(\"...\");\n+  printWithParansIfNeeded.call(this, node.value);\n+}\n+exports.MarkoText = function MarkoText(node, parent) {\n+  const { value } = node;\n+\n+  const isMultiLine = /[\\r\\n]/g.test(value);\n+  const isRootLevel = parent.type === \"Program\";\n+\n+  if (isRootLevel) {\n+    if (isMultiLine) {\n+      this.token(\"---\\n\");\n+    } else {\n+      this.token(\"-- \");\n+    }\n+  }\n+\n+  this.word(value);\n+\n+  if (isMultiLine && isRootLevel) {\n+    this.token(\"\\n---\");\n+  }\n+}\n+exports.MarkoTagBody = function MarkoTagBody(node) {\n+  this.printSequence(node.body);\n+}\n+exports.MarkoTag = function MarkoTag(node) {\n+  const isDynamicTag = node.name.type !== \"StringLiteral\";\n+  const tagName = !isDynamicTag && node.name.value;\n+  const rawValue = node.rawValue;\n+  let bodyOverride;\n+\n+  if (\n+    tagName === \"style\" &&\n+    /^style(?:\\.[^\\s]+)?\\s*\\{[\\s\\S]*}$/.test(rawValue)\n+  ) {\n+    this.token(rawValue);\n+    return;\n+  }\n+\n+  this.token(\"<\");\n+\n+  if (rawValue) {\n+    this.token(rawValue);\n+  } else {\n+    if (isDynamicTag) {\n+      this.token(\"${\");\n+      this.print(node.name, true, true);\n+      this.token(\"}\");\n+    } else {\n+      this.token(tagName);\n+    }\n+\n+    if (node.typeArguments) {\n+      this.token(\"<\");\n+      this.printList(node.typeArguments.params);\n+      this.token(\">\");\n+    }\n+\n+    if (node.var) {\n+      this.token(\"/\");\n+      this.print(node.var, true, true);\n+\n+      if (node.var.typeAnnotation) {\n+        this.print(node.var.typeAnnotation, true, true);\n+      }\n+    }\n+\n+    if (node.arguments && node.arguments.length) {\n+      this.token(\"(\");\n+      this.printList(node.arguments);\n+      this.token(\")\");\n+    }\n+\n+    if (node.body.params.length) {\n+      if (node.body.typeParameters) {\n+        if (!node.typeArguments) {\n+          this.token(\" \");\n+        }\n+        this.token(\"<\");\n+        this.printList(node.body.typeParameters.params);\n+        this.token(\">\");\n+      }\n+      this.token(\"|\");\n+      this.printList(node.body.params);\n+      this.token(\"|\");\n+    }\n+\n+    let { attributes } = node;\n+    if (attributes.length) {\n+      if (tagName === \"script\") {\n+        for (let i = attributes.length; i--; ) {\n+          const attr = attributes[i];\n+          if (\n+            attr.name === \"value\" &&\n+            (attr.value.type === \"ArrowFunctionExpression\" ||\n+              attr.value.type === \"FunctionExpression\") &&\n+            !(\n+              attr.value.generator ||\n+              attr.value.returnType ||\n+              attr.value.typeParameters\n+            )\n+          ) {\n+            bodyOverride = attributes[i].value.body.body;\n+            attributes = toSpliced(attributes, i);\n+            break;\n+          }\n+        }\n+      }\n+\n+      if (!(attributes && attributes[0] && attributes[0].default)) {\n+        this.token(\" \");\n+      }\n+\n+      this.printJoin(attributes, undefined, undefined, spaceSeparator);\n+    }\n+  }\n+\n+  if (voidElements.has(tagName)) {\n+    this.token(\">\");\n+  } else if (\n+    !(bodyOverride || node.body.body.length || node.attributeTags.length) ||\n+    svgElements.has(tagName)\n+  ) {\n+    this.token(\"/>\");\n+  } else {\n+    this.token(\">\");\n+    const bodyNodes = bodyOverride || zipAttributeTagsAndBody(node);\n+    for (let i = 0; i < bodyNodes.length; i++) {\n+      const node = bodyNodes[i];\n+      if (i > 0 && isInlineMarkoNode(bodyNodes[i - 1]) && isInlineMarkoNode(node)) {\n+        this.print(node, false, true);\n+      } else {\n+        this.newline(1);\n+        this.indent();\n+        this.print(node, false, true);\n+        this.dedent();\n+      }\n+    }\n+    if (bodyNodes.length > 0) this.newline(1);\n+    this.token(\"</\");\n+    if (!isDynamicTag) {\n+      this.token(tagName);\n+    }\n+    this.token(\">\");\n+  }\n+}\n+\n+function spaceSeparator() {\n+  this.token(\" \");\n+}\n+\n+function printWithParansIfNeeded(value) {\n+  const needsParans = expressionCouldHaveUnenclosedWhitespace(value);\n+\n+  if (needsParans) {\n+    this.token(\"(\");\n+  }\n+\n+  this.print(value, true, true);\n+\n+  if (needsParans) {\n+    this.token(\")\");\n+  }\n+}\n+\n+function expressionCouldHaveUnenclosedWhitespace(node) {\n+  switch (node.type) {\n+    case \"ArrowFunctionExpression\":\n+    case \"AssignmentExpression\":\n+    case \"BinaryExpression\":\n+    case \"ConditionalExpression\":\n+    case \"FunctionExpression\":\n+    case \"LogicalExpression\":\n+    case \"NewExpression\":\n+      return true;\n+    default:\n+      return false;\n+  }\n+}\n+\n+function statementCouldHaveUnenclosedNewline(node) {\n+  if (node.leadingComments?.length || node.trailingComments?.length) {\n+    return true;\n+  }\n+\n+  switch (node.type) {\n+    case \"VariableDeclaration\":\n+      return node.declarations.length > 1;\n+    default:\n+      return false;\n+  }\n+}\n+\n+function zipAttributeTagsAndBody(tag) {\n+  const {\n+    attributeTags,\n+    body: { body },\n+  } = tag;\n+  const bodyLen = body.length;\n+  const attributeTagsLen = attributeTags.length;\n+  if (!attributeTagsLen) return body;\n+  if (!bodyLen) return attributeTags;\n+\n+  const result = [];\n+  let i = 0;\n+  let j = 0;\n+\n+  while (i < bodyLen && j < attributeTagsLen) {\n+    const bodyNode = body[i];\n+    const attributeTag = attributeTags[j];\n+\n+    if (bodyNode.loc != null && attributeTag.loc != null) {\n+      if (compareStartLoc(bodyNode, attributeTag) < 0) {\n+        result.push(bodyNode);\n+        i++;\n+      } else {\n+        result.push(attributeTag);\n+        j++;\n+      }\n+    } else if (j < attributeTagsLen) {\n+      result.push(attributeTag);\n+      j++;\n+    } else {\n+      result.push(bodyNode);\n+      i++;\n+    }\n+  }\n+\n+  while (j < attributeTagsLen) {\n+    result.push(attributeTags[j++]);\n+  }\n+\n+  while (i < bodyLen) {\n+    result.push(body[i++]);\n+  }\n+\n+  return result;\n+}\n+\n+function compareStartLoc(a, b) {\n+  return (\n+    a.loc.start.line - b.loc.start.line ||\n+    a.loc.start.column - b.loc.start.column\n+  );\n+}\n+\n+function toSpliced(arr, index) {\n+  const len = arr.length;\n+  const result = new Array(len - 1);\n+  let i = 0;\n+\n+  for (; i < index; i++) {\n+    result[i] = arr[i];\n+  }\n+\n+  for (i++; i < len; i++) {\n+    result[i - 1] = arr[i];\n+  }\n+\n+  return result;\n+}\ndiff --git a/node_modules/@babel/generator/lib/nodes.js b/node_modules/@babel/generator/lib/nodes.js\nindex 8754a38..4321759 100644\n--- a/node_modules/@babel/generator/lib/nodes.js\n+++ b/node_modules/@babel/generator/lib/nodes.js\n@@ -16,4 +16,9 @@ for (const key of Object.keys(deprecatedGeneratorFunctions)) {\n   generatorInfosMap.set(key, [deprecatedGeneratorFunctions[key], index++, undefined]);\n }\n \n+var markoFunctions = require(\"./generators/marko.js\");\n+for (const key of Object.keys(markoFunctions)) {\n+  generatorInfosMap.set(key, [markoFunctions[key], index++, undefined]);\n+}\n+\n //# sourceMappingURL=nodes.js.map\n"
  },
  {
    "path": "patches/@babel+helper-compilation-targets+7.28.6.patch",
    "content": "diff --git a/node_modules/@babel/helper-compilation-targets/lib/index.js b/node_modules/@babel/helper-compilation-targets/lib/index.js\nindex 567565a..9d8d7d9 100644\n--- a/node_modules/@babel/helper-compilation-targets/lib/index.js\n+++ b/node_modules/@babel/helper-compilation-targets/lib/index.js\n@@ -41,7 +41,7 @@ Object.defineProperty(exports, \"unreleasedLabels\", {\n     return _targets.unreleasedLabels;\n   }\n });\n-var _browserslist = require(\"browserslist\");\n+var _browserslist = (() => { try { return require(\"browserslist\") } catch {} })();\n var _helperValidatorOption = require(\"@babel/helper-validator-option\");\n var _lruCache = require(\"lru-cache\");\n var _utils = require(\"./utils.js\");\n"
  },
  {
    "path": "patches/@babel+traverse+7.29.0.patch",
    "content": "diff --git a/node_modules/@babel/traverse/lib/scope/index.js b/node_modules/@babel/traverse/lib/scope/index.js\nindex a607471..50580ac 100644\n--- a/node_modules/@babel/traverse/lib/scope/index.js\n+++ b/node_modules/@babel/traverse/lib/scope/index.js\n@@ -299,7 +299,37 @@ const collectorVisitor = {\n   },\n   TSTypeAnnotation(path) {\n     path.skip();\n-  }\n+  },\n+  MarkoTagBody(body) {\n+    for (const param of body.get(\"params\")) {\n+      body.scope.registerBinding(\"param\", param);\n+    }\n+  },\n+  MarkoTag(tag, state) {\n+    const tagVar = tag.get(\"var\");\n+    if (tagVar.node) {\n+      tag.scope.registerBinding(\"local\", tagVar, tag);\n+      for (const name in tagVar.getBindingIdentifiers()) {\n+        let curScope = tag.scope;\n+        const binding = curScope.getBinding(name);\n+\n+        while ((curScope = curScope.parent)) {\n+          const hoistableTagVars =\n+            state.hoistableTagVarsByScope.get(curScope);\n+\n+          if (hoistableTagVars) {\n+            hoistableTagVars[name] = hoistableTagVars[name]\n+              ? true\n+              : binding;\n+          } else {\n+            state.hoistableTagVarsByScope.set(curScope, {\n+              [name]: binding,\n+            });\n+          }\n+        }\n+      }\n+    }\n+  },\n };\n let scopeVisitor;\n let uid = 0;\n@@ -676,7 +706,8 @@ class Scope {\n     const state = {\n       references: [],\n       constantViolations: [],\n-      assignments: []\n+      assignments: [],\n+      hoistableTagVarsByScope: new Map(),\n     };\n     this.crawling = true;\n     scopeVisitor || (scopeVisitor = _index.default.visitors.merge([{\n@@ -684,6 +715,11 @@ class Scope {\n         resetScope(path.scope);\n       }\n     }, collectorVisitor]));\n+\n+    if (path.type === \"Program\" && path.node.params?.length) {\n+      this.registerBinding(\"param\", path);\n+    }\n+\n     if (path.type !== \"Program\") {\n       const typeVisitors = scopeVisitor[path.type];\n       if (typeVisitors) {\n@@ -692,8 +728,44 @@ class Scope {\n         }\n       }\n     }\n+\n     path.traverse(scopeVisitor, state);\n     this.crawling = false;\n+\n+    if (state.references.length) {\n+      const movedBindings = new Map();\n+      for (const ref of state.references) {\n+        const { name } = ref.node;\n+        let curScope = ref.scope;\n+        if (curScope.hasBinding(name)) continue;\n+\n+        do {\n+          const hoistableBinding =\n+            state.hoistableTagVarsByScope.get(curScope)?.[name];\n+\n+          if (hoistableBinding) {\n+            if (hoistableBinding === true) {\n+              throw ref.buildCodeFrameError(\n+                \"Ambiguous reference, variable was defined in multiple places and was not shadowed.\",\n+              );\n+            }\n+\n+            const movedBinding = movedBindings.get(hoistableBinding);\n+            if (\n+              !movedBinding ||\n+              getMarkoScopeDepth(movedBinding) > getMarkoScopeDepth(curScope)\n+            ) {\n+              movedBindings.set(hoistableBinding, curScope);\n+            }\n+          }\n+        } while ((curScope = curScope.parent));\n+      }\n+\n+      for (const [binding, scope] of movedBindings) {\n+        binding.scope.moveBindingTo(binding.identifier.name, scope);\n+      }\n+    }\n+\n     for (const path of state.assignments) {\n       const ids = path.getAssignmentIdentifiers();\n       for (const name of Object.keys(ids)) {\n@@ -1015,4 +1087,11 @@ Object.defineProperties(Scope.prototype, {\n   }\n });\n \n+function getMarkoScopeDepth(scope) {\n+  let depth = 0;\n+  let cur = scope;\n+  while ((cur = cur.parent)) depth++;\n+  return depth;\n+}\n+\n //# sourceMappingURL=index.js.map\n"
  },
  {
    "path": "patches/@babel+types+7.29.0.patch",
    "content": "diff --git a/node_modules/@babel/types/lib/asserts/generated/index.js b/node_modules/@babel/types/lib/asserts/generated/index.js\nindex 27d00bd..2311d99 100644\n--- a/node_modules/@babel/types/lib/asserts/generated/index.js\n+++ b/node_modules/@babel/types/lib/asserts/generated/index.js\n@@ -1248,4 +1248,6 @@ function assertModuleDeclaration(node, opts) {\n   assert(\"ModuleDeclaration\", node, opts);\n }\n \n+Object.assign(exports, require(\"./marko.js\"));\n+\n //# sourceMappingURL=index.js.map\ndiff --git a/node_modules/@babel/types/lib/asserts/generated/marko.js b/node_modules/@babel/types/lib/asserts/generated/marko.js\nnew file mode 100644\nindex 0000000..8efd0a9\n--- /dev/null\n+++ b/node_modules/@babel/types/lib/asserts/generated/marko.js\n@@ -0,0 +1,75 @@\n+const is = require(\"../../validators/is.js\").default;\n+\n+exports.assertMarkoParseError = assertMarkoParseError;\n+function assertMarkoParseError(node, opts) {\n+  assert(\"MarkoParseError\", node, opts);\n+}\n+\n+exports.assertMarkoDocumentType = assertMarkoDocumentType;\n+function assertMarkoDocumentType(node, opts) {\n+  assert(\"MarkoDocumentType\", node, opts);\n+}\n+\n+exports.assertMarkoDeclaration = assertMarkoDeclaration;\n+function assertMarkoDeclaration(node, opts) {\n+  assert(\"MarkoDeclaration\", node, opts);\n+}\n+\n+exports.assertMarkoCDATA = assertMarkoCDATA;\n+function assertMarkoCDATA(node, opts) {\n+  assert(\"MarkoCDATA\", node, opts);\n+}\n+\n+exports.assertMarkoComment = assertMarkoComment;\n+function assertMarkoComment(node, opts) {\n+  assert(\"MarkoComment\", node, opts);\n+}\n+\n+exports.assertMarkoText = assertMarkoText;\n+function assertMarkoText(node, opts) {\n+  assert(\"MarkoText\", node, opts);\n+}\n+\n+exports.assertMarkoPlaceholder = assertMarkoPlaceholder;\n+function assertMarkoPlaceholder(node, opts) {\n+  assert(\"MarkoPlaceholder\", node, opts);\n+}\n+\n+exports.assertMarkoScriptlet = assertMarkoScriptlet;\n+function assertMarkoScriptlet(node, opts) {\n+  assert(\"MarkoScriptlet\", node, opts);\n+}\n+\n+exports.assertMarkoClass = assertMarkoClass;\n+function assertMarkoClass(node, opts) {\n+  assert(\"MarkoClass\", node, opts);\n+}\n+\n+exports.assertMarkoAttribute = assertMarkoAttribute;\n+function assertMarkoAttribute(node, opts) {\n+  assert(\"MarkoAttribute\", node, opts);\n+}\n+\n+exports.assertMarkoSpreadAttribute = assertMarkoSpreadAttribute;\n+function assertMarkoSpreadAttribute(node, opts) {\n+  assert(\"MarkoSpreadAttribute\", node, opts);\n+}\n+\n+exports.assertMarkoTagBody = assertMarkoTagBody;\n+function assertMarkoTagBody(node, opts) {\n+  assert(\"MarkoTagBody\", node, opts);\n+}\n+\n+exports.assertMarkoTag = assertMarkoTag;\n+function assertMarkoTag(node, opts) {\n+  assert(\"MarkoTag\", node, opts);\n+}\n+\n+function assert(type, node, opts) {\n+  if (!is(type, node, opts)) {\n+    throw new Error(\n+      `Expected type \"${type}\" with option ${JSON.stringify(opts)}, ` +\n+        `but instead got \"${node.type}\".`,\n+    );\n+  }\n+}\ndiff --git a/node_modules/@babel/types/lib/builders/generated/index.js b/node_modules/@babel/types/lib/builders/generated/index.js\nindex ce6a687..f17eede 100644\n--- a/node_modules/@babel/types/lib/builders/generated/index.js\n+++ b/node_modules/@babel/types/lib/builders/generated/index.js\n@@ -26,4 +26,6 @@ Object.keys(_uppercase).forEach(function (key) {\n   });\n });\n \n+Object.assign(exports, require(\"./marko.js\"));\n+\n //# sourceMappingURL=index.js.map\ndiff --git a/node_modules/@babel/types/lib/builders/generated/lowercase.js b/node_modules/@babel/types/lib/builders/generated/lowercase.js\nindex 0a13bcd..b2afd60 100644\n--- a/node_modules/@babel/types/lib/builders/generated/lowercase.js\n+++ b/node_modules/@babel/types/lib/builders/generated/lowercase.js\n@@ -633,7 +633,8 @@ function program(body, directives = [], sourceType = \"script\", interpreter = nul\n     body,\n     directives,\n     sourceType,\n-    interpreter\n+    interpreter,\n+    params: undefined,\n   };\n   const defs = NODE_FIELDS.Program;\n   validate(defs.body, node, \"body\", body, 1);\ndiff --git a/node_modules/@babel/types/lib/builders/generated/marko.js b/node_modules/@babel/types/lib/builders/generated/marko.js\nnew file mode 100644\nindex 0000000..945bf28\n--- /dev/null\n+++ b/node_modules/@babel/types/lib/builders/generated/marko.js\n@@ -0,0 +1,131 @@\n+exports.markoParseError = exports.MarkoParseError = markoParseError;\n+function markoParseError(source, label, errorLoc) {\n+  return {\n+    type: \"MarkoParseError\",\n+    source,\n+    label,\n+    errorLoc,\n+  };\n+}\n+\n+exports.markoDocumentType = exports.MarkoDocumentType = markoDocumentType;\n+function markoDocumentType(value) {\n+  return {\n+    type: \"MarkoDocumentType\",\n+    value,\n+  };\n+}\n+\n+exports.markoDeclaration = exports.MarkoDeclaration = markoDeclaration;\n+function markoDeclaration(value) {\n+  return {\n+    type: \"MarkoDeclaration\",\n+    value,\n+  };\n+}\n+\n+exports.markoCDATA = exports.MarkoCDATA = markoCDATA;\n+function markoCDATA(value) {\n+  return {\n+    type: \"MarkoCDATA\",\n+    value,\n+  };\n+}\n+\n+exports.markoComment = exports.MarkoComment = markoComment;\n+function markoComment(value) {\n+  return {\n+    type: \"MarkoComment\",\n+    value,\n+  };\n+}\n+\n+exports.markoText = exports.MarkoText = markoText;\n+function markoText(value) {\n+  return {\n+    type: \"MarkoText\",\n+    value,\n+  };\n+}\n+\n+exports.markoPlaceholder = exports.MarkoPlaceholder = markoPlaceholder;\n+function markoPlaceholder(value, escape = false) {\n+  return {\n+    type: \"MarkoPlaceholder\",\n+    value,\n+    escape,\n+  };\n+}\n+\n+exports.markoScriptlet = exports.MarkoScriptlet = markoScriptlet;\n+function markoScriptlet(body, _static = false, target) {\n+  return {\n+    type: \"MarkoScriptlet\",\n+    body,\n+    static: _static,\n+    target,\n+  };\n+}\n+\n+exports.markoClass = exports.MarkoClass = markoClass;\n+function markoClass(body) {\n+  return {\n+    type: \"MarkoClass\",\n+    body,\n+  };\n+}\n+\n+exports.markoAttribute = exports.MarkoAttribute = markoAttribute;\n+function markoAttribute(name, value, modifier, _arguments, _default, bound) {\n+  return {\n+    type: \"MarkoAttribute\",\n+    name,\n+    value,\n+    modifier,\n+    arguments: _arguments,\n+    default: _default,\n+    bound,\n+  };\n+}\n+\n+exports.markoSpreadAttribute = exports.MarkoSpreadAttribute =\n+  markoSpreadAttribute;\n+function markoSpreadAttribute(value) {\n+  return {\n+    type: \"MarkoSpreadAttribute\",\n+    value,\n+  };\n+}\n+\n+exports.markoTagBody = exports.MarkoTagBody = markoTagBody;\n+function markoTagBody(body = [], params = []) {\n+  return {\n+    type: \"MarkoTagBody\",\n+    body,\n+    params,\n+    typeParameters: undefined,\n+    attributeTags: false,\n+  };\n+}\n+\n+exports.markoTag = exports.MarkoTag = markoTag;\n+function markoTag(\n+  name,\n+  attributes = [],\n+  body,\n+  _arguments,\n+  _var,\n+  attributeTags = [],\n+) {\n+  return {\n+    type: \"MarkoTag\",\n+    name,\n+    attributes,\n+    body,\n+    arguments: _arguments,\n+    typeArguments: undefined,\n+    rawValue: undefined,\n+    var: _var,\n+    attributeTags,\n+  };\n+}\ndiff --git a/node_modules/@babel/types/lib/constants/generated/index.js b/node_modules/@babel/types/lib/constants/generated/index.js\nindex 92cd58b..afdc273 100644\n--- a/node_modules/@babel/types/lib/constants/generated/index.js\n+++ b/node_modules/@babel/types/lib/constants/generated/index.js\n@@ -56,5 +56,6 @@ const TSTYPEELEMENT_TYPES = exports.TSTYPEELEMENT_TYPES = _index.FLIPPED_ALIAS_K\n const TSTYPE_TYPES = exports.TSTYPE_TYPES = _index.FLIPPED_ALIAS_KEYS[\"TSType\"];\n const TSBASETYPE_TYPES = exports.TSBASETYPE_TYPES = _index.FLIPPED_ALIAS_KEYS[\"TSBaseType\"];\n const MODULEDECLARATION_TYPES = exports.MODULEDECLARATION_TYPES = IMPORTOREXPORTDECLARATION_TYPES;\n+exports.MARKO_TYPES = _index.FLIPPED_ALIAS_KEYS[\"Marko\"];\n \n //# sourceMappingURL=index.js.map\ndiff --git a/node_modules/@babel/types/lib/definitions/core.js b/node_modules/@babel/types/lib/definitions/core.js\nindex a642fbe..03b01c8 100644\n--- a/node_modules/@babel/types/lib/definitions/core.js\n+++ b/node_modules/@babel/types/lib/definitions/core.js\n@@ -592,7 +592,11 @@ defineType(\"Program\", {\n       validate: (0, _utils.arrayOfType)(\"Directive\"),\n       default: []\n     },\n-    body: (0, _utils.validateArrayOfType)(\"Statement\")\n+    body: (0, _utils.validateArrayOfType)(\"Statement\"),\n+    params: {\n+      validate: (0, _utils.arrayOfType)(\"FunctionParameter\"),\n+      optional: true\n+    }\n   },\n   aliases: [\"Scopable\", \"BlockParent\", \"Block\"]\n });\ndiff --git a/node_modules/@babel/types/lib/definitions/index.js b/node_modules/@babel/types/lib/definitions/index.js\nindex 3dff037..0f8f53b 100644\n--- a/node_modules/@babel/types/lib/definitions/index.js\n+++ b/node_modules/@babel/types/lib/definitions/index.js\n@@ -82,6 +82,7 @@ require(\"./jsx.js\");\n require(\"./misc.js\");\n require(\"./experimental.js\");\n require(\"./typescript.js\");\n+require(\"./marko.js\");\n var _utils = require(\"./utils.js\");\n var _placeholders = require(\"./placeholders.js\");\n var _deprecatedAliases = require(\"./deprecated-aliases.js\");\ndiff --git a/node_modules/@babel/types/lib/definitions/marko.js b/node_modules/@babel/types/lib/definitions/marko.js\nnew file mode 100644\nindex 0000000..e14efd5\n--- /dev/null\n+++ b/node_modules/@babel/types/lib/definitions/marko.js\n@@ -0,0 +1,247 @@\n+\"use strict\";\n+\n+const {\n+  defineAliasedType,\n+  assertNodeType,\n+  assertValueType,\n+  assertOneOf,\n+  assertEach,\n+  arrayOfType,\n+  chain,\n+} = require(\"@babel/types/lib/definitions/utils.js\");\n+const defineType = defineAliasedType(\"Marko\");\n+\n+defineType(\"MarkoParseError\", {\n+  aliases: [\"Marko\", \"Expression\", \"Statement\"],\n+  builder: [\"source\", \"label\", \"errorLoc\"],\n+  fields: {\n+    source: {\n+      validate: assertValueType(\"string\"),\n+    },\n+    label: {\n+      validate: assertValueType(\"string\"),\n+    },\n+    errorLoc: {\n+      optional: true,\n+      validate: assertValueType(\"object\"),\n+    },\n+  },\n+});\n+defineType(\"MarkoDocumentType\", {\n+  aliases: [\"Marko\", \"Statement\"],\n+  builder: [\"value\"],\n+  fields: {\n+    value: {\n+      validate: assertValueType(\"string\"),\n+    },\n+  },\n+});\n+\n+defineType(\"MarkoDeclaration\", {\n+  aliases: [\"Marko\", \"Statement\"],\n+  builder: [\"value\"],\n+  fields: {\n+    value: {\n+      validate: assertValueType(\"string\"),\n+    },\n+  },\n+});\n+\n+defineType(\"MarkoCDATA\", {\n+  aliases: [\"Marko\", \"Statement\"],\n+  builder: [\"value\"],\n+  fields: {\n+    value: {\n+      validate: assertValueType(\"string\"),\n+    },\n+  },\n+});\n+\n+defineType(\"MarkoComment\", {\n+  aliases: [\"Marko\", \"Statement\"],\n+  builder: [\"value\"],\n+  fields: {\n+    value: {\n+      validate: assertValueType(\"string\"),\n+    },\n+  },\n+});\n+\n+defineType(\"MarkoText\", {\n+  aliases: [\"Marko\", \"Statement\"],\n+  builder: [\"value\"],\n+  fields: {\n+    value: {\n+      validate: assertValueType(\"string\"),\n+    },\n+  },\n+});\n+\n+defineType(\"MarkoPlaceholder\", {\n+  aliases: [\"Marko\", \"Statement\"],\n+  builder: [\"value\", \"escape\"],\n+  visitor: [\"value\"],\n+  fields: {\n+    value: {\n+      validate: assertNodeType(\"Expression\"),\n+    },\n+    escape: {\n+      validate: assertValueType(\"boolean\"),\n+      default: true,\n+    },\n+  },\n+});\n+\n+defineType(\"MarkoScriptlet\", {\n+  aliases: [\"Marko\", \"Statement\"],\n+  builder: [\"body\", \"static\", \"target\"],\n+  visitor: [\"body\"],\n+  fields: {\n+    body: {\n+      validate: arrayOfType(\"Statement\"),\n+    },\n+    static: {\n+      validate: assertValueType(\"boolean\"),\n+      default: false,\n+    },\n+    target: {\n+      validate: assertOneOf(\"server\", \"client\"),\n+      optional: true,\n+    },\n+  },\n+});\n+\n+defineType(\"MarkoClass\", {\n+  aliases: [\"Marko\", \"Statement\", \"Class\"],\n+  builder: [\"body\"],\n+  visitor: [\"body\"],\n+  fields: {\n+    body: {\n+      validate: assertNodeType(\"ClassBody\"),\n+    },\n+  },\n+});\n+\n+defineType(\"MarkoAttribute\", {\n+  aliases: [\"Marko\"],\n+  builder: [\"name\", \"value\", \"modifier\", \"arguments\", \"default\", \"bound\"],\n+  visitor: [\"value\", \"arguments\"],\n+  fields: {\n+    name: {\n+      validate: assertValueType(\"string\"),\n+    },\n+    value: {\n+      validate: assertNodeType(\"Expression\"),\n+    },\n+    modifier: {\n+      validate: assertValueType(\"string\"),\n+      optional: true,\n+    },\n+    arguments: {\n+      validate: chain(\n+        assertValueType(\"array\"),\n+        assertEach(assertNodeType(\"Expression\", \"SpreadElement\")),\n+      ),\n+      optional: true,\n+    },\n+    default: {\n+      validate: assertValueType(\"boolean\"),\n+      optional: true,\n+    },\n+    bound: {\n+      validate: assertValueType(\"boolean\"),\n+      optional: true,\n+    },\n+  },\n+});\n+\n+defineType(\"MarkoSpreadAttribute\", {\n+  aliases: [\"Marko\"],\n+  builder: [\"value\"],\n+  visitor: [\"value\"],\n+  fields: {\n+    value: {\n+      validate: assertNodeType(\"Expression\"),\n+    },\n+  },\n+});\n+\n+defineType(\"MarkoTagBody\", {\n+  aliases: [\"Marko\", \"BlockParent\", \"FunctionParent\", \"Scope\"],\n+  builder: [\"body\", \"params\"],\n+  visitor: [\"typeParameters\", \"params\", \"body\"],\n+  fields: {\n+    params: {\n+      validate: arrayOfType(\"FunctionParameter\"),\n+      default: [],\n+    },\n+    typeParameters: {\n+      validate: assertNodeType(\"TSTypeParameterDeclaration\"),\n+      optional: true,\n+    },\n+    body: {\n+      validate: arrayOfType(\n+        \"MarkoTag\",\n+        \"MarkoCDATA\",\n+        \"MarkoText\",\n+        \"MarkoPlaceholder\",\n+        \"MarkoScriptlet\",\n+        \"MarkoComment\",\n+      ),\n+      default: [],\n+    },\n+    attributeTags: {\n+      validate: assertValueType(\"boolean\"),\n+      default: false,\n+    },\n+  },\n+});\n+\n+defineType(\"MarkoTag\", {\n+  aliases: [\"Marko\", \"Statement\"],\n+  builder: [\"name\", \"attributes\", \"body\", \"arguments\", \"var\", \"attributeTags\"],\n+  visitor: [\n+    \"name\",\n+    \"typeArguments\",\n+    \"arguments\",\n+    \"attributes\",\n+    \"attributeTags\",\n+    \"var\",\n+    \"body\",\n+  ],\n+  fields: {\n+    name: {\n+      validate: assertNodeType(\"Expression\"),\n+    },\n+    attributes: {\n+      validate: arrayOfType(\"MarkoAttribute\", \"MarkoSpreadAttribute\"),\n+      default: [],\n+    },\n+    body: {\n+      validate: assertNodeType(\"MarkoTagBody\"),\n+    },\n+    arguments: {\n+      validate: chain(\n+        assertValueType(\"array\"),\n+        assertEach(assertNodeType(\"Expression\", \"SpreadElement\")),\n+      ),\n+      optional: true,\n+    },\n+    typeArguments: {\n+      validate: assertNodeType(\"TSTypeParameterInstantiation\"),\n+      optional: true,\n+    },\n+    rawValue: {\n+      validate: assertValueType(\"string\"),\n+      optional: true,\n+    },\n+    var: {\n+      validate: assertNodeType(\"LVal\"),\n+      optional: true,\n+    },\n+    attributeTags: {\n+      validate: arrayOfType(\"MarkoTag\", \"MarkoScriptlet\", \"MarkoComment\"),\n+      default: [],\n+    },\n+  },\n+});\ndiff --git a/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js b/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js\nindex e4fb8a0..80c412b 100644\n--- a/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js\n+++ b/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js\n@@ -56,6 +56,10 @@ function getBindingIdentifiers(node, duplicates, outerOnly, newBindingsOnly) {\n   return ids;\n }\n const keys = {\n+  Program: [\"params\"],\n+  MarkoTag: [\"var\"],\n+  MarkoTagBody: [\"params\"],\n+  MarkoScriptlet: [\"body\"],\n   DeclareClass: [\"id\"],\n   DeclareFunction: [\"id\"],\n   DeclareModule: [\"id\"],\ndiff --git a/node_modules/@babel/types/lib/validators/generated/index.js b/node_modules/@babel/types/lib/validators/generated/index.js\nindex a26bea2..b80c768 100644\n--- a/node_modules/@babel/types/lib/validators/generated/index.js\n+++ b/node_modules/@babel/types/lib/validators/generated/index.js\n@@ -1791,6 +1791,7 @@ function isScopable(node, opts) {\n     case \"ClassPrivateMethod\":\n     case \"StaticBlock\":\n     case \"TSModuleBlock\":\n+    case \"MarkoTagBody\":\n       break;\n     case \"Placeholder\":\n       if (node.expectedNode === \"BlockStatement\") break;\n@@ -1819,6 +1820,7 @@ function isBlockParent(node, opts) {\n     case \"ClassPrivateMethod\":\n     case \"StaticBlock\":\n     case \"TSModuleBlock\":\n+    case \"MarkoTagBody\":\n       break;\n     case \"Placeholder\":\n       if (node.expectedNode === \"BlockStatement\") break;\n@@ -2032,6 +2034,7 @@ function isFunctionParent(node, opts) {\n     case \"ClassPrivateMethod\":\n     case \"StaticBlock\":\n     case \"TSModuleBlock\":\n+    case \"MarkoTagBody\":\n       break;\n     default:\n       return false;\n@@ -2794,4 +2797,6 @@ function isModuleDeclaration(node, opts) {\n   return isImportOrExportDeclaration(node, opts);\n }\n \n+Object.assign(exports, require(\"./marko.js\"));\n+\n //# sourceMappingURL=index.js.map\ndiff --git a/node_modules/@babel/types/lib/validators/generated/marko.js b/node_modules/@babel/types/lib/validators/generated/marko.js\nnew file mode 100644\nindex 0000000..166fab7\n--- /dev/null\n+++ b/node_modules/@babel/types/lib/validators/generated/marko.js\n@@ -0,0 +1,87 @@\n+\"use strict\";\n+\n+const shallowEqual = require(\"../../utils/shallowEqual.js\").default;\n+\n+exports.isMarkoParseError = isMarkoParseError;\n+function isMarkoParseError(node, opts) {\n+  if (!node || node.type !== \"MarkoParseError\") return false;\n+  return opts == null || shallowEqual(node, opts);\n+}\n+\n+exports.isMarkoDocumentType = isMarkoDocumentType;\n+function isMarkoDocumentType(node, opts) {\n+  if (!node || node.type !== \"MarkoDocumentType\") return false;\n+  return opts == null || shallowEqual(node, opts);\n+}\n+\n+exports.isMarkoDeclaration = isMarkoDeclaration;\n+function isMarkoDeclaration(node, opts) {\n+  if (!node || node.type !== \"MarkoDeclaration\") return false;\n+  return opts == null || shallowEqual(node, opts);\n+}\n+\n+exports.isMarkoCDATA = isMarkoCDATA;\n+function isMarkoCDATA(node, opts) {\n+  if (!node || node.type !== \"MarkoCDATA\") return false;\n+  return opts == null || shallowEqual(node, opts);\n+}\n+\n+exports.isMarkoComment = isMarkoComment;\n+function isMarkoComment(node, opts) {\n+  if (!node || node.type !== \"MarkoComment\") return false;\n+  return opts == null || shallowEqual(node, opts);\n+}\n+\n+exports.isMarkoText = isMarkoText;\n+function isMarkoText(node, opts) {\n+  if (!node || node.type !== \"MarkoText\") return false;\n+  return opts == null || shallowEqual(node, opts);\n+}\n+\n+exports.isMarkoPlaceholder = isMarkoPlaceholder;\n+function isMarkoPlaceholder(node, opts) {\n+  if (!node || node.type !== \"MarkoPlaceholder\") return false;\n+  return opts == null || shallowEqual(node, opts);\n+}\n+\n+exports.isMarkoScriptlet = isMarkoScriptlet;\n+function isMarkoScriptlet(node, opts) {\n+  if (!node || node.type !== \"MarkoScriptlet\") return false;\n+  return opts == null || shallowEqual(node, opts);\n+}\n+\n+exports.isMarkoClass = isMarkoClass;\n+function isMarkoClass(node, opts) {\n+  if (!node || node.type !== \"MarkoClass\") return false;\n+  return opts == null || shallowEqual(node, opts);\n+}\n+\n+exports.isMarkoAttribute = isMarkoAttribute;\n+function isMarkoAttribute(node, opts) {\n+  if (!node || node.type !== \"MarkoAttribute\") return false;\n+  return opts == null || shallowEqual(node, opts);\n+}\n+\n+exports.isMarkoSpreadAttribute = isMarkoSpreadAttribute;\n+function isMarkoSpreadAttribute(node, opts) {\n+  if (!node || node.type !== \"MarkoSpreadAttribute\") return false;\n+  return opts == null || shallowEqual(node, opts);\n+}\n+\n+exports.isMarkoTagBody = isMarkoTagBody;\n+function isMarkoTagBody(node, opts) {\n+  if (!node || node.type !== \"MarkoTagBody\") return false;\n+  return opts == null || shallowEqual(node, opts);\n+}\n+\n+exports.isMarkoTag = isMarkoTag;\n+function isMarkoTag(node, opts) {\n+  if (!node || node.type !== \"MarkoTag\") return false;\n+  return opts == null || shallowEqual(node, opts);\n+}\n+\n+exports.isMarko = isMarko;\n+function isMarko(node, opts) {\n+  if (!node || !node.type.startsWith(\"Marko\")) return false;\n+  return opts == null || shallowEqual(node, opts);\n+}\ndiff --git a/node_modules/@babel/types/lib/validators/isReferenced.js b/node_modules/@babel/types/lib/validators/isReferenced.js\nindex b2718d7..a2ecdfb 100644\n--- a/node_modules/@babel/types/lib/validators/isReferenced.js\n+++ b/node_modules/@babel/types/lib/validators/isReferenced.js\n@@ -89,6 +89,10 @@ function isReferenced(node, parent, grandparent) {\n         return !!parent.computed;\n       }\n       return true;\n+    case \"MarkoTag\":\n+      return parent.var !== node;\n+    case \"MarkoTagBody\":\n+      return false;\n   }\n   return true;\n }\n"
  },
  {
    "path": "scripts/babel-plugin-marko-debug.js",
    "content": "/**\n * Babel plugin for production builds which converts \"MARKO_DEBUG\"\n * strings to false to be removed by babel-plugin-minify-dead-code-elimination.\n */\nmodule.exports = function babelPluginMarkoDebug() {\n  return {\n    visitor: {\n      IfStatement: (path) => {\n        const node = path.node;\n        return replaceMarkoDebug(\n          path,\n          node.test,\n          node.consequent,\n          node.alternate,\n        );\n      },\n      ConditionalExpression: (path) => {\n        const node = path.node;\n        return replaceMarkoDebug(\n          path,\n          node.test,\n          node.consequent,\n          node.alternate,\n        );\n      },\n      LogicalExpression: (path) => {\n        const node = path.node;\n\n        if (node.operator === \"&&\") {\n          return replaceMarkoDebug(path, node.left, node.right);\n        } else {\n          return replaceMarkoDebug(path, node.left, null, node.right);\n        }\n      },\n    },\n  };\n};\n\n/**\n * Replaces any conditions containing \"MARKO_DEBUG\" or !\"MARKO_DEBUG\" and collapses them.\n */\nfunction replaceMarkoDebug(path, test, consequent, alternate) {\n  // Reverse replacement when negating the expression.\n  if (test.type === \"UnaryExpression\" && test.operator === \"!\") {\n    alternate = consequent;\n    test = test.argument;\n  }\n\n  // Only look for \"MARKO_DEBUG\" strings.\n  if (test.type !== \"StringLiteral\") {\n    return;\n  }\n\n  // If we found a condition that is a string (and isn't \"MARKO_DEBUG\") it's most likely a mistake.\n  if (test.value !== \"MARKO_DEBUG\") {\n    throw new Error(\n      `Found if statement with StringLiteral \"${test.value}\", did you mean \"MARKO_DEBUG\".`,\n    );\n  }\n\n  if (alternate) {\n    if (alternate.type === \"BlockStatement\") {\n      path.replaceWithMultiple(alternate.body);\n    } else {\n      path.replaceWith(alternate);\n    }\n  } else {\n    if (path.parentPath.node.type === \"VariableDeclarator\") {\n      path.parentPath.remove();\n    } else {\n      path.remove();\n    }\n  }\n}\n"
  },
  {
    "path": "scripts/babel-register.js",
    "content": "globalThis.MARKO_DEBUG = true;\n\n// aliased as ~ts via package.json\nrequire(\"@babel/register\")({\n  babelrc: false,\n  browserslistConfigFile: false,\n  configFile: false,\n  extensions: [\".js\", \".ts\"],\n  plugins: [\n    \"@babel/plugin-transform-modules-commonjs\",\n    \"@babel/plugin-transform-export-namespace-from\",\n  ],\n  presets: [[\"@babel/preset-typescript\", { allowDeclareFields: true }]],\n});\n"
  },
  {
    "path": "scripts/inspect-compiled-output.ts",
    "content": "import { compileFileSync, type Config } from \"@marko/compiler\";\nimport fs from \"fs\";\nimport path from \"path\";\nimport { parseArgs } from \"util\";\n\nconst args = parseArgs({\n  allowPositionals: true,\n  options: {\n    dev: {\n      type: \"boolean\",\n      short: \"d\",\n      default: false,\n    },\n    output: {\n      type: \"string\",\n      short: \"o\",\n      default: \"dom\",\n    },\n    translator: {\n      type: \"string\",\n      short: \"t\",\n      default: \"tags\",\n    },\n  },\n});\n\nfor (const entry of args.positionals) {\n  const inputFileName = path.resolve(entry);\n  const outputFileName = inputFileName + \".js\";\n\n  const { code } = compileFileSync(inputFileName, {\n    output: args.values.output as Config[\"output\"],\n    optimize: !args.values.dev,\n    sourceMaps: false,\n    modules: \"esm\",\n    babelConfig: {\n      configFile: false,\n      babelrc: false,\n    },\n    translator: args.values.translator || \"@marko/runtime-tags/translator\",\n  });\n\n  fs.writeFileSync(outputFileName, code);\n  console.log(outputFileName);\n}\n"
  },
  {
    "path": "scripts/pkg-override.js",
    "content": "const fs = require(\"fs\");\nconst path = require(\"path\");\nfor (const name of [\n  \"compiler\",\n  \"runtime-tags\",\n  \"runtime-class\",\n  \"runtime-class/translator\",\n  \"compiler/internal/babel\",\n]) {\n  overrideFile(path.join(\"packages\", name, \"package.json\"));\n}\n\nfunction overrideFile(file) {\n  const details = JSON.parse(fs.readFileSync(file, \"utf8\"));\n\n  if (\n    [\n      overrideField(details, \"main\"),\n      overrideField(details, \"module\"),\n      overrideField(details, \"browser\"),\n      overrideField(details, \"exports\"),\n    ].some(Boolean)\n  ) {\n    fs.writeFileSync(file, `${JSON.stringify(details, null, 2)}\\n`);\n  }\n}\n\nfunction overrideField(details, field) {\n  const overrideField = `${field}:override`;\n  const currentValue = details[field];\n  const overrideValue = details[overrideField];\n  if (overrideValue) {\n    details[field] = overrideValue;\n    details[overrideField] = currentValue;\n    return true;\n  }\n\n  return false;\n}\n"
  },
  {
    "path": "scripts/publish-alias.ts",
    "content": "import cp from \"child_process\";\nimport fs from \"fs\";\nimport path from \"path\";\n\nconst relativeRuntimeTagsDir = \"packages/runtime-tags\";\nconst runtimeTagsDir = path.resolve(relativeRuntimeTagsDir);\nconst runtimeTagsPkgFile = path.join(runtimeTagsDir, \"package.json\");\nconst originalPkgSource = fs.readFileSync(runtimeTagsPkgFile, \"utf-8\");\nconst pkg = JSON.parse(originalPkgSource);\n\npkg.name = \"marko\";\n\ntry {\n  fs.writeFileSync(runtimeTagsPkgFile, JSON.stringify(pkg, null, 2) + \"\\n\");\n  cp.execSync(\n    `node scripts/pkg-override && npm publish --tag next ./${relativeRuntimeTagsDir} && node scripts/pkg-override`,\n  );\n} finally {\n  fs.writeFileSync(runtimeTagsPkgFile, originalPkgSource);\n}\n"
  },
  {
    "path": "scripts/sizes.ts",
    "content": "import * as compiler from \"@marko/compiler\";\nimport pluginTerser from \"@rollup/plugin-terser\";\nimport pluginVirtual from \"@rollup/plugin-virtual\";\nimport fs from \"fs\";\nimport kleur from \"kleur\";\nimport path from \"path\";\nimport { format } from \"prettier\";\nimport { type OutputAsset, type OutputChunk, rollup } from \"rollup\";\nimport { table } from \"table\";\nimport { minify } from \"terser\";\nimport glob from \"tiny-glob\";\nimport zlib from \"zlib\";\n\nconst compiledOutputDir = path.join(process.cwd(), \".sizes\");\nconst nameCacheFile = path.join(process.cwd(), \".sizes\", \"name-cache.json\");\nconst nameCache = (() => {\n  try {\n    return JSON.parse(fs.readFileSync(nameCacheFile, \"utf-8\"));\n  } catch {\n    return {};\n  }\n})();\n\ntry {\n  fs.rmSync(compiledOutputDir, { recursive: true });\n} catch {\n  // ignore\n} finally {\n  fs.mkdirSync(compiledOutputDir);\n}\n\ninterface Sizes {\n  min: number;\n  brotli: number;\n}\n\ninterface Result {\n  name: string;\n  user?: Sizes;\n  runtime?: Sizes;\n  total?: Sizes;\n}\n\ninterface Saved {\n  examples: Record<string, string>;\n  results: Result[];\n}\n\nconst rootDir = path.join(__dirname, \"..\");\nconst runtimePath = path.join(rootDir, \"packages/runtime-tags/dist/dom.mjs\");\nconst translatorPath = path.join(\n  rootDir,\n  \"packages/runtime-tags/dist/translator/index.js\",\n);\nconst configPath = path.join(rootDir, \".sizes.json\");\nconst skipExamples = process.argv.includes(\"--no-examples\");\n\nrun(configPath);\n\nasync function run(configPath: string) {\n  const { examples, results: previous } = loadData(configPath);\n  const current = await getResults(skipExamples ? {} : examples);\n  const measure = (process.env.MEASURE as undefined | keyof Sizes) || \"brotli\";\n\n  console.log(measure);\n\n  console.log(renderTable(current, previous, measure));\n  writeData(configPath, current);\n  await fs.promises.writeFile(nameCacheFile, JSON.stringify(nameCache));\n}\n\nfunction loadData(configPath: string): Saved {\n  const data = JSON.parse(fs.readFileSync(configPath, \"utf-8\")) as Saved;\n  Object.keys(data.examples).forEach((name) => {\n    data.examples[name] = path.resolve(\n      path.dirname(configPath),\n      data.examples[name],\n    );\n  });\n  return data;\n}\n\nfunction writeData(configPath: string, results: Result[]) {\n  const data = JSON.parse(fs.readFileSync(configPath, \"utf-8\")) as Saved;\n  data.results = results;\n  fs.writeFileSync(configPath, JSON.stringify(data, null, 2));\n}\n\nfunction renderTable(\n  current: Result[],\n  previous: Result[],\n  measure: keyof Sizes,\n) {\n  const columns = [\"name\", \"user\", \"runtime\", \"total\"].map((n) =>\n    kleur.bold(n),\n  );\n  let unsynced = false;\n  return table(\n    [columns].concat(\n      current.map((result, i) => {\n        let p = previous && previous[i];\n        if (!p || p.name !== result.name) {\n          unsynced = true;\n          p = previous.find((p) => p.name === result.name)!;\n        }\n        return [\n          kleur.cyan(result.name),\n          renderSize(result.user, !unsynced ? p.user : undefined, measure),\n          renderSize(\n            result.runtime,\n            !unsynced ? p.runtime : undefined,\n            measure,\n          ),\n          renderSize(result.total, p && p.total, measure),\n        ];\n      }),\n    ),\n    {\n      columns: columns.reduce((r, _, i) => {\n        r[i] = { alignment: \"right\" };\n        return r;\n      }, {} as any),\n    },\n  );\n}\n\nfunction renderSize(\n  current: Sizes | undefined,\n  previous: Sizes | undefined,\n  measure: keyof Sizes,\n) {\n  let str = \"\";\n  if (current && current[measure]) {\n    str += current[measure];\n    if (previous && previous[measure]) {\n      const delta = current[measure] - previous[measure];\n      str += \"\\n\";\n      if (delta === 0) {\n        str += kleur.dim(delta);\n      } else if (delta < 0) {\n        str += kleur.green().dim(delta);\n      } else {\n        str += kleur.red().dim(\"+\" + delta);\n      }\n    }\n  }\n  return str;\n}\n\nasync function getResults(examples: Record<string, string>) {\n  const [, , runtimeTotal, runtimeFiles] = await bundleExample(\n    runtimePath,\n    false,\n  );\n  const results: Result[] = [\n    {\n      name: \"*\",\n      total: runtimeTotal,\n    },\n  ];\n\n  for (const [name, code] of Object.entries(runtimeFiles)) {\n    fs.writeFileSync(\n      path.join(compiledOutputDir, name),\n      await format(code, { parser: \"babel\" }),\n    );\n  }\n\n  for (const [exampleName, examplePath] of Object.entries(examples)) {\n    for (const hydrate of [false, true]) {\n      const [user, runtime, total, files] = await bundleExample(\n        examplePath,\n        hydrate,\n      );\n\n      for (const [name, code] of Object.entries(files)) {\n        const exampleOutputFolder = path.join(\n          compiledOutputDir,\n          exampleName + (hydrate ? \".ssr\" : \".csr\"),\n        );\n        fs.mkdirSync(exampleOutputFolder, { recursive: true });\n        fs.writeFileSync(\n          path.join(exampleOutputFolder, name),\n          await format(code, { parser: \"babel\" }),\n        );\n      }\n\n      results.push({\n        name: exampleName + (hydrate ? \" 💧\" : \"\"),\n        user,\n        runtime,\n        total,\n      });\n    }\n  }\n\n  return results;\n}\n\nasync function analyzeChunk(chunk: OutputChunk) {\n  const { name, code } = chunk;\n  const minified = stripModuleCode(\n    (\n      await minify(code, {\n        nameCache,\n        compress: {},\n        mangle: { module: true },\n      })\n    ).code!,\n  );\n\n  const sizes = {\n    min: Buffer.byteLength(minified),\n    brotli: Buffer.byteLength(await brotli(minified)),\n  };\n  return {\n    name: name + \".js\",\n    code: `// size: ${sizes.min} (min) ${sizes.brotli} (brotli)\\n${stripModuleCode(code)}`,\n    sizes,\n  };\n}\n\nfunction addSizes(all: Sizes[]) {\n  const total = { min: 0, brotli: 0 };\n  for (const { min, brotli } of all) {\n    total.min += min;\n    total.brotli += brotli;\n  }\n  return total;\n}\n\nasync function bundleExample(examplePath: string, hydrate: boolean) {\n  const isRuntime = examplePath === runtimePath;\n  const virtualEntry = \"./entry.js\";\n  const optimizeKnownTemplates: string[] | undefined = isRuntime\n    ? undefined\n    : await glob(path.join(path.dirname(examplePath), \"**/*.marko\"), {\n        absolute: true,\n      });\n  const bundle = await rollup({\n    input: isRuntime ? runtimePath : virtualEntry,\n    plugins: [\n      {\n        name: \"marko\",\n        resolveId(source) {\n          if (source === \"@marko/runtime-tags/dom\") {\n            return runtimePath;\n          }\n        },\n        async load(id) {\n          if (id.endsWith(\".marko\")) {\n            return (\n              await compiler.compileFile(id, {\n                translator: translatorPath,\n                output: \"dom\",\n                optimize: true,\n                babelConfig: {\n                  babelrc: false,\n                  configFile: false,\n                },\n                writeVersionComment: false,\n                optimizeKnownTemplates,\n              })\n            ).code;\n          }\n          return null;\n        },\n      },\n      !isRuntime &&\n        pluginVirtual({\n          [virtualEntry]: hydrate\n            ? `import ${JSON.stringify(\n                examplePath,\n              )}; import { init } from \"@marko/runtime-tags/dom\"; init();`\n            : `import template from ${JSON.stringify(examplePath)};template.mount();`,\n        }),\n      pluginTerser({ compress: {}, mangle: false }),\n    ],\n  });\n\n  const { output } = await bundle.generate({\n    format: \"es\",\n    compact: true,\n    manualChunks(id) {\n      if (id === runtimePath) {\n        return \"runtime\";\n      }\n    },\n  });\n  const runtimeChunk = output.find(isRuntimeChunk);\n  const [analyzedRuntimeCode, analyzedUserCode] = await Promise.all([\n    runtimeChunk && analyzeChunk(runtimeChunk),\n    Promise.all(output.filter(isUserChunk).map(analyzeChunk)),\n  ]);\n  const runtimeSize = analyzedRuntimeCode?.sizes;\n  const userSize = addSizes(analyzedUserCode.map((it) => it.sizes));\n  const totalSize = runtimeSize ? addSizes([userSize, runtimeSize]) : userSize;\n  const files: Record<string, string> = {};\n\n  for (const { name, code } of analyzedUserCode) {\n    files[name] = code;\n  }\n\n  return [userSize, runtimeSize, totalSize, files] as const;\n}\n\nfunction brotli(src: string): Promise<Buffer> {\n  return new Promise((resolve, reject) =>\n    zlib.brotliCompress(src, (error, result) =>\n      error ? reject(error) : resolve(result),\n    ),\n  );\n}\n\nfunction stripModuleCode(code: string) {\n  return code.replace(\n    /\\s*(?:export\\s*\\{[^}]+\\}|import\\s*.*\\s*from\\s*['\"][^'\"]+['\"]);?\\s*/gm,\n    \"\",\n  );\n}\n\nfunction isUserChunk(chunk: OutputChunk | OutputAsset): chunk is OutputChunk {\n  return chunk.name !== \"runtime\" && \"code\" in chunk;\n}\n\nfunction isRuntimeChunk(\n  chunk: OutputChunk | OutputAsset,\n): chunk is OutputChunk {\n  return chunk.name === \"runtime\" && \"code\" in chunk;\n}\n"
  },
  {
    "path": "skills/marko-best-practices/SKILL.md",
    "content": "---\nname: marko-best-practices\ndescription: Apply Marko syntax and best practices when editing `.marko` files and building Marko components.\n---\n\n# Marko Best Practices\n\nMarko is a modern UI framework for building web applications. It features a declarative component-based syntax, fine-grained reactivity, and a highly optimized compiler. Marko is designed for both server-rendered and interactive client-side experiences with a focus on streaming, partial hydration, and shipping the smallest possible amount of JavaScript to each page.\n\n## Marko Documentation\n\nThe Marko documentation is the source of truth for all Marko-related information. Always refer to the official docs for information about syntax and behavior. Marko changes over time, so prefer fetching current docs over relying on training data.\n\nThe [docs index](https://markojs.com/llms.txt) lists every available page with its URL and a short description.\n\nAll Marko docs pages can be fetched as markdown by appending `.md` to the URL (<https://markojs.com/docs/introduction/getting-started.md>)\n\n## Marko 6 Syntax\n\nDocumentation and this skill target **Marko 6**. Do not use Marko 5 syntax.\n\n## Checklist for New or Edited .marko Files\n\n- [ ] Uses Marko 6 syntax only (no scriptlets, old event syntax, or Marko 5 blocks).\n- [ ] `<script>` is never used when state (`<let>` or `<const>`) could accomplish the same behavior.\n- [ ] Event handlers use function form: `onClick() { ... }` or a reference, not string names.\n- [ ] Component stays small and readable; consider splitting large templates.\n- [ ] No unnecessary client-side JS; prefer built-in browser APIs and HTML/CSS features over scripts.\n"
  },
  {
    "path": "tsconfig.build.json",
    "content": "{\n  \"extends\": \"./tsconfig.json\",\n  \"include\": [\"scripts\"],\n  \"compilerOptions\": {\n    \"noEmit\": true,\n    \"emitDeclarationOnly\": false\n  },\n  \"references\": [\n    {\n      \"path\": \"./packages/runtime-tags\"\n    }\n  ]\n}\n"
  },
  {
    "path": "tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"lib\": [\"dom\", \"ESNext\"],\n    \"strict\": true,\n    \"allowJs\": true,\n    \"outDir\": \"dist\",\n    \"composite\": true,\n    \"target\": \"ESNext\",\n    \"sourceMap\": false,\n    \"declaration\": true,\n    \"incremental\": true,\n    \"module\": \"ESNext\",\n    \"skipLibCheck\": true,\n    \"stripInternal\": true,\n    \"noUnusedLocals\": true,\n    \"isolatedModules\": true,\n    \"esModuleInterop\": true,\n    \"resolveJsonModule\": true,\n    \"noUnusedParameters\": true,\n    \"allowUnusedLabels\": false,\n    \"noImplicitReturns\": false,\n    \"noImplicitOverride\": true,\n    \"emitDeclarationOnly\": true,\n    \"verbatimModuleSyntax\": true,\n    \"moduleResolution\": \"bundler\",\n    \"allowUnreachableCode\": false,\n    \"allowImportingTsExtensions\": true,\n    \"forceConsistentCasingInFileNames\": true\n  }\n}\n"
  }
]